Merge branch 'master' into feature-cnt

This commit is contained in:
Axel Kohlmeyer
2020-06-12 05:53:17 -04:00
572 changed files with 83637 additions and 10156 deletions

3
.github/CODEOWNERS vendored
View File

@ -117,6 +117,9 @@ tools/msi2lmp/* @akohlmey
tools/emacs/* @HaoZeke tools/emacs/* @HaoZeke
tools/singularity/* @akohlmey @rbberger tools/singularity/* @akohlmey @rbberger
# tests
unittest/* @akohlmey @rbberger
# cmake # cmake
cmake/* @junghans @rbberger cmake/* @junghans @rbberger
cmake/Modules/Packages/USER-COLVARS.cmake @junghans @rbberger @giacomofiorin cmake/Modules/Packages/USER-COLVARS.cmake @junghans @rbberger @giacomofiorin

View File

@ -3,6 +3,11 @@
# This file is part of LAMMPS # This file is part of LAMMPS
# Created by Christoph Junghans and Richard Berger # Created by Christoph Junghans and Richard Berger
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
# set policy to silence warnings about ignoring <PackageName>_ROOT but use it
if(POLICY CMP0074)
cmake_policy(SET CMP0074 NEW)
endif()
########################################
project(lammps CXX) project(lammps CXX)
set(SOVERSION 0) set(SOVERSION 0)
@ -27,6 +32,12 @@ endif()
# Cmake modules/macros are in a subdirectory to keep this file cleaner # Cmake modules/macros are in a subdirectory to keep this file cleaner
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules)
# make sure LIBRARY_PATH is set if environment variable is set
if (DEFINED ENV{LIBRARY_PATH})
list(APPEND CMAKE_LIBRARY_PATH "$ENV{LIBRARY_PATH}")
message(STATUS "Appending $ENV{LIBRARY_PATH} to CMAKE_LIBRARY_PATH: ${CMAKE_LIBRARY_PATH}")
endif()
include(LAMMPSUtils) include(LAMMPSUtils)
get_lammps_version(${LAMMPS_SOURCE_DIR}/version.h PROJECT_VERSION) get_lammps_version(${LAMMPS_SOURCE_DIR}/version.h PROJECT_VERSION)
@ -60,11 +71,11 @@ if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
endif() endif()
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
set(CMAKE_TUNE_DEFAULT "-ffast-math -march=native") set(CMAKE_TUNE_DEFAULT "-march=native")
endif() endif()
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
set(CMAKE_TUNE_DEFAULT "-ffast-math -march=native") set(CMAKE_TUNE_DEFAULT "-march=native")
endif() endif()
# we require C++11 without extensions # we require C++11 without extensions
@ -547,8 +558,6 @@ if(BUILD_SHARED_LIBS)
configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc @ONLY) configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS)
file(GLOB MODULE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Modules/Find*.cmake)
install(FILES ${MODULE_FILES} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS)
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
configure_file(LAMMPSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake @ONLY) configure_file(LAMMPSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake @ONLY)
write_basic_package_version_file("LAMMPSConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY ExactVersion) write_basic_package_version_file("LAMMPSConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY ExactVersion)

View File

@ -1,11 +1,5 @@
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
include(CMakeFindDependencyMacro) include(CMakeFindDependencyMacro)
if(@BUILD_MPI@) if(@BUILD_MPI@)
find_dependency(MPI REQUIRED CXX) find_dependency(MPI REQUIRED CXX)
endif() endif()
if(@PKG_KSPACE@)
if(@FFT@ STREQUAL "FFTW3")
find_dependency(@FFTW@ REQUIRED MODULE)
endif()
endif()
include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake") include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake")

View File

@ -15,14 +15,35 @@ if(ENABLE_COVERAGE)
gen_coverage_xml gen_coverage_xml
COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Generating XML Coverage Report..." COMMENT "Generating XML coverage report..."
) )
set(COVERAGE_HTML_DIR ${CMAKE_BINARY_DIR}/coverage_html)
add_custom_target(coverage_html_folder
COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_HTML_DIR})
add_custom_target( add_custom_target(
gen_coverage_html gen_coverage_html
COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.html COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o ${COVERAGE_HTML_DIR}/index.html
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Generating HTML Coverage Report..." COMMENT "Generating HTML coverage report..."
) )
add_dependencies(gen_coverage_html coverage_html_folder)
add_custom_target(clean_coverage_html
${CMAKE_COMMAND} -E remove_directory ${COVERAGE_HTML_DIR}
COMMENT "Deleting HTML coverage report..."
)
add_custom_target(reset_coverage
${CMAKE_COMMAND} -E remove -f */*.gcda */*/*.gcda */*/*/*.gcda
*/*/*/*/*.gcda */*/*/*/*/*.gcda */*/*/*/*/*/*.gcda
*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*.gcda
*/*/*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*/*/*.gcda
WORKIND_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Deleting coverage data files..."
)
add_dependencies(reset_coverage clean_coverage_html)
endif() endif()
endif() endif()

View File

@ -6,7 +6,6 @@
# TBB_MALLOC_FOUND - True if tbb found. # TBB_MALLOC_FOUND - True if tbb found.
# #
######################################################## ########################################################
# TBB Malloc # TBB Malloc

View File

@ -0,0 +1,30 @@
# - Find libyaml
# Find the native Yaml headers and libraries.
#
# YAML_INCLUDE_DIRS - where to find yaml.h
# YAML_LIBRARIES - List of libraries when using libyaml
# YAML_FOUND - True if libyaml is found.
#
find_path(YAML_INCLUDE_DIR yaml.h PATH_SUFFIXES yaml)
find_library(YAML_LIBRARY NAMES yaml)
# handle the QUIET and REQUIRED arguments and
# set YAML_FOUND to TRUE if all variables are non-zero
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(YAML DEFAULT_MSG YAML_LIBRARY YAML_INCLUDE_DIR)
# Copy the results to the output variables and target.
if(YAML_FOUND)
set(YAML_LIBRARIES ${YAML_LIBRARY})
set(YAML_INCLUDE_DIRS ${YAML_INCLUDE_DIR})
if(NOT TARGET Yaml::Yaml)
add_library(Yaml::Yaml UNKNOWN IMPORTED)
set_target_properties(Yaml::Yaml PROPERTIES
IMPORTED_LOCATION "${YAML_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${YAML_INCLUDE_DIR}")
endif()
endif()
mark_as_advanced(YAML_INCLUDE_DIR YAML_LIBRARY)

77
cmake/Modules/GTest.cmake Normal file
View File

@ -0,0 +1,77 @@
message(STATUS "Downloading and building Google Test library")
if(CMAKE_BUILD_TYPE STREQUAL Debug)
set(GTEST_LIB_POSTFIX d)
else()
set(GTEST_LIB_POSTFIX)
endif()
include(ExternalProject)
ExternalProject_Add(googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG release-1.10.0
SOURCE_DIR "${CMAKE_BINARY_DIR}/gtest-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/gtest-build"
CMAKE_ARGS ${CMAKE_REQUEST_PIC} ${CMAKE_EXTRA_GTEST_OPTS}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
BUILD_BYPRODUCTS <BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest${GTEST_LIB_POSTFIX}.a
<BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock${GTEST_LIB_POSTFIX}.a
<BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main${GTEST_LIB_POSTFIX}.a
<BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock_main${GTEST_LIB_POSTFIX}.a
LOG_DOWNLOAD ON
LOG_CONFIGURE ON
LOG_BUILD ON
INSTALL_COMMAND ""
TEST_COMMAND "")
ExternalProject_Get_Property(googletest SOURCE_DIR)
set(GTEST_INCLUDE_DIR ${SOURCE_DIR}/googletest/include)
set(GMOCK_INCLUDE_DIR ${SOURCE_DIR}/googlemock/include)
# workaround for CMake 3.10 on ubuntu 18.04
file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR})
file(MAKE_DIRECTORY ${GMOCK_INCLUDE_DIR})
ExternalProject_Get_Property(googletest BINARY_DIR)
set(GTEST_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest${GTEST_LIB_POSTFIX}.a)
set(GMOCK_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock${GTEST_LIB_POSTFIX}.a)
set(GTEST_MAIN_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main${GTEST_LIB_POSTFIX}.a)
set(GMOCK_MAIN_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock_main${GTEST_LIB_POSTFIX}.a)
# Prevent GoogleTest from overriding our compiler/linker options
# when building with Visual Studio
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
find_package(Threads QUIET)
add_library(GTest::GTest UNKNOWN IMPORTED)
set_target_properties(GTest::GTest PROPERTIES
IMPORTED_LOCATION ${GTEST_LIBRARY_PATH}
INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR}
IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
add_dependencies(GTest::GTest googletest)
add_library(GTest::GMock UNKNOWN IMPORTED)
set_target_properties(GTest::GMock PROPERTIES
IMPORTED_LOCATION ${GMOCK_LIBRARY_PATH}
INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR}
IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
add_dependencies(GTest::GMock googletest)
add_library(GTest::GTestMain UNKNOWN IMPORTED)
set_target_properties(GTest::GTestMain PROPERTIES
IMPORTED_LOCATION ${GTEST_MAIN_LIBRARY_PATH}
INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR}
IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
add_dependencies(GTest::GTestMain googletest)
add_library(GTest::GMockMain UNKNOWN IMPORTED)
set_target_properties(GTest::GMockMain PROPERTIES
IMPORTED_LOCATION ${GMOCK_MAIN_LIBRARY_PATH}
INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR}
IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
add_dependencies(GTest::GMockMain googletest)

View File

@ -40,6 +40,17 @@ if(GPU_API STREQUAL "CUDA")
set(GPU_ARCH "sm_50" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)") set(GPU_ARCH "sm_50" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)")
# ensure that no *cubin.h files exist from a compile in the lib/gpu folder
file(GLOB GPU_LIB_OLD_CUBIN_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/*_cubin.h)
if (GPU_LIB_OLD_CUBIN_HEADERS)
message(FATAL_ERROR "########################################################################\n"
"Found file(s) generated by the make-based build system in lib/gpu\n"
"Please run\n"
" make -C ${LAMMPS_LIB_SOURCE_DIR}/gpu -f Makefile.serial clean\n"
"to remove\n"
"########################################################################")
endif()
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu)
list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu)
@ -79,7 +90,7 @@ if(GPU_API STREQUAL "CUDA")
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ") string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ")
endif() endif()
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS ${CUDA_REQUEST_PIC}
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC} cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC}

View File

@ -2,7 +2,7 @@ option(FFT_SINGLE "Use single precision FFTs instead of double precision FFTs" O
set(FFTW "FFTW3") set(FFTW "FFTW3")
if(FFT_SINGLE) if(FFT_SINGLE)
set(FFTW "FFTW3F") set(FFTW "FFTW3F")
target_compile_definitions(lammps PUBLIC -DFFT_SINGLE) target_compile_definitions(lammps PRIVATE -DFFT_SINGLE)
endif() endif()
find_package(${FFTW} QUIET) find_package(${FFTW} QUIET)
if(${FFTW}_FOUND) if(${FFTW}_FOUND)
@ -17,8 +17,8 @@ string(TOUPPER ${FFT} FFT)
if(FFT STREQUAL "FFTW3") if(FFT STREQUAL "FFTW3")
find_package(${FFTW} REQUIRED) find_package(${FFTW} REQUIRED)
target_compile_definitions(lammps PUBLIC -DFFT_FFTW3) target_compile_definitions(lammps PRIVATE -DFFT_FFTW3)
target_link_libraries(lammps PUBLIC ${FFTW}::${FFTW}) target_link_libraries(lammps PRIVATE ${FFTW}::${FFTW})
if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY)
option(FFT_FFTW_THREADS "Use threaded FFTW library" ON) option(FFT_FFTW_THREADS "Use threaded FFTW library" ON)
else() else()

View File

@ -1,8 +1,5 @@
enable_language(C) enable_language(C)
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12)
cmake_policy(SET CMP0074 NEW)
endif()
find_package(HDF5 REQUIRED) find_package(HDF5 REQUIRED)
target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES}) target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES})
target_include_directories(h5md PUBLIC ${HDF5_INCLUDE_DIRS}) target_include_directories(h5md PUBLIC ${HDF5_INCLUDE_DIRS})

View File

@ -1,8 +1,7 @@
# USER-NETCDF can use NetCDF, Parallel NetCDF (PNetCDF), or both. At least one necessary. # USER-NETCDF can use NetCDF, Parallel NetCDF (PNetCDF), or both. At least one necessary.
# NetCDF library enables dump style "netcdf", while PNetCDF enables dump style "netcdf/mpiio" # NetCDF library enables dump style "netcdf", while PNetCDF enables dump style "netcdf/mpiio"
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12)
cmake_policy(SET CMP0074 NEW) # may use NetCDF or PNetCDF with MPI, but must have NetCDF without
endif()
if(NOT BUILD_MPI) if(NOT BUILD_MPI)
find_package(NetCDF REQUIRED) find_package(NetCDF REQUIRED)
else() else()

View File

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

View File

@ -1,4 +1,4 @@
.TH LAMMPS "5 May 2020" "2020-05-5" .TH LAMMPS "2 June 2020" "2020-06-02"
.SH NAME .SH NAME
.B LAMMPS .B LAMMPS
\- Molecular Dynamics Simulator. \- Molecular Dynamics Simulator.

View File

@ -107,7 +107,7 @@ re-compile and relink the LAMMPS executable with ``cmake --build .`` (or
``cmake .`` and then compile again. The included dependency tracking ``cmake .`` and then compile again. The included dependency tracking
should make certain that only the necessary subset of files are should make certain that only the necessary subset of files are
re-compiled. You can also delete compiled objects, libraries and re-compiled. You can also delete compiled objects, libraries and
executables with ``cmake --build . clean`` (or ``make clean``). executables with ``cmake --build . --target clean`` (or ``make clean``).
After compilation, you may optionally install the LAMMPS executable into After compilation, you may optionally install the LAMMPS executable into
your system with: your system with:

View File

@ -57,53 +57,252 @@ variable during configuration. Examples:
.. _testing: .. _testing:
Code Coverage and Testing Code Coverage and Unit Testing
--------------------------------------- ------------------------------
We do extensive regression testing of the LAMMPS code base on a continuous The LAMMPS code is subject to multiple levels of automated testing
basis. Some of the logic to do this has been added to the CMake build so during development: integration testing (i.e. whether the code compiles
developers can run the tests directly on their workstation. on various platforms and with a variety of settings), unit testing
(i.e. whether certain individual parts of the code produce the expected
results for given inputs), run testing (whether selected complete input
decks run without crashing for multiple configurations), and regression
testing (i.e. whether selected input examples reproduce the same
results over a given number of steps and operations within a given
error margin). The status of this automated testing can be viewed on
`https://ci.lammps.org <https://ci.lammps.org>`_.
The unit testing facility is integrated into the CMake build process
of the LAMMPS source code distribution itself. It can be enabled by
setting ``-D ENABLE_TESTING=on`` during the CMake configuration step.
It requires the `YAML <http://pyyaml.org/>`_ library and development
headers to compile and will download and compile a recent version of the
`Googletest <https://github.com/google/googletest/>`_ C++ test framework
for implementing the tests.
After compilation is complete, the unit testing is started in the build
folder using the ``ctest`` command, which is part of the CMake software.
The output of this command will be looking something like this::
[...]$ ctest
Test project /home/akohlmey/compile/lammps/build-testing
Start 1: MolPairStyle:hybrid-overlay
1/26 Test #1: MolPairStyle:hybrid-overlay ......... Passed 0.02 sec
Start 2: MolPairStyle:hybrid
2/26 Test #2: MolPairStyle:hybrid ................. Passed 0.01 sec
Start 3: MolPairStyle:lj_class2
[...]
Start 25: AngleStyle:harmonic
25/26 Test #25: AngleStyle:harmonic ................. Passed 0.01 sec
Start 26: AngleStyle:zero
26/26 Test #26: AngleStyle:zero ..................... Passed 0.01 sec
100% tests passed, 0 tests failed out of 26
Total Test time (real) = 0.27 sec
The ``ctest`` command has many options, the most important ones are:
.. list-table::
* - Option
- Function
* - -V
- verbose output: display output of individual test runs
* - -j <num>
- parallel run: run <num> tests in parallel
* - -R <regex>
- run subset of tests matching the regular expression <regex>
* - -E <regex>
- exclude subset of tests matching the regular expression <regex>
* - -N
- dry-run: display list of tests without running them
In its full implementation, the unit test framework will consist of multiple
kinds of tests implemented in different programming languages (C++, C, Python,
Fortran) and testing different aspects of the LAMMPS software and its features.
At the moment only tests for "force styles" are implemented. More on those
in the next section.
.. note:: .. note::
this is incomplete and only represents a small subset of tests that we run This unit test framework is new and still under development.
The coverage is only minimal and will be expanded over time.
Tests styles of the same kind of style (e.g. pair styles or
bond styles) are performed with the same executable using
different input files in YAML format. So to add a test for
another pair style can be done by copying the YAML file and
editing the style settings and then running the individual test
program with a flag to update the computed reference data.
Detailed documentation about how to add new test program and
the contents of the YAML files for existing test programs
will be provided in time as well.
Unit tests for force styles
^^^^^^^^^^^^^^^^^^^^^^^^^^^
A large part of LAMMPS are different "styles" for computing non-bonded
and bonded interactions selected through the :doc:`pair_style`,
:doc:`bond_style`, :doc:`angle_style`, :doc:`dihedral_style`,
:doc:`improper_style`, and :doc:`kspace_style`. Since these all share
common interfaces, it is possible to write generic test programs that
will call those common interfaces for small test systems with less than
100 atoms and compare the results with pre-recorded reference results.
A test run is then a a collection multiple individual test runs each
with many comparisons to reference results based on template input
files, individual command settings, relative error margins, and
reference data stored in a YAML format file with ``.yaml``
suffix. Currently the programs ``pair_style``, ``bond_style``, and
``angle_style`` are implemented. They will compare forces, energies and
(global) stress for all atoms after a ``run 0`` calculation and after a
few steps of MD with :doc:`fix nve <fix_nve>`, each in multiple variants
with different settings and also for multiple accelerated styles. If a
prerequisite style or package is missing, the individual tests are
skipped. All tests will be executed on a single MPI process, so using
the CMake option ``-D BUILD_MPI=off`` can significantly speed up testing,
since this will skip the MPI initialization for each test run.
Below is an example command and output:
.. parsed-literal::
[tests]$ pair_style mol-pair-lj_cut.yaml
[==========] Running 6 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 6 tests from PairStyle
[ RUN ] PairStyle.plain
[ OK ] PairStyle.plain (24 ms)
[ RUN ] PairStyle.omp
[ OK ] PairStyle.omp (18 ms)
[ RUN ] PairStyle.intel
[ OK ] PairStyle.intel (6 ms)
[ RUN ] PairStyle.opt
[ SKIPPED ] PairStyle.opt (0 ms)
[ RUN ] PairStyle.single
[ OK ] PairStyle.single (7 ms)
[ RUN ] PairStyle.extract
[ OK ] PairStyle.extract (6 ms)
[----------] 6 tests from PairStyle (62 ms total)
[----------] Global test environment tear-down
[==========] 6 tests from 1 test suite ran. (63 ms total)
[ PASSED ] 5 tests.
[ SKIPPED ] 1 test, listed below:
[ SKIPPED ] PairStyle.opt
In this particular case, 5 out of 6 sets of tests were conducted, the
tests for the ``lj/cut/opt`` pair style was skipped, since the tests
executable did not include it. To learn what individual tests are performed,
you (currently) need to read the source code. You can use code coverage
recording (see next section) to confirm how well the tests cover the individual
source files.
The force style test programs have a common set of options:
.. list-table::
* - Option
- Function
* - -g <newfile>
- regenerate reference data in new YAML file
* - -u
- update reference data in the original YAML file
* - -s
- print error statistics for each group of comparisons
* - -v
- verbose output: also print the executed LAMMPS commands
To add a test for a style that is not yet covered, it is usually best
to copy a YAML file for a similar style to a new file, edit the details
of the style (how to call it, how to set its coefficients) and then
run test command with either the *-g* and the replace the initial
test file with the regenerated one or the *-u* option. The *-u* option
will destroy the original file, if the generation run does not complete,
so using *-g* is recommended unless the YAML file is fully tested
and working.
.. admonition:: Recommendations and notes for YAML files
:class: note
- The reference results should be recorded without any code
optimization or related compiler flags enabled.
- The ``epsilon`` parameter defines the relative precision with which
the reference results must be met. The test geometries often have
high and low energy parts and thus a significant impact from
floating-point math truncation errors is to be expected. Some
functional forms and potentials are more noisy than others, so this
parameter needs to be adjusted. Typically a value around 1.0e-13
can be used, but it may need to be as large as 1.0e-8 in some
cases.
- The tests for pair styles from OPT, USER-OMP and USER-INTEL are
performed with automatically rescaled epsilon to account for
additional loss of precision from code optimizations and different
summation orders.
- When compiling with aggressive compiler optimization, some tests
are likely to fail. It is recommended to inspect the individual
tests in detail to decide whether the specific error for a specific
property is acceptable (it often is), or this may be an indication
of mis-compiled code (or undesired large of precision due to
reordering of operations).
Collect and visualize code coverage metrics
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can also collect code coverage metrics while running LAMMPS or the
tests by enabling code coverage support during the CMake configuration:
.. code-block:: bash .. code-block:: bash
-D ENABLE_TESTING=value # enable simple run tests of LAMMPS, value = no (default) or yes -D ENABLE_COVERAGE=on # enable coverage measurements (off by default)
-D LAMMPS_TESTING_SOURCE_DIR=path # path to lammps-testing repository (option if in custom location)
-D LAMMPS_TESTING_GIT_TAG=value # version of lammps-testing repository that should be used, value = master (default) or custom git commit or tag
If you enable testing in the CMake build it will create an additional This will instrument all object files to write information about which
target called "test". You can run them with: lines of code were accessed during execution in files next to the
corresponding object files. These can be post-processed to visually
show the degree of coverage and which code paths are accessed and which
are not taken. When working on unit tests (see above), this can be
extremely helpful to determine which parts of the code are not executed
and thus what kind of tests are still missing. The coverage data is
cumulative, i.e. new data is added with each new run.
Enabling code coverage will also add the following build targets to
generate coverage reports after running the LAMMPS executable or the
unit tests:
.. code-block:: bash .. code-block:: bash
cmake --build . test
The test cases used come from the lammps-testing repository. They are
derivatives of the examples folder with some modifications to make the
run faster.
You can also collect code coverage metrics while running the tests by
enabling coverage support during building.
.. code-block:: bash
-D ENABLE_COVERAGE=value # enable coverage measurements, value = no (default) or yes
This will also add the following targets to generate coverage reports
after running the LAMMPS executable:
.. code-block:: bash
make test # run tests first!
make gen_coverage_html # generate coverage report in HTML format make gen_coverage_html # generate coverage report in HTML format
make gen_coverage_xml # generate coverage report in XML format make gen_coverage_xml # generate coverage report in XML format
make clean_coverage_html # delete folder with HTML format coverage report
make reset_coverage # delete all collected coverage data and HTML output
These reports require GCOVR to be installed. The easiest way to do this These reports require `GCOVR <https://gcovr.com/>`_ to be installed. The easiest way
to install it via pip: to do this to install it via pip:
.. code-block:: bash .. code-block:: bash
pip install git+https://github.com/gcovr/gcovr.git pip install git+https://github.com/gcovr/gcovr.git
After post-processing with ``gen_coverage_html`` the results are in
a folder ``coverage_html`` and can be viewed with a web browser.
The images below illustrate how the data is presented.
.. list-table::
* - .. figure:: JPG/coverage-overview-top.png
:target: JPG/coverage-overview-top.png
Top of the overview page
- .. figure:: JPG/coverage-overview-manybody.png
:target: JPG/coverage-overview-manybody.png
Styles with good coverage
- .. figure:: JPG/coverage-file-top.png
:target: JPG/coverage-file-top.png
Top of individual source page
- .. figure:: JPG/coverage-file-branches.png
:target: JPG/coverage-file-branches.png
Source page with branches

View File

@ -132,6 +132,10 @@ Thus the GPU_ARCH setting is merely an optimization, to have code for
the preferred GPU architecture directly included rather than having to wait the preferred GPU architecture directly included rather than having to wait
for the JIT compiler of the CUDA driver to translate it. for the JIT compiler of the CUDA driver to translate it.
When building with CMake, you **must NOT** build the GPU library in ``lib/gpu``
using the traditional build procedure. CMake will detect files generated by that
process and will terminate with an error and a suggestion for how to remove them.
If you are compiling with HIP, note that before running CMake you will have to If you are compiling with HIP, note that before running CMake you will have to
set appropriate environment variables. Some variables such as set appropriate environment variables. Some variables such as
:code:`HCC_AMDGPU_TARGET` or :code:`CUDA_PATH` are necessary for :code:`hipcc` :code:`HCC_AMDGPU_TARGET` or :code:`CUDA_PATH` are necessary for :code:`hipcc`

View File

@ -94,6 +94,7 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`package <package>` * :doc:`package <package>`
* :doc:`pair_coeff <pair_coeff>` * :doc:`pair_coeff <pair_coeff>`
* :doc:`pair_modify <pair_modify>` * :doc:`pair_modify <pair_modify>`
* :doc:`pair_style <pair_style>`
* :doc:`pair_write <pair_write>` * :doc:`pair_write <pair_write>`
* :doc:`partition <partition>` * :doc:`partition <partition>`
* :doc:`prd <prd>` * :doc:`prd <prd>`

View File

@ -147,6 +147,7 @@ OPT.
* :doc:`oneway <fix_oneway>` * :doc:`oneway <fix_oneway>`
* :doc:`orient/bcc <fix_orient>` * :doc:`orient/bcc <fix_orient>`
* :doc:`orient/fcc <fix_orient>` * :doc:`orient/fcc <fix_orient>`
* :doc:`orient/eco <fix_orient_eco>`
* :doc:`phonon <fix_phonon>` * :doc:`phonon <fix_phonon>`
* :doc:`pimd <fix_pimd>` * :doc:`pimd <fix_pimd>`
* :doc:`planeforce <fix_planeforce>` * :doc:`planeforce <fix_planeforce>`

View File

@ -92,8 +92,8 @@ OPT.
* :doc:`drip <pair_drip>` * :doc:`drip <pair_drip>`
* :doc:`eam (gikot) <pair_eam>` * :doc:`eam (gikot) <pair_eam>`
* :doc:`eam/alloy (gikot) <pair_eam>` * :doc:`eam/alloy (gikot) <pair_eam>`
* :doc:`eam/cd (o) <pair_eam>` * :doc:`eam/cd <pair_eam>`
* :doc:`eam/cd/old (o) <pair_eam>` * :doc:`eam/cd/old <pair_eam>`
* :doc:`eam/fs (gikot) <pair_eam>` * :doc:`eam/fs (gikot) <pair_eam>`
* :doc:`edip (o) <pair_edip>` * :doc:`edip (o) <pair_edip>`
* :doc:`edip/multi <pair_edip>` * :doc:`edip/multi <pair_edip>`

View File

@ -415,8 +415,10 @@ This is particularly convenient, if you have set a custom build command
via the ``CMAKE_MAKE_PROGRAM`` variable. via the ``CMAKE_MAKE_PROGRAM`` variable.
When calling the build program, you can also select which "target" is to When calling the build program, you can also select which "target" is to
be build through appending the name of the target to the build command. be build through appending the ``--target`` flag and the name of the target
Example: ``cmake --build . all``. The following abstract targets are available: to the build command. When using ``make`` as build tool, you can just append
the target name to the command. Example: ``cmake --build . --target all`` or
``make all``. The following abstract targets are available:
.. list-table:: .. list-table::
:header-rows: 1 :header-rows: 1
@ -432,7 +434,7 @@ Example: ``cmake --build . all``. The following abstract targets are available:
* - ``install`` * - ``install``
- install all target files into folders in ``CMAKE_INSTALL_PREFIX`` - install all target files into folders in ``CMAKE_INSTALL_PREFIX``
* - ``test`` * - ``test``
- run some simple tests (if configured with ``-D ENABLE_TESTING=on``) - run some tests (if configured with ``-D ENABLE_TESTING=on``)
* - ``clean`` * - ``clean``
- remove all generated files - remove all generated files

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

View File

@ -1,37 +1,51 @@
Submitting new features for inclusion in LAMMPS Submitting new features for inclusion in LAMMPS
=============================================== ===============================================
We encourage users to submit new features or modifications for LAMMPS We encourage users to submit new features or modifications for LAMMPS to
to `the core developers <https://lammps.sandia.gov/authors.html>`_ so they `the core developers <https://lammps.sandia.gov/authors.html>`_ so they
can be added to the LAMMPS distribution. The preferred way to manage can be added to the LAMMPS distribution. The preferred way to manage and
and coordinate this is as of Fall 2016 via the LAMMPS project on coordinate this is via the LAMMPS project on `GitHub
`GitHub <https://github.com/lammps/lammps>`_. An alternative is to <https://github.com/lammps/lammps>`_. Please see the :doc:`GitHub
contact the LAMMPS developers or the indicated developer of a package Tutorial <Howto_github>` for a demonstration on how to do that. An
or feature directly and send in your contribution via e-mail. alternative is to contact the LAMMPS developers or the indicated
developer of a package or feature directly and send in your contribution
via e-mail, but that can add a significant delay on getting your
contribution included, depending on how busy the developer is you
contact, how complex a task it would be to integrate that code, and how
many - if any - changes are required before the code can be included.
For any larger modifications or programming project, you are For any larger modifications or programming project, you are encouraged
encouraged to contact the LAMMPS developers ahead of time, in order to to contact the LAMMPS developers ahead of time, in order to discuss
discuss implementation strategies and coding guidelines, that will implementation strategies and coding guidelines, that will make it
make it easier to integrate your contribution and result in less work easier to integrate your contribution and result in less work for
for everybody involved. You are also encouraged to search through the everybody involved. You are also encouraged to search through the list
list of `open issues on GitHub <https://github.com/lammps/lammps/issues>`_ and submit a new issue of `open issues on GitHub <https://github.com/lammps/lammps/issues>`_
for a planned feature, so you would not duplicate the work of others and submit a new issue for a planned feature, so you would not duplicate
(and possibly get scooped by them) or have your work duplicated by the work of others (and possibly get scooped by them) or have your work
others. duplicated by others.
How quickly your contribution will be integrated depends largely on For informal communication with (some of) the LAMMPS developers you may
how much effort it will cause to integrate and test it, how much it ask to join the `LAMMPS developers on Slack <https://lammps.slack.com>`_.
requires changes to the core codebase, and of how much interest it is This slack work space is by invitation only. Thus for access, please
to the larger LAMMPS community. Please see below for a checklist of send an e-mail to ``slack@lammps.org`` explaining what part of LAMMPS
typical requirements. Once you have prepared everything, see the you are working on. Only discussions related to LAMMPS development are
:doc:`Using GitHub with LAMMPS Howto <Howto_github>` doc page for instructions on how to tolerated, so this is **NOT** for people that look for help with compiling,
submit your changes or new files through a GitHub pull request. If you installing, or using LAMMPS. Please contact the `lammps-users mailing
prefer to submit patches or full files, you should first make certain, list <https://lammps.sandia.gov>`_ for those purposes instead.
that your code works correctly with the latest patch-level version of
LAMMPS and contains all bug fixes from it. Then create a gzipped tar How quickly your contribution will be integrated depends largely on how
file of all changed or added files or a corresponding patch file using much effort it will cause to integrate and test it, how much it requires
'diff -u' or 'diff -c' and compress it with gzip. Please only use gzip changes to the core codebase, and of how much interest it is to the
compression, as this works well on all platforms. larger LAMMPS community. Please see below for a checklist of typical
requirements. Once you have prepared everything, see the :doc:`Using
GitHub with LAMMPS Howto <Howto_github>` doc page for instructions on
how to submit your changes or new files through a GitHub pull
request. If you prefer to submit patches or full files, you should first
make certain, that your code works correctly with the latest patch-level
version of LAMMPS and contains all bug fixes from it. Then create a
gzipped tar file of all changed or added files or a corresponding patch
file using 'diff -u' or 'diff -c' and compress it with gzip. Please only
use gzip compression, as this works well on all platforms.
If the new features/files are broadly useful we may add them as core If the new features/files are broadly useful we may add them as core
files to LAMMPS or as part of a :doc:`standard package <Packages_standard>`. Else we will add them as a files to LAMMPS or as part of a :doc:`standard package <Packages_standard>`. Else we will add them as a

View File

@ -2098,7 +2098,7 @@ molecules, and chiral-sensitive reactions.
* examples/USER/reaction * examples/USER/reaction
* `2017 LAMMPS Workshop <https://lammps.sandia.gov/workshops/Aug17/pdf/gissinger.pdf>`_ * `2017 LAMMPS Workshop <https://lammps.sandia.gov/workshops/Aug17/pdf/gissinger.pdf>`_
* `2019 LAMMPS Workshop <https://lammps.sandia.gov/workshops/Aug19/talk_gissinger.pdf>`_ * `2019 LAMMPS Workshop <https://lammps.sandia.gov/workshops/Aug19/talk_gissinger.pdf>`_
* disarmmd.org * reacter.org
---------- ----------

View File

@ -37,7 +37,7 @@ and the relative shape anisotropy, k:
b = & l_y - l_x \\ b = & l_y - l_x \\
k = & \frac{3}{2} \frac{l_x^2+l_y^2+l_z^2}{(l_x+l_y+l_z)^2} - \frac{1}{2} k = & \frac{3}{2} \frac{l_x^2+l_y^2+l_z^2}{(l_x+l_y+l_z)^2} - \frac{1}{2}
where :math:`l_x` <= :math:`l_y` <= :math`l_z` are the three eigenvalues of the gyration tensor. A general description where :math:`l_x` <= :math:`l_y` <= :math:`l_z` are the three eigenvalues of the gyration tensor. A general description
of these parameters is provided in :ref:`(Mattice) <Mattice2>` while an application to polymer systems of these parameters is provided in :ref:`(Mattice) <Mattice2>` while an application to polymer systems
can be found in :ref:`(Theodorou) <Theodorou2>`. The asphericity is always non-negative and zero can be found in :ref:`(Theodorou) <Theodorou2>`. The asphericity is always non-negative and zero
only when the three principal moments are equal. This zero condition is met when the distribution only when the three principal moments are equal. This zero condition is met when the distribution

View File

@ -552,9 +552,9 @@ when writing to XTC files. By default they are initialized for
whatever :doc:`units <units>` style is being used, to write out whatever :doc:`units <units>` style is being used, to write out
coordinates in nanometers and time in picoseconds. I.e. for *real* coordinates in nanometers and time in picoseconds. I.e. for *real*
units, LAMMPS defines *sfactor* = 0.1 and *tfactor* = 0.001, since the units, LAMMPS defines *sfactor* = 0.1 and *tfactor* = 0.001, since the
Angstroms and fmsec used by *real* units are 0.1 nm and 0.001 psec Angstroms and fs used by *real* units are 0.1 nm and 0.001 ps
respectively. If you are using a units system with distance and time respectively. If you are using a units system with distance and time
units far from nm and psec, you may wish to write XTC files with units far from nm and ps, you may wish to write XTC files with
different units, since the compression algorithm used in XTC files is different units, since the compression algorithm used in XTC files is
most effective when the typical magnitude of position data is between most effective when the typical magnitude of position data is between
10.0 and 0.1. 10.0 and 0.1.

View File

@ -290,6 +290,7 @@ accelerated styles exist.
* :doc:`oneway <fix_oneway>` - constrain particles on move in one direction * :doc:`oneway <fix_oneway>` - constrain particles on move in one direction
* :doc:`orient/bcc <fix_orient>` - add grain boundary migration force for BCC * :doc:`orient/bcc <fix_orient>` - add grain boundary migration force for BCC
* :doc:`orient/fcc <fix_orient>` - add grain boundary migration force for FCC * :doc:`orient/fcc <fix_orient>` - add grain boundary migration force for FCC
* :doc:`orient/eco <fix_orient_eco>` - add generalized grain boundary migration force
* :doc:`phonon <fix_phonon>` - calculate dynamical matrix from MD simulations * :doc:`phonon <fix_phonon>` - calculate dynamical matrix from MD simulations
* :doc:`pimd <fix_pimd>` - Feynman path integral molecular dynamics * :doc:`pimd <fix_pimd>` - Feynman path integral molecular dynamics
* :doc:`planeforce <fix_planeforce>` - constrain atoms to move in a plane * :doc:`planeforce <fix_planeforce>` - constrain atoms to move in a plane

44
doc/src/fix_bond_react.rst Executable file → Normal file
View File

@ -300,7 +300,8 @@ either 'none' or 'charges.' Further details are provided in the
discussion of the 'update_edges' keyword. The fifth optional section discussion of the 'update_edges' keyword. The fifth optional section
begins with the keyword 'Constraints' and lists additional criteria begins with the keyword 'Constraints' and lists additional criteria
that must be satisfied in order for the reaction to occur. Currently, that must be satisfied in order for the reaction to occur. Currently,
there are four types of constraints available, as discussed below. there are four types of constraints available, as discussed below:
'distance', 'angle', 'dihedral', and 'arrhenius'.
A sample map file is given below: A sample map file is given below:
@ -353,8 +354,9 @@ has syntax as follows:
distance *ID1* *ID2* *rmin* *rmax* distance *ID1* *ID2* *rmin* *rmax*
where 'distance' is the required keyword, *ID1* and *ID2* are where 'distance' is the required keyword, *ID1* and *ID2* are
pre-reaction atom IDs, and these two atoms must be separated by a pre-reaction atom IDs (or molecule-fragment IDs, see below), and these
distance between *rmin* and *rmax* for the reaction to occur. two atoms must be separated by a distance between *rmin* and *rmax*
for the reaction to occur.
The constraint of type 'angle' has the following syntax: The constraint of type 'angle' has the following syntax:
@ -363,11 +365,11 @@ The constraint of type 'angle' has the following syntax:
angle *ID1* *ID2* *ID3* *amin* *amax* angle *ID1* *ID2* *ID3* *amin* *amax*
where 'angle' is the required keyword, *ID1*\ , *ID2* and *ID3* are where 'angle' is the required keyword, *ID1*\ , *ID2* and *ID3* are
pre-reaction atom IDs, and these three atoms must form an angle pre-reaction atom IDs (or molecule-fragment IDs, see below), and these
between *amin* and *amax* for the reaction to occur (where *ID2* is three atoms must form an angle between *amin* and *amax* for the
the central atom). Angles must be specified in degrees. This reaction to occur (where *ID2* is the central atom). Angles must be
constraint can be used to enforce a certain orientation between specified in degrees. This constraint can be used to enforce a certain
reacting molecules. orientation between reacting molecules.
The constraint of type 'dihedral' has the following syntax: The constraint of type 'dihedral' has the following syntax:
@ -376,15 +378,23 @@ The constraint of type 'dihedral' has the following syntax:
dihedral *ID1* *ID2* *ID3* *ID4* *amin* *amax* *amin2* *amax2* dihedral *ID1* *ID2* *ID3* *ID4* *amin* *amax* *amin2* *amax2*
where 'dihedral' is the required keyword, and *ID1*\ , *ID2*\ , *ID3* where 'dihedral' is the required keyword, and *ID1*\ , *ID2*\ , *ID3*
and *ID4* are pre-reaction atom IDs. Dihedral angles are calculated in and *ID4* are pre-reaction atom IDs (or molecule-fragment IDs, see
the interval (-180,180]. Refer to the :doc:`dihedral style <dihedral_style>` below). Dihedral angles are calculated in the interval (-180,180].
documentation for further details on convention. If *amin* is less Refer to the :doc:`dihedral style <dihedral_style>` documentation for
than *amax*, these four atoms must form a dihedral angle greater than further details on convention. If *amin* is less than *amax*, these
*amin* **and** less than *amax* for the reaction to occur. If *amin* four atoms must form a dihedral angle greater than *amin* **and** less
is greater than *amax*, these four atoms must form a dihedral angle than *amax* for the reaction to occur. If *amin* is greater than
greater than *amin* **or** less than *amax* for the reaction to occur. *amax*, these four atoms must form a dihedral angle greater than
Angles must be specified in degrees. Optionally, a second range of *amin* **or** less than *amax* for the reaction to occur. Angles must
permissible angles *amin2*-*amax2* can be specified. be specified in degrees. Optionally, a second range of permissible
angles *amin2*-*amax2* can be specified.
For the 'distance', 'angle', and 'dihedral' constraints (explained
above), atom IDs can be replaced by pre-reaction molecule-fragment
IDs. The molecule-fragment ID must begin with a letter. The location
of the ID is the geometric center of all atom positions in the
fragment. The molecule fragment must have been defined in the
:doc:`molecule <molecule>` command for the pre-reaction template.
The constraint of type 'arrhenius' imposes an additional reaction The constraint of type 'arrhenius' imposes an additional reaction
probability according to the temperature-dependent Arrhenius equation: probability according to the temperature-dependent Arrhenius equation:

View File

@ -154,8 +154,8 @@ specified in units of distance/time. This is effectively a "constant
engineering strain rate", where rate = V/L0 and L0 is the initial box engineering strain rate", where rate = V/L0 and L0 is the initial box
length. The distance can be in lattice or box distance units. See length. The distance can be in lattice or box distance units. See
the discussion of the units keyword below. For example, if the the discussion of the units keyword below. For example, if the
initial box length is 100 Angstroms, and V is 10 Angstroms/psec, then initial box length is 100 Angstroms, and V is 10 Angstroms/ps, then
after 10 psec, the box length will have doubled. After 20 psec, it after 10 ps, the box length will have doubled. After 20 ps, it
will have tripled. will have tripled.
The *erate* style changes a dimension of the box at a "constant The *erate* style changes a dimension of the box at a "constant
@ -174,7 +174,7 @@ function of time will change as
where dt is the elapsed time (in time units). Thus if *erate* R is where dt is the elapsed time (in time units). Thus if *erate* R is
specified as 0.1 and time units are picoseconds, this means the box specified as 0.1 and time units are picoseconds, this means the box
length will increase by 10% of its original length every picosecond. length will increase by 10% of its original length every picosecond.
I.e. strain after 1 psec = 0.1, strain after 2 psec = 0.2, etc. R = I.e. strain after 1 ps = 0.1, strain after 2 ps = 0.2, etc. R =
-0.01 means the box length will shrink by 1% of its original length -0.01 means the box length will shrink by 1% of its original length
every picosecond. Note that for an "engineering" rate the change is every picosecond. Note that for an "engineering" rate the change is
based on the original box length, so running with R = 1 for 10 based on the original box length, so running with R = 1 for 10
@ -201,7 +201,7 @@ The box length L as a function of time will change as
where dt is the elapsed time (in time units). Thus if *trate* R is where dt is the elapsed time (in time units). Thus if *trate* R is
specified as ln(1.1) and time units are picoseconds, this means the specified as ln(1.1) and time units are picoseconds, this means the
box length will increase by 10% of its current (not original) length box length will increase by 10% of its current (not original) length
every picosecond. I.e. strain after 1 psec = 0.1, strain after 2 psec every picosecond. I.e. strain after 1 ps = 0.1, strain after 2 ps
= 0.21, etc. R = ln(2) or ln(3) means the box length will double or = 0.21, etc. R = ln(2) or ln(3) means the box length will double or
triple every picosecond. R = ln(0.99) means the box length will triple every picosecond. R = ln(0.99) means the box length will
shrink by 1% of its current length every picosecond. Note that for a shrink by 1% of its current length every picosecond. Note that for a
@ -317,8 +317,8 @@ specified in units of distance/time. This is effectively an
initial box length perpendicular to the direction of shear. The initial box length perpendicular to the direction of shear. The
distance can be in lattice or box distance units. See the discussion distance can be in lattice or box distance units. See the discussion
of the units keyword below. For example, if the initial tilt factor of the units keyword below. For example, if the initial tilt factor
is 5 Angstroms, and the V is 10 Angstroms/psec, then after 1 psec, the is 5 Angstroms, and the V is 10 Angstroms/ps, then after 1 ps, the
tilt factor will be 15 Angstroms. After 2 psec, it will be 25 tilt factor will be 15 Angstroms. After 2 ps, it will be 25
Angstroms. Angstroms.
The *erate* style changes a tilt factor at a "constant engineering The *erate* style changes a tilt factor at a "constant engineering
@ -342,9 +342,9 @@ box perpendicular to the shear direction (e.g. y box length for xy
deformation), and dt is the elapsed time (in time units). Thus if deformation), and dt is the elapsed time (in time units). Thus if
*erate* R is specified as 0.1 and time units are picoseconds, this *erate* R is specified as 0.1 and time units are picoseconds, this
means the shear strain will increase by 0.1 every picosecond. I.e. if means the shear strain will increase by 0.1 every picosecond. I.e. if
the xy shear strain was initially 0.0, then strain after 1 psec = 0.1, the xy shear strain was initially 0.0, then strain after 1 ps = 0.1,
strain after 2 psec = 0.2, etc. Thus the tilt factor would be 0.0 at strain after 2 ps = 0.2, etc. Thus the tilt factor would be 0.0 at
time 0, 0.1\*ybox at 1 psec, 0.2\*ybox at 2 psec, etc, where ybox is the time 0, 0.1\*ybox at 1 ps, 0.2\*ybox at 2 ps, etc, where ybox is the
original y box length. R = 1 or 2 means the tilt factor will increase original y box length. R = 1 or 2 means the tilt factor will increase
by 1 or 2 every picosecond. R = -0.01 means a decrease in shear by 1 or 2 every picosecond. R = -0.01 means a decrease in shear
strain by 0.01 every picosecond. strain by 0.01 every picosecond.
@ -373,7 +373,7 @@ where T0 is the initial tilt factor and dt is the elapsed time (in
time units). Thus if *trate* R is specified as ln(1.1) and time units time units). Thus if *trate* R is specified as ln(1.1) and time units
are picoseconds, this means the shear strain or tilt factor will are picoseconds, this means the shear strain or tilt factor will
increase by 10% every picosecond. I.e. if the xy shear strain was increase by 10% every picosecond. I.e. if the xy shear strain was
initially 0.1, then strain after 1 psec = 0.11, strain after 2 psec = initially 0.1, then strain after 1 ps = 0.11, strain after 2 ps =
0.121, etc. R = ln(2) or ln(3) means the tilt factor will double or 0.121, etc. R = ln(2) or ln(3) means the tilt factor will double or
triple every picosecond. R = ln(0.99) means the tilt factor will triple every picosecond. R = ln(0.99) means the tilt factor will
shrink by 1% every picosecond. Note that the change is continuous, so shrink by 1% every picosecond. Note that the change is continuous, so

View File

@ -57,7 +57,7 @@ its current value(s) used to determine the flux.
If *eflux* is a numeric constant or equal-style variable which evaluates If *eflux* is a numeric constant or equal-style variable which evaluates
to a scalar value, then *eflux* determines the change in aggregate energy to a scalar value, then *eflux* determines the change in aggregate energy
of the entire group of atoms per unit time, e.g. in eV/psec for of the entire group of atoms per unit time, e.g. in eV/ps for
:doc:`metal units <units>`. In this case it is an "extensive" quantity, :doc:`metal units <units>`. In this case it is an "extensive" quantity,
meaning its magnitude should be scaled with the number of atoms in the meaning its magnitude should be scaled with the number of atoms in the
group. Note that since *eflux* also has per-time units (i.e. it is a group. Note that since *eflux* also has per-time units (i.e. it is a

View File

@ -188,7 +188,7 @@ particles.
*damp_com* is the characteristic time for reaching thermal equilibrium *damp_com* is the characteristic time for reaching thermal equilibrium
of the centers of mass. For example, a value of 100.0 means to relax of the centers of mass. For example, a value of 100.0 means to relax
the temperature of the centers of mass in a timespan of (roughly) 100 the temperature of the centers of mass in a timespan of (roughly) 100
time units (tau or fmsec or psec - see the :doc:`units <units>` time units (tau or fs or ps - see the :doc:`units <units>`
command). *damp_drude* is the characteristic time for reaching command). *damp_drude* is the characteristic time for reaching
thermal equilibrium of the dipoles. It is typically a few timesteps. thermal equilibrium of the dipoles. It is typically a few timesteps.

View File

@ -196,7 +196,7 @@ The *units* keyword determines the meaning of the distance units used
to define the *linear* velocity and *wiggle* amplitude and *rotate* to define the *linear* velocity and *wiggle* amplitude and *rotate*
origin. This setting is ignored for the *variable* style. A *box* origin. This setting is ignored for the *variable* style. A *box*
value selects standard units as defined by the :doc:`units <units>` value selects standard units as defined by the :doc:`units <units>`
command, e.g. velocity in Angstroms/fmsec and amplitude and position command, e.g. velocity in Angstroms/fs and amplitude and position
in Angstroms for units = real. A *lattice* value means the velocity in Angstroms for units = real. A *lattice* value means the velocity
units are in lattice spacings per time and the amplitude and position units are in lattice spacings per time and the amplitude and position
are in lattice spacings. The :doc:`lattice <lattice>` command must have are in lattice spacings. The :doc:`lattice <lattice>` command must have

View File

@ -193,7 +193,7 @@ The *units* keyword determines the meaning of the distance units used
to define the *linear* velocity and *wiggle* amplitude and *rotate* to define the *linear* velocity and *wiggle* amplitude and *rotate*
origin. This setting is ignored for the *variable* style. A *box* origin. This setting is ignored for the *variable* style. A *box*
value selects standard units as defined by the :doc:`units <units>` value selects standard units as defined by the :doc:`units <units>`
command, e.g. velocity in Angstroms/fmsec and amplitude and position command, e.g. velocity in Angstroms/fs and amplitude and position
in Angstroms for units = real. A *lattice* value means the velocity in Angstroms for units = real. A *lattice* value means the velocity
units are in lattice spacings per time and the amplitude and position units are in lattice spacings per time and the amplitude and position
are in lattice spacings. The :doc:`lattice <lattice>` command must have are in lattice spacings. The :doc:`lattice <lattice>` command must have

34
doc/src/fix_nh.rst Normal file → Executable file
View File

@ -46,7 +46,7 @@ Syntax
.. parsed-literal:: .. parsed-literal::
keyword = *temp* or *iso* or *aniso* or *tri* or *x* or *y* or *z* or *xy* or *yz* or *xz* or *couple* or *tchain* or *pchain* or *mtk* or *tloop* or *ploop* or *nreset* or *drag* or *dilate* or *scalexy* or *scaleyz* or *scalexz* or *flip* or *fixedpoint* or *update* keyword = *temp* or *iso* or *aniso* or *tri* or *x* or *y* or *z* or *xy* or *yz* or *xz* or *couple* or *tchain* or *pchain* or *mtk* or *tloop* or *ploop* or *nreset* or *drag* or *ptemp* or *dilate* or *scalexy* or *scaleyz* or *scalexz* or *flip* or *fixedpoint* or *update*
*temp* values = Tstart Tstop Tdamp *temp* values = Tstart Tstop Tdamp
Tstart,Tstop = external temperature at start/end of run Tstart,Tstop = external temperature at start/end of run
Tdamp = temperature damping parameter (time units) Tdamp = temperature damping parameter (time units)
@ -69,6 +69,8 @@ Syntax
*nreset* value = reset reference cell every this many timesteps *nreset* value = reset reference cell every this many timesteps
*drag* value = Df *drag* value = Df
Df = drag factor added to barostat/thermostat (0.0 = no drag) Df = drag factor added to barostat/thermostat (0.0 = no drag)
*ptemp* value = Ttarget
Ttarget = target temperature for barostat
*dilate* value = dilate-group-ID *dilate* value = dilate-group-ID
dilate-group-ID = only dilate atoms in this group due to barostat volume changes dilate-group-ID = only dilate atoms in this group due to barostat volume changes
*scalexy* value = *yes* or *no* = scale xy with ly *scalexy* value = *yes* or *no* = scale xy with ly
@ -137,8 +139,8 @@ description below. The desired temperature at each timestep is a
ramped value during the run from *Tstart* to *Tstop*\ . The *Tdamp* ramped value during the run from *Tstart* to *Tstop*\ . The *Tdamp*
parameter is specified in time units and determines how rapidly the parameter is specified in time units and determines how rapidly the
temperature is relaxed. For example, a value of 10.0 means to relax temperature is relaxed. For example, a value of 10.0 means to relax
the temperature in a timespan of (roughly) 10 time units (e.g. tau or the temperature in a timespan of (roughly) 10 time units (e.g. :math:`\tau`
fmsec or psec - see the :doc:`units <units>` command). The atoms in the or fs or ps - see the :doc:`units <units>` command). The atoms in the
fix group are the only ones whose velocities and positions are updated fix group are the only ones whose velocities and positions are updated
by the velocity/position update portion of the integration. by the velocity/position update portion of the integration.
@ -195,8 +197,8 @@ simulation box must be triclinic, even if its initial tilt factors are
For all barostat keywords, the *Pdamp* parameter operates like the For all barostat keywords, the *Pdamp* parameter operates like the
*Tdamp* parameter, determining the time scale on which pressure is *Tdamp* parameter, determining the time scale on which pressure is
relaxed. For example, a value of 10.0 means to relax the pressure in relaxed. For example, a value of 10.0 means to relax the pressure in
a timespan of (roughly) 10 time units (e.g. tau or fmsec or psec - see a timespan of (roughly) 10 time units (e.g. :math:`\tau` or fs or ps
the :doc:`units <units>` command). - see the :doc:`units <units>` command).
.. note:: .. note::
@ -208,6 +210,28 @@ the :doc:`units <units>` command).
time units, and that timesteps are NOT the same as time units for most time units, and that timesteps are NOT the same as time units for most
:doc:`units <units>` settings. :doc:`units <units>` settings.
The relaxation rate of the barostat is set by its inertia :math:`W`:
.. math::
W = (N + 1) k T_{\rm target} P_{\rm damp}^2
where :math:`N` is the number of atoms, :math:`k` is the Boltzmann constant,
and :math:`T_{\rm target}` is the target temperature of the barostat :ref:`(Martyna) <nh-Martyna>`.
If a thermostat is defined, :math:`T_{\rm target}` is the target temperature
of the thermostat. If a thermostat is not defined, :math:`T_{\rm target}`
is set to the current temperature of the system when the barostat is initialized.
If this temperature is too low the simulation will quit with an error.
Note: in previous versions of LAMMPS, :math:`T_{\rm target}` would default to
a value of 1.0 for *lj* units and 300.0 otherwise if the system had a temperature
of exactly zero.
If a thermostat is not specified by this fix, :math:`T_{\rm target}` can be
manually specified using the *Ptemp* parameter. This may be useful if the
barostat is initialized when the current temperature does not reflect the
steady state temperature of the system. This keyword may also be useful in
athermal simulations where the temperature is not well defined.
Regardless of what atoms are in the fix group (the only atoms which Regardless of what atoms are in the fix group (the only atoms which
are time integrated), a global pressure or stress tensor is computed are time integrated), a global pressure or stress tensor is computed
for all atoms. Similarly, when the size of the simulation box is for all atoms. Similarly, when the size of the simulation box is

View File

@ -103,8 +103,8 @@ description below. The desired temperature at each timestep is a
ramped value during the run from *Tstart* to *Tstop*\ . The *Tdamp* ramped value during the run from *Tstart* to *Tstop*\ . The *Tdamp*
parameter is specified in time units and determines how rapidly the parameter is specified in time units and determines how rapidly the
temperature is relaxed. For example, a value of 10.0 means to relax temperature is relaxed. For example, a value of 10.0 means to relax
the temperature in a timespan of (roughly) 10 time units (e.g. tau or the temperature in a timespan of (roughly) 10 time units (e.g. :math:`\tau`
fmsec or psec - see the :doc:`units <units>` command). The atoms in the or fs or ps - see the :doc:`units <units>` command). The atoms in the
fix group are the only ones whose velocities and positions are updated fix group are the only ones whose velocities and positions are updated
by the velocity/position update portion of the integration. by the velocity/position update portion of the integration.
@ -154,8 +154,8 @@ simulation box must be triclinic, even if its initial tilt factors are
For all barostat keywords, the *Pdamp* parameter operates like the For all barostat keywords, the *Pdamp* parameter operates like the
*Tdamp* parameter, determining the time scale on which pressure is *Tdamp* parameter, determining the time scale on which pressure is
relaxed. For example, a value of 10.0 means to relax the pressure in relaxed. For example, a value of 10.0 means to relax the pressure in
a timespan of (roughly) 10 time units (e.g. tau or fmsec or psec - see a timespan of (roughly) 10 time units (e.g. :math:`\tau` or fs or ps
the :doc:`units <units>` command). - see the :doc:`units <units>` command).
.. note:: .. note::

View File

@ -94,7 +94,7 @@ corresponds to T = 300 K.
The *damp* parameter is specified in time units and determines how The *damp* parameter is specified in time units and determines how
rapidly the temperature is relaxed. For example, a value of 0.03 rapidly the temperature is relaxed. For example, a value of 0.03
means to relax the temperature in a timespan of (roughly) 0.03 time means to relax the temperature in a timespan of (roughly) 0.03 time
units tau (see the :doc:`units <units>` command). units :math:`\tau` (see the :doc:`units <units>` command).
The damp factor can be thought of as inversely related to the The damp factor can be thought of as inversely related to the
viscosity of the solvent, i.e. a small relaxation time implies a viscosity of the solvent, i.e. a small relaxation time implies a
high-viscosity solvent and vice versa. See the discussion about gamma high-viscosity solvent and vice versa. See the discussion about gamma

View File

@ -6,6 +6,9 @@ fix orient/fcc command
fix orient/bcc command fix orient/bcc command
====================== ======================
Syntax
""""""
.. parsed-literal:: .. parsed-literal::
fix ID group-ID orient/fcc nstats dir alat dE cutlo cuthi file0 file1 fix ID group-ID orient/fcc nstats dir alat dE cutlo cuthi file0 file1

154
doc/src/fix_orient_eco.rst Normal file
View File

@ -0,0 +1,154 @@
.. index:: fix orient/eco
fix orient/eco command
======================
.. parsed-literal::
fix ID group-ID orient/eco u0 eta cutoff orientationsFile
* ID, group-ID are documented in fix command
* u0 = energy added to each atom (energy units)
* eta = cutoff value (usually 0.25)
* cutoff = cutoff radius for orientation parameter calculation
* orientationsFile = file that specifies orientation of each grain
Examples
""""""""
.. code-block:: LAMMPS
fix gb all orient/eco 0.08 0.25 3.524 sigma5.ori
Description
"""""""""""
The fix applies a synthetic driving force to a grain boundary which can
be used for the investigation of grain boundary motion. The affiliation
of atoms to either of the two grains forming the grain boundary is
determined from an orientation-dependent order parameter as described
in :ref:`(Ulomek) <Ulomek>`. The potential energy of atoms is either increased by an amount
of 0.5*\ *u0* or -0.5*\ *u0* according to the orientation of the surrounding
crystal. This creates a potential energy gradient which pushes atoms near
the grain boundary to orient according to the energetically favorable
grain orientation. This fix is designed for applications in bicrystal system
with one grain boundary and open ends, or two opposite grain boundaries in
a periodic system. In either case, the entire system can experience a
displacement during the simulation which needs to be accounted for in the
evaluation of the grain boundary velocity. While the basic method is
described in :ref:`(Ulomek) <Ulomek>`, the implementation follows the efficient
implementation from :ref:`(Schratt & Mohles) <Schratt>`. The synthetic potential energy added to an
atom j is given by the following formulas
.. math::
w(|\vec{r}_{jk}|) = w_{jk} & = \left\{\begin{array}{lc} \frac{|\vec{r}_{jk}|^{4}}{r_{\mathrm{cut}}^{4}}
-2\frac{|\vec{r}_{jk}|^{2}}{r_{\mathrm{cut}}^{2}}+1, & |\vec{r}_{jk}|<r_{\mathrm{cut}} \\
0, & |\vec{r}_{jk}|\ge r_{\mathrm{cut}}
\end{array}\right. \\
\chi_{j} & = \frac{1}{N}\sum_{l=1}^{3}\left\lbrack\left\vert\psi_{l}^{\mathrm{I}}(\vec{r}_{j})\right\vert^{2}-\left\vert\psi_{l}^{\mathrm{II}}(\vec{r}_{j})\right\vert^{2}\right\rbrack \\
\psi_{l}^{\mathrm{X}}(\vec{r}_{j}) & = \sum_{k\in\mathit{\Gamma}_{j}}w_{jk}\exp\left(\mathrm{i}\vec{r}_{jk}\cdot\vec{q}_{l}^{\mathrm{X}}\right) \\
u(\chi_{j}) & = \frac{u_{0}}{2}\left\{\begin{array}{lc}
1, & \chi_{j}\ge\eta\\
\sin\left(\frac{\pi\chi_{j}}{2\eta}\right), & -\eta<\chi_{j}<\eta\\
-1, & \chi_{j}\le-\eta
\end{array}\right.
which are fully explained in :ref:`(Ulomek) <Ulomek>`
and :ref:`(Schratt & Mohles) <Schratt>`.
The force on each atom is the negative gradient of the synthetic potential energy. It
depends on the surrounding of this atom. An atom far from the grain boundary does not
experience a synthetic force as its surrounding is that of an oriented single crystal
and thermal fluctuations are masked by the parameter *eta*\ . Near the grain boundary
however, the gradient is nonzero and synthetic force terms are computed.
The orientationsFile specifies the perfect oriented crystal basis vectors for the
two adjoining crystals. The first three lines (line=row vector) for the energetically penalized and the
last three lines for the energetically favored grain assuming *u0* is positive. For
negative *u0*, this is reversed. With the *cutoff* parameter, the size of the region around
each atom which is used in the order parameter computation is defined. The cutoff must be
smaller than the interaction range of the MD potential. It should at
least include the nearest neighbor shell. For high temperatures or low angle
grain boundaries, it might be beneficial to increase the cutoff in order to get a more
precise identification of the atoms surrounding. However, computation time will
increase as more atoms are considered in the order parameter and force computation.
It is also worth noting that the cutoff radius must not exceed the communication
distance for ghost atoms in LAMMPS. With orientationsFile, the
6 oriented crystal basis vectors is specified. Each line of the input file
contains the three components of a primitive lattice vector oriented according to
the grain orientation in the simulation box. The first (last) three lines correspond
to the primitive lattice vectors of the first (second) grain. An example for
a :math:`\Sigma\langle001\rangle` mis-orientation is given at the end.
If no synthetic energy difference between the grains is created, :math:`u0=0`, the
force computation is omitted. In this case, still, the order parameter of the
driving force is computed and can be used to track the grain boundary motion throughout the
simulation.
**Restart, fix_modify, output, run start/stop, minimize info:**
No information about this fix is written to :doc: `binary restart files <restart>`.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by this fix to
add the potential energy of atom interactions with the grain boundary
driving force to the system's potential energy as part of thermodynamic output.
The total sum of added synthetic potential energy is computed and can be accessed
by various output options. The order parameter as well as the thermally masked
output parameter are stored in per-atom arrays and can also be accessed by various
:doc:`output commands <Howto_output>`.
No parameter of this fix can be used with the start/stop keywords of the run command. This fix is
not invoked during energy minimization.
Restrictions
""""""""""""
This fix is part of the USER-MISC package. It is only enabled if LAMMPS was
built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
Related commands
""""""""""""""""
:doc:`fix_modify <fix_modify>`
:doc:`fix_orient <fix_orient>`
**Default:** none
----------
.. _Ulomek:
**(Ulomek)** Ulomek, Brien, Foiles, Mohles, Modelling Simul. Mater. Sci. Eng. 23 (2015) 025007
.. _Schratt:
**(Schratt & Mohles)** Schratt, Mohles. Comp. Mat. Sci. 182 (2020) 109774
----------
For illustration purposes, here is an example file that specifies a
:math:`\Sigma=5 \langle 001 \rangle` tilt grain boundary. This is for a lattice constant of 3.52 Angstrom:
.. parsed-literal::
sigma5.ori:
1.671685 0.557228 1.76212
0.557228 -1.671685 1.76212
2.228913 -1.114456 0.00000
0.557228 1.671685 1.76212
1.671685 -0.557228 1.76212
2.228913 1.114456 0.00000

View File

@ -3,7 +3,8 @@
fix poems command fix poems command
================= =================
Syntax: Syntax
""""""
.. parsed-literal:: .. parsed-literal::

View File

@ -90,7 +90,7 @@ although you have the option to change that dimension via the :doc:`fix deform <
For all barostat keywords, the *Pdamp* parameter determines the time For all barostat keywords, the *Pdamp* parameter determines the time
scale on which pressure is relaxed. For example, a value of 10.0 scale on which pressure is relaxed. For example, a value of 10.0
means to relax the pressure in a timespan of (roughly) 10 time units means to relax the pressure in a timespan of (roughly) 10 time units
(tau or fmsec or psec - see the :doc:`units <units>` command). (tau or fs or ps - see the :doc:`units <units>` command).
.. note:: .. note::

View File

@ -3,6 +3,9 @@
fix rhok command fix rhok command
================ ================
Syntax
""""""
.. parsed-literal:: .. parsed-literal::
fix ID group-ID rhok nx ny nz K a fix ID group-ID rhok nx ny nz K a

View File

@ -429,8 +429,8 @@ that dimension via the :doc:`fix deform <fix_deform>` command.
For all barostat keywords, the *Pdamp* parameter operates like the For all barostat keywords, the *Pdamp* parameter operates like the
*Tdamp* parameter, determining the time scale on which pressure is *Tdamp* parameter, determining the time scale on which pressure is
relaxed. For example, a value of 10.0 means to relax the pressure in relaxed. For example, a value of 10.0 means to relax the pressure in
a timespan of (roughly) 10 time units (e.g. tau or fmsec or psec - see a timespan of (roughly) 10 time units (e.g. :math:`\tau` or fs or ps
the :doc:`units <units>` command). - see the :doc:`units <units>` command).
Regardless of what atoms are in the fix group (the only atoms which Regardless of what atoms are in the fix group (the only atoms which
are time integrated), a global pressure or stress tensor is computed are time integrated), a global pressure or stress tensor is computed
@ -514,7 +514,7 @@ desired temperature at each timestep is a ramped value during the run
from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in time from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in time
units and determines how rapidly the temperature is relaxed. For units and determines how rapidly the temperature is relaxed. For
example, a value of 100.0 means to relax the temperature in a timespan example, a value of 100.0 means to relax the temperature in a timespan
of (roughly) 100 time units (tau or fmsec or psec - see the of (roughly) 100 time units (:math:`\tau` or fs or ps - see the
:doc:`units <units>` command). The random # *seed* must be a positive :doc:`units <units>` command). The random # *seed* must be a positive
integer. integer.
@ -539,7 +539,7 @@ timestep is a ramped value during the run from *Tstart* to *Tstop*\ .
The *Tdamp* parameter is specified in time units and determines how The *Tdamp* parameter is specified in time units and determines how
rapidly the temperature is relaxed. For example, a value of 100.0 rapidly the temperature is relaxed. For example, a value of 100.0
means to relax the temperature in a timespan of (roughly) 100 time means to relax the temperature in a timespan of (roughly) 100 time
units (tau or fmsec or psec - see the :doc:`units <units>` command). units (tau or fs or ps - see the :doc:`units <units>` command).
Nose/Hoover chains are used in conjunction with this thermostat. The Nose/Hoover chains are used in conjunction with this thermostat. The
*tparam* keyword can optionally be used to change the chain settings *tparam* keyword can optionally be used to change the chain settings

View File

@ -45,7 +45,7 @@ The desired temperature at each timestep is a ramped value during the
run from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in run from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in
time units and determines how rapidly the temperature is relaxed. For time units and determines how rapidly the temperature is relaxed. For
example, a value of 100.0 means to relax the temperature in a timespan example, a value of 100.0 means to relax the temperature in a timespan
of (roughly) 100 time units (tau or fmsec or psec - see the of (roughly) 100 time units (tau or fs or ps - see the
:doc:`units <units>` command). :doc:`units <units>` command).
*Tstart* can be specified as an equal-style :doc:`variable <variable>`. *Tstart* can be specified as an equal-style :doc:`variable <variable>`.

View File

@ -59,7 +59,7 @@ The desired temperature at each timestep is a ramped value during the
run from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in run from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in
time units and determines how rapidly the temperature is relaxed. For time units and determines how rapidly the temperature is relaxed. For
example, a value of 100.0 means to relax the temperature in a timespan example, a value of 100.0 means to relax the temperature in a timespan
of (roughly) 100 time units (tau or fmsec or psec - see the of (roughly) 100 time units (tau or fs or ps - see the
:doc:`units <units>` command). :doc:`units <units>` command).
*Tstart* can be specified as an equal-style :doc:`variable <variable>`. *Tstart* can be specified as an equal-style :doc:`variable <variable>`.

View File

@ -88,7 +88,7 @@ time:
\lambda(\tau) = \tau \lambda(\tau) = \tau
where tau is the scaled time variable *t/t_s*. The option *2* performs where :math:`\tau` is the scaled time variable *t/t_s*. The option *2* performs
the lambda switching at a rate defined by the following switching the lambda switching at a rate defined by the following switching
function function

View File

@ -45,7 +45,7 @@ Syntax
radius = cylinder radius (distance units) radius = cylinder radius (distance units)
* zero or more keyword/value pairs may be appended to args * zero or more keyword/value pairs may be appended to args
* keyword = *wiggle* or *shear* * keyword = *wiggle* or *shear* or *contacts*
.. parsed-literal:: .. parsed-literal::
@ -56,6 +56,9 @@ Syntax
*shear* values = dim vshear *shear* values = dim vshear
dim = *x* or *y* or *z* dim = *x* or *y* or *z*
vshear = magnitude of shear velocity (velocity units) vshear = magnitude of shear velocity (velocity units)
*contacts* value = none
generate contact information for each particle
Examples Examples
"""""""" """"""""
@ -68,6 +71,7 @@ Examples
fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping velocity region myBox fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping velocity region myBox
fix 4 all wall/gran/region granular jkr 1e5 1500.0 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone fix 4 all wall/gran/region granular jkr 1e5 1500.0 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone
fix 5 all wall/gran/region granular dmt 1e5 0.2 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall damping tsuji region myCone fix 5 all wall/gran/region granular dmt 1e5 0.2 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall damping tsuji region myCone
fix 6 all wall/gran hooke 200000.0 NULL 50.0 NULL 0.5 0 xplane -10.0 10.0 contacts
Description Description
""""""""""" """""""""""
@ -171,6 +175,7 @@ the clockwise direction for *vshear* > 0 or counter-clockwise for
*vshear* < 0. In this case, *vshear* is the tangential velocity of *vshear* < 0. In this case, *vshear* is the tangential velocity of
the wall at whatever *radius* has been defined. the wall at whatever *radius* has been defined.
**Restart, fix_modify, output, run start/stop, minimize info:** **Restart, fix_modify, output, run start/stop, minimize info:**
This fix writes the shear friction state of atoms interacting with the This fix writes the shear friction state of atoms interacting with the
@ -181,11 +186,37 @@ info on how to re-specify a fix in an input script that reads a
restart file, so that the operation of the fix continues in an restart file, so that the operation of the fix continues in an
uninterrupted fashion. uninterrupted fashion.
None of the :doc:`fix_modify <fix_modify>` options are relevant to this If the :code:`contacts` option is used, this fix generates a per-atom array
fix. No global or per-atom quantities are stored by this fix for with 8 columns as output, containing the contact information for owned
access by various :doc:`output commands <Howto_output>`. No parameter particles (nlocal on each processor). All columns in this per-atom array will
of this fix can be used with the *start/stop* keywords of the be zero if no contact has occurred. The values of these columns are listed in
:doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. the following table:
+-------+----------------------------------------------------+----------------+
| Index | Value | Units |
+=======+====================================================+================+
| 1 | 1.0 if particle is in contact with wall, | |
| | 0.0 otherwise | |
+-------+----------------------------------------------------+----------------+
| 2 | Force :math:`f_x` exerted on the wall | force units |
+-------+----------------------------------------------------+----------------+
| 3 | Force :math:`f_y` exerted on the wall | force units |
+-------+----------------------------------------------------+----------------+
| 4 | Force :math:`f_z` exerted on the wall | force units |
+-------+----------------------------------------------------+----------------+
| 5 | :math:`\Delta x` between wall surface and particle | distance units |
+-------+----------------------------------------------------+----------------+
| 6 | :math:`\Delta y` between wall surface and particle | distance units |
+-------+----------------------------------------------------+----------------+
| 7 | :math:`\Delta z` between wall surface and particle | distance units |
+-------+----------------------------------------------------+----------------+
| 8 | Radius :math:`r` of atom | distance units |
+-------+----------------------------------------------------+----------------+
None of the :doc:`fix_modify <fix_modify>` options are relevant to this fix.
No parameter of this fix can be used with the *start/stop* keywords of the
:doc:`run <run>` command. This fix is not invoked during :doc:`energy
minimization <minimize>`.
Restrictions Restrictions
"""""""""""" """"""""""""

View File

@ -8,7 +8,7 @@ Syntax
.. parsed-literal:: .. parsed-literal::
fix ID group-ID wall/gran/region fstyle fstyle_params wallstyle regionID fix ID group-ID wall/gran/region fstyle fstyle_params wallstyle regionID keyword values ...
* ID, group-ID are documented in :doc:`fix <fix>` command * ID, group-ID are documented in :doc:`fix <fix>` command
* wall/region = style name of this fix command * wall/region = style name of this fix command
@ -36,6 +36,12 @@ Syntax
* wallstyle = region (see :doc:`fix wall/gran <fix_wall_gran>` for options for other kinds of walls) * wallstyle = region (see :doc:`fix wall/gran <fix_wall_gran>` for options for other kinds of walls)
* region-ID = region whose boundary will act as wall * region-ID = region whose boundary will act as wall
* keyword = *contacts*
.. parsed-literal::
*contacts* value = none
generate contact information for each particle
Examples Examples
"""""""" """"""""
@ -46,6 +52,7 @@ Examples
fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping velocity region myBox fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping velocity region myBox
fix 4 all wall/gran/region granular jkr 1e5 1500.0 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone fix 4 all wall/gran/region granular jkr 1e5 1500.0 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone
fix 5 all wall/gran/region granular dmt 1e5 0.2 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall damping tsuji region myCone fix 5 all wall/gran/region granular dmt 1e5 0.2 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall damping tsuji region myCone
fix wall all wall/gran/region hooke/history 1000.0 200.0 200.0 100.0 0.5 1 region myCone contacts
Description Description
""""""""""" """""""""""
@ -215,11 +222,37 @@ uninterrupted fashion.
use the same fix ID for fix wall/gran/region, but assign it a region use the same fix ID for fix wall/gran/region, but assign it a region
with a different region ID. with a different region ID.
None of the :doc:`fix_modify <fix_modify>` options are relevant to this If the :code:`contacts` option is used, this fix generates a per-atom array
fix. No global or per-atom quantities are stored by this fix for with 8 columns as output, containing the contact information for owned
access by various :doc:`output commands <Howto_output>`. No parameter particles (nlocal on each processor). All columns in this per-atom array will
of this fix can be used with the *start/stop* keywords of the be zero if no contact has occurred. The values of these columns are listed in
:doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. the following table:
+-------+----------------------------------------------------+----------------+
| Index | Value | Units |
+=======+====================================================+================+
| 1 | 1.0 if particle is in contact with wall, | |
| | 0.0 otherwise | |
+-------+----------------------------------------------------+----------------+
| 2 | Force :math:`f_x` exerted on the wall | force units |
+-------+----------------------------------------------------+----------------+
| 3 | Force :math:`f_y` exerted on the wall | force units |
+-------+----------------------------------------------------+----------------+
| 4 | Force :math:`f_z` exerted on the wall | force units |
+-------+----------------------------------------------------+----------------+
| 5 | :math:`\Delta x` between wall surface and particle | distance units |
+-------+----------------------------------------------------+----------------+
| 6 | :math:`\Delta y` between wall surface and particle | distance units |
+-------+----------------------------------------------------+----------------+
| 7 | :math:`\Delta z` between wall surface and particle | distance units |
+-------+----------------------------------------------------+----------------+
| 8 | Radius :math:`r` of atom | distance units |
+-------+----------------------------------------------------+----------------+
None of the :doc:`fix_modify <fix_modify>` options are relevant to this fix.
No parameter of this fix can be used with the *start/stop* keywords of the
:doc:`run <run>` command. This fix is not invoked during :doc:`energy
minimization <minimize>`.
Restrictions Restrictions
"""""""""""" """"""""""""

View File

@ -145,16 +145,16 @@ parameters, see the :doc:`How-To <Howto_dispersion>` discussion.
The *fftbench* keyword applies only to PPPM. It is off by default. If The *fftbench* keyword applies only to PPPM. It is off by default. If
this option is turned on, LAMMPS will perform a short FFT benchmark this option is turned on, LAMMPS will perform a short FFT benchmark
computation and report its timings, and will thus finish a some seconds computation and report its timings, and will thus finish some seconds
later than it would if this option were off. later than it would if this option were off.
---------- ----------
The *force/disp/real* and *force/disp/kspace* keywords set the force The *force/disp/real* and *force/disp/kspace* keywords set the force
accuracy for the real and space computations for the dispersion part accuracy for the real and reciprocal space computations for the dispersion
of pppm/disp. As shown in :ref:`(Isele-Holder) <Isele-Holder1>`, optimal part of pppm/disp. As shown in :ref:`(Isele-Holder) <Isele-Holder1>`,
performance and accuracy in the results is obtained when these values optimal performance and accuracy in the results is obtained when these
are different. values are different.
---------- ----------
@ -413,10 +413,10 @@ slab correction has also been extended to point dipole interactions
---------- ----------
The *force/disp/real* and *force/disp/kspace* keywords set the force The *force/disp/real* and *force/disp/kspace* keywords set the force
accuracy for the real and space computations for the dispersion part accuracy for the real and reciprocal space computations for the dispersion
of pppm/disp. As shown in :ref:`(Isele-Holder) <Isele-Holder1>`, optimal part of pppm/disp. As shown in :ref:`(Isele-Holder) <Isele-Holder1>`,
performance and accuracy in the results is obtained when these values optimal performance and accuracy in the results is obtained when these
are different. values are different.
The *disp/auto* option controls whether the pppm/disp is allowed to The *disp/auto* option controls whether the pppm/disp is allowed to
generate PPPM parameters automatically. If set to *no*\ , parameters generate PPPM parameters automatically. If set to *no*\ , parameters

View File

@ -39,15 +39,9 @@ pair_style eam/alloy/opt command
pair_style eam/cd command pair_style eam/cd command
========================= =========================
pair_style eam/cd/omp command
=============================
pair_style eam/cd/old command pair_style eam/cd/old command
============================= =============================
pair_style eam/cd/old/omp command
=================================
pair_style eam/fs command pair_style eam/fs command
========================= =========================

View File

@ -28,7 +28,9 @@ Syntax
* flagHI (optional) = 0/1 to exclude/include 1/r hydrodynamic interactions * flagHI (optional) = 0/1 to exclude/include 1/r hydrodynamic interactions
* flagVF (optional) = 0/1 to exclude/include volume fraction corrections in the long-range isotropic terms * flagVF (optional) = 0/1 to exclude/include volume fraction corrections in the long-range isotropic terms
**Examples:** (all assume radius = 1) Examples
""""""""
(all assume radius = 1)
.. code-block:: LAMMPS .. code-block:: LAMMPS

View File

@ -22,7 +22,9 @@ Syntax
* flagHI (optional) = 0/1 to exclude/include 1/r hydrodynamic interactions * flagHI (optional) = 0/1 to exclude/include 1/r hydrodynamic interactions
* flagVF (optional) = 0/1 to exclude/include volume fraction corrections in the long-range isotropic terms * flagVF (optional) = 0/1 to exclude/include volume fraction corrections in the long-range isotropic terms
**Examples:** (all assume radius = 1) Examples
""""""""
(all assume radius = 1)
.. code-block:: LAMMPS .. code-block:: LAMMPS

View File

@ -8,7 +8,14 @@ Syntax
.. code-block:: LAMMPS .. code-block:: LAMMPS
reset_ids reset_ids keyword values ...
* zero or more keyword/value pairs may be appended
* keyword = *sort*
.. parsed-literal::
*sort* value = *yes* or *no*
Examples Examples
"""""""" """"""""
@ -16,6 +23,7 @@ Examples
.. code-block:: LAMMPS .. code-block:: LAMMPS
reset_ids reset_ids
reset_ids sort yes
Description Description
""""""""""" """""""""""
@ -33,11 +41,32 @@ e.g. due to atoms moving outside a simulation box with fixed
boundaries (see the "boundary command"), or due to evaporation (see boundaries (see the "boundary command"), or due to evaporation (see
the "fix evaporate" command). the "fix evaporate" command).
Note that the resetting of IDs is not really a compression, where gaps If the *sort* keyword is used with a setting of *yes*, then the
in atom IDs are removed by decrementing atom IDs that are larger. assignment of new atom IDs will be the same no matter how many
Instead the IDs for all atoms are erased, and new IDs are assigned so processors LAMMPS is running on. This is done by first doing a
that the atoms owned by an individual processor have consecutive IDs, spatial sort of all the atoms into bins and sorting them within each
as the :doc:`create_atoms <create_atoms>` command explains. bin. Because the set of bins is independent of the number of
processors, this enables a consistent assignment of new IDs to each
atom.
This can be useful to do after using the "create_atoms" command and/or
"replicate" command. In general those commands do not guarantee
assignment of the same atom ID to the same physical atom when LAMMPS
is run on different numbers of processors. Enforcing consistent IDs
can be useful for debugging or comparing output from two different
runs.
Note that the spatial sort requires communication of atom IDs and
coordinates between processors in an all-to-all manner. This is done
efficiently in LAMMPS, but it is more expensive than how atom IDs are
reset without sorting.
Note that whether sorting or not, the resetting of IDs is not a
compression, where gaps in atom IDs are removed by decrementing atom
IDs that are larger. Instead the IDs for all atoms are erased, and
new IDs are assigned so that the atoms owned by an individual
processor have consecutive IDs, as the :doc:`create_atoms
<create_atoms>` command explains.
.. note:: .. note::
@ -59,4 +88,7 @@ Related commands
:doc:`delete_atoms <delete_atoms>` :doc:`delete_atoms <delete_atoms>`
**Default:** none Default
"""""""
By default, *sort* is no.

View File

@ -150,8 +150,8 @@ timestep, angle interactions computed 4x, pair interactions computed
The :doc:`timestep <timestep>` command sets the large timestep for the The :doc:`timestep <timestep>` command sets the large timestep for the
outermost rRESPA level. Thus if the 3 loop factors are "2 2 2" for outermost rRESPA level. Thus if the 3 loop factors are "2 2 2" for
4-level rRESPA, and the outer timestep is set to 4.0 fmsec, then the 4-level rRESPA, and the outer timestep is set to 4.0 fs, then the
inner timestep would be 8x smaller or 0.5 fmsec. All other LAMMPS inner timestep would be 8x smaller or 0.5 fs. All other LAMMPS
commands that specify number of timesteps (e.g. :doc:`thermo <thermo>` commands that specify number of timesteps (e.g. :doc:`thermo <thermo>`
for thermo output every N steps, :doc:`neigh_modify delay/every <neigh_modify>` parameters, :doc:`dump <dump>` every N for thermo output every N steps, :doc:`neigh_modify delay/every <neigh_modify>` parameters, :doc:`dump <dump>` every N
steps, etc) refer to the outermost timesteps. steps, etc) refer to the outermost timesteps.
@ -213,10 +213,10 @@ With that caveat, a few rules-of-thumb may be useful in selecting
simulations using the CHARMM or a similar all-atom force field, but simulations using the CHARMM or a similar all-atom force field, but
the concepts are adaptable to other problems. Without SHAKE, bonds the concepts are adaptable to other problems. Without SHAKE, bonds
involving hydrogen atoms exhibit high-frequency vibrations and require involving hydrogen atoms exhibit high-frequency vibrations and require
a timestep on the order of 0.5 fmsec in order to conserve energy. The a timestep on the order of 0.5 fs in order to conserve energy. The
relatively inexpensive force computations for the bonds, angles, relatively inexpensive force computations for the bonds, angles,
impropers, and dihedrals can be computed on this innermost 0.5 fmsec impropers, and dihedrals can be computed on this innermost 0.5 fs
step. The outermost timestep cannot be greater than 4.0 fmsec without step. The outermost timestep cannot be greater than 4.0 fs without
risking energy drift. Smooth switching of forces between the levels risking energy drift. Smooth switching of forces between the levels
of the rRESPA hierarchy is also necessary to avoid drift, and a 1-2 of the rRESPA hierarchy is also necessary to avoid drift, and a 1-2
angstrom "healing distance" (the distance between the outer and inner angstrom "healing distance" (the distance between the outer and inner
@ -230,14 +230,14 @@ simulations:
run_style respa 4 2 2 2 inner 2 4.5 6.0 middle 3 8.0 10.0 outer 4 run_style respa 4 2 2 2 inner 2 4.5 6.0 middle 3 8.0 10.0 outer 4
With these settings, users can expect good energy conservation and With these settings, users can expect good energy conservation and
roughly a 2.5 fold speedup over the *verlet* style with a 0.5 fmsec roughly a 2.5 fold speedup over the *verlet* style with a 0.5 fs
timestep. timestep.
If SHAKE is used with the *respa* style, time reversibility is lost, If SHAKE is used with the *respa* style, time reversibility is lost,
but substantially longer time steps can be achieved. For biomolecular but substantially longer time steps can be achieved. For biomolecular
simulations using the CHARMM or similar all-atom force field, bonds simulations using the CHARMM or similar all-atom force field, bonds
involving hydrogen atoms exhibit high frequency vibrations and require involving hydrogen atoms exhibit high frequency vibrations and require
a time step on the order of 0.5 fmsec in order to conserve energy. a time step on the order of 0.5 fs in order to conserve energy.
These high frequency modes also limit the outer time step sizes since These high frequency modes also limit the outer time step sizes since
the modes are coupled. It is therefore desirable to use SHAKE with the modes are coupled. It is therefore desirable to use SHAKE with
respa in order to freeze out these high frequency motions and increase respa in order to freeze out these high frequency motions and increase
@ -253,7 +253,7 @@ rRESPA:
With these settings, users can expect good energy conservation and With these settings, users can expect good energy conservation and
roughly a 1.5 fold speedup over the *verlet* style with SHAKE and a roughly a 1.5 fold speedup over the *verlet* style with SHAKE and a
2.0 fmsec timestep. 2.0 fs timestep.
For non-biomolecular simulations, the *respa* style can be For non-biomolecular simulations, the *respa* style can be
advantageous if there is a clear separation of time scales - fast and advantageous if there is a clear separation of time scales - fast and

View File

@ -28,7 +28,8 @@ Syntax
*angle* value = *yes* or *no* *angle* value = *yes* or *no*
*dihedral* value = *yes* or *no* *dihedral* value = *yes* or *no*
Examples: Examples
""""""""
.. code-block:: LAMMPS .. code-block:: LAMMPS

View File

@ -46,22 +46,22 @@ Related commands
Default Default
""""""" """""""
+--------------------------------+------------+-----------------------+ +--------------------------------+---------------+-----------------------+
| choice of :doc:`units <units>` | time units | default timestep size | | choice of :doc:`units <units>` | time units | default timestep size |
+--------------------------------+------------+-----------------------+ +--------------------------------+---------------+-----------------------+
| lj | tau | 0.005 tau | | lj | :math:`\tau` | 0.005 :math:`\tau` |
+--------------------------------+------------+-----------------------+ +--------------------------------+---------------+-----------------------+
| real | fmsec | 1.0 fmsec | | real | fs | 1.0 fs |
+--------------------------------+------------+-----------------------+ +--------------------------------+---------------+-----------------------+
| metal | psec | 0.001 psec | | metal | ps | 0.001 ps |
+--------------------------------+------------+-----------------------+ +--------------------------------+---------------+-----------------------+
| si | sec | 1.0e-8 sec (10 nsec) | | si | s | 1.0e-8 s (10 ns) |
+--------------------------------+------------+-----------------------+ +--------------------------------+---------------+-----------------------+
| cgs | sec | 1.0e-8 sec (10 nsec) | | cgs | s | 1.0e-8 s (10 ns) |
+--------------------------------+------------+-----------------------+ +--------------------------------+---------------+-----------------------+
| electron | fmsec | 0.001 fmsec | | electron | fs | 0.001 fs |
+--------------------------------+------------+-----------------------+ +--------------------------------+---------------+-----------------------+
| micro | usec | 2.0 usec | | micro | :math:`\mu`\ s| 2.0 :math:`\mu`\ s |
+--------------------------------+------------+-----------------------+ +--------------------------------+---------------+-----------------------+
| nano | nsec | 0.00045 nsec | | nano | ns | 0.00045 ns |
+--------------------------------+------------+-----------------------+ +--------------------------------+---------------+-----------------------+

View File

@ -203,7 +203,7 @@ For style *nano*\ , these are the units:
The units command also sets the timestep size and neighbor skin The units command also sets the timestep size and neighbor skin
distance to default values for each style: distance to default values for each style:
* For style *lj* these are dt = 0.005 tau and skin = 0.3 sigma. * For style *lj* these are dt = 0.005 :math:`\tau` and skin = 0.3 :math:`\sigma`.
* For style *real* these are dt = 1.0 femtoseconds and skin = 2.0 Angstroms. * For style *real* these are dt = 1.0 femtoseconds and skin = 2.0 Angstroms.
* For style *metal* these are dt = 0.001 picoseconds and skin = 2.0 Angstroms. * For style *metal* these are dt = 0.001 picoseconds and skin = 2.0 Angstroms.
* For style *si* these are dt = 1.0e-8 seconds and skin = 0.001 meters. * For style *si* these are dt = 1.0e-8 seconds and skin = 0.001 meters.

View File

@ -225,8 +225,8 @@ body defined by the fix, as described above.
The *units* keyword is used by *set* and *ramp*\ . If units = box, The *units* keyword is used by *set* and *ramp*\ . If units = box,
the velocities and coordinates specified in the velocity command are the velocities and coordinates specified in the velocity command are
in the standard units described by the :doc:`units <units>` command in the standard units described by the :doc:`units <units>` command
(e.g. Angstroms/fmsec for real units). If units = lattice, velocities (e.g. Angstroms/fs for real units). If units = lattice, velocities
are in units of lattice spacings per time (e.g. spacings/fmsec) and are in units of lattice spacings per time (e.g. spacings/fs) and
coordinates are in lattice spacings. The :doc:`lattice <lattice>` coordinates are in lattice spacings. The :doc:`lattice <lattice>`
command must have been previously used to define the lattice spacing. command must have been previously used to define the lattice spacing.

View File

@ -136,6 +136,7 @@ atan
atc atc
AtC AtC
ATC ATC
athermal
athomps athomps
atm atm
atomeye atomeye
@ -226,6 +227,7 @@ Bfrac
bgq bgq
Bh Bh
Bialke Bialke
bicrystal
Biersack Biersack
bigbig bigbig
bigint bigint
@ -287,6 +289,7 @@ br
Branduardi Branduardi
Branicio Branicio
brennan brennan
Brien
Brilliantov Brilliantov
Broadwell Broadwell
Broglie Broglie
@ -633,7 +636,6 @@ dipolar
dir dir
Direc Direc
dirname dirname
disarmmd
discoverable discoverable
discretization discretization
discretized discretized
@ -726,6 +728,7 @@ ebook
ebt ebt
ec ec
Ec Ec
eco
ecoul ecoul
ecp ecp
Ecut Ecut
@ -950,7 +953,6 @@ fmackay
fmag fmag
fmass fmass
fmm fmm
fmsec
fmx fmx
fmy fmy
fmz fmz
@ -1834,6 +1836,7 @@ Modine
mofff mofff
MOFFF MOFFF
Mohd Mohd
Mohles
mol mol
Mol Mol
molfile molfile
@ -1999,6 +2002,7 @@ Neumann
Nevent Nevent
nevery nevery
Nevery Nevery
newfile
Newns Newns
newtype newtype
Neyts Neyts
@ -2091,9 +2095,9 @@ Nroff
nrun nrun
Ns Ns
Nsample Nsample
nsec
Nskip Nskip
Nspecies Nspecies
ns
nsq nsq
Nstart Nstart
nstats nstats
@ -2177,6 +2181,7 @@ optimizations
orangered orangered
organometallic organometallic
orientational orientational
orientationsFile
orientorder orientorder
Orlikowski Orlikowski
ornl ornl
@ -2366,7 +2371,6 @@ ps
Ps Ps
pscreen pscreen
pscrozi pscrozi
psec
pseudodynamics pseudodynamics
pseudopotential pseudopotential
Pstart Pstart
@ -2471,6 +2475,7 @@ rdc
rdf rdf
RDideal RDideal
rdx rdx
reacter
README README
realtime realtime
reamin reamin
@ -2642,6 +2647,7 @@ Schimansky
Schiotz Schiotz
Schlitter Schlitter
Schmid Schmid
Schratt
Schoen Schoen
Schotte Schotte
Schulten Schulten
@ -3060,6 +3066,7 @@ ul
ulb ulb
Uleft Uleft
uloop uloop
Ulomek
ulsph ulsph
uMech uMech
umin umin

View File

@ -0,0 +1 @@
../../../../potentials/Ni_u3.eam

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,20 @@
units metal
atom_style atomic
read_data data.sigma5
pair_style eam
pair_coeff * * Ni_u3.eam
timestep 0.001
fix integrator all npt temp 750 750 0.1 iso 0 0 0.1
fix eco all orient/eco 0.08 0.25 3.6 sigma5.ori
thermo 100
thermo_style custom step temp etotal press vol f_eco
velocity all create 750 18527782
#dump save all custom 100 orient_eco.dump xs ys zs f_eco[1] f_eco[2]
#dump_modify save sort id
run 1000

View File

@ -0,0 +1,91 @@
LAMMPS (2 Jun 2020)
using 1 OpenMP thread(s) per MPI task
units metal
atom_style atomic
read_data data.sigma5
orthogonal box = (-90.27200752837744 -4.427188724235731e-07 0.0) to (90.27200752837744 88.54377448471462 17.5)
1 by 1 by 1 MPI processor grid
reading atoms ...
25600 atoms
read_data CPU = 0.020 secs
pair_style eam
pair_coeff * * Ni_u3.eam
Reading potential file Ni_u3.eam with DATE: 2007-06-11
timestep 0.001
fix integrator all npt temp 750 750 0.1 iso 0 0 0.1
fix eco all orient/eco 0.08 0.25 3.6 sigma5.ori
thermo 100
thermo_style custom step temp etotal press vol f_eco
velocity all create 750 18527782
#dump save all custom 100 orient_eco.dump xs ys zs f_eco[1] f_eco[2]
#dump_modify save sort id
run 1000
fix orient/eco: cutoff=3.6 norm_fac=30.012843706295556 neighbors=18
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6.8
ghost atom cutoff = 6.8
binsize = 3.4, bins = 54 27 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair eam, perpetual, half/full from (2)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
(2) fix orient/eco, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 42.15 | 42.15 | 42.15 Mbytes
Step Temp TotEng Press Volume f_eco
0 750 -111027.95 15148.458 279755.85 8.7507522e-10
100 422.2475 -110928.85 214.27204 285332.91 -1.0089186
200 388.79514 -110721.02 -481.9574 286443.13 -0.78446905
300 441.87285 -110478.56 -174.88288 286640.75 -1.1348357
400 486.71094 -110211.6 65.075638 287023.56 -1.495318
500 531.12815 -109923.33 97.309245 287552.73 -2.9498072
600 569.82126 -109622.61 -85.73157 288229.35 -4.2855812
700 615.84724 -109317.16 -52.508824 288799.86 -6.5214427
800 666.09015 -109018.62 38.120383 289305.37 -8.4745641
900 705.03939 -108738.66 263.39673 289867.87 -12.4514
1000 735.59866 -108500.52 242.46405 290353.65 -15.427653
Loop time of 109.966 on 1 procs for 1000 steps with 25600 atoms
Performance: 0.786 ns/day, 30.546 hours/ns, 9.094 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 | 27.002 | 27.002 | 27.002 | 0.0 | 24.55
Neigh | 0.83228 | 0.83228 | 0.83228 | 0.0 | 0.76
Comm | 0.12623 | 0.12623 | 0.12623 | 0.0 | 0.11
Output | 0.00080323 | 0.00080323 | 0.00080323 | 0.0 | 0.00
Modify | 81.917 | 81.917 | 81.917 | 0.0 | 74.49
Other | | 0.08839 | | | 0.08
Nlocal: 25600 ave 25600 max 25600 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 28259 ave 28259 max 28259 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 1.59326e+06 ave 1.59326e+06 max 1.59326e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 3.18651e+06 ave 3.18651e+06 max 3.18651e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 3186510
Ave neighs/atom = 124.473
Neighbor list builds = 10
Dangerous builds = 0
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:01:50

View File

@ -0,0 +1,91 @@
LAMMPS (2 Jun 2020)
using 1 OpenMP thread(s) per MPI task
units metal
atom_style atomic
read_data data.sigma5
orthogonal box = (-90.27200752837744 -4.427188724235731e-07 0.0) to (90.27200752837744 88.54377448471462 17.5)
4 by 1 by 1 MPI processor grid
reading atoms ...
25600 atoms
read_data CPU = 0.025 secs
pair_style eam
pair_coeff * * Ni_u3.eam
Reading potential file Ni_u3.eam with DATE: 2007-06-11
timestep 0.001
fix integrator all npt temp 750 750 0.1 iso 0 0 0.1
fix eco all orient/eco 0.08 0.25 3.6 sigma5.ori
thermo 100
thermo_style custom step temp etotal press vol f_eco
velocity all create 750 18527782
#dump save all custom 100 orient_eco.dump xs ys zs f_eco[1] f_eco[2]
#dump_modify save sort id
run 1000
fix orient/eco: cutoff=3.6 norm_fac=30.012843706295556 neighbors=18
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6.8
ghost atom cutoff = 6.8
binsize = 3.4, bins = 54 27 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair eam, perpetual, half/full from (2)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
(2) fix orient/eco, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 11.69 | 11.7 | 11.72 Mbytes
Step Temp TotEng Press Volume f_eco
0 750 -111027.95 15148.458 279755.85 8.749339e-10
100 422.2475 -110928.85 214.27204 285332.91 -1.0089186
200 388.79514 -110721.02 -481.9574 286443.13 -0.78446905
300 441.87285 -110478.56 -174.88288 286640.75 -1.1348357
400 486.71094 -110211.6 65.075638 287023.56 -1.495318
500 531.12815 -109923.33 97.309245 287552.73 -2.9498072
600 569.82126 -109622.61 -85.73157 288229.35 -4.2855812
700 615.84724 -109317.16 -52.508824 288799.86 -6.5214427
800 666.09015 -109018.62 38.120383 289305.37 -8.4745641
900 705.03939 -108738.66 263.39673 289867.87 -12.4514
1000 735.59866 -108500.52 242.46405 290353.65 -15.427653
Loop time of 29.6634 on 4 procs for 1000 steps with 25600 atoms
Performance: 2.913 ns/day, 8.240 hours/ns, 33.712 timesteps/s
98.6% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 7.0794 | 7.1053 | 7.1325 | 0.7 | 23.95
Neigh | 0.20947 | 0.21088 | 0.21231 | 0.2 | 0.71
Comm | 0.15708 | 0.18471 | 0.22338 | 6.7 | 0.62
Output | 0.00032616 | 0.00064683 | 0.0015936 | 0.0 | 0.00
Modify | 22.105 | 22.118 | 22.139 | 0.3 | 74.56
Other | | 0.0437 | | | 0.15
Nlocal: 6400 ave 6421 max 6384 min
Histogram: 1 1 0 0 0 1 0 0 0 1
Nghost: 9872.5 ave 9892 max 9855 min
Histogram: 1 0 0 1 0 1 0 0 0 1
Neighs: 398314 ave 400737 max 395743 min
Histogram: 1 0 0 1 0 0 0 1 0 1
FullNghs: 796628 ave 801194 max 792566 min
Histogram: 1 0 1 0 0 0 1 0 0 1
Total # of neighbors = 3186510
Ave neighs/atom = 124.473
Neighbor list builds = 10
Dangerous builds = 0
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:29

View File

@ -0,0 +1,6 @@
1.671685 0.557228 1.76212
0.557228 -1.671685 1.76212
2.228913 -1.114456 0.000000
0.557228 1.671685 1.76212
1.671685 -0.557228 1.76212
2.228913 1.114456 0.000000

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,647 @@
LAMMPS (2 Jun 2020)
using 1 OpenMP thread(s) per MPI task
# 3d EAM surface for local HD
# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92
# hop event on (100) surface is same distance
# exchange event is 2 atoms moving same distance
variable Tequil index 400.0
variable Vmax index 0.4
variable qfactor index 0.3
variable cutbond index 3.2
variable Dcut index 10.0
variable cutevent index 1.1
variable alpha index 200.0
variable boost index 4000.0
variable ghostcut index 12.0
variable steps index 2000
variable nevent index 100
variable nx index 2
variable ny index 2
variable zoom index 1.8
variable seed index 3875984
variable tol index 1.0e-15
variable add index 50
units metal
atom_style atomic
atom_modify map array
boundary p p p
comm_modify cutoff ${ghostcut}
comm_modify cutoff 12.0
lattice fcc 3.92
Lattice spacing in x,y,z = 3.92 3.92 3.92
region box block 0 6 0 6 0 4
create_box 2 box
Created orthogonal box = (0.0 0.0 0.0) to (23.52 23.52 15.68)
2 by 2 by 1 MPI processor grid
create_atoms 1 box
Created 576 atoms
create_atoms CPU = 0.000 seconds
mass * 1.0
change_box all z final -0.1 5.0 boundary p p f
orthogonal box = (0.0 0.0 -0.392) to (23.52 23.52 19.6)
WARNING: Reset image flags for non-periodic boundary (src/domain.cpp:1909)
# replicate in xy
replicate ${nx} ${ny} 1
replicate 2 ${ny} 1
replicate 2 2 1
orthogonal box = (0.0 0.0 -0.392) to (47.04 47.04 19.6)
2 by 2 by 1 MPI processor grid
2304 atoms
replicate CPU = 0.000324488 secs
# add adatoms
include adatoms.list.${add}
include adatoms.list.50
create_atoms 1 single 5 9 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 4.5 7.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 6 6 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 5 6 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 4.5 1.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 6.5 7.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 10.5 5.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 2.5 1.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 3.5 4.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 0 10 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 11 10 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 6.5 10.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 3.5 5.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 7.5 10.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 1.5 1.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 1.5 6.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 7 2 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 4 0 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 9 0 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 4 9 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 10 7 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 4 4 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 9.5 2.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 1 5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 7 10 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 0 4 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 1 10 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 7.5 6.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 4 10 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 6.5 3.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 3 6 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 8.5 4.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 6.5 0.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 1 4 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 8.5 11.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 3 9 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 2 3 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 6.5 8.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 1 0 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 0.5 10.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 4 11 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 3 5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 0 1 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 2 11 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 2 0 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 7.5 11.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 1 7 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 3.5 10.5 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 0 2 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
create_atoms 1 single 8 4 4
Created 1 atoms
create_atoms CPU = 0.000 seconds
# define frozen substrate and mobile atoms
region base block INF INF INF INF 0 1.8
set region base type 2
1152 settings made for typegroup base type 2
1152 atoms in group base
group mobile type 1
1202 atoms in group mobile
# pair style
pair_style eam/alloy
pair_coeff * * ptvoterlammps.eam Pt Pt
neighbor 0.5 bin
neigh_modify every 1 delay 5 check yes
fix 1 mobile nve
fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes
fix 2 mobile langevin 400.0 ${Tequil} 1.0 ${seed} zero yes
fix 2 mobile langevin 400.0 400.0 1.0 ${seed} zero yes
fix 2 mobile langevin 400.0 400.0 1.0 3875984 zero yes
timestep 0.005
compute tmobile mobile temp
thermo 100
thermo_modify temp tmobile
WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:486)
# thermal equilibration
run 1000
Neighbor list info ...
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6.07583
ghost atom cutoff = 12
binsize = 3.03792, bins = 16 16 7
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair eam/alloy, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 3.443 | 3.443 | 3.443 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -13067.188 0 -13067.188 -53763.139
100 216.49187 -13065.694 0 -13032.085 -24077.115
200 285.11905 -13057.047 0 -13012.785 -38815.844
300 321.67264 -13048.005 0 -12998.068 -29296.124
400 352.90893 -13045.707 0 -12990.92 -34630.884
500 371.9393 -13041.234 0 -12983.494 -28913.827
600 379.08135 -13040.06 0 -12981.211 -33399.8
700 388.73836 -13039.691 0 -12979.343 -29446.954
800 402.13628 -13040.606 0 -12978.178 -33026.861
900 389.43806 -13036.884 0 -12976.427 -30328.658
1000 388.66198 -13037.479 0 -12977.142 -30859.145
Loop time of 0.572404 on 4 procs for 1000 steps with 2354 atoms
Performance: 754.712 ns/day, 0.032 hours/ns, 1747.018 timesteps/s
96.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 | 0.45189 | 0.4594 | 0.46833 | 0.9 | 80.26
Neigh | 0.039092 | 0.039772 | 0.040386 | 0.3 | 6.95
Comm | 0.040249 | 0.051709 | 0.060548 | 3.4 | 9.03
Output | 0.00014281 | 0.0002625 | 0.00061965 | 0.0 | 0.05
Modify | 0.017148 | 0.017244 | 0.017364 | 0.1 | 3.01
Other | | 0.004017 | | | 0.70
Nlocal: 588.5 ave 592 max 581 min
Histogram: 1 0 0 0 0 0 0 1 0 2
Nghost: 1964 ave 1973 max 1959 min
Histogram: 2 0 0 1 0 0 0 0 0 1
Neighs: 14148.8 ave 14283 max 13931 min
Histogram: 1 0 0 0 0 0 1 1 0 1
Total # of neighbors = 56595
Ave neighs/atom = 24.0421
Neighbor list builds = 91
Dangerous builds = 0
reset_timestep 0
# pin base so will not move during quenches
fix freeze base setforce 0.0 0.0 0.0
# event detection
compute event all event/displace ${cutevent}
compute event all event/displace 1.1
# hyper/local
fix HL mobile hyper/local ${cutbond} ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost}
fix HL mobile hyper/local 3.2 ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost}
fix HL mobile hyper/local 3.2 0.3 ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost}
fix HL mobile hyper/local 3.2 0.3 0.4 ${Tequil} ${Dcut} ${alpha} ${boost}
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 ${Dcut} ${alpha} ${boost}
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 ${alpha} ${boost}
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 ${boost}
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 4000.0
# thermo output
thermo_style custom step temp pe f_HL f_HL[*]
WARNING: New thermo_style command, previous thermo_modify settings will be lost (src/output.cpp:709)
thermo_modify lost ignore
thermo_modify temp tmobile
WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:486)
thermo ${nevent}
thermo 100
# dump
region substrate block INF INF INF INF 1.8 3.8
region adatoms block INF INF INF INF 3.8 INF
variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms)
dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01
dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom 1.8 adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01
dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green
# run
hyper ${steps} ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1
hyper 2000 ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1
hyper 2000 100 HL event min ${tol} ${tol} 1000 1000 dump 1
hyper 2000 100 HL event min 1.0e-15 ${tol} 1000 1000 dump 1
hyper 2000 100 HL event min 1.0e-15 1.0e-15 1000 1000 dump 1
WARNING: Resetting reneighboring criteria during hyper (src/REPLICA/hyper.cpp:131)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6.07583
ghost atom cutoff = 12
binsize = 3.03792, bins = 16 16 7
3 neighbor lists, perpetual/occasional/extra = 1 2 0
(1) pair eam/alloy, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d/newton
bin: standard
(2) fix hyper/local, occasional
attributes: full, newton on, cut 10
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(3) fix hyper/local, occasional, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 6.786 | 6.786 | 6.786 Mbytes
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
0 388.66198 -13037.479 0 1 0 0 0.4 1 0 0 0 0 0 0 0 0 0 0 1e+20 0 0 0 0 0 0 0 0 0 0 1 0
68 388.66198 -13101.057 0 1 0 0 0.4 1 0 0 0 0 0 0 0 0 0 0 1e+20 0 0 0 0 0 0 1360 0 0 0 1 0
Loop time of 0.078882 on 4 procs for 68 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
0 388.66198 -13037.479 2.1560986 0 7 0.19075505 0.4 0 0 0 5.9276206 1380.4406 0 0 0 0 3.2725891 0 1e+20 0 0 0 0 0 0 0 0 0 0 10345.213 0
100 388.08547 -13035.803 1.9458797 5579.52 7 0.22444002 0.4 0.99435481 0.98307948 1.0037683 5.9276206 1380.4406 7612.921 5.23 0 0 3.4801431 0.99683836 0.98307948 1.0037683 0 0 0 0 0 2000 0 0 0 4811.1645 0
Loop time of 0.0768972 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
100 388.08547 -13035.803 1.9458797 5579.52 7 0.22444002 0.4 0.99435481 0.98307948 1.0037683 5.9276206 1380.4406 7612.921 5.23 0 0 3.4801431 0.99683836 0.98307948 1.0037683 0 0 0 0 0 2000 0 0 0 4811.1645 0
171 388.08547 -13101.057 1.9458797 5579.52 7 0.22444002 0.4 0.99435481 0.98307948 1.0037683 5.9276206 1380.4406 7612.921 3.0584795 0 0 3.4801431 0.99683836 0.98307948 1.0037683 0 0 0 0 0 3420 0 0 0 4811.1645 0
Loop time of 0.0822812 on 4 procs for 71 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
100 388.08547 -13035.803 1.9458309 5579.52 7 0.22444002 0.4 0.99435481 0.98307948 1.0037683 5.9276206 1380.4406 7612.921 5.23 0 0 3.4801431 0.99683836 0.98307948 1.0037683 0 0 0 0 0 2000 0 0 0 4806.677 0
200 401.00579 -13036.475 1.7413518 5055.0046 7 0.31164106 0.4 0.99292126 0.97454567 1.0099107 5.9276206 1380.4406 6265.1974 5.8 0.026724138 0 3.7115994 0.99518634 0.97454567 1.0099107 0 0 0 0 0 4000 0 0 0 5975.1486 1
Loop time of 0.0801389 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
200 401.00579 -13036.475 1.7413518 5055.0046 7 0.31164106 0.4 0.99292126 0.97454567 1.0099107 5.9276206 1380.4406 6265.1974 5.8 0.026724138 0 3.7115994 0.99518634 0.97454567 1.0099107 0 0 0 0 0 4000 0 0 0 5975.1486 1
270 401.00579 -13101.057 1.7413518 5055.0046 7 0.31164106 0.4 0.99292126 0.97454567 1.0099107 5.9276206 1380.4406 6265.1974 4.2962963 0.026724138 0 3.7115994 0.99518634 0.97454567 1.0099107 0 0 0 0 0 5400 0 0 0 5975.1486 1
Loop time of 0.0823423 on 4 procs for 70 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
200 401.00579 -13036.475 1.7412451 5055.0046 7 0.31164106 0.4 0.99292126 0.97454567 1.0099107 5.9276206 1380.4406 6265.1974 5.8 0.026724138 0 3.7115994 0.99518634 0.97454567 1.0099107 0 0 0 0 0 4000 0 0 0 5960.9703 1
300 393.06665 -13036.447 1.2104123 4309.6701 6 0.25677049 0.4 0.99077715 0.96163085 1.0121227 5.9276206 1380.4406 5967.5417 5.82 0.03722795 0.0011454754 3.7958861 0.99407566 0.96163085 1.0121227 0 0 0 0 0 6000 0 0 0 2438.7867 0
Loop time of 0.07828 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
300 393.06665 -13036.447 1.2104123 4309.6701 6 0.25677049 0.4 0.99077715 0.96163085 1.0121227 5.9276206 1380.4406 5967.5417 5.82 0.03722795 0.0011454754 3.7958861 0.99407566 0.96163085 1.0121227 0 0 0 0 0 6000 0 0 0 2438.7867 0
371 393.06665 -13101.057 1.2104123 4309.6701 6 0.25677049 0.4 0.99077715 0.96163085 1.0121227 5.9276206 1380.4406 5967.5417 4.7061995 0.03722795 0.0011454754 3.7958861 0.99407566 0.96163085 1.0121227 0 0 0 0 0 7420 0 0 0 2438.7867 0
Loop time of 0.0849175 on 4 procs for 71 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
300 393.06665 -13036.447 1.210401 4309.6701 6 0.25677049 0.4 0.99077715 0.96163085 1.0121227 5.9276206 1380.4406 5967.5417 5.82 0.03722795 0.0011454754 3.7958861 0.99407566 0.96163085 1.0121227 0 0 0 0 0 6000 0 0 0 2432.9129 0
400 395.31214 -13036.548 0.97543536 3697.18 5 0.29627573 0.4 0.99121527 0.95719757 1.0171656 5.9276206 1380.4406 5405.5572 5.8525 0.064502349 0.00085433575 3.8763827 0.99330778 0.95719757 1.0171656 0 0 0 0 0 8000 0 0 0 1494.721 0
Loop time of 0.0789399 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
400 395.31214 -13036.548 0.97543536 3697.18 5 0.29627573 0.4 0.99121527 0.95719757 1.0171656 5.9276206 1380.4406 5405.5572 5.8525 0.064502349 0.00085433575 3.8763827 0.99330778 0.95719757 1.0171656 0 0 0 0 0 8000 0 0 0 1494.721 0
472 395.31214 -13101.057 0.97543536 3697.18 5 0.29627573 0.4 0.99121527 0.95719757 1.0171656 5.9276206 1380.4406 5405.5572 4.9597458 0.064502349 0.00085433575 3.8763827 0.99330778 0.95719757 1.0171656 0 0 0 0 0 9440 0 0 0 1494.721 0
Loop time of 0.0826263 on 4 procs for 72 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
400 395.31214 -13036.548 0.97546459 3697.18 5 0.29627573 0.4 0.99121527 0.95719757 1.0171656 5.9276206 1380.4406 5405.5572 5.8525 0.064502349 0.00085433575 3.8763827 0.99330778 0.95719757 1.0171656 0 0 0 0 0 8000 0 0 0 1495.2683 0
500 407.51943 -13034.684 1.5129292 3762.6056 7 0.32103986 0.4 0.99260954 0.95025478 1.023175 5.9276206 1380.4406 4945.9788 5.798 0.092100724 0.00068989307 3.8763827 0.99301979 0.95024238 1.023175 0 0 0 0 0 10000 0 0 0 2846.6451 1
Loop time of 0.0785343 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
500 407.51943 -13034.684 1.5129292 3762.6056 7 0.32103986 0.4 0.99260954 0.95025478 1.023175 5.9276206 1380.4406 4945.9788 5.798 0.092100724 0.00068989307 3.8763827 0.99301979 0.95024238 1.023175 0 0 0 0 0 10000 0 0 0 2846.6451 1
570 407.51943 -13101.057 1.5129292 3762.6056 7 0.32103986 0.4 0.99260954 0.95025478 1.023175 5.9276206 1380.4406 4945.9788 5.0859649 0.092100724 0.00068989307 3.8763827 0.99301979 0.95024238 1.023175 0 0 0 0 0 11400 0 0 0 2846.6451 1
Loop time of 0.0831875 on 4 procs for 70 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
500 407.51943 -13034.684 1.5129263 3762.6056 7 0.32103986 0.4 0.99260954 0.95025478 1.023175 5.9276206 1380.4406 4945.9788 5.798 0.092100724 0.00068989307 3.8763827 0.99301979 0.95024238 1.023175 0 0 0 0 0 10000 0 0 0 2845.3486 1
600 403.68879 -13034.437 1.6119602 3538.1789 8 0.37263827 0.4 0.99175914 0.94814388 1.0294169 5.9276206 1380.4406 4879.0252 5.805 0.091587712 0.0054550675 3.8763827 0.99287249 0.94770585 1.0294169 0 0 0 0 0 12000 0 0 0 4550.0103 1
Loop time of 0.0778956 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
600 403.68879 -13034.437 1.6119602 3538.1789 8 0.37263827 0.4 0.99175914 0.94814388 1.0294169 5.9276206 1380.4406 4879.0252 5.805 0.091587712 0.0054550675 3.8763827 0.99287249 0.94770585 1.0294169 0 0 0 0 0 12000 0 0 0 4550.0103 1
673 403.68879 -13101.057 1.6119602 3538.1789 8 0.37263827 0.4 0.99175914 0.94814388 1.0294169 5.9276206 1380.4406 4879.0252 5.1753343 0.091587712 0.0054550675 3.8763827 0.99287249 0.94770585 1.0294169 0 0 0 0 0 13460 0 0 0 4550.0103 1
Loop time of 0.0866084 on 4 procs for 73 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
600 403.68879 -13034.437 1.6118577 3538.1789 8 0.37263827 0.4 0.99175914 0.94814388 1.0294169 5.9276206 1380.4406 4879.0252 5.805 0.091587712 0.0054550675 3.8763827 0.99287249 0.94770585 1.0294169 0 0 0 0 0 12000 0 0 0 4540.524 1
700 402.40951 -13034.611 0.81457022 3996.0376 5 0.31795282 0.4 0.99307568 0.9469785 1.0356629 5.9276206 1380.4406 4633.0803 5.7657143 0.10332012 0.0047076313 3.8763827 0.9927955 0.94558506 1.0356629 0 0 0 0 0 14000 0 0 0 2433.3681 2
Loop time of 0.0783963 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
700 402.40951 -13034.611 0.81457022 3996.0376 5 0.31795282 0.4 0.99307568 0.9469785 1.0356629 5.9276206 1380.4406 4633.0803 5.7657143 0.10332012 0.0047076313 3.8763827 0.9927955 0.94558506 1.0356629 0 0 0 0 0 14000 0 0 0 2433.3681 2
773 402.40951 -13101.057 0.81457022 3996.0376 5 0.31795282 0.4 0.99307568 0.9469785 1.0356629 5.9276206 1380.4406 4633.0803 5.221216 0.10332012 0.0047076313 3.8763827 0.9927955 0.94558506 1.0356629 0 0 0 0 0 15460 0 0 0 2433.3681 2
Loop time of 0.0879632 on 4 procs for 73 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
700 402.40951 -13034.611 0.8145522 3996.0376 5 0.31795282 0.4 0.99307568 0.9469785 1.0356629 5.9276206 1380.4406 4633.0803 5.7657143 0.10332012 0.0047076313 3.8763827 0.9927955 0.94558506 1.0356629 0 0 0 0 0 14000 0 0 0 2429.4864 2
800 404.0219 -13035.35 2.0280594 2522.768 9 0.29614163 0.4 0.99235515 0.94241897 1.041911 5.9276206 1380.4406 4611.5881 5.75 0.1123913 0.0041304348 3.8763827 0.99277876 0.94229366 1.041911 0 0 0 0 0 16000 0 0 0 3341.5414 0
Loop time of 0.0830372 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
800 404.0219 -13035.35 2.0280594 2522.768 9 0.29614163 0.4 0.99235515 0.94241897 1.041911 5.9276206 1380.4406 4611.5881 5.75 0.1123913 0.0041304348 3.8763827 0.99277876 0.94229366 1.041911 0 0 0 0 0 16000 0 0 0 3341.5414 0
875 404.0219 -13101.057 2.0280594 2522.768 9 0.29614163 0.4 0.99235515 0.94241897 1.041911 5.9276206 1380.4406 4611.5881 5.2571429 0.1123913 0.0041304348 3.8763827 0.99277876 0.94229366 1.041911 0 0 0 0 0 17500 0 0 0 3341.5414 0
Loop time of 0.106053 on 4 procs for 75 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
800 404.0219 -13035.35 2.0280349 2522.768 9 0.29614163 0.4 0.99235515 0.94241897 1.041911 5.9276206 1380.4406 4611.5881 5.75 0.1123913 0.0041304348 3.8763827 0.99277876 0.94229366 1.041911 0 0 0 0 0 16000 0 0 0 3339.579 0
900 399.91074 -13034.973 0.95275442 3161.8387 5 0.36638548 0.4 0.99295506 0.93909912 1.0481595 5.9276206 1380.4406 4500.9735 5.7177778 0.12436844 0.0038865138 3.8763827 0.99275079 0.93842885 1.0481595 0 0 0 0 0 18000 0 0 0 1628.7316 2
Loop time of 0.0954949 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
900 399.91074 -13034.973 0.95275442 3161.8387 5 0.36638548 0.4 0.99295506 0.93909912 1.0481595 5.9276206 1380.4406 4500.9735 5.7177778 0.12436844 0.0038865138 3.8763827 0.99275079 0.93842885 1.0481595 0 0 0 0 0 18000 0 0 0 1628.7316 2
976 399.91074 -13102.244 0.95275442 3161.8387 5 0.36638548 0.4 0.99295506 0.93909912 1.0481595 5.9276206 1380.4406 4500.9735 5.272541 0.12436844 0.0038865138 3.8763827 0.99275079 0.93842885 1.0481595 0 0 0 0 0 19520 0 0 0 1628.7316 2
Loop time of 0.0902783 on 4 procs for 76 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
900 399.91074 -13034.973 0.95307991 3160.9514 5 0.42271366 0.4 0.99267641 0.93909912 1.0481595 5.9292845 1379.4982 4500.9735 5.7177778 0.12436844 0.0038865138 3.8763827 0.99275079 0.93842885 1.0481595 2.7471779 0 0 0 0 18000 1 1 4 1627.8857 2
1000 417.82316 -13039.554 1.4089391 6086.7002 6 0.2668611 0.4 0.99526586 0.94236305 1.0494983 5.9292845 1379.4982 4302.6407 5.774 0.12573606 0.0034638033 3.8763827 0.99291291 0.93842885 1.0529963 2.7471779 0 0 0 0 20000 1 1 4 10750.027 0
Loop time of 0.0780252 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1000 417.82316 -13039.554 1.4089391 6086.7002 6 0.2668611 0.4 0.99526586 0.94236305 1.0494983 5.9292845 1379.4982 4302.6407 5.774 0.12573606 0.0034638033 3.8763827 0.99291291 0.93842885 1.0529963 2.7471779 0 0 0 0 20000 1 1 4 10750.027 0
1069 417.82316 -13102.244 1.4089391 6086.7002 6 0.2668611 0.4 0.99526586 0.94236305 1.0494983 5.9292845 1379.4982 4302.6407 5.4013096 0.12573606 0.0034638033 3.8763827 0.99291291 0.93842885 1.0529963 2.7471779 0 0 0 0 21380 1 1 4 10750.027 0
Loop time of 0.0806106 on 4 procs for 69 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1000 417.82316 -13039.554 1.4087876 6086.7002 6 0.2668611 0.4 0.99526586 0.94236305 1.0494983 5.9292845 1379.4982 4302.6407 5.774 0.12573606 0.0034638033 3.8763827 0.99291291 0.93842885 1.0529963 2.7471779 0 0 0 0 20000 1 1 4 10700.259 0
1100 388.96194 -13034.299 1.2536756 3347.844 7 0.31351452 0.4 0.99338469 0.94091364 1.0522698 5.9292845 1379.4982 4384.5779 5.7981818 0.11774851 0.0039197241 3.8763827 0.99302197 0.93842885 1.0529963 2.7471779 0 0 0 0 22000 1 1 4 3842.8412 1
Loop time of 0.078698 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1100 388.96194 -13034.299 1.2536756 3347.844 7 0.31351452 0.4 0.99338469 0.94091364 1.0522698 5.9292845 1379.4982 4384.5779 5.7981818 0.11774851 0.0039197241 3.8763827 0.99302197 0.93842885 1.0529963 2.7471779 0 0 0 0 22000 1 1 4 3842.8412 1
1169 388.96194 -13102.244 1.2536756 3347.844 7 0.31351452 0.4 0.99338469 0.94091364 1.0522698 5.9292845 1379.4982 4384.5779 5.4559453 0.11774851 0.0039197241 3.8763827 0.99302197 0.93842885 1.0529963 2.7471779 0 0 0 0 23380 1 1 4 3842.8412 1
Loop time of 0.0793428 on 4 procs for 69 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1100 388.96194 -13034.299 1.2536216 3347.844 7 0.31351452 0.4 0.99338469 0.94091364 1.0522698 5.9292845 1379.4982 4384.5779 5.7981818 0.11774851 0.0039197241 3.8763827 0.99302197 0.93842885 1.0529963 2.7471779 0 0 0 0 22000 1 1 4 3837.378 1
1200 416.13133 -13039.115 1.136132 3568.4524 6 0.35533996 0.4 0.99425562 0.9364246 1.0585182 5.9292845 1379.4982 4306.0803 5.8033333 0.12464101 0.0035898909 4.0254085 0.99310701 0.9364246 1.0585182 2.7471779 0 0 0 0 24000 1 1 4 2979.741 3
Loop time of 0.0783656 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1200 416.13133 -13039.115 1.136132 3568.4524 6 0.35533996 0.4 0.99425562 0.9364246 1.0585182 5.9292845 1379.4982 4306.0803 5.8033333 0.12464101 0.0035898909 4.0254085 0.99310701 0.9364246 1.0585182 2.7471779 0 0 0 0 24000 1 1 4 2979.741 3
1273 416.13133 -13102.244 1.136132 3568.4524 6 0.35533996 0.4 0.99425562 0.9364246 1.0585182 5.9292845 1379.4982 4306.0803 5.470542 0.12464101 0.0035898909 4.0254085 0.99310701 0.9364246 1.0585182 2.7471779 0 0 0 0 25460 1 1 4 2979.741 3
Loop time of 0.0876518 on 4 procs for 73 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1200 416.13133 -13039.115 1.1361057 3568.4524 6 0.35533996 0.4 0.99425562 0.9364246 1.0585182 5.9292845 1379.4982 4306.0803 5.8033333 0.12464101 0.0035898909 4.0254085 0.99310701 0.9364246 1.0585182 2.7471779 0 0 0 0 24000 1 1 4 2976.9031 3
1300 410.00168 -13035.264 0.69108116 2815.6646 5 0.33760803 0.4 0.99554496 0.93639346 1.064754 5.9292845 1379.4982 4219.0606 5.7769231 0.12822903 0.0045272969 4.0475228 0.99322786 0.93631673 1.064754 2.7471779 0 0 0 0 26000 1 1 4 3571.3217 2
Loop time of 0.0806069 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1300 410.00168 -13035.264 0.69108116 2815.6646 5 0.33760803 0.4 0.99554496 0.93639346 1.064754 5.9292845 1379.4982 4219.0606 5.7769231 0.12822903 0.0045272969 4.0475228 0.99322786 0.93631673 1.064754 2.7471779 0 0 0 0 26000 1 1 4 3571.3217 2
1372 410.00168 -13102.244 0.69108116 2815.6646 5 0.33760803 0.4 0.99554496 0.93639346 1.064754 5.9292845 1379.4982 4219.0606 5.4737609 0.12822903 0.0045272969 4.0475228 0.99322786 0.93631673 1.064754 2.7471779 0 0 0 0 27440 1 1 4 3571.3217 2
Loop time of 0.101343 on 4 procs for 72 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1300 410.00168 -13035.264 0.69104928 2815.6646 5 0.33760803 0.4 0.99554496 0.93639346 1.064754 5.9292845 1379.4982 4219.0606 5.7769231 0.12822903 0.0045272969 4.0475228 0.99322786 0.93631673 1.064754 2.7471779 0 0 0 0 26000 1 1 4 3567.5136 2
1400 423.4606 -13036.225 1.703102 2579.4314 7 0.24557477 0.4 0.99782055 0.93345496 1.0682561 5.9292845 1379.4982 4099.3865 5.7721429 0.12609826 0.0042074001 4.0475228 0.99346354 0.93345496 1.0682561 2.7471779 0 0 0 0 28000 1 1 4 2627.7529 0
Loop time of 0.0779268 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1400 423.4606 -13036.225 1.703102 2579.4314 7 0.24557477 0.4 0.99782055 0.93345496 1.0682561 5.9292845 1379.4982 4099.3865 5.7721429 0.12609826 0.0042074001 4.0475228 0.99346354 0.93345496 1.0682561 2.7471779 0 0 0 0 28000 1 1 4 2627.7529 0
1472 423.4606 -13102.244 1.703102 2579.4314 7 0.24557477 0.4 0.99782055 0.93345496 1.0682561 5.9292845 1379.4982 4099.3865 5.4898098 0.12609826 0.0042074001 4.0475228 0.99346354 0.93345496 1.0682561 2.7471779 0 0 0 0 29440 1 1 4 2627.7529 0
Loop time of 0.0863118 on 4 procs for 72 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1400 423.4606 -13036.225 1.7031193 2579.4314 7 0.24557477 0.4 0.99782055 0.93345496 1.0682561 5.9292845 1379.4982 4099.3865 5.7721429 0.12609826 0.0042074001 4.0475228 0.99346354 0.93345496 1.0682561 2.7471779 0 0 0 0 28000 1 1 4 2626.4636 0
1500 417.42191 -13035.425 0.63879915 3265.9276 5 0.29228757 0.4 1.0007582 0.93528148 1.0742773 5.9292845 1379.4982 3967.4215 5.808 0.12396694 0.003902663 4.0475228 0.99383929 0.9320167 1.0742773 2.7471779 0 0 0 0 30000 1 1 4 1469.864 0
Loop time of 0.078608 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1500 417.42191 -13035.425 0.63879915 3265.9276 5 0.29228757 0.4 1.0007582 0.93528148 1.0742773 5.9292845 1379.4982 3967.4215 5.808 0.12396694 0.003902663 4.0475228 0.99383929 0.9320167 1.0742773 2.7471779 0 0 0 0 30000 1 1 4 1469.864 0
1575 417.42191 -13102.244 0.63879915 3265.9276 5 0.29228757 0.4 1.0007582 0.93528148 1.0742773 5.9292845 1379.4982 3967.4215 5.5314286 0.12396694 0.003902663 4.0475228 0.99383929 0.9320167 1.0742773 2.7471779 0 0 0 0 31500 1 1 4 1469.864 0
Loop time of 0.0875254 on 4 procs for 75 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1500 417.42191 -13035.425 0.63881053 3265.9276 5 0.29228757 0.4 1.0007582 0.93528148 1.0742773 5.9292845 1379.4982 3967.4215 5.808 0.12396694 0.003902663 4.0475228 0.99383929 0.9320167 1.0742773 2.7471779 0 0 0 0 30000 1 1 4 1469.1489 0
1600 401.08407 -13036.858 2.3070534 2462.029 9 0.26709092 0.4 1.0019205 0.93145421 1.0802698 5.9292845 1379.4982 3922.9667 5.83625 0.12368816 0.0036410366 4.0475228 0.9942857 0.93077554 1.0802698 2.7471779 0 0 0 0 32000 1 1 4 5228.0098 0
Loop time of 0.0780517 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1600 401.08407 -13036.858 2.3070534 2462.029 9 0.26709092 0.4 1.0019205 0.93145421 1.0802698 5.9292845 1379.4982 3922.9667 5.83625 0.12368816 0.0036410366 4.0475228 0.9942857 0.93077554 1.0802698 2.7471779 0 0 0 0 32000 1 1 4 5228.0098 0
1667 401.08407 -13102.244 2.3070534 2462.029 9 0.26709092 0.4 1.0019205 0.93145421 1.0802698 5.9292845 1379.4982 3922.9667 5.6016797 0.12368816 0.0036410366 4.0475228 0.9942857 0.93077554 1.0802698 2.7471779 0 0 0 0 33340 1 1 4 5228.0098 0
Loop time of 0.0795826 on 4 procs for 67 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1600 401.08407 -13036.858 2.3069745 2462.029 9 0.26709092 0.4 1.0019205 0.93145421 1.0802698 5.9292845 1379.4982 3922.9667 5.83625 0.12368816 0.0036410366 4.0475228 0.9942857 0.93077554 1.0802698 2.7471779 0 0 0 0 32000 1 1 4 5216.9826 0
1700 390.57304 -13035.592 0.75779993 1179.4046 6 0.28725951 0.4 1.0026134 0.9311732 1.0858013 5.9292845 1379.4982 3901.4109 5.8264706 0.12155477 0.003634528 4.0475228 0.99473366 0.93050239 1.0858013 2.7471779 0 0 0 0 34000 1 1 4 400.12853 0
Loop time of 0.0782826 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1700 390.57304 -13035.592 0.75779993 1179.4046 6 0.28725951 0.4 1.0026134 0.9311732 1.0858013 5.9292845 1379.4982 3901.4109 5.8264706 0.12155477 0.003634528 4.0475228 0.99473366 0.93050239 1.0858013 2.7471779 0 0 0 0 34000 1 1 4 400.12853 0
1769 390.57304 -13102.244 0.75779993 1179.4046 6 0.28725951 0.4 1.0026134 0.9311732 1.0858013 5.9292845 1379.4982 3901.4109 5.5992086 0.12155477 0.003634528 4.0475228 0.99473366 0.93050239 1.0858013 2.7471779 0 0 0 0 35380 1 1 4 400.12853 0
Loop time of 0.0823042 on 4 procs for 69 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1700 390.57304 -13035.592 0.75783515 1179.4046 6 0.28725951 0.4 1.0026134 0.9311732 1.0858013 5.9292845 1379.4982 3901.4109 5.8264706 0.12155477 0.003634528 4.0475228 0.99473366 0.93050239 1.0858013 2.7471779 0 0 0 0 34000 1 1 4 400.32271 0
1800 398.05229 -13039.968 1.4993394 4237.7772 6 0.25966095 0.4 1.0035311 0.929455 1.0894688 5.9292845 1379.4982 3874.257 5.8227778 0.11487453 0.0034347868 4.0475228 0.99520141 0.929455 1.0894875 2.7471779 0 0 0 0 36000 1 1 4 5377.4056 0
Loop time of 0.07784 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1800 398.05229 -13039.968 1.4993394 4237.7772 6 0.25966095 0.4 1.0035311 0.929455 1.0894688 5.9292845 1379.4982 3874.257 5.8227778 0.11487453 0.0034347868 4.0475228 0.99520141 0.929455 1.0894875 2.7471779 0 0 0 0 36000 1 1 4 5377.4056 0
1870 398.05229 -13102.244 1.4993394 4237.7772 6 0.25966095 0.4 1.0035311 0.929455 1.0894688 5.9292845 1379.4982 3874.257 5.6048128 0.11487453 0.0034347868 4.0475228 0.99520141 0.929455 1.0894875 2.7471779 0 0 0 0 37400 1 1 4 5377.4056 0
Loop time of 0.0836493 on 4 procs for 70 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1800 398.05229 -13039.968 1.4993215 4237.7772 6 0.25966095 0.4 1.0035311 0.929455 1.0894688 5.9292845 1379.4982 3874.257 5.8227778 0.11487453 0.0034347868 4.0475228 0.99520141 0.929455 1.0894875 2.7471779 0 0 0 0 36000 1 1 4 5369.6279 0
1900 413.06274 -13039.873 1.3826465 7339.1562 5 0.22717549 0.4 0.999658 0.92261066 1.0792934 5.9292845 1379.4982 4011.3391 5.8310526 0.11065981 0.0032493907 4.0475228 0.99552368 0.92261066 1.0894875 2.7471779 0 0 0 0 38000 1 1 4 10818.73 0
Loop time of 0.0805019 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1900 413.06274 -13039.873 1.3826465 7339.1562 5 0.22717549 0.4 0.999658 0.92261066 1.0792934 5.9292845 1379.4982 4011.3391 5.8310526 0.11065981 0.0032493907 4.0475228 0.99552368 0.92261066 1.0894875 2.7471779 0 0 0 0 38000 1 1 4 10818.73 0
1969 413.06274 -13102.244 1.3826465 7339.1562 5 0.22717549 0.4 0.999658 0.92261066 1.0792934 5.9292845 1379.4982 4011.3391 5.6267141 0.11065981 0.0032493907 4.0475228 0.99552368 0.92261066 1.0894875 2.7471779 0 0 0 0 39380 1 1 4 10818.73 0
Loop time of 0.0814294 on 4 procs for 69 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1900 413.06274 -13039.873 1.3825572 7339.1562 5 0.22717549 0.4 0.999658 0.92261066 1.0792934 5.9292845 1379.4982 4011.3391 5.8310526 0.11065981 0.0032493907 4.0475228 0.99552368 0.92261066 1.0894875 2.7471779 0 0 0 0 38000 1 1 4 10781.258 0
2000 399.72382 -13038.217 1.1754671 2735.2303 6 0.31028081 0.4 0.99858834 0.92453074 1.0748234 5.9292845 1379.4982 4045.0012 5.811 0.10841507 0.0030975736 4.0475228 0.99572029 0.922532 1.0894875 2.7471779 0 0 0 0 40000 1 1 4 2622.0819 1
Loop time of 0.0794099 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
2000 399.72382 -13038.217 1.1754671 2735.2303 6 0.31028081 0.4 0.99858834 0.92453074 1.0748234 5.9292845 1379.4982 4045.0012 5.811 0.10841507 0.0030975736 4.0475228 0.99572029 0.922532 1.0894875 2.7471779 0 0 0 0 40000 1 1 4 2622.0819 1
2071 399.72382 -13102.244 1.1754671 2735.2303 6 0.31028081 0.4 0.99858834 0.92453074 1.0748234 5.9292845 1379.4982 4045.0012 5.6117817 0.10841507 0.0030975736 4.0475228 0.99572029 0.922532 1.0894875 2.7471779 0 0 0 0 41420 1 1 4 2622.0819 1
Loop time of 0.0837786 on 4 procs for 71 steps with 2354 atoms
Final hyper stats ...
Cummulative quantities for fix hyper:
hyper time = 40000
time boost factor = 4000
event timesteps = 1
# of atoms in events = 1
Quantities for this hyper run:
event timesteps = 1
# of atoms in events = 1
max length of any bond = 4.04752
max drift distance of any atom = 2.74718
fraction of biased bonds with zero bias = 0.108415
fraction of biased bonds with negative strain = 0.00309757
Current quantities:
ave bonds/atom = 5.92928
Cummulative quantities specific to fix hyper/local:
# of new bonds formed = 4
max bonds/atom = 12
Quantities for this hyper run specific to fix hyper/local:
ave boost for all bonds/step = 4045
ave biased bonds/step = 5.811
ave bias coeff of all bonds = 0.99572
min bias coeff of any bond = 0.922532
max bias coeff of any bond = 1.08949
max dist from my subbox of any non-maxstrain bond ghost atom = 0
max dist from my box of any bond ghost atom = 0
count of bond ghost neighbors not found on reneighbor steps = 0
bias overlaps = 0
CPU time for bond builds = 0.00247526
Current quantities specific to fix hyper/local:
neighbor bonds/bond = 1379.5
ave boost coeff for all bonds = 0.998588
Loop time of 3.52992 on 4 procs for 2000 steps with 2354 atoms
Performance: 244.765 ns/day, 0.098 hours/ns, 566.585 timesteps/s
114.7% CPU use with 4 MPI tasks x 1 OpenMP threads
Hyper stats:
Dynamics time (%) = 1.59393 (45.1549)
Quench time (%) = 1.71979 (48.7203)
Other time (%) = 0.219256 (6.21136)
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 2.4735 | 2.4914 | 2.5135 | 1.0 | 70.58
Neigh | 0.11535 | 0.11805 | 0.12056 | 0.7 | 3.34
Comm | 0.20734 | 0.21636 | 0.22119 | 1.1 | 6.13
Output | 0.00089145 | 0.0014108 | 0.0029645 | 2.4 | 0.04
Modify | 0.47314 | 0.48343 | 0.49869 | 1.4 | 13.70
Other | | 0.2193 | | | 6.21
Nlocal: 588.5 ave 607 max 577 min
Histogram: 1 0 2 0 0 0 0 0 0 1
Nghost: 1965.75 ave 1977 max 1947 min
Histogram: 1 0 0 0 0 0 1 0 1 1
Neighs: 13775.8 ave 14221 max 13511 min
Histogram: 1 1 0 1 0 0 0 0 0 1
FullNghs: 136920 ave 139934 max 133922 min
Histogram: 1 0 0 1 0 0 1 0 0 1
Total # of neighbors = 547678
Ave neighs/atom = 232.658
Neighbor list builds = 193
Dangerous builds = 0
Total wall time: 0:00:04

File diff suppressed because it is too large Load Diff

View File

@ -1,646 +0,0 @@
LAMMPS (09 Jan 2020)
# 3d EAM surface for local HD
# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92
# hop event on (100) surface is same distance
# exchange event is 2 atoms moving same distance
variable Tequil index 400.0
variable Vmax index 0.4
variable qfactor index 0.3
variable cutbond index 3.2
variable Dcut index 10.0
variable cutevent index 1.1
variable alpha index 200.0
variable boost index 4000.0
variable ghostcut index 12.0
variable steps index 2000
variable nevent index 100
variable nx index 2
variable ny index 2
variable zoom index 1.8
variable seed index 3875984
variable tol index 1.0e-15
variable add index 50
units metal
atom_style atomic
atom_modify map array
boundary p p p
comm_modify cutoff ${ghostcut}
comm_modify cutoff 12.0
lattice fcc 3.92
Lattice spacing in x,y,z = 3.92 3.92 3.92
region box block 0 6 0 6 0 4
create_box 2 box
Created orthogonal box = (0 0 0) to (23.52 23.52 15.68)
2 by 2 by 1 MPI processor grid
create_atoms 1 box
Created 576 atoms
create_atoms CPU = 0 secs
mass * 1.0
change_box all z final -0.1 5.0 boundary p p f
orthogonal box = (0 0 -0.392) to (23.52 23.52 19.6)
# replicate in xy
replicate ${nx} ${ny} 1
replicate 2 ${ny} 1
replicate 2 2 1
orthogonal box = (0 0 -0.392) to (47.04 47.04 19.6)
2 by 2 by 1 MPI processor grid
2304 atoms
replicate CPU = 0.00200009 secs
# add adatoms
include adatoms.list.${add}
include adatoms.list.50
create_atoms 1 single 5 9 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 4.5 7.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 6 6 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 5 6 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 4.5 1.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 6.5 7.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 10.5 5.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 2.5 1.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 3.5 4.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 0 10 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 11 10 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 6.5 10.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 3.5 5.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 7.5 10.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 1.5 1.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 1.5 6.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 7 2 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 4 0 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 9 0 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 4 9 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 10 7 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 4 4 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 9.5 2.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 1 5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 7 10 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 0 4 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 1 10 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 7.5 6.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 4 10 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 6.5 3.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 3 6 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 8.5 4.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 6.5 0.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 1 4 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 8.5 11.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 3 9 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 2 3 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 6.5 8.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 1 0 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 0.5 10.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 4 11 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 3 5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 0 1 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 2 11 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 2 0 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 7.5 11.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 1 7 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 3.5 10.5 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 0 2 4
Created 1 atoms
create_atoms CPU = 0 secs
create_atoms 1 single 8 4 4
Created 1 atoms
create_atoms CPU = 0 secs
# define frozen substrate and mobile atoms
region base block INF INF INF INF 0 1.8
set region base type 2
1152 settings made for type
group base type 2
1152 atoms in group base
group mobile type 1
1202 atoms in group mobile
# pair style
pair_style eam/alloy
pair_coeff * * ptvoterlammps.eam Pt Pt
neighbor 0.5 bin
neigh_modify every 1 delay 5 check yes
fix 1 mobile nve
fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes
fix 2 mobile langevin 400.0 ${Tequil} 1.0 ${seed} zero yes
fix 2 mobile langevin 400.0 400.0 1.0 ${seed} zero yes
fix 2 mobile langevin 400.0 400.0 1.0 3875984 zero yes
timestep 0.005
compute tmobile mobile temp
thermo 100
thermo_modify temp tmobile
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:485)
# thermal equilibration
run 1000
Neighbor list info ...
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6.07583
ghost atom cutoff = 12
binsize = 3.03792, bins = 16 16 7
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair eam/alloy, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 3.082 | 3.082 | 3.082 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -13067.188 0 -13067.188 -53763.139
100 216.49187 -13065.694 0 -13032.085 -24077.115
200 285.11905 -13057.047 0 -13012.785 -38815.844
300 321.67264 -13048.005 0 -12998.068 -29296.124
400 352.90893 -13045.707 0 -12990.92 -34630.884
500 371.9393 -13041.234 0 -12983.494 -28913.827
600 379.08135 -13040.06 0 -12981.211 -33399.8
700 388.73836 -13039.691 0 -12979.343 -29446.954
800 402.13628 -13040.606 0 -12978.178 -33026.861
900 389.43806 -13036.884 0 -12976.427 -30328.658
1000 388.66198 -13037.479 0 -12977.142 -30859.145
Loop time of 1.28003 on 4 procs for 1000 steps with 2354 atoms
Performance: 337.492 ns/day, 0.071 hours/ns, 781.232 timesteps/s
100.0% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 1.054 | 1.077 | 1.094 | 1.6 | 84.14
Neigh | 0.054002 | 0.056502 | 0.060002 | 1.0 | 4.41
Comm | 0.087002 | 0.11025 | 0.133 | 5.6 | 8.61
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0.031003 | 0.031502 | 0.032002 | 0.3 | 2.46
Other | | 0.00475 | | | 0.37
Nlocal: 588.5 ave 592 max 581 min
Histogram: 1 0 0 0 0 0 0 1 0 2
Nghost: 1964 ave 1973 max 1959 min
Histogram: 2 0 0 1 0 0 0 0 0 1
Neighs: 14148.8 ave 14283 max 13931 min
Histogram: 1 0 0 0 0 0 1 1 0 1
Total # of neighbors = 56595
Ave neighs/atom = 24.0421
Neighbor list builds = 91
Dangerous builds = 0
reset_timestep 0
# pin base so will not move during quenches
fix freeze base setforce 0.0 0.0 0.0
# event detection
compute event all event/displace ${cutevent}
compute event all event/displace 1.1
# hyper/local
fix HL mobile hyper/local ${cutbond} ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost}
fix HL mobile hyper/local 3.2 ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost}
fix HL mobile hyper/local 3.2 0.3 ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost}
fix HL mobile hyper/local 3.2 0.3 0.4 ${Tequil} ${Dcut} ${alpha} ${boost}
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 ${Dcut} ${alpha} ${boost}
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 ${alpha} ${boost}
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 ${boost}
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 4000.0
# thermo output
thermo_style custom step temp pe f_HL f_HL[*]
WARNING: New thermo_style command, previous thermo_modify settings will be lost (../output.cpp:708)
thermo_modify lost ignore
thermo_modify temp tmobile
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:485)
thermo ${nevent}
thermo 100
# dump
region substrate block INF INF INF INF 1.8 3.8
region adatoms block INF INF INF INF 3.8 INF
variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms)
dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01
dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom 1.8 adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01
dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green
# run
hyper ${steps} ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1
hyper 2000 ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1
hyper 2000 100 HL event min ${tol} ${tol} 1000 1000 dump 1
hyper 2000 100 HL event min 1.0e-15 ${tol} 1000 1000 dump 1
hyper 2000 100 HL event min 1.0e-15 1.0e-15 1000 1000 dump 1
WARNING: Resetting reneighboring criteria during hyper (../hyper.cpp:131)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6.07583
ghost atom cutoff = 12
binsize = 3.03792, bins = 16 16 7
3 neighbor lists, perpetual/occasional/extra = 1 2 0
(1) pair eam/alloy, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d/newton
bin: standard
(2) fix hyper/local, occasional
attributes: full, newton on, cut 10
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(3) fix hyper/local, occasional, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 6.666 | 6.666 | 6.666 Mbytes
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
0 388.66198 -13037.479 0 1 0 0 0.4 1 0 0 0 0 0 0 0 0 0 0 1e+20 0 0 0 0 0 0 0 0 0 0 1 0
77 388.66198 -13101.057 0 1 0 0 0.4 1 0 0 0 0 0 0 0 0 0 0 1e+20 0 0 0 0 0 0 1540 0 0 0 1 0
Loop time of 0.179004 on 4 procs for 77 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
0 388.66198 -13037.479 2.1560984 0 7 0.19075508 0.4 0 0 0 5.9276206 1380.4406 0 0 0 0 3.2725891 0 1e+20 0 0 0 0 0 0 0 0 0 0 10345.205 0
100 398.83324 -13036.879 2.1057282 8397.3244 7 0.17605069 0.4 0.99370412 0.98222607 1.0036767 5.9276206 1380.4406 8029.3662 4.83 0 0 3.3896963 0.9967648 0.98222607 1.0036767 0 0 0 0 0 2000 0 0 0 8152.8259 0
Loop time of 0.127003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
100 398.83324 -13036.879 2.1057282 8397.3244 7 0.17605069 0.4 0.99370412 0.98222607 1.0036767 5.9276206 1380.4406 8029.3662 4.83 0 0 3.3896963 0.9967648 0.98222607 1.0036767 0 0 0 0 0 2000 0 0 0 8152.8259 0
167 398.83324 -13101.057 2.1057282 8397.3244 7 0.17605069 0.4 0.99370412 0.98222607 1.0036767 5.9276206 1380.4406 8029.3662 2.8922156 0 0 3.3896963 0.9967648 0.98222607 1.0036767 0 0 0 0 0 3340 0 0 0 8152.8259 0
Loop time of 0.127003 on 4 procs for 67 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
100 398.83324 -13036.879 2.1055533 8397.3244 7 0.17605069 0.4 0.99370412 0.98222607 1.0036767 5.9276206 1380.4406 8029.3662 4.83 0 0 3.3896963 0.9967648 0.98222607 1.0036767 0 0 0 0 0 2000 0 0 0 8129.9856 0
200 389.68041 -13036.5 1.3143359 4136.9005 6 0.31228203 0.4 0.99085481 0.96933773 1.0092702 5.9276206 1380.4406 6926.4597 5.43 0.035911602 0.00092081031 3.7338089 0.99450416 0.96933773 1.0092702 0 0 0 0 0 4000 0 0 0 3361.4715 1
Loop time of 0.127003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
200 389.68041 -13036.5 1.3143359 4136.9005 6 0.31228203 0.4 0.99085481 0.96933773 1.0092702 5.9276206 1380.4406 6926.4597 5.43 0.035911602 0.00092081031 3.7338089 0.99450416 0.96933773 1.0092702 0 0 0 0 0 4000 0 0 0 3361.4715 1
270 389.68041 -13101.057 1.3143359 4136.9005 6 0.31228203 0.4 0.99085481 0.96933773 1.0092702 5.9276206 1380.4406 6926.4597 4.0222222 0.035911602 0.00092081031 3.7338089 0.99450416 0.96933773 1.0092702 0 0 0 0 0 5400 0 0 0 3361.4715 1
Loop time of 0.134003 on 4 procs for 70 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
200 389.68041 -13036.5 1.3143057 4136.9005 6 0.31228203 0.4 0.99085481 0.96933773 1.0092702 5.9276206 1380.4406 6926.4597 5.43 0.035911602 0.00092081031 3.7338089 0.99450416 0.96933773 1.0092702 0 0 0 0 0 4000 0 0 0 3356.2384 1
300 410.34512 -13036.301 1.3677603 4656.4226 6 0.33838934 0.4 0.99110308 0.96057751 1.0154382 5.9276206 1380.4406 5898.0094 5.44 0.036764706 0.0006127451 3.7338089 0.9934181 0.96057751 1.0154382 0 0 0 0 0 6000 0 0 0 4213.1218 1
Loop time of 0.129003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
300 410.34512 -13036.301 1.3677603 4656.4226 6 0.33838934 0.4 0.99110308 0.96057751 1.0154382 5.9276206 1380.4406 5898.0094 5.44 0.036764706 0.0006127451 3.7338089 0.9934181 0.96057751 1.0154382 0 0 0 0 0 6000 0 0 0 4213.1218 1
375 410.34512 -13101.057 1.3677603 4656.4226 6 0.33838934 0.4 0.99110308 0.96057751 1.0154382 5.9276206 1380.4406 5898.0094 4.352 0.036764706 0.0006127451 3.7338089 0.9934181 0.96057751 1.0154382 0 0 0 0 0 7500 0 0 0 4213.1218 1
Loop time of 0.143004 on 4 procs for 75 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
300 410.34512 -13036.301 1.3677058 4656.4226 6 0.33838934 0.4 0.99110308 0.96057751 1.0154382 5.9276206 1380.4406 5898.0094 5.44 0.036764706 0.0006127451 3.7338089 0.9934181 0.96057751 1.0154382 0 0 0 0 0 6000 0 0 0 4207.0688 1
400 408.54896 -13036.835 1.090295 4172.0981 6 0.46750515 0.4 0.99130905 0.95644819 1.0207114 5.9276206 1380.4406 5390.5516 5.365 0.095060578 0.00046598322 3.9885296 0.9928942 0.95644819 1.0207114 0 0 0 0 0 8000 0 0 0 3865.6547 3
Loop time of 0.126003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
400 408.54896 -13036.835 1.090295 4172.0981 6 0.46750515 0.4 0.99130905 0.95644819 1.0207114 5.9276206 1380.4406 5390.5516 5.365 0.095060578 0.00046598322 3.9885296 0.9928942 0.95644819 1.0207114 0 0 0 0 0 8000 0 0 0 3865.6547 3
471 408.54896 -13101.694 1.090295 4172.0981 6 0.46750515 0.4 0.99130905 0.95644819 1.0207114 5.9276206 1380.4406 5390.5516 4.5562633 0.095060578 0.00046598322 3.9885296 0.9928942 0.95644819 1.0207114 0 0 0 0 0 9420 0 0 0 3865.6547 3
Loop time of 0.131003 on 4 procs for 71 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
400 408.54896 -13036.835 1.090341 4171.5126 6 0.33910027 0.4 0.99116994 0.95644819 1.0207114 5.9284526 1380.3372 5390.5516 5.365 0.095060578 0.00046598322 3.9885296 0.9928942 0.95644819 1.0207114 2.7381277 0 0 0 0 8000 1 1 3 3863.7908 2
500 408.04798 -13035.819 1.887274 2622.1876 8 0.25727119 0.4 0.99128739 0.95020853 1.0240862 5.9284526 1380.3372 5115.3824 5.63 0.077087034 0.00071047957 3.9885296 0.99251152 0.95020853 1.0240862 2.7381277 0 0 0 0 10000 1 1 3 4184.3452 0
Loop time of 0.128003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
500 408.04798 -13035.819 1.887274 2622.1876 8 0.25727119 0.4 0.99128739 0.95020853 1.0240862 5.9284526 1380.3372 5115.3824 5.63 0.077087034 0.00071047957 3.9885296 0.99251152 0.95020853 1.0240862 2.7381277 0 0 0 0 10000 1 1 3 4184.3452 0
569 408.04798 -13101.694 1.887274 2622.1876 8 0.25727119 0.4 0.99128739 0.95020853 1.0240862 5.9284526 1380.3372 5115.3824 4.9472759 0.077087034 0.00071047957 3.9885296 0.99251152 0.95020853 1.0240862 2.7381277 0 0 0 0 11380 1 1 3 4184.3452 0
Loop time of 0.135003 on 4 procs for 69 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
500 408.04798 -13035.819 1.8872278 2622.1876 8 0.25727119 0.4 0.99128739 0.95020853 1.0240862 5.9284526 1380.3372 5115.3824 5.63 0.077087034 0.00071047957 3.9885296 0.99251152 0.95020853 1.0240862 2.7381277 0 0 0 0 10000 1 1 3 4177.8105 0
600 419.0918 -13035.34 1.0950129 5050.5345 5 0.30933918 0.4 0.99315523 0.94243697 1.0303 5.9284526 1380.3372 4730.2494 5.7483333 0.082052769 0.00057987823 4.0620002 0.99251861 0.94243697 1.0303 2.7381277 0 0 0 0 12000 1 1 3 4375.7612 1
Loop time of 0.128003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
600 419.0918 -13035.34 1.0950129 5050.5345 5 0.30933918 0.4 0.99315523 0.94243697 1.0303 5.9284526 1380.3372 4730.2494 5.7483333 0.082052769 0.00057987823 4.0620002 0.99251861 0.94243697 1.0303 2.7381277 0 0 0 0 12000 1 1 3 4375.7612 1
669 419.0918 -13101.694 1.0950129 5050.5345 5 0.30933918 0.4 0.99315523 0.94243697 1.0303 5.9284526 1380.3372 4730.2494 5.1554559 0.082052769 0.00057987823 4.0620002 0.99251861 0.94243697 1.0303 2.7381277 0 0 0 0 13380 1 1 3 4375.7612 1
Loop time of 0.131003 on 4 procs for 69 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
600 419.0918 -13035.34 1.0949592 5050.5345 5 0.30933918 0.4 0.99315523 0.94243697 1.0303 5.9284526 1380.3372 4730.2494 5.7483333 0.082052769 0.00057987823 4.0620002 0.99251861 0.94243697 1.0303 2.7381277 0 0 0 0 12000 1 1 3 4366.2434 1
700 404.99792 -13038.375 1.7496634 5457.7386 6 0.20603012 0.4 0.99311471 0.93767338 1.0364661 5.9284526 1380.3372 4629.6326 5.7757143 0.077170418 0.00049468217 4.0620002 0.99261201 0.93732488 1.0364661 2.7381277 0 0 0 0 14000 1 1 3 5897.4776 0
Loop time of 0.128003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
700 404.99792 -13038.375 1.7496634 5457.7386 6 0.20603012 0.4 0.99311471 0.93767338 1.0364661 5.9284526 1380.3372 4629.6326 5.7757143 0.077170418 0.00049468217 4.0620002 0.99261201 0.93732488 1.0364661 2.7381277 0 0 0 0 14000 1 1 3 5897.4776 0
775 404.99792 -13101.694 1.7496634 5457.7386 6 0.20603012 0.4 0.99311471 0.93767338 1.0364661 5.9284526 1380.3372 4629.6326 5.2167742 0.077170418 0.00049468217 4.0620002 0.99261201 0.93732488 1.0364661 2.7381277 0 0 0 0 15500 1 1 3 5897.4776 0
Loop time of 0.166004 on 4 procs for 75 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
700 404.99792 -13038.375 1.7495648 5457.7386 6 0.20603012 0.4 0.99311471 0.93767338 1.0364661 5.9284526 1380.3372 4629.6326 5.7757143 0.077170418 0.00049468217 4.0620002 0.99261201 0.93732488 1.0364661 2.7381277 0 0 0 0 14000 1 1 3 5888.5728 0
800 421.10795 -13037.462 1.8512835 3051.7064 8 0.31933951 0.4 0.9902351 0.93814672 1.0426311 5.9284526 1380.3372 4781.2974 5.8125 0.070322581 0.00043010753 4.0620002 0.99242754 0.93732488 1.0426311 2.7381277 0 0 0 0 16000 1 1 3 3122.0342 1
Loop time of 0.245005 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
800 421.10795 -13037.462 1.8512835 3051.7064 8 0.31933951 0.4 0.9902351 0.93814672 1.0426311 5.9284526 1380.3372 4781.2974 5.8125 0.070322581 0.00043010753 4.0620002 0.99242754 0.93732488 1.0426311 2.7381277 0 0 0 0 16000 1 1 3 3122.0342 1
869 421.10795 -13101.694 1.8512835 3051.7064 8 0.31933951 0.4 0.9902351 0.93814672 1.0426311 5.9284526 1380.3372 4781.2974 5.3509781 0.070322581 0.00043010753 4.0620002 0.99242754 0.93732488 1.0426311 2.7381277 0 0 0 0 17380 1 1 3 3122.0342 1
Loop time of 0.180005 on 4 procs for 69 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
800 421.10795 -13037.462 1.8512626 3051.7064 8 0.31933951 0.4 0.9902351 0.93814672 1.0426311 5.9284526 1380.3372 4781.2974 5.8125 0.070322581 0.00043010753 4.0620002 0.99242754 0.93732488 1.0426311 2.7381277 0 0 0 0 16000 1 1 3 3118.9745 1
900 424.48211 -13036.231 1.5461807 1757.5544 7 0.25079261 0.4 0.99160613 0.94071212 1.0485957 5.9284526 1380.3372 4596.991 5.8511111 0.073300418 0.00037979491 4.0620002 0.99224254 0.93732488 1.0485957 2.7381277 0 0 0 0 18000 1 1 3 1803.828 0
Loop time of 0.158003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
900 424.48211 -13036.231 1.5461807 1757.5544 7 0.25079261 0.4 0.99160613 0.94071212 1.0485957 5.9284526 1380.3372 4596.991 5.8511111 0.073300418 0.00037979491 4.0620002 0.99224254 0.93732488 1.0485957 2.7381277 0 0 0 0 18000 1 1 3 1803.828 0
969 424.48211 -13101.694 1.5461807 1757.5544 7 0.25079261 0.4 0.99160613 0.94071212 1.0485957 5.9284526 1380.3372 4596.991 5.4344685 0.073300418 0.00037979491 4.0620002 0.99224254 0.93732488 1.0485957 2.7381277 0 0 0 0 19380 1 1 3 1803.828 0
Loop time of 0.165004 on 4 procs for 69 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
900 424.48211 -13036.231 1.5462201 1757.5544 7 0.25079261 0.4 0.99160613 0.94071212 1.0485957 5.9284526 1380.3372 4596.991 5.8511111 0.073300418 0.00037979491 4.0620002 0.99224254 0.93732488 1.0485957 2.7381277 0 0 0 0 18000 1 1 3 1803.5841 0
1000 392.14281 -13033.226 1.3114425 4884.4012 6 0.28781471 0.4 0.99342697 0.93855058 1.0449678 5.9284526 1380.3372 4420.7581 5.862 0.076765609 0.00034118048 4.0620002 0.99230204 0.93732488 1.0514799 2.7381277 0 0 0 0 20000 1 1 3 6648.5089 0
Loop time of 0.159004 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1000 392.14281 -13033.226 1.3114425 4884.4012 6 0.28781471 0.4 0.99342697 0.93855058 1.0449678 5.9284526 1380.3372 4420.7581 5.862 0.076765609 0.00034118048 4.0620002 0.99230204 0.93732488 1.0514799 2.7381277 0 0 0 0 20000 1 1 3 6648.5089 0
1070 392.14281 -13101.694 1.3114425 4884.4012 6 0.28781471 0.4 0.99342697 0.93855058 1.0449678 5.9284526 1380.3372 4420.7581 5.4785047 0.076765609 0.00034118048 4.0620002 0.99230204 0.93732488 1.0514799 2.7381277 0 0 0 0 21400 1 1 3 6648.5089 0
Loop time of 0.167004 on 4 procs for 70 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1000 392.14281 -13033.226 1.3113308 4884.4012 6 0.28781471 0.4 0.99342697 0.93855058 1.0449678 5.9284526 1380.3372 4420.7581 5.862 0.076765609 0.00034118048 4.0620002 0.99230204 0.93732488 1.0514799 2.7381277 0 0 0 0 20000 1 1 3 6627.3707 0
1100 403.51397 -13035.66 0.54686506 3968.0952 5 0.36081738 0.4 0.99442104 0.93685489 1.0457452 5.9284526 1380.3372 4324.6709 5.89 0.077944127 0.00030868961 4.0620002 0.99241625 0.93604385 1.0514799 2.7381277 0 0 0 0 22000 1 1 3 1724.5221 2
Loop time of 0.143003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1100 403.51397 -13035.66 0.54686506 3968.0952 5 0.36081738 0.4 0.99442104 0.93685489 1.0457452 5.9284526 1380.3372 4324.6709 5.89 0.077944127 0.00030868961 4.0620002 0.99241625 0.93604385 1.0514799 2.7381277 0 0 0 0 22000 1 1 3 1724.5221 2
1170 403.51397 -13101.694 0.54686506 3968.0952 5 0.36081738 0.4 0.99442104 0.93685489 1.0457452 5.9284526 1380.3372 4324.6709 5.5376068 0.077944127 0.00030868961 4.0620002 0.99241625 0.93604385 1.0514799 2.7381277 0 0 0 0 23400 1 1 3 1724.5221 2
Loop time of 0.134003 on 4 procs for 70 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1100 403.51397 -13035.66 0.54686188 3968.0952 5 0.36081738 0.4 0.99442104 0.93685489 1.0457452 5.9284526 1380.3372 4324.6709 5.89 0.077944127 0.00030868961 4.0620002 0.99241625 0.93604385 1.0514799 2.7381277 0 0 0 0 22000 1 1 3 1722.7748 2
1200 407.58933 -13037.757 0.83605065 5192.3954 5 0.3055123 0.4 0.99647568 0.93650885 1.0519936 5.9284526 1380.3372 4188.034 5.8883333 0.092838947 0.0022643646 4.0620002 0.99266277 0.9344152 1.0519936 2.7381277 0 0 0 0 24000 1 1 3 3708.6014 1
Loop time of 0.127003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1200 407.58933 -13037.757 0.83605065 5192.3954 5 0.3055123 0.4 0.99647568 0.93650885 1.0519936 5.9284526 1380.3372 4188.034 5.8883333 0.092838947 0.0022643646 4.0620002 0.99266277 0.9344152 1.0519936 2.7381277 0 0 0 0 24000 1 1 3 3708.6014 1
1275 407.58933 -13101.694 0.83605065 5192.3954 5 0.3055123 0.4 0.99647568 0.93650885 1.0519936 5.9284526 1380.3372 4188.034 5.5419608 0.092838947 0.0022643646 4.0620002 0.99266277 0.9344152 1.0519936 2.7381277 0 0 0 0 25500 1 1 3 3708.6014 1
Loop time of 0.147004 on 4 procs for 75 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1200 407.58933 -13037.757 0.83600436 5192.3954 5 0.3055123 0.4 0.99647568 0.93650885 1.0519936 5.9284526 1380.3372 4188.034 5.8883333 0.092838947 0.0022643646 4.0620002 0.99266277 0.9344152 1.0519936 2.7381277 0 0 0 0 24000 1 1 3 3695.4259 1
1300 397.34752 -13035.27 1.143529 3889.5642 6 0.59455796 0.4 0.99734951 0.93577374 1.0582257 5.9284526 1380.3372 4130.5503 5.9123077 0.094977882 0.002081707 4.1048198 0.99297572 0.9344152 1.0582257 2.7381277 0 0 0 0 26000 1 1 3 2236.4525 2
Loop time of 0.129003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1300 397.34752 -13035.27 1.143529 3889.5642 6 0.59455796 0.4 0.99734951 0.93577374 1.0582257 5.9284526 1380.3372 4130.5503 5.9123077 0.094977882 0.002081707 4.1048198 0.99297572 0.9344152 1.0582257 2.7381277 0 0 0 0 26000 1 1 3 2236.4525 2
1379 397.34752 -13102.882 1.143529 3889.5642 6 0.59455796 0.4 0.99734951 0.93577374 1.0582257 5.9284526 1380.3372 4130.5503 5.5736041 0.094977882 0.002081707 4.1048198 0.99297572 0.9344152 1.0582257 2.7381277 0 0 0 0 27580 1 1 3 2236.4525 2
Loop time of 0.130003 on 4 procs for 79 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1300 397.34752 -13035.27 0.8513344 3888.4728 5 0.43479061 0.4 0.99706967 0.93577374 1.0582257 5.9301165 1379.4348 4130.5503 5.9123077 0.094977882 0.002081707 4.1048198 0.99297572 0.9344152 1.0582257 2.7473869 0 0 0 0 26000 2 2 7 1674.6282 2
1400 406.75788 -13035.822 0.98339012 2583.5703 5 0.26687439 0.4 0.99725016 0.93341809 1.0565516 5.9301165 1379.4348 4125.2065 5.9 0.09503632 0.001937046 4.1048198 0.99327179 0.93335055 1.0582257 2.7473869 0 0 0 0 28000 2 2 7 1900.8002 0
Loop time of 0.145003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1400 406.75788 -13035.822 0.98339012 2583.5703 5 0.26687439 0.4 0.99725016 0.93341809 1.0565516 5.9301165 1379.4348 4125.2065 5.9 0.09503632 0.001937046 4.1048198 0.99327179 0.93335055 1.0582257 2.7473869 0 0 0 0 28000 2 2 7 1900.8002 0
1471 406.75788 -13102.882 0.98339012 2583.5703 5 0.26687439 0.4 0.99725016 0.93341809 1.0565516 5.9301165 1379.4348 4125.2065 5.6152277 0.09503632 0.001937046 4.1048198 0.99327179 0.93335055 1.0582257 2.7473869 0 0 0 0 29420 2 2 7 1900.8002 0
Loop time of 0.134003 on 4 procs for 71 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1400 406.75788 -13035.822 0.98339747 2583.5703 5 0.26687439 0.4 0.99725016 0.93341809 1.0565516 5.9301165 1379.4348 4125.2065 5.9 0.09503632 0.001937046 4.1048198 0.99327179 0.93335055 1.0582257 2.7473869 0 0 0 0 28000 2 2 7 1898.7054 0
1500 403.04712 -13038.033 1.7734093 2587.2539 8 0.26021596 0.4 0.99949004 0.93136824 1.0627109 5.9301165 1379.4348 4021.2913 5.914 0.094465111 0.0018036298 4.1048198 0.99360825 0.93115568 1.0627109 2.7473869 0 0 0 0 30000 2 2 7 4239.5287 0
Loop time of 0.124003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1500 403.04712 -13038.033 1.7734093 2587.2539 8 0.26021596 0.4 0.99949004 0.93136824 1.0627109 5.9301165 1379.4348 4021.2913 5.914 0.094465111 0.0018036298 4.1048198 0.99360825 0.93115568 1.0627109 2.7473869 0 0 0 0 30000 2 2 7 4239.5287 0
1568 403.04712 -13102.882 1.7734093 2587.2539 8 0.26021596 0.4 0.99949004 0.93136824 1.0627109 5.9301165 1379.4348 4021.2913 5.6575255 0.094465111 0.0018036298 4.1048198 0.99360825 0.93115568 1.0627109 2.7473869 0 0 0 0 31360 2 2 7 4239.5287 0
Loop time of 0.135003 on 4 procs for 68 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1500 403.04712 -13038.033 1.7733495 2587.2539 8 0.26021596 0.4 0.99949004 0.93136824 1.0627109 5.9301165 1379.4348 4021.2913 5.914 0.094465111 0.0018036298 4.1048198 0.99360825 0.93115568 1.0627109 2.7473869 0 0 0 0 30000 2 2 7 4227.4184 0
1600 413.63587 -13039.863 0.67705876 2150.6698 5 0.32653141 0.4 1.0004587 0.9309105 1.06525 5.9301165 1379.4348 3981.2133 5.93375 0.090478197 0.0016852749 4.1048198 0.99397193 0.92879897 1.06525 2.7473869 0 0 0 0 32000 2 2 7 822.48747 1
Loop time of 0.132003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1600 413.63587 -13039.863 0.67705876 2150.6698 5 0.32653141 0.4 1.0004587 0.9309105 1.06525 5.9301165 1379.4348 3981.2133 5.93375 0.090478197 0.0016852749 4.1048198 0.99397193 0.92879897 1.06525 2.7473869 0 0 0 0 32000 2 2 7 822.48747 1
1669 413.63587 -13102.882 0.67705876 2150.6698 5 0.32653141 0.4 1.0004587 0.9309105 1.06525 5.9301165 1379.4348 3981.2133 5.6884362 0.090478197 0.0016852749 4.1048198 0.99397193 0.92879897 1.06525 2.7473869 0 0 0 0 33380 2 2 7 822.48747 1
Loop time of 0.135003 on 4 procs for 69 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1600 413.63587 -13039.863 0.67707996 2150.6698 5 0.32653141 0.4 1.0004587 0.9309105 1.06525 5.9301165 1379.4348 3981.2133 5.93375 0.090478197 0.0016852749 4.1048198 0.99397193 0.92879897 1.06525 2.7473869 0 0 0 0 32000 2 2 7 822.44597 1
1700 410.04422 -13040.035 1.0190943 1598.6072 7 0.29206253 0.4 1.0030056 0.92869822 1.0714971 5.9301165 1379.4348 3886.4362 5.9435294 0.093527316 0.0015835313 4.1048198 0.99441728 0.92869822 1.0714971 2.7473869 0 0 0 0 34000 2 2 7 1041.7855 0
Loop time of 0.129003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1700 410.04422 -13040.035 1.0190943 1598.6072 7 0.29206253 0.4 1.0030056 0.92869822 1.0714971 5.9301165 1379.4348 3886.4362 5.9435294 0.093527316 0.0015835313 4.1048198 0.99441728 0.92869822 1.0714971 2.7473869 0 0 0 0 34000 2 2 7 1041.7855 0
1770 410.04422 -13102.882 1.0190943 1598.6072 7 0.29206253 0.4 1.0030056 0.92869822 1.0714971 5.9301165 1379.4348 3886.4362 5.7084746 0.093527316 0.0015835313 4.1048198 0.99441728 0.92869822 1.0714971 2.7473869 0 0 0 0 35400 2 2 7 1041.7855 0
Loop time of 0.145004 on 4 procs for 70 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1700 410.04422 -13040.035 1.0191295 1598.6072 7 0.29206253 0.4 1.0030056 0.92869822 1.0714971 5.9301165 1379.4348 3886.4362 5.9435294 0.093527316 0.0015835313 4.1048198 0.99441728 0.92869822 1.0714971 2.7473869 0 0 0 0 34000 2 2 7 1041.6898 0
1800 413.56333 -13039.872 1.6705072 5357.337 7 0.28802305 0.4 1.0045556 0.92823157 1.0777313 5.9301165 1379.4348 3837.633 5.9366667 0.095545574 0.0014972862 4.1048198 0.99496874 0.92821036 1.0777313 2.7473869 0 0 0 0 36000 2 2 7 7008.708 0
Loop time of 0.157003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1800 413.56333 -13039.872 1.6705072 5357.337 7 0.28802305 0.4 1.0045556 0.92823157 1.0777313 5.9301165 1379.4348 3837.633 5.9366667 0.095545574 0.0014972862 4.1048198 0.99496874 0.92821036 1.0777313 2.7473869 0 0 0 0 36000 2 2 7 7008.708 0
1868 413.56333 -13102.882 1.6705072 5357.337 7 0.28802305 0.4 1.0045556 0.92823157 1.0777313 5.9301165 1379.4348 3837.633 5.7205567 0.095545574 0.0014972862 4.1048198 0.99496874 0.92821036 1.0777313 2.7473869 0 0 0 0 37360 2 2 7 7008.708 0
Loop time of 0.143003 on 4 procs for 68 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1800 413.56333 -13039.872 1.6703547 5357.337 7 0.28802305 0.4 1.0045556 0.92823157 1.0777313 5.9301165 1379.4348 3837.633 5.9366667 0.095545574 0.0014972862 4.1048198 0.99496874 0.92821036 1.0777313 2.7473869 0 0 0 0 36000 2 2 7 6990.9088 0
1900 389.96327 -13036.384 0.50418526 2970.8471 5 0.2897091 0.4 1.0069357 0.92635421 1.083738 5.9301165 1379.4348 3766.0095 5.9652632 0.092376919 0.0014116817 4.1048198 0.9955231 0.92635421 1.083738 2.7473869 0 0 0 0 38000 2 2 7 102.84786 0
Loop time of 0.161004 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1900 389.96327 -13036.384 0.50418526 2970.8471 5 0.2897091 0.4 1.0069357 0.92635421 1.083738 5.9301165 1379.4348 3766.0095 5.9652632 0.092376919 0.0014116817 4.1048198 0.9955231 0.92635421 1.083738 2.7473869 0 0 0 0 38000 2 2 7 102.84786 0
1970 389.96327 -13102.882 0.50418526 2970.8471 5 0.2897091 0.4 1.0069357 0.92635421 1.083738 5.9301165 1379.4348 3766.0095 5.7532995 0.092376919 0.0014116817 4.1048198 0.9955231 0.92635421 1.083738 2.7473869 0 0 0 0 39400 2 2 7 102.84786 0
Loop time of 0.221005 on 4 procs for 70 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
1900 389.96327 -13036.384 0.50421483 2970.8471 5 0.2897091 0.4 1.0069357 0.92635421 1.083738 5.9301165 1379.4348 3766.0095 5.9652632 0.092376919 0.0014116817 4.1048198 0.9955231 0.92635421 1.083738 2.7473869 0 0 0 0 38000 2 2 7 102.91265 0
2000 397.57054 -13037.793 1.296998 2702.0288 7 0.3344139 0.4 1.0080872 0.9254519 1.089981 5.9301165 1379.4348 3740.858 5.9815 0.094708685 0.0013374572 4.1048198 0.99612398 0.9252451 1.089981 2.7473869 0 0 0 0 40000 2 2 7 2970.9196 1
Loop time of 0.125003 on 4 procs for 100 steps with 2354 atoms
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28]
2000 397.57054 -13037.793 1.296998 2702.0288 7 0.3344139 0.4 1.0080872 0.9254519 1.089981 5.9301165 1379.4348 3740.858 5.9815 0.094708685 0.0013374572 4.1048198 0.99612398 0.9252451 1.089981 2.7473869 0 0 0 0 40000 2 2 7 2970.9196 1
2074 397.57054 -13102.882 1.296998 2702.0288 7 0.3344139 0.4 1.0080872 0.9254519 1.089981 5.9301165 1379.4348 3740.858 5.768081 0.094708685 0.0013374572 4.1048198 0.99612398 0.9252451 1.089981 2.7473869 0 0 0 0 41480 2 2 7 2970.9196 1
Loop time of 0.138003 on 4 procs for 74 steps with 2354 atoms
Final hyper stats ...
Cummulative quantities for fix hyper:
hyper time = 40000
time boost factor = 4000
event timesteps = 2
# of atoms in events = 2
Quantities for this hyper run:
event timesteps = 2
# of atoms in events = 2
max length of any bond = 4.10482
max drift distance of any atom = 2.74739
fraction of biased bonds with zero bias = 0.0947087
fraction of biased bonds with negative strain = 0.00133746
Current quantities:
ave bonds/atom = 5.93012
Cummulative quantities specific to fix hyper/local:
# of new bonds formed = 7
max bonds/atom = 12
Quantities for this hyper run specific to fix hyper/local:
ave boost for all bonds/step = 3740.86
ave biased bonds/step = 5.9815
ave bias coeff of all bonds = 0.996124
min bias coeff of any bond = 0.925245
max bias coeff of any bond = 1.08998
max dist from my subbox of any non-maxstrain bond ghost atom = 0
max dist from my box of any bond ghost atom = 0
count of bond ghost neighbors not found on reneighbor steps = 0
bias overlaps = 0
CPU time for bond builds = 0.00900006
Current quantities specific to fix hyper/local:
neighbor bonds/bond = 1379.43
ave boost coeff for all bonds = 1.00809
Loop time of 6.39915 on 4 procs for 2000 steps with 2354 atoms
Performance: 135.018 ns/day, 0.178 hours/ns, 312.542 timesteps/s
124.8% CPU use with 4 MPI tasks x no OpenMP threads
Hyper stats:
Dynamics time (%) = 2.82706 (44.1788)
Quench time (%) = 2.94107 (45.9603)
Other time (%) = 0.559511 (8.74353)
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 4.2581 | 4.3754 | 4.4861 | 4.4 | 68.37
Neigh | 0.165 | 0.171 | 0.178 | 1.1 | 2.67
Comm | 0.40501 | 0.50426 | 0.58801 | 9.7 | 7.88
Output | 0 | 0.00049996 | 0.0019999 | 0.0 | 0.01
Modify | 0.74901 | 0.78851 | 0.82701 | 3.4 | 12.32
Other | | 0.5595 | | | 8.74
Nlocal: 588.5 ave 610 max 570 min
Histogram: 1 0 0 0 2 0 0 0 0 1
Nghost: 1965.75 ave 1984 max 1944 min
Histogram: 1 0 0 0 0 1 1 0 0 1
Neighs: 13783.2 ave 14264 max 13396 min
Histogram: 1 0 0 1 1 0 0 0 0 1
FullNghs: 136894 ave 139463 max 134036 min
Histogram: 1 0 0 0 1 0 1 0 0 1
Total # of neighbors = 547576
Ave neighs/atom = 232.615
Neighbor list builds = 192
Dangerous builds = 0
Total wall time: 0:00:08

View File

@ -4,7 +4,11 @@
ifndef KOKKOS_PATH ifndef KOKKOS_PATH
KOKKOS_PATH=../../lib/kokkos KOKKOS_PATH=../../lib/kokkos
endif endif
CXXFLAGS=$(CCFLAGS) CXXFLAGS=$(CCFLAGS)
ifeq ($(mode),shared)
CXXFLAGS += $(SHFLAGS)
endif
KOKKOS_VERSION_MAJOR = 3 KOKKOS_VERSION_MAJOR = 3
KOKKOS_VERSION_MINOR = 1 KOKKOS_VERSION_MINOR = 1
@ -20,7 +24,7 @@ KOKKOS_DEVICES ?= "OpenMP"
# ARM: ARMv80,ARMv81,ARMv8-ThunderX,ARMv8-TX2 # ARM: ARMv80,ARMv81,ARMv8-ThunderX,ARMv8-TX2
# IBM: BGQ,Power7,Power8,Power9 # IBM: BGQ,Power7,Power8,Power9
# AMD-GPUS: Vega900,Vega906 # AMD-GPUS: Vega900,Vega906
# AMD-CPUS: AMDAVX,Ryzen,EPYC # AMD-CPUS: AMDAVX,EPYC
KOKKOS_ARCH ?= "" KOKKOS_ARCH ?= ""
# Options: yes,no # Options: yes,no
KOKKOS_DEBUG ?= "no" KOKKOS_DEBUG ?= "no"
@ -47,11 +51,15 @@ KOKKOS_HIP_OPTIONS ?= ""
# Options: enable_async_dispatch # Options: enable_async_dispatch
KOKKOS_HPX_OPTIONS ?= "" KOKKOS_HPX_OPTIONS ?= ""
# Helper functions for conversion to upper case
uppercase_TABLE:=a,A b,B c,C d,D e,E f,F g,G h,H i,I j,J k,K l,L m,M n,N o,O p,P q,Q r,R s,S t,T u,U v,V w,W x,X y,Y z,Z
uppercase_internal=$(if $1,$$(subst $(firstword $1),$(call uppercase_internal,$(wordlist 2,$(words $1),$1),$2)),$2)
uppercase=$(eval uppercase_RESULT:=$(call uppercase_internal,$(uppercase_TABLE),$1))$(uppercase_RESULT)
# Return a 1 if a string contains a substring and 0 if not # Return a 1 if a string contains a substring and 0 if not
# Note the search string should be without '"' # Note the search string should be without '"'
# Example: $(call kokkos_has_string,"hwloc,librt",hwloc) # Example: $(call kokkos_has_string,"hwloc,librt",hwloc)
# Will return a 1 # Will return a 1
kokkos_has_string=$(if $(findstring $2,$1),1,0) kokkos_has_string=$(if $(findstring $(call uppercase,$2),$(call uppercase,$1)),1,0)
# Returns 1 if the path exists, 0 otherwise # Returns 1 if the path exists, 0 otherwise
# Example: $(call kokkos_path_exists,/path/to/file) # Example: $(call kokkos_path_exists,/path/to/file)
# Will return a 1 if /path/to/file exists # Will return a 1 if /path/to/file exists
@ -386,7 +394,6 @@ KOKKOS_INTERNAL_USE_ARCH_IBM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_
# AMD based. # AMD based.
KOKKOS_INTERNAL_USE_ARCH_AMDAVX := $(call kokkos_has_string,$(KOKKOS_ARCH),AMDAVX) KOKKOS_INTERNAL_USE_ARCH_AMDAVX := $(call kokkos_has_string,$(KOKKOS_ARCH),AMDAVX)
KOKKOS_INTERNAL_USE_ARCH_RYZEN := $(call kokkos_has_string,$(KOKKOS_ARCH),Ryzen)
KOKKOS_INTERNAL_USE_ARCH_EPYC := $(call kokkos_has_string,$(KOKKOS_ARCH),EPYC) KOKKOS_INTERNAL_USE_ARCH_EPYC := $(call kokkos_has_string,$(KOKKOS_ARCH),EPYC)
KOKKOS_INTERNAL_USE_ARCH_VEGA900 := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega900) KOKKOS_INTERNAL_USE_ARCH_VEGA900 := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega900)
KOKKOS_INTERNAL_USE_ARCH_VEGA906 := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega906) KOKKOS_INTERNAL_USE_ARCH_VEGA906 := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega906)

View File

@ -19,13 +19,13 @@
# 27 entries for a system containing three elements A, B and C # 27 entries for a system containing three elements A, B and C
# These entries are in LAMMPS "metal" units # These entries are in LAMMPS "metal" units
# #
Hf Hf Hf 1 0 1 0 1.011011 0.046511 0.959614 0.959614 55.9421 55.9421 3.85 0.20 2.069563 2.069563 707.53 707.53 0 0 0.008 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 0.26152 -0.25918 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0 Hf Hf Hf 1 0 1 0 1.011011 0.046511 0.959614 0.959614 55.9421 55.9421 3.85 0.20 2.069563 2.069563 707.53 707.53 0 0 0.008 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 0.26152 -0.25918 0 3.139520 0 0.009410 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0
Ti Ti Ti 1 0 1 0 1.255016 0.089078 1.226342 1.226342 99.3916 99.3916 3.43 0.05 2.082408 2.082408 546.386 546.386 0 0 0.0084 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -4 4 2.508854 -2.511416 0 2.46820415900968 0 0.151351003255176 0 0.873685 0.392632 0.392632 1.78349 1.78349 12 0 Ti Ti Ti 1 0 1 0 1.255016 0.089078 1.226342 1.226342 99.3916 99.3916 3.43 0.05 2.082408 2.082408 546.386 546.386 0 0 0.0084 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -4 4 2.508854 -2.511416 0 2.46820415900968 0 0.151351003255176 0 0.873685 0.392632 0.392632 1.78349 1.78349 12 0
O O O 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 2.8 0.2 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0 O O O 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 2.8 0.2 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0
Cu Cu Cu 1 0 1 0 1 0.140835 1.681711 1.681711 146.987 146.987 3.0 0.05 2.794608 2.794608 952.693 952.693 0.077 0.0095 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -6 2 0.1677645 -0.161007 0 5.946437 0 0 0 0.454784 0.72571 0.72571 0.274649 0.274649 12 0 Cu Cu Cu 1 0 1 0 1 0.140835 1.681711 1.681711 146.987 146.987 3.0 0.05 2.794608 2.794608 952.693 952.693 0.077 0.0095 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -6 2 0.1677645 -0.161007 0 5.946437 0 0 0 0.454784 0.72571 0.72571 0.274649 0.274649 12 0
Si Si Si 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.7322 471.18 471.18 2.90 0.10 2.4799 2.4799 1830.8 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 1.651725 -1.658949 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -0.499378 2.999911 2.999911 12 0 Si Si Si 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.7322 471.18 471.18 2.90 0.10 2.4799 2.4799 1830.8 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 1.651725 -1.658949 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -0.499378 2.999911 2.999911 12 0
Zr Zr Zr 1 0 1 0 1 0 0.929 0.929 39.9454 39.9454 3.8 0.31 1.857 1.857 382.6 382.6 0 0 0 0 0 0 1 1 1 1 -4 4 1.64 -1.5 -4 4 1.64 -1.5 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0 Zr Zr Zr 1 0 1 0 1 0 0.929 0.929 39.9454 39.9454 3.8 0.31 1.857 1.857 382.6 382.6 0 0 0 0 0 0 1 1 1 1 -4 4 1.64 -1.5 -4 4 1.64 -1.5 0 3.139520 0 0.009410 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0
U U U 1 0 1 0 4.346966 0.77617 0.832 0.832 162.6 162.6 3.9 0.15 1.835 1.835 795.6 795.6 0 0 0 0 0 0 1 1 1 1 -4 4 2 -2 -4 4 2 -2 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0 U U U 1 0 1 0 4.346966 0.77617 0.832 0.832 162.6 162.6 3.9 0.15 1.835 1.835 795.6 795.6 0 0 0 0 0 0 1 1 1 1 -4 4 2 -2 -4 4 2 -2 0 3.139520 0 0.009410 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0
# #
Si O O 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 2.68 471.18 260.893 2.80 0.25 2.4799 5.36 1830.8 3326.69 0 0 0 109.47 0.3122 0 1 1 1 1 -4 4 1.651725 -1.658949 -1.8349 5.5046 0.00148 -0.00112 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.922011 2.999911 0.971086 12 0 Si O O 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 2.68 471.18 260.893 2.80 0.25 2.4799 5.36 1830.8 3326.69 0 0 0 109.47 0.3122 0 1 1 1 1 -4 4 1.651725 -1.658949 -1.8349 5.5046 0.00148 -0.00112 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.922011 2.999911 0.971086 12 0
O Si Si 1 6.6 1 -0.229 1 2 2.68 1.7322 260.893 471.18 2.80 0.25 5.36 2.4799 3326.69 1830.8 0 0 0 143.73 2.6 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 1.651725 -1.658949 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -0.499378 0.971086 2.999911 12 0 O Si Si 1 6.6 1 -0.229 1 2 2.68 1.7322 260.893 471.18 2.80 0.25 5.36 2.4799 3326.69 1830.8 0 0 0 143.73 2.6 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 1.651725 -1.658949 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -0.499378 0.971086 2.999911 12 0

2
src/.gitignore vendored
View File

@ -645,6 +645,8 @@
/fix_oneway.h /fix_oneway.h
/fix_orient_bcc.cpp /fix_orient_bcc.cpp
/fix_orient_bcc.h /fix_orient_bcc.h
/fix_orient_eco.cpp
/fix_orient_eco.h
/fix_orient_fcc.cpp /fix_orient_fcc.cpp
/fix_orient_fcc.h /fix_orient_fcc.h
/fix_peri_neigh.cpp /fix_peri_neigh.cpp

View File

@ -224,7 +224,7 @@ double BondClass2::single(int type, double rsq, int /*i*/, int /*j*/, double &ff
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void *BondClass2::extract( char *str, int &dim ) void *BondClass2::extract(const char *str, int &dim)
{ {
dim = 1; dim = 1;
if (strcmp(str,"r0")==0) return (void*) r0; if (strcmp(str,"r0")==0) return (void*) r0;

View File

@ -35,7 +35,7 @@ class BondClass2 : public Bond {
virtual void read_restart(FILE *); virtual void read_restart(FILE *);
void write_data(FILE *); void write_data(FILE *);
double single(int, double, int, int, double &); double single(int, double, int, int, double &);
virtual void *extract(char *, int &); virtual void *extract(const char *, int &);
protected: protected:
double *r0,*k2,*k3,*k4; double *r0,*k2,*k3,*k4;

View File

@ -69,6 +69,7 @@ if (test $1 = "DIPOLE") then
fi fi
if (test $1 = "GRANULAR") then if (test $1 = "GRANULAR") then
depend KOKKOS
depend USER-OMP depend USER-OMP
fi fi

View File

@ -31,11 +31,11 @@
#include "domain.h" #include "domain.h"
#include "utils.h" #include "utils.h"
#include "suffix.h" #include "suffix.h"
#include "tokenizer.h"
#include "potential_file_reader.h"
using namespace LAMMPS_NS; using namespace LAMMPS_NS;
#define MAXLINE 1024
// External functions from cuda library for atom decomposition // External functions from cuda library for atom decomposition
int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq,
@ -369,94 +369,107 @@ void PairEAMAlloyGPU::read_file(char *filename)
{ {
Setfl *file = setfl; Setfl *file = setfl;
// open potential file // read potential file
if(comm->me == 0) {
PotentialFileReader reader(lmp, filename, "EAM");
int me = comm->me; try {
FILE *fptr; reader.skip_line();
char line[MAXLINE]; reader.skip_line();
reader.skip_line();
if (me == 0) {
fptr = fopen(filename,"r");
if (fptr == NULL) {
char str[128];
snprintf(str,128,"Cannot open EAM potential file %s",filename);
error->one(FLERR,str);
}
}
// read and broadcast header
// extract element names from nelements line // extract element names from nelements line
ValueTokenizer values = reader.next_values(1);
file->nelements = values.next_int();
int n; if (values.count() != file->nelements + 1)
if (me == 0) { error->one(FLERR,"Incorrect element names in EAM potential file");
utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error);
utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error);
utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error);
utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error);
n = strlen(line) + 1;
}
MPI_Bcast(&n,1,MPI_INT,0,world);
MPI_Bcast(line,n,MPI_CHAR,0,world);
sscanf(line,"%d",&file->nelements);
int nwords = atom->count_words(line);
if (nwords != file->nelements + 1)
error->all(FLERR,"Incorrect element names in EAM potential file");
char **words = new char*[file->nelements+1];
nwords = 0;
strtok(line," \t\n\r\f");
while ( (words[nwords++] = strtok(NULL," \t\n\r\f")) ) continue;
file->elements = new char*[file->nelements]; file->elements = new char*[file->nelements];
for (int i = 0; i < file->nelements; i++) { for (int i = 0; i < file->nelements; i++) {
n = strlen(words[i]) + 1; const std::string word = values.next_string();
const int n = word.length() + 1;
file->elements[i] = new char[n]; file->elements[i] = new char[n];
strcpy(file->elements[i],words[i]); strcpy(file->elements[i], word.c_str());
}
delete [] words;
if (me == 0) {
utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error);
sscanf(line,"%d %lg %d %lg %lg",
&file->nrho,&file->drho,&file->nr,&file->dr,&file->cut);
} }
MPI_Bcast(&file->nrho,1,MPI_INT,0,world); //
MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world);
MPI_Bcast(&file->nr,1,MPI_INT,0,world);
MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world);
MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world);
file->mass = new double[file->nelements]; values = reader.next_values(5);
memory->create(file->frho,file->nelements,file->nrho+1,"pair:frho"); file->nrho = values.next_int();
memory->create(file->rhor,file->nelements,file->nr+1,"pair:rhor"); file->drho = values.next_double();
memory->create(file->z2r,file->nelements,file->nelements,file->nr+1, file->nr = values.next_int();
"pair:z2r"); file->dr = values.next_double();
file->cut = values.next_double();
int i,j,tmp; if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0))
for (i = 0; i < file->nelements; i++) { error->one(FLERR,"Invalid EAM potential file");
if (me == 0) {
utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error);
sscanf(line,"%d %lg",&tmp,&file->mass[i]);
}
MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world);
if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); memory->create(file->mass, file->nelements, "pair:mass");
MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho");
if (me == 0) grab(fptr,file->nr,&file->rhor[i][1]); memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor");
MPI_Bcast(&file->rhor[i][1],file->nr,MPI_DOUBLE,0,world); memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r");
for (int i = 0; i < file->nelements; i++) {
values = reader.next_values(2);
values.next_int(); // ignore
file->mass[i] = values.next_double();
reader.next_dvector(&file->frho[i][1], file->nrho);
reader.next_dvector(&file->rhor[i][1], file->nr);
} }
for (i = 0; i < file->nelements; i++) for (int i = 0; i < file->nelements; i++) {
for (j = 0; j <= i; j++) { for (int j = 0; j <= i; j++) {
if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); reader.next_dvector(&file->z2r[i][j][1], file->nr);
MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); }
}
} catch (TokenizerException & e) {
error->one(FLERR, e.what());
}
} }
// close the potential file // broadcast potential information
MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world);
if (me == 0) fclose(fptr); MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world);
MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->nr, 1, MPI_INT, 0, world);
MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world);
// allocate memory on other procs
if (comm->me != 0) {
file->elements = new char*[file->nelements];
for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr;
memory->create(file->mass, file->nelements, "pair:mass");
memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho");
memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor");
memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r");
}
// broadcast file->elements string array
for (int i = 0; i < file->nelements; i++) {
int n;
if (comm->me == 0) n = strlen(file->elements[i]) + 1;
MPI_Bcast(&n, 1, MPI_INT, 0, world);
if (comm->me != 0) file->elements[i] = new char[n];
MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world);
}
// broadcast file->mass, frho, rhor
for (int i = 0; i < file->nelements; i++) {
MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->rhor[i][1], file->nr, MPI_DOUBLE, 0, world);
}
// broadcast file->z2r
for (int i = 0; i < file->nelements; i++) {
for (int j = 0; j <= i; j++) {
MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world);
}
}
} }
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------

