Compare commits
217 Commits
develop
...
stable_2Au
| Author | SHA1 | Date | |
|---|---|---|---|
| 46265e36ce | |||
| 2a8d16ee4b | |||
| 54035fba79 | |||
| 7ac835a12f | |||
| 6058fcc37e | |||
| ee5ee22b47 | |||
| 6138369079 | |||
| b7820bfd0e | |||
| 50b8fe9c61 | |||
| 8fa42612e6 | |||
| a6c5f3f714 | |||
| 573021b362 | |||
| 688f4f5288 | |||
| 2831b904e9 | |||
| bff40d2add | |||
| 7d2b2ff776 | |||
| 1d09911bdb | |||
| e446b17d41 | |||
| e7ce03aa0a | |||
| a9eaa71f8c | |||
| 6203c18ef0 | |||
| a7aacd2440 | |||
| 2178ba2513 | |||
| 8277218cbb | |||
| 13d7178f95 | |||
| 1255772864 | |||
| 0878fca16e | |||
| 147ad3c67c | |||
| 05e4dded0f | |||
| 5739203ad3 | |||
| 3c232ce6a6 | |||
| f24ced3bb6 | |||
| d8b74e907e | |||
| 039161112b | |||
| 522608b59e | |||
| 24e65b618b | |||
| e22cea04e2 | |||
| a70aece450 | |||
| 92d5772dfa | |||
| 5f04990bc2 | |||
| d9a7365273 | |||
| eaa00c238a | |||
| 20dae33563 | |||
| 9d360af2c5 | |||
| cafa9ccec2 | |||
| 9296357851 | |||
| c53afef070 | |||
| 7bdac7eafd | |||
| a01a6f3a27 | |||
| bfd15408ba | |||
| 48e0859f0d | |||
| 66930a4e5c | |||
| c434b96a9b | |||
| 6d3945d367 | |||
| 84443eb114 | |||
| e37b579237 | |||
| 58c2c89d1b | |||
| 023960e7d5 | |||
| 84975f31cb | |||
| 27e8d0f19c | |||
| 9befd421ca | |||
| b3e54549db | |||
| 85393862af | |||
| ac1db251cb | |||
| 3f48d48eea | |||
| d9804d7590 | |||
| 4128d52e1c | |||
| 2d961e76b3 | |||
| 016c9ef4b2 | |||
| e69c65431f | |||
| a40e9222aa | |||
| 283e2103e3 | |||
| 2808e6fc52 | |||
| c742b20c5a | |||
| 530f487dd7 | |||
| ba8ca9258b | |||
| cd21f67cc6 | |||
| 07257595ff | |||
| 413d485617 | |||
| 8759a18437 | |||
| f79e9a113f | |||
| c1fa89186a | |||
| 609f5ec64b | |||
| 38b79eeb9b | |||
| 7035249abd | |||
| 816d74d80c | |||
| 4926164050 | |||
| a102d64a95 | |||
| 77db8e422a | |||
| ee0c5dc121 | |||
| 184f5a7f5e | |||
| 162b9c3ff3 | |||
| 4d06a9928f | |||
| 938682a751 | |||
| 00bccbf067 | |||
| 67085517ff | |||
| 3a2d94822a | |||
| c272e8f94f | |||
| 7f41eb6d9a | |||
| a716df7e59 | |||
| 08eae40f9a | |||
| b6c031fd03 | |||
| 990c07a133 | |||
| 4e94e697ec | |||
| 4526dccaca | |||
| 917606e40e | |||
| acaae8a36f | |||
| 28803ee78d | |||
| dd498fcbf8 | |||
| 0f8af20d0b | |||
| 00ef4ca3f6 | |||
| 50fbe61616 | |||
| 854c6d93e2 | |||
| e8e2c5f986 | |||
| cff21ce808 | |||
| 97c4875a08 | |||
| c9aedf9df8 | |||
| 723dc17d80 | |||
| c90f874a0d | |||
| 4ed5243d9b | |||
| 71c7d143b7 | |||
| e944140ff2 | |||
| b54545d1a4 | |||
| fc7119982b | |||
| 9e45df19c1 | |||
| 8bfec75568 | |||
| 0f948e98f2 | |||
| b9ce258935 | |||
| 058f87e019 | |||
| 6c2e469f5d | |||
| 810e3e5fa5 | |||
| a5374997d2 | |||
| e65ed32ecd | |||
| d326327bd7 | |||
| aa1c901f94 | |||
| 2ba7059c00 | |||
| 23691d4336 | |||
| 78adc1727a | |||
| 9def610c08 | |||
| a939e93a08 | |||
| 308207d5f9 | |||
| 75d0d9be1d | |||
| 2f71bc7886 | |||
| ddbdaaafdc | |||
| 8946995199 | |||
| d567fdae97 | |||
| ed9bfb433f | |||
| f8493ed805 | |||
| f3beb206c9 | |||
| b5480e4e1b | |||
| f634b25e31 | |||
| b21db641d9 | |||
| 6ba94d1619 | |||
| ce756540e8 | |||
| bb462b9ea3 | |||
| 63eda98779 | |||
| 0ca72bb58e | |||
| a6bcf507e1 | |||
| a1621a7229 | |||
| 62d41c6afb | |||
| 5480d25e36 | |||
| a4145ec852 | |||
| 5b16f15b25 | |||
| e77aaba3a4 | |||
| 7f08e8d11c | |||
| f62b129dec | |||
| db967a5bbf | |||
| f20af66312 | |||
| 01766c7631 | |||
| 7846bb59db | |||
| c27951cb1f | |||
| 4ab82d76ad | |||
| c6cbc1f965 | |||
| 88e58e9189 | |||
| e14005c443 | |||
| 9570c2fb50 | |||
| 180ce5277f | |||
| e81b86e114 | |||
| 6c6262a637 | |||
| 062bb88561 | |||
| cf5b653a9a | |||
| c5a5e4a099 | |||
| ccab900342 | |||
| fc400af724 | |||
| b1ea4d9601 | |||
| 2ca3be7b16 | |||
| 31b94aa1b0 | |||
| b1b94980fa | |||
| 770ad34267 | |||
| 10c523a950 | |||
| 62ef884564 | |||
| b3860a82de | |||
| 1deb3d8865 | |||
| 266e519013 | |||
| fffb86cb02 | |||
| fcaabe510e | |||
| a6043d92cb | |||
| ee16f6503e | |||
| 84168fc84d | |||
| 8a5fd08fa1 | |||
| 8944609419 | |||
| e90478e932 | |||
| 52c23785c5 | |||
| 088ff4ad27 | |||
| e32ae65aa1 | |||
| a5bf853c35 | |||
| b0a1b58c68 | |||
| bdaf3c64a6 | |||
| ccc478ad96 | |||
| fadb210052 | |||
| c105a187d9 | |||
| d74f86f2cd | |||
| c5b35970dc | |||
| 5626836995 | |||
| 53111f8c0e | |||
| e0ca512f50 | |||
| e87bad43f9 |
6
.github/CODEOWNERS
vendored
@ -151,12 +151,12 @@ tools/vim/* @hammondkd
|
||||
unittest/* @akohlmey
|
||||
|
||||
# cmake
|
||||
cmake/* @rbberger
|
||||
cmake/* @akohlmey
|
||||
cmake/Modules/LAMMPSInterfacePlugin.cmake @akohlmey
|
||||
cmake/Modules/MPI4WIN.cmake @akohlmey
|
||||
cmake/Modules/OpenCLLoader.cmake @akohlmey
|
||||
cmake/Modules/Packages/COLVARS.cmake @rbberger @giacomofiorin
|
||||
cmake/Modules/Packages/KIM.cmake @rbberger @ellio167
|
||||
cmake/Modules/Packages/COLVARS.cmake @giacomofiorin
|
||||
cmake/Modules/Packages/KIM.cmake @ellio167
|
||||
cmake/presets/*.cmake @akohlmey
|
||||
|
||||
# python
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# -*- CMake -*- master configuration file for building LAMMPS
|
||||
########################################
|
||||
# CMake build system
|
||||
# This file is part of LAMMPS
|
||||
# Created by Christoph Junghans and Richard Berger
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
########################################
|
||||
# set policy to silence warnings about ignoring <PackageName>_ROOT but use it
|
||||
@ -12,11 +12,6 @@ endif()
|
||||
if(POLICY CMP0075)
|
||||
cmake_policy(SET CMP0075 NEW)
|
||||
endif()
|
||||
# set policy to silence warnings about missing executable permissions in
|
||||
# pythonx.y-config when cross-compiling. review occasionally if it may be set to NEW
|
||||
if(POLICY CMP0109)
|
||||
cmake_policy(SET CMP0109 OLD)
|
||||
endif()
|
||||
# set policy to silence warnings about timestamps of downloaded files. review occasionally if it may be set to NEW
|
||||
if(POLICY CMP0135)
|
||||
cmake_policy(SET CMP0135 OLD)
|
||||
@ -116,7 +111,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
|
||||
set(CMAKE_TUNE_DEFAULT "-xCOMMON-AVX512")
|
||||
else()
|
||||
set(CMAKE_TUNE_DEFAULT "-xHost -fp-model fast=2 -no-prec-div -qoverride-limits -diag-disable=10441 -diag-disable=2196")
|
||||
set(CMAKE_TUNE_DEFAULT "-xHost -fp-model fast=2 -no-prec-div -qoverride-limits -diag-disable=10441 -diag-disable=11074 -diag-disable=11076 -diag-disable=2196")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@ -131,6 +126,19 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_CXX_COMPILER_ID STREQUAL "
|
||||
set(CMAKE_TUNE_DEFAULT "-Minform=severe")
|
||||
endif()
|
||||
|
||||
# this hack is required to compile fmt lib with CrayClang version 15.0.2
|
||||
# CrayClang is only directly recognized by version 3.28 and later
|
||||
if(CMAKE_VERSION VERSION_LESS 3.28)
|
||||
get_filename_component(_exe "${CMAKE_CXX_COMPILER}" NAME)
|
||||
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (_exe STREQUAL "crayCC"))
|
||||
set(CMAKE_TUNE_DEFAULT "-DFMT_STATIC_THOUSANDS_SEPARATOR")
|
||||
endif()
|
||||
else()
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang")
|
||||
set(CMAKE_TUNE_DEFAULT "-DFMT_STATIC_THOUSANDS_SEPARATOR")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# silence nvcc warnings
|
||||
if((PKG_KOKKOS) AND (Kokkos_ENABLE_CUDA) AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))
|
||||
set(CMAKE_TUNE_DEFAULT "${CMAKE_TUNE_DEFAULT} -Xcudafe --diag_suppress=unrecognized_pragma")
|
||||
@ -155,6 +163,7 @@ if(MSVC)
|
||||
add_compile_options(/Zc:__cplusplus)
|
||||
add_compile_options(/wd4244)
|
||||
add_compile_options(/wd4267)
|
||||
add_compile_options(/wd4250)
|
||||
add_compile_options(/EHsc)
|
||||
endif()
|
||||
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
|
||||
@ -216,6 +225,10 @@ endif()
|
||||
add_executable(lmp ${MAIN_SOURCES})
|
||||
target_link_libraries(lmp PRIVATE lammps)
|
||||
set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY})
|
||||
# re-export all symbols for plugins
|
||||
if(PKG_PLUGIN AND (NOT ((CMAKE_SYSTEM_NAME STREQUAL "Windows"))))
|
||||
set_target_properties(lmp PROPERTIES ENABLE_EXPORTS TRUE)
|
||||
endif()
|
||||
install(TARGETS lmp EXPORT LAMMPS_Targets DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
||||
option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF)
|
||||
@ -404,6 +417,7 @@ pkg_depends(CG-DNA MOLECULE)
|
||||
pkg_depends(CG-DNA ASPHERE)
|
||||
pkg_depends(ELECTRODE KSPACE)
|
||||
pkg_depends(EXTRA-MOLECULE MOLECULE)
|
||||
pkg_depends(MESONT MOLECULE)
|
||||
|
||||
# detect if we may enable OpenMP support by default
|
||||
set(BUILD_OMP_DEFAULT OFF)
|
||||
@ -429,6 +443,7 @@ if(BUILD_OMP)
|
||||
(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM") OR (CMAKE_CXX_COMPILER_ID STREQUAL "XLClang") OR
|
||||
((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR
|
||||
((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR
|
||||
((CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR
|
||||
((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0)))
|
||||
# GCC 9.x and later plus Clang 10.x and later implement strict OpenMP 4.0 semantics for consts.
|
||||
# Intel 18.0 was tested to support both, so we switch to OpenMP 4+ from 19.x onward to be safe.
|
||||
@ -441,6 +456,18 @@ if(BUILD_OMP)
|
||||
target_link_libraries(lmp PRIVATE OpenMP::OpenMP_CXX)
|
||||
endif()
|
||||
|
||||
# lower C++ standard for fmtlib sources when using Intel classic compiler
|
||||
if((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_STANDARD GREATER_EQUAL 17)
|
||||
AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 2021.10))
|
||||
message(STATUS "Lowering C++ standard for compiling fmtlib sources with Intel Classic compiler")
|
||||
get_filename_component(LMP_UTILS_SRC "${LAMMPS_SOURCE_DIR}/utils.cpp" ABSOLUTE)
|
||||
get_filename_component(LMP_VARIABLE_SRC "${LAMMPS_SOURCE_DIR}/variable.cpp" ABSOLUTE)
|
||||
get_filename_component(FMT_FORMAT_SRC "${LAMMPS_SOURCE_DIR}/fmtlib_format.cpp" ABSOLUTE)
|
||||
get_filename_component(FMT_OS_SRC "${LAMMPS_SOURCE_DIR}/fmtlib_os.cpp" ABSOLUTE)
|
||||
set_source_files_properties("${FMT_FORMAT_SRC}" "${FMT_OS_SRC}" "${LMP_VARIABLE_SRC}" "${LMP_UTILS_SRC}"
|
||||
PROPERTIES COMPILE_OPTIONS "-std=c++14")
|
||||
endif()
|
||||
|
||||
if(PKG_MSCG OR PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTRODE OR BUILD_TOOLS)
|
||||
enable_language(C)
|
||||
if (NOT USE_INTERNAL_LINALG)
|
||||
@ -893,13 +920,23 @@ else()
|
||||
endif()
|
||||
include(FeatureSummary)
|
||||
feature_summary(DESCRIPTION "The following tools and libraries have been found and configured:" WHAT PACKAGES_FOUND)
|
||||
if(GIT_FOUND AND EXISTS ${LAMMPS_DIR}/.git)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} describe --dirty=-modified --always
|
||||
OUTPUT_VARIABLE GIT_DESCRIBE
|
||||
ERROR_QUIET
|
||||
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
endif()
|
||||
message(STATUS "<<< Build configuration >>>
|
||||
LAMMPS Version: ${PROJECT_VERSION}
|
||||
LAMMPS Version: ${PROJECT_VERSION} ${GIT_DESCRIBE}
|
||||
Operating System: ${CMAKE_SYSTEM_NAME} ${CMAKE_LINUX_DISTRO} ${CMAKE_DISTRO_VERSION}
|
||||
CMake Version: ${CMAKE_VERSION}
|
||||
Build type: ${LAMMPS_BUILD_TYPE}
|
||||
Install path: ${CMAKE_INSTALL_PREFIX}
|
||||
Generator: ${CMAKE_GENERATOR} using ${CMAKE_MAKE_PROGRAM}")
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
message(STATUS "Cross compiling on ${CMAKE_HOST_SYSTEM}")
|
||||
endif()
|
||||
###############################################################################
|
||||
# Print package summary
|
||||
###############################################################################
|
||||
@ -1028,6 +1065,14 @@ endif()
|
||||
if(BUILD_LAMMPS_SHELL)
|
||||
message(STATUS "<<< Building LAMMPS Shell >>>")
|
||||
endif()
|
||||
if(BUILD_LAMMPS_GUI)
|
||||
message(STATUS "<<< Building LAMMPS GUI >>>")
|
||||
if(LAMMPS_GUI_USE_PLUGIN)
|
||||
message(STATUS "Loading LAMMPS library as plugin at run time")
|
||||
else()
|
||||
message(STATUS "Linking LAMMPS library at compile time")
|
||||
endif()
|
||||
endif()
|
||||
if(ENABLE_TESTING)
|
||||
message(STATUS "<<< Building Unit Tests >>>")
|
||||
if(ENABLE_COVERAGE)
|
||||
|
||||
@ -43,5 +43,5 @@ function(ExternalCMakeProject target url hash basedir cmakedir cmakefile)
|
||||
"${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}/CMakeLists.txt")
|
||||
endif()
|
||||
add_subdirectory("${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}"
|
||||
"${CMAKE_BINARY_DIR}/_deps/${target}-build")
|
||||
"${CMAKE_BINARY_DIR}/_deps/${target}-build" EXCLUDE_FROM_ALL)
|
||||
endfunction(ExternalCMakeProject)
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
# Find clang-format
|
||||
find_program(ClangFormat_EXECUTABLE NAMES clang-format
|
||||
clang-format-17.0
|
||||
clang-format-16.0
|
||||
clang-format-15.0
|
||||
clang-format-14.0
|
||||
clang-format-13.0
|
||||
@ -19,7 +21,7 @@ if(ClangFormat_EXECUTABLE)
|
||||
OUTPUT_VARIABLE clang_format_version
|
||||
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
if(clang_format_version MATCHES "^(Ubuntu |)clang-format version .*")
|
||||
if(clang_format_version MATCHES "^(Ubuntu |Debian |)clang-format version .*")
|
||||
# Arch Linux output:
|
||||
# clang-format version 10.0.0
|
||||
#
|
||||
@ -32,9 +34,15 @@ if(ClangFormat_EXECUTABLE)
|
||||
# Ubuntu 22.04 LTS output:
|
||||
# Ubuntu clang-format version 14.0.0-1ubuntu1
|
||||
#
|
||||
# Debian 11 output:
|
||||
# Debian clang-format version 11.0.1-2
|
||||
#
|
||||
# Debian 12 output:
|
||||
# Debian clang-format version 14.0.6
|
||||
#
|
||||
# Fedora 36 output:
|
||||
# clang-format version 14.0.5 (Fedora 14.0.5-1.fc36)
|
||||
string(REGEX REPLACE "^(Ubuntu |)clang-format version ([0-9.]+).*"
|
||||
string(REGEX REPLACE "^(Ubuntu |Debian |)clang-format version ([0-9.]+).*"
|
||||
"\\2"
|
||||
ClangFormat_VERSION
|
||||
"${clang_format_version}")
|
||||
|
||||
@ -83,17 +83,17 @@ function(check_for_autogen_files source_dir)
|
||||
file(GLOB SRC_AUTOGEN_FILES ${CONFIGURE_DEPENDS} ${source_dir}/style_*.h)
|
||||
file(GLOB SRC_AUTOGEN_PACKAGES ${CONFIGURE_DEPENDS} ${source_dir}/packages_*.h)
|
||||
list(APPEND SRC_AUTOGEN_FILES ${SRC_AUTOGEN_PACKAGES} ${source_dir}/lmpinstalledpkgs.h ${source_dir}/lmpgitversion.h)
|
||||
list(APPEND SRC_AUTOGEN_FILES ${SRC_AUTOGEN_PACKAGES} ${source_dir}/mliap_model_python_couple.h ${source_dir}/mliap_model_python_couple.cpp)
|
||||
list(APPEND SRC_AUTOGEN_FILES ${source_dir}/mliap_model_python_couple.h ${source_dir}/mliap_model_python_couple.cpp)
|
||||
foreach(_SRC ${SRC_AUTOGEN_FILES})
|
||||
get_filename_component(FILENAME "${_SRC}" NAME)
|
||||
if(EXISTS ${source_dir}/${FILENAME})
|
||||
message(FATAL_ERROR "\n########################################################################\n"
|
||||
"Found header file(s) generated by the make-based build system\n"
|
||||
"\n"
|
||||
"Please run\n"
|
||||
"make -C ${source_dir} purge\n"
|
||||
"to remove\n"
|
||||
"########################################################################")
|
||||
"Found header file ${source_dir}/${FILENAME} generated by the make-based build system\n"
|
||||
"\n"
|
||||
"Please run\n"
|
||||
"make -C ${source_dir} purge\n"
|
||||
"to remove\n"
|
||||
"########################################################################")
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
@ -132,8 +132,12 @@ if(PKG_KSPACE)
|
||||
${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp)
|
||||
if(Kokkos_ENABLE_CUDA)
|
||||
if(NOT (FFT STREQUAL "KISS"))
|
||||
find_library(CUFFT_LIBRARY cufft)
|
||||
if (CUFFT_LIBRARY STREQUAL "CUFFT_LIBRARY-NOTFOUND")
|
||||
message(FATAL_ERROR "Required cuFFT library not found. Check your environment or set CUFFT_LIBRARY to its location")
|
||||
endif()
|
||||
target_compile_definitions(lammps PRIVATE -DFFT_CUFFT)
|
||||
target_link_libraries(lammps PRIVATE cufft)
|
||||
target_link_libraries(lammps PRIVATE ${CUFFT_LIBRARY})
|
||||
endif()
|
||||
elseif(Kokkos_ENABLE_HIP)
|
||||
if(NOT (FFT STREQUAL "KISS"))
|
||||
|
||||
@ -8,8 +8,8 @@ option(DOWNLOAD_MDI "Download and compile the MDI library instead of using an al
|
||||
|
||||
if(DOWNLOAD_MDI)
|
||||
message(STATUS "MDI download requested - we will build our own")
|
||||
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.16.tar.gz" CACHE STRING "URL for MDI tarball")
|
||||
set(MDI_MD5 "407db44e2d79447ab5c1233af1965f65" CACHE STRING "MD5 checksum for MDI tarball")
|
||||
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.26.tar.gz" CACHE STRING "URL for MDI tarball")
|
||||
set(MDI_MD5 "3124bb85259471e2a53a891f04bf697a" CACHE STRING "MD5 checksum for MDI tarball")
|
||||
mark_as_advanced(MDI_URL)
|
||||
mark_as_advanced(MDI_MD5)
|
||||
GetFallbackURL(MDI_URL MDI_FALLBACK)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.01.3.fix.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
|
||||
set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.10.04.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
|
||||
|
||||
set(PACELIB_MD5 "4f0b3b5b14456fe9a73b447de3765caa" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
|
||||
set(PACELIB_MD5 "70ff79f4e59af175e55d24f3243ad1ff" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
|
||||
mark_as_advanced(PACELIB_URL)
|
||||
mark_as_advanced(PACELIB_MD5)
|
||||
GetFallbackURL(PACELIB_URL PACELIB_FALLBACK)
|
||||
|
||||
@ -18,7 +18,7 @@ if(DOWNLOAD_QUIP)
|
||||
set(temp "${temp}F77FLAGS += -fpp -fixed -fPIC\n")
|
||||
set(temp "${temp}F95_PRE_FILENAME_FLAG = -Tf\n")
|
||||
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL GNU)
|
||||
set(temp "${temp}FPP=${CMAKE_Fortran_COMPILER} -E -x f95-cpp-input\nOPTIM=${CMAKE_Fortran_FLAGS_${BTYPE}}\n")
|
||||
set(temp "${temp}FPP=${CMAKE_Fortran_COMPILER} -E -x f95-cpp-input\nOPTIM=${CMAKE_Fortran_FLAGS_${BTYPE}} -fmax-stack-var-size=6553600\n")
|
||||
set(temp "${temp}DEFINES += -DGETARG_F2003 -DGETENV_F2003 -DGFORTRAN -DFORTRAN_UNDERSCORE\n")
|
||||
set(temp "${temp}F95FLAGS += -x f95-cpp-input -ffree-line-length-none -ffree-form -fno-second-underscore -fPIC\n")
|
||||
set(temp "${temp}F77FLAGS += -x f77-cpp-input -fno-second-underscore -fPIC\n")
|
||||
@ -41,6 +41,11 @@ if(DOWNLOAD_QUIP)
|
||||
set(temp "${temp}HAVE_TURBOGAP=0\nHAVE_QR=1\nHAVE_THIRDPARTY=0\nHAVE_FX=0\nHAVE_SCME=0\nHAVE_MTP=0\n")
|
||||
set(temp "${temp}HAVE_MBD=0\nHAVE_TTM_NF=0\nHAVE_CH4=0\nHAVE_NETCDF4=0\nHAVE_MDCORE=0\nHAVE_ASAP=0\n")
|
||||
set(temp "${temp}HAVE_CGAL=0\nHAVE_METIS=0\nHAVE_LMTO_TBE=0\nHAVE_SCALAPACK=0\n")
|
||||
# for gfortran, the -std= flag, if present, *must* be -std=gnu or else the compilation will fail.
|
||||
if(CMAKE_Fortran_COMPILER_ID STREQUAL GNU)
|
||||
string(REGEX REPLACE -std=f[0-9]+ -std=gnu newtemp "${temp}")
|
||||
set(temp "${newtemp}")
|
||||
endif()
|
||||
file(WRITE ${CMAKE_BINARY_DIR}/quip.config "${temp}")
|
||||
|
||||
message(STATUS "QUIP download via git requested - we will build our own")
|
||||
@ -56,7 +61,7 @@ if(DOWNLOAD_QUIP)
|
||||
GIT_SUBMODULES "src/fox;src/GAP"
|
||||
PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/quip.config <SOURCE_DIR>/arch/Makefile.lammps
|
||||
CONFIGURE_COMMAND env QUIP_ARCH=lammps make config
|
||||
BUILD_COMMAND env QUIP_ARCH=lammps make libquip
|
||||
BUILD_COMMAND env QUIP_ARCH=lammps make -j1 libquip
|
||||
INSTALL_COMMAND ""
|
||||
BUILD_IN_SOURCE YES
|
||||
BUILD_BYPRODUCTS <SOURCE_DIR>/build/lammps/${CMAKE_STATIC_LIBRARY_PREFIX}quip${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
|
||||
@ -1,26 +1,64 @@
|
||||
#!/bin/bash -vx
|
||||
#!/bin/bash
|
||||
|
||||
APP_NAME=lammps-gui
|
||||
DESTDIR=${PWD}/../LAMMPS_GUI
|
||||
DESTDIR=${PWD}/LAMMPS_GUI
|
||||
SYSROOT="$1"
|
||||
|
||||
echo "Delete old files, if they exist"
|
||||
rm -rvf ${DESTDIR} LAMMPS-Win10-amd64.zip
|
||||
rm -rvf ${DESTDIR}/LAMMPS_GUI ${DESTDIR}/LAMMPS-Win10-amd64.zip
|
||||
|
||||
echo "Create staging area for deployment and populate"
|
||||
DESTDIR=${DESTDIR} cmake --install . --prefix "/"
|
||||
|
||||
echo "Add required dependencies for Qt"
|
||||
for dll in Qt5Core.dll Qt5Gui.dll Qt5Widgets.dll
|
||||
# no static libs needed
|
||||
rm -rvf ${DESTDIR}/lib
|
||||
# but the LAMMPS lib
|
||||
|
||||
echo "Copying required DLL files"
|
||||
for dll in $(objdump -p *.exe *.dll | sed -n -e '/DLL Name:/s/^.*DLL Name: *//p' | sort | uniq)
|
||||
do \
|
||||
cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/${dll} ${DESTDIR}/bin/
|
||||
done
|
||||
for dir in styles platforms imageformats
|
||||
do \
|
||||
mkdir -p ${DESTDIR}/${dir}
|
||||
cp -r /usr/x86_64-w64-mingw32/sys-root/mingw/lib/qt5/plugins/${dir}/*.dll ${DESTDIR}/${dir}
|
||||
doskip=0
|
||||
for skip in ADVAPI32 CFGMGR32 GDI32 KERNEL32 MPR NETAPI32 PSAPI SHELL32 USER32 USERENV UxTheme VERSION WS2_32 WSOCK32 d3d11 dwmapi liblammps msvcrt_ole32
|
||||
do \
|
||||
test ${dll} = ${skip}.dll && doskip=1
|
||||
done
|
||||
test ${doskip} -eq 1 && continue
|
||||
test -f ${DESTDIR}/bin/${dll} || cp -v ${SYSROOT}/bin/${dll} ${DESTDIR}/bin
|
||||
done
|
||||
|
||||
pushd ..
|
||||
zip -9rv LAMMPS-Win10-amd64.zip LAMMPS_GUI
|
||||
popd
|
||||
exit 0
|
||||
echo "Copy required Qt plugins"
|
||||
mkdir -p ${DESTDIR}/qt5plugins
|
||||
for plugin in imageformats platforms styles
|
||||
do \
|
||||
cp -r ${SYSROOT}/lib/qt5/plugins/${plugin} ${DESTDIR}/qt5plugins/
|
||||
done
|
||||
|
||||
echo "Check dependencies of DLL files"
|
||||
for dll in $(objdump -p ${DESTDIR}/bin/*.dll ${DESTDIR}/qt5plugins/*/*.dll | sed -n -e '/DLL Name:/s/^.*DLL Name: *//p' | sort | uniq)
|
||||
do \
|
||||
doskip=0
|
||||
for skip in ADVAPI32 CFGMGR32 GDI32 KERNEL32 MPR NETAPI32 PSAPI SHELL32 USER32 USERENV UxTheme VERSION WS2_32 WSOCK32 d3d11 dwmapi liblammps msvcrt_ole32
|
||||
do \
|
||||
test ${dll} = ${skip}.dll && doskip=1
|
||||
done
|
||||
test ${doskip} -eq 1 && continue
|
||||
test -f ${DESTDIR}/bin/${dll} || cp -v ${SYSROOT}/bin/${dll} ${DESTDIR}/bin
|
||||
done
|
||||
|
||||
for dll in $(objdump -p ${DESTDIR}/bin/*.dll ${DESTDIR}/qt5plugins/*/*.dll | sed -n -e '/DLL Name:/s/^.*DLL Name: *//p' | sort | uniq)
|
||||
do \
|
||||
doskip=0
|
||||
for skip in ADVAPI32 CFGMGR32 GDI32 KERNEL32 MPR NETAPI32 PSAPI SHELL32 USER32 USERENV UxTheme VERSION WS2_32 WSOCK32 d3d11 dwmapi liblammps msvcrt_ole32
|
||||
do \
|
||||
test ${dll} = ${skip}.dll && doskip=1
|
||||
done
|
||||
test ${doskip} -eq 1 && continue
|
||||
test -f ${DESTDIR}/bin/${dll} || cp -v ${SYSROOT}/bin/${dll} ${DESTDIR}/bin
|
||||
done
|
||||
|
||||
cat > ${DESTDIR}/bin/qt.conf <<EOF
|
||||
[Paths]
|
||||
Plugins = ../qt5plugins
|
||||
EOF
|
||||
zip -9rvD LAMMPS-Win10-amd64.zip LAMMPS_GUI
|
||||
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#!/bin/sh
|
||||
# wrapper for bundled executables
|
||||
|
||||
# reset locale to avoid problems with decimal numbers
|
||||
export LC_ALL=C
|
||||
|
||||
BASEDIR=$(dirname "$0")
|
||||
EXENAME=$(basename "$0")
|
||||
|
||||
|
||||
@ -6,6 +6,8 @@ set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
|
||||
set(Kokkos_ENABLE_CUDA ON CACHE BOOL "" FORCE)
|
||||
set(Kokkos_ARCH_PASCAL60 ON CACHE BOOL "" FORCE)
|
||||
set(BUILD_OMP ON CACHE BOOL "" FORCE)
|
||||
get_filename_component(NVCC_WRAPPER_CMD ${CMAKE_CURRENT_SOURCE_DIR}/../lib/kokkos/bin/nvcc_wrapper ABSOLUTE)
|
||||
set(CMAKE_CXX_COMPILER ${NVCC_WRAPPER_CMD} CACHE FILEPATH "" FORCE)
|
||||
|
||||
# hide deprecation warnings temporarily for stable release
|
||||
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)
|
||||
|
||||
@ -18,11 +18,11 @@ set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||
|
||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||
set(OpenMP_C "icx" CACHE STRING "" FORCE)
|
||||
set(OpenMP_C_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
|
||||
set(OpenMP_C_FLAGS "-qopenmp;-qopenmp-simd" CACHE STRING "" FORCE)
|
||||
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||
set(OpenMP_CXX "icpx" CACHE STRING "" FORCE)
|
||||
set(OpenMP_CXX_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
|
||||
set(OpenMP_CXX_FLAGS "-qopenmp;-qopenmp-simd" CACHE STRING "" FORCE)
|
||||
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||
set(OpenMP_Fortran_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
|
||||
set(OpenMP_Fortran_FLAGS "-qopenmp;-qopenmp-simd" CACHE STRING "" FORCE)
|
||||
set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE)
|
||||
|
||||
|
||||
@ -32,6 +32,7 @@ set(WIN_PACKAGES
|
||||
INTERLAYER
|
||||
KSPACE
|
||||
LEPTON
|
||||
MACHDYN
|
||||
MANIFOLD
|
||||
MANYBODY
|
||||
MC
|
||||
@ -45,6 +46,7 @@ set(WIN_PACKAGES
|
||||
MOLECULE
|
||||
MOLFILE
|
||||
OPENMP
|
||||
OPT
|
||||
ORIENT
|
||||
PERI
|
||||
PHONON
|
||||
|
||||
@ -63,6 +63,7 @@ help:
|
||||
@echo " anchor_check scan for duplicate anchor labels"
|
||||
@echo " style_check check for complete and consistent style lists"
|
||||
@echo " package_check check for complete and consistent package lists"
|
||||
@echo " role_check check for misformatted role keywords"
|
||||
@echo " spelling spell-check the manual"
|
||||
|
||||
# ------------------------------------------
|
||||
@ -98,6 +99,7 @@ html: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
|
||||
env LC_ALL=C grep -n '[^ -~]' $(RSTDIR)/*.rst ;\
|
||||
env LC_ALL=C grep -n ' :[a-z]\+`' $(RSTDIR)/*.rst ;\
|
||||
env LC_ALL=C grep -n ' `[^`]\+<[a-z][^`]\+`[^_]' $(RSTDIR)/*.rst ;\
|
||||
env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst ;\
|
||||
$(PYTHON) $(BUILDDIR)/utils/check-styles.py -s ../src -d src ;\
|
||||
echo "############################################" ;\
|
||||
deactivate ;\
|
||||
@ -179,6 +181,7 @@ pdf: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
|
||||
env LC_ALL=C grep -n '[^ -~]' $(RSTDIR)/*.rst ;\
|
||||
env LC_ALL=C grep -n ' :[a-z]\+`' $(RSTDIR)/*.rst ;\
|
||||
env LC_ALL=C grep -n ' `[^`]\+<[a-z][^`]\+`[^_]' $(RSTDIR)/*.rst ;\
|
||||
env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst ;\
|
||||
$(PYTHON) utils/check-styles.py -s ../src -d src ;\
|
||||
echo "############################################" ;\
|
||||
deactivate ;\
|
||||
@ -227,6 +230,7 @@ char_check :
|
||||
role_check :
|
||||
@( env LC_ALL=C grep -n ' :[a-z]\+`' $(RSTDIR)/*.rst && exit 1 || : )
|
||||
@( env LC_ALL=C grep -n ' `[^`]\+<[a-z][^`]\+`[^_]' $(RSTDIR)/*.rst && exit 1 || : )
|
||||
@( env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst && exit 1 || : )
|
||||
|
||||
link_check : $(VENV) html
|
||||
@(\
|
||||
|
||||
@ -489,8 +489,9 @@ using CMake or Make.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D BUILD_TOOLS=value # yes or no (default)
|
||||
-D BUILD_LAMMPS_SHELL=value # yes or no (default)
|
||||
-D BUILD_TOOLS=value # yes or no (default). Build binary2txt, chain.x, micelle2d.x, msi2lmp, phana, stl_bin2txt
|
||||
-D BUILD_LAMMPS_SHELL=value # yes or no (default). Build lammps-shell
|
||||
-D BUILD_LAMMPS_GUI=value # yes or no (default). Build lammps-gui
|
||||
|
||||
The generated binaries will also become part of the LAMMPS installation
|
||||
(see below).
|
||||
@ -504,7 +505,6 @@ using CMake or Make.
|
||||
make binary2txt # build only binary2txt tool
|
||||
make chain # build only chain tool
|
||||
make micelle2d # build only micelle2d tool
|
||||
make thermo_extract # build only thermo_extract tool
|
||||
|
||||
cd lammps/tools/lammps-shell
|
||||
make # build LAMMPS shell
|
||||
|
||||
@ -881,6 +881,50 @@ included in the LAMMPS source distribution in the ``lib/lepton`` folder.
|
||||
|
||||
----------
|
||||
|
||||
.. _machdyn:
|
||||
|
||||
MACHDYN package
|
||||
-------------------------------
|
||||
|
||||
To build with this package, you must download the Eigen3 library.
|
||||
Eigen3 is a template library, so you do not need to build it.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: CMake build
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_EIGEN3 # download Eigen3, value = no (default) or yes
|
||||
-D EIGEN3_INCLUDE_DIR=path # path to Eigen library (only needed if a custom location)
|
||||
|
||||
If ``DOWNLOAD_EIGEN3`` is set, the Eigen3 library will be
|
||||
downloaded and inside the CMake build directory. If the Eigen3
|
||||
library is already on your system (in a location where CMake
|
||||
cannot find it), set ``EIGEN3_INCLUDE_DIR`` to the directory the
|
||||
``Eigen3`` include file is in.
|
||||
|
||||
.. tab:: Traditional make
|
||||
|
||||
You can download the Eigen3 library manually if you prefer; follow
|
||||
the instructions in ``lib/machdyn/README``. You can also do it in one
|
||||
step from the ``lammps/src`` dir, using a command like these,
|
||||
which simply invokes the ``lib/machdyn/Install.py`` script with the
|
||||
specified args:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-machdyn # print help message
|
||||
make lib-machdyn args="-b" # download to lib/machdyn/eigen3
|
||||
make lib-machdyn args="-p /usr/include/eigen3" # use existing Eigen installation in /usr/include/eigen3
|
||||
|
||||
Note that a symbolic (soft) link named ``includelink`` is created
|
||||
in ``lib/machdyn`` to point to the Eigen dir. When LAMMPS builds it
|
||||
will use this link. You should not need to edit the
|
||||
``lib/machdyn/Makefile.lammps`` file.
|
||||
|
||||
----------
|
||||
|
||||
.. _mliap:
|
||||
|
||||
ML-IAP package
|
||||
@ -1479,6 +1523,55 @@ ML-POD package
|
||||
|
||||
----------
|
||||
|
||||
.. _ml-quip:
|
||||
|
||||
ML-QUIP package
|
||||
---------------------------------
|
||||
|
||||
To build with this package, you must download and build the QUIP
|
||||
library. It can be obtained from GitHub. For support of GAP
|
||||
potentials, additional files with specific licensing conditions need
|
||||
to be downloaded and configured. The automatic download will from
|
||||
within CMake will download the non-commercial use version.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: CMake build
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_QUIP=value # download QUIP library for build, value = no (default) or yes
|
||||
-D QUIP_LIBRARY=path # path to libquip.a (only needed if a custom location)
|
||||
-D USE_INTERNAL_LINALG=value # Use the internal linear algebra library instead of LAPACK
|
||||
# value = no (default) or yes
|
||||
|
||||
CMake will try to download and build the QUIP library from GitHub,
|
||||
if it is not found on the local machine. This requires to have git
|
||||
installed. It will use the same compilers and flags as used for
|
||||
compiling LAMMPS. Currently this is only supported for the GNU
|
||||
and the Intel compilers. Set the ``QUIP_LIBRARY`` variable if you
|
||||
want to use a previously compiled and installed QUIP library and
|
||||
CMake cannot find it.
|
||||
|
||||
The QUIP library requires LAPACK (and BLAS) and CMake can identify
|
||||
their locations and pass that info to the QUIP build script. But
|
||||
on some systems this triggers a (current) limitation of CMake and
|
||||
the configuration will fail. Try enabling ``USE_INTERNAL_LINALG`` in
|
||||
those cases to use the bundled linear algebra library and work around
|
||||
the limitation.
|
||||
|
||||
.. tab:: Traditional make
|
||||
|
||||
The download/build procedure for the QUIP library, described in
|
||||
``lib/quip/README`` file requires setting two environment
|
||||
variables, ``QUIP_ROOT`` and ``QUIP_ARCH``. These are accessed by
|
||||
the ``lib/quip/Makefile.lammps`` file which is used when you
|
||||
compile and link LAMMPS with this package. You should only need
|
||||
to edit ``Makefile.lammps`` if the LAMMPS build can not use its
|
||||
settings to successfully build on your system.
|
||||
|
||||
----------
|
||||
|
||||
.. _plumed:
|
||||
|
||||
PLUMED package
|
||||
@ -2000,55 +2093,6 @@ verified to work in February 2020 with Quantum Espresso versions 6.3 to
|
||||
|
||||
----------
|
||||
|
||||
.. _ml-quip:
|
||||
|
||||
ML-QUIP package
|
||||
---------------------------------
|
||||
|
||||
To build with this package, you must download and build the QUIP
|
||||
library. It can be obtained from GitHub. For support of GAP
|
||||
potentials, additional files with specific licensing conditions need
|
||||
to be downloaded and configured. The automatic download will from
|
||||
within CMake will download the non-commercial use version.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: CMake build
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_QUIP=value # download QUIP library for build, value = no (default) or yes
|
||||
-D QUIP_LIBRARY=path # path to libquip.a (only needed if a custom location)
|
||||
-D USE_INTERNAL_LINALG=value # Use the internal linear algebra library instead of LAPACK
|
||||
# value = no (default) or yes
|
||||
|
||||
CMake will try to download and build the QUIP library from GitHub,
|
||||
if it is not found on the local machine. This requires to have git
|
||||
installed. It will use the same compilers and flags as used for
|
||||
compiling LAMMPS. Currently this is only supported for the GNU
|
||||
and the Intel compilers. Set the ``QUIP_LIBRARY`` variable if you
|
||||
want to use a previously compiled and installed QUIP library and
|
||||
CMake cannot find it.
|
||||
|
||||
The QUIP library requires LAPACK (and BLAS) and CMake can identify
|
||||
their locations and pass that info to the QUIP build script. But
|
||||
on some systems this triggers a (current) limitation of CMake and
|
||||
the configuration will fail. Try enabling ``USE_INTERNAL_LINALG`` in
|
||||
those cases to use the bundled linear algebra library and work around
|
||||
the limitation.
|
||||
|
||||
.. tab:: Traditional make
|
||||
|
||||
The download/build procedure for the QUIP library, described in
|
||||
``lib/quip/README`` file requires setting two environment
|
||||
variables, ``QUIP_ROOT`` and ``QUIP_ARCH``. These are accessed by
|
||||
the ``lib/quip/Makefile.lammps`` file which is used when you
|
||||
compile and link LAMMPS with this package. You should only need
|
||||
to edit ``Makefile.lammps`` if the LAMMPS build can not use its
|
||||
settings to successfully build on your system.
|
||||
|
||||
----------
|
||||
|
||||
.. _scafacos:
|
||||
|
||||
SCAFACOS package
|
||||
@ -2096,50 +2140,6 @@ To build with this package, you must download and build the
|
||||
|
||||
----------
|
||||
|
||||
.. _machdyn:
|
||||
|
||||
MACHDYN package
|
||||
-------------------------------
|
||||
|
||||
To build with this package, you must download the Eigen3 library.
|
||||
Eigen3 is a template library, so you do not need to build it.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: CMake build
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_EIGEN3 # download Eigen3, value = no (default) or yes
|
||||
-D EIGEN3_INCLUDE_DIR=path # path to Eigen library (only needed if a custom location)
|
||||
|
||||
If ``DOWNLOAD_EIGEN3`` is set, the Eigen3 library will be
|
||||
downloaded and inside the CMake build directory. If the Eigen3
|
||||
library is already on your system (in a location where CMake
|
||||
cannot find it), set ``EIGEN3_INCLUDE_DIR`` to the directory the
|
||||
``Eigen3`` include file is in.
|
||||
|
||||
.. tab:: Traditional make
|
||||
|
||||
You can download the Eigen3 library manually if you prefer; follow
|
||||
the instructions in ``lib/smd/README``. You can also do it in one
|
||||
step from the ``lammps/src`` dir, using a command like these,
|
||||
which simply invokes the ``lib/smd/Install.py`` script with the
|
||||
specified args:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-smd # print help message
|
||||
make lib-smd args="-b" # download to lib/smd/eigen3
|
||||
make lib-smd args="-p /usr/include/eigen3" # use existing Eigen installation in /usr/include/eigen3
|
||||
|
||||
Note that a symbolic (soft) link named ``includelink`` is created
|
||||
in ``lib/smd`` to point to the Eigen dir. When LAMMPS builds it
|
||||
will use this link. You should not need to edit the
|
||||
``lib/smd/Makefile.lammps`` file.
|
||||
|
||||
----------
|
||||
|
||||
.. _vtk:
|
||||
|
||||
VTK package
|
||||
|
||||
@ -100,6 +100,7 @@ Tutorials howto
|
||||
|
||||
Howto_cmake
|
||||
Howto_github
|
||||
Howto_lammps_gui
|
||||
Howto_pylammps
|
||||
Howto_wsl
|
||||
|
||||
|
||||
402
doc/src/Howto_lammps_gui.rst
Normal file
@ -0,0 +1,402 @@
|
||||
Using the LAMMPS GUI
|
||||
====================
|
||||
|
||||
LAMMPS GUI is a simple graphical text editor that is linked to the
|
||||
:ref:`LAMMPS C-library interface <lammps_c_api>` and thus can run LAMMPS
|
||||
directly using the contents of the editor's text buffer as input.
|
||||
|
||||
This is similar to what people traditionally would do to run LAMMPS:
|
||||
using a regular text editor to edit the input and run the necessary
|
||||
commands, possibly including the text editor, too, from a command line
|
||||
terminal window. That is quite effective when running LAMMPS on
|
||||
high-performance computing facilities and when you are very proficient
|
||||
in using the command line. The main benefit of a GUI application is
|
||||
that this integrates well with graphical desktop environments and many
|
||||
basic tasks can be done directly from within the GUI without switching
|
||||
to a text console or requiring external programs or scripts to extract
|
||||
data from the generated output. This makes it easier for beginners to
|
||||
get started running simple LAMMPS simulations and thus very suitable for
|
||||
tutorials on LAMMPS. But also makes it easier to switch to a full
|
||||
featured text editor and more sophisticated visualization and analysis
|
||||
tools.
|
||||
|
||||
-----
|
||||
|
||||
The following text provides a detailed tour of the features and
|
||||
functionality of the LAMMPS GUI. This document describes LAMMPS GUI
|
||||
version 1.2.
|
||||
|
||||
Main window
|
||||
-----------
|
||||
|
||||
When LAMMPS GUI starts, it will show the main window with either an
|
||||
empty buffer, or have a file loaded. In the latter case it may look like
|
||||
the following:
|
||||
|
||||
.. image:: JPG/lammps-gui-main.png
|
||||
:align: center
|
||||
:scale: 50%
|
||||
|
||||
There is the menu bar at the top, then the main editor buffer with the
|
||||
input file contents in the center with line numbers on the left and the
|
||||
input colored according to the LAMMPS input file syntax. At the bottom
|
||||
is the status bar, which shows the status of LAMMPS execution on the
|
||||
left ("Ready." when idle) and the current working directory on the
|
||||
right. The size of the main window will be stored when exiting and
|
||||
restored when starting again. The name of the current file in the
|
||||
buffer is shown in the window title and the text `*modified*` is added
|
||||
in case the buffer has modifications that are not yet saved to a file.
|
||||
|
||||
Opening Files
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
The LAMMPS GUI application will try to open the first command line
|
||||
argument as input file, further arguments are ignored. When no
|
||||
argument is given LAMMPS GUI will start with an empty buffer.
|
||||
Files can also be opened via the ``File`` menu or by drag-and-drop
|
||||
of a file from a file manager to the editor window. Only one
|
||||
file can be open at a time, so opening a new file with a filled
|
||||
buffer will close this buffer and in case the buffer has unsaved
|
||||
modifications will ask to either cancel the load, discard the
|
||||
changes or save them.
|
||||
|
||||
|
||||
Running LAMMPS
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
From within the LAMMPS GUI main window LAMMPS can be started either from
|
||||
the ``Run`` menu, by the hotkey `Ctrl-Enter` (`Command-Enter` on macOS),
|
||||
or by clicking on the green button in the status bar. LAMMPS runs in a
|
||||
separate thread, so the GUI stays responsive and thus it is able to
|
||||
interact with the calculation and access its data. It is important to
|
||||
note, that LAMMPS is using the contents of the input buffer for the run,
|
||||
**not** the file it was read from. If there are unsaved changes in the
|
||||
buffer, they *will* be used.
|
||||
|
||||
.. image:: JPG/lammps-gui-running.png
|
||||
:align: center
|
||||
:scale: 75%
|
||||
|
||||
While LAMMPS is running, the contents of the status bar change: on the
|
||||
left side there is a text indicating that LAMMPS is running, which will
|
||||
contain the selected number of threads, if thread-parallel acceleration
|
||||
was selected in the ``Preferences`` dialog. On the right side, a
|
||||
progress bar is shown that displays the estimated progress on the
|
||||
current :doc:`run command <run>`. Additionally, two windows will open:
|
||||
the log window with the captured screen output and the chart window with
|
||||
a line graph created from the thermodynamic output of the run.
|
||||
|
||||
The run can be stopped cleanly by using either the ``Stop LAMMPS`` entry
|
||||
in the ``Run`` menu, the hotkey `Ctrl-/` (`Command-/` on macOS), or
|
||||
clicking on the red button in the status bar. This will cause that the
|
||||
running LAMMPS process will complete the current iteration and then
|
||||
stop. This is equivalent to the command :doc:`timer timeout 0 <timer>`
|
||||
and implemented by calling the :cpp:func:`lammps_force_timeout()` function
|
||||
of the LAMMPS C-library interface.
|
||||
|
||||
|
||||
Viewing Snapshot Images
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
By selecting the ``View Image`` entry in the ``Run`` menu, by hitting
|
||||
the `Ctrl-I` (`Command-I` on macOS) hotkey or by clicking on the
|
||||
"palette" button in the status bar, LAMMPS GUI will issue a
|
||||
:doc:`write_dump image <dump_image>` command and read the resulting
|
||||
snapshot image into an image viewer window. When possible, LAMMPS
|
||||
GUI will try to detect which elements the atoms correspond to (via
|
||||
their mass) and then colorize them accordingly. Otherwise just some
|
||||
predefined sequence of colors are assigned to different atom types.
|
||||
|
||||
.. image:: JPG/lammps-gui-image.png
|
||||
:align: center
|
||||
:scale: 50%
|
||||
|
||||
The default image size, some default image quality settings, the view
|
||||
style and some colors can be changed in the ``Preferences`` dialog
|
||||
window. From the image viewer window further adjustments can be made:
|
||||
actual image size, high-quality rendering, anti-aliasing, view style,
|
||||
display of box or axes, zoom factor. The the image can be rotated
|
||||
horizontally and vertically and it is possible to only display the atoms
|
||||
within a predefined group (default is "all"). After each change, the
|
||||
image is rendered again and the display updated. The small palette icon
|
||||
on the top left will be colored while LAMMPS is running to render the
|
||||
image and it will be grayed out again, when it is done. When there are
|
||||
many items to show and high quality images with anti-aliasing are
|
||||
requested, re-rendering can take several seconds. From the ``File``
|
||||
menu, the shown image can be saved to a file permanently or copied into
|
||||
the cut-n-paste buffer for pasting into another application.
|
||||
|
||||
|
||||
Editor Functions
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
The editor has most the usual functionality that similar programs have:
|
||||
text selection via mouse or with cursor moves while holding the Shift
|
||||
key, Cut, Copy, Paste, Undo, Redo. All of these editing functions are
|
||||
available via hotkeys. When trying to exit the editor with a modified
|
||||
buffer, a dialog will pop up asking whether to cancel the quit, or don't
|
||||
save or save the buffer's contents to a file.
|
||||
|
||||
Context Specific Help
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. image:: JPG/lammps-gui-popup-help.png
|
||||
:align: center
|
||||
:scale: 50%
|
||||
|
||||
A unique feature of the LAMMPS GUI is the option to look up the
|
||||
documentation for the command in the current line. This can be achieved
|
||||
by either clicking the right mouse button or by using the `Ctrl-?`
|
||||
hotkey. When clicking the mouse there are additional entries in the
|
||||
context menu that will open the corresponding documentation page in the
|
||||
online LAMMPS documentation. When using the hotkey, the first of those
|
||||
entries will be chosen directly.
|
||||
|
||||
Menu
|
||||
----
|
||||
|
||||
The menu bar the entries ``File``, ``Edit``, ``Run``, ``View``, and ``About``.
|
||||
Instead of using the mouse to click on them, the individual menus can also
|
||||
be activated by hitting the `Alt` key together with the corresponding underlined
|
||||
letter, that is `Alt-f` will activate the ``File`` menu. For the corresponding
|
||||
activated sub-menus, also the underlined letter, together with the `Alt` key can
|
||||
be used to select instead of the mouse.
|
||||
|
||||
File
|
||||
^^^^
|
||||
|
||||
The ``File`` menu offers the usual options:
|
||||
|
||||
- ``New`` will clear the current buffer and reset the file name to ``*unknown*``
|
||||
- ``Open`` will open a dialog to select a new file
|
||||
- ``Save`` will save the current file; if the file name is ``*unknown*``
|
||||
a dialog will open to select a new file name
|
||||
- ``Save As`` will open a dialog to select and new file name and save
|
||||
the buffer to it
|
||||
- ``Quit`` will exit LAMMPS GUI. If there are unsaved changes, a dialog
|
||||
will appear to either cancel the quit, save or don't save the file.
|
||||
|
||||
In addition, up to 5 recent file names will be listed after the ``Open``
|
||||
entry that allows to re-open recent files. This list is stored when
|
||||
quitting and recovered when starting again.
|
||||
|
||||
Edit
|
||||
^^^^
|
||||
|
||||
The ``Edit`` menu offers the usual editor functions like ``Undo``,
|
||||
``Redo``, ``Cut``, ``Copy``, ``Paste``, but also offers to open the
|
||||
``Preferences`` dialog and to delete all stored preferences so they
|
||||
will be reset to their defaults.
|
||||
|
||||
Run
|
||||
^^^
|
||||
|
||||
The ``Run`` menu allows to start and stop a LAMMPS process. Rather than
|
||||
calling the LAMMPS executable as a separate executable, the LAMMPS GUI
|
||||
is linked to the LAMMPS library and thus can run LAMMPS internally
|
||||
through the :ref:`LAMMPS C-library interface <lammps_c_api>`.
|
||||
Specifically, a LAMMPS instance will be created by calling
|
||||
:cpp:func:`lammps_open_no_mpi` and then the buffer contents run by
|
||||
calling :cpp:func:`lammps_commands_string`. Certain commands and
|
||||
features are only available, after a LAMMPS instance is created. Its
|
||||
presence is indicated by a small LAMMPS ``L`` logo in the status bar at
|
||||
the bottom left of the main window.
|
||||
|
||||
The LAMMPS calculation will be run in a concurrent thread so that the
|
||||
GUI will stay responsive and will be updated during the run. This can
|
||||
be used to tell the running LAMMPS instance to stop at the next
|
||||
timestep. The ``Stop LAMMPS`` entry will do this by calling
|
||||
:cpp:func:`lammps_force_timeout`, which is equivalent to a :doc:`timer
|
||||
timeout 0 <timer>` command.
|
||||
|
||||
The ``Set Variables`` entry will open a dialog box where :doc:`index style variables <variable>`
|
||||
can be set. Those variables will be passed to the LAMMPS instance when
|
||||
it is created and are thus set *before* a run is started.
|
||||
|
||||
.. image:: JPG/lammps-gui-variables.png
|
||||
:align: center
|
||||
:scale: 75%
|
||||
|
||||
The ``Set Variables`` dialog will be pre-populated with entries that are
|
||||
set as index variables in the input and any variables that are used but
|
||||
not defined as far as the built-in parser can detect them. New rows for
|
||||
additional variables can be added through the ``Add Row`` button and
|
||||
existing rows deleted by clicking on the ``X`` icons on the right.
|
||||
|
||||
The ``View Image`` entry will send a :doc:`dump image <dump_image>`
|
||||
command to the LAMMPS instance, read the resulting file, and show it in
|
||||
an ``Image Viewer`` window.
|
||||
|
||||
The ``View in OVITO`` entry will launch `OVITO <https://ovito.org>`_
|
||||
with a :doc:`data file <write_data>` of the current state of the system.
|
||||
This option is only available, if the LAMMPS GUI can find the OVITO
|
||||
executable in the system path.
|
||||
|
||||
The ``View in VMD`` entry will instead launch VMD, also to load a
|
||||
:doc:`data file <write_data>` of the current state of the system. This
|
||||
option is only available, if the LAMMPS GUI can find the VMD executable
|
||||
in the system path.
|
||||
|
||||
View
|
||||
^^^^
|
||||
|
||||
The ``View`` menu offers to show or hide the three optional windows
|
||||
with log output, graphs, or images. The default settings for those
|
||||
can be changed in the ``Preferences dialog``.
|
||||
|
||||
About
|
||||
^^^^^
|
||||
|
||||
The ``About`` menu finally offers a couple of dialog windows and an
|
||||
option to launch the LAMMPS online documentation in a web browser. The
|
||||
``About LAMMPS GUI`` entry displays a dialog with a summary of the
|
||||
configuration settings of the LAMMPS library in use and the version
|
||||
number of LAMMPS GUI itself. The ``Quick Help`` displays a dialog with
|
||||
a minimal description of LAMMPS GUI. And ``LAMMPS Manual`` will open
|
||||
the main page of this LAMMPS documentation at https://docs.lammps.org/.
|
||||
|
||||
Preferences
|
||||
-----------
|
||||
|
||||
The ``Preferences`` dialog allows to customize some of the behavior
|
||||
and looks of the LAMMPS GUI application. The settings are grouped
|
||||
and each group is displayed within a tab.
|
||||
|
||||
.. |guiprefs1| image:: JPG/lammps-gui-prefs-general.png
|
||||
:width: 25%
|
||||
|
||||
.. |guiprefs2| image:: JPG/lammps-gui-prefs-accel.png
|
||||
:width: 25%
|
||||
|
||||
.. |guiprefs3| image:: JPG/lammps-gui-prefs-image.png
|
||||
:width: 25%
|
||||
|
||||
|guiprefs1| |guiprefs2| |guiprefs3|
|
||||
|
||||
General Settings:
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
- *Echo input to log:* when checked, all input commands, including
|
||||
variable expansions, will be echoed to the log window. This is
|
||||
equivalent to using `-echo screen` at the command line. There is no
|
||||
log *file* produced since it always uses `-log none`.
|
||||
- *Include citation details:* when checked full citation info will be
|
||||
included to the log window. This is equivalent to using `-cite
|
||||
screen` on the command line.
|
||||
- *Show log window by default:* when checked, the screen output of a
|
||||
LAMMPS run will be collected in a log window during the run
|
||||
- *Show chart window by default:* when checked, the thermodynamic
|
||||
output of a LAMMPS run will be collected and displayed in a chart
|
||||
window as line graphs.
|
||||
- *Replace log window on new run:* when checked, an existing log
|
||||
window will be replaced on a new LAMMPS run, otherwise each run will
|
||||
create a new log window.
|
||||
- *Replace chart window on new run:* when checked, an existing chart
|
||||
window will be replaced on a new LAMMPS run, otherwise each run will
|
||||
create a new chart window.
|
||||
- *Replace image window on new render:* when checked, an existing
|
||||
chart window will be replaced when a new snapshot image is requested,
|
||||
otherwise each command will create a new image window.
|
||||
- *Path to LAMMPS Shared Library File:* this options is only available
|
||||
when LAMMPS GUI was compiled to load the LAMMPS library at run time
|
||||
instead of being linked to it directly. With the ``Browse..`` button
|
||||
or by changing the text, a different shared library file with a
|
||||
different compilation of LAMMPS with different settings or from a
|
||||
different version can be loaded. After this setting was changed,
|
||||
LAMMPS GUI needs to be re-launched.
|
||||
- *Select Default Font:* Opens a font selection dialog where the type
|
||||
and size for the default font (used for everything but the editor and
|
||||
log) of the application can be set.
|
||||
- *Select Text Font:* Opens a font selection dialog where the type and
|
||||
size for the text editor and log font of the application can be set.
|
||||
|
||||
Accelerators:
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
This tab enables to select which accelerator package is used and is
|
||||
equivalent to using the `-suffix` and `-package` flags on the command
|
||||
line. Only settings supported by the LAMMPS library and local hardware
|
||||
are available. The `Number of threads` field allows to set the maximum
|
||||
number of threads for the accelerator packages that use threads.
|
||||
|
||||
Snapshot Image:
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
This tab allows to set some defaults for the snapshot images displayed
|
||||
in the ``Image Viewer`` window, like its dimensions and the zoom factor
|
||||
applied. The *Antialias* switch requests to render images with twice
|
||||
the number of pixels for width and height and then smoothly scales the
|
||||
image back to the requested size. This produces higher quality images
|
||||
with smoother edges at the expense of requiring more CPU time to render
|
||||
the image. The *HQ Image mode* option turns on using a screen space
|
||||
ambient occlusion mode (SSAO) when rendering images. This is also more
|
||||
time consuming, but produces a more 'spatial' representation of the
|
||||
system. The *VDW Style* checkbox selects whether atoms are represented
|
||||
by space filling spheres when checked or by smaller spheres and stick.
|
||||
Finally there are a couple of drop down lists to select the background
|
||||
and box color.
|
||||
|
||||
|
||||
Hotkeys
|
||||
-------
|
||||
|
||||
Almost all functionality is accessible from the menu or via hotkeys.
|
||||
The following hotkeys are available (On macOS use the Command key
|
||||
instead of Ctrl/Control).
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
|
||||
* - Hotkey
|
||||
- Function
|
||||
- Hotkey
|
||||
- Function
|
||||
- Hotkey
|
||||
- Function
|
||||
- Hotkey
|
||||
- Function
|
||||
* - Ctrl+N
|
||||
- New File
|
||||
- Ctrl+Z
|
||||
- Undo edit
|
||||
- Ctrl+Enter
|
||||
- Run LAMMPS
|
||||
- Ctrl+Shift+A
|
||||
- About LAMMPS GUI
|
||||
* - Ctrl+O
|
||||
- Open File
|
||||
- Ctrl+Shift+Z
|
||||
- Redo edit
|
||||
- Ctrl+/
|
||||
- Stop Active Run
|
||||
- Ctrl+Shift+H
|
||||
- Quick Help
|
||||
* - CTRL+S
|
||||
- Save File
|
||||
- Ctrl+C
|
||||
- Copy text
|
||||
- Ctrl+Shift+V
|
||||
- Set Variables
|
||||
- Ctrl+Shift+G
|
||||
- LAMMPS GUI Howto
|
||||
* - Ctrl+Shift+S
|
||||
- Save File As
|
||||
- Ctrl+X
|
||||
- Cut text
|
||||
- Ctrl+I
|
||||
- Create Snapshot Image
|
||||
- Ctrl+Shift+M
|
||||
- LAMMPS Manual
|
||||
* - Ctrl+Q
|
||||
- Quit
|
||||
- Ctrl+V
|
||||
- Paste text
|
||||
- Ctrl+P
|
||||
- Preferences
|
||||
- Ctrl+?
|
||||
- Context Help
|
||||
|
||||
Further editing keybindings `are documented with the Qt documentation
|
||||
<https://doc.qt.io/qt-5/qplaintextedit.html#editing-key-bindings>`_. In
|
||||
case of conflicts the list above takes precedence.
|
||||
BIN
doc/src/JPG/lammps-gui-chart.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
doc/src/JPG/lammps-gui-image.png
Normal file
|
After Width: | Height: | Size: 123 KiB |
BIN
doc/src/JPG/lammps-gui-log.png
Normal file
|
After Width: | Height: | Size: 185 KiB |
BIN
doc/src/JPG/lammps-gui-main.png
Normal file
|
After Width: | Height: | Size: 91 KiB |
BIN
doc/src/JPG/lammps-gui-popup-help.png
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
doc/src/JPG/lammps-gui-prefs-accel.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
doc/src/JPG/lammps-gui-prefs-general.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
doc/src/JPG/lammps-gui-prefs-image.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
doc/src/JPG/lammps-gui-running.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
doc/src/JPG/lammps-gui-variables.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
@ -23,10 +23,23 @@ coordinated.
|
||||
|
||||
----------
|
||||
|
||||
The content for this manual is part of the LAMMPS distribution. The
|
||||
online version always corresponds to the latest feature release version.
|
||||
If needed, you can build a local copy of the manual as HTML pages or a
|
||||
PDF file by following the steps on the :doc:`Build_manual` page. If you
|
||||
The content for this manual is part of the LAMMPS distribution in its
|
||||
doc directory.
|
||||
|
||||
* The version of the manual on the LAMMPS website corresponds to the
|
||||
latest LAMMPS feature release. It is available at:
|
||||
`https://docs.lammps.org/ <https://docs.lammps.org/>`_.
|
||||
* A version of the manual corresponding to the latest LAMMPS stable
|
||||
release (state of the *stable* branch on GitHub) is available online
|
||||
at: `https://docs.lammps.org/stable/
|
||||
<https://docs.lammps.org/stable/>`_
|
||||
* A version of the manual with the features most recently added to
|
||||
LAMMPS (state of the *develop* branch on GitHub) is available at:
|
||||
`https://docs.lammps.org/latest/ <https://docs.lammps.org/latest/>`_
|
||||
|
||||
If needed, you can build a copy on your local machine of the manual
|
||||
(HTML pages or PDF file) for the version of LAMMPS you have
|
||||
downloaded. Follow the steps on the :doc:`Build_manual` page. If you
|
||||
have difficulties viewing the pages, please :ref:`see this note
|
||||
<webbrowser>`.
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ package was developed primarily by Christian Trott (Sandia) and Stan
|
||||
Moore (Sandia) with contributions of various styles by others,
|
||||
including Sikandar Mashayak (UIUC), Ray Shan (Sandia), and Dan Ibanez
|
||||
(Sandia). For more information on developing using Kokkos abstractions
|
||||
see the Kokkos `Wiki <https://github.com/kokkos/kokkos/wiki>`_.
|
||||
see the `Kokkos Wiki <https://github.com/kokkos/kokkos/wiki>`_.
|
||||
|
||||
Kokkos currently provides support for 4 modes of execution (per MPI
|
||||
task). These are Serial (MPI-only for CPUs and Intel Phi), OpenMP
|
||||
@ -29,11 +29,12 @@ produce an executable compatible with a specific hardware.
|
||||
.. admonition:: C++14 support
|
||||
:class: note
|
||||
|
||||
Kokkos requires using a compiler that supports the c++14 standard. For
|
||||
some compilers, it may be necessary to add a flag to enable c++14 support.
|
||||
Kokkos version 3.x requires using a compiler that supports the c++14 standard.
|
||||
For some compilers, it may be necessary to add a flag to enable c++14 support.
|
||||
For example, the GNU compiler uses the -std=c++14 flag. For a list of
|
||||
compilers that have been tested with the Kokkos library, see the Kokkos
|
||||
`README <https://github.com/kokkos/kokkos/blob/master/README.md>`_.
|
||||
compilers that have been tested with the Kokkos library, see the
|
||||
`requirements document of the Kokkos Wiki
|
||||
<https://kokkos.github.io/kokkos-core-wiki/requirements.html>`_.
|
||||
|
||||
.. admonition:: NVIDIA CUDA support
|
||||
:class: note
|
||||
|
||||
@ -645,106 +645,49 @@ LAMMPS GUI
|
||||
Overview
|
||||
^^^^^^^^
|
||||
|
||||
LAMMPS GUI is essentially a small graphical text editor that is linked
|
||||
to the :ref:`LAMMPS C-library interface <lammps_c_api>` and thus can run
|
||||
LAMMPS directly using the contents of the editor's text buffer as input.
|
||||
This is similar to what people usually would do using a text editor to
|
||||
edit the input and then a command line terminal window to run the input
|
||||
commands. The main benefit is that this integrates very well with
|
||||
graphical desktop environments and that it is easier to use for
|
||||
beginners in running computations and thus very suitable for tutorials
|
||||
on LAMMPS. A small difference is that for the LAMMPS GUI it is not
|
||||
require to first commit its buffer of the text editor to a file.
|
||||
LAMMPS GUI is a simple graphical text editor that is linked to the
|
||||
:ref:`LAMMPS C-library interface <lammps_c_api>` and thus can run LAMMPS
|
||||
directly using the contents of the editor's text buffer as input.
|
||||
|
||||
This is similar to what people traditionally would do to run LAMMPS:
|
||||
using a regular text editor to edit the input and run the necessary
|
||||
commands, possibly including the text editor, too, from a command line
|
||||
terminal window. This similarity is a design goal. While making it easy
|
||||
for beginners to start with LAMMPS, it is also the intention to simplify
|
||||
the transition to workflows like most experienced LAMMPS users do.
|
||||
|
||||
All features have been extensively exposed to hotkeys, so that there is
|
||||
also appeal for experienced LAMMPS users, too, especially for
|
||||
prototyping and testing simulations setups.
|
||||
|
||||
Features
|
||||
^^^^^^^^
|
||||
|
||||
The main window of the LAMMPS GUI is a generic text editor window with
|
||||
line numbers and syntax highlighting set up for LAMMPS input files. It
|
||||
can be used to edit any kind of text file, though. The output of a run
|
||||
is captured and displayed in a separate dialog window and *not* sent to
|
||||
the console or a log file (unless the :doc:`log command <log>` is used
|
||||
in the input. The log window is regularly updated during the run and a
|
||||
progress bar for the run command shown at the bottom of the main window.
|
||||
Starting a new run will open another log windows. The state of LAMMPS
|
||||
will be reset between two runs. After the simulation is finished, an
|
||||
image of the simulated system can be created and shown in an image
|
||||
viewer window. Ongoing runs can be stopped at the next iteration via
|
||||
triggering a timeout.
|
||||
A detailed discussion and explanation of all features and functionality
|
||||
are in the :doc:`Howto_lammps_gui` tutorial Howto page.
|
||||
|
||||
When opening a file, the editor will determine the directory where the
|
||||
file resides and switch its current working directory to the folder of
|
||||
that file. Many LAMMPS inputs contain commands that read other files,
|
||||
typically from the folder of the input file. The GUI will always show
|
||||
the current working directory in the bottom. The editor window can also
|
||||
receive (entire) files via drag-n-drop from a file manager GUI or a
|
||||
desktop environment. When exiting the GUI with a modified buffer, a
|
||||
dialog asking to either cancel, ignore the modifications, or save the
|
||||
file with show up. Same when attempting to load a new file into a
|
||||
modified buffer.
|
||||
Here are a few highlights of LAMMPS GUI
|
||||
|
||||
Hotkeys
|
||||
^^^^^^^
|
||||
|
||||
Almost all functionality is accessible from the menu or via hotkeys.
|
||||
The following hotkeys are available (On macOS use the Command key
|
||||
instead of Ctrl (aka Control)).
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
|
||||
* - Hotkey
|
||||
- Function
|
||||
- Hotkey
|
||||
- Function
|
||||
- Hotkey
|
||||
- Function
|
||||
- Hotkey
|
||||
- Function
|
||||
* - Ctrl+N
|
||||
- New File
|
||||
- Ctrl+Z
|
||||
- Undo edit
|
||||
- Ctrl+V
|
||||
- Paste text
|
||||
- Ctrl+Q
|
||||
- Quit (Main Window only)
|
||||
* - Ctrl+O
|
||||
- Open File
|
||||
- Ctrl+Shift+Z
|
||||
- Redo edit
|
||||
- Ctrl+Enter
|
||||
- Run LAMMPS
|
||||
- Ctrl+W
|
||||
- Close (Log and Image Window only)
|
||||
* - CTRL+S
|
||||
- Save File
|
||||
- Ctrl+C
|
||||
- Copy text
|
||||
- Ctrl+/
|
||||
- Stop Active Run
|
||||
- Ctrl+P
|
||||
- Preferences
|
||||
* - Ctrl+Shift+S
|
||||
- Save File As
|
||||
- Ctrl+X
|
||||
- Cut text
|
||||
- Ctrl+I
|
||||
- Create Snapshot Image
|
||||
- Ctrl+Shift+/
|
||||
- Quick Help
|
||||
|
||||
Further editing keybindings `are documented with the Qt documentation
|
||||
<https://doc.qt.io/qt-5/qplaintextedit.html#editing-key-bindings>`_. In
|
||||
case of conflicts the list above takes precedence.
|
||||
- Text editor with syntax highlighting customized for LAMMPS
|
||||
- Text editor will switch working directory to folder of file in buffer
|
||||
- Text editor will remember up to 5 recent files
|
||||
- Context specific LAMMPS command help via online documentation
|
||||
- LAMMPS is running in a concurrent thread, so the GUI remains responsive
|
||||
- Support for accelerator packages
|
||||
- Progress bar indicates that LAMMPS is running
|
||||
- LAMMPS can be started and stopped with a hotkey
|
||||
- Screen output is captured in a Log Window
|
||||
- Thermodynamic output is captured and displayed as line graph in a Chart Window
|
||||
- Visualization of current state in Image Viewer (via :doc:`dump image <dump_image>`)
|
||||
- Many adjustable settings and preferences that are persistent
|
||||
- Dialog to set variables from the LAMMPS command line
|
||||
|
||||
Parallelization
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
Due to its nature as a graphical application, it is not possible to use
|
||||
the LAMMPS GUI in parallel with MPI, but OpenMP multi-threading is
|
||||
available and enabled by default.
|
||||
the LAMMPS GUI in parallel with MPI, but OpenMP multi-threading and GPU
|
||||
acceleration is available and enabled by default.
|
||||
|
||||
Prerequisites and portability
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -752,63 +695,65 @@ Prerequisites and portability
|
||||
LAMMPS GUI is programmed in C++ based on the C++11 standard and using
|
||||
the `Qt GUI framework <https://www.qt.io/product/framework>`_.
|
||||
Currently, Qt version 5.12 or later is required; Qt 5.15LTS is
|
||||
recommended Qt 6.x not (yet) supported. Furthermore, CMake version 3.16
|
||||
is required and LAMMPS must be configured with ``-D
|
||||
LAMMPS_EXCETIONS=on`` and ``-D BUILD_MPI=off``. It has been successfully
|
||||
compiled and tested on:
|
||||
recommended; Qt 6.x not (yet) supported. Building LAMMPS with CMake 3.16
|
||||
or later is required. The LAMMPS GUI has been successfully compiled and tested on:
|
||||
|
||||
- Ubuntu Linux 20.04LTS x86_64 using GCC 9, Qt version 5.12
|
||||
- Fedora Linux 38 x86\_64 using GCC 13 and Clang 16, Qt version 5.15LTS
|
||||
- Apple macOS 12 (Monterey) and macOS 13 (Ventura) with Xcode on arm64 and x86\_64, Qt version 5.15LTS
|
||||
- Windows 10 and 11 x86_64 with Visual Studio 2022 and Visual C++ 14.36, Qt version 5.15LTS
|
||||
- Windows 10 and 11 x86_64 with MinGW / GCC 10.0 cross-compiler on Fedora 38, Qt version 5.15LTS
|
||||
|
||||
Pre-compiled executables
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Pre-compiled LAMMPS executables including the GUI are currently
|
||||
available from https://download.lammps.org/static. You can unpack the
|
||||
archive (or mount the macOS disk image) and run the GUI directly in
|
||||
place. The folder may also be moved around and added to the ``PATH``
|
||||
environment variable so the executables will be found automatically. The
|
||||
LAMMPS GUI executable is called ``lammps-gui`` and takes no arguments or
|
||||
will interpret the first argument as filename to load.
|
||||
available from https://download.lammps.org/static or
|
||||
https://github.com/lammps/lammps/releases. You can unpack the archives
|
||||
(or mount the macOS disk image) and run the GUI directly in place. The
|
||||
folder may also be moved around and added to the ``PATH`` environment
|
||||
variable so the executables will be found automatically. The LAMMPS GUI
|
||||
executable is called ``lammps-gui`` and either takes no arguments or
|
||||
attempts to load the first argument as LAMMPS input file.
|
||||
|
||||
Compilation
|
||||
^^^^^^^^^^^
|
||||
|
||||
The source for the LAMMPS GUI is included with the LAMMPS source code
|
||||
distribution in the folder `tools/lammps-gui` and thus it can be can be
|
||||
built as part of a regular LAMMPS compilation.
|
||||
:doc:`Using CMake <Howto_cmake>` is required.
|
||||
To enable its compilation the CMake variable ``-D BUILD_LAMMPS_GUI=on``
|
||||
must be set when creating the CMake configuration. All other settings
|
||||
(compiler, flags, compile type) for LAMMPS GUI are then inherited from
|
||||
the regular LAMMPS build. If the Qt library is packaged for Linux
|
||||
distributions, then its location is typically auto-detected since the
|
||||
required CMake configuration files are stored in a location where CMake
|
||||
can find them without additional help. Otherwise, the location of the
|
||||
Qt library installation must be indicated by setting
|
||||
``-D Qt5_DIR=/path/to/qt5/lib/cmake/Qt5``, which is a path to a folder inside
|
||||
the Qt installation that contains the file ``Qt5Config.cmake``.
|
||||
distribution in the folder ``tools/lammps-gui`` and thus it can be can
|
||||
be built as part of a regular LAMMPS compilation. :doc:`Using CMake
|
||||
<Howto_cmake>` is required. To enable its compilation, the CMake
|
||||
variable ``-D BUILD_LAMMPS_GUI=on`` must be set when creating the CMake
|
||||
configuration. All other settings (compiler, flags, compile type) for
|
||||
LAMMPS GUI are then inherited from the regular LAMMPS build. If the Qt
|
||||
library is packaged for Linux distributions, then its location is
|
||||
typically auto-detected since the required CMake configuration files are
|
||||
stored in a location where CMake can find them without additional help.
|
||||
Otherwise, the location of the Qt library installation must be indicated
|
||||
by setting ``-D Qt5_DIR=/path/to/qt5/lib/cmake/Qt5``, which is a path to
|
||||
a folder inside the Qt installation that contains the file
|
||||
``Qt5Config.cmake``.
|
||||
|
||||
It is also possible to build the LAMMPS GUI as a standalone executable
|
||||
(e.g. when LAMMPS has been compiled with traditional make), then the
|
||||
CMake configuration needs to be told where to find the LAMMPS headers
|
||||
and the LAMMPS library, via `-D LAMMPS_SOURCE_DIR=/path/to/lammps/src`.
|
||||
CMake will try to guess a build folder with the LAMMPS library from that
|
||||
path, but it can also be set with `-D LAMMPS_LIB_DIR=/path/to/lammps/lib`.
|
||||
It should be possible to build the LAMMPS GUI as a standalone
|
||||
compilation (e.g. when LAMMPS has been compiled with traditional make),
|
||||
then the CMake configuration needs to be told where to find the LAMMPS
|
||||
headers and the LAMMPS library, via ``-D
|
||||
LAMMPS_SOURCE_DIR=/path/to/lammps/src``. CMake will try to guess a
|
||||
build folder with the LAMMPS library from that path, but it can also be
|
||||
set with ``-D LAMMPS_LIB_DIR=/path/to/lammps/lib``.
|
||||
|
||||
Rather than linking to the LAMMPS library during compilation, it is also
|
||||
possible to compile the GUI with a plugin loader library that will load
|
||||
the LAMMPS library dynamically at runtime during the start of the GUI
|
||||
from a shared library; e.g. `liblammps.so` or `liblammps.dylib` or
|
||||
`liblammps.dll` (depending on the operating system). This has the
|
||||
from a shared library; e.g. ``liblammps.so`` or ``liblammps.dylib`` or
|
||||
``liblammps.dll`` (depending on the operating system). This has the
|
||||
advantage that the LAMMPS library can be updated LAMMPS without having
|
||||
to recompile the GUI. The ABI of the LAMMPS C-library interface is very
|
||||
stable and generally backward compatible. This feature is enabled by
|
||||
setting ``-D LAMMPS_GUI_USE_PLUGIN=on`` and then
|
||||
``-D LAMMPS_PLUGINLIB_DIR=/path/to/lammps/plugin/loader``. Typically, this
|
||||
would be the ``examples/COUPLE/plugin`` folder of the LAMMPS distribution.
|
||||
setting ``-D LAMMPS_GUI_USE_PLUGIN=on`` and then ``-D
|
||||
LAMMPS_PLUGINLIB_DIR=/path/to/lammps/plugin/loader``. Typically, this
|
||||
would be the ``examples/COUPLE/plugin`` folder of the LAMMPS
|
||||
distribution.
|
||||
|
||||
Platform notes
|
||||
^^^^^^^^^^^^^^
|
||||
@ -818,7 +763,7 @@ macOS
|
||||
|
||||
When building on macOS, the build procedure will try to manufacture a
|
||||
drag-n-drop installer, LAMMPS-macOS-multiarch.dmg, when using the 'dmg'
|
||||
target (i.e. `cmake --build <build dir> --target dmg` or `make dmg`.
|
||||
target (i.e. ``cmake --build <build dir> --target dmg`` or ``make dmg``.
|
||||
|
||||
To build multi-arch executables that will run on both, arm64 and x86_64
|
||||
architectures natively, it is necessary to set the CMake variable ``-D
|
||||
@ -831,29 +776,50 @@ version.
|
||||
Windows
|
||||
"""""""
|
||||
|
||||
On Windows currently only compilation from within Visual Studio 2022 is
|
||||
supported and tested. Using CMake and Ninja as build system is
|
||||
required. Qt needs to be installed, tested was a package downloaded from
|
||||
https://www.qt.io, into the ``C:\\Qt`` folder. There is a custom
|
||||
`x64-GUI-MSVC` build configuration provided that will activate building
|
||||
the `lammps-gui.exe` executable in addition to LAMMPS. When requesting
|
||||
an installation from the `Build` menu, it will create a compressed zip
|
||||
file with the executables and required dependent .dll files. This zip
|
||||
file can be uncompressed and ``lammps-gui.exe`` run directly from there.
|
||||
The uncompressed folder can be added to the ``PATH`` environment and
|
||||
LAMMPS and LAMMPS GUI can be launched from anywhere from the command
|
||||
line.
|
||||
On Windows either native compilation from within Visual Studio 2022 with
|
||||
Visual C++ is supported and tested, or compilation with the MinGW / GCC
|
||||
cross-compiler environment on Fedora Linux.
|
||||
|
||||
**Visual Studio**
|
||||
|
||||
Using CMake and Ninja as build system are required. Qt needs to be
|
||||
installed, tested was a binary package downloaded from
|
||||
https://www.qt.io, which installs into the ``C:\\Qt`` folder by default.
|
||||
There is a custom `x64-GUI-MSVC` build configuration provided in the
|
||||
``CMakeSettings.json`` file that Visual Studio uses to store different
|
||||
compilation settings for project. Choosing this configuration will
|
||||
activate building the `lammps-gui.exe` executable in addition to LAMMPS
|
||||
through importing package selection from the ``windows.cmake`` preset
|
||||
file and enabling building the LAMMPS GUI and disabling building with MPI.
|
||||
When requesting an installation from the `Build` menu in Visual Studio,
|
||||
it will create a compressed ``LAMMPS-Win10-amd64.zip`` zip file with the
|
||||
executables and required dependent .dll files. This zip file can be
|
||||
uncompressed and ``lammps-gui.exe`` run directly from there. The
|
||||
uncompressed folder can be added to the ``PATH`` environment and LAMMPS
|
||||
and LAMMPS GUI can be launched from anywhere from the command line.
|
||||
|
||||
**MinGW64 Cross-compiler**
|
||||
|
||||
The standard CMake build procedure can be applied and the
|
||||
``mingw-cross.cmake`` preset used. By using ``mingw64-cmake`` the CMake
|
||||
command will automatically include a suitable CMake toolset file (the
|
||||
regular cmake command can be used after that). After building the
|
||||
libraries and executables, you can build the target 'zip'
|
||||
(i.e. ``cmake --build <build dir> --target zip`` or ``make zip``
|
||||
to stage all installed files into a LAMMPS_GUI folder and then
|
||||
run a script to copy all required dependencies, some other files,
|
||||
and create a zip file from it.
|
||||
|
||||
Linux
|
||||
"""""
|
||||
|
||||
Version 5.12 or later of the Qt library and CMake version 3.16 are
|
||||
required and those are provided by, e.g., Ubuntu 20.04LTS. Thus older
|
||||
Linux distributions are not likely to be supported, while more recent
|
||||
ones will work, even for pre-compiled executables (see above). After
|
||||
compiling with ``cmake --build <build folder>``, use
|
||||
``cmake --build <build folder> --target tgz`` or ``make tgz`` to build
|
||||
a ``LAMMPS-Linux-amd64.tar.gz`` file with the executables and their
|
||||
Version 5.12 or later of the Qt library is required. Those are provided
|
||||
by, e.g., Ubuntu 20.04LTS. Thus older Linux distributions are not
|
||||
likely to be supported, while more recent ones will work, even for
|
||||
pre-compiled executables (see above). After compiling with
|
||||
``cmake --build <build folder>``, use ``cmake --build <build
|
||||
folder> --target tgz`` or ``make tgz`` to build a
|
||||
``LAMMPS-Linux-amd64.tar.gz`` file with the executables and their
|
||||
support libraries.
|
||||
|
||||
----------
|
||||
|
||||
@ -68,7 +68,7 @@ reciprocal lattice nodes. The mesh spacing is defined either (a) by
|
||||
the entire simulation domain or (b) manually using selected values as
|
||||
shown in the 2D diagram below.
|
||||
|
||||
.. image:: img/saed_mesh.jpg
|
||||
.. image:: img/saed_mesh.png
|
||||
:scale: 75%
|
||||
:align: center
|
||||
|
||||
|
||||
@ -223,7 +223,7 @@ result. I.e. the last 2 columns of thermo output will be the same:
|
||||
system pressure.
|
||||
|
||||
The compute stress/atom can be used in a number of ways. Here is an
|
||||
example to compute a 1-d pressure profile in z-direction across the
|
||||
example to compute a 1-d pressure profile in x-direction across the
|
||||
complete simulation box. You will need to adjust the number of bins and the
|
||||
selections for time averaging to your specific simulation. This assumes
|
||||
that the dimensions of the simulation cell does not change.
|
||||
|
||||
@ -72,7 +72,7 @@ reciprocal lattice nodes. The mesh spacing is defined either (a) by the entire
|
||||
simulation domain or (b) manually using selected values as
|
||||
shown in the 2D diagram below.
|
||||
|
||||
.. image:: img/xrd_mesh.jpg
|
||||
.. image:: img/xrd_mesh.png
|
||||
:scale: 75%
|
||||
:align: center
|
||||
|
||||
|
||||
@ -307,7 +307,9 @@ the :doc:`run <run>` command. This fix is not invoked during
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
none
|
||||
|
||||
The keyword "scale yes" is not supported for scaling per-atom parameters
|
||||
diameter and change. You can use :doc:`fix adapt <fix_adapt>` for those.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
@ -181,6 +181,12 @@ This fix is part of the MC package. It is only enabled if LAMMPS was
|
||||
built with that package. See the :doc:`Build package <Build_package>`
|
||||
doc page for more info.
|
||||
|
||||
This fix cannot be used with systems that do not have per-type masses
|
||||
(e.g. atom style sphere) since the implemented algorithm pre-computes
|
||||
velocity rescaling factors from per-type masses and ignores any per-atom
|
||||
masses, if present. In case both, per-type and per-atom masses are
|
||||
present, a warning is printed.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
|
||||
@ -541,10 +541,10 @@ Restrictions
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`, `fix
|
||||
:doc:ave/histo <fix_ave_histo>`, :doc:`fix ave/time <fix_ave_time>`,
|
||||
:doc:`variable <variable>`, :doc:`fix ave/correlate
|
||||
:doc:<fix_ave_correlate>`, `fix ave/atogrid <fix_ave_grid>`
|
||||
:doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`,
|
||||
:doc:`fix ave/histo <fix_ave_histo>`, :doc:`fix ave/time <fix_ave_time>`,
|
||||
:doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>`,
|
||||
:doc:`fix ave/grid <fix_ave_grid>`
|
||||
|
||||
|
||||
Default
|
||||
|
||||
@ -253,11 +253,11 @@ built with that package. See the :doc:`Build package <Build_package>`
|
||||
page for more info.
|
||||
|
||||
The :doc:`atom_style <atom_style>`, used must contain the charge
|
||||
property, for example, the style could be *charge* or *full*. Only
|
||||
usable for 3D simulations. Atoms specified as free ions cannot be part
|
||||
of rigid bodies or molecules and cannot have bonding interactions. The
|
||||
scheme is limited to integer charges, any atoms with non-integer charges
|
||||
will not be considered by the fix.
|
||||
property and have per atom type masses, for example, the style could be
|
||||
*charge* or *full*. Only usable for 3D simulations. Atoms specified as
|
||||
free ions cannot be part of rigid bodies or molecules and cannot have
|
||||
bonding interactions. The scheme is limited to integer charges, any
|
||||
atoms with non-integer charges will not be considered by the fix.
|
||||
|
||||
All interaction potentials used must be continuous, otherwise the MD
|
||||
integration and the particle exchange MC moves do not correspond to the
|
||||
|
||||
@ -440,8 +440,11 @@ This fix is part of the MC package. It is only enabled if LAMMPS was
|
||||
built with that package. See the :doc:`Build package <Build_package>`
|
||||
doc page for more info.
|
||||
|
||||
This fix style requires an :doc:`atom style <atom_style>` with per atom
|
||||
type masses.
|
||||
|
||||
Do not set "neigh_modify once yes" or else this fix will never be
|
||||
called. Reneighboring is required.
|
||||
called. Reneighboring is **required**.
|
||||
|
||||
Only usable for 3D simulations.
|
||||
|
||||
|
||||
@ -62,7 +62,7 @@ performed using the :doc:`fix deform <fix_deform>`, :doc:`fix nvt/sllod
|
||||
<fix_nvt_sllod>`, and :doc:`compute temp/deform <compute_temp_deform>`
|
||||
commands.
|
||||
|
||||
The applied flow field is set by the *eps* keyword. The values
|
||||
The applied flow field is set by the *erate* keyword. The values
|
||||
*edot_x* and *edot_y* correspond to the strain rates in the xx and yy
|
||||
directions. It is implicitly assumed that the flow field is
|
||||
traceless, and therefore the strain rate in the zz direction is eqal
|
||||
|
||||
@ -24,7 +24,7 @@ Examples
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix pl all plumed all plumed plumedfile plumed.dat outfile p.log
|
||||
fix pl all plumed plumedfile plumed.dat outfile p.log
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
@ -232,8 +232,6 @@ These fixes are part of the QEQ package. They are only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
These qeq fixes are not compatible with the GPU and USER-INTEL packages.
|
||||
|
||||
These qeq fixes will ignore electric field contributions from
|
||||
:doc:`fix efield <fix_efield>`.
|
||||
|
||||
|
||||
@ -155,6 +155,9 @@ This fix is part of the MC package. It is only enabled if LAMMPS was
|
||||
built with that package. See the :doc:`Build package <Build_package>`
|
||||
page for more info.
|
||||
|
||||
This fix style requires an :doc:`atom style <atom_style>` with per atom
|
||||
type masses.
|
||||
|
||||
At present the fix provides optimized subroutines for EAM type
|
||||
potentials (see above) that calculate potential energy changes due to
|
||||
*local* atom type swaps very efficiently. Other potentials are
|
||||
|
||||
@ -195,8 +195,11 @@ doc page for more info.
|
||||
Do not set "neigh_modify once yes" or else this fix will never be
|
||||
called. Reneighboring is **required**.
|
||||
|
||||
Can be run in parallel, but aspects of the GCMC part will not scale well
|
||||
in parallel. Only usable for 3D simulations.
|
||||
This fix style requires an :doc:`atom style <atom_style>` with per atom
|
||||
type masses.
|
||||
|
||||
Can be run in parallel, but some aspects of the insertion procedure
|
||||
will not scale well in parallel. Only usable for 3D simulations.
|
||||
|
||||
|
||||
Related commands
|
||||
|
||||
|
Before Width: | Height: | Size: 108 KiB |
BIN
doc/src/img/saed_mesh.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 118 KiB |
BIN
doc/src/img/xrd_mesh.png
Normal file
|
After Width: | Height: | Size: 101 KiB |
@ -68,8 +68,8 @@ for more info.
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`improper_coeff <improper_coeff>`, `improper_harmonic
|
||||
:doc:<improper_harmonic>`
|
||||
:doc:`improper_coeff <improper_coeff>`,
|
||||
:doc:`improper_harmonic <improper_harmonic>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
@ -30,11 +30,11 @@ Description
|
||||
|
||||
Style *beck* computes interactions based on the potential by
|
||||
:ref:`(Beck) <Beck>`, originally designed for simulation of Helium. It
|
||||
includes truncation at a cutoff distance Rc.
|
||||
includes truncation at a cutoff distance :math:`r_c`.
|
||||
|
||||
.. math::
|
||||
|
||||
E(r) &= A \exp\left[-\alpha r - \beta r^6\right] - \frac{B}{\left(r^2+a^2\right)^3} \left(1+\frac{2.709+3a^2}{r^2+a^2}\right) \qquad r < R_c \\
|
||||
E(r) &= A \exp\left[-\alpha r - \beta r^6\right] - \frac{B}{\left(r^2+a^2\right)^3} \left(1+\frac{2.709+3a^2}{r^2+a^2}\right) \qquad r < r_c \\
|
||||
|
||||
The following coefficients must be defined for each pair of atoms
|
||||
types via the :doc:`pair_coeff <pair_coeff>` command as in the examples
|
||||
@ -50,7 +50,7 @@ commands.
|
||||
* cutoff (distance units)
|
||||
|
||||
The last coefficient is optional. If not specified, the global cutoff
|
||||
:math:`R_c` is used.
|
||||
:math:`r_c` is used.
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -138,8 +138,12 @@ This pair style can only be used via the *pair* keyword of the
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This style is part of the MC package. It is only enabled if LAMMPS
|
||||
was built with that package. See the :doc:`Build package <Build_package>` page for more info.
|
||||
This pair style is part of the MC package. It is only enabled if LAMMPS
|
||||
was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
This pair style requires an :doc:`atom style <atom_style>` with per
|
||||
atom type masses.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
@ -31,13 +31,13 @@ Style *lj/smooth/linear* computes a truncated and force-shifted LJ
|
||||
interaction (aka Shifted Force Lennard-Jones) that combines the
|
||||
standard 12/6 Lennard-Jones function and subtracts a linear term based
|
||||
on the cutoff distance, so that both, the potential and the force, go
|
||||
continuously to zero at the cutoff Rc :ref:`(Toxvaerd) <Toxvaerd>`:
|
||||
continuously to zero at the cutoff :math:`r_c` :ref:`(Toxvaerd) <Toxvaerd>`:
|
||||
|
||||
.. math::
|
||||
|
||||
\phi\left(r\right) & = 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} -
|
||||
\left(\frac{\sigma}{r}\right)^6 \right] \\
|
||||
E\left(r\right) & = \phi\left(r\right) - \phi\left(R_c\right) - \left(r - R_c\right) \left.\frac{d\phi}{d r} \right|_{r=R_c} \qquad r < R_c
|
||||
E\left(r\right) & = \phi\left(r\right) - \phi\left(r_c\right) - \left(r - r_c\right) \left.\frac{d\phi}{d r} \right|_{r=r_c} \qquad r < r_c
|
||||
|
||||
The following coefficients must be defined for each pair of atoms
|
||||
types via the :doc:`pair_coeff <pair_coeff>` command as in the examples
|
||||
@ -77,8 +77,9 @@ tail option for adding long-range tail corrections to energy and
|
||||
pressure, since the energy of the pair interaction is smoothed to 0.0
|
||||
at the cutoff.
|
||||
|
||||
This pair style writes its information to :doc:`binary restart files <restart>`, so pair_style and pair_coeff commands do not need
|
||||
to be specified in an input script that reads a restart file.
|
||||
This pair style writes its information to :doc:`binary restart files <restart>`,
|
||||
so pair_style and pair_coeff commands do not need to be specified
|
||||
in an input script that reads a restart file.
|
||||
|
||||
This pair style can only be used via the *pair* keyword of the
|
||||
:doc:`run_style respa <run_style>` command. It does not support the
|
||||
|
||||
@ -35,7 +35,7 @@ The *mie/cut* style computes the Mie potential, given by
|
||||
E = C \epsilon \left[ \left(\frac{\sigma}{r}\right)^{\gamma_{rep}} - \left(\frac{\sigma}{r}\right)^{\gamma_{att}} \right]
|
||||
\qquad r < r_c
|
||||
|
||||
Rc is the cutoff and C is a function that depends on the repulsive and
|
||||
:math:`r_c` is the cutoff and C is a function that depends on the repulsive and
|
||||
attractive exponents, given by:
|
||||
|
||||
.. math::
|
||||
|
||||
@ -53,7 +53,7 @@ Style *morse* computes pairwise interactions with the formula
|
||||
E = D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right]
|
||||
\qquad r < r_c
|
||||
|
||||
Rc is the cutoff.
|
||||
:math:`r_c` is the cutoff.
|
||||
|
||||
The following coefficients must be defined for each pair of atoms
|
||||
types via the :doc:`pair_coeff <pair_coeff>` command as in the examples
|
||||
@ -78,7 +78,7 @@ so that both, potential energy and force, go to zero at the cut-off:
|
||||
.. math::
|
||||
|
||||
\phi\left(r\right) & = D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] \qquad r < r_c \\
|
||||
E\left(r\right) & = \phi\left(r\right) - \phi\left(R_c\right) - \left(r - R_c\right) \left.\frac{d\phi}{d r} \right|_{r=R_c} \qquad r < R_c
|
||||
E\left(r\right) & = \phi\left(r\right) - \phi\left(r_c\right) - \left(r - r_c\right) \left.\frac{d\phi}{d r} \right|_{r=r_c} \qquad r < r_c
|
||||
|
||||
The syntax of the pair_style and pair_coeff commands are the same for
|
||||
the *morse* and *morse/smooth/linear* styles.
|
||||
|
||||
@ -44,8 +44,9 @@ It is useful for pushing apart overlapping atoms, since it does not
|
||||
blow up as r goes to 0. A is a prefactor that can be made to vary in
|
||||
time from the start to the end of the run (see discussion below),
|
||||
e.g. to start with a very soft potential and slowly harden the
|
||||
interactions over time. Rc is the cutoff. See the :doc:`fix nve/limit <fix_nve_limit>` command for another way to push apart
|
||||
overlapping atoms.
|
||||
interactions over time. :math:`r_c` is the cutoff.
|
||||
See the :doc:`fix nve/limit <fix_nve_limit>` command for another way
|
||||
to push apart overlapping atoms.
|
||||
|
||||
The following coefficients must be defined for each pair of atom types
|
||||
via the :doc:`pair_coeff <pair_coeff>` command as in the examples above,
|
||||
|
||||
@ -81,7 +81,7 @@ given by
|
||||
|
||||
as required for the SPICA (formerly called SDK) and the pSPICA Coarse-grained MD parameterization discussed in
|
||||
:ref:`(Shinoda) <Shinoda3>`, :ref:`(DeVane) <DeVane>`, :ref:`(Seo) <Seo>`, and :ref:`(Miyazaki) <Miyazaki>`.
|
||||
Rc is the cutoff.
|
||||
:math:`r_c` is the cutoff.
|
||||
Summary information on these force fields can be found at https://www.spica-ff.org
|
||||
|
||||
Style *lj/spica/coul/long* computes the adds Coulombic interactions
|
||||
|
||||
@ -76,12 +76,12 @@ class LAMMPSLexer(RegexLexer):
|
||||
include('conditionals'),
|
||||
include('keywords'),
|
||||
(r'#.*?\n', Comment),
|
||||
('"', String, 'string'),
|
||||
('\'', String, 'single_quote_string'),
|
||||
(r'"', String, 'string'),
|
||||
(r'\'', String, 'single_quote_string'),
|
||||
(r'[0-9]+:[0-9]+(:[0-9]+)?', Number),
|
||||
(r'[0-9]+(\.[0-9]+)?([eE]\-?[0-9]+)?', Number),
|
||||
('\$?\(', Name.Variable, 'expression'),
|
||||
('\$\{', Name.Variable, 'variable'),
|
||||
(r'\$?\(', Name.Variable, 'expression'),
|
||||
(r'\$\{', Name.Variable, 'variable'),
|
||||
(r'[\w_\.\[\]]+', Name),
|
||||
(r'\$[\w_]+', Name.Variable),
|
||||
(r'\s+', Whitespace),
|
||||
@ -97,21 +97,21 @@ class LAMMPSLexer(RegexLexer):
|
||||
]
|
||||
,
|
||||
'variable' : [
|
||||
('[^\}]+', Name.Variable),
|
||||
('\}', Name.Variable, '#pop'),
|
||||
(r'[^\}]+', Name.Variable),
|
||||
(r'\}', Name.Variable, '#pop'),
|
||||
],
|
||||
'string' : [
|
||||
('[^"]+', String),
|
||||
('"', String, '#pop'),
|
||||
(r'[^"]+', String),
|
||||
(r'"', String, '#pop'),
|
||||
],
|
||||
'single_quote_string' : [
|
||||
('[^\']+', String),
|
||||
('\'', String, '#pop'),
|
||||
(r'[^\']+', String),
|
||||
(r'\'', String, '#pop'),
|
||||
],
|
||||
'expression' : [
|
||||
('[^\(\)]+', Name.Variable),
|
||||
('\(', Name.Variable, 'expression'),
|
||||
('\)', Name.Variable, '#pop'),
|
||||
(r'[^\(\)]+', Name.Variable),
|
||||
(r'\(', Name.Variable, 'expression'),
|
||||
(r'\)', Name.Variable, '#pop'),
|
||||
],
|
||||
'modify_cmd' : [
|
||||
(r'[\w_\-\.\[\]]+', Name.Variable.Identifier),
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
units lj
|
||||
atom_style tri
|
||||
atom_modify first big
|
||||
atom_modify first big map yes
|
||||
|
||||
read_data data.tri.srd
|
||||
|
||||
@ -52,12 +52,12 @@ pair_coeff 1 2 0.0 1.0 0.0
|
||||
|
||||
timestep 0.001
|
||||
|
||||
fix 1 big rigid molecule #langevin 1.0 1.0 0.1 12398
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 &
|
||||
fix 1 big rigid/small molecule #langevin 1.0 1.0 0.1 12398
|
||||
fix 2 small srd 20 big 1.0 1.0 49894 &
|
||||
search 0.2 cubic warn 0.0001 shift yes 49829 &
|
||||
overlap yes collision noslip
|
||||
overlap yes collision noslip inside ignore
|
||||
|
||||
fix 3 all deform 1 x scale 0.6 y scale 0.6 z scale 0.6
|
||||
fix 3 all deform 1 x scale 0.8 y scale 0.8 z scale 0.8
|
||||
|
||||
# diagnostics
|
||||
|
||||
@ -73,8 +73,8 @@ compute 2 all ke
|
||||
compute 3 all pe
|
||||
variable toteng equal (c_1+c_2+c_3)/atoms
|
||||
|
||||
thermo 1000
|
||||
thermo_style custom step f_1 c_tsmall f_2[9] temp press
|
||||
thermo 100
|
||||
thermo_style custom step f_1 c_tsmall temp press f_2[9] f_2[4]
|
||||
thermo_modify temp tbig
|
||||
|
||||
compute 10 all property/atom corner1x corner1y corner1z &
|
||||
@ -93,9 +93,9 @@ unfix 3
|
||||
|
||||
change_box all triclinic
|
||||
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 &
|
||||
fix 2 small srd 20 big 1.0 1.0 49894 &
|
||||
search 0.2 cubic warn 0.0001 shift yes 49829 &
|
||||
overlap yes collision noslip tstat yes
|
||||
overlap yes collision noslip tstat yes inside ignore
|
||||
|
||||
#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump2.tri.srd id type &
|
||||
|
||||
812
examples/ASPHERE/tri/log.15Aug23.tri.srd.g++.8
Normal file
@ -0,0 +1,812 @@
|
||||
LAMMPS (2 Aug 2023 - Development - patch_2Aug2023-114-gdad8081d55-modified)
|
||||
WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:537)
|
||||
# Aspherical shear demo - 3d triangle boxes, solvated by SRD particles
|
||||
|
||||
units lj
|
||||
atom_style tri
|
||||
atom_modify first big map yes
|
||||
|
||||
read_data data.tri.srd
|
||||
Reading data file ...
|
||||
orthogonal box = (-8.4373405 -8.4373405 -8.4373405) to (8.4373405 8.4373405 8.4373405)
|
||||
2 by 2 by 2 MPI processor grid
|
||||
reading atoms ...
|
||||
1500 atoms
|
||||
1500 triangles
|
||||
read_data CPU = 0.007 seconds
|
||||
|
||||
# add small particles as hi density lattice
|
||||
|
||||
lattice sc 0.4
|
||||
Lattice spacing in x,y,z = 1.3572088 1.3572088 1.3572088
|
||||
region box block INF INF INF INF INF INF
|
||||
lattice sc 20.0
|
||||
Lattice spacing in x,y,z = 0.36840315 0.36840315 0.36840315
|
||||
create_atoms 2 region box
|
||||
Created 91125 atoms
|
||||
using lattice units in orthogonal box = (-8.4373405 -8.4373405 -8.4373405) to (8.4373405 8.4373405 8.4373405)
|
||||
create_atoms CPU = 0.002 seconds
|
||||
|
||||
group big type 1
|
||||
1500 atoms in group big
|
||||
group small type 2
|
||||
91125 atoms in group small
|
||||
set group small mass 0.01
|
||||
Setting atom values ...
|
||||
91125 settings made for mass
|
||||
|
||||
# delete overlaps
|
||||
# must set 1-2 cutoff to non-zero value
|
||||
|
||||
pair_style lj/cut 1.5
|
||||
pair_coeff 1 1 1.0 1.0
|
||||
pair_coeff 2 2 0.0 1.0 0.0
|
||||
pair_coeff 1 2 0.0 1.0
|
||||
|
||||
delete_atoms overlap 1.5 small big
|
||||
System init for delete_atoms ...
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 1.8
|
||||
ghost atom cutoff = 1.8
|
||||
binsize = 0.9, bins = 19 19 19
|
||||
2 neighbor lists, perpetual/occasional/extra = 1 1 0
|
||||
(1) command delete_atoms, occasional
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
WARNING: Delete_atoms cutoff > minimum neighbor cutoff (../delete_atoms.cpp:312)
|
||||
Deleted 76354 atoms, new total = 16271
|
||||
|
||||
# SRD run
|
||||
|
||||
reset_timestep 0
|
||||
|
||||
velocity small create 1.44 87287 loop geom
|
||||
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule/intra big include big
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
neigh_modify include big
|
||||
|
||||
# no pairwise interactions with small particles
|
||||
|
||||
pair_style tri/lj 3.5
|
||||
pair_coeff 1 1 0.1 1.0
|
||||
pair_coeff 2 2 0.0 1.0 0.0
|
||||
pair_coeff 1 2 0.0 1.0 0.0
|
||||
|
||||
# use fix SRD to push small particles out from inside big ones
|
||||
# if comment out, big particles won't see SRD particles
|
||||
|
||||
timestep 0.001
|
||||
|
||||
fix 1 big rigid/small molecule #langevin 1.0 1.0 0.1 12398
|
||||
create bodies CPU = 0.000 seconds
|
||||
125 rigid bodies with 1500 atoms
|
||||
1.8601881 = max distance from body owner to body atom
|
||||
fix 2 small srd 20 big 1.0 1.0 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip inside ignore
|
||||
|
||||
fix 3 all deform 1 x scale 0.8 y scale 0.8 z scale 0.8
|
||||
|
||||
# diagnostics
|
||||
|
||||
compute tsmall small temp/deform
|
||||
compute tbig big temp
|
||||
variable pebig equal pe*atoms/count(big)
|
||||
variable ebig equal etotal*atoms/count(big)
|
||||
|
||||
compute_modify tbig extra/dof -4500
|
||||
|
||||
compute 1 big erotate/asphere
|
||||
compute 2 all ke
|
||||
compute 3 all pe
|
||||
variable toteng equal (c_1+c_2+c_3)/atoms
|
||||
|
||||
thermo 100
|
||||
thermo_style custom step f_1 c_tsmall temp press f_2[9] f_2[4]
|
||||
thermo_modify temp tbig
|
||||
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:527)
|
||||
|
||||
compute 10 all property/atom corner1x corner1y corner1z corner2x corner2y corner2z corner3x corner3y corner3z
|
||||
|
||||
#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump1.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9]
|
||||
|
||||
run 10000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2
|
||||
|
||||
@Article{Intveld08,
|
||||
author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest},
|
||||
title = {Accurate and Efficient Methods for Modeling Colloidal
|
||||
Mixtures in an Explicit Solvent using Molecular Dynamics},
|
||||
journal = {Comput.\ Phys.\ Commut.},
|
||||
year = 2008,
|
||||
volume = 179,
|
||||
pages = {320--329}
|
||||
}
|
||||
|
||||
@article{Shire2020,
|
||||
author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin},
|
||||
title = {{DEM} Simulations of Polydisperse Media: Efficient Contact
|
||||
Detection Applied to Investigate the Quasi-Static Limit},
|
||||
journal = {Computational Particle Mechanics},
|
||||
year = {2020}
|
||||
@article{Monti2022,
|
||||
author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava,
|
||||
Ishan and Silbert, Leonardo E. and Grest, Gary S.
|
||||
and Lechman, Jeremy B.},
|
||||
title = {Large-scale frictionless jamming with power-law particle
|
||||
size distributions},
|
||||
journal = {Phys. Rev. E},
|
||||
volume = {106}
|
||||
issue = {3}
|
||||
year = {2022}
|
||||
}
|
||||
|
||||
- fix srd command: doi:10.1063/1.3419070
|
||||
|
||||
@Article{Petersen10,
|
||||
author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and
|
||||
G. S. Grest and in 't Veld, P. J. and P. R. Schunk},
|
||||
title = {Mesoscale Hydrodynamics via Stochastic Rotation
|
||||
Dynamics: Comparison with {L}ennard-{J}ones Fluid},
|
||||
journal = {J.~Chem.\ Phys.},
|
||||
year = 2010,
|
||||
volume = 132,
|
||||
pages = 174106
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Using compute temp/deform with inconsistent fix deform remap option (../compute_temp_deform.cpp:71)
|
||||
WARNING: Using fix srd with box deformation but no SRD thermostat (../fix_srd.cpp:405)
|
||||
SRD info:
|
||||
SRD/big particles = 14771 1500
|
||||
big particle diameter max/min = 2.9202881 0.87320391
|
||||
SRD temperature & lamda = 1 0.2
|
||||
SRD max distance & max velocity = 0.8 40
|
||||
SRD grid counts: 17 17 17
|
||||
SRD grid size: request, actual (xyz) = 1, 0.99262829 0.99262829 0.99262829
|
||||
SRD per actual grid cell = -3.9971745
|
||||
SRD viscosity = -34.162587
|
||||
big/SRD mass density ratio = -3.3753691
|
||||
WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2805)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2826)
|
||||
WARNING: Fix srd viscosity < 0.0 due to low SRD density (../fix_srd.cpp:2828)
|
||||
# of rescaled SRD velocities = 0
|
||||
ave/max small velocity = 19.970837 35.150443
|
||||
ave/max big velocity = 0 0
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 3.8
|
||||
ghost atom cutoff = 3.8
|
||||
binsize = 16.874681, bins = 1 1 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair tri/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/multi/newton
|
||||
stencil: half/multi/3d
|
||||
bin: multi
|
||||
Per MPI rank memory allocation (min/avg/max) = 125.9 | 126.4 | 126.7 Mbytes
|
||||
Step f_1 c_tsmall Temp Press f_2[9] f_2[4]
|
||||
0 0 1.4401779 0 -0.15917996 0 0
|
||||
100 0.36662911 1.1475389 0.24585067 1.0290503 1.1382325 18
|
||||
200 0.73133134 1.0558153 0.49986673 0.73932383 1.049638 34
|
||||
300 1.1229361 1.0218621 0.82641583 0.7589689 1.0205369 40
|
||||
400 1.5826262 0.99541508 1.2201293 0.69171726 0.99190857 52
|
||||
500 1.8834563 0.99351667 1.4778822 1.0147794 1.0005581 63
|
||||
600 2.4225372 0.98954834 1.8740966 1.1362893 0.99760042 61
|
||||
700 3.0172772 0.99153625 2.3351502 1.3284877 0.98731355 39
|
||||
800 3.5307913 1.0012521 2.6477224 1.1404922 0.9846605 52
|
||||
900 3.757064 0.99743944 2.7220653 1.4078087 0.97538456 55
|
||||
1000 4.3165268 1.002214 3.055501 1.2252972 0.99123745 63
|
||||
1100 4.2796945 1.0075233 3.1022956 1.1893685 1.0139864 69
|
||||
1200 4.3719315 1.0037271 3.0054509 1.3886162 1.002661 64
|
||||
1300 4.5628012 0.99368316 3.2690604 1.3621012 0.9810568 56
|
||||
1400 4.6954389 0.99365088 3.1940001 1.8485712 0.99571089 71
|
||||
1500 5.0270163 0.99455258 3.4120396 1.5992539 0.98294263 77
|
||||
1600 5.5897797 1.0021621 3.647347 1.7796904 0.98967622 66
|
||||
1700 5.5330194 1.0130853 3.6407996 1.8005429 1.0068955 62
|
||||
1800 5.3606928 1.0090284 3.5863618 1.3308757 1.0214092 59
|
||||
1900 5.6086195 1.0071865 3.7427101 1.5296314 0.99886937 55
|
||||
2000 5.3726474 1.0064207 3.603621 1.9473142 0.99999816 54
|
||||
2100 5.836183 1.0124553 3.7321841 1.7889397 1.0188986 59
|
||||
2200 5.5090061 1.0113832 3.5884963 1.6617781 1.0071583 59
|
||||
2300 5.4011211 1.0095947 3.520406 1.8937582 0.99689983 61
|
||||
2400 5.2219281 1.0053246 3.3699458 1.7231672 0.99899754 59
|
||||
2500 5.7695275 1.0141459 3.6211469 1.7767598 1.0143133 65
|
||||
2600 5.4206253 1.0182828 3.521774 2.0800518 1.0081603 70
|
||||
2700 5.1401099 1.0085209 3.4200563 2.4019836 1.0107652 59
|
||||
2800 6.5420721 1.0159876 4.1996904 1.863842 1.0160738 61
|
||||
2900 5.9082962 1.0106921 3.7223419 2.0586998 1.0073885 67
|
||||
3000 5.6556123 1.0099021 3.6768976 1.921987 1.0068962 76
|
||||
3100 5.2913762 1.0008567 3.4103831 1.9831969 0.99187526 80
|
||||
3200 5.1032361 0.99756662 3.1967156 2.2448433 0.99743574 93
|
||||
3300 5.2622386 1.0024934 3.3325614 2.0078097 1.0047789 86
|
||||
3400 5.1247527 0.99810102 3.1363556 1.8907269 0.98936508 82
|
||||
3500 4.9424333 1.0009344 3.2153968 1.9002728 0.99161849 71
|
||||
3600 5.1243735 1.0037377 3.3117313 2.1267438 1.0078943 65
|
||||
3700 5.5045819 1.0006119 3.5686193 2.3466538 0.99876164 68
|
||||
3800 5.5355384 1.0022639 3.6701457 2.0383269 1.0008683 76
|
||||
3900 6.4915796 1.0137733 4.3225864 2.6996933 1.0064787 79
|
||||
4000 6.6631737 1.0236248 4.3057163 2.6352666 1.0255232 75
|
||||
4100 6.2999507 1.0263876 4.0101385 2.5479077 1.0168303 79
|
||||
4200 6.7902489 1.0247392 4.4616158 2.4926177 1.0191403 91
|
||||
4300 6.505908 1.0182073 4.0675428 2.168754 1.0177101 74
|
||||
4400 5.9554283 1.0115938 3.5787297 2.9258144 1.0133896 72
|
||||
4500 6.2276609 1.0202416 3.8211204 2.5308249 1.0174385 74
|
||||
4600 6.0485727 1.0195757 3.8217434 2.6421797 1.0201441 78
|
||||
4700 6.511063 1.0220764 3.933486 2.8591093 1.0147269 83
|
||||
4800 6.9478172 1.0106414 4.345402 3.3257663 1.00469 85
|
||||
4900 6.7547045 1.0211842 4.1874576 3.6503845 1.022873 94
|
||||
5000 7.2603949 1.0234313 4.5393985 3.4667806 1.0222306 105
|
||||
5100 7.1899652 1.0256566 4.5421834 3.8137207 1.0317242 99
|
||||
5200 7.1960739 1.026746 4.4288606 3.5523675 1.0242269 97
|
||||
5300 7.1294458 1.017883 4.5799808 3.3917274 1.0145317 99
|
||||
5400 6.2810892 1.0291953 4.0109229 2.8604571 1.0289438 97
|
||||
5500 6.15246 1.0288734 3.8714587 3.2760394 1.0210757 89
|
||||
5600 6.5860526 1.0192882 4.0272883 3.3124298 1.0096258 93
|
||||
5700 7.0296116 1.0097293 4.2652722 3.6049788 1.012463 82
|
||||
5800 6.8372302 1.0140065 4.2205065 4.3686183 1.0088542 93
|
||||
5900 7.8887098 1.0090612 4.9724078 4.457317 1.0045137 92
|
||||
6000 10.120663 1.0312443 6.3025192 4.72018 1.0374722 91
|
||||
6100 9.1318265 1.0304199 5.7084296 4.244548 1.0259056 97
|
||||
6200 8.9758903 1.0295285 5.1842704 4.870955 1.0178851 95
|
||||
6300 9.0088218 1.022484 5.3742805 5.1554352 1.0138365 101
|
||||
6400 10.470322 1.0287848 6.4602103 4.5461489 1.0335978 105
|
||||
6500 11.100779 1.0347405 6.9630121 4.9840664 1.0339044 99
|
||||
6600 10.139333 1.0476079 6.4284839 4.5523893 1.0433517 104
|
||||
6700 8.9706766 1.0386262 5.8387485 4.247024 1.0408151 101
|
||||
6800 7.7799532 1.0362651 4.9946283 4.6093924 1.0274763 102
|
||||
6900 8.0866551 1.0337743 4.9942769 4.1679939 1.0454805 102
|
||||
7000 8.0224277 1.0193598 4.9380527 3.9173115 1.0185001 109
|
||||
7100 7.8361001 1.0211143 4.872673 5.3471479 1.024779 110
|
||||
7200 7.8542147 1.0057183 4.8666653 4.668317 0.99980296 122
|
||||
7300 7.9313852 1.0159181 5.0062527 4.1410294 1.0195705 114
|
||||
7400 7.2769846 1.0155245 4.6349779 4.9138895 1.0005886 119
|
||||
7500 7.5974523 1.0196295 4.7918247 4.2525935 1.0211412 124
|
||||
7600 6.7835063 1.0203187 4.2674694 4.9251624 1.0218296 113
|
||||
7700 6.4039017 1.0119494 4.1086667 5.5240525 1.0078246 118
|
||||
7800 7.0715134 1.0149015 4.2450776 4.8796778 1.0164737 125
|
||||
7900 6.3626535 1.02294 4.202778 4.482164 1.0235878 136
|
||||
8000 6.2423869 1.0212553 4.0460303 5.2753307 1.0124884 132
|
||||
8100 6.550891 1.0223318 4.2993545 5.2634985 1.0163244 143
|
||||
8200 6.9122202 1.008347 4.3551124 5.4108909 1.0084913 142
|
||||
8300 6.9104634 1.0103936 4.4622206 5.6762373 0.99559355 143
|
||||
8400 6.4918879 1.0084381 4.1050732 5.8389788 1.0036021 135
|
||||
8500 7.4377218 1.0216662 4.5229841 5.5431311 1.0260799 123
|
||||
8600 7.572198 1.0228381 4.9058913 7.1028185 1.0015164 116
|
||||
8700 8.204675 1.03457 5.2231696 6.4790244 1.0214635 132
|
||||
8800 8.3118914 1.0381333 5.1795799 6.7437722 1.0290086 132
|
||||
8900 8.2559198 1.0268665 5.218352 7.2191395 1.019804 138
|
||||
9000 8.0403128 1.0339414 4.9310394 6.4942331 1.041527 156
|
||||
9100 7.1773079 1.0397062 4.4993688 7.0272109 1.0388012 167
|
||||
9200 7.1793935 1.0373589 4.3481663 7.4894459 1.0078785 157
|
||||
9300 8.3705146 1.0248112 5.1036971 8.2173072 1.010168 156
|
||||
9400 9.4935002 1.0252907 5.7846951 9.7466018 1.028941 170
|
||||
9500 9.5208037 1.0371093 5.9635099 7.6444933 1.022673 165
|
||||
9600 8.9992217 1.0292895 5.6224192 8.8071452 1.0101362 169
|
||||
9700 8.682661 1.0422224 5.3997636 8.6827834 1.0337928 149
|
||||
9800 7.6191562 1.0350948 4.7198842 8.6125595 1.0300395 151
|
||||
9900 8.0910913 1.0319432 4.8843183 7.9013334 1.0272495 167
|
||||
10000 7.4438347 1.0186098 4.7184985 8.999795 0.99762661 177
|
||||
Loop time of 162.325 on 8 procs for 10000 steps with 16271 atoms
|
||||
|
||||
Performance: 5322.658 tau/day, 61.605 timesteps/s, 1.002 Matom-step/s
|
||||
99.3% CPU use with 8 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 33.647 | 64.106 | 79.639 | 169.5 | 39.49
|
||||
Neigh | 0.30808 | 0.44033 | 0.50863 | 9.8 | 0.27
|
||||
Comm | 26.611 | 43.438 | 74.998 | 215.7 | 26.76
|
||||
Output | 0.0072573 | 0.0087791 | 0.0097993 | 0.9 | 0.01
|
||||
Modify | 53.171 | 54.121 | 55.362 | 12.3 | 33.34
|
||||
Other | | 0.2104 | | | 0.13
|
||||
|
||||
Nlocal: 2033.88 ave 2601 max 1413 min
|
||||
Histogram: 1 2 0 0 0 0 2 1 1 1
|
||||
Nghost: 1647.25 ave 1714 max 1617 min
|
||||
Histogram: 4 0 1 0 0 1 1 0 0 1
|
||||
Neighs: 12482.8 ave 17009 max 8679 min
|
||||
Histogram: 1 1 1 0 1 1 2 0 0 1
|
||||
|
||||
Total # of neighbors = 99862
|
||||
Ave neighs/atom = 6.1374224
|
||||
Neighbor list builds = 562
|
||||
Dangerous builds = 0
|
||||
|
||||
#undump 1
|
||||
#undump 2
|
||||
unfix 3
|
||||
|
||||
change_box all triclinic
|
||||
Changing box ...
|
||||
triclinic box = (-6.7498724 -6.7498724 -6.7498724) to (6.7498724 6.7498724 6.7498724) with tilt (0 0 0)
|
||||
|
||||
fix 2 small srd 20 big 1.0 1.0 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip tstat yes inside ignore
|
||||
|
||||
#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump2.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9]
|
||||
|
||||
fix 3 all deform 1 xy erate 0.05 units box remap v
|
||||
|
||||
run 40000
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
SRD info:
|
||||
SRD/big particles = 14771 1500
|
||||
big particle diameter max/min = 2.9202881 0.87320391
|
||||
SRD temperature & lamda = 1 0.2
|
||||
SRD max distance & max velocity = 0.8 40
|
||||
SRD grid counts: 13 13 13
|
||||
SRD grid size: request, actual (xyz) = 1, 1.0384419 1.0384419 1.0384419
|
||||
SRD per actual grid cell = -2.775698
|
||||
SRD viscosity = -12.180602
|
||||
big/SRD mass density ratio = -5.5653033
|
||||
WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2805)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2826)
|
||||
WARNING: Fix srd viscosity < 0.0 due to low SRD density (../fix_srd.cpp:2828)
|
||||
# of rescaled SRD velocities = 1
|
||||
ave/max small velocity = 16.14994 40
|
||||
ave/max big velocity = 1.6952661 5.2200074
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 3.8
|
||||
ghost atom cutoff = 3.8
|
||||
binsize = 13.499745, bins = 1 1 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair tri/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/multi/newton/tri
|
||||
stencil: half/multi/3d/tri
|
||||
bin: multi
|
||||
Per MPI rank memory allocation (min/avg/max) = 106.9 | 107.5 | 107.7 Mbytes
|
||||
Step f_1 c_tsmall Temp Press f_2[9] f_2[4]
|
||||
10000 7.4438347 1.0189789 4.7184481 7.9505614 0 0
|
||||
10100 7.0770142 1.0021471 4.4491455 6.606701 1 141
|
||||
10200 6.7628072 1.002308 4.152988 8.5190386 1 125
|
||||
10300 6.5333319 1.0007472 4.1295404 8.2341747 1 109
|
||||
10400 6.3237519 1.0024029 3.8636034 9.4058128 1 95
|
||||
10500 6.6411054 1.0026261 4.2975997 7.6122304 1 82
|
||||
10600 5.7470775 1.0004827 3.7959947 7.3091777 1 67
|
||||
10700 5.9744919 1.0014977 3.6885649 7.5517197 1 59
|
||||
10800 5.8028731 1.0029627 3.7553961 6.2787087 1 49
|
||||
10900 5.3755286 1.0019318 3.5334739 7.1318348 1 41
|
||||
11000 5.3915962 1.001463 3.483172 7.6362496 1 40
|
||||
11100 5.8683672 1.0022459 3.6697589 6.9711866 1 33
|
||||
11200 5.4351801 0.99956703 3.4548447 7.0745257 1 29
|
||||
11300 4.9397513 1.0008287 3.1990325 6.0917337 1 27
|
||||
11400 4.9159845 1.0017862 3.0005677 7.653817 1 26
|
||||
11500 4.9243103 1.0013135 3.1799841 7.744414 1 23
|
||||
11600 5.2036357 1.0017984 3.2963749 7.540477 1 22
|
||||
11700 4.8991892 1.0020757 3.1773032 8.7218471 1 27
|
||||
11800 4.9489399 1.003438 3.1679764 7.1605486 1 26
|
||||
11900 4.82398 1.0019946 3.1939566 7.1397869 1 21
|
||||
12000 4.3531411 1.000532 2.8321416 7.6672501 1 23
|
||||
12100 4.8226081 1.0018898 3.0382137 6.8343432 1 25
|
||||
12200 4.7456418 1.0032116 2.9186038 7.3067818 1 20
|
||||
12300 4.4280468 1.0005857 2.734593 8.0365684 1 22
|
||||
12400 4.7311239 1.0000982 2.8898839 7.9231831 1 22
|
||||
12500 4.7261054 1.0016127 2.9090517 7.6085854 1 24
|
||||
12600 4.7719025 1.0016702 2.9736761 7.6101796 1 26
|
||||
12700 4.386248 1.001394 2.8508378 6.4765102 1 28
|
||||
12800 4.3313538 1.0019737 2.6258221 6.3164681 1 19
|
||||
12900 4.2219861 1.0007469 2.5345699 7.0901077 1 22
|
||||
13000 4.1775643 1.0011891 2.5807017 7.3579938 1 25
|
||||
13100 4.3060837 1.0008671 2.5974066 6.9301328 1 22
|
||||
13200 4.3529062 0.99996469 2.7571632 6.7806287 1 21
|
||||
13300 4.2178709 1.000673 2.7819091 7.6449064 1 18
|
||||
13400 4.2714169 1.0021294 2.7280794 8.0986691 1 18
|
||||
13500 4.3430969 1.0037732 2.6768429 8.1267941 1 18
|
||||
13600 4.3664374 1.0016083 2.6470186 6.2797727 1 20
|
||||
13700 4.4904769 1.0008993 2.7885718 7.7410193 1 22
|
||||
13800 4.2966193 1.001532 2.73862 7.9651302 1 21
|
||||
13900 4.4003185 1.0009984 2.7484129 8.7160439 1 24
|
||||
14000 4.5948292 1.0011748 2.9051777 7.842121 1 22
|
||||
14100 4.6901122 1.0001265 2.9404111 8.9953816 1 20
|
||||
14200 4.8517518 0.99998743 2.9647625 6.6450509 1 22
|
||||
14300 4.889628 1.0018051 3.0891097 7.2671824 1 20
|
||||
14400 4.578862 1.0010629 2.8239776 6.1317183 1 23
|
||||
14500 4.0865406 1.0013917 2.5119661 6.864665 1 19
|
||||
14600 4.30688 1.0009041 2.6817814 6.9007433 1 18
|
||||
14700 4.1295726 1.002342 2.6032093 7.1441648 1 15
|
||||
14800 4.2176021 1.0015157 2.7332903 6.8394683 1 16
|
||||
14900 4.2012664 0.99986345 2.6498409 7.4568241 1 15
|
||||
15000 4.6124269 1.0014751 2.9584178 7.9341875 1 16
|
||||
15100 4.947327 1.0010615 3.0784409 7.6241305 1 21
|
||||
15200 5.253281 1.002095 3.3093754 8.1872718 1 25
|
||||
15300 5.2642369 1.0017799 3.1511136 7.4668389 1 25
|
||||
15400 5.1967916 1.0029407 3.247548 8.0840111 1 23
|
||||
15500 5.7465412 1.001896 3.468834 9.5990471 1 15
|
||||
15600 6.2245772 1.0021086 3.6127689 7.8242016 1 19
|
||||
15700 5.5626191 0.99984979 3.3893723 7.8124588 1 20
|
||||
15800 5.5945727 1.0010291 3.3442448 7.0116922 1 17
|
||||
15900 5.4450219 1.0006248 3.3132381 8.4803413 1 15
|
||||
16000 5.7800459 1.001449 3.5002534 8.7989456 1 19
|
||||
16100 6.1168718 1.0008109 3.8081142 8.0119729 1 18
|
||||
16200 5.4901649 1.0020643 3.3673653 7.3483134 1 17
|
||||
16300 5.4051694 1.0015652 3.3560012 7.4641983 1 19
|
||||
16400 5.4237612 1.0012686 3.3816406 7.3845086 1 14
|
||||
16500 5.1935593 1.001754 3.3340381 7.8607712 1 16
|
||||
16600 5.539343 1.0021073 3.4164309 8.1541097 1 12
|
||||
16700 5.8922923 1.0013792 3.553426 7.5220576 1 14
|
||||
16800 5.956937 1.0005959 3.7630589 8.7417987 1 13
|
||||
16900 5.469721 1.0016219 3.5531223 8.6721994 1 13
|
||||
17000 5.3110154 1.001142 3.4167244 7.4644182 1 15
|
||||
17100 5.9226035 0.99918238 4.0244287 6.5172028 1 16
|
||||
17200 5.4897042 0.99981565 3.4350691 5.6840394 1 20
|
||||
17300 5.4302636 1.0021571 3.421473 6.4317025 1 21
|
||||
17400 5.5559131 1.0013807 3.4951403 6.874191 1 24
|
||||
17500 5.4068006 1.0010448 3.4506835 7.7069504 1 22
|
||||
17600 4.9283792 1.0007628 3.1736308 7.3098058 1 20
|
||||
17700 4.9319722 0.99935896 3.0956257 8.2120111 1 15
|
||||
17800 4.6842391 1.00037 2.9602433 7.4116352 1 17
|
||||
17900 4.7714682 1.0009332 2.9666778 7.5925131 1 17
|
||||
18000 4.7233188 1.0035687 3.0991778 7.1636357 1 10
|
||||
18100 4.6487958 1.0020255 3.10781 6.8468658 1 12
|
||||
18200 4.6284129 1.0012617 3.089724 6.3082275 1 13
|
||||
18300 4.7136404 0.99962415 3.1261978 7.3359556 1 15
|
||||
18400 5.0367681 1.0011016 3.2413493 8.3910633 1 14
|
||||
18500 4.9658104 1.0025407 3.2420827 7.4701216 1 17
|
||||
18600 4.6100059 1.0014508 3.0216884 6.553483 1 17
|
||||
18700 4.3246452 1.0016721 2.7810363 6.7450293 1 19
|
||||
18800 4.9415788 1.0012406 3.1661907 7.5544034 1 18
|
||||
18900 5.3930915 1.000138 3.2557456 7.350955 1 21
|
||||
19000 5.1938599 1.0007364 3.2398733 6.5397956 1 22
|
||||
19100 5.4433048 1.0019191 3.2699245 8.3625772 1 22
|
||||
19200 6.1303261 1.0004005 3.7823203 8.0537369 1 22
|
||||
19300 5.5762518 1.0008117 3.5689121 8.3714373 1 22
|
||||
19400 5.1316743 0.9999834 3.099381 7.405287 1 23
|
||||
19500 5.2064799 1.0012007 3.3059455 7.3499127 1 25
|
||||
19600 5.1650099 1.0023314 3.3759492 7.3637616 1 21
|
||||
19700 5.8316278 1.0023317 3.601564 7.153887 1 19
|
||||
19800 5.6435147 1.0010657 3.4967581 6.8899334 1 21
|
||||
19900 5.4071193 0.99961357 3.4977894 6.1068438 1 20
|
||||
20000 5.5058495 1.000982 3.5185057 8.5657603 1 19
|
||||
20100 5.6551271 1.0025852 3.5672369 7.8242273 1 20
|
||||
20200 5.7196886 1.002283 3.6010925 7.1449072 1 22
|
||||
20300 5.5593553 1.0009987 3.4363398 8.4141755 1 21
|
||||
20400 5.5550247 1.001081 3.3950874 8.0222131 1 20
|
||||
20500 5.4510415 0.99997273 3.5505093 7.5243655 1 18
|
||||
20600 5.8014064 1.0007611 3.8084579 7.6583499 1 18
|
||||
20700 5.7337315 1.0020309 3.7973684 8.7376766 1 17
|
||||
20800 5.2512898 0.99901254 3.5027763 7.8902791 1 14
|
||||
20900 5.3245034 1.0014504 3.3354615 6.7030716 1 17
|
||||
21000 5.2071731 1.0020459 3.3881369 5.8616999 1 20
|
||||
21100 5.3187535 1.0010762 3.2845672 8.1422146 1 21
|
||||
21200 5.5298545 0.99942313 3.4393978 7.1183144 1 22
|
||||
21300 5.8430744 1.0008652 3.719408 7.8522038 1 20
|
||||
21400 5.8190457 1.0017046 3.5624252 7.8150165 1 20
|
||||
21500 6.004585 1.0035276 3.9161914 7.7719377 1 21
|
||||
21600 6.7202635 0.99970072 3.9642141 8.7934294 1 18
|
||||
21700 6.8590346 1.0007883 4.4285217 8.9014638 1 20
|
||||
21800 6.627638 1.0012117 4.1154082 8.3153026 1 22
|
||||
21900 7.8281047 1.0008299 4.8842343 8.4016227 1 20
|
||||
22000 7.200038 1.0014681 4.4141419 9.4091956 1 18
|
||||
22100 7.7442011 1.0018051 4.7850371 8.9885489 1 15
|
||||
22200 7.4770203 1.0033558 4.7512643 8.4898148 1 17
|
||||
22300 8.1080801 1.0000019 5.2725185 9.2314625 1 14
|
||||
22400 7.8068311 1.0020672 4.9055683 8.4064748 1 12
|
||||
22500 7.4594636 1.0008427 4.6586396 8.5102986 1 11
|
||||
22600 6.9380609 1.0024634 4.2435619 10.395118 1 16
|
||||
22700 6.9338066 1.001056 4.3436179 7.9126284 1 18
|
||||
22800 6.8049493 1.0020052 4.1443407 7.8228868 1 18
|
||||
22900 6.2280158 1.0021474 3.7695343 7.3179647 1 20
|
||||
23000 5.649403 1.0017128 3.5941976 7.2964709 1 19
|
||||
23100 5.3203116 1.001912 3.3807399 6.6454551 1 15
|
||||
23200 5.8172882 1.0005742 3.6625896 8.4256312 1 15
|
||||
23300 5.9647182 1.0015466 3.9106019 8.3303303 1 14
|
||||
23400 5.9784055 1.0034542 3.7229235 7.7934273 1 14
|
||||
23500 5.377627 1.00192 3.5481778 6.8195124 1 17
|
||||
23600 5.4807136 1.0014662 3.563123 7.6356376 1 18
|
||||
23700 5.8896329 1.0013553 3.7990694 8.5513408 1 13
|
||||
23800 6.3463707 0.9999403 3.9609397 8.5741923 1 11
|
||||
23900 6.656669 1.0014998 4.1993183 9.0862996 1 13
|
||||
24000 7.583723 1.0025057 4.7628652 7.5007245 1 20
|
||||
24100 6.9868359 1.0014089 4.4369841 7.692833 1 25
|
||||
24200 7.1966062 1.0013149 4.4384528 9.5264821 1 18
|
||||
24300 6.7765706 1.0007065 4.3500477 9.4974154 1 16
|
||||
24400 7.0853466 1.0013246 4.409163 9.2215823 1 17
|
||||
24500 6.9603823 1.0004247 4.4866051 7.7870058 1 20
|
||||
24600 6.9208291 0.99953329 4.2298144 6.5732392 1 21
|
||||
24700 6.5005518 1.0026848 4.0003505 7.8094715 1 22
|
||||
24800 5.8421948 1.0012055 3.6686768 7.6078157 1 26
|
||||
24900 5.8410604 1.0023428 3.746177 6.8971309 1 22
|
||||
25000 5.8728511 1.0001747 3.7170134 7.4456816 1 19
|
||||
25100 6.0217168 1.000624 3.7756108 6.6542452 1 20
|
||||
25200 6.1939015 1.0017861 3.8943084 9.395821 1 25
|
||||
25300 6.161998 1.0010373 3.9255122 6.2228884 1 28
|
||||
25400 5.5850406 1.0018505 3.5129832 7.2551309 1 24
|
||||
25500 6.0286276 1.0009028 3.8580887 6.8065265 1 24
|
||||
25600 5.6262228 1.0005097 3.4574446 7.5061246 1 21
|
||||
25700 6.1348187 1.0009828 3.8073512 7.4818375 1 17
|
||||
25800 6.09781 1.0026426 3.9585383 9.0915939 1 21
|
||||
25900 6.2673667 1.0002269 3.8182813 9.2134822 1 21
|
||||
26000 6.6001776 1.0020444 4.041386 8.0403555 1 18
|
||||
26100 6.3063025 1.0016633 3.8649839 8.8149734 1 19
|
||||
26200 6.0046983 1.002332 3.5380766 8.6145656 1 17
|
||||
26300 5.9627788 1.0005401 3.56864 6.7821213 1 15
|
||||
26400 5.0547314 0.9998295 3.2106781 9.2935351 1 15
|
||||
26500 5.256781 1.0013131 3.2946631 8.8590275 1 15
|
||||
26600 5.6250355 1.0023929 3.5243033 8.8985058 1 17
|
||||
26700 6.0197165 1.0018323 3.7973947 7.3093402 1 17
|
||||
26800 5.4556541 1.0015309 3.4295107 8.2342049 1 18
|
||||
26900 5.420428 1.0024996 3.4374201 7.1444636 1 16
|
||||
27000 6.165624 1.0019174 3.8726016 8.6588275 1 20
|
||||
27100 6.7131697 1.0006541 4.266264 8.7063389 1 24
|
||||
27200 6.4855163 1.0016139 4.2029778 7.667611 1 29
|
||||
27300 6.0525608 1.000478 3.9169723 7.4515279 1 25
|
||||
27400 6.1426194 1.0014522 3.9176108 6.8689671 1 24
|
||||
27500 6.5981349 1.0001143 4.0620686 8.6804552 1 27
|
||||
27600 6.7827138 1.0016694 4.2764286 9.3912843 1 21
|
||||
27700 6.6368902 1.0025149 4.1452128 9.1814523 1 24
|
||||
27800 6.9791025 1.0019486 4.3989933 7.9446882 1 24
|
||||
27900 6.617142 1.0015736 4.360571 9.3732108 1 26
|
||||
28000 7.2818263 1.0014101 4.6041512 8.2398587 1 28
|
||||
28100 7.2543709 1.0007625 4.5724787 7.7373488 1 22
|
||||
28200 7.0631847 1.0023922 4.4021705 8.3290554 1 29
|
||||
28300 7.2999952 1.0012593 4.4655563 8.612666 1 27
|
||||
28400 7.4124538 1.0014043 4.5011335 8.379391 1 29
|
||||
28500 7.0350937 1.0011392 4.3528091 7.8167375 1 24
|
||||
28600 7.9659642 1.0031684 4.8732467 8.0661929 1 30
|
||||
28700 7.2865919 1.0010958 4.6650146 8.0325989 1 32
|
||||
28800 7.7039529 1.0027912 4.8299888 9.5471747 1 30
|
||||
28900 8.3288847 1.0012438 5.0785288 8.8964877 1 31
|
||||
29000 7.9348665 1.0021794 4.9393968 9.5531767 1 31
|
||||
29100 8.2473389 1.0013795 4.9890359 9.7697184 1 29
|
||||
29200 8.6383362 1.0018356 4.9856954 7.6402719 1 25
|
||||
29300 8.2504592 1.0011048 4.9631793 7.9466724 1 24
|
||||
29400 8.0502922 1.0010516 5.2521065 8.4515028 1 26
|
||||
29500 7.9475896 1.0012951 4.8584644 9.1225463 1 19
|
||||
29600 8.5641641 1.0016228 5.4361335 9.2045399 1 23
|
||||
29700 8.9932021 1.0011848 5.5727205 8.6045729 1 23
|
||||
29800 8.0320178 1.0019073 5.2837013 8.9335413 1 22
|
||||
29900 8.2676522 1.0012734 5.2213798 8.8966896 1 24
|
||||
30000 9.1848984 1.001747 5.9147628 12.096129 1 27
|
||||
30100 10.184519 0.99977427 6.4260136 11.140491 1 27
|
||||
30200 9.271472 1.0023983 6.0252189 9.6954338 1 30
|
||||
30300 9.0751572 1.000851 5.6010295 9.734426 1 28
|
||||
30400 9.4581261 1.0018449 5.6987258 9.70456 1 34
|
||||
30500 9.1574751 0.99944001 5.582217 9.300318 1 27
|
||||
30600 8.619312 1.001388 5.3503985 8.2759155 1 26
|
||||
30700 7.9370031 1.0026674 5.0702831 8.5368014 1 28
|
||||
30800 7.9221619 1.0019077 5.1278637 11.046922 1 26
|
||||
30900 9.9722884 1.0025903 6.4055506 10.167311 1 25
|
||||
31000 8.8648667 0.99962676 5.4777514 10.142102 1 21
|
||||
31100 8.576344 1.000906 5.3216342 8.7984921 1 18
|
||||
31200 7.8480974 1.0010341 4.9584917 9.0696437 1 16
|
||||
31300 8.3536183 1.0005758 5.208516 9.7971514 1 15
|
||||
31400 8.5301933 1.0007603 5.2241536 9.0257241 1 17
|
||||
31500 8.5196226 1.0018215 5.0576064 8.8847294 1 19
|
||||
31600 8.1470823 1.0023147 4.9182956 9.0205413 1 20
|
||||
31700 8.1475888 1.0005764 5.1814113 9.0603162 1 16
|
||||
31800 7.8629717 1.0014194 4.9221218 9.366291 1 16
|
||||
31900 7.7206559 1.0021082 4.9167636 7.4136735 1 16
|
||||
32000 7.5152809 1.0004752 4.6330638 8.830959 1 16
|
||||
32100 8.2693974 1.0011751 4.9094804 9.427636 1 13
|
||||
32200 8.3067661 0.9997006 4.9036865 9.0374633 1 17
|
||||
32300 7.2068514 1.0007866 4.3580755 8.6445065 1 17
|
||||
32400 6.885063 1.0011887 4.1528011 8.1199454 1 16
|
||||
32500 6.9147014 1.0020825 4.160405 7.5398034 1 19
|
||||
32600 6.8809668 1.000971 4.3312782 8.2157688 1 16
|
||||
32700 6.4818892 1.0000885 3.9433899 7.309605 1 22
|
||||
32800 6.6875555 1.0018674 4.1017504 7.2327183 1 22
|
||||
32900 7.6118502 0.99975736 4.4498951 8.5072395 1 19
|
||||
33000 7.7576909 1.0022061 4.7239551 9.2132467 1 22
|
||||
33100 7.8616235 1.000482 5.0031322 9.349805 1 20
|
||||
33200 8.2620563 1.0015059 5.2482188 10.286446 1 17
|
||||
33300 8.0217099 1.0015466 5.1166876 9.1381844 1 20
|
||||
33400 7.6565746 1.0024855 4.7594208 9.2646824 1 22
|
||||
33500 7.9633887 1.0010334 4.6754116 9.1085184 1 23
|
||||
33600 7.9566834 1.0024542 4.6712679 9.2046594 1 25
|
||||
33700 8.2639384 1.0003021 5.1326892 8.0930215 1 24
|
||||
33800 8.5648917 1.0000947 5.2099387 8.8127486 1 21
|
||||
33900 8.3593557 1.0002488 5.1291354 8.5938391 1 25
|
||||
34000 8.1922068 1.0030011 5.1441189 7.1529563 1 24
|
||||
34100 8.4260308 1.0004639 5.5876122 9.0450303 1 28
|
||||
34200 8.3014654 1.0002204 5.1964772 8.4920822 1 33
|
||||
34300 7.4736545 1.0010306 4.7932244 7.8442244 1 30
|
||||
34400 7.0023126 1.0024002 4.5665168 8.4702188 1 29
|
||||
34500 7.3797703 1.000813 4.7224014 8.4098954 1 30
|
||||
34600 7.7158761 0.99973161 4.7441628 8.5818592 1 29
|
||||
34700 7.6135895 1.0015768 4.6612844 7.2195952 1 28
|
||||
34800 7.0458078 0.99992638 4.2805357 7.4162305 1 32
|
||||
34900 7.6190708 1.0007146 4.8064968 8.2709405 1 27
|
||||
35000 7.4614294 1.0006051 4.7807207 7.7137359 1 28
|
||||
35100 7.7008336 1.0008263 4.6823621 7.0208513 1 26
|
||||
35200 8.1510766 1.000271 5.1781834 7.3231692 1 24
|
||||
35300 7.5106275 1.0010438 4.6988185 8.9418343 1 25
|
||||
35400 7.8116652 1.0009688 4.8622216 7.4624002 1 17
|
||||
35500 7.2159785 1.0027484 4.543984 8.3177043 1 21
|
||||
35600 7.6978875 1.0004834 4.7021203 8.3706905 1 20
|
||||
35700 7.7827655 1.0019919 4.775879 8.6083292 1 15
|
||||
35800 7.8433537 1.001844 4.7506574 7.3250009 1 15
|
||||
35900 7.9456497 1.0004336 4.7925775 7.9824359 1 18
|
||||
36000 8.1044513 1.0022261 5.1213755 9.211699 1 16
|
||||
36100 7.6657532 1.0025661 4.751804 8.9770412 1 19
|
||||
36200 7.909323 1.0035462 4.8435293 10.232493 1 21
|
||||
36300 8.4188244 1.0016775 5.4337725 9.2060079 1 24
|
||||
36400 8.7352689 1.0011274 5.6313351 8.6202832 1 24
|
||||
36500 8.3459273 1.0005659 5.187336 6.9333716 1 21
|
||||
36600 7.7118105 1.0018769 4.9293347 8.2789615 1 14
|
||||
36700 7.8069879 1.0014021 4.7782709 8.4841233 1 15
|
||||
36800 7.862085 1.0005342 4.8680692 8.1055023 1 16
|
||||
36900 7.9469362 1.0027815 4.9339095 9.157722 1 16
|
||||
37000 7.9085375 1.0024851 5.0921374 8.9374239 1 16
|
||||
37100 8.9464869 1.0005734 5.6837772 8.806998 1 16
|
||||
37200 8.1482632 1.0021175 5.1266453 8.5772094 1 18
|
||||
37300 7.7958072 1.0026336 4.788431 8.3233372 1 19
|
||||
37400 7.3647655 1.0015482 4.4786134 9.6606112 1 23
|
||||
37500 7.3071882 1.0003912 4.681549 8.6319438 1 17
|
||||
37600 7.8672509 1.0000478 4.7981944 8.3051478 1 14
|
||||
37700 7.9306696 0.99923102 4.9316544 9.3672856 1 15
|
||||
37800 7.7397949 0.99948557 5.1168552 8.5978047 1 17
|
||||
37900 7.9121039 1.0020122 4.9866234 7.640888 1 14
|
||||
38000 7.433451 1.0007901 4.6254894 8.0853539 1 14
|
||||
38100 7.4636908 1.0021552 4.8472833 8.1975615 1 10
|
||||
38200 7.4453077 1.0010305 4.6910943 7.8192603 1 13
|
||||
38300 7.0488536 1.0012587 4.5490462 8.190036 1 16
|
||||
38400 8.0686748 1.0016782 5.0747029 7.7242015 1 15
|
||||
38500 7.9575875 1.0007137 4.8361776 8.05268 1 15
|
||||
38600 7.6690498 1.0027522 4.8823286 9.1926516 1 20
|
||||
38700 7.1567 1.002374 4.5600354 10.098089 1 19
|
||||
38800 6.9100518 1.0008695 4.4101446 7.8832032 1 19
|
||||
38900 6.8021882 1.0017647 4.1844125 8.1858761 1 21
|
||||
39000 8.3996464 1.0010263 4.8183813 8.0997387 1 16
|
||||
39100 8.4533834 1.0021643 5.074254 11.291904 1 19
|
||||
39200 8.2406701 1.002062 5.0117425 8.778159 1 24
|
||||
39300 8.3134114 1.0008218 5.0067136 7.9871787 1 22
|
||||
39400 7.4307571 1.0014205 4.5858283 8.8596594 1 25
|
||||
39500 7.1146821 1.0016367 4.5021057 7.4890018 1 22
|
||||
39600 8.0048978 0.99992107 4.9235747 7.8770845 1 24
|
||||
39700 8.070853 1.0029024 5.0842957 9.020664 1 21
|
||||
39800 7.6939108 1.0012543 4.8986595 8.3306129 1 20
|
||||
39900 7.2915444 1.00267 4.5038291 8.3844384 1 20
|
||||
40000 7.3023994 1.0020441 4.4960911 8.1023709 1 18
|
||||
40100 7.0221648 1.0033695 4.6374149 8.3756822 1 24
|
||||
40200 7.4114756 1.0019246 4.6733475 7.6547258 1 23
|
||||
40300 7.5323108 1.0005472 4.8284493 8.2820085 1 26
|
||||
40400 7.3890772 1.0010491 4.6599273 8.9203575 1 19
|
||||
40500 7.5786764 1.0016114 4.8166885 8.6760107 1 25
|
||||
40600 8.165763 1.0006961 5.1488995 7.9321524 1 22
|
||||
40700 8.1277597 0.99933464 5.0441567 10.069551 1 16
|
||||
40800 8.1050904 1.0024705 5.4408599 8.3244459 1 21
|
||||
40900 7.805318 1.0022992 4.9965408 9.7193723 1 21
|
||||
41000 9.0130932 1.0006842 5.7931112 6.1646073 1 20
|
||||
41100 8.0387975 1.0017359 5.3355655 9.6123191 1 21
|
||||
41200 8.4484723 1.0014151 5.4461007 8.5146504 1 27
|
||||
41300 8.6181909 1.0007562 5.2963876 9.1122306 1 30
|
||||
41400 9.6762899 1.0010931 5.950456 9.2851025 1 25
|
||||
41500 9.9414226 1.0016186 6.1433384 10.741453 1 24
|
||||
41600 9.3348435 1.0003483 5.9291766 11.460717 1 20
|
||||
41700 9.6125587 1.0013661 5.8530052 9.2105722 1 19
|
||||
41800 11.383056 1.0032034 7.1988684 10.312945 1 22
|
||||
41900 10.884524 1.0034888 6.9126707 10.775457 1 20
|
||||
42000 11.071218 1.0026753 7.0004189 10.740627 1 20
|
||||
42100 11.054304 1.0008347 6.9602414 8.9885498 1 22
|
||||
42200 22.478691 1.0020466 14.997099 12.72513 1 19
|
||||
42300 18.303508 1.0027626 11.336523 12.638769 1 18
|
||||
42400 15.998712 1.0030312 9.4092725 11.070501 1 24
|
||||
42500 15.034488 1.0024472 9.3543751 11.48052 1 28
|
||||
42600 14.538257 1.0033153 9.2523745 10.909576 1 27
|
||||
42700 13.986613 1.001458 8.5544184 10.765136 1 29
|
||||
42800 13.240256 1.0027899 8.2014429 10.506497 1 32
|
||||
42900 12.784336 1.0001406 8.0823431 12.258209 1 33
|
||||
43000 13.374145 1.0012996 8.4207155 10.32817 1 31
|
||||
43100 13.142334 1.0022503 8.5908808 10.152205 1 32
|
||||
43200 12.669284 1.0018944 7.8511966 10.580104 1 32
|
||||
43300 13.155032 1.001144 8.0337768 10.6652 1 39
|
||||
43400 12.155928 1.0019472 7.5886584 11.234772 1 35
|
||||
43500 12.385603 1.0007639 7.8865245 9.3868914 1 32
|
||||
43600 12.236179 1.0027456 7.7521353 10.456701 1 42
|
||||
43700 11.49535 1.0008758 7.3633144 8.8490079 1 40
|
||||
43800 11.469157 1.0015845 7.0035577 10.594522 1 41
|
||||
43900 11.228266 1.0013014 7.0137223 8.0653711 1 38
|
||||
44000 10.56742 1.0016631 6.6908938 8.1094154 1 35
|
||||
44100 9.8964699 1.0008351 6.3550438 8.6578181 1 36
|
||||
44200 9.041539 1.0019541 5.6721401 8.6518043 1 38
|
||||
44300 9.0767434 1.0034191 5.7446596 8.3838528 1 38
|
||||
44400 9.2299608 1.0019526 5.7117964 8.3106491 1 37
|
||||
44500 9.458981 1.0030409 5.7612138 7.7679755 1 37
|
||||
44600 8.9611997 1.0014848 5.6490756 6.9224078 1 37
|
||||
44700 8.0853184 1.0018894 5.2288749 8.0910912 1 32
|
||||
44800 7.9999755 1.0015853 4.8088312 7.1854304 1 30
|
||||
44900 7.6598023 1.0009751 4.6690664 7.1999858 1 28
|
||||
45000 7.4939315 1.0010307 4.8119666 7.9615769 1 26
|
||||
45100 7.4690079 0.99913423 4.9704428 7.6026835 1 32
|
||||
45200 7.7001199 1.001626 4.9315953 7.4926686 1 25
|
||||
45300 7.8794405 1.0011648 4.8624857 8.0804457 1 26
|
||||
45400 7.493909 1.0016257 4.7631808 8.0330626 1 26
|
||||
45500 7.5963141 1.0005825 4.7220659 7.0971298 1 23
|
||||
45600 7.9028612 1.0017008 4.9561022 8.440428 1 23
|
||||
45700 7.2285584 1.0006033 4.5521456 9.385579 1 23
|
||||
45800 7.5687284 1.0024318 4.8557498 8.3052658 1 23
|
||||
45900 7.8938604 1.0013937 5.1393944 5.5323667 1 26
|
||||
46000 8.318466 1.0020803 5.4761811 8.2227801 1 25
|
||||
46100 7.9169512 1.0024598 5.0406355 8.64365 1 27
|
||||
46200 7.5535458 1.0016318 4.8010133 9.370726 1 26
|
||||
46300 7.8926896 1.0001525 5.18463 7.9830196 1 27
|
||||
46400 7.487145 1.002671 4.7718312 8.300134 1 29
|
||||
46500 7.3564658 1.0006114 4.6762189 7.34947 1 26
|
||||
46600 7.2261291 1.0005569 4.4751221 6.5847138 1 27
|
||||
46700 7.2943203 1.0020164 4.3335327 7.7296507 1 25
|
||||
46800 8.5849411 1.0014634 5.4501531 9.0933014 1 25
|
||||
46900 10.176752 1.0023799 6.0456779 9.4050423 1 16
|
||||
47000 9.1913098 1.0029076 5.7577256 9.1826215 1 22
|
||||
47100 9.5479771 1.0022102 6.1100973 8.9440056 1 28
|
||||
47200 9.9944172 1.0004924 6.3649417 9.1507264 1 25
|
||||
47300 9.3543283 1.0013246 6.0873147 10.41657 1 24
|
||||
47400 8.594101 1.0020068 5.6864295 9.2388304 1 24
|
||||
47500 9.3191964 1.002411 6.0537511 9.3506828 1 23
|
||||
47600 8.1615734 1.001364 5.3757905 10.303962 1 30
|
||||
47700 8.3615046 1.0003075 5.2727936 9.3162209 1 32
|
||||
47800 8.3566467 1.0026031 5.4379524 7.7644422 1 33
|
||||
47900 8.4062556 1.0006471 5.3098736 8.0181121 1 33
|
||||
48000 8.2233307 1.0012304 4.9650027 9.2644288 1 34
|
||||
48100 8.4495256 1.000088 4.9940422 10.01023 1 27
|
||||
48200 8.8068097 1.0014275 5.4732649 8.410093 1 31
|
||||
48300 8.0008187 1.0017459 4.7732764 9.25726 1 27
|
||||
48400 7.7242529 1.0026909 4.9084505 8.7147295 1 30
|
||||
48500 8.3752816 1.001333 5.1071228 8.2267308 1 32
|
||||
48600 9.0777805 1.0019328 5.7331841 9.6679383 1 29
|
||||
48700 9.3623061 1.0001767 5.7117062 8.396895 1 25
|
||||
48800 8.1186637 1.0013185 5.2697427 8.6058372 1 27
|
||||
48900 7.3685497 1.0007173 4.6097553 7.8047228 1 24
|
||||
49000 7.1661421 1.0023152 4.5389038 8.8759552 1 22
|
||||
49100 6.9857144 1.0016394 4.6489319 8.2022359 1 24
|
||||
49200 6.7160336 1.0018413 4.2488082 8.3393245 1 25
|
||||
49300 7.9703755 1.0010628 5.2328567 7.968278 1 28
|
||||
49400 8.2628465 1.0010877 5.2292977 8.0196533 1 27
|
||||
49500 8.1436558 1.0015175 5.0344712 8.0712037 1 30
|
||||
49600 8.5182498 1.0021589 5.1029028 8.6869789 1 28
|
||||
49700 8.3604444 1.0015016 5.0333696 9.4861656 1 25
|
||||
49800 7.336335 1.0020055 4.6365173 8.7210022 1 30
|
||||
49900 7.432996 1.0016415 4.7090587 8.7033033 1 29
|
||||
50000 7.4937053 1.001014 4.7212573 9.0890363 1 29
|
||||
Loop time of 999.576 on 8 procs for 40000 steps with 16271 atoms
|
||||
|
||||
Performance: 3457.466 tau/day, 40.017 timesteps/s, 651.116 katom-step/s
|
||||
99.3% CPU use with 8 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 293.48 | 403.7 | 545.29 | 357.5 | 40.39
|
||||
Neigh | 2.4176 | 3.2721 | 3.8303 | 25.2 | 0.33
|
||||
Comm | 163.58 | 305.88 | 419.83 | 416.7 | 30.60
|
||||
Output | 0.032483 | 0.034794 | 0.040514 | 1.2 | 0.00
|
||||
Modify | 281.15 | 285.67 | 293.8 | 24.3 | 28.58
|
||||
Other | | 1.023 | | | 0.10
|
||||
|
||||
Nlocal: 2033.88 ave 2657 max 1198 min
|
||||
Histogram: 2 0 0 0 0 2 1 0 1 2
|
||||
Nghost: 1628.12 ave 1719 max 1569 min
|
||||
Histogram: 2 0 1 1 2 1 0 0 0 1
|
||||
Neighs: 13566 ave 18212 max 8488 min
|
||||
Histogram: 1 0 0 1 2 1 2 0 0 1
|
||||
|
||||
Total # of neighbors = 108528
|
||||
Ave neighs/atom = 6.6700264
|
||||
Neighbor list builds = 2447
|
||||
Dangerous builds = 2
|
||||
Total wall time: 0:19:22
|
||||
@ -1,243 +0,0 @@
|
||||
LAMMPS (1 Feb 2014)
|
||||
# Aspherical shear demo - 3d triangle boxes, solvated by SRD particles
|
||||
|
||||
units lj
|
||||
atom_style tri
|
||||
atom_modify first big
|
||||
|
||||
read_data data.tri.srd
|
||||
orthogonal box = (-8.43734 -8.43734 -8.43734) to (8.43734 8.43734 8.43734)
|
||||
2 by 2 by 2 MPI processor grid
|
||||
reading atoms ...
|
||||
1500 atoms
|
||||
1500 triangles
|
||||
|
||||
# add small particles as hi density lattice
|
||||
|
||||
lattice sc 0.4
|
||||
Lattice spacing in x,y,z = 1.35721 1.35721 1.35721
|
||||
region box block INF INF INF INF INF INF
|
||||
lattice sc 20.0
|
||||
Lattice spacing in x,y,z = 0.368403 0.368403 0.368403
|
||||
create_atoms 2 region box
|
||||
Created 91125 atoms
|
||||
|
||||
group big type 1
|
||||
1500 atoms in group big
|
||||
group small type 2
|
||||
91125 atoms in group small
|
||||
set group small mass 0.01
|
||||
91125 settings made for mass
|
||||
|
||||
# delete overlaps
|
||||
# must set 1-2 cutoff to non-zero value
|
||||
|
||||
pair_style lj/cut 1.5
|
||||
pair_coeff 1 1 1.0 1.0
|
||||
pair_coeff 2 2 0.0 1.0 0.0
|
||||
pair_coeff 1 2 0.0 1.0
|
||||
|
||||
delete_atoms overlap 1.5 small big
|
||||
Deleted 76354 atoms, new total = 16271
|
||||
|
||||
# SRD run
|
||||
|
||||
reset_timestep 0
|
||||
|
||||
velocity small create 1.44 87287 loop geom
|
||||
|
||||
neighbor 0.3 bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule big include big
|
||||
|
||||
communicate multi group big vel yes
|
||||
neigh_modify include big
|
||||
|
||||
# no pairwise interactions with small particles
|
||||
|
||||
pair_style tri/lj 3.5
|
||||
pair_coeff 1 1 0.1 1.0
|
||||
pair_coeff 2 2 0.0 1.0 0.0
|
||||
pair_coeff 1 2 0.0 1.0 0.0
|
||||
|
||||
# use fix SRD to push small particles out from inside big ones
|
||||
# if comment out, big particles won't see SRD particles
|
||||
|
||||
timestep 0.001
|
||||
|
||||
fix 1 big rigid molecule #langevin 1.0 1.0 0.1 12398
|
||||
125 rigid bodies with 1500 atoms
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip
|
||||
|
||||
fix 3 all deform 1 x scale 0.6 y scale 0.6 z scale 0.6
|
||||
|
||||
# diagnostics
|
||||
|
||||
compute tsmall small temp/deform
|
||||
compute tbig big temp
|
||||
variable pebig equal pe*atoms/count(big)
|
||||
variable ebig equal etotal*atoms/count(big)
|
||||
|
||||
compute 1 big erotate/asphere
|
||||
compute 2 all ke
|
||||
compute 3 all pe
|
||||
variable toteng equal (c_1+c_2+c_3)/atoms
|
||||
|
||||
thermo 1000
|
||||
thermo_style custom step f_1 c_tsmall f_2[9] temp press
|
||||
thermo_modify temp tbig
|
||||
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:439)
|
||||
|
||||
compute 10 all property/atom corner1x corner1y corner1z corner2x corner2y corner2z corner3x corner3y corner3z
|
||||
|
||||
#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump1.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9]
|
||||
|
||||
run 10000
|
||||
WARNING: Using fix srd with box deformation but no SRD thermostat (../fix_srd.cpp:385)
|
||||
SRD info:
|
||||
SRD/big particles = 14771 1500
|
||||
big particle diameter max/min = 1.46014 0.436602
|
||||
SRD temperature & lamda = 1 0.2
|
||||
SRD max distance & max velocity = 0.8 40
|
||||
SRD grid counts: 67 67 67
|
||||
SRD grid size: request, actual (xyz) = 0.25, 0.251861 0.251861 0.251861
|
||||
SRD per actual grid cell = 0.0647662
|
||||
SRD viscosity = -1.09837
|
||||
big/SRD mass density ratio = 24.668
|
||||
WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2853)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2875)
|
||||
WARNING: Fix srd viscosity < 0.0 due to low SRD density (../fix_srd.cpp:2877)
|
||||
# of rescaled SRD velocities = 0
|
||||
ave/max small velocity = 19.9708 35.1504
|
||||
ave/max big velocity = 0 0
|
||||
WARNING: Using compute temp/deform with inconsistent fix deform remap option (../compute_temp_deform.cpp:76)
|
||||
Memory usage per processor = 116.135 Mbytes
|
||||
Step 1 tsmall 2[9] Temp Press
|
||||
0 0 1.4405441 0 0 -0.15917996
|
||||
1000 1.0535509 1.1241378 1.1224038 0 0.15526438
|
||||
2000 2.4635987 1.0240667 0.94231519 0 0.011069846
|
||||
3000 3.1093028 1.0070585 1.0176028 0 0.34124888
|
||||
4000 2.9524179 1.0101774 1.0311733 0 -0.22118101
|
||||
5000 2.9175438 1.0109144 1.0284445 0 0.1839507
|
||||
6000 3.3200928 0.99108983 0.95968219 0 1.0229339
|
||||
7000 3.3020156 0.99661428 0.98000621 0 2.3333851
|
||||
8000 4.1500999 0.99129645 0.99723707 0 4.3054414
|
||||
9000 6.537028 1.0074533 1.0251098 0 18.782913
|
||||
10000 16.233245 1.0145766 1.0219787 0 147.83787
|
||||
Loop time of 228.558 on 8 procs for 10000 steps with 16271 atoms
|
||||
|
||||
Pair time (%) = 145.018 (63.4492)
|
||||
Neigh time (%) = 32.6283 (14.2757)
|
||||
Comm time (%) = 43.3283 (18.9572)
|
||||
Outpt time (%) = 0.000848889 (0.00037141)
|
||||
Other time (%) = 7.58254 (3.31755)
|
||||
|
||||
Nlocal: 2033.88 ave 2092 max 1902 min
|
||||
Histogram: 1 0 0 0 1 1 0 1 1 3
|
||||
Nghost: 2805 ave 2855 max 2751 min
|
||||
Histogram: 1 0 2 1 0 0 0 2 1 1
|
||||
Neighs: 30026.5 ave 38700 max 24367 min
|
||||
Histogram: 1 0 2 1 3 0 0 0 0 1
|
||||
|
||||
Total # of neighbors = 240212
|
||||
Ave neighs/atom = 14.7632
|
||||
Neighbor list builds = 501
|
||||
Dangerous builds = 0
|
||||
|
||||
#undump 1
|
||||
#undump 2
|
||||
unfix 3
|
||||
|
||||
change_box all triclinic
|
||||
triclinic box = (-5.0624 -5.0624 -5.0624) to (5.0624 5.0624 5.0624) with tilt (0 0 0)
|
||||
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip tstat yes
|
||||
|
||||
#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump2.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9]
|
||||
|
||||
fix 3 all deform 1 xy erate 0.05 units box remap v
|
||||
|
||||
run 40000
|
||||
SRD info:
|
||||
SRD/big particles = 14771 1500
|
||||
big particle diameter max/min = 1.46014 0.436602
|
||||
SRD temperature & lamda = 1 0.2
|
||||
SRD max distance & max velocity = 0.8 40
|
||||
SRD grid counts: 40 40 40
|
||||
SRD grid size: request, actual (xyz) = 0.25, 0.25312 0.25312 0.25312
|
||||
SRD per actual grid cell = -1.93929
|
||||
SRD viscosity = -0.36972
|
||||
big/SRD mass density ratio = -0.836253
|
||||
WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2853)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2875)
|
||||
WARNING: Fix srd viscosity < 0.0 due to low SRD density (../fix_srd.cpp:2877)
|
||||
# of rescaled SRD velocities = 1
|
||||
ave/max small velocity = 16.0639 40
|
||||
ave/max big velocity = 2.05735 6.73052
|
||||
Memory usage per processor = 65.2471 Mbytes
|
||||
Step 1 tsmall 2[9] Temp Press
|
||||
10000 16.233245 1.0144194 0 0 146.27032
|
||||
11000 17.301043 1.0619209 1 0 84.226323
|
||||
12000 13.481177 1.063945 1 0 80.42834
|
||||
13000 12.616615 1.0536125 1 0 68.365053
|
||||
14000 12.16592 1.0581344 1 0 59.709941
|
||||
15000 10.811557 1.0650453 1 0 59.869798
|
||||
16000 9.9303081 1.0641012 1 0 59.289126
|
||||
17000 10.452639 1.0589904 1 0 52.680235
|
||||
18000 9.2488947 1.0556713 1 0 51.044123
|
||||
19000 8.7179788 1.0566791 1 0 50.927924
|
||||
20000 7.8641299 1.0668891 1 0 53.961014
|
||||
21000 8.4333975 1.0628003 1 0 54.677068
|
||||
22000 8.554623 1.0591872 1 0 51.784737
|
||||
23000 7.895462 1.0598512 1 0 53.26885
|
||||
24000 7.7014869 1.055569 1 0 54.236941
|
||||
25000 7.508138 1.0581539 1 0 53.297709
|
||||
26000 8.0707381 1.0586451 1 0 51.411341
|
||||
27000 8.224223 1.0585509 1 0 52.775784
|
||||
28000 8.8720461 1.0648837 1 0 49.681447
|
||||
29000 8.503895 1.0538278 1 0 52.478556
|
||||
30000 8.2272425 1.0625583 1 0 52.795709
|
||||
31000 8.4626161 1.0599557 1 0 52.905343
|
||||
32000 7.7410527 1.0587681 1 0 57.464472
|
||||
33000 7.2765481 1.0677531 1 0 59.46728
|
||||
34000 7.036016 1.0640728 1 0 60.636828
|
||||
35000 8.497203 1.0577458 1 0 55.257312
|
||||
36000 8.9218761 1.0585038 1 0 55.668201
|
||||
37000 8.0469115 1.0561193 1 0 58.711565
|
||||
38000 8.6456966 1.0663818 1 0 53.691658
|
||||
39000 8.566667 1.0616928 1 0 52.866468
|
||||
40000 7.7081259 1.0577046 1 0 54.105829
|
||||
41000 7.4051952 1.0570277 1 0 56.094997
|
||||
42000 7.331432 1.0632261 1 0 55.661067
|
||||
43000 7.5587053 1.0602077 1 0 54.30762
|
||||
44000 7.4521497 1.0594391 1 0 52.993548
|
||||
45000 7.6234559 1.0641992 1 0 53.352202
|
||||
46000 8.0659693 1.0609367 1 0 50.302682
|
||||
47000 7.5227882 1.0563543 1 0 50.43551
|
||||
48000 8.0798684 1.0628968 1 0 48.419201
|
||||
49000 7.130784 1.0594143 1 0 50.656081
|
||||
50000 7.3219268 1.0608236 1 0 54.808358
|
||||
Loop time of 1651.84 on 8 procs for 40000 steps with 16271 atoms
|
||||
|
||||
Pair time (%) = 1232.76 (74.6296)
|
||||
Neigh time (%) = 171.893 (10.4061)
|
||||
Comm time (%) = 193.625 (11.7218)
|
||||
Outpt time (%) = 0.00338289 (0.000204795)
|
||||
Other time (%) = 53.5578 (3.24231)
|
||||
|
||||
Nlocal: 2033.88 ave 2229 max 1953 min
|
||||
Histogram: 2 1 2 2 0 0 0 0 0 1
|
||||
Nghost: 2757.88 ave 2810 max 2692 min
|
||||
Histogram: 1 1 1 0 1 0 0 1 1 2
|
||||
Neighs: 30098.6 ave 37369 max 25592 min
|
||||
Histogram: 1 3 0 1 0 1 1 0 0 1
|
||||
|
||||
Total # of neighbors = 240789
|
||||
Ave neighs/atom = 14.7987
|
||||
Neighbor list builds = 2007
|
||||
Dangerous builds = 0
|
||||
|
||||
Please see the log.cite file for references relevant to this simulation
|
||||
|
||||
@ -22,6 +22,10 @@
|
||||
"""
|
||||
Import basic modules
|
||||
"""
|
||||
|
||||
# for python2/3 compatibility
|
||||
from __future__ import print_function
|
||||
|
||||
import sys, os, timeit
|
||||
|
||||
from timeit import default_timer as timer
|
||||
@ -33,7 +37,7 @@ which needs to be provided
|
||||
try:
|
||||
import numpy as np
|
||||
except:
|
||||
print >> sys.stderr, "numpy not found. Exiting."
|
||||
print("numpy not found. Exiting.", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
"""
|
||||
@ -45,8 +49,8 @@ try:
|
||||
box_length = float(sys.argv[2])
|
||||
infile = sys.argv[3]
|
||||
except:
|
||||
print >> sys.stderr, "Usage: %s <%s> <%s> <%s>" % (sys.argv[0], \
|
||||
"box offset", "box length", "file with sequences")
|
||||
print( "Usage: %s <%s> <%s> <%s>" % (sys.argv[0], \
|
||||
"box offset", "box length", "file with sequences"), file=sys.stderr)
|
||||
sys.exit(1)
|
||||
box = np.array ([box_length, box_length, box_length])
|
||||
|
||||
@ -57,8 +61,7 @@ try:
|
||||
inp = open (infile, 'r')
|
||||
inp.close()
|
||||
except:
|
||||
print >> sys.stderr, "Could not open file '%s' for reading. \
|
||||
Aborting." % infile
|
||||
print( "Could not open file '%s' for reading. Aborting." % infile, file=sys.stderr)
|
||||
sys.exit(2)
|
||||
|
||||
# return parts of a string
|
||||
@ -135,25 +138,25 @@ def exyz_to_quat (mya1, mya3):
|
||||
# compute other components from it
|
||||
|
||||
if q0sq >= 0.25:
|
||||
myquat[0] = np.sqrt(q0sq)
|
||||
myquat[1] = (mya2[2] - mya3[1]) / (4.0*myquat[0])
|
||||
myquat[2] = (mya3[0] - mya1[2]) / (4.0*myquat[0])
|
||||
myquat[3] = (mya1[1] - mya2[0]) / (4.0*myquat[0])
|
||||
myquat[0] = np.sqrt(q0sq)
|
||||
myquat[1] = (mya2[2] - mya3[1]) / (4.0*myquat[0])
|
||||
myquat[2] = (mya3[0] - mya1[2]) / (4.0*myquat[0])
|
||||
myquat[3] = (mya1[1] - mya2[0]) / (4.0*myquat[0])
|
||||
elif q1sq >= 0.25:
|
||||
myquat[1] = np.sqrt(q1sq)
|
||||
myquat[0] = (mya2[2] - mya3[1]) / (4.0*myquat[1])
|
||||
myquat[2] = (mya2[0] + mya1[1]) / (4.0*myquat[1])
|
||||
myquat[3] = (mya1[2] + mya3[0]) / (4.0*myquat[1])
|
||||
myquat[1] = np.sqrt(q1sq)
|
||||
myquat[0] = (mya2[2] - mya3[1]) / (4.0*myquat[1])
|
||||
myquat[2] = (mya2[0] + mya1[1]) / (4.0*myquat[1])
|
||||
myquat[3] = (mya1[2] + mya3[0]) / (4.0*myquat[1])
|
||||
elif q2sq >= 0.25:
|
||||
myquat[2] = np.sqrt(q2sq)
|
||||
myquat[0] = (mya3[0] - mya1[2]) / (4.0*myquat[2])
|
||||
myquat[1] = (mya2[0] + mya1[1]) / (4.0*myquat[2])
|
||||
myquat[3] = (mya3[1] + mya2[2]) / (4.0*myquat[2])
|
||||
myquat[2] = np.sqrt(q2sq)
|
||||
myquat[0] = (mya3[0] - mya1[2]) / (4.0*myquat[2])
|
||||
myquat[1] = (mya2[0] + mya1[1]) / (4.0*myquat[2])
|
||||
myquat[3] = (mya3[1] + mya2[2]) / (4.0*myquat[2])
|
||||
elif q3sq >= 0.25:
|
||||
myquat[3] = np.sqrt(q3sq)
|
||||
myquat[0] = (mya1[1] - mya2[0]) / (4.0*myquat[3])
|
||||
myquat[1] = (mya3[0] + mya1[2]) / (4.0*myquat[3])
|
||||
myquat[2] = (mya3[1] + mya2[2]) / (4.0*myquat[3])
|
||||
myquat[3] = np.sqrt(q3sq)
|
||||
myquat[0] = (mya1[1] - mya2[0]) / (4.0*myquat[3])
|
||||
myquat[1] = (mya3[0] + mya1[2]) / (4.0*myquat[3])
|
||||
myquat[2] = (mya3[1] + mya2[2]) / (4.0*myquat[3])
|
||||
|
||||
norm = 1.0/np.sqrt(myquat[0]*myquat[0] + myquat[1]*myquat[1] + \
|
||||
myquat[2]*myquat[2] + myquat[3]*myquat[3])
|
||||
@ -174,57 +177,57 @@ def add_strands (mynewpositions, mynewa1s, mynewa3s):
|
||||
# placed particles i we check whether it overlaps with any of the
|
||||
# newly created particles j
|
||||
|
||||
print >> sys.stdout, "## Checking for overlaps"
|
||||
print( "## Checking for overlaps", file=sys.stdout)
|
||||
|
||||
for i in xrange(len(positions)):
|
||||
for i in range(len(positions)):
|
||||
|
||||
p = positions[i]
|
||||
pa1 = a1s[i]
|
||||
p = positions[i]
|
||||
pa1 = a1s[i]
|
||||
|
||||
for j in xrange (len(mynewpositions)):
|
||||
for j in range (len(mynewpositions)):
|
||||
|
||||
q = mynewpositions[j]
|
||||
qa1 = mynewa1s[j]
|
||||
q = mynewpositions[j]
|
||||
qa1 = mynewa1s[j]
|
||||
|
||||
# skip particles that are anyway too far away
|
||||
dr = p - q
|
||||
dr -= box * np.rint (dr / box)
|
||||
if np.dot(dr, dr) > RC2:
|
||||
continue
|
||||
# skip particles that are anyway too far away
|
||||
dr = p - q
|
||||
dr -= box * np.rint(dr / box)
|
||||
if np.dot(dr, dr) > RC2:
|
||||
continue
|
||||
|
||||
# base site and backbone site of the two particles
|
||||
# base site and backbone site of the two particles
|
||||
p_pos_back = p + pa1 * POS_BACK
|
||||
p_pos_base = p + pa1 * POS_BASE
|
||||
q_pos_back = q + qa1 * POS_BACK
|
||||
q_pos_base = q + qa1 * POS_BASE
|
||||
|
||||
# check for no overlap between the two backbone sites
|
||||
# check for no overlap between the two backbone sites
|
||||
dr = p_pos_back - q_pos_back
|
||||
dr -= box * np.rint (dr / box)
|
||||
dr -= box * np.rint(dr / box)
|
||||
if np.dot(dr, dr) < RC2_BACK:
|
||||
overlap = True
|
||||
|
||||
# check for no overlap between the two base sites
|
||||
# check for no overlap between the two base sites
|
||||
dr = p_pos_base - q_pos_base
|
||||
dr -= box * np.rint (dr / box)
|
||||
dr -= box * np.rint(dr / box)
|
||||
if np.dot(dr, dr) < RC2_BASE:
|
||||
overlap = True
|
||||
|
||||
# check for no overlap between backbone site of particle p
|
||||
# with base site of particle q
|
||||
# check for no overlap between backbone site of particle p
|
||||
# with base site of particle q
|
||||
dr = p_pos_back - q_pos_base
|
||||
dr -= box * np.rint (dr / box)
|
||||
if np.dot(dr, dr) < RC2_BACK_BASE:
|
||||
overlap = True
|
||||
|
||||
# check for no overlap between base site of particle p and
|
||||
# backbone site of particle q
|
||||
# check for no overlap between base site of particle p and
|
||||
# backbone site of particle q
|
||||
dr = p_pos_base - q_pos_back
|
||||
dr -= box * np.rint (dr / box)
|
||||
if np.dot(dr, dr) < RC2_BACK_BASE:
|
||||
overlap = True
|
||||
|
||||
# exit if there is an overlap
|
||||
# exit if there is an overlap
|
||||
if overlap:
|
||||
return False
|
||||
|
||||
@ -237,10 +240,10 @@ def add_strands (mynewpositions, mynewa1s, mynewa3s):
|
||||
a1s.append (p)
|
||||
for p in mynewa3s:
|
||||
a3s.append (p)
|
||||
# calculate quaternion from local body frame and append
|
||||
for ia in xrange(len(mynewpositions)):
|
||||
mynewquaternions = exyz_to_quat(mynewa1s[ia],mynewa3s[ia])
|
||||
quaternions.append(mynewquaternions)
|
||||
# calculate quaternion from local body frame and append
|
||||
for ia in range(len(mynewpositions)):
|
||||
mynewquaternions = exyz_to_quat(mynewa1s[ia],mynewa3s[ia])
|
||||
quaternions.append(mynewquaternions)
|
||||
|
||||
return True
|
||||
|
||||
@ -295,30 +298,29 @@ def generate_strand(bp, sequence=None, start_pos=np.array([0, 0, 0]), \
|
||||
# overall direction of the helix
|
||||
dir = np.array(dir, dtype=float)
|
||||
if sequence == None:
|
||||
sequence = np.random.randint(1, 5, bp)
|
||||
sequence = np.random.randint(1, 5, bp)
|
||||
|
||||
# the elseif here is most likely redundant
|
||||
elif len(sequence) != bp:
|
||||
n = bp - len(sequence)
|
||||
sequence += np.random.randint(1, 5, n)
|
||||
print >> sys.stderr, "sequence is too short, adding %d random bases" % n
|
||||
n = bp - len(sequence)
|
||||
sequence += np.random.randint(1, 5, n)
|
||||
print( "sequence is too short, adding %d random bases" % n, file=sys.stderr)
|
||||
|
||||
# normalize direction
|
||||
dir_norm = np.sqrt(np.dot(dir,dir))
|
||||
if dir_norm < 1e-10:
|
||||
print >> sys.stderr, "direction must be a valid vector, \
|
||||
defaulting to (0, 0, 1)"
|
||||
dir = np.array([0, 0, 1])
|
||||
print( "direction must be a valid vector, defaulting to (0, 0, 1)", file=sys.stderr)
|
||||
dir = np.array([0, 0, 1])
|
||||
else: dir /= dir_norm
|
||||
|
||||
# find a vector orthogonal to dir to act as helix direction,
|
||||
# if not provided switch off random orientation
|
||||
if perp is None or perp is False:
|
||||
v1 = np.random.random_sample(3)
|
||||
v1 -= dir * (np.dot(dir, v1))
|
||||
v1 /= np.sqrt(sum(v1*v1))
|
||||
v1 = np.random.random_sample(3)
|
||||
v1 -= dir * (np.dot(dir, v1))
|
||||
v1 /= np.sqrt(sum(v1*v1))
|
||||
else:
|
||||
v1 = perp;
|
||||
v1 = perp;
|
||||
|
||||
# generate rotational matrix representing the overall rotation of the helix
|
||||
R0 = get_rotation_matrix(dir, rot)
|
||||
@ -339,32 +341,32 @@ def generate_strand(bp, sequence=None, start_pos=np.array([0, 0, 0]), \
|
||||
a3 = dir
|
||||
for i in range(bp):
|
||||
# work out the position of the centre of mass of the nucleotide
|
||||
rcdm = rb - CM_CENTER_DS * a1
|
||||
rcdm = rb - CM_CENTER_DS * a1
|
||||
|
||||
# append to newpositions
|
||||
mynewpositions.append(rcdm)
|
||||
mynewa1s.append(a1)
|
||||
mynewa3s.append(a3)
|
||||
# append to newpositions
|
||||
mynewpositions.append(rcdm)
|
||||
mynewa1s.append(a1)
|
||||
mynewa3s.append(a3)
|
||||
|
||||
# if we are not at the end of the helix, we work out a1 and rb for the
|
||||
# next nucleotide along the helix
|
||||
if i != bp - 1:
|
||||
a1 = np.dot(R, a1)
|
||||
rb += a3 * BASE_BASE
|
||||
# if we are not at the end of the helix, we work out a1 and rb for the
|
||||
# next nucleotide along the helix
|
||||
if i != bp - 1:
|
||||
a1 = np.dot(R, a1)
|
||||
rb += a3 * BASE_BASE
|
||||
|
||||
# if we are working on a double strand, we do a cycle similar
|
||||
# to the previous one but backwards
|
||||
if double == True:
|
||||
a1 = -a1
|
||||
a3 = -dir
|
||||
R = R.transpose()
|
||||
for i in range(bp):
|
||||
rcdm = rb - CM_CENTER_DS * a1
|
||||
mynewpositions.append (rcdm)
|
||||
mynewa1s.append (a1)
|
||||
mynewa3s.append (a3)
|
||||
a1 = np.dot(R, a1)
|
||||
rb += a3 * BASE_BASE
|
||||
a1 = -a1
|
||||
a3 = -dir
|
||||
R = R.transpose()
|
||||
for i in range(bp):
|
||||
rcdm = rb - CM_CENTER_DS * a1
|
||||
mynewpositions.append (rcdm)
|
||||
mynewa1s.append (a1)
|
||||
mynewa3s.append (a3)
|
||||
a1 = np.dot(R, a1)
|
||||
rb += a3 * BASE_BASE
|
||||
|
||||
assert (len (mynewpositions) > 0)
|
||||
|
||||
@ -391,7 +393,7 @@ def read_strands(filename):
|
||||
try:
|
||||
infile = open (filename)
|
||||
except:
|
||||
print >> sys.stderr, "Could not open file '%s'. Aborting." % filename
|
||||
print( "Could not open file '%s'. Aborting." % filename, file=sys.stderr )
|
||||
sys.exit(2)
|
||||
|
||||
# This block works out the number of nucleotides and strands by reading
|
||||
@ -406,28 +408,27 @@ def read_strands(filename):
|
||||
if line[:6] == 'DOUBLE':
|
||||
line = line.split()[1]
|
||||
length = len(line)
|
||||
print >> sys.stdout, "## Found duplex of %i base pairs" % length
|
||||
print( "## Found duplex of %i base pairs" % length, file=sys.stdout)
|
||||
nnucl += 2*length
|
||||
nstrands += 2
|
||||
nbonds += (2*length-2)
|
||||
nbonds += (2*length-2)
|
||||
else:
|
||||
line = line.split()[0]
|
||||
length = len(line)
|
||||
print >> sys.stdout, \
|
||||
"## Found single strand of %i bases" % length
|
||||
print( "## Found single strand of %i bases" % length, file=sys.stdout)
|
||||
nnucl += length
|
||||
nstrands += 1
|
||||
nbonds += length-1
|
||||
nbonds += length-1
|
||||
# rewind the sequence input file
|
||||
infile.seek(0)
|
||||
|
||||
print >> sys.stdout, "## nstrands, nnucl = ", nstrands, nnucl
|
||||
print( "## nstrands, nnucl = ", nstrands, nnucl, file=sys.stdout)
|
||||
|
||||
# generate the data file in LAMMPS format
|
||||
try:
|
||||
out = open ("data.oxdna", "w")
|
||||
except:
|
||||
print >> sys.stderr, "Could not open data file for writing. Aborting."
|
||||
print( "Could not open data file for writing. Aborting.", file=sys.stderr)
|
||||
sys.exit(2)
|
||||
|
||||
lines = infile.readlines()
|
||||
@ -441,44 +442,44 @@ def read_strands(filename):
|
||||
|
||||
# skip empty lines
|
||||
if len(line) == 0:
|
||||
i += 1
|
||||
continue
|
||||
i += 1
|
||||
continue
|
||||
|
||||
# block for duplexes: last argument of the generate function
|
||||
# is set to 'True'
|
||||
# block for duplexes: last argument of the generate function
|
||||
# is set to 'True'
|
||||
if line[:6] == 'DOUBLE':
|
||||
line = line.split()[1]
|
||||
length = len(line)
|
||||
seq = [(base_to_number[x]) for x in line]
|
||||
|
||||
myns += 1
|
||||
for b in xrange(length):
|
||||
basetype.append(seq[b])
|
||||
strandnum.append(myns)
|
||||
myns += 1
|
||||
for b in range(length):
|
||||
basetype.append(seq[b])
|
||||
strandnum.append(myns)
|
||||
|
||||
for b in xrange(length-1):
|
||||
bondpair = [noffset + b, noffset + b + 1]
|
||||
bonds.append(bondpair)
|
||||
noffset += length
|
||||
for b in range(length-1):
|
||||
bondpair = [noffset + b, noffset + b + 1]
|
||||
bonds.append(bondpair)
|
||||
noffset += length
|
||||
|
||||
# create the sequence of the second strand as made of
|
||||
# complementary bases
|
||||
seq2 = [5-s for s in seq]
|
||||
seq2.reverse()
|
||||
# create the sequence of the second strand as made of
|
||||
# complementary bases
|
||||
seq2 = [5-s for s in seq]
|
||||
seq2.reverse()
|
||||
|
||||
myns += 1
|
||||
for b in xrange(length):
|
||||
basetype.append(seq2[b])
|
||||
strandnum.append(myns)
|
||||
myns += 1
|
||||
for b in range(length):
|
||||
basetype.append(seq2[b])
|
||||
strandnum.append(myns)
|
||||
|
||||
for b in xrange(length-1):
|
||||
bondpair = [noffset + b, noffset + b + 1]
|
||||
bonds.append(bondpair)
|
||||
noffset += length
|
||||
for b in range(length-1):
|
||||
bondpair = [noffset + b, noffset + b + 1]
|
||||
bonds.append(bondpair)
|
||||
noffset += length
|
||||
|
||||
print >> sys.stdout, "## Created duplex of %i bases" % (2*length)
|
||||
print( "## Created duplex of %i bases" % (2*length), file=sys.stdout)
|
||||
|
||||
# generate random position of the first nucleotide
|
||||
# generate random position of the first nucleotide
|
||||
cdm = box_offset + np.random.random_sample(3) * box
|
||||
|
||||
# generate the random direction of the helix
|
||||
@ -486,69 +487,68 @@ def read_strands(filename):
|
||||
axis /= np.sqrt(np.dot(axis, axis))
|
||||
|
||||
# use the generate function defined above to create
|
||||
# the position and orientation vector of the strand
|
||||
# the position and orientation vector of the strand
|
||||
newpositions, newa1s, newa3s = generate_strand(len(line), \
|
||||
sequence=seq, dir=axis, start_pos=cdm, double=True)
|
||||
sequence=seq, dir=axis, start_pos=cdm, double=True)
|
||||
|
||||
# generate a new position for the strand until it does not overlap
|
||||
# with anything already present
|
||||
start = timer()
|
||||
# with anything already present
|
||||
start = timer()
|
||||
while not add_strands(newpositions, newa1s, newa3s):
|
||||
cdm = box_offset + np.random.random_sample(3) * box
|
||||
axis = np.random.random_sample(3)
|
||||
axis /= np.sqrt(np.dot(axis, axis))
|
||||
newpositions, newa1s, newa3s = generate_strand(len(line), \
|
||||
sequence=seq, dir=axis, start_pos=cdm, double=True)
|
||||
print >> sys.stdout, "## Trying %i" % i
|
||||
end = timer()
|
||||
print >> sys.stdout, "## Added duplex of %i bases (line %i/%i) in %.2fs, now at %i/%i" % \
|
||||
(2*length, i, nlines, end-start, len(positions), nnucl)
|
||||
sequence=seq, dir=axis, start_pos=cdm, double=True)
|
||||
print( "## Trying %i" % i, file=sys.stdout)
|
||||
end = timer()
|
||||
print( "## Added duplex of %i bases (line %i/%i) in %.2fs, now at %i/%i" % \
|
||||
(2*length, i, nlines, end-start, len(positions), nnucl), file=sys.stdout)
|
||||
|
||||
# block for single strands: last argument of the generate function
|
||||
# is set to 'False'
|
||||
# block for single strands: last argument of the generate function
|
||||
# is set to 'False'
|
||||
else:
|
||||
length = len(line)
|
||||
seq = [(base_to_number[x]) for x in line]
|
||||
|
||||
myns += 1
|
||||
for b in xrange(length):
|
||||
basetype.append(seq[b])
|
||||
strandnum.append(myns)
|
||||
myns += 1
|
||||
for b in range(length):
|
||||
basetype.append(seq[b])
|
||||
strandnum.append(myns)
|
||||
|
||||
for b in xrange(length-1):
|
||||
bondpair = [noffset + b, noffset + b + 1]
|
||||
bonds.append(bondpair)
|
||||
noffset += length
|
||||
for b in range(length-1):
|
||||
bondpair = [noffset + b, noffset + b + 1]
|
||||
bonds.append(bondpair)
|
||||
noffset += length
|
||||
|
||||
# generate random position of the first nucleotide
|
||||
# generate random position of the first nucleotide
|
||||
cdm = box_offset + np.random.random_sample(3) * box
|
||||
|
||||
# generate the random direction of the helix
|
||||
axis = np.random.random_sample(3)
|
||||
axis /= np.sqrt(np.dot(axis, axis))
|
||||
|
||||
print >> sys.stdout, \
|
||||
"## Created single strand of %i bases" % length
|
||||
print("## Created single strand of %i bases" % length, file=sys.stdout)
|
||||
|
||||
newpositions, newa1s, newa3s = generate_strand(length, \
|
||||
sequence=seq, dir=axis, start_pos=cdm, double=False)
|
||||
start = timer()
|
||||
start = timer()
|
||||
while not add_strands(newpositions, newa1s, newa3s):
|
||||
cdm = box_offset + np.random.random_sample(3) * box
|
||||
axis = np.random.random_sample(3)
|
||||
axis /= np.sqrt(np.dot(axis, axis))
|
||||
axis /= np.sqrt(np.dot(axis, axis))
|
||||
newpositions, newa1s, newa3s = generate_strand(length, \
|
||||
sequence=seq, dir=axis, start_pos=cdm, double=False)
|
||||
sequence=seq, dir=axis, start_pos=cdm, double=False)
|
||||
print >> sys.stdout, "## Trying %i" % (i)
|
||||
end = timer()
|
||||
print >> sys.stdout, "## Added single strand of %i bases (line %i/%i) in %.2fs, now at %i/%i" % \
|
||||
(length, i, nlines, end-start,len(positions), nnucl)
|
||||
end = timer()
|
||||
print( "## Added single strand of %i bases (line %i/%i) in %.2fs, now at %i/%i" % \
|
||||
(length, i, nlines, end-start,len(positions), nnucl), file=sys.stdout)
|
||||
|
||||
i += 1
|
||||
|
||||
# sanity check
|
||||
if not len(positions) == nnucl:
|
||||
print len(positions), nnucl
|
||||
print( len(positions), nnucl )
|
||||
raise AssertionError
|
||||
|
||||
out.write('# LAMMPS data file\n')
|
||||
@ -580,44 +580,41 @@ def read_strands(filename):
|
||||
out.write('Atoms\n')
|
||||
out.write('\n')
|
||||
|
||||
for i in xrange(nnucl):
|
||||
out.write('%d %d %22.15le %22.15le %22.15le %d 1 1\n' \
|
||||
% (i+1, basetype[i], \
|
||||
positions[i][0], positions[i][1], positions[i][2], \
|
||||
strandnum[i]))
|
||||
for i in range(nnucl):
|
||||
out.write('%d %d %22.15le %22.15le %22.15le %d 1 1\n' \
|
||||
% (i+1, basetype[i], positions[i][0], positions[i][1], positions[i][2], strandnum[i]))
|
||||
|
||||
out.write('\n')
|
||||
out.write('# Atom-ID, translational, rotational velocity\n')
|
||||
out.write('Velocities\n')
|
||||
out.write('\n')
|
||||
|
||||
for i in xrange(nnucl):
|
||||
out.write("%d %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le\n" \
|
||||
% (i+1,0.0,0.0,0.0,0.0,0.0,0.0))
|
||||
for i in range(nnucl):
|
||||
out.write("%d %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le\n" \
|
||||
% (i+1,0.0,0.0,0.0,0.0,0.0,0.0))
|
||||
|
||||
out.write('\n')
|
||||
out.write('# Atom-ID, shape, quaternion\n')
|
||||
out.write('Ellipsoids\n')
|
||||
out.write('\n')
|
||||
|
||||
for i in xrange(nnucl):
|
||||
out.write(\
|
||||
"%d %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le\n" \
|
||||
% (i+1,1.1739845031423408,1.1739845031423408,1.1739845031423408, \
|
||||
quaternions[i][0],quaternions[i][1], quaternions[i][2],quaternions[i][3]))
|
||||
for i in range(nnucl):
|
||||
out.write("%d %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le\n" \
|
||||
% (i+1,1.1739845031423408,1.1739845031423408,1.1739845031423408, \
|
||||
quaternions[i][0],quaternions[i][1], quaternions[i][2],quaternions[i][3]))
|
||||
|
||||
out.write('\n')
|
||||
out.write('# Bond topology\n')
|
||||
out.write('Bonds\n')
|
||||
out.write('\n')
|
||||
|
||||
for i in xrange(nbonds):
|
||||
out.write("%d %d %d %d\n" % (i+1,1,bonds[i][0],bonds[i][1]))
|
||||
for i in range(nbonds):
|
||||
out.write("%d %d %d %d\n" % (i+1,1,bonds[i][0],bonds[i][1]))
|
||||
|
||||
out.close()
|
||||
|
||||
print >> sys.stdout, "## Wrote data to 'data.oxdna'"
|
||||
print >> sys.stdout, "## DONE"
|
||||
print("## Wrote data to 'data.oxdna'", file=sys.stdout)
|
||||
print("## DONE", file=sys.stdout)
|
||||
|
||||
# call the above main() function, which executes the program
|
||||
read_strands (infile)
|
||||
@ -627,4 +624,6 @@ runtime = end_time-start_time
|
||||
hours = runtime/3600
|
||||
minutes = (runtime-np.rint(hours)*3600)/60
|
||||
seconds = (runtime-np.rint(hours)*3600-np.rint(minutes)*60)%60
|
||||
print >> sys.stdout, "## Total runtime %ih:%im:%.2fs" % (hours,minutes,seconds)
|
||||
print( "## Total runtime %ih:%im:%.2fs" % (hours,minutes,seconds), file=sys.stdout)
|
||||
|
||||
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
# Setup tool for oxDNA input in LAMMPS format.
|
||||
|
||||
# for python2/3 compatibility
|
||||
from __future__ import print_function
|
||||
|
||||
import math,numpy as np,sys,os
|
||||
|
||||
# system size
|
||||
@ -250,59 +253,59 @@ def duplex_array():
|
||||
qrot3=math.sin(0.5*twist)
|
||||
|
||||
for letter in strand[2]:
|
||||
temp1=[]
|
||||
temp2=[]
|
||||
temp1=[]
|
||||
temp2=[]
|
||||
|
||||
temp1.append(nt2num[letter])
|
||||
temp2.append(compnt2num[letter])
|
||||
temp1.append(nt2num[letter])
|
||||
temp2.append(compnt2num[letter])
|
||||
|
||||
temp1.append([posx1,posy1,posz1])
|
||||
temp2.append([posx2,posy2,posz2])
|
||||
temp1.append([posx1,posy1,posz1])
|
||||
temp2.append([posx2,posy2,posz2])
|
||||
|
||||
vel=[0,0,0,0,0,0]
|
||||
temp1.append(vel)
|
||||
temp2.append(vel)
|
||||
vel=[0,0,0,0,0,0]
|
||||
temp1.append(vel)
|
||||
temp2.append(vel)
|
||||
|
||||
temp1.append(shape)
|
||||
temp2.append(shape)
|
||||
temp1.append(shape)
|
||||
temp2.append(shape)
|
||||
|
||||
temp1.append(quat1)
|
||||
temp2.append(quat2)
|
||||
temp1.append(quat1)
|
||||
temp2.append(quat2)
|
||||
|
||||
quat1_0 = quat1[0]*qrot0 - quat1[1]*qrot1 - quat1[2]*qrot2 - quat1[3]*qrot3
|
||||
quat1_1 = quat1[0]*qrot1 + quat1[1]*qrot0 + quat1[2]*qrot3 - quat1[3]*qrot2
|
||||
quat1_2 = quat1[0]*qrot2 + quat1[2]*qrot0 + quat1[3]*qrot1 - quat1[1]*qrot3
|
||||
quat1_3 = quat1[0]*qrot3 + quat1[3]*qrot0 + quat1[1]*qrot2 + quat1[2]*qrot1
|
||||
quat1_0 = quat1[0]*qrot0 - quat1[1]*qrot1 - quat1[2]*qrot2 - quat1[3]*qrot3
|
||||
quat1_1 = quat1[0]*qrot1 + quat1[1]*qrot0 + quat1[2]*qrot3 - quat1[3]*qrot2
|
||||
quat1_2 = quat1[0]*qrot2 + quat1[2]*qrot0 + quat1[3]*qrot1 - quat1[1]*qrot3
|
||||
quat1_3 = quat1[0]*qrot3 + quat1[3]*qrot0 + quat1[1]*qrot2 + quat1[2]*qrot1
|
||||
|
||||
quat1 = [quat1_0,quat1_1,quat1_2,quat1_3]
|
||||
quat1 = [quat1_0,quat1_1,quat1_2,quat1_3]
|
||||
|
||||
posx1=axisx - dcomh*(quat1[0]**2+quat1[1]**2-quat1[2]**2-quat1[3]**2)
|
||||
posy1=axisy - dcomh*(2*(quat1[1]*quat1[2]+quat1[0]*quat1[3]))
|
||||
posz1=posz1+risez
|
||||
posx1=axisx - dcomh*(quat1[0]**2+quat1[1]**2-quat1[2]**2-quat1[3]**2)
|
||||
posy1=axisy - dcomh*(2*(quat1[1]*quat1[2]+quat1[0]*quat1[3]))
|
||||
posz1=posz1+risez
|
||||
|
||||
quat2_0 = quat2[0]*qrot0 - quat2[1]*qrot1 - quat2[2]*qrot2 + quat2[3]*qrot3
|
||||
quat2_1 = quat2[0]*qrot1 + quat2[1]*qrot0 - quat2[2]*qrot3 - quat2[3]*qrot2
|
||||
quat2_2 = quat2[0]*qrot2 + quat2[2]*qrot0 + quat2[3]*qrot1 + quat2[1]*qrot3
|
||||
quat2_3 =-quat2[0]*qrot3 + quat2[3]*qrot0 + quat2[1]*qrot2 + quat2[2]*qrot1
|
||||
quat2_0 = quat2[0]*qrot0 - quat2[1]*qrot1 - quat2[2]*qrot2 + quat2[3]*qrot3
|
||||
quat2_1 = quat2[0]*qrot1 + quat2[1]*qrot0 - quat2[2]*qrot3 - quat2[3]*qrot2
|
||||
quat2_2 = quat2[0]*qrot2 + quat2[2]*qrot0 + quat2[3]*qrot1 + quat2[1]*qrot3
|
||||
quat2_3 =-quat2[0]*qrot3 + quat2[3]*qrot0 + quat2[1]*qrot2 + quat2[2]*qrot1
|
||||
|
||||
quat2 = [quat2_0,quat2_1,quat2_2,quat2_3]
|
||||
quat2 = [quat2_0,quat2_1,quat2_2,quat2_3]
|
||||
|
||||
posx2=axisx + dcomh*(quat1[0]**2+quat1[1]**2-quat1[2]**2-quat1[3]**2)
|
||||
posy2=axisy + dcomh*(2*(quat1[1]*quat1[2]+quat1[0]*quat1[3]))
|
||||
posz2=posz1
|
||||
posx2=axisx + dcomh*(quat1[0]**2+quat1[1]**2-quat1[2]**2-quat1[3]**2)
|
||||
posy2=axisy + dcomh*(2*(quat1[1]*quat1[2]+quat1[0]*quat1[3]))
|
||||
posz2=posz1
|
||||
|
||||
if (len(nucleotide)+1 > strandstart):
|
||||
topology.append([1,len(nucleotide),len(nucleotide)+1])
|
||||
comptopo.append([1,len(nucleotide)+len(strand[2]),len(nucleotide)+len(strand[2])+1])
|
||||
if (len(nucleotide)+1 > strandstart):
|
||||
topology.append([1,len(nucleotide),len(nucleotide)+1])
|
||||
comptopo.append([1,len(nucleotide)+len(strand[2]),len(nucleotide)+len(strand[2])+1])
|
||||
|
||||
nucleotide.append(temp1)
|
||||
compstrand.append(temp2)
|
||||
nucleotide.append(temp1)
|
||||
compstrand.append(temp2)
|
||||
|
||||
for ib in range(len(compstrand)):
|
||||
nucleotide.append(compstrand[len(compstrand)-1-ib])
|
||||
nucleotide.append(compstrand[len(compstrand)-1-ib])
|
||||
|
||||
for ib in range(len(comptopo)):
|
||||
topology.append(comptopo[ib])
|
||||
topology.append(comptopo[ib])
|
||||
|
||||
return
|
||||
|
||||
|
||||
@ -1,30 +0,0 @@
|
||||
bkgd_dyn = 1
|
||||
emb_lin_neg = 1
|
||||
augt1=0
|
||||
ialloy=1
|
||||
rc = 5.9
|
||||
#H
|
||||
attrac(1,1)=0.460
|
||||
repuls(1,1)=0.460
|
||||
Cmin(1,1,1)=1.3 # PuMS
|
||||
Cmax(1,1,1)= 2.80
|
||||
nn2(1,1)=1
|
||||
#Ga
|
||||
rho0(2) = 0.6
|
||||
attrac(2,2)=0.097
|
||||
repuls(2,2)=0.097
|
||||
nn2(2,2)=1
|
||||
#HGa
|
||||
attrac(1,2)=0.300
|
||||
repuls(1,2)=0.300
|
||||
lattce(1,2)=l12
|
||||
re(1,2)=3.19
|
||||
delta(1,2)=-0.48
|
||||
alpha(1,2)=6.6
|
||||
Cmin(1,1,2)=2.0
|
||||
Cmin(2,1,2)= 2.0
|
||||
Cmin(1,2,1)=2.0
|
||||
Cmin(2,2,1) = 1.4
|
||||
Cmin(1,2,2) = 1.4
|
||||
Cmin(1,1,2) = 1.4
|
||||
nn2(1,2)=1
|
||||
1
examples/meam/msmeam/HGa.msmeam
Symbolic link
@ -0,0 +1 @@
|
||||
../../../potentials/HGa.msmeam
|
||||
@ -1,25 +0,0 @@
|
||||
LAMMPS data file via write_data, version 16 Feb 2016, timestep = 1
|
||||
|
||||
3 atoms
|
||||
2 atom types
|
||||
|
||||
-4.0000000000000000e+00 4.0000000000000000e+00 xlo xhi
|
||||
-4.0000000000000000e+00 4.0000000000000000e+00 ylo yhi
|
||||
-4.0000000000000000e+00 4.0000000000000000e+00 zlo zhi
|
||||
|
||||
Masses
|
||||
|
||||
1 1.0079
|
||||
2 69.723
|
||||
|
||||
Atoms # atomic
|
||||
|
||||
1 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||
2 2 2.2000000000000002e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||
3 2 2.9999999999999999e-01 2.2999999999999998e+00 0.0000000000000000e+00 0 0 0
|
||||
|
||||
Velocities
|
||||
|
||||
1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
@ -1,5 +1,3 @@
|
||||
echo both
|
||||
log log.msmeam
|
||||
# Test of MEAM potential for HGa
|
||||
|
||||
# ------------------------ INITIALIZATION ----------------------------
|
||||
@ -21,11 +19,11 @@ create_atoms 1 single 0 0 0 units box
|
||||
create_atoms 2 single 2.2 0 0 units box
|
||||
create_atoms 2 single 0.3 2.3 0 units box
|
||||
# ---------- Define Settings ---------------------
|
||||
variable teng equal "c_eatoms"
|
||||
variable teng equal "c_eatoms"
|
||||
compute pot_energy all pe/atom
|
||||
compute stress all stress/atom NULL
|
||||
dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6]
|
||||
run 1
|
||||
write_data data.msmeam
|
||||
run 1
|
||||
#write_data data.msmeam
|
||||
|
||||
print "All done!"
|
||||
|
||||
@ -1,14 +0,0 @@
|
||||
# DATE: 2018-09-22 UNITS: metal CONTRIBUTOR: Steve Valone, smv@lanl.gov CITATION: Baskes, PRB 1992; smv, sr, mib, JNM 2010
|
||||
# ms-meam data format May 2010
|
||||
# elt lat z ielement atwt
|
||||
# alpha b0 b1 b2 b3 b1m b2m b3m alat esub asub
|
||||
# - t0 t1 t2 t3 t1m t2m t3m rozero ibar
|
||||
# NOTE: leading character cannot be a space
|
||||
|
||||
'H' 'dim' 1.0 1 1.0079
|
||||
2.960 2.960 3.0 1.0 1.0 1.0 3.0 1.0 0.741 2.235 2.50
|
||||
1.0 0.44721 0.0 0.00 0.0 0.31623 0 6.70 0
|
||||
|
||||
'Ga4' 'fcc' 12.0 31 69.723
|
||||
4.42 4.80 3.10 6.00 0.00 0.0 0.0 0.5 4.247 2.897 0.97
|
||||
1.0 1.649 1.435 0.00 0.0 0.0 2.0 0.70 0
|
||||
126
examples/meam/msmeam/log.1Mar2024.msmeam.g++.1
Normal file
@ -0,0 +1,126 @@
|
||||
LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-182-g93942f2013-modified)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Test of MEAM potential for HGa
|
||||
|
||||
# ------------------------ INITIALIZATION ----------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
variable latparam equal 4.646
|
||||
variable ncell equal 3
|
||||
|
||||
# ----------------------- ATOM DEFINITION ----------------------------
|
||||
region box block -4 4 -4 4 -4 4
|
||||
create_box 2 box
|
||||
Created orthogonal box = (-4 -4 -4) to (4 4 4)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
|
||||
#
|
||||
|
||||
include potential.mod
|
||||
# NOTE: This script can be modified for different pair styles
|
||||
# See in.elastic for more info.
|
||||
|
||||
variable Pu string H
|
||||
print "potential chosen ${Pu}"
|
||||
potential chosen H
|
||||
# Choose potential
|
||||
pair_style meam/ms
|
||||
print "we just executed"
|
||||
we just executed
|
||||
|
||||
pair_coeff * * library.msmeam ${Pu} Ga4 HGa.msmeam ${Pu} Ga4
|
||||
pair_coeff * * library.msmeam H Ga4 HGa.msmeam ${Pu} Ga4
|
||||
pair_coeff * * library.msmeam H Ga4 HGa.msmeam H Ga4
|
||||
Reading MEAM library file library.msmeam with DATE: 2018-09-22
|
||||
# Setup neighbor style
|
||||
neighbor 1.0 bin
|
||||
neigh_modify once no every 1 delay 0 check yes
|
||||
|
||||
# Setup minimization style
|
||||
variable dmax equal 1.0e-2
|
||||
min_style cg
|
||||
min_modify dmax ${dmax} line quadratic
|
||||
min_modify dmax 0.01 line quadratic
|
||||
compute eng all pe/atom
|
||||
compute eatoms all reduce sum c_eng
|
||||
|
||||
# Setup output
|
||||
thermo 100
|
||||
thermo_style custom step temp etotal press pxx pyy pzz pxy pxz pyz lx ly lz vol c_eatoms
|
||||
thermo_modify norm yes
|
||||
create_atoms 1 single 0 0 0 units box
|
||||
Created 1 atoms
|
||||
using box units in orthogonal box = (-4 -4 -4) to (4 4 4)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
create_atoms 2 single 2.2 0 0 units box
|
||||
Created 1 atoms
|
||||
using box units in orthogonal box = (-4 -4 -4) to (4 4 4)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
create_atoms 2 single 0.3 2.3 0 units box
|
||||
Created 1 atoms
|
||||
using box units in orthogonal box = (-4 -4 -4) to (4 4 4)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
# ---------- Define Settings ---------------------
|
||||
variable teng equal "c_eatoms"
|
||||
compute pot_energy all pe/atom
|
||||
compute stress all stress/atom NULL
|
||||
# dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6]
|
||||
run 1
|
||||
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.9
|
||||
ghost atom cutoff = 6.9
|
||||
binsize = 3.45, bins = 3 3 3
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair meam/ms, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair meam/ms, perpetual, half/full from (1)
|
||||
attributes: half, newton on
|
||||
pair build: halffull/newton
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.587 | 8.587 | 8.587 Mbytes
|
||||
Step Temp TotEng Press Pxx Pyy Pzz Pxy Pxz Pyz Lx Ly Lz Volume c_eatoms
|
||||
0 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079
|
||||
1 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079
|
||||
Loop time of 4.4446e-05 on 1 procs for 1 steps with 3 atoms
|
||||
|
||||
Performance: 1943.932 ns/day, 0.012 hours/ns, 22499.213 timesteps/s, 67.498 katom-step/s
|
||||
31.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 2.9908e-05 | 2.9908e-05 | 2.9908e-05 | 0.0 | 67.29
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 1.033e-06 | 1.033e-06 | 1.033e-06 | 0.0 | 2.32
|
||||
Output | 9.347e-06 | 9.347e-06 | 9.347e-06 | 0.0 | 21.03
|
||||
Modify | 2.02e-07 | 2.02e-07 | 2.02e-07 | 0.0 | 0.45
|
||||
Other | | 3.956e-06 | | | 8.90
|
||||
|
||||
Nlocal: 3 ave 3 max 3 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 78 ave 78 max 78 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 7 ave 7 max 7 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 14 ave 14 max 14 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 14
|
||||
Ave neighs/atom = 4.6666667
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
#write_data data.msmeam
|
||||
|
||||
print "All done!"
|
||||
All done!
|
||||
Total wall time: 0:00:00
|
||||
126
examples/meam/msmeam/log.1Mar2024.msmeam.g++.4
Normal file
@ -0,0 +1,126 @@
|
||||
LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-182-g93942f2013-modified)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Test of MEAM potential for HGa
|
||||
|
||||
# ------------------------ INITIALIZATION ----------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
variable latparam equal 4.646
|
||||
variable ncell equal 3
|
||||
|
||||
# ----------------------- ATOM DEFINITION ----------------------------
|
||||
region box block -4 4 -4 4 -4 4
|
||||
create_box 2 box
|
||||
Created orthogonal box = (-4 -4 -4) to (4 4 4)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
|
||||
#
|
||||
|
||||
include potential.mod
|
||||
# NOTE: This script can be modified for different pair styles
|
||||
# See in.elastic for more info.
|
||||
|
||||
variable Pu string H
|
||||
print "potential chosen ${Pu}"
|
||||
potential chosen H
|
||||
# Choose potential
|
||||
pair_style meam/ms
|
||||
print "we just executed"
|
||||
we just executed
|
||||
|
||||
pair_coeff * * library.msmeam ${Pu} Ga4 HGa.msmeam ${Pu} Ga4
|
||||
pair_coeff * * library.msmeam H Ga4 HGa.msmeam ${Pu} Ga4
|
||||
pair_coeff * * library.msmeam H Ga4 HGa.msmeam H Ga4
|
||||
Reading MEAM library file library.msmeam with DATE: 2018-09-22
|
||||
# Setup neighbor style
|
||||
neighbor 1.0 bin
|
||||
neigh_modify once no every 1 delay 0 check yes
|
||||
|
||||
# Setup minimization style
|
||||
variable dmax equal 1.0e-2
|
||||
min_style cg
|
||||
min_modify dmax ${dmax} line quadratic
|
||||
min_modify dmax 0.01 line quadratic
|
||||
compute eng all pe/atom
|
||||
compute eatoms all reduce sum c_eng
|
||||
|
||||
# Setup output
|
||||
thermo 100
|
||||
thermo_style custom step temp etotal press pxx pyy pzz pxy pxz pyz lx ly lz vol c_eatoms
|
||||
thermo_modify norm yes
|
||||
create_atoms 1 single 0 0 0 units box
|
||||
Created 1 atoms
|
||||
using box units in orthogonal box = (-4 -4 -4) to (4 4 4)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
create_atoms 2 single 2.2 0 0 units box
|
||||
Created 1 atoms
|
||||
using box units in orthogonal box = (-4 -4 -4) to (4 4 4)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
create_atoms 2 single 0.3 2.3 0 units box
|
||||
Created 1 atoms
|
||||
using box units in orthogonal box = (-4 -4 -4) to (4 4 4)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
# ---------- Define Settings ---------------------
|
||||
variable teng equal "c_eatoms"
|
||||
compute pot_energy all pe/atom
|
||||
compute stress all stress/atom NULL
|
||||
# dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6]
|
||||
run 1
|
||||
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.9
|
||||
ghost atom cutoff = 6.9
|
||||
binsize = 3.45, bins = 3 3 3
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair meam/ms, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair meam/ms, perpetual, half/full from (1)
|
||||
attributes: half, newton on
|
||||
pair build: halffull/newton
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 7.965 | 8.123 | 8.594 Mbytes
|
||||
Step Temp TotEng Press Pxx Pyy Pzz Pxy Pxz Pyz Lx Ly Lz Volume c_eatoms
|
||||
0 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079
|
||||
1 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079
|
||||
Loop time of 8.70645e-05 on 4 procs for 1 steps with 3 atoms
|
||||
|
||||
Performance: 992.368 ns/day, 0.024 hours/ns, 11485.738 timesteps/s, 34.457 katom-step/s
|
||||
29.0% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.3957e-05 | 4.67e-05 | 5.1056e-05 | 0.0 | 53.64
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 1.105e-05 | 1.3822e-05 | 1.7033e-05 | 0.0 | 15.88
|
||||
Output | 1.5765e-05 | 1.9045e-05 | 2.5216e-05 | 0.0 | 21.87
|
||||
Modify | 2.58e-07 | 3.465e-07 | 3.81e-07 | 0.0 | 0.40
|
||||
Other | | 7.151e-06 | | | 8.21
|
||||
|
||||
Nlocal: 0.75 ave 3 max 0 min
|
||||
Histogram: 3 0 0 0 0 0 0 0 0 1
|
||||
Nghost: 38.25 ave 42 max 36 min
|
||||
Histogram: 2 0 0 0 0 1 0 0 0 1
|
||||
Neighs: 1.75 ave 7 max 0 min
|
||||
Histogram: 3 0 0 0 0 0 0 0 0 1
|
||||
FullNghs: 3.5 ave 14 max 0 min
|
||||
Histogram: 3 0 0 0 0 0 0 0 0 1
|
||||
|
||||
Total # of neighbors = 14
|
||||
Ave neighs/atom = 4.6666667
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
#write_data data.msmeam
|
||||
|
||||
print "All done!"
|
||||
All done!
|
||||
Total wall time: 0:00:00
|
||||
@ -1,107 +0,0 @@
|
||||
# Test of MEAM potential for HGa
|
||||
|
||||
# ------------------------ INITIALIZATION ----------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
variable latparam equal 4.646
|
||||
variable ncell equal 3
|
||||
|
||||
# ----------------------- ATOM DEFINITION ----------------------------
|
||||
region box block -4 4 -4 4 -4 4
|
||||
create_box 2 box
|
||||
Created orthogonal box = (-4 -4 -4) to (4 4 4)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
|
||||
#
|
||||
|
||||
include potential.mod
|
||||
# NOTE: This script can be modified for different pair styles
|
||||
# See in.elastic for more info.
|
||||
|
||||
variable Pu string H
|
||||
print "potential chosen ${Pu}"
|
||||
potential chosen H
|
||||
# Choose potential
|
||||
pair_style MSmeam
|
||||
print "we just executed"
|
||||
we just executed
|
||||
|
||||
pair_coeff * * library.MSmeam ${Pu} Ga4 HGaMS.meam ${Pu} Ga4
|
||||
pair_coeff * * library.MSmeam H Ga4 HGaMS.meam ${Pu} Ga4
|
||||
pair_coeff * * library.MSmeam H Ga4 HGaMS.meam H Ga4
|
||||
Reading potential file library.MSmeam with DATE: 2018-09-22
|
||||
# Setup neighbor style
|
||||
neighbor 1.0 nsq
|
||||
neigh_modify once no every 1 delay 0 check yes
|
||||
|
||||
# Setup minimization style
|
||||
variable dmax equal 1.0e-2
|
||||
min_style cg
|
||||
min_modify dmax ${dmax} line quadratic
|
||||
min_modify dmax 0.01 line quadratic
|
||||
compute eng all pe/atom
|
||||
compute eatoms all reduce sum c_eng
|
||||
|
||||
# Setup output
|
||||
thermo 100
|
||||
thermo_style custom step temp etotal press pxx pyy pzz pxy pxz pyz lx ly lz vol c_eatoms
|
||||
thermo_modify norm yes
|
||||
create_atoms 1 single 0 0 0 units box
|
||||
Created 1 atoms
|
||||
create_atoms 2 single 2.2 0 0 units box
|
||||
Created 1 atoms
|
||||
create_atoms 2 single 0.3 2.3 0 units box
|
||||
Created 1 atoms
|
||||
# ---------- Define Settings ---------------------
|
||||
variable teng equal "c_eatoms"
|
||||
compute pot_energy all pe/atom
|
||||
compute stress all stress/atom NULL
|
||||
dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6]
|
||||
run 1
|
||||
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
|
||||
Neighbor list info ...
|
||||
2 neighbor list requests
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.9
|
||||
ghost atom cutoff = 6.9
|
||||
Memory usage per processor = 12.9295 Mbytes
|
||||
Step Temp TotEng Press Pxx Pyy Pzz Pxy Pxz Pyz Lx Ly Lz Volume eatoms
|
||||
0 0 15.433079 491354.68 838670.91 635393.13 0 80195.793 0 0 8 8 8 512 15.433079
|
||||
1 0 15.433079 491354.68 838670.91 635393.13 0 80195.793 0 0 8 8 8 512 15.433079
|
||||
Loop time of 0.000172138 on 1 procs for 1 steps with 3 atoms
|
||||
|
||||
Performance: 501.922 ns/day, 0.048 hours/ns, 5809.285 timesteps/s
|
||||
81.3% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 6.6996e-05 | 6.6996e-05 | 6.6996e-05 | 0.0 | 38.92
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 1.9073e-06 | 1.9073e-06 | 1.9073e-06 | 0.0 | 1.11
|
||||
Output | 9.7036e-05 | 9.7036e-05 | 9.7036e-05 | 0.0 | 56.37
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 6.199e-06 | | | 3.60
|
||||
|
||||
Nlocal: 3 ave 3 max 3 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 78 ave 78 max 78 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 7 ave 7 max 7 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 14 ave 14 max 14 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 14
|
||||
Ave neighs/atom = 4.66667
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
write_data data.msmeam
|
||||
|
||||
print "All done!"
|
||||
All done!
|
||||
Total wall time: 0:00:00
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
ITEM: TIMESTEP
|
||||
0
|
||||
ITEM: NUMBER OF ATOMS
|
||||
3
|
||||
ITEM: BOX BOUNDS pp pp pp
|
||||
-4 4
|
||||
-4 4
|
||||
-4 4
|
||||
ITEM: ATOMS id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6]
|
||||
1 0 0 0 -131.925 -88.3005 0 22.9153 -2.147e+08 -1.62661e+08 -0 -2.05301e+07 -0 -0
|
||||
2 2.2 0 0 120.809 -0.482171 0 14.7692 -2.12028e+08 -0 -0 403352 -0 -0
|
||||
3 0.3 2.3 0 11.1159 88.7827 0 8.61478 -2.67145e+06 -1.62661e+08 -0 -2.09335e+07 -0 -0
|
||||
ITEM: TIMESTEP
|
||||
1
|
||||
ITEM: NUMBER OF ATOMS
|
||||
3
|
||||
ITEM: BOX BOUNDS pp pp pp
|
||||
-4 4
|
||||
-4 4
|
||||
-4 4
|
||||
ITEM: ATOMS id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6]
|
||||
1 0 0 0 -131.925 -88.3005 0 22.9153 -2.147e+08 -1.62661e+08 -0 -2.05301e+07 -0 -0
|
||||
2 2.2 0 0 120.809 -0.482171 0 14.7692 -2.12028e+08 -0 -0 403352 -0 -0
|
||||
3 0.3 2.3 0 11.1159 88.7827 0 8.61478 -2.67145e+06 -1.62661e+08 -0 -2.09335e+07 -0 -0
|
||||
@ -7,7 +7,7 @@ print "potential chosen ${Pu}"
|
||||
pair_style meam/ms
|
||||
print "we just executed"
|
||||
|
||||
pair_coeff * * library.msmeam ${Pu} Ga4 HGa.meam ${Pu} Ga4
|
||||
pair_coeff * * library.msmeam ${Pu} Ga4 HGa.msmeam ${Pu} Ga4
|
||||
# Setup neighbor style
|
||||
neighbor 1.0 bin
|
||||
neigh_modify once no every 1 delay 0 check yes
|
||||
|
||||
@ -23,7 +23,7 @@ class WavePacket;
|
||||
|
||||
///\en Template for v=der operation in \ref Wavepacket::int2phys_der()
|
||||
template<class Type>
|
||||
struct eq_second : public binary_function <Type, Type, Type> {
|
||||
struct eq_second {
|
||||
Type operator()(const Type& /* _Left */, const Type& _Right) const{
|
||||
return _Right;
|
||||
}
|
||||
@ -31,7 +31,7 @@ struct eq_second : public binary_function <Type, Type, Type> {
|
||||
|
||||
///\en Template for v=-der operation in \ref Wavepacket::int2phys_der()
|
||||
template<class Type>
|
||||
struct eq_minus_second : public binary_function <Type, Type, Type> {
|
||||
struct eq_minus_second {
|
||||
Type operator()(const Type& /* _Left */, const Type& _Right) const{
|
||||
return -_Right;
|
||||
}
|
||||
|
||||
@ -30,6 +30,7 @@ colvar::colvar()
|
||||
after_restart = false;
|
||||
kinetic_energy = 0.0;
|
||||
potential_energy = 0.0;
|
||||
period = 0.0;
|
||||
|
||||
#ifdef LEPTON
|
||||
dev_null = 0.0;
|
||||
|
||||
@ -138,7 +138,7 @@ class UCL_Device {
|
||||
/** \note You cannot delete the default stream **/
|
||||
inline void pop_command_queue() {
|
||||
if (_cq.size()<2) return;
|
||||
CU_SAFE_CALL_NS(cuStreamDestroy(_cq.back()));
|
||||
cuStreamDestroy(_cq.back());
|
||||
_cq.pop_back();
|
||||
}
|
||||
|
||||
@ -426,8 +426,8 @@ void UCL_Device::clear() {
|
||||
if (_device>-1) {
|
||||
for (int i=1; i<num_queues(); i++) pop_command_queue();
|
||||
#if GERYON_NVD_PRIMARY_CONTEXT
|
||||
CU_SAFE_CALL_NS(cuCtxSetCurrent(_old_context));
|
||||
CU_SAFE_CALL_NS(cuDevicePrimaryCtxRelease(_cu_device));
|
||||
cuCtxSetCurrent(_old_context);
|
||||
cuDevicePrimaryCtxRelease(_cu_device);
|
||||
#else
|
||||
cuCtxDestroy(_context);
|
||||
#endif
|
||||
|
||||
@ -301,9 +301,10 @@ __kernel void k_dpd_fast(const __global numtyp4 *restrict x_,
|
||||
__local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES];
|
||||
__local numtyp sp_lj[4];
|
||||
__local numtyp sp_sqrt[4];
|
||||
if (tid<4)
|
||||
if (tid<4) {
|
||||
sp_lj[tid]=sp_lj_in[tid];
|
||||
sp_sqrt[tid]=sp_sqrt_in[tid];
|
||||
}
|
||||
if (tid<MAX_SHARED_TYPES*MAX_SHARED_TYPES) {
|
||||
coeff[tid]=coeff_in[tid];
|
||||
}
|
||||
|
||||
@ -31,8 +31,8 @@ checksums = { \
|
||||
# help message
|
||||
|
||||
HELP = """
|
||||
Syntax from src dir: make lib-smd args="-b"
|
||||
or: make lib-smd args="-p /usr/include/eigen3"
|
||||
Syntax from src dir: make lib-machdyn args="-b"
|
||||
or: make lib-machdyn args="-p /usr/include/eigen3"
|
||||
|
||||
Syntax from lib dir: python Install.py -b
|
||||
or: python Install.py -p /usr/include/eigen3"
|
||||
@ -40,8 +40,8 @@ Syntax from lib dir: python Install.py -b
|
||||
|
||||
Example:
|
||||
|
||||
make lib-smd args="-b" # download/build in default lib/smd/eigen-eigen-*
|
||||
make lib-smd args="-p /usr/include/eigen3" # use existing Eigen installation in /usr/include/eigen3
|
||||
make lib-machdyn args="-b" # download/build in default lib/machdyn/eigen-eigen-*
|
||||
make lib-machdyn args="-p /usr/include/eigen3" # use existing Eigen installation in /usr/include/eigen3
|
||||
"""
|
||||
|
||||
pgroup = parser.add_mutually_exclusive_group()
|
||||
@ -105,7 +105,7 @@ if buildflag:
|
||||
edir = os.path.join(homepath, "eigen-%s" % version)
|
||||
os.rename(edir, eigenpath)
|
||||
|
||||
# create link in lib/smd to Eigen src dir
|
||||
# create link in lib/machdyn to Eigen src dir
|
||||
|
||||
print("Creating link to Eigen include folder")
|
||||
if os.path.isfile("includelink") or os.path.islink("includelink"):
|
||||
|
||||
@ -4,7 +4,7 @@ to use the MACHDYN package in a LAMMPS input script.
|
||||
The Eigen library is available at http://eigen.tuxfamily.org. It's
|
||||
a general C++ template library for linear algebra.
|
||||
|
||||
You can type "make lib-smd" from the src directory to see help on how
|
||||
You can type "make lib-machdyn" from the src directory to see help on how
|
||||
to download build this library via make commands, or you can do the
|
||||
same thing by typing "python Install.py" from within this directory,
|
||||
or you can do it manually by following the instructions below.
|
||||
@ -12,13 +12,13 @@ or you can do it manually by following the instructions below.
|
||||
Instructions:
|
||||
|
||||
1. Download the Eigen tarball at http://eigen.tuxfamily.org and
|
||||
unpack the tarball either in this /lib/smd directory or somewhere
|
||||
unpack the tarball either in this lib/machdyn directory or somewhere
|
||||
else on your system. It should unpack with into a directory with
|
||||
a name similar to eigen-eigen-bdd17ee3b1b3. You can rename
|
||||
the directory to just "eigen" if you wish. Note that Eigen is a
|
||||
template library, so you do not have to build it.
|
||||
|
||||
2. Create a soft link in this dir (lib/smd)
|
||||
2. Create a soft link in this dir (lib/machdyn)
|
||||
to the eigen directory. E.g if you unpacked Eigen in this dir:
|
||||
% ln -s eigen-eigen-bdd17ee3b1b3 includelink
|
||||
If you unpacked Eigen somewhere else and renamed
|
||||
|
||||
@ -32,7 +32,7 @@ make lib-mdi args="-m mpi" # build MDI lib with same settings as in the mpi Make
|
||||
|
||||
# settings
|
||||
|
||||
version = "1.4.16"
|
||||
version = "1.4.26"
|
||||
url = "https://github.com/MolSSI-MDI/MDI_Library/archive/v%s.tar.gz" % version
|
||||
|
||||
# known checksums for different MDI versions. used to validate the download.
|
||||
@ -41,6 +41,7 @@ checksums = { \
|
||||
'1.4.12' : '7a222353ae8e03961d5365e6cd48baee', \
|
||||
'1.4.14' : '7a059bb12535360fdcb7de8402f9a0fc', \
|
||||
'1.4.16' : '407db44e2d79447ab5c1233af1965f65', \
|
||||
'1.4.26' : '3124bb85259471e2a53a891f04bf697a', \
|
||||
}
|
||||
|
||||
# print error message or help
|
||||
|
||||
@ -18,11 +18,11 @@ from install_helpers import fullpath, geturl, checkmd5sum, getfallback
|
||||
# settings
|
||||
|
||||
thisdir = fullpath('.')
|
||||
version ='v.2023.01.3.fix'
|
||||
version ='v.2023.10.04'
|
||||
|
||||
# known checksums for different PACE versions. used to validate the download.
|
||||
checksums = { \
|
||||
'v.2023.01.3.fix': '4f0b3b5b14456fe9a73b447de3765caa'
|
||||
'v.2023.10.04': '70ff79f4e59af175e55d24f3243ad1ff'
|
||||
}
|
||||
|
||||
parser = ArgumentParser(prog='Install.py', description="LAMMPS library build wrapper script")
|
||||
|
||||
@ -1,7 +1,14 @@
|
||||
# Settings that the LAMMPS build will import when this package library is used
|
||||
# See the README file for more explanation
|
||||
|
||||
python_SYSINC = $(shell which python-config > /dev/null 2>&1 && python-config --includes || :)
|
||||
python_SYSLIB = $(shell which python-config > /dev/null 2>&1 && python-config --ldflags --embed > /dev/null 2>&1 && python-config --ldflags --embed || (which python-config > /dev/null 2>&1 && python-config --ldflags || :) )
|
||||
python_SYSPATH =
|
||||
ifeq ($(shell type python3 >/dev/null 2>&1; echo $$?), 0)
|
||||
PYTHON=python3
|
||||
PYTHONCONFIG = python3-config
|
||||
else
|
||||
PYTHONCONFIG = python-config
|
||||
PYTHON=python
|
||||
endif
|
||||
|
||||
|
||||
python_SYSINC = $(shell which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --includes || :)
|
||||
python_SYSLIB = $(shell which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags --embed > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags --embed || (which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags || :) )
|
||||
python_SYSPATH =
|
||||
|
||||
@ -2,7 +2,7 @@ bkgd_dyn = 1
|
||||
emb_lin_neg = 1
|
||||
augt1=0
|
||||
ialloy=1
|
||||
rc = 5.9
|
||||
rc = 5.9
|
||||
#H
|
||||
attrac(1,1)=0.460
|
||||
repuls(1,1)=0.460
|
||||
|
||||
@ -18,7 +18,7 @@ parser = ArgumentParser(prog='install.py',
|
||||
description='LAMMPS python package installer script')
|
||||
|
||||
parser.add_argument("-p", "--package", required=True,
|
||||
help="path to the LAMMPS Python package")
|
||||
help="path to the LAMMPS Python package folder")
|
||||
parser.add_argument("-l", "--lib", required=True,
|
||||
help="path to the compiled LAMMPS shared library")
|
||||
parser.add_argument("-n", "--noinstall", action="store_true", default=False,
|
||||
@ -34,15 +34,21 @@ args = parser.parse_args()
|
||||
|
||||
if args.package:
|
||||
if not os.path.exists(args.package):
|
||||
print("ERROR: LAMMPS package folder %s does not exist" % args.package)
|
||||
print("\nERROR: LAMMPS package folder %s does not exist\n" % args.package)
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
else:
|
||||
args.package = os.path.abspath(args.package)
|
||||
if ((os.path.basename(args.package) != "lammps")
|
||||
and ((os.path.basename(os.path.dirname(args.package)) != "python"))):
|
||||
print("\nERROR: LAMMPS package folder path %s does not end in %s\n"
|
||||
% (args.package, os.path.join("python", "lammps")))
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
|
||||
if args.lib:
|
||||
if not os.path.exists(args.lib):
|
||||
print("ERROR: LAMMPS shared library %s does not exist" % args.lib)
|
||||
print("\nERROR: LAMMPS shared library %s does not exist\n" % args.lib)
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
else:
|
||||
@ -50,7 +56,7 @@ if args.lib:
|
||||
|
||||
if args.wheeldir:
|
||||
if not os.path.exists(args.wheeldir):
|
||||
print("ERROR: directory %s to store the wheel does not exist" % args.wheeldir)
|
||||
print("\nERROR: directory %s to store the wheel does not exist\n" % args.wheeldir)
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
else:
|
||||
@ -58,7 +64,7 @@ if args.wheeldir:
|
||||
|
||||
if args.versionfile:
|
||||
if not os.path.exists(args.versionfile):
|
||||
print("ERROR: LAMMPS version file at %s does not exist" % args.versionfile)
|
||||
print("\nERROR: LAMMPS version file at %s does not exist\n" % args.versionfile)
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
else:
|
||||
|
||||
@ -379,8 +379,9 @@ class lammps(object):
|
||||
for i in range(narg):
|
||||
if type(cmdargs[i]) is str:
|
||||
cmdargs[i] = cmdargs[i].encode()
|
||||
cargs = (c_char_p*narg)(*cmdargs)
|
||||
self.lib.lammps_open.argtypes = [c_int, c_char_p*narg, MPI_Comm, c_void_p]
|
||||
cargs = (c_char_p*(narg+1))(*cmdargs)
|
||||
cargs[narg] = None
|
||||
self.lib.lammps_open.argtypes = [c_int, c_char_p*(narg+1), MPI_Comm, c_void_p]
|
||||
else:
|
||||
self.lib.lammps_open.argtypes = [c_int, c_char_p, MPI_Comm, c_void_p]
|
||||
|
||||
@ -399,8 +400,9 @@ class lammps(object):
|
||||
for i in range(narg):
|
||||
if type(cmdargs[i]) is str:
|
||||
cmdargs[i] = cmdargs[i].encode()
|
||||
cargs = (c_char_p*narg)(*cmdargs)
|
||||
self.lib.lammps_open_no_mpi.argtypes = [c_int, c_char_p*narg, c_void_p]
|
||||
cargs = (c_char_p*(narg+1))(*cmdargs)
|
||||
cargs[narg] = None
|
||||
self.lib.lammps_open_no_mpi.argtypes = [c_int, c_char_p*(narg+1), c_void_p]
|
||||
self.lmp = c_void_p(self.lib.lammps_open_no_mpi(narg,cargs,None))
|
||||
else:
|
||||
self.lib.lammps_open_no_mpi.argtypes = [c_int, c_char_p, c_void_p]
|
||||
|
||||
@ -63,12 +63,16 @@ class numpy_wrapper:
|
||||
|
||||
.. note::
|
||||
|
||||
While the returned arrays of per-atom data are dimensioned
|
||||
for the range [0:nmax] - as is the underlying storage -
|
||||
the data is usually only valid for the range of [0:nlocal],
|
||||
unless the property of interest is also updated for ghost
|
||||
atoms. In some cases, this depends on a LAMMPS setting, see
|
||||
for example :doc:`comm_modify vel yes <comm_modify>`.
|
||||
The returned arrays of per-atom data are by default dimensioned
|
||||
for the range [0:nlocal] since that data is *always* valid. The
|
||||
underlying storage for the data, however, is typically allocated
|
||||
for the range of [0:nmax]. Whether there is valid data in the range
|
||||
[nlocal:nlocal+nghost] depends on whether the property of interest
|
||||
is also updated for ghost atoms. This is not often the case. In
|
||||
some cases, it depends on a LAMMPS setting, see for example
|
||||
:doc:`comm_modify vel yes <comm_modify>`. By using the optional
|
||||
*nelem* parameter the size of the returned NumPy can be overridden.
|
||||
There is no check whether the number of elements chosen is valid.
|
||||
|
||||
:param name: name of the property
|
||||
:type name: string
|
||||
|
||||
@ -281,8 +281,8 @@ void DumpAtomADIOS::init_style()
|
||||
auto nstreams = std::to_string(num_aggregators);
|
||||
internal->io.SetParameters({{"substreams", nstreams}});
|
||||
if (me == 0)
|
||||
utils::logmesg(lmp, "ADIOS method for {} is n-to-m (aggregation with {} writers)\n", filename,
|
||||
nstreams);
|
||||
utils::logmesg(lmp, "ADIOS method for {} is n-to-m (aggregation with {} writers)\n",
|
||||
filename, nstreams);
|
||||
}
|
||||
|
||||
internal->io.DefineVariable<uint64_t>("ntimestep");
|
||||
@ -325,6 +325,6 @@ void DumpAtomADIOS::init_style()
|
||||
// it will be correctly defined at the moment of write
|
||||
size_t UnknownSizeYet = 1;
|
||||
internal->varAtoms = internal->io.DefineVariable<double>(
|
||||
"atoms", {UnknownSizeYet, nColumns}, {UnknownSizeYet, 0}, {UnknownSizeYet, nColumns});
|
||||
"atoms", {UnknownSizeYet, nColumns}, {UnknownSizeYet, 0}, {UnknownSizeYet, nColumns});
|
||||
}
|
||||
}
|
||||
|
||||
@ -290,58 +290,60 @@ void DumpCustomADIOS::init_style()
|
||||
|
||||
/* Define the group of variables for the atom style here since it's a fixed
|
||||
* set */
|
||||
internal->io = internal->ad->DeclareIO(internal->ioName);
|
||||
if (!internal->io.InConfigFile()) {
|
||||
// if not defined by user, we can change the default settings
|
||||
// BPFile is the default writer
|
||||
internal->io.SetEngine("BPFile");
|
||||
int num_aggregators = multiproc;
|
||||
if (num_aggregators == 0) num_aggregators = 1;
|
||||
auto nstreams = std::to_string(num_aggregators);
|
||||
internal->io.SetParameters({{"substreams", nstreams}});
|
||||
if (me == 0)
|
||||
utils::logmesg(lmp, "ADIOS method for {} is n-to-m (aggregation with {} writers)\n", filename,
|
||||
nstreams);
|
||||
if (!internal->io) {
|
||||
internal->io = internal->ad->DeclareIO(internal->ioName);
|
||||
if (!internal->io.InConfigFile()) {
|
||||
// if not defined by user, we can change the default settings
|
||||
// BPFile is the default writer
|
||||
internal->io.SetEngine("BPFile");
|
||||
int num_aggregators = multiproc;
|
||||
if (num_aggregators == 0) num_aggregators = 1;
|
||||
auto nstreams = std::to_string(num_aggregators);
|
||||
internal->io.SetParameters({{"substreams", nstreams}});
|
||||
if (me == 0)
|
||||
utils::logmesg(lmp, "ADIOS method for {} is n-to-m (aggregation with {} writers)\n",
|
||||
filename, nstreams);
|
||||
}
|
||||
|
||||
internal->io.DefineVariable<uint64_t>("ntimestep");
|
||||
internal->io.DefineVariable<uint64_t>("natoms");
|
||||
|
||||
internal->io.DefineVariable<int>("nprocs");
|
||||
internal->io.DefineVariable<int>("ncolumns");
|
||||
|
||||
internal->io.DefineVariable<double>("boxxlo");
|
||||
internal->io.DefineVariable<double>("boxxhi");
|
||||
internal->io.DefineVariable<double>("boxylo");
|
||||
internal->io.DefineVariable<double>("boxyhi");
|
||||
internal->io.DefineVariable<double>("boxzlo");
|
||||
internal->io.DefineVariable<double>("boxzhi");
|
||||
|
||||
internal->io.DefineVariable<double>("boxxy");
|
||||
internal->io.DefineVariable<double>("boxxz");
|
||||
internal->io.DefineVariable<double>("boxyz");
|
||||
|
||||
internal->io.DefineAttribute<int>("triclinic", domain->triclinic);
|
||||
|
||||
int *boundaryptr = reinterpret_cast<int *>(domain->boundary);
|
||||
internal->io.DefineAttribute<int>("boundary", boundaryptr, 6);
|
||||
|
||||
auto nColumns = static_cast<size_t>(size_one);
|
||||
internal->io.DefineAttribute<std::string>("columns", internal->columnNames.data(), nColumns);
|
||||
internal->io.DefineAttribute<std::string>("columnstr", columns);
|
||||
internal->io.DefineAttribute<std::string>("boundarystr", boundstr);
|
||||
internal->io.DefineAttribute<std::string>("LAMMPS/dump_style", "custom");
|
||||
internal->io.DefineAttribute<std::string>("LAMMPS/version", lmp->version);
|
||||
internal->io.DefineAttribute<std::string>("LAMMPS/num_ver", std::to_string(lmp->num_ver));
|
||||
|
||||
internal->io.DefineVariable<uint64_t>("nme",
|
||||
{adios2::LocalValueDim}); // local dimension variable
|
||||
internal->io.DefineVariable<uint64_t>("offset",
|
||||
{adios2::LocalValueDim}); // local dimension variable
|
||||
|
||||
// atom table size is not known at the moment
|
||||
// it will be correctly defined at the moment of write
|
||||
size_t UnknownSizeYet = 1;
|
||||
internal->varAtoms = internal->io.DefineVariable<double>(
|
||||
"atoms", {UnknownSizeYet, nColumns}, {UnknownSizeYet, 0}, {UnknownSizeYet, nColumns});
|
||||
}
|
||||
|
||||
internal->io.DefineVariable<uint64_t>("ntimestep");
|
||||
internal->io.DefineVariable<uint64_t>("natoms");
|
||||
|
||||
internal->io.DefineVariable<int>("nprocs");
|
||||
internal->io.DefineVariable<int>("ncolumns");
|
||||
|
||||
internal->io.DefineVariable<double>("boxxlo");
|
||||
internal->io.DefineVariable<double>("boxxhi");
|
||||
internal->io.DefineVariable<double>("boxylo");
|
||||
internal->io.DefineVariable<double>("boxyhi");
|
||||
internal->io.DefineVariable<double>("boxzlo");
|
||||
internal->io.DefineVariable<double>("boxzhi");
|
||||
|
||||
internal->io.DefineVariable<double>("boxxy");
|
||||
internal->io.DefineVariable<double>("boxxz");
|
||||
internal->io.DefineVariable<double>("boxyz");
|
||||
|
||||
internal->io.DefineAttribute<int>("triclinic", domain->triclinic);
|
||||
|
||||
int *boundaryptr = reinterpret_cast<int *>(domain->boundary);
|
||||
internal->io.DefineAttribute<int>("boundary", boundaryptr, 6);
|
||||
|
||||
auto nColumns = static_cast<size_t>(size_one);
|
||||
internal->io.DefineAttribute<std::string>("columns", internal->columnNames.data(), nColumns);
|
||||
internal->io.DefineAttribute<std::string>("columnstr", columns);
|
||||
internal->io.DefineAttribute<std::string>("boundarystr", boundstr);
|
||||
internal->io.DefineAttribute<std::string>("LAMMPS/dump_style", "custom");
|
||||
internal->io.DefineAttribute<std::string>("LAMMPS/version", lmp->version);
|
||||
internal->io.DefineAttribute<std::string>("LAMMPS/num_ver", std::to_string(lmp->num_ver));
|
||||
|
||||
internal->io.DefineVariable<uint64_t>("nme",
|
||||
{adios2::LocalValueDim}); // local dimension variable
|
||||
internal->io.DefineVariable<uint64_t>("offset",
|
||||
{adios2::LocalValueDim}); // local dimension variable
|
||||
|
||||
// atom table size is not known at the moment
|
||||
// it will be correctly defined at the moment of write
|
||||
size_t UnknownSizeYet = 1;
|
||||
internal->varAtoms = internal->io.DefineVariable<double>(
|
||||
"atoms", {UnknownSizeYet, nColumns}, {UnknownSizeYet, 0}, {UnknownSizeYet, nColumns});
|
||||
}
|
||||
|
||||
@ -1024,7 +1024,10 @@ void FixBocs::final_integrate()
|
||||
|
||||
if (pstat_flag) {
|
||||
if (pstyle == ISO) pressure->compute_scalar();
|
||||
else pressure->compute_vector();
|
||||
else {
|
||||
temperature->compute_vector();
|
||||
pressure->compute_vector();
|
||||
}
|
||||
couple();
|
||||
pressure->addstep(update->ntimestep+1);
|
||||
}
|
||||
@ -1961,6 +1964,7 @@ void FixBocs::nhc_press_integrate()
|
||||
int ich,i,pdof;
|
||||
double expfac,factor_etap,kecurrent;
|
||||
double kt = boltz * t_target;
|
||||
double lkt_press;
|
||||
|
||||
// Update masses, to preserve initial freq, if flag set
|
||||
|
||||
@ -2006,7 +2010,8 @@ void FixBocs::nhc_press_integrate()
|
||||
}
|
||||
}
|
||||
|
||||
double lkt_press = pdof * kt;
|
||||
if (pstyle == ISO) lkt_press = kt;
|
||||
else lkt_press = pdof * kt;
|
||||
etap_dotdot[0] = (kecurrent - lkt_press)/etap_mass[0];
|
||||
|
||||
double ncfac = 1.0/nc_pchain;
|
||||
|
||||
@ -261,7 +261,7 @@ void ComputeXRD::init()
|
||||
double ang = 0.0;
|
||||
|
||||
double convf = 360 / MY_PI;
|
||||
if (radflag ==1) convf = 1;
|
||||
if (radflag == 1) convf = 2;
|
||||
|
||||
int n = 0;
|
||||
for (int m = 0; m < mmax; m++) {
|
||||
|
||||
@ -63,13 +63,20 @@ int FixMvvDPD::setmask()
|
||||
void FixMvvDPD::init()
|
||||
{
|
||||
if (!atom->vest_flag)
|
||||
error->all(FLERR,"Fix mvv/dpd requires atom attribute vest");
|
||||
error->all(FLERR,"Fix mvv/dpd requires atom attribute vest e.g. from atom style mdpd");
|
||||
|
||||
if (!force->pair_match("^mdpd",0) && !force->pair_match("^dpd",0)) {
|
||||
if (force->pair_match("^hybrid",0)) {
|
||||
if (!(force->pair_match("^mdpd",0,1) || force->pair_match("^dpd",0),1)) {
|
||||
error->all(FLERR, "Must use a dpd or mdpd pair style with fix mvv/dpd");
|
||||
}
|
||||
} else {
|
||||
error->all(FLERR, "Must use a dpd or mdpd pair style with fix mvv/dpd");
|
||||
}
|
||||
}
|
||||
|
||||
dtv = update->dt;
|
||||
dtf = 0.5 * update->dt * force->ftm2v;
|
||||
|
||||
if (!force->pair_match("^edpd",0) && !force->pair_match("^dpd",0))
|
||||
error->all(FLERR, "Must use a dpd or edpd pair style with fix mvv/edpd");
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
||||
@ -71,11 +71,20 @@ int FixMvvEDPD::setmask()
|
||||
|
||||
void FixMvvEDPD::init()
|
||||
{
|
||||
if (!atom->edpd_flag) error->all(FLERR,"Fix mvv/edpd requires atom style edpd");
|
||||
|
||||
if (!force->pair_match("^edpd",0)) {
|
||||
if (force->pair_match("^hybrid",0)) {
|
||||
if (!force->pair_match("^edpd",0,1)) {
|
||||
error->all(FLERR, "Must use pair style edpd with fix mvv/edpd");
|
||||
}
|
||||
} else {
|
||||
error->all(FLERR, "Must use pair style edpd with fix mvv/edpd");
|
||||
}
|
||||
}
|
||||
|
||||
dtv = update->dt;
|
||||
dtf = 0.5 * update->dt * force->ftm2v;
|
||||
|
||||
if (!force->pair_match("^edpd",0))
|
||||
error->all(FLERR, "Must use pair style edpd with fix mvv/edpd");
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
||||
@ -69,10 +69,20 @@ int FixMvvTDPD::setmask()
|
||||
|
||||
void FixMvvTDPD::init()
|
||||
{
|
||||
if (!atom->tdpd_flag) error->all(FLERR,"Fix mvv/tdpd requires atom style tdpd");
|
||||
|
||||
if (!force->pair_match("^tdpd",0)) {
|
||||
if (force->pair_match("^hybrid",0)) {
|
||||
if (!force->pair_match("^tdpd",0,1)) {
|
||||
error->all(FLERR, "Must use pair style tdpd with fix mvv/tdpd");
|
||||
}
|
||||
} else {
|
||||
error->all(FLERR, "Must use pair style tdpd with fix mvv/tdpd");
|
||||
}
|
||||
}
|
||||
|
||||
dtv = update->dt;
|
||||
dtf = 0.5 * update->dt * force->ftm2v;
|
||||
if (!force->pair_match("^tdpd",0))
|
||||
error->all(FLERR, "Must use pair style tdpd with fix mvv/tdpd");
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
||||
@ -64,6 +64,7 @@ fi
|
||||
|
||||
if (test $1 = "COLLOID") then
|
||||
depend GPU
|
||||
depend KOKKOS
|
||||
depend OPENMP
|
||||
fi
|
||||
|
||||
@ -150,6 +151,7 @@ if (test $1 = "MOLECULE") then
|
||||
depend GPU
|
||||
depend KOKKOS
|
||||
depend FEP
|
||||
depend MESONT
|
||||
depend OPENMP
|
||||
depend INTEL
|
||||
fi
|
||||
|
||||
@ -137,7 +137,7 @@ void FixLangevinEff::post_force_no_tally()
|
||||
dof = domain->dimension * particles;
|
||||
fix_dof = 0;
|
||||
for (int i = 0; i < modify->nfix; i++)
|
||||
fix_dof += modify->fix[i]->dof(igroup);
|
||||
fix_dof += (int)modify->fix[i]->dof(igroup);
|
||||
|
||||
// extra_dof = domain->dimension
|
||||
dof -= domain->dimension + fix_dof;
|
||||
@ -306,7 +306,7 @@ void FixLangevinEff::post_force_tally()
|
||||
dof = domain->dimension * particles;
|
||||
fix_dof = 0;
|
||||
for (int i = 0; i < modify->nfix; i++)
|
||||
fix_dof += modify->fix[i]->dof(igroup);
|
||||
fix_dof += (int)modify->fix[i]->dof(igroup);
|
||||
|
||||
// extra_dof = domain->dimension
|
||||
dof -= domain->dimension + fix_dof;
|
||||
|
||||
@ -633,7 +633,9 @@ void PPPMElectrode::project_psi(double *vec, int sensor_grpbit)
|
||||
// project u_brick with weight matrix
|
||||
double **x = atom->x;
|
||||
int *mask = atom->mask;
|
||||
double const scaleinv = 1.0 / (nx_pppm * ny_pppm * nz_pppm);
|
||||
const bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm;
|
||||
const double scaleinv = 1.0 / ngridtotal;
|
||||
|
||||
for (int i = 0; i < atom->nlocal; i++) {
|
||||
if (!(mask[i] & sensor_grpbit)) continue;
|
||||
double v = 0.;
|
||||
@ -1362,7 +1364,7 @@ double PPPMElectrode::compute_qopt()
|
||||
// each proc calculates contributions from every Pth grid point
|
||||
|
||||
bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm;
|
||||
int nxy_pppm = nx_pppm * ny_pppm;
|
||||
bigint nxy_pppm = (bigint) nx_pppm * ny_pppm;
|
||||
|
||||
double qopt = 0.0;
|
||||
|
||||
|
||||
@ -24,6 +24,8 @@
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
static constexpr char special_chars[] = "{}[],&:*#?|-<>=!%@\\";
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
DumpYAML::DumpYAML(class LAMMPS *_lmp, int narg, char **args) :
|
||||
DumpCustom(_lmp, narg, args), thermo(false)
|
||||
@ -67,7 +69,12 @@ void DumpYAML::write_header(bigint ndump)
|
||||
const auto &fields = th->get_fields();
|
||||
|
||||
thermo_data += "thermo:\n - keywords: [ ";
|
||||
for (int i = 0; i < nfield; ++i) thermo_data += fmt::format("{}, ", keywords[i]);
|
||||
for (int i = 0; i < nfield; ++i) {
|
||||
if (keywords[i].find_first_of(special_chars) == std::string::npos)
|
||||
thermo_data += fmt::format("{}, ", keywords[i]);
|
||||
else
|
||||
thermo_data += fmt::format("'{}', ", keywords[i]);
|
||||
}
|
||||
thermo_data += "]\n - data: [ ";
|
||||
|
||||
for (int i = 0; i < nfield; ++i) {
|
||||
@ -107,7 +114,12 @@ void DumpYAML::write_header(bigint ndump)
|
||||
if (domain->triclinic) fmt::print(fp, " - [ {}, {}, {} ]\n", boxxy, boxxz, boxyz);
|
||||
|
||||
fmt::print(fp, "keywords: [ ");
|
||||
for (const auto &item : utils::split_words(columns)) fmt::print(fp, "{}, ", item);
|
||||
for (const auto &item : utils::split_words(columns)) {
|
||||
if (item.find_first_of(special_chars) == std::string::npos)
|
||||
fmt::print(fp, "{}, ", item);
|
||||
else
|
||||
fmt::print(fp, "'{}', ", item);
|
||||
}
|
||||
fputs(" ]\ndata:\n", fp);
|
||||
} else // reset so that the remainder of the output is not multi-proc
|
||||
filewriter = 0;
|
||||
|
||||
@ -120,14 +120,14 @@ int FixViscosity::setmask()
|
||||
|
||||
void FixViscosity::init()
|
||||
{
|
||||
// warn if any fix ave/spatial comes after this fix
|
||||
// warn if any fix ave/chunk comes after this fix
|
||||
// can cause glitch in averaging since ave will happen after swap
|
||||
|
||||
int foundme = 0;
|
||||
for (int i = 0; i < modify->nfix; i++) {
|
||||
if (modify->fix[i] == this) foundme = 1;
|
||||
if (foundme && strcmp(modify->fix[i]->style,"ave/spatial") == 0 && me == 0)
|
||||
error->warning(FLERR,"Fix viscosity comes before fix ave/spatial");
|
||||
for (const auto &ifix : modify->get_fix_list()) {
|
||||
if (ifix == this) foundme = 1;
|
||||
if (foundme && utils::strmatch(ifix->style,"^ave/chunk") && (me == 0))
|
||||
error->warning(FLERR,"Fix viscosity comes before fix ave/chunk");
|
||||
}
|
||||
|
||||
// set bounds of 2 slabs in pdim
|
||||
|
||||
@ -117,7 +117,7 @@ void AngleCosinePeriodic::compute(int eflag, int vflag)
|
||||
tn = 1.0;
|
||||
tn_1 = 1.0;
|
||||
tn_2 = 0.0;
|
||||
un = 1.0;
|
||||
un = (m==1) ? 2.0 : 1.0;
|
||||
un_1 = 2.0;
|
||||
un_2 = 0.0;
|
||||
|
||||
|
||||
@ -40,17 +40,17 @@ using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
using namespace MathConst;
|
||||
|
||||
enum{PAIR,KSPACE,ATOM};
|
||||
enum{DIAMETER,CHARGE};
|
||||
enum{PAIR, KSPACE, ATOM};
|
||||
enum{DIAMETER, CHARGE};
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) :
|
||||
Fix(lmp, narg, arg)
|
||||
{
|
||||
if (narg < 5) error->all(FLERR,"Illegal fix adapt/fep command");
|
||||
if (narg < 5) utils::missing_cmd_args(FLERR,"fix adapt/fep", error);
|
||||
nevery = utils::inumeric(FLERR,arg[3],false,lmp);
|
||||
if (nevery < 0) error->all(FLERR,"Illegal fix adapt/fep command");
|
||||
if (nevery < 0) error->all(FLERR,"Illegal fix adapt/fep every value {}", nevery);
|
||||
|
||||
dynamic_group_allow = 1;
|
||||
create_attribute = 1;
|
||||
@ -62,21 +62,21 @@ FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) :
|
||||
int iarg = 4;
|
||||
while (iarg < narg) {
|
||||
if (strcmp(arg[iarg],"pair") == 0) {
|
||||
if (iarg+6 > narg) error->all(FLERR,"Illegal fix adapt/fep command");
|
||||
if (iarg+6 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep pair", error);
|
||||
nadapt++;
|
||||
iarg += 6;
|
||||
} else if (strcmp(arg[iarg],"kspace") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt/fep command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep kspace", error);
|
||||
nadapt++;
|
||||
iarg += 2;
|
||||
} else if (strcmp(arg[iarg],"atom") == 0) {
|
||||
if (iarg+4 > narg) error->all(FLERR,"Illegal fix adapt/fep command");
|
||||
if (iarg+4 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep atom", error);
|
||||
nadapt++;
|
||||
iarg += 4;
|
||||
} else break;
|
||||
}
|
||||
|
||||
if (nadapt == 0) error->all(FLERR,"Illegal fix adapt/fep command");
|
||||
if (nadapt == 0) error->all(FLERR,"Nothing to adapt in fix adapt/fep command");
|
||||
adapt = new Adapt[nadapt];
|
||||
|
||||
// parse keywords
|
||||
@ -136,11 +136,11 @@ FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) :
|
||||
|
||||
while (iarg < narg) {
|
||||
if (strcmp(arg[iarg],"reset") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt/fep command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep reset", error);
|
||||
resetflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
iarg += 2;
|
||||
} else if (strcmp(arg[iarg],"scale") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt/fep command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep scale", error);
|
||||
scaleflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
iarg += 2;
|
||||
} else if (strcmp(arg[iarg],"after") == 0) {
|
||||
@ -165,21 +165,21 @@ FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) :
|
||||
FixAdaptFEP::~FixAdaptFEP()
|
||||
{
|
||||
for (int m = 0; m < nadapt; m++) {
|
||||
delete [] adapt[m].var;
|
||||
delete[] adapt[m].var;
|
||||
if (adapt[m].which == PAIR) {
|
||||
delete [] adapt[m].pstyle;
|
||||
delete [] adapt[m].pparam;
|
||||
delete[] adapt[m].pstyle;
|
||||
delete[] adapt[m].pparam;
|
||||
memory->destroy(adapt[m].array_orig);
|
||||
}
|
||||
}
|
||||
delete [] adapt;
|
||||
delete[] adapt;
|
||||
|
||||
// check nfix in case all fixes have already been deleted
|
||||
|
||||
if (id_fix_diam && modify->nfix) modify->delete_fix(id_fix_diam);
|
||||
if (id_fix_chg && modify->nfix) modify->delete_fix(id_fix_chg);
|
||||
delete [] id_fix_diam;
|
||||
delete [] id_fix_chg;
|
||||
delete[] id_fix_diam;
|
||||
delete[] id_fix_chg;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
@ -208,7 +208,7 @@ void FixAdaptFEP::post_constructor()
|
||||
id_fix_diam = nullptr;
|
||||
id_fix_chg = nullptr;
|
||||
|
||||
if (diam_flag) {
|
||||
if (diam_flag && atom->radius_flag) {
|
||||
id_fix_diam = utils::strdup(id + std::string("_FIX_STORE_DIAM"));
|
||||
fix_diam = dynamic_cast<FixStoreAtom *>(
|
||||
modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1", id_fix_diam,group->names[igroup])));
|
||||
@ -226,7 +226,7 @@ void FixAdaptFEP::post_constructor()
|
||||
}
|
||||
}
|
||||
|
||||
if (chgflag) {
|
||||
if (chgflag && atom->q_flag) {
|
||||
id_fix_chg = utils::strdup(id + std::string("_FIX_STORE_CHG"));
|
||||
fix_chg = dynamic_cast<FixStoreAtom *>(
|
||||
modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1",id_fix_chg,group->names[igroup])));
|
||||
@ -267,9 +267,9 @@ void FixAdaptFEP::init()
|
||||
|
||||
ad->ivar = input->variable->find(ad->var);
|
||||
if (ad->ivar < 0)
|
||||
error->all(FLERR,"Variable name for fix adapt/fep does not exist");
|
||||
error->all(FLERR,"Variable name {} for fix adapt/fep does not exist", ad->var);
|
||||
if (!input->variable->equalstyle(ad->ivar))
|
||||
error->all(FLERR,"Variable for fix adapt/fep is invalid style");
|
||||
error->all(FLERR,"Variable {} for fix adapt/fep is invalid style", ad->var);
|
||||
|
||||
if (ad->which == PAIR) {
|
||||
anypair = 1;
|
||||
@ -285,8 +285,9 @@ void FixAdaptFEP::init()
|
||||
if (ptr == nullptr)
|
||||
error->all(FLERR,"Fix adapt/fep pair style param not supported");
|
||||
|
||||
ad->pdim = 2;
|
||||
if (ad->pdim == 0) ad->scalar = (double *) ptr;
|
||||
if (ad->pdim != 2)
|
||||
error->all(FLERR,"Pair style parameter {} is not compatible with fix adapt/fep", ad->pparam);
|
||||
|
||||
if (ad->pdim == 2) ad->array = (double **) ptr;
|
||||
|
||||
// if pair hybrid, test that ilo,ihi,jlo,jhi are valid for sub-style
|
||||
@ -434,6 +435,8 @@ void FixAdaptFEP::change_settings()
|
||||
|
||||
} else if (ad->which == ATOM) {
|
||||
|
||||
if (scaleflag)
|
||||
error->all(FLERR, "Keyword 'scale yes' is not supported with fix adapt/fep for 'atom'");
|
||||
// reset radius from diameter
|
||||
// also scale rmass to new value
|
||||
|
||||
|
||||