Compare commits
100 Commits
patch_15Se
...
stable_29S
| Author | SHA1 | Date | |
|---|---|---|---|
| 6fd8b2b177 | |||
| 6edaf42b3d | |||
| 79c047487d | |||
| ac5acb9abf | |||
| 87fbbd3b13 | |||
| 8ac0ec6473 | |||
| 8acba74c4d | |||
| 34bcbdf41d | |||
| d519ca0213 | |||
| a392e8dc09 | |||
| a4d4f77bc2 | |||
| 83a8f72d83 | |||
| 3c54b56cfe | |||
| ff1a08f148 | |||
| 5a53b0fc03 | |||
| e550600ebe | |||
| 7cb13be52a | |||
| ab56d7ecd7 | |||
| bd6ac3ee6d | |||
| 27ca0a8f41 | |||
| f688b9b6b5 | |||
| 16c61b3cc0 | |||
| fb480f22fc | |||
| d0507559a4 | |||
| 58eb331b08 | |||
| c68015ca87 | |||
| 583c22d6e0 | |||
| 58a4694d92 | |||
| 97cf345528 | |||
| 0658abbdd4 | |||
| 72026a58bf | |||
| 7152231a10 | |||
| 8fe8a667b6 | |||
| 560c543e69 | |||
| c5e6650924 | |||
| 10373ea5c9 | |||
| 992b1cf582 | |||
| 1505f3de06 | |||
| 566efe04f2 | |||
| 7586adbb6a | |||
| 69d6ddccc5 | |||
| 5ae496dcef | |||
| bc5d742623 | |||
| 882e699163 | |||
| 9c725d79d6 | |||
| 79fbf437a3 | |||
| d130aa4289 | |||
| 5d8b83a251 | |||
| 5a2548a83d | |||
| a85b310e1f | |||
| e51fd40547 | |||
| 62f271658b | |||
| 0aa742934f | |||
| a26a709a7b | |||
| 027293d285 | |||
| f7d049ac2d | |||
| ea0ff1c8f7 | |||
| 5c1bb5f13a | |||
| 24d9b4b611 | |||
| a0e75c9006 | |||
| 2435b953e1 | |||
| c042e12323 | |||
| e9efe46db9 | |||
| ecc14b7308 | |||
| 0152fe5cdf | |||
| 892d17af22 | |||
| 2cca00203e | |||
| 9f4626a62a | |||
| e890a0b45e | |||
| 68223f0385 | |||
| 1291a88bff | |||
| d9b687450a | |||
| bd950b37d7 | |||
| 21fcdf8c56 | |||
| 6b400fb4bf | |||
| d982298ab2 | |||
| 765fd7f763 | |||
| 0325047c01 | |||
| 2dce8923ee | |||
| 8d1ba074be | |||
| 4675a3b560 | |||
| 8999b1f69f | |||
| 6c2b19c11b | |||
| a425334928 | |||
| db2faf2789 | |||
| fdbb7d0da4 | |||
| 52cd99918f | |||
| a3e6a95ffb | |||
| 5b65169997 | |||
| 5f3bf69e30 | |||
| 507c02b9af | |||
| b7fe47ba48 | |||
| 7dfd11da4b | |||
| 97ba95f30e | |||
| c1945b4ec9 | |||
| c4291a4b8e | |||
| 5b5dfa86c5 | |||
| 3ca3f6959f | |||
| f7b7bfa406 | |||
| 3d2f29c92d |
@ -25,7 +25,7 @@ function(validate_option name values)
|
||||
endfunction(validate_option)
|
||||
|
||||
function(get_lammps_version version_header variable)
|
||||
file(READ ${version_header} line)
|
||||
file(STRINGS ${version_header} line REGEX LAMMPS_VERSION)
|
||||
set(MONTHS x Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
|
||||
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\1" day "${line}")
|
||||
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\2" month "${line}")
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
find_package(ZLIB REQUIRED)
|
||||
target_link_libraries(lammps PRIVATE ZLIB::ZLIB)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(Zstd IMPORTED_TARGET libzstd>=1.4)
|
||||
|
||||
if(Zstd_FOUND)
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PkgConfig_FOUND)
|
||||
pkg_check_modules(Zstd IMPORTED_TARGET libzstd>=1.4)
|
||||
if(Zstd_FOUND)
|
||||
target_compile_definitions(lammps PRIVATE -DLAMMPS_ZSTD)
|
||||
target_link_libraries(lammps PRIVATE PkgConfig::Zstd)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@ -30,7 +30,15 @@ file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp)
|
||||
file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu)
|
||||
|
||||
if(GPU_API STREQUAL "CUDA")
|
||||
find_package(CUDA REQUIRED)
|
||||
find_package(CUDA QUIET)
|
||||
# augment search path for CUDA toolkit libraries to include the stub versions. Needed to find libcuda.so on machines without a CUDA driver installation
|
||||
if(CUDA_FOUND)
|
||||
set(CMAKE_LIBRARY_PATH "${CUDA_TOOLKIT_ROOT_DIR}/lib64/stubs;${CUDA_TOOLKIT_ROOT_DIR}/lib/stubs;${CUDA_TOOLKIT_ROOT_DIR}/lib64;${CUDA_TOOLKIT_ROOT_DIR}/lib;${CMAKE_LIBRARY_PATH}")
|
||||
find_package(CUDA REQUIRED)
|
||||
else()
|
||||
message(FATAL_ERROR "CUDA Toolkit not found")
|
||||
endif()
|
||||
|
||||
find_program(BIN2C bin2c)
|
||||
if(NOT BIN2C)
|
||||
message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.")
|
||||
@ -306,12 +314,12 @@ 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} -DLAMMPS_${LAMMPS_SIZES} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_CPP_FILE}
|
||||
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco --offload-arch=${HIP_ARCH} -O3 -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} -DLAMMPS_${LAMMPS_SIZES} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE}
|
||||
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -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()
|
||||
|
||||
@ -7,8 +7,9 @@ endif()
|
||||
option(DOWNLOAD_EIGEN3 "Download Eigen3 instead of using an already installed one)" ${DOWNLOAD_EIGEN3_DEFAULT})
|
||||
if(DOWNLOAD_EIGEN3)
|
||||
message(STATUS "Eigen3 download requested - we will build our own")
|
||||
set(EIGEN3_URL "https://gitlab.com/libeigen/eigen/-/archive/3.3.9/eigen-3.3.9.tar.gz" CACHE STRING "URL for Eigen3 tarball")
|
||||
set(EIGEN3_MD5 "609286804b0f79be622ccf7f9ff2b660" CACHE STRING "MD5 checksum of Eigen3 tarball")
|
||||
|
||||
set(EIGEN3_URL "https://download.lammps.org/thirdparty/eigen-3.4.0.tar.gz" CACHE STRING "URL for Eigen3 tarball")
|
||||
set(EIGEN3_MD5 "4c527a9171d71a72a9d4186e65bea559" CACHE STRING "MD5 checksum of Eigen3 tarball")
|
||||
mark_as_advanced(EIGEN3_URL)
|
||||
mark_as_advanced(EIGEN3_MD5)
|
||||
include(ExternalProject)
|
||||
|
||||
@ -32,7 +32,8 @@ if(DOWNLOAD_QUIP)
|
||||
foreach(flag ${LAPACK_LIBRARIES})
|
||||
set(temp "${temp} ${flag}")
|
||||
endforeach()
|
||||
set(temp "${temp}\n")
|
||||
# Fix cmake crashing when MATH_LINKOPTS not set, required for e.g. recent Cray Programming Environment
|
||||
set(temp "${temp} -L/_DUMMY_PATH_\n")
|
||||
set(temp "${temp}PYTHON=python\nPIP=pip\nEXTRA_LINKOPTS=\n")
|
||||
set(temp "${temp}HAVE_CP2K=0\nHAVE_VASP=0\nHAVE_TB=0\nHAVE_PRECON=1\nHAVE_LOTF=0\nHAVE_ONIOM=0\n")
|
||||
set(temp "${temp}HAVE_LOCAL_E_MIX=0\nHAVE_QC=0\nHAVE_GAP=1\nHAVE_DESCRIPTORS_NONCOMMERCIAL=1\n")
|
||||
@ -50,6 +51,7 @@ if(DOWNLOAD_QUIP)
|
||||
GIT_TAG origin/public
|
||||
GIT_SHALLOW YES
|
||||
GIT_PROGRESS YES
|
||||
GIT_SUBMODULES "src/fox;src/GAP"
|
||||
PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/quip.config <SOURCE_DIR>/arch/Makefile.lammps
|
||||
CONFIGURE_COMMAND env QUIP_ARCH=lammps make config
|
||||
BUILD_COMMAND env QUIP_ARCH=lammps make libquip
|
||||
|
||||
@ -54,8 +54,8 @@ if(DOWNLOAD_PLUMED)
|
||||
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/libplumedWrapper.a")
|
||||
endif()
|
||||
|
||||
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.2/plumed-src-2.7.2.tgz" CACHE STRING "URL for PLUMED tarball")
|
||||
set(PLUMED_MD5 "cfa0b4dd90a81c25d3302e8d97bfeaea" CACHE STRING "MD5 checksum of PLUMED tarball")
|
||||
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.4/plumed-src-2.7.4.tgz" CACHE STRING "URL for PLUMED tarball")
|
||||
set(PLUMED_MD5 "858e0b6aed173748fc85b6bc8a9dcb3e" CACHE STRING "MD5 checksum of PLUMED tarball")
|
||||
|
||||
mark_as_advanced(PLUMED_URL)
|
||||
mark_as_advanced(PLUMED_MD5)
|
||||
|
||||
@ -48,7 +48,6 @@ set(ALL_PACKAGES
|
||||
PHONON
|
||||
PLUGIN
|
||||
POEMS
|
||||
PYTHON
|
||||
QEQ
|
||||
REACTION
|
||||
REAXFF
|
||||
|
||||
@ -230,7 +230,7 @@ $(VENV):
|
||||
)
|
||||
|
||||
$(MATHJAX):
|
||||
@git clone -b 3.2.0 -c advice.detachedHead=0 --depth 1 git://github.com/mathjax/MathJax.git $@
|
||||
@git clone -b 3.2.0 -c advice.detachedHead=0 --depth 1 https://github.com/mathjax/MathJax.git $@
|
||||
|
||||
$(ANCHORCHECK): $(VENV)
|
||||
@( \
|
||||
|
||||
@ -33,9 +33,9 @@ when necessary.
|
||||
## Pull Requests
|
||||
|
||||
ALL changes to the LAMMPS code and documentation, however trivial, MUST
|
||||
be submitted as a pull request to GitHub. All changes to the "master"
|
||||
be submitted as a pull request to GitHub. All changes to the "develop"
|
||||
branch must be made exclusively through merging pull requests. The
|
||||
"unstable" and "stable" branches, respectively are only to be updated
|
||||
"release" and "stable" branches, respectively are only to be updated
|
||||
upon patch or stable releases with fast-forward merges based on the
|
||||
associated tags. Pull requests may also be submitted to (long-running)
|
||||
feature branches created by LAMMPS developers inside the LAMMPS project,
|
||||
@ -123,16 +123,16 @@ and thus were this comment should be placed.
|
||||
|
||||
LAMMPS uses a continuous release development model with incremental
|
||||
changes, i.e. significant effort is made - including automated pre-merge
|
||||
testing - that the code in the branch "master" does not get easily
|
||||
testing - that the code in the branch "develop" does not get easily
|
||||
broken. These tests are run after every update to a pull request. More
|
||||
extensive and time consuming tests (including regression testing) are
|
||||
performed after code is merged to the "master" branch. There are patch
|
||||
performed after code is merged to the "develop" branch. There are patch
|
||||
releases of LAMMPS every 3-5 weeks at a point, when the LAMMPS
|
||||
developers feel, that a sufficient amount of changes have happened, and
|
||||
the post-merge testing has been successful. These patch releases are
|
||||
marked with a `patch_<version date>` tag and the "unstable" branch
|
||||
marked with a `patch_<version date>` tag and the "release" branch
|
||||
follows only these versions (and thus is always supposed to be of
|
||||
production quality, unlike "master", which may be temporary broken, in
|
||||
production quality, unlike "develop", which may be temporary broken, in
|
||||
the case of larger change sets or unexpected incompatibilities or side
|
||||
effects.
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ environments with restricted disk space capacity it may be needed to
|
||||
reduce the storage requirements. Here are some suggestions:
|
||||
|
||||
- Create a so-called shallow repository by cloning only the last commit
|
||||
instead of the full project history by using ``git clone git@github.com:lammps/lammps --depth=1 --branch=master``.
|
||||
instead of the full project history by using ``git clone git@github.com:lammps/lammps --depth=1 --branch=develop``.
|
||||
This reduces the downloaded size to about half. With ``--depth=1`` it is not possible to check out different
|
||||
versions/branches of LAMMPS, using ``--depth=1000`` will make multiple recent versions available at little
|
||||
extra storage needs (the entire git history had nearly 30,000 commits in fall 2021).
|
||||
|
||||
@ -33,12 +33,15 @@ various tools and files. Some of them have to be installed (see below). For
|
||||
the rest the build process will attempt to download and install them into
|
||||
a python virtual environment and local folders.
|
||||
|
||||
A current version of the manual (latest patch release, aka unstable
|
||||
branch) is is available online at:
|
||||
`https://docs.lammps.org/Manual.html <https://docs.lammps.org/Manual.html>`_.
|
||||
A version of the manual corresponding to the ongoing development (aka master branch)
|
||||
is available online at: `https://docs.lammps.org/latest/
|
||||
<https://docs.lammps.org/latest/>`_
|
||||
A current version of the manual (latest patch release, that is the state
|
||||
of the *release* branch) is is available online at:
|
||||
`https://docs.lammps.org/ <https://docs.lammps.org/>`_.
|
||||
A version of the manual corresponding to the ongoing development (that is
|
||||
the state of the *develop* branch) is available online at:
|
||||
`https://docs.lammps.org/latest/ <https://docs.lammps.org/latest/>`_
|
||||
A version of the manual corresponding to the latest stable LAMMPS release
|
||||
(that is the state of the *stable* branch) is available online at:
|
||||
`https://docs.lammps.org/stable/ <https://docs.lammps.org/stable/>`_
|
||||
|
||||
Build using GNU make
|
||||
--------------------
|
||||
|
||||
@ -53,7 +53,7 @@ of each timestep. First of all, implement a constructor:
|
||||
if (narg < 4)
|
||||
error->all(FLERR,"Illegal fix print/vel command");
|
||||
|
||||
nevery = force->inumeric(FLERR,arg[3]);
|
||||
nevery = utils::inumeric(FLERR,arg[3],false,lmp);
|
||||
if (nevery <= 0)
|
||||
error->all(FLERR,"Illegal fix print/vel command");
|
||||
}
|
||||
|
||||
@ -7,11 +7,11 @@ LAMMPS GitHub tutorial
|
||||
|
||||
This document describes the process of how to use GitHub to integrate
|
||||
changes or additions you have made to LAMMPS into the official LAMMPS
|
||||
distribution. It uses the process of updating this very tutorial as
|
||||
an example to describe the individual steps and options. You need to
|
||||
be familiar with git and you may want to have a look at the
|
||||
`git book <http://git-scm.com/book/>`_ to reacquaint yourself with some
|
||||
of the more advanced git features used below.
|
||||
distribution. It uses the process of updating this very tutorial as an
|
||||
example to describe the individual steps and options. You need to be
|
||||
familiar with git and you may want to have a look at the `git book
|
||||
<http://git-scm.com/book/>`_ to familiarize yourself with some of the
|
||||
more advanced git features used below.
|
||||
|
||||
As of fall 2016, submitting contributions to LAMMPS via pull requests
|
||||
on GitHub is the preferred option for integrating contributed features
|
||||
@ -37,15 +37,15 @@ username or e-mail address and password.
|
||||
**Forking the repository**
|
||||
|
||||
To get changes into LAMMPS, you need to first fork the `lammps/lammps`
|
||||
repository on GitHub. At the time of writing, *master* is the preferred
|
||||
repository on GitHub. At the time of writing, *develop* is the preferred
|
||||
target branch. Thus go to `LAMMPS on GitHub <https://github.com/lammps/lammps>`_
|
||||
and make sure branch is set to "master", as shown in the figure below.
|
||||
and make sure branch is set to "develop", as shown in the figure below.
|
||||
|
||||
.. image:: JPG/tutorial_branch.png
|
||||
:align: center
|
||||
|
||||
If it is not, use the button to change it to *master*\ . Once it is, use the
|
||||
fork button to create a fork.
|
||||
If it is not, use the button to change it to *develop*. Once it is, use
|
||||
the fork button to create a fork.
|
||||
|
||||
.. image:: JPG/tutorial_fork.png
|
||||
:align: center
|
||||
@ -64,11 +64,12 @@ LAMMPS development.
|
||||
**Adding changes to your own fork**
|
||||
|
||||
Additions to the upstream version of LAMMPS are handled using *feature
|
||||
branches*\ . For every new feature, a so-called feature branch is
|
||||
branches*. For every new feature, a so-called feature branch is
|
||||
created, which contains only those modification relevant to one specific
|
||||
feature. For example, adding a single fix would consist of creating a
|
||||
branch with only the fix header and source file and nothing else. It is
|
||||
explained in more detail here: `feature branch workflow <https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow>`_.
|
||||
explained in more detail here: `feature branch workflow
|
||||
<https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow>`_.
|
||||
|
||||
**Feature branches**
|
||||
|
||||
@ -94,8 +95,8 @@ The above command copies ("clones") the git repository to your local
|
||||
machine to a directory with the name you chose. If none is given, it will
|
||||
default to "lammps". Typical names are "mylammps" or something similar.
|
||||
|
||||
You can use this local clone to make changes and
|
||||
test them without interfering with the repository on GitHub.
|
||||
You can use this local clone to make changes and test them without
|
||||
interfering with the repository on GitHub.
|
||||
|
||||
To pull changes from upstream into this copy, you can go to the directory
|
||||
and use git pull:
|
||||
@ -103,28 +104,46 @@ and use git pull:
|
||||
.. code-block:: bash
|
||||
|
||||
$ cd mylammps
|
||||
$ git checkout master
|
||||
$ git pull https://github.com/lammps/lammps
|
||||
$ git checkout develop
|
||||
$ git pull https://github.com/lammps/lammps develop
|
||||
|
||||
You can also add this URL as a remote:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git remote add lammps_upstream https://www.github.com/lammps/lammps
|
||||
$ git remote add upstream https://www.github.com/lammps/lammps
|
||||
|
||||
At this point, you typically make a feature branch from the updated master
|
||||
From then on you can update your upstream branches with:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git fetch upstream
|
||||
|
||||
and then refer to the upstream repository branches with
|
||||
`upstream/develop` or `upstream/release` and so on.
|
||||
|
||||
At this point, you typically make a feature branch from the updated
|
||||
branch for the feature you want to work on. This tutorial contains the
|
||||
workflow that updated this tutorial, and hence we will call the branch
|
||||
"github-tutorial-update":
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git checkout -b github-tutorial-update master
|
||||
$ git fetch upstream
|
||||
$ git checkout -b github-tutorial-update upstream/develop
|
||||
|
||||
Now that we have changed branches, we can make our changes to our local
|
||||
repository. Just remember that if you want to start working on another,
|
||||
unrelated feature, you should switch branches!
|
||||
|
||||
.. note::
|
||||
|
||||
Committing changes to the *develop*, *release*, or *stable* branches
|
||||
is strongly discouraged. While it may be convenient initially, it
|
||||
will create more work in the long run. Various texts and tutorials
|
||||
on using git effectively discuss the motivation for using feature
|
||||
branches instead.
|
||||
|
||||
**After changes are made**
|
||||
|
||||
After everything is done, add the files to the branch and commit them:
|
||||
@ -287,28 +306,32 @@ After each push, the automated checks are run again.
|
||||
|
||||
LAMMPS developers may add labels to your pull request to assign it to
|
||||
categories (mostly for bookkeeping purposes), but a few of them are
|
||||
important: needs_work, work_in_progress, test-for-regression, and
|
||||
full-regression-test. The first two indicate, that your pull request
|
||||
is not considered to be complete. With "needs_work" the burden is on
|
||||
exclusively on you; while "work_in_progress" can also mean, that a
|
||||
LAMMPS developer may want to add changes. Please watch the comments
|
||||
to the pull requests. The two "test" labels are used to trigger
|
||||
extended tests before the code is merged. This is sometimes done by
|
||||
LAMMPS developers, if they suspect that there may be some subtle
|
||||
side effects from your changes. It is not done by default, because
|
||||
those tests are very time consuming.
|
||||
important: *needs_work*, *work_in_progress*, *run_tests*,
|
||||
*test_for_regression*, and *ready_for_merge*. The first two indicate,
|
||||
that your pull request is not considered to be complete. With
|
||||
"needs_work" the burden is on exclusively on you; while
|
||||
"work_in_progress" can also mean, that a LAMMPS developer may want to
|
||||
add changes. Please watch the comments to the pull requests. The two
|
||||
"test" labels are used to trigger extended tests before the code is
|
||||
merged. This is sometimes done by LAMMPS developers, if they suspect
|
||||
that there may be some subtle side effects from your changes. It is not
|
||||
done by default, because those tests are very time consuming. The
|
||||
*ready_for_merge* label is usually attached when the LAMMPS developer
|
||||
assigned to the pull request considers this request complete and to
|
||||
trigger a final full test evaluation.
|
||||
|
||||
**Reviews**
|
||||
|
||||
As of Summer 2018, a pull request needs at least 1 approving review
|
||||
from a LAMMPS developer with write access to the repository.
|
||||
In case your changes touch code that certain developers are associated
|
||||
with, they are auto-requested by the GitHub software. Those associations
|
||||
are set in the file
|
||||
`.github/CODEOWNERS <https://github.com/lammps/lammps/blob/master/.github/CODEOWNERS>`_
|
||||
Thus if you want to be automatically notified to review when anybody
|
||||
changes files or packages, that you have contributed to LAMMPS, you can
|
||||
add suitable patterns to that file, or a LAMMPS developer may add you.
|
||||
As of Fall 2021, a pull request needs to pass all automatic tests and at
|
||||
least 1 approving review from a LAMMPS developer with write access to
|
||||
the repository before it is eligible for merging. In case your changes
|
||||
touch code that certain developers are associated with, they are
|
||||
auto-requested by the GitHub software. Those associations are set in
|
||||
the file `.github/CODEOWNERS
|
||||
<https://github.com/lammps/lammps/blob/develop/.github/CODEOWNERS>`_ Thus
|
||||
if you want to be automatically notified to review when anybody changes
|
||||
files or packages, that **you** have contributed to LAMMPS, you can add
|
||||
suitable patterns to that file, or a LAMMPS developer may add you.
|
||||
|
||||
Otherwise, you can also manually request reviews from specific developers,
|
||||
or LAMMPS developers - in their assessment of your pull request - may
|
||||
@ -329,7 +352,7 @@ LAMMPS developer (including him/herself) or c) Axel Kohlmeyer (akohlmey).
|
||||
After the review, the developer can choose to implement changes directly
|
||||
or suggest them to you.
|
||||
* Case c) means that the pull request has been assigned to the developer
|
||||
overseeing the merging of pull requests into the master branch.
|
||||
overseeing the merging of pull requests into the *develop* branch.
|
||||
|
||||
In this case, Axel assigned the tutorial to Steve:
|
||||
|
||||
@ -351,11 +374,11 @@ Sometimes, however, you might not feel comfortable having other people
|
||||
push changes into your own branch, or maybe the maintainers are not sure
|
||||
their idea was the right one. In such a case, they can make changes,
|
||||
reassign you as the assignee, and file a "reverse pull request", i.e.
|
||||
file a pull request in your GitHub repository to include changes in the
|
||||
branch, that you have submitted as a pull request yourself. In that
|
||||
case, you can choose to merge their changes back into your branch,
|
||||
possibly make additional changes or corrections and proceed from there.
|
||||
It looks something like this:
|
||||
file a pull request in **your** forked GitHub repository to include
|
||||
changes in the branch, that you have submitted as a pull request
|
||||
yourself. In that case, you can choose to merge their changes back into
|
||||
your branch, possibly make additional changes or corrections and proceed
|
||||
from there. It looks something like this:
|
||||
|
||||
.. image:: JPG/tutorial_reverse_pull_request.png
|
||||
:align: center
|
||||
@ -419,7 +442,7 @@ This merge also shows up on the lammps GitHub page:
|
||||
|
||||
**After a merge**
|
||||
|
||||
When everything is fine, the feature branch is merged into the master branch:
|
||||
When everything is fine, the feature branch is merged into the *develop* branch:
|
||||
|
||||
.. image:: JPG/tutorial_merged.png
|
||||
:align: center
|
||||
@ -433,8 +456,8 @@ branch!
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git checkout master
|
||||
$ git pull master
|
||||
$ git checkout develop
|
||||
$ git pull https://github.com/lammps/lammps develop
|
||||
$ git branch -d github-tutorial-update
|
||||
|
||||
If you do not pull first, it is not really a problem but git will warn
|
||||
@ -442,6 +465,7 @@ you at the next statement that you are deleting a local branch that
|
||||
was not yet fully merged into HEAD. This is because git does not yet
|
||||
know your branch just got merged into LAMMPS upstream. If you
|
||||
first delete and then pull, everything should still be fine.
|
||||
You can display all branches that are fully merged by:
|
||||
|
||||
Finally, if you delete the branch locally, you might want to push this
|
||||
to your remote(s) as well:
|
||||
@ -453,14 +477,14 @@ to your remote(s) as well:
|
||||
**Recent changes in the workflow**
|
||||
|
||||
Some changes to the workflow are not captured in this tutorial. For
|
||||
example, in addition to the master branch, to which all new features
|
||||
should be submitted, there is now also an "unstable" and a "stable"
|
||||
branch; these have the same content as "master", but are only updated
|
||||
after a patch release or stable release was made.
|
||||
Furthermore, the naming of the patches now follow the pattern
|
||||
"patch_<Day><Month><Year>" to simplify comparisons between releases.
|
||||
Finally, all patches and submissions are subject to automatic testing
|
||||
and code checks to make sure they at the very least compile.
|
||||
example, in addition to the *develop* branch, to which all new features
|
||||
should be submitted, there is also a *release* and a *stable* branch;
|
||||
these have the same content as *develop*, but are only updated after a
|
||||
patch release or stable release was made. Furthermore, the naming of
|
||||
the patches now follow the pattern "patch_<Day><Month><Year>" to
|
||||
simplify comparisons between releases. Finally, all patches and
|
||||
submissions are subject to automatic testing and code checks to make
|
||||
sure they at the very least compile.
|
||||
|
||||
A discussion of the LAMMPS developer GitHub workflow can be found in the file
|
||||
`doc/github-development-workflow.md <https://github.com/lammps/lammps/blob/master/doc/github-development-workflow.md>`_
|
||||
`doc/github-development-workflow.md <https://github.com/lammps/lammps/blob/develop/doc/github-development-workflow.md>`_
|
||||
|
||||
@ -9,7 +9,8 @@ has several advantages:
|
||||
command.
|
||||
* You can create your own development branches to add code to LAMMPS.
|
||||
* You can submit your new features back to GitHub for inclusion in
|
||||
LAMMPS.
|
||||
LAMMPS. For that you should first create your own :doc:`fork on
|
||||
GitHub <Howto_github>`.
|
||||
|
||||
You must have `git <git_>`_ installed on your system to use the
|
||||
commands explained below to communicate with the git servers on
|
||||
@ -20,35 +21,56 @@ provides `limited support for subversion clients <svn_>`_.
|
||||
|
||||
As of October 2016, the official home of public LAMMPS development is
|
||||
on GitHub. The previously advertised LAMMPS git repositories on
|
||||
git.lammps.org and bitbucket.org are now deprecated or offline.
|
||||
git.lammps.org and bitbucket.org are now offline or deprecated.
|
||||
|
||||
.. _git: https://git-scm.com
|
||||
.. _svn: https://help.github.com/en/github/importing-your-projects-to-github/working-with-subversion-on-github
|
||||
|
||||
You can follow LAMMPS development on 3 different git branches:
|
||||
You can follow the LAMMPS development on 3 different git branches:
|
||||
|
||||
* **stable** : this branch is updated with every stable release
|
||||
* **unstable** : this branch is updated with every patch release
|
||||
* **master** : this branch continuously follows ongoing development
|
||||
* **stable** : this branch is updated from the *release* branch with
|
||||
every stable release version and also has selected bug fixes and updates
|
||||
back-ported from the *develop* branch
|
||||
* **release** : this branch is updated with every patch release;
|
||||
updates are always "fast forward" merges from *develop*
|
||||
* **develop** : this branch follows the ongoing development and
|
||||
is updated with every merge commit of a pull request
|
||||
|
||||
To access the git repositories on your box, use the clone command to
|
||||
create a local copy of the LAMMPS repository with a command like:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git clone -b unstable https://github.com/lammps/lammps.git mylammps
|
||||
$ git clone -b release https://github.com/lammps/lammps.git mylammps
|
||||
|
||||
where "mylammps" is the name of the directory you wish to create on
|
||||
your machine and "unstable" is one of the 3 branches listed above.
|
||||
your machine and "release" is one of the 3 branches listed above.
|
||||
(Note that you actually download all 3 branches; you can switch
|
||||
between them at any time using "git checkout <branch name>".)
|
||||
|
||||
.. admonition:: Saving time and disk space when using ``git clone``
|
||||
|
||||
The complete git history of the LAMMPS project is quite large because
|
||||
it contains the entire commit history of the project since fall 2006,
|
||||
which includes the time when LAMMPS was managed with subversion.
|
||||
This includes a few commits that have added and removed some large
|
||||
files (mostly by accident). If you do not need access to the entire
|
||||
commit history (most people don't), you can speed up the "cloning"
|
||||
process and reduce local disk space requirements by using the
|
||||
*--depth* git command line flag. That will create a "shallow clone"
|
||||
of the repository containing only a subset of the git history. Using
|
||||
a depth of 1000 is usually sufficient to include the head commits of
|
||||
the *develop* and the *release* branches. To include the head commit
|
||||
of the *stable* branch you may need a depth of up to 10000. If you
|
||||
later need more of the git history, you can always convert the
|
||||
shallow clone into a "full clone".
|
||||
|
||||
Once the command completes, your directory will contain the same files
|
||||
as if you unpacked a current LAMMPS tarball, with the exception, that
|
||||
the HTML documentation files are not included. They can be fetched
|
||||
from the LAMMPS website by typing ``make fetch`` in the doc directory.
|
||||
Or they can be generated from the content provided in doc/src by
|
||||
typing ``make html`` from the doc directory.
|
||||
Or they can be generated from the content provided in ``doc/src`` by
|
||||
typing ``make html`` from the ``doc`` directory.
|
||||
|
||||
After initial cloning, as bug fixes and new features are added to
|
||||
LAMMPS you can stay up-to-date by typing the following git commands
|
||||
@ -56,9 +78,9 @@ from within the "mylammps" directory:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git checkout unstable # not needed if you always stay in this branch
|
||||
$ git checkout stable # use one of these 3 checkout commands
|
||||
$ git checkout master # to choose the branch to follow
|
||||
$ git checkout release # not needed if you always stay in this branch
|
||||
$ git checkout stable # use one of these 3 checkout commands
|
||||
$ git checkout develop # to choose the branch to follow
|
||||
$ git pull
|
||||
|
||||
Doing a "pull" will not change any files you have added to the LAMMPS
|
||||
@ -81,7 +103,7 @@ Stable versions and what tagID to use for a particular stable version
|
||||
are discussed on `this page <https://www.lammps.org/bug.html#version>`_.
|
||||
Note that this command will print some warnings, because in order to get
|
||||
back to the latest revision and to be able to update with ``git pull``
|
||||
again, you will need to do ``git checkout unstable`` (or
|
||||
again, you will need to do ``git checkout release`` (or
|
||||
check out any other desired branch) first.
|
||||
|
||||
Once you have updated your local files with a ``git pull`` (or ``git
|
||||
@ -137,9 +159,9 @@ changed. How to do this depends on the build system you are using.
|
||||
.. admonition:: Git protocols
|
||||
:class: note
|
||||
|
||||
The servers at github.com support the "git://" and "https://" access
|
||||
protocols for anonymous, read-only access. If you have a suitably
|
||||
configured GitHub account, you may also use SSH protocol with the
|
||||
The servers at github.com support the "https://" access protocol for
|
||||
anonymous, read-only access. If you have a suitably configured GitHub
|
||||
account, you may also use SSH protocol with the
|
||||
URL "git@github.com:lammps/lammps.git".
|
||||
|
||||
The LAMMPS GitHub project is currently managed by Axel Kohlmeyer
|
||||
|
||||
@ -16,7 +16,7 @@ source code design, the program structure, the spatial decomposition
|
||||
approach, the neighbor finding, basic communications algorithms, and how
|
||||
users and developers have contributed to LAMMPS is:
|
||||
|
||||
`LAMMPS - A flexible simulation tool for particle-based materials modeling at the atomic, meso, and continuum scales, Comp. Phys. Comm. (accepted 09/2021), DOI:10.1016/j.cpc.2021.108171 <https://doi.org/10.1016/j.cpc.2021.108171>`_
|
||||
`LAMMPS - A flexible simulation tool for particle-based materials modeling at the atomic, meso, and continuum scales, Comp. Phys. Comm. 271, 108171 (2022) <https://doi.org/10.1016/j.cpc.2021.108171>`_
|
||||
|
||||
So a project using LAMMPS or a derivative application that uses LAMMPS
|
||||
as a simulation engine should cite this paper. The paper is expected to
|
||||
|
||||
@ -19,7 +19,7 @@ software and open-source distribution, see `www.gnu.org <gnuorg_>`_
|
||||
or `www.opensource.org <opensource_>`_. The legal text of the GPL as it
|
||||
applies to LAMMPS is in the LICENSE file included in the LAMMPS distribution.
|
||||
|
||||
.. _gpl: https://github.com/lammps/lammps/blob/master/LICENSE
|
||||
.. _gpl: https://github.com/lammps/lammps/blob/develop/LICENSE
|
||||
|
||||
.. _lgpl: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
|
||||
|
||||
|
||||
@ -7,26 +7,34 @@ correctly and reliably at all times. You can follow its development
|
||||
in a public `git repository on GitHub <https://github.com/lammps/lammps>`_.
|
||||
|
||||
Whenever we fix a bug or update or add a feature, it will be merged into
|
||||
the `master` branch of the git repository. When a sufficient number of
|
||||
the *develop* branch of the git repository. When a sufficient number of
|
||||
changes have accumulated *and* the software passes a set of automated
|
||||
tests, we release it in the next *patch* release, which are made every
|
||||
few weeks. Info on patch releases are on `this website page
|
||||
few weeks. The *release* branch of the git repository is updated with
|
||||
every such release. Info on patch releases are on `this website page
|
||||
<https://www.lammps.org/bug.html>`_.
|
||||
|
||||
Once or twice a year, only bug fixes and small, non-intrusive changes are
|
||||
included for a period of time, and the code is subjected to more detailed
|
||||
Once or twice a year, we apply only bug fixes and small, non-intrusive
|
||||
changes to the *develop* branch and the code is subjected to more detailed
|
||||
and thorough testing than the default automated testing. The latest
|
||||
patch release after such a period is then labeled as a *stable* version.
|
||||
patch release after such a period is then also labeled as a *stable* version
|
||||
and the *stable* branch is updated with it. Between stable releases
|
||||
we occasionally release some updates to the stable release containing
|
||||
only bug fixes and updates back-ported from *develop* but no new features
|
||||
and update the *stable* branch accordingly.
|
||||
|
||||
Each version of LAMMPS contains all the features and bug-fixes up to
|
||||
and including its version date.
|
||||
Each version of LAMMPS contains all the documented features up to and
|
||||
including its version date.
|
||||
|
||||
The version date is printed to the screen and logfile every time you
|
||||
run LAMMPS. It is also in the file src/version.h and in the LAMMPS
|
||||
directory name created when you unpack a tarball. And it is on the
|
||||
first page of the :doc:`manual <Manual>`.
|
||||
|
||||
* If you browse the HTML pages on the LAMMPS WWW site, they always
|
||||
describe the most current patch release of LAMMPS.
|
||||
* If you browse the HTML pages on the LAMMPS WWW site, they will by
|
||||
default describe the most current patch release version of LAMMPS.
|
||||
In the navigation bar on the bottom left, there is the option to
|
||||
view instead the documentation for the most recent *stable* version
|
||||
or the latest version from the current development branch.
|
||||
* If you browse the HTML pages included in your tarball, they
|
||||
describe the version you have, which may be older.
|
||||
|
||||
@ -12,24 +12,24 @@ includes some optional methods to enable its use with rRESPA.
|
||||
|
||||
Here is a brief description of the class methods in pair.h:
|
||||
|
||||
+---------------------------------+-------------------------------------------------------------------+
|
||||
| compute | workhorse routine that computes pairwise interactions |
|
||||
+---------------------------------+-------------------------------------------------------------------+
|
||||
| settings | reads the input script line with arguments you define |
|
||||
+---------------------------------+-------------------------------------------------------------------+
|
||||
| coeff | set coefficients for one i,j type pair |
|
||||
+---------------------------------+-------------------------------------------------------------------+
|
||||
| init_one | perform initialization for one i,j type pair |
|
||||
+---------------------------------+-------------------------------------------------------------------+
|
||||
| init_style | initialization specific to this pair style |
|
||||
+---------------------------------+-------------------------------------------------------------------+
|
||||
| write & read_restart | write/read i,j pair coeffs to restart files |
|
||||
+---------------------------------+-------------------------------------------------------------------+
|
||||
| write & read_restart_settings | write/read global settings to restart files |
|
||||
+---------------------------------+-------------------------------------------------------------------+
|
||||
| single | force and energy of a single pairwise interaction between 2 atoms |
|
||||
+---------------------------------+-------------------------------------------------------------------+
|
||||
| compute_inner/middle/outer | versions of compute used by rRESPA |
|
||||
+---------------------------------+-------------------------------------------------------------------+
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| compute | workhorse routine that computes pairwise interactions |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| settings | reads the input script line with arguments you define |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| coeff | set coefficients for one i,j type pair |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| init_one | perform initialization for one i,j type pair |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| init_style | initialization specific to this pair style |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| write & read_restart | write/read i,j pair coeffs to restart files |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| write & read_restart_settings | write/read global settings to restart files |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| single | force/r and energy of a single pairwise interaction between 2 atoms |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| compute_inner/middle/outer | versions of compute used by rRESPA |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
|
||||
The inner/middle/outer routines are optional.
|
||||
|
||||
@ -278,16 +278,20 @@ eam database tool
|
||||
-----------------------------
|
||||
|
||||
The tools/eam_database directory contains a Fortran program that will
|
||||
generate EAM alloy setfl potential files for any combination of 16
|
||||
generate EAM alloy setfl potential files for any combination of 17
|
||||
elements: Cu, Ag, Au, Ni, Pd, Pt, Al, Pb, Fe, Mo, Ta, W, Mg, Co, Ti,
|
||||
Zr. The files can then be used with the :doc:`pair_style eam/alloy <pair_eam>` command.
|
||||
Zr, Cr. The files can then be used with the :doc:`pair_style eam/alloy <pair_eam>` command.
|
||||
|
||||
The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov,
|
||||
and is based on his paper:
|
||||
with updates from Lucas Hale (NIST) lucas.hale at nist.gov and is based on his paper:
|
||||
|
||||
X. W. Zhou, R. A. Johnson, and H. N. G. Wadley, Phys. Rev. B, 69,
|
||||
144113 (2004).
|
||||
|
||||
The parameters for Cr were taken from:
|
||||
|
||||
Lin Z B, Johnson R A and Zhigilei L V, Phys. Rev. B 77 214108 (2008).
|
||||
|
||||
----------
|
||||
|
||||
.. _eamgn:
|
||||
|
||||
@ -1011,7 +1011,9 @@ can be disabled with the :code:`checksum` parameter.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
none
|
||||
|
||||
*dump_modify sort* is not supported for dumps of groups containing
|
||||
more than 2 billion atoms.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
@ -310,7 +310,7 @@ Forschungszentrum Juelich.
|
||||
|
||||
The library is available for download at "http://scafacos.de" or can
|
||||
be cloned from the git-repository
|
||||
"git://github.com/scafacos/scafacos.git".
|
||||
"https://github.com/scafacos/scafacos.git".
|
||||
|
||||
In order to use this KSpace style, you must download and build the
|
||||
ScaFaCoS library, then build LAMMPS with the SCAFACOS package
|
||||
|
||||
@ -205,7 +205,7 @@ For *damping mass_velocity*, the normal damping is given by:
|
||||
\eta_n = \eta_{n0} m_{eff}
|
||||
|
||||
Here, :math:`\eta_{n0}` is the damping coefficient specified for the normal
|
||||
contact model, in units of *mass*\ /\ *time* and
|
||||
contact model, in units of 1/\ *time* and
|
||||
:math:`m_{eff} = m_i m_j/(m_i + m_j)` is the effective mass.
|
||||
Use *damping mass_velocity* to reproduce the damping behavior of
|
||||
*pair gran/hooke/\**.
|
||||
|
||||
@ -26,15 +26,29 @@ Examples
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
The *lebedeva/z* style computes the Lebedeva interaction
|
||||
potential as described in :ref:`(Lebedeva et al.) <Leb01>`. An important simplification is made,
|
||||
which is to take all normals along the z-axis.
|
||||
The *lebedeva/z* pair style computes the Lebedeva interaction potential
|
||||
as described in :ref:`(Lebedeva1) <Leb01>` and :ref:`(Lebedeva2)
|
||||
<Leb02>`. An important simplification is made, which is to take all
|
||||
normals along the z-axis.
|
||||
|
||||
The Lebedeva potential is intended for the description of the interlayer
|
||||
interaction between graphene layers. To perform a realistic simulation,
|
||||
this potential must be used in combination with an intralayer potential
|
||||
such as :doc:`AIREBO <pair_airebo>` or :doc:`Tersoff <pair_tersoff>`
|
||||
facilitated by using pair style :doc:`hybrid/overlay <pair_hybrid>`. To
|
||||
keep the intralayer properties unaffected, the interlayer interaction
|
||||
within the same layers should be avoided. This can be achieved by
|
||||
assigning different atom types to atoms of different layers (e.g. 1 and
|
||||
2 in the examples above).
|
||||
|
||||
Other interactions can be set to zero using pair_style *none*\ .
|
||||
|
||||
|
||||
.. math::
|
||||
|
||||
E = & \frac{1}{2} \sum_i \sum_{i \neq j} V_{ij}\\
|
||||
E = & \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij}\\
|
||||
V_{ij} = & B e^{-\alpha(r_{ij} - z_0)} \\
|
||||
& + C(1 + D_1\rho^2_{ij} + D_2\rho^4_{ij} e^{-\lambda_1\rho^2_{ij}} e^{-\lambda_2 (z^2_{ij} - z^2_0)} \\
|
||||
& + C(1 + D_1\rho^2_{ij} + D_2\rho^4_{ij}) e^{-\lambda_1\rho^2_{ij}} e^{-\lambda_2 (z^2_{ij} - z^2_0)} \\
|
||||
& - A \left(\frac{z_0}{r_ij}\right)^6 + A \left( \frac{z_0}{r_c} \right)^6 \\
|
||||
\rho^2_{ij} = & x^2_{ij} + y^2_{ij} \qquad (\mathbf{n_i} \equiv \mathbf{\hat{z}})
|
||||
|
||||
@ -43,12 +57,15 @@ Energies are shifted so that they go continuously to zero at the cutoff assuming
|
||||
that the exponential part of :math:`V_{ij}` (first term) decays sufficiently fast.
|
||||
This shift is achieved by the last term in the equation for :math:`V_{ij}` above.
|
||||
|
||||
The parameter file (e.g. CC.Lebedeva), is intended for use with metal
|
||||
:doc:`units <units>`, with energies in meV. An additional parameter, *S*,
|
||||
is available to facilitate scaling of energies.
|
||||
The provided parameter file (CC.Lebedeva) contains two sets of parameters.
|
||||
|
||||
This potential must be used in combination with hybrid/overlay.
|
||||
Other interactions can be set to zero using pair_style *none*\ .
|
||||
- The first set (element name "C") is suitable for normal conditions and
|
||||
is taken from :ref:`(Popov1) <Popov>`
|
||||
- The second set (element name "C1") is suitable for high-pressure
|
||||
conditions and is taken from :ref:`(Koziol1) <Koziol>`
|
||||
|
||||
Both sets contain an additional parameter, *S*, that can be used to
|
||||
facilitate scaling of energies and is set to 1.0 by default.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
@ -77,4 +94,16 @@ none
|
||||
|
||||
.. _Leb01:
|
||||
|
||||
**(Lebedeva et al.)** I. V. Lebedeva, A. A. Knizhnik, A. M. Popov, Y. E. Lozovik, B. V. Potapkin, Phys. Rev. B, 84, 245437 (2011)
|
||||
**(Lebedeva1)** I. V. Lebedeva, A. A. Knizhnik, A. M. Popov, Y. E. Lozovik, B. V. Potapkin, Phys. Rev. B, 84, 245437 (2011)
|
||||
|
||||
.. _Leb02:
|
||||
|
||||
**(Lebedeva2)** I. V. Lebedeva, A. A. Knizhnik, A. M. Popov, Y. E. Lozovik, B. V. Potapkin, Physica E: 44, 949-954 (2012)
|
||||
|
||||
.. _Popov:
|
||||
|
||||
**(Popov1)** A.M. Popov, I. V. Lebedeva, A. A. Knizhnik, Y. E. Lozovik and B. V. Potapkin, Chem. Phys. Lett. 536, 82-86 (2012).
|
||||
|
||||
.. _Koziol:
|
||||
|
||||
**(Koziol1)** Z. Koziol, G. Gawlik and J. Jagielski, Chinese Phys. B 28, 096101 (2019).
|
||||
|
||||
@ -26,23 +26,25 @@ Examples
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
The local density (LD) potential is a mean-field manybody potential, and, in some
|
||||
sense,a generalization of embedded atom models (EAM). The name "local density
|
||||
potential" arises from the fact that it assigns an energy to an atom depending
|
||||
on the number of neighboring atoms of given type around it within a predefined
|
||||
spherical volume (i.e., within a cutoff). The bottom-up coarse-graining (CG)
|
||||
literature suggests that such potentials can be widely useful in capturing
|
||||
effective multibody forces in a computationally efficient manner so as to
|
||||
improve the quality of CG models of implicit solvation:ref:`(Sanyal1) <Sanyal1>` and
|
||||
phase-segregation in liquid mixtures:ref:`(Sanyal2) <Sanyal2>`, and provide guidelines
|
||||
to determine the extent of manybody correlations present in a CG
|
||||
model.:ref:`(Rosenberger) <Rosenberger>` The LD potential in LAMMPS is primarily
|
||||
intended to be used as a corrective potential over traditional pair potentials
|
||||
in bottom-up CG models, i.e., as a hybrid pair style with
|
||||
other explicit pair interaction terms (e.g., table spline, Lennard Jones, etc.).
|
||||
Because the LD potential is not a pair potential per se, it is implemented
|
||||
simply as a single auxiliary file with all specifications that will be read
|
||||
upon initialization.
|
||||
The local density (LD) potential is a mean-field manybody potential,
|
||||
and, in some way, a generalization of embedded atom models (EAM). The
|
||||
name "local density potential" arises from the fact that it assigns an
|
||||
energy to an atom depending on the number of neighboring atoms of a
|
||||
given type around it within a predefined spherical volume (i.e., within
|
||||
the cutoff). The bottom-up coarse-graining (CG) literature suggests
|
||||
that such potentials can be widely useful in capturing effective
|
||||
multibody forces in a computationally efficient manner and thus improve
|
||||
the quality of CG models of implicit solvation :ref:`(Sanyal1)
|
||||
<Sanyal1>` and phase-segregation in liquid mixtures :ref:`(Sanyal2)
|
||||
<Sanyal2>`, and provide guidelines to determine the extent of manybody
|
||||
correlations present in a CG model :ref:`(Rosenberger) <Rosenberger>`.
|
||||
The LD potential in LAMMPS is primarily intended to be used as a
|
||||
corrective potential over traditional pair potentials in bottom-up CG
|
||||
models via :doc:`hybrid/overlay pair style <pair_hybrid>` with other
|
||||
explicit pair interaction terms (e.g., tabulated, Lennard-Jones, Morse
|
||||
etc.). Because the LD potential is not a pair potential per se, it is
|
||||
implemented simply as a single auxiliary file with all specifications
|
||||
that will be read upon initialization.
|
||||
|
||||
.. note::
|
||||
|
||||
|
||||
@ -126,11 +126,11 @@ and *compute_energy*, which both take 3 numerical arguments:
|
||||
* itype = the (numerical) type of the first atom
|
||||
* jtype = the (numerical) type of the second atom
|
||||
|
||||
This functions need to compute the force and the energy, respectively,
|
||||
and use the result as return value. The functions need to use the
|
||||
*pmap* dictionary to convert the LAMMPS atom type number to the symbolic
|
||||
value of the internal potential parameter data structure. Following
|
||||
the *LJCutMelt* example, here are the two functions:
|
||||
This functions need to compute the (scaled) force and the energy,
|
||||
respectively, and use the result as return value. The functions need
|
||||
to use the *pmap* dictionary to convert the LAMMPS atom type number
|
||||
to the symbolic value of the internal potential parameter data structure.
|
||||
Following the *LJCutMelt* example, here are the two functions:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@ -154,10 +154,10 @@ the *LJCutMelt* example, here are the two functions:
|
||||
|
||||
for consistency with the C++ pair styles in LAMMPS, the
|
||||
*compute_force* function follows the conventions of the Pair::single()
|
||||
methods and does not return the full force, but the force scaled by
|
||||
the distance between the two atoms, so this value only needs to be
|
||||
multiplied by delta x, delta y, and delta z to conveniently obtain the
|
||||
three components of the force vector between these two atoms.
|
||||
methods and does not return the pairwise force directly, but the force
|
||||
divided by the distance between the two atoms, so this value only needs
|
||||
to be multiplied by delta x, delta y, and delta z to conveniently obtain
|
||||
the three components of the force vector between these two atoms.
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Sphinx==4.0.3
|
||||
Sphinx==4.2.0
|
||||
sphinxcontrib-spelling==7.2.1
|
||||
git+git://github.com/akohlmey/sphinx-fortran@parallel-read
|
||||
git+https://github.com/akohlmey/sphinx-fortran@parallel-read
|
||||
sphinx_tabs==3.2.0
|
||||
breathe==4.31.0
|
||||
Pygments==2.10.0
|
||||
|
||||
@ -1122,6 +1122,7 @@ gaussian
|
||||
gaussians
|
||||
Gaussians
|
||||
Gavhane
|
||||
Gawlik
|
||||
gayberne
|
||||
gcc
|
||||
gcmc
|
||||
@ -1476,6 +1477,7 @@ Izz
|
||||
Jacobsen
|
||||
Jadhao
|
||||
Jadhav
|
||||
Jagielski
|
||||
jagreat
|
||||
Jahn
|
||||
Jalalvand
|
||||
@ -1602,6 +1604,7 @@ Koslowski
|
||||
Kosovan
|
||||
Koster
|
||||
Kosztin
|
||||
Koziol
|
||||
Kp
|
||||
kradius
|
||||
Kraker
|
||||
|
||||
1
examples/PACKAGES/extep/BN.extep
Symbolic link
1
examples/PACKAGES/extep/BN.extep
Symbolic link
@ -0,0 +1 @@
|
||||
../../../potentials/BN.extep
|
||||
@ -15,7 +15,7 @@ neigh_modify check yes
|
||||
|
||||
# Potential
|
||||
pair_style extep
|
||||
pair_coeff * * ../../../../potentials/BN.extep B N
|
||||
pair_coeff * * BN.extep B N
|
||||
|
||||
# Output
|
||||
thermo 10
|
||||
|
||||
@ -1,267 +0,0 @@
|
||||
LAMMPS (7 Aug 2019)
|
||||
# LAMMPS input file for 26.5% benzene mole fraction solution
|
||||
# with 380 benzene and 1000 water molecules,
|
||||
# using all possible local density potentials
|
||||
# between benzene and water
|
||||
#
|
||||
# Author: Tanmoy Sanyal, Shell Group, UC Santa Barbara
|
||||
#
|
||||
# Refer: Sanyal and Shell, JPC-B, 2018, 122 (21), 5678-5693
|
||||
|
||||
|
||||
|
||||
# Initialize simulation box
|
||||
dimension 3
|
||||
boundary p p p
|
||||
units real
|
||||
atom_style molecular
|
||||
|
||||
# Set potential styles
|
||||
pair_style hybrid/overlay table spline 500 local/density
|
||||
|
||||
# Read molecule data and set initial velocities
|
||||
read_data benzene_water.data
|
||||
orthogonal box = (-12.865 -12.865 -64.829) to (12.865 12.865 64.829)
|
||||
1 by 1 by 8 MPI processor grid
|
||||
reading atoms ...
|
||||
1380 atoms
|
||||
0 = max # of 1-2 neighbors
|
||||
0 = max # of 1-3 neighbors
|
||||
0 = max # of 1-4 neighbors
|
||||
1 = max # of special neighbors
|
||||
special bonds CPU = 0.000566959 secs
|
||||
read_data CPU = 0.00661397 secs
|
||||
velocity all create 3.0000e+02 16611 rot yes dist gaussian
|
||||
|
||||
# Assign potentials
|
||||
pair_coeff 1 1 table benzene_water.pair.table PairBB
|
||||
WARNING: 33 of 500 force values in table are inconsistent with -dE/dr.
|
||||
Should only be flagged at inflection points (../pair_table.cpp:483)
|
||||
WARNING: 150 of 500 distance values in table with relative error
|
||||
over 1e-06 to re-computed values (../pair_table.cpp:492)
|
||||
pair_coeff 1 2 table benzene_water.pair.table PairWW
|
||||
WARNING: 61 of 500 force values in table are inconsistent with -dE/dr.
|
||||
Should only be flagged at inflection points (../pair_table.cpp:483)
|
||||
WARNING: 90 of 500 distance values in table with relative error
|
||||
over 1e-06 to re-computed values (../pair_table.cpp:492)
|
||||
pair_coeff 2 2 table benzene_water.pair.table PairBW
|
||||
WARNING: 108 of 500 force values in table are inconsistent with -dE/dr.
|
||||
Should only be flagged at inflection points (../pair_table.cpp:483)
|
||||
WARNING: 135 of 500 distance values in table with relative error
|
||||
over 1e-06 to re-computed values (../pair_table.cpp:492)
|
||||
pair_coeff * * local/density benzene_water.localdensity.table
|
||||
|
||||
# Recentering during minimization and equilibration
|
||||
fix recentering all recenter 0.0 0.0 0.0 units box
|
||||
|
||||
# Thermostat & time integration
|
||||
timestep 2.0
|
||||
thermo 100
|
||||
thermo_style custom temp ke pe etotal ebond eangle edihed evdwl
|
||||
|
||||
# Minimization
|
||||
minimize 1.e-4 0.0 10000 10000
|
||||
WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:168)
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 15.25
|
||||
ghost atom cutoff = 15.25
|
||||
binsize = 7.625, bins = 4 4 18
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
(2) pair local/density, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.061 | 8.32 | 8.674 Mbytes
|
||||
Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl
|
||||
300 1233.1611 4162.3053 5395.4665 0 0 0 4162.3053
|
||||
300 1233.1611 2275.526 3508.6871 0 0 0 2275.526
|
||||
Loop time of 0.352822 on 8 procs for 40 steps with 1380 atoms
|
||||
|
||||
71.3% CPU use with 8 MPI tasks x no OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = linesearch alpha is zero
|
||||
Energy initial, next-to-last, final =
|
||||
4162.30533361 2208.86525108 2275.52597861
|
||||
Force two-norm initial, final = 259.364 69.3915
|
||||
Force max component initial, final = 22.2077 8.31436
|
||||
Final line search alpha, max atom move = 2.90022e-12 2.41135e-11
|
||||
Iterations, force evaluations = 40 110
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.053192 | 0.23903 | 0.32779 | 17.2 | 67.75
|
||||
Bond | 9.0599e-06 | 1.6302e-05 | 2.5272e-05 | 0.0 | 0.00
|
||||
Neigh | 0.00044513 | 0.0023614 | 0.0063851 | 5.1 | 0.67
|
||||
Comm | 0.015469 | 0.090432 | 0.20295 | 20.0 | 25.63
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.02098 | | | 5.95
|
||||
|
||||
Nlocal: 172.5 ave 348 max 72 min
|
||||
Histogram: 5 0 0 0 0 0 0 0 1 2
|
||||
Nghost: 2193.62 ave 4352 max 932 min
|
||||
Histogram: 3 0 0 2 0 0 2 0 0 1
|
||||
Neighs: 9700.5 ave 20535 max 3685 min
|
||||
Histogram: 5 0 0 0 0 0 0 1 0 2
|
||||
|
||||
Total # of neighbors = 77604
|
||||
Ave neighs/atom = 56.2348
|
||||
Ave special neighs/atom = 0
|
||||
Neighbor list builds = 2
|
||||
Dangerous builds = 0
|
||||
|
||||
# Set up integration parameters
|
||||
fix timeintegration all nve
|
||||
fix thermostat all langevin 3.0000e+02 3.0000e+02 1.0000e+02 81890
|
||||
|
||||
# Equilibration (for realistic results, run for 5000000 steps)
|
||||
reset_timestep 0
|
||||
run 5000
|
||||
WARNING: Fix recenter should come after all other integration fixes (../fix_recenter.cpp:131)
|
||||
Per MPI rank memory allocation (min/avg/max) = 6.936 | 7.195 | 7.552 Mbytes
|
||||
Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl
|
||||
300 1233.1611 2866.9109 4100.0721 0 0 0 2866.9109
|
||||
273.33541 1123.5553 3983.2007 5106.756 0 0 0 3983.2007
|
||||
293.68078 1207.1857 3319.6601 4526.8458 0 0 0 3319.6601
|
||||
314.21462 1291.5908 3389.2178 4680.8086 0 0 0 3389.2178
|
||||
323.77563 1330.8917 3332.9828 4663.8745 0 0 0 3332.9828
|
||||
302.5902 1243.8082 3461.7692 4705.5774 0 0 0 3461.7692
|
||||
295.39324 1214.2249 3411.5727 4625.7976 0 0 0 3411.5727
|
||||
320.52341 1317.5234 3453.1931 4770.7164 0 0 0 3453.1931
|
||||
312.00777 1282.5195 3403.3443 4685.8638 0 0 0 3403.3443
|
||||
307.96774 1265.9128 3429.7809 4695.6937 0 0 0 3429.7809
|
||||
294.75922 1211.6187 3388.8404 4600.4591 0 0 0 3388.8404
|
||||
311.24567 1279.3869 3514.9603 4794.3472 0 0 0 3514.9603
|
||||
306.6152 1260.3531 3447.2011 4707.5542 0 0 0 3447.2011
|
||||
305.23306 1254.6718 3375.5092 4630.181 0 0 0 3375.5092
|
||||
321.62889 1322.0675 3460.2581 4782.3256 0 0 0 3460.2581
|
||||
316.37725 1300.4804 3437.0312 4737.5116 0 0 0 3437.0312
|
||||
322.90522 1327.3139 3389.1262 4716.44 0 0 0 3389.1262
|
||||
307.57893 1264.3146 3359.8491 4624.1637 0 0 0 3359.8491
|
||||
302.22607 1242.3115 3406.1711 4648.4826 0 0 0 3406.1711
|
||||
302.73997 1244.4239 3220.2582 4464.6821 0 0 0 3220.2582
|
||||
303.66194 1248.2137 3318.4629 4566.6765 0 0 0 3318.4629
|
||||
308.73862 1269.0815 3369.5894 4638.671 0 0 0 3369.5894
|
||||
315.60294 1297.2976 3411.2405 4708.5381 0 0 0 3411.2405
|
||||
310.0113 1274.3129 3360.1054 4634.4183 0 0 0 3360.1054
|
||||
302.36229 1242.8714 3326.9845 4569.8559 0 0 0 3326.9845
|
||||
317.78659 1306.2735 3355.4976 4661.7711 0 0 0 3355.4976
|
||||
302.50479 1243.4571 3317.6846 4561.1417 0 0 0 3317.6846
|
||||
304.29249 1250.8056 3423.5068 4674.3124 0 0 0 3423.5068
|
||||
305.99948 1257.8222 3432.9395 4690.7617 0 0 0 3432.9395
|
||||
309.93363 1273.9937 3393.657 4667.6506 0 0 0 3393.657
|
||||
316.14884 1299.5415 3463.0636 4762.6051 0 0 0 3463.0636
|
||||
300.38817 1234.7567 3309.2495 4544.0062 0 0 0 3309.2495
|
||||
311.05735 1278.6128 3304.4418 4583.0546 0 0 0 3304.4418
|
||||
311.11872 1278.865 3291.1891 4570.0542 0 0 0 3291.1891
|
||||
315.74338 1297.8749 3341.3063 4639.1812 0 0 0 3341.3063
|
||||
297.5658 1223.1552 3316.3862 4539.5414 0 0 0 3316.3862
|
||||
311.79033 1281.6257 3357.4556 4639.0813 0 0 0 3357.4556
|
||||
310.93666 1278.1167 3414.7694 4692.8861 0 0 0 3414.7694
|
||||
307.37298 1263.468 3337.3889 4600.8569 0 0 0 3337.3889
|
||||
298.84185 1228.4005 3329.6173 4558.0178 0 0 0 3329.6173
|
||||
310.54684 1276.5143 3351.0852 4627.5995 0 0 0 3351.0852
|
||||
300.0871 1233.5191 3302.2315 4535.7506 0 0 0 3302.2315
|
||||
304.69078 1252.4427 3324.2508 4576.6935 0 0 0 3324.2508
|
||||
313.50714 1288.6827 3330.4088 4619.0915 0 0 0 3330.4088
|
||||
329.80018 1355.6559 3301.86 4657.5159 0 0 0 3301.86
|
||||
304.57609 1251.9713 3365.2938 4617.2652 0 0 0 3365.2938
|
||||
308.73584 1269.0701 3344.4155 4613.4856 0 0 0 3344.4155
|
||||
306.90951 1261.5629 3304.4698 4566.0327 0 0 0 3304.4698
|
||||
308.85761 1269.5707 3392.1511 4661.7218 0 0 0 3392.1511
|
||||
302.78788 1244.6208 3317.0849 4561.7057 0 0 0 3317.0849
|
||||
321.68092 1322.2813 3321.5755 4643.8568 0 0 0 3321.5755
|
||||
Loop time of 16.3061 on 8 procs for 5000 steps with 1380 atoms
|
||||
|
||||
Performance: 52.986 ns/day, 0.453 hours/ns, 306.634 timesteps/s
|
||||
69.6% CPU use with 8 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 2.1872 | 10.542 | 14.607 | 116.7 | 64.65
|
||||
Bond | 0.00044084 | 0.00069669 | 0.00095081 | 0.0 | 0.00
|
||||
Neigh | 0.026948 | 0.15225 | 0.44344 | 42.0 | 0.93
|
||||
Comm | 0.63452 | 4.2953 | 9.49 | 133.9 | 26.34
|
||||
Output | 0.0016391 | 0.012378 | 0.050919 | 13.9 | 0.08
|
||||
Modify | 0.45894 | 1.2107 | 4.4629 | 116.4 | 7.42
|
||||
Other | | 0.09292 | | | 0.57
|
||||
|
||||
Nlocal: 172.5 ave 380 max 70 min
|
||||
Histogram: 5 0 0 0 0 0 0 1 1 1
|
||||
Nghost: 2213 ave 4440 max 903 min
|
||||
Histogram: 3 0 0 2 0 0 2 0 0 1
|
||||
Neighs: 10042.5 ave 24051 max 3500 min
|
||||
Histogram: 5 0 0 0 0 0 0 1 1 1
|
||||
|
||||
Total # of neighbors = 80340
|
||||
Ave neighs/atom = 58.2174
|
||||
Ave special neighs/atom = 0
|
||||
Neighbor list builds = 123
|
||||
Dangerous builds = 1
|
||||
|
||||
# Turn off recentering during production phase
|
||||
unfix recentering
|
||||
|
||||
# Setup trajectory output
|
||||
dump myDump all custom 100 benzene_water.lammpstrj.gz id type x y z element
|
||||
dump_modify myDump element B W
|
||||
dump_modify myDump sort id
|
||||
|
||||
# Production (for realistic results, run for 10000000 steps)
|
||||
reset_timestep 0
|
||||
run 1000
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.232 | 8.492 | 8.851 Mbytes
|
||||
Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl
|
||||
321.68092 1322.2813 3784.0834 5106.3647 0 0 0 3784.0834
|
||||
310.59763 1276.7231 3318.3283 4595.0513 0 0 0 3318.3283
|
||||
303.39445 1247.1141 3324.1191 4571.2332 0 0 0 3324.1191
|
||||
311.37275 1279.9092 3305.0901 4584.9993 0 0 0 3305.0901
|
||||
311.29071 1279.572 3248.216 4527.788 0 0 0 3248.216
|
||||
314.53456 1292.906 3283.4563 4576.3623 0 0 0 3283.4563
|
||||
316.52595 1301.0916 3258.9171 4560.0087 0 0 0 3258.9171
|
||||
318.92447 1310.9509 3235.6256 4546.5765 0 0 0 3235.6256
|
||||
311.79212 1281.6331 3308.099 4589.7321 0 0 0 3308.099
|
||||
305.52477 1255.8709 3267.6907 4523.5616 0 0 0 3267.6907
|
||||
301.07457 1237.5782 3206.3997 4443.9779 0 0 0 3206.3997
|
||||
Loop time of 4.44139 on 8 procs for 1000 steps with 1380 atoms
|
||||
|
||||
Performance: 38.907 ns/day, 0.617 hours/ns, 225.155 timesteps/s
|
||||
60.8% CPU use with 8 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.656 | 2.5078 | 3.5775 | 57.7 | 56.46
|
||||
Bond | 0.00013375 | 0.0001854 | 0.0002377 | 0.0 | 0.00
|
||||
Neigh | 0.0048757 | 0.029188 | 0.090432 | 18.9 | 0.66
|
||||
Comm | 0.51836 | 1.4427 | 2.6285 | 56.9 | 32.48
|
||||
Output | 0.083084 | 0.089199 | 0.10333 | 2.3 | 2.01
|
||||
Modify | 0.0087376 | 0.019705 | 0.038437 | 8.4 | 0.44
|
||||
Other | | 0.3526 | | | 7.94
|
||||
|
||||
Nlocal: 172.5 ave 388 max 69 min
|
||||
Histogram: 5 0 0 0 0 0 0 2 0 1
|
||||
Nghost: 2207.88 ave 4429 max 896 min
|
||||
Histogram: 3 0 0 2 0 0 2 0 0 1
|
||||
Neighs: 10094.1 ave 24847 max 3403 min
|
||||
Histogram: 5 0 0 0 0 0 1 1 0 1
|
||||
|
||||
Total # of neighbors = 80753
|
||||
Ave neighs/atom = 58.5167
|
||||
Ave special neighs/atom = 0
|
||||
Neighbor list builds = 23
|
||||
Dangerous builds = 0
|
||||
|
||||
|
||||
Total wall time: 0:00:21
|
||||
@ -0,0 +1,300 @@
|
||||
LAMMPS (27 Oct 2021)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# LAMMPS input file for 26.5% benzene mole fraction solution
|
||||
# with 380 benzene and 1000 water molecules,
|
||||
# using all possible local density potentials
|
||||
# between benzene and water
|
||||
#
|
||||
# Author: Tanmoy Sanyal, Shell Group, UC Santa Barbara
|
||||
#
|
||||
# Refer: Sanyal and Shell, JPC-B, 2018, 122 (21), 5678-5693
|
||||
|
||||
|
||||
|
||||
# Initialize simulation box
|
||||
dimension 3
|
||||
boundary p p p
|
||||
units real
|
||||
atom_style molecular
|
||||
|
||||
# Set potential styles
|
||||
pair_style hybrid/overlay table spline 500 local/density
|
||||
|
||||
# Read molecule data and set initial velocities
|
||||
read_data benzene_water.data
|
||||
Reading data file ...
|
||||
orthogonal box = (-12.865000 -12.865000 -64.829000) to (12.865000 12.865000 64.829000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
1380 atoms
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
0 = max # of 1-2 neighbors
|
||||
0 = max # of 1-3 neighbors
|
||||
0 = max # of 1-4 neighbors
|
||||
1 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
read_data CPU = 0.006 seconds
|
||||
velocity all create 3.0000e+02 16611 rot yes dist gaussian
|
||||
|
||||
# Assign potentials
|
||||
pair_coeff 1 1 table benzene_water.pair.table PairBB
|
||||
WARNING: 33 of 500 force values in table PairBB are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
WARNING: 150 of 500 distance values in table 1e-06 with relative error
|
||||
WARNING: over PairBB to re-computed values (src/pair_table.cpp:473)
|
||||
pair_coeff 1 2 table benzene_water.pair.table PairWW
|
||||
WARNING: 61 of 500 force values in table PairWW are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
WARNING: 90 of 500 distance values in table 1e-06 with relative error
|
||||
WARNING: over PairWW to re-computed values (src/pair_table.cpp:473)
|
||||
pair_coeff 2 2 table benzene_water.pair.table PairBW
|
||||
WARNING: 108 of 500 force values in table PairBW are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
WARNING: 135 of 500 distance values in table 1e-06 with relative error
|
||||
WARNING: over PairBW to re-computed values (src/pair_table.cpp:473)
|
||||
pair_coeff * * local/density benzene_water.localdensity.table
|
||||
|
||||
# Recentering during minimization and equilibration
|
||||
fix recentering all recenter 0.0 0.0 0.0 units box
|
||||
|
||||
# Thermostat & time integration
|
||||
timestep 2.0
|
||||
thermo 100
|
||||
thermo_style custom temp ke pe etotal ebond eangle edihed evdwl
|
||||
|
||||
# Minimization
|
||||
minimize 1.e-4 0.0 10000 10000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- pair_style local/density command:
|
||||
|
||||
@Article{Sanyal16,
|
||||
author = {T.Sanyal and M.Scott Shell},
|
||||
title = {Coarse-grained models using local-density potentials optimized with the relative entropy: Application to implicit solvation},
|
||||
journal = {J.~Chem.~Phys.},
|
||||
year = 2016,
|
||||
DOI = doi.org/10.1063/1.4958629}
|
||||
|
||||
@Article{Sanyal18,
|
||||
author = {T.Sanyal and M.Scott Shell},
|
||||
title = {Transferable coarse-grained models of liquid-liquid equilibrium using local density potentials optimized with the relative entropy},
|
||||
journal = {J.~Phys.~Chem. B},
|
||||
year = 2018,
|
||||
DOI = doi.org/10.1021/acs.jpcb.7b12446}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187)
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 15.25
|
||||
ghost atom cutoff = 15.25
|
||||
binsize = 7.625, bins = 4 4 18
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
(2) pair local/density, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.754 | 8.754 | 8.754 Mbytes
|
||||
Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl
|
||||
300 1233.1611 2374.6749 3607.836 0 0 0 2374.6749
|
||||
300 1233.1611 985.54829 2218.7094 0 0 0 985.54829
|
||||
300 1233.1611 962.66036 2195.8215 0 0 0 962.66036
|
||||
Loop time of 0.812343 on 1 procs for 134 steps with 1380 atoms
|
||||
|
||||
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
2374.67491482358 962.664796664787 962.660357218268
|
||||
Force two-norm initial, final = 263.77519 15.741017
|
||||
Force max component initial, final = 22.412654 7.9360139
|
||||
Final line search alpha, max atom move = 0.014975513 0.11884588
|
||||
Iterations, force evaluations = 134 240
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.78539 | 0.78539 | 0.78539 | 0.0 | 96.68
|
||||
Bond | 2.0149e-05 | 2.0149e-05 | 2.0149e-05 | 0.0 | 0.00
|
||||
Neigh | 0.016759 | 0.016759 | 0.016759 | 0.0 | 2.06
|
||||
Comm | 0.0045 | 0.0045 | 0.0045 | 0.0 | 0.55
|
||||
Output | 2.9402e-05 | 2.9402e-05 | 2.9402e-05 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.005647 | | | 0.70
|
||||
|
||||
Nlocal: 1380.00 ave 1380 max 1380 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 5832.00 ave 5832 max 5832 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 78165.0 ave 78165 max 78165 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 78165
|
||||
Ave neighs/atom = 56.641304
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 5
|
||||
Dangerous builds = 0
|
||||
|
||||
# Set up integration parameters
|
||||
fix timeintegration all nve
|
||||
fix thermostat all langevin 3.0000e+02 3.0000e+02 1.0000e+02 81890
|
||||
|
||||
# Equilibration (for realistic results, run for 5000000 steps)
|
||||
reset_timestep 0
|
||||
run 5000
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Fix recenter should come after all other integration fixes (src/fix_recenter.cpp:133)
|
||||
Per MPI rank memory allocation (min/avg/max) = 7.629 | 7.629 | 7.629 Mbytes
|
||||
Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl
|
||||
300 1233.1611 962.66036 2195.8215 0 0 0 962.66036
|
||||
253.1913 1040.7522 1803.711 2844.4633 0 0 0 1803.711
|
||||
290.31049 1193.332 2059.0637 3252.3958 0 0 0 2059.0637
|
||||
299.30778 1230.3157 2140.226 3370.5417 0 0 0 2140.226
|
||||
309.81524 1273.507 2178.3782 3451.8853 0 0 0 2178.3782
|
||||
299.79526 1232.3195 2229.9248 3462.2444 0 0 0 2229.9248
|
||||
299.24909 1230.0745 2260.7129 3490.7874 0 0 0 2260.7129
|
||||
299.5898 1231.475 2244.2384 3475.7134 0 0 0 2244.2384
|
||||
297.81223 1224.1682 2320.27 3544.4382 0 0 0 2320.27
|
||||
301.53975 1239.4903 2277.0431 3516.5334 0 0 0 2277.0431
|
||||
292.00572 1200.3003 2292.3073 3492.6076 0 0 0 2292.3073
|
||||
309.19709 1270.9661 2303.6055 3574.5716 0 0 0 2303.6055
|
||||
297.54933 1223.0876 2304.127 3527.2146 0 0 0 2304.127
|
||||
303.48106 1247.4702 2303.5673 3551.0375 0 0 0 2303.5673
|
||||
296.46047 1218.6118 2256.1591 3474.7709 0 0 0 2256.1591
|
||||
299.4835 1231.038 2280.0452 3511.0832 0 0 0 2280.0452
|
||||
306.25958 1258.8914 2307.9795 3566.8709 0 0 0 2307.9795
|
||||
304.67335 1252.3711 2284.8252 3537.1963 0 0 0 2284.8252
|
||||
298.33637 1226.3227 2289.8499 3516.1726 0 0 0 2289.8499
|
||||
303.1338 1246.0427 2342.2148 3588.2575 0 0 0 2342.2148
|
||||
305.86051 1257.251 2341.0106 3598.2616 0 0 0 2341.0106
|
||||
297.75418 1223.9296 2303.5613 3527.4909 0 0 0 2303.5613
|
||||
296.79348 1219.9806 2327.5207 3547.5013 0 0 0 2327.5207
|
||||
307.25403 1262.9791 2288.4219 3551.401 0 0 0 2288.4219
|
||||
301.26976 1238.3805 2291.2465 3529.627 0 0 0 2291.2465
|
||||
297.17249 1221.5385 2283.3926 3504.9311 0 0 0 2283.3926
|
||||
313.99072 1290.6705 2293.9661 3584.6366 0 0 0 2293.9661
|
||||
301.70804 1240.1821 2331.1694 3571.3515 0 0 0 2331.1694
|
||||
300.62599 1235.7343 2325.4367 3561.171 0 0 0 2325.4367
|
||||
292.13495 1200.8316 2315.631 3516.4626 0 0 0 2315.631
|
||||
313.9981 1290.7008 2286.0536 3576.7545 0 0 0 2286.0536
|
||||
300.25311 1234.2015 2324.2379 3558.4394 0 0 0 2324.2379
|
||||
309.3746 1271.6958 2322.2298 3593.9256 0 0 0 2322.2298
|
||||
300.23041 1234.1082 2332.7521 3566.8603 0 0 0 2332.7521
|
||||
302.97054 1245.3716 2303.1689 3548.5405 0 0 0 2303.1689
|
||||
294.77155 1211.6694 2334.5087 3546.1781 0 0 0 2334.5087
|
||||
296.81476 1220.0681 2322.5932 3542.6613 0 0 0 2322.5932
|
||||
301.83238 1240.6932 2345.4841 3586.1773 0 0 0 2345.4841
|
||||
295.0399 1212.7724 2312.3889 3525.1614 0 0 0 2312.3889
|
||||
300.73565 1236.185 2338.8384 3575.0235 0 0 0 2338.8384
|
||||
303.02264 1245.5858 2310.0868 3555.6726 0 0 0 2310.0868
|
||||
302.86404 1244.9339 2332.2001 3577.134 0 0 0 2332.2001
|
||||
293.77916 1207.5901 2293.2799 3500.8701 0 0 0 2293.2799
|
||||
299.30072 1230.2867 2317.5065 3547.7933 0 0 0 2317.5065
|
||||
311.05029 1278.5837 2311.0476 3589.6313 0 0 0 2311.0476
|
||||
293.25646 1205.4416 2314.7398 3520.1814 0 0 0 2314.7398
|
||||
310.49018 1276.2814 2337.4909 3613.7723 0 0 0 2337.4909
|
||||
302.37336 1242.9169 2340.3197 3583.2366 0 0 0 2340.3197
|
||||
297.06862 1221.1116 2323.9136 3545.0252 0 0 0 2323.9136
|
||||
300.54817 1235.4144 2315.2405 3550.6549 0 0 0 2315.2405
|
||||
309.10643 1270.5934 2333.1848 3603.7783 0 0 0 2333.1848
|
||||
Loop time of 15.2696 on 1 procs for 5000 steps with 1380 atoms
|
||||
|
||||
Performance: 56.583 ns/day, 0.424 hours/ns, 327.447 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 | 14.432 | 14.432 | 14.432 | 0.0 | 94.51
|
||||
Bond | 0.00032375 | 0.00032375 | 0.00032375 | 0.0 | 0.00
|
||||
Neigh | 0.41541 | 0.41541 | 0.41541 | 0.0 | 2.72
|
||||
Comm | 0.0975 | 0.0975 | 0.0975 | 0.0 | 0.64
|
||||
Output | 0.0013044 | 0.0013044 | 0.0013044 | 0.0 | 0.01
|
||||
Modify | 0.30336 | 0.30336 | 0.30336 | 0.0 | 1.99
|
||||
Other | | 0.01973 | | | 0.13
|
||||
|
||||
Nlocal: 1380.00 ave 1380 max 1380 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 5843.00 ave 5843 max 5843 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 76949.0 ave 76949 max 76949 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 76949
|
||||
Ave neighs/atom = 55.760145
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 121
|
||||
Dangerous builds = 1
|
||||
|
||||
# Turn off recentering during production phase
|
||||
unfix recentering
|
||||
|
||||
# Setup trajectory output
|
||||
dump myDump all custom 100 benzene_water.lammpstrj.gz id type x y z element
|
||||
dump_modify myDump element B W
|
||||
dump_modify myDump sort id
|
||||
|
||||
# Production (for realistic results, run for 10000000 steps)
|
||||
reset_timestep 0
|
||||
run 1000
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Per MPI rank memory allocation (min/avg/max) = 9.022 | 9.022 | 9.022 Mbytes
|
||||
Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl
|
||||
309.10643 1270.5934 2333.1848 3603.7783 0 0 0 2333.1848
|
||||
300.84572 1236.6375 2331.3493 3567.9868 0 0 0 2331.3493
|
||||
300.90599 1236.8852 2337.6775 3574.5627 0 0 0 2337.6775
|
||||
302.77895 1244.5841 2341.7778 3586.362 0 0 0 2341.7778
|
||||
291.66639 1198.9055 2320.3512 3519.2567 0 0 0 2320.3512
|
||||
298.7003 1227.8187 2292.8195 3520.6382 0 0 0 2292.8195
|
||||
301.11163 1237.7305 2310.017 3547.7475 0 0 0 2310.017
|
||||
305.22515 1254.6393 2315.1355 3569.7748 0 0 0 2315.1355
|
||||
295.15921 1213.2629 2310.184 3523.4468 0 0 0 2310.184
|
||||
299.2024 1229.8826 2332.2118 3562.0943 0 0 0 2332.2118
|
||||
302.80078 1244.6738 2320.3763 3565.0502 0 0 0 2320.3763
|
||||
Loop time of 3.07208 on 1 procs for 1000 steps with 1380 atoms
|
||||
|
||||
Performance: 56.249 ns/day, 0.427 hours/ns, 325.512 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 | 2.8993 | 2.8993 | 2.8993 | 0.0 | 94.37
|
||||
Bond | 6.5327e-05 | 6.5327e-05 | 6.5327e-05 | 0.0 | 0.00
|
||||
Neigh | 0.083502 | 0.083502 | 0.083502 | 0.0 | 2.72
|
||||
Comm | 0.019967 | 0.019967 | 0.019967 | 0.0 | 0.65
|
||||
Output | 0.012268 | 0.012268 | 0.012268 | 0.0 | 0.40
|
||||
Modify | 0.052801 | 0.052801 | 0.052801 | 0.0 | 1.72
|
||||
Other | | 0.004203 | | | 0.14
|
||||
|
||||
Nlocal: 1380.00 ave 1380 max 1380 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 5860.00 ave 5860 max 5860 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 77055.0 ave 77055 max 77055 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 77055
|
||||
Ave neighs/atom = 55.836957
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 24
|
||||
Dangerous builds = 0
|
||||
|
||||
|
||||
Total wall time: 0:00:19
|
||||
@ -0,0 +1,299 @@
|
||||
LAMMPS (27 Oct 2021)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# LAMMPS input file for 26.5% benzene mole fraction solution
|
||||
# with 380 benzene and 1000 water molecules,
|
||||
# using all possible local density potentials
|
||||
# between benzene and water
|
||||
#
|
||||
# Author: Tanmoy Sanyal, Shell Group, UC Santa Barbara
|
||||
#
|
||||
# Refer: Sanyal and Shell, JPC-B, 2018, 122 (21), 5678-5693
|
||||
|
||||
|
||||
|
||||
# Initialize simulation box
|
||||
dimension 3
|
||||
boundary p p p
|
||||
units real
|
||||
atom_style molecular
|
||||
|
||||
# Set potential styles
|
||||
pair_style hybrid/overlay table spline 500 local/density
|
||||
|
||||
# Read molecule data and set initial velocities
|
||||
read_data benzene_water.data
|
||||
Reading data file ...
|
||||
orthogonal box = (-12.865000 -12.865000 -64.829000) to (12.865000 12.865000 64.829000)
|
||||
1 by 1 by 4 MPI processor grid
|
||||
reading atoms ...
|
||||
1380 atoms
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
0 = max # of 1-2 neighbors
|
||||
0 = max # of 1-3 neighbors
|
||||
0 = max # of 1-4 neighbors
|
||||
1 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
read_data CPU = 0.007 seconds
|
||||
velocity all create 3.0000e+02 16611 rot yes dist gaussian
|
||||
|
||||
# Assign potentials
|
||||
pair_coeff 1 1 table benzene_water.pair.table PairBB
|
||||
WARNING: 33 of 500 force values in table PairBB are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
WARNING: 150 of 500 distance values in table 1e-06 with relative error
|
||||
WARNING: over PairBB to re-computed values (src/pair_table.cpp:473)
|
||||
pair_coeff 1 2 table benzene_water.pair.table PairWW
|
||||
WARNING: 61 of 500 force values in table PairWW are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
WARNING: 90 of 500 distance values in table 1e-06 with relative error
|
||||
WARNING: over PairWW to re-computed values (src/pair_table.cpp:473)
|
||||
pair_coeff 2 2 table benzene_water.pair.table PairBW
|
||||
WARNING: 108 of 500 force values in table PairBW are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
WARNING: 135 of 500 distance values in table 1e-06 with relative error
|
||||
WARNING: over PairBW to re-computed values (src/pair_table.cpp:473)
|
||||
pair_coeff * * local/density benzene_water.localdensity.table
|
||||
|
||||
# Recentering during minimization and equilibration
|
||||
fix recentering all recenter 0.0 0.0 0.0 units box
|
||||
|
||||
# Thermostat & time integration
|
||||
timestep 2.0
|
||||
thermo 100
|
||||
thermo_style custom temp ke pe etotal ebond eangle edihed evdwl
|
||||
|
||||
# Minimization
|
||||
minimize 1.e-4 0.0 10000 10000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- pair_style local/density command:
|
||||
|
||||
@Article{Sanyal16,
|
||||
author = {T.Sanyal and M.Scott Shell},
|
||||
title = {Coarse-grained models using local-density potentials optimized with the relative entropy: Application to implicit solvation},
|
||||
journal = {J.~Chem.~Phys.},
|
||||
year = 2016,
|
||||
DOI = doi.org/10.1063/1.4958629}
|
||||
|
||||
@Article{Sanyal18,
|
||||
author = {T.Sanyal and M.Scott Shell},
|
||||
title = {Transferable coarse-grained models of liquid-liquid equilibrium using local density potentials optimized with the relative entropy},
|
||||
journal = {J.~Phys.~Chem. B},
|
||||
year = 2018,
|
||||
DOI = doi.org/10.1021/acs.jpcb.7b12446}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187)
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 15.25
|
||||
ghost atom cutoff = 15.25
|
||||
binsize = 7.625, bins = 4 4 18
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
(2) pair local/density, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.441 | 8.589 | 8.688 Mbytes
|
||||
Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl
|
||||
300 1233.1611 2374.6749 3607.836 0 0 0 2374.6749
|
||||
300 1233.1611 1024.8113 2257.9724 0 0 0 1024.8113
|
||||
Loop time of 0.240559 on 4 procs for 74 steps with 1380 atoms
|
||||
|
||||
98.5% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
2374.67491482358 1024.89407898645 1024.81130011575
|
||||
Force two-norm initial, final = 263.77519 20.459697
|
||||
Force max component initial, final = 22.412654 8.6082349
|
||||
Final line search alpha, max atom move = 0.027790997 0.23923143
|
||||
Iterations, force evaluations = 74 118
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.15928 | 0.1873 | 0.22814 | 6.5 | 77.86
|
||||
Bond | 3.857e-06 | 4.4012e-06 | 5.496e-06 | 0.0 | 0.00
|
||||
Neigh | 0.00064142 | 0.0028761 | 0.0058864 | 4.2 | 1.20
|
||||
Comm | 0.0040776 | 0.039595 | 0.074187 | 12.6 | 16.46
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.01078 | | | 4.48
|
||||
|
||||
Nlocal: 345.000 ave 664 max 147 min
|
||||
Histogram: 2 0 0 0 0 1 0 0 0 1
|
||||
Nghost: 2850.50 ave 4438 max 1208 min
|
||||
Histogram: 1 0 0 1 0 0 1 0 0 1
|
||||
Neighs: 19377.5 ave 37718 max 7456 min
|
||||
Histogram: 2 0 0 0 0 1 0 0 0 1
|
||||
|
||||
Total # of neighbors = 77510
|
||||
Ave neighs/atom = 56.166667
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 3
|
||||
Dangerous builds = 0
|
||||
|
||||
# Set up integration parameters
|
||||
fix timeintegration all nve
|
||||
fix thermostat all langevin 3.0000e+02 3.0000e+02 1.0000e+02 81890
|
||||
|
||||
# Equilibration (for realistic results, run for 5000000 steps)
|
||||
reset_timestep 0
|
||||
run 5000
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Fix recenter should come after all other integration fixes (src/fix_recenter.cpp:133)
|
||||
Per MPI rank memory allocation (min/avg/max) = 7.316 | 7.465 | 7.563 Mbytes
|
||||
Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl
|
||||
300 1233.1611 1024.8113 2257.9724 0 0 0 1024.8113
|
||||
263.61917 1083.6164 1866.745 2950.3614 0 0 0 1866.745
|
||||
296.0253 1216.823 2122.8463 3339.6692 0 0 0 2122.8463
|
||||
301.93846 1241.1292 2172.9802 3414.1095 0 0 0 2172.9802
|
||||
293.9491 1208.2887 2205.4892 3413.7779 0 0 0 2205.4892
|
||||
286.33795 1177.0027 2204.8908 3381.8935 0 0 0 2204.8908
|
||||
295.48217 1214.5904 2230.8849 3445.4753 0 0 0 2230.8849
|
||||
293.88908 1208.0419 2218.7563 3426.7982 0 0 0 2218.7563
|
||||
295.13798 1213.1756 2277.4515 3490.6271 0 0 0 2277.4515
|
||||
290.39538 1193.681 2273.4385 3467.1195 0 0 0 2273.4385
|
||||
297.56782 1223.1635 2268.7182 3491.8817 0 0 0 2268.7182
|
||||
306.45578 1259.6978 2289.1507 3548.8486 0 0 0 2289.1507
|
||||
308.54582 1268.289 2284.8514 3553.1404 0 0 0 2284.8514
|
||||
302.17353 1242.0955 2262.5577 3504.6532 0 0 0 2262.5577
|
||||
295.30087 1213.8452 2315.8853 3529.7305 0 0 0 2315.8853
|
||||
308.59197 1268.4787 2291.8314 3560.3101 0 0 0 2291.8314
|
||||
297.75618 1223.9378 2287.2003 3511.1381 0 0 0 2287.2003
|
||||
303.43395 1247.2765 2297.7158 3544.9923 0 0 0 2297.7158
|
||||
307.16233 1262.6021 2255.9769 3518.5791 0 0 0 2255.9769
|
||||
301.34428 1238.6868 2284.416 3523.1028 0 0 0 2284.416
|
||||
295.43209 1214.3846 2294.1043 3508.4889 0 0 0 2294.1043
|
||||
287.86904 1183.2963 2257.0204 3440.3168 0 0 0 2257.0204
|
||||
297.2661 1221.9233 2251.4194 3473.3428 0 0 0 2251.4194
|
||||
298.90221 1228.6486 2261.834 3490.4826 0 0 0 2261.834
|
||||
288.07202 1184.1307 2284.1918 3468.3225 0 0 0 2284.1918
|
||||
300.41201 1234.8547 2303.9573 3538.812 0 0 0 2303.9573
|
||||
283.91279 1167.034 2329.7936 3496.8277 0 0 0 2329.7936
|
||||
297.27507 1221.9602 2337.0516 3559.0118 0 0 0 2337.0516
|
||||
296.22263 1217.6341 2335.6424 3553.2765 0 0 0 2335.6424
|
||||
296.13784 1217.2856 2364.7034 3581.989 0 0 0 2364.7034
|
||||
308.17642 1266.7706 2320.2753 3587.0459 0 0 0 2320.2753
|
||||
310.26592 1275.3596 2301.9318 3577.2914 0 0 0 2301.9318
|
||||
292.97391 1204.2801 2289.8116 3494.0917 0 0 0 2289.8116
|
||||
294.81231 1211.8369 2315.0388 3526.8757 0 0 0 2315.0388
|
||||
298.66155 1227.6594 2317.2844 3544.9437 0 0 0 2317.2844
|
||||
302.77939 1244.5859 2301.2063 3545.7922 0 0 0 2301.2063
|
||||
291.47597 1198.1228 2285.1757 3483.2985 0 0 0 2285.1757
|
||||
286.19045 1176.3964 2265.2665 3441.6629 0 0 0 2265.2665
|
||||
295.58144 1214.9984 2272.3165 3487.315 0 0 0 2272.3165
|
||||
283.86988 1166.8577 2320.6142 3487.4719 0 0 0 2320.6142
|
||||
300.0576 1233.3979 2330.8962 3564.2941 0 0 0 2330.8962
|
||||
299.86413 1232.6026 2321.2281 3553.8308 0 0 0 2321.2281
|
||||
292.79017 1203.5248 2334.2308 3537.7557 0 0 0 2334.2308
|
||||
291.5027 1198.2327 2335.2119 3533.4446 0 0 0 2335.2119
|
||||
299.55471 1231.3307 2332.5216 3563.8524 0 0 0 2332.5216
|
||||
293.29613 1205.6046 2295.3263 3500.9309 0 0 0 2295.3263
|
||||
303.13151 1246.0333 2310.0548 3556.0881 0 0 0 2310.0548
|
||||
298.83954 1228.391 2297.3117 3525.7027 0 0 0 2297.3117
|
||||
297.44775 1222.67 2307.2483 3529.9183 0 0 0 2307.2483
|
||||
309.59874 1272.6171 2309.2439 3581.861 0 0 0 2309.2439
|
||||
307.47844 1263.9015 2274.998 3538.8995 0 0 0 2274.998
|
||||
Loop time of 11.2235 on 4 procs for 5000 steps with 1380 atoms
|
||||
|
||||
Performance: 76.982 ns/day, 0.312 hours/ns, 445.495 timesteps/s
|
||||
98.5% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 7.1444 | 8.5074 | 10.534 | 44.9 | 75.80
|
||||
Bond | 0.00017048 | 0.00020672 | 0.00030488 | 0.0 | 0.00
|
||||
Neigh | 0.026174 | 0.12108 | 0.26052 | 28.2 | 1.08
|
||||
Comm | 0.21788 | 1.8597 | 3.3375 | 81.2 | 16.57
|
||||
Output | 0.0008989 | 0.0069895 | 0.021647 | 10.2 | 0.06
|
||||
Modify | 0.19418 | 0.7044 | 2.1378 | 98.6 | 6.28
|
||||
Other | | 0.02368 | | | 0.21
|
||||
|
||||
Nlocal: 345.000 ave 678 max 148 min
|
||||
Histogram: 2 0 0 0 1 0 0 0 0 1
|
||||
Nghost: 2854.25 ave 4464 max 1181 min
|
||||
Histogram: 1 0 0 1 0 0 1 0 0 1
|
||||
Neighs: 19366.8 ave 38533 max 7481 min
|
||||
Histogram: 2 0 0 0 0 1 0 0 0 1
|
||||
|
||||
Total # of neighbors = 77467
|
||||
Ave neighs/atom = 56.135507
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 121
|
||||
Dangerous builds = 1
|
||||
|
||||
# Turn off recentering during production phase
|
||||
unfix recentering
|
||||
|
||||
# Setup trajectory output
|
||||
dump myDump all custom 100 benzene_water.lammpstrj.gz id type x y z element
|
||||
dump_modify myDump element B W
|
||||
dump_modify myDump sort id
|
||||
|
||||
# Production (for realistic results, run for 10000000 steps)
|
||||
reset_timestep 0
|
||||
run 1000
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.640 | 8.791 | 8.894 Mbytes
|
||||
Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl
|
||||
307.47844 1263.9015 2274.998 3538.8995 0 0 0 2274.998
|
||||
309.46142 1272.0526 2274.8499 3546.9026 0 0 0 2274.8499
|
||||
300.70977 1236.0787 2301.0588 3537.1374 0 0 0 2301.0588
|
||||
300.53659 1235.3668 2316.1008 3551.4675 0 0 0 2316.1008
|
||||
300.48582 1235.1581 2296.3009 3531.459 0 0 0 2296.3009
|
||||
299.2618 1230.1267 2325.7501 3555.8768 0 0 0 2325.7501
|
||||
303.00905 1245.5299 2321.8238 3567.3537 0 0 0 2321.8238
|
||||
300.07018 1233.4496 2339.2833 3572.7329 0 0 0 2339.2833
|
||||
304.20292 1250.4374 2353.1018 3603.5392 0 0 0 2353.1018
|
||||
304.19487 1250.4043 2334.5087 3584.913 0 0 0 2334.5087
|
||||
294.24283 1209.4961 2335.0535 3544.5496 0 0 0 2335.0535
|
||||
Loop time of 2.90512 on 4 procs for 1000 steps with 1380 atoms
|
||||
|
||||
Performance: 59.481 ns/day, 0.403 hours/ns, 344.220 timesteps/s
|
||||
98.4% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 1.8627 | 2.2082 | 2.7289 | 22.6 | 76.01
|
||||
Bond | 4.042e-05 | 5.3677e-05 | 8.4044e-05 | 0.0 | 0.00
|
||||
Neigh | 0.0066184 | 0.030172 | 0.064523 | 13.9 | 1.04
|
||||
Comm | 0.05914 | 0.51145 | 0.86887 | 40.7 | 17.61
|
||||
Output | 0.0057814 | 0.0073478 | 0.011158 | 2.6 | 0.25
|
||||
Modify | 0.0085337 | 0.020869 | 0.042248 | 9.4 | 0.72
|
||||
Other | | 0.127 | | | 4.37
|
||||
|
||||
Nlocal: 345.000 ave 682 max 147 min
|
||||
Histogram: 2 0 0 0 1 0 0 0 0 1
|
||||
Nghost: 2836.25 ave 4427 max 1175 min
|
||||
Histogram: 1 0 0 1 0 0 1 0 0 1
|
||||
Neighs: 19249.8 ave 38683 max 7433 min
|
||||
Histogram: 2 0 0 0 1 0 0 0 0 1
|
||||
|
||||
Total # of neighbors = 76999
|
||||
Ave neighs/atom = 55.796377
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 23
|
||||
Dangerous builds = 0
|
||||
|
||||
|
||||
Total wall time: 0:00:14
|
||||
@ -1,226 +0,0 @@
|
||||
LAMMPS (7 Aug 2019)
|
||||
# LAMMPS input file for 50.0% methanol mole fraction solution
|
||||
# with 2500 methanol molecules in implicit water.
|
||||
#
|
||||
#
|
||||
# Author: David Rosenberger, van der Vegt Group, TU Darmstadt
|
||||
#
|
||||
# Refer: Rosenberger, Sanyal, Shell, van der Vegt, J. Chem. Theory Comput. 15, 2881-2895 (2019)
|
||||
|
||||
|
||||
# Initialize simulation box
|
||||
dimension 3
|
||||
boundary p p p
|
||||
units real
|
||||
atom_style molecular
|
||||
|
||||
# Set potential styles
|
||||
pair_style hybrid/overlay table spline 500 local/density
|
||||
|
||||
# Read molecule data and set initial velocities
|
||||
read_data methanol_implicit_water.data
|
||||
orthogonal box = (-31.123 -31.123 -31.123) to (31.123 31.123 31.123)
|
||||
2 by 2 by 2 MPI processor grid
|
||||
reading atoms ...
|
||||
2500 atoms
|
||||
0 = max # of 1-2 neighbors
|
||||
0 = max # of 1-3 neighbors
|
||||
0 = max # of 1-4 neighbors
|
||||
1 = max # of special neighbors
|
||||
special bonds CPU = 0.00063014 secs
|
||||
read_data CPU = 0.00599909 secs
|
||||
velocity all create 3.0000e+02 12142 rot yes dist gaussian
|
||||
|
||||
# Assign potentials
|
||||
pair_coeff 1 1 table methanol_implicit_water.pair.table PairMM
|
||||
WARNING: 93 of 500 force values in table are inconsistent with -dE/dr.
|
||||
Should only be flagged at inflection points (../pair_table.cpp:483)
|
||||
WARNING: 254 of 500 distance values in table with relative error
|
||||
over 1e-06 to re-computed values (../pair_table.cpp:492)
|
||||
pair_coeff * * local/density methanol_implicit_water.localdensity.table
|
||||
|
||||
|
||||
|
||||
|
||||
#Recentering during minimization and equilibration
|
||||
fix recentering all recenter 0.0 0.0 0.0 units box
|
||||
|
||||
#Thermostat & time integration
|
||||
timestep 1.0
|
||||
thermo 100
|
||||
thermo_style custom etotal ke pe temp evdwl
|
||||
|
||||
#minimization
|
||||
minimize 1.e-4 0.0 1000 1000
|
||||
WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:168)
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 17
|
||||
ghost atom cutoff = 17
|
||||
binsize = 8.5, bins = 8 8 8
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
(2) pair local/density, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 7.411 | 7.411 | 7.412 Mbytes
|
||||
TotEng KinEng PotEng Temp E_vdwl
|
||||
1470.3564 2234.7133 -764.35689 300 -764.35689
|
||||
46.496766 2234.7133 -2188.2165 300 -2188.2165
|
||||
7.9030246 2234.7133 -2226.8103 300 -2226.8103
|
||||
Loop time of 0.463996 on 8 procs for 121 steps with 2500 atoms
|
||||
|
||||
91.4% CPU use with 8 MPI tasks x no OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = linesearch alpha is zero
|
||||
Energy initial, next-to-last, final =
|
||||
-764.356892369 -2227.85589084 -2226.81026984
|
||||
Force two-norm initial, final = 134.911 3.83896
|
||||
Force max component initial, final = 14.1117 1.07422
|
||||
Final line search alpha, max atom move = 5.06747e-10 5.44356e-10
|
||||
Iterations, force evaluations = 121 154
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.41442 | 0.41976 | 0.42434 | 0.5 | 90.47
|
||||
Bond | 1.1683e-05 | 2.0713e-05 | 3.5048e-05 | 0.0 | 0.00
|
||||
Neigh | 0.0084722 | 0.0090862 | 0.010038 | 0.5 | 1.96
|
||||
Comm | 0.022712 | 0.028157 | 0.034072 | 1.9 | 6.07
|
||||
Output | 3.1948e-05 | 3.6925e-05 | 6.6996e-05 | 0.0 | 0.01
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.006937 | | | 1.50
|
||||
|
||||
Nlocal: 312.5 ave 333 max 299 min
|
||||
Histogram: 2 2 0 0 1 0 2 0 0 1
|
||||
Nghost: 2546 ave 2580 max 2517 min
|
||||
Histogram: 1 1 0 3 0 1 0 0 0 2
|
||||
Neighs: 33215.4 ave 37251 max 29183 min
|
||||
Histogram: 1 0 0 1 2 2 0 1 0 1
|
||||
|
||||
Total # of neighbors = 265723
|
||||
Ave neighs/atom = 106.289
|
||||
Ave special neighs/atom = 0
|
||||
Neighbor list builds = 6
|
||||
Dangerous builds = 0
|
||||
|
||||
#set up integration parameters
|
||||
fix timeintegration all nve
|
||||
fix thermostat all langevin 3.0000e+02 3.0000e+02 1.0000e+02 59915
|
||||
|
||||
#Equilibration (for realistic results, run for 2000000 steps)
|
||||
reset_timestep 0
|
||||
thermo 200
|
||||
thermo_style custom etotal ke pe temp evdwl
|
||||
|
||||
#run equilibration
|
||||
run 2000
|
||||
WARNING: Fix recenter should come after all other integration fixes (../fix_recenter.cpp:131)
|
||||
Per MPI rank memory allocation (min/avg/max) = 6.286 | 6.286 | 6.287 Mbytes
|
||||
TotEng KinEng PotEng Temp E_vdwl
|
||||
177.26822 2234.7133 -2057.4451 300 -2057.4451
|
||||
736.24287 2151.2608 -1415.0179 288.79688 -1415.0179
|
||||
963.07617 2090.6433 -1127.5671 280.65926 -1127.5671
|
||||
1148.9049 2173.1327 -1024.2279 291.73309 -1024.2279
|
||||
1303.6409 2279.8586 -976.21767 306.06055 -976.21767
|
||||
1355.42 2281.0383 -925.61826 306.21892 -925.61826
|
||||
1394.5206 2276.2093 -881.68863 305.57064 -881.68863
|
||||
1346.9764 2215.2973 -868.32091 297.3935 -868.32091
|
||||
1381.3654 2248.8061 -867.44063 301.89189 -867.44063
|
||||
1315.8059 2189.3193 -873.51332 293.90606 -873.51332
|
||||
1314.4456 2209.7431 -895.29752 296.64787 -895.29752
|
||||
Loop time of 6.38989 on 8 procs for 2000 steps with 2500 atoms
|
||||
|
||||
Performance: 27.043 ns/day, 0.887 hours/ns, 312.994 timesteps/s
|
||||
80.5% CPU use with 8 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 5.2693 | 5.3572 | 5.457 | 2.1 | 83.84
|
||||
Bond | 0.00028825 | 0.00033835 | 0.00039148 | 0.0 | 0.01
|
||||
Neigh | 0.0296 | 0.032337 | 0.035071 | 0.9 | 0.51
|
||||
Comm | 0.64679 | 0.73397 | 0.80847 | 5.2 | 11.49
|
||||
Output | 0.00033498 | 0.00051582 | 0.0015228 | 0.0 | 0.01
|
||||
Modify | 0.16395 | 0.18919 | 0.21056 | 3.9 | 2.96
|
||||
Other | | 0.07636 | | | 1.19
|
||||
|
||||
Nlocal: 312.5 ave 337 max 295 min
|
||||
Histogram: 2 2 0 1 0 0 0 1 1 1
|
||||
Nghost: 2551.62 ave 2582 max 2525 min
|
||||
Histogram: 2 1 0 0 1 1 1 0 1 1
|
||||
Neighs: 33241.8 ave 37659 max 29705 min
|
||||
Histogram: 2 0 0 2 2 0 0 0 1 1
|
||||
|
||||
Total # of neighbors = 265934
|
||||
Ave neighs/atom = 106.374
|
||||
Ave special neighs/atom = 0
|
||||
Neighbor list builds = 21
|
||||
Dangerous builds = 0
|
||||
|
||||
#turn off recentering during production run
|
||||
unfix recentering
|
||||
|
||||
|
||||
#setup trajectory output
|
||||
dump myDump all custom 100 methanol_implicit_water.lammpstrj.gz id type x y z element
|
||||
dump_modify myDump element M
|
||||
dump_modify myDump sort id
|
||||
|
||||
#run production (for realistic results, run for 10000000 steps)
|
||||
reset_timestep 0
|
||||
thermo 1000
|
||||
thermo_style custom etotal ke pe temp evdwl
|
||||
run 10000
|
||||
Per MPI rank memory allocation (min/avg/max) = 7.588 | 7.589 | 7.589 Mbytes
|
||||
TotEng KinEng PotEng Temp E_vdwl
|
||||
1442.5428 2209.7431 -767.20027 296.64787 -767.20027
|
||||
1391.8624 2262.6889 -870.82656 303.7556 -870.82656
|
||||
1375.914 2244.6176 -868.7036 301.3296 -868.7036
|
||||
1345.9064 2227.2324 -881.32599 298.99573 -881.32599
|
||||
1379.2334 2278.1156 -898.88222 305.82657 -898.88222
|
||||
1389.7928 2255.8062 -866.01341 302.83163 -866.01341
|
||||
1380.4549 2258.2108 -877.75582 303.15443 -877.75582
|
||||
1380.8489 2256.9432 -876.09428 302.98426 -876.09428
|
||||
1326.5151 2225.7408 -899.22577 298.79549 -899.22577
|
||||
1376.6025 2253.0128 -876.41028 302.45662 -876.41028
|
||||
1331.0008 2218.1033 -887.10258 297.77019 -887.10258
|
||||
Loop time of 25.4591 on 8 procs for 10000 steps with 2500 atoms
|
||||
|
||||
Performance: 33.937 ns/day, 0.707 hours/ns, 392.787 timesteps/s
|
||||
89.3% CPU use with 8 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 21.635 | 21.916 | 22.237 | 3.9 | 86.08
|
||||
Bond | 0.0011308 | 0.0013149 | 0.0016932 | 0.5 | 0.01
|
||||
Neigh | 0.14593 | 0.15675 | 0.16667 | 1.9 | 0.62
|
||||
Comm | 1.3789 | 1.7502 | 1.9558 | 13.7 | 6.87
|
||||
Output | 0.34664 | 0.82927 | 1.2013 | 32.8 | 3.26
|
||||
Modify | 0.24904 | 0.25842 | 0.26907 | 1.2 | 1.02
|
||||
Other | | 0.5475 | | | 2.15
|
||||
|
||||
Nlocal: 312.5 ave 327 max 298 min
|
||||
Histogram: 2 0 0 1 1 0 1 1 1 1
|
||||
Nghost: 2575 ave 2601 max 2559 min
|
||||
Histogram: 2 0 3 1 0 0 0 0 1 1
|
||||
Neighs: 33223.2 ave 35920 max 30303 min
|
||||
Histogram: 1 1 1 1 0 1 0 0 0 3
|
||||
|
||||
Total # of neighbors = 265786
|
||||
Ave neighs/atom = 106.314
|
||||
Ave special neighs/atom = 0
|
||||
Neighbor list builds = 103
|
||||
Dangerous builds = 0
|
||||
|
||||
|
||||
Total wall time: 0:00:32
|
||||
@ -0,0 +1,259 @@
|
||||
LAMMPS (27 Oct 2021)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# LAMMPS input file for 50.0% methanol mole fraction solution
|
||||
# with 2500 methanol molecules in implicit water.
|
||||
#
|
||||
#
|
||||
# Author: David Rosenberger, van der Vegt Group, TU Darmstadt
|
||||
#
|
||||
# Refer: Rosenberger, Sanyal, Shell, van der Vegt, J. Chem. Theory Comput. 15, 2881-2895 (2019)
|
||||
|
||||
|
||||
# Initialize simulation box
|
||||
dimension 3
|
||||
boundary p p p
|
||||
units real
|
||||
atom_style molecular
|
||||
|
||||
# Set potential styles
|
||||
pair_style hybrid/overlay table spline 500 local/density
|
||||
|
||||
# Read molecule data and set initial velocities
|
||||
read_data methanol_implicit_water.data
|
||||
Reading data file ...
|
||||
orthogonal box = (-31.123000 -31.123000 -31.123000) to (31.123000 31.123000 31.123000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
2500 atoms
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
0 = max # of 1-2 neighbors
|
||||
0 = max # of 1-3 neighbors
|
||||
0 = max # of 1-4 neighbors
|
||||
1 = max # of special neighbors
|
||||
special bonds CPU = 0.001 seconds
|
||||
read_data CPU = 0.016 seconds
|
||||
velocity all create 3.0000e+02 12142 rot yes dist gaussian
|
||||
|
||||
# Assign potentials
|
||||
pair_coeff 1 1 table methanol_implicit_water.pair.table PairMM
|
||||
WARNING: 93 of 500 force values in table PairMM are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
WARNING: 254 of 500 distance values in table 1e-06 with relative error
|
||||
WARNING: over PairMM to re-computed values (src/pair_table.cpp:473)
|
||||
pair_coeff * * local/density methanol_implicit_water.localdensity.table
|
||||
|
||||
|
||||
|
||||
|
||||
#Recentering during minimization and equilibration
|
||||
fix recentering all recenter 0.0 0.0 0.0 units box
|
||||
|
||||
#Thermostat & time integration
|
||||
timestep 1.0
|
||||
thermo 100
|
||||
thermo_style custom etotal ke pe temp evdwl
|
||||
|
||||
#minimization
|
||||
minimize 1.e-4 0.0 1000 1000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- pair_style local/density command:
|
||||
|
||||
@Article{Sanyal16,
|
||||
author = {T.Sanyal and M.Scott Shell},
|
||||
title = {Coarse-grained models using local-density potentials optimized with the relative entropy: Application to implicit solvation},
|
||||
journal = {J.~Chem.~Phys.},
|
||||
year = 2016,
|
||||
DOI = doi.org/10.1063/1.4958629}
|
||||
|
||||
@Article{Sanyal18,
|
||||
author = {T.Sanyal and M.Scott Shell},
|
||||
title = {Transferable coarse-grained models of liquid-liquid equilibrium using local density potentials optimized with the relative entropy},
|
||||
journal = {J.~Phys.~Chem. B},
|
||||
year = 2018,
|
||||
DOI = doi.org/10.1021/acs.jpcb.7b12446}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187)
|
||||
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 17
|
||||
ghost atom cutoff = 17
|
||||
binsize = 8.5, bins = 8 8 8
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
(2) pair local/density, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 9.535 | 9.535 | 9.535 Mbytes
|
||||
TotEng KinEng PotEng Temp E_vdwl
|
||||
1283.8556 2234.7133 -950.85771 300 -950.85771
|
||||
-10.187232 2234.7133 -2244.9005 300 -2244.9005
|
||||
-124.79406 2234.7133 -2359.5074 300 -2359.5074
|
||||
-126.7619 2234.7133 -2361.4752 300 -2361.4752
|
||||
Loop time of 3.74581 on 1 procs for 205 steps with 2500 atoms
|
||||
|
||||
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
-950.857712502514 -2361.24417962983 -2361.47519428972
|
||||
Force two-norm initial, final = 135.25170 2.8038329
|
||||
Force max component initial, final = 14.083102 1.1154133
|
||||
Final line search alpha, max atom move = 0.16981022 0.18940857
|
||||
Iterations, force evaluations = 205 223
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 3.5678 | 3.5678 | 3.5678 | 0.0 | 95.25
|
||||
Bond | 7.5831e-05 | 7.5831e-05 | 7.5831e-05 | 0.0 | 0.00
|
||||
Neigh | 0.12962 | 0.12962 | 0.12962 | 0.0 | 3.46
|
||||
Comm | 0.019204 | 0.019204 | 0.019204 | 0.0 | 0.51
|
||||
Output | 0.00023948 | 0.00023948 | 0.00023948 | 0.0 | 0.01
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.02886 | | | 0.77
|
||||
|
||||
Nlocal: 2500.00 ave 2500 max 2500 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 6729.00 ave 6729 max 6729 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 265637.0 ave 265637 max 265637 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 265637
|
||||
Ave neighs/atom = 106.25480
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 11
|
||||
Dangerous builds = 0
|
||||
|
||||
#set up integration parameters
|
||||
fix timeintegration all nve
|
||||
fix thermostat all langevin 3.0000e+02 3.0000e+02 1.0000e+02 59915
|
||||
|
||||
#Equilibration (for realistic results, run for 2000000 steps)
|
||||
reset_timestep 0
|
||||
thermo 200
|
||||
thermo_style custom etotal ke pe temp evdwl
|
||||
|
||||
#run equilibration
|
||||
run 2000
|
||||
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Fix recenter should come after all other integration fixes (src/fix_recenter.cpp:133)
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.410 | 8.410 | 8.410 Mbytes
|
||||
TotEng KinEng PotEng Temp E_vdwl
|
||||
-126.7619 2234.7133 -2361.4752 300 -2361.4752
|
||||
517.05047 2015.8636 -1498.8131 270.62043 -1498.8131
|
||||
931.78263 2135.4332 -1203.6506 286.6721 -1203.6506
|
||||
1162.6209 2242.1662 -1079.5453 301.00051 -1079.5453
|
||||
1164.2129 2211.6204 -1047.4075 296.89989 -1047.4075
|
||||
1258.0085 2286.5942 -1028.5857 306.96477 -1028.5857
|
||||
1231.1937 2200.814 -969.62032 295.44917 -969.62032
|
||||
1251.2144 2245.0533 -993.83885 301.3881 -993.83885
|
||||
1237.2495 2239.8802 -1002.6307 300.69363 -1002.6307
|
||||
1232.3342 2224.3415 -992.00722 298.60763 -992.00722
|
||||
1235.3228 2197.191 -961.86817 294.9628 -961.86817
|
||||
Loop time of 23.6478 on 1 procs for 2000 steps with 2500 atoms
|
||||
|
||||
Performance: 7.307 ns/day, 3.284 hours/ns, 84.575 timesteps/s
|
||||
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 22.797 | 22.797 | 22.797 | 0.0 | 96.40
|
||||
Bond | 0.00070412 | 0.00070412 | 0.00070412 | 0.0 | 0.00
|
||||
Neigh | 0.2249 | 0.2249 | 0.2249 | 0.0 | 0.95
|
||||
Comm | 0.12259 | 0.12259 | 0.12259 | 0.0 | 0.52
|
||||
Output | 0.00088925 | 0.00088925 | 0.00088925 | 0.0 | 0.00
|
||||
Modify | 0.46447 | 0.46447 | 0.46447 | 0.0 | 1.96
|
||||
Other | | 0.03711 | | | 0.16
|
||||
|
||||
Nlocal: 2500.00 ave 2500 max 2500 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 6752.00 ave 6752 max 6752 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 265940.0 ave 265940 max 265940 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 265940
|
||||
Ave neighs/atom = 106.37600
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 20
|
||||
Dangerous builds = 0
|
||||
|
||||
#turn off recentering during production run
|
||||
unfix recentering
|
||||
|
||||
|
||||
#setup trajectory output
|
||||
dump myDump all custom 100 methanol_implicit_water.lammpstrj.gz id type x y z element
|
||||
dump_modify myDump element M
|
||||
dump_modify myDump sort id
|
||||
|
||||
#run production (for realistic results, run for 10000000 steps)
|
||||
reset_timestep 0
|
||||
thermo 1000
|
||||
thermo_style custom etotal ke pe temp evdwl
|
||||
run 10000
|
||||
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
Per MPI rank memory allocation (min/avg/max) = 9.918 | 9.918 | 9.918 Mbytes
|
||||
TotEng KinEng PotEng Temp E_vdwl
|
||||
1235.3228 2197.191 -961.86817 294.9628 -961.86817
|
||||
1289.8463 2236.1425 -946.29622 300.19186 -946.29622
|
||||
1348.0825 2305.0295 -956.94703 309.43963 -956.94703
|
||||
1279.5478 2241.1582 -961.61041 300.86521 -961.61041
|
||||
1231.8597 2201.9591 -970.09949 295.60291 -970.09949
|
||||
1277.3424 2221.3696 -944.02725 298.20867 -944.02725
|
||||
1296.0116 2222.0998 -926.08818 298.3067 -926.08818
|
||||
1266.2849 2206.3727 -940.08782 296.1954 -940.08782
|
||||
1313.2808 2260.5077 -947.22683 303.46278 -947.22683
|
||||
1309.3076 2234.3895 -925.08198 299.95654 -925.08198
|
||||
1275.9792 2221.3037 -945.32449 298.19982 -945.32449
|
||||
Loop time of 67.3224 on 1 procs for 10000 steps with 2500 atoms
|
||||
|
||||
Performance: 12.834 ns/day, 1.870 hours/ns, 148.539 timesteps/s
|
||||
99.4% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 64.476 | 64.476 | 64.476 | 0.0 | 95.77
|
||||
Bond | 0.0014504 | 0.0014504 | 0.0014504 | 0.0 | 0.00
|
||||
Neigh | 0.71333 | 0.71333 | 0.71333 | 0.0 | 1.06
|
||||
Comm | 0.32846 | 0.32846 | 0.32846 | 0.0 | 0.49
|
||||
Output | 0.46997 | 0.46997 | 0.46997 | 0.0 | 0.70
|
||||
Modify | 1.2336 | 1.2336 | 1.2336 | 0.0 | 1.83
|
||||
Other | | 0.09996 | | | 0.15
|
||||
|
||||
Nlocal: 2500.00 ave 2500 max 2500 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 6662.00 ave 6662 max 6662 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 265774.0 ave 265774 max 265774 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 265774
|
||||
Ave neighs/atom = 106.30960
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 104
|
||||
Dangerous builds = 0
|
||||
|
||||
|
||||
Total wall time: 0:01:34
|
||||
@ -0,0 +1,259 @@
|
||||
LAMMPS (27 Oct 2021)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# LAMMPS input file for 50.0% methanol mole fraction solution
|
||||
# with 2500 methanol molecules in implicit water.
|
||||
#
|
||||
#
|
||||
# Author: David Rosenberger, van der Vegt Group, TU Darmstadt
|
||||
#
|
||||
# Refer: Rosenberger, Sanyal, Shell, van der Vegt, J. Chem. Theory Comput. 15, 2881-2895 (2019)
|
||||
|
||||
|
||||
# Initialize simulation box
|
||||
dimension 3
|
||||
boundary p p p
|
||||
units real
|
||||
atom_style molecular
|
||||
|
||||
# Set potential styles
|
||||
pair_style hybrid/overlay table spline 500 local/density
|
||||
|
||||
# Read molecule data and set initial velocities
|
||||
read_data methanol_implicit_water.data
|
||||
Reading data file ...
|
||||
orthogonal box = (-31.123000 -31.123000 -31.123000) to (31.123000 31.123000 31.123000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
reading atoms ...
|
||||
2500 atoms
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
0 = max # of 1-2 neighbors
|
||||
0 = max # of 1-3 neighbors
|
||||
0 = max # of 1-4 neighbors
|
||||
1 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
read_data CPU = 0.005 seconds
|
||||
velocity all create 3.0000e+02 12142 rot yes dist gaussian
|
||||
|
||||
# Assign potentials
|
||||
pair_coeff 1 1 table methanol_implicit_water.pair.table PairMM
|
||||
WARNING: 93 of 500 force values in table PairMM are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
WARNING: 254 of 500 distance values in table 1e-06 with relative error
|
||||
WARNING: over PairMM to re-computed values (src/pair_table.cpp:473)
|
||||
pair_coeff * * local/density methanol_implicit_water.localdensity.table
|
||||
|
||||
|
||||
|
||||
|
||||
#Recentering during minimization and equilibration
|
||||
fix recentering all recenter 0.0 0.0 0.0 units box
|
||||
|
||||
#Thermostat & time integration
|
||||
timestep 1.0
|
||||
thermo 100
|
||||
thermo_style custom etotal ke pe temp evdwl
|
||||
|
||||
#minimization
|
||||
minimize 1.e-4 0.0 1000 1000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- pair_style local/density command:
|
||||
|
||||
@Article{Sanyal16,
|
||||
author = {T.Sanyal and M.Scott Shell},
|
||||
title = {Coarse-grained models using local-density potentials optimized with the relative entropy: Application to implicit solvation},
|
||||
journal = {J.~Chem.~Phys.},
|
||||
year = 2016,
|
||||
DOI = doi.org/10.1063/1.4958629}
|
||||
|
||||
@Article{Sanyal18,
|
||||
author = {T.Sanyal and M.Scott Shell},
|
||||
title = {Transferable coarse-grained models of liquid-liquid equilibrium using local density potentials optimized with the relative entropy},
|
||||
journal = {J.~Phys.~Chem. B},
|
||||
year = 2018,
|
||||
DOI = doi.org/10.1021/acs.jpcb.7b12446}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187)
|
||||
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 17
|
||||
ghost atom cutoff = 17
|
||||
binsize = 8.5, bins = 8 8 8
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
(2) pair local/density, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 7.855 | 7.855 | 7.855 Mbytes
|
||||
TotEng KinEng PotEng Temp E_vdwl
|
||||
1283.8556 2234.7133 -950.85771 300 -950.85771
|
||||
-10.187232 2234.7133 -2244.9005 300 -2244.9005
|
||||
-124.3661 2234.7133 -2359.0794 300 -2359.0794
|
||||
-146.7158 2234.7133 -2381.4291 300 -2381.4291
|
||||
Loop time of 0.528503 on 4 procs for 244 steps with 2500 atoms
|
||||
|
||||
99.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
-950.857712502527 -2381.2294195605 -2381.42909821383
|
||||
Force two-norm initial, final = 135.25170 2.3117934
|
||||
Force max component initial, final = 14.083102 0.60833889
|
||||
Final line search alpha, max atom move = 0.18347073 0.11161238
|
||||
Iterations, force evaluations = 244 278
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.48518 | 0.48843 | 0.49223 | 0.4 | 92.42
|
||||
Bond | 1.0084e-05 | 1.0861e-05 | 1.1483e-05 | 0.0 | 0.00
|
||||
Neigh | 0.018199 | 0.019153 | 0.020036 | 0.5 | 3.62
|
||||
Comm | 0.010229 | 0.014832 | 0.018994 | 2.6 | 2.81
|
||||
Output | 3.7985e-05 | 4.2069e-05 | 5.3874e-05 | 0.0 | 0.01
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.006032 | | | 1.14
|
||||
|
||||
Nlocal: 625.000 ave 638 max 618 min
|
||||
Histogram: 2 0 0 0 1 0 0 0 0 1
|
||||
Nghost: 3613.75 ave 3640 max 3580 min
|
||||
Histogram: 1 0 0 0 1 0 0 0 1 1
|
||||
Neighs: 66411.2 ave 70713 max 62416 min
|
||||
Histogram: 1 0 1 0 0 0 1 0 0 1
|
||||
|
||||
Total # of neighbors = 265645
|
||||
Ave neighs/atom = 106.25800
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 13
|
||||
Dangerous builds = 0
|
||||
|
||||
#set up integration parameters
|
||||
fix timeintegration all nve
|
||||
fix thermostat all langevin 3.0000e+02 3.0000e+02 1.0000e+02 59915
|
||||
|
||||
#Equilibration (for realistic results, run for 2000000 steps)
|
||||
reset_timestep 0
|
||||
thermo 200
|
||||
thermo_style custom etotal ke pe temp evdwl
|
||||
|
||||
#run equilibration
|
||||
run 2000
|
||||
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Fix recenter should come after all other integration fixes (src/fix_recenter.cpp:133)
|
||||
Per MPI rank memory allocation (min/avg/max) = 6.730 | 6.730 | 6.731 Mbytes
|
||||
TotEng KinEng PotEng Temp E_vdwl
|
||||
-146.7158 2234.7133 -2381.4291 300 -2381.4291
|
||||
540.68168 2041.44 -1500.7584 274.05395 -1500.7584
|
||||
945.4949 2163.7509 -1218.256 290.47363 -1218.256
|
||||
1118.7729 2195.7579 -1076.985 294.77042 -1076.985
|
||||
1215.0058 2233.2445 -1018.2387 299.80282 -1018.2387
|
||||
1251.8045 2240.8439 -989.03944 300.823 -989.03944
|
||||
1206.649 2149.5807 -942.93169 288.57134 -942.93169
|
||||
1290.6111 2248.3623 -957.75117 301.83231 -957.75117
|
||||
1312.8944 2219.147 -906.25264 297.9103 -906.25264
|
||||
1260.002 2211.4176 -951.41561 296.87266 -951.41561
|
||||
1335.0956 2270.1367 -935.04108 304.75543 -935.04108
|
||||
Loop time of 3.56721 on 4 procs for 2000 steps with 2500 atoms
|
||||
|
||||
Performance: 48.441 ns/day, 0.495 hours/ns, 560.663 timesteps/s
|
||||
99.8% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 3.3122 | 3.3399 | 3.3633 | 1.0 | 93.63
|
||||
Bond | 7.5941e-05 | 8.062e-05 | 8.7627e-05 | 0.0 | 0.00
|
||||
Neigh | 0.03524 | 0.036666 | 0.037864 | 0.6 | 1.03
|
||||
Comm | 0.080116 | 0.10444 | 0.13373 | 6.1 | 2.93
|
||||
Output | 0.00019977 | 0.00022502 | 0.00029007 | 0.0 | 0.01
|
||||
Modify | 0.077781 | 0.078206 | 0.078752 | 0.1 | 2.19
|
||||
Other | | 0.007641 | | | 0.21
|
||||
|
||||
Nlocal: 625.000 ave 637 max 616 min
|
||||
Histogram: 1 0 1 0 1 0 0 0 0 1
|
||||
Nghost: 3597.25 ave 3610 max 3586 min
|
||||
Histogram: 1 0 1 0 0 0 1 0 0 1
|
||||
Neighs: 66468.2 ave 69230 max 62721 min
|
||||
Histogram: 1 0 0 1 0 0 0 0 0 2
|
||||
|
||||
Total # of neighbors = 265873
|
||||
Ave neighs/atom = 106.34920
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 20
|
||||
Dangerous builds = 0
|
||||
|
||||
#turn off recentering during production run
|
||||
unfix recentering
|
||||
|
||||
|
||||
#setup trajectory output
|
||||
dump myDump all custom 100 methanol_implicit_water.lammpstrj.gz id type x y z element
|
||||
dump_modify myDump element M
|
||||
dump_modify myDump sort id
|
||||
|
||||
#run production (for realistic results, run for 10000000 steps)
|
||||
reset_timestep 0
|
||||
thermo 1000
|
||||
thermo_style custom etotal ke pe temp evdwl
|
||||
run 10000
|
||||
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.071 | 8.071 | 8.071 Mbytes
|
||||
TotEng KinEng PotEng Temp E_vdwl
|
||||
1335.0956 2270.1367 -935.04108 304.75543 -935.04108
|
||||
1266.2305 2227.2123 -960.98186 298.99303 -960.98186
|
||||
1304.2289 2238.1343 -933.90544 300.45925 -933.90544
|
||||
1311.3201 2232.0862 -920.7661 299.64733 -920.7661
|
||||
1289.9028 2241.3533 -951.45049 300.89139 -951.45049
|
||||
1314.2234 2244.8514 -930.62797 301.361 -930.62797
|
||||
1282.2744 2240.6716 -958.39719 300.79987 -958.39719
|
||||
1239.302 2181.5711 -942.2691 292.86591 -942.2691
|
||||
1327.0954 2242.6441 -915.54875 301.06468 -915.54875
|
||||
1334.9799 2239.6841 -904.70423 300.66731 -904.70423
|
||||
1320.6105 2263.4912 -942.88066 303.8633 -942.88066
|
||||
Loop time of 23.3399 on 4 procs for 10000 steps with 2500 atoms
|
||||
|
||||
Performance: 37.018 ns/day, 0.648 hours/ns, 428.451 timesteps/s
|
||||
99.5% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 21.343 | 21.606 | 21.766 | 3.7 | 92.57
|
||||
Bond | 0.00045963 | 0.0004817 | 0.0005083 | 0.0 | 0.00
|
||||
Neigh | 0.20708 | 0.22081 | 0.22733 | 1.7 | 0.95
|
||||
Comm | 0.63014 | 0.80326 | 1.0801 | 19.8 | 3.44
|
||||
Output | 0.11791 | 0.14443 | 0.22211 | 11.8 | 0.62
|
||||
Modify | 0.37291 | 0.389 | 0.41719 | 2.7 | 1.67
|
||||
Other | | 0.1761 | | | 0.75
|
||||
|
||||
Nlocal: 625.000 ave 636 max 613 min
|
||||
Histogram: 1 0 0 0 0 2 0 0 0 1
|
||||
Nghost: 3597.00 ave 3613 max 3580 min
|
||||
Histogram: 1 0 0 1 0 0 0 1 0 1
|
||||
Neighs: 66408.5 ave 69186 max 61728 min
|
||||
Histogram: 1 0 0 0 0 0 1 0 1 1
|
||||
|
||||
Total # of neighbors = 265634
|
||||
Ave neighs/atom = 106.25360
|
||||
Ave special neighs/atom = 0.0000000
|
||||
Neighbor list builds = 102
|
||||
Dangerous builds = 0
|
||||
|
||||
|
||||
Total wall time: 0:00:27
|
||||
1
examples/threebody/SiC.tersoff.zbl
Symbolic link
1
examples/threebody/SiC.tersoff.zbl
Symbolic link
@ -0,0 +1 @@
|
||||
../../potentials/SiC.tersoff.zbl
|
||||
@ -7,7 +7,7 @@ units metal
|
||||
atom_style atomic
|
||||
atom_modify map array
|
||||
boundary p p p
|
||||
atom_modify sort 0 0.0
|
||||
atom_modify sort 0 0.0
|
||||
|
||||
# temperature
|
||||
|
||||
@ -35,23 +35,23 @@ region myreg block 0 4 &
|
||||
|
||||
create_box 8 myreg
|
||||
create_atoms 1 region myreg &
|
||||
basis 1 1 &
|
||||
basis 2 2 &
|
||||
basis 3 3 &
|
||||
basis 4 4 &
|
||||
basis 5 5 &
|
||||
basis 6 6 &
|
||||
basis 7 7 &
|
||||
basis 8 8
|
||||
basis 1 1 &
|
||||
basis 2 2 &
|
||||
basis 3 3 &
|
||||
basis 4 4 &
|
||||
basis 5 5 &
|
||||
basis 6 6 &
|
||||
basis 7 7 &
|
||||
basis 8 8
|
||||
|
||||
mass * 28.06
|
||||
|
||||
velocity all create $t 5287287 loop geom
|
||||
velocity all create $t 5287287 loop geom
|
||||
|
||||
# Equilibrate using Stillinger-Weber model for silicon
|
||||
|
||||
pair_style sw
|
||||
pair_coeff * * Si.sw Si Si Si Si Si Si Si Si
|
||||
pair_coeff * * Si.sw Si Si Si Si Si Si Si Si
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
thermo 10
|
||||
@ -61,15 +61,15 @@ neighbor 1.0 bin
|
||||
neigh_modify every 1 delay 10 check yes
|
||||
run 100
|
||||
|
||||
write_restart restart.equil
|
||||
write_restart restart.equil
|
||||
|
||||
# Test Stillinger-Weber model for Cd/Te/Zn/Se/Hg/S
|
||||
|
||||
clear
|
||||
read_restart restart.equil
|
||||
read_restart restart.equil
|
||||
|
||||
pair_style sw
|
||||
pair_coeff * * CdTeZnSeHgS0.sw Cd Zn Hg Cd Te S Se Te
|
||||
pair_coeff * * CdTeZnSeHgS0.sw Cd Zn Hg Cd Te S Se Te
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
thermo 10
|
||||
@ -82,10 +82,10 @@ run 100
|
||||
# Test Vashishta model for In/P
|
||||
|
||||
clear
|
||||
read_restart restart.equil
|
||||
read_restart restart.equil
|
||||
|
||||
pair_style vashishta
|
||||
pair_coeff * * InP.vashishta In In In In P P P P
|
||||
pair_coeff * * InP.vashishta In In In In P P P P
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
thermo 10
|
||||
@ -98,13 +98,13 @@ run 100
|
||||
# Test Tersoff model for B/N/C
|
||||
|
||||
clear
|
||||
read_restart restart.equil
|
||||
read_restart restart.equil
|
||||
|
||||
variable fac equal 0.6
|
||||
change_box all x scale ${fac} y scale ${fac} z scale ${fac} remap
|
||||
variable fac equal 0.6
|
||||
change_box all x scale ${fac} y scale ${fac} z scale ${fac} remap
|
||||
|
||||
pair_style tersoff
|
||||
pair_coeff * * BNC.tersoff N N N C B B C B
|
||||
pair_coeff * * BNC.tersoff N N N C B B C B
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
thermo 10
|
||||
@ -114,3 +114,23 @@ neighbor 1.0 bin
|
||||
neigh_modify every 1 delay 10 check yes
|
||||
run 100
|
||||
|
||||
# Test Tersoff/ZBL model for SiC
|
||||
|
||||
clear
|
||||
read_restart restart.equil
|
||||
|
||||
variable fac equal 0.6
|
||||
change_box all x scale ${fac} y scale ${fac} z scale ${fac} remap
|
||||
|
||||
pair_style tersoff/zbl
|
||||
pair_coeff * * SiC.tersoff.zbl C C C C Si Si Si Si
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
thermo 10
|
||||
fix 1 all nvt temp $t $t 0.1
|
||||
timestep 1.0e-3
|
||||
neighbor 1.0 bin
|
||||
neigh_modify every 1 delay 10 check yes
|
||||
run 100
|
||||
|
||||
shell rm restart.equil
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
LAMMPS (24 Dec 2020)
|
||||
LAMMPS (29 Sep 2021 - Update 3)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Simple regression tests for threebody potentials
|
||||
|
||||
@ -9,7 +9,7 @@ units metal
|
||||
atom_style atomic
|
||||
atom_modify map array
|
||||
boundary p p p
|
||||
atom_modify sort 0 0.0
|
||||
atom_modify sort 0 0.0
|
||||
|
||||
# temperature
|
||||
|
||||
@ -27,19 +27,20 @@ region myreg block 0 4 0 4
|
||||
create_box 8 myreg
|
||||
Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
create_atoms 1 region myreg basis 1 1 basis 2 2 basis 3 3 basis 4 4 basis 5 5 basis 6 6 basis 7 7 basis 8 8
|
||||
create_atoms 1 region myreg basis 1 1 basis 2 2 basis 3 3 basis 4 4 basis 5 5 basis 6 6 basis 7 7 basis 8 8
|
||||
Created 512 atoms
|
||||
create_atoms CPU = 0.001 seconds
|
||||
using lattice units in orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
mass * 28.06
|
||||
|
||||
velocity all create $t 5287287 loop geom
|
||||
velocity all create 1800 5287287 loop geom
|
||||
velocity all create $t 5287287 loop geom
|
||||
velocity all create 1800 5287287 loop geom
|
||||
|
||||
# Equilibrate using Stillinger-Weber model for silicon
|
||||
|
||||
pair_style sw
|
||||
pair_coeff * * Si.sw Si Si Si Si Si Si Si Si
|
||||
pair_coeff * * Si.sw Si Si Si Si Si Si Si Si
|
||||
Reading sw potential file Si.sw with DATE: 2007-06-11
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
@ -76,20 +77,20 @@ Step Temp E_pair TotEng Econserve Press
|
||||
80 800.80221 -2146.1371 -2093.2426 -2101.313 11995.66
|
||||
90 1293.9689 -2176.9021 -2091.4329 -2101.3848 11692.45
|
||||
100 1112.9699 -2162.7259 -2089.2121 -2101.3478 12263.758
|
||||
Loop time of 0.157871 on 1 procs for 100 steps with 512 atoms
|
||||
Loop time of 0.093281 on 1 procs for 100 steps with 512 atoms
|
||||
|
||||
Performance: 54.728 ns/day, 0.439 hours/ns, 633.430 timesteps/s
|
||||
Performance: 92.623 ns/day, 0.259 hours/ns, 1072.029 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.14704 | 0.14704 | 0.14704 | 0.0 | 93.14
|
||||
Neigh | 0.00247 | 0.00247 | 0.00247 | 0.0 | 1.56
|
||||
Comm | 0.0024729 | 0.0024729 | 0.0024729 | 0.0 | 1.57
|
||||
Output | 0.0002656 | 0.0002656 | 0.0002656 | 0.0 | 0.17
|
||||
Modify | 0.0050237 | 0.0050237 | 0.0050237 | 0.0 | 3.18
|
||||
Other | | 0.0006011 | | | 0.38
|
||||
Pair | 0.090256 | 0.090256 | 0.090256 | 0.0 | 96.76
|
||||
Neigh | 0.0015078 | 0.0015078 | 0.0015078 | 0.0 | 1.62
|
||||
Comm | 0.00045896 | 0.00045896 | 0.00045896 | 0.0 | 0.49
|
||||
Output | 8.3447e-05 | 8.3447e-05 | 8.3447e-05 | 0.0 | 0.09
|
||||
Modify | 0.00072384 | 0.00072384 | 0.00072384 | 0.0 | 0.78
|
||||
Other | | 0.0002506 | | | 0.27
|
||||
|
||||
Nlocal: 512.000 ave 512 max 512 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
@ -105,25 +106,25 @@ Ave neighs/atom = 27.320312
|
||||
Neighbor list builds = 2
|
||||
Dangerous builds = 0
|
||||
|
||||
write_restart restart.equil
|
||||
write_restart restart.equil
|
||||
System init for write_restart ...
|
||||
|
||||
# Test Stillinger-Weber model for Cd/Te/Zn/Se/Hg/S
|
||||
|
||||
clear
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
read_restart restart.equil
|
||||
read_restart restart.equil
|
||||
Reading restart file ...
|
||||
restart file = 24 Dec 2020, LAMMPS = 24 Dec 2020
|
||||
restart file = 29 Sep 2021, LAMMPS = 29 Sep 2021
|
||||
restoring atom style atomic from restart
|
||||
orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
pair style sw stores no restart info
|
||||
512 atoms
|
||||
read_restart CPU = 0.001 seconds
|
||||
read_restart CPU = 0.000 seconds
|
||||
|
||||
pair_style sw
|
||||
pair_coeff * * CdTeZnSeHgS0.sw Cd Zn Hg Cd Te S Se Te
|
||||
pair_coeff * * CdTeZnSeHgS0.sw Cd Zn Hg Cd Te S Se Te
|
||||
Reading sw potential file CdTeZnSeHgS0.sw with DATE: 2013-08-09
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
@ -163,20 +164,20 @@ Step Temp E_pair TotEng Econserve Press
|
||||
180 1856.1197 -657.14338 -534.54309 -564.48754 488372.27
|
||||
190 1346.1107 -621.42431 -532.5111 -564.38065 511750.04
|
||||
200 1919.5266 -657.26587 -530.47743 -564.47797 488684.56
|
||||
Loop time of 0.455825 on 1 procs for 100 steps with 512 atoms
|
||||
Loop time of 0.245572 on 1 procs for 100 steps with 512 atoms
|
||||
|
||||
Performance: 18.955 ns/day, 1.266 hours/ns, 219.382 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
Performance: 35.183 ns/day, 0.682 hours/ns, 407.212 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.44091 | 0.44091 | 0.44091 | 0.0 | 96.73
|
||||
Neigh | 0.0054555 | 0.0054555 | 0.0054555 | 0.0 | 1.20
|
||||
Comm | 0.0035784 | 0.0035784 | 0.0035784 | 0.0 | 0.79
|
||||
Output | 0.00024486 | 0.00024486 | 0.00024486 | 0.0 | 0.05
|
||||
Modify | 0.0050471 | 0.0050471 | 0.0050471 | 0.0 | 1.11
|
||||
Other | | 0.000592 | | | 0.13
|
||||
Pair | 0.24139 | 0.24139 | 0.24139 | 0.0 | 98.30
|
||||
Neigh | 0.0027068 | 0.0027068 | 0.0027068 | 0.0 | 1.10
|
||||
Comm | 0.00051188 | 0.00051188 | 0.00051188 | 0.0 | 0.21
|
||||
Output | 0.00010395 | 0.00010395 | 0.00010395 | 0.0 | 0.04
|
||||
Modify | 0.00059605 | 0.00059605 | 0.00059605 | 0.0 | 0.24
|
||||
Other | | 0.0002608 | | | 0.11
|
||||
|
||||
Nlocal: 512.000 ave 512 max 512 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
@ -196,18 +197,18 @@ Dangerous builds = 0
|
||||
|
||||
clear
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
read_restart restart.equil
|
||||
read_restart restart.equil
|
||||
Reading restart file ...
|
||||
restart file = 24 Dec 2020, LAMMPS = 24 Dec 2020
|
||||
restart file = 29 Sep 2021, LAMMPS = 29 Sep 2021
|
||||
restoring atom style atomic from restart
|
||||
orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
pair style sw stores no restart info
|
||||
512 atoms
|
||||
read_restart CPU = 0.001 seconds
|
||||
read_restart CPU = 0.000 seconds
|
||||
|
||||
pair_style vashishta
|
||||
pair_coeff * * InP.vashishta In In In In P P P P
|
||||
pair_coeff * * InP.vashishta In In In In P P P P
|
||||
Reading vashishta potential file InP.vashishta with DATE: 2015-10-14
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
@ -247,20 +248,20 @@ Step Temp E_pair TotEng Econserve Press
|
||||
180 1302.9041 -1491.7765 -1405.7172 -1435.8971 249514.04
|
||||
190 1332.3326 -1491.5271 -1403.524 -1435.9213 227537.99
|
||||
200 1352.1813 -1490.4513 -1401.1371 -1435.9049 207626.42
|
||||
Loop time of 0.217808 on 1 procs for 100 steps with 512 atoms
|
||||
Loop time of 0.111899 on 1 procs for 100 steps with 512 atoms
|
||||
|
||||
Performance: 39.668 ns/day, 0.605 hours/ns, 459.121 timesteps/s
|
||||
98.2% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
Performance: 77.212 ns/day, 0.311 hours/ns, 893.662 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.19635 | 0.19635 | 0.19635 | 0.0 | 90.15
|
||||
Neigh | 0.01054 | 0.01054 | 0.01054 | 0.0 | 4.84
|
||||
Comm | 0.0051923 | 0.0051923 | 0.0051923 | 0.0 | 2.38
|
||||
Output | 0.00027919 | 0.00027919 | 0.00027919 | 0.0 | 0.13
|
||||
Modify | 0.0048637 | 0.0048637 | 0.0048637 | 0.0 | 2.23
|
||||
Other | | 0.0005858 | | | 0.27
|
||||
Pair | 0.10539 | 0.10539 | 0.10539 | 0.0 | 94.18
|
||||
Neigh | 0.0049229 | 0.0049229 | 0.0049229 | 0.0 | 4.40
|
||||
Comm | 0.00068307 | 0.00068307 | 0.00068307 | 0.0 | 0.61
|
||||
Output | 6.1989e-05 | 6.1989e-05 | 6.1989e-05 | 0.0 | 0.06
|
||||
Modify | 0.00058532 | 0.00058532 | 0.00058532 | 0.0 | 0.52
|
||||
Other | | 0.0002604 | | | 0.23
|
||||
|
||||
Nlocal: 512.000 ave 512 max 512 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
@ -280,28 +281,28 @@ Dangerous builds = 0
|
||||
|
||||
clear
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
read_restart restart.equil
|
||||
read_restart restart.equil
|
||||
Reading restart file ...
|
||||
restart file = 24 Dec 2020, LAMMPS = 24 Dec 2020
|
||||
restart file = 29 Sep 2021, LAMMPS = 29 Sep 2021
|
||||
restoring atom style atomic from restart
|
||||
orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
pair style sw stores no restart info
|
||||
512 atoms
|
||||
read_restart CPU = 0.001 seconds
|
||||
read_restart CPU = 0.000 seconds
|
||||
|
||||
variable fac equal 0.6
|
||||
change_box all x scale ${fac} y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale 0.6 remap
|
||||
variable fac equal 0.6
|
||||
change_box all x scale ${fac} y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale 0.6 remap
|
||||
Changing box ...
|
||||
orthogonal box = (4.3448000 0.0000000 0.0000000) to (17.379200 21.724000 21.724000)
|
||||
orthogonal box = (4.3448000 4.3448000 0.0000000) to (17.379200 17.379200 21.724000)
|
||||
orthogonal box = (4.3448000 4.3448000 4.3448000) to (17.379200 17.379200 17.379200)
|
||||
|
||||
pair_style tersoff
|
||||
pair_coeff * * BNC.tersoff N N N C B B C B
|
||||
pair_coeff * * BNC.tersoff N N N C B B C B
|
||||
Reading tersoff potential file BNC.tersoff with DATE: 2013-03-21
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
@ -341,20 +342,20 @@ Step Temp E_pair TotEng Econserve Press
|
||||
180 1337.4358 -3254.9844 -3166.6442 -3196.8222 1880420.9
|
||||
190 1441.8052 -3259.0364 -3163.8023 -3196.3556 1904512.1
|
||||
200 1569.0317 -3265.0089 -3161.3714 -3196.3328 1899462.7
|
||||
Loop time of 0.487425 on 1 procs for 100 steps with 512 atoms
|
||||
Loop time of 0.097734 on 1 procs for 100 steps with 512 atoms
|
||||
|
||||
Performance: 17.726 ns/day, 1.354 hours/ns, 205.160 timesteps/s
|
||||
99.1% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
Performance: 88.403 ns/day, 0.271 hours/ns, 1023.186 timesteps/s
|
||||
99.7% 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.47762 | 0.47762 | 0.47762 | 0.0 | 97.99
|
||||
Neigh | 0.0014286 | 0.0014286 | 0.0014286 | 0.0 | 0.29
|
||||
Comm | 0.0024068 | 0.0024068 | 0.0024068 | 0.0 | 0.49
|
||||
Output | 0.00028992 | 0.00028992 | 0.00028992 | 0.0 | 0.06
|
||||
Modify | 0.0050635 | 0.0050635 | 0.0050635 | 0.0 | 1.04
|
||||
Other | | 0.0006182 | | | 0.13
|
||||
Pair | 0.095481 | 0.095481 | 0.095481 | 0.0 | 97.69
|
||||
Neigh | 0.000772 | 0.000772 | 0.000772 | 0.0 | 0.79
|
||||
Comm | 0.00046158 | 0.00046158 | 0.00046158 | 0.0 | 0.47
|
||||
Output | 6.7949e-05 | 6.7949e-05 | 6.7949e-05 | 0.0 | 0.07
|
||||
Modify | 0.00068784 | 0.00068784 | 0.00068784 | 0.0 | 0.70
|
||||
Other | | 0.0002635 | | | 0.27
|
||||
|
||||
Nlocal: 512.000 ave 512 max 512 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
@ -370,4 +371,99 @@ Ave neighs/atom = 28.523438
|
||||
Neighbor list builds = 1
|
||||
Dangerous builds = 0
|
||||
|
||||
# Test Tersoff/ZBL model for SiC
|
||||
|
||||
clear
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
read_restart restart.equil
|
||||
Reading restart file ...
|
||||
restart file = 29 Sep 2021, LAMMPS = 29 Sep 2021
|
||||
restoring atom style atomic from restart
|
||||
orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
pair style sw stores no restart info
|
||||
512 atoms
|
||||
read_restart CPU = 0.000 seconds
|
||||
|
||||
variable fac equal 0.6
|
||||
change_box all x scale ${fac} y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale 0.6 remap
|
||||
Changing box ...
|
||||
orthogonal box = (4.3448000 0.0000000 0.0000000) to (17.379200 21.724000 21.724000)
|
||||
orthogonal box = (4.3448000 4.3448000 0.0000000) to (17.379200 17.379200 21.724000)
|
||||
orthogonal box = (4.3448000 4.3448000 4.3448000) to (17.379200 17.379200 17.379200)
|
||||
|
||||
pair_style tersoff/zbl
|
||||
pair_coeff * * SiC.tersoff.zbl C C C C Si Si Si Si
|
||||
Reading tersoff/zbl potential file SiC.tersoff.zbl with DATE: 2009-04-15
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
thermo 10
|
||||
fix 1 all nvt temp $t $t 0.1
|
||||
fix 1 all nvt temp 1800 $t 0.1
|
||||
fix 1 all nvt temp 1800 1800 0.1
|
||||
Resetting global fix info from restart file:
|
||||
fix style: nvt, fix ID: 1
|
||||
timestep 1.0e-3
|
||||
neighbor 1.0 bin
|
||||
neigh_modify every 1 delay 10 check yes
|
||||
run 100
|
||||
All restart file global fix info was re-assigned
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 4
|
||||
ghost atom cutoff = 4
|
||||
binsize = 2, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair tersoff/zbl, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.002 | 3.002 | 3.002 Mbytes
|
||||
Step Temp E_pair TotEng Econserve Press
|
||||
100 1112.9699 7067.9634 7141.4772 7129.3415 17683957
|
||||
110 1676.669 7033.1458 7143.893 7128.6921 17837566
|
||||
120 2450.2667 6982.2491 7144.094 7126.9524 18220027
|
||||
130 2726.9659 6964.1219 7144.2432 7126.7678 18230324
|
||||
140 2729.421 6962.7393 7143.0228 7127.2074 18176317
|
||||
150 2738.5449 6959.1761 7140.0623 7127.6671 18068370
|
||||
160 2687.2419 6958.1183 7135.6158 7127.8492 18156214
|
||||
170 2697.7325 6952.1482 7130.3387 7127.7898 17978251
|
||||
180 2577.9885 6954.5611 7124.8422 7127.5615 18068920
|
||||
190 2502.6928 6954.4558 7119.7635 7127.67 18049652
|
||||
200 2517.4866 6947.962 7114.2469 7127.1972 18209451
|
||||
Loop time of 0.783169 on 1 procs for 100 steps with 512 atoms
|
||||
|
||||
Performance: 11.032 ns/day, 2.175 hours/ns, 127.686 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.78056 | 0.78056 | 0.78056 | 0.0 | 99.67
|
||||
Neigh | 0.0011299 | 0.0011299 | 0.0011299 | 0.0 | 0.14
|
||||
Comm | 0.00051332 | 0.00051332 | 0.00051332 | 0.0 | 0.07
|
||||
Output | 9.2268e-05 | 9.2268e-05 | 9.2268e-05 | 0.0 | 0.01
|
||||
Modify | 0.00060058 | 0.00060058 | 0.00060058 | 0.0 | 0.08
|
||||
Other | | 0.0002706 | | | 0.03
|
||||
|
||||
Nlocal: 512.000 ave 512 max 512 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 1542.00 ave 1542 max 1542 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
|
||||
FullNghs: 30142.0 ave 30142 max 30142 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 30142
|
||||
Ave neighs/atom = 58.871094
|
||||
Neighbor list builds = 1
|
||||
Dangerous builds = 0
|
||||
|
||||
shell rm restart.equil
|
||||
Total wall time: 0:00:01
|
||||
@ -1,4 +1,4 @@
|
||||
LAMMPS (24 Dec 2020)
|
||||
LAMMPS (29 Sep 2021 - Update 3)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Simple regression tests for threebody potentials
|
||||
|
||||
@ -9,7 +9,7 @@ units metal
|
||||
atom_style atomic
|
||||
atom_modify map array
|
||||
boundary p p p
|
||||
atom_modify sort 0 0.0
|
||||
atom_modify sort 0 0.0
|
||||
|
||||
# temperature
|
||||
|
||||
@ -26,20 +26,21 @@ region myreg block 0 4 0 4
|
||||
|
||||
create_box 8 myreg
|
||||
Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
create_atoms 1 region myreg basis 1 1 basis 2 2 basis 3 3 basis 4 4 basis 5 5 basis 6 6 basis 7 7 basis 8 8
|
||||
1 by 1 by 1 MPI processor grid
|
||||
create_atoms 1 region myreg basis 1 1 basis 2 2 basis 3 3 basis 4 4 basis 5 5 basis 6 6 basis 7 7 basis 8 8
|
||||
Created 512 atoms
|
||||
create_atoms CPU = 0.074 seconds
|
||||
using lattice units in orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
mass * 28.06
|
||||
|
||||
velocity all create $t 5287287 loop geom
|
||||
velocity all create 1800 5287287 loop geom
|
||||
velocity all create $t 5287287 loop geom
|
||||
velocity all create 1800 5287287 loop geom
|
||||
|
||||
# Equilibrate using Stillinger-Weber model for silicon
|
||||
|
||||
pair_style sw
|
||||
pair_coeff * * Si.sw Si Si Si Si Si Si Si Si
|
||||
pair_coeff * * Si.sw Si Si Si Si Si Si Si Si
|
||||
Reading sw potential file Si.sw with DATE: 2007-06-11
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
@ -63,7 +64,7 @@ Neighbor list info ...
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 2.958 | 2.958 | 2.958 Mbytes
|
||||
Per MPI rank memory allocation (min/avg/max) = 2.983 | 2.983 | 2.983 Mbytes
|
||||
Step Temp E_pair TotEng Econserve Press
|
||||
0 1800 -2220.3392 -2101.4457 -2101.4457 12358.626
|
||||
10 1006.0192 -2167.7053 -2101.2558 -2101.3286 13892.426
|
||||
@ -76,54 +77,54 @@ Step Temp E_pair TotEng Econserve Press
|
||||
80 800.80221 -2146.1371 -2093.2426 -2101.313 11995.66
|
||||
90 1293.9689 -2176.9021 -2091.4329 -2101.3848 11692.45
|
||||
100 1112.9699 -2162.7259 -2089.2121 -2101.3478 12263.758
|
||||
Loop time of 0.0998364 on 4 procs for 100 steps with 512 atoms
|
||||
Loop time of 0.089642 on 1 procs for 100 steps with 512 atoms
|
||||
|
||||
Performance: 86.542 ns/day, 0.277 hours/ns, 1001.639 timesteps/s
|
||||
81.4% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
Performance: 96.383 ns/day, 0.249 hours/ns, 1115.548 timesteps/s
|
||||
99.7% 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.037337 | 0.049389 | 0.069239 | 5.9 | 49.47
|
||||
Neigh | 0.00067854 | 0.00068814 | 0.00070286 | 0.0 | 0.69
|
||||
Comm | 0.025239 | 0.04504 | 0.056869 | 6.1 | 45.11
|
||||
Output | 0.00015712 | 0.00082219 | 0.0028148 | 0.0 | 0.82
|
||||
Modify | 0.0014369 | 0.0015754 | 0.0016632 | 0.2 | 1.58
|
||||
Other | | 0.002321 | | | 2.33
|
||||
Pair | 0.086619 | 0.086619 | 0.086619 | 0.0 | 96.63
|
||||
Neigh | 0.0015211 | 0.0015211 | 0.0015211 | 0.0 | 1.70
|
||||
Comm | 0.000458 | 0.000458 | 0.000458 | 0.0 | 0.51
|
||||
Output | 7.987e-05 | 7.987e-05 | 7.987e-05 | 0.0 | 0.09
|
||||
Modify | 0.00073361 | 0.00073361 | 0.00073361 | 0.0 | 0.82
|
||||
Other | | 0.0002301 | | | 0.26
|
||||
|
||||
Nlocal: 128.000 ave 132 max 125 min
|
||||
Histogram: 1 1 0 0 0 1 0 0 0 1
|
||||
Nghost: 525.000 ave 528 max 521 min
|
||||
Histogram: 1 0 0 0 1 0 0 0 1 1
|
||||
Nlocal: 512.000 ave 512 max 512 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 1017.00 ave 1017 max 1017 min
|
||||
Histogram: 1 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
|
||||
FullNghs: 3497.00 ave 3619 max 3397 min
|
||||
Histogram: 1 1 0 0 0 0 1 0 0 1
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 13988.0 ave 13988 max 13988 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 13988
|
||||
Ave neighs/atom = 27.320312
|
||||
Neighbor list builds = 2
|
||||
Dangerous builds = 0
|
||||
|
||||
write_restart restart.equil
|
||||
write_restart restart.equil
|
||||
System init for write_restart ...
|
||||
|
||||
# Test Stillinger-Weber model for Cd/Te/Zn/Se/Hg/S
|
||||
|
||||
clear
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
read_restart restart.equil
|
||||
read_restart restart.equil
|
||||
Reading restart file ...
|
||||
restart file = 24 Dec 2020, LAMMPS = 24 Dec 2020
|
||||
restart file = 29 Sep 2021, LAMMPS = 29 Sep 2021
|
||||
restoring atom style atomic from restart
|
||||
orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
1 by 1 by 1 MPI processor grid
|
||||
pair style sw stores no restart info
|
||||
512 atoms
|
||||
read_restart CPU = 0.001 seconds
|
||||
read_restart CPU = 0.000 seconds
|
||||
|
||||
pair_style sw
|
||||
pair_coeff * * CdTeZnSeHgS0.sw Cd Zn Hg Cd Te S Se Te
|
||||
pair_coeff * * CdTeZnSeHgS0.sw Cd Zn Hg Cd Te S Se Te
|
||||
Reading sw potential file CdTeZnSeHgS0.sw with DATE: 2013-08-09
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
@ -150,42 +151,42 @@ Neighbor list info ...
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 2.967 | 2.967 | 2.968 Mbytes
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.001 | 3.001 | 3.001 Mbytes
|
||||
Step Temp E_pair TotEng Econserve Press
|
||||
100 1112.9699 -625.76163 -552.24782 -564.38354 462129.66
|
||||
100 1112.9699 -625.76163 -552.24781 -564.38354 462129.66
|
||||
110 1502.8461 -649.55768 -550.29179 -564.45814 463413.45
|
||||
120 1926.4523 -674.71265 -547.46675 -564.53613 486338.88
|
||||
130 1152.6663 -621.47265 -545.33681 -564.37203 514892.19
|
||||
120 1926.4523 -674.71265 -547.46675 -564.53612 486338.88
|
||||
130 1152.6663 -621.47264 -545.33681 -564.37203 514892.2
|
||||
140 1762.244 -659.86941 -543.46979 -564.4985 488159.88
|
||||
150 1767.8665 -657.67179 -540.90079 -564.48386 466721.31
|
||||
160 1075.2874 -610.1281 -539.10328 -564.36709 470151.9
|
||||
170 1697.9313 -649.3684 -537.21676 -564.47208 467953.7
|
||||
180 1856.1197 -657.14338 -534.54309 -564.48754 488372.26
|
||||
190 1346.1107 -621.42432 -532.5111 -564.38065 511750.03
|
||||
150 1767.8665 -657.67178 -540.90078 -564.48386 466721.31
|
||||
160 1075.2874 -610.12809 -539.10328 -564.36709 470151.9
|
||||
170 1697.9313 -649.3684 -537.21675 -564.47207 467953.71
|
||||
180 1856.1197 -657.14338 -534.54309 -564.48754 488372.27
|
||||
190 1346.1107 -621.42431 -532.5111 -564.38065 511750.04
|
||||
200 1919.5266 -657.26587 -530.47743 -564.47797 488684.56
|
||||
Loop time of 0.286556 on 4 procs for 100 steps with 512 atoms
|
||||
Loop time of 0.268183 on 1 procs for 100 steps with 512 atoms
|
||||
|
||||
Performance: 30.151 ns/day, 0.796 hours/ns, 348.971 timesteps/s
|
||||
81.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
Performance: 32.217 ns/day, 0.745 hours/ns, 372.880 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.11093 | 0.139 | 0.16864 | 5.8 | 48.51
|
||||
Neigh | 0.0014305 | 0.0014756 | 0.0015156 | 0.1 | 0.51
|
||||
Comm | 0.10154 | 0.12374 | 0.16907 | 7.8 | 43.18
|
||||
Output | 0.0001862 | 0.00030428 | 0.0006578 | 0.0 | 0.11
|
||||
Modify | 0.0038164 | 0.019159 | 0.034146 | 10.8 | 6.69
|
||||
Other | | 0.002872 | | | 1.00
|
||||
Pair | 0.26374 | 0.26374 | 0.26374 | 0.0 | 98.34
|
||||
Neigh | 0.0027301 | 0.0027301 | 0.0027301 | 0.0 | 1.02
|
||||
Comm | 0.00063014 | 0.00063014 | 0.00063014 | 0.0 | 0.23
|
||||
Output | 8.4639e-05 | 8.4639e-05 | 8.4639e-05 | 0.0 | 0.03
|
||||
Modify | 0.00072742 | 0.00072742 | 0.00072742 | 0.0 | 0.27
|
||||
Other | | 0.0002725 | | | 0.10
|
||||
|
||||
Nlocal: 128.000 ave 135 max 122 min
|
||||
Histogram: 1 0 1 0 0 0 1 0 0 1
|
||||
Nghost: 759.750 ave 770 max 751 min
|
||||
Histogram: 1 0 0 1 1 0 0 0 0 1
|
||||
Nlocal: 512.000 ave 512 max 512 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 1428.00 ave 1428 max 1428 min
|
||||
Histogram: 1 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
|
||||
FullNghs: 4336.00 ave 4563 max 4128 min
|
||||
Histogram: 1 0 1 0 0 0 1 0 0 1
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 17344.0 ave 17344 max 17344 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 17344
|
||||
Ave neighs/atom = 33.875000
|
||||
@ -196,18 +197,18 @@ Dangerous builds = 0
|
||||
|
||||
clear
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
read_restart restart.equil
|
||||
read_restart restart.equil
|
||||
Reading restart file ...
|
||||
restart file = 24 Dec 2020, LAMMPS = 24 Dec 2020
|
||||
restart file = 29 Sep 2021, LAMMPS = 29 Sep 2021
|
||||
restoring atom style atomic from restart
|
||||
orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
1 by 1 by 1 MPI processor grid
|
||||
pair style sw stores no restart info
|
||||
512 atoms
|
||||
read_restart CPU = 0.001 seconds
|
||||
read_restart CPU = 0.000 seconds
|
||||
|
||||
pair_style vashishta
|
||||
pair_coeff * * InP.vashishta In In In In P P P P
|
||||
pair_coeff * * InP.vashishta In In In In P P P P
|
||||
Reading vashishta potential file InP.vashishta with DATE: 2015-10-14
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
@ -234,7 +235,7 @@ Neighbor list info ...
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 2.988 | 2.988 | 2.988 Mbytes
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.025 | 3.025 | 3.025 Mbytes
|
||||
Step Temp E_pair TotEng Econserve Press
|
||||
100 1112.9699 -1497.2988 -1423.785 -1435.9207 355619.19
|
||||
110 1250.545 -1504.5795 -1421.9785 -1435.9786 345188.52
|
||||
@ -247,29 +248,29 @@ Step Temp E_pair TotEng Econserve Press
|
||||
180 1302.9041 -1491.7765 -1405.7172 -1435.8971 249514.04
|
||||
190 1332.3326 -1491.5271 -1403.524 -1435.9213 227537.99
|
||||
200 1352.1813 -1490.4513 -1401.1371 -1435.9049 207626.42
|
||||
Loop time of 0.14468 on 4 procs for 100 steps with 512 atoms
|
||||
Loop time of 0.117875 on 1 procs for 100 steps with 512 atoms
|
||||
|
||||
Performance: 59.718 ns/day, 0.402 hours/ns, 691.179 timesteps/s
|
||||
81.2% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
Performance: 73.298 ns/day, 0.327 hours/ns, 848.357 timesteps/s
|
||||
99.6% 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.047903 | 0.058669 | 0.086091 | 6.6 | 40.55
|
||||
Neigh | 0.0027876 | 0.002852 | 0.0028808 | 0.1 | 1.97
|
||||
Comm | 0.034642 | 0.066142 | 0.078599 | 7.1 | 45.72
|
||||
Output | 0.00018477 | 0.0049147 | 0.019101 | 11.7 | 3.40
|
||||
Modify | 0.0015709 | 0.0022651 | 0.0029545 | 1.4 | 1.57
|
||||
Other | | 0.009837 | | | 6.80
|
||||
Pair | 0.11085 | 0.11085 | 0.11085 | 0.0 | 94.04
|
||||
Neigh | 0.005235 | 0.005235 | 0.005235 | 0.0 | 4.44
|
||||
Comm | 0.00077152 | 0.00077152 | 0.00077152 | 0.0 | 0.65
|
||||
Output | 7.9155e-05 | 7.9155e-05 | 7.9155e-05 | 0.0 | 0.07
|
||||
Modify | 0.00065637 | 0.00065637 | 0.00065637 | 0.0 | 0.56
|
||||
Other | | 0.0002811 | | | 0.24
|
||||
|
||||
Nlocal: 128.000 ave 131 max 124 min
|
||||
Histogram: 1 0 0 0 0 1 0 1 0 1
|
||||
Nghost: 1013.25 ave 1025 max 1002 min
|
||||
Histogram: 1 1 0 0 0 0 0 0 1 1
|
||||
Nlocal: 512.000 ave 512 max 512 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 1838.00 ave 1838 max 1838 min
|
||||
Histogram: 1 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
|
||||
FullNghs: 9120.50 ave 9356 max 8868 min
|
||||
Histogram: 1 0 0 0 1 0 1 0 0 1
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 36482.0 ave 36482 max 36482 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 36482
|
||||
Ave neighs/atom = 71.253906
|
||||
@ -280,28 +281,28 @@ Dangerous builds = 0
|
||||
|
||||
clear
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
read_restart restart.equil
|
||||
read_restart restart.equil
|
||||
Reading restart file ...
|
||||
restart file = 24 Dec 2020, LAMMPS = 24 Dec 2020
|
||||
restart file = 29 Sep 2021, LAMMPS = 29 Sep 2021
|
||||
restoring atom style atomic from restart
|
||||
orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
1 by 1 by 1 MPI processor grid
|
||||
pair style sw stores no restart info
|
||||
512 atoms
|
||||
read_restart CPU = 0.005 seconds
|
||||
read_restart CPU = 0.000 seconds
|
||||
|
||||
variable fac equal 0.6
|
||||
change_box all x scale ${fac} y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale 0.6 remap
|
||||
variable fac equal 0.6
|
||||
change_box all x scale ${fac} y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale 0.6 remap
|
||||
Changing box ...
|
||||
orthogonal box = (4.3448000 0.0000000 0.0000000) to (17.379200 21.724000 21.724000)
|
||||
orthogonal box = (4.3448000 4.3448000 0.0000000) to (17.379200 17.379200 21.724000)
|
||||
orthogonal box = (4.3448000 4.3448000 4.3448000) to (17.379200 17.379200 17.379200)
|
||||
|
||||
pair_style tersoff
|
||||
pair_coeff * * BNC.tersoff N N N C B B C B
|
||||
pair_coeff * * BNC.tersoff N N N C B B C B
|
||||
Reading tersoff potential file BNC.tersoff with DATE: 2013-03-21
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
@ -328,7 +329,7 @@ Neighbor list info ...
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 2.948 | 2.948 | 2.948 Mbytes
|
||||
Per MPI rank memory allocation (min/avg/max) = 2.982 | 2.982 | 2.982 Mbytes
|
||||
Step Temp E_pair TotEng Econserve Press
|
||||
100 1112.9699 -3259.7676 -3186.2538 -3198.3895 1912461.3
|
||||
110 1772.8268 -3301.5479 -3184.4493 -3198.8218 1885295.6
|
||||
@ -341,33 +342,128 @@ Step Temp E_pair TotEng Econserve Press
|
||||
180 1337.4358 -3254.9844 -3166.6442 -3196.8222 1880420.9
|
||||
190 1441.8052 -3259.0364 -3163.8023 -3196.3556 1904512.1
|
||||
200 1569.0317 -3265.0089 -3161.3714 -3196.3328 1899462.7
|
||||
Loop time of 0.348631 on 4 procs for 100 steps with 512 atoms
|
||||
Loop time of 0.098053 on 1 procs for 100 steps with 512 atoms
|
||||
|
||||
Performance: 24.783 ns/day, 0.968 hours/ns, 286.836 timesteps/s
|
||||
81.0% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
Performance: 88.116 ns/day, 0.272 hours/ns, 1019.857 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.13281 | 0.15657 | 0.20106 | 6.9 | 44.91
|
||||
Neigh | 0.00037527 | 0.00039309 | 0.00040412 | 0.0 | 0.11
|
||||
Comm | 0.12177 | 0.16672 | 0.19154 | 6.8 | 47.82
|
||||
Output | 0.00019097 | 0.000462 | 0.0012722 | 0.0 | 0.13
|
||||
Modify | 0.018353 | 0.020198 | 0.02302 | 1.3 | 5.79
|
||||
Other | | 0.004286 | | | 1.23
|
||||
Pair | 0.096055 | 0.096055 | 0.096055 | 0.0 | 97.96
|
||||
Neigh | 0.00079703 | 0.00079703 | 0.00079703 | 0.0 | 0.81
|
||||
Comm | 0.00034523 | 0.00034523 | 0.00034523 | 0.0 | 0.35
|
||||
Output | 6.8903e-05 | 6.8903e-05 | 6.8903e-05 | 0.0 | 0.07
|
||||
Modify | 0.00060797 | 0.00060797 | 0.00060797 | 0.0 | 0.62
|
||||
Other | | 0.0001793 | | | 0.18
|
||||
|
||||
Nlocal: 128.000 ave 132 max 123 min
|
||||
Histogram: 1 0 0 0 0 1 1 0 0 1
|
||||
Nghost: 529.500 ave 533 max 524 min
|
||||
Histogram: 1 0 0 0 0 0 1 1 0 1
|
||||
Nlocal: 512.000 ave 512 max 512 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 1028.00 ave 1028 max 1028 min
|
||||
Histogram: 1 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
|
||||
FullNghs: 3651.00 ave 3783 max 3494 min
|
||||
Histogram: 1 0 0 0 0 1 1 0 0 1
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 14604.0 ave 14604 max 14604 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 14604
|
||||
Ave neighs/atom = 28.523438
|
||||
Neighbor list builds = 1
|
||||
Dangerous builds = 0
|
||||
|
||||
# Test Tersoff/ZBL model for SiC
|
||||
|
||||
clear
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
read_restart restart.equil
|
||||
Reading restart file ...
|
||||
restart file = 29 Sep 2021, LAMMPS = 29 Sep 2021
|
||||
restoring atom style atomic from restart
|
||||
orthogonal box = (0.0000000 0.0000000 0.0000000) to (21.724000 21.724000 21.724000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
pair style sw stores no restart info
|
||||
512 atoms
|
||||
read_restart CPU = 0.000 seconds
|
||||
|
||||
variable fac equal 0.6
|
||||
change_box all x scale ${fac} y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale ${fac} z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale ${fac} remap
|
||||
change_box all x scale 0.6 y scale 0.6 z scale 0.6 remap
|
||||
Changing box ...
|
||||
orthogonal box = (4.3448000 0.0000000 0.0000000) to (17.379200 21.724000 21.724000)
|
||||
orthogonal box = (4.3448000 4.3448000 0.0000000) to (17.379200 17.379200 21.724000)
|
||||
orthogonal box = (4.3448000 4.3448000 4.3448000) to (17.379200 17.379200 17.379200)
|
||||
|
||||
pair_style tersoff/zbl
|
||||
pair_coeff * * SiC.tersoff.zbl C C C C Si Si Si Si
|
||||
Reading tersoff/zbl potential file SiC.tersoff.zbl with DATE: 2009-04-15
|
||||
|
||||
thermo_style custom step temp epair etotal econserve press
|
||||
thermo 10
|
||||
fix 1 all nvt temp $t $t 0.1
|
||||
fix 1 all nvt temp 1800 $t 0.1
|
||||
fix 1 all nvt temp 1800 1800 0.1
|
||||
Resetting global fix info from restart file:
|
||||
fix style: nvt, fix ID: 1
|
||||
timestep 1.0e-3
|
||||
neighbor 1.0 bin
|
||||
neigh_modify every 1 delay 10 check yes
|
||||
run 100
|
||||
All restart file global fix info was re-assigned
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 4
|
||||
ghost atom cutoff = 4
|
||||
binsize = 2, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair tersoff/zbl, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.002 | 3.002 | 3.002 Mbytes
|
||||
Step Temp E_pair TotEng Econserve Press
|
||||
100 1112.9699 7067.9634 7141.4772 7129.3415 17683957
|
||||
110 1676.669 7033.1458 7143.893 7128.6921 17837566
|
||||
120 2450.2667 6982.2491 7144.094 7126.9524 18220027
|
||||
130 2726.9659 6964.1219 7144.2432 7126.7678 18230324
|
||||
140 2729.421 6962.7393 7143.0228 7127.2074 18176317
|
||||
150 2738.5449 6959.1761 7140.0623 7127.6671 18068370
|
||||
160 2687.2419 6958.1183 7135.6158 7127.8492 18156214
|
||||
170 2697.7325 6952.1482 7130.3387 7127.7898 17978251
|
||||
180 2577.9885 6954.5611 7124.8422 7127.5615 18068920
|
||||
190 2502.6928 6954.4558 7119.7635 7127.67 18049652
|
||||
200 2517.4866 6947.962 7114.2469 7127.1972 18209451
|
||||
Loop time of 0.810948 on 1 procs for 100 steps with 512 atoms
|
||||
|
||||
Performance: 10.654 ns/day, 2.253 hours/ns, 123.312 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.8082 | 0.8082 | 0.8082 | 0.0 | 99.66
|
||||
Neigh | 0.001195 | 0.001195 | 0.001195 | 0.0 | 0.15
|
||||
Comm | 0.00054765 | 0.00054765 | 0.00054765 | 0.0 | 0.07
|
||||
Output | 0.0001018 | 0.0001018 | 0.0001018 | 0.0 | 0.01
|
||||
Modify | 0.00062656 | 0.00062656 | 0.00062656 | 0.0 | 0.08
|
||||
Other | | 0.0002768 | | | 0.03
|
||||
|
||||
Nlocal: 512.000 ave 512 max 512 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 1542.00 ave 1542 max 1542 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
|
||||
FullNghs: 30142.0 ave 30142 max 30142 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 30142
|
||||
Ave neighs/atom = 58.871094
|
||||
Neighbor list builds = 1
|
||||
Dangerous builds = 0
|
||||
|
||||
shell rm restart.equil
|
||||
Total wall time: 0:00:01
|
||||
@ -1,5 +1,5 @@
|
||||
# /* ----------------------------------------------------------------------
|
||||
# Generic Linux Makefile for CUDA
|
||||
# Generic Linux Makefile for CUDA with the Multi-Process Service (MPS)
|
||||
# - change CUDA_ARCH for your GPU
|
||||
# ------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
@ -39,11 +39,9 @@ HIP_PLATFORM=$(shell $(HIP_PATH)/bin/hipconfig --platform)
|
||||
HIP_COMPILER=$(shell $(HIP_PATH)/bin/hipconfig --compiler)
|
||||
|
||||
ifeq (hcc,$(HIP_PLATFORM))
|
||||
HIP_OPTS += -ffast-math
|
||||
# possible values: gfx803,gfx900,gfx906
|
||||
HIP_ARCH = gfx906
|
||||
else ifeq (amd,$(HIP_PLATFORM))
|
||||
HIP_OPTS += -ffast-math
|
||||
# possible values: gfx803,gfx900,gfx906
|
||||
HIP_ARCH = gfx906
|
||||
else ifeq (nvcc,$(HIP_PLATFORM))
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# /* ----------------------------------------------------------------------
|
||||
# Generic Linux Makefile for CUDA
|
||||
# Generic Linux Makefile for CUDA
|
||||
# - Change CUDA_ARCH for your GPU
|
||||
# ------------------------------------------------------------------------- */
|
||||
|
||||
@ -13,7 +13,7 @@ endif
|
||||
|
||||
NVCC = nvcc
|
||||
|
||||
# obsolete hardware. not supported by current drivers anymore.
|
||||
# obsolete hardware. not supported by current drivers and toolkits anymore.
|
||||
#CUDA_ARCH = -arch=sm_13
|
||||
#CUDA_ARCH = -arch=sm_10 -DCUDA_PRE_THREE
|
||||
|
||||
@ -28,11 +28,11 @@ NVCC = nvcc
|
||||
#CUDA_ARCH = -arch=sm_37
|
||||
|
||||
# Maxwell hardware
|
||||
CUDA_ARCH = -arch=sm_50
|
||||
#CUDA_ARCH = -arch=sm_50
|
||||
#CUDA_ARCH = -arch=sm_52
|
||||
|
||||
# Pascal hardware
|
||||
#CUDA_ARCH = -arch=sm_60
|
||||
CUDA_ARCH = -arch=sm_60
|
||||
#CUDA_ARCH = -arch=sm_61
|
||||
|
||||
# Volta hardware
|
||||
@ -70,7 +70,7 @@ LIB_DIR = ./
|
||||
AR = ar
|
||||
BSH = /bin/sh
|
||||
|
||||
# GPU binning not recommended with modern GPUs
|
||||
# GPU binning not recommended for most modern GPUs
|
||||
CUDPP_OPT = #-DUSE_CUDPP -Icudpp_mini
|
||||
|
||||
include Nvidia.makefile
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# /* ----------------------------------------------------------------------
|
||||
# Generic Linux Makefile for CUDA
|
||||
# - Change CUDA_ARCH for your GPU
|
||||
# Generic Linux Makefile for CUDA complied for multiple compute capabilities
|
||||
# - Add your GPU to CUDA_CODE
|
||||
# ------------------------------------------------------------------------- */
|
||||
|
||||
# which file will be copied to Makefile.lammps
|
||||
|
||||
1
lib/gpu/Makefile.mpi
Symbolic link
1
lib/gpu/Makefile.mpi
Symbolic link
@ -0,0 +1 @@
|
||||
Makefile.linux
|
||||
@ -1,5 +1,5 @@
|
||||
# /* ----------------------------------------------------------------------
|
||||
# Generic Linux Makefile for CUDA
|
||||
# Generic Linux Makefile for CUDA without MPI libraries
|
||||
# - Change CUDA_ARCH for your GPU
|
||||
# ------------------------------------------------------------------------- */
|
||||
|
||||
@ -28,11 +28,11 @@ NVCC = nvcc
|
||||
#CUDA_ARCH = -arch=sm_37
|
||||
|
||||
# Maxwell hardware
|
||||
CUDA_ARCH = -arch=sm_50
|
||||
#CUDA_ARCH = -arch=sm_50
|
||||
#CUDA_ARCH = -arch=sm_52
|
||||
|
||||
# Pascal hardware
|
||||
#CUDA_ARCH = -arch=sm_60
|
||||
CUDA_ARCH = -arch=sm_60
|
||||
#CUDA_ARCH = -arch=sm_61
|
||||
|
||||
# Volta hardware
|
||||
@ -41,6 +41,10 @@ CUDA_ARCH = -arch=sm_50
|
||||
# Turing hardware
|
||||
#CUDA_ARCH = -arch=sm_75
|
||||
|
||||
# Ampere hardware
|
||||
#CUDA_ARCH = -arch=sm_80
|
||||
#CUDA_ARCH = -arch=sm_86
|
||||
|
||||
# this setting should match LAMMPS Makefile
|
||||
# one of LAMMPS_SMALLBIG (default), LAMMPS_BIGBIG and LAMMPS_SMALLSMALL
|
||||
|
||||
|
||||
@ -1,23 +0,0 @@
|
||||
NVCC = $(CUDA_HOME)/bin/nvcc
|
||||
EXTRAMAKE = Makefile.lammps.standard
|
||||
|
||||
CUDA_ARCH = -arch=sm_75
|
||||
CUDA_PRECISION = -D_SINGLE_DOUBLE
|
||||
CUDA_INCLUDE = -I$(CUDA_HOME)/include
|
||||
CUDA_LIB = -L$(CUDA_HOME)/lib64 -Xlinker -rpath -Xlinker $(CUDA_HOME)/lib64 -lcudart
|
||||
CUDA_OPTS = -DUNIX -O3 --use_fast_math --ftz=true
|
||||
|
||||
CUDR_CPP = mpic++ -DMPI_GERYON -DUCL_NO_EXIT -I$(CUDA_HOME)/include
|
||||
CUDR_OPTS = -O3 -ffast-math -funroll-loops -DMPI_GERYON -DLAMMPS_SMALLBIG
|
||||
|
||||
BIN_DIR = .
|
||||
OBJ_DIR = obj
|
||||
LIB_DIR = .
|
||||
AR = ar
|
||||
BSH = /bin/sh
|
||||
|
||||
# GPU binning not recommended with most modern GPUs
|
||||
CUDPP_OPT = #-DUSE_CUDPP -Icudpp_mini
|
||||
|
||||
include Nvidia.makefile
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
#endif
|
||||
|
||||
__kernel void kernel_cast_x(__global numtyp4 *restrict x_type,
|
||||
const __global double *restrict x,
|
||||
const __global numtyp *restrict x,
|
||||
const __global int *restrict type,
|
||||
const int nall) {
|
||||
int ii=GLOBAL_ID_X;
|
||||
|
||||
@ -475,7 +475,7 @@ class Atom {
|
||||
UCL_Vector<numtyp,numtyp> v;
|
||||
|
||||
#ifdef GPU_CAST
|
||||
UCL_Vector<double,double> x_cast;
|
||||
UCL_Vector<numtyp,numtyp> x_cast;
|
||||
UCL_Vector<int,int> type_cast;
|
||||
#endif
|
||||
|
||||
|
||||
@ -1039,10 +1039,18 @@ Device<PRECISION,ACC_PRECISION> global_device;
|
||||
|
||||
using namespace LAMMPS_AL;
|
||||
|
||||
bool lmp_has_gpu_device()
|
||||
// check if a suitable GPU is present.
|
||||
// for mixed and double precision GPU library compilation
|
||||
// also the GPU needs to support double precision.
|
||||
bool lmp_has_compatible_gpu_device()
|
||||
{
|
||||
UCL_Device gpu;
|
||||
return (gpu.num_platforms() > 0);
|
||||
bool compatible_gpu = gpu.num_platforms() > 0;
|
||||
#if defined(_SINGLE_DOUBLE) || defined(_DOUBLE_DOUBLE)
|
||||
if (compatible_gpu && !gpu.double_precision(0))
|
||||
compatible_gpu = false;
|
||||
#endif
|
||||
return compatible_gpu;
|
||||
}
|
||||
|
||||
std::string lmp_gpu_device_info()
|
||||
|
||||
@ -82,9 +82,9 @@ __kernel void k_zbl(const __global numtyp4 *restrict x_,
|
||||
const __global numtyp4 *restrict coeff1,
|
||||
const __global numtyp4 *restrict coeff2,
|
||||
const __global numtyp4 *restrict coeff3,
|
||||
const double cut_globalsq,
|
||||
const double cut_innersq,
|
||||
const double cut_inner,
|
||||
const numtyp cut_globalsq,
|
||||
const numtyp cut_innersq,
|
||||
const numtyp cut_inner,
|
||||
const int lj_types,
|
||||
const __global int *dev_nbor,
|
||||
const __global int *dev_packed,
|
||||
@ -174,9 +174,9 @@ __kernel void k_zbl_fast(const __global numtyp4 *restrict x_,
|
||||
const __global numtyp4 *restrict coeff1_in,
|
||||
const __global numtyp4 *restrict coeff2_in,
|
||||
const __global numtyp4 *restrict coeff3_in,
|
||||
const double cut_globalsq,
|
||||
const double cut_innersq,
|
||||
const double cut_inner,
|
||||
const numtyp cut_globalsq,
|
||||
const numtyp cut_innersq,
|
||||
const numtyp cut_inner,
|
||||
const __global int *dev_nbor,
|
||||
const __global int *dev_packed,
|
||||
__global acctyp4 *restrict ans,
|
||||
|
||||
@ -67,9 +67,9 @@ class ZBL : public BaseAtomic<numtyp, acctyp> {
|
||||
/// If atom type constants fit in shared memory, use fast kernels
|
||||
bool shared_types;
|
||||
|
||||
double _cut_globalsq;
|
||||
double _cut_innersq;
|
||||
double _cut_inner;
|
||||
numtyp _cut_globalsq;
|
||||
numtyp _cut_innersq;
|
||||
numtyp _cut_inner;
|
||||
|
||||
/// Number of atom types
|
||||
int _lj_types;
|
||||
|
||||
@ -17,11 +17,12 @@ parser = ArgumentParser(prog='Install.py',
|
||||
|
||||
# settings
|
||||
|
||||
version = '3.3.9'
|
||||
version = '3.4.0'
|
||||
tarball = "eigen.tar.gz"
|
||||
|
||||
# known checksums for different Eigen versions. used to validate the download.
|
||||
checksums = { \
|
||||
'3.4.0' : '4c527a9171d71a72a9d4186e65bea559', \
|
||||
'3.3.9' : '609286804b0f79be622ccf7f9ff2b660', \
|
||||
'3.3.7' : '9e30f67e8531477de4117506fe44669b' \
|
||||
}
|
||||
@ -35,7 +36,7 @@ Syntax from src dir: make lib-smd args="-b"
|
||||
|
||||
Syntax from lib dir: python Install.py -b
|
||||
or: python Install.py -p /usr/include/eigen3"
|
||||
or: python Install.py -v 3.3.7 -b
|
||||
or: python Install.py -v 3.4.0 -b
|
||||
|
||||
Example:
|
||||
|
||||
@ -77,7 +78,7 @@ if pathflag:
|
||||
if buildflag:
|
||||
print("Downloading Eigen ...")
|
||||
eigentar = os.path.join(homepath, tarball)
|
||||
url = "https://gitlab.com/libeigen/eigen/-/archive/%s/eigen-%s.tar.gz" % (version,version)
|
||||
url = "https://download.lammps.org/thirdparty/eigen-%s.tar.gz" % version
|
||||
geturl(url, eigentar)
|
||||
|
||||
# verify downloaded archive integrity via md5 checksum, if known.
|
||||
|
||||
@ -17,7 +17,7 @@ parser = ArgumentParser(prog='Install.py',
|
||||
|
||||
# settings
|
||||
|
||||
version = "2.7.1"
|
||||
version = "2.7.4"
|
||||
mode = "static"
|
||||
|
||||
# help message
|
||||
@ -51,9 +51,14 @@ checksums = { \
|
||||
'2.6.0' : '204d2edae58d9b10ba3ad460cad64191', \
|
||||
'2.6.1' : '89a9a450fc6025299fe16af235957163', \
|
||||
'2.6.3' : 'a9f8028fd74528c2024781ea1fdefeee', \
|
||||
'2.6.5' : 'b67356f027e5c2747823b0422c3b0ec2', \
|
||||
'2.6.6' : '6b470dcdce04c221ea42d8500b03c49b', \
|
||||
'2.7.0' : '95f29dd0c067577f11972ff90dfc7d12', \
|
||||
'2.7.1' : '4eac6a462ec84dfe0cec96c82421b8e8', \
|
||||
'2.7.2' : 'cfa0b4dd90a81c25d3302e8d97bfeaea', \
|
||||
'2.7.3' : 'f00cc82edfefe6bb3df934911dbe32fb', \
|
||||
'2.7.4' : 'f858e0b6aed173748fc85b6bc8a9dcb3', \
|
||||
'2.8.0' : '489b23daba70da78cf0506cbc31689c6', \
|
||||
}
|
||||
|
||||
# parse and process arguments
|
||||
|
||||
@ -26,6 +26,8 @@
|
||||
#error "Unsupported QE coupling API. Want API version 1."
|
||||
#endif
|
||||
|
||||
// we need to pass an MPI communicator to the LAMMPS library interface
|
||||
#define LAMMPS_LIB_MPI
|
||||
#include "library.h"
|
||||
|
||||
static const char delim[] = " \t\n\r";
|
||||
@ -67,8 +69,8 @@ int main(int argc, char **argv)
|
||||
#if 1 // AK: temporary hack
|
||||
if ( qmmmcfg.nmm != 2 ) {
|
||||
if (me == 0) {
|
||||
fprintf( stderr, "\n Error in the number of processors for MM code"
|
||||
"\n for the time being only two processor are allowed\n");
|
||||
fprintf( stderr, "\n Error in the number of processors for the MM code.\n"
|
||||
" Currently only requesting 2 MM processors is allowed.\n");
|
||||
}
|
||||
MPI_Finalize();
|
||||
return -1;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# DATE: 2017-11-28 CONTRIBUTOR: J.H. Los, J.M.H. Kroes CITATION: Los et al. Phys. Rev. B 96, 184108 (2017)
|
||||
# UNITS: metal DATE: 2017-11-28 CONTRIBUTOR: J.H. Los, J.M.H. Kroes CITATION: Los et al. Phys. Rev. B 96, 184108 (2017)
|
||||
|
||||
# B and N mixture, parameterized for ExTeP potential
|
||||
|
||||
@ -9,15 +9,15 @@
|
||||
# other quantities are unitless
|
||||
|
||||
# format of a single entry (one or more lines):
|
||||
#I J K m, gamma*, lambda3, c, d, h, n, gamma, lambda2, B, R, D, lambda1, A
|
||||
B B B 3 1.0 0.0 26617.3000 141.2000 -0.1300 1.1422470 0.01498959 2.5211820 2768.7363631 2.0 0.2 2.6857244 3376.3350735
|
||||
N N N 3 1.0 0.0 23.5000 3.7500 -0.4000 0.6650000 0.01925100 2.6272721 2563.5603417 2.0 0.2 2.8293093 2978.9527928
|
||||
B B N 3 1.0 0.0 26617.3000 141.2000 -0.1300 1.1422470 0.01498959 2.5211820 2768.7363631 2.0 0.2 2.6857244 3376.3350735
|
||||
N N B 3 1.0 0.0 23.5000 3.7500 -0.4000 0.6650000 0.01925100 2.6272721 2563.5603417 2.0 0.2 2.8293093 2978.9527928
|
||||
B N B 3 1.0 0.0d0 306.586555205d0 10.d0 -0.7218d0 0.6576543657d0 0.0027024851d0 2.69335d0 2595.6860833266d0 2.d0 0.2d0 2.95d0 3330.0655849887d0
|
||||
B N N 3 1.0 0.0d0 306.586555205d0 10.d0 -0.7218d0 0.6576543657d0 0.0027024851d0 2.69335d0 2595.6860833266d0 2.d0 0.2d0 2.95d0 3330.0655849887d0
|
||||
N B B 3 1.0 0.0d0 306.586555205d0 10.d0 -0.7218d0 0.6576543657d0 0.0027024851d0 2.69335d0 2595.6860833266d0 2.d0 0.2d0 2.95d0 3330.0655849887d0
|
||||
N B N 3 1.0 0.0d0 306.586555205d0 10.d0 -0.7218d0 0.6576543657d0 0.0027024851d0 2.69335d0 2595.6860833266d0 2.d0 0.2d0 2.95d0 3330.0655849887d0
|
||||
#I J K m, gamma*, lambda3, c, d, h, n, gamma, lambda2, B, R, D, lambda1, A
|
||||
B B B 3 1.0 0.0 26617.3000 141.2000 -0.1300 1.1422470 0.01498959 2.5211820 2768.7363631 2.0 0.2 2.6857244 3376.3350735
|
||||
N N N 3 1.0 0.0 23.5000 3.7500 -0.4000 0.6650000 0.01925100 2.6272721 2563.5603417 2.0 0.2 2.8293093 2978.9527928
|
||||
B B N 3 1.0 0.0 26617.3000 141.2000 -0.1300 1.1422470 0.01498959 2.5211820 2768.7363631 2.0 0.2 2.6857244 3376.3350735
|
||||
N N B 3 1.0 0.0 23.5000 3.7500 -0.4000 0.6650000 0.01925100 2.6272721 2563.5603417 2.0 0.2 2.8293093 2978.9527928
|
||||
B N B 3 1.0 0.0 306.586555205 10. -0.7218 0.6576543657 0.0027024851 2.69335 2595.6860833266 2.0 0.2 2.95 3330.0655849887
|
||||
B N N 3 1.0 0.0 306.586555205 10. -0.7218 0.6576543657 0.0027024851 2.69335 2595.6860833266 2.0 0.2 2.95 3330.0655849887
|
||||
N B B 3 1.0 0.0 306.586555205 10. -0.7218 0.6576543657 0.0027024851 2.69335 2595.6860833266 2.0 0.2 2.95 3330.0655849887
|
||||
N B N 3 1.0 0.0 306.586555205 10. -0.7218 0.6576543657 0.0027024851 2.69335 2595.6860833266 2.0 0.2 2.95 3330.0655849887
|
||||
#
|
||||
# 1.9925 Bicubic Splines Parameters
|
||||
#
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
# DATE: 2018-11-28 UNITS: metal CONTRIBUTOR: Zbigniew Koziol softquake@gmail.com CITATION: Z. Koziol et al.: https://arxiv.org/abs/1803.05162
|
||||
# DATE: 2021-11-04 UNITS: metal CONTRIBUTOR: Zbigniew Koziol softquake@gmail.com CITATION: Z. Koziol et al.: https://arxiv.org/abs/1803.05162
|
||||
#
|
||||
# Lebedeva Potential. https://doi.org/10.1016/j.physe.2011.07.018
|
||||
# Lebedeva potential: https://doi.org/10.1039/C0CP02614J and https://doi.org/10.1016/j.physe.2011.07.018
|
||||
|
||||
# Parameters must be in this order as here, otherwise their values may be changed.
|
||||
# Energies here are given in meV.
|
||||
# The last one, S, is convenient for scaling the potential amplitude. S is a multiplication factor for A, B, C
|
||||
# A B C z0 alpha D1 D2 lambda1 lambda2 S
|
||||
# These are values according to Levedeva et al
|
||||
#C C 10.510 11.6523.34 35.883 3.34 4.16 -0.86232 0.10049 0.48703 0.46445 1.0
|
||||
# These are values according to Lebedeva et al.: https://doi.org/10.1016/j.cplett.2012.03.082
|
||||
C C 10.510 11.652 29.5 3.34 4.16 -0.86232 0.10049 0.48703 0.46445 1.0
|
||||
#
|
||||
# These are values by Z. Koziol et al.: https://arxiv.org/abs/1803.05162
|
||||
C C 14.558 21.204 1.8 3.198 4.16 -0.862 0.10049 0.6 0.4 1.0
|
||||
C1 C1 14.558 21.204 1.8 3.198 4.16 -0.862 0.10049 0.6 0.4 1.0
|
||||
|
||||
@ -122,6 +122,9 @@ class lammps(object):
|
||||
for f in os.listdir(winpath)]):
|
||||
lib_ext = ".dll"
|
||||
modpath = winpath
|
||||
elif any([f.startswith('liblammps') and f.endswith('.so')
|
||||
for f in os.listdir(modpath)]):
|
||||
lib_ext = ".so"
|
||||
else:
|
||||
import platform
|
||||
if platform.system() == "Darwin":
|
||||
|
||||
@ -43,7 +43,6 @@ class ComputeTempRotate : public Compute {
|
||||
double memory_usage();
|
||||
|
||||
private:
|
||||
int fix_dof;
|
||||
double tfactor, masstotal;
|
||||
double **vbiasall; // stored velocity bias for all atoms
|
||||
int maxbias; // size of vbiasall array
|
||||
|
||||
@ -176,20 +176,20 @@ void AngleGaussian::compute(int eflag, int vflag)
|
||||
void AngleGaussian::allocate()
|
||||
{
|
||||
allocated = 1;
|
||||
int n = atom->nangletypes;
|
||||
int n = atom->nangletypes+1;
|
||||
|
||||
memory->create(nterms,n+1,"angle:nterms");
|
||||
memory->create(angle_temperature,n+1,"angle:angle_temperature");
|
||||
memory->create(nterms,n,"angle:nterms");
|
||||
memory->create(angle_temperature,n,"angle:angle_temperature");
|
||||
|
||||
alpha = new double *[n+1];
|
||||
width = new double *[n+1];
|
||||
theta0 = new double *[n+1];
|
||||
memset(alpha,0,sizeof(double)*(n+1));
|
||||
memset(width,0,sizeof(double)*(n+1));
|
||||
memset(theta0,0,sizeof(double)*(n+1));
|
||||
alpha = new double*[n];
|
||||
width = new double*[n];
|
||||
theta0 = new double*[n];
|
||||
memset(alpha,0,sizeof(double *)*n);
|
||||
memset(width,0,sizeof(double *)*n);
|
||||
memset(theta0,0,sizeof(double *)*n);
|
||||
|
||||
memory->create(setflag,n+1,"angle:setflag");
|
||||
for (int i = 1; i <= n; i++) setflag[i] = 0;
|
||||
memory->create(setflag,n,"angle:setflag");
|
||||
memset(setflag,0,sizeof(int)*n);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
||||
@ -14,8 +14,6 @@
|
||||
|
||||
#include "bond_gaussian.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
#include "atom.h"
|
||||
#include "neighbor.h"
|
||||
#include "comm.h"
|
||||
@ -24,6 +22,8 @@
|
||||
#include "memory.h"
|
||||
#include "error.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace MathConst;
|
||||
@ -131,20 +131,20 @@ void BondGaussian::compute(int eflag, int vflag)
|
||||
void BondGaussian::allocate()
|
||||
{
|
||||
allocated = 1;
|
||||
int n = atom->nbondtypes;
|
||||
int n = atom->nbondtypes+1;
|
||||
|
||||
memory->create(nterms,n+1,"bond:nterms");
|
||||
memory->create(bond_temperature,n+1,"bond:bond_temperature");
|
||||
memory->create(nterms,n,"bond:nterms");
|
||||
memory->create(bond_temperature,n,"bond:bond_temperature");
|
||||
|
||||
alpha = new double *[n+1];
|
||||
width = new double *[n+1];
|
||||
r0 = new double *[n+1];
|
||||
memset(alpha,0,sizeof(double)*(n+1));
|
||||
memset(width,0,sizeof(double)*(n+1));
|
||||
memset(r0,0,sizeof(double)*(n+1));
|
||||
alpha = new double *[n];
|
||||
width = new double *[n];
|
||||
r0 = new double *[n];
|
||||
memset(alpha,0,sizeof(double *)*n);
|
||||
memset(width,0,sizeof(double *)*n);
|
||||
memset(r0,0,sizeof(double *)*n);
|
||||
|
||||
memory->create(setflag,n+1,"bond:setflag");
|
||||
for (int i = 1; i <= n; i++) setflag[i] = 0;
|
||||
memory->create(setflag,n,"bond:setflag");
|
||||
memset(setflag,0,sizeof(int)*n);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
// clang-format off
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
@ -19,13 +17,14 @@
|
||||
|
||||
#include "pair_lj_cubic.h"
|
||||
|
||||
#include <cmath>
|
||||
#include "atom.h"
|
||||
#include "comm.h"
|
||||
#include "force.h"
|
||||
#include "neigh_list.h"
|
||||
#include "memory.h"
|
||||
#include "error.h"
|
||||
#include "force.h"
|
||||
#include "memory.h"
|
||||
#include "neigh_list.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#include "pair_lj_cubic_const.h"
|
||||
|
||||
@ -34,7 +33,7 @@ using namespace PairLJCubicConstants;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
PairLJCubic::PairLJCubic(LAMMPS *lmp) : Pair(lmp) {}
|
||||
PairLJCubic::PairLJCubic(LAMMPS *_lmp) : Pair(_lmp) {}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -60,14 +59,14 @@ PairLJCubic::~PairLJCubic()
|
||||
|
||||
void PairLJCubic::compute(int eflag, int vflag)
|
||||
{
|
||||
int i,j,ii,jj,inum,jnum,itype,jtype;
|
||||
double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair;
|
||||
double rsq,r2inv,r6inv,forcelj,factor_lj;
|
||||
double r,t,rmin;
|
||||
int *ilist,*jlist,*numneigh,**firstneigh;
|
||||
int i, j, ii, jj, inum, jnum, itype, jtype;
|
||||
double xtmp, ytmp, ztmp, delx, dely, delz, evdwl, fpair;
|
||||
double rsq, r2inv, r6inv, forcelj, factor_lj;
|
||||
double r, t, rmin;
|
||||
int *ilist, *jlist, *numneigh, **firstneigh;
|
||||
|
||||
evdwl = 0.0;
|
||||
ev_init(eflag,vflag);
|
||||
ev_init(eflag, vflag);
|
||||
|
||||
double **x = atom->x;
|
||||
double **f = atom->f;
|
||||
@ -100,40 +99,39 @@ void PairLJCubic::compute(int eflag, int vflag)
|
||||
delx = xtmp - x[j][0];
|
||||
dely = ytmp - x[j][1];
|
||||
delz = ztmp - x[j][2];
|
||||
rsq = delx*delx + dely*dely + delz*delz;
|
||||
rsq = delx * delx + dely * dely + delz * delz;
|
||||
jtype = type[j];
|
||||
|
||||
if (rsq < cutsq[itype][jtype]) {
|
||||
r2inv = 1.0/rsq;
|
||||
r2inv = 1.0 / rsq;
|
||||
if (rsq <= cut_inner_sq[itype][jtype]) {
|
||||
r6inv = r2inv*r2inv*r2inv;
|
||||
forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]);
|
||||
r6inv = r2inv * r2inv * r2inv;
|
||||
forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]);
|
||||
} else {
|
||||
r = sqrt(rsq);
|
||||
rmin = sigma[itype][jtype]*RT6TWO;
|
||||
t = (r - cut_inner[itype][jtype])/rmin;
|
||||
forcelj = epsilon[itype][jtype]*(-DPHIDS + A3*t*t/2.0)*r/rmin;
|
||||
rmin = sigma[itype][jtype] * RT6TWO;
|
||||
t = (r - cut_inner[itype][jtype]) / rmin;
|
||||
forcelj = epsilon[itype][jtype] * (-DPHIDS + A3 * t * t / 2.0) * r / rmin;
|
||||
}
|
||||
fpair = factor_lj*forcelj*r2inv;
|
||||
fpair = factor_lj * forcelj * r2inv;
|
||||
|
||||
f[i][0] += delx*fpair;
|
||||
f[i][1] += dely*fpair;
|
||||
f[i][2] += delz*fpair;
|
||||
f[i][0] += delx * fpair;
|
||||
f[i][1] += dely * fpair;
|
||||
f[i][2] += delz * fpair;
|
||||
if (newton_pair || j < nlocal) {
|
||||
f[j][0] -= delx*fpair;
|
||||
f[j][1] -= dely*fpair;
|
||||
f[j][2] -= delz*fpair;
|
||||
f[j][0] -= delx * fpair;
|
||||
f[j][1] -= dely * fpair;
|
||||
f[j][2] -= delz * fpair;
|
||||
}
|
||||
|
||||
if (eflag) {
|
||||
if (rsq <= cut_inner_sq[itype][jtype])
|
||||
evdwl = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]);
|
||||
evdwl = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]);
|
||||
else
|
||||
evdwl = epsilon[itype][jtype]*(PHIS + DPHIDS*t - A3*t*t*t/6.0);
|
||||
evdwl = epsilon[itype][jtype] * (PHIS + DPHIDS * t - A3 * t * t * t / 6.0);
|
||||
evdwl *= factor_lj;
|
||||
|
||||
if (evflag) ev_tally(i,j,nlocal,newton_pair,
|
||||
evdwl,0.0,fpair,delx,dely,delz);
|
||||
if (evflag) ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, fpair, delx, dely, delz);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -149,33 +147,32 @@ void PairLJCubic::compute(int eflag, int vflag)
|
||||
void PairLJCubic::allocate()
|
||||
{
|
||||
allocated = 1;
|
||||
int n = atom->ntypes;
|
||||
const int np1 = atom->ntypes + 1;
|
||||
|
||||
memory->create(setflag,n+1,n+1,"pair:setflag");
|
||||
for (int i = 1; i <= n; i++)
|
||||
for (int j = i; j <= n; j++)
|
||||
setflag[i][j] = 0;
|
||||
memory->create(setflag, np1, np1, "pair:setflag");
|
||||
for (int i = 1; i < np1; i++)
|
||||
for (int j = i; j < np1; j++) setflag[i][j] = 0;
|
||||
|
||||
memory->create(cutsq,n+1,n+1,"pair:cutsq");
|
||||
memory->create(cutsq, np1, np1, "pair:cutsq");
|
||||
|
||||
memory->create(cut,n+1,n+1,"pair:cut");
|
||||
memory->create(cut_inner,n+1,n+1,"pair:cut_inner");
|
||||
memory->create(cut_inner_sq,n+1,n+1,"pair:cut_inner_sq");
|
||||
memory->create(epsilon,n+1,n+1,"pair:epsilon");
|
||||
memory->create(sigma,n+1,n+1,"pair:sigma");
|
||||
memory->create(lj1,n+1,n+1,"pair:lj1");
|
||||
memory->create(lj2,n+1,n+1,"pair:lj2");
|
||||
memory->create(lj3,n+1,n+1,"pair:lj3");
|
||||
memory->create(lj4,n+1,n+1,"pair:lj4");
|
||||
memory->create(cut, np1, np1, "pair:cut");
|
||||
memory->create(cut_inner, np1, np1, "pair:cut_inner");
|
||||
memory->create(cut_inner_sq, np1, np1, "pair:cut_inner_sq");
|
||||
memory->create(epsilon, np1, np1, "pair:epsilon");
|
||||
memory->create(sigma, np1, np1, "pair:sigma");
|
||||
memory->create(lj1, np1, np1, "pair:lj1");
|
||||
memory->create(lj2, np1, np1, "pair:lj2");
|
||||
memory->create(lj3, np1, np1, "pair:lj3");
|
||||
memory->create(lj4, np1, np1, "pair:lj4");
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
global settings
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void PairLJCubic::settings(int narg, char **/*arg*/)
|
||||
void PairLJCubic::settings(int narg, char ** /*arg*/)
|
||||
{
|
||||
if (narg != 0) error->all(FLERR,"Illegal pair_style command");
|
||||
if (narg != 0) error->all(FLERR, "Illegal pair_style command");
|
||||
|
||||
// NOTE: lj/cubic has no global cutoff. instead the cutoff is
|
||||
// inferred from the lj parameters. so we must not reset cutoffs here.
|
||||
@ -187,31 +184,30 @@ void PairLJCubic::settings(int narg, char **/*arg*/)
|
||||
|
||||
void PairLJCubic::coeff(int narg, char **arg)
|
||||
{
|
||||
if (narg != 4)
|
||||
error->all(FLERR,"Incorrect args for pair coefficients");
|
||||
if (narg != 4) error->all(FLERR, "Incorrect args for pair coefficients");
|
||||
if (!allocated) allocate();
|
||||
|
||||
int ilo,ihi,jlo,jhi;
|
||||
utils::bounds(FLERR,arg[0],1,atom->ntypes,ilo,ihi,error);
|
||||
utils::bounds(FLERR,arg[1],1,atom->ntypes,jlo,jhi,error);
|
||||
int ilo, ihi, jlo, jhi;
|
||||
utils::bounds(FLERR, arg[0], 1, atom->ntypes, ilo, ihi, error);
|
||||
utils::bounds(FLERR, arg[1], 1, atom->ntypes, jlo, jhi, error);
|
||||
|
||||
double epsilon_one = utils::numeric(FLERR,arg[2],false,lmp);
|
||||
double sigma_one = utils::numeric(FLERR,arg[3],false,lmp);
|
||||
double rmin = sigma_one*RT6TWO;
|
||||
double epsilon_one = utils::numeric(FLERR, arg[2], false, lmp);
|
||||
double sigma_one = utils::numeric(FLERR, arg[3], false, lmp);
|
||||
double rmin = sigma_one * RT6TWO;
|
||||
|
||||
int count = 0;
|
||||
for (int i = ilo; i <= ihi; i++) {
|
||||
for (int j = MAX(jlo,i); j <= jhi; j++) {
|
||||
for (int j = MAX(jlo, i); j <= jhi; j++) {
|
||||
epsilon[i][j] = epsilon_one;
|
||||
sigma[i][j] = sigma_one;
|
||||
cut_inner[i][j] = rmin*SS;
|
||||
cut[i][j] = rmin*SM;
|
||||
cut_inner[i][j] = rmin * SS;
|
||||
cut[i][j] = rmin * SM;
|
||||
setflag[i][j] = 1;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients");
|
||||
if (count == 0) error->all(FLERR, "Incorrect args for pair coefficients");
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
@ -221,22 +217,22 @@ void PairLJCubic::coeff(int narg, char **arg)
|
||||
double PairLJCubic::init_one(int i, int j)
|
||||
{
|
||||
if (setflag[i][j] == 0) {
|
||||
epsilon[i][j] = epsilon[j][i] = mix_energy(epsilon[i][i],epsilon[j][j],
|
||||
sigma[i][i],sigma[j][j]);
|
||||
sigma[i][j] = sigma[j][i] = mix_distance(sigma[i][i],sigma[j][j]);
|
||||
cut_inner[i][j] = cut_inner[j][i] = mix_distance(cut_inner[i][i],
|
||||
cut_inner[j][j]);
|
||||
cut[i][j] = mix_distance(cut[i][i],cut[j][j]);
|
||||
epsilon[i][j] = mix_energy(epsilon[i][i], epsilon[j][j], sigma[i][i], sigma[j][j]);
|
||||
sigma[i][j] = mix_distance(sigma[i][i], sigma[j][j]);
|
||||
cut_inner[i][j] = mix_distance(cut_inner[i][i], cut_inner[j][j]);
|
||||
cut[i][j] = mix_distance(cut[i][i], cut[j][j]);
|
||||
}
|
||||
|
||||
cut_inner_sq[i][j] = cut_inner[i][j]*cut_inner[i][j];
|
||||
lj1[i][j] = 48.0 * epsilon[i][j] * pow(sigma[i][j],12.0);
|
||||
lj2[i][j] = 24.0 * epsilon[i][j] * pow(sigma[i][j],6.0);
|
||||
lj3[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],12.0);
|
||||
lj4[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],6.0);
|
||||
cut_inner_sq[i][j] = cut_inner[i][j] * cut_inner[i][j];
|
||||
lj1[i][j] = 48.0 * epsilon[i][j] * pow(sigma[i][j], 12.0);
|
||||
lj2[i][j] = 24.0 * epsilon[i][j] * pow(sigma[i][j], 6.0);
|
||||
lj3[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j], 12.0);
|
||||
lj4[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j], 6.0);
|
||||
|
||||
cut_inner[j][i] = cut_inner[i][j];
|
||||
cut_inner_sq[j][i] = cut_inner_sq[i][j];
|
||||
epsilon[j][i] = epsilon[i][j];
|
||||
sigma[j][i] = sigma[i][j];
|
||||
lj1[j][i] = lj1[i][j];
|
||||
lj2[j][i] = lj2[i][j];
|
||||
lj3[j][i] = lj3[i][j];
|
||||
@ -253,15 +249,15 @@ void PairLJCubic::write_restart(FILE *fp)
|
||||
{
|
||||
write_restart_settings(fp);
|
||||
|
||||
int i,j;
|
||||
int i, j;
|
||||
for (i = 1; i <= atom->ntypes; i++)
|
||||
for (j = i; j <= atom->ntypes; j++) {
|
||||
fwrite(&setflag[i][j],sizeof(int),1,fp);
|
||||
fwrite(&setflag[i][j], sizeof(int), 1, fp);
|
||||
if (setflag[i][j]) {
|
||||
fwrite(&epsilon[i][j],sizeof(double),1,fp);
|
||||
fwrite(&sigma[i][j],sizeof(double),1,fp);
|
||||
fwrite(&cut_inner[i][j],sizeof(double),1,fp);
|
||||
fwrite(&cut[i][j],sizeof(double),1,fp);
|
||||
fwrite(&epsilon[i][j], sizeof(double), 1, fp);
|
||||
fwrite(&sigma[i][j], sizeof(double), 1, fp);
|
||||
fwrite(&cut_inner[i][j], sizeof(double), 1, fp);
|
||||
fwrite(&cut[i][j], sizeof(double), 1, fp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -275,23 +271,23 @@ void PairLJCubic::read_restart(FILE *fp)
|
||||
read_restart_settings(fp);
|
||||
allocate();
|
||||
|
||||
int i,j;
|
||||
int i, j;
|
||||
int me = comm->me;
|
||||
for (i = 1; i <= atom->ntypes; i++)
|
||||
for (j = i; j <= atom->ntypes; j++) {
|
||||
if (me == 0) utils::sfread(FLERR,&setflag[i][j],sizeof(int),1,fp,nullptr,error);
|
||||
MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world);
|
||||
if (me == 0) utils::sfread(FLERR, &setflag[i][j], sizeof(int), 1, fp, nullptr, error);
|
||||
MPI_Bcast(&setflag[i][j], 1, MPI_INT, 0, world);
|
||||
if (setflag[i][j]) {
|
||||
if (me == 0) {
|
||||
utils::sfread(FLERR,&epsilon[i][j],sizeof(double),1,fp,nullptr,error);
|
||||
utils::sfread(FLERR,&sigma[i][j],sizeof(double),1,fp,nullptr,error);
|
||||
utils::sfread(FLERR,&cut_inner[i][j],sizeof(double),1,fp,nullptr,error);
|
||||
utils::sfread(FLERR,&cut[i][j],sizeof(double),1,fp,nullptr,error);
|
||||
utils::sfread(FLERR, &epsilon[i][j], sizeof(double), 1, fp, nullptr, error);
|
||||
utils::sfread(FLERR, &sigma[i][j], sizeof(double), 1, fp, nullptr, error);
|
||||
utils::sfread(FLERR, &cut_inner[i][j], sizeof(double), 1, fp, nullptr, error);
|
||||
utils::sfread(FLERR, &cut[i][j], sizeof(double), 1, fp, nullptr, error);
|
||||
}
|
||||
MPI_Bcast(&epsilon[i][j],1,MPI_DOUBLE,0,world);
|
||||
MPI_Bcast(&sigma[i][j],1,MPI_DOUBLE,0,world);
|
||||
MPI_Bcast(&cut_inner[i][j],1,MPI_DOUBLE,0,world);
|
||||
MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world);
|
||||
MPI_Bcast(&epsilon[i][j], 1, MPI_DOUBLE, 0, world);
|
||||
MPI_Bcast(&sigma[i][j], 1, MPI_DOUBLE, 0, world);
|
||||
MPI_Bcast(&cut_inner[i][j], 1, MPI_DOUBLE, 0, world);
|
||||
MPI_Bcast(&cut[i][j], 1, MPI_DOUBLE, 0, world);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -302,7 +298,7 @@ void PairLJCubic::read_restart(FILE *fp)
|
||||
|
||||
void PairLJCubic::write_restart_settings(FILE *fp)
|
||||
{
|
||||
fwrite(&mix_flag,sizeof(int),1,fp);
|
||||
fwrite(&mix_flag, sizeof(int), 1, fp);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
@ -312,46 +308,42 @@ void PairLJCubic::write_restart_settings(FILE *fp)
|
||||
void PairLJCubic::read_restart_settings(FILE *fp)
|
||||
{
|
||||
int me = comm->me;
|
||||
if (me == 0) {
|
||||
utils::sfread(FLERR,&mix_flag,sizeof(int),1,fp,nullptr,error);
|
||||
}
|
||||
MPI_Bcast(&mix_flag,1,MPI_INT,0,world);
|
||||
if (me == 0) { utils::sfread(FLERR, &mix_flag, sizeof(int), 1, fp, nullptr, error); }
|
||||
MPI_Bcast(&mix_flag, 1, MPI_INT, 0, world);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
double PairLJCubic::single(int /*i*/, int /*j*/, int itype, int jtype,
|
||||
double rsq,
|
||||
double /*factor_coul*/, double factor_lj,
|
||||
double &fforce)
|
||||
double PairLJCubic::single(int /*i*/, int /*j*/, int itype, int jtype, double rsq,
|
||||
double /*factor_coul*/, double factor_lj, double &fforce)
|
||||
{
|
||||
double r2inv,r6inv,forcelj,philj;
|
||||
double r,t;
|
||||
double r2inv, r6inv, forcelj, philj;
|
||||
double r, t;
|
||||
double rmin;
|
||||
|
||||
// this is a truncated potential with an implicit cutoff
|
||||
|
||||
if (rsq >= cutsq[itype][jtype]) {
|
||||
fforce=0.0;
|
||||
fforce = 0.0;
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
r2inv = 1.0/rsq;
|
||||
r2inv = 1.0 / rsq;
|
||||
if (rsq <= cut_inner_sq[itype][jtype]) {
|
||||
r6inv = r2inv*r2inv*r2inv;
|
||||
forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]);
|
||||
r6inv = r2inv * r2inv * r2inv;
|
||||
forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]);
|
||||
} else {
|
||||
r = sqrt(rsq);
|
||||
rmin = sigma[itype][jtype]*RT6TWO;
|
||||
t = (r - cut_inner[itype][jtype])/rmin;
|
||||
forcelj = epsilon[itype][jtype]*(-DPHIDS + A3*t*t/2.0)*r/rmin;
|
||||
rmin = sigma[itype][jtype] * RT6TWO;
|
||||
t = (r - cut_inner[itype][jtype]) / rmin;
|
||||
forcelj = epsilon[itype][jtype] * (-DPHIDS + A3 * t * t / 2.0) * r / rmin;
|
||||
}
|
||||
fforce = factor_lj*forcelj*r2inv;
|
||||
fforce = factor_lj * forcelj * r2inv;
|
||||
|
||||
if (rsq <= cut_inner_sq[itype][jtype])
|
||||
philj = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]);
|
||||
philj = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]);
|
||||
else
|
||||
philj = epsilon[itype][jtype]*(PHIS + DPHIDS*t - A3*t*t*t/6.0);
|
||||
philj = epsilon[itype][jtype] * (PHIS + DPHIDS * t - A3 * t * t * t / 6.0);
|
||||
|
||||
return factor_lj*philj;
|
||||
return factor_lj * philj;
|
||||
}
|
||||
|
||||
@ -37,7 +37,7 @@ using namespace FixConst;
|
||||
FixNVEGPU::FixNVEGPU(LAMMPS *lmp, int narg, char **arg) :
|
||||
FixNVE(lmp, narg, arg)
|
||||
{
|
||||
_dtfm = 0;
|
||||
_dtfm = nullptr;
|
||||
_nlocal_max = 0;
|
||||
}
|
||||
|
||||
@ -57,7 +57,11 @@ void FixNVEGPU::setup(int vflag)
|
||||
_respa_on = 1;
|
||||
else
|
||||
_respa_on = 0;
|
||||
if (atom->ntypes > 1) reset_dt();
|
||||
|
||||
// ensure that _dtfm array is initialized if the group is not "all"
|
||||
// or there is more than one atom type as that re-ordeted array is used for
|
||||
// per-type/per-atom masses and group membership detection.
|
||||
if ((igroup != 0) || (atom->ntypes > 1)) reset_dt();
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
||||
@ -363,13 +363,12 @@ void AngleCharmmIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
template <class flt_t>
|
||||
void AngleCharmmIntel::ForceConst<flt_t>::set_ntypes(const int nangletypes,
|
||||
Memory *memory) {
|
||||
if (memory != nullptr) _memory = memory;
|
||||
if (nangletypes != _nangletypes) {
|
||||
if (_nangletypes > 0)
|
||||
_memory->destroy(fc);
|
||||
_memory->destroy(fc);
|
||||
|
||||
if (nangletypes > 0)
|
||||
_memory->create(fc,nangletypes,"anglecharmmintel.fc");
|
||||
}
|
||||
_nangletypes = nangletypes;
|
||||
_memory = memory;
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ class AngleCharmmIntel : public AngleCharmm {
|
||||
} fc_packed1;
|
||||
|
||||
fc_packed1 *fc;
|
||||
ForceConst() : _nangletypes(0) {}
|
||||
ForceConst() : fc(nullptr), _nangletypes(0) {}
|
||||
~ForceConst() { set_ntypes(0, nullptr); }
|
||||
|
||||
void set_ntypes(const int nangletypes, Memory *memory);
|
||||
|
||||
@ -343,13 +343,11 @@ void AngleHarmonicIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
template <class flt_t>
|
||||
void AngleHarmonicIntel::ForceConst<flt_t>::set_ntypes(const int nangletypes,
|
||||
Memory *memory) {
|
||||
if (memory != nullptr) _memory = memory;
|
||||
if (nangletypes != _nangletypes) {
|
||||
if (_nangletypes > 0)
|
||||
_memory->destroy(fc);
|
||||
|
||||
_memory->destroy(fc);
|
||||
if (nangletypes > 0)
|
||||
_memory->create(fc,nangletypes,"anglecharmmintel.fc");
|
||||
}
|
||||
_nangletypes = nangletypes;
|
||||
_memory = memory;
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ class AngleHarmonicIntel : public AngleHarmonic {
|
||||
} fc_packed1;
|
||||
|
||||
fc_packed1 *fc;
|
||||
ForceConst() : _nangletypes(0) {}
|
||||
ForceConst() : fc(nullptr), _nangletypes(0) {}
|
||||
~ForceConst() { set_ntypes(0, nullptr); }
|
||||
|
||||
void set_ntypes(const int nangletypes, Memory *memory);
|
||||
|
||||
@ -323,13 +323,12 @@ void BondFENEIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
template <class flt_t>
|
||||
void BondFENEIntel::ForceConst<flt_t>::set_ntypes(const int nbondtypes,
|
||||
Memory *memory) {
|
||||
if (memory != nullptr) _memory = memory;
|
||||
if (nbondtypes != _nbondtypes) {
|
||||
if (_nbondtypes > 0)
|
||||
_memory->destroy(fc);
|
||||
_memory->destroy(fc);
|
||||
|
||||
if (nbondtypes > 0)
|
||||
_memory->create(fc,nbondtypes,"bondfeneintel.fc");
|
||||
}
|
||||
_nbondtypes = nbondtypes;
|
||||
_memory = memory;
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ class BondFENEIntel : public BondFENE {
|
||||
} fc_packed1;
|
||||
fc_packed1 *fc;
|
||||
|
||||
ForceConst() : _nbondtypes(0) {}
|
||||
ForceConst() : fc(nullptr), _nbondtypes(0) {}
|
||||
~ForceConst() { set_ntypes(0, nullptr); }
|
||||
|
||||
void set_ntypes(const int nbondtypes, Memory *memory);
|
||||
|
||||
@ -291,13 +291,12 @@ void BondHarmonicIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
template <class flt_t>
|
||||
void BondHarmonicIntel::ForceConst<flt_t>::set_ntypes(const int nbondtypes,
|
||||
Memory *memory) {
|
||||
if (memory != nullptr) _memory = memory;
|
||||
if (nbondtypes != _nbondtypes) {
|
||||
if (_nbondtypes > 0)
|
||||
_memory->destroy(fc);
|
||||
_memory->destroy(fc);
|
||||
|
||||
if (nbondtypes > 0)
|
||||
_memory->create(fc,nbondtypes,"bondharmonicintel.fc");
|
||||
}
|
||||
_nbondtypes = nbondtypes;
|
||||
_memory = memory;
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ class BondHarmonicIntel : public BondHarmonic {
|
||||
} fc_packed1;
|
||||
fc_packed1 *fc;
|
||||
|
||||
ForceConst() : _nbondtypes(0) {}
|
||||
ForceConst() : fc(nullptr), _nbondtypes(0) {}
|
||||
~ForceConst() { set_ntypes(0, nullptr); }
|
||||
|
||||
void set_ntypes(const int nbondtypes, Memory *memory);
|
||||
|
||||
@ -261,10 +261,10 @@ void DihedralCharmmIntel::eval(const int vflag,
|
||||
if (c > (flt_t)1.0) c = (flt_t)1.0;
|
||||
if (c < (flt_t)-1.0) c = (flt_t)-1.0;
|
||||
|
||||
const flt_t tcos_shift = fc.bp[type].cos_shift;
|
||||
const flt_t tsin_shift = fc.bp[type].sin_shift;
|
||||
const flt_t tk = fc.bp[type].k;
|
||||
const int m = fc.bp[type].multiplicity;
|
||||
const flt_t tcos_shift = fc.fc[type].cos_shift;
|
||||
const flt_t tsin_shift = fc.fc[type].sin_shift;
|
||||
const flt_t tk = fc.fc[type].k;
|
||||
const int m = fc.fc[type].multiplicity;
|
||||
|
||||
flt_t p = (flt_t)1.0;
|
||||
flt_t ddf1, df1;
|
||||
@ -539,10 +539,10 @@ void DihedralCharmmIntel::eval(const int vflag,
|
||||
(int *) neighbor->dihedrallist[0];
|
||||
const flt_t * _noalias const weight = &(fc.weight[0]);
|
||||
const flt_t * _noalias const x_f = &(x[0].x);
|
||||
const flt_t * _noalias const cos_shift = &(fc.bp[0].cos_shift);
|
||||
const flt_t * _noalias const sin_shift = &(fc.bp[0].sin_shift);
|
||||
const flt_t * _noalias const k = &(fc.bp[0].k);
|
||||
const int * _noalias const multiplicity = &(fc.bp[0].multiplicity);
|
||||
const flt_t * _noalias const cos_shift = &(fc.fc[0].cos_shift);
|
||||
const flt_t * _noalias const sin_shift = &(fc.fc[0].sin_shift);
|
||||
const flt_t * _noalias const k = &(fc.fc[0].k);
|
||||
const int * _noalias const multiplicity = &(fc.fc[0].multiplicity);
|
||||
const flt_t * _noalias const plj1 = &(fc.ljp[0][0].lj1);
|
||||
const flt_t * _noalias const plj2 = &(fc.ljp[0][0].lj2);
|
||||
const flt_t * _noalias const plj3 = &(fc.ljp[0][0].lj3);
|
||||
@ -937,8 +937,8 @@ void DihedralCharmmIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
{
|
||||
|
||||
const int tp1 = atom->ntypes + 1;
|
||||
const int bp1 = atom->ndihedraltypes + 1;
|
||||
fc.set_ntypes(tp1,bp1,memory);
|
||||
const int dp1 = atom->ndihedraltypes + 1;
|
||||
fc.set_ntypes(tp1,dp1,memory);
|
||||
buffers->set_ntypes(tp1);
|
||||
|
||||
if (weightflag) {
|
||||
@ -952,11 +952,11 @@ void DihedralCharmmIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 1; i < bp1; i++) {
|
||||
fc.bp[i].multiplicity = multiplicity[i];
|
||||
fc.bp[i].cos_shift = cos_shift[i];
|
||||
fc.bp[i].sin_shift = sin_shift[i];
|
||||
fc.bp[i].k = k[i];
|
||||
for (int i = 1; i < dp1; i++) {
|
||||
fc.fc[i].multiplicity = multiplicity[i];
|
||||
fc.fc[i].cos_shift = cos_shift[i];
|
||||
fc.fc[i].sin_shift = sin_shift[i];
|
||||
fc.fc[i].k = k[i];
|
||||
fc.weight[i] = weight[i];
|
||||
}
|
||||
}
|
||||
@ -965,27 +965,24 @@ void DihedralCharmmIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
|
||||
template <class flt_t>
|
||||
void DihedralCharmmIntel::ForceConst<flt_t>::set_ntypes(const int npairtypes,
|
||||
const int nbondtypes,
|
||||
const int ndihderaltypes,
|
||||
Memory *memory) {
|
||||
if (memory != nullptr) _memory = memory;
|
||||
if (npairtypes != _npairtypes) {
|
||||
if (_npairtypes > 0)
|
||||
_memory->destroy(ljp);
|
||||
_memory->destroy(ljp);
|
||||
if (npairtypes > 0)
|
||||
memory->create(ljp,npairtypes,npairtypes,"fc.ljp");
|
||||
_memory->create(ljp,npairtypes,npairtypes,"fc.ljp");
|
||||
}
|
||||
|
||||
if (nbondtypes != _nbondtypes) {
|
||||
if (_nbondtypes > 0) {
|
||||
_memory->destroy(bp);
|
||||
_memory->destroy(weight);
|
||||
}
|
||||
if (ndihderaltypes != _ndihderaltypes) {
|
||||
_memory->destroy(fc);
|
||||
_memory->destroy(weight);
|
||||
|
||||
if (nbondtypes > 0) {
|
||||
_memory->create(bp,nbondtypes,"dihedralcharmmintel.bp");
|
||||
_memory->create(weight,nbondtypes,"dihedralcharmmintel.weight");
|
||||
if (ndihderaltypes > 0) {
|
||||
_memory->create(fc,ndihderaltypes,"dihedralcharmmintel.fc");
|
||||
_memory->create(weight,ndihderaltypes,"dihedralcharmmintel.weight");
|
||||
}
|
||||
}
|
||||
_npairtypes = npairtypes;
|
||||
_nbondtypes = nbondtypes;
|
||||
_memory = memory;
|
||||
_ndihderaltypes = ndihderaltypes;
|
||||
}
|
||||
|
||||
@ -64,16 +64,16 @@ class DihedralCharmmIntel : public DihedralCharmm {
|
||||
} fc_packed3;
|
||||
|
||||
fc_packed1 **ljp;
|
||||
fc_packed3 *bp;
|
||||
fc_packed3 *fc;
|
||||
flt_t *weight;
|
||||
|
||||
ForceConst() : _npairtypes(0), _nbondtypes(0) {}
|
||||
ForceConst() : ljp(nullptr), fc(nullptr), _npairtypes(0), _ndihderaltypes(0) {}
|
||||
~ForceConst() { set_ntypes(0, 0, nullptr); }
|
||||
|
||||
void set_ntypes(const int npairtypes, const int nbondtypes, Memory *memory);
|
||||
void set_ntypes(const int npairtypes, const int ndihderaltypes, Memory *memory);
|
||||
|
||||
private:
|
||||
int _npairtypes, _nbondtypes;
|
||||
int _npairtypes, _ndihderaltypes;
|
||||
Memory *_memory;
|
||||
};
|
||||
ForceConst<float> force_const_single;
|
||||
|
||||
@ -225,10 +225,10 @@ void DihedralFourierIntel::eval(const int vflag,
|
||||
if (EFLAG) deng = (flt_t)0.0;
|
||||
|
||||
for (int j = 0; j < nterms[type]; j++) {
|
||||
const flt_t tcos_shift = fc.bp[j][type].cos_shift;
|
||||
const flt_t tsin_shift = fc.bp[j][type].sin_shift;
|
||||
const flt_t tk = fc.bp[j][type].k;
|
||||
const int m = fc.bp[j][type].multiplicity;
|
||||
const flt_t tcos_shift = fc.fc[j][type].cos_shift;
|
||||
const flt_t tsin_shift = fc.fc[j][type].sin_shift;
|
||||
const flt_t tk = fc.fc[j][type].k;
|
||||
const int m = fc.fc[j][type].multiplicity;
|
||||
|
||||
flt_t p = (flt_t)1.0;
|
||||
flt_t ddf1, df1;
|
||||
@ -394,16 +394,16 @@ template <class flt_t, class acc_t>
|
||||
void DihedralFourierIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
IntelBuffers<flt_t,acc_t> * /*buffers*/)
|
||||
{
|
||||
const int bp1 = atom->ndihedraltypes + 1;
|
||||
fc.set_ntypes(bp1, setflag, nterms, memory);
|
||||
const int dp1 = atom->ndihedraltypes + 1;
|
||||
fc.set_ntypes(dp1, setflag, nterms, memory);
|
||||
|
||||
for (int i = 1; i < bp1; i++) {
|
||||
for (int i = 1; i < dp1; i++) {
|
||||
if (setflag[i]) {
|
||||
for (int j = 0; j < nterms[i]; j++) {
|
||||
fc.bp[j][i].cos_shift = cos_shift[i][j];
|
||||
fc.bp[j][i].sin_shift = sin_shift[i][j];
|
||||
fc.bp[j][i].k = k[i][j];
|
||||
fc.bp[j][i].multiplicity = multiplicity[i][j];
|
||||
fc.fc[j][i].cos_shift = cos_shift[i][j];
|
||||
fc.fc[j][i].sin_shift = sin_shift[i][j];
|
||||
fc.fc[j][i].k = k[i][j];
|
||||
fc.fc[j][i].multiplicity = multiplicity[i][j];
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -412,22 +412,20 @@ void DihedralFourierIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template <class flt_t>
|
||||
void DihedralFourierIntel::ForceConst<flt_t>::set_ntypes(const int nbondtypes,
|
||||
void DihedralFourierIntel::ForceConst<flt_t>::set_ntypes(const int ndihedraltypes,
|
||||
int *setflag,
|
||||
int *nterms,
|
||||
Memory *memory) {
|
||||
if (nbondtypes != _nbondtypes) {
|
||||
if (_nbondtypes > 0)
|
||||
_memory->destroy(bp);
|
||||
if (memory != nullptr) _memory = memory;
|
||||
if (ndihedraltypes != _ndihedraltypes) {
|
||||
_memory->destroy(fc);
|
||||
|
||||
if (nbondtypes > 0) {
|
||||
if (ndihedraltypes > 0) {
|
||||
_maxnterms = 1;
|
||||
for (int i = 1; i <= nbondtypes; i++)
|
||||
for (int i = 1; i < ndihedraltypes; i++)
|
||||
if (setflag[i]) _maxnterms = MAX(_maxnterms, nterms[i]);
|
||||
|
||||
_memory->create(bp, _maxnterms, nbondtypes, "dihedralfourierintel.bp");
|
||||
_memory->create(fc, _maxnterms, ndihedraltypes, "dihedralfourierintel.fc");
|
||||
}
|
||||
}
|
||||
_nbondtypes = nbondtypes;
|
||||
_memory = memory;
|
||||
_ndihedraltypes = ndihedraltypes;
|
||||
}
|
||||
|
||||
@ -60,15 +60,15 @@ class DihedralFourierIntel : public DihedralFourier {
|
||||
int multiplicity;
|
||||
} fc_packed1;
|
||||
|
||||
fc_packed1 **bp;
|
||||
fc_packed1 **fc;
|
||||
|
||||
ForceConst() : _nbondtypes(0) {}
|
||||
ForceConst() : fc(nullptr), _ndihedraltypes(0) {}
|
||||
~ForceConst() { set_ntypes(0, nullptr, nullptr, nullptr); }
|
||||
|
||||
void set_ntypes(const int nbondtypes, int *setflag, int *nterms, Memory *memory);
|
||||
void set_ntypes(const int ndihedraltypes, int *setflag, int *nterms, Memory *memory);
|
||||
|
||||
private:
|
||||
int _nbondtypes, _maxnterms;
|
||||
int _ndihedraltypes, _maxnterms;
|
||||
Memory *_memory;
|
||||
};
|
||||
ForceConst<float> force_const_single;
|
||||
|
||||
@ -220,10 +220,10 @@ void DihedralHarmonicIntel::eval(const int vflag,
|
||||
if (c > (flt_t)1.0) c = (flt_t)1.0;
|
||||
if (c < (flt_t)-1.0) c = (flt_t)-1.0;
|
||||
|
||||
const flt_t tcos_shift = fc.bp[type].cos_shift;
|
||||
const flt_t tsin_shift = fc.bp[type].sin_shift;
|
||||
const flt_t tk = fc.bp[type].k;
|
||||
const int m = fc.bp[type].multiplicity;
|
||||
const flt_t tcos_shift = fc.fc[type].cos_shift;
|
||||
const flt_t tsin_shift = fc.fc[type].sin_shift;
|
||||
const flt_t tk = fc.fc[type].k;
|
||||
const int m = fc.fc[type].multiplicity;
|
||||
|
||||
flt_t p = (flt_t)1.0;
|
||||
flt_t ddf1, df1;
|
||||
@ -389,29 +389,28 @@ template <class flt_t, class acc_t>
|
||||
void DihedralHarmonicIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
IntelBuffers<flt_t,acc_t> * /*buffers*/)
|
||||
{
|
||||
const int bp1 = atom->ndihedraltypes + 1;
|
||||
fc.set_ntypes(bp1,memory);
|
||||
const int dp1 = atom->ndihedraltypes + 1;
|
||||
fc.set_ntypes(dp1,memory);
|
||||
|
||||
for (int i = 1; i < bp1; i++) {
|
||||
fc.bp[i].multiplicity = multiplicity[i];
|
||||
fc.bp[i].cos_shift = cos_shift[i];
|
||||
fc.bp[i].sin_shift = sin_shift[i];
|
||||
fc.bp[i].k = k[i];
|
||||
for (int i = 1; i < dp1; i++) {
|
||||
fc.fc[i].multiplicity = multiplicity[i];
|
||||
fc.fc[i].cos_shift = cos_shift[i];
|
||||
fc.fc[i].sin_shift = sin_shift[i];
|
||||
fc.fc[i].k = k[i];
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template <class flt_t>
|
||||
void DihedralHarmonicIntel::ForceConst<flt_t>::set_ntypes(const int nbondtypes,
|
||||
void DihedralHarmonicIntel::ForceConst<flt_t>::set_ntypes(const int ndihderaltypes,
|
||||
Memory *memory) {
|
||||
if (nbondtypes != _nbondtypes) {
|
||||
if (_nbondtypes > 0)
|
||||
_memory->destroy(bp);
|
||||
if (memory != nullptr) _memory = memory;
|
||||
if (ndihderaltypes != _ndihderaltypes) {
|
||||
_memory->destroy(fc);
|
||||
|
||||
if (nbondtypes > 0)
|
||||
_memory->create(bp,nbondtypes,"dihedralcharmmintel.bp");
|
||||
if (ndihderaltypes > 0)
|
||||
_memory->create(fc,ndihderaltypes,"dihedralcharmmintel.fc");
|
||||
}
|
||||
_nbondtypes = nbondtypes;
|
||||
_memory = memory;
|
||||
_ndihderaltypes = ndihderaltypes;
|
||||
}
|
||||
|
||||
@ -60,15 +60,15 @@ class DihedralHarmonicIntel : public DihedralHarmonic {
|
||||
int multiplicity;
|
||||
} fc_packed1;
|
||||
|
||||
fc_packed1 *bp;
|
||||
fc_packed1 *fc;
|
||||
|
||||
ForceConst() : _nbondtypes(0) {}
|
||||
ForceConst() : fc(nullptr), _ndihderaltypes(0) {}
|
||||
~ForceConst() { set_ntypes(0, nullptr); }
|
||||
|
||||
void set_ntypes(const int nbondtypes, Memory *memory);
|
||||
void set_ntypes(const int ndihderaltypes, Memory *memory);
|
||||
|
||||
private:
|
||||
int _nbondtypes;
|
||||
int _ndihderaltypes;
|
||||
Memory *_memory;
|
||||
};
|
||||
ForceConst<float> force_const_single;
|
||||
|
||||
@ -264,14 +264,14 @@ void DihedralOPLSIntel::eval(const int vflag,
|
||||
const flt_t sin_4phim = (flt_t)2.0 * cos_2phi * sin_2phim;
|
||||
|
||||
flt_t p, pd;
|
||||
p = fc.bp[type].k1*((flt_t)1.0 + c) +
|
||||
fc.bp[type].k2*((flt_t)1.0 - cos_2phi) +
|
||||
fc.bp[type].k3*((flt_t)1.0 + cos_3phi) +
|
||||
fc.bp[type].k4*((flt_t)1.0 - cos_4phi) ;
|
||||
pd = fc.bp[type].k1 -
|
||||
(flt_t)2.0 * fc.bp[type].k2 * sin_2phim +
|
||||
(flt_t)3.0 * fc.bp[type].k3 * sin_3phim -
|
||||
(flt_t)4.0 * fc.bp[type].k4 * sin_4phim;
|
||||
p = fc.fc[type].k1*((flt_t)1.0 + c) +
|
||||
fc.fc[type].k2*((flt_t)1.0 - cos_2phi) +
|
||||
fc.fc[type].k3*((flt_t)1.0 + cos_3phi) +
|
||||
fc.fc[type].k4*((flt_t)1.0 - cos_4phi) ;
|
||||
pd = fc.fc[type].k1 -
|
||||
(flt_t)2.0 * fc.fc[type].k2 * sin_2phim +
|
||||
(flt_t)3.0 * fc.fc[type].k3 * sin_3phim -
|
||||
(flt_t)4.0 * fc.fc[type].k4 * sin_4phim;
|
||||
|
||||
flt_t edihed;
|
||||
if (EFLAG) edihed = p;
|
||||
@ -409,29 +409,28 @@ template <class flt_t, class acc_t>
|
||||
void DihedralOPLSIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
IntelBuffers<flt_t,acc_t> * /*buffers*/)
|
||||
{
|
||||
const int bp1 = atom->ndihedraltypes + 1;
|
||||
fc.set_ntypes(bp1,memory);
|
||||
const int dp1 = atom->ndihedraltypes + 1;
|
||||
fc.set_ntypes(dp1,memory);
|
||||
|
||||
for (int i = 1; i < bp1; i++) {
|
||||
fc.bp[i].k1 = k1[i];
|
||||
fc.bp[i].k2 = k2[i];
|
||||
fc.bp[i].k3 = k3[i];
|
||||
fc.bp[i].k4 = k4[i];
|
||||
for (int i = 1; i < dp1; i++) {
|
||||
fc.fc[i].k1 = k1[i];
|
||||
fc.fc[i].k2 = k2[i];
|
||||
fc.fc[i].k3 = k3[i];
|
||||
fc.fc[i].k4 = k4[i];
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template <class flt_t>
|
||||
void DihedralOPLSIntel::ForceConst<flt_t>::set_ntypes(const int nbondtypes,
|
||||
void DihedralOPLSIntel::ForceConst<flt_t>::set_ntypes(const int ndihderaltypes,
|
||||
Memory *memory) {
|
||||
if (nbondtypes != _nbondtypes) {
|
||||
if (_nbondtypes > 0)
|
||||
_memory->destroy(bp);
|
||||
if (memory != nullptr) _memory = memory;
|
||||
if (ndihderaltypes != _ndihderaltypes) {
|
||||
_memory->destroy(fc);
|
||||
|
||||
if (nbondtypes > 0)
|
||||
_memory->create(bp,nbondtypes,"dihedralcharmmintel.bp");
|
||||
if (ndihderaltypes > 0)
|
||||
_memory->create(fc,ndihderaltypes,"dihedralcharmmintel.fc");
|
||||
}
|
||||
_nbondtypes = nbondtypes;
|
||||
_memory = memory;
|
||||
_ndihderaltypes = ndihderaltypes;
|
||||
}
|
||||
|
||||
@ -59,15 +59,15 @@ class DihedralOPLSIntel : public DihedralOPLS {
|
||||
flt_t k1, k2, k3, k4;
|
||||
} fc_packed1;
|
||||
|
||||
fc_packed1 *bp;
|
||||
fc_packed1 *fc;
|
||||
|
||||
ForceConst() : _nbondtypes(0) {}
|
||||
ForceConst() : fc(nullptr), _ndihderaltypes(0) {}
|
||||
~ForceConst() { set_ntypes(0, nullptr); }
|
||||
|
||||
void set_ntypes(const int nbondtypes, Memory *memory);
|
||||
void set_ntypes(const int ndihderaltypes, Memory *memory);
|
||||
|
||||
private:
|
||||
int _nbondtypes;
|
||||
int _ndihderaltypes;
|
||||
Memory *_memory;
|
||||
};
|
||||
ForceConst<float> force_const_single;
|
||||
|
||||
@ -456,7 +456,7 @@ void FixIntel::pair_init_check(const bool cdmessage)
|
||||
#endif
|
||||
|
||||
int need_tag = 0;
|
||||
if (atom->molecular != Atom::ATOMIC) need_tag = 1;
|
||||
if (atom->molecular != Atom::ATOMIC || three_body_neighbor()) need_tag = 1;
|
||||
|
||||
// Clear buffers used for pair style
|
||||
char kmode[80];
|
||||
|
||||
@ -426,10 +426,10 @@ template <class flt_t, class acc_t>
|
||||
void ImproperCvffIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
IntelBuffers<flt_t,acc_t> * /*buffers*/)
|
||||
{
|
||||
const int bp1 = atom->nimpropertypes + 1;
|
||||
fc.set_ntypes(bp1,memory);
|
||||
const int ip1 = atom->nimpropertypes + 1;
|
||||
fc.set_ntypes(ip1,memory);
|
||||
|
||||
for (int i = 1; i < bp1; i++) {
|
||||
for (int i = 1; i < ip1; i++) {
|
||||
fc.fc[i].k = k[i];
|
||||
fc.fc[i].sign = sign[i];
|
||||
fc.fc[i].multiplicity = multiplicity[i];
|
||||
@ -439,15 +439,14 @@ void ImproperCvffIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template <class flt_t>
|
||||
void ImproperCvffIntel::ForceConst<flt_t>::set_ntypes(const int nimproper,
|
||||
void ImproperCvffIntel::ForceConst<flt_t>::set_ntypes(const int nimpropertypes,
|
||||
Memory *memory) {
|
||||
if (nimproper != _nimpropertypes) {
|
||||
if (_nimpropertypes > 0)
|
||||
_memory->destroy(fc);
|
||||
if (memory != nullptr) _memory = memory;
|
||||
if (nimpropertypes != _nimpropertypes) {
|
||||
_memory->destroy(fc);
|
||||
|
||||
if (nimproper > 0)
|
||||
_memory->create(fc,nimproper,"improperharmonicintel.fc");
|
||||
if (nimpropertypes > 0)
|
||||
_memory->create(fc,nimpropertypes,"improperharmonicintel.fc");
|
||||
}
|
||||
_nimpropertypes = nimproper;
|
||||
_memory = memory;
|
||||
_nimpropertypes = nimpropertypes;
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ class ImproperCvffIntel : public ImproperCvff {
|
||||
|
||||
fc_packed1 *fc;
|
||||
|
||||
ForceConst() : _nimpropertypes(0) {}
|
||||
ForceConst() : fc(nullptr), _nimpropertypes(0) {}
|
||||
~ForceConst() { set_ntypes(0, nullptr); }
|
||||
|
||||
void set_ntypes(const int nimpropertypes, Memory *memory);
|
||||
|
||||
@ -379,10 +379,10 @@ template <class flt_t, class acc_t>
|
||||
void ImproperHarmonicIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
IntelBuffers<flt_t,acc_t> * /*buffers*/)
|
||||
{
|
||||
const int bp1 = atom->nimpropertypes + 1;
|
||||
fc.set_ntypes(bp1,memory);
|
||||
const int ip1 = atom->nimpropertypes + 1;
|
||||
fc.set_ntypes(ip1,memory);
|
||||
|
||||
for (int i = 1; i < bp1; i++) {
|
||||
for (int i = 1; i < ip1; i++) {
|
||||
fc.fc[i].k = k[i];
|
||||
fc.fc[i].chi = chi[i];
|
||||
}
|
||||
@ -391,15 +391,14 @@ void ImproperHarmonicIntel::pack_force_const(ForceConst<flt_t> &fc,
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template <class flt_t>
|
||||
void ImproperHarmonicIntel::ForceConst<flt_t>::set_ntypes(const int nimproper,
|
||||
void ImproperHarmonicIntel::ForceConst<flt_t>::set_ntypes(const int nimpropertypes,
|
||||
Memory *memory) {
|
||||
if (nimproper != _nimpropertypes) {
|
||||
if (_nimpropertypes > 0)
|
||||
_memory->destroy(fc);
|
||||
if (memory != nullptr) _memory = memory;
|
||||
if (nimpropertypes != _nimpropertypes) {
|
||||
_memory->destroy(fc);
|
||||
|
||||
if (nimproper > 0)
|
||||
_memory->create(fc,nimproper,"improperharmonicintel.fc");
|
||||
if (nimpropertypes > 0)
|
||||
_memory->create(fc,nimpropertypes,"improperharmonicintel.fc");
|
||||
}
|
||||
_nimpropertypes = nimproper;
|
||||
_memory = memory;
|
||||
_nimpropertypes = nimpropertypes;
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ class ImproperHarmonicIntel : public ImproperHarmonic {
|
||||
|
||||
fc_packed1 *fc;
|
||||
|
||||
ForceConst() : _nimpropertypes(0) {}
|
||||
ForceConst() : fc(nullptr), _nimpropertypes(0) {}
|
||||
~ForceConst() { set_ntypes(0, nullptr); }
|
||||
|
||||
void set_ntypes(const int nimpropertypes, Memory *memory);
|
||||
|
||||
@ -207,8 +207,6 @@ void IntelBuffers<flt_t, acc_t>::free_nmax()
|
||||
template <class flt_t, class acc_t>
|
||||
void IntelBuffers<flt_t, acc_t>::_grow_nmax(const int offload_end)
|
||||
{
|
||||
if (lmp->atom->molecular) _need_tag = 1;
|
||||
else _need_tag = 0;
|
||||
#ifdef _LMP_INTEL_OFFLOAD
|
||||
free_nmax();
|
||||
int size = lmp->atom->nmax;
|
||||
|
||||
@ -55,7 +55,8 @@ NPairSkipIntel::~NPairSkipIntel() {
|
||||
void NPairSkipIntel::copy_neighbor_info()
|
||||
{
|
||||
NPair::copy_neighbor_info();
|
||||
if (_full_props) delete []_full_props;
|
||||
// Only need to set _full_props once; npair object deleted for changes
|
||||
if (_full_props) return;
|
||||
_full_props = new int[neighbor->nrequest];
|
||||
for (int i = 0; i < neighbor->nrequest; i++)
|
||||
_full_props[i] = neighbor->requests[i]->full;
|
||||
|
||||
@ -18,10 +18,15 @@
|
||||
|
||||
#include "pair_lj_long_coul_long_intel.h"
|
||||
|
||||
#include "fix_intel.h"
|
||||
#include "modify.h"
|
||||
#include "neigh_request.h"
|
||||
#include "suffix.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
PairLJLongCoulLongIntel::PairLJLongCoulLongIntel(LAMMPS *lmp) :
|
||||
PairLJLongCoulLong(lmp)
|
||||
{
|
||||
@ -30,7 +35,22 @@ PairLJLongCoulLongIntel::PairLJLongCoulLongIntel(LAMMPS *lmp) :
|
||||
cut_respa = nullptr;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
PairLJLongCoulLongIntel::~PairLJLongCoulLongIntel()
|
||||
{
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void PairLJLongCoulLongIntel::init_style()
|
||||
{
|
||||
PairLJLongCoulLong::init_style();
|
||||
neighbor->find_request(this)->intel = 1;
|
||||
|
||||
int ifix = modify->find_fix("package_intel");
|
||||
if (ifix < 0)
|
||||
error->all(FLERR,"The 'package intel' command is required for /intel styles");
|
||||
auto fix = static_cast<FixIntel *>(modify->fix[ifix]);
|
||||
fix->pair_init_check();
|
||||
}
|
||||
|
||||
@ -33,6 +33,7 @@ class PairLJLongCoulLongIntel : public PairLJLongCoulLong {
|
||||
public:
|
||||
PairLJLongCoulLongIntel(class LAMMPS *);
|
||||
virtual ~PairLJLongCoulLongIntel();
|
||||
void init_style();
|
||||
};
|
||||
} // namespace LAMMPS_NS
|
||||
#endif
|
||||
|
||||
@ -31,7 +31,6 @@
|
||||
#include "neigh_request.h"
|
||||
#include "neighbor.h"
|
||||
#include "potential_file_reader.h"
|
||||
#include "tokenizer.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
@ -59,6 +58,7 @@ PairDRIP::PairDRIP(LAMMPS *lmp) : Pair(lmp)
|
||||
{
|
||||
single_enable = 0;
|
||||
restartinfo = 0;
|
||||
one_coeff = 1;
|
||||
manybody_flag = 1;
|
||||
centroidstressflag = CENTROID_NOTAVAIL;
|
||||
unit_convert_flag = utils::get_supported_conversions(utils::ENERGY);
|
||||
@ -241,17 +241,17 @@ void PairDRIP::read_file(char *filename)
|
||||
|
||||
nparams++;
|
||||
}
|
||||
|
||||
MPI_Bcast(&nparams, 1, MPI_INT, 0, world);
|
||||
MPI_Bcast(&maxparam, 1, MPI_INT, 0, world);
|
||||
|
||||
if (comm->me != 0) {
|
||||
params = (Param *) memory->srealloc(params, maxparam * sizeof(Param), "pair:params");
|
||||
}
|
||||
|
||||
MPI_Bcast(params, maxparam * sizeof(Param), MPI_BYTE, 0, world);
|
||||
}
|
||||
|
||||
MPI_Bcast(&nparams, 1, MPI_INT, 0, world);
|
||||
MPI_Bcast(&maxparam, 1, MPI_INT, 0, world);
|
||||
|
||||
if (comm->me != 0) {
|
||||
params = (Param *) memory->srealloc(params, maxparam * sizeof(Param), "pair:params");
|
||||
}
|
||||
|
||||
MPI_Bcast(params, maxparam * sizeof(Param), MPI_BYTE, 0, world);
|
||||
|
||||
memory->destroy(elem2param);
|
||||
memory->create(elem2param, nelements, nelements, "pair:elem2param");
|
||||
for (int i = 0; i < nelements; i++) {
|
||||
@ -259,7 +259,7 @@ void PairDRIP::read_file(char *filename)
|
||||
int n = -1;
|
||||
for (int m = 0; m < nparams; m++) {
|
||||
if (i == params[m].ielement && j == params[m].jelement) {
|
||||
if (n >= 0) error->all(FLERR, "Potential file has duplicate entry");
|
||||
if (n >= 0) error->all(FLERR, "DRIP potential file has duplicate entry");
|
||||
n = m;
|
||||
}
|
||||
}
|
||||
|
||||
@ -142,8 +142,8 @@ void PairILPGrapheneHBN::allocate()
|
||||
void PairILPGrapheneHBN::settings(int narg, char **arg)
|
||||
{
|
||||
if (narg < 1 || narg > 2) error->all(FLERR, "Illegal pair_style command");
|
||||
if (strcmp(force->pair_style, "hybrid/overlay") != 0)
|
||||
error->all(FLERR, "ERROR: requires hybrid/overlay pair_style");
|
||||
if (!utils::strmatch(force->pair_style, "^hybrid/overlay"))
|
||||
error->all(FLERR, "Pair style ilp/graphene/hbn must be used as sub-style with hybrid/overlay");
|
||||
|
||||
cut_global = utils::numeric(FLERR, arg[0], false, lmp);
|
||||
if (narg == 2) tap_flag = utils::numeric(FLERR, arg[1], false, lmp);
|
||||
@ -273,16 +273,17 @@ void PairILPGrapheneHBN::read_file(char *filename)
|
||||
|
||||
nparams++;
|
||||
}
|
||||
|
||||
MPI_Bcast(&nparams, 1, MPI_INT, 0, world);
|
||||
MPI_Bcast(&maxparam, 1, MPI_INT, 0, world);
|
||||
|
||||
if (comm->me != 0) {
|
||||
params = (Param *) memory->srealloc(params, maxparam * sizeof(Param), "pair:params");
|
||||
}
|
||||
|
||||
MPI_Bcast(params, maxparam * sizeof(Param), MPI_BYTE, 0, world);
|
||||
}
|
||||
|
||||
MPI_Bcast(&nparams, 1, MPI_INT, 0, world);
|
||||
MPI_Bcast(&maxparam, 1, MPI_INT, 0, world);
|
||||
|
||||
if (comm->me != 0) {
|
||||
params = (Param *) memory->srealloc(params, maxparam * sizeof(Param), "pair:params");
|
||||
}
|
||||
|
||||
MPI_Bcast(params, maxparam * sizeof(Param), MPI_BYTE, 0, world);
|
||||
|
||||
memory->destroy(elem2param);
|
||||
memory->destroy(cutILPsq);
|
||||
memory->create(elem2param, nelements, nelements, "pair:elem2param");
|
||||
@ -292,7 +293,7 @@ void PairILPGrapheneHBN::read_file(char *filename)
|
||||
int n = -1;
|
||||
for (int m = 0; m < nparams; m++) {
|
||||
if (i == params[m].ielement && j == params[m].jelement) {
|
||||
if (n >= 0) error->all(FLERR, "ILP Potential file has duplicate entry");
|
||||
if (n >= 0) error->all(FLERR, "ILP potential file has duplicate entry");
|
||||
n = m;
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,7 +34,6 @@
|
||||
#include "neigh_request.h"
|
||||
#include "neighbor.h"
|
||||
#include "potential_file_reader.h"
|
||||
#include "tokenizer.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
@ -142,8 +141,8 @@ void PairKolmogorovCrespiFull::allocate()
|
||||
void PairKolmogorovCrespiFull::settings(int narg, char **arg)
|
||||
{
|
||||
if (narg < 1 || narg > 2) error->all(FLERR, "Illegal pair_style command");
|
||||
if (strcmp(force->pair_style, "hybrid/overlay") != 0)
|
||||
error->all(FLERR, "ERROR: requires hybrid/overlay pair_style");
|
||||
if (!utils::strmatch(force->pair_style, "^hybrid/overlay"))
|
||||
error->all(FLERR, "Pair style kolmogorov/crespi/full must be used as sub-style with hybrid/overlay");
|
||||
|
||||
cut_global = utils::numeric(FLERR, arg[0], false, lmp);
|
||||
if (narg == 2) tap_flag = utils::numeric(FLERR, arg[1], false, lmp);
|
||||
@ -270,17 +269,17 @@ void PairKolmogorovCrespiFull::read_file(char *filename)
|
||||
|
||||
nparams++;
|
||||
}
|
||||
|
||||
MPI_Bcast(&nparams, 1, MPI_INT, 0, world);
|
||||
MPI_Bcast(&maxparam, 1, MPI_INT, 0, world);
|
||||
|
||||
if (comm->me != 0) {
|
||||
params = (Param *) memory->srealloc(params, maxparam * sizeof(Param), "pair:params");
|
||||
}
|
||||
|
||||
MPI_Bcast(params, maxparam * sizeof(Param), MPI_BYTE, 0, world);
|
||||
}
|
||||
|
||||
MPI_Bcast(&nparams, 1, MPI_INT, 0, world);
|
||||
MPI_Bcast(&maxparam, 1, MPI_INT, 0, world);
|
||||
|
||||
if (comm->me != 0) {
|
||||
params = (Param *) memory->srealloc(params, maxparam * sizeof(Param), "pair:params");
|
||||
}
|
||||
|
||||
MPI_Bcast(params, maxparam * sizeof(Param), MPI_BYTE, 0, world);
|
||||
|
||||
memory->destroy(elem2param);
|
||||
memory->destroy(cutKCsq);
|
||||
memory->create(elem2param, nelements, nelements, "pair:elem2param");
|
||||
@ -290,7 +289,7 @@ void PairKolmogorovCrespiFull::read_file(char *filename)
|
||||
int n = -1;
|
||||
for (int m = 0; m < nparams; m++) {
|
||||
if (i == params[m].ielement && j == params[m].jelement) {
|
||||
if (n >= 0) error->all(FLERR, "KC Potential file has duplicate entry");
|
||||
if (n >= 0) error->all(FLERR, "KC potential file has duplicate entry");
|
||||
n = m;
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,14 +68,14 @@ void BondClass2Kokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
//if(k_eatom.extent(0)<maxeatom) { // won't work without adding zero functor
|
||||
memoryKK->destroy_kokkos(k_eatom,eatom);
|
||||
memoryKK->create_kokkos(k_eatom,eatom,maxeatom,"improper:eatom");
|
||||
d_eatom = k_eatom.template view<DeviceType>();
|
||||
d_eatom = k_eatom.template view<KKDeviceType>();
|
||||
//}
|
||||
}
|
||||
if (vflag_atom) {
|
||||
//if(k_vatom.extent(0)<maxvatom) { // won't work without adding zero functor
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"improper:vatom");
|
||||
d_vatom = k_vatom.template view<DeviceType>();
|
||||
d_vatom = k_vatom.template view<KKDeviceType>();
|
||||
//}
|
||||
}
|
||||
|
||||
@ -210,10 +210,10 @@ void BondClass2Kokkos<DeviceType>::coeff(int narg, char **arg)
|
||||
BondClass2::coeff(narg, arg);
|
||||
|
||||
int n = atom->nbondtypes;
|
||||
Kokkos::DualView<F_FLOAT*,DeviceType> k_k2("BondClass2::k2",n+1);
|
||||
Kokkos::DualView<F_FLOAT*,DeviceType> k_k3("BondClass2::k3",n+1);
|
||||
Kokkos::DualView<F_FLOAT*,DeviceType> k_k4("BondClass2::k4",n+1);
|
||||
Kokkos::DualView<F_FLOAT*,DeviceType> k_r0("BondClass2::r0",n+1);
|
||||
typename AT::tdual_ffloat_1d k_k2("BondClass2::k2",n+1);
|
||||
typename AT::tdual_ffloat_1d k_k3("BondClass2::k3",n+1);
|
||||
typename AT::tdual_ffloat_1d k_k4("BondClass2::k4",n+1);
|
||||
typename AT::tdual_ffloat_1d k_r0("BondClass2::r0",n+1);
|
||||
|
||||
d_k2 = k_k2.template view<DeviceType>();
|
||||
d_k3 = k_k3.template view<DeviceType>();
|
||||
@ -247,10 +247,10 @@ void BondClass2Kokkos<DeviceType>::read_restart(FILE *fp)
|
||||
BondClass2::read_restart(fp);
|
||||
|
||||
int n = atom->nbondtypes;
|
||||
Kokkos::DualView<F_FLOAT*,DeviceType> k_k2("BondClass2::k2",n+1);
|
||||
Kokkos::DualView<F_FLOAT*,DeviceType> k_k3("BondClass2::k3",n+1);
|
||||
Kokkos::DualView<F_FLOAT*,DeviceType> k_k4("BondClass2::k4",n+1);
|
||||
Kokkos::DualView<F_FLOAT*,DeviceType> k_r0("BondClass2::r0",n+1);
|
||||
typename AT::tdual_ffloat_1d k_k2("BondClass2::k2",n+1);
|
||||
typename AT::tdual_ffloat_1d k_k3("BondClass2::k3",n+1);
|
||||
typename AT::tdual_ffloat_1d k_k4("BondClass2::k4",n+1);
|
||||
typename AT::tdual_ffloat_1d k_r0("BondClass2::r0",n+1);
|
||||
|
||||
d_k2 = k_k2.template view<DeviceType>();
|
||||
d_k3 = k_k3.template view<DeviceType>();
|
||||
|
||||
@ -67,10 +67,11 @@ class BondClass2Kokkos : public BondClass2 {
|
||||
typename Kokkos::View<double*[3],typename AT::t_f_array::array_layout,typename KKDevice<DeviceType>::value,Kokkos::MemoryTraits<Kokkos::Atomic> > f;
|
||||
typename AT::t_int_2d bondlist;
|
||||
|
||||
Kokkos::DualView<E_FLOAT*,Kokkos::LayoutRight,DeviceType> k_eatom;
|
||||
Kokkos::DualView<F_FLOAT*[6],Kokkos::LayoutRight,DeviceType> k_vatom;
|
||||
Kokkos::View<E_FLOAT*,Kokkos::LayoutRight,typename KKDevice<DeviceType>::value,Kokkos::MemoryTraits<Kokkos::Atomic> > d_eatom;
|
||||
Kokkos::View<F_FLOAT*[6],Kokkos::LayoutRight,typename KKDevice<DeviceType>::value,Kokkos::MemoryTraits<Kokkos::Atomic> > d_vatom;
|
||||
typedef typename KKDevice<DeviceType>::value KKDeviceType;
|
||||
Kokkos::DualView<E_FLOAT*,Kokkos::LayoutRight,KKDeviceType> k_eatom;
|
||||
Kokkos::DualView<F_FLOAT*[6],Kokkos::LayoutRight,KKDeviceType> k_vatom;
|
||||
Kokkos::View<E_FLOAT*,Kokkos::LayoutRight,KKDeviceType,Kokkos::MemoryTraits<Kokkos::Atomic> > d_eatom;
|
||||
Kokkos::View<F_FLOAT*[6],Kokkos::LayoutRight,KKDeviceType,Kokkos::MemoryTraits<Kokkos::Atomic> > d_vatom;
|
||||
|
||||
int nlocal,newton_bond;
|
||||
int eflag,vflag;
|
||||
|
||||
@ -173,8 +173,6 @@ void ComputeOrientOrderAtomKokkos<DeviceType>::compute_peratom()
|
||||
x = atomKK->k_x.view<DeviceType>();
|
||||
mask = atomKK->k_mask.view<DeviceType>();
|
||||
|
||||
Kokkos::deep_copy(d_qnm,{0.0,0.0});
|
||||
|
||||
int vector_length_default = 1;
|
||||
int team_size_default = 1;
|
||||
if (!host_flag)
|
||||
@ -185,6 +183,8 @@ void ComputeOrientOrderAtomKokkos<DeviceType>::compute_peratom()
|
||||
if (chunk_size > inum - chunk_offset)
|
||||
chunk_size = inum - chunk_offset;
|
||||
|
||||
Kokkos::deep_copy(d_qnm,{0.0,0.0});
|
||||
|
||||
//Neigh
|
||||
{
|
||||
int vector_length = vector_length_default;
|
||||
@ -286,7 +286,7 @@ void ComputeOrientOrderAtomKokkos<DeviceType>::operator() (TagComputeOrientOrder
|
||||
const int i = d_ilist[ii + chunk_offset];
|
||||
const int ncount = d_ncount(ii);
|
||||
|
||||
// if not nnn neighbors, order parameter = 0;
|
||||
// if not nnn neighbors, order parameter = 0
|
||||
|
||||
if ((ncount == 0) || (ncount < nnn)) {
|
||||
for (int jj = 0; jj < ncol; jj++)
|
||||
@ -316,7 +316,7 @@ void ComputeOrientOrderAtomKokkos<DeviceType>::operator() (TagComputeOrientOrder
|
||||
const int ncount = d_ncount(ii);
|
||||
if (jj >= ncount) return;
|
||||
|
||||
// if not nnn neighbors, order parameter = 0;
|
||||
// if not nnn neighbors, order parameter = 0
|
||||
|
||||
if ((ncount == 0) || (ncount < nnn))
|
||||
return;
|
||||
@ -328,6 +328,12 @@ template<class DeviceType>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void ComputeOrientOrderAtomKokkos<DeviceType>::operator() (TagComputeOrientOrderAtomBOOP2,const int& ii) const {
|
||||
const int ncount = d_ncount(ii);
|
||||
|
||||
// if not nnn neighbors, order parameter = 0
|
||||
|
||||
if ((ncount == 0) || (ncount < nnn))
|
||||
return;
|
||||
|
||||
calc_boop2(ncount, ii);
|
||||
}
|
||||
|
||||
|
||||
@ -88,6 +88,11 @@ void FixNHKokkos<DeviceType>::init()
|
||||
template<class DeviceType>
|
||||
void FixNHKokkos<DeviceType>::setup(int /*vflag*/)
|
||||
{
|
||||
// tdof needed by compute_temp_target()
|
||||
|
||||
t_current = temperature->compute_scalar();
|
||||
tdof = temperature->dof;
|
||||
|
||||
// t_target is needed by NPH and NPT in compute_scalar()
|
||||
// If no thermostat or using fix nphug,
|
||||
// t_target must be defined by other means.
|
||||
@ -737,4 +742,3 @@ template class FixNHKokkos<LMPDeviceType>;
|
||||
template class FixNHKokkos<LMPHostType>;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -38,7 +38,20 @@ ModifyKokkos::ModifyKokkos(LAMMPS *lmp) : Modify(lmp)
|
||||
void ModifyKokkos::setup(int vflag)
|
||||
{
|
||||
// compute setup needs to come before fix setup
|
||||
// b/c NH fixes need use DOF of temperature computes
|
||||
// b/c NH fixes need DOF of temperature computes
|
||||
// fix group setup() is special case since populates a dynamic group
|
||||
// needs to be done before temperature compute setup
|
||||
|
||||
for (int i = 0; i < nfix; i++) {
|
||||
if (strcmp(fix[i]->style,"GROUP") == 0) {
|
||||
atomKK->sync(fix[i]->execution_space,fix[i]->datamask_read);
|
||||
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||
if (!fix[i]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||
fix[i]->setup(vflag);
|
||||
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||
atomKK->modified(fix[i]->execution_space,fix[i]->datamask_modify);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < ncompute; i++) compute[i]->setup();
|
||||
|
||||
@ -124,6 +137,37 @@ void ModifyKokkos::setup_pre_neighbor()
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
setup post_neighbor call, only for fixes that define post_neighbor
|
||||
called from Verlet, RESPA
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ModifyKokkos::setup_post_neighbor()
|
||||
{
|
||||
if (update->whichflag == 1)
|
||||
for (int i = 0; i < n_post_neighbor; i++) {
|
||||
atomKK->sync(fix[list_post_neighbor[i]]->execution_space,
|
||||
fix[list_post_neighbor[i]]->datamask_read);
|
||||
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||
if (!fix[list_post_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||
fix[list_post_neighbor[i]]->setup_post_neighbor();
|
||||
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||
atomKK->modified(fix[list_post_neighbor[i]]->execution_space,
|
||||
fix[list_post_neighbor[i]]->datamask_modify);
|
||||
}
|
||||
else if (update->whichflag == 2)
|
||||
for (int i = 0; i < n_min_post_neighbor; i++) {
|
||||
atomKK->sync(fix[list_min_post_neighbor[i]]->execution_space,
|
||||
fix[list_min_post_neighbor[i]]->datamask_read);
|
||||
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||
if (!fix[list_min_post_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||
fix[list_min_post_neighbor[i]]->setup_post_neighbor();
|
||||
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||
atomKK->modified(fix[list_min_post_neighbor[i]]->execution_space,
|
||||
fix[list_min_post_neighbor[i]]->datamask_modify);
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
setup pre_force call, only for fixes that define pre_force
|
||||
called from Verlet, RESPA, Min
|
||||
@ -258,6 +302,24 @@ void ModifyKokkos::pre_neighbor()
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
post_neighbor call, only for relevant fixes
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ModifyKokkos::post_neighbor()
|
||||
{
|
||||
for (int i = 0; i < n_post_neighbor; i++) {
|
||||
atomKK->sync(fix[list_post_neighbor[i]]->execution_space,
|
||||
fix[list_post_neighbor[i]]->datamask_read);
|
||||
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||
if (!fix[list_post_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||
fix[list_post_neighbor[i]]->post_neighbor();
|
||||
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||
atomKK->modified(fix[list_post_neighbor[i]]->execution_space,
|
||||
fix[list_post_neighbor[i]]->datamask_modify);
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
pre_force call, only for relevant fixes
|
||||
------------------------------------------------------------------------- */
|
||||
@ -420,6 +482,12 @@ void ModifyKokkos::post_run()
|
||||
atomKK->modified(fix[i]->execution_space,
|
||||
fix[i]->datamask_modify);
|
||||
}
|
||||
|
||||
// must reset this to its default value, since computes may be added
|
||||
// or removed between runs and with this change we will redirect any
|
||||
// calls to addstep_compute() to addstep_compute_all() instead.
|
||||
n_timeflag = -1;
|
||||
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
@ -567,6 +635,24 @@ void ModifyKokkos::min_pre_neighbor()
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
minimizer post-neighbor call, only for relevant fixes
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ModifyKokkos::min_post_neighbor()
|
||||
{
|
||||
for (int i = 0; i < n_min_post_neighbor; i++) {
|
||||
atomKK->sync(fix[list_min_post_neighbor[i]]->execution_space,
|
||||
fix[list_min_post_neighbor[i]]->datamask_read);
|
||||
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||
if (!fix[list_min_post_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||
fix[list_min_post_neighbor[i]]->min_post_neighbor();
|
||||
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||
atomKK->modified(fix[list_min_post_neighbor[i]]->execution_space,
|
||||
fix[list_min_post_neighbor[i]]->datamask_modify);
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
minimizer pre-force call, only for relevant fixes
|
||||
------------------------------------------------------------------------- */
|
||||
@ -646,7 +732,7 @@ double ModifyKokkos::min_energy(double *fextra)
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
store current state of extra dof, only for relevant fixes
|
||||
store current state of extra minimizer dof, only for relevant fixes
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ModifyKokkos::min_store()
|
||||
@ -664,7 +750,7 @@ void ModifyKokkos::min_store()
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
mange state of extra dof on a stack, only for relevant fixes
|
||||
manage state of extra minimizer dof on a stack, only for relevant fixes
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ModifyKokkos::min_clearstore()
|
||||
@ -710,7 +796,7 @@ void ModifyKokkos::min_popstore()
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
displace extra dof along vector hextra, only for relevant fixes
|
||||
displace extra minimizer dof along vector hextra, only for relevant fixes
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ModifyKokkos::min_step(double alpha, double *hextra)
|
||||
@ -755,7 +841,7 @@ double ModifyKokkos::max_alpha(double *hextra)
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
extract extra dof for minimization, only for relevant fixes
|
||||
extract extra minimizer dof, only for relevant fixes
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
int ModifyKokkos::min_dof()
|
||||
@ -775,7 +861,7 @@ int ModifyKokkos::min_dof()
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
reset reference state of fix, only for relevant fixes
|
||||
reset minimizer reference state of fix, only for relevant fixes
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
int ModifyKokkos::min_reset_ref()
|
||||
@ -788,8 +874,8 @@ int ModifyKokkos::min_reset_ref()
|
||||
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||
itmp = fix[list_min_energy[i]]->min_reset_ref();
|
||||
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||
if (itmp) itmpall = 1;
|
||||
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
||||
fix[list_min_energy[i]]->datamask_modify);
|
||||
}
|
||||
|
||||
@ -26,6 +26,7 @@ class ModifyKokkos : public Modify {
|
||||
void setup(int);
|
||||
void setup_pre_exchange();
|
||||
void setup_pre_neighbor();
|
||||
void setup_post_neighbor();
|
||||
void setup_pre_force(int);
|
||||
void setup_pre_reverse(int, int);
|
||||
void initial_integrate(int);
|
||||
@ -33,6 +34,7 @@ class ModifyKokkos : public Modify {
|
||||
void pre_decide();
|
||||
void pre_exchange();
|
||||
void pre_neighbor();
|
||||
void post_neighbor();
|
||||
void pre_force(int);
|
||||
void pre_reverse(int,int);
|
||||
void post_force(int);
|
||||
@ -52,6 +54,7 @@ class ModifyKokkos : public Modify {
|
||||
|
||||
void min_pre_exchange();
|
||||
void min_pre_neighbor();
|
||||
void min_post_neighbor();
|
||||
void min_pre_force(int);
|
||||
void min_pre_reverse(int,int);
|
||||
void min_post_force(int);
|
||||
|
||||
@ -142,7 +142,7 @@ void NBinSSAKokkos<DeviceType>::bin_atoms()
|
||||
k_gbincount.sync<DeviceType>();
|
||||
ghosts_per_gbin = 0;
|
||||
NPairSSAKokkosBinIDGhostsFunctor<DeviceType> f(*this);
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<LMPDeviceType>(nlocal,nall), f, ghosts_per_gbin);
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType>(nlocal,nall), f, ghosts_per_gbin);
|
||||
}
|
||||
|
||||
// actually bin the ghost atoms
|
||||
|
||||
@ -29,6 +29,8 @@ namespace LAMMPS_NS {
|
||||
template<class DeviceType, int HALF_NEIGH, int GHOST, int TRI, int SIZE>
|
||||
NPairKokkos<DeviceType,HALF_NEIGH,GHOST,TRI,SIZE>::NPairKokkos(LAMMPS *lmp) : NPair(lmp) {
|
||||
|
||||
last_stencil_old = -1;
|
||||
|
||||
// use 1D view for scalars to reduce GPU memory operations
|
||||
|
||||
d_scalars = typename AT::t_int_1d("neighbor:scalars",2);
|
||||
@ -112,9 +114,11 @@ void NPairKokkos<DeviceType,HALF_NEIGH,GHOST,TRI,SIZE>::copy_stencil_info()
|
||||
NPair::copy_stencil_info();
|
||||
nstencil = ns->nstencil;
|
||||
|
||||
if (ns->last_stencil == update->ntimestep) {
|
||||
if (ns->last_stencil != last_stencil_old) {
|
||||
// copy stencil to device as it may have changed
|
||||
|
||||
last_stencil_old = ns->last_stencil;
|
||||
|
||||
int maxstencil = ns->get_maxstencil();
|
||||
|
||||
if (maxstencil > (int)k_stencil.extent(0))
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user