View File

@ -30,11 +30,12 @@
#include "gpu_extra.h" #include "gpu_extra.h"
#include "domain.h" #include "domain.h"
#include "suffix.h" #include "suffix.h"
#include "utils.h"
#include "tokenizer.h"
#include "potential_file_reader.h"
using namespace LAMMPS_NS; using namespace LAMMPS_NS;
#define MAXLINE 1024
// External functions from cuda library for atom decomposition // External functions from cuda library for atom decomposition
int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, int eam_fs_gpu_init(const int ntypes, double host_cutforcesq,
@ -368,99 +369,113 @@ void PairEAMFSGPU::read_file(char *filename)
{ {
Fs *file = fs; Fs *file = fs;
// open potential file // read potential file
if(comm->me == 0) {
PotentialFileReader reader(lmp, filename, "EAM");
int me = comm->me; try {
FILE *fptr; reader.skip_line();
char line[MAXLINE]; reader.skip_line();
reader.skip_line();
if (me == 0) {
fptr = force->open_potential(filename);
if (fptr == NULL) {
char str[128];
snprintf(str,128,"Cannot open EAM potential file %s",filename);
error->one(FLERR,str);
}
}
// read and broadcast header
// extract element names from nelements line // extract element names from nelements line
ValueTokenizer values = reader.next_values(1);
file->nelements = values.next_int();
int n; if (values.count() != file->nelements + 1)
if (me == 0) { error->one(FLERR,"Incorrect element names in EAM potential file");
fgets(line,MAXLINE,fptr);
fgets(line,MAXLINE,fptr);
fgets(line,MAXLINE,fptr);
fgets(line,MAXLINE,fptr);
n = strlen(line) + 1;
}
MPI_Bcast(&n,1,MPI_INT,0,world);
MPI_Bcast(line,n,MPI_CHAR,0,world);
sscanf(line,"%d",&file->nelements);
int nwords = atom->count_words(line);
if (nwords != file->nelements + 1)
error->all(FLERR,"Incorrect element names in EAM potential file");
char **words = new char*[file->nelements+1];
nwords = 0;
strtok(line," \t\n\r\f");
while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue;
file->elements = new char*[file->nelements]; file->elements = new char*[file->nelements];
for (int i = 0; i < file->nelements; i++) { for (int i = 0; i < file->nelements; i++) {
n = strlen(words[i]) + 1; const std::string word = values.next_string();
const int n = word.length() + 1;
file->elements[i] = new char[n]; file->elements[i] = new char[n];
strcpy(file->elements[i],words[i]); strcpy(file->elements[i], word.c_str());
}
delete [] words;
if (me == 0) {
fgets(line,MAXLINE,fptr);
sscanf(line,"%d %lg %d %lg %lg",
&file->nrho,&file->drho,&file->nr,&file->dr,&file->cut);
} }
MPI_Bcast(&file->nrho,1,MPI_INT,0,world); //
MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world);
MPI_Bcast(&file->nr,1,MPI_INT,0,world);
MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world);
MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world);
file->mass = new double[file->nelements]; values = reader.next_values(5);
memory->create(file->frho,file->nelements,file->nrho+1, file->nrho = values.next_int();
"pair:frho"); file->drho = values.next_double();
memory->create(file->rhor,file->nelements,file->nelements, file->nr = values.next_int();
file->nr+1,"pair:rhor"); file->dr = values.next_double();
memory->create(file->z2r,file->nelements,file->nelements, file->cut = values.next_double();
file->nr+1,"pair:z2r");
int i,j,tmp; if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0))
for (i = 0; i < file->nelements; i++) { error->one(FLERR,"Invalid EAM potential file");
if (me == 0) {
fgets(line,MAXLINE,fptr);
sscanf(line,"%d %lg",&tmp,&file->mass[i]);
}
MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world);
if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); memory->create(file->mass, file->nelements, "pair:mass");
MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho");
memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor");
memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r");
for (j = 0; j < file->nelements; j++) { for (int i = 0; i < file->nelements; i++) {
if (me == 0) grab(fptr,file->nr,&file->rhor[i][j][1]); values = reader.next_values(2);
MPI_Bcast(&file->rhor[i][j][1],file->nr,MPI_DOUBLE,0,world); values.next_int(); // ignore
file->mass[i] = values.next_double();
reader.next_dvector(&file->frho[i][1], file->nrho);
for (int j = 0; j < file->nelements; j++) {
reader.next_dvector(&file->rhor[i][j][1], file->nr);
} }
} }
for (i = 0; i < file->nelements; i++) for (int i = 0; i < file->nelements; i++) {
for (j = 0; j <= i; j++) { for (int j = 0; j <= i; j++) {
if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); reader.next_dvector(&file->z2r[i][j][1], file->nr);
MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); }
}
} catch (TokenizerException & e) {
error->one(FLERR, e.what());
}
} }
// close the potential file // broadcast potential information
MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world);
if (me == 0) fclose(fptr); MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world);
MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->nr, 1, MPI_INT, 0, world);
MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world);
// allocate memory on other procs
if (comm->me != 0) {
file->elements = new char*[file->nelements];
for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr;
memory->create(file->mass, file->nelements, "pair:mass");
memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho");
memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor");
memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r");
}
// broadcast file->elements string array
for (int i = 0; i < file->nelements; i++) {
int n;
if (comm->me == 0) n = strlen(file->elements[i]) + 1;
MPI_Bcast(&n, 1, MPI_INT, 0, world);
if (comm->me != 0) file->elements[i] = new char[n];
MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world);
}
// broadcast file->mass, frho, rhor
for (int i = 0; i < file->nelements; i++) {
MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world);
for (int j = 0; j < file->nelements; j++) {
MPI_Bcast(&file->rhor[i][j][1], file->nr, MPI_DOUBLE, 0, world);
}
}
// broadcast file->z2r
for (int i = 0; i < file->nelements; i++) {
for (int j = 0; j <= i; j++) {
MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world);
}
}
} }
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------

View File

@ -370,7 +370,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) :
vshear = force->numeric(FLERR,arg[iarg+2]); vshear = force->numeric(FLERR,arg[iarg+2]);
wshear = 1; wshear = 1;
iarg += 3; iarg += 3;
} else if (strcmp(arg[iarg],"store_contacts") == 0) { } else if (strcmp(arg[iarg],"contacts") == 0) {
peratom_flag = 1; peratom_flag = 1;
size_peratom_cols = 8; size_peratom_cols = 8;
peratom_freq = 1; peratom_freq = 1;
@ -426,10 +426,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) :
} }
if (peratom_flag) { if (peratom_flag) {
int nlocal = atom->nlocal; clear_stored_contacts();
for (int i = 0; i < nlocal; i++)
for (int m = 0; m < size_peratom_cols; m++)
array_atom[i][m] = 0.0;
} }
time_origin = update->ntimestep; time_origin = update->ntimestep;
@ -596,6 +593,10 @@ void FixWallGran::post_force(int /*vflag*/)
rwall = 0.0; rwall = 0.0;
if (peratom_flag) {
clear_stored_contacts();
}
for (int i = 0; i < nlocal; i++) { for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) { if (mask[i] & groupbit) {
@ -668,7 +669,7 @@ void FixWallGran::post_force(int /*vflag*/)
// store contact info // store contact info
if (peratom_flag) { if (peratom_flag) {
array_atom[i][0] = (double)atom->tag[i]; array_atom[i][0] = 1.0;
array_atom[i][4] = x[i][0] - dx; array_atom[i][4] = x[i][0] - dx;
array_atom[i][5] = x[i][1] - dy; array_atom[i][5] = x[i][1] - dy;
array_atom[i][6] = x[i][2] - dz; array_atom[i][6] = x[i][2] - dz;
@ -702,6 +703,15 @@ void FixWallGran::post_force(int /*vflag*/)
} }
} }
void FixWallGran::clear_stored_contacts() {
const int nlocal = atom->nlocal;
for (int i = 0; i < nlocal; i++) {
for (int m = 0; m < size_peratom_cols; m++) {
array_atom[i][m] = 0.0;
}
}
}
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void FixWallGran::post_force_respa(int vflag, int ilevel, int /*iloop*/) void FixWallGran::post_force_respa(int vflag, int ilevel, int /*iloop*/)

View File

@ -110,6 +110,8 @@ class FixWallGran : public Fix {
// store particle interactions // store particle interactions
int store; int store;
void clear_stored_contacts();
}; };
} }

View File

@ -178,6 +178,10 @@ void FixWallGranRegion::post_force(int /*vflag*/)
region->set_velocity(); region->set_velocity();
} }
if (peratom_flag) {
clear_stored_contacts();
}
for (i = 0; i < nlocal; i++) { for (i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) { if (mask[i] & groupbit) {
if (!region->match(x[i][0],x[i][1],x[i][2])) continue; if (!region->match(x[i][0],x[i][1],x[i][2])) continue;

View File

@ -57,6 +57,8 @@
------------------------------------------------------------------------- */ ------------------------------------------------------------------------- */
#include "kim_init.h" #include "kim_init.h"
#include "fix_store_kim.h"
#include "kim_units.h"
#include <cstring> #include <cstring>
#include <string> #include <string>
#include <sstream> #include <sstream>
@ -71,8 +73,8 @@
#include "input.h" #include "input.h"
#include "variable.h" #include "variable.h"
#include "citeme.h" #include "citeme.h"
#include "fix_store_kim.h" #include "utils.h"
#include "kim_units.h" #include "fmt/format.h"
extern "C" { extern "C" {
#include "KIM_SimulatorHeaders.h" #include "KIM_SimulatorHeaders.h"
@ -275,7 +277,7 @@ void KimInit::determine_model_type_and_units(char * model_name,
std::string mesg("Incompatible units for KIM Simulator Model, " std::string mesg("Incompatible units for KIM Simulator Model, "
"required units = "); "required units = ");
mesg += *model_units; mesg += *model_units;
error->all(FLERR,mesg.c_str()); error->all(FLERR,mesg);
} }
} }
} }
@ -302,7 +304,7 @@ void KimInit::do_init(char *model_name, char *user_units, char *model_units, KIM
fix_store->setptr("model_units", (void *) model_units); fix_store->setptr("model_units", (void *) model_units);
// Begin output to log file // Begin output to log file
kim_init_log_delimiter("begin"); input->write_echo("#=== BEGIN kim-init ==========================================\n");
int kimerror; int kimerror;
KIM_SimulatorModel * simulatorModel; KIM_SimulatorModel * simulatorModel;
@ -328,8 +330,7 @@ void KimInit::do_init(char *model_name, char *user_units, char *model_units, KIM
mesg += "\n"; mesg += "\n";
mesg += "#\n"; mesg += "#\n";
if (screen) fputs(mesg.c_str(),screen); utils::logmesg(lmp,mesg);
if (logfile) fputs(mesg.c_str(),logfile);
} }
fix_store->setptr("simulator_model", (void *) simulatorModel); fix_store->setptr("simulator_model", (void *) simulatorModel);
@ -346,7 +347,7 @@ void KimInit::do_init(char *model_name, char *user_units, char *model_units, KIM
std::string cmd("units "); std::string cmd("units ");
cmd += model_units; cmd += model_units;
input->one(cmd.c_str()); input->one(cmd);
if (model_type == SM) { if (model_type == SM) {
int sim_fields, sim_lines; int sim_fields, sim_lines;
@ -423,37 +424,14 @@ void KimInit::do_init(char *model_name, char *user_units, char *model_units, KIM
mesg += "\n"; mesg += "\n";
} }
} }
else else mesg += "No mutable parameters. \n";
mesg += "No mutable parameters. \n";
KIM_Model_Destroy(&pkim); KIM_Model_Destroy(&pkim);
input->write_echo(mesg);
if (comm->me == 0)
{
input->write_echo(mesg.c_str());
}
} }
// End output to log file // End output to log file
kim_init_log_delimiter("end"); input->write_echo("#=== END kim-init ============================================\n\n");
}
/* ---------------------------------------------------------------------- */
void KimInit::kim_init_log_delimiter(std::string const &begin_end) const
{
if (comm->me == 0) {
std::string mesg;
if (begin_end == "begin")
mesg =
"#=== BEGIN kim-init ==========================================\n";
else if (begin_end == "end")
mesg =
"#=== END kim-init ============================================\n\n";
input->write_echo(mesg.c_str());
}
} }
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
@ -493,14 +471,8 @@ void KimInit::do_variables(char *user_units, char *model_units)
(char *)"efield", (char *)"efield",
(char *)"density"}; (char *)"density"};
if (comm->me == 0) { input->write_echo(fmt::format("# Conversion factors from {} to {}:\n",
std::string mesg("# Conversion factors from "); from,to));
mesg += from;
mesg += " to ";
mesg += to;
mesg += ":\n";
input->write_echo(mesg.c_str());
}
for (int i = 0; i < nunits; i++) { for (int i = 0; i < nunits; i++) {
var_str = std::string("_u_") + std::string(units[i]); var_str = std::string("_u_") + std::string(units[i]);
@ -514,58 +486,43 @@ void KimInit::do_variables(char *user_units, char *model_units)
from, from,
to, to,
conversion_factor); conversion_factor);
if (ier != 0) { if (ier != 0)
std::string err = std::string("Unable to obtain conversion factor: ") + error->all(FLERR,fmt::format("Unable to obtain conversion factor: "
"unit = " + units[i] + "; " "unit = {}; from = {}; to = {}.",
"from = " + from + "; " units[i], from, to));
"to = " + to + ".";
error->all(FLERR,err.c_str());
}
variable->internal_set(v_unit,conversion_factor); variable->internal_set(v_unit,conversion_factor);
if (comm->me == 0) { input->write_echo(fmt::format("variable {:<15s} internal {:<15.12e}\n",
std::stringstream mesg; var_str, conversion_factor));
mesg << "variable " << std::setw(15) << std::left << var_str
<< " internal "
<< std::setprecision(12) << std::scientific << conversion_factor
<< std::endl;
input->write_echo(mesg.str().c_str());
} }
} input->write_echo("#\n");
if (comm->me == 0) input->write_echo("#\n");
} }
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void KimInit::write_log_cite(char * model_name) void KimInit::write_log_cite(const std::string &model_name)
{ {
KIM_Collections * coll; KIM_Collections * coll;
int err = KIM_Collections_Create(&coll); int err = KIM_Collections_Create(&coll);
if (err) return; if (err) return;
int extent; int extent;
if (model_type == MO) if (model_type == MO) {
{
err = KIM_Collections_CacheListOfItemMetadataFiles( err = KIM_Collections_CacheListOfItemMetadataFiles(
coll,KIM_COLLECTION_ITEM_TYPE_portableModel,model_name,&extent); coll,KIM_COLLECTION_ITEM_TYPE_portableModel,model_name.c_str(),&extent);
} } else if (model_type == SM) {
else if (model_type == SM)
{
err = KIM_Collections_CacheListOfItemMetadataFiles( err = KIM_Collections_CacheListOfItemMetadataFiles(
coll,KIM_COLLECTION_ITEM_TYPE_simulatorModel,model_name,&extent); coll,KIM_COLLECTION_ITEM_TYPE_simulatorModel,model_name.c_str(),&extent);
} } else {
else
{
error->all(FLERR,"Unknown model type."); error->all(FLERR,"Unknown model type.");
} }
if (err) if (err) {
{
KIM_Collections_Destroy(&coll); KIM_Collections_Destroy(&coll);
return; return;
} }
for (int i = 0; i < extent;++i) for (int i = 0; i < extent;++i) {
{
char const * fileName; char const * fileName;
int availableAsString; int availableAsString;
char const * fileString; char const * fileString;
@ -573,8 +530,7 @@ void KimInit::write_log_cite(char * model_name)
coll,i,&fileName,NULL,NULL,&availableAsString,&fileString); coll,i,&fileName,NULL,NULL,&availableAsString,&fileString);
if (err) continue; if (err) continue;
if (0 == strncmp("kimcite",fileName,7)) if (0 == strncmp("kimcite",fileName,7)) {
{
if ((lmp->citeme) && (availableAsString)) lmp->citeme->add(fileString); if ((lmp->citeme) && (availableAsString)) lmp->citeme->add(fileString);
} }
} }

View File

@ -83,10 +83,9 @@ class KimInit : protected Pointers {
bool unit_conversion_mode; bool unit_conversion_mode;
void determine_model_type_and_units(char *, char *, char **, KIM_Model *&); void determine_model_type_and_units(char *, char *, char **, KIM_Model *&);
void write_log_cite(char *); void write_log_cite(const std::string &);
void do_init(char *, char *, char *, KIM_Model *&); void do_init(char *, char *, char *, KIM_Model *&);
void do_variables(char*, char*); void do_variables(char*, char*);
void kim_init_log_delimiter(std::string const &begin_end) const;
}; };
} }

View File

@ -99,24 +99,6 @@ void KimInteractions::command(int narg, char **arg)
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void KimInteractions::kim_interactions_log_delimiter(
std::string const begin_end) const
{
if (comm->me == 0) {
std::string mesg;
if (begin_end == "begin")
mesg =
"#=== BEGIN kim_interactions ==================================\n";
else if (begin_end == "end")
mesg =
"#=== END kim_interactions ====================================\n\n";
input->write_echo(mesg.c_str());
}
}
/* ---------------------------------------------------------------------- */
void KimInteractions::do_setup(int narg, char **arg) void KimInteractions::do_setup(int narg, char **arg)
{ {
bool fixed_types; bool fixed_types;
@ -145,7 +127,7 @@ void KimInteractions::do_setup(int narg, char **arg)
} else error->all(FLERR,"Must use 'kim_init' before 'kim_interactions'"); } else error->all(FLERR,"Must use 'kim_init' before 'kim_interactions'");
// Begin output to log file // Begin output to log file
kim_interactions_log_delimiter("begin"); input->write_echo("#=== BEGIN kim_interactions ==================================\n");
if (simulatorModel) { if (simulatorModel) {
@ -167,7 +149,7 @@ void KimInteractions::do_setup(int narg, char **arg)
simulatorModel,"atom-type-num-list",atom_type_num_list.c_str()); simulatorModel,"atom-type-num-list",atom_type_num_list.c_str());
KIM_SimulatorModel_CloseTemplateMap(simulatorModel); KIM_SimulatorModel_CloseTemplateMap(simulatorModel);
int len = strlen(atom_type_sym_list.c_str())+1; int len = atom_type_sym_list.size()+1;
char *strbuf = new char[len]; char *strbuf = new char[len];
char *strword; char *strword;
@ -192,7 +174,7 @@ void KimInteractions::do_setup(int narg, char **arg)
std::string msg("Species '"); std::string msg("Species '");
msg += strword; msg += strword;
msg += "' is not supported by this KIM Simulator Model"; msg += "' is not supported by this KIM Simulator Model";
error->all(FLERR,msg.c_str()); error->all(FLERR,msg);
} }
strword = strtok(NULL," \t"); strword = strtok(NULL," \t");
} }
@ -276,13 +258,12 @@ void KimInteractions::do_setup(int narg, char **arg)
cmd2 += " "; cmd2 += " ";
} }
input->one(cmd1.c_str()); input->one(cmd1);
input->one(cmd2.c_str()); input->one(cmd2);
} }
// End output to log file // End output to log file
kim_interactions_log_delimiter("end"); input->write_echo("#=== END kim_interactions ====================================\n\n");
} }
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
@ -377,7 +358,7 @@ void KimInteractions::KIM_SET_TYPE_PARAMETERS(char const *const input_line) cons
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
int KimInteractions::species_to_atomic_no(std::string const species) const int KimInteractions::species_to_atomic_no(const std::string &species) const
{ {
if (species == "H") return 1; if (species == "H") return 1;
else if (species == "He") return 2; else if (species == "He") return 2;

View File

@ -76,9 +76,8 @@ class KimInteractions : protected Pointers {
void command(int, char **); void command(int, char **);
private: private:
void do_setup(int, char **); void do_setup(int, char **);
int species_to_atomic_no(std::string const species) const; int species_to_atomic_no(const std::string &species) const;
void KIM_SET_TYPE_PARAMETERS(char const *const input_line) const; void KIM_SET_TYPE_PARAMETERS(char const *const input_line) const;
void kim_interactions_log_delimiter(std::string const begin_end) const;
}; };
} }

View File

@ -56,6 +56,8 @@
------------------------------------------------------------------------- */ ------------------------------------------------------------------------- */
#include "kim_param.h" #include "kim_param.h"
#include "fix_store_kim.h"
#include "pair_kim.h"
#include <mpi.h> #include <mpi.h>
#include <cstring> #include <cstring>
#include <string> #include <string>
@ -66,8 +68,7 @@
#include "modify.h" #include "modify.h"
#include "variable.h" #include "variable.h"
#include "force.h" #include "force.h"
#include "fix_store_kim.h" #include "fmt/format.h"
#include "pair_kim.h"
extern "C" extern "C"
{ {
@ -157,13 +158,12 @@ void KimParam::command(int narg, char **arg)
if (narg < 4) if (narg < 4)
error->all(FLERR, "Illegal kim_param command"); error->all(FLERR, "Illegal kim_param command");
kim_param_get = (strcmp(arg[0], "get") == 0); std::string kim_param_get_set = arg[0];
kim_param_set = (strcmp(arg[0], "set") == 0);
if (!kim_param_get && !kim_param_set) { if ((kim_param_get_set != "get") && (kim_param_get_set != "set")) {
std::string msg("Incorrect arguments in kim_param command.\n"); std::string msg("Incorrect arguments in kim_param command.\n");
msg += "'kim_param get/set' is mandatory."; msg += "'kim_param get/set' is mandatory.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
// Check if we called a kim_init command // Check if we called a kim_init command
@ -193,7 +193,8 @@ void KimParam::command(int narg, char **arg)
else else
error->all(FLERR, "Must use 'kim_init' before 'kim_param'"); error->all(FLERR, "Must use 'kim_init' before 'kim_param'");
kim_param_log_delimiter("begin"); input->write_echo(fmt::format("#=== BEGIN kim-param {} ==================="
"==================\n",kim_param_get_set));
KIM_Model *pkim = NULL; KIM_Model *pkim = NULL;
@ -211,7 +212,7 @@ void KimParam::command(int narg, char **arg)
if (!pkim) if (!pkim)
error->all(FLERR, "Unable to get the KIM Portable Model."); error->all(FLERR, "Unable to get the KIM Portable Model.");
if (kim_param_set) { if (kim_param_get_set == "set") {
atom_type_list = pairKIM->get_atom_type_list(); atom_type_list = pairKIM->get_atom_type_list();
if (atom_type_list.empty()) if (atom_type_list.empty())
error->all(FLERR, "The requested atom type list is empty."); error->all(FLERR, "The requested atom type list is empty.");
@ -220,12 +221,12 @@ void KimParam::command(int narg, char **arg)
error->all(FLERR, "Pair style is defined," error->all(FLERR, "Pair style is defined,"
" but there is no match for kim style in lammps."); " but there is no match for kim style in lammps.");
} else { } else {
if (kim_param_set) { if (kim_param_get_set == "set") {
std::string msg("Wrong kim_param set command.\n"); std::string msg("Wrong kim_param set command.\n");
msg += "To set the new parameter values, pair style must be assigned.\n"; msg += "To set the new parameter values, pair style must be assigned.\n";
msg += "Must use 'kim_interactions' or"; msg += "Must use 'kim_interactions' or";
msg += "'pair_style kim ' before 'kim_param set'"; msg += "'pair_style kim ' before 'kim_param set'";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} else { } else {
KIM_LengthUnit lengthUnit; KIM_LengthUnit lengthUnit;
KIM_EnergyUnit energyUnit; KIM_EnergyUnit energyUnit;
@ -259,7 +260,7 @@ void KimParam::command(int narg, char **arg)
KIM_Model_GetNumberOfParameters(pkim, &numberOfParameters); KIM_Model_GetNumberOfParameters(pkim, &numberOfParameters);
if (numberOfParameters) { if (numberOfParameters) {
// Get the parameters // Get the parameters
if (kim_param_get) { if (kim_param_get_set == "get") {
// Parameter name // Parameter name
char *paramname = NULL; char *paramname = NULL;
// Variable name // Variable name
@ -296,7 +297,7 @@ void KimParam::command(int narg, char **arg)
msg += "This Model does not have the requested '"; msg += "This Model does not have the requested '";
msg += paramname; msg += paramname;
msg += "' parameter."; msg += "' parameter.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
// Get the index_range for the requested parameter // Get the index_range for the requested parameter
@ -313,7 +314,7 @@ void KimParam::command(int narg, char **arg)
msg += "Expected integer parameter(s) instead of '"; msg += "Expected integer parameter(s) instead of '";
msg += argtostr; msg += argtostr;
msg += "' in index_range."; msg += "' in index_range.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
std::string::size_type npos = argtostr.find(':'); std::string::size_type npos = argtostr.find(':');
@ -330,7 +331,7 @@ void KimParam::command(int narg, char **arg)
msg += "' parameter with extent of '"; msg += "' parameter with extent of '";
msg += SNUM(extent); msg += SNUM(extent);
msg += "' ."; msg += "' .";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
} else { } else {
std::stringstream str(argtostr); std::stringstream str(argtostr);
@ -342,7 +343,7 @@ void KimParam::command(int narg, char **arg)
msg += "' with the extent of '"; msg += "' with the extent of '";
msg += SNUM(extent); msg += SNUM(extent);
msg += "' ."; msg += "' .";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
nubound = nlbound; nubound = nlbound;
} }
@ -350,7 +351,7 @@ void KimParam::command(int narg, char **arg)
std::string msg("Wrong number of arguments in "); std::string msg("Wrong number of arguments in ");
msg += "kim_param get command.\n"; msg += "kim_param get command.\n";
msg += "Index range after parameter name is mandatory."; msg += "Index range after parameter name is mandatory.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
int const nvars = nubound - nlbound + 1; int const nvars = nubound - nlbound + 1;
@ -363,7 +364,7 @@ void KimParam::command(int narg, char **arg)
std::string msg("Wrong number of arguments in "); std::string msg("Wrong number of arguments in ");
msg += "kim_param get command.\n"; msg += "kim_param get command.\n";
msg += "The LAMMPS variable name is mandatory."; msg += "The LAMMPS variable name is mandatory.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
// indicator flag for list request // indicator flag for list request
@ -400,7 +401,7 @@ void KimParam::command(int narg, char **arg)
msg += "' variable names or '"; msg += "' variable names or '";
msg += varname; msg += varname;
msg += " split' is mandatory."; msg += " split' is mandatory.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
} else { } else {
std::string msg("Wrong number of arguments in "); std::string msg("Wrong number of arguments in ");
@ -410,7 +411,7 @@ void KimParam::command(int narg, char **arg)
msg += "' variable names or '"; msg += "' variable names or '";
msg += varname; msg += varname;
msg += " split/list' is mandatory."; msg += " split/list' is mandatory.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
} else { } else {
varsname = new char *[1]; varsname = new char *[1];
@ -524,7 +525,7 @@ void KimParam::command(int narg, char **arg)
set_cmd += " "; set_cmd += " ";
set_cmd += arg[i]; set_cmd += arg[i];
} }
input->one(set_cmd.c_str()); input->one(set_cmd);
} }
} else } else
error->all(FLERR, "This model has No mutable parameters."); error->all(FLERR, "This model has No mutable parameters.");
@ -532,38 +533,17 @@ void KimParam::command(int narg, char **arg)
if (!isPairStyleAssigned) if (!isPairStyleAssigned)
KIM_Model_Destroy(&pkim); KIM_Model_Destroy(&pkim);
kim_param_log_delimiter("end"); input->write_echo(fmt::format("#=== END kim-param {} ====================="
"==================\n",kim_param_get_set));
} }
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void KimParam::kim_param_log_delimiter(std::string const &begin_end) const void KimParam::echo_var_assign(const std::string &name,
const std::string &value) const
{ {
if (comm->me == 0) { input->write_echo(fmt::format("variable {} string {}\n",
std::string msg; name, value));
if (begin_end == "begin") {
msg = "#=== BEGIN kim-param ";
msg += kim_param_get ? "get " : "set ";
msg += "=====================================\n";
} else if (begin_end == "end") {
msg = "#=== END kim-param ";
msg += kim_param_get ? "get " : "set ";
msg += "=======================================\n\n";
}
input->write_echo(msg.c_str());
}
}
/* ---------------------------------------------------------------------- */
void KimParam::echo_var_assign(std::string const &name,
std::string const &value) const
{
if (comm->me == 0) {
std::string msg;
msg += "variable " + name + " string " + value + "\n";
input->write_echo(msg.c_str());
}
} }
#undef SNUM #undef SNUM

View File

@ -80,10 +80,7 @@ public:
void command(int, char **); void command(int, char **);
private: private:
void kim_param_log_delimiter(std::string const &begin_end) const; void echo_var_assign(const std::string &name, const std::string &value) const;
void echo_var_assign(std::string const &name, std::string const &value)
const;
private: private:
bool kim_param_get; bool kim_param_get;

View File

@ -100,13 +100,13 @@ void kimProperty::command(int narg, char **arg)
std::string msg("Error incorrect arguments in kim_property command.\n"); std::string msg("Error incorrect arguments in kim_property command.\n");
msg += "`kim_property create/destroy/modify/remove/dump` "; msg += "`kim_property create/destroy/modify/remove/dump` ";
msg += "is mandatory."; msg += "is mandatory.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
if (comm->me == 0) { if (comm->me == 0) {
std::string msg; std::string msg;
msg = "#=== kim-property ===========================================\n"; msg = "#=== kim-property ===========================================\n";
input->write_echo(msg.c_str()); input->write_echo(msg);
} }
// Get the kim_str ptr to the data associated with a kim_property_str // Get the kim_str ptr to the data associated with a kim_property_str
@ -464,7 +464,8 @@ void kimProperty::command(int narg, char **arg)
error->one(FLERR, "Error Python `kim_property_dump` function " error->one(FLERR, "Error Python `kim_property_dump` function "
"evaluation failed!"); "evaluation failed!");
} }
} } else
pValue = NULL;
// Destroy the variable // Destroy the variable
kim_str_cmd[1] = const_cast<char *>("delete"); kim_str_cmd[1] = const_cast<char *>("delete");

View File

@ -56,6 +56,7 @@
------------------------------------------------------------------------- */ ------------------------------------------------------------------------- */
#include "kim_query.h" #include "kim_query.h"
#include "fix_store_kim.h"
#include <mpi.h> #include <mpi.h>
#include <cstring> #include <cstring>
#include <string> #include <string>
@ -67,7 +68,7 @@
#include "variable.h" #include "variable.h"
#include "version.h" #include "version.h"
#include "info.h" #include "info.h"
#include "fix_store_kim.h" #include "fmt/format.h"
#if defined(LMP_KIM_CURL) #if defined(LMP_KIM_CURL)
#include <sys/types.h> #include <sys/types.h>
@ -153,7 +154,7 @@ void KimQuery::command(int narg, char **arg)
error->all(FLERR,errmsg); error->all(FLERR,errmsg);
} }
kim_query_log_delimiter("begin"); input->write_echo("#=== BEGIN kim-query =========================================\n");
char **varcmd = new char*[3]; char **varcmd = new char*[3];
varcmd[1] = (char *) "string"; varcmd[1] = (char *) "string";
@ -186,7 +187,7 @@ void KimQuery::command(int narg, char **arg)
input->variable->set(3,varcmd); input->variable->set(3,varcmd);
echo_var_assign(varname, value_string); echo_var_assign(varname, value_string);
} }
kim_query_log_delimiter("end"); input->write_echo("#=== END kim-query ===========================================\n\n");
delete[] varcmd; delete[] varcmd;
delete[] value; delete[] value;
@ -342,29 +343,8 @@ char *do_query(char *qfunction, char * model_name, int narg, char **arg,
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void KimQuery::kim_query_log_delimiter(std::string const begin_end) const void KimQuery::echo_var_assign(const std::string & name,
const std::string & value) const
{ {
if (comm->me == 0) { input->write_echo(fmt::format("variable {} string {}\n",name,value));
std::string mesg;
if (begin_end == "begin")
mesg =
"#=== BEGIN kim-query =========================================\n";
else if (begin_end == "end")
mesg =
"#=== END kim-query ===========================================\n\n";
input->write_echo(mesg.c_str());
}
}
/* ---------------------------------------------------------------------- */
void KimQuery::echo_var_assign(std::string const & name,
std::string const & value) const
{
if (comm->me == 0) {
std::string mesg;
mesg += "variable " + name + " string " + value + "\n";
input->write_echo(mesg.c_str());
}
} }

View File

@ -73,8 +73,7 @@ class KimQuery : protected Pointers {
KimQuery(class LAMMPS *lmp) : Pointers(lmp) {}; KimQuery(class LAMMPS *lmp) : Pointers(lmp) {};
void command(int, char **); void command(int, char **);
private: private:
void kim_query_log_delimiter(std::string const begin_end) const; void echo_var_assign(const std::string &name, const std::string &value)
void echo_var_assign(std::string const & name, std::string const & value)
const; const;
}; };

View File

@ -1370,9 +1370,9 @@ double get_unit_conversion_factor(unit_type &unit_type_enum,
// Wrapper to the routine that gets the unit conversion. Translates strings // Wrapper to the routine that gets the unit conversion. Translates strings
// to enumerations and then call get_unit_conversion_factor() // to enumerations and then call get_unit_conversion_factor()
int lammps_unit_conversion(string const &unit_type_str, int lammps_unit_conversion(const string &unit_type_str,
string const &from_system_str, const string &from_system_str,
string const &to_system_str, const string &to_system_str,
double &conversion_factor) double &conversion_factor)
{ {
// initialize // initialize

View File

@ -53,7 +53,7 @@
Designed for use with the kim-api-2.0.2 (and newer) package Designed for use with the kim-api-2.0.2 (and newer) package
------------------------------------------------------------------------- */ ------------------------------------------------------------------------- */
int lammps_unit_conversion(std::string const &unit_type_str, int lammps_unit_conversion(const std::string &unit_type_str,
std::string const &from_system_str, const std::string &from_system_str,
std::string const &to_system_str, const std::string &to_system_str,
double &conversion_factor); double &conversion_factor);

View File

@ -429,7 +429,7 @@ void PairKIM::coeff(int narg, char **arg)
} else { } else {
std::string msg("create_kim_particle_codes: symbol not found: "); std::string msg("create_kim_particle_codes: symbol not found: ");
msg += lmps_unique_elements[i]; msg += lmps_unique_elements[i];
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
} }
// Set the new values for PM parameters // Set the new values for PM parameters
@ -441,7 +441,7 @@ void PairKIM::coeff(int narg, char **arg)
if (!numberOfParameters) { if (!numberOfParameters) {
std::string msg("Incorrect args for pair coefficients \n"); std::string msg("Incorrect args for pair coefficients \n");
msg += "This model has No mutable parameters."; msg += "This model has No mutable parameters.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
int kimerror; int kimerror;
@ -477,7 +477,7 @@ void PairKIM::coeff(int narg, char **arg)
msg += "This Model does not have the requested '"; msg += "This Model does not have the requested '";
msg += paramname; msg += paramname;
msg += "' parameter."; msg += "' parameter.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
// Get the index_range for the requested parameter // Get the index_range for the requested parameter
@ -493,7 +493,7 @@ void PairKIM::coeff(int narg, char **arg)
msg += "Expected integer parameter(s) instead of '"; msg += "Expected integer parameter(s) instead of '";
msg += argtostr; msg += argtostr;
msg += "' in index_range."; msg += "' in index_range.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
std::string::size_type npos = argtostr.find(':'); std::string::size_type npos = argtostr.find(':');
@ -510,7 +510,7 @@ void PairKIM::coeff(int narg, char **arg)
msg += "' parameter with extent of '"; msg += "' parameter with extent of '";
msg += SNUM(extent); msg += SNUM(extent);
msg += "' ."; msg += "' .";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
} else { } else {
std::stringstream str(argtostr); std::stringstream str(argtostr);
@ -522,7 +522,7 @@ void PairKIM::coeff(int narg, char **arg)
msg += "' parameter with extent of '"; msg += "' parameter with extent of '";
msg += SNUM(extent); msg += SNUM(extent);
msg += "' ."; msg += "' .";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
nubound = nlbound; nubound = nlbound;
} }
@ -530,7 +530,7 @@ void PairKIM::coeff(int narg, char **arg)
std::string msg = std::string msg =
"Wrong number of arguments for pair coefficients.\n"; "Wrong number of arguments for pair coefficients.\n";
msg += "Index range after parameter name is mandatory."; msg += "Index range after parameter name is mandatory.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
// Parameter values // Parameter values
@ -561,7 +561,7 @@ void PairKIM::coeff(int narg, char **arg)
msg += "' values are requested for '"; msg += "' values are requested for '";
msg += paramname; msg += paramname;
msg += "' parameter."; msg += "' parameter.";
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
} }
@ -1122,7 +1122,7 @@ void PairKIM::set_kim_model_has_flags()
KIM_SUPPORT_STATUS_required)) { KIM_SUPPORT_STATUS_required)) {
std::string msg("KIM Model requires unsupported compute argument: "); std::string msg("KIM Model requires unsupported compute argument: ");
msg += KIM_ComputeArgumentName_ToString(computeArgumentName); msg += KIM_ComputeArgumentName_ToString(computeArgumentName);
error->all(FLERR, msg.c_str()); error->all(FLERR, msg);
} }
} }

View File

@ -340,7 +340,8 @@ void AtomKokkos::sync_modify(ExecutionSpace execution_space,
modified(execution_space,datamask_modify); modified(execution_space,datamask_modify);
} }
AtomVec *AtomKokkos::new_avec(const char *style, int trysuffix, int &sflag) AtomVec *AtomKokkos::new_avec(const std::string &style,
int trysuffix, int &sflag)
{ {
AtomVec* avec = Atom::new_avec(style,trysuffix,sflag); AtomVec* avec = Atom::new_avec(style,trysuffix,sflag);
if (!avec->kokkosable) if (!avec->kokkosable)

View File

@ -74,7 +74,7 @@ class AtomKokkos : public Atom {
virtual void deallocate_topology(); virtual void deallocate_topology();
void sync_modify(ExecutionSpace, unsigned int, unsigned int); void sync_modify(ExecutionSpace, unsigned int, unsigned int);
private: private:
class AtomVec *new_avec(const char *, int, int &); class AtomVec *new_avec(const std::string &, int, int &);
}; };
template<class ViewType, class IndexView> template<class ViewType, class IndexView>

View File

@ -29,11 +29,12 @@
#include "memory_kokkos.h" #include "memory_kokkos.h"
#include "error.h" #include "error.h"
#include "atom_masks.h" #include "atom_masks.h"
#include "utils.h"
#include "tokenizer.h"
#include "potential_file_reader.h"
using namespace LAMMPS_NS; using namespace LAMMPS_NS;
#define MAXLINE 1024
// Cannot use virtual inheritance on the GPU, so must duplicate code // Cannot use virtual inheritance on the GPU, so must duplicate code
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
@ -982,94 +983,107 @@ void PairEAMAlloyKokkos<DeviceType>::read_file(char *filename)
{ {
Setfl *file = setfl; Setfl *file = setfl;
// open potential file // read potential file
if(comm->me == 0) {
PotentialFileReader reader(lmp, filename, "EAM");
int me = comm->me; try {
FILE *fptr; reader.skip_line();
char line[MAXLINE]; reader.skip_line();
reader.skip_line();
if (me == 0) {
fptr = force->open_potential(filename);
if (fptr == NULL) {
char str[128];
snprintf(str,128,"Cannot open EAM potential file %s",filename);
error->one(FLERR,str);
}
}
// read and broadcast header
// extract element names from nelements line // extract element names from nelements line
ValueTokenizer values = reader.next_values(1);
file->nelements = values.next_int();
int n; if (values.count() != file->nelements + 1)
if (me == 0) { error->one(FLERR,"Incorrect element names in EAM potential file");
fgets(line,MAXLINE,fptr);
fgets(line,MAXLINE,fptr);
fgets(line,MAXLINE,fptr);
fgets(line,MAXLINE,fptr);
n = strlen(line) + 1;
}
MPI_Bcast(&n,1,MPI_INT,0,world);
MPI_Bcast(line,n,MPI_CHAR,0,world);
sscanf(line,"%d",&file->nelements);
int nwords = atom->count_words(line);
if (nwords != file->nelements + 1)
error->all(FLERR,"Incorrect element names in EAM potential file");
char **words = new char*[file->nelements+1];
nwords = 0;
strtok(line," \t\n\r\f");
while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue;
file->elements = new char*[file->nelements]; file->elements = new char*[file->nelements];
for (int i = 0; i < file->nelements; i++) { for (int i = 0; i < file->nelements; i++) {
n = strlen(words[i]) + 1; const std::string word = values.next_string();
const int n = word.length() + 1;
file->elements[i] = new char[n]; file->elements[i] = new char[n];
strcpy(file->elements[i],words[i]); strcpy(file->elements[i], word.c_str());
}
delete [] words;
if (me == 0) {
fgets(line,MAXLINE,fptr);
sscanf(line,"%d %lg %d %lg %lg",
&file->nrho,&file->drho,&file->nr,&file->dr,&file->cut);
} }
MPI_Bcast(&file->nrho,1,MPI_INT,0,world); //
MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world);
MPI_Bcast(&file->nr,1,MPI_INT,0,world);
MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world);
MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world);
file->mass = new double[file->nelements]; values = reader.next_values(5);
memory->create(file->frho,file->nelements,file->nrho+1,"pair:frho"); file->nrho = values.next_int();
memory->create(file->rhor,file->nelements,file->nr+1,"pair:rhor"); file->drho = values.next_double();
memory->create(file->z2r,file->nelements,file->nelements,file->nr+1, file->nr = values.next_int();
"pair:z2r"); file->dr = values.next_double();
file->cut = values.next_double();
int i,j,tmp; if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0))
for (i = 0; i < file->nelements; i++) { error->one(FLERR,"Invalid EAM potential file");
if (me == 0) {
fgets(line,MAXLINE,fptr);
sscanf(line,"%d %lg",&tmp,&file->mass[i]);
}
MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world);
if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); memory->create(file->mass, file->nelements, "pair:mass");
MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho");
if (me == 0) grab(fptr,file->nr,&file->rhor[i][1]); memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor");
MPI_Bcast(&file->rhor[i][1],file->nr,MPI_DOUBLE,0,world); memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r");
for (int i = 0; i < file->nelements; i++) {
values = reader.next_values(2);
values.next_int(); // ignore
file->mass[i] = values.next_double();
reader.next_dvector(&file->frho[i][1], file->nrho);
reader.next_dvector(&file->rhor[i][1], file->nr);
} }
for (i = 0; i < file->nelements; i++) for (int i = 0; i < file->nelements; i++) {
for (j = 0; j <= i; j++) { for (int j = 0; j <= i; j++) {
if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); reader.next_dvector(&file->z2r[i][j][1], file->nr);
MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); }
}
} catch (TokenizerException & e) {
error->one(FLERR, e.what());
}
} }
// close the potential file // broadcast potential information
MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world);
if (me == 0) fclose(fptr); MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world);
MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->nr, 1, MPI_INT, 0, world);
MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world);
// allocate memory on other procs
if (comm->me != 0) {
file->elements = new char*[file->nelements];
for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr;
memory->create(file->mass, file->nelements, "pair:mass");
memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho");
memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor");
memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r");
}
// broadcast file->elements string array
for (int i = 0; i < file->nelements; i++) {
int n;
if (comm->me == 0) n = strlen(file->elements[i]) + 1;
MPI_Bcast(&n, 1, MPI_INT, 0, world);
if (comm->me != 0) file->elements[i] = new char[n];
MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world);
}
// broadcast file->mass, frho, rhor
for (int i = 0; i < file->nelements; i++) {
MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->rhor[i][1], file->nr, MPI_DOUBLE, 0, world);
}
// broadcast file->z2r
for (int i = 0; i < file->nelements; i++) {
for (int j = 0; j <= i; j++) {
MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world);
}
}
} }
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------

View File

@ -29,11 +29,12 @@
#include "memory_kokkos.h" #include "memory_kokkos.h"
#include "error.h" #include "error.h"
#include "atom_masks.h" #include "atom_masks.h"
#include "utils.h"
#include "tokenizer.h"
#include "potential_file_reader.h"
using namespace LAMMPS_NS; using namespace LAMMPS_NS;
#define MAXLINE 1024
// Cannot use virtual inheritance on the GPU, so must duplicate code // Cannot use virtual inheritance on the GPU, so must duplicate code
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
@ -982,99 +983,113 @@ void PairEAMFSKokkos<DeviceType>::read_file(char *filename)
{ {
Fs *file = fs; Fs *file = fs;
// open potential file // read potential file
if(comm->me == 0) {
PotentialFileReader reader(lmp, filename, "EAM");
int me = comm->me; try {
FILE *fptr; reader.skip_line();
char line[MAXLINE]; reader.skip_line();
reader.skip_line();
if (me == 0) {
fptr = force->open_potential(filename);
if (fptr == NULL) {
char str[128];
snprintf(str,128,"Cannot open EAM potential file %s",filename);
error->one(FLERR,str);
}
}
// read and broadcast header
// extract element names from nelements line // extract element names from nelements line
ValueTokenizer values = reader.next_values(1);
file->nelements = values.next_int();
int n; if (values.count() != file->nelements + 1)
if (me == 0) { error->one(FLERR,"Incorrect element names in EAM potential file");
fgets(line,MAXLINE,fptr);
fgets(line,MAXLINE,fptr);
fgets(line,MAXLINE,fptr);
fgets(line,MAXLINE,fptr);
n = strlen(line) + 1;
}
MPI_Bcast(&n,1,MPI_INT,0,world);
MPI_Bcast(line,n,MPI_CHAR,0,world);
sscanf(line,"%d",&file->nelements);
int nwords = atom->count_words(line);
if (nwords != file->nelements + 1)
error->all(FLERR,"Incorrect element names in EAM potential file");
char **words = new char*[file->nelements+1];
nwords = 0;
strtok(line," \t\n\r\f");
while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue;
file->elements = new char*[file->nelements]; file->elements = new char*[file->nelements];
for (int i = 0; i < file->nelements; i++) { for (int i = 0; i < file->nelements; i++) {
n = strlen(words[i]) + 1; const std::string word = values.next_string();
const int n = word.length() + 1;
file->elements[i] = new char[n]; file->elements[i] = new char[n];
strcpy(file->elements[i],words[i]); strcpy(file->elements[i], word.c_str());
}
delete [] words;
if (me == 0) {
fgets(line,MAXLINE,fptr);
sscanf(line,"%d %lg %d %lg %lg",
&file->nrho,&file->drho,&file->nr,&file->dr,&file->cut);
} }
MPI_Bcast(&file->nrho,1,MPI_INT,0,world); //
MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world);
MPI_Bcast(&file->nr,1,MPI_INT,0,world);
MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world);
MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world);
file->mass = new double[file->nelements]; values = reader.next_values(5);
memory->create(file->frho,file->nelements,file->nrho+1, file->nrho = values.next_int();
"pair:frho"); file->drho = values.next_double();
memory->create(file->rhor,file->nelements,file->nelements, file->nr = values.next_int();
file->nr+1,"pair:rhor"); file->dr = values.next_double();
memory->create(file->z2r,file->nelements,file->nelements, file->cut = values.next_double();
file->nr+1,"pair:z2r");
int i,j,tmp; if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0))
for (i = 0; i < file->nelements; i++) { error->one(FLERR,"Invalid EAM potential file");
if (me == 0) {
fgets(line,MAXLINE,fptr);
sscanf(line,"%d %lg",&tmp,&file->mass[i]);
}
MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world);
if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); memory->create(file->mass, file->nelements, "pair:mass");
MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho");
memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor");
memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r");
for (j = 0; j < file->nelements; j++) { for (int i = 0; i < file->nelements; i++) {
if (me == 0) grab(fptr,file->nr,&file->rhor[i][j][1]); values = reader.next_values(2);
MPI_Bcast(&file->rhor[i][j][1],file->nr,MPI_DOUBLE,0,world); values.next_int(); // ignore
file->mass[i] = values.next_double();
reader.next_dvector(&file->frho[i][1], file->nrho);
for (int j = 0; j < file->nelements; j++) {
reader.next_dvector(&file->rhor[i][j][1], file->nr);
} }
} }
for (i = 0; i < file->nelements; i++) for (int i = 0; i < file->nelements; i++) {
for (j = 0; j <= i; j++) { for (int j = 0; j <= i; j++) {
if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); reader.next_dvector(&file->z2r[i][j][1], file->nr);
MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); }
}
} catch (TokenizerException & e) {
error->one(FLERR, e.what());
}
} }
// close the potential file // broadcast potential information
MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world);
if (me == 0) fclose(fptr); MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world);
MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->nr, 1, MPI_INT, 0, world);
MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world);
// allocate memory on other procs
if (comm->me != 0) {
file->elements = new char*[file->nelements];
for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr;
memory->create(file->mass, file->nelements, "pair:mass");
memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho");
memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor");
memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r");
}
// broadcast file->elements string array
for (int i = 0; i < file->nelements; i++) {
int n;
if (comm->me == 0) n = strlen(file->elements[i]) + 1;
MPI_Bcast(&n, 1, MPI_INT, 0, world);
if (comm->me != 0) file->elements[i] = new char[n];
MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world);
}
// broadcast file->mass, frho, rhor
for (int i = 0; i < file->nelements; i++) {
MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world);
for (int j = 0; j < file->nelements; j++) {
MPI_Bcast(&file->rhor[i][j][1], file->nr, MPI_DOUBLE, 0, world);
}
}
// broadcast file->z2r
for (int i = 0; i < file->nelements; i++) {
for (int j = 0; j <= i; j++) {
MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world);
}
}
} }
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------

View File

@ -32,6 +32,7 @@
#include "neigh_request.h" #include "neigh_request.h"
#include "atom_kokkos.h" #include "atom_kokkos.h"
#include "kokkos.h" #include "kokkos.h"
#include "utils.h"
#ifdef _OPENMP #ifdef _OPENMP
#include <omp.h> #include <omp.h>
@ -1752,7 +1753,7 @@ void PairExp6rxKokkos<DeviceType>::read_file(char *file)
// strip comment, skip line if blank // strip comment, skip line if blank
if ((ptr = strchr(line,'#'))) *ptr = '\0'; if ((ptr = strchr(line,'#'))) *ptr = '\0';
nwords = atom->count_words(line); nwords = utils::count_words(line);
if (nwords == 0) continue; if (nwords == 0) continue;
// concatenate additional lines until have params_per_line words // concatenate additional lines until have params_per_line words
@ -1771,7 +1772,7 @@ void PairExp6rxKokkos<DeviceType>::read_file(char *file)
MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(&n,1,MPI_INT,0,world);
MPI_Bcast(line,n,MPI_CHAR,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world);
if ((ptr = strchr(line,'#'))) *ptr = '\0'; if ((ptr = strchr(line,'#'))) *ptr = '\0';
nwords = atom->count_words(line); nwords = utils::count_words(line);
} }
if (nwords != params_per_line) if (nwords != params_per_line)

View File

@ -51,7 +51,8 @@ struct DoCoul<1> {
//Specialisation for Neighborlist types Half, HalfThread, Full //Specialisation for Neighborlist types Half, HalfThread, Full
template <class PairStyle, int NEIGHFLAG, bool STACKPARAMS, class Specialisation = void> template <class PairStyle, int NEIGHFLAG, bool STACKPARAMS, class Specialisation = void>
struct PairComputeFunctor { class PairComputeFunctor {
public:
typedef typename PairStyle::device_type device_type ; typedef typename PairStyle::device_type device_type ;
typedef ArrayTypes<device_type> AT; typedef ArrayTypes<device_type> AT;

View File

@ -112,7 +112,7 @@ public:
void operator() (TagPairSNAPComputeDeidrjCPU,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDeidrjCPU>::member_type& team) const; void operator() (TagPairSNAPComputeDeidrjCPU,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDeidrjCPU>::member_type& team) const;
KOKKOS_INLINE_FUNCTION KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPBeta,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPBeta>::member_type& team) const; void operator() (TagPairSNAPBeta,const int& ii) const;
template<int NEIGHFLAG> template<int NEIGHFLAG>
KOKKOS_INLINE_FUNCTION KOKKOS_INLINE_FUNCTION

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