diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 4e8803fc5a..d31d157858 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -13,40 +13,45 @@ lib/kim/* @ellio167 lib/mesont/* @iafoss # whole packages +src/ADIOS/* @pnorbert src/AMOEBA/* @sjplimp -src/COMPRESS/* @rbberger -src/GPU/* @ndtrung81 -src/KOKKOS/* @stanmoore1 -src/KIM/* @ellio167 -src/LATTE/* @cnegre -src/MLIAP/* @athomps -src/SNAP/* @athomps -src/SPIN/* @julient31 +src/BPM/* @jtclemm src/BROWNIAN/* @samueljmcameron src/CG-DNA/* @ohenrich src/CG-SPICA/* @yskmiyazaki src/COLVARS/* @giacomofiorin +src/COMPRESS/* @rbberger src/DIELECTRIC/* @ndtrung81 src/ELECTRODE/* @ludwig-ahrens src/FEP/* @agiliopadua -src/ML-HDNNP/* @singraber +src/GPU/* @ndtrung81 +src/GRANULAR/* @jtclemm @dsbolin src/INTEL/* @wmbrownintel +src/KIM/* @ellio167 +src/KOKKOS/* @stanmoore1 +src/LATTE/* @cnegre src/MANIFOLD/* @Pakketeretet2 -src/MDI/* @taylor-a-barnes +src/MDI/* @taylor-a-barnes @sjplimp src/MEAM/* @martok src/MESONT/* @iafoss +src/ML-HDNNP/* @singraber +src/ML-IAP/* @athomps +src/ML-PACE/* @yury-lysogorskiy +src/ML-POD/* @exapde @rohskopf src/MOFFF/* @hheenen src/MOLFILE/* @akohlmey src/NETCDF/* @pastewka -src/ML-PACE/* @yury-lysogorskiy -src/PLUMED/* @gtribello -src/PHONON/* @lingtikong -src/PTM/* @pmla src/OPENMP/* @akohlmey +src/PHONON/* @lingtikong +src/PLUGIN/* @akohlmey +src/PLUMED/* @gtribello +src/PTM/* @pmla src/QMMM/* @akohlmey -src/REAXFF/* @hasanmetin @stanmoore1 src/REACTION/* @jrgissing +src/REAXFF/* @hasanmetin @stanmoore1 src/SCAFACOS/* @rhalver +src/SNAP/* @athomps +src/SPIN/* @julient31 src/TALLY/* @akohlmey src/UEF/* @danicholson src/VTK/* @rbberger @@ -120,27 +125,32 @@ src/dump_movie.* @akohlmey src/exceptions.h @rbberger src/fix_nh.* @athomps src/info.* @akohlmey @rbberger -src/timer.* @akohlmey src/min* @sjplimp @stanmoore1 +src/platform.* @akohlmey +src/timer.* @akohlmey src/utils.* @akohlmey @rbberger src/verlet.* @sjplimp @stanmoore1 src/math_eigen_impl.h @jewettaij # tools -tools/msi2lmp/* @akohlmey +tools/coding_standard/* @akohlmey @rbberger tools/emacs/* @HaoZeke -tools/singularity/* @akohlmey @rbberger -tools/coding_standard/* @rbberger -tools/valgrind/* @akohlmey -tools/swig/* @akohlmey +tools/lammps-shell/* @akohlmey +tools/msi2lmp/* @akohlmey tools/offline/* @rbberger +tools/singularity/* @akohlmey @rbberger +tools/swig/* @akohlmey +tools/valgrind/* @akohlmey tools/vim/* @hammondkd # tests -unittest/* @akohlmey @rbberger +unittest/* @akohlmey # cmake cmake/* @junghans @rbberger +cmake/Modules/LAMMPSInterfacePlugin.cmake @akohlmey +cmake/Modules/MPI4WIN.cmake @akohlmey +cmake/Modules/OpenCLLoader.cmake @akohlmey cmake/Modules/Packages/COLVARS.cmake @junghans @rbberger @giacomofiorin cmake/Modules/Packages/KIM.cmake @junghans @rbberger @ellio167 cmake/presets/*.cmake @akohlmey @@ -149,13 +159,12 @@ cmake/presets/*.cmake @akohlmey python/* @rbberger # fortran -fortran/* @akohlmey +fortran/* @akohlmey @hammondkd # docs -doc/utils/*/* @rbberger -doc/Makefile @rbberger -doc/README @rbberger +doc/* @akohlmey examples/plugin/* @akohlmey +examples/PACKAGES/pace/plugin/* @akohlmey # for releases src/version.h @sjplimp diff --git a/.github/ISSUE_TEMPLATE/help_request.md b/.github/ISSUE_TEMPLATE/help_request.md index 5e5b3ebffd..bde37650b2 100644 --- a/.github/ISSUE_TEMPLATE/help_request.md +++ b/.github/ISSUE_TEMPLATE/help_request.md @@ -1,6 +1,6 @@ --- name: Request for Help -about: "Don't post help requests here, email the lammps-users mailing list" +about: "Don't post help requests here, post in the LAMMPS forum" title: "" labels: invalid assignees: '' @@ -8,8 +8,9 @@ assignees: '' --- Please **do not** post requests for help (e.g. with installing or using LAMMPS) here. -Instead send an e-mail to the lammps-users mailing list. +Instead, you can post to the LAMMPS category in the Materials Science Community +Discourse forum at: https://matsci.org/lammps/ This issue tracker is for tracking LAMMPS development related issues only. -Thanks for your cooperation. +Thank you in advance for your cooperation. diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 3ec5fc4cb0..2fa2b4fcee 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -26,15 +26,19 @@ jobs: - name: Select Python version uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.11' - name: Building LAMMPS via CMake shell: bash run: | python3 -m pip install numpy python3 -m pip install pyyaml + nuget install MSMPIsdk + nuget install MSMPIDIST cmake -C cmake/presets/windows.cmake \ -D PKG_PYTHON=on \ + -D WITH_PNG=off \ + -D WITH_JPEG=off \ -S cmake -B build \ -D BUILD_SHARED_LIBS=on \ -D LAMMPS_EXCEPTIONS=on \ diff --git a/README b/README index bb0f335848..c25506e2c0 100644 --- a/README +++ b/README @@ -16,8 +16,8 @@ National Laboratories, a US Department of Energy facility, with funding from the DOE. It is an open-source code, distributed freely under the terms of the GNU Public License (GPL) version 2. -The primary author of the code is Steve Plimpton, who can be emailed -at sjplimp@sandia.gov. The LAMMPS WWW Site at www.lammps.org has +The code is maintained by the LAMMPS development team who can be emailed +at developers@lammps.org. The LAMMPS WWW Site at www.lammps.org has more information about the code and its uses. The LAMMPS distribution includes the following files and directories: diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 597b2f7fdf..c15561b791 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -7,11 +7,20 @@ cmake_minimum_required(VERSION 3.10) if(POLICY CMP0074) cmake_policy(SET CMP0074 NEW) endif() +# set policy to silence warnings about ignoring ${CMAKE_REQUIRED_LIBRARIES} but use it +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) +endif() + ######################################## project(lammps CXX) @@ -100,7 +109,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") + set(CMAKE_TUNE_DEFAULT "-xHost -fp-model fast=2 -no-prec-div -qoverride-limits -diag-disable=10441 -diag-disable=2196") endif() endif() endif() @@ -257,6 +266,7 @@ set(STANDARD_PACKAGES ML-QUIP ML-RANN ML-SNAP + ML-POD MOFFF MOLECULE MOLFILE @@ -307,6 +317,15 @@ if(PKG_ADIOS) # script that defines the MPI::MPI_C target enable_language(C) find_package(ADIOS2 REQUIRED) + if(BUILD_MPI) + if(NOT ADIOS2_HAVE_MPI) + message(FATAL_ERROR "ADIOS2 must be built with MPI support when LAMMPS has MPI enabled") + endif() + else() + if(ADIOS2_HAVE_MPI) + message(FATAL_ERROR "ADIOS2 must be built without MPI support when LAMMPS has MPI disabled") + endif() + endif() target_link_libraries(lammps PRIVATE adios2::adios2) endif() @@ -381,9 +400,9 @@ pkg_depends(EXTRA-MOLECULE MOLECULE) # detect if we may enable OpenMP support by default set(BUILD_OMP_DEFAULT OFF) -find_package(OpenMP QUIET) -if(OpenMP_FOUND) - check_include_file_cxx(omp.h HAVE_OMP_H_INCLUDE) +find_package(OpenMP COMPONENTS CXX QUIET) +if(OpenMP_CXX_FOUND) + check_omp_h_include() if(HAVE_OMP_H_INCLUDE) set(BUILD_OMP_DEFAULT ON) endif() @@ -392,8 +411,8 @@ endif() option(BUILD_OMP "Build with OpenMP support" ${BUILD_OMP_DEFAULT}) if(BUILD_OMP) - find_package(OpenMP REQUIRED) - check_include_file_cxx(omp.h HAVE_OMP_H_INCLUDE) + find_package(OpenMP COMPONENTS CXX REQUIRED) + check_omp_h_include() if(NOT HAVE_OMP_H_INCLUDE) message(FATAL_ERROR "Cannot find the 'omp.h' header file required for full OpenMP support") endif() @@ -415,7 +434,7 @@ if(BUILD_OMP) target_link_libraries(lmp PRIVATE OpenMP::OpenMP_CXX) endif() -if(PKG_MSCG OR PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_LATTE OR PKG_ELECTRODE) +if(PKG_MSCG OR PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_ML-POD OR PKG_LATTE OR PKG_ELECTRODE) enable_language(C) if (NOT USE_INTERNAL_LINALG) find_package(LAPACK) @@ -621,7 +640,7 @@ foreach(PKG_LIB POEMS ATC AWPMD H5MD MESONT) endif() endforeach() -if(PKG_ELECTRODE) +if(PKG_ELECTRODE OR PKG_ML-POD) target_link_libraries(lammps PRIVATE ${LAPACK_LIBRARIES}) endif() @@ -723,18 +742,17 @@ list(FIND LANGUAGES "Fortran" _index) if(_index GREATER -1) target_link_libraries(lammps PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}) endif() -set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h compute.h dihedral.h domain.h error.h fix.h force.h group.h improper.h - input.h info.h kspace.h lammps.h lattice.h library.h lmppython.h lmptype.h memory.h modify.h neighbor.h neigh_list.h output.h - pair.h pointers.h region.h timer.h universe.h update.h utils.h variable.h) -if(LAMMPS_EXCEPTIONS) - list(APPEND LAMMPS_CXX_HEADERS exceptions.h) -endif() +set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h command.h compute.h dihedral.h domain.h + error.h exceptions.h fix.h force.h group.h improper.h input.h info.h kspace.h lammps.h lattice.h + library.h lmppython.h lmptype.h memory.h modify.h neighbor.h neigh_list.h output.h pair.h + platform.h pointers.h region.h timer.h universe.h update.h utils.h variable.h) +set(LAMMPS_FMT_HEADERS core.h format.h) set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_MACHINE}) set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) set_target_properties(lammps PROPERTIES PREFIX "lib") target_include_directories(lammps PUBLIC $) -file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/fmt) foreach(_HEADER ${LAMMPS_CXX_HEADERS}) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAMMPS_SOURCE_DIR}/${_HEADER} ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} DEPENDS ${LAMMPS_SOURCE_DIR}/${_HEADER}) add_custom_target(${_HEADER} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER}) @@ -743,6 +761,14 @@ foreach(_HEADER ${LAMMPS_CXX_HEADERS}) install(FILES ${LAMMPS_SOURCE_DIR}/${_HEADER} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) endif() endforeach() +foreach(_HEADER ${LAMMPS_FMT_HEADERS}) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/fmt/${_HEADER} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAMMPS_SOURCE_DIR}/fmt/${_HEADER} ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/fmt/${_HEADER} DEPENDS ${LAMMPS_SOURCE_DIR}/fmt/${_HEADER}) + add_custom_target(fmt_${_HEADER} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/fmt/${_HEADER}) + add_dependencies(lammps fmt_${_HEADER}) + if(BUILD_SHARED_LIBS) + install(FILES ${LAMMPS_SOURCE_DIR}/fmt/${_HEADER} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps/fmt) + endif() +endforeach() target_include_directories(lammps INTERFACE $) add_library(LAMMPS::lammps ALIAS lammps) get_target_property(LAMMPS_DEFINES lammps INTERFACE_COMPILE_DEFINITIONS) @@ -850,8 +876,11 @@ if(BUILD_SHARED_LIBS OR PKG_PYTHON) find_package(Python COMPONENTS Interpreter) endif() if(Python_EXECUTABLE) - file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/python) - install(CODE "execute_process(COMMAND ${Python_EXECUTABLE} setup.py build -b ${CMAKE_BINARY_DIR}/python install --prefix=${CMAKE_INSTALL_PREFIX} --root=\$ENV{DESTDIR}/ WORKING_DIRECTORY ${LAMMPS_PYTHON_DIR})") + file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/python/lib) + file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/python/src) + file(COPY ${LAMMPS_SOURCE_DIR}/version.h DESTINATION ${CMAKE_BINARY_DIR}/python/src) + file(COPY ${LAMMPS_PYTHON_DIR}/README ${LAMMPS_PYTHON_DIR}/pyproject.toml ${LAMMPS_PYTHON_DIR}/setup.py ${LAMMPS_PYTHON_DIR}/lammps DESTINATION ${CMAKE_BINARY_DIR}/python/lib) + install(CODE "if(\"\$ENV{DESTDIR}\" STREQUAL \"\")\n execute_process(COMMAND ${Python_EXECUTABLE} -m pip install -v ${CMAKE_BINARY_DIR}/python/lib --prefix=${CMAKE_INSTALL_PREFIX})\n else()\n execute_process(COMMAND ${Python_EXECUTABLE} -m pip install -v ${CMAKE_BINARY_DIR}/python/lib --prefix=${CMAKE_INSTALL_PREFIX} --root=\$ENV{DESTDIR})\n endif()") endif() endif() @@ -962,9 +991,6 @@ if(PKG_GPU) endif() message(STATUS "GPU precision: ${GPU_PREC}") endif() -if(PKG_KOKKOS) - message(STATUS "Kokkos Arch: ${KOKKOS_ARCH}") -endif() if(PKG_KSPACE) message(STATUS "<<< FFT settings >>> -- Primary FFT lib: ${FFT}") diff --git a/cmake/Modules/FindClangFormat.cmake b/cmake/Modules/FindClangFormat.cmake index 48393f0614..80c3b0d0ae 100644 --- a/cmake/Modules/FindClangFormat.cmake +++ b/cmake/Modules/FindClangFormat.cmake @@ -1,5 +1,10 @@ # Find clang-format find_program(ClangFormat_EXECUTABLE NAMES clang-format + clang-format-15.0 + clang-format-14.0 + clang-format-13.0 + clang-format-12.0 + clang-format-11.0 clang-format-10.0 clang-format-9.0 clang-format-8.0 @@ -14,19 +19,27 @@ if(ClangFormat_EXECUTABLE) OUTPUT_VARIABLE clang_format_version ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - - if(clang_format_version MATCHES "^clang-format version .*") - # Arch Linux + if(clang_format_version MATCHES "^(Ubuntu |)clang-format version .*") + # Arch Linux output: # clang-format version 10.0.0 - - # Ubuntu 18.04 LTS Output + # + # Ubuntu 18.04 LTS output: # clang-format version 6.0.0-1ubuntu2 (tags/RELEASE_600/final) - string(REGEX REPLACE "clang-format version ([0-9.]+).*" - "\\1" + # + # Ubuntu 20.04 LTS output: + # clang-format version 10.0.0-4ubuntu1 + # + # Ubuntu 22.04 LTS output: + # Ubuntu clang-format version 14.0.0-1ubuntu1 + # + # Fedora 36 output: + # clang-format version 14.0.5 (Fedora 14.0.5-1.fc36) + string(REGEX REPLACE "^(Ubuntu |)clang-format version ([0-9.]+).*" + "\\2" ClangFormat_VERSION "${clang_format_version}") elseif(clang_format_version MATCHES ".*LLVM version .*") - # CentOS 7 Output + # CentOS 7 output: # LLVM (http://llvm.org/): # LLVM version 3.4.2 # Optimized build. diff --git a/cmake/Modules/FindCythonize.cmake b/cmake/Modules/FindCythonize.cmake index 2a4cc753e8..97f0304279 100644 --- a/cmake/Modules/FindCythonize.cmake +++ b/cmake/Modules/FindCythonize.cmake @@ -22,7 +22,7 @@ endif() if(Python_EXECUTABLE) get_filename_component(_python_path ${Python_EXECUTABLE} PATH) find_program(Cythonize_EXECUTABLE - NAMES cythonize3 cythonize cythonize.bat + NAMES cythonize-${Python_VERSION_MAJOR}.${Python_VERSION_MINOR} cythonize3 cythonize cythonize.bat HINTS ${_python_path}) endif() diff --git a/cmake/Modules/FindZMQ.cmake b/cmake/Modules/FindZMQ.cmake deleted file mode 100644 index 7d612c2eb3..0000000000 --- a/cmake/Modules/FindZMQ.cmake +++ /dev/null @@ -1,19 +0,0 @@ -find_path(ZMQ_INCLUDE_DIR zmq.h) -find_library(ZMQ_LIBRARY NAMES zmq) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(ZMQ DEFAULT_MSG ZMQ_LIBRARY ZMQ_INCLUDE_DIR) - -# Copy the results to the output variables and target. -if(ZMQ_FOUND) - set(ZMQ_LIBRARIES ${ZMQ_LIBRARY}) - set(ZMQ_INCLUDE_DIRS ${ZMQ_INCLUDE_DIR}) - - if(NOT TARGET ZMQ::ZMQ) - add_library(ZMQ::ZMQ UNKNOWN IMPORTED) - set_target_properties(ZMQ::ZMQ PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "${ZMQ_LIBRARY}" - INTERFACE_INCLUDE_DIRECTORIES "${ZMQ_INCLUDE_DIR}") - endif() -endif() diff --git a/cmake/Modules/LAMMPSInterfacePlugin.cmake b/cmake/Modules/LAMMPSInterfacePlugin.cmake index 95bb707e86..e20ae5f5cb 100644 --- a/cmake/Modules/LAMMPSInterfacePlugin.cmake +++ b/cmake/Modules/LAMMPSInterfacePlugin.cmake @@ -112,45 +112,76 @@ if(BUILD_MPI) set(MPI_CXX_SKIP_MPICXX TRUE) # We use a non-standard procedure to cross-compile with MPI on Windows if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING) - # Download and configure custom MPICH files for Windows - message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows") - set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball") - set(MPICH2_WIN32_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win32-devel.tar.gz" CACHE STRING "URL for MPICH2 (win32) tarball") - set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball") - set(MPICH2_WIN32_DEVEL_MD5 "a61d153500dce44e21b755ee7257e031" CACHE STRING "MD5 checksum of MPICH2 (win32) tarball") - mark_as_advanced(MPICH2_WIN64_DEVEL_URL) - mark_as_advanced(MPICH2_WIN32_DEVEL_URL) - mark_as_advanced(MPICH2_WIN64_DEVEL_MD5) - mark_as_advanced(MPICH2_WIN32_DEVEL_MD5) + # Download and configure MinGW compatible MPICH development files for Windows + option(USE_MSMPI "Use Microsoft's MS-MPI SDK instead of MPICH2-1.4.1" OFF) + if(USE_MSMPI) + message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation") + set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball") + set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball") + mark_as_advanced(MPICH2_WIN64_DEVEL_URL) + mark_as_advanced(MPICH2_WIN64_DEVEL_MD5) - include(ExternalProject) - if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") - ExternalProject_Add(mpi4win_build - URL ${MPICH2_WIN64_DEVEL_URL} - URL_MD5 ${MPICH2_WIN64_DEVEL_MD5} - CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - BUILD_BYPRODUCTS /lib/libmpi.a) + include(ExternalProject) + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + ExternalProject_Add(mpi4win_build + URL ${MPICH2_WIN64_DEVEL_URL} + URL_MD5 ${MPICH2_WIN64_DEVEL_MD5} + CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" + BUILD_BYPRODUCTS /lib/libmsmpi.a) + else() + message(FATAL_ERROR "Only x86 64-bit builds are supported with MS-MPI") + endif() + + ExternalProject_get_property(mpi4win_build SOURCE_DIR) + file(MAKE_DIRECTORY "${SOURCE_DIR}/include") + add_library(MPI::MPI_CXX UNKNOWN IMPORTED) + set_target_properties(MPI::MPI_CXX PROPERTIES + IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a" + INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" + INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + add_dependencies(MPI::MPI_CXX mpi4win_build) + + # set variables for status reporting at the end of CMake run + set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include") + set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a") else() - ExternalProject_Add(mpi4win_build - URL ${MPICH2_WIN32_DEVEL_URL} - URL_MD5 ${MPICH2_WIN32_DEVEL_MD5} - CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - BUILD_BYPRODUCTS /lib/libmpi.a) + # Download and configure custom MPICH files for Windows + message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows") + set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball") + set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball") + mark_as_advanced(MPICH2_WIN64_DEVEL_URL) + mark_as_advanced(MPICH2_WIN64_DEVEL_MD5) + + include(ExternalProject) + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + ExternalProject_Add(mpi4win_build + URL ${MPICH2_WIN64_DEVEL_URL} + URL_MD5 ${MPICH2_WIN64_DEVEL_MD5} + CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" + BUILD_BYPRODUCTS /lib/libmpi.a) + else() + ExternalProject_Add(mpi4win_build + URL ${MPICH2_WIN32_DEVEL_URL} + URL_MD5 ${MPICH2_WIN32_DEVEL_MD5} + CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" + BUILD_BYPRODUCTS /lib/libmpi.a) + endif() + + ExternalProject_get_property(mpi4win_build SOURCE_DIR) + file(MAKE_DIRECTORY "${SOURCE_DIR}/include") + add_library(MPI::MPI_CXX UNKNOWN IMPORTED) + set_target_properties(MPI::MPI_CXX PROPERTIES + IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a" + INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" + INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + add_dependencies(MPI::MPI_CXX mpi4win_build) + + # set variables for status reporting at the end of CMake run + set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include") + set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") endif() - - ExternalProject_get_property(mpi4win_build SOURCE_DIR) - file(MAKE_DIRECTORY "${SOURCE_DIR}/include") - add_library(MPI::MPI_CXX UNKNOWN IMPORTED) - set_target_properties(MPI::MPI_CXX PROPERTIES - IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a" - INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" - INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") - add_dependencies(MPI::MPI_CXX mpi4win_build) - - # set variables for status reporting at the end of CMake run - set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include") - set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") - set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") else() find_package(MPI REQUIRED) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) diff --git a/cmake/Modules/LAMMPSUtils.cmake b/cmake/Modules/LAMMPSUtils.cmake index 9b75209e16..561f2168e2 100644 --- a/cmake/Modules/LAMMPSUtils.cmake +++ b/cmake/Modules/LAMMPSUtils.cmake @@ -24,6 +24,21 @@ function(validate_option name values) endif() endfunction(validate_option) +# helper function to check for usable omp.h header +function(check_omp_h_include) + find_package(OpenMP COMPONENTS CXX QUIET) + if(OpenMP_CXX_FOUND) + set(CMAKE_REQUIRED_FLAGS ${OpenMP_CXX_FLAGS}) + set(CMAKE_REQUIRED_INCLUDES ${OpenMP_CXX_INCLUDE_DIRS}) + set(CMAKE_REQUIRED_LINK_OPTIONS ${OpenMP_CXX_FLAGS}) + set(CMAKE_REQUIRED_LIBRARIES ${OpenMP_CXX_LIBRARIES}) + check_include_file_cxx(omp.h _have_omp_h) + else() + set(_have_omp_h FALSE) + endif() + set(HAVE_OMP_H_INCLUDE ${_have_omp_h} PARENT_SCOPE) +endfunction() + # helper function for getting the most recently modified file or folder from a glob pattern function(get_newest_file path variable) file(GLOB _dirs ${path}) diff --git a/cmake/Modules/MPI4WIN.cmake b/cmake/Modules/MPI4WIN.cmake index aa0c9e1833..02db6d4744 100644 --- a/cmake/Modules/MPI4WIN.cmake +++ b/cmake/Modules/MPI4WIN.cmake @@ -1,39 +1,74 @@ -# Download and configure custom MPICH files for Windows -message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows") -set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball") -set(MPICH2_WIN32_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win32-devel.tar.gz" CACHE STRING "URL for MPICH2 (win32) tarball") -set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball") -set(MPICH2_WIN32_DEVEL_MD5 "a61d153500dce44e21b755ee7257e031" CACHE STRING "MD5 checksum of MPICH2 (win32) tarball") -mark_as_advanced(MPICH2_WIN64_DEVEL_URL) -mark_as_advanced(MPICH2_WIN32_DEVEL_URL) -mark_as_advanced(MPICH2_WIN64_DEVEL_MD5) -mark_as_advanced(MPICH2_WIN32_DEVEL_MD5) +# Download and configure MinGW compatible MPICH development files for Windows +option(USE_MSMPI "Use Microsoft's MS-MPI SDK instead of MPICH2-1.4.1" OFF) -include(ExternalProject) -if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") - ExternalProject_Add(mpi4win_build - URL ${MPICH2_WIN64_DEVEL_URL} - URL_MD5 ${MPICH2_WIN64_DEVEL_MD5} - CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - BUILD_BYPRODUCTS /lib/libmpi.a) +if(USE_MSMPI) + message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation") + set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball") + set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball") + mark_as_advanced(MPICH2_WIN64_DEVEL_URL) + mark_as_advanced(MPICH2_WIN64_DEVEL_MD5) + + include(ExternalProject) + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + ExternalProject_Add(mpi4win_build + URL ${MPICH2_WIN64_DEVEL_URL} + URL_MD5 ${MPICH2_WIN64_DEVEL_MD5} + CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" + BUILD_BYPRODUCTS /lib/libmsmpi.a) + else() + message(FATAL_ERROR "Only x86 64-bit builds are supported with MS-MPI") + endif() + + ExternalProject_get_property(mpi4win_build SOURCE_DIR) + file(MAKE_DIRECTORY "${SOURCE_DIR}/include") + add_library(MPI::MPI_CXX UNKNOWN IMPORTED) + set_target_properties(MPI::MPI_CXX PROPERTIES + IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a" + INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" + INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + add_dependencies(MPI::MPI_CXX mpi4win_build) + + # set variables for status reporting at the end of CMake run + set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include") + set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a") else() - ExternalProject_Add(mpi4win_build - URL ${MPICH2_WIN32_DEVEL_URL} - URL_MD5 ${MPICH2_WIN32_DEVEL_MD5} - CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - BUILD_BYPRODUCTS /lib/libmpi.a) + message(STATUS "Downloading and configuring MPICH2-1.4.1 for Windows cross-compilation") + set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball") + set(MPICH2_WIN32_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win32-devel.tar.gz" CACHE STRING "URL for MPICH2 (win32) tarball") + set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball") + set(MPICH2_WIN32_DEVEL_MD5 "a61d153500dce44e21b755ee7257e031" CACHE STRING "MD5 checksum of MPICH2 (win32) tarball") + mark_as_advanced(MPICH2_WIN64_DEVEL_URL) + mark_as_advanced(MPICH2_WIN32_DEVEL_URL) + mark_as_advanced(MPICH2_WIN64_DEVEL_MD5) + mark_as_advanced(MPICH2_WIN32_DEVEL_MD5) + + include(ExternalProject) + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + ExternalProject_Add(mpi4win_build + URL ${MPICH2_WIN64_DEVEL_URL} + URL_MD5 ${MPICH2_WIN64_DEVEL_MD5} + CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" + BUILD_BYPRODUCTS /lib/libmpi.a) + else() + ExternalProject_Add(mpi4win_build + URL ${MPICH2_WIN32_DEVEL_URL} + URL_MD5 ${MPICH2_WIN32_DEVEL_MD5} + CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" + BUILD_BYPRODUCTS /lib/libmpi.a) + endif() + + ExternalProject_get_property(mpi4win_build SOURCE_DIR) + file(MAKE_DIRECTORY "${SOURCE_DIR}/include") + add_library(MPI::MPI_CXX UNKNOWN IMPORTED) + set_target_properties(MPI::MPI_CXX PROPERTIES + IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a" + INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" + INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + add_dependencies(MPI::MPI_CXX mpi4win_build) + + # set variables for status reporting at the end of CMake run + set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include") + set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") endif() - -ExternalProject_get_property(mpi4win_build SOURCE_DIR) -file(MAKE_DIRECTORY "${SOURCE_DIR}/include") -add_library(MPI::MPI_CXX UNKNOWN IMPORTED) -set_target_properties(MPI::MPI_CXX PROPERTIES - IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a" - INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" - INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") -add_dependencies(MPI::MPI_CXX mpi4win_build) - -# set variables for status reporting at the end of CMake run -set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include") -set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") -set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 7f23a6f777..c3852abf7c 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -15,8 +15,9 @@ if(Kokkos_ENABLE_OPENMP) if(NOT BUILD_OMP) message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP") else() - if(LAMMPS_OMP_COMPAT_LEVEL LESS 4) - message(FATAL_ERROR "Compiler must support OpenMP 4.0 or later with Kokkos_ENABLE_OPENMP") + # NVHPC does not seem to provide a detectable OpenMP version, but is far beyond version 3.1 + if((OpenMP_CXX_VERSION VERSION_LESS 3.1) AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC")) + message(FATAL_ERROR "Compiler must support OpenMP 3.1 or later with Kokkos_ENABLE_OPENMP") endif() endif() endif() @@ -47,8 +48,8 @@ if(DOWNLOAD_KOKKOS) list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}") list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") include(ExternalProject) - set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/3.6.01.tar.gz" CACHE STRING "URL for KOKKOS tarball") - set(KOKKOS_MD5 "0ec97fc0c356dd65bd2487defe81a7bf" CACHE STRING "MD5 checksum of KOKKOS tarball") + set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/3.7.00.tar.gz" CACHE STRING "URL for KOKKOS tarball") + set(KOKKOS_MD5 "84991eca9f066383abe119a5bc7a11c4" CACHE STRING "MD5 checksum of KOKKOS tarball") mark_as_advanced(KOKKOS_URL) mark_as_advanced(KOKKOS_MD5) ExternalProject_Add(kokkos_build @@ -72,7 +73,7 @@ if(DOWNLOAD_KOKKOS) add_dependencies(LAMMPS::KOKKOSCORE kokkos_build) add_dependencies(LAMMPS::KOKKOSCONTAINERS kokkos_build) elseif(EXTERNAL_KOKKOS) - find_package(Kokkos 3.6.01 REQUIRED CONFIG) + find_package(Kokkos 3.7.00 REQUIRED CONFIG) target_link_libraries(lammps PRIVATE Kokkos::kokkos) target_link_libraries(lmp PRIVATE Kokkos::kokkos) else() @@ -138,6 +139,12 @@ if(PKG_KSPACE) endif() endif() +if(PKG_ML-IAP) + list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/mliap_data_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/mliap_descriptor_so3_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/mliap_model_linear_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/mliap_so3_kokkos.cpp) +endif() if(PKG_PHONON) list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/dynamical_matrix_kokkos.cpp) diff --git a/cmake/Modules/Packages/MDI.cmake b/cmake/Modules/Packages/MDI.cmake index edae4ffcbd..c1e25347af 100644 --- a/cmake/Modules/Packages/MDI.cmake +++ b/cmake/Modules/Packages/MDI.cmake @@ -49,6 +49,14 @@ if(DOWNLOAD_MDI) set(MDI_USE_PYTHON_PLUGINS ON) endif() endif() + # python plugins are not supported and thus must be always off on Windows + if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + unset(Python_Development_FOUND) + set(MDI_USE_PYTHON_PLUGINS OFF) + if(CMAKE_CROSSCOMPILING) + set(CMAKE_INSTALL_LIBDIR lib) + endif() + endif() # download/ build MDI library # always build static library with -fpic @@ -57,8 +65,9 @@ if(DOWNLOAD_MDI) ExternalProject_Add(mdi_build URL ${MDI_URL} URL_MD5 ${MDI_MD5} + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/mdi_build_ext CMAKE_ARGS - -DCMAKE_INSTALL_PREFIX= + -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/mdi_build_ext -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} @@ -70,23 +79,23 @@ if(DOWNLOAD_MDI) -Dplugins=ON -Dpython_plugins=${MDI_USE_PYTHON_PLUGINS} UPDATE_COMMAND "" - INSTALL_COMMAND "" - BUILD_BYPRODUCTS "/MDI_Library/libmdi.a" + INSTALL_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/mdi_build_ext/src/mdi_build-build --target install + BUILD_BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/mdi_build_ext/${CMAKE_INSTALL_LIBDIR}/mdi/${CMAKE_STATIC_LIBRARY_PREFIX}mdi${CMAKE_STATIC_LIBRARY_SUFFIX}" ) # where is the compiled library? - ExternalProject_get_property(mdi_build BINARY_DIR) - set(MDI_BINARY_DIR "${BINARY_DIR}/MDI_Library") + ExternalProject_get_property(mdi_build PREFIX) # workaround for older CMake versions - file(MAKE_DIRECTORY ${MDI_BINARY_DIR}) + file(MAKE_DIRECTORY ${PREFIX}/${CMAKE_INSTALL_LIBDIR}/mdi) + file(MAKE_DIRECTORY ${PREFIX}/include/mdi) # create imported target for the MDI library add_library(LAMMPS::MDI UNKNOWN IMPORTED) add_dependencies(LAMMPS::MDI mdi_build) set_target_properties(LAMMPS::MDI PROPERTIES - IMPORTED_LOCATION "${MDI_BINARY_DIR}/libmdi.a" - INTERFACE_INCLUDE_DIRECTORIES ${MDI_BINARY_DIR} - ) + IMPORTED_LOCATION "${PREFIX}/${CMAKE_INSTALL_LIBDIR}/mdi/${CMAKE_STATIC_LIBRARY_PREFIX}mdi${CMAKE_STATIC_LIBRARY_SUFFIX}" + INTERFACE_INCLUDE_DIRECTORIES ${PREFIX}/include/mdi + ) set(MDI_DEP_LIBS "") # if compiling with python plugins we need diff --git a/cmake/Modules/Packages/ML-IAP.cmake b/cmake/Modules/Packages/ML-IAP.cmake index 0e711cde8f..e2685c78dd 100644 --- a/cmake/Modules/Packages/ML-IAP.cmake +++ b/cmake/Modules/Packages/ML-IAP.cmake @@ -2,7 +2,13 @@ set(MLIAP_ENABLE_PYTHON_DEFAULT OFF) if(PKG_PYTHON) find_package(Cythonize QUIET) - if(Cythonize_FOUND) + if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.14) + find_package(Python COMPONENTS NumPy QUIET) + else() + # assume we have NumPy + set(Python_NumPy_FOUND ON) + endif() + if(Cythonize_FOUND AND Python_NumPy_FOUND) set(MLIAP_ENABLE_PYTHON_DEFAULT ON) endif() endif() @@ -11,6 +17,9 @@ option(MLIAP_ENABLE_PYTHON "Build ML-IAP package with Python support" ${MLIAP_EN if(MLIAP_ENABLE_PYTHON) find_package(Cythonize REQUIRED) + if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.14) + find_package(Python COMPONENTS NumPy REQUIRED) + endif() if(NOT PKG_PYTHON) message(FATAL_ERROR "Must enable PYTHON package for including Python support in ML-IAP") endif() diff --git a/cmake/Modules/Packages/ML-PACE.cmake b/cmake/Modules/Packages/ML-PACE.cmake index c553809ff1..0159f36c34 100644 --- a/cmake/Modules/Packages/ML-PACE.cmake +++ b/cmake/Modules/Packages/ML-PACE.cmake @@ -1,6 +1,6 @@ -set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2021.10.25.fix2.tar.gz" CACHE STRING "URL for PACE evaluator library sources") +set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2022.10.15.tar.gz" CACHE STRING "URL for PACE evaluator library sources") -set(PACELIB_MD5 "32394d799bc282bb57696c78c456e64f" CACHE STRING "MD5 checksum of PACE evaluator library tarball") +set(PACELIB_MD5 "848ad6a6cc79fa82745927001fb1c9b5" CACHE STRING "MD5 checksum of PACE evaluator library tarball") mark_as_advanced(PACELIB_URL) mark_as_advanced(PACELIB_MD5) @@ -15,23 +15,9 @@ execute_process( ) get_newest_file(${CMAKE_BINARY_DIR}/lammps-user-pace-* lib-pace) -# enforce building libyaml-cpp as static library and turn off optional features -set(YAML_BUILD_SHARED_LIBS OFF) -set(YAML_CPP_BUILD_CONTRIB OFF) -set(YAML_CPP_BUILD_TOOLS OFF) -add_subdirectory(${lib-pace}/yaml-cpp build-yaml-cpp) -set(YAML_CPP_INCLUDE_DIR ${lib-pace}/yaml-cpp/include) - -file(GLOB PACE_EVALUATOR_INCLUDE_DIR ${lib-pace}/ML-PACE) -file(GLOB PACE_EVALUATOR_SOURCES ${lib-pace}/ML-PACE/*.cpp) -list(FILTER PACE_EVALUATOR_SOURCES EXCLUDE REGEX pair_pace.cpp) - -add_library(pace STATIC ${PACE_EVALUATOR_SOURCES}) +add_subdirectory(${lib-pace} build-pace) set_target_properties(pace PROPERTIES CXX_EXTENSIONS ON OUTPUT_NAME lammps_pace${LAMMPS_MACHINE}) -target_include_directories(pace PUBLIC ${PACE_EVALUATOR_INCLUDE_DIR} ${YAML_CPP_INCLUDE_DIR}) - -target_link_libraries(pace PRIVATE yaml-cpp-pace) if(CMAKE_PROJECT_NAME STREQUAL "lammps") target_link_libraries(lammps PRIVATE pace) endif() diff --git a/cmake/Modules/Packages/ML-QUIP.cmake b/cmake/Modules/Packages/ML-QUIP.cmake index 56221accab..10e0f38b78 100644 --- a/cmake/Modules/Packages/ML-QUIP.cmake +++ b/cmake/Modules/Packages/ML-QUIP.cmake @@ -58,12 +58,12 @@ if(DOWNLOAD_QUIP) BUILD_COMMAND env QUIP_ARCH=lammps make libquip INSTALL_COMMAND "" BUILD_IN_SOURCE YES - BUILD_BYPRODUCTS /build/lammps/libquip.a + BUILD_BYPRODUCTS /build/lammps/${CMAKE_STATIC_LIBRARY_PREFIX}quip${CMAKE_STATIC_LIBRARY_SUFFIX} ) ExternalProject_get_property(quip_build SOURCE_DIR) add_library(LAMMPS::QUIP UNKNOWN IMPORTED) set_target_properties(LAMMPS::QUIP PROPERTIES - IMPORTED_LOCATION "${SOURCE_DIR}/build/lammps/libquip.a" + IMPORTED_LOCATION "${SOURCE_DIR}/build/lammps/${CMAKE_STATIC_LIBRARY_PREFIX}quip${CMAKE_STATIC_LIBRARY_SUFFIX}" INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") target_link_libraries(lammps PRIVATE LAMMPS::QUIP) add_dependencies(LAMMPS::QUIP quip_build) diff --git a/cmake/Modules/Packages/PLUMED.cmake b/cmake/Modules/Packages/PLUMED.cmake index 1b660a2cc8..e0e4ff0dde 100644 --- a/cmake/Modules/Packages/PLUMED.cmake +++ b/cmake/Modules/Packages/PLUMED.cmake @@ -47,15 +47,15 @@ if(DOWNLOAD_PLUMED) endif() message(STATUS "PLUMED download requested - we will build our own") if(PLUMED_MODE STREQUAL "STATIC") - set(PLUMED_BUILD_BYPRODUCTS "/lib/libplumed.a") + set(PLUMED_BUILD_BYPRODUCTS "/lib/${CMAKE_STATIC_LIBRARY_PREFIX}plumed${CMAKE_STATIC_LIBRARY_SUFFIX}") elseif(PLUMED_MODE STREQUAL "SHARED") - set(PLUMED_BUILD_BYPRODUCTS "/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX};/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(PLUMED_BUILD_BYPRODUCTS "/lib/${CMAKE_SHARED_LIBRARY_PREFIX}plumed${CMAKE_SHARED_LIBRARY_SUFFIX};/lib/${CMAKE_SHARED_LIBRARY_PREFIX}plumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") elseif(PLUMED_MODE STREQUAL "RUNTIME") - set(PLUMED_BUILD_BYPRODUCTS "/lib/libplumedWrapper.a") + set(PLUMED_BUILD_BYPRODUCTS "/lib/${CMAKE_STATIC_LIBRARY_PREFIX}plumedWrapper${CMAKE_STATIC_LIBRARY_PREFIX}") endif() - set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.4/plumed-src-2.7.4.tgz" CACHE STRING "URL for PLUMED tarball") - set(PLUMED_MD5 "858e0b6aed173748fc85b6bc8a9dcb3e" CACHE STRING "MD5 checksum of PLUMED tarball") + set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.8.1/plumed-src-2.8.1.tgz" CACHE STRING "URL for PLUMED tarball") + set(PLUMED_MD5 "6bfe72ebdae63dc38a9ca27d9b0e08f8" CACHE STRING "MD5 checksum of PLUMED tarball") mark_as_advanced(PLUMED_URL) mark_as_advanced(PLUMED_MD5) @@ -78,12 +78,12 @@ if(DOWNLOAD_PLUMED) add_library(LAMMPS::PLUMED UNKNOWN IMPORTED) add_dependencies(LAMMPS::PLUMED plumed_build) if(PLUMED_MODE STREQUAL "STATIC") - set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed.a INTERFACE_LINK_LIBRARIES "${PLUMED_LINK_LIBS};${CMAKE_DL_LIBS}") + set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}plumed${CMAKE_STATIC_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${PLUMED_LINK_LIBS};${CMAKE_DL_LIBS}") elseif(PLUMED_MODE STREQUAL "SHARED") - set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX};${CMAKE_DL_LIBS}") + set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}plumed${CMAKE_SHARED_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}plumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX};${CMAKE_DL_LIBS}") elseif(PLUMED_MODE STREQUAL "RUNTIME") - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") - set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumedWrapper.a INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}") + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}plumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}plumedWrapper${CMAKE_STATIC_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}") endif() set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) file(MAKE_DIRECTORY ${INSTALL_DIR}/include) @@ -96,7 +96,7 @@ else() elseif(PLUMED_MODE STREQUAL "SHARED") include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared) elseif(PLUMED_MODE STREQUAL "RUNTIME") - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}plumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime) endif() set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_LINK_LIBRARIES "${PLUMED_LOAD}") diff --git a/cmake/Modules/Packages/VTK.cmake b/cmake/Modules/Packages/VTK.cmake index 8c4445167a..a0de1e0ff4 100644 --- a/cmake/Modules/Packages/VTK.cmake +++ b/cmake/Modules/Packages/VTK.cmake @@ -1,4 +1,9 @@ find_package(VTK REQUIRED NO_MODULE) -include(${VTK_USE_FILE}) target_compile_definitions(lammps PRIVATE -DLAMMPS_VTK) -target_link_libraries(lammps PRIVATE ${VTK_LIBRARIES}) +if (VTK_MAJOR_VERSION VERSION_LESS 9.0) + include(${VTK_USE_FILE}) + target_link_libraries(lammps PRIVATE ${VTK_LIBRARIES}) +else() + target_link_libraries(lammps PRIVATE VTK::CommonCore VTK::IOCore VTK::CommonDataModel VTK::IOXML VTK::IOLegacy VTK::IOParallelXML) + vtk_module_autoinit(TARGETS lammps MODULES VTK::CommonCore VTK::IOCore VTK::CommonDataModel VTK::IOXML VTK::IOLegacy VTK::IOParallelXML) +endif() diff --git a/cmake/presets/all_off.cmake b/cmake/presets/all_off.cmake index 3a7c58eaa3..9127305528 100644 --- a/cmake/presets/all_off.cmake +++ b/cmake/presets/all_off.cmake @@ -56,6 +56,7 @@ set(ALL_PACKAGES ML-HDNNP ML-IAP ML-PACE + ML-POD ML-QUIP ML-RANN ML-SNAP diff --git a/cmake/presets/all_on.cmake b/cmake/presets/all_on.cmake index 8229baf652..0a001bdc56 100644 --- a/cmake/presets/all_on.cmake +++ b/cmake/presets/all_on.cmake @@ -58,6 +58,7 @@ set(ALL_PACKAGES ML-HDNNP ML-IAP ML-PACE + ML-POD ML-QUIP ML-RANN ML-SNAP diff --git a/cmake/presets/clang.cmake b/cmake/presets/clang.cmake index f1964f3e0f..fce451d803 100644 --- a/cmake/presets/clang.cmake +++ b/cmake/presets/clang.cmake @@ -28,10 +28,3 @@ set(MPI_CXX "clang++" CACHE STRING "" FORCE) set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) -set(OpenMP_C "clang" CACHE STRING "" FORCE) -set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "" FORCE) -set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE) -set(OpenMP_CXX "clang++" CACHE STRING "" FORCE) -set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE) -set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE) -set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE) diff --git a/cmake/presets/gcc.cmake b/cmake/presets/gcc.cmake index cb626ea019..42cd30d149 100644 --- a/cmake/presets/gcc.cmake +++ b/cmake/presets/gcc.cmake @@ -19,11 +19,3 @@ set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Og -g -std=f2003" CACHE STRING "" FORCE) set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -O2 -DNDEBUG -std=f2003" CACHE STRING "" FORCE) set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG -std=f2003" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) - -set(OpenMP_C "gcc" CACHE STRING "" FORCE) -set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "" FORCE) -set(OpenMP_C_LIB_NAMES "gomp" CACHE STRING "" FORCE) -set(OpenMP_CXX "g++" CACHE STRING "" FORCE) -set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE) -set(OpenMP_CXX_LIB_NAMES "gomp" CACHE STRING "" FORCE) -set(OpenMP_omp_LIBRARY "libgomp.so" CACHE PATH "" FORCE) diff --git a/cmake/presets/intel.cmake b/cmake/presets/intel.cmake index 9baf873608..d61ea20d78 100644 --- a/cmake/presets/intel.cmake +++ b/cmake/presets/intel.cmake @@ -1,4 +1,4 @@ -# preset that will enable Intel compilers with support for MPI and OpenMP (on Linux boxes) +# preset that will enable the classic Intel compilers with support for MPI and OpenMP (on Linux boxes) set(CMAKE_CXX_COMPILER "icpc" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "icc" CACHE STRING "" FORCE) @@ -18,11 +18,11 @@ set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) set(OpenMP_C "icc" CACHE STRING "" FORCE) -set(OpenMP_C_FLAGS "-qopenmp" 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 "icpc" CACHE STRING "" FORCE) -set(OpenMP_CXX_FLAGS "-qopenmp" 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" CACHE STRING "" FORCE) +set(OpenMP_Fortran_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE) set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE) diff --git a/cmake/presets/mingw-cross.cmake b/cmake/presets/mingw-cross.cmake index c5d9a7bb89..2d74657394 100644 --- a/cmake/presets/mingw-cross.cmake +++ b/cmake/presets/mingw-cross.cmake @@ -47,6 +47,7 @@ set(WIN_PACKAGES MISC ML-HDNNP ML-IAP + ML-POD ML-RANN ML-SNAP MOFFF diff --git a/cmake/presets/most.cmake b/cmake/presets/most.cmake index 4b26a51e23..5dd9a2b78b 100644 --- a/cmake/presets/most.cmake +++ b/cmake/presets/most.cmake @@ -41,6 +41,7 @@ set(ALL_PACKAGES MEAM MISC ML-IAP + ML-POD ML-SNAP MOFFF MOLECULE diff --git a/cmake/presets/nvhpc.cmake b/cmake/presets/nvhpc.cmake new file mode 100644 index 0000000000..cfacce17ad --- /dev/null +++ b/cmake/presets/nvhpc.cmake @@ -0,0 +1,9 @@ +# preset that will enable Nvidia HPC SDK compilers with support for MPI and OpenMP (on Linux boxes) + +set(CMAKE_CXX_COMPILER "nvc++" CACHE STRING "" FORCE) +set(CMAKE_C_COMPILER "nvc" CACHE STRING "" FORCE) +set(CMAKE_Fortran_COMPILER "nvfortran" CACHE STRING "" FORCE) +set(MPI_CXX "nvc++" CACHE STRING "" FORCE) +set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) +unset(HAVE_OMP_H_INCLUDE CACHE) + diff --git a/cmake/presets/oneapi.cmake b/cmake/presets/oneapi.cmake index 403494c409..2aacf1a1f5 100644 --- a/cmake/presets/oneapi.cmake +++ b/cmake/presets/oneapi.cmake @@ -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" 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" 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" CACHE STRING "" FORCE) +set(OpenMP_Fortran_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE) set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE) diff --git a/cmake/presets/pedantic.cmake b/cmake/presets/pedantic.cmake index 11c74dbaa4..9bc0d036dd 100644 --- a/cmake/presets/pedantic.cmake +++ b/cmake/presets/pedantic.cmake @@ -1,4 +1,4 @@ -# preset that will restore gcc/g++ with support for MPI and OpenMP (on Linux boxes) +# preset that will set gcc/g++ with extra warnings enabled and support for MPI and OpenMP (on Linux boxes) set(CMAKE_CXX_COMPILER "g++" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "gcc" CACHE STRING "" FORCE) @@ -17,10 +17,3 @@ set(MPI_Fortran "gfortran" CACHE STRING "" FORCE) set(MPI_Fortran_COMPILER "mpifort" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) -set(OpenMP_C "gcc" CACHE STRING "" FORCE) -set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "" FORCE) -set(OpenMP_C_LIB_NAMES "gomp" CACHE STRING "" FORCE) -set(OpenMP_CXX "g++" CACHE STRING "" FORCE) -set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE) -set(OpenMP_CXX_LIB_NAMES "gomp" CACHE STRING "" FORCE) -set(OpenMP_omp_LIBRARY "libgomp.so" CACHE PATH "" FORCE) diff --git a/cmake/presets/pgi.cmake b/cmake/presets/pgi.cmake index 2b7fee7efa..4d499a2429 100644 --- a/cmake/presets/pgi.cmake +++ b/cmake/presets/pgi.cmake @@ -7,10 +7,3 @@ set(MPI_CXX "pgc++" CACHE STRING "" FORCE) set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) -set(OpenMP_C "pgcc" CACHE STRING "" FORCE) -set(OpenMP_C_FLAGS "-mp" CACHE STRING "" FORCE) -set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE) -set(OpenMP_CXX "pgc++" CACHE STRING "" FORCE) -set(OpenMP_CXX_FLAGS "-mp" CACHE STRING "" FORCE) -set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE) -set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE) diff --git a/doc/Makefile b/doc/Makefile index 4bbc252fb6..3a4a71bd54 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -38,16 +38,14 @@ endif # override settings for PIP commands # PIP_OPTIONS = --cert /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt --proxy http://proxy.mydomain.org -#SPHINXEXTRA = -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocessing.cpu_count())') $(shell test -f $(BUILDDIR)/doxygen/xml/run.stamp && printf -- "-E") - # temporarily disable caching so that the hack for the sphinx-tabs extensions to get proper non-html output works -SPHINXEXTRA = -E -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocessing.cpu_count())') +SPHINXEXTRA = -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocessing.cpu_count())') # grab list of sources from doxygen config file. # we only want to use explicitly listed files. DOXYFILES = $(shell sed -n -e 's/\#.*$$//' -e '/^ *INPUT \+=/,/^[A-Z_]\+ \+=/p' doxygen/Doxyfile.in | sed -e 's/@LAMMPS_SOURCE_DIR@/..\/src/g' -e 's/\\//g' -e 's/ \+/ /' -e 's/[A-Z_]\+ \+= *\(YES\|NO\|\)//') -.PHONY: help clean-all clean clean-spelling epub mobi rst html pdf spelling anchor_check style_check char_check xmlgen fasthtml +.PHONY: help clean-all clean clean-spelling epub mobi html pdf spelling anchor_check style_check char_check xmlgen fasthtml # ------------------------------------------ @@ -89,6 +87,8 @@ html: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX) @$(MAKE) $(MFLAGS) -C graphviz all @(\ . $(VENV)/bin/activate ; env PYTHONWARNINGS= \ + sphinx-build -E $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\ + touch $(RSTDIR)/Fortran.rst ;\ sphinx-build $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\ ln -sf Manual.html html/index.html;\ rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\ @@ -114,7 +114,9 @@ fasthtml: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX) @mkdir -p fasthtml @(\ . $(VENV)/bin/activate ; env PYTHONWARNINGS= \ - sphinx-build -j 4 -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/fasthtml/doctrees $(RSTDIR) fasthtml ;\ + sphinx-build $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/fasthtml/doctrees $(RSTDIR) fasthtml ;\ + touch $(RSTDIR)/Fortran.rst ;\ + sphinx-build $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/fasthtml/doctrees $(RSTDIR) fasthtml ;\ deactivate ;\ ) @rm -rf fasthtml/_sources @@ -144,6 +146,8 @@ epub: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) @cp src/JPG/*.* epub/JPG @(\ . $(VENV)/bin/activate ;\ + sphinx-build -E $(SPHINXEXTRA) -b epub -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) epub ;\ + touch $(RSTDIR)/Fortran.rst ;\ sphinx-build $(SPHINXEXTRA) -b epub -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) epub ;\ rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\ deactivate ;\ @@ -163,7 +167,9 @@ pdf: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) @if [ "$(HAS_PDFLATEX)" == "NO" ] ; then echo "PDFLaTeX or latexmk were not found! Please check README for further instructions" 1>&2; exit 1; fi @(\ . $(VENV)/bin/activate ; env PYTHONWARNINGS= \ - sphinx-build $(SPHINXEXTRA) -b latex -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\ + sphinx-build -E $(SPHINXEXTRA) -b latex -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\ + touch $(RSTDIR)/Fortran.rst ;\ + sphinx-build $(SPHINXEXTRA) -b latex -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\ rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\ echo "############################################" ;\ rst_anchor_check src/*.rst ;\ diff --git a/doc/lammps.1 b/doc/lammps.1 index e4f0f2a9eb..a9d1e2ce6e 100644 --- a/doc/lammps.1 +++ b/doc/lammps.1 @@ -1,7 +1,7 @@ -.TH LAMMPS "1" "15 September 2022" "2022-9-15" +.TH LAMMPS "1" "3 November 2022" "2022-11-3" .SH NAME .B LAMMPS -\- Molecular Dynamics Simulator. Version 15 September 2022 +\- Molecular Dynamics Simulator. Version 3 November 2022 .SH SYNOPSIS .B lmp diff --git a/doc/src/Build_development.rst b/doc/src/Build_development.rst index 1644c7ea86..102ec67e7e 100644 --- a/doc/src/Build_development.rst +++ b/doc/src/Build_development.rst @@ -147,6 +147,16 @@ compile and will download and compile a specific recent version of the `Googletest `_ C++ test framework for implementing the tests. +.. admonition:: Software version requirements for testing + :class: note + + The compiler and library version requirements for the testing + framework are more strict than for the main part of LAMMPS. For + example the default GNU C++ and Fortran compilers of RHEL/CentOS 7.x + (version 4.8.x) are not sufficient. The CMake configuration will try + to detect compatible versions and either skip incompatible tests or + stop with an error. + After compilation is complete, the unit testing is started in the build folder using the ``ctest`` command, which is part of the CMake software. The output of this command will be looking something like this:: diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 2535b9010f..910dccbb8a 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -36,6 +36,7 @@ This is the list of packages that may require additional steps. * :ref:`AWPMD ` * :ref:`COLVARS ` * :ref:`COMPRESS ` + * :ref:`ELECTRODE ` * :ref:`GPU ` * :ref:`H5MD ` * :ref:`INTEL ` @@ -48,6 +49,7 @@ This is the list of packages that may require additional steps. * :ref:`ML-HDNNP ` * :ref:`ML-IAP ` * :ref:`ML-PACE ` + * :ref:`ML-POD ` * :ref:`ML-QUIP ` * :ref:`MOLFILE ` * :ref:`MSCG ` @@ -234,7 +236,7 @@ LAMMPS code. This also applies to the ``-DLAMMPS_BIGBIG``\ , Makefile you use. You can also build the library in one step from the ``lammps/src`` dir, -using a command like these, which simply invoke the ``lib/gpu/Install.py`` +using a command like these, which simply invokes the ``lib/gpu/Install.py`` script with the specified args: .. code-block:: bash @@ -350,7 +352,7 @@ minutes to hours) to build. Of course you only need to do that once.) You can download and build the KIM library manually if you prefer; follow the instructions in ``lib/kim/README``. You can also do this in one step from the lammps/src directory, using a command like - these, which simply invoke the ``lib/kim/Install.py`` script with + these, which simply invokes the ``lib/kim/Install.py`` script with the specified args. .. code-block:: bash @@ -483,6 +485,9 @@ They must be specified in uppercase. * - **Arch-ID** - **HOST or GPU** - **Description** + * - NATIVE + - HOST + - Local machine * - AMDAVX - HOST - AMD 64-bit x86 CPU (AVX 1) @@ -522,9 +527,21 @@ They must be specified in uppercase. * - BDW - HOST - Intel Broadwell Xeon E-class CPU (AVX 2 + transactional mem) + * - SKL + - HOST + - Intel Skylake Client CPU * - SKX - HOST - - Intel Sky Lake Xeon E-class HPC CPU (AVX512 + transactional mem) + - Intel Skylake Xeon Server CPU (AVX512) + * - ICL + - HOST + - Intel Ice Lake Client CPU (AVX512) + * - ICX + - HOST + - Intel Ice Lake Xeon Server CPU (AVX512) + * - SPR + - HOST + - Intel Sapphire Rapids Xeon Server CPU (AVX512) * - KNC - HOST - Intel Knights Corner Xeon Phi @@ -596,7 +613,10 @@ They must be specified in uppercase. - AMD GPU MI100 GFX908 * - VEGA90A - GPU - - AMD GPU + - AMD GPU MI200 GFX90A + * - INTEL_GEN + - GPU + - SPIR64-based devices, e.g. Intel GPUs, using JIT * - INTEL_DG1 - GPU - Intel Iris XeMAX GPU @@ -611,9 +631,12 @@ They must be specified in uppercase. - Intel GPU Gen12LP * - INTEL_XEHP - GPU - - Intel GPUs Xe-HP + - Intel GPU Xe-HP + * - INTEL_PVC + - GPU + - Intel GPU Ponte Vecchio -This list was last updated for version 3.5.0 of the Kokkos library. +This list was last updated for version 3.7.0 of the Kokkos library. .. tabs:: @@ -933,7 +956,7 @@ more details. You can download and build the MS-CG library manually if you prefer; follow the instructions in ``lib/mscg/README``\ . You can also do it in one step from the ``lammps/src`` dir, using a - command like these, which simply invoke the + command like these, which simply invokes the ``lib/mscg/Install.py`` script with the specified args: .. code-block:: bash @@ -990,7 +1013,7 @@ POEMS package ``lib/poems``\ . You can do this manually if you prefer; follow the instructions in ``lib/poems/README``\ . You can also do it in one step from the ``lammps/src`` dir, using a command like these, - which simply invoke the ``lib/poems/Install.py`` script with the + which simply invokes the ``lib/poems/Install.py`` script with the specified args: .. code-block:: bash @@ -1079,7 +1102,7 @@ binary package provided by your operating system. You can download and build the Voro++ library manually if you prefer; follow the instructions in ``lib/voronoi/README``. You can also do it in one step from the ``lammps/src`` dir, using a - command like these, which simply invoke the + command like these, which simply invokes the ``lib/voronoi/Install.py`` script with the specified args: .. code-block:: bash @@ -1158,7 +1181,7 @@ The ATC package requires the MANYBODY package also be installed. ``lib/atc``. You can do this manually if you prefer; follow the instructions in ``lib/atc/README``. You can also do it in one step from the ``lammps/src`` dir, using a command like these, - which simply invoke the ``lib/atc/Install.py`` script with the + which simply invokes the ``lib/atc/Install.py`` script with the specified args: .. code-block:: bash @@ -1209,7 +1232,7 @@ AWPMD package ``lib/awpmd``. You can do this manually if you prefer; follow the instructions in ``lib/awpmd/README``. You can also do it in one step from the ``lammps/src`` dir, using a command like these, - which simply invoke the ``lib/awpmd/Install.py`` script with the + which simply invokes the ``lib/awpmd/Install.py`` script with the specified args: .. code-block:: bash @@ -1272,7 +1295,7 @@ be built for the most part with all major versions of the C++ language. In general, it is safer to use build setting consistent with the rest of LAMMPS. This is best carried out from the LAMMPS src - directory using a command like these, which simply invoke the + directory using a command like these, which simply invokes the ``lib/colvars/Install.py`` script with the specified args: .. code-block:: bash @@ -1313,20 +1336,30 @@ This package depends on the KSPACE package. .. tab:: CMake build - No additional settings are needed besides ``-D PKG_KSPACE=yes`` and ``-D - PKG_ELECTRODE=yes``. + No additional settings are needed besides ``-D PKG_KSPACE=yes`` and + ``-D PKG_ELECTRODE=yes``. .. tab:: Traditional make - The package is activated with ``make yes-KSPACE`` and ``make - yes-ELECTRODE`` + Before building LAMMPS, you must configure the ELECTRODE support + libraries and settings in ``lib/electrode``. You can do this + manually, if you prefer, or do it in one step from the + ``lammps/src`` dir, using a command like these, which simply + invokes the ``lib/electrode/Install.py`` script with the specified + args: + + .. code-block:: bash + + $ make lib-electrode # print help message + $ make lib-electrode args="-m serial" # build with GNU g++ compiler and MPI STUBS (settings as with "make serial") + $ make lib-electrode args="-m mpi" # build with default MPI compiler (settings as with "make mpi") - Note that the ``Makefile.lammps`` file has settings for the BLAS and - LAPACK linear algebra libraries. As explained in ``lib/awpmd/README`` - these can either exist on your system, or you can use the files provided - in ``lib/linalg``. In the latter case you also need to build the library - in ``lib/linalg`` with a command like these: + Note that the ``Makefile.lammps`` file has settings for the BLAS + and LAPACK linear algebra libraries. These can either exist on + your system, or you can use the files provided in ``lib/linalg``. + In the latter case you also need to build the library in + ``lib/linalg`` with a command like these: .. code-block:: bash @@ -1335,6 +1368,9 @@ This package depends on the KSPACE package. $ make lib-linalg args="-m mpi" # build with default MPI Fortran compiler (settings as with "make mpi") $ make lib-linalg args="-m gfortran" # build with GNU Fortran compiler + The package itself is activated with ``make yes-KSPACE`` and + ``make yes-ELECTRODE`` + ---------- .. _ml-pace: @@ -1377,6 +1413,49 @@ at: `https://github.com/ICAMS/lammps-user-pace/ `_ and in PDF output by passing the embedded + text to LaTeX. Some care has to be taken, though, since there are + limitations which macros and features can be used in either mode, so + it is recommended to always check whether any new or changed + documentation does translate and render correctly with either output. - A test whether all styles are documented and listed in their respective overview pages. A typical output with warnings looks like this: diff --git a/doc/src/Commands_all.rst b/doc/src/Commands_all.rst index d7b1609619..bd9d0ed09c 100644 --- a/doc/src/Commands_all.rst +++ b/doc/src/Commands_all.rst @@ -31,7 +31,6 @@ table above. * :doc:`bond_style ` * :doc:`bond_write ` * :doc:`boundary ` - * :doc:`box ` * :doc:`change_box ` * :doc:`clear ` * :doc:`comm_modify ` @@ -90,8 +89,7 @@ table above. * :doc:`region ` * :doc:`replicate ` * :doc:`rerun ` - * :doc:`reset_atom_ids ` - * :doc:`reset_mol_ids ` + * :doc:`reset_atoms ` * :doc:`reset_timestep ` * :doc:`restart ` * :doc:`run ` @@ -127,6 +125,7 @@ additional letter in parenthesis: k = KOKKOS. * :doc:`group2ndx ` * :doc:`hyper ` * :doc:`kim ` + * :doc:`fitpod ` * :doc:`mdi ` * :doc:`ndx2group ` * :doc:`neb ` diff --git a/doc/src/Commands_category.rst b/doc/src/Commands_category.rst index 4a08d040b7..7ac747e8fc 100644 --- a/doc/src/Commands_category.rst +++ b/doc/src/Commands_category.rst @@ -25,7 +25,6 @@ Setup simulation box: :columns: 4 * :doc:`boundary ` - * :doc:`box ` * :doc:`change_box ` * :doc:`create_box ` * :doc:`dimension ` diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index c5c2fb7cba..f9ff8355ba 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -69,9 +69,9 @@ OPT. * :doc:`edpd/source ` * :doc:`efield ` * :doc:`ehex ` - * :doc:`electrode/conp (i) ` - * :doc:`electrode/conq (i) ` - * :doc:`electrode/thermo (i) ` + * :doc:`electrode/conp (i) ` + * :doc:`electrode/conq (i) ` + * :doc:`electrode/thermo (i) ` * :doc:`electron/stopping ` * :doc:`electron/stopping/fit ` * :doc:`enforce2d (k) ` diff --git a/doc/src/Commands_pair.rst b/doc/src/Commands_pair.rst index dda23d4a41..3f5deef24a 100644 --- a/doc/src/Commands_pair.rst +++ b/doc/src/Commands_pair.rst @@ -205,7 +205,7 @@ OPT. * :doc:`mesont/tpm ` * :doc:`mgpt ` * :doc:`mie/cut (g) ` - * :doc:`mliap ` + * :doc:`mliap (k) ` * :doc:`mm3/switch3/coulgauss/long ` * :doc:`momb ` * :doc:`morse (gkot) ` @@ -236,6 +236,8 @@ OPT. * :doc:`oxrna2/xstk ` * :doc:`oxrna2/coaxstk ` * :doc:`pace (k) ` + * :doc:`pace/extrapolation ` + * :doc:`pod ` * :doc:`peri/eps ` * :doc:`peri/lps (o) ` * :doc:`peri/pmb (o) ` @@ -294,6 +296,7 @@ OPT. * :doc:`vashishta (gko) ` * :doc:`vashishta/table (o) ` * :doc:`wf/cut ` + * :doc:`ylz ` * :doc:`yukawa (gko) ` * :doc:`yukawa/colloid (go) ` * :doc:`zbl (gko) ` diff --git a/doc/src/Commands_removed.rst b/doc/src/Commands_removed.rst index 1000d11e29..6d7e7619bd 100644 --- a/doc/src/Commands_removed.rst +++ b/doc/src/Commands_removed.rst @@ -2,14 +2,17 @@ Removed commands and packages ============================= This page lists LAMMPS commands and packages that have been removed from -the distribution and provides suggestions for alternatives or replacements. -LAMMPS has special dummy styles implemented, that will stop LAMMPS and -print a suitable error message in most cases, when a style/command is used -that has been removed. +the distribution and provides suggestions for alternatives or +replacements. LAMMPS has special dummy styles implemented, that will +stop LAMMPS and print a suitable error message in most cases, when a +style/command is used that has been removed or will replace the command +with the direct alternative (if available) and print a warning. Fix ave/spatial and fix ave/spatial/sphere ------------------------------------------ +.. deprecated:: 11Dec2015 + The fixes ave/spatial and ave/spatial/sphere have been removed from LAMMPS since they were superseded by the more general and extensible "chunk infrastructure". Here the system is partitioned in one of many possible @@ -17,10 +20,23 @@ ways through the :doc:`compute chunk/atom ` command and then averaging is done using :doc:`fix ave/chunk `. Please refer to the :doc:`chunk HOWTO ` section for an overview. -Reset_ids command ------------------ +Box command +----------- -The reset_ids command has been renamed to :doc:`reset_atom_ids `. +.. deprecated:: TBD + +The *box* command has been removed and the LAMMPS code changed so it won't +be needed. If present, LAMMPS will ignore the command and print a warning. + +Reset_ids, reset_atom_ids, reset_mol_ids commands +------------------------------------------------- + +.. deprecated:: TBD + +The *reset_ids*, *reset_atom_ids*, and *reset_mol_ids* commands have +been folded into the :doc:`reset_atoms ` command. If +present, LAMMPS will replace the commands accordingly and print a +warning. MEAM package ------------ @@ -30,18 +46,21 @@ The code in the :ref:`MEAM package ` is a translation of the Fortran code of MEAM into C++, which removes several restrictions (e.g. there can be multiple instances in hybrid pair styles) and allows for some optimizations leading to better performance. The pair style -:doc:`meam ` has the exact same syntax. +:doc:`meam ` has the exact same syntax. For a transition +period the C++ version of MEAM was called USER-MEAMC so it could +coexist with the Fortran version. REAX package ------------ The REAX package has been removed since it was superseded by the -:ref:`REAXFF package `. The REAXFF -package has been tested to yield equivalent results to the REAX package, -offers better performance, supports OpenMP multi-threading via OPENMP, -and GPU and threading parallelization through KOKKOS. The new pair styles -are not syntax compatible with the removed reax pair style, so input -files will have to be adapted. +:ref:`REAXFF package `. The REAXFF package has been tested +to yield equivalent results to the REAX package, offers better +performance, supports OpenMP multi-threading via OPENMP, and GPU and +threading parallelization through KOKKOS. The new pair styles are not +syntax compatible with the removed reax pair style, so input files will +have to be adapted. The REAXFF package was originally called +USER-REAXC. USER-CUDA package ----------------- @@ -60,5 +79,6 @@ restart2data tool The functionality of the restart2data tool has been folded into the LAMMPS executable directly instead of having a separate tool. A combination of the commands :doc:`read_restart ` and -:doc:`write_data ` can be used to the same effect. For added -convenience this conversion can also be triggered by :doc:`command line flags ` +:doc:`write_data ` can be used to the same effect. For +added convenience this conversion can also be triggered by +:doc:`command line flags ` diff --git a/doc/src/Developer_code_design.rst b/doc/src/Developer_code_design.rst index 820ad47fba..786bd51c26 100644 --- a/doc/src/Developer_code_design.rst +++ b/doc/src/Developer_code_design.rst @@ -50,7 +50,7 @@ parallel each MPI process creates such an instance. This can be seen in the ``main.cpp`` file where the core steps of running a LAMMPS simulation are the following 3 lines of code: -.. code-block:: C++ +.. code-block:: c++ LAMMPS *lammps = new LAMMPS(argc, argv, lammps_comm); lammps->input->file(); @@ -78,7 +78,7 @@ LAMMPS makes extensive use of the object oriented programming (OOP) principles of *compositing* and *inheritance*. Classes like the ``LAMMPS`` class are a **composite** containing pointers to instances of other classes like ``Atom``, ``Comm``, ``Force``, ``Neighbor``, -``Modify``, and so on. Each of these classes implement certain +``Modify``, and so on. Each of these classes implements certain functionality by storing and manipulating data related to the simulation and providing member functions that trigger certain actions. Some of those classes like ``Force`` are themselves @@ -87,9 +87,9 @@ interactions. Similarly the ``Modify`` class contains a list of ``Fix`` and ``Compute`` classes. If the input commands that correspond to these classes include the word *style*, then LAMMPS stores only a single instance of that class. E.g. *atom_style*, -*comm_style*, *pair_style*, *bond_style*. It the input command does -not include the word *style*, there can be many instances of that -class defined. E.g. *region*, *fix*, *compute*, *dump*. +*comm_style*, *pair_style*, *bond_style*. If the input command does +**not** include the word *style*, then there may be many instances of +that class defined, for example *region*, *fix*, *compute*, *dump*. **Inheritance** enables creation of *derived* classes that can share common functionality in their base class while providing a consistent @@ -232,7 +232,7 @@ macro ``PairStyle()`` will associate the style name "lj/cut" with a factory function creating an instance of the ``PairLJCut`` class. -.. code-block:: C++ +.. code-block:: c++ // from force.h typedef Pair *(*PairCreator)(LAMMPS *); @@ -360,7 +360,7 @@ characters; "{:<8}" would do this as left aligned, "{:^8}" as centered, argument type must be compatible or else the {fmt} formatting code will throw an exception. Some format string examples are given below: -.. code-block:: C +.. code-block:: c++ auto mesg = fmt::format(" CPU time: {:4d}:{:02d}:{:02d}\n", cpuh, cpum, cpus); mesg = fmt::format("{:<8s}| {:<10.5g} | {:<10.5g} | {:<10.5g} |{:6.1f} |{:6.2f}\n", diff --git a/doc/src/Developer_notes.rst b/doc/src/Developer_notes.rst index 2b3375265f..a781737d6f 100644 --- a/doc/src/Developer_notes.rst +++ b/doc/src/Developer_notes.rst @@ -105,7 +105,7 @@ list, where each pair of atoms is listed only once (except when the pairs straddling sub-domains or periodic boundaries will be listed twice). Thus these are the default settings when a neighbor list request is created in: -.. code-block:: C++ +.. code-block:: c++ void Pair::init_style() { @@ -129,7 +129,7 @@ neighbor list request to the specific needs of a style an additional request flag is needed. The :doc:`tersoff ` pair style, for example, needs a "full" neighbor list: -.. code-block:: C++ +.. code-block:: c++ void PairTersoff::init_style() { @@ -141,7 +141,7 @@ When a pair style supports r-RESPA time integration with different cutoff region the request flag may depend on the corresponding r-RESPA settings. Here an example from pair style lj/cut: -.. code-block:: C++ +.. code-block:: c++ void PairLJCut::init_style() { @@ -160,7 +160,7 @@ Granular pair styles need neighbor lists based on particle sizes and not cutoff and also may require to have the list of previous neighbors available ("history"). For example with: -.. code-block:: C++ +.. code-block:: c++ if (use_history) neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_HISTORY); else neighbor->add_request(this, NeighConst::REQ_SIZE); @@ -170,7 +170,7 @@ settings each request can set an id which is then used in the corresponding ``init_list()`` function to assign it to the suitable pointer variable. This is done for example by the :doc:`pair style meam `: -.. code-block:: C++ +.. code-block:: c++ void PairMEAM::init_style() { @@ -189,7 +189,7 @@ just once) and this can also be indicated by a flag. As an example here is the request from the ``FixPeriNeigh`` class which is created internally by :doc:`Peridynamics pair styles `: -.. code-block:: C++ +.. code-block:: c++ neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); @@ -198,7 +198,7 @@ than what is usually inferred from the pair style settings (largest cutoff of all pair styles plus neighbor list skin). The following is used in the :doc:`compute rdf ` command implementation: -.. code-block:: C++ +.. code-block:: c++ if (cutflag) neighbor->add_request(this, NeighConst::REQ_OCCASIONAL)->set_cutoff(mycutneigh); @@ -212,7 +212,7 @@ for printing the neighbor list summary the name of the requesting command should be set. Below is the request from the :doc:`delete atoms ` command: -.. code-block:: C++ +.. code-block:: c++ neighbor->add_request(this, "delete_atoms", NeighConst::REQ_FULL); diff --git a/doc/src/Developer_plugins.rst b/doc/src/Developer_plugins.rst index 36fdd010b3..dd5431507e 100644 --- a/doc/src/Developer_plugins.rst +++ b/doc/src/Developer_plugins.rst @@ -95,7 +95,7 @@ a class ``PairMorse2`` in the files ``pair_morse2.h`` and ``pair_morse2.cpp`` with the factory function and initialization function would look like this: -.. code-block:: C++ +.. code-block:: c++ #include "lammpsplugin.h" #include "version.h" @@ -141,7 +141,7 @@ list of argument strings), then the pointer type is ``lammpsplugin_factory2`` and it must be assigned to the *creator.v2* member of the plugin struct. Below is an example for that: -.. code-block:: C++ +.. code-block:: c++ #include "lammpsplugin.h" #include "version.h" @@ -176,7 +176,7 @@ demonstrated in the following example, which also shows that the implementation of the plugin class may be within the same source file as the plugin interface code: -.. code-block:: C++ +.. code-block:: c++ #include "lammpsplugin.h" diff --git a/doc/src/Developer_unittest.rst b/doc/src/Developer_unittest.rst index 820e911a8f..69e29263a6 100644 --- a/doc/src/Developer_unittest.rst +++ b/doc/src/Developer_unittest.rst @@ -194,7 +194,7 @@ macro. These tests operate by capturing the screen output when executing the failing command and then comparing that with a provided regular expression string pattern. Example: -.. code-block:: C++ +.. code-block:: c++ TEST_F(SimpleCommandsTest, UnknownCommand) { @@ -226,9 +226,9 @@ The following test programs are currently available: * - ``test_kim_commands.cpp`` - KimCommands - Tests for several commands from the :ref:`KIM package ` - * - ``test_reset_ids.cpp`` - - ResetIDs - - Tests to validate the :doc:`reset_atom_ids ` and :doc:`reset_mol_ids ` commands + * - ``test_reset_atoms.cpp`` + - ResetAtoms + - Tests to validate the :doc:`reset_atoms ` sub-commands Tests for the C-style library interface @@ -249,7 +249,7 @@ MPI support. These include tests where LAMMPS is run in multi-partition mode or only on a subset of the MPI world communicator. The CMake script code for adding this kind of test looks like this: -.. code-block:: CMake +.. code-block:: cmake if (BUILD_MPI) add_executable(test_library_mpi test_library_mpi.cpp) diff --git a/doc/src/Developer_updating.rst b/doc/src/Developer_updating.rst index 091312d68e..c02d6763de 100644 --- a/doc/src/Developer_updating.rst +++ b/doc/src/Developer_updating.rst @@ -7,7 +7,7 @@ source files provided as a supplement to a publication) that are written for an older version of LAMMPS and thus need to be updated to be compatible with the current version of LAMMPS. Due to the active development of LAMMPS it is likely to always be incomplete. Please -contact developer@lammps.org in case you run across an issue that is not +contact developers@lammps.org in case you run across an issue that is not (yet) listed here. Please also review the latest information about the LAMMPS :doc:`programming style conventions `, especially if you are considering to submit the updated version for inclusion into @@ -61,7 +61,7 @@ header file needs to be updated accordingly. Old: -.. code-block:: C++ +.. code-block:: c++ int PairEAM::pack_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { @@ -75,7 +75,7 @@ Old: New: -.. code-block:: C++ +.. code-block:: c++ int PairEAM::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { @@ -112,14 +112,14 @@ Example from a pair style: Old: -.. code-block:: C++ +.. code-block:: c++ if (eflag || vflag) ev_setup(eflag, vflag); else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; New: -.. code-block:: C++ +.. code-block:: c++ ev_init(eflag, vflag); @@ -142,14 +142,14 @@ when they are called from only one or a subset of the MPI processes. Old: -.. code-block:: C++ +.. code-block:: c++ val = force->numeric(FLERR, arg[1]); num = force->inumeric(FLERR, arg[2]); New: -.. code-block:: C++ +.. code-block:: c++ val = utils::numeric(FLERR, true, arg[1], lmp); num = utils::inumeric(FLERR, false, arg[2], lmp); @@ -183,14 +183,14 @@ copy them around for simulations. Old: -.. code-block:: C++ +.. code-block:: c++ fp = force->open_potential(filename); fp = fopen(filename, "r"); New: -.. code-block:: C++ +.. code-block:: c++ fp = utils::open_potential(filename, lmp); @@ -207,7 +207,7 @@ Example: Old: -.. code-block:: C++ +.. code-block:: c++ if (fptr == NULL) { char str[128]; @@ -217,7 +217,7 @@ Old: New: -.. code-block:: C++ +.. code-block:: c++ if (fptr == nullptr) error->one(FLERR, "Cannot open AEAM potential file {}: {}", filename, utils::getsyserror()); @@ -237,7 +237,7 @@ an example from the ``FixWallReflect`` class: Old: -.. code-block:: C++ +.. code-block:: c++ FixWallReflect(class LAMMPS *, int, char **); virtual ~FixWallReflect(); @@ -247,7 +247,7 @@ Old: New: -.. code-block:: C++ +.. code-block:: c++ FixWallReflect(class LAMMPS *, int, char **); ~FixWallReflect() override; @@ -271,7 +271,7 @@ the type of the "this" pointer argument. Old: -.. code-block:: C++ +.. code-block:: c++ comm->forward_comm_pair(this); comm->forward_comm_fix(this); @@ -284,7 +284,7 @@ Old: New: -.. code-block:: C++ +.. code-block:: c++ comm->forward_comm(this); comm->reverse_comm(this); @@ -304,7 +304,7 @@ requests can be :doc:`found here `. Example from the Old: -.. code-block:: C++ +.. code-block:: c++ int irequest = neighbor->request(this,instance_me); neighbor->requests[irequest]->pair = 0; @@ -317,7 +317,7 @@ Old: New: -.. code-block:: C++ +.. code-block:: c++ auto req = neighbor->add_request(this, NeighConst::REQ_OCCASIONAL); if (cutflag) req->set_cutoff(mycutneigh); @@ -340,7 +340,7 @@ these are internal fixes, there is no user visible change. Old: -.. code-block:: C++ +.. code-block:: c++ #include "fix_store.h" @@ -351,7 +351,7 @@ Old: New: -.. code-block:: C++ +.. code-block:: c++ #include "fix_store_peratom.h" @@ -362,7 +362,7 @@ New: Old: -.. code-block:: C++ +.. code-block:: c++ #include "fix_store.h" @@ -373,7 +373,7 @@ Old: New: -.. code-block:: C++ +.. code-block:: c++ #include "fix_store_global.h" @@ -396,7 +396,7 @@ the dump directly. Example: Old: -.. code-block:: C++ +.. code-block:: c++ int idump = output->find_dump(arg[iarg+1]); if (idump < 0) @@ -412,7 +412,7 @@ Old: New: -.. code-block:: C++ +.. code-block:: c++ auto idump = output->get_dump_by_id(arg[iarg+1]); if (!idump) error->all(FLERR,"Dump ID {} in hyper command does not exist", arg[iarg+1]); diff --git a/doc/src/Developer_utils.rst b/doc/src/Developer_utils.rst index b92d817d87..7c44ccfe56 100644 --- a/doc/src/Developer_utils.rst +++ b/doc/src/Developer_utils.rst @@ -317,7 +317,7 @@ are all "whitespace" characters, i.e. the space character, the tabulator character, the carriage return character, the linefeed character, and the form feed character. -.. code-block:: C++ +.. code-block:: c++ :caption: Tokenizer class example listing entries of the PATH environment variable #include "tokenizer.h" @@ -349,7 +349,7 @@ tokenizer into a ``try`` / ``catch`` block to handle errors. The when a (type of) number is requested as next token that is not compatible with the string representing the next word. -.. code-block:: C++ +.. code-block:: c++ :caption: ValueTokenizer class example with exception handling #include "tokenizer.h" @@ -427,7 +427,7 @@ one or two array indices "[]" with numbers > 0. A typical code segment would look like this: -.. code-block:: C++ +.. code-block:: c++ :caption: Usage example for ArgInfo class int nvalues = 0; @@ -476,7 +476,7 @@ open the file, and will call the :cpp:class:`LAMMPS_NS::Error` class in case of failures to read or to convert numbers, so that LAMMPS will be aborted. -.. code-block:: C++ +.. code-block:: c++ :caption: Use of PotentialFileReader class in pair style coul/streitz PotentialFileReader reader(lmp, file, "coul/streitz"); @@ -555,7 +555,7 @@ chunk size needs to be known in advance, 2) with :cpp:func:`MyPage::vget() its size is registered later with :cpp:func:`MyPage::vgot() `. -.. code-block:: C++ +.. code-block:: c++ :caption: Example of using :cpp:class:`MyPage ` #include "my_page.h" diff --git a/doc/src/Developer_write.rst b/doc/src/Developer_write.rst index bdc6559060..c374ec2e77 100644 --- a/doc/src/Developer_write.rst +++ b/doc/src/Developer_write.rst @@ -26,7 +26,7 @@ constructor with the signature: ``FixPrintVel(class LAMMPS *, int, char **)``. Every fix must be registered in LAMMPS by writing the following lines of code in the header before include guards: -.. code-block:: c +.. code-block:: c++ #ifdef FIX_CLASS // clang-format off @@ -47,7 +47,7 @@ keyword when it parses the input script. Let's write a simple fix which will print the average velocity at the end of each timestep. First of all, implement a constructor: -.. code-block:: C++ +.. code-block:: c++ FixPrintVel::FixPrintVel(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) @@ -72,7 +72,7 @@ in the Fix class called ``nevery`` which specifies how often the method The next method we need to implement is ``setmask()``: -.. code-block:: C++ +.. code-block:: c++ int FixPrintVel::setmask() { @@ -87,7 +87,7 @@ during execution. The constant ``END_OF_STEP`` corresponds to the are called during a timestep and the order in which they are called are shown in the previous section. -.. code-block:: C++ +.. code-block:: c++ void FixPrintVel::end_of_step() { @@ -143,7 +143,7 @@ The group membership information of an atom is contained in the *mask* property of and atom and the bit corresponding to a given group is stored in the groupbit variable which is defined in Fix base class: -.. code-block:: C++ +.. code-block:: c++ for (int i = 0; i < nlocal; ++i) { if (atom->mask[i] & groupbit) { @@ -174,7 +174,7 @@ to store positions of atoms from previous timestep, we need to add ``double** xold`` to the header file. Than add allocation code to the constructor: -.. code-block:: C++ +.. code-block:: c++ FixSavePos::FixSavePos(LAMMPS *lmp, int narg, char **arg), xold(nullptr) { @@ -190,7 +190,7 @@ to the constructor: Implement the aforementioned methods: -.. code-block:: C++ +.. code-block:: c++ double FixSavePos::memory_usage() { diff --git a/doc/src/Fortran.rst b/doc/src/Fortran.rst index 77ab447c7c..ec54a594d1 100644 --- a/doc/src/Fortran.rst +++ b/doc/src/Fortran.rst @@ -1,16 +1,17 @@ -The ``LIBLAMMPS`` Fortran Module -******************************** +The :f:mod:`LIBLAMMPS` Fortran Module +************************************* -The ``LIBLAMMPS`` module provides an interface to call LAMMPS from a -Fortran code. It is based on the LAMMPS C-library interface and -requires a Fortran 2003 compatible compiler to be compiled. It is -designed to be self-contained and not require any support functions -written in C, C++, or Fortran. +The :f:mod:`LIBLAMMPS` module provides an interface to call LAMMPS from +Fortran. It is based on the LAMMPS C library interface and requires a +fully Fortran 2003-compatible compiler to be compiled. It is designed +to be self-contained and not require any support functions written in C, +C++, or Fortran other than those in the C library interface and the module +itself. While C libraries have a defined binary interface (ABI) and can thus be -used from multiple compiler versions from different vendors for as long +used from multiple compiler versions from different vendors as long as they are compatible with the hosting operating system, the same is -not true for Fortran codes. Thus the LAMMPS Fortran module needs to be +not true for Fortran programs. Thus, the LAMMPS Fortran module needs to be compiled alongside the code using it from the source code in ``fortran/lammps.f90``. When linking, you also need to :doc:`link to the LAMMPS library `. A typical command line @@ -18,23 +19,23 @@ for a simple program using the Fortran interface would be: .. code-block:: bash - mpifort -o testlib.x lammps.f90 testlib.f90 -L. -llammps + mpifort -o testlib.x lammps.f90 testlib.f90 -L. -llammps -Please note, that the MPI compiler wrapper is only required when the -calling the library from an MPI parallel code. Otherwise, using the -fortran compiler (gfortran, ifort, flang, etc.) will suffice. It may be -necessary to link to additional libraries depending on how LAMMPS was -configured and whether the LAMMPS library :doc:`was compiled as a static -or shared library `. +Please note that the MPI compiler wrapper is only required when the +calling the library from an MPI-parallelized program. Otherwise, using +the plain Fortran compiler (gfortran, ifort, flang, etc.) will suffice. +It may be necessary to link to additional libraries, depending on how +LAMMPS was configured and whether the LAMMPS library :doc:`was compiled +as a static or dynamic library `. If the LAMMPS library itself has been compiled with MPI support, the resulting executable will still be able to run LAMMPS in parallel with -``mpirun`` or equivalent. Please also note that the order of the source -files matters: the ``lammps.f90`` file needs to be compiled first, since -it provides the ``LIBLAMMPS`` module that is imported by the Fortran -code using the interface. A working example code can be found together -with equivalent examples in C and C++ in the ``examples/COUPLE/simple`` -folder of the LAMMPS distribution. +``mpirun``, ``mpiexec`` or equivalent. Please also note that the order +of the source files matters: the ``lammps.f90`` file needs to be +compiled first, since it provides the :f:mod:`LIBLAMMPS` module that is +imported by the Fortran code that uses the interface. A working example +can be found together with equivalent examples in C and C++ in the +``examples/COUPLE/simple`` folder of the LAMMPS distribution. .. versionadded:: 9Oct2020 @@ -49,7 +50,7 @@ folder of the LAMMPS distribution. .. note:: A contributed (and more complete!) Fortran interface that more - closely resembles the C-library interface is available in the + closely resembles the C library interface is available in the ``examples/COUPLE/fortran2`` folder. Please see the ``README`` file in that folder for more information about it and how to contact its author and maintainer. @@ -62,32 +63,31 @@ Creating or deleting a LAMMPS object With the Fortran interface, the creation of a :cpp:class:`LAMMPS ` instance is included in the constructor for creating the :f:func:`lammps` derived type. To import the definition of -that type and its type bound procedures, you need to add a ``USE -LIBLAMMPS`` statement. Internally it will call either +that type and its type-bound procedures, you need to add a ``USE LIBLAMMPS`` +statement. Internally, it will call either :cpp:func:`lammps_open_fortran` or :cpp:func:`lammps_open_no_mpi` from the C library API to create the class instance. All arguments are -optional and :cpp:func:`lammps_mpi_init` will be called automatically, +optional and :cpp:func:`lammps_mpi_init` will be called automatically if it is needed. Similarly, a possible call to :cpp:func:`lammps_mpi_finalize` is integrated into the :f:func:`close` function and triggered with the optional logical argument set to -``.true.``. Here is a simple example: +``.TRUE.``. Here is a simple example: .. code-block:: fortran PROGRAM testlib USE LIBLAMMPS ! include the LAMMPS library interface IMPLICIT NONE - TYPE(lammps) :: lmp ! derived type to hold LAMMPS instance - CHARACTER(len=*), PARAMETER :: args(3) = & - [ CHARACTER(len=12) :: 'liblammps', '-log', 'none' ] + TYPE(lammps) :: lmp ! derived type to hold LAMMPS instance + CHARACTER(LEN=*), PARAMETER :: args(3) = & + [ CHARACTER(LEN=12) :: 'liblammps', '-log', 'none' ] ! create a LAMMPS instance (and initialize MPI) lmp = lammps(args) ! get and print numerical version code PRINT*, 'LAMMPS Version: ', lmp%version() - ! delete LAMMPS instance (and shuts down MPI) - CALL lmp%close(.true.) - + ! delete LAMMPS instance (and shutdown MPI) + CALL lmp%close(.TRUE.) END PROGRAM testlib It is also possible to pass command line flags from Fortran to C/C++ and @@ -103,8 +103,8 @@ version of the previous example: PROGRAM testlib2 USE LIBLAMMPS ! include the LAMMPS library interface IMPLICIT NONE - TYPE(lammps) :: lmp ! derived type to hold LAMMPS instance - CHARACTER(len=128), ALLOCATABLE :: command_args(:) + TYPE(lammps) :: lmp ! derived type to hold LAMMPS instance + CHARACTER(LEN=128), ALLOCATABLE :: command_args(:) INTEGER :: i, argc ! copy command line flags to `command_args()` @@ -122,7 +122,6 @@ version of the previous example: ! delete LAMMPS instance (and shuts down MPI) CALL lmp%close(.TRUE.) DEALLOCATE(command_args) - END PROGRAM testlib2 -------------------- @@ -133,9 +132,9 @@ Executing LAMMPS commands Once a LAMMPS instance is created, it is possible to "drive" the LAMMPS simulation by telling LAMMPS to read commands from a file or to pass individual or multiple commands from strings or lists of strings. This -is done similarly to how it is implemented in the :doc:`C-library +is done similarly to how it is implemented in the :doc:`C library interface `. Before handing off the calls to the -C-library interface, the corresponding Fortran versions of the calls +C library interface, the corresponding Fortran versions of the calls (:f:func:`file`, :f:func:`command`, :f:func:`commands_list`, and :f:func:`commands_string`) have to make a copy of the strings passed as arguments so that they can be modified to be compatible with the @@ -147,10 +146,10 @@ Below is a small demonstration of the uses of the different functions: PROGRAM testcmd USE LIBLAMMPS - TYPE(lammps) :: lmp - CHARACTER(len=512) :: cmds - CHARACTER(len=40), ALLOCATABLE :: cmdlist(:) - CHARACTER(len=10) :: trimmed + TYPE(lammps) :: lmp + CHARACTER(LEN=512) :: cmds + CHARACTER(LEN=40), ALLOCATABLE :: cmdlist(:) + CHARACTER(LEN=10) :: trimmed INTEGER :: i lmp = lammps() @@ -159,9 +158,9 @@ Below is a small demonstration of the uses of the different functions: ! define 10 groups of 10 atoms each ALLOCATE(cmdlist(10)) DO i=1, 10 - WRITE(trimmed,'(I10)') 10*i - WRITE(cmdlist(i),'(A,I1,A,I10,A,A)') & - 'group g', i-1, ' id ', 10*(i-1)+1, ':', ADJUSTL(trimmed) + WRITE(trimmed,'(I10)') 10*i + WRITE(cmdlist(i),'(A,I1,A,I10,A,A)') & + 'group g', i-1, ' id ', 10*(i-1)+1, ':', ADJUSTL(trimmed) END DO CALL lmp%commands_list(cmdlist) ! run multiple commands from multi-line string @@ -171,7 +170,6 @@ Below is a small demonstration of the uses of the different functions: 'create_atoms 1 single 1.0 1.0 ${zpos}' CALL lmp%commands_string(cmds) CALL lmp%close(.TRUE.) - END PROGRAM testcmd --------------- @@ -179,13 +177,15 @@ Below is a small demonstration of the uses of the different functions: Accessing system properties *************************** -The C-library interface allows the :doc:`extraction of different kinds +The C library interface allows the :doc:`extraction of different kinds of information ` about the active simulation -instance and also - in some cases - to apply modifications to it. In -some cases, the C-library interface makes pointers to internal data -structures accessible, thus when accessing them from Fortran, special -care is needed to avoid data corruption and crashes. Thus please see -the documentation of the individual type bound procedures for details. +instance and also---in some cases---to apply modifications to it, and the +Fortran interface provides access to the same data using Fortran-style, +C-interoperable data types. In some cases, the Fortran library interface makes +pointers to internal LAMMPS data structures accessible; when accessing them +through the library interfaces, special care is needed to avoid data corruption +and crashes. Please see the documentation of the individual type-bound +procedures for details. Below is an example demonstrating some of the possible uses. @@ -194,66 +194,180 @@ Below is an example demonstrating some of the possible uses. PROGRAM testprop USE LIBLAMMPS USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_double, c_int64_t - TYPE(lammps) :: lmp - INTEGER(kind=8) :: natoms - REAL(c_double), POINTER :: dt - INTEGER(c_int64_t), POINTER :: ntimestep - REAL(kind=8) :: pe, ke + USE, INTRINSIC :: ISO_FORTRAN_ENV, ONLY : OUTPUT_UNIT + TYPE(lammps) :: lmp + INTEGER(KIND=c_int64_t), POINTER :: natoms + REAL(KIND=c_double), POINTER :: dt + INTEGER(KIND=c_int64_t), POINTER :: ntimestep + REAL(KIND=c_double) :: pe, ke lmp = lammps() CALL lmp%file('in.sysinit') - natoms = INT(lmp%get_natoms(),8) - WRITE(6,'(A,I8,A)') 'Running a simulation with', natoms, ' atoms' - WRITE(6,'(I8,A,I8,A,I3,A)') lmp%extract_setting('nlocal'), ' local and', & - lmp%extract_setting('nghost'), ' ghost atom. ', & + natoms = lmp%extract_global('natoms') + WRITE(OUTPUT_UNIT,'(A,I0,A)') 'Running a simulation with ', natoms, ' atoms' + WRITE(OUTPUT_UNIT,'(I0,A,I0,A,I0,A)') lmp%extract_setting('nlocal'), & + ' local and ', lmp%extract_setting('nghost'), ' ghost atoms. ', & lmp%extract_setting('ntypes'), ' atom types' CALL lmp%command('run 2 post no') dt = lmp%extract_global('dt') ntimestep = lmp%extract_global('ntimestep') - WRITE(6,'(A,I4,A,F4.1,A)') 'At step:', ntimestep, ' Changing timestep from', dt, ' to 0.5' - dt = 0.5 + WRITE(OUTPUT_UNIT,'(A,I0,A,F4.1,A)') 'At step: ', ntimestep, & + ' Changing timestep from', dt, ' to 0.5' + dt = 0.5_c_double CALL lmp%command('run 2 post no') - WRITE(6,'(A,I4)') 'At step:', ntimestep + WRITE(OUTPUT_UNIT,'(A,I0)') 'At step: ', ntimestep pe = lmp%get_thermo('pe') ke = lmp%get_thermo('ke') PRINT*, 'PE = ', pe PRINT*, 'KE = ', ke CALL lmp%close(.TRUE.) - END PROGRAM testprop --------------- -The ``LIBLAMMPS`` module API -**************************** +The :f:mod:`LIBLAMMPS` module API +********************************* + +.. f:module:: LIBLAMMPS Below are the detailed descriptions of definitions and interfaces -of the contents of the ``LIBLAMMPS`` Fortran interface to LAMMPS. +of the contents of the :f:mod:`LIBLAMMPS` Fortran interface to LAMMPS. + +.. f:currentmodule:: None .. f:type:: lammps - Derived type that is the general class of the Fortran interface. It - holds a reference to the :cpp:class:`LAMMPS ` - class instance that any of the included calls are forwarded to. + Derived type that is the general class of the Fortran interface. + It holds a reference to the :cpp:class:`LAMMPS ` + class instance to which any of the included calls are forwarded. - :f c_ptr handle: reference to the LAMMPS class - :f subroutine close: :f:func:`close` - :f subroutine error: :f:func:`error` - :f function version: :f:func:`version` - :f subroutine file: :f:func:`file` - :f subroutine command: :f:func:`command` - :f subroutine commands_list: :f:func:`commands_list` - :f subroutine commands_string: :f:func:`commands_string` - :f function get_natoms: :f:func:`get_natoms` - :f function get_thermo: :f:func:`get_thermo` - :f subroutine extract_box: :f:func:`extract_box` - :f subroutine reset_box: :f:func:`reset_box` - :f subroutine memory_usage: :f:func:`memory_usage` - :f function extract_setting: :f:func:`extract_setting` - :f function extract_global: :f:func:`extract_global` + :f handle: reference to the LAMMPS class + :ftype handle: c_ptr + :f style: derived type to access lammps style constants + :ftype style: type(lammps_style) + :f type: derived type to access lammps type constants + :ftype type: type(lammps_type) + :f close: :f:subr:`close` + :ftype close: subroutine + :f subroutine error: :f:subr:`error` + :ftype error: subroutine + :f file: :f:subr:`file` + :ftype file: subroutine + :f command: :f:subr:`command` + :ftype command: subroutine + :f commands_list: :f:subr:`commands_list` + :ftype commands_list: subroutine + :f commands_string: :f:subr:`commands_string` + :ftype commands_string: subroutine + :f get_natoms: :f:func:`get_natoms` + :ftype get_natoms: function + :f get_thermo: :f:func:`get_thermo` + :ftype get_thermo: function + :f extract_box: :f:subr:`extract_box` + :ftype extract_box: subroutine + :f reset_box: :f:subr:`reset_box` + :ftype reset_box: subroutine + :f memory_usage: :f:subr:`memory_usage` + :ftype memory_usage: subroutine + :f get_mpi_comm: :f:func:`get_mpi_comm` + :ftype get_mpi_comm: function + :f extract_setting: :f:func:`extract_setting` + :ftype extract_setting: function + :f extract_global: :f:func:`extract_global` + :ftype extract_global: function + :f extract_atom: :f:func:`extract_atom` + :ftype extract_atom: function + :f extract_compute: :f:func:`extract_compute` + :ftype extract_compute: function + :f extract_fix: :f:func:`extract_fix` + :ftype extract_fix: function + :f extract_variable: :f:func:`extract_variable` + :ftype extract_variable: function + :f gather_atoms: :f:subr:`gather_atoms` + :ftype gather_atoms: subroutine + :f gather_atoms_concat: :f:subr:`gather_atoms_concat` + :ftype gather_atoms_concat: subroutine + :f gather_atoms_subset: :f:subr:`gather_atoms_subset` + :ftype gather_atoms_subset: subroutine + :f scatter_atoms: :f:subr:`scatter_atoms` + :ftype scatter_atoms: subroutine + :f scatter_atoms_subset: :f:subr:`scatter_atoms_subset` + :ftype scatter_atoms_subset: subroutine + :f gather_bonds: :f:subr:`gather_bonds` + :ftype gather_bonds: subroutine + :f create_atoms: :f:subr:`create_atoms` + :ftype create_atoms: subroutine + :f find_pair_neighlist: :f:func:`find_pair_neighlist` + :ftype find_pair_neighlist: function + :f find_fix_neighlist: :f:func:`find_fix_neighlist` + :ftype find_fix_neighlist: function + :f find_compute_neighlist: :f:func:`find_compute_neighlist` + :ftype find_compute_neighlist: function + :f neighlist_num_elements: :f:func:`neighlist_num_elements` + :ftype neighlist_num_elements: function + :f version: :f:func:`version` + :ftype version: function + :f get_os_info: :f:subr:`get_os_info` + :ftype get_os_info: subroutine + :f config_has_mpi_support: :f:func:`config_has_mpi_support` + :ftype config_has_mpi_support: function + :f config_has_gzip_support: :f:func:`config_has_gzip_support` + :ftype config_has_gzip_support: function + :f config_has_png_support: :f:func:`config_has_png_support` + :ftype config_has_png_support: function + :f config_has_jpeg_support: :f:func:`config_has_jpeg_support` + :ftype config_has_jpeg_support: function + :f config_has_ffmpeg_support: :f:func:`config_has_ffmpeg_support` + :ftype config_has_ffmpeg_support: function + :f config_has_exceptions: :f:func:`config_has_exceptions` + :ftype config_has_exceptions: function + :f config_has_package: :f:func:`config_has_package` + :ftype config_has_package: function + :f config_package_count: :f:func:`config_package_count` + :ftype config_package_count: function + :f config_package_name: :f:func:`config_package_name` + :ftype config_package_name: function + :f installed_packages: :f:subr:`installed_packages` + :ftype installed_packages: subroutine + :f config_accelerator: :f:func:`config_accelerator` + :ftype config_accelerator: function + :f has_gpu_device: :f:func:`has_gpu_device` + :ftype has_gpu_device: function + :f get_gpu_device_info: :f:subr:`get_gpu_device_info` + :ftype get_gpu_device_info: subroutine + :f has_style: :f:func:`has_style` + :ftype has_style: function + :f style_count: :f:func:`style_count` + :ftype style_count: function + :f style_name: :f:func:`style_name` + :ftype style_name: function + :f has_id: :f:func:`has_id` + :ftype has_id: function + :f id_count: :f:func:`id_count` + :ftype id_count: function + :f id_name: :f:subr:`id_name` + :ftype id_name: subroutine + :f plugin_count: :f:func:`plugin_count` + :ftype plugin_count: function + :f plugin_name: :f:subr:`plugin_name` + :ftype plugin_count: subroutine + :f encode_image_flags: :f:func:`encode_image_flags` + :ftype encode_image_flags: function + :f decode_image_flags: :f:subr:`decode_image_flags` + :ftype decode_image_flags: subroutine + :f flush_buffers: :f:subr:`flush_buffers` + :ftype flush_buffers: subroutine + :f is_running: :f:func:`is_running` + :ftype is_running: function + :f force_timeout: :f:subr:`force_timeout` + :ftype force_timeout: subroutine + :f has_error: :f:func:`has_error` + :ftype has_error: function + :f get_last_error_message: :f:subr:`get_last_error_message` + :ftype get_last_error_message: subroutine -------- @@ -270,59 +384,89 @@ of the contents of the ``LIBLAMMPS`` Fortran interface to LAMMPS. If *comm* is not provided, ``MPI_COMM_WORLD`` is assumed. For more details please see the documentation of :cpp:func:`lammps_open`. - :o character(len=\*) args(\*) [optional]: arguments as list of strings - :o integer comm [optional]: MPI communicator + :o args: arguments as list of strings + :otype args: character(len=\*),dimension(:),optional + :o comm: MPI communicator + :otype comm: integer,optional + :to: :cpp:func:`lammps_open_fortran` + :to: :cpp:func:`lammps_open_no_mpi` :r lammps: an instance of the :f:type:`lammps` derived type .. note:: - The ``MPI_F08`` module, which defines Fortran 2008 bindings for MPI, + The :f:mod:`MPI_F08` module, which defines Fortran 2008 bindings for MPI, is not directly supported by this interface due to the complexities of - supporting both the ``MPI_F08`` and ``MPI`` modules at the same time. - However, you should be able to use the ``MPI_VAL`` member of the + supporting both the :f:mod:`MPI_F08` and :f:mod:`MPI` modules at the same + time. However, you should be able to use the ``MPI_VAL`` member of the ``MPI_comm`` derived type to access the integer value of the communicator, such as in - .. code-block:: Fortran + .. code-block:: fortran PROGRAM testmpi - USE LIBLAMMPS - USE MPI_F08 - TYPE(lammps) :: lmp - lmp = lammps(MPI_COMM_SELF%MPI_VAL) + USE LIBLAMMPS + USE MPI_F08 + TYPE(lammps) :: lmp + lmp = lammps(MPI_COMM_SELF%MPI_VAL) END PROGRAM testmpi -Procedures Bound to the lammps Derived Type -=========================================== +.. f:type:: lammps_style + + This derived type is there to provide a convenient interface for the style + constants used with :f:func:`extract_compute`, :f:func:`extract_fix`, and + :f:func:`extract_variable`. Assuming your LAMMPS instance is called ``lmp``, + these constants will be ``lmp%style%global``, ``lmp%style%atom``, + and ``lmp%style%local``. These values are identical to the values described + in :cpp:enum:`_LMP_STYLE_CONST` for the C library interface. + + :f integer(c_int) global: used to request global data + :f integer(c_int) atom: used to request per-atom data + :f integer(c_int) local: used to request local data + +.. f:type:: lammps_type + + This derived type is there to provide a convenient interface for the type + constants used with :f:func:`extract_compute`, :f:func:`extract_fix`, and + :f:func:`extract_variable`. Assuming your LAMMPS instance is called ``lmp``, + these constants will be ``lmp%type%scalar``, ``lmp%type%vector``, and + ``lmp%type%array``. These values are identical to the values described + in :cpp:enum:`_LMP_TYPE_CONST` for the C library interface. + + :f integer(c_int) scalar: used to request scalars + :f integer(c_int) vector: used to request vectors + :f integer(c_int) array: used to request arrays (matrices) + +Procedures Bound to the :f:type:`lammps` Derived Type +===================================================== .. f:subroutine:: close([finalize]) This method will close down the LAMMPS instance through calling :cpp:func:`lammps_close`. If the *finalize* argument is present and - has a value of ``.true.``, then this subroutine also calls + has a value of ``.TRUE.``, then this subroutine also calls + :cpp:func:`lammps_kokkos_finalize` and :cpp:func:`lammps_mpi_finalize`. - :o logical finalize [optional]: shut down the MPI environment of the LAMMPS library if true. + :o finalize: shut down the MPI environment of the LAMMPS + library if ``.TRUE.``. + :otype finalize: logical,optional + :to: :cpp:func:`lammps_close` + :to: :cpp:func:`lammps_mpi_finalize` + :to: :cpp:func:`lammps_kokkos_finalize` -------- .. f:subroutine:: error(error_type, error_text) - This method is a wrapper around the :cpp:func:`lammps_error` function and will dispatch - an error through the LAMMPS Error class. + This method is a wrapper around the :cpp:func:`lammps_error` function and + will dispatch an error through the LAMMPS Error class. - .. versionadded:: TBD + .. versionadded:: 3Nov2022 - :p integer error_type: constant to select which Error class function to call + :p error_type: constant to select which Error class function to call + :ptype error_type: integer(c_int) :p character(len=\*) error_text: error message - --------- - -.. f:function:: version() - - This method returns the numeric LAMMPS version like :cpp:func:`lammps_version` - - :r integer: LAMMPS version + :to: :cpp:func:`lammps_error` -------- @@ -332,6 +476,7 @@ Procedures Bound to the lammps Derived Type and process commands from a file. :p character(len=\*) filename: name of file with LAMMPS commands + :to: :cpp:func:`lammps_file` -------- @@ -341,6 +486,7 @@ Procedures Bound to the lammps Derived Type execute a single command. :p character(len=\*) cmd: single LAMMPS command + :to: :cpp:func:`lammps_command` -------- @@ -349,7 +495,8 @@ Procedures Bound to the lammps Derived Type This method will call :cpp:func:`lammps_commands_list` to have LAMMPS execute a list of input lines. - :p character(len=\*) cmd(:): list of LAMMPS input lines + :p character(len=\*) cmd [dimension(:)]: list of LAMMPS input lines + :to: :cpp:func:`lammps_commands_list` -------- @@ -359,6 +506,7 @@ Procedures Bound to the lammps Derived Type execute a block of commands from a string. :p character(len=\*) str: LAMMPS input in string + :to: :cpp:func:`lammps_commands_string` -------- @@ -367,7 +515,14 @@ Procedures Bound to the lammps Derived Type This function will call :cpp:func:`lammps_get_natoms` and return the number of atoms in the system. - :r real(c_double): number of atoms + :to: :cpp:func:`lammps_get_natoms` + :r real(c_double) natoms: number of atoms + + .. note:: + + If you would prefer to get the number of atoms in its native format + (i.e., as a 32- or 64-bit integer, depending on how LAMMPS was compiled), + this can be extracted with :f:func:`extract_global`. -------- @@ -376,10 +531,11 @@ Procedures Bound to the lammps Derived Type This function will call :cpp:func:`lammps_get_thermo` and return the value of the corresponding thermodynamic keyword. - .. versionadded:: TBD + .. versionadded:: 3Nov2022 :p character(len=\*) name: string with the name of the thermo keyword - :r real(c_double): value of the requested thermo property or `0.0_c_double` + :to: :cpp:func:`lammps_get_thermo` + :r value [real(c_double)]: value of the requested thermo property or `0.0_c_double` -------- @@ -391,7 +547,7 @@ Procedures Bound to the lammps Derived Type as integers, but should be declared as ``LOGICAL`` variables when calling from Fortran. - .. versionadded:: TBD + .. versionadded:: 3Nov2022 :o real(c_double) boxlo [dimension(3),optional]: vector in which to store lower-bounds of simulation box @@ -400,11 +556,14 @@ Procedures Bound to the lammps Derived Type :o real(c_double) xy [optional]: variable in which to store *xy* tilt factor :o real(c_double) yz [optional]: variable in which to store *yz* tilt factor :o real(c_double) xz [optional]: variable in which to store *xz* tilt factor - :o logical pflags [dimension(3),optional]: vector in which to store + :o pflags: vector in which to store periodicity flags (``.TRUE.`` means periodic in that dimension) - :o logical boxflag [optional]: variable in which to store boolean denoting + :otype pflags: logical,dimension(3),optional + :o boxflag: variable in which to store boolean denoting whether the box will change during a simulation (``.TRUE.`` means box will change) + :otype boxflag: logical,optional + :to: :cpp:func:`lammps_extract_box` .. note:: @@ -413,7 +572,7 @@ Procedures Bound to the lammps Derived Type represents a properly-initialized LAMMPS instance, the following code will extract the periodic box settings into the variable "periodic": - .. code-block:: Fortran + .. code-block:: fortran ! code to start up logical :: periodic(3) @@ -427,7 +586,7 @@ Procedures Bound to the lammps Derived Type This subroutine will call :cpp:func:`lammps_reset_box`. All parameters are required. - .. versionadded:: TBD + .. versionadded:: 3Nov2022 :p real(c_double) boxlo [dimension(3)]: vector of three doubles containing the lower box boundary @@ -436,6 +595,7 @@ Procedures Bound to the lammps Derived Type :p real(c_double) xy: *x--y* tilt factor :p real(c_double) yz: *y--z* tilt factor :p real(c_double) xz: *x--z* tilt factor + :to: :cpp:func:`lammps_reset_box` -------- @@ -444,10 +604,11 @@ Procedures Bound to the lammps Derived Type This subroutine will call :cpp:func:`lammps_memory_usage` and store the result in the three-element array *meminfo*. - .. versionadded:: TBD + .. versionadded:: 3Nov2022 :p real(c_double) meminfo [dimension(3)]: vector of three doubles in which to store memory usage data + :to: :cpp:func:`lammps_memory_usage` -------- @@ -456,10 +617,12 @@ Procedures Bound to the lammps Derived Type This function returns a Fortran representation of the LAMMPS "world" communicator. - .. versionadded:: TBD + .. versionadded:: 3Nov2022 - :r integer: Fortran integer equivalent to the MPI communicator LAMMPS is + :to: :cpp:func:`lammps_get_mpi_comm` + :r comm: Fortran integer equivalent to the MPI communicator LAMMPS is using + :rtype comm: integer .. note:: @@ -471,7 +634,7 @@ Procedures Bound to the lammps Derived Type .. note:: - The `MPI_F08` module, which defines Fortran 2008 bindings for MPI, + The :f:mod:`MPI_F08` module, which defines Fortran 2008 bindings for MPI, is not directly supported by this function. However, you should be able to convert between the two using the `MPI_VAL` member of the communicator. For example, @@ -480,12 +643,12 @@ Procedures Bound to the lammps Derived Type USE MPI_F08 USE LIBLAMMPS - TYPE (LAMMPS) :: lmp + TYPE (lammps) :: lmp TYPE (MPI_Comm) :: comm ! ... [commands to set up LAMMPS/etc.] comm%MPI_VAL = lmp%get_mpi_comm() - should assign an `MPI_F08` communicator properly. + should assign an :f:mod:`MPI_F08` communicator properly. -------- @@ -494,10 +657,12 @@ Procedures Bound to the lammps Derived Type Query LAMMPS about global settings. See the documentation for the :cpp:func:`lammps_extract_setting` function from the C library. - .. versionadded:: TBD + .. versionadded:: 3Nov2022 :p character(len=\*) keyword: string containing the name of the thermo keyword - :r integer(c_int): value of the queried setting or :math:`-1` if unknown + :to: :cpp:func:`lammps_extract_setting` + :r integer(c_int) setting: value of the queried setting or :math:`-1` if + unknown -------- @@ -507,7 +672,7 @@ Procedures Bound to the lammps Derived Type either a string or a pointer to internal global LAMMPS data, depending on the data requested through *name*. - .. versionadded:: TBD + .. versionadded:: 3Nov2022 Note that this function actually does not return a value, but rather associates the pointer on the left side of the assignment to point to @@ -528,21 +693,21 @@ Procedures Bound to the lammps Derived Type .. code-block:: fortran PROGRAM demo - USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_int64_t - USE LIBLAMMPS - TYPE(lammps) :: lmp - INTEGER(c_int), POINTER :: nlocal - INTEGER(c_int64_t), POINTER :: ntimestep - CHARACTER(LEN=10) :: units - REAL(c_double), POINTER :: dt - lmp = lammps() - ! other commands - nlocal = lmp%extract_global('nlocal') - ntimestep = lmp%extract_global('ntimestep') - dt = lmp%extract_global('dt') - units = lmp%extract_global('units') - ! more commands - lmp.close(.TRUE.) + USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_int64_t, c_int, c_double + USE LIBLAMMPS + TYPE(lammps) :: lmp + INTEGER(c_int), POINTER :: nlocal => NULL() + INTEGER(c_int64_t), POINTER :: ntimestep => NULL() + REAL(c_double), POINTER :: dt => NULL() + CHARACTER(LEN=10) :: units + lmp = lammps() + ! other commands + nlocal = lmp%extract_global('nlocal') + ntimestep = lmp%extract_global('ntimestep') + dt = lmp%extract_global('dt') + units = lmp%extract_global('units') + ! more commands + lmp.close(.TRUE.) END PROGRAM demo would extract the number of atoms on this processor, the current time step, @@ -551,23 +716,1474 @@ Procedures Bound to the lammps Derived Type .. note:: - if this function returns a string, the string must have - length greater than or equal to the length of the string (not including the - terminal NULL character) that LAMMPS returns. If the variable's length is - too short, the string will be truncated. As usual in Fortran, strings - are padded with spaces at the end. + If :f:func:`extract_global` returns a string, the string must have length + greater than or equal to the length of the string (not including the + terminal ``NULL`` character) that LAMMPS returns. If the variable's + length is too short, the string will be truncated. As usual in Fortran, + strings are padded with spaces at the end. If you use an allocatable + string, the string **must be allocated** prior to calling this function, + but you can automatically reallocate it to the correct length after the + function returns, viz., - :p character(len=\*) name: string with the name of the extracted property - :r polymorphic: pointer to LAMMPS data. The left-hand side of the assignment - should be either a string (if expecting string data) or a C-compatible - pointer (e.g., ``INTEGER (c_int), POINTER :: nlocal``) to the extracted - property. If expecting vector data, the pointer should have dimension ":". + .. code-block :: fortran -.. warning:: + PROGRAM test + USE LIBLAMMPS + TYPE(lammps) :: lmp + CHARACTER(LEN=:), ALLOCATABLE :: str + lmp = lammps() + CALL lmp%command('units metal') + ALLOCATE ( CHARACTER(LEN=80) :: str ) + str = lmp%extract_global('units') + str = TRIM(str) ! re-allocates to length len_trim(str) here + PRINT*, LEN(str), LEN_TRIM(str) + END PROGRAM test - Modifying the data in the location pointed to by the returned pointer - may lead to inconsistent internal data and thus may cause failures or - crashes or bogus simulations. In general it is thus usually better - to use a LAMMPS input command that sets or changes these parameters. - Those will take care of all side effects and necessary updates of - settings derived from such settings. + will print the number 5 (the length of the word "metal") twice. + + :p character(len=\*) name: string with the name of the property to extract + :to: :cpp:func:`lammps_extract_global` + :r pointer [polymorphic]: pointer to LAMMPS data. The left-hand side of the + assignment should be either a string (if expecting string data) or a + C-compatible pointer (e.g., ``INTEGER(c_int), POINTER :: nlocal``) to the + extracted property. If expecting vector data, the pointer should have + dimension ":". + + .. warning:: + + Modifying the data in the location pointed to by the returned pointer + may lead to inconsistent internal data and thus may cause failures, + crashes, or bogus simulations. In general, it is much better + to use a LAMMPS input command that sets or changes these parameters. + Using an input command will take care of all side effects and necessary + updates of settings derived from such settings. + +-------- + +.. f:function:: extract_atom(name) + + This function calls :cpp:func:`lammps_extract_atom` and returns a pointer to + LAMMPS data tied to the :cpp:class:`Atom` class, depending on the data + requested through *name*. + + .. versionadded:: 3Nov2022 + + Note that this function actually does not return a pointer, but rather + associates the pointer on the left side of the assignment to point + to internal LAMMPS data. Pointers must be of the correct type, kind, and + rank (e.g., ``INTEGER(c_int), DIMENSION(:)`` for "type", "mask", or "tag"; + ``INTEGER(c_int64_t), DIMENSION(:)`` for "tag" if LAMMPS was compiled + with the ``-DLAMMPS_BIGBIG`` flag; ``REAL(c_double), DIMENSION(:,:)`` for + "x", "v", or "f"; and so forth). The pointer being associated with LAMMPS + data is type-, kind-, and rank-checked at run-time. + + :p character(len=\*) name: string with the name of the property to extract + :to: :cpp:func:`lammps_extract_atom` + :r pointer: pointer to LAMMPS data. The left-hand side of the + assignment should be a C-interoperable pointer of appropriate kind and rank + (e.g., ``INTEGER(c_int), POINTER :: mask(:)``) to the extracted + property. If expecting vector data, the pointer should have dimension ":"; + if expecting matrix data, the pointer should have dimension ":,:". + :rtype pointer: polymorphic + + .. warning:: + + Pointers returned by this function are generally not persistent, as + per-atom data may be redistributed, reallocated, and reordered at every + re-neighboring operation. It is advisable to re-bind pointers using + :f:func:`extract_atom` between runs. + + .. admonition:: Array index order + + Two-dimensional arrays returned from :f:func:`extract_atom` will be + **transposed** from equivalent arrays in C, and they will be indexed + from 1 instead of 0. For example, in C, + + .. code-block:: c + + void *lmp; + double **x; + /* more code to setup, etc. */ + x = lammps_extract_atom(lmp, "x"); + printf("%f\n", x[5][1]); + + will print the *y*-coordinate of the sixth atom on this processor. + Conversely, + + .. code-block:: fortran + + TYPE(lammps) :: lmp + REAL(c_double), DIMENSION(:,:), POINTER :: x => NULL() + ! more code to setup, etc. + x = lmp%extract_atom("x") + PRINT '(f0.6)', x(2,6) + + will print the *y*-coordinate of the sixth atom on this processor + (note the transposition of the two indices). This is not a choice, but + rather a consequence of the different conventions adopted by the Fortran + and C standards decades ago: in C, the block of data + + .. parsed-literal:: + + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + + interpreted as a :math:`4\times4` matrix would be + + .. math:: + + \begin{bmatrix} + 1 & 2 & 3 & 4 \\ + 5 & 6 & 7 & 8 \\ + 9 & 10 & 11 & 12 \\ + 13 & 14 & 15 & 16 + \end{bmatrix}, + + that is, in row-major order. In Fortran, the same block of data is + interpreted in column-major order, namely, + + .. math:: + + \begin{bmatrix} + 1 & 5 & 9 & 13 \\ + 2 & 6 & 10 & 14 \\ + 3 & 7 & 11 & 15 \\ + 4 & 8 & 12 & 16 + \end{bmatrix}. + + This difference in interpretation of the same block of data by the two + languages means, in effect, that matrices from C or C++ will be + transposed when interpreted in Fortran. + + .. note:: + + If you would like the indices to start at 0 instead of 1 (which follows + typical notation in C and C++, but not Fortran), you can create another + pointer and associate it thus: + + .. code-block:: fortran + + REAL(c_double), DIMENSION(:,:), POINTER :: x, x0 + x = lmp%extract_atom("x") + x0(0:,0:) => x + + The above would cause the dimensions of *x* to be (1:3, 1:nmax) + and those of *x0* to be (0:2, 0:nmax\ :math:`-`\ 1). + +-------- + +.. f:function:: extract_compute(id, style, type) + + This function calls :cpp:func:`lammps_extract_compute` and returns a pointer + to LAMMPS data tied to the :cpp:class:`Compute` class, specifically data + provided by the compute identified by *id*. Computes may provide global, + per-atom, or local data, and those data may be a scalar, a vector, or an + array. Since computes may provide multiple kinds of data, the user is + required to specify which set of data is to be returned through the + *style* and *type* variables. + + .. versionadded:: 3Nov2022 + + Note that this function actually does not return a value, but rather + associates the pointer on the left side of the assignment to point to + internal LAMMPS data. Pointers must be of the correct data type to point to + said data (i.e., ``REAL(c_double)``) and have compatible rank. The pointer + being associated with LAMMPS data is type-, kind-, and rank-checked at + run-time via an overloaded assignment operator. + + For example, + + .. code-block:: fortran + + TYPE(lammps) :: lmp + REAL(c_double), DIMENSION(:), POINTER :: COM + ! code to setup, create atoms, etc. + CALL lmp%compute('compute COM all com') + COM = lmp%extract_compute('COM', lmp%style%global, lmp%style%type) + + will bind the variable *COM* to the center of mass of the atoms created in + your simulation. The vector in this case has length 3; the length (or, in + the case of array data, the number of rows and columns) is determined for + you based on data from the :cpp:class:`Compute` class. + + .. admonition:: Array index order + + Two-dimensional arrays returned from :f:func:`extract_compute` will be + **transposed** from equivalent arrays in C, and they will be indexed + from 1 instead of 0. See the note at :f:func:`extract_atom` for + further details. + + The following combinations are possible (assuming ``lmp`` is the name of + your LAMMPS instance): + + .. list-table:: + :header-rows: 1 + :widths: auto + + * - Style + - Type + - Type to assign to + - Returned data + * - ``lmp%style%global`` + - ``lmp%type%scalar`` + - ``REAL(c_double), POINTER`` + - Global scalar + * - ``lmp%style%global`` + - ``lmp%type%vector`` + - ``REAL(c_double), DIMENSION(:), POINTER`` + - Global vector + * - ``lmp%style%global`` + - ``lmp%type%array`` + - ``REAL(c_double), DIMENSION(:,:), POINTER`` + - Global array + * - ``lmp%style%atom`` + - ``lmp%type%vector`` + - ``REAL(c_double), DIMENSION(:), POINTER`` + - Per-atom vector + * - ``lmp%style%atom`` + - ``lmp%type%array`` + - ``REAL(c_double), DIMENSION(:,:), POINTER`` + - Per-atom array + * - ``lmp%style%local`` + - ``lmp%type%vector`` + - ``REAL(c_double), DIMENSION(:), POINTER`` + - Local vector + * - ``lmp%style%local`` + - ``lmp%type%array`` + - ``REAL(c_double), DIMENSION(:,:), POINTER`` + - Local array + + :p character(len=\*) id: compute ID from which to extract data + :p integer(c_int) style: value indicating the style of data to extract + (global, per-atom, or local) + :p integer(c_int) type: value indicating the type of data to extract + (scalar, vector, or array) + :to: :cpp:func:`lammps_extract_compute` + :r pointer: pointer to LAMMPS data. The left-hand side of the assignment + should be a C-compatible pointer (e.g., ``REAL(c_double), POINTER :: x``) + to the extracted property. If expecting vector data, the pointer should + have dimension ":"; if expecting array (matrix) data, the pointer should + have dimension ":,:". + :rtype pointer: polymorphic + + .. note:: + + If the compute's data are not already computed for the current step, the + compute will be invoked. LAMMPS cannot easily check at that time if it is + valid to invoke a compute, so it may fail with an error. The caller has + to check to avoid such an error. + + .. warning:: + + The pointers returned by this function are generally not persistent, + since the computed data may be re-distributed, re-allocated, and + re-ordered at every invocation. It is advisable to re-invoke this + function before the data are accessed or make a copy if the data are to + be used after other LAMMPS commands have been issued. Do **not** modify + the data returned by this function. + +-------- + +.. f:function:: extract_fix(id, style, type[, nrow][, ncol]) + + This function calls :cpp:func:`lammps_extract_fix` and returns a pointer to + LAMMPS data tied to the :cpp:class:`Fix` class, specifically data provided + by the fix identified by *id*. Fixes may provide global, per-atom, or + local data, and those data may be a scalar, a vector, or an array. Since + many fixes provide multiple kinds of data, the user is required to specify + which set of data is to be returned through the *style* and *type* + variables. + + .. versionadded:: 3Nov2022 + + Global data are calculated at the time they are requested and are only + available element-by-element. As such, the user is expected to provide + the *nrow* variable to specify which element of a global vector or the + *nrow* and *ncol* variables to specify which element of a global array the + user wishes LAMMPS to return. The *ncol* variable is optional for global + scalar or vector data, and both *nrow* and *ncol* are optional when a + global scalar is requested, as well as when per-atom or local data are + requested. The following combinations are possible (assuming ``lmp`` is the + name of your LAMMPS instance): + + .. list-table:: + :header-rows: 1 + :widths: auto + + * - Style + - Type + - nrow + - ncol + - Type to assign to + - Returned data + * - ``lmp%style%global`` + - ``lmp%type%scalar`` + - Ignored + - Ignored + - ``REAL(c_double)`` + - Global scalar + * - ``lmp%style%global`` + - ``lmp%type%vector`` + - Required + - Ignored + - ``REAL(c_double)`` + - Element of global vector + * - ``lmp%style%global`` + - ``lmp%type%array`` + - Required + - Required + - ``REAL(c_double)`` + - Element of global array + * - ``lmp%style%atom`` + - ``lmp%type%scalar`` + - + - + - + - (not allowed) + * - ``lmp%style%atom`` + - ``lmp%type%vector`` + - Ignored + - Ignored + - ``REAL(c_double), DIMENSION(:), POINTER`` + - Per-atom vector + * - ``lmp%style%atom`` + - ``lmp%type%array`` + - Ignored + - Ignored + - ``REAL(c_double), DIMENSION(:,:), POINTER`` + - Per-atom array + * - ``lmp%style%local`` + - ``lmp%type%scalar`` + - + - + - + - (not allowed) + * - ``lmp%style%local`` + - ``lmp%type%vector`` + - Ignored + - Ignored + - ``REAL(c_double), DIMENSION(:), POINTER`` + - Per-atom vector + * - ``lmp%style%local`` + - ``lmp%type%array`` + - Ignored + - Ignored + - ``REAL(c_double), DIMENSION(:,:), POINTER`` + - Per-atom array + + In the case of global data, this function returns a value of type + ``real(c_double)``. For per-atom or local data, this function does not + return a value but instead associates the pointer on the left side of the + assignment to point to internal LAMMPS data. Pointers must be of the correct + data type to point to said data (i.e., ``REAL(c_double)``) and have + compatible rank. The pointer being associated with LAMMPS data is type-, + kind-, and rank-checked at run-time via an overloaded assignment operator. + + For example, + + .. code-block:: fortran + + TYPE(lammps) :: lmp + REAL(c_double) :: dr, dx, dy, dz + ! more code to set up, etc. + lmp%command('fix george all recenter 2 2 2') + ! more code + dr = lmp%extract_fix("george", lmp%style%global, lmp%style%scalar) + dx = lmp%extract_fix("george", lmp%style%global, lmp%style%vector, 1) + dy = lmp%extract_fix("george", lmp%style%global, lmp%style%vector, 2) + dz = lmp%extract_fix("george", lmp%style%global, lmp%style%vector, 3) + + will extract the global scalar calculated by + :doc:`fix recenter ` into the variable *dr* and the + three elements of the global vector calculated by fix recenter into the + variables *dx*, *dy*, and *dz*, respectively. + + If asked for per-atom or local data, :f:func:`extract_compute` returns a + pointer to actual LAMMPS data. The pointer so returned will have the + appropriate size to match the internal data, and will be + type/kind/rank-checked at the time of the assignment. For example, + + .. code-block:: fortran + + TYPE(lammps) :: lmp + REAL(c_double), DIMENSION(:), POINTER :: r + ! more code to set up, etc. + lmp%command('fix state all store/state 0 x y z') + ! more code + r = lmp%extract_fix('state', lmp%style%atom, lmp%type%array) + + will bind the pointer *r* to internal LAMMPS data representing the per-atom + array computed by :doc:`fix store/state ` when three + inputs are specified. Similarly, + + .. code-block:: fortran + + TYPE(lammps) :: lmp + REAL(c_double), DIMENSION(:), POINTER :: x + ! more code to set up, etc. + lmp%command('fix state all store/state 0 x') + ! more code + x = lmp%extract_fix('state', lmp%style%atom, lmp%type%vector) + + will associate the pointer *x* with internal LAMMPS data corresponding to + the per-atom vector computed by :doc:`fix store/state ` + when only one input is specified. Similar examples with ``lmp%style%atom`` + replaced by ``lmp%style%local`` will extract local data from fixes that + define local vectors and/or arrays. + + .. warning:: + + The pointers returned by this function for per-atom or local data are + generally not persistent, since the computed data may be redistributed, + reallocated, and reordered at every invocation of the fix. It is thus + advisable to re-invoke this function before the data are accessed or to + make a copy if the data are to be used after other LAMMPS commands have + been issued. + + .. note:: + + LAMMPS cannot easily check if it is valid to access the data, so it + may fail with an error. The caller has to avoid such an error. + + :p character(len=\*) id: string with the name of the fix from which + to extract data + :p integer(c_int) style: value indicating the style of data to extract + (global, per-atom, or local) + :p integer(c_int) type: value indicating the type of data to extract + (scalar, vector, or array) + :p integer(c_int) nrow: row index (used only for global vectors and arrays) + :p integer(c_int) ncol: column index (only used for global arrays) + :to: :cpp:func:`lammps_extract_fix` + :r data: LAMMPS data (for global data) or a pointer to LAMMPS data + (for per-atom or local data). The left-hand side of the assignment should + be of type ``REAL(c_double)`` and have appropriate rank (i.e., + ``DIMENSION(:)`` if expecting per-atom or local vector data and + ``DIMENSION(:,:)`` if expecting per-atom or local array data). If expecting + local or per-atom data, it should have the ``POINTER`` attribute, but + if expecting global data, it should be an ordinary (non-``POINTER``) + variable. + :rtype data: polymorphic + + .. admonition:: Array index order + + Two-dimensional global, per-atom, or local array data from + :f:func:`extract_fix` will be **transposed** from equivalent arrays in + C (or in the ordinary LAMMPS interface accessed through thermodynamic + output), and they will be indexed from 1, not 0. This is true even for + global data, which are returned as scalars---this is done primarily so + the interface is consistent, as there is no choice but to transpose the + indices for per-atom or local array data. See the similar note under + :f:func:`extract_atom` for further details. + +-------- + +.. f:function:: extract_variable(name[,group]) + + This function calls :cpp:func:`lammps_extract_variable` and returns a scalar, + vector, or string containing the value of the variable identified by + *name*. When the variable is an *equal*-style variable (or one compatible + with that style such as *internal*), the variable is evaluated and the + corresponding value returned. When the variable is an *atom*-style variable, + the variable is evaluated and a vector of values is returned. With all + other variables, a string is returned. The *group* argument is only used + for *atom* style variables and is ignored otherwise. If *group* is absent + for *atom*-style variables, the group is assumed to be "all". + + .. versionadded:: 3Nov2022 + + This function returns the values of the variables, not pointers to them. + Vectors pointing to *atom*-style variables should be of type + ``REAL(c_double)``, be of rank 1 (i.e., ``DIMENSION(:)``), and have the + ``ALLOCATABLE`` attribute. + + .. note:: + + Unlike the C library interface, the Fortran interface does not require + you to deallocate memory when you are through; this is done for you, + behind the scenes. + + For example, + + .. code-block:: fortran + + TYPE(lammps) :: lmp + REAL(c_double) :: area + ! more code to set up, etc. + lmp%command('variable A equal lx*ly') + ! more code + area = lmp%extract_variable("A") + + will extract the *x*\ --*y* cross-sectional area of the simulation into the + variable *area*. + + :p character(len=\*) name: variable name to evaluate + :o character(len=\*) group [optional]: group for which to extract per-atom + data (if absent, use "all") + :to: :cpp:func:`lammps_extract_variable` + :r data: scalar of type ``REAL(c_double)`` (for *equal*-style + variables and others that are *equal*-compatible), vector of type + ``REAL(c_double), DIMENSION(:), ALLOCATABLE`` for *atom*- or *vector*-style + variables, or ``CHARACTER(LEN=*)`` for *string*-style and compatible + variables. Strings whose length is too short to hold the result will be + truncated. Allocatable strings must be allocated before this function is + called; see note at :f:func:`extract_global` regarding allocatable strings. + Allocatable arrays (for *atom*- and *vector*-style data) will be + reallocated on assignment. + :rtype data: polymorphic + +.. note:: + + LAMMPS cannot easily check if it is valid to access the data + referenced by the variables (e.g., computes, fixes, or thermodynamic + info), so it may fail with an error. The caller has to make certain + that the data are extracted only when it is safe to evaluate the variable + and thus an error and crash are avoided. + +-------- + +.. f:subroutine:: gather_atoms(name, count, data) + + This function calls :cpp:func:`lammps_gather_atoms` to gather the named + atom-based entity for all atoms on all processors and return it in the + vector *data*. The vector *data* will be ordered by atom + ID, which requires consecutive atom IDs (1 to *natoms*). + + .. versionadded:: 3Nov2022 + + If you need a similar array but have non-consecutive atom IDs, see + :f:func:`gather_atoms_concat`; for a similar array but for a subset + of atoms, see :f:func:`gather_atoms_subset`. + + The *data* array will be ordered in groups of *count* values, sorted by atom + ID (e.g., if *name* is *x* and *count* = 3, then *data* = x[1][1], x[2][1], + x[3][1], x[1][2], x[2][2], x[3][2], x[1][3], :math:`\dots`); + *data* must be ``ALLOCATABLE`` and will be allocated to length + (*count* :math:`\times` *natoms*), as queried by + :f:func:`extract_setting`. + + :p character(len=\*) name: desired quantity (e.g., *x* or *mask*) + :p integer(c_int) count: number of per-atom values you expect per atom + (e.g., 1 for *type*, *mask*, or *charge*; 3 for *x*, *v*, or *f*). Use + *count* = 3 with *image* if you want a single image flag unpacked into + *x*/*y*/*z* components. + :p real(c_double) data [dimension(:),allocatable]: array into which to store + the data. Array *must* have the ``ALLOCATABLE`` attribute and be of rank 1 + (i.e., ``DIMENSION(:)``). If this array is already allocated, it will be + reallocated to fit the length of the incoming data. + :to: :cpp:func:`lammps_gather_atoms` + + .. note:: + + If you want data from this function to be accessible as a two-dimensional + array, you can declare a rank-2 pointer and reassign it, like so: + + .. code-block:: fortran + + USE, INTRINSIC :: ISO_C_BINDING + USE LIBLAMMPS + TYPE(lammps) :: lmp + REAL(c_double), DIMENSION(:), ALLOCATABLE, TARGET :: xdata + REAL(c_double), DIMENSION(:,:), POINTER :: x + ! other code to set up, etc. + CALL lmp%gather_atoms('x',3,xdata) + x(1:3,1:size(xdata)/3) => xdata + + You can then access the *y*\ -component of atom 3 with ``x(2,3)``. + See the note about array index order at :f:func:`extract_atom`. + +-------- + +.. f:subroutine:: gather_atoms_concat(name, count, data) + + This function calls :cpp:func:`lammps_gather_atoms_concat` to gather the + named atom-based entity for all atoms on all processors and return it in the + vector *data*. + + .. versionadded:: 3Nov2022 + + The vector *data* will not be ordered by atom ID, and there is no + restriction on the IDs being consecutive. If you need the IDs, you can do + another :f:func:`gather_atoms_concat` with *name* set to ``id``. + + If you need a similar array but have consecutive atom IDs, see + :f:func:`gather_atoms`; for a similar array but for a subset of atoms, see + :f:func:`gather_atoms_subset`. + + :p character(len=\*) name: desired quantity (e.g., *x* or *mask*) + :p integer(c_int) count: number of per-atom values you expect per atom + (e.g., 1 for *type*, *mask*, or *charge*; 3 for *x*, *v*, or *f*). Use + *count* = 3 with *image* if you want a single image flag unpacked into + *x*/*y*/*z* components. + :p real(c_double) data [dimension(:),allocatable]: array into which to store + the data. Array *must* have the ``ALLOCATABLE`` attribute and be of rank 1 + (i.e., ``DIMENSION(:)``). If this array is already allocated, it will be + reallocated to fit the length of the incoming data. + :to: :cpp:func:`lammps_gather_atoms_concat` + +-------- + +.. f:subroutine:: gather_atoms_subset(name, count, ids, data) + + This function calls :cpp:func:`lammps_gather_atoms_subset` to gather the + named atom-based entity for the atoms in the array *ids* from all processors + and return it in the vector *data*. + + .. versionadded:: 3Nov2022 + + This subroutine gathers data for the requested atom IDs and stores them in a + one-dimensional array allocated by the user. The data will be ordered by + atom ID, but there is no requirement that the IDs be consecutive. If you + wish to return a similar array for *all* the atoms, use + :f:func:`gather_atoms` or :f:func:`gather_atoms_concat`. + + The *data* array will be in groups of *count* values, sorted by atom ID + in the same order as the array *ids* (e.g., if *name* is *x*, *count* = 3, + and *ids* is [100, 57, 210], then *data* might look like + [x(1,100), x(2,100), x(3,100), x(1,57), x(2,57), x(3,57), x(1,210), + :math:`\dots`]; *ids* must be provided by the user, and *data* must be + of rank 1 (i.e., ``DIMENSION(:)``) and have the ``ALLOCATABLE`` attribute. + + :p character(len=\*) name: desired quantity (e.g., *x* or *mask*) + :p integer(c_int) count: number of per-atom values you expect per atom + (e.g., 1 for *type*, *mask*, or *charge*; 3 for *x*, *v*, or *f*). Use + *count* = 3 with *image* if you want a single image flag unpacked into + *x*/*y*/*z* components. + :p integer(c_int) ids [dimension(:)]: atom IDs corresponding to the atoms + to be gathered + :p real(c_double) data [dimension(:),allocatable]: array into which to store + the data. Array *must* have the ``ALLOCATABLE`` attribute and be of rank 1 + (i.e., ``DIMENSION(:)``). If this array is already allocated, it will be + reallocated to fit the length of the incoming data. + :to: :cpp:func:`lammps_gather_atoms_subset` + +-------- + +.. f:subroutine:: scatter_atoms(name, data) + + This function calls :cpp:func:`lammps_scatter_atoms` to scatter the named + atom-based entities in *data* to all processors. + + .. versionadded:: 3Nov2022 + + This subroutine takes data stored in a one-dimensional array supplied by the + user and scatters them to all atoms on all processors. The data must be + ordered by atom ID, with the requirement that the IDs be consecutive. + Use :f:func:`scatter_atoms_subset` to scatter data for some (or all) + atoms, in any order. + + The *data* array needs to be ordered in groups of *count* values, sorted by + atom ID (e.g., if *name* is *x* and *count* = 3, then + *data* = [x(1,1) x(2,1) x(3,1) x(1,2) x(2,2) x(3,2) x(1,3) :math:`\dots`]; + *data* must be of length (*count* :math:`\times` *natoms*). + + :p character(len=\*) name: quantity to be scattered (e.g., *x* or *charge*) + :p data: per-atom values packed in a one-dimensional array + containing the data to be scattered. This array must have length *natoms* + (e.g., for *type* or *charge*) or length *natoms*\ :math:`\times 3` + (e.g., for *x* or *f*). The array *data* must be rank 1 (i.e., + ``DIMENSION(:)``) and be of type ``INTEGER(c_int)`` (e.g., for *mask* or + *type*) or of type ``REAL(c_double)`` (e.g., for *x* or *charge* or *f*). + :ptype data: polymorphic,dimension(:) + :to: :cpp:func:`lammps_scatter_atoms` + +-------- + +.. f:subroutine:: scatter_atoms_subset(name, ids, data) + + This function calls :cpp:func:`lammps_scatter_atoms_subset` to scatter the + named atom-based entities in *data* to all processors. + + .. versionadded:: 3Nov2022 + + This subroutine takes data stored in a one-dimensional array supplied by the + user and scatters them to a subset of atoms on all processors. The array + *data* contains data associated with atom IDs, but there is no requirement + that the IDs be consecutive, as they are provided in a separate array, + *ids*. Use :f:func:`scatter_atoms` to scatter data for all atoms, in order. + + The *data* array needs to be organized in groups of 1 or 3 values, + depending on which quantity is being scattered, with the groups in the same + order as the array *ids*. For example, if you want *data* to be the array + [x(1,1) x(2,1) x(3,1) x(1,100) x(2,100) x(3,100) x(1,57) x(2,57) x(3,57)], + then *ids* would be [1 100 57] and *name* would be *x*. + + :p character(len=\*) name: quantity to be scattered (e.g., *x* or *charge*) + :p integer(c_int) ids [dimension(:)]: atom IDs corresponding to the atoms + being scattered + :p data: per-atom values packed into a + one-dimensional array containing the data to be scattered. This array must + have either the same length as *ids* (for *mask*, *type*, etc.) or three + times its length (for *x*, *f*, etc.); the array must be rank 1 + and be of type ``INTEGER(c_int)`` (e.g., for *mask* or *type*) or of type + ``REAL(c_double)`` (e.g., for *charge*, *x*, or *f*). + :ptype data: polymorphic,dimension(:) + :to: :cpp:func:`lammps_scatter_atoms_subset` + +-------- + +.. f:subroutine:: gather_bonds(data) + + Gather type and constituent atom information for all bonds. + + .. versionadded:: 3Nov2022 + + This function copies the list of all bonds into an allocated array. + The array will be filled with (bond type, bond atom 1, bond atom 2) for each + bond. The array is allocated to the right length (i.e., three times the + number of bonds). The array *data* must be of the same type as the LAMMPS + ``tagint`` type, which is equivalent to either ``INTEGER(c_int)`` or + ``INTEGER(c_int64_t)``, depending on whether ``-DLAMMPS_BIGBIG`` was used + when LAMMPS was built. If the supplied array does not match, an error will + result at run-time. + + An example of how to use this routine is below: + + .. code-block:: fortran + + PROGRAM bonds + USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_int + USE, INTRINSIC :: ISO_FORTRAN_ENV, ONLY : OUTPUT_UNIT + USE LIBLAMMPS + IMPLICIT NONE + INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET :: bonds + INTEGER(c_int), DIMENSION(:,:), POINTER :: bonds_array + TYPE(lammps) :: lmp + INTEGER :: i + ! other commands to initialize LAMMPS, create bonds, etc. + CALL lmp%gather_bonds(bonds) + bonds_array(1:3,1:SIZE(bonds)/3) => bonds + DO i = 1, SIZE(bonds)/3 + WRITE(OUTPUT_UNIT,'(A,1X,I4,A,I4,1X,I4)') 'bond', bonds(1,i), & + '; type = ', bonds(2,i), bonds(3,i) + END DO + END PROGRAM bonds + + :p data: array into which to copy the result. \*The ``KIND`` parameter is + either ``c_int`` or, if LAMMPS was compiled with ``-DLAMMPS_BIGBIG``, + kind ``c_int64_t``. + :ptype data: integer(kind=\*),allocatable + :to: :cpp:func:`lammps_gather_bonds` + +-------- + +.. f:subroutine:: create_atoms([id,] type, x, [v,] [image,] [bexpand]) + + This method calls :cpp:func:`lammps_create_atoms` to create additional atoms + from a given list of coordinates and a list of atom types. Additionally, + the atom IDs, velocities, and image flags may be provided. + + .. versionadded:: 3Nov2022 + + :p integer(c_int) type [dimension(N)]: vector of :math:`N` atom types + (required/see note below) + :p real(c_double) x [dimension(3N)]: vector of :math:`3N` x/y/z positions + of the new atoms, arranged as :math:`[x_1,y_1,z_1,x_2,y_2,\dotsc]` + (required/see note below) + :o integer(kind=\*) id [dimension(N)]: vector of :math:`N` atom IDs; if + absent, LAMMPS will generate them for you. \*The ``KIND`` parameter should + be ``c_int`` unless LAMMPS was compiled with ``-DLAMMPS_BIGBIG``, in which + case it should be ``c_int64_t``. + :o real(c_double) v [dimension(3N)]: vector of :math:`3N` x/y/z velocities + of the new atoms, arranged as :math:`[v_{1,x},v_{1,y},v_{1,z},v_{2,x}, + \dotsc]`; if absent, they will be set to zero + :o integer(kind=\*) image [dimension(N)]: vector of :math:`N` image flags; + if absent, they are set to zero. \*The ``KIND`` parameter should be + ``c_int`` unless LAMMPS was compiled with ``-DLAMMPS_BIGBIG``, in which + case it should be ``c_int64_t``. See note below. + :o bexpand: if ``.TRUE.``, atoms outside of shrink-wrap boundaries + will be created, not dropped, and the box dimensions will be extended. + Default is ``.FALSE.`` + :otype bexpand: logical + :to: :cpp:func:`lammps_create_atoms` + + .. note:: + + The *type* and *x* arguments are required, but they are declared + ``OPTIONAL`` in the module because making them mandatory would require + *id* to be present as well. To have LAMMPS generate the ids for you, + use a call something like + + .. code-block:: fortran + + lmp%create_atoms(type=new_types, x=new_xs) + + .. note:: + + When LAMMPS has been compiled with ``-DLAMMPS_BIGBIG``, it is not + possible to include the *image* parameter but omit the *id* parameter. + Either *id* must be present, or both *id* and *image* must be absent. + This is required because having all arguments be optional in both + generic functions creates an ambiguous interface. This limitation does + not exist if LAMMPS was not compiled with ``-DLAMMPS_BIGBIG``. + +-------- + +.. f:function:: find_pair_neighlist(style[, exact][, nsub][, reqid]) + + Find index of a neighbor list requested by a pair style. + + .. versionadded:: 3Nov2022 + + This function determines which of the available neighbor lists for pair + styles matches the given conditions. It first matches the style name. + If *exact* is ``.TRUE.``, the name must match exactly; if ``.FALSE.``, a + regular expression or sub-string match is done. If the pair style is + *hybrid* or *hybrid/overlay*, the style is matched against the sub-styles + instead. If the same pair style is used multiple times as a sub-style, the + *nsub* argument must be :math:`> 0`; this argument represents the *n*\ th + instance of the sub-style (same as for the :doc:`pair_coeff ` + command, for example). In that case, *nsub*\ :math:`{} = 0` will not + produce a match, and the function will return :math:`-1`. + + The final condition to be checked is the request ID (\ *reqid*\ ). This + will usually be zero, but some pair styles request multiple neighbor + lists and set the request ID to a value greater than zero. + + :p character(len=\*) style: String used to search for pair style instance. + :o exact: Flag to control whether style should match exactly or only a + regular expression/sub-string match is applied. Default: ``.TRUE.``. + :otype exact: logical + :o integer(c_int) nsub: Match *nsub*\ th hybrid sub-style instance of + the same style. Default: 0. + :o integer(c_int) reqid: Request ID to identify the neighbor list in + case there are multiple requests from the same pair style instance. + Default: 0. + :to: :cpp:func:`lammps_find_pair_neighlist` + :r integer(c_int) index: Neighbor list index if found, otherwise + :math:`-1`. + +-------- + +.. f:function:: find_fix_neighlist(id[, reqid]) + + Find index of a neighbor list requested by a fix. + + .. versionadded:: 3Nov2022 + + The neighbor list request from a fix is identified by the fix ID and the + request ID. The request ID is typically zero, but will be :math:`>0` for + fixes with multiple neighbor list requests. + + :p character(len=\*) id: Identifier of fix instance + :o integer(c_int) reqid: request ID to identify the neighbor list in cases + in which there are multiple requests from the same fix. Default: 0. + :to: :cpp:func:`lammps_find_fix_neighlist` + :r index: neighbor list index if found, otherwise :math:`-1` + :rtype index: integer(c_int) + +-------- + +.. f:function:: find_compute_neighlist(id[, reqid]) + + Find index of a neighbor list requested by a compute. + + .. versionadded:: 3Nov2022 + + The neighbor list request from a compute is identified by the compute ID and + the request ID. The request ID is typically zero, but will be :math:`> 0` + in case a compute has multiple neighbor list requests. + + :p character(len=\*) id: Identifier of compute instance. + :o integer(c_int) reqid: request ID to identify the neighbor list in cases + in which there are multiple requests from the same compute. Default: 0. + :to: :cpp:func:`lammps_find_compute_neighlist` + :r index: neighbor list index if found, otherwise :math:`-1`. + :rtype index: integer(c_int) + +-------- + +.. f:function:: neighlist_num_elements(idx) + + Return the number of entries in the neighbor list with the given index. + + .. versionadded:: 3Nov2022 + + :p integer(c_int) idx: neighbor list index + :to: :cpp:func:`lammps_neighlist_num_elements` + :r inum: number of entries in neighbor list, or :math:`-1` if *idx* is not + a valid index. + :rtype inum: integer(c_int) + +-------- + +.. f:function:: version() + + This method returns the numeric LAMMPS version like + :cpp:func:`lammps_version` does. + + :to: :cpp:func:`lammps_version` + :r version: LAMMPS version + :rtype version: integer + +-------- + +.. f:subroutine:: get_os_info(buffer) + + This function can be used to retrieve detailed information about the hosting + operating system and compiler/runtime environment. + + .. versionadded:: 3Nov2022 + + A suitable buffer has to be provided. The assembled text will be truncated + so as not to overflow this buffer. The string is typically a few hundred + bytes long. + + :p character(len=\*) buffer: string that will house the information. + :to: :cpp:func:`lammps_get_os_info` + + +-------- + +.. f:function:: config_has_mpi_support() + + This function is used to query whether LAMMPS was compiled with a real MPI + library or in serial. + + .. versionadded:: 3Nov2022 + + :to: :cpp:func:`lammps_config_has_mpi_support` + :r has_mpi: ``.FALSE.`` when compiled with STUBS, ``.TRUE.`` if + complied with MPI. + :rtype has_mpi: logical + +-------- + +.. f:function:: config_has_gzip_support() + + Check if the LAMMPS library supports reading or writing compressed + files via a pipe to gzip or similar compression programs. + + .. versionadded:: 3Nov2022 + + Several LAMMPS commands (e.g., :doc:`read_data`, :doc:`write_data`, + :doc:`dump styles atom, custom, and xyz `) support reading and writing + compressed files via creating a pipe to the ``gzip`` program. This function + checks whether this feature was :ref:`enabled at compile time `. + It does **not** check whether ``gzip`` or any other supported compression + programs themselves are installed and usable. + + :to: :cpp:func:`lammps_config_has_gzip_support` + :r has_gzip: + :rtype has_gzip: logical + +-------- + +.. f:function:: config_has_png_support() + + Check if the LAMMPS library supports writing PNG format images. + + .. versionadded:: 3Nov2022 + + The LAMMPS :doc:`dump style image ` supports writing multiple + image file formats. Most of them, however, need support from an external + library, and using that has to be :ref:`enabled at compile time `. + This function checks whether support for the `PNG image file format + `_ is available + in the current LAMMPS library. + + :to: :cpp:func:`lammps_config_has_png_support` + :r has_png: + :rtype has_png: logical + +-------- + +.. f:function:: config_has_jpeg_support() + + Check if the LAMMPS library supports writing JPEG format images. + + .. versionadded:: 3Nov2022 + + The LAMMPS :doc:`dump style image ` supports writing multiple + image file formats. Most of them, however, need support from an external + library, and using that has to be :ref:`enabled at compile time `. + This function checks whether support for the `JPEG image file format + `_ is available in the current LAMMPS library. + + :to: :cpp:func:`lammps_config_has_jpeg_support` + :r has_jpeg: + :rtype has_jpeg: logical + +-------- + +.. f:function:: config_has_ffmpeg_support() + + Check if the LAMMPS library supports creating movie files via a pipe to + ffmpeg. + + .. versionadded:: 3Nov2022 + + The LAMMPS :doc:`dump style movie ` supports generating movies + from images on-the-fly via creating a pipe to the + `ffmpeg `_ program. + This function checks whether this feature was + :ref:`enabled at compile time `. + It does **not** check whether the ``ffmpeg`` itself is installed and usable. + + :to: :cpp:func:`lammps_config_has_ffmpeg_support` + :r has_ffmpeg: + :rtype has_ffmpeg: logical + +-------- + +.. f:function:: config_has_exceptions() + + Check whether LAMMPS errors will throw C++ exceptions. + + .. versionadded:: 3Nov2022 + + In case of an error, LAMMPS will either abort or throw a C++ exception. + The latter has to be :ref:`enabled at compile time `. + This function checks if exceptions were enabled. + + When using the library interface with C++ exceptions enabled, the library + interface functions will "catch" them, and the error status can then be + checked by calling :f:func:`has_error`. The most recent error message can be + retrieved via :f:func:`get_last_error_message`. + This can allow one to restart a calculation or delete and recreate + the LAMMPS instance when a C++ exception occurs. One application + of using exceptions this way is the :ref:`lammps_shell`. If C++ + exceptions are disabled and an error happens during a call to + LAMMPS or the Fortran API, the application will terminate. + + :to: :cpp:func:`lammps_config_has_exceptions` + :r has_exceptions: + :rtype has_exceptions: logical + +-------- + +.. f:function:: config_has_package(name) + + Check whether a specific package has been included in LAMMPS + + .. versionadded:: 3Nov2022 + + This function checks whether the LAMMPS library in use includes the specific + :doc:`LAMMPS package ` provided as argument. + + :to: :cpp:func:`lammps_config_has_package` + :r has_package: + :rtype has_package: logical + +-------- + +.. f:function:: config_package_count() + + Count the number of installed packages in the LAMMPS library. + + .. versionadded:: 3Nov2022 + + This function counts how many :doc:`LAMMPS packages ` are + included in the LAMMPS library in use. It directly calls the C library + function :cpp:func:`lammps_config_package_count`. + + :to: :cpp:func:`lammps_config_package_count` + :r integer(c_int) npackages: number of packages installed + +-------- + +.. f:subroutine:: config_package_name(idx, buffer) + + Get the name of a package in the list of installed packages in the LAMMPS + library. + + .. versionadded:: 3Nov2022 + + This subroutine copies the name of the package with the index *idx* into the + provided string *buffer*. If the name of the package exceeds the length of + the buffer, it will be truncated accordingly. If the index is out of range, + *buffer* is set to an empty string. + + :p integer(c_int) idx: index of the package in the list of included packages + :math:`(0 \le idx < \text{package count})` + :p character(len=\*) buffer: string to hold the name of the package + :to: :cpp:func:`lammps_config_package_name` + +-------- + +.. f:subroutine:: installed_packages(package[, length]) + + Obtain a list of the names of enabled packages in the LAMMPS shared library + and store it in *package*. + + .. versionadded:: 3Nov2022 + + This function is analogous to the :py:func`installed_packages` function in + the Python API. The optional argument *length* sets the length of each + string in the vector *package* (default: 31). + + :p character(len=:) package [dimension(:),allocatable]: list of packages; + *must* have the ``ALLOCATABLE`` attribute and be of rank 1 + (i.e., ``DIMENSION(:)``) with allocatable length. + :o length: length of each string in the list. Default: 31. + :otype length: integer,optional + :to: :cpp:func:`lammps_config_package_count` + :to: :cpp:func:`lammps_config_package_name` + +-------- + +.. f:function:: config_accelerator(package, category, setting) + + This function calls :cpp:func:`lammps_config_accelerator` to check the + availability of compile time settings of included + :doc:`accelerator packages ` in LAMMPS. + + .. versionadded:: 3Nov2022 + + Supported packages names are "GPU", "KOKKOS", "INTEL", and "OPENMP". + Supported categories are "api" with possible settings "cuda", "hip", "phi", + "pthreads", "opencl", "openmp", and "serial"; and "precision" with + possible settings "double", "mixed", and "single". + + :p character(len=\*) package: string with the name of the accelerator + package + :p character(len=\*) category: string with the name of the setting + :p character(len=\*) setting: string with the name of the specific + setting + :to: :cpp:func:`lammps_config_accelerator` + :r available: ``.TRUE.`` if the combination of package, category, + and setting is available, otherwise ``.FALSE.``. + :rtype available: logical + +-------- + +.. f:function:: has_gpu_device() + + Checks for the presence of a viable GPU package device. + + .. versionadded:: 3Nov2022 + + This function calls :cpp:func:`lammps_has_gpu_device`, which checks at + runtime whether an accelerator device is present that can be used with the + :doc:`GPU package `. + + More detailed information about the available device or devices can + be obtained by calling the + :f:subr:`get_gpu_device_info` subroutine. + + :to: :cpp:func:`lammps_has_gpu_device` + :r available: ``.TRUE.`` if a viable device is available, ``.FALSE.`` if not. + :rtype available: logical + +-------- + +.. f:subroutine:: get_gpu_device_info(buffer) + + Get GPU package device information. + + .. versionadded:: 3Nov2022 + + Calls :cpp:func:`lammps_get_gpu_device_info` to retrieve detailed + information about any accelerator devices that are viable for use with the + :doc:`GPU package `. It will fill *buffer* with a string that is + equivalent to the output of the ``nvc_get_device`` or ``ocl_get_device`` or + ``hip_get_device`` tools that are compiled alongside LAMMPS if the GPU + package is enabled. + + A suitable-length Fortran string has to be provided. The assembled text will + be truncated so as not to overflow this buffer. This string can be several + kilobytes long if multiple devices are present. + + :p character(len=\*) buffer: string into which to copy the information. + :to: :cpp:func:`lammps_get_gpu_device_info` + +-------- + +.. f:function:: has_style(category, name) + + Check whether a specific style has been included in LAMMPS. + + .. versionadded:: 3Nov2022 + + This function calls :cpp:func:`lammps_has_style` to check whether the + LAMMPS library in use includes the specific style *name* associated with a + specific *category* provided as arguments. Please see + :cpp:func:`lammps_has_style` for a list of valid categories. + + :p character(len=\*) category: category of the style + :p character(len=\*) name: name of the style + :to: :cpp:func:`lammps_has_style` + :r has_style: ``.TRUE.`` if included, ``.FALSE.`` if not. + :rtype has_style: logical + +-------- + +.. f:function:: style_count(category) + + Count the number of styles of *category* in the LAMMPS library. + + .. versionadded:: 3Nov2022 + + This function counts how many styles in the provided *category* are + included in the LAMMPS library currently in use. Please see + :cpp:func:`lammps_has_style` for a list of valid categories. + + :p character(len=\*) category: category of styles to count + :to: :cpp:func:`lammps_style_count` + :r integer(c_int) count: number of styles in *category* + +-------- + +.. f:subroutine:: style_name(category, idx, buffer) + + Look up the name of a style by index in the list of styles of a given + category in the LAMMPS library. + + .. versionadded:: 3Nov2022 + + This function calls :cpp:func:`lammps_style_name` and copies the name of + the *category* style with index *idx* into the provided string *buffer*. + The length of *buffer* must be long enough to contain the name of the + style; if it is too short, the name will be truncated accordingly. + If *idx* is out of range, *buffer* will be the empty string and a warning + will be issued. + + :p character(len=\*) category: category of styles + :p integer(c_int) idx: index of the style in the list of *category* + styles :math:`(1 \leq idx \leq \text{style count})` + :p character(len\*) buffer: string buffer to copy the name of the style + into + :to: :cpp:func:`lammps_style_name` + +-------- + +.. f:function:: has_id(category, name) + + This function checks if the current LAMMPS instance a *category* ID of + the given *name* exists. Valid categories are: *compute*\ , *dump*\ , + *fix*\ , *group*\ , *molecule*\ , *region*\ , and *variable*\ . + + .. versionadded:: 3Nov2022 + + :p character(len=\*) category: category of the ID + :p character(len=\*) name: name of the ID + :to: :cpp:func:`lammps_has_id` + :r has_id: ``.TRUE.`` if *category* style *name* exists, ``.FALSE.`` if not. + :rtype has_id: logical + +-------- + +.. f:function:: id_count(category) + + This function counts how many IDs in the provided *category* are defined in + the current LAMMPS instance. Please see :f:func:`has_id` for a list of + valid categories. + + .. versionadded:: 3Nov2022 + + :p character(len=\*) category: category of the ID + :to: :cpp:func:`lammps_id_count` + :r count: number of IDs in *category* + :rtype count: integer(c_int) + +-------- + +.. f:subroutine:: id_name(category, idx, buffer) + + Look up the name of an ID by index in the list of IDs of a given category. + + .. versionadded:: 3Nov2022 + + This function copies the name of the *category* ID with the index *idx* into + the provided string *buffer*\ . The length of the buffer must be long + enough to hold the string; if the name of the style exceeds the length of + the buffer, it will be truncated accordingly. If *buffer* is + ``ALLOCATABLE``, it must be allocated *before* the function is called. + If *idx* is out of range, *buffer* is set to an empty string and a warning + is issued. + + :p character(len=\*) category: category of IDs + :p integer(c_int) idx: index of the ID in the list of *category* + styles (:math:`0 \leq idx < count`) + :p character(len=\*) buffer: string into which to copy the name of the + style + :to: :cpp:func:`lammps_id_name` + +-------- + +.. f:function:: plugin_count() + + This function counts the number of loaded plugins. + + .. versionadded:: 3Nov2022 + + :to: :cpp:func:`lammps_plugin_count` + :r n: number of loaded plugins + :rtype n: integer(c_int) + +-------- + +.. f:subroutine:: plugin_name(idx, stylebuf, namebuf) + + Look up the style and name of a plugin by its index in the list of plugins. + + .. versionadded:: 3Nov2022 + + This function copies the name of the *style* plugin with the index *idx* + into the provided C-style string buffer. The length of the buffer must be + provided as *buf_size* argument. If the name of the style exceeds the + length of the buffer, it will be truncated accordingly. If the index is out + of range, both strings are set to the empty string and a warning is + printed. + + :p integer(c_int) idx: index of the plugin in the list all or + *style* plugins + :p character(len=\*) stylebuf: string into which to copy the style of the + plugin + :p character(len=\*) namebuf: string into which to copy the style of the + plugin + :to: :cpp:func:`lammps_plugin_name` + +-------- + +.. f:function:: encode_image_flags(ix, iy, iz) + + Encodes three integer image flags into a single imageint. + + .. versionadded:: 3Nov2022 + + This function performs the bit-shift, addition, and bit-wise OR operations + necessary to combine the values of three integers representing the image + flags in the :math:`x`-, :math:`y`-, and :math:`z`-directions. Unless LAMMPS + is compiled with ``-DLAMMPS_BIGBIG``, those integers are limited to 10-bit + signed integers :math:`[-512,512]`. If ``-DLAMMPS_BIGBIG`` was used when + compiling, then the return value is of kind ``c_int64_t`` instead of + kind ``c_int``, and the valid range for the individual image flags becomes + :math:`[-1048576,1048575]` (i.e., the range of a 21-bit signed integer). + There is no check on whether the arguments conform to these requirements. + + :p integer(c_int) ix: image flag in :math:`x`-direction + :p integer(c_int) iy: image flag in :math:`y`-direction + :p integer(c_int) iz: image flag in :math:`z`-direction + :r integer(kind=\*) imageint: encoded image flag. \*The ``KIND`` parameter + is ``c_int`` unless LAMMPS was built with ``-DLAMMPS_BIGBIG``, in which + case it is ``c_int64_t``. + + .. note:: + + The fact that the programmer does not know the ``KIND`` parameter of the + return value until compile time means that it is impossible to define an + interface that works for both sizes of ``imageint``. One side effect of + this is that you must assign the return value of this function to a + variable; it cannot be used as the argument to another function or as part + of an array constructor. For example, + + .. code-block:: fortran + + my_images = [lmp%encode_image_flags(0,0,0), lmp%encode_image_flags(1,0,0)] + + will *not* work; instead, do something like + + .. code-block:: fortran + + my_images(1) = lmp%encode_image_flags(0,0,0) + my_images(2) = lmp%encode_image_flags(1,0,0) + +-------- + +.. f:subroutine:: decode_image_flags(image, flags) + + This function does the reverse operation of :f:func:`encode_image_flags`: + it takes the image flag and performs the bit-shift and bit-masking + operations to decode it and stores the resulting three integers into the + array *flags*. + + .. versionadded:: 3Nov2022 + + :p integer(kind=\*) image: encoded image flag. \*The ``KIND`` parameter is + either ``c_int`` or, if LAMMPS was compiled with ``-DLAMMPS_BIGBIG``, + ``c_int64_t``. Kind compatibility is checked at run-time. + :p integer(c_int) flags [dimension(3)]: three-element vector where the + decoded image flags will be stored. + +-------- + +.. f:subroutine:: flush_buffers() + + This function calls :cpp:func:`lammps_flush_buffers`, which flushes buffered + output to be written to screen and logfile. This can simplify capturing + output from LAMMPS library calls. + + .. versionadded:: 3Nov2022 + + :to: :cpp:func:`lammps_flush_buffers` + +-------- + +.. f:function:: is_running() + + Check if LAMMPS is currently inside a run or minimization. + + .. versionadded:: 3Nov2022 + + This function can be used from signal handlers or multi-threaded + applications to determine if the LAMMPS instance is currently active. + + :to: :cpp:func:`lammps_is_running` + :r is_running: ``.FALSE.`` if idle or ``.TRUE.`` if active + :rtype is_running: logical + +-------- + +.. f:subroutine:: force_timeout() + + Force a timeout to stop an ongoing run cleanly. + + .. versionadded:: 3Nov2022 + + This function can be used from signal handlers or multi-threaded + applications to cleanly terminate an ongoing run. + + :to: :cpp:func:`lammps_force_timeout` + +-------- + +.. f:function:: has_error() + + Check if there is a (new) error message available. + + .. versionadded:: 3Nov2022 + + This function can be used to query if an error inside of LAMMPS + has thrown a :ref:`C++ exception `. + + .. note:: + + This function will always report "no error" when the LAMMPS library + has been compiled without ``-DLAMMPS_EXCEPTIONS``, which turns fatal + errors aborting LAMMPS into C++ exceptions. You can use the library + function :cpp:func:`lammps_config_has_exceptions` to check if this is + the case. + + :to: :cpp:func:`lammps_has_error` + :r has_error: ``.TRUE.`` if there is an error. + :rtype has_error: logical + +-------- + +.. f:subroutine:: get_last_error_message(buffer[,status]) + + Copy the last error message into the provided buffer. + + .. versionadded:: 3Nov2022 + + This function can be used to retrieve the error message that was set + in the event of an error inside of LAMMPS that resulted in a + :ref:`C++ exception `. A suitable buffer for a string has + to be provided. If the internally-stored error message is longer than the + string and the string does not have ``ALLOCATABLE`` length, it will be + truncated accordingly. The optional argument *status* indicates the + kind of error: a "1" indicates an error that occurred on all MPI ranks and + is often recoverable, while a "2" indicates an abort that would happen only + in a single MPI rank and thus may not be recoverable, as other MPI ranks may + be waiting on the failing MPI rank(s) to send messages. + + .. note:: + + This function will do nothing when the LAMMPS library has been + compiled without ``-DLAMMPS_EXCEPTIONS``, which turns errors aborting + LAMMPS into C++ exceptions. You can use the function + :f:func:`config_has_exceptions` to check whether this is the case. + + :p character(len=\*) buffer: string buffer to copy the error message into + :o integer(c_int) status [optional]: 1 when all ranks had the error, + 2 on a single-rank error. + :to: :cpp:func:`lammps_get_last_error_message` diff --git a/doc/src/Howto_pylammps.rst b/doc/src/Howto_pylammps.rst index 6c788e2365..a182d4a050 100644 --- a/doc/src/Howto_pylammps.rst +++ b/doc/src/Howto_pylammps.rst @@ -152,14 +152,14 @@ Creating a new instance of PyLammps To create a PyLammps object you need to first import the class from the lammps module. By using the default constructor, a new *lammps* instance is created. -.. code-block:: Python +.. code-block:: python from lammps import PyLammps L = PyLammps() You can also initialize PyLammps on top of this existing *lammps* object: -.. code-block:: Python +.. code-block:: python from lammps import lammps, PyLammps lmp = lammps() @@ -180,14 +180,14 @@ For instance, let's take the following LAMMPS command: In the original interface this command can be executed with the following Python code if *L* was a lammps instance: -.. code-block:: Python +.. code-block:: python L.command("region box block 0 10 0 5 -0.5 0.5") With the PyLammps interface, any command can be split up into arbitrary parts separated by white-space, passed as individual arguments to a region method. -.. code-block:: Python +.. code-block:: python L.region("box block", 0, 10, 0, 5, -0.5, 0.5) @@ -199,14 +199,14 @@ The benefit of this approach is avoiding redundant command calls and easier parameterization. In the original interface parameterization needed to be done manually by creating formatted strings. -.. code-block:: Python +.. code-block:: python L.command("region box block %f %f %f %f %f %f" % (xlo, xhi, ylo, yhi, zlo, zhi)) In contrast, methods of PyLammps accept parameters directly and will convert them automatically to a final command string. -.. code-block:: Python +.. code-block:: python L.region("box block", xlo, xhi, ylo, yhi, zlo, zhi) @@ -256,7 +256,7 @@ LAMMPS variables can be both defined and accessed via the PyLammps interface. To define a variable you can use the :doc:`variable ` command: -.. code-block:: Python +.. code-block:: python L.variable("a index 2") @@ -265,14 +265,14 @@ A dictionary of all variables is returned by L.variables you can access an individual variable by retrieving a variable object from the L.variables dictionary by name -.. code-block:: Python +.. code-block:: python a = L.variables['a'] The variable value can then be easily read and written by accessing the value property of this object. -.. code-block:: Python +.. code-block:: python print(a.value) a.value = 4 @@ -284,7 +284,7 @@ LAMMPS expressions can be immediately evaluated by using the eval method. The passed string parameter can be any expression containing global thermo values, variables, compute or fix data. -.. code-block:: Python +.. code-block:: python result = L.eval("ke") # kinetic energy result = L.eval("pe") # potential energy @@ -298,7 +298,7 @@ All atoms in the current simulation can be accessed by using the L.atoms list. Each element of this list is an object which exposes its properties (id, type, position, velocity, force, etc.). -.. code-block:: Python +.. code-block:: python # access first atom L.atoms[0].id @@ -311,7 +311,7 @@ position, velocity, force, etc.). Some properties can also be used to set: -.. code-block:: Python +.. code-block:: python # set position in 2D simulation L.atoms[0].position = (1.0, 0.0) @@ -328,7 +328,7 @@ after a run via the L.runs list. This list contains a growing list of run data. The first element is the output of the first run, the second element that of the second run. -.. code-block:: Python +.. code-block:: python L.run(1000) L.runs[0] # data of first 1000 time steps @@ -339,14 +339,14 @@ the second run. Each run contains a dictionary of all trajectories. Each trajectory is accessible through its thermo name: -.. code-block:: Python +.. code-block:: python L.runs[0].thermo.Step # list of time steps in first run L.runs[0].thermo.Ke # list of kinetic energy values in first run Together with matplotlib plotting data out of LAMMPS becomes simple: -.. code-block:: Python +.. code-block:: python import matplotlib.plot as plt steps = L.runs[0].thermo.Step @@ -406,7 +406,7 @@ Four atoms are placed in the simulation and the dihedral potential is applied on them using a datafile. Then one of the atoms is rotated along the central axis by setting its position from Python, which changes the dihedral angle. -.. code-block:: Python +.. code-block:: python phi = [d \* math.pi / 180 for d in range(360)] @@ -439,7 +439,7 @@ Initially, a 2D system is created in a state with minimal energy. It is then disordered by moving each atom by a random delta. -.. code-block:: Python +.. code-block:: python random.seed(27848) deltaperturb = 0.2 @@ -458,7 +458,7 @@ It is then disordered by moving each atom by a random delta. Finally, the Monte Carlo algorithm is implemented in Python. It continuously moves random atoms by a random delta and only accepts certain moves. -.. code-block:: Python +.. code-block:: python estart = L.eval("pe") elast = estart @@ -517,7 +517,7 @@ PyLammps can be run in parallel using mpi4py. This python package can be install The following is a short example which reads in an existing LAMMPS input file and executes it in parallel. You can find in.melt in the examples/melt folder. -.. code-block:: Python +.. code-block:: python from mpi4py import MPI from lammps import PyLammps diff --git a/doc/src/Howto_structured_data.rst b/doc/src/Howto_structured_data.rst index 18a5dfd775..3fe630a120 100644 --- a/doc/src/Howto_structured_data.rst +++ b/doc/src/Howto_structured_data.rst @@ -43,7 +43,7 @@ JSON "ke": $(ke) }""" file current_state.json screen no -.. code-block:: JSON +.. code-block:: json :caption: current_state.json { diff --git a/doc/src/Howto_tip4p.rst b/doc/src/Howto_tip4p.rst index 4e0a63adc6..19b811a282 100644 --- a/doc/src/Howto_tip4p.rst +++ b/doc/src/Howto_tip4p.rst @@ -8,18 +8,28 @@ This site M is located at a fixed distance away from the oxygen along the bisector of the HOH bond angle. A bond style of *harmonic* and an angle style of *harmonic* or *charmm* should also be used. -A TIP4P model is run with LAMMPS using either this command +A TIP4P model is run with LAMMPS using either these commands for a cutoff model: +* :doc:`pair_style tip4p/cut ` * :doc:`pair_style lj/cut/tip4p/cut ` -or these two commands for a long-range model: +or these commands for a long-range model: +* :doc:`pair_style tip4p/long ` * :doc:`pair_style lj/cut/tip4p/long ` +* :doc:`pair_style lj/long/tip4p/long ` +* :doc:`pair_style tip4p/long/soft ` +* :doc:`pair_style lj/cut/tip4p/long/soft ` * :doc:`kspace_style pppm/tip4p ` +* :doc:`kspace_style pppm/disp/tip4p ` -For both models, the bond lengths and bond angles should be held fixed -using the :doc:`fix shake ` command. +The bond lengths and bond angles should be held fixed using the +:doc:`fix shake ` or :doc:`fix rattle ` command, +unless a parameterization for a flexible TIP4P model is used. The +parameter sets listed below are all for rigid TIP4P model variants and +thus the bond and angle force constants are not used and can be set to +any legal value; only equilibrium length and angle are used. These are the additional parameters (in real units) to set for O and H atoms and the water molecule to run a rigid TIP4P model with a cutoff @@ -87,15 +97,16 @@ solver (e.g. Ewald or PPPM in LAMMPS): | LJ :math:`\epsilon`, :math:`\sigma` of OH, HH = 0.0 | -Note that the when using the TIP4P pair style, the neighbor list -cutoff for Coulomb interactions is effectively extended by a distance -2 \* (OM distance), to account for the offset distance of the -fictitious charges on O atoms in water molecules. Thus it is -typically best in an efficiency sense to use a LJ cutoff >= Coulomb -cutoff + 2\*(OM distance), to shrink the size of the neighbor list. -This leads to slightly larger cost for the long-range calculation, so -you can test the trade-off for your model. The OM distance and the LJ -and Coulombic cutoffs are set in the :doc:`pair_style lj/cut/tip4p/long ` command. +Note that the when using the TIP4P pair style, the neighbor list cutoff +for Coulomb interactions is effectively extended by a distance 2 \* (OM +distance), to account for the offset distance of the fictitious charges +on O atoms in water molecules. Thus it is typically best in an +efficiency sense to use a LJ cutoff >= Coulomb cutoff + 2\*(OM +distance), to shrink the size of the neighbor list. This leads to +slightly larger cost for the long-range calculation, so you can test the +trade-off for your model. The OM distance and the LJ and Coulombic +cutoffs are set in the :doc:`pair_style lj/cut/tip4p/long +` command. Wikipedia also has a nice article on `water models `_. diff --git a/doc/src/Howto_triclinic.rst b/doc/src/Howto_triclinic.rst index 5e952709c9..dd0a949f68 100644 --- a/doc/src/Howto_triclinic.rst +++ b/doc/src/Howto_triclinic.rst @@ -144,11 +144,6 @@ does not change the atom positions due to non-periodicity. In this mode, if you tilt the system to extreme angles, the simulation will simply become inefficient, due to the highly skewed simulation box. -The limitation on not creating a simulation box with a tilt factor -skewing the box more than half the distance of the parallel box length -can be overridden via the :doc:`box ` command. Setting the *tilt* -keyword to *large* allows any tilt factors to be specified. - Box flips that may occur using the :doc:`fix deform ` or :doc:`fix npt ` commands can be turned off using the *flip no* option with either of the commands. diff --git a/doc/src/Library.rst b/doc/src/Library.rst index 05b652f7a7..3533c347c8 100644 --- a/doc/src/Library.rst +++ b/doc/src/Library.rst @@ -2,12 +2,13 @@ LAMMPS Library Interfaces ************************* As described on the :doc:`library interface to LAMMPS ` -page, LAMMPS can be built as a library (static or shared), so that -it can be called by another code, used in a :doc:`coupled manner +page, LAMMPS can be built as a library (static or shared), so that it +can be called by another code, used in a :doc:`coupled manner ` with other codes, or driven through a :doc:`Python -script `. Even the LAMMPS standalone executable is -essentially a thin wrapper on top of the LAMMPS library, creating a -LAMMPS instance, processing input and then existing. +script `. The LAMMPS standalone executable itself is +essentially a thin wrapper on top of the LAMMPS library, which creates a +LAMMPS instance, passes the input for processing to that instance, and +then exits. Most of the APIs described below are based on C language wrapper functions in the files ``src/library.h`` and ``src/library.cpp``, but @@ -87,6 +88,18 @@ run LAMMPS in serial mode. message retrieved `. We thus recommend enabling C++ exceptions when using the library interface, +.. admonition:: Using the C library interface as a plugin + :class: note + + Rather than including the C library directly and link to the LAMMPS + library at compile time, you can use the ``liblammpsplugin.h`` header + file and the ``liblammpsplugin.c`` C code in the + ``examples/COUPLE/plugin`` folder for an interface to LAMMPS that is + largely identical to the regular library interface, only that it will + load a LAMMPS shared library file at runtime. This can be useful for + applications where the interface to LAMMPS would be an optional + feature. + .. warning:: No checks are made on the arguments of the function calls of the C @@ -163,5 +176,3 @@ The following links provide some examples and references to the C++ API. :maxdepth: 1 Cplusplus - - diff --git a/doc/src/Library_config.rst b/doc/src/Library_config.rst index 04b12f35de..481edcee7c 100644 --- a/doc/src/Library_config.rst +++ b/doc/src/Library_config.rst @@ -39,7 +39,7 @@ crashes within LAMMPS may be recovered from by enabling :ref:`exceptions `, avoiding them proactively is a safer approach. -.. code-block:: C +.. code-block:: c :caption: Example for using configuration settings functions #include "library.h" diff --git a/doc/src/Library_create.rst b/doc/src/Library_create.rst index 8ccc2e80ce..546db9b3be 100644 --- a/doc/src/Library_create.rst +++ b/doc/src/Library_create.rst @@ -22,7 +22,7 @@ as the "handle" argument in subsequent function calls until that instance is destroyed by calling :cpp:func:`lammps_close`. Here is a simple example demonstrating its use: -.. code-block:: C +.. code-block:: c #include "library.h" #include diff --git a/doc/src/Library_execute.rst b/doc/src/Library_execute.rst index 201d9c01b0..44b601ba4c 100644 --- a/doc/src/Library_execute.rst +++ b/doc/src/Library_execute.rst @@ -30,7 +30,7 @@ be included in the file or strings, and expansion of variables with ``${name}`` or ``$(expression)`` syntax is performed. Below is a short example using some of these functions. -.. code-block:: C +.. code-block:: c /* define to make the otherwise hidden prototype for "lammps_open()" visible */ #define LAMMPS_LIB_MPI diff --git a/doc/src/Library_objects.rst b/doc/src/Library_objects.rst index eed14b3a05..8ebecfcc94 100644 --- a/doc/src/Library_objects.rst +++ b/doc/src/Library_objects.rst @@ -6,6 +6,7 @@ fixes, or variables in LAMMPS using the following functions: - :cpp:func:`lammps_extract_compute` - :cpp:func:`lammps_extract_fix` +- :cpp:func:`lammps_extract_variable_datatype` - :cpp:func:`lammps_extract_variable` - :cpp:func:`lammps_set_variable` @@ -21,6 +22,11 @@ fixes, or variables in LAMMPS using the following functions: ----------------------- +.. doxygenfunction:: lammps_extract_variable_datatype + :project: progguide + +----------------------- + .. doxygenfunction:: lammps_extract_variable :project: progguide @@ -36,3 +42,5 @@ fixes, or variables in LAMMPS using the following functions: .. doxygenenum:: _LMP_STYLE_CONST .. doxygenenum:: _LMP_TYPE_CONST + +.. doxygenenum:: _LMP_VAR_CONST diff --git a/doc/src/Library_properties.rst b/doc/src/Library_properties.rst index a5c9c79c64..b3a8f9ea5a 100644 --- a/doc/src/Library_properties.rst +++ b/doc/src/Library_properties.rst @@ -16,8 +16,8 @@ This section documents the following functions: -------------------- The library interface allows the extraction of different kinds of -information about the active simulation instance and also - in some -cases - to apply modifications to it. This enables combining of a +information about the active simulation instance and also---in some +cases---to apply modifications to it. This enables combining of a LAMMPS simulation with other processing and simulation methods computed by the calling code, or by another code that is coupled to LAMMPS via the library interface. In some cases the data returned is direct @@ -25,14 +25,14 @@ reference to the original data inside LAMMPS, cast to a void pointer. In that case the data needs to be cast to a suitable pointer for the calling program to access it, and you may need to know the correct dimensions and lengths. This also means you can directly change those -value(s) from the calling program, e.g. to modify atom positions. Of -course, this should be done with care. When accessing per-atom data, -please note that this data is the per-processor **local** data and is +value(s) from the calling program (e.g., to modify atom positions). Of +course, changing values should be done with care. When accessing per-atom +data, please note that these data are the per-processor **local** data and are indexed accordingly. Per-atom data can change sizes and ordering at every neighbor list rebuild or atom sort event as atoms migrate between sub-domains and processors. -.. code-block:: C +.. code-block:: c #include "library.h" #include diff --git a/doc/src/Manual.rst b/doc/src/Manual.rst index 14d4862c40..5a5d5c88fa 100644 --- a/doc/src/Manual.rst +++ b/doc/src/Manual.rst @@ -42,7 +42,7 @@ descriptions of all commands included in the LAMMPS code. .. only:: html Once you are familiar with LAMMPS, you may want to bookmark - :doc:`this page ` since it gives quick access + :doc:`this page ` since it gives quick access to the documentation for all LAMMPS commands. .. _lws: https://www.lammps.org diff --git a/doc/src/Modify_bond.rst b/doc/src/Modify_bond.rst index 682237b8bd..58b08de81b 100644 --- a/doc/src/Modify_bond.rst +++ b/doc/src/Modify_bond.rst @@ -13,24 +13,65 @@ Here is a brief description of common methods you define in your new derived class. See bond.h, angle.h, dihedral.h, and improper.h for details and specific additional methods. -+-----------------------+---------------------------------------------------------------------------------------+ -| init | check if all coefficients are set, calls *init_style* (optional) | -+-----------------------+---------------------------------------------------------------------------------------+ -| init_style | check if style specific conditions are met (optional) | -+-----------------------+---------------------------------------------------------------------------------------+ -| compute | compute the molecular interactions (required) | -+-----------------------+---------------------------------------------------------------------------------------+ -| settings | apply global settings for all types (optional) | -+-----------------------+---------------------------------------------------------------------------------------+ -| coeff | set coefficients for one type (required) | -+-----------------------+---------------------------------------------------------------------------------------+ -| equilibrium_distance | length of bond, used by SHAKE (required, bond only) | -+-----------------------+---------------------------------------------------------------------------------------+ -| equilibrium_angle | opening of angle, used by SHAKE (required, angle only) | -+-----------------------+---------------------------------------------------------------------------------------+ -| write & read_restart | writes/reads coeffs to restart files (required) | -+-----------------------+---------------------------------------------------------------------------------------+ -| single | force (bond only) and energy of a single bond or angle (required, bond or angle only) | -+-----------------------+---------------------------------------------------------------------------------------+ -| memory_usage | tally memory allocated by the style (optional) | -+-----------------------+---------------------------------------------------------------------------------------+ ++-----------------------+---------------------------------------------------------------------+ +| Required | "pure" methods that *must* be overridden in a derived class | ++=======================+=====================================================================+ +| compute | compute the molecular interactions for all listed items | ++-----------------------+---------------------------------------------------------------------+ +| coeff | set coefficients for one type | ++-----------------------+---------------------------------------------------------------------+ +| equilibrium_distance | length of bond, used by SHAKE (bond styles only) | ++-----------------------+---------------------------------------------------------------------+ +| equilibrium_angle | opening of angle, used by SHAKE (angle styles only) | ++-----------------------+---------------------------------------------------------------------+ +| write & read_restart | writes/reads coeffs to restart files | ++-----------------------+---------------------------------------------------------------------+ +| single | force/r (bond styles only) and energy of a single bond or angle | ++-----------------------+---------------------------------------------------------------------+ + + ++--------------------------------+----------------------------------------------------------------------+ +| Optional | methods that have a default or dummy implementation | ++================================+======================================================================+ +| init | check if all coefficients are set, calls init_style() | ++--------------------------------+----------------------------------------------------------------------+ +| init_style | check if style specific conditions are met | ++--------------------------------+----------------------------------------------------------------------+ +| settings | apply global settings for all types | ++--------------------------------+----------------------------------------------------------------------+ +| write & read_restart_settings | writes/reads global style settings to restart files | ++--------------------------------+----------------------------------------------------------------------+ +| write_data | write corresponding Coeffs section(s) in data file | ++--------------------------------+----------------------------------------------------------------------+ +| memory_usage | tally memory allocated by the style | ++--------------------------------+----------------------------------------------------------------------+ +| extract | provide access to internal data (bond or angle styles only) | ++--------------------------------+----------------------------------------------------------------------+ +| reinit | reset all type-based parameters, called by fix adapt (bonds only) | ++--------------------------------+----------------------------------------------------------------------+ +| pack & unpack_forward_comm | copy data to and from buffer in forward communication (bonds only) | ++--------------------------------+----------------------------------------------------------------------+ +| pack & unpack_reverse_comm | copy data to and from buffer in reverse communication (bonds only) | ++--------------------------------+----------------------------------------------------------------------+ + +Here is a list of flags or settings that should be set in the +constructor of the derived class when they differ from the default +setting. + ++---------------------------------+------------------------------------------------------------------------------+---------+ +| Name of flag | Description | default | ++=================================+==============================================================================+=========+ +| writedata | 1 if write_data() is implemented | 1 | ++---------------------------------+------------------------------------------------------------------------------+---------+ +| single_extra | number of extra single values calculated (bond styles only) | 0 | ++---------------------------------+------------------------------------------------------------------------------+---------+ +| partial_flag | 1 if bond type can be set to 0 and deleted (bond styles only) | 0 | ++---------------------------------+------------------------------------------------------------------------------+---------+ +| reinitflag | 1 if style has reinit() and is compatible with fix adapt | 1 | ++---------------------------------+------------------------------------------------------------------------------+---------+ +| comm_forward | size of buffer (in doubles) for forward communication (bond styles only) | 0 | ++---------------------------------+------------------------------------------------------------------------------+---------+ +| comm_reverse | size of buffer (in doubles) for reverse communication (bond styles only) | 0 | ++---------------------------------+------------------------------------------------------------------------------+---------+ +| comm_reverse_off | size of buffer for reverse communication with newton off (bond styles only) | 0 | ++---------------------------------+------------------------------------------------------------------------------+---------+ diff --git a/doc/src/Modify_pair.rst b/doc/src/Modify_pair.rst index 6913204504..38f5ade567 100644 --- a/doc/src/Modify_pair.rst +++ b/doc/src/Modify_pair.rst @@ -1,35 +1,121 @@ Pair styles =========== -Classes that compute pairwise interactions are derived from the Pair -class. In LAMMPS, pairwise calculation include many-body potentials -such as EAM or Tersoff where particles interact without a static bond -topology. New styles can be created to add new pair potentials to -LAMMPS. +Classes that compute pairwise non-bonded interactions are derived from +the Pair class. In LAMMPS, pairwise calculation include many-body +potentials such as EAM, Tersoff, or ReaxFF where particles interact +without an explicit bond topology but include interactions beyond +pairwise non-bonded contributions. New styles can be created to add +support for additional pair potentials to LAMMPS. When the +modifications are small, sometimes it is more effective to derive from +an existing pair style class. This latter approach is also used by +:doc:`Accelerator packages ` where the accelerated style +names differ from their base classes by an appended suffix. -Pair_lj_cut.cpp is a simple example of a Pair class, though it -includes some optional methods to enable its use with rRESPA. +The file ``src/pair_lj_cut.cpp`` is an example of a Pair class with a +very simple potential function. It includes several optional methods to +enable its use with :doc:`run_style respa ` and :doc:`compute +group/group `. -Here is a brief description of the class methods in pair.h: +Here is a brief list of some the class methods in the Pair class that +*must* be or *may* be overridden in a derived class. +---------------------------------+---------------------------------------------------------------------+ +| Required | "pure" methods that *must* be overridden in a derived class | ++=================================+=====================================================================+ | compute | workhorse routine that computes pairwise interactions | +---------------------------------+---------------------------------------------------------------------+ -| settings | reads the input script line with arguments you define | +| settings | processes the arguments to the pair_style command | +---------------------------------+---------------------------------------------------------------------+ -| coeff | set coefficients for one i,j type pair | -+---------------------------------+---------------------------------------------------------------------+ -| init_one | perform initialization for one i,j type pair | -+---------------------------------+---------------------------------------------------------------------+ -| init_style | initialization specific to this pair style | -+---------------------------------+---------------------------------------------------------------------+ -| write & read_restart | write/read i,j pair coeffs to restart files | -+---------------------------------+---------------------------------------------------------------------+ -| write & read_restart_settings | write/read global settings to restart files | -+---------------------------------+---------------------------------------------------------------------+ -| single | force/r and energy of a single pairwise interaction between 2 atoms | -+---------------------------------+---------------------------------------------------------------------+ -| compute_inner/middle/outer | versions of compute used by rRESPA | +| coeff | set coefficients for one i,j type pair, called from pair_coeff | +---------------------------------+---------------------------------------------------------------------+ -The inner/middle/outer routines are optional. ++---------------------------------+----------------------------------------------------------------------+ +| Optional | methods that have a default or dummy implementation | ++=================================+======================================================================+ +| init_one | perform initialization for one i,j type pair | ++---------------------------------+----------------------------------------------------------------------+ +| init_style | style initialization: request neighbor list(s), error checks | ++---------------------------------+----------------------------------------------------------------------+ +| init_list | Neighbor class callback function to pass neighbor list to pair style | ++---------------------------------+----------------------------------------------------------------------+ +| single | force/r and energy of a single pairwise interaction between 2 atoms | ++---------------------------------+----------------------------------------------------------------------+ +| compute_inner/middle/outer | versions of compute used by rRESPA | ++---------------------------------+----------------------------------------------------------------------+ +| memory_usage | return estimated amount of memory used by the pair style | ++---------------------------------+----------------------------------------------------------------------+ +| modify_params | process arguments to pair_modify command | ++---------------------------------+----------------------------------------------------------------------+ +| extract | provide access to internal scalar or per-type data like cutoffs | ++---------------------------------+----------------------------------------------------------------------+ +| extract_peratom | provide access to internal per-atom data | ++---------------------------------+----------------------------------------------------------------------+ +| setup | initialization at the beginning of a run | ++---------------------------------+----------------------------------------------------------------------+ +| finish | called at the end of a run, e.g. to print | ++---------------------------------+----------------------------------------------------------------------+ +| write & read_restart | write/read i,j pair coeffs to restart files | ++---------------------------------+----------------------------------------------------------------------+ +| write & read_restart_settings | write/read global settings to restart files | ++---------------------------------+----------------------------------------------------------------------+ +| write_data | write Pair Coeffs section to data file | ++---------------------------------+----------------------------------------------------------------------+ +| write_data_all | write PairIJ Coeffs section to data file | ++---------------------------------+----------------------------------------------------------------------+ +| pack & unpack_forward_comm | copy data to and from buffer if style uses forward communication | ++---------------------------------+----------------------------------------------------------------------+ +| pack & unpack_reverse_comm | copy data to and from buffer if style uses reverse communication | ++---------------------------------+----------------------------------------------------------------------+ +| reinit | reset all type-based parameters, called by fix adapt for example | ++---------------------------------+----------------------------------------------------------------------+ +| reset_dt | called when the time step is changed by timestep or fix reset/dt | ++---------------------------------+----------------------------------------------------------------------+ + +Here is a list of flags or settings that should be set in the +constructor of the derived pair class when they differ from the default +setting. + ++---------------------------------+-------------------------------------------------------------+---------+ +| Name of flag | Description | default | ++=================================+=============================================================+=========+ +| single_enable | 1 if single() method is implemented, 0 if missing | 1 | ++---------------------------------+-------------------------------------------------------------+---------+ +| respa_enable | 1 if pair style has compute_inner/middle/outer() | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| restartinfo | 1 if pair style writes its settings to a restart | 1 | ++---------------------------------+-------------------------------------------------------------+---------+ +| one_coeff | 1 if only a pair_coeff * * command is allowed | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| manybody_flag | 1 if pair style is a manybody potential | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| unit_convert_flag | value != 0 indicates support for unit conversion | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| no_virial_fdotr_compute | 1 if pair style does not call virial_fdotr_compute() | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| writedata | 1 if write_data() and write_data_all() are implemented | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| comm_forward | size of buffer (in doubles) for forward communication | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| comm_reverse | size of buffer (in doubles) for reverse communication | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| ghostneigh | 1 if cutghost is set and style uses neighbors of ghosts | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| finitecutflag | 1 if cutoff depends on diameter of atoms | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| reinitflag | 1 if style has reinit() and is compatible with fix adapt | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| ewaldflag | 1 if compatible with kspace_style ewald | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| pppmflag | 1 if compatible with kspace_style pppm | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| msmflag | 1 if compatible with kspace_style msm | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| dispersionflag | 1 if compatible with ewald/disp or pppm/disp | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| tip4pflag | 1 if compatible with kspace_style pppm/tip4p | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| dipoleflag | 1 if compatible with dipole kspace_style | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ +| spinflag | 1 if compatible with spin kspace_style | 0 | ++---------------------------------+-------------------------------------------------------------+---------+ diff --git a/doc/src/Modify_style.rst b/doc/src/Modify_style.rst index 9b394f23a9..ad2cb656d0 100644 --- a/doc/src/Modify_style.rst +++ b/doc/src/Modify_style.rst @@ -359,6 +359,12 @@ you are uncertain, please ask. - I/O is done via the C-style stdio library and **not** iostreams. +- Do not use so-called "alternative tokens" like ``and``, ``or``, + ``not`` and similar, but rather use the corresponding operators + ``&&``, ``||``, and ``!``. The alternative tokens are not available + by default on all compilers, and also we want to maintain a consistent + programming style. + - Output to the screen and the logfile should be using the corresponding FILE pointers and only be done on MPI rank 0. Use the :cpp:func:`utils::logmesg` convenience function where possible. diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index 44a8235f93..ecbc54233a 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -80,6 +80,7 @@ page gives those details. * :ref:`ML-HDNNP ` * :ref:`ML-IAP ` * :ref:`ML-PACE ` + * :ref:`ML-POD ` * :ref:`ML-QUIP ` * :ref:`ML-RANN ` * :ref:`ML-SNAP ` @@ -200,6 +201,7 @@ particle models including ellipsoids, 2d lines, and 3d triangles. * :doc:`Howto spherical ` * :doc:`pair_style gayberne ` * :doc:`pair_style resquared ` +* :doc:`pair_style ylz ` * `doc/PDF/pair_gayberne_extra.pdf `_ * `doc/PDF/pair_resquared_extra.pdf `_ * examples/ASPHERE @@ -864,7 +866,7 @@ ELECTRODE package The ELECTRODE package allows the user to enforce a constant potential method for groups of atoms that interact with the remaining atoms as electrolyte. -**Authors:** The ELECTRODE library is written and maintained by Ludwig +**Authors:** The ELECTRODE package is written and maintained by Ludwig Ahrens-Iwers (TUHH, Hamburg, Germany), Shern Tee (UQ, Brisbane, Australia) and Robert Meissner (TUHH, Hamburg, Germany). @@ -877,7 +879,7 @@ This package has :ref:`specific installation instructions ` on the **Supporting info:** -* :doc:`fix electrode/conp ` +* :doc:`fix electrode/conp ` ---------- @@ -1736,8 +1738,6 @@ must be installed. .. versionadded:: 30Jun2020 - .. versionadded:: 30Jun2020 - **Supporting info:** * src/ML-IAP: filenames -> commands @@ -1797,6 +1797,39 @@ This package has :ref:`specific installation instructions ` on the ---------- +.. _PKG-ML-POD: + +ML-POD package +------------------- + +**Contents:** + +A pair style and fitpod style for Proper Orthogonal Descriptors +(POD). POD is a methodology for deriving descriptors based on the proper +orthogonal decomposition. The ML-POD package provides an efficient +implementation for running simulations with POD potentials, along with +fitting the potentials natively in LAMMPS. + +**Authors:** + +Ngoc Cuong Nguyen (MIT), Andrew Rohskopf (Sandia) + +.. versionadded:: TBD + +**Install:** + +This package has :ref:`specific installation instructions ` on the +:doc:`Build extras ` page. + +**Supporting info:** + +* src/ML-POD: filenames -> commands +* :doc:`pair_style pod ` +* :doc:`command_style fitpod ` +* examples/PACKAGES/pod + +---------- + .. _PKG-ML-QUIP: ML-QUIP package diff --git a/doc/src/Packages_list.rst b/doc/src/Packages_list.rst index cfe0460d05..ac0ba7728e 100644 --- a/doc/src/Packages_list.rst +++ b/doc/src/Packages_list.rst @@ -155,7 +155,7 @@ whether an extra library is needed to build and use the package: - no * - :ref:`ELECTRODE ` - electrode charges to match potential - - :doc:`fix electrode/conp ` + - :doc:`fix electrode/conp ` - PACKAGES/electrode - no * - :ref:`EXTRA-COMPUTE ` @@ -298,6 +298,11 @@ whether an extra library is needed to build and use the package: - :doc:`pair pace ` - PACKAGES/pace - ext + * - :ref:`ML-POD ` + - Proper orthogonal decomposition potentials + - :doc:`pair pod ` + - pod + - ext * - :ref:`ML-QUIP ` - QUIP/libatoms interface - :doc:`pair_style quip ` diff --git a/doc/src/Python_atoms.rst b/doc/src/Python_atoms.rst index be0d4ff800..2cb5c695e8 100644 --- a/doc/src/Python_atoms.rst +++ b/doc/src/Python_atoms.rst @@ -58,7 +58,7 @@ against invalid accesses. Each element of this list is a :py:class:`Atom ` or :py:class:`Atom2D ` object. The attributes of these objects provide access to their data (id, type, position, velocity, force, etc.): - .. code-block:: Python + .. code-block:: python # access first atom L.atoms[0].id @@ -71,7 +71,7 @@ against invalid accesses. Some attributes can be changed: - .. code-block:: Python + .. code-block:: python # set position in 2D simulation L.atoms[0].position = (1.0, 0.0) diff --git a/doc/src/Python_config.rst b/doc/src/Python_config.rst index 38f0ef0baf..ccbc74a46c 100644 --- a/doc/src/Python_config.rst +++ b/doc/src/Python_config.rst @@ -4,7 +4,7 @@ Configuration information The following methods can be used to query the LAMMPS library about compile time settings and included packages and styles. -.. code-block:: Python +.. code-block:: python :caption: Example for using configuration settings functions from lammps import lammps diff --git a/doc/src/Python_create.rst b/doc/src/Python_create.rst index ec4241f36a..939aad2f32 100644 --- a/doc/src/Python_create.rst +++ b/doc/src/Python_create.rst @@ -74,7 +74,7 @@ Here are simple examples using all three Python interfaces: :py:class:`PyLammps ` objects can also be created on top of an existing :py:class:`lammps ` object: - .. code-block:: Python + .. code-block:: python from lammps import lammps, PyLammps ... @@ -113,7 +113,7 @@ Here are simple examples using all three Python interfaces: You can also initialize IPyLammps on top of an existing :py:class:`lammps` or :py:class:`PyLammps` object: - .. code-block:: Python + .. code-block:: python from lammps import lammps, IPyLammps ... @@ -142,7 +142,7 @@ the MPI and/or Kokkos environment if enabled and active. Note that you can create multiple LAMMPS objects in your Python script, and coordinate and run multiple simulations, e.g. -.. code-block:: Python +.. code-block:: python from lammps import lammps lmp1 = lammps() diff --git a/doc/src/Python_error.rst b/doc/src/Python_error.rst index 744a8dd3de..5dbd940723 100644 --- a/doc/src/Python_error.rst +++ b/doc/src/Python_error.rst @@ -7,7 +7,7 @@ current Python process with an error message. C++ exceptions allow capturing them on the C++ side and rethrowing them on the Python side. This way LAMMPS errors can be handled through the Python exception handling mechanism. -.. code-block:: Python +.. code-block:: python from lammps import lammps, MPIAbortException diff --git a/doc/src/Python_execute.rst b/doc/src/Python_execute.rst index 59faa34438..01cf0e920f 100644 --- a/doc/src/Python_execute.rst +++ b/doc/src/Python_execute.rst @@ -60,7 +60,7 @@ it is possible to "compute" what the next LAMMPS command should be. can be executed using with the lammps API with the following Python code if ``lmp`` is an instance of :py:class:`lammps `: - .. code-block:: Python + .. code-block:: python from lammps import lammps @@ -73,7 +73,7 @@ it is possible to "compute" what the next LAMMPS command should be. The arguments of the command can be passed as one string, or individually. - .. code-block:: Python + .. code-block:: python from lammps import PyLammps @@ -93,14 +93,14 @@ it is possible to "compute" what the next LAMMPS command should be. parameterization. In the lammps API parameterization needed to be done manually by creating formatted command strings. - .. code-block:: Python + .. code-block:: python lmp.command("region box block %f %f %f %f %f %f" % (xlo, xhi, ylo, yhi, zlo, zhi)) In contrast, methods of PyLammps accept parameters directly and will convert them automatically to a final command string. - .. code-block:: Python + .. code-block:: python L.region("box block", xlo, xhi, ylo, yhi, zlo, zhi) diff --git a/doc/src/Python_launch.rst b/doc/src/Python_launch.rst index 500a107977..96e43a2d95 100644 --- a/doc/src/Python_launch.rst +++ b/doc/src/Python_launch.rst @@ -56,7 +56,7 @@ and you should see the same output as if you had typed Note that without the mpi4py specific lines from ``test.py`` -.. code-block:: Python +.. code-block:: python from lammps import lammps lmp = lammps() diff --git a/doc/src/Python_neighbor.rst b/doc/src/Python_neighbor.rst index 00c4cc8996..755b83da81 100644 --- a/doc/src/Python_neighbor.rst +++ b/doc/src/Python_neighbor.rst @@ -38,6 +38,40 @@ using the NumPy access method. for n in np.nditer(nlist): print(" atom {} with ID {}".format(n,tags[n])) +Another example for extracting a full neighbor list without evaluating a +potential is shown below. + +.. code-block:: python + + from lammps import lammps + import numpy as np + + lmp = lammps() + lmp.commands_string(""" + newton off + region box block -2 2 -2 2 -2 2 + lattice fcc 1.0 + create_box 1 box + create_atoms 1 box + mass 1 1.0 + pair_style zero 1.0 full + pair_coeff * * + run 0 post no""") + + # look up the neighbor list + nlidx = lmp.find_pair_neighlist('zero') + nl = lmp.numpy.get_neighlist(nlidx) + tags = lmp.extract_atom('id') + print("full neighbor list with {} entries".format(nl.size)) + # print neighbor list contents + for i in range(0,nl.size): + idx, nlist = nl.get(i) + print("\natom {} with ID {} has {} neighbors:".format(idx,tags[idx],nlist.size)) + if nlist.size > 0: + for n in np.nditer(nlist): + pass + print(" atom {} with ID {}".format(n,tags[n])) + **Methods:** * :py:meth:`lammps.get_neighlist() `: Get neighbor list for given index diff --git a/doc/src/Python_objects.rst b/doc/src/Python_objects.rst index 4a1496632e..6e3a329a27 100644 --- a/doc/src/Python_objects.rst +++ b/doc/src/Python_objects.rst @@ -76,7 +76,7 @@ computes, fixes, or variables in LAMMPS using the :py:mod:`lammps` module. To define a variable you can use the :doc:`variable ` command: - .. code-block:: Python + .. code-block:: python L.variable("a index 2") @@ -85,14 +85,14 @@ computes, fixes, or variables in LAMMPS using the :py:mod:`lammps` module. you can access an individual variable by retrieving a variable object from the ``L.variables`` dictionary by name - .. code-block:: Python + .. code-block:: python a = L.variables['a'] The variable value can then be easily read and written by accessing the value property of this object. - .. code-block:: Python + .. code-block:: python print(a.value) a.value = 4 diff --git a/doc/src/Python_properties.rst b/doc/src/Python_properties.rst index 02af03bbb8..227a729622 100644 --- a/doc/src/Python_properties.rst +++ b/doc/src/Python_properties.rst @@ -105,7 +105,7 @@ against invalid accesses. variables, compute or fix data (see :doc:`Howto_output`): - .. code-block:: Python + .. code-block:: python result = L.eval("ke") # kinetic energy result = L.eval("pe") # potential energy diff --git a/doc/src/Python_scatter.rst b/doc/src/Python_scatter.rst index 113b98d354..002a36cc98 100644 --- a/doc/src/Python_scatter.rst +++ b/doc/src/Python_scatter.rst @@ -1,7 +1,7 @@ Scatter/gather operations ========================= -.. code-block:: Python +.. code-block:: python data = lmp.gather_atoms(name,type,count) # return per-atom property of all atoms gathered into data, ordered by atom ID # name = "x", "charge", "type", etc @@ -42,7 +42,7 @@ For the scatter methods, the array of coordinates passed to must be a ctypes vector of ints or doubles, allocated and initialized something like this: -.. code-block:: Python +.. code-block:: python from ctypes import c_double natoms = lmp.get_natoms() diff --git a/doc/src/Run_basics.rst b/doc/src/Run_basics.rst index 5f1211d093..d2810f5986 100644 --- a/doc/src/Run_basics.rst +++ b/doc/src/Run_basics.rst @@ -30,12 +30,13 @@ executable itself can be placed elsewhere. .. note:: - The redirection operator "<" will not always work when running - in parallel with mpirun or mpiexec; for those systems the -in form is required. + The redirection operator "<" will not always work when running in + parallel with ``mpirun`` or ``mpiexec``; for those systems the -in + form is required. As LAMMPS runs it prints info to the screen and a logfile named -*log.lammps*\ . More info about output is given on the -:doc:`screen and logfile output ` page. +*log.lammps*\ . More info about output is given on the :doc:`screen and +logfile output ` page. If LAMMPS encounters errors in the input script or while running a simulation it will print an ERROR message and stop or a WARNING diff --git a/doc/src/Run_options.rst b/doc/src/Run_options.rst index f3c7973197..73fc37183e 100644 --- a/doc/src/Run_options.rst +++ b/doc/src/Run_options.rst @@ -93,13 +93,13 @@ switch is not set (the default), LAMMPS will operate as if the KOKKOS package were not installed; i.e. you can run standard LAMMPS or with the GPU or OPENMP packages, for testing or benchmarking purposes. -Additional optional keyword/value pairs can be specified which -determine how Kokkos will use the underlying hardware on your -platform. These settings apply to each MPI task you launch via the -"mpirun" or "mpiexec" command. You may choose to run one or more MPI -tasks per physical node. Note that if you are running on a desktop -machine, you typically have one physical node. On a cluster or -supercomputer there may be dozens or 1000s of physical nodes. +Additional optional keyword/value pairs can be specified which determine +how Kokkos will use the underlying hardware on your platform. These +settings apply to each MPI task you launch via the ``mpirun`` or +``mpiexec`` command. You may choose to run one or more MPI tasks per +physical node. Note that if you are running on a desktop machine, you +typically have one physical node. On a cluster or supercomputer there +may be dozens or 1000s of physical nodes. Either the full word or an abbreviation can be used for the keywords. Note that the keywords do not use a leading minus sign. I.e. the @@ -148,9 +148,9 @@ one of these 4 environment variables MV2_COMM_WORLD_LOCAL_RANK (Mvapich) OMPI_COMM_WORLD_LOCAL_RANK (OpenMPI) -which are initialized by the "srun", "mpirun" or "mpiexec" commands. -The environment variable setting for each MPI rank is used to assign a -unique GPU ID to the MPI task. +which are initialized by the ``srun``, ``mpirun``, or ``mpiexec`` +commands. The environment variable setting for each MPI rank is used to +assign a unique GPU ID to the MPI task. .. parsed-literal:: @@ -262,6 +262,8 @@ Disable generating a citation reminder (see above) at all. **-nonbuf** +.. versionadded:: 15Sep2022 + Turn off buffering for screen and logfile output. For performance reasons, output to the screen and logfile is usually buffered, i.e. output is only written to a file if its buffer - typically 4096 bytes - diff --git a/doc/src/Run_output.rst b/doc/src/Run_output.rst index a988be94ad..28f66d6ae9 100644 --- a/doc/src/Run_output.rst +++ b/doc/src/Run_output.rst @@ -16,46 +16,47 @@ simulation. An example set of statistics is shown here: .. parsed-literal:: - Loop time of 2.81192 on 4 procs for 300 steps with 2004 atoms + Loop time of 0.942801 on 4 procs for 300 steps with 2004 atoms - Performance: 18.436 ns/day 1.302 hours/ns 106.689 timesteps/s - 97.0% CPU use with 4 MPI tasks x no OpenMP threads + Performance: 54.985 ns/day, 0.436 hours/ns, 318.201 timesteps/s, 637.674 katom-step/s + 195.2% CPU use with 2 MPI tasks x 2 OpenMP threads - MPI task timings breakdown: + MPI task timing breakdown: Section \| min time \| avg time \| max time \|%varavg\| %total --------------------------------------------------------------- - Pair \| 1.9808 \| 2.0134 \| 2.0318 \| 1.4 \| 71.60 - Bond \| 0.0021894 \| 0.0060319 \| 0.010058 \| 4.7 \| 0.21 - Kspace \| 0.3207 \| 0.3366 \| 0.36616 \| 3.1 \| 11.97 - Neigh \| 0.28411 \| 0.28464 \| 0.28516 \| 0.1 \| 10.12 - Comm \| 0.075732 \| 0.077018 \| 0.07883 \| 0.4 \| 2.74 - Output \| 0.00030518 \| 0.00042665 \| 0.00078821 \| 1.0 \| 0.02 - Modify \| 0.086606 \| 0.086631 \| 0.086668 \| 0.0 \| 3.08 - Other \| \| 0.007178 \| \| \| 0.26 + Pair \| 0.61419 \| 0.62872 \| 0.64325 \| 1.8 \| 66.69 + Bond \| 0.0028608 \| 0.0028899 \| 0.002919 \| 0.1 \| 0.31 + Kspace \| 0.12652 \| 0.14048 \| 0.15444 \| 3.7 \| 14.90 + Neigh \| 0.10242 \| 0.10242 \| 0.10242 \| 0.0 \| 10.86 + Comm \| 0.026753 \| 0.027593 \| 0.028434 \| 0.5 \| 2.93 + Output \| 0.00018341 \| 0.00030942 \| 0.00043542 \| 0.0 \| 0.03 + Modify \| 0.039117 \| 0.039348 \| 0.039579 \| 0.1 \| 4.17 + Other \| \| 0.001041 \| \| \| 0.11 - Nlocal: 501 ave 508 max 490 min - Histogram: 1 0 0 0 0 0 1 1 0 1 - Nghost: 6586.25 ave 6628 max 6548 min - Histogram: 1 0 1 0 0 0 1 0 0 1 - Neighs: 177007 ave 180562 max 170212 min - Histogram: 1 0 0 0 0 0 0 1 1 1 + Nlocal: 1002 ave 1006 max 998 min + Histogram: 1 0 0 0 0 0 0 0 0 1 + Nghost: 8670.5 ave 8691 max 8650 min + Histogram: 1 0 0 0 0 0 0 0 0 1 + Neighs: 354010 ave 357257 max 350763 min + Histogram: 1 0 0 0 0 0 0 0 0 1 - Total # of neighbors = 708028 - Ave neighs/atom = 353.307 - Ave special neighs/atom = 2.34032 + Total # of neighbors = 708020 + Ave neighs/atom = 353.30339 + Ave special neighs/atom = 2.3403194 Neighbor list builds = 26 Dangerous builds = 0 ---------- -The first section provides a global loop timing summary. The *loop -time* is the total wall-clock time for the simulation to run. The -*Performance* line is provided for convenience to help predict how -long it will take to run a desired physical simulation. The *CPU use* -line provides the CPU utilization per MPI task; it should be close to -100% times the number of OpenMP threads (or 1 of not using OpenMP). -Lower numbers correspond to delays due to file I/O or insufficient -thread utilization. +The first section provides a global loop timing summary. The *loop time* +is the total wall-clock time for the simulation to run. The +*Performance* line is provided for convenience to help predict how long +it will take to run a desired physical simulation and to have numbers +useful for performance comparison between different simulation settings +or system sizes. The *CPU use* line provides the CPU utilization per +MPI task; it should be close to 100% times the number of OpenMP threads +(or 1 of not using OpenMP). Lower numbers correspond to delays due to +file I/O or insufficient thread utilization. ---------- diff --git a/doc/src/Speed_gpu.rst b/doc/src/Speed_gpu.rst index 883bc9c7e3..e95787ebee 100644 --- a/doc/src/Speed_gpu.rst +++ b/doc/src/Speed_gpu.rst @@ -76,10 +76,11 @@ instructions. **Run with the GPU package from the command line:** -The mpirun or mpiexec command sets the total number of MPI tasks used -by LAMMPS (one or multiple per compute node) and the number of MPI -tasks used per node. E.g. the mpirun command in MPICH does this via -its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. +The ``mpirun`` or ``mpiexec`` command sets the total number of MPI tasks +used by LAMMPS (one or multiple per compute node) and the number of MPI +tasks used per node. E.g. the ``mpirun`` command in MPICH does this via +its ``-np`` and ``-ppn`` switches. Ditto for OpenMPI via ``-np`` and +``-npernode``. When using the GPU package, you cannot assign more than one GPU to a single MPI task. However multiple MPI tasks can share the same GPU, @@ -129,8 +130,8 @@ GPU package pair styles. **Or run with the GPU package by editing an input script:** -The discussion above for the mpirun/mpiexec command, MPI tasks/node, -and use of multiple MPI tasks/GPU is the same. +The discussion above for the ``mpirun`` or ``mpiexec`` command, MPI +tasks/node, and use of multiple MPI tasks/GPU is the same. Use the :doc:`suffix gpu ` command, or you can explicitly add an "gpu" suffix to individual styles in your input script, e.g. diff --git a/doc/src/Speed_kokkos.rst b/doc/src/Speed_kokkos.rst index 8b9b2e99af..73345b7e88 100644 --- a/doc/src/Speed_kokkos.rst +++ b/doc/src/Speed_kokkos.rst @@ -72,12 +72,12 @@ See the :ref:`Build extras ` page for instructions. Running LAMMPS with the KOKKOS package """""""""""""""""""""""""""""""""""""" -All Kokkos operations occur within the context of an individual MPI -task running on a single node of the machine. The total number of MPI -tasks used by LAMMPS (one or multiple per compute node) is set in the -usual manner via the mpirun or mpiexec commands, and is independent of -Kokkos. E.g. the mpirun command in OpenMPI does this via its -np and --npernode switches. Ditto for MPICH via -np and -ppn. +All Kokkos operations occur within the context of an individual MPI task +running on a single node of the machine. The total number of MPI tasks +used by LAMMPS (one or multiple per compute node) is set in the usual +manner via the ``mpirun`` or ``mpiexec`` commands, and is independent of +Kokkos. E.g. the mpirun command in OpenMPI does this via its ``-np`` and +``-npernode`` switches. Ditto for MPICH via ``-np`` and ``-ppn``. Running on a multi-core CPU ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -168,7 +168,7 @@ for your MPI installation), binding can be forced with these flags: .. parsed-literal:: - OpenMPI 1.8: mpirun -np 2 --bind-to socket --map-by socket ./lmp_openmpi ... + OpenMPI 1.8: mpirun -np 2 --bind-to socket --map-by socket ./lmp_openmpi ... Mvapich2 2.0: mpiexec -np 2 --bind-to socket --map-by socket ./lmp_mvapich ... For binding threads with KOKKOS OpenMP, use thread affinity environment @@ -310,7 +310,8 @@ Alternatively the effect of the "-sf" or "-pk" switches can be duplicated by adding the :doc:`package kokkos ` or :doc:`suffix kk ` commands to your input script. The discussion above for building LAMMPS with the KOKKOS package, the -mpirun/mpiexec command, and setting appropriate thread are the same. +``mpirun`` or ``mpiexec`` command, and setting appropriate thread +properties are the same. You must still use the "-k on" :doc:`command-line switch ` to enable the KOKKOS package, and specify its additional arguments for diff --git a/doc/src/Speed_omp.rst b/doc/src/Speed_omp.rst index 29c55df62f..7f8913d20f 100644 --- a/doc/src/Speed_omp.rst +++ b/doc/src/Speed_omp.rst @@ -33,8 +33,8 @@ These examples assume one or more 16-core nodes. mpirun -np 4 lmp_omp -sf omp -pk omp 4 -in in.script # 4 MPI tasks, 4 threads/task mpirun -np 32 -ppn 4 lmp_omp -sf omp -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task -The mpirun or mpiexec command sets the total number of MPI tasks used -by LAMMPS (one or multiple per compute node) and the number of MPI +The ``mpirun`` or ``mpiexec`` command sets the total number of MPI tasks +used by LAMMPS (one or multiple per compute node) and the number of MPI tasks used per node. E.g. the mpirun command in MPICH does this via its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. @@ -58,8 +58,8 @@ OMP_NUM_THREADS environment variable. Or run with the OPENMP package by editing an input script """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -The discussion above for the mpirun/mpiexec command, MPI tasks/node, -and threads/MPI task is the same. +The discussion above for the ``mpirun`` or ``mpiexec`` command, MPI +tasks/node, and threads/MPI task is the same. Use the :doc:`suffix omp ` command, or you can explicitly add an "omp" suffix to individual styles in your input script, e.g. diff --git a/doc/src/Speed_packages.rst b/doc/src/Speed_packages.rst index 74d470c9fd..f5ce57b94a 100644 --- a/doc/src/Speed_packages.rst +++ b/doc/src/Speed_packages.rst @@ -117,33 +117,15 @@ script. with all its accelerator packages installed. Note however that the INTEL and KOKKOS packages require you to choose one of their hardware options when building for a specific platform. I.e. CPU or - Phi option for the INTEL package. Or the OpenMP, Cuda, or Phi - option for the KOKKOS package. + Phi option for the INTEL package. Or the OpenMP, CUDA, HIP, SYCL, + or Phi option for the KOKKOS package. Or the OpenCL, HIP, or CUDA + option for the GPU package. These are the exceptions. You cannot build a single executable with: * both the INTEL Phi and KOKKOS Phi options * the INTEL Phi or Kokkos Phi option, and the GPU package -See the examples/accelerate/README and make.list files for sample -Make.py commands that build LAMMPS with any or all of the accelerator -packages. As an example, here is a command that builds with all the -GPU related packages installed (GPU, KOKKOS with Cuda), including -settings to build the needed auxiliary GPU libraries for Kepler GPUs: - -.. code-block:: bash - - Make.py -j 16 -p omp gpu kokkos -cc nvcc wrap=mpi -gpu mode=double arch=35 -kokkos cuda arch=35 lib-all file mpi - -The examples/accelerate directory also has input scripts that can be -used with all of the accelerator packages. See its README file for -details. - -Likewise, the bench directory has FERMI and KEPLER and PHI -sub-directories with Make.py commands and input scripts for using all -the accelerator packages on various machines. See the README files in -those directories. - As mentioned above, the `Benchmark page `_ of the LAMMPS website gives performance results for the various accelerator packages for several of the standard LAMMPS benchmark problems, as a function of problem diff --git a/doc/src/angle_gaussian.rst b/doc/src/angle_gaussian.rst index f0a50938e4..6b102a693b 100644 --- a/doc/src/angle_gaussian.rst +++ b/doc/src/angle_gaussian.rst @@ -25,23 +25,25 @@ The *gaussian* angle style uses the potential: .. math:: - E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-(\theta-\theta_{i})^2}{w_i^2})\right) \right) + E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-2(\theta-\theta_{i})^2}{w_i^2}\right) \right) + +This analytical form is a suitable potential for obtaining mesoscale +effective force fields which can reproduce target atomistic +distributions :ref:`(Milano) `. -This analytical form is a suitable potential for obtaining -mesoscale effective force fields which can reproduce target atomistic distributions :ref:`(Milano) ` The following coefficients must be defined for each angle type via the :doc:`angle_coeff ` command as in the example above, or in the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands: -* T temperature at which the potential was derived +* :math:`T` temperature at which the potential was derived * :math:`n` (integer >=1) -* :math:`A_1` (-) -* :math:`w_1` (-) +* :math:`A_1` (> 0, radians) +* :math:`w_1` (> 0, radians) * :math:`\theta_1` (degrees) * ... -* :math:`A_n` (-) -* :math:`w_n` (-) +* :math:`A_n` (> 0, radians) +* :math:`w_n` (> 0, radians) * :math:`\theta_n` (degrees) diff --git a/doc/src/atom_style.rst b/doc/src/atom_style.rst index b753fdbe5f..c3b16c6ad1 100644 --- a/doc/src/atom_style.rst +++ b/doc/src/atom_style.rst @@ -91,7 +91,7 @@ quantities. +--------------+-----------------------------------------------------+--------------------------------------+ | *charge* | charge | atomic system with charges | +--------------+-----------------------------------------------------+--------------------------------------+ -| *dielectric* | dipole, area, curvature | system with surface polarization | +| *dielectric* | normx normy normz area/patch ed em epsilon curv | system with surface polarization | +--------------+-----------------------------------------------------+--------------------------------------+ | *dipole* | charge and dipole moment | system with dipolar particles | +--------------+-----------------------------------------------------+--------------------------------------+ @@ -180,16 +180,21 @@ vector with the 3 diameters of the ellipsoid and a quaternion 4-vector with its orientation. For the *dielectric* style, each particle can be either a physical -particle (e.g. an ion), or an interface particle representing a -boundary element. For physical particles, the per-particle properties -are the same as atom_style full. For interface particles, in addition -to these properties, each particle also has an area, a normal unit -vector, a mean local curvature, the mean and difference of the -dielectric constants of two sides of the interface, and the local -dielectric constant at the boundary element. The distinction between -the physical and interface particles is only meaningful when :doc:`fix -polarize ` commands are applied to the interface -particles. +particle (e.g. an ion), or an interface particle representing a boundary +element between two regions of different dielectric constant. For +interface particles, in addition to the properties associated with +atom_style full, each particle also should be assigned a normal unit +vector (defined by normx, normy, normz), an area (area/patch), the +difference and mean of the dielectric constants of two sides of the +interface along the direction of the normal vector (ed and em), the +local dielectric constant at the boundary element (epsilon), and a mean +local curvature (curv). Physical particles must be assigned these +values, as well, but only their local dielectric constants will be used; +see documentation for associated :doc:`pair styles ` +and :doc:`fixes `. The distinction between the physical +and interface particles is only meaningful when :doc:`fix polarize +` commands are applied to the interface particles. This +style is part of the DIELECTRIC package. For the *dipole* style, a point dipole is defined for each point particle. Note that if you wish the particles to be finite-size diff --git a/doc/src/bond_bpm_rotational.rst b/doc/src/bond_bpm_rotational.rst index 5c43071274..fb1db04b27 100644 --- a/doc/src/bond_bpm_rotational.rst +++ b/doc/src/bond_bpm_rotational.rst @@ -45,6 +45,8 @@ Examples Description """"""""""" +.. versionadded:: 4May2022 + The *bpm/rotational* bond style computes forces and torques based on deviations from the initial reference state of the two atoms. The reference state is stored by each bond when it is first computed in @@ -211,9 +213,9 @@ command, as *b1*, *b2*, ..., *b7*\ . Restrictions """""""""""" -This bond style can only be used if LAMMPS was built with the BPM -package. See the :doc:`Build package ` doc page for -more info. +This bond style is part of the BPM package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package +` page for more info. By default if pair interactions are to be disabled, this bond style requires setting diff --git a/doc/src/bond_bpm_spring.rst b/doc/src/bond_bpm_spring.rst index de31357afe..46c300d364 100644 --- a/doc/src/bond_bpm_spring.rst +++ b/doc/src/bond_bpm_spring.rst @@ -45,6 +45,8 @@ Examples Description """"""""""" +.. versionadded:: 4May2022 + The *bpm/spring* bond style computes forces and torques based on deviations from the initial reference state of the two atoms. The reference state is stored by each bond when it is first computed in @@ -167,9 +169,9 @@ extra quantity can be accessed by the Restrictions """""""""""" -This bond style can only be used if LAMMPS was built with the BPM -package. See the :doc:`Build package ` doc page for -more info. +This bond style is part of the BPM package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package +` page for more info. By default if pair interactions are to be disabled, this bond style requires setting diff --git a/doc/src/bond_coeff.rst b/doc/src/bond_coeff.rst index f5b7f01e38..86e2fa63e1 100644 --- a/doc/src/bond_coeff.rst +++ b/doc/src/bond_coeff.rst @@ -21,7 +21,7 @@ Examples bond_coeff 5 80.0 1.2 bond_coeff * 30.0 1.5 1.0 1.0 bond_coeff 1*4 30.0 1.5 1.0 1.0 - bond_coeff 1 harmonic 200.0 1.0 (for bond_style hybrid) + bond_coeff 1 harmonic 200.0 1.0 # (for bond_style hybrid) labelmap bond 5 carbonyl bond_coeff carbonyl 80.0 1.2 diff --git a/doc/src/bond_gaussian.rst b/doc/src/bond_gaussian.rst index 9fbcf4778c..74e5b973eb 100644 --- a/doc/src/bond_gaussian.rst +++ b/doc/src/bond_gaussian.rst @@ -25,33 +25,34 @@ The *gaussian* bond style uses the potential: .. math:: - E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-(r-r_{i})^2}{w_i^2})\right) \right) + E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-2(r-r_{i})^2}{w_i^2}\right)\right) -This analytical form is a suitable potential for obtaining -mesoscale effective force fields which can reproduce target atomistic distributions :ref:`(Milano) ` +This analytical form is a suitable potential for obtaining mesoscale +effective force fields which can reproduce target atomistic +distributions :ref:`(Milano) ` The following coefficients must be defined for each bond type via the :doc:`bond_coeff ` command as in the example above, or in the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands: -* T temperature at which the potential was derived +* :math:`T` temperature at which the potential was derived * :math:`n` (integer >=1) -* :math:`A_1` (-) -* :math:`w_1` (-) -* :math:`r_1` (length) +* :math:`A_1` (> 0, distance) +* :math:`w_1` (> 0, distance) +* :math:`r_1` (>= 0, distance) * ... -* :math:`A_n` (-) -* :math:`w_n` (-) -* :math:`r_n` (length) +* :math:`A_n` (> 0, distance) +* :math:`w_n` (> 0, distance) +* :math:`r_n` (>= 0, distance) Restrictions """""""""""" This bond style can only be used if LAMMPS was built with the -EXTRA-MOLECULE package. See the :doc:`Build package ` doc -page for more info. +EXTRA-MOLECULE package. See the :doc:`Build package ` +doc page for more info. Related commands """""""""""""""" diff --git a/doc/src/bond_mm3.rst b/doc/src/bond_mm3.rst index aa219f0cc7..585794da65 100644 --- a/doc/src/bond_mm3.rst +++ b/doc/src/bond_mm3.rst @@ -26,14 +26,14 @@ as defined in :ref:`(Allinger) ` .. math:: - E = K (r - r_0)^2 \left[ 1 - 2.55(r-r_0) + (7/12) 2.55^2(r-r_0)^2 \right] + E = K (r - r_0)^2 \left[ 1 - 2.55(r-r_0) + \frac{7}{12} 2.55^2(r-r_0)^2 \right] where :math:`r_0` is the equilibrium value of the bond, and :math:`K` is a -prefactor. The anharmonic prefactors have units angstrom\^(-n): --2.55 angstrom\^(-1) and (7/12)2.55\^2 angstrom\^(-2). The code takes +prefactor. The anharmonic prefactors have units :math:`\AA^{-n}`: +:math:`-2.55 \AA^{-1}` and :math:`\frac{7}{12} 2.55^2 \AA^{-2}`. The code takes care of the necessary unit conversion for these factors internally. -Note that the MM3 papers contains an error in Eq (1): -(7/12)2.55 should be replaced with (7/12)2.55\^2 +Note that the MM3 papers contain an error in Eq (1): +:math:`\frac{7}{12} 2.55` should be replaced with :math:`\frac{7}{12} 2.55^2` The following coefficients must be defined for each bond type via the :doc:`bond_coeff ` command as in the example above, or in diff --git a/doc/src/bond_quartic.rst b/doc/src/bond_quartic.rst index 1f9f9bf4e9..cda30cfd95 100644 --- a/doc/src/bond_quartic.rst +++ b/doc/src/bond_quartic.rst @@ -28,11 +28,18 @@ The *quartic* bond style uses the potential .. math:: - E = K (r - R_c)^ 2 (r - R_c - B_1) (r - R_c - B_2) + U_0 + 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - \left(\frac{\sigma}{r}\right)^6 \right] + \epsilon + E & = E_q + E_{LJ} \\ + E_q & = K (r - R_c)^ 2 (r - R_c - B_1) (r - R_c - B_2) + U_0 \\ + E_{LJ} & = \left\{ \begin{array} {l@{\quad:\quad}l} + 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - \left(\frac{\sigma}{r}\right)^6 \right] + \epsilon & r < 2^{\frac{1}{6}}, \epsilon = 1, \sigma = 1 \\ + 0 & r >= 2^{\frac{1}{6}} + \end{array} \right. to define a bond that can be broken as the simulation proceeds (e.g. -due to a polymer being stretched). The :math:`\sigma` and :math:`\epsilon` used in the -LJ portion of the formula are both set equal to 1.0 by LAMMPS. +due to a polymer being stretched). The :math:`\sigma` and +:math:`\epsilon` used in the LJ portion of the formula are both set +equal to 1.0 by LAMMPS and the LJ portion is cut off at its minimum, +i.e. at :math:`r_c = 2^{\frac{1}{6}}`. The following coefficients must be defined for each bond type via the :doc:`bond_coeff ` command as in the example above, or in @@ -46,9 +53,9 @@ or :doc:`read_restart ` commands: * :math:`U_0` (energy) This potential was constructed to mimic the FENE bond potential for -coarse-grained polymer chains. When monomers with :math:`\sigma = \epsilon = 1.0` -are used, the following choice of parameters gives a quartic potential that -looks nearly like the FENE potential: +coarse-grained polymer chains. When monomers with :math:`\sigma = +\epsilon = 1.0` are used, the following choice of parameters gives a +quartic potential that looks nearly like the FENE potential: .. math:: diff --git a/doc/src/box.rst b/doc/src/box.rst deleted file mode 100644 index 096a171249..0000000000 --- a/doc/src/box.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. index:: box - -box command -=========== - -Syntax -"""""" - -.. code-block:: LAMMPS - - box keyword value ... - -* one or more keyword/value pairs may be appended -* keyword = *tilt* - - .. parsed-literal:: - - *tilt* value = *small* or *large* - -Examples -"""""""" - -.. code-block:: LAMMPS - - box tilt large - box tilt small - -Description -""""""""""" - -Set attributes of the simulation box. - -For triclinic (non-orthogonal) simulation boxes, the *tilt* keyword -allows simulation domains to be created with arbitrary tilt factors, -e.g. via the :doc:`create_box ` or -:doc:`read_data ` commands. Tilt factors determine how -skewed the triclinic box is; see the :doc:`Howto triclinic ` page for a discussion of triclinic -boxes in LAMMPS. - -LAMMPS normally requires that no tilt factor can skew the box more -than half the distance of the parallel box length, which is the first -dimension in the tilt factor (x for xz). If *tilt* is set to -*small*, which is the default, then an error will be -generated if a box is created which exceeds this limit. If *tilt* -is set to *large*, then no limit is enforced. You can create -a box with any tilt factors you wish. - -Note that if a simulation box has a large tilt factor, LAMMPS will run -less efficiently, due to the large volume of communication needed to -acquire ghost atoms around a processor's irregular-shaped sub-domain. -For extreme values of tilt, LAMMPS may also lose atoms and generate an -error. - -Restrictions -"""""""""""" - -This command cannot be used after the simulation box is defined by a -:doc:`read_data ` or :doc:`create_box ` command or -:doc:`read_restart ` command. - -Related commands -"""""""""""""""" - -none - - -Default -""""""" - -The default value is tilt = small. diff --git a/doc/src/clear.rst b/doc/src/clear.rst index a8d224a5c9..fba3b69f47 100644 --- a/doc/src/clear.rst +++ b/doc/src/clear.rst @@ -23,15 +23,16 @@ Description """"""""""" This command deletes all atoms, restores all settings to their default -values, and frees all memory allocated by LAMMPS. Once a clear -command has been executed, it is almost as if LAMMPS were starting -over, with only the exceptions noted below. This command enables -multiple jobs to be run sequentially from one input script. +values, and frees all memory allocated by LAMMPS. Once a clear command +has been executed, it is almost as if LAMMPS were starting over, with +only the exceptions noted below. This command enables multiple jobs to +be run sequentially from one input script. These settings are not affected by a clear command: the working -directory (:doc:`shell ` command), log file status -(:doc:`log ` command), echo status (:doc:`echo ` command), and -input script variables (:doc:`variable ` command). +directory (:doc:`shell ` command), log file status (:doc:`log +` command), echo status (:doc:`echo ` command), and input +script variables except for *atomfile* style variables (:doc:`variable +` command). Restrictions """""""""""" diff --git a/doc/src/commands_list.rst b/doc/src/commands_list.rst index ee032bfd9e..ff2502189d 100644 --- a/doc/src/commands_list.rst +++ b/doc/src/commands_list.rst @@ -13,7 +13,6 @@ Commands bond_style bond_write boundary - box change_box clear comm_modify @@ -43,6 +42,7 @@ Commands echo fix fix_modify + fitpod_command group group2ndx hyper @@ -90,8 +90,7 @@ Commands region replicate rerun - reset_atom_ids - reset_mol_ids + reset_atoms reset_timestep restart run diff --git a/doc/src/compute_chunk_atom.rst b/doc/src/compute_chunk_atom.rst index d151692771..9bca1e26d1 100644 --- a/doc/src/compute_chunk_atom.rst +++ b/doc/src/compute_chunk_atom.rst @@ -602,8 +602,7 @@ be used. For non-orthogonal (triclinic) simulation boxes, only the *reduced* option may be used. A *box* value selects standard distance units as defined by the -:doc:`units ` command (e.g., :math:`\mathrm{\mathring A}` -for units = *real* or *metal*). +:doc:`units ` command (e.g., :math:`\AA` for units = *real* or *metal*). A *lattice* value means the distance units are in lattice spacings. The :doc:`lattice ` command must have been previously used to define the lattice spacing. A *reduced* value means normalized diff --git a/doc/src/compute_displace_atom.rst b/doc/src/compute_displace_atom.rst index fc063cea50..a2b1d946ae 100644 --- a/doc/src/compute_displace_atom.rst +++ b/doc/src/compute_displace_atom.rst @@ -17,7 +17,7 @@ Syntax .. parsed-literal:: - *replace* arg = name of per-atom variable + *refresh* arg = name of per-atom variable Examples """""""" @@ -95,7 +95,7 @@ something like the following commands: refresh c_dsp delay 100 The :doc:`dump_modify thresh ` command will only output -atoms that have displaced more than :math:`0.6~\mathrm{\mathring A}` on each +atoms that have displaced more than :math:`0.6~\AA` on each snapshot (assuming metal units). The dump_modify *refresh* option triggers a call to this compute at the end of every dump. diff --git a/doc/src/compute_entropy_atom.rst b/doc/src/compute_entropy_atom.rst index 78f784ff75..612fc28365 100644 --- a/doc/src/compute_entropy_atom.rst +++ b/doc/src/compute_entropy_atom.rst @@ -97,13 +97,13 @@ by the corresponding volume. This option can be useful when dealing with inhomogeneous systems such as those that have surfaces. Here are typical input parameters for fcc aluminum (lattice -constant :math:`4.05~\mathrm{\mathring A}`), +constant :math:`4.05~\AA`), .. parsed-literal:: compute 1 all entropy/atom 0.25 5.7 avg yes 3.7 -and for bcc sodium (lattice constant 4.23 Angstroms), +and for bcc sodium (lattice constant :math:`4.23~\AA`), .. parsed-literal:: diff --git a/doc/src/compute_nbond_atom.rst b/doc/src/compute_nbond_atom.rst index 0e53de3e49..f438836534 100644 --- a/doc/src/compute_nbond_atom.rst +++ b/doc/src/compute_nbond_atom.rst @@ -23,6 +23,8 @@ Examples Description """"""""""" +.. versionadded:: 4May2022 + Define a computation that computes the number of bonds each atom is part of. Bonds which are broken are not counted in the tally. See the :doc:`Howto broken bonds ` page for more information. @@ -40,8 +42,9 @@ LAMMPS output options. Restrictions """""""""""" -This fix can only be used if LAMMPS was built with the BPM package. -See the :doc:`Build package ` doc page for more info. +This compute is part of the BPM package. It is only enabled if LAMMPS was +built with that package. See the :doc:`Build package ` +page for more info. Related commands """""""""""""""" diff --git a/doc/src/compute_pair_local.rst b/doc/src/compute_pair_local.rst index bcfec11f80..dace280dee 100644 --- a/doc/src/compute_pair_local.rst +++ b/doc/src/compute_pair_local.rst @@ -59,7 +59,7 @@ commands. The value *dist* is the distance between the pair of atoms. The values *dx*, *dy*, and *dz* are the :math:`(x,y,z)` components of the *distance* between the pair of atoms. This value is always the -distance from the atom of lower to the one with the higher id. +distance from the atom of higher to the one with the lower atom ID. The value *eng* is the interaction energy for the pair of atoms. diff --git a/doc/src/compute_rigid_local.rst b/doc/src/compute_rigid_local.rst index 456fc57c38..bf0f402f06 100644 --- a/doc/src/compute_rigid_local.rst +++ b/doc/src/compute_rigid_local.rst @@ -6,7 +6,7 @@ compute rigid/local command Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS compute ID group-ID rigid/local rigidID input1 input2 ... @@ -25,6 +25,9 @@ Syntax quatw, quati, quatj, quatk, tqx, tqy, tqz, inertiax, inertiay, inertiaz + + .. parsed-literal:: + id = atom ID of atom within body which owns body properties mol = molecule ID used to define body in :doc:`fix rigid/small ` command mass = total mass of body @@ -69,8 +72,8 @@ the atoms owned on a processor. If the atom is not in the specified the atom within a body that is assigned to store the body information it is skipped (only one atom per body is so assigned). If it is the assigned atom, then the info for that body is output. This means that -information for N bodies is generated. N may be less than the # of -bodies defined by the fix rigid command, if the atoms in some bodies +information for :math:`N` bodies is generated. :math:`N` may be less than the +number of bodies defined by the fix rigid command, if the atoms in some bodies are not in the *group-ID*\ . .. note:: @@ -109,8 +112,7 @@ The *mass* attribute is the total mass of the rigid body. There are two options for outputting the coordinates of the center of mass (COM) of the body. The *x*, *y*, *z* attributes write the COM "unscaled", in the appropriate distance :doc:`units ` -(:math:`\mathrm{\mathring A}`, -sigma, etc). Use *xu*, *yu*, *zu* if you want the COM "unwrapped" by +(:math:`\AA`, :math:`\sigma`, etc). Use *xu*, *yu*, *zu* if you want the COM "unwrapped" by the image flags for each body. Unwrapped means that if the body COM has passed through a periodic boundary one or more times, the value is generated what the COM coordinate would be if it had not been @@ -120,7 +122,7 @@ The image flags for the body can be generated directly using the *ix*, *iy*, *iz* attributes. For periodic dimensions, they specify which image of the simulation box the COM is considered to be in. An image of 0 means it is inside the box as defined. A value of 2 means add 2 -box lengths to get the true value. A value of -1 means subtract 1 box +box lengths to get the true value. A value of :math:`-1` means subtract 1 box length to get the true value. LAMMPS updates these flags as the rigid body COMs cross periodic boundaries during the simulation. @@ -142,8 +144,8 @@ The *tqx*, *tqy*, *tqz* attributes are components of the torque acting on the body around its COM. The *inertiax*, *inertiay*, *inertiaz* attributes are components of -diagonalized inertia tensor for the body, i.e the 3 moments of inertia -for the body around its principal axes, as computed internally by +diagonalized inertia tensor for the body (i.e., the three moments of inertia +for the body around its principal axes), as computed internally by LAMMPS. ---------- @@ -170,10 +172,10 @@ corresponding attribute is in: * vx,vy,vz = velocity units * fx,fy,fz = force units * omegax,omegay,omegaz = radians/time units -* angmomx,angmomy,angmomz = mass\*distance\^2/time units +* angmomx,angmomy,angmomz = mass\*distance\ :math:`^2`\ /time units * quatw,quati,quatj,quatk = unitless * tqx,tqy,tqz = torque units -* inertiax,inertiay,inertiaz = mass\*distance\^2 units +* inertiax,inertiay,inertiaz = mass\*distance\ :math:`^2` units Restrictions """""""""""" diff --git a/doc/src/compute_saed.rst b/doc/src/compute_saed.rst index 1a746ab7b9..c2e1f3d1e0 100644 --- a/doc/src/compute_saed.rst +++ b/doc/src/compute_saed.rst @@ -86,7 +86,7 @@ will defined using the *c* values for the spacing along each reciprocal lattice axis. Note that manual mapping of the reciprocal space mesh is good for comparing diffraction results from multiple simulations; however it can reduce the likelihood that Bragg reflections will be satisfied -unless small spacing parameters (:math:`<0.05~\mathrm{\mathring A}^-1`) +unless small spacing parameters (:math:`<0.05~\AA^-1`) are implemented. Meshes with manual spacing do not require a periodic boundary. diff --git a/doc/src/compute_temp_ramp.rst b/doc/src/compute_temp_ramp.rst index 5c18243c23..2e170316fb 100644 --- a/doc/src/compute_temp_ramp.rst +++ b/doc/src/compute_temp_ramp.rst @@ -58,7 +58,7 @@ constant, and :math:`T` is the absolute temperature. The *units* keyword determines the meaning of the distance units used for coordinates (*clo*, *chi*) and velocities (*vlo*, *vhi*). A *box* value selects standard distance units as defined by the :doc:`units ` -command (e.g., :math:`\mathrm{\mathring{A}}` for units = real or metal). A +command (e.g., :math:`\AA` for units = real or metal). A *lattice* value means the distance units are in lattice spacings (i.e., velocity in lattice spacings per unit time). The :doc:`lattice ` command must have been previously used to define the lattice spacing. diff --git a/doc/src/compute_voronoi_atom.rst b/doc/src/compute_voronoi_atom.rst index 19914997a3..274be1b702 100644 --- a/doc/src/compute_voronoi_atom.rst +++ b/doc/src/compute_voronoi_atom.rst @@ -13,7 +13,7 @@ Syntax * ID, group-ID are documented in :doc:`compute ` command * voronoi/atom = style name of this compute command * zero or more keyword/value pairs may be appended -* keyword = *only_group* or *surface* or *radius* or *edge_histo* or *edge_threshold* or *face_threshold* or *neighbors* or *peratom* +* keyword = *only_group* or *occupation* or *surface* or *radius* or *edge_histo* or *edge_threshold* or *face_threshold* or *neighbors* or *peratom* .. parsed-literal:: diff --git a/doc/src/compute_xrd.rst b/doc/src/compute_xrd.rst index 10ee35496d..8673ce9199 100644 --- a/doc/src/compute_xrd.rst +++ b/doc/src/compute_xrd.rst @@ -91,7 +91,7 @@ reciprocal lattice axis. Note that manual mapping of the reciprocal space mesh is good for comparing diffraction results from multiple simulations; however, it can reduce the likelihood that Bragg reflections will be satisfied unless small spacing parameters -(:math:`< 0.05~\mathrm{\mathring{A}}^{-1}`) are implemented. +(:math:`< 0.05~\AA^{-1}`) are implemented. Meshes with manual spacing do not require a periodic boundary. The limits of the reciprocal lattice mesh are determined by range of diff --git a/doc/src/create_atoms.rst b/doc/src/create_atoms.rst index 17df11a5bf..8a0cc8812f 100644 --- a/doc/src/create_atoms.rst +++ b/doc/src/create_atoms.rst @@ -28,7 +28,7 @@ Syntax region-ID = create atoms within this region, use NULL for entire simulation box * zero or more keyword/value pairs may be appended -* keyword = *mol* or *basis* or *ratio* or *subset* or *remap* or *var* or *set* or *rotate* or *overlap* or *maxtry* or *units* +* keyword = *mol* or *basis* or *ratio* or *subset* or *remap* or *var* or *set* or *radscale* or *meshmode* or *rotate* or *overlap* or *maxtry* or *units* .. parsed-literal:: @@ -464,7 +464,7 @@ The *units* keyword determines the meaning of the distance units used to specify the coordinates of the one particle created by the *single* style, or the overlap distance *Doverlap* by the *overlap* keyword. A *box* value selects standard distance units as defined by the -:doc:`units ` command (e.g., :math:`\mathrm{\mathring{A}}` for +:doc:`units ` command (e.g., :math:`\AA` for units = *real* or *metal*\ . A *lattice* value means the distance units are in lattice spacings. diff --git a/doc/src/create_box.rst b/doc/src/create_box.rst index 889a57605d..f930ecea83 100644 --- a/doc/src/create_box.rst +++ b/doc/src/create_box.rst @@ -66,20 +66,21 @@ positive or negative values and are called "tilt factors" because they are the amount of displacement applied to faces of an originally orthogonal box to transform it into the parallelepiped. -By default, a *prism* region used with the create_box command must -have tilt factors :math:`(xy,xz,yz)` that do not skew the box more than half +By default, a *prism* region used with the create_box command must have +tilt factors :math:`(xy,xz,yz)` that do not skew the box more than half the distance of the parallel box length. For example, if :math:`x_\text{lo} = 2` and :math:`x_\text{hi} = 12`, then the :math:`x` -box length is 10 and the :math:`xy` tilt factor must be between :math:`-5` and -:math:`5`. Similarly, both :math:`xz` and :math:`yz` must be between -:math:`-(x_\text{hi}-x_\text{lo})/2` and :math:`+(y_\text{hi}-y_\text{lo})/2`. -Note that this is not a limitation, since if the maximum tilt factor is 5 (as -in this example), then configurations with tilt :math:`= \dots, -15`, -:math:`-5`, :math:`5`, :math:`15`, :math:`25, \dots` -are all geometrically equivalent. If you wish to define a box with tilt -factors that exceed these limits, you can use the :doc:`box tilt ` -command, with a setting of *large*\ ; a setting of *small* is the -default. +box length is 10 and the :math:`xy` tilt factor must be between +:math:`-5` and :math:`5`. Similarly, both :math:`xz` and :math:`yz` +must be between :math:`-(x_\text{hi}-x_\text{lo})/2` and +:math:`+(y_\text{hi}-y_\text{lo})/2`. Note that this is not a +limitation, since if the maximum tilt factor is 5 (as in this example), +then configurations with tilt :math:`= \dots, -15`, :math:`-5`, +:math:`5`, :math:`15`, :math:`25, \dots` are all geometrically +equivalent. Simulations with large tilt factors will run inefficiently, +since they require more ghost atoms and thus more communication. With +very large tilt factors, LAMMPS will eventually produce incorrect +trajectories and stop with errors due to lost atoms or similar. See the :doc:`Howto triclinic ` page for a geometric description of triclinic boxes, as defined by LAMMPS, and diff --git a/doc/src/delete_atoms.rst b/doc/src/delete_atoms.rst index 2fdd152196..c863d0c7d2 100644 --- a/doc/src/delete_atoms.rst +++ b/doc/src/delete_atoms.rst @@ -135,7 +135,7 @@ number of atoms in the system. Note that this is not done for molecular systems (see the :doc:`atom_style ` command), regardless of the *compress* setting, since it would foul up the bond connectivity that has already been assigned. However, the -:doc:`reset_atom_ids ` command can be used after this +:doc:`reset_atoms id ` command can be used after this command to accomplish the same thing. Note that the re-assignment of IDs is not really a compression, where @@ -203,7 +203,7 @@ using molecule template files via the :doc:`molecule ` and Related commands """""""""""""""" -:doc:`create_atoms `, :doc:`reset_atom_ids ` +:doc:`create_atoms `, :doc:`reset_atoms id ` Default """"""" diff --git a/doc/src/delete_bonds.rst b/doc/src/delete_bonds.rst index ac2ffb3452..0b30ae5588 100644 --- a/doc/src/delete_bonds.rst +++ b/doc/src/delete_bonds.rst @@ -26,6 +26,13 @@ Syntax * zero or more keywords may be appended * keyword = *any* or *undo* or *remove* or *special* + .. parsed-literal:: + + *any* arg = none = turn off interactions if any atoms are in the group (or on if *undo* is also used) + *undo* arg = none = turn specified bonds on instead of off + *remove* arg = permanently remove bonds that have been turned off + *special* arg = recompute pairwise 1-2, 1-3, and 1-4 lists + Examples """""""" @@ -101,13 +108,13 @@ Several keywords can be appended to the argument list to alter the default behaviors. The *any* keyword changes the requirement that all atoms in the bond -(angle, etc) must be in the specified group in order to turn off the +(angle, etc.) must be in the specified group in order to turn off the interaction. Instead, if any of the atoms in the interaction are in the specified group, it will be turned off (or on if the *undo* keyword is used). The *undo* keyword inverts the delete_bonds command so that the -specified bonds, angles, etc are turned on if they are currently +specified bonds, angles, etc. are turned on if they are currently turned off. This means a negative value is toggled to positive. For example, for style *angle*, if *type* is specified as 2, then all angles with current type = :math:`-2` are reset to type = :math:`2`. diff --git a/doc/src/displace_atoms.rst b/doc/src/displace_atoms.rst index d9bf367ec4..0055fd584f 100644 --- a/doc/src/displace_atoms.rst +++ b/doc/src/displace_atoms.rst @@ -104,7 +104,7 @@ atom's rotation. Distance units for displacements and the origin point of the *rotate* style are determined by the setting of *box* or *lattice* for the *units* keyword. *Box* means distance units as defined by the -:doc:`units ` command (e.g., :math:`\mathrm{\mathring A}` for +:doc:`units ` command (e.g., :math:`\AA` for *real* or *metal* units). *Lattice* means distance units are in lattice spacings. The :doc:`lattice ` command must have been previously used to define the lattice spacing. diff --git a/doc/src/dump.rst b/doc/src/dump.rst index f069911096..839683aafa 100644 --- a/doc/src/dump.rst +++ b/doc/src/dump.rst @@ -202,7 +202,7 @@ or multiple smaller files). to a dump file may be slightly outside the simulation box. Re-neighbor timesteps will not typically coincide with the timesteps dump snapshots are written. See the :doc:`dump_modify - pbc ` command if you with to force coordinates to be + pbc ` command if you wish to force coordinates to be strictly inside the simulation box. .. note:: @@ -693,7 +693,7 @@ charge. There are several options for outputting atom coordinates. The *x*, *y*, and *z* attributes write atom coordinates "unscaled", in the -appropriate distance :doc:`units ` (:math:`\mathrm{\mathring A}`, +appropriate distance :doc:`units ` (:math:`\AA`, :math:`\sigma`, etc.). Use *xs*, *ys*, and *zs* if you want the coordinates "scaled" to the box size so that each value is 0.0 to 1.0. If the simulation box is triclinic (tilted), then all atom coords will diff --git a/doc/src/dump_image.rst b/doc/src/dump_image.rst index bc2373afac..c9e838b7cf 100644 --- a/doc/src/dump_image.rst +++ b/doc/src/dump_image.rst @@ -69,7 +69,7 @@ Syntax yes/no = do or do not draw simulation box lines diam = diameter of box lines as fraction of shortest box length *axes* values = axes length diam = draw xyz axes - axes = *yes* or *no = do or do not draw xyz axes lines next to simulation box + axes = *yes* or *no* = do or do not draw xyz axes lines next to simulation box length = length of axes lines as fraction of respective box lengths diam = diameter of axes lines as fraction of shortest box length *subbox* values = lines diam = draw outline of processor sub-domains diff --git a/doc/src/dump_modify.rst b/doc/src/dump_modify.rst index 0d059581eb..52a36e1b00 100644 --- a/doc/src/dump_modify.rst +++ b/doc/src/dump_modify.rst @@ -632,7 +632,7 @@ calculates the displacement of each atom from its reference position. The "4" index is the scalar displacement; 1, 2, and 3 are the :math:`xyz` components of the displacement. The :doc:`dump_modify thresh ` command will cause only atoms that have displaced more than -:math:`0.6~\mathrm{\mathring A}` to be output on a given snapshot (assuming +:math:`0.6~\AA` to be output on a given snapshot (assuming metal units). However, note that when an atom is output, we also need to update the reference position for that atom to its new coordinates. So that it will not be output in every snapshot thereafter. That reference position is @@ -675,7 +675,7 @@ value of *yes* means atom coords are written in normalized units from 0.0 to 1.0 in each box dimension. If the simulation box is triclinic (tilted), then all atom coords will still be between 0.0 and 1.0. A value of *no* means they are written in absolute distance units -(e.g., :math:`\mathrm{\mathring A}` or :math:`\sigma`). +(e.g., :math:`\AA` or :math:`\sigma`). Using this keyword will reset all custom header names set with *dump_modify colname* to their respective default values. @@ -687,7 +687,7 @@ when writing to XTC files. By default, they are initialized for whatever :doc:`units ` style is being used, to write out coordinates in nanometers and time in picoseconds. For example, for *real* units, LAMMPS defines *sfactor* = 0.1 and *tfactor* = 0.001, since the -:math:`\mathrm{\mathring A}` and fs used by *real* units are 0.1 nm and +:math:`\AA` and fs used by *real* units are 0.1 nm and 0.001 ps, respectively. If you are using a units system with distance and time units far from nm and ps, you may wish to write XTC files with different units, since the compression algorithm used in XTC files is diff --git a/doc/src/fitpod_command.rst b/doc/src/fitpod_command.rst new file mode 100644 index 0000000000..9670bf5dd2 --- /dev/null +++ b/doc/src/fitpod_command.rst @@ -0,0 +1,745 @@ +.. index:: fitpod + +fitpod command +====================== + +Syntax +"""""" + +.. parsed-literal:: + + fitpod Ta_param.pod Ta_data.pod + +* fitpod = style name of this command +* Ta_param.pod = an input file that describes proper orthogonal descriptors (PODs) +* Ta_data.pod = an input file that specifies DFT data used to fit a POD potential + +Examples +"""""""" + +.. code-block:: LAMMPS + + fitpod Ta_param.pod Ta_data.pod + +Description +""""""""""" +.. versionadded:: TBD + +Fit a machine-learning interatomic potential (ML-IAP) based on proper +orthogonal descriptors (POD). Two input files are required for this +command. The first input file describes a POD potential parameter +settings, while the second input file specifies the DFT data used for +the fitting procedure. + +The table below has one-line descriptions of all the keywords that can +be used in the first input file (i.e. ``Ta_param.pod`` in the example +above): + +.. list-table:: + :header-rows: 1 + :widths: auto + + * - Keyword + - Default + - Type + - Description + * - species + - (none) + - STRING + - Chemical symbols for all elements in the system and have to match XYZ training files. + * - pbc + - 1 1 1 + - INT + - three integer constants specify boundary conditions + * - rin + - 1.0 + - REAL + - a real number specifies the inner cut-off radius + * - rcut + - 5.0 + - REAL + - a real number specifies the outer cut-off radius + * - bessel_polynomial_degree + - 3 + - INT + - the maximum degree of Bessel polynomials + * - inverse_polynomial_degree + - 6 + - INT + - the maximum degree of inverse radial basis functions + * - onebody + - 1 + - BOOL + - turns on/off one-body potential + * - twobody_number_radial_basis_functions + - 6 + - INT + - number of radial basis functions for two-body potential + * - threebody_number_radial_basis_functions + - 5 + - INT + - number of radial basis functions for three-body potential + * - threebody_number_angular_basis_functions + - 5 + - INT + - number of angular basis functions for three-body potential + * - fourbody_snap_twojmax + - 0 + - INT + - band limit for SNAP bispectrum components (0,2,4,6,8... allowed) + * - fourbody_snap_chemflag + - 0 + - BOOL + - turns on/off the explicit multi-element variant of the SNAP bispectrum components + * - quadratic_pod_potential + - 0 + - BOOL + - turns on/off quadratic POD potential + +All keywords except *species* have default values. If a keyword is not +set in the input file, its default value is used. The next table +describes all keywords that can be used in the second input file +(i.e. ``Ta_data.pod`` in the example above): + +.. list-table:: + :header-rows: 1 + :widths: auto + + * - Keyword + - Default + - Type + - Description + * - file_format + - extxyz + - STRING + - only the extended xyz format (extxyz) is currently supported + * - file_extension + - xyz + - STRING + - extension of the data files + * - path_to_training_data_set + - (none) + - STRING + - specifies the path to training data files in double quotes + * - path_to_test_data_set + - "" + - STRING + - specifies the path to test data files in double quotes + * - fraction_training_data_set + - 1.0 + - REAL + - a real number (<= 1.0) specifies the fraction of the training set used to fit POD + * - randomize_training_data_set + - 0 + - BOOL + - turns on/off randomization of the training set + * - fitting_weight_energy + - 100.0 + - REAL + - a real constant specifies the weight for energy in the least-squares fit + * - fitting_weight_force + - 1.0 + - REAL + - a real constant specifies the weight for force in the least-squares fit + * - fitting_regularization_parameter + - 1.0e-10 + - REAL + - a real constant specifies the regularization parameter in the least-squares fit + * - error_analysis_for_training_data_set + - 0 + - BOOL + - turns on/off error analysis for the training data set + * - error_analysis_for_test_data_set + - 0 + - BOOL + - turns on/off error analysis for the test data set + * - basename_for_output_files + - pod + - STRING + - a basename string added to the output files + * - precision_for_pod_coefficients + - 8 + - INT + - number of digits after the decimal points for numbers in the coefficient file + +All keywords except *path_to_training_data_set* have default values. If +a keyword is not set in the input file, its default value is used. After +successful training, a number of output files are produced, if enabled: + +* ``_training_errors.pod`` reports the errors in energy and forces for the training data set +* ``_training_analysis.pod`` reports detailed errors for all training configurations +* ``_test_errors.pod`` reports errors for the test data set +* ``_test_analysis.pod`` reports detailed errors for all test configurations +* ``_coefficients.pod`` contains the coefficients of the POD potential + +After training the POD potential, ``Ta_param.pod`` and ``_coefficients.pod`` +are the two files needed to use the POD potential in LAMMPS. See +:doc:`pair_style pod ` for using the POD potential. Examples +about training and using POD potentials are found in the directory +lammps/examples/PACKAGES/pod. + +Parameterized Potential Energy Surface +"""""""""""""""""""""""""""""""""""""" + +We consider a multi-element system of *N* atoms with :math:`N_{\rm e}` +unique elements. We denote by :math:`\boldsymbol r_n` and :math:`Z_n` +position vector and type of an atom *n* in the system, +respectively. Note that we have :math:`Z_n \in \{1, \ldots, N_{\rm e} +\}`, :math:`\boldsymbol R = (\boldsymbol r_1, \boldsymbol r_2, \ldots, +\boldsymbol r_N) \in \mathbb{R}^{3N}`, and :math:`\boldsymbol Z = (Z_1, +Z_2, \ldots, Z_N) \in \mathbb{N}^{N}`. The potential energy surface +(PES) of the system can be expressed as a many-body expansion of the +form + +.. math:: + + E(\boldsymbol R, \boldsymbol Z, \boldsymbol{\eta}, \boldsymbol{\mu}) \ = \ & \sum_{i} V^{(1)}(\boldsymbol r_i, Z_i, \boldsymbol \mu^{(1)} ) + \frac12 \sum_{i,j} V^{(2)}(\boldsymbol r_i, \boldsymbol r_j, Z_i, Z_j, \boldsymbol \eta, \boldsymbol \mu^{(2)}) \\ + & + \frac16 \sum_{i,j,k} V^{(3)}(\boldsymbol r_i, \boldsymbol r_j, \boldsymbol r_k, Z_i, Z_j, Z_k, \boldsymbol \eta, \boldsymbol \mu^{(3)}) + \ldots + +where :math:`V^{(1)}` is the one-body potential often used for +representing external field or energy of isolated elements, and the +higher-body potentials :math:`V^{(2)}, V^{(3)}, \ldots` are symmetric, +uniquely defined, and zero if two or more indices take identical values. +The superscript on each potential denotes its body order. Each *q*-body +potential :math:`V^{(q)}` depends on :math:`\boldsymbol \mu^{(q)}` which +are sets of parameters to fit the PES. Note that :math:`\boldsymbol \mu` +is a collection of all potential parameters :math:`\boldsymbol +\mu^{(1)}`, :math:`\boldsymbol \mu^{(2)}`, :math:`\boldsymbol +\mu^{(3)}`, etc, and that :math:`\boldsymbol \eta` is a set of +hyper-parameters such as inner cut-off radius :math:`r_{\rm in}` and +outer cut-off radius :math:`r_{\rm cut}`. + +Interatomic potentials rely on parameters to learn relationship between +atomic environments and interactions. Since interatomic potentials are +approximations by nature, their parameters need to be set to some +reference values or fitted against data by necessity. Typically, +potential fitting finds optimal parameters, :math:`\boldsymbol \mu^*`, +to minimize a certain loss function of the predicted quantities and +data. Since the fitted potential depends on the data set used to fit it, +different data sets will yield different optimal parameters and thus +different fitted potentials. When fitting the same functional form on +*Q* different data sets, we would obtain *Q* different optimized +potentials, :math:`E(\boldsymbol R,\boldsymbol Z, \boldsymbol \eta, +\boldsymbol \mu_q^*), 1 \le q \le Q`. Consequently, there exist many +different sets of optimized parameters for empirical interatomic +potentials. + +Instead of optimizing the potential parameters, inspired by the reduced +basis method :ref:`(Grepl) ` for parameterized partial +differential equations, we view the parameterized PES as a parametric +manifold of potential energies + +.. math:: + + \mathcal{M} = \{E(\boldsymbol R, \boldsymbol Z, \boldsymbol \eta, \boldsymbol \mu) \ | \ \boldsymbol \mu \in \Omega^{\boldsymbol \mu} \} + +where :math:`\Omega^{\boldsymbol \mu}` is a parameter domain in which +:math:`\boldsymbol \mu` resides. The parametric manifold +:math:`\mathcal{M}` contains potential energy surfaces for all values of +:math:`\boldsymbol \mu \in \Omega^{\boldsymbol \mu}`. Therefore, the +parametric manifold yields a much richer and more transferable atomic +representation than any particular individual PES :math:`E(\boldsymbol +R, \boldsymbol Z, \boldsymbol \eta, \boldsymbol \mu^*)`. + +We propose specific forms of the parameterized potentials for one-body, +two-body, and three-body interactions. We apply the Karhunen-Loeve +expansion to snapshots of the parameterized potentials to obtain sets of +orthogonal basis functions. These basis functions are aggregated +according to the chemical elements of atoms, thus leading to +multi-element proper orthogonal descriptors. + +Proper Orthogonal Descriptors +""""""""""""""""""""""""""""" + +Proper orthogonal descriptors are finger prints characterizing the +radial and angular distribution of a system of atoms. The detailed +mathematical definition is given in the paper by Nguyen and Rohskopf +:ref:`(Nguyen) `. + +The descriptors for the one-body interaction are used to capture energy +of isolated elements and defined as follows + +.. math:: + + D_{ip}^{(1)} = \left\{ + \begin{array}{ll} + 1, & \mbox{if } Z_i = p \\ + 0, & \mbox{if } Z_i \neq p + \end{array} + \right. + +for :math:`1 \le i \le N, 1 \le p \le N_{\rm e}`. The number of one-body +descriptors per atom is equal to the number of elements. The one-body +descriptors are independent of atom positions, but dependent on atom +types. The one-body descriptors are active only when the keyword +*onebody* is set to 1. + +We adopt the usual assumption that the direct interaction between two +atoms vanishes smoothly when their distance is greater than the outer +cutoff distance :math:`r_{\rm cut}`. Furthermore, we assume that two +atoms can not get closer than the inner cutoff distance :math:`r_{\rm +in}` due to the Pauli repulsion principle. Let :math:`r \in (r_{\rm in}, +r_{\rm cut})`, we introduce the following parameterized radial functions + +.. math:: + + \phi(r, r_{\rm in}, r_{\rm cut}, \alpha, \beta) = \frac{\sin (\alpha \pi x) }{r - r_{\rm in}}, \qquad \varphi(r, \gamma) = \frac{1}{r^\gamma} , + +where the scaled distance function :math:`x` is defined below to enrich the two-body manifold + +.. math:: + + x(r, r_{\rm in}, r_{\rm cut}, \beta) = \frac{e^{-\beta(r - r_{\rm in})/(r_{\rm cut} - r_{\rm in})} - 1}{e^{-\beta} - 1} . + +We introduce the following function as a convex combination of the two functions + +.. math:: + + \psi(r, r_{\rm in}, r_{\rm cut}, \alpha, \beta, \gamma, \kappa) = \kappa \phi(r, r_{\rm in}, r_{\rm cut}, \alpha, \beta) + (1- \kappa) \varphi(r, \gamma) . + +We see that :math:`\psi` is a function of distance :math:`r`, cut-off +distances :math:`r_{\rm in}` and :math:`r_{\rm cut}`, and parameters +:math:`\alpha, \beta, \gamma, \kappa`. Together these parameters allow +the function :math:`\psi` to characterize a diverse spectrum of two-body +interactions within the cut-off interval :math:`(r_{\rm in}, r_{\rm +cut})`. + +Next, we introduce the following parameterized potential + +.. math:: + + W^{(2)}(r_{ij}, \boldsymbol \eta, \boldsymbol \mu^{(2)}) = f_{\rm c}(r_{ij}, \boldsymbol \eta) \psi(r_{ij}, \boldsymbol \eta, \boldsymbol \mu^{(2)}) + +where :math:`\eta_1 = r_{\rm in}, \eta_2 = r_{\rm cut}, \mu_1^{(2)} = +\alpha, \mu_2^{(2)} = \beta, \mu_3^{(2)} = \gamma`, and +:math:`\mu_4^{(2)} = \kappa`. Here the cut-off function :math:`f_{\rm +c}(r_{ij}, \boldsymbol \eta)` proposed in [refs] is used to ensure the +smooth vanishing of the potential and its derivative for :math:`r_{ij} +\ge r_{\rm cut}`: + +.. math:: + + f_{\rm c}(r_{ij}, r_{\rm in}, r_{\rm cut}) = \exp \left(1 -\frac{1}{\sqrt{\left(1 - \frac{(r-r_{\rm in})^3}{(r_{\rm cut} - r_{\rm in})^3} \right)^2 + 10^{-6}}} \right) + +Based on the parameterized potential, we form a set of snapshots as +follows. We assume that we are given :math:`N_{\rm s}` parameter tuples +:math:`\boldsymbol \mu^{(2)}_\ell, 1 \le \ell \le N_{\rm s}`. We +introduce the following set of snapshots on :math:`(r_{\rm in}, r_{\rm +cut})`: + +.. math:: + + \xi_\ell(r_{ij}, \boldsymbol \eta) = W^{(2)}(r_{ij}, \boldsymbol \eta, \boldsymbol \mu^{(2)}_\ell), \quad \ell = 1, \ldots, N_{\rm s} . + +To ensure adequate sampling of the PES for different parameters, we +choose :math:`N_{\rm s}` parameter points :math:`\boldsymbol +\mu^{(2)}_\ell = (\alpha_\ell, \beta_\ell, \gamma_\ell, \kappa_\ell), 1 +\le \ell \le N_{\rm s}` as follows. The parameters :math:`\alpha \in [1, +N_\alpha]` and :math:`\gamma \in [1, N_\gamma]` are integers, where +:math:`N_\alpha` and :math:`N_\gamma` are the highest degrees for +:math:`\alpha` and :math:`\gamma`, respectively. We next choose +:math:`N_\beta` different values of :math:`\beta` in the interval +:math:`[\beta_{\min}, \beta_{\max}]`, where :math:`\beta_{\min} = 0` and +:math:`\beta_{\max} = 4`. The parameter :math:`\kappa` can be set either +0 or 1. Hence, the total number of parameter points is :math:`N_{\rm s} += N_\alpha N_\beta + N_\gamma`. Although :math:`N_\alpha, N_\beta, +N_\gamma` can be chosen conservatively large, we find that +:math:`N_\alpha = 6, N_\beta = 3, N_\gamma = 8` are adequate for most +problems. Note that :math:`N_\alpha` and :math:`N_\gamma` correspond to +*bessel_polynomial_degree* and *inverse_polynomial_degree*, +respectively. + +We employ the Karhunen-Loeve (KL) expansion to generate an orthogonal +basis set which is known to be optimal for representation of the +snapshot family :math:`\{\xi_\ell\}_{\ell=1}^{N_{\rm s}}`. The two-body +orthogonal basis functions are computed as follows + +.. math:: + + U^{(2)}_m(r_{ij}, \boldsymbol \eta) = \sum_{\ell = 1}^{N_{\rm s}} A_{\ell m}(\boldsymbol \eta) \, \xi_\ell(r_{ij}, \boldsymbol \eta), \qquad m = 1, \ldots, N_{\rm 2b} , + +where the matrix :math:`\boldsymbol A \in \mathbb{R}^{N_{\rm s} \times +N_{\rm s}}` consists of eigenvectors of the eigenvalue problem + +.. math:: + + \boldsymbol C \boldsymbol a = \lambda \boldsymbol a + +with the entries of :math:`\boldsymbol C \in \mathbb{R}^{N_{\rm s} \times N_{\rm s}}` being given by + +.. math:: + + C_{ij} = \frac{1}{N_{\rm s}} \int_{r_{\rm in}}^{r_{\rm cut}} \xi_i(x, \boldsymbol \eta) \xi_j(x, \boldsymbol \eta) dx, \quad 1 \le i, j \le N_{\rm s} + +Note that the eigenvalues :math:`\lambda_\ell, 1 \le \ell \le N_{\rm +s}`, are ordered such that :math:`\lambda_1 \ge \lambda_2 \ge \ldots \ge +\lambda_{N_{\rm s}}`, and that the matrix :math:`\boldsymbol A` is +pe-computed and stored for any given :math:`\boldsymbol \eta`. Owing to +the rapid convergence of the KL expansion, only a small number of +orthogonal basis functions is needed to obtain accurate +approximation. The value of :math:`N_{\rm 2b}` corresponds to +*twobody_number_radial_basis_functions*. + +The two-body proper orthogonal descriptors at each atom *i* are computed +by summing the orthogonal basis functions over the neighbors of atom *i* +and numerating on the atom types as follows + +.. math:: + + D^{(2)}_{im l(p, q) }(\boldsymbol \eta) = \left\{ + \begin{array}{ll} + \displaystyle \sum_{\{j | Z_j = q\}} U^{(2)}_m(r_{ij}, \boldsymbol \eta), & \mbox{if } Z_i = p \\ + 0, & \mbox{if } Z_i \neq p + \end{array} + \right. + +for :math:`1 \le i \le N, 1 \le m \le N_{\rm 2b}, 1 \le q, p \le N_{\rm +e}`. Here :math:`l(p,q)` is a symmetric index mapping such that + +.. math:: + + l(p,q) = \left\{ + \begin{array}{ll} + q + (p-1) N_{\rm e} - p(p-1)/2, & \mbox{if } q \ge p \\ + p + (q-1) N_{\rm e} - q(q-1)/2, & \mbox{if } q < p . + \end{array} + \right. + +The number of two-body descriptors per atom is thus :math:`N_{\rm 2b} +N_{\rm e}(N_{\rm e}+1)/2`. + +It is important to note that the orthogonal basis functions do not +depend on the atomic numbers :math:`Z_i` and :math:`Z_j`. Therefore, the +cost of evaluating the basis functions and their derivatives with +respect to :math:`r_{ij}` is independent of the number of elements +:math:`N_{\rm e}`. Consequently, even though the two-body proper +orthogonal descriptors depend on :math:`\boldsymbol Z`, their +computational complexity is independent of :math:`N_{\rm e}`. + +In order to provide proper orthogonal descriptors for three-body +interactions, we need to introduce a three-body parameterized +potential. In particular, the three-body potential is defined as a +product of radial and angular functions as follows + +.. math:: + + W^{(3)}(r_{ij}, r_{ik}, \theta_{ijk}, \boldsymbol \eta, \boldsymbol \mu^{(3)}) = \psi(r_{ij}, r_{\rm min}, r_{\rm max}, \alpha, \beta, \gamma, \kappa) f_{\rm c}(r_{ij}, r_{\rm min}, r_{\rm max}) \\ + \psi(r_{ik}, r_{\rm min}, r_{\rm max}, \alpha, \beta, \gamma, \kappa) f_{\rm c}(r_{ik}, r_{\rm min}, r_{\rm max}) \\ + \cos (\sigma \theta_{ijk} + \zeta) + +where :math:`\sigma` is the periodic multiplicity, :math:`\zeta` is the +equilibrium angle, :math:`\boldsymbol \mu^{(3)} = (\alpha, \beta, +\gamma, \kappa, \sigma, \zeta)`. The three-body potential provides an +angular fingerprint of the atomic environment through the bond angles +:math:`\theta_{ijk}` formed with each pair of neighbors :math:`j` and +:math:`k`. Compared to the two-body potential, the three-body potential +has two extra parameters :math:`(\sigma, \zeta)` associated with the +angular component. + +Let :math:`\boldsymbol \varrho = (\alpha, \beta, \gamma, \kappa)`. We +assume that we are given :math:`L_{\rm r}` parameter tuples +:math:`\boldsymbol \varrho_\ell, 1 \le \ell \le L_{\rm r}`. We +introduce the following set of snapshots on :math:`(r_{\min}, +r_{\max})`: + +.. math:: + + \zeta_\ell(r_{ij}, r_{\rm min}, r_{\rm max} ) = \psi(r_{ij}, r_{\rm min}, r_{\rm max}, \boldsymbol \varrho_\ell) f_{\rm c}(r_{ij}, r_{\rm min}, r_{\rm max}), \quad 1 \le \ell \le L_{\rm r} . + +We apply the Karhunen-Loeve (KL) expansion to this set of snapshots to +obtain orthogonal basis functions as follows + +.. math:: + + U^{r}_m(r_{ij}, r_{\rm min}, r_{\rm max} ) = \sum_{\ell = 1}^{L_{\rm r}} A_{\ell m} \, \zeta_\ell(r_{ij}, r_{\rm min}, r_{\rm max} ), \qquad m = 1, \ldots, N_{\rm r} , + +where the matrix :math:`\boldsymbol A \in \mathbb{R}^{L_{\rm r} \times L_{\rm r}}` consists +of eigenvectors of the eigenvalue problem. For the parameterized angular function, +we consider angular basis functions + +.. math:: + + U^{a}_n(\theta_{ijk}) = \cos ((n-1) \theta_{ijk}), \qquad n = 1,\ldots, N_{\rm a}, + +where :math:`N_{\rm a}` is the number of angular basis functions. The orthogonal +basis functions for the parameterized potential are computed as follows + +.. math:: + + U^{(3)}_{mn}(r_{ij}, r_{ik}, \theta_{ijk}, \boldsymbol \eta) = U^{r}_m(r_{ij}, \boldsymbol \eta) U^{r}_m(r_{ik}, \boldsymbol \eta) U^{a}_n(\theta_{ijk}), + +for :math:`1 \le m \le N_{\rm r}, 1 \le n \le N_{\rm a}`. The number of three-body +orthogonal basis functions is equal to :math:`N_{\rm 3b} = N_{\rm r} N_{\rm a}` and +independent of the number of elements. The value of :math:`N_{\rm r}` corresponds to +*threebody_number_radial_basis_functions*, while that of :math:`N_{\rm a}` to +*threebody_number_angular_basis_functions*. + +The three-body proper orthogonal descriptors at each atom *i* +are obtained by summing over the neighbors *j* and *k* of atom *i* as + +.. math:: + + D^{(3)}_{imn \ell(p, q, s)}(\boldsymbol \eta) = \left\{ + \begin{array}{ll} + \displaystyle \sum_{\{j | Z_j = q\}} \sum_{\{k | Z_k = s\}} U^{(3)}_{mn}(r_{ij}, r_{ik}, \theta_{ijk}, \boldsymbol \eta), & \mbox{if } Z_i = p \\ + 0, & \mbox{if } Z_i \neq p + \end{array} + \right. + +for :math:`1 \le i \le N, 1 \le m \le N_{\rm r}, 1 \le n \le N_{\rm a}, 1 \le q, p, s \le N_{\rm e}`, +where + +.. math:: + + \ell(p,q,s) = \left\{ + \begin{array}{ll} + s + (q-1) N_{\rm e} - q(q-1)/2 + (p-1)N_{\rm e}(1+N_{\rm e})/2 , & \mbox{if } s \ge q \\ + q + (s-1) N_{\rm e} - s(s-1)/2 + (p-1)N_{\rm e}(1+N_{\rm e})/2, & \mbox{if } s < q . + \end{array} + \right. + +The number of three-body descriptors per atom is thus :math:`N_{\rm 3b} N_{\rm e}^2(N_{\rm e}+1)/2`. +While the number of three-body PODs is cubic function of the number of elements, +the computational complexity of the three-body PODs is independent of the number of elements. + +Four-Body SNAP Descriptors +"""""""""""""""""""""""""" + +In addition to the proper orthogonal descriptors described above, we also employ +the spectral neighbor analysis potential (SNAP) descriptors. SNAP uses bispectrum components +to characterize the local neighborhood of each atom in a very general way. The mathematical definition +of the bispectrum calculation and its derivatives w.r.t. atom positions is described in +:doc:`compute snap `. In SNAP, the +total energy is decomposed into a sum over atom energies. The energy of +atom *i* is expressed as a weighted sum over bispectrum components. + +.. math:: + + E_i^{\rm SNAP} = \sum_{k=1}^{N_{\rm 4b}} \sum_{p=1}^{N_{\rm e}} c_{kp}^{(4)} D_{ikp}^{(4)} + + +where the SNAP descriptors are related to the bispectrum components by + +.. math:: + + D^{(4)}_{ikp} = \left\{ + \begin{array}{ll} + \displaystyle B_{ik}, & \mbox{if } Z_i = p \\ + 0, & \mbox{if } Z_i \neq p + \end{array} + \right. + +Here :math:`B_{ik}` is the *k*\ -th bispectrum component of atom *i*. The number of +bispectrum components :math:`N_{\rm 4b}` depends on the value of *fourbody_snap_twojmax* :math:`= 2 J_{\rm max}` +and *fourbody_snap_chemflag*. If *fourbody_snap_chemflag* = 0 +then :math:`N_{\rm 4b} = (J_{\rm max}+1)(J_{\rm max}+2)(J_{\rm max}+1.5)/3`. +If *fourbody_snap_chemflag* = 1 then :math:`N_{\rm 4b} = N_{\rm e}^3 (J_{\rm max}+1)(J_{\rm max}+2)(J_{\rm max}+1.5)/3`. +The bispectrum calculation is described in more detail in :doc:`compute sna/atom `. + +Linear Proper Orthogonal Descriptor Potentials +"""""""""""""""""""""""""""""""""""""""""""""" + +The proper orthogonal descriptors and SNAP descriptors are used to define the atomic energies +in the following expansion + +.. math:: + + E_{i}(\boldsymbol \eta) = \sum_{p=1}^{N_{\rm e}} c^{(1)}_p D^{(1)}_{ip} + \sum_{m=1}^{N_{\rm 2b}} \sum_{l=1}^{N_{\rm e}(N_{\rm e}+1)/2} c^{(2)}_{ml} D^{(2)}_{iml}(\boldsymbol \eta) + \sum_{m=1}^{N_{\rm r}} \sum_{n=1}^{N_{\rm a}} \sum_{\ell=1}^{N_{\rm e}^2(N_{\rm e}+1)/2} c^{(3)}_{mn\ell} D^{(3)}_{imn\ell}(\boldsymbol \eta) + \sum_{k=1}^{N_{\rm 4b}} \sum_{p=1}^{N_{\rm e}} c_{kp}^{(4)} D_{ikp}^{(4)}(\boldsymbol \eta), + +where :math:`D^{(1)}_{ip}, D^{(2)}_{iml}, D^{(3)}_{imn\ell}, D^{(4)}_{ikp}` are the one-body, two-body, three-body, four-body descriptors, +respectively, and :math:`c^{(1)}_p, c^{(2)}_{ml}, c^{(3)}_{mn\ell}, c^{(4)}_{kp}` are their respective expansion +coefficients. In a more compact notation that implies summation over descriptor indices +the atomic energies can be written as + +.. math:: + + E_i(\boldsymbol \eta) = \sum_{m=1}^{N_{\rm e}} c^{(1)}_m D^{(1)}_{im} + \sum_{m=1}^{N_{\rm d}^{(2)}} c^{(2)}_k D^{(2)}_{im} + \sum_{m=1}^{N_{\rm d}^{(3)}} c^{(3)}_m D^{(3)}_{im} + \sum_{m=1}^{N_{\rm d}^{(4)}} c^{(4)}_m D^{(4)}_{im} + +where :math:`N_{\rm d}^{(2)} = N_{\rm 2b} N_{\rm e} (N_{\rm e}+1)/2`, +:math:`N_{\rm d}^{(3)} = N_{\rm 3b} N_{\rm e}^2 (N_{\rm e}+1)/2`, and +:math:`N_{\rm d}^{(4)} = N_{\rm 4b} N_{\rm e}` are +the number of two-body, three-body, and four-body descriptors, respectively. + +The potential energy is then obtained by summing local atomic energies :math:`E_i` +for all atoms :math:`i` in the system + +.. math:: + + E(\boldsymbol \eta) = \sum_{i}^N E_{i}(\boldsymbol \eta) + +Because the descriptors are one-body, two-body, and three-body terms, +the resulting POD potential is a three-body PES. We can express the potential +energy as a linear combination of the global descriptors as follows + +.. math:: + + E(\boldsymbol \eta) = \sum_{m=1}^{N_{\rm e}} c^{(1)}_m d^{(1)}_{m} + \sum_{m=1}^{N_{\rm d}^{(2)}} c^{(2)}_m d^{(2)}_{m} + \sum_{m=1}^{N_{\rm d}^{(3)}} c^{(3)}_m d^{(3)}_{m} + \sum_{m=1}^{N_{\rm d}^{(4)}} c^{(4)}_m d^{(4)}_{m} + +where the global descriptors are given by + +.. math:: + + d_{m}^{(1)}(\boldsymbol \eta) = \sum_{i=1}^N D_{im}^{(1)}(\boldsymbol \eta), \quad d_{m}^{(2)}(\boldsymbol \eta) = \sum_{i=1}^N D_{im}^{(2)}(\boldsymbol \eta), \quad d_{m}^{(3)}(\boldsymbol \eta) = \sum_{i=1}^N D_{im}^{(3)}(\boldsymbol \eta), \quad d_{m}^{(4)}(\boldsymbol \eta) = \sum_{i=1}^N D_{im}^{(4)}(\boldsymbol \eta) + +Hence, we obtain the atomic forces as + +.. math:: + + \boldsymbol F = -\nabla E(\boldsymbol \eta) = - \sum_{m=1}^{N_{\rm d}^{(2)}} c^{(2)}_m \nabla d_m^{(2)} - \sum_{m=1}^{N_{\rm d}^{(3)}} c^{(3)}_m \nabla d_m^{(3)} - \sum_{m=1}^{N_{\rm d}^{(4)}} c^{(4)}_m \nabla d_m^{(4)} + +where :math:`\nabla d_m^{(2)}`, :math:`\nabla d_m^{(3)}` and :math:`\nabla d_m^{(4)}` are derivatives of the two-body +three-body, and four-body global descriptors with respect to atom positions, respectively. +Note that since the first-body global descriptors are constant, their derivatives are zero. + +Quadratic Proper Orthogonal Descriptor Potentials +""""""""""""""""""""""""""""""""""""""""""""""""" + +We recall two-body PODs :math:`D^{(2)}_{ik}, 1 \le k \le N_{\rm d}^{(2)}`, +and three-body PODs :math:`D^{(3)}_{im}, 1 \le m \le N_{\rm d}^{(3)}`, +with :math:`N_{\rm d}^{(2)} = N_{\rm 2b} N_{\rm e} (N_{\rm e}+1)/2` and +:math:`N_{\rm d}^{(3)} = N_{\rm 3b} N_{\rm e}^2 (N_{\rm e}+1)/2` being +the number of descriptors per atom for the two-body PODs and three-body PODs, +respectively. We employ them to define a new set of atomic descriptors as follows + +.. math:: + + D^{(2*3)}_{ikm} = \frac{1}{2N}\left( D^{(2)}_{ik} \sum_{j=1}^N D^{(3)}_{jm} + D^{(3)}_{im} \sum_{j=1}^N D^{(2)}_{jk} \right) + +for :math:`1 \le i \le N, 1 \le k \le N_{\rm d}^{(2)}, 1 \le m \le N_{\rm d}^{(3)}`. +The new descriptors are four-body because they involve central atom :math:`i` together +with three neighbors :math:`j, k` and :math:`l`. The total number of new descriptors per atom is equal to + +.. math:: + + N_{\rm d}^{(2*3)} = N_{\rm d}^{(2)} * N_{\rm d}^{(3)} = N_{\rm 2b} N_{\rm 3b} N_{\rm e}^3 (N_{\rm e}+1)^2/4 . + +The new global descriptors are calculated as + +.. math:: + + d^{(2*3)}_{km} = \sum_{i=1}^N D^{(2*3)}_{ikm} = \left( \sum_{i=1}^N D^{(2)}_{ik} \right) \left( \sum_{i=1}^N D^{(3)}_{im} \right) = d^{(2)}_{k} d^{(3)}_m, + +for :math:`1 \le k \le N_{\rm d}^{(2)}, 1 \le m \le N_{\rm d}^{(3)}`. Hence, the gradient +of the new global descriptors with respect to atom positions is calculated as + +.. math:: + + \nabla d^{(2*3)}_{km} = d^{(3)}_m \nabla d^{(2)}_{k} + d^{(2)}_{k} \nabla d^{(3)}_m, \quad 1 \le k \le N_{\rm d}^{(2)}, 1 \le m \le N_{\rm d}^{(3)} . + +The quadratic POD potential is defined as a linear combination of the +original and new global descriptors as follows + +.. math:: + + E^{(2*3)} = \sum_{k=1}^{N_{\rm 2d}^{(2*3)}} \sum_{m=1}^{N_{\rm 3d}^{(2*3)}} c^{(2*3)}_{km} d^{(2*3)}_{km} . + +It thus follows that + +.. math:: + + E^{(2*3)} = 0.5 \sum_{k=1}^{N_{\rm 2d}^{(2*3)}} \left( \sum_{m=1}^{N_{\rm 3d}^{(2*3)}} c^{(2*3)}_{km} d_m^{(3)} \right) d_k^{(2)} + 0.5 \sum_{m=1}^{N_{\rm 3d}^{(2*3)}} \left( \sum_{k=1}^{N_{\rm 2d}^{(2*3)}} c^{(2*3)}_{km} d_k^{(2)} \right) d_m^{(3)} , + +which is simplified to + +.. math:: + + E^{(2*3)} = 0.5 \sum_{k=1}^{N_{\rm 2d}^{(2*3)}} b_k^{(2)} d_k^{(2)} + 0.5 \sum_{m=1}^{N_{\rm 3d}^{(2*3)}} b_m^{(3)} d_m^{(3)} + +where + +.. math:: + + b_k^{(2)} & = \sum_{m=1}^{N_{\rm 3d}^{(2*3)}} c^{(2*3)}_{km} d_m^{(3)}, \quad k = 1,\ldots, N_{\rm 2d}^{(2*3)}, \\ + b_m^{(3)} & = \sum_{k=1}^{N_{\rm 2d}^{(2*3)}} c^{(2*3)}_{km} d_k^{(2)}, \quad m = 1,\ldots, N_{\rm 3d}^{(2*3)} . + +The quadratic POD potential results in the following atomic forces + +.. math:: + + \boldsymbol F^{(2*3)} = - \sum_{k=1}^{N_{\rm 2d}^{(2*3)}} \sum_{m=1}^{N_{\rm 3d}^{(2*3)}} c^{(2*3)}_{km} \nabla d^{(2*3)}_{km} . + +It can be shown that + +.. math:: + + \boldsymbol F^{(2*3)} = - \sum_{k=1}^{N_{\rm 2d}^{(2*3)}} b^{(2)}_k \nabla d_k^{(2)} - \sum_{m=1}^{N_{\rm 3d}^{(2*3)}} b^{(3)}_m \nabla d_m^{(3)} . + +The calculation of the atomic forces for the quadratic POD potential +only requires the extra calculation of :math:`b_k^{(2)}` and :math:`b_m^{(3)}` which can be negligible. +As a result, the quadratic POD potential does not increase the computational complexity. + + +Training +"""""""" + +POD potentials are trained using the least-squares regression against +density functional theory (DFT) data. Let :math:`J` be the number of +training configurations, with :math:`N_j` being the number of atoms in +the j-th configuration. Let :math:`\{E^{\star}_j\}_{j=1}^{J}` and +:math:`\{\boldsymbol F^{\star}_j\}_{j=1}^{J}` be the DFT energies and +forces for :math:`J` configurations. Next, we calculate the global +descriptors and their derivatives for all training configurations. Let +:math:`d_{jm}, 1 \le m \le M`, be the global descriptors associated with +the j-th configuration, where :math:`M` is the number of global +descriptors. We then form a matrix :math:`\boldsymbol A \in +\mathbb{R}^{J \times M}` with entries :math:`A_{jm} = d_{jm}/ N_j` for +:math:`j=1,\ldots,J` and :math:`m=1,\ldots,M`. Moreover, we form a +matrix :math:`\boldsymbol B \in \mathbb{R}^{\mathcal{N} \times M}` by +stacking the derivatives of the global descriptors for all training +configurations from top to bottom, where :math:`\mathcal{N} = +3\sum_{j=1}^{J} N_j`. + +The coefficient vector :math:`\boldsymbol c` of the POD potential is +found by solving the following least-squares problem + +.. math:: + + {\min}_{\boldsymbol c \in \mathbb{R}^{M}} \ w_E \|\boldsymbol A(\boldsymbol \eta) \boldsymbol c - \bar{\boldsymbol E}^{\star} \|^2 + w_F \|\boldsymbol B(\boldsymbol \eta) \boldsymbol c + \boldsymbol F^{\star} \|^2 + w_R \|\boldsymbol c \|^2, + +where :math:`w_E` and :math:`w_F` are weights for the energy +(*fitting_weight_energy*) and force (*fitting_weight_force*), +respectively; and :math:`w_R` is the regularization parameter (*fitting_regularization_parameter*). Here :math:`\bar{\boldsymbol E}^{\star} \in +\mathbb{R}^{J}` is a vector of with entries :math:`\bar{E}^{\star}_j = +E^{\star}_j/N_j` and :math:`\boldsymbol F^{\star}` is a vector of +:math:`\mathcal{N}` entries obtained by stacking :math:`\{\boldsymbol +F^{\star}_j\}_{j=1}^{J}` from top to bottom. + +The training procedure is the same for both the linear and quadratic POD +potentials. However, since the quadratic POD potential has a +significantly larger number of the global descriptors, it is more +expensive to train the linear POD potential. This is because the +training of the quadratic POD potential still requires us to calculate +and store the quadratic global descriptors and their +gradient. Furthermore, the quadratic POD potential may require more +training data in order to prevent over-fitting. In order to reduce the +computational cost of fitting the quadratic POD potential and avoid +over-fitting, we can use subsets of two-body and three-body PODs for +constructing the new descriptors. + + +Restrictions +"""""""""""" + +This command is part of the ML-POD package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package +` page for more info. + +Related commands +"""""""""""""""" + +:doc:`pair_style pod ` + +Default +""""""" + +The keyword defaults are also given in the description of the input files. + +---------- + +.. _Grepl20072: + +**(Grepl)** Grepl, Maday, Nguyen, and Patera, ESAIM: Mathematical Modelling and Numerical Analysis 41(3), 575-605, (2007). + +.. _Nguyen20222: + +**(Nguyen)** Nguyen and Rohskopf, arXiv preprint arXiv:2209.02362 (2022). diff --git a/doc/src/fix.rst b/doc/src/fix.rst index 333e920bd9..5b4505459e 100644 --- a/doc/src/fix.rst +++ b/doc/src/fix.rst @@ -216,9 +216,9 @@ accelerated styles exist. * :doc:`edpd/source ` - add heat source to eDPD simulations * :doc:`efield ` - impose electric field on system * :doc:`ehex ` - enhanced heat exchange algorithm -* :doc:`electrode/conp ` - impose electric potential -* :doc:`electrode/conq ` - impose total electric charge -* :doc:`electrode/thermo ` - apply thermo-potentiostat +* :doc:`electrode/conp ` - impose electric potential +* :doc:`electrode/conq ` - impose total electric charge +* :doc:`electrode/thermo ` - apply thermo-potentiostat * :doc:`electron/stopping ` - electronic stopping power as a friction force * :doc:`electron/stopping/fit ` - electronic stopping power as a friction force * :doc:`enforce2d ` - zero out *z*-dimension velocity and force diff --git a/doc/src/fix_acks2_reaxff.rst b/doc/src/fix_acks2_reaxff.rst index 9f7cc5303d..ebb1b48051 100644 --- a/doc/src/fix_acks2_reaxff.rst +++ b/doc/src/fix_acks2_reaxff.rst @@ -71,7 +71,7 @@ potential in eV, *gamma*, the valence orbital exponent, and *bcut*, the bond cutoff distance. Note that these 4 quantities are also in the ReaxFF potential file, except that eta is defined here as twice the eta value in the ReaxFF file. Note that unlike the rest of LAMMPS, the units -of this fix are hard-coded to be :math:`\mathrm{\mathring{A}}`, eV, and +of this fix are hard-coded to be :math:`\AA`, eV, and electronic charge. The optional *maxiter* keyword allows changing the max number @@ -111,7 +111,7 @@ LAMMPS was built with that package. See the :doc:`Build package This fix does not correctly handle interactions involving multiple periodic images of the same atom. Hence, it should not be used for -periodic cell dimensions less than :math:`10~\mathrm{\mathring{A}}`. +periodic cell dimensions less than :math:`10~\AA`. This fix may be used in combination with :doc:`fix efield ` and will apply the external electric field during charge equilibration, diff --git a/doc/src/fix_append_atoms.rst b/doc/src/fix_append_atoms.rst index 7c52d9b431..c31d4ff9da 100644 --- a/doc/src/fix_append_atoms.rst +++ b/doc/src/fix_append_atoms.rst @@ -79,7 +79,7 @@ measured from zhi and is set with the *extent* argument. The *units* keyword determines the meaning of the distance units used to define a wall position, but only when a numeric constant is used. A *box* value selects standard distance units as defined by the -:doc:`units ` command (e.g., :math:`\mathrm{\mathring A}` +:doc:`units ` command (e.g., :math:`\AA` for units = real or metal. A *lattice* value means the distance units are in lattice spacings. The :doc:`lattice ` command must have been previously used to diff --git a/doc/src/fix_ave_chunk.rst b/doc/src/fix_ave_chunk.rst index 354c8d8e8b..4988064766 100644 --- a/doc/src/fix_ave_chunk.rst +++ b/doc/src/fix_ave_chunk.rst @@ -31,7 +31,7 @@ Syntax v_name = per-atom vector calculated by an atom-style variable with name * zero or more keyword/arg pairs may be appended -* keyword = *norm* or *ave* or *bias* or *adof* or *cdof* or *file* or *overwrite* or *title1* or *title2* or *title3* +* keyword = *norm* or *ave* or *bias* or *adof* or *cdof* or *file* or *overwrite* or *format* or *title1* or *title2* or *title3* .. parsed-literal:: diff --git a/doc/src/fix_ave_histo.rst b/doc/src/fix_ave_histo.rst index e915526aa7..8bb66f0615 100644 --- a/doc/src/fix_ave_histo.rst +++ b/doc/src/fix_ave_histo.rst @@ -35,7 +35,7 @@ Syntax v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below) * zero or more keyword/arg pairs may be appended -* keyword = *mode* or *file* or *ave* or *start* or *beyond* or *overwrite* or *title1* or *title2* or *title3* +* keyword = *mode* or *kind* or *file* or *ave* or *start* or *beyond* or *overwrite* or *title1* or *title2* or *title3* .. parsed-literal:: diff --git a/doc/src/fix_ave_spatial.rst b/doc/src/fix_ave_spatial.rst new file mode 100644 index 0000000000..96d87bd8db --- /dev/null +++ b/doc/src/fix_ave_spatial.rst @@ -0,0 +1,9 @@ +Fix ave/spatial command +======================= + +.. meta:: + :http-equiv=Refresh: 5; url='https://docs.lammps.org/Commands_removed.html#fix-ave-spatial-and-fix-ave-spatial-sphere' + +.. deprecated:: 11Dec2015 + +The `fix ave/spatial` command has been superseded by :doc:`fix ave/chunk `. diff --git a/doc/src/fix_ave_spatial_sphere.rst b/doc/src/fix_ave_spatial_sphere.rst new file mode 100644 index 0000000000..a3cacc4115 --- /dev/null +++ b/doc/src/fix_ave_spatial_sphere.rst @@ -0,0 +1,9 @@ +Fix ave/spatial command +======================= + +.. meta:: + :http-equiv=Refresh: 5; url='https://docs.lammps.org/Commands_removed.html#fix-ave-spatial-and-fix-ave-spatial-sphere' + +.. deprecated:: 11Dec2015 + +The `fix ave/spatial/sphere` command has been superseded by :doc:`fix ave/chunk `. diff --git a/doc/src/fix_ave_time.rst b/doc/src/fix_ave_time.rst index 0308ecc92a..aa82e676ea 100644 --- a/doc/src/fix_ave_time.rst +++ b/doc/src/fix_ave_time.rst @@ -28,7 +28,7 @@ Syntax v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below) * zero or more keyword/arg pairs may be appended -* keyword = *mode* or *file* or *ave* or *start* or *off* or *overwrite* or *title1* or *title2* or *title3* +* keyword = *mode* or *file* or *ave* or *start* or *off* or *overwrite* or *format* or *title1* or *title2* or *title3* .. parsed-literal:: diff --git a/doc/src/fix_bocs.rst b/doc/src/fix_bocs.rst index 566bf8e68d..bb50cd1761 100644 --- a/doc/src/fix_bocs.rst +++ b/doc/src/fix_bocs.rst @@ -6,17 +6,28 @@ fix bocs command Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS - fix ID group-ID bocs keyword values ... + fix ID group-ID bocs keyword values ... + +* ID, group-ID are documented in :doc:`fix ` command +* bocs = style name of this fix command +* two or more keyword/value pairs may be appended +* keyword = *temp* or *cgiso* or *tchain* or *pchain* or *mtk* or *tloop* or *ploop* + + .. parsed-literal:: - keyword = *temp* or *cgiso* or *analytic* or *linear_spline* or *cubic_spline* *temp* values = Tstart Tstop Tdamp - *cgiso* values = Pstart Pstop Pdamp - *basis set* - *analytic* values = V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N - *linear_spline* values = input_filename - *cubic_spline* values = input_filename + *cgiso* values = Pstart Pstop Pdamp basis_set args + basis_set = *analytic* or *linear_spline* or *cubic_spline* + *analytic* args = V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N + *linear_spline* args = input_filename + *cubic_spline* args = input_filename + *tchain* value = N = length of thermostat chain (1 = single thermostat) + *pchain* value = N = length of thermostat on barostat (0 = no thermostat) + *mtk* value = *yes* or *no* = add MTK adjustment term or not + *tloop* value = M = number of sub-cycles to perform on thermostat + *ploop* value = M = number of sub-cycles to perform on barostat Examples """""""" @@ -24,25 +35,24 @@ Examples .. code-block:: LAMMPS fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 analytic 66476.015 968 2 245030.10 8962.20 - fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 cubic_spline input_Fv.dat - thermo_modify press 1_press Description """"""""""" These commands incorporate a pressure correction as described by -Dunn and Noid in :ref:`(Dunn1) ` to the standard MTTK -barostat by Martyna et. al. in :ref:`(Martyna) ` . -The first half of the command mimics a standard fix npt command: +Dunn and Noid :ref:`(Dunn1) ` to the standard MTK +barostat by Martyna et al. :ref:`(Martyna) `. +The first half of the command mimics a standard :doc:`fix npt ` +command: .. code-block:: LAMMPS fix 1 all bocs temp Tstart Tstop Tcoupl cgiso Pstart Pstop Pdamp The two differences are replacing *npt* with *bocs*, and replacing -*iso*\ /\ *aniso*\ /\ *etc* with *cgiso*\ . +*iso*\ /\ *aniso*\ /\ etc. with *cgiso*\ . The rest of the command details what form you would like to use for the pressure correction equation. The choices are: *analytic*, *linear_spline*, or *cubic_spline*. @@ -58,9 +68,9 @@ as a function of volume. The file must be formatted so each line has: Note both the COMMA and the SPACE separating the volume's value and its corresponding pressure correction. The volumes in the file must be uniformly spaced. Both the volumes and the pressure corrections -should be provided in the proper units, e.g. if you are using *units real*, -the volumes should all be in cubic angstroms, and the pressure corrections -should all be in atmospheres. Furthermore, the table should start/end at a +should be provided in the proper units (e.g., if you are using *units real*, +the volumes should all be in :math:`\mathrm{\mathring{A}}^3` and the pressure +corrections should all be in atm). Furthermore, the table should start/end at a volume considerably smaller/larger than you expect your system to sample during the simulation. If the system ever reaches a volume outside of the range provided, the simulation will stop. @@ -71,9 +81,10 @@ With the *analytic* option, the arguments are as follows: ... analytic V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N -Note that *V_avg* and *Coeff_i* should all be in the proper units, e.g. if you -are using *units real*, *V_avg* should be in cubic angstroms, and the -coefficients should all be in atmospheres \* cubic angstroms. +Note that *V_avg* and *Coeff_i* should all be in the proper units (e.g., if you +are using *units real*, *V_avg* should be in :math:`\mathrm{\mathring{A}^3}` +and the coefficients should all be in +:math:`\mathrm{atm}\cdot\mathrm{\mathring{A}^3}`\ ). ---------- @@ -122,7 +133,7 @@ are written to a file every so often. In order to have LAMMPS report the modified pressure, you must include the *thermo_modify* command given in the examples. For the last argument in the command, you should put XXXX_press, where XXXX is the ID given to the fix bocs command (in the -example, the ID of the fix bocs command is 1 ). +example, the ID of the fix bocs command is 1). This fix is part of the BOCS package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. @@ -132,7 +143,7 @@ Further information For more details about the pressure correction and the entire BOCS software package, visit the `BOCS package on GitHub `_ and read the release -paper by Dunn et. al. :ref:`(Dunn2) ` . +paper by Dunn et al. :ref:`(Dunn2) ` . .. _bocsgithub: https://github.com/noid-group/BOCS diff --git a/doc/src/fix_bond_break.rst b/doc/src/fix_bond_break.rst index ba12e154c5..a0f7fad581 100644 --- a/doc/src/fix_bond_break.rst +++ b/doc/src/fix_bond_break.rst @@ -6,7 +6,7 @@ fix bond/break command Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS fix ID group-ID bond/break Nevery bondtype Rmax keyword values ... @@ -15,7 +15,7 @@ Syntax * Nevery = attempt bond breaking every this many steps * bondtype = type of bonds to break * Rmax = bond longer than Rmax can break (distance units) -* zero or more keyword/value pairs may be appended to args +* zero or more keyword/value pairs may be appended * keyword = *prob* .. parsed-literal:: @@ -43,42 +43,42 @@ pair of atoms computed by the :doc:`bond_style ` command. Once the bond is broken it will be permanently deleted, as will all angle, dihedral, and improper interactions that bond is part of. -This is different than a :doc:`pairwise ` bond-order +This is different than a :doc:`pair-wise ` bond-order potential such as Tersoff or AIREBO which infers bonds and many-body interactions based on the current geometry of a small cluster of atoms and effectively creates and destroys bonds and higher-order many-body interactions from timestep to timestep as atoms move. A check for possible bond breakage is performed every *Nevery* -timesteps. If two bonded atoms I,J are further than a distance *Rmax* -of each other, if the bond is of type *bondtype*, and if both I and J -are in the specified fix group, then I,J is labeled as a "possible" -bond to break. +timesteps. If two bonded atoms :math:`i` and :math:`j` are farther than the +distance *Rmax* from each other, the bond is of type *bondtype*, and both +:math:`i` and :math:`j` are in the specified fix group, then the bond between +:math:`i` and :math:`j` is labeled as a "possible" bond to break. If several bonds involving an atom are stretched, it may have multiple possible bonds to break. Every atom checks its list of possible bonds to break and labels the longest such bond as its "sole" bond to break. -After this is done, if atom I is bonded to atom J in its sole bond, -and atom J is bonded to atom I in its sole bond, then the I,J bond is -"eligible" to be broken. +After this is done, if atom :math:`i` is bonded to atom :math:`j` in its sole +bond, and atom :math:`j` is bonded to atom :math:`j` in its sole bond, then the +bond between :math:`i` and :math:`j` is "eligible" to be broken. Note that these rules mean an atom will only be part of at most one -broken bond on a given timestep. It also means that if atom I chooses -atom J as its sole partner, but atom J chooses atom K is its sole -partner (due to Rjk > Rij), then this means atom I will not be part of -a broken bond on this timestep, even if it has other possible bond -partners. +broken bond on a given time step. It also means that if atom :math:`i` chooses +atom :math:`j` as its sole partner, but atom :math:`j` chooses atom :math:`k` +as its sole partner (because :math:`R_{jk} > R_{ij}`), then this means atom +:math:`i` will not be part of a broken bond on this time step, even if it has +other possible bond partners. The *prob* keyword can effect whether an eligible bond is actually broken. The *fraction* setting must be a value between 0.0 and 1.0. A uniform random number between 0.0 and 1.0 is generated and the -eligible bond is only broken if the random number < fraction. +eligible bond is only broken if the random number is less than *fraction*. When a bond is broken, data structures within LAMMPS that store bond -topology are updated to reflect the breakage. Likewise, if the bond +topologies are updated to reflect the breakage. Likewise, if the bond is part of a 3-body (angle) or 4-body (dihedral, improper) interaction, that interaction is removed as well. These changes -typically affect pairwise interactions between atoms that used to be +typically affect pair-wise interactions between atoms that used to be part of bonds, angles, etc. .. note:: @@ -88,17 +88,17 @@ part of bonds, angles, etc. becomes two molecules due to the broken bond, all atoms in both new molecules retain their original molecule IDs. -Computationally, each timestep this fix operates, it loops over all +Computationally, each time step this fix is invoked, it loops over all the bonds in the system and computes distances between pairs of bonded atoms. It also communicates between neighboring processors to coordinate which bonds are broken. Moreover, if any bonds are broken, -neighbor lists must be immediately updated on the same timestep. This -is to insure that any pairwise interactions that should be turned "on" +neighbor lists must be immediately updated on the same time step. This +is to ensure that any pair-wise interactions that should be turned "on" due to a bond breaking, because they are no longer excluded by the presence of the bond and the settings of the :doc:`special_bonds ` command, will be immediately -recognized. All of these operations increase the cost of a timestep. -Thus you should be cautious about invoking this fix too frequently. +recognized. All of these operations increase the cost of a time step. +Thus, you should be cautious about invoking this fix too frequently. You can dump out snapshots of the current bond topology via the :doc:`dump local ` command. @@ -107,11 +107,11 @@ You can dump out snapshots of the current bond topology via the :doc:`dump local Breaking a bond typically alters the energy of a system. You should be careful not to choose bond breaking criteria that induce a dramatic change in energy. For example, if you define a very stiff - harmonic bond and break it when 2 atoms are separated by a distance - far from the equilibrium bond length, then the 2 atoms will be + harmonic bond and break it when two atoms are separated by a distance + far from the equilibrium bond length, then the two atoms will be dramatically released when the bond is broken. More generally, you may need to thermostat your system to compensate for energy changes - resulting from broken bonds (and angles, dihedrals, impropers). + resulting from broken bonds (as well as angles, dihedrals, and impropers). See the :doc:`Howto ` page on broken bonds for more information on related features in LAMMPS. @@ -124,14 +124,14 @@ Restart, fix_modify, output, run start/stop, minimize info No information about this fix is written to :doc:`binary restart files `. None of the :doc:`fix_modify ` options are relevant to this fix. -This fix computes two statistics which it stores in a global vector of -length 2, which can be accessed by various :doc:`output commands `. The vector values calculated by this fix -are "intensive". +This fix computes two statistics, which it stores in a global vector of +length 2. This vector can be accessed by various :doc:`output commands +`. The vector values calculated by this fix are "intensive". -These are the 2 quantities: +The two quantities in the global vector are -* (1) # of bonds broken on the most recent breakage timestep -* (2) cumulative # of bonds broken + (1) number of bonds broken on the most recent breakage time step + (2) cumulative number of bonds broken No parameter of this fix can be used with the *start/stop* keywords of the :doc:`run ` command. This fix is not invoked during :doc:`energy minimization `. diff --git a/doc/src/fix_bond_create.rst b/doc/src/fix_bond_create.rst index c286482f81..bc5e1b83f8 100644 --- a/doc/src/fix_bond_create.rst +++ b/doc/src/fix_bond_create.rst @@ -10,7 +10,7 @@ fix bond/create/angle command Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS fix ID group-ID bond/create Nevery itype jtype Rmin bondtype keyword values ... @@ -58,83 +58,84 @@ Description """"""""""" Create bonds between pairs of atoms as a simulation runs according to -specified criteria. This can be used to model cross-linking of +specified criteria. This can be used to model the cross-linking of polymers, the formation of a percolation network, etc. In this context, a bond means an interaction between a pair of atoms computed by the :doc:`bond_style ` command. Once the bond is created it will be permanently in place. Optionally, the creation of a bond -can also create angle, dihedral, and improper interactions that bond +can also create angle, dihedral, and improper interactions that the bond is part of. See the discussion of the *atype*, *dtype*, and *itype* keywords below. -This is different than a :doc:`pairwise ` bond-order -potential such as Tersoff or AIREBO which infers bonds and many-body +This process is different than a :doc:`pair-wise ` bond-order +potential such as Tersoff or AIREBO, which infer bonds and many-body interactions based on the current geometry of a small cluster of atoms -and effectively creates and destroys bonds and higher-order many-body -interactions from timestep to timestep as atoms move. +and effectively create and destroy bonds and higher-order many-body +interactions from time step to time step as the atoms move. -A check for possible new bonds is performed every *Nevery* timesteps. -If two atoms I,J are within a distance *Rmin* of each other, if I is -of atom type *itype*, if J is of atom type *jtype*, if both I and J -are in the specified fix group, if a bond does not already exist -between I and J, and if both I and J meet their respective *maxbond* -requirement (explained below), then I,J is labeled as a "possible" -bond pair. +A check for possible new bonds is performed every *Nevery* time steps. +If two atoms :math:`i` and :math:`j` are within a distance *Rmin* of each +other, atom :math:`i` is of type *itype*, atom :math:`j` is of type *jtype*, +and both :math:`i` and :math:`j` are in the specified fix group, then if a bond +does not already exist between atoms :math:`i` and :math:`j`, and if both +:math:`i` and :math:`j` meet their respective *maxbond* requirements (explained +below), then :math:`i` and :math:`j` are labeled as a "possible" bond pair. If several atoms are close to an atom, it may have multiple possible bond partners. Every atom checks its list of possible bond partners and labels the closest such partner as its "sole" bond partner. After -this is done, if atom I has atom J as its sole partner, and atom J has -atom I as its sole partner, then the I,J bond is "eligible" to be -formed. +this is done, if atom :math:`i` has atom :math:`j` as its sole partner and +atom :math:`j` has atom :math:`i` as its sole partner, then the +:math:`i,j` bond is "eligible" to be formed. -Note that these rules mean an atom will only be part of at most one -created bond on a given timestep. It also means that if atom I -chooses atom J as its sole partner, but atom J chooses atom K is its -sole partner (due to Rjk < Rij), then this means atom I will not form -a bond on this timestep, even if it has other possible bond partners. +Note that these rules mean that an atom will only be part of at most one +created bond on a given time step. It also means that if atom :math:`i` +chooses atom :math:`j` as its sole partner, but atom :math:`j` chooses atom +:math:`k` as its sole partner (because :math:`R_{jk} < R_{ij}`), then atom +:math:`i` will not form a bond on this time step, even if it has other possible +bond partners. -It is permissible to have *itype* = *jtype*\ . *Rmin* must be <= the -pairwise cutoff distance between *itype* and *jtype* atoms, as defined +It is permissible to have *itype* = *jtype*\ . *Rmin* must be :math:`\leq` the +pair-wise cutoff distance between *itype* and *jtype* atoms, as defined by the :doc:`pair_style ` command. The *iparam* and *jparam* keywords can be used to limit the bonding functionality of the participating atoms. Each atom keeps track of -how many bonds of *bondtype* it already has. If atom I of -itype already has *maxbond* bonds (as set by the *iparam* -keyword), then it will not form any more. Likewise for atom J. If -*maxbond* is set to 0, then there is no limit on the number of bonds +how many bonds of *bondtype* it already has. If atom :math:`i` of type +*itype* already has *maxbond* bonds (as set by the *iparam* +keyword), then it will not form any more, and likewise for atom :math:`j`. +If *maxbond* is set to 0, then there is no limit on the number of bonds that can be formed with that atom. The *newtype* value for *iparam* and *jparam* can be used to change -the atom type of atom I or J when it reaches *maxbond* number of bonds -of type *bondtype*\ . This means it can now interact in a pairwise +the atom type of atom :math:`i` or :math:`j` when it reaches *maxbond* number +of bonds of type *bondtype*\ . This means it can now interact in a pair-wise fashion with other atoms in a different way by specifying different :doc:`pair_coeff ` coefficients. If you do not wish the atom type to change, simply specify *newtype* as *itype* or *jtype*\ . -The *prob* keyword can also effect whether an eligible bond is +The *prob* keyword can also affect whether an eligible bond is actually created. The *fraction* setting must be a value between 0.0 and 1.0. A uniform random number between 0.0 and 1.0 is generated and -the eligible bond is only created if the random number < fraction. +the eligible bond is only created if the random number is less than *fraction*. The *aconstrain* keyword is only available with the fix -bond/create/angle command. It allows to specify a minimal and maximal -angle *amin* and *amax* between the two prospective bonding partners and -a third particle that is already bonded to one of the two partners. -Such a criterion can be important when new angles are defined together -with the formation of a new bond. Without a restriction on the +bond/create/angle command. It allows one to specify minimum and maximum +angles *amin* and *amax*, respectively, between the two prospective bonding +partners and a third particle that is already bonded to one of the two +partners. Such a criterion can be important when new angles are defined +together with the formation of a new bond. Without a restriction on the permissible angle, and for stiffer angle potentials, very large energies -can arise and lead to uncontrolled behavior. +can arise and lead to unphysical behavior. Any bond that is created is assigned a bond type of *bondtype*. When a bond is created, data structures within LAMMPS that store bond -topology are updated to reflect the creation. If the bond is part of +topologies are updated to reflect the creation. If the bond is part of new 3-body (angle) or 4-body (dihedral, improper) interactions, you -can choose to create new angles, dihedrals, impropers as well, using +can choose to create new angles, dihedrals, and impropers as well using the *atype*, *dtype*, and *itype* keywords. All of these changes -typically affect pairwise interactions between atoms that are now part +typically affect pair-wise interactions between atoms that are now part of new bonds, angles, etc. .. note:: @@ -165,19 +166,19 @@ of type *angletype*, with parameters assigned by the corresponding when bonds are created. See the :doc:`read_data ` or :doc:`create_box ` command for more details. Note that a data file with no atoms can be used if you wish to add non-bonded - atoms via the :doc:`create atoms ` command, e.g. for a - percolation simulation. + atoms via the :doc:`create atoms ` command (e.g., for a + percolation simulation). .. note:: LAMMPS stores and maintains a data structure with a list of the first, second, and third neighbors of each atom (within the bond topology of - the system) for use in weighting pairwise interactions for bonded + the system) for use in weighting pair-wise interactions for bonded atoms. Note that adding a single bond always adds a new first neighbor - but may also induce \*many\* new second and third neighbors, depending on the + but may also induce **many** new second and third neighbors, depending on the molecular topology of your system. The "extra special per atom" parameter must typically be set to allow for the new maximum total - size (first + second + third neighbors) of this per-atom list. There are 2 + size (first + second + third neighbors) of this per-atom list. There are two ways to do this. See the :doc:`read_data ` or :doc:`create_box ` commands for details. @@ -186,15 +187,16 @@ of type *angletype*, with parameters assigned by the corresponding Even if you do not use the *atype*, *dtype*, or *itype* keywords, the list of topological neighbors is updated for atoms affected by the new bond. This in turn affects which neighbors are - considered for pairwise interactions, using the weighting rules set by + considered for pair-wise interactions, using the weighting rules set by the :doc:`special_bonds ` command. Consider a new bond - created between atoms I,J. If J has a bonded neighbor K, then K - becomes a second neighbor of I. Even if the *atype* keyword is not used - to create angle I-J-K, the pairwise interaction between I and K will - be potentially turned off or weighted by the 1-3 weighting specified + created between atoms :math:`i` and :math:`j`. If :math:`j` has a bonded + neighbor :math:`k`, then :math:`k` becomes a second neighbor of :math:`i`. + Even if the *atype* keyword is not used to create angle :math:`\angle ijk`, + the pair-wise interaction between :math:`i` and :math:`k` could potentially + be turned off or weighted by the 1--3 weighting specified by the :doc:`special_bonds ` command. This is the case even if the "angle yes" option was used with that command. The same - is true for third neighbors (1-4 interactions), the *dtype* keyword, and + is true for third neighbors (1--4 interactions), the *dtype* keyword, and the "dihedral yes" option used with the :doc:`special_bonds ` command. @@ -203,20 +205,20 @@ define a :doc:`bond_style ` and use the :doc:`bond_coeff ` command to specify coefficients for the *bondtype*\ . Similarly, if new atom types are specified by the *iparam* or *jparam* keywords, they must be within the range of atom -types allowed by the simulation and pairwise coefficients must be +types allowed by the simulation and pair-wise coefficients must be specified for the new types. -Computationally, each timestep this fix operates, it loops over +Computationally, each time step this fix is invoked, it loops over neighbor lists and computes distances between pairs of atoms in the list. It also communicates between neighboring processors to coordinate which bonds are created. Moreover, if any bonds are created, neighbor lists must be immediately updated on the same -timestep. This is to insure that any pairwise interactions that +time step. This is to ensure that any pair-wise interactions that should be turned "off" due to a bond creation, because they are now excluded by the presence of the bond and the settings of the :doc:`special_bonds ` command, will be immediately -recognized. All of these operations increase the cost of a timestep. -Thus you should be cautious about invoking this fix too frequently. +recognized. All of these operations increase the cost of a time step. +Thus, you should be cautious about invoking this fix too frequently. You can dump out snapshots of the current bond topology via the :doc:`dump local ` command. @@ -225,8 +227,8 @@ You can dump out snapshots of the current bond topology via the :doc:`dump local Creating a bond typically alters the energy of a system. You should be careful not to choose bond creation criteria that induce a dramatic change in energy. For example, if you define a very stiff - harmonic bond and create it when 2 atoms are separated by a distance - far from the equilibrium bond length, then the 2 atoms will oscillate + harmonic bond and create it when two atoms are separated by a distance + far from the equilibrium bond length, then the two atoms will oscillate dramatically when the bond is formed. More generally, you may need to thermostat your system to compensate for energy changes resulting from created bonds (and angles, dihedrals, impropers). @@ -245,10 +247,10 @@ length 2, which can be accessed by various :doc:`output commands `. The vector values calculated by this fix are "intensive". -These are the 2 quantities: +The two quantities in the global vector are -* (1) # of bonds created on the most recent creation timestep -* (2) cumulative # of bonds created + (1) number of bonds created on the most recent creation time step + (2) cumulative number of bonds created No parameter of this fix can be used with the *start/stop* keywords of the :doc:`run ` command. This fix is not invoked during :doc:`energy minimization `. diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst index a48675dcf2..4377d9d946 100644 --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -6,12 +6,12 @@ fix bond/react command Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS - fix ID group-ID bond/react common_keyword values ... - react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ... - react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ... - react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ... + fix ID group-ID bond/react common_keyword values & + react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values & + react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values & + react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values & ... * ID, group-ID are documented in :doc:`fix ` command. @@ -22,11 +22,12 @@ Syntax .. parsed-literal:: - *stabilization* values = *no* or *yes* *group-ID* *xmax* - *no* = no reaction site stabilization (default) - *yes* = perform reaction site stabilization - *group-ID* = user-assigned prefix for the dynamic group of atoms not currently involved in a reaction - *xmax* = xmax value that is used by an internally-created :doc:`nve/limit ` integrator + *stabilization* values = stabilize group_prefix xmax + stabilize = *yes* or *no* + *yes* = perform reaction site stabilization + *no* = no reaction site stabilization (default) + group_prefix = user-assigned prefix for the dynamic group of atoms not currently involved in a reaction + xmax = value that is used by an internally-created :doc:`nve/limit ` integrator *reset_mol_ids* values = *yes* or *no* *yes* = update molecule IDs based on new global topology (default) *no* = do not update molecule IDs @@ -41,28 +42,34 @@ Syntax * template-ID(post-reacted) = ID of a molecule template containing post-reaction topology * map_file = name of file specifying corresponding atom-IDs in the pre- and post-reacted templates * zero or more individual keyword/value pairs may be appended to each react argument -* individual_keyword = *prob* or *max_rxn* or *stabilize_steps* or *custom_charges* or *molecule* or *modify_create* +* individual_keyword = *prob* or *rate_limit* or *max_rxn* or *stabilize_steps* or *custom_charges* or *rescale_charges* or *molecule* or *modify_create* .. parsed-literal:: *prob* values = fraction seed fraction = initiate reaction with this probability if otherwise eligible seed = random number seed (positive integer) + *rate_limit* = Nlimit Nsteps + Nlimit = maximum number of reactions allowed to occur within interval + Nsteps = the interval (number of timesteps) over which to count reactions *max_rxn* value = N N = maximum number of reactions allowed to occur *stabilize_steps* value = timesteps - timesteps = number of timesteps to apply the internally-created :doc:`nve/limit ` fix to reacting atoms - *custom_charges* value = *no* or *fragmentID* - no = update all atomic charges (default) - fragmentID = ID of molecule fragment whose charges are updated + timesteps = number of time steps to apply the internally-created :doc:`nve/limit ` fix to reacting atoms + *custom_charges* value = *no* or fragment-ID + *no* = update all atomic charges (default) + fragment-ID = ID of molecule fragment whose charges are updated + *rescale_charges* value = *no* or *yes* + *no* = do not rescale atomic charges (default) + *yes* = rescale charges such that total charge does not change during reaction *molecule* value = *off* or *inter* or *intra* - off = allow both inter- and intramolecular reactions (default) - inter = search for reactions between molecules with different IDs - intra = search for reactions within the same molecule - *modify_create* keyword values - *fit* value = *all* or *fragmentID* - all = use all eligible atoms for create-atoms fit (default) - fragmentID = ID of molecule fragment used for create-atoms fit + *off* = allow both inter- and intramolecular reactions (default) + *inter* = search for reactions between molecules with different IDs + *intra* = search for reactions within the same molecule + *modify_create* values = keyword arg + *fit* arg = *all* or fragment-ID + *all* = use all eligible atoms for create-atoms fit (default) + fragment-ID = ID of molecule fragment used for create-atoms fit *overlap* value = R R = only insert atom/molecule if further than R from existing particles (distance units) @@ -99,31 +106,32 @@ other molecules can be identified and deleted. Finally, atoms can be created and inserted at specific positions relative to the reaction site. -Fix bond/react does not use quantum mechanical (eg. fix qmmm) or -pairwise bond-order potential (eg. Tersoff or AIREBO) methods to +Fix bond/react does not use quantum mechanical (e.g., :doc:`fix qmmm `) or +pairwise bond-order potential (e.g., :doc:`Tersoff ` or +:doc:`AIREBO `) methods to determine bonding changes a priori. Rather, it uses a distance-based probabilistic criteria to effect predetermined topology changes in simulations using standard force fields. This fix was created to facilitate the dynamic creation of polymeric, amorphous or highly cross-linked systems. A suggested workflow for -using this fix is: 1) identify a reaction to be simulated 2) build a -molecule template of the reaction site before the reaction has -occurred 3) build a molecule template of the reaction site after the -reaction has occurred 4) create a map that relates the -template-atom-IDs of each atom between pre- and post-reaction molecule -templates 5) fill a simulation box with molecules and run a simulation -with fix bond/react. +using this fix is + + (1) identify a reaction to be simulated + (2) build a molecule template of the reaction site before the reaction has occurred + (3) build a molecule template of the reaction site after the reaction has occurred + (4) create a map that relates the template-atom-IDs of each atom between pre- and post-reaction molecule templates + (5) fill a simulation box with molecules and run a simulation with fix bond/react. Only one 'fix bond/react' command can be used at a time. Multiple reactions can be simultaneously applied by specifying multiple *react* arguments to a single 'fix bond/react' command. This syntax is -necessary because the 'common keywords' are applied to all reactions. +necessary because the "common" keywords are applied to all reactions. The *stabilization* keyword enables reaction site stabilization. Reaction site stabilization is performed by including reacting atoms in an internally-created fix :doc:`nve/limit ` time -integrator for a set number of timesteps given by the +integrator for a set number of time steps given by the *stabilize_steps* keyword. While reacting atoms are being time integrated by the internal nve/limit, they are prevented from being involved in any new reactions. The *xmax* value keyword should @@ -133,53 +141,54 @@ during the simulation. Fix bond/react creates and maintains two important dynamic groups of atoms when using the *stabilization* keyword. The first group contains all atoms currently involved in a reaction; this group is -automatically thermostatted by an internally-created +automatically time-integrated by an internally-created :doc:`nve/limit ` integrator. The second group contains all atoms currently not involved in a reaction. This group should be -used by a thermostat in order to time integrate the system. The name +controlled by a thermostat in order to time integrate the system. The name of this group of non-reacting atoms is created by appending '_REACT' to the group-ID argument of the *stabilization* keyword, as shown in the second example above. .. note:: - When using reaction stabilization, you should generally not have - a separate thermostat which acts on the 'all' group. + When using reaction stabilization, you should generally **not** have + a separate thermostat that acts on the "all" group. The group-ID set using the *stabilization* keyword can be an existing static group or a previously-unused group-ID. It cannot be specified -as 'all'. If the group-ID is previously unused, the fix bond/react +as "all". If the group-ID is previously unused, the fix bond/react command creates a :doc:`dynamic group ` that is initialized to include all atoms. If the group-ID is that of an existing static group, the group is used as the parent group of new, internally-created dynamic group. In both cases, this new dynamic -group is named by appending '_REACT' to the group-ID, e.g. -nvt_grp_REACT. By specifying an existing group, you may thermostat +group is named by appending '_REACT' to the group-ID (e.g., +nvt_grp_REACT). By specifying an existing group, you may thermostat constant-topology parts of your system separately. The dynamic group -contains only atoms not involved in a reaction at a given timestep, +contains only atoms not involved in a reaction at a given time step, and therefore should be used by a subsequent system-wide time -integrator such as nvt, npt, or nve, as shown in the second example -above (full examples can be found at examples/PACKAGES/reaction). The time +integrator such as :doc:`fix nvt `, :doc:`fix npt `, or +:doc:`fix nve `, as shown in the second example +above (full examples can be found in examples/PACKAGES/reaction). The time integration command should be placed after the fix bond/react command due to the internal dynamic grouping performed by fix bond/react. .. note:: If the group-ID is an existing static group, react-group-IDs - should also be specified as this static group, or a subset. + should also be specified as this static group or a subset. -The *reset_mol_ids* keyword invokes the :doc:`reset_mol_ids ` -command after a reaction occurs, to ensure that molecule IDs are -consistent with the new bond topology. The group-ID used for -:doc:`reset_mol_ids ` is the group-ID for this fix. -Resetting molecule IDs is necessarily a global operation, and so can -be slow for very large systems. +The *reset_mol_ids* keyword invokes the :doc:`reset_atoms mol +` command after a reaction occurs, to ensure that +molecule IDs are consistent with the new bond topology. The group-ID +used for :doc:`reset_atoms mol ` is the group-ID for this +fix. Resetting molecule IDs is necessarily a global operation, so it +can be slow for very large systems. The following comments pertain to each *react* argument (in other -words, can be customized for each reaction, or reaction step): +words, they can be customized for each reaction, or reaction step): A check for possible new reaction sites is performed every *Nevery* -timesteps. *Nevery* can be specified with an equal-style +time steps. *Nevery* can be specified with an equal-style :doc:`variable `, whose value is rounded up to the nearest integer. @@ -194,11 +203,11 @@ reaction site is eligible to be modified to match the post-reaction template. An initiator atom pair will be identified if several conditions are -met. First, a pair of atoms I,J within the specified react-group-ID of -type itype and jtype must be separated by a distance between *Rmin* -and *Rmax*\ . *Rmin* and *Rmax* can be specified with equal-style -:doc:`variables `. For example, these reaction cutoffs can -be a function of the reaction conversion using the following commands: +met. First, a pair of atoms :math:`i` and :math:`j` within the specified +react-group-ID of type *itype* and *jtype* must be separated by a distance +between *Rmin* and *Rmax*\ . *Rmin* and *Rmax* can be specified with +equal-style :doc:`variables `. For example, these reaction cutoffs +can be functions of the reaction conversion using the following commands: .. code-block:: LAMMPS @@ -207,23 +216,28 @@ be a function of the reaction conversion using the following commands: variable rmax equal 3+f_myrxn[1]/100 # arbitrary function of reaction count The following criteria are used if multiple candidate initiator atom -pairs are identified within the cutoff distance: 1) If the initiator -atoms in the pre-reaction template are not 1-2 neighbors (i.e. not -directly bonded) the closest potential partner is chosen. 2) -Otherwise, if the initiator atoms in the pre-reaction template are 1-2 -neighbors (i.e. directly bonded) the farthest potential partner is -chosen. 3) Then, if both an atom I and atom J have each other as their -initiator partners, these two atoms are identified as the initiator -atom pair of the reaction site. Note that it can be helpful to select +pairs are identified within the cutoff distance: + + (1) If the initiator atoms in the pre-reaction template are not 1--2 + neighbors (i.e., not directly bonded) the closest potential partner is + chosen. + (2) Otherwise, if the initiator atoms in the pre-reaction template are 1--2 + neighbors (i.e. directly bonded) the farthest potential partner is + chosen. + (3) Then, if both an atom :math:`i` and atom :math:`j` have each other as + initiator partners, these two atoms are identified as the initiator atom + pair of the reaction site. + +Note that it can be helpful to select unique atom types for the initiator atoms: if an initiator atom pair -is identified, as described in the previous steps, but does not +is identified, as described in the previous steps, but it does not correspond to the same pair specified in the pre-reaction template, an otherwise eligible reaction could be prevented from occurring. Once this unique initiator atom pair is identified for each reaction, there could be two or more reactions that involve the same atom on the same -timestep. If this is the case, only one such reaction is permitted to +time step. If this is the case, only one such reaction is permitted to occur. This reaction is chosen randomly from all potential reactions -involving the overlapping atom. This capability allows e.g. for +involving the overlapping atom. This capability allows, for example, different reaction pathways to proceed from identical reaction sites with user-specified probabilities. @@ -247,19 +261,19 @@ pre-reaction template atoms should be linked to an initiator atom, via at least one path that does not involve edge atoms. When the pre-reaction template contains edge atoms, not all atoms, bonds, charges, etc. specified in the reaction templates will be updated. -Specifically, topology that involves only atoms that are 'too near' to -template edges will not be updated. The definition of 'too near the -edge' depends on which interactions are defined in the simulation. If +Specifically, topology that involves only atoms that are "too near" to +template edges will not be updated. The definition of "too near the +edge" depends on which interactions are defined in the simulation. If the simulation has defined dihedrals, atoms within two bonds of edge -atoms are considered 'too near the edge.' If the simulation defines +atoms are considered "too near the edge." If the simulation defines angles, but not dihedrals, atoms within one bond of edge atoms are -considered 'too near the edge.' If just bonds are defined, only edge -atoms are considered 'too near the edge.' +considered "too near the edge." If just bonds are defined, only edge +atoms are considered "too near the edge." .. note:: - Small molecules, i.e. ones that have all their atoms contained - within the reaction templates, never have edge atoms. + Small molecules (i.e., ones that have all their atoms contained + within the reaction templates) never have edge atoms. Note that some care must be taken when a building a molecule template for a given simulation. All atom types in the pre-reacted template @@ -282,7 +296,7 @@ provided on the :doc:`molecule ` command page. .. note:: When a reaction occurs, it is possible that the resulting - topology/atom (e.g. special bonds, dihedrals, etc.) exceeds that of + topology/atom (e.g., special bonds, dihedrals) exceeds that of the existing system and reaction templates. As when inserting molecules, enough space for this increased topology/atom must be reserved by using the relevant "extra" keywords to the @@ -292,14 +306,14 @@ The map file is a text document with the following format: A map file has a header and a body. The header of map file the contains one mandatory keyword and five optional keywords. The -mandatory keyword is 'equivalences': +mandatory keyword is *equivalences*\ : .. parsed-literal:: N *equivalences* = # of atoms N in the reaction molecule templates -The optional keywords are 'edgeIDs', 'deleteIDs', 'chiralIDs' and -'constraints': +The optional keywords are *edgeIDs*\ , *deleteIDs*\ , *chiralIDs*\ , and +*constraints*\ : .. parsed-literal:: @@ -311,25 +325,25 @@ The optional keywords are 'edgeIDs', 'deleteIDs', 'chiralIDs' and The body of the map file contains two mandatory sections and five optional sections. The first mandatory section begins with the keyword -'InitiatorIDs' and lists the two atom IDs of the initiator atom pair +"InitiatorIDs" and lists the two atom IDs of the initiator atom pair in the pre-reacted molecule template. The second mandatory section -begins with the keyword 'Equivalences' and lists a one-to-one +begins with the keyword "Equivalences" and lists a one-to-one correspondence between atom IDs of the pre- and post-reacted templates. The first column is an atom ID of the pre-reacted molecule template, and the second column is the corresponding atom ID of the post-reacted molecule template. The first optional section begins with -the keyword 'EdgeIDs' and lists the atom IDs of edge atoms in the +the keyword "EdgeIDs" and lists the atom IDs of edge atoms in the pre-reacted molecule template. The second optional section begins with -the keyword 'DeleteIDs' and lists the atom IDs of pre-reaction +the keyword "DeleteIDs" and lists the atom IDs of pre-reaction template atoms to delete. The third optional section begins with the -keyword 'CreateIDs' and lists the atom IDs of the post-reaction +keyword "CreateIDs" and lists the atom IDs of the post-reaction template atoms to create. The fourth optional section begins with the -keyword 'ChiralIDs' lists the atom IDs of chiral atoms whose +keyword "ChiralIDs" lists the atom IDs of chiral atoms whose handedness should be enforced. The fifth optional section begins with -the keyword 'Constraints' and lists additional criteria that must be +the keyword "Constraints" and lists additional criteria that must be satisfied in order for the reaction to occur. Currently, there are -six types of constraints available, as discussed below: 'distance', -'angle', 'dihedral', 'arrhenius', 'rmsd', and 'custom'. +six types of constraints available, as discussed below: "distance", +"angle", "dihedral", "arrhenius", "rmsd", and "custom". A sample map file is given below: @@ -384,18 +398,24 @@ two sub-keywords, *fit* and *overlap*. One or more of the sub-keywords may be used after the *modify_create* keyword. The *fit* sub-keyword can be used to specify which post-reaction atoms are used for the optimal translation and rotation of the post-reaction template. The -*fragmentID* value of the *fit* sub-keyword must be the name of a +fragment-ID value of the *fit* sub-keyword must be the name of a molecule fragment defined in the post-reaction :doc:`molecule ` template, and only atoms in this fragment are used for the fit. Atoms are created only if no current atom in the simulation is -within a distance R of any created atom, including the effect of -periodic boundary conditions if applicable. R is defined by the -*overlap* sub-keyword. Note that the default value for R is 0.0, which +within a distance :math:`R` of any created atom, including the effect of +periodic boundary conditions if applicable. :math:`R` is defined by the +*overlap* sub-keyword. Note that the default value for :math:`R` is 0.0, which will allow atoms to strongly overlap if you are inserting where other atoms are present. The velocity of each created atom is initialized in a random direction with a magnitude calculated from the instantaneous temperature of the reaction site. +.. note:: + + The 'Coords' section must be included in the post-reaction template + when creating atoms because these coordinates are used to determine + where new atoms are inserted. + The handedness of atoms that are chiral centers can be enforced by listing their IDs in the ChiralIDs section. A chiral atom must be bonded to four atoms with mutually different atom types. This feature @@ -406,40 +426,40 @@ and the relative position of the fourth bonded atom determines the chiral center's handedness. Any number of additional constraints may be specified in the -Constraints section of the map file. The constraint of type 'distance' +Constraints section of the map file. The constraint of type "distance" has syntax as follows: .. parsed-literal:: distance *ID1* *ID2* *rmin* *rmax* -where 'distance' is the required keyword, *ID1* and *ID2* are +where "distance" is the required keyword, *ID1* and *ID2* are pre-reaction atom IDs (or molecule-fragment IDs, see below), and these two atoms must be separated by a distance between *rmin* and *rmax* for the reaction to occur. -The constraint of type 'angle' has the following syntax: +The constraint of type "angle" has the following syntax: .. parsed-literal:: angle *ID1* *ID2* *ID3* *amin* *amax* -where 'angle' is the required keyword, *ID1*, *ID2* and *ID3* are +where "angle" is the required keyword, *ID1*, *ID2* and *ID3* are pre-reaction atom IDs (or molecule-fragment IDs, see below), and these three atoms must form an angle between *amin* and *amax* for the reaction to occur (where *ID2* is the central atom). Angles must be specified in degrees. This constraint can be used to enforce a certain orientation between reacting molecules. -The constraint of type 'dihedral' has the following syntax: +The constraint of type "dihedral" has the following syntax: .. parsed-literal:: dihedral *ID1* *ID2* *ID3* *ID4* *amin* *amax* *amin2* *amax2* -where 'dihedral' is the required keyword, and *ID1*, *ID2*, *ID3* +where "dihedral" is the required keyword, and *ID1*, *ID2*, *ID3* and *ID4* are pre-reaction atom IDs (or molecule-fragment IDs, see -below). Dihedral angles are calculated in the interval (-180,180]. +below). Dihedral angles are calculated in the interval :math:`(-180^\circ,180^\circ]`. Refer to the :doc:`dihedral style ` documentation for further details on convention. If *amin* is less than *amax*, these four atoms must form a dihedral angle greater than *amin* **and** less @@ -447,7 +467,7 @@ than *amax* for the reaction to occur. If *amin* is greater than *amax*, these four atoms must form a dihedral angle greater than *amin* **or** less than *amax* for the reaction to occur. Angles must be specified in degrees. Optionally, a second range of permissible -angles *amin2*-*amax2* can be specified. +angles *amin2* to *amax2* can be specified. For the 'distance', 'angle', and 'dihedral' constraints (explained above), atom IDs can be replaced by pre-reaction molecule-fragment @@ -457,11 +477,11 @@ fragment. The molecule fragment must have been defined in the :doc:`molecule ` command for the pre-reaction template. The constraint of type 'arrhenius' imposes an additional reaction -probability according to the temperature-dependent Arrhenius equation: +probability according to the modified Arrhenius equation, .. math:: - k = AT^{n}e^{\frac{-E_{a}}{k_{B}T}} + k = AT^{n}e^{-E_{a}/k_{B}T}. The Arrhenius constraint has the following syntax: @@ -469,11 +489,11 @@ The Arrhenius constraint has the following syntax: arrhenius *A* *n* *E_a* *seed* -where 'arrhenius' is the required keyword, *A* is the pre-exponential +where "arrhenius" is the required keyword, *A* is the pre-exponential factor, *n* is the exponent of the temperature dependence, :math:`E_a` is the activation energy (:doc:`units ` of energy), and *seed* is a random number seed. The temperature is defined as the instantaneous -temperature averaged over all atoms in the reaction site, and is +temperature averaged over all atoms in the reaction site and is calculated in the same manner as for example :doc:`compute temp/chunk `. Currently, there are no options for additional temperature averaging or velocity-biased @@ -487,7 +507,7 @@ The constraint of type 'rmsd' has the following syntax: rmsd *RMSDmax* *molfragment* -where 'rmsd' is the required keyword, and *RMSDmax* is the maximum +where "rmsd" is the required keyword, and *RMSDmax* is the maximum root-mean-square deviation between atom positions of the pre-reaction template and the local reaction site (distance units), after optimal translation and rotation of the pre-reaction template. Optionally, the @@ -500,28 +520,40 @@ example, the molecule fragment could consist of only the backbone atoms of a polymer chain. This constraint can be used to enforce a specific relative position and orientation between reacting molecules. -The constraint of type 'custom' has the following syntax: +.. versionchanged:: TBD + +The constraint of type "custom" has the following syntax: .. parsed-literal:: custom *varstring* -where 'custom' is the required keyword, and *varstring* is a -variable expression. The expression must be a valid equal-style -variable formula that can be read by the :doc:`variable ` command, +where 'custom' is the required keyword, and *varstring* is a variable +expression. The expression must be a valid equal-style variable +formula that can be read by the :doc:`variable ` command, after any special reaction functions are evaluated. If the resulting expression is zero, the reaction is prevented from occurring; -otherwise, it is permitted to occur. There are two special reaction -functions available, 'rxnsum' and 'rxnave'. These functions operate -over the atoms in a given reaction site, and have one mandatory -argument and one optional argument. The mandatory argument is the -identifier for an atom-style variable. The second, optional argument -is the name of a molecule fragment in the pre-reaction template, and -can be used to operate over a subset of atoms in the reaction site. -The 'rxnsum' function sums the atom-style variable over the reaction -site, while the 'rxnave' returns the average value. For example, a -constraint on the total potential energy of atoms involved in the -reaction can be imposed as follows: +otherwise, it is permitted to occur. There are three special reaction +functions available, 'rxnbond', 'rxnsum', and 'rxnave'. The 'rxnbond' +function allows per-bond values to be included in the variable strings +of the custom constraint. The 'rxnbond' function has two mandatory +arguments. The first argument is the ID of a previously defined +'compute bond/local' command. This 'compute bond/local' must compute +only one value, e.g. bond force. This value is returned by the +'rxnbond' function. The second argument is the name of a molecule +fragment in the pre-reaction template. The fragment must contain +exactly two atoms, corresponding to the atoms involved in the bond +whose value should be calculated. An example of a constraint that uses +the force experienced by a bond is provided below. The 'rxnsum' and +'rxnave' functions operate over the atoms in a given reaction site, +and have one mandatory argument and one optional argument. The +mandatory argument is the identifier for an atom-style variable. The +second, optional argument is the name of a molecule fragment in the +pre-reaction template, and can be used to operate over a subset of +atoms in the reaction site. The 'rxnsum' function sums the atom-style +variable over the reaction site, while the 'rxnave' returns the +average value. For example, a constraint on the total potential energy +of atoms involved in the reaction can be imposed as follows: .. code-block:: LAMMPS @@ -533,11 +565,32 @@ reaction can be imposed as follows: custom "rxnsum(v_my_pe) > 100" # in Constraints section of map file The above example prevents the reaction from occurring unless the -total potential energy of the reaction site is above 100. The variable -expression can be interpreted as the probability of the reaction -occurring by using an inequality and the 'random(x,y,z)' function -available as an equal-style variable input, similar to the 'arrhenius' -constraint above. +total potential energy of the reaction site is above 100. As a second +example, this time using the 'rxnbond' function, consider a modified +Arrhenius constraint that depends on the bond force of a specific bond: + +.. code-block:: LAMMPS + + # in LAMMPS input script + + compute bondforce all bond/local force + + compute ke_atom all ke/atom + variable ke atom c_ke_atom + + variable E_a equal 100.0 # activation energy + variable l0 equal 1.0 # characteristic length + + +.. code-block:: LAMMPS + + # in Constraints section of map file + + custom "exp(-(v_E_a-rxnbond(c_bondforce,bond1frag)*v_l0)/(2/3*rxnave(v_ke))) < random(0,1,12345)" + +By using an inequality and the 'random(x,y,z)' function, the left-hand +side can be interpreted as the probability of the reaction occurring, +similar to the 'arrhenius' constraint above. By default, all constraints must be satisfied for the reaction to occur. In other words, constraints are evaluated as a series of @@ -561,51 +614,75 @@ within LAMMPS that store bond topology are updated to reflect the post-reacted molecule template. All force fields with fixed bonds, angles, dihedrals or impropers are supported. -A few capabilities to note: 1) You may specify as many *react* -arguments as desired. For example, you could break down a complicated -reaction mechanism into several reaction steps, each defined by its -own *react* argument. 2) While typically a bond is formed or removed -between the initiator atoms specified in the pre-reacted molecule -template, this is not required. 3) By reversing the order of the pre- -and post- reacted molecule templates in another *react* argument, you -can allow for the possibility of one or more reverse reactions. +A few capabilities to note: + + (1) You may specify as many *react* arguments as desired. For example, you + could break down a complicated reaction mechanism into several reaction + steps, each defined by its own *react* argument. + (2) While typically a bond is formed or removed between the initiator atoms + specified in the pre-reacted molecule template, this is not required. + (3) By reversing the order of the pre- and post-reacted molecule templates in + another *react* argument, you can allow for the possibility of one or + more reverse reactions. The optional keywords deal with the probability of a given reaction occurring as well as the stable equilibration of each reaction site as -it occurs: +it occurs. The *prob* keyword can affect whether or not an eligible reaction actually occurs. The fraction setting must be a value between 0.0 and 1.0, and can be specified with an equal-style :doc:`variable `. A uniform random number between 0.0 and 1.0 is generated and the eligible reaction only occurs if the random number is less than the -fraction. Up to N reactions are permitted to occur, as optionally +fraction. Up to :math:`N` reactions are permitted to occur, as optionally specified by the *max_rxn* keyword. +.. versionadded:: TBD + +The *rate_limit* keyword can enforce an upper limit on the overall +rate of the reaction. The number of reaction occurrences is limited to +Nlimit within an interval of Nsteps timesteps. No reactions are +permitted to occur within the first Nsteps timesteps of the first run +after reading a data file. Nlimit can be specified with an equal-style +:doc:`variable `. + The *stabilize_steps* keyword allows for the specification of how many -timesteps a reaction site is stabilized before being returned to the +time steps a reaction site is stabilized before being returned to the overall system thermostat. In order to produce the most physical -behavior, this 'reaction site equilibration time' should be tuned to +behavior, this "reaction site equilibration time" should be tuned to be as small as possible while retaining stability for a given system or reaction step. After a limited number of case studies, this number -has been set to a default of 60 timesteps. Ideally, it should be +has been set to a default of 60 time steps. Ideally, it should be individually tuned for each fix reaction step. Note that in some situations, decreasing rather than increasing this parameter will result in an increase in stability. The *custom_charges* keyword can be used to specify which atoms' -atomic charges are updated. When the value is set to 'no', all atomic +atomic charges are updated. When the value is set to *no*\ , all atomic charges are updated to those specified by the post-reaction template (default). Otherwise, the value should be the name of a molecule fragment defined in the pre-reaction molecule template. In this case, only the atomic charges of atoms in the molecule fragment are updated. +.. versionadded:: TBD + +The *rescale_charges* keyword can be used to ensure the total charge +of the system does not change as reactions occur. When the argument is +set to *yes*\ , a fixed value is added to the charges of post-reaction +atoms such that their total charge equals that of the pre-reaction +site. If only a subset of atomic charges are updated via the +*custom_charges* keyword, this rescaling is applied to the subset. +This keyword could be useful for systems that contain different +molecules with the same reactive site, if the partial charges on the +reaction site vary from molecule to molecule, or when removing +reaction by-products. + The *molecule* keyword can be used to force the reaction to be intermolecular, intramolecular or either. When the value is set to -'off', molecule IDs are not considered when searching for reactions -(default). When the value is set to 'inter', the initiator atoms must +*off*\ , molecule IDs are not considered when searching for reactions +(default). When the value is set to *inter*\ , the initiator atoms must have different molecule IDs in order to be considered for the -reaction. When the value is set to 'intra', only initiator atoms with +reaction. When the value is set to *intra*\ , only initiator atoms with the same molecule ID are considered for the reaction. A few other considerations: @@ -627,15 +704,15 @@ all currently-reacting atoms: This command must be added after the fix bond/react command, and will apply to all reactions. -Computationally, each timestep this fix operates, it loops over +Computationally, each time step this fix is invoked, it loops over neighbor lists (for bond-forming reactions) and computes distances between pairs of atoms in the list. It also communicates between neighboring processors to coordinate which bonds are created and/or -removed. All of these operations increase the cost of a timestep. Thus +removed. All of these operations increase the cost of a time step. Thus, you should be cautious about invoking this fix too frequently. -You can dump out snapshots of the current bond topology via the dump -local command. +You can dump out snapshots of the current bond topology via the +:doc:`dump local ` command. ---------- @@ -649,20 +726,20 @@ allow for smooth restarts. None of the :doc:`fix_modify ` options are relevant to this fix. This fix computes one statistic for each *react* argument that it -stores in a global vector, of length 'number of react arguments', that +stores in a global vector, of length (number of react arguments), that can be accessed by various :doc:`output commands `. The vector values calculated by this fix are "intensive". -These is 1 quantity for each react argument: +There is one quantity in the global vector for each *react* argument: -* (1) cumulative # of reactions occurred + (1) cumulative number of reactions that occurred No parameter of this fix can be used with the *start/stop* keywords of the :doc:`run ` command. This fix is not invoked during :doc:`energy minimization `. -When fix bond/react is 'unfixed', all internally-created groups are -deleted. Therefore, fix bond/react can only be unfixed after unfixing -all other fixes that use any group created by fix bond/react. +When fix bond/react is ":doc:`unfixed `", all internally-created +groups are deleted. Therefore, fix bond/react can only be unfixed after +unfixing all other fixes that use any group created by fix bond/react. Restrictions """""""""""" @@ -683,7 +760,7 @@ Default """"""" The option defaults are stabilization = no, prob = 1.0, stabilize_steps = 60, -reset_mol_ids = yes, custom_charges = no, molecule = off, modify_create = no +reset_mol_ids = yes, custom_charges = no, molecule = off, modify_create = *fit all* ---------- diff --git a/doc/src/fix_brownian.rst b/doc/src/fix_brownian.rst index fe57ecc8e0..cf3f773550 100644 --- a/doc/src/fix_brownian.rst +++ b/doc/src/fix_brownian.rst @@ -14,7 +14,7 @@ fix brownian/asphere command Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS fix ID group-ID style_name temp seed keyword args @@ -27,23 +27,23 @@ Syntax .. parsed-literal:: - *rng* value = *uniform* or *gaussian* or *none* - *uniform* = use uniform random number generator - *gaussian* = use gaussian random number generator - *none* = turn off noise - *dipole* value = *mux* and *muy* and *muz* for *brownian/asphere* - *mux*, *muy*, and *muz* = update orientation of dipole having direction (*mux*,*muy*,*muz*) in body frame of rigid body - *gamma_r_eigen* values = *gr1* and *gr2* and *gr3* for *brownian/asphere* - *gr1*, *gr2*, and *gr3* = diagonal entries of body frame rotational friction tensor - *gamma_r* values = *gr* for *brownian/sphere* - *gr* = magnitude of the (isotropic) rotational friction tensor - *gamma_t_eigen* values = *gt1* and *gt2* and *gt3* for *brownian/asphere* - *gt1*, *gt2*, and *gt3* = diagonal entries of body frame translational friction tensor - *gamma_t* values = *gt* for *brownian* and *brownian/sphere* + *rng* value = *uniform* or *gaussian* or *none* + *uniform* = use uniform random number generator + *gaussian* = use gaussian random number generator + *none* = turn off noise + *dipole* value = *mux* and *muy* and *muz* for *brownian/asphere* + *mux*, *muy*, and *muz* = update orientation of dipole having direction (*mux*,*muy*,*muz*) in body frame of rigid body + *gamma_r_eigen* values = *gr1* and *gr2* and *gr3* for *brownian/asphere* + *gr1*, *gr2*, and *gr3* = diagonal entries of body frame rotational friction tensor + *gamma_r* values = *gr* for *brownian/sphere* + *gr* = magnitude of the (isotropic) rotational friction tensor + *gamma_t_eigen* values = *gt1* and *gt2* and *gt3* for *brownian/asphere* + *gt1*, *gt2*, and *gt3* = diagonal entries of body frame translational friction tensor + *gamma_t* values = *gt* for *brownian* and *brownian/sphere* *gt* = magnitude of the (isotropic) translational friction tensor - *rotation_temp* values = *T* for *brownian/sphere* and *brownian/asphere* + *rotation_temp* values = *T* for *brownian/sphere* and *brownian/asphere* *T* = rotation temperature, which can be different then *temp* when out of equilibrium - *planar_rotation* values = None (constrains rotational diffusion to be in xy plane if in 3D) + *planar_rotation* values = none (constrains rotational diffusion to be in xy plane if in 3D) Examples """""""" @@ -71,9 +71,10 @@ positions is .. math:: - d\mathbf{r} = \mathbf{\gamma}_t^{-1}\mathbf{F}dt+\sqrt{2k_BT}\mathbf{\gamma}_t^{-1/2}d\mathbf{W}_t, + d\mathbf{r} = \boldsymbol{\gamma}_t^{-1}\mathbf{F}dt + + \sqrt{2k_B T}\boldsymbol{\gamma}_t^{-1/2}d\mathbf{W}_t, -in the lab-frame (i.e. :math:`\mathbf{\gamma}_t` is not diagonal, but +in the lab-frame (i.e., :math:`\boldsymbol{\gamma}_t` is not diagonal, but only depends on orientation and so the noise is still additive). The rotational motion for the spherical and ellipsoidal particles is not @@ -92,15 +93,15 @@ updated. This style therefore requires the hybrid atom style .. math:: - \mathbf{\mu}(t+dt) = \frac{\mathbf{\mu}(t) + \mathbf{\omega} \times \mathbf{\mu}dt - }{|\mathbf{\mu}(t) + \mathbf{\omega} \times \mathbf{\mu}|} + \boldsymbol{\mu}(t+dt) = \frac{\boldsymbol{\mu}(t) + \boldsymbol{\omega} \times \boldsymbol{\mu}dt + }{|\boldsymbol{\mu}(t) + \boldsymbol{\omega} \times \boldsymbol{\mu}|} which correctly reproduces a Boltzmann distribution of orientations and rotational diffusion moments (see :ref:`(Ilie) `) when .. math:: - \mathbf{\omega} = \frac{\mathbf{T}}{\gamma_r} + \sqrt{\frac{2 k_B T_{rot}}{\gamma_r}\frac{d\mathbf{W}}{dt}}, + \boldsymbol{\omega} = \frac{\mathbf{T}}{\gamma_r} + \sqrt{\frac{2 k_B T_{rot}}{\gamma_r}\frac{d\mathbf{W}}{dt}}, with :math:`d\mathbf{W}` being a random number with zero mean and variance :math:`dt` and :math:`T_{rot}` is *rotation_temp*. @@ -114,19 +115,20 @@ the quaternion .. math:: - \mathbf{q}(t+dt) = \frac{\mathbf{q}(t) + d\mathbf{q}}{|\mathbf{q}(t) + d\mathbf{q}|} + \mathbf{q}(t+dt) = \frac{\mathbf{q}(t) + d\mathbf{q}}{\lVert\mathbf{q}(t) + d\mathbf{q}\rVert} which correctly reproduces a Boltzmann distribution of orientations and rotational -diffusion moments (see :ref:`(Ilie) `) when the quaternion step given by +diffusion moments [see :ref:`(Ilie) `] when the quaternion step is given by .. math:: - d\mathbf{q} = \mathbf{\Psi}\mathbf{\omega}dt + d\mathbf{q} = \boldsymbol{\Psi}\boldsymbol{\omega}dt -where :math:`\mathbf{Psi}` has rows :math:`(-q_1,-q_2,-q_3)`, :math:`(q_0,-q_3,q_2)`, -:math:`(q_3,q_0,-q_1)`, and :math:`(-q_2,q_1,q_0)`. :math:`\mathbf{\omega}` is -evaluated in the body frame of reference where the friction tensor is diagonal. -See :ref:`(Delong) ` for more details of a similar algorithm. +where :math:`\boldsymbol{\Psi}` has rows :math:`(-q_1,-q_2,-q_3)`, +:math:`(q_0,-q_3,q_2)`, :math:`(q_3,q_0,-q_1)`, and :math:`(-q_2,q_1,q_0)`. +:math:`\boldsymbol{\omega}` is evaluated in the body frame of reference where the +friction tensor is diagonal. See :ref:`(Delong) ` for more details of +a similar algorithm. --------- @@ -136,11 +138,11 @@ See :ref:`(Delong) ` for more details of a similar algorithm. This integrator does not by default assume a relationship between the rotational and translational friction tensors, though such a relationship should exist in the case of no-slip boundary conditions - between the particles and the surrounding (implicit) solvent. E.g. in - the case of spherical particles, the condition + between the particles and the surrounding (implicit) solvent. For example, + in the case of spherical particles, the condition :math:`\gamma_t=3\gamma_r/\sigma^2` must be explicitly accounted for by setting *gamma_t* to 3x and *gamma_r* to x (where :math:`\sigma` - is the spherical diameter). A similar (though more complex) + is the sphere's diameter). A similar (though more complex) relationship holds for ellipsoids and rod-like particles. The translational diffusion and rotational diffusion are given by *temp/gamma_t* and *rotation_temp/gamma_r*. @@ -150,7 +152,7 @@ See :ref:`(Delong) ` for more details of a similar algorithm. .. note:: Temperature computation using the :doc:`compute temp ` - will not correctly compute temperature of these overdamped dynamics + will not correctly compute the temperature of these overdamped dynamics since we are explicitly neglecting inertial effects. Furthermore, this time integrator does not add the stochastic terms or viscous terms to the force and/or torques. Rather, they are just added in to @@ -165,7 +167,7 @@ is generated from a uniform distribution (see of noise generation as used in :doc:`fix_langevin `. If the *rng* keyword is used with the *gaussian* value, then the noise -is generated from a gaussian distribution. Typically this added +is generated from a Gaussian distribution. Typically this added complexity is unnecessary, and one should be fine using the *uniform* value for reasons argued in :ref:`(Dunweg) `. @@ -184,8 +186,8 @@ The *gamma_r_eigen*, and *gamma_t_eigen* keywords are the eigenvalues of the rotational and viscous damping tensors (having the same units as their isotropic counterparts). Required for (and only compatible with) *brownian/asphere*. For a 2D system, the first two values of -*gamma_r_eigen* must be inf (only rotation in xy plane), and the third -value of *gamma_t_eigen* must be inf (only diffusion in xy plane). +*gamma_r_eigen* must be *inf* (only rotation in *x*\ --\ *y* plane), and the third +value of *gamma_t_eigen* must be *inf* (only diffusion in the *x*\ --\ *y* plane). If the *dipole* keyword is used, then the dipole moments of the particles are updated as described above. Only compatible with *brownian/asphere* @@ -196,13 +198,13 @@ will be occur at this prescribed temperature instead of *temp*. Only compatible with *brownian/sphere* and *brownian/asphere*. If the *planar_rotation* keyword is used, then rotation is constrained -to the xy plane in a 3D simulation. Only compatible with +to the *x*\ -- *y* plane in a 3D simulation. Only compatible with *brownian/sphere* and *brownian/asphere* in 3D. ---------- .. note:: - For style *brownian/asphere*, the components *gamma_t_eigen* =(x,x,x) and + For style *brownian/asphere*, the components *gamma_t_eigen* = (x,x,x) and *gamma_r_eigen* = (y,y,y), the dynamics will replicate those of the *brownian/sphere* style with *gamma_t* = x and *gamma_r* = y. @@ -215,7 +217,6 @@ No information about this fix is written to :doc:`binary restart files `. No global or per-atom quantities are stored by this fix for access by various :doc:`output commands `. - No parameter of this fix can be used with the *start/stop* keywords of the :doc:`run ` command. This fix is not invoked during :doc:`energy minimization `. diff --git a/doc/src/fix_colvars.rst b/doc/src/fix_colvars.rst index 21b235cb6b..ec7b33ce51 100644 --- a/doc/src/fix_colvars.rst +++ b/doc/src/fix_colvars.rst @@ -13,7 +13,7 @@ Syntax * ID, group-ID are documented in :doc:`fix ` command * colvars = style name of this fix command * configfile = the configuration file for the colvars module -* keyword = *input* or *output* or *seed* or *tstat* +* keyword = *input* or *output* or *seed* or *unwrap* or *tstat* .. parsed-literal:: diff --git a/doc/src/fix_deposit.rst b/doc/src/fix_deposit.rst index ad3c37b24c..cf28509f5e 100644 --- a/doc/src/fix_deposit.rst +++ b/doc/src/fix_deposit.rst @@ -17,7 +17,7 @@ Syntax * M = insert a single atom or molecule every M steps * seed = random # seed (positive integer) * one or more keyword/value pairs may be appended to args -* keyword = *region* or *id* or *global* or *local* or *near* or *gaussian* or *attempt* or *rate* or *vx* or *vy* or *vz* or *mol* or *rigid* or *shake* or *units* +* keyword = *region* or *id* or *global* or *local* or *near* or *gaussian* or *attempt* or *rate* or *vx* or *vy* or *vz* or *target* or *mol* or *molfrac* or *rigid* or *shake* or *orient* or *units* .. parsed-literal:: diff --git a/doc/src/fix_electrode.rst b/doc/src/fix_electrode.rst new file mode 100644 index 0000000000..9da8dcbdf9 --- /dev/null +++ b/doc/src/fix_electrode.rst @@ -0,0 +1,421 @@ +.. index:: fix electrode/conp +.. index:: fix electrode/conq +.. index:: fix electrode/thermo +.. index:: fix electrode/conp/intel +.. index:: fix electrode/conq/intel +.. index:: fix electrode/thermo/intel + +fix electrode/conp command +========================== + +Accelerator Variant: *electrode/conp/intel* + +fix electrode/conq command +========================== + +Accelerator Variant: *electrode/conq/intel* + +fix electrode/thermo command +============================ + +Accelerator Variant: *electrode/thermo/intel* + +Syntax +"""""" + +.. code-block:: LAMMPS + + fix ID group-ID style args keyword value ... + +* ID, group-ID are documented in :doc:`fix ` command +* style = *electrode/conp* or *electrode/conq* or *electrode/thermo* +* args = arguments used by a particular style + + .. parsed-literal:: + + *electrode/conp* args = potential eta + *electrode/conq* args = charge eta + *electrode/thermo* args = potential eta *temp* values + potential = electrode potential + charge = electrode charge + eta = reciprocal width of electrode charge smearing + *temp* values = T_v tau_v rng_v + T_v = temperature of thermo-potentiostat + tau_v = time constant of thermo-potentiostat + rng_v = integer used to initialize random number generator + +* zero or more keyword/value pairs may be appended +* keyword = *algo* or *symm* or *couple* or *etypes* or *ffield* or *write_mat* or *write_inv* or *read_mat* or *read_inv* + +.. parsed-literal:: + + *algo* values = *mat_inv* or *mat_cg* tol or *cg* tol + specify the algorithm used to compute the electrode charges + *symm* value = *on* or *off* + turn on/off charge neutrality constraint for the electrodes + *couple* values = group-ID val + group-ID = group of atoms treated as additional electrode + val = electric potential or charge on this electrode + *etypes* value = *on* or *off* + turn on/off type-based optimized neighbor lists (electrode and electrolyte types may not overlap) + *ffield* value = *on* or *off* + turn on/off finite-field implementation + *write_mat* value = filename + filename = file to which to write elastance matrix + *write_inv* value = filename + filename = file to which to write inverted matrix + *read_mat* value = filename + filename = file from which to read elastance matrix + *read_inv* value = filename + filename = file from which to read inverted matrix + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix fxconp bot electrode/conp -1.0 1.805 couple top 1.0 couple ref 0.0 write_inv inv.csv symm on + fix fxconp electrodes electrode/conq 0.0 1.805 algo cg 1e-5 + fix fxconp bot electrode/thermo -1.0 1.805 temp 298 100 couple top 1.0 + +Description +""""""""""" + +The *electrode* fixes implement the constant potential method (CPM) +(:ref:`Siepmann `, :ref:`Reed `), and modern variants, +to accurately model electrified, conductive electrodes. This is +primarily useful for studying electrode-electrolyte interfaces, +especially at high potential differences or ionicities, with non-planar +electrodes such as nanostructures or nanopores, and to study dynamic +phenomena such as charging or discharging time scales or conductivity or +ionic diffusivities. + +Each *electrode* fix allows users to set additional electrostatic +relationships between the specified groups which model useful +electrostatic configurations: + +* *electrode/conp* sets potentials or potential differences between electrodes + + * (resulting in changing electrode total charges) + +* *electrode/conq* sets the total charge on each electrode + + * (resulting in changing electrode potentials) + +* *electrode/thermo* sets a thermopotentiostat + :ref:`(Deissenbeck)` between two electrodes + + * (resulting in changing charges and potentials with appropriate + average potential difference and thermal variance) + +The first group-ID provided to each fix specifies the first electrode +group, and more group(s) are added using the *couple* keyword for each +additional group. While *electrode/thermo* only accepts two groups, +*electrode/conp* and *electrode/conq* accept any number of groups, up to +LAMMPS's internal restrictions (see Restrictions below). Electrode +groups must not overlap, i.e. the fix will issue an error if any +particle is detected to belong to at least two electrode groups. + +CPM involves updating charges on groups of electrode particles, per time +step, so that the system's total energy is minimized with respect to +those charges. From basic electrostatics, this is equivalent to making +each group conductive, or imposing an equal electrostatic potential on +every particle in the same group (hence the name CPM). The charges are +usually modelled as a Gaussian distribution to make the charge-charge +interaction matrix invertible (:ref:`Gingrich `). The keyword +*eta* specifies the distribution's width in units of inverse length. + +.. versionadded:: TBD + +Three algorithms are available to minimize the energy, varying in how +matrices are pre-calculated before a run to provide computational +speedup. These algorithms can be selected using the keyword *algo*: + +* *algo mat_inv* pre-calculates the capacitance matrix and obtains the + charge configuration in one matrix-vector calculation per time step + +* *algo mat_cg* pre-calculates the elastance matrix (inverse of + capacitance matrix) and obtains the charge configuration using a + conjugate gradient solver in multiple matrix-vector calculations per + time step + +* *algo cg* does not perform any pre-calculation and obtains the charge + configuration using a conjugate gradient solver and multiple + calculations of the electric potential per time step. + +For both *cg* methods, the command must specify the conjugate gradient +tolerance. *fix electrode/thermo* currently only supports the *mat_inv* +algorithm. + +The keyword *symm* can be set *on* (or *off*) to turn on (or turn off) +the capacitance matrix constraint that sets total electrode charge to be +zero. This has slightly different effects for each *fix electrode* +variant. For *fix electrode/conp*, with *symm off*, the potentials +specified are absolute potentials, but the charge configurations +satisfying them may add up to an overall non-zero, varying charge for +the electrodes (and thus the simulation box). With *symm on*, the total +charge over all electrode groups is constrained to zero, and potential +differences rather than absolute potentials are the physically relevant +quantities. + +For *fix electrode/conq*, with *symm off*, overall neutrality is +explicitly obeyed or violated by the user input (which is not +checked!). With *symm on*, overall neutrality is ensured by ignoring the +user-input charge for the last listed electrode (instead, its charge +will always be minus the total sum of all other electrode charges). For +*fix electrode/thermo*, overall neutrality is always automatically +imposed for any setting of *symm*, but *symm on* allows finite-field +mode (*ffield on*, described below) for faster simulations. + +For all three fixes, any potential (or charge for *conq*) can be +specified as an equal-style variable prefixed with "v\_". For example, +the following code will ramp the potential difference between electrodes +from 0.0V to 2.0V over the course of the simulation: + +.. code-block:: LAMMPS + + fix fxconp bot electrode/conp 0.0 1.805 couple top v_v symm on + variable v equal ramp(0.0, 2.0) + +Note that these fixes only parse their supplied variable name when +starting a run, and so these fixes will accept equal-style variables +defined *after* the fix definition, including variables dependent on the +fix's own output. This is useful, for example, in the fix's internal +finite-field commands (see below). For an advanced example of this see +the in.conq2 input file in the directory +``examples/PACKAGES/electrode/graph-il``. + +This fix necessitates the use of a long range solver that calculates and +provides the matrix of electrode-electrode interactions and a vector of +electrode-electrolyte interactions. The Kspace styles +*ewald/electrode*, *pppm/electrode* and *pppm/electrode/intel* are +created specifically for this task :ref:`(Ahrens-Iwers) `. + +For systems with non-periodic boundaries in one or two directions dipole +corrections are available with the :doc:`kspace_modify `. +For ewald/electrode a two-dimensional Ewald summation :ref:`(Hu) ` +can be used by setting "slab ew2d": + +.. code-block:: LAMMPS + + kspace_modify slab + kspace_modify wire + kspace_modify slab ew2d + +Two implementations for the calculation of the elastance matrix are +available with pppm and can be selected using the *amat onestep/twostep* +keyword. *onestep* is the default; *twostep* can be faster for large +electrodes and a moderate mesh size but requires more memory. + +.. code-block:: LAMMPS + + kspace_modify amat onestep/twostep + +For all versions of the fix, the keyword-value *ffield on* enables the +finite-field mode (:ref:`Dufils `, :ref:`Tee `), which uses +an electric field across a periodic cell instead of non-periodic +boundary conditions to impose a potential difference between the two +electrodes bounding the cell. The fix (with name *fix-ID*) detects which +of the two electrodes is "on top" (has the larger maximum *z*-coordinate +among all particles). Assuming the first electrode group is on top, it +then issues the following commands internally: + +.. code-block:: LAMMPS + + variable fix-ID_ffield_zfield equal (f_fix-ID[2]-f_fix-ID[1])/lz + efield fix-ID_efield all efield 0.0 0.0 v_fix-ID_ffield_zfield + +which implements the required electric field as the potential difference +divided by cell length. The internal commands use variable so that the +electric field will correctly vary with changing potentials in the +correct way (for example with equal-style potential difference or with +*fix electrode/conq*). This keyword requires two electrodes and will +issue an error with any other number of electrodes. This keyword +requires electroneutrality to be imposed (*symm on*) and will issue an +error otherwise. + +.. versionchanged:: TBD + +For all versions of the fix, the keyword-value *etypes on* enables +type-based optimized neighbor lists. With this feature enabled, LAMMPS +provides the fix with an occasional neighbor list restricted to +electrode-electrode interactions for calculating the electrode matrix, +and a perpetual neighbor list restricted to electrode-electrolyte +interactions for calculating the electrode potentials, using particle +types to list only desired interactions, and typically resulting in +5--10\% less computational time. Without this feature the fix will +simply use the active pair style's neighbor list. This feature cannot +be enabled if any electrode particle has the same type as any +electrolyte particle (which would be unusual in a typical simulation) +and the fix will issue an error in that case. + +Restart, fix_modify, output, run start/stop, minimize info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +This fix currently does not write any information to restart files. + +The *fix_modify tf* option enables the Thomas-Fermi metallicity model +(:ref:`Scalfi `) and allows parameters to be set for each atom type. + +.. code-block:: LAMMPS + + fix_modify ID tf type length voronoi + + +If this option is used parameters must be set for all atom types of the +electrode. + +The *fix_modify timer* option turns on (off) additional timer outputs in the log +file, for code developers to track optimization. + +.. code-block:: LAMMPS + + fix_modify ID timer on/off + +---------- + +These fixes compute a global (extensive) scalar, a global (intensive) +vector, and a global array, which can be accessed by various +:doc:`output commands `. + +The global scalar outputs the energy added to the system by this fix, +which is the negative of the total charge on each electrode multiplied +by that electrode's potential. + +The global vector outputs the potential on each electrode (and thus has +*N* entries if the fix manages *N* electrode groups), in :doc:`units +` of electric field multiplied by distance (thus volts for *real* +and *metal* units). The electrode groups' ordering follows the order in +which they were input in the fix command using *couple*. The global +vector output is useful for *fix electrode/conq* and *fix +electrode/thermo*, where potential is dynamically updated based on +electrolyte configuration instead of being directly set. + +The global array has *N* rows and *2N+1* columns, where the fix manages +*N* electrode groups managed by the fix. For the *I*-th row of the +array, the elements are: + +* array[I][1] = total charge that group *I* would have had *if it were + at 0 V applied potential* * array[I][2 to *N* + 1] = the *N* entries + of the *I*-th row of the electrode capacitance matrix (definition + follows) * array[I][*N* + 2 to *2N* + 1] = the *N* entries of the + *I*-th row of the electrode elastance matrix (the inverse of the + electrode capacitance matrix) + +The :math:`N \times N` electrode capacitance matrix, denoted :math:`\mathbf{C}` +in the following equation, summarizes how the total charge induced on each +electrode (:math:`\mathbf{Q}` as an *N*-vector) is related to the potential on +each electrode, :math:`\mathbf{V}`, and the charge-at-0V :math:`\mathbf{Q}_{0V}` +(which is influenced by the local electrolyte structure): + +.. math:: + + \mathbf{Q} = \mathbf{Q}_{0V} + \mathbf{C} \cdot \mathbf{V} + +The charge-at-0V, electrode capacitance and elastance matrices are internally +used to calculate the potentials required to induce the specified total +electrode charges in *fix electrode/conq* and *fix electrode/thermo*. With the +*symm on* option, the electrode capacitance matrix would be singular, and thus +its last row is replaced with *N* copies of its top-left entry +(:math:`\mathbf{C}_{11}`) for invertibility. + +The global array output is mainly useful for quickly determining the 'vacuum +capacitance' of the system (capacitance with only electrodes, no electrolyte), +and can also be used for advanced simulations setting the potential as some +function of the charge-at-0V (such as the ``in.conq2`` example mentioned above). + +Please cite :ref:`(Ahrens-Iwers2022) ` in any publication that +uses this implementation. Please cite also the publication on the combination +of the CPM with PPPM if you use *pppm/electrode* :ref:`(Ahrens-Iwers) +`. + +---------- + +Restrictions +"""""""""""" + +For algorithms that use a matrix for the electrode-electrode +interactions, positions of electrode particles have to be immobilized at +all times. + +With *ffield off* (i.e. the default), the box geometry is expected to be +*z*-non-periodic (i.e. *boundary p p f*), and this fix will issue an +error if the box is *z*-periodic. With *ffield on*, the box geometry is +expected to be *z*-periodic, and this fix will issue an error if the box +is *z*-non-periodic. + +The parallelization for the fix works best if electrode atoms are evenly +distributed across processors. For a system with two electrodes at the bottom +and top of the cell this can be achieved with *processors * * 2*, or with the +line + +.. code-block:: LAMMPS + + if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +which avoids an error if the script is run on an odd number of +processors (such as on just one processor for testing). + +The fix creates an additional group named *[fix-ID]_group* which is the +union of all electrode groups supplied to LAMMPS. This additional group +counts towards LAMMPS's limitation on the total number of groups +(currently 32), which may not allow scripts that use that many groups to +run with this fix. + +The matrix-based algorithms (*algo mat_inv* and *algo mat_cg*) currently +store an interaction matrix (either elastance or capacitance) of *N* by +*N* doubles for each MPI process. This memory requirement may be +prohibitive for large electrode groups. The fix will issue a warning if +it expects to use more than 0.5 GiB of memory. + +Default +""""""" + +The default keyword-option settings are *algo mat_inv*, *symm off*, +*etypes off* and *ffield off*. + +---------- + +.. include:: accel_styles.rst + +---------- + +.. _Siepmann: + +**(Siepmann)** Siepmann and Sprik, J. Chem. Phys. 102, 511 (1995). + +.. _Reed3: + +**(Reed)** Reed *et al.*, J. Chem. Phys. 126, 084704 (2007). + +.. _Deissenbeck: + +**(Deissenbeck)** Deissenbeck *et al.*, Phys. Rev. Letters 126, 136803 (2021). + +.. _Gingrich: + +**(Gingrich)** Gingrich, `MSc thesis` ` (2010). + +.. _Ahrens-Iwers: + +**(Ahrens-Iwers)** Ahrens-Iwers and Meissner, J. Chem. Phys. 155, 104104 (2021). + +.. _Hu: + +**(Hu)** Hu, J. Chem. Theory Comput. 10, 5254 (2014). + +.. _Dufils: + +**(Dufils)** Dufils *et al.*, Phys. Rev. Letters 123, 195501 (2019). + +.. _Tee: + +**(Tee)** Tee and Searles, J. Chem. Phys. 156, 184101 (2022). + +.. _Scalfi: + +**(Scalfi)** Scalfi *et al.*, J. Chem. Phys., 153, 174704 (2020). + +.. _Ahrens-Iwers2: + +**(Ahrens-Iwers2022)** Ahrens-Iwers *et al.*, J. Chem. Phys. 157, 084801 (2022). diff --git a/doc/src/fix_electrode_conp.rst b/doc/src/fix_electrode_conp.rst deleted file mode 100644 index e070433c07..0000000000 --- a/doc/src/fix_electrode_conp.rst +++ /dev/null @@ -1,230 +0,0 @@ -.. index:: fix electrode/conp -.. index:: fix electrode/conq -.. index:: fix electrode/thermo -.. index:: fix electrode/conp/intel -.. index:: fix electrode/conq/intel -.. index:: fix electrode/thermo/intel - -fix electrode/conp command -========================== - -Accelerator Variant: *electrode/conp/intel* - -fix electrode/conq command -========================== - -Accelerator Variant: *electrode/conq/intel* - -fix electrode/thermo command -============================ - -Accelerator Variant: *electrode/thermo/intel* - -Syntax -"""""" - -.. parsed-literal:: - - fix ID group-ID style args keyword value ... - -* ID, group-ID are documented in :doc:`fix ` command -* style = *electrode/conp* or *electrode/conq* or *electrode/thermo* -* args = arguments used by a particular style - - .. parsed-literal:: - - *electrode/conp* args = potential eta - *electrode/conq* args = charge eta - *electrode/thermo* args = potential eta *temp* values - potential = electrode potential - charge = electrode charge - eta = reciprocal width of electrode charge smearing - *temp* values = T_v tau_v rng_v - T_v = temperature of thermo-potentiostat - tau_v = time constant of thermo-potentiostat - rng_v = integer used to initialize random number generator - -* zero or more keyword/value pairs may be appended -* keyword = *symm* or *couple* or *etypes* or *ffield* or *write_mat* or *write_inv* or *read_mat* or *read_inv* - -.. parsed-literal:: - - *symm* value = *on* or *off* - turn on/off charge neutrality constraint for the electrodes - *couple* values = group-ID val - group-ID = group of atoms treated as additional electrode - val = electric potential or charge on this electrode - *etypes* values = type - type = atom type (can be a range) exclusive to the electrode for optimized neighbor lists - *ffield* value = *on* or *off* - turn on/off finite-field implementation - *write_mat* value = filename - filename = file to which to write elastance matrix - *write_inv* value = filename - filename = file to which to write inverted matrix - *read_mat* value = filename - filename = file from which to read elastance matrix - *read_inv* value = filename - filename = file from which to read inverted matrix - -Examples -"""""""" - -.. code-block:: LAMMPS - - fix fxconp bot electrode/conp -1.0 1.805 couple top 1.0 couple ref 0.0 write_inv inv.csv symm on - fix fxconp electrodes electrode/conq 0.0 1.805 - fix fxconp bot electrode/thermo -1.0 1.805 temp 298 100 couple top 1.0 - -Description -""""""""""" - -fix electrode/conp mode implements a constant potential method (CPM) -(:ref:`Siepmann `, :ref:`Reed `). Charges of groups specified -via group-ID and optionally with the `couple` keyword are adapted to meet their respective -potential at every time step. An arbitrary number of electrodes can be set but -the respective groups may not overlap. Electrode charges have a Gaussian charge -distribution with reciprocal width eta. The energy minimization is achieved via -matrix inversion :ref:`(Wang) `. - -fix electrode/conq enforces a total charge specified in the input on each electrode. The energy is -minimized w.r.t. the charge distribution within the electrode. - -fix electrode/thermo implements a thermo-potentiostat :ref:`(Deissenbeck) -`. Temperature and time constant of the thermo-potentiostat need -to be specified using the temp keyword. Currently, only two electrodes are possible with -this style. - -This fix necessitates the use of a long range solver that calculates and provides the matrix -of electrode-electrode interactions and a vector of electrode-electrolyte -interactions. The Kspace styles *ewald/electrode*, *pppm/electrode* and -*pppm/electrode/intel* are created specifically for this task -:ref:`(Ahrens-Iwers) `. - -For systems with non-periodic boundaries in one or two directions dipole -corrections are available with the :doc:`kspace_modify `. For -ewald/electrode a two-dimensional Ewald summation :ref:`(Hu) ` can be used -by setting "slab ew2d": - -.. code-block:: LAMMPS - - kspace_modify slab - kspace_modify wire - kspace_modify slab ew2d - -Two implementations for the calculation of the elastance matrix are available -with pppm and can be selected using the *amat onestep/twostep* keyword. -*onestep* is the default; *twostep* can be faster for large electrodes and a -moderate mesh size but requires more memory. - -.. code-block:: LAMMPS - - kspace_modify amat onestep/twostep - - -The *fix_modify tf* option enables the Thomas-Fermi metallicity model -(:ref:`Scalfi `) and allows parameters to be set for each atom type. - -.. code-block:: LAMMPS - - fix_modify ID tf type length voronoi - - -If this option is used parameters must be set for all atom types of the electrode. - -The *fix_modify timer* option turns on (off) additional timer outputs in the log -file, for code developers to track optimization. - -.. code-block:: LAMMPS - - fix_modify ID timer on/off - -The *fix_modify set* options allow calculated quantities to be accessed via -internal variables. Currently four types of quantities can be accessed: - -.. code-block:: LAMMPS - - fix-modify ID set v group-ID variablename - fix-modify ID set qsb group-ID variablename - fix-modify ID set mc group-ID1 group-ID2 variablename - fix-modify ID set me group-ID1 group-ID2 variablename - -One use case is to output the potential that is internally calculated and -applied to each electrode group by *fix electrode/conq* or *fix electrode/thermo*. -For that case the *v* option makes *fix electrode* update the variable -*variablename* with the potential applied to group *group-ID*, where *group-ID* -must be a group whose charges are updated by *fix electrode* and *variablename* -must be an internal-style variable: - -.. code-block:: LAMMPS - - fix conq bot electrode/conq -1.0 1.979 couple top 1.0 - variable vbot internal 0.0 - fix_modify conq set v bot vbot - -The *qsb* option similarly outputs the total updated charge of the group if its -potential were 0.0V. The *mc* option requires two *group-IDs*, and outputs the -entry \{*group-ID1*, *group-ID2*\} of the (symmetric) *macro-capacitance* matrix -(MC) which relates the electrodes' applied potentials (V), total charges (Q), and -total charges at 0.0 V (Qsb): - -.. math:: - - \mathbf{Q} = \mathbf{Q}_{SB} + \mathbf{MC} \cdot \mathbf{V} - -Lastly, the *me* option also requires two *group-IDs* and outputs the entry -\{*group-ID1*, *group-ID2*\} of the *macro-elastance* matrix, which is the -inverse of the macro-capacitance matrix. (As the names denote, the -macro-capacitance matrix gives electrode charges from potentials, and the -macro-elastance matrix gives electrode potentials from charges). - -.. warning:: - - Positions of electrode particles have to be immobilized at all times. - -The parallelization for the fix works best if electrode atoms are evenly -distributed across processors. For a system with two electrodes at the bottom -and top of the cell this can be achieved with *processors * * 2*, or with the -line - -.. code-block:: LAMMPS - - if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" - -which avoids an error if the script is run on an odd number of processors (such -as on just one processor for testing). - ----------- - -.. include:: accel_styles.rst - ----------- - -.. _Siepmann: - -**(Siepmann)** Siepmann and Sprik, J. Chem. Phys. 102, 511 (1995). - -.. _Reed3: - -**(Reed)** Reed *et al.*, J. Chem. Phys. 126, 084704 (2007). - -.. _Wang5: - -**(Wang)** Wang *et al.*, J. Chem. Phys. 141, 184102 (2014). - -.. _Deissenbeck: - -**(Deissenbeck)** Deissenbeck *et al.*, Phys. Rev. Letters 126, 136803 (2021). - -.. _Ahrens-Iwers: - -**(Ahrens-Iwers)** Ahrens-Iwers and Meissner, J. Chem. Phys. 155, 104104 (2021). - -.. _Hu: - -**(Hu)** Hu, J. Chem. Theory Comput. 10, 5254 (2014). - -.. _Scalfi: - -**(Scalfi)** Scalfi *et al.*, J. Chem. Phys., 153, 174704 (2020). - diff --git a/doc/src/fix_imd.rst b/doc/src/fix_imd.rst index 06d8787b1b..cb1831d174 100644 --- a/doc/src/fix_imd.rst +++ b/doc/src/fix_imd.rst @@ -13,7 +13,7 @@ Syntax * ID, group-ID are documented in :doc:`fix ` command * imd = style name of this fix command * port = port number on which the fix listens for an IMD client -* keyword = *unwrap* or *fscale* or *trate* +* keyword = *unwrap* or *fscale* or *trate* or *nowait* .. parsed-literal:: @@ -88,8 +88,8 @@ to send "unwrapped" coordinates to the IMD client that undo the wrapping back of coordinates into the principle unit cell, as done by default in LAMMPS. The *fscale* keyword allows to apply a scaling factor to forces transmitted by the IMD client. The IMD protocols -stipulates that forces are transferred in kcal/mol/angstrom under the -assumption that coordinates are given in angstrom. For LAMMPS runs +stipulates that forces are transferred in kcal/mol/Angstrom under the +assumption that coordinates are given in Angstrom. For LAMMPS runs with different units or as a measure to tweak the forces generated by the manipulation of the IMD client, this option allows to make adjustments. diff --git a/doc/src/fix_ipi.rst b/doc/src/fix_ipi.rst index 6a6ff9aa87..5e13d25971 100644 --- a/doc/src/fix_ipi.rst +++ b/doc/src/fix_ipi.rst @@ -90,6 +90,12 @@ coordinates are transferred. However, one could use this strategy to define an external potential acting on the atoms that are moved by i-PI. +Since the i-PI code uses atomic units internally, this fix needs to +convert LAMMPS data to and from its :doc:`specified units ` +accordingly when communicating with i-PI. This is not possible for +reduced units ("units lj") and thus *fix ipi* will stop with an error in +this case. + This fix is part of the MISC package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. diff --git a/doc/src/fix_langevin.rst b/doc/src/fix_langevin.rst index 50c1489d7c..396df2b926 100644 --- a/doc/src/fix_langevin.rst +++ b/doc/src/fix_langevin.rst @@ -20,7 +20,7 @@ Syntax * damp = damping parameter (time units) * seed = random number seed to use for white noise (positive integer) * zero or more keyword/value pairs may be appended -* keyword = *angmom* or *omega* or *scale* or *tally* or *zero* +* keyword = *angmom* or *gjf* or *omega* or *scale* or *tally* or *zero* .. parsed-literal:: diff --git a/doc/src/fix_lb_fluid.rst b/doc/src/fix_lb_fluid.rst index 0191f14b1c..5f20bb10b1 100644 --- a/doc/src/fix_lb_fluid.rst +++ b/doc/src/fix_lb_fluid.rst @@ -16,7 +16,7 @@ Syntax * viscosity = the fluid viscosity (units of mass/(time\*length)). * density = the fluid density. * zero or more keyword/value pairs may be appended -* keyword = *dx* or *dm* or *noise* or *stencil* or *read_restart* or *write_restart* or *zwall_velocity* or *pressurebcx* or *bodyforce* or *D3Q19* or *dumpxdmf* or *dof* or *scaleGamma* or *a0* or *npits* or *wp* or *sw* +* keyword = *dx* or *dm* or *noise* or *stencil* or *read_restart* or *write_restart* or *zwall_velocity* or *pressurebcx* or *bodyforce* or *D3Q19* or *dumpxdmf* or *linearInit* or *dof* or *scaleGamma* or *a0* or *npits* or *wp* or *sw* .. parsed-literal:: @@ -36,6 +36,7 @@ Syntax N = output the force and torque every N timesteps file = output file name timeI = 1 (use simulation time to index xdmf file), 0 (use output frame number to index xdmf file) + *linearInit* values = none = initialize density and velocity using linear interpolation (default is uniform density, no velocities) *dof* values = dof = specify the number of degrees of freedom for temperature calculation *scaleGamma* values = type gammaFactor type = atom type (1-N) diff --git a/doc/src/fix_modify.rst b/doc/src/fix_modify.rst index e0cf3a34c7..f4c5be6b12 100644 --- a/doc/src/fix_modify.rst +++ b/doc/src/fix_modify.rst @@ -12,7 +12,7 @@ Syntax * fix-ID = ID of the fix to modify * one or more keyword/value pairs may be appended -* keyword = *bodyforces* or *colname* or *dynamic/dof* or *energy* or *press* or *respa* or *temp* or *virial* +* keyword = *bodyforces* or *colname* or *dynamic/dof* or *energy* or *press* or *respa* or *temp* or *virial* .. parsed-literal:: diff --git a/doc/src/fix_nh_uef.rst b/doc/src/fix_nh_uef.rst index 83cf88b11f..cf20d56ce7 100644 --- a/doc/src/fix_nh_uef.rst +++ b/doc/src/fix_nh_uef.rst @@ -44,19 +44,23 @@ Examples Description """"""""""" -This fix can be used to simulate non-equilibrium molecular dynamics -(NEMD) under diagonal flow fields, including uniaxial and bi-axial -flow. Simulations under continuous extensional flow may be carried -out for an indefinite amount of time. It is an implementation of the -boundary conditions from :ref:`(Dobson) `, and also uses numerical +These fixes can be used to simulate non-equilibrium molecular dynamics +(NEMD) under diagonal flow fields, including uniaxial and bi-axial flow. +Simulations under continuous extensional flow may be carried out for an +indefinite amount of time. It is an implementation of the boundary +conditions from :ref:`(Dobson) `, and also uses numerical lattice reduction as was proposed by :ref:`(Hunt) `. The lattice -reduction algorithm is from :ref:`(Semaev) `. The fix is intended for -simulations of homogeneous flows, and integrates the SLLOD equations -of motion, originally proposed by Hoover and Ladd (see :ref:`(Evans and Morriss) `). Additional detail about this implementation can be -found in :ref:`(Nicholson and Rutledge) `. +reduction algorithm is from :ref:`(Semaev) `. The fix is +intended for simulations of homogeneous flows, and integrates the SLLOD +equations of motion, originally proposed by Hoover and Ladd (see +:ref:`(Evans and Morriss) `). Additional detail about this +implementation can be found in :ref:`(Nicholson and Rutledge) +`. Note that NEMD simulations of a continuously strained system can be -performed using the :doc:`fix deform `, :doc:`fix nvt/sllod `, and :doc:`compute temp/deform ` commands. +performed using the :doc:`fix deform `, :doc:`fix nvt/sllod +`, and :doc:`compute temp/deform ` +commands. The applied flow field is set by the *eps* keyword. The values *edot_x* and *edot_y* correspond to the strain rates in the xx and yy @@ -73,11 +77,11 @@ to -(*edot_x* + *edot_y*). The boundary conditions require a simulation box that does not have a consistent alignment relative to the applied flow field. Since LAMMPS utilizes an upper-triangular simulation box, it is not possible to -express the evolving simulation box in the same coordinate system as -the flow field. This fix keeps track of two coordinate systems: the -flow frame, and the upper triangular LAMMPS frame. The coordinate -systems are related to each other through the QR decomposition, as is -illustrated in the image below. +express the evolving simulation box in the same coordinate system as the +flow field. These fixes keep track of two coordinate systems: the flow +frame, and the upper triangular LAMMPS frame. The coordinate systems are +related to each other through the QR decomposition, as is illustrated in +the image below. .. image:: JPG/uef_frames.jpg :align: center @@ -99,12 +103,12 @@ using the dump command will be in the LAMMPS frame unless the ---------- Temperature control is achieved with the default Nose-Hoover style -thermostat documented in :doc:`fix npt `. When this fix is +thermostat documented in :doc:`fix nvt `. When this fix is active, only the peculiar velocity of each atom is stored, defined as -the velocity relative to the streaming velocity. This is in contrast -to :doc:`fix nvt/sllod `, which uses a lab-frame -velocity, and removes the contribution from the streaming velocity in -order to compute the temperature. +the velocity relative to the streaming velocity. This is in contrast to +:doc:`fix nvt/sllod `, which uses a lab-frame velocity, +and removes the contribution from the streaming velocity in order to +compute the temperature. Pressure control is achieved using the default Nose-Hoover barostat documented in :doc:`fix npt `. There are two ways to control the @@ -156,8 +160,8 @@ The following commands will not work: ---------- -These fix computes a temperature and pressure each timestep. To do -this, it creates its own computes of style "temp/uef" and +These fixes compute a temperature and pressure each timestep. To do +this, they create their own computes of style "temp/uef" and "pressure/uef", as if one of these two sets of commands had been issued: @@ -169,18 +173,19 @@ issued: compute fix-ID_temp all temp/uef compute fix-ID_press all pressure/uef fix-ID_temp -See the :doc:`compute temp/uef ` and :doc:`compute pressure/uef ` commands for details. Note -that the IDs of the new computes are the fix-ID + underscore + "temp" -or fix_ID + underscore + "press". +See the :doc:`compute temp/uef ` and :doc:`compute +pressure/uef ` commands for details. Note that +the IDs of the new computes are the fix-ID + underscore + "temp" or +fix_ID + underscore + "press". Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" The fix writes the state of all the thermostat and barostat variables, -as well as the cumulative strain applied, to :doc:`binary restart files `. See the :doc:`read_restart ` command -for info on how to re-specify a fix in an input script that reads a -restart file, so that the operation of the fix continues in an -uninterrupted fashion. +as well as the cumulative strain applied, to :doc:`binary restart files +`. See the :doc:`read_restart ` command for info +on how to re-specify a fix in an input script that reads a restart file, +so that the operation of the fix continues in an uninterrupted fashion. .. note:: @@ -189,43 +194,41 @@ uninterrupted fashion. not contain the cumulative applied strain, will this keyword be necessary. -This fix can be used with the :doc:`fix_modify ` *temp* and -*press* options. The temperature and pressure computes used must be of -type *temp/uef* and *pressure/uef*\ . +These fixes can be used with the :doc:`fix_modify ` *temp* +and *press* options. The temperature and pressure computes used must be +of type *temp/uef* and *pressure/uef*\ . -This fix computes the same global scalar and vector quantities as :doc:`fix npt `. +These fixes compute the same global scalar and vector quantities as +:doc:`fix nvt andnpt `. -The fix is not invoked during :doc:`energy minimization `. +These fixes are not invoked during :doc:`energy minimization `. Restrictions """""""""""" -This fix is part of the UEF package. It is only enabled if LAMMPS -was built with that package. See the :doc:`Build package ` page for more info. +These fixes are part of the UEF package. They are only enabled if LAMMPS +was built with that package. See the :doc:`Build package +` page for more info. Due to requirements of the boundary conditions, when the *strain* keyword is set to zero (or unset), the initial simulation box must be cubic and have style triclinic. If the box is initially of type ortho, use :doc:`change_box ` before invoking the fix. -.. note:: - - When resuming from restart files, you may need to use :doc:`box tilt - large ` since LAMMPS has internal criteria from lattice - reduction that are not the same as the criteria in the numerical - lattice reduction algorithm. - Related commands """""""""""""""" -:doc:`fix nvt `, :doc:`fix nvt/sllod `, :doc:`compute temp/uef `, :doc:`compute pressure/uef `, :doc:`dump cfg/uef ` +:doc:`fix nvt `, :doc:`fix npt `, `fix nvt/sllod +:doc:`, `compute temp/uef `, +:doc::doc:`compute pressure/uef `, `dump cfg/uef +:doc:` Default """"""" -The default keyword values specific to this fix are exy = xyz, strain -= 0 0. The remaining defaults are the same as for :doc:`fix npt ` -except tchain = 1. The reason for this change is given in +The default keyword values specific to these fixes are exy = xyz, strain += 0 0. The remaining defaults are the same as for :doc:`fix nvt or npt +` except tchain = 1. The reason for this change is given in :doc:`fix nvt/sllod `. ---------- diff --git a/doc/src/fix_npt_cauchy.rst b/doc/src/fix_npt_cauchy.rst index 6ff3dffba3..6bff29f9dd 100644 --- a/doc/src/fix_npt_cauchy.rst +++ b/doc/src/fix_npt_cauchy.rst @@ -13,7 +13,7 @@ Syntax * ID, group-ID are documented in :doc:`fix ` command * style_name = *npt/cauchy* * one or more keyword/value pairs may be appended -* keyword = *temp* or *iso* or *aniso* or *tri* or *x* or *y* or *z* or *xy* or *yz* or *xz* or *couple* or *tchain* or *pchain* or *mtk* or *tloop* or *ploop* or *nreset* or *drag* or *dilate* or *scalexy* or *scaleyz* or *scalexz* or *flip* or *fixedpoint* +* keyword = *temp* or *iso* or *aniso* or *tri* or *x* or *y* or *z* or *xy* or *yz* or *xz* or *couple* or *tchain* or *pchain* or *mtk* or *tloop* or *ploop* or *nreset* or *drag* or *dilate* or *scalexy* or *scaleyz* or *scalexz* or *flip* or *alpha* or *continue* or *fixedpoint* .. parsed-literal:: diff --git a/doc/src/fix_nve_bpm_sphere.rst b/doc/src/fix_nve_bpm_sphere.rst index 861586ab2a..ef170605a4 100644 --- a/doc/src/fix_nve_bpm_sphere.rst +++ b/doc/src/fix_nve_bpm_sphere.rst @@ -30,6 +30,8 @@ Examples Description """"""""""" +.. versionadded:: 4May2022 + Perform constant NVE integration to update position, velocity, angular velocity, and quaternion orientation for finite-size spherical particles in the group each timestep. V is volume; E is energy. This @@ -65,6 +67,10 @@ the :doc:`run ` command. This fix is not invoked during Restrictions """""""""""" +This fix is part of the BPM package. It is only enabled if LAMMPS was +built with that package. See the :doc:`Build package ` +page for more info. + This fix requires that atoms store torque, angular velocity (omega), a radius, and a quaternion as defined by the :doc:`atom_style bpm/sphere ` command. diff --git a/doc/src/fix_pimd.rst b/doc/src/fix_pimd.rst index 9735284280..838b9812ad 100644 --- a/doc/src/fix_pimd.rst +++ b/doc/src/fix_pimd.rst @@ -156,6 +156,8 @@ This fix is part of the REPLICA package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. +Fix pid cannot be used with :doc:`lj units `. + A PIMD simulation can be initialized with a single data file read via the :doc:`read_data ` command. However, this means all quasi-beads in a ring polymer will have identical positions and diff --git a/doc/src/fix_polarize.rst b/doc/src/fix_polarize.rst index 6ed3b36c55..6a997aa7ea 100644 --- a/doc/src/fix_polarize.rst +++ b/doc/src/fix_polarize.rst @@ -16,11 +16,11 @@ Syntax .. parsed-literal:: - fix ID group-ID style nevery tolerance ... + fix ID group-ID style nevery tolerance * ID, group-ID are documented in :doc:`fix ` command * style = *polarize/bem/gmres* or *polarize/bem/icc* or *polarize/functional* -* Nevery = this fixed is invoked every this many timesteps +* nevery = this fixed is invoked every this many timesteps * tolerance = the relative tolerance for the iterative solver to stop @@ -46,44 +46,53 @@ Description These fixes compute induced charges at the interface between two impermeable media with different dielectric constants. The interfaces -need to be discretized into vertices, each representing a boundary element. -The vertices are treated as if they were regular atoms or particles. -:doc:`atom_style dielectric ` should be used since it defines -the additional properties of each interface particle such as -interface normal vectors, element areas, and local dielectric mismatch. -These fixes also require the use of :doc:`pair_style ` and -:doc:`kspace_style ` with the *dielectric* suffix. -At every time step, given a configuration of the physical charges in the system -(such as atoms and charged particles) these fixes compute and update -the charge of the interface particles. The interfaces are allowed to move -during the simulation with appropriate time integrators (for example, -with :doc:`fix_rigid `). +need to be discretized into vertices, each representing a boundary +element. The vertices are treated as if they were regular atoms or +particles. :doc:`atom_style dielectric ` should be used +since it defines the additional properties of each interface particle +such as interface normal vectors, element areas, and local dielectric +mismatch. These fixes also require the use of :doc:`pair_style +` and :doc:`kspace_style ` with the +*dielectric* suffix. At every time step, given a configuration of the +physical charges in the system (such as atoms and charged particles) +these fixes compute and update the charge of the interface +particles. The interfaces are allowed to move during the simulation if +the appropriate time integrators are also set (for example, with +:doc:`fix_rigid `). -Consider an interface between two media: one with dielectric constant -of 78 (water), the other of 4 (silica). The interface is discretized -into 2000 boundary elements, each represented by an interface particle. Suppose that -each interface particle has a normal unit vector pointing from the silica medium to water. -The dielectric difference along the normal vector is then 78 - 4 = 74, -the mean dielectric value is (78 + 4) / 2 = 41. Each boundary element -also has its area and the local mean curvature (which is used by these fixes -for computing a correction term in the local electric field). -To model charged interfaces, the interface particle will have a non-zero charge value, +Consider an interface between two media: one with dielectric constant of +78 (water), the other of 4 (silica). The interface is discretized into +2000 boundary elements, each represented by an interface +particle. Suppose that each interface particle has a normal unit vector +pointing from the silica medium to water. The dielectric difference +along the normal vector is then 78 - 4 = 74, the mean dielectric value +is (78 + 4) / 2 = 41. Each boundary element also has its area and the +local mean curvature, which is used by these fixes for computing a +correction term in the local electric field. To model charged +interfaces, the interface particle will have a non-zero charge value, coming from its area and surface charge density. -For non-interface particles such as atoms and charged particles, -the interface normal vectors, element area, and dielectric mismatch are -irrelevant. Their local dielectric value is used to rescale their actual charge -when computing the Coulombic interactions. For instance, for a cation carrying -a charge of +2 (in charge unit) in an implicit solvent with dielectric constant of 40 -would have actual charge of +2, and a local dielectric constant value of 40. -It is assumed that the particles cannot pass through the interface during the simulation -so that its local dielectric constant value does not change. +For non-interface particles such as atoms and charged particles, the +interface normal vectors, element area, and dielectric mismatch are +irrelevant and unused. Their local dielectric value is used internally +to rescale their given charge when computing the Coulombic +interactions. For instance, to simulate a cation carrying a charge of +2 +(in simulation charge units) in an implicit solvent with a dielectric +constant of 40, the cation's charge should be set to +2 and its local +dielectric constant property (defined in the :doc:`atom_style dielectric +`) should be set to 40; there is no need to manually rescale +charge. This will produce the proper force for any :doc:`pair_style +` with the dielectric suffix. It is assumed that the +particles cannot pass through the interface during the simulation +because the value of the local dielectric constant property does not +change. -There are some example scripts for using these fixes -with LAMMPS in the ``examples/PACKAGES/dielectric`` directory. The README file -therein contains specific details on the system setup. Note that the example data files -show the additional fields (columns) needed for :doc:`atom_style dielectric ` -beyond the conventional fields *id*, *mol*, *type*, *q*, *x*, *y*, and *z*. +There are some example scripts for using these fixes with LAMMPS in the +``examples/PACKAGES/dielectric`` directory. The README file therein +contains specific details on the system setup. Note that the example +data files show the additional fields (columns) needed for +:doc:`atom_style dielectric ` beyond the conventional fields +*id*, *mol*, *type*, *q*, *x*, *y*, and *z*. ---------- @@ -104,22 +113,24 @@ the interface, are computed using the equation: * :math:`\mathbf{E}(\mathbf{s})` is the electrical field at the vertex * :math:`\mathbf{n}(\mathbf{s})` is the unit normal vector at the vertex pointing from medium with :math:`\epsilon_2` to that with :math:`\epsilon_1` -Fix *polarize/bem/gmres* employs the Generalized Minimum Residual (GMRES) -as described in :ref:`(Barros) ` to solve :math:`\sigma_b`. +Fix *polarize/bem/gmres* employs the Generalized Minimum Residual +(GMRES) as described in :ref:`(Barros) ` to solve +:math:`\sigma_b`. Fix *polarize/bem/icc* employs the successive over-relaxation algorithm as described in :ref:`(Tyagi) ` to solve :math:`\sigma_b`. -The iterative solvers would terminate either when the maximum relative change -in the induced charges in consecutive iterations is below the set tolerance, -or when the number of iterations reaches *iter_max* (see below). +The iterative solvers would terminate either when the maximum relative +change in the induced charges in consecutive iterations is below the set +tolerance, or when the number of iterations reaches *iter_max* (see +below). -Fix *polarize/functional* employs the energy functional variation approach -as described in :ref:`(Jadhao) ` to solve :math:`\sigma_b`. +Fix *polarize/functional* employs the energy functional variation +approach as described in :ref:`(Jadhao) ` to solve +:math:`\sigma_b`. - -More details on the implementation of these fixes and their recommended use -are described in :ref:`(NguyenTD) `. +More details on the implementation of these fixes and their recommended +use are described in :ref:`(NguyenTD) `. Restart, fix_modify, output, run start/stop, minimize info @@ -127,35 +138,78 @@ Restart, fix_modify, output, run start/stop, minimize info No information about this fix is written to :doc:`binary restart files `. -The :doc:`fix_modify ` command provides certain options to -control the induced charge solver and the initial values of the interface elements: +The :doc:`fix_modify ` command provides the ability to modify certain +settings: .. parsed-literal:: *itr_max* arg arg = maximum number of iterations for convergence *dielectrics* ediff emean epsilon area charge - ediff = dielectric difference - emean = dielectric mean - epsilon = local dielectric value - aree = element area - charge = real interface charge + ediff = dielectric difference or NULL + emean = dielectric mean or NULL + epsilon = local dielectric value or NULL + area = element area or NULL + charge = real interface charge or NULL + *kspace* arg = yes or no + *rand* max seed + max = range of random induced charges to be generated + seed = random number seed to use when generating random charge + *mr* arg + arg = maximum number of q-vectors to use when solving (GMRES only) + *omega* arg + arg = relaxation parameter to use when iterating (ICC only) -*polarize/bem/gmres* or *polarize/bem/icc* compute a global 2-element vector -which can be accessed by various :doc:`output commands `. -The first element is the number of iterations when the solver terminates -(of which the upper bound is set by *iter_max*). The second element is the RMS error. +The *itr_max* keyword sets the max number of iterations to be used for +solving each step. + +The *dielectrics* keyword allows properties of the atoms in group +*group-ID* to be modified. Values passed to any of the arguments +(*ediff*, *emean*, *epsilon*, *area*, *charge*) will override existing +values for all atoms in the group *group-ID*. Passing NULL to any of +these arguments will preserve the existing value. Note that setting the +properties of the interface this way will change the properties of all +atoms associated with the fix (all atoms in *group-ID*), so multiple fix +and fix_modify commands would be needed to change the properties of two +different interfaces to different values (one fix and fix_modify for +each interface group). + +The *kspace* keyword turns on long range interactions. + +If the arguments of the *rand* keyword are set, then the atoms subject +to this fix will be assigned a random initial charge in a uniform +distribution from -*max*/2 to *max*/2, using random number seed *seed*. + +The *mr* keyword only applies to *style* = *polarize/bem/gmres*. It is +the maximum number of q-vectors to use when solving for the surface +charge. + +The *omega* keyword only applies when using *style* = +*polarize/bem/icc*. It is a relaxation parameter defined in +:ref:`(Tyagi) ` that should generally be set between 0 and 2. + +Note that the local dielectric constant (epsilon) can also be set +independently using the :doc:`set ` command. + +---------- + +*polarize/bem/gmres* or *polarize/bem/icc* compute a global 2-element +vector which can be accessed by various :doc:`output commands +`. The first element is the number of iterations when the +solver terminates (of which the upper bound is set by *iter_max*). The +second element is the RMS error. Restrictions """""""""""" -These fixes are part of the DIELECTRIC package. It is only enabled +These fixes are part of the DIELECTRIC package. They are only enabled if LAMMPS was built with that package, which requires that also the KSPACE package is installed. See the :doc:`Build package ` page for more info. -Note that the *polarize/bem/gmres* and *polarize/bem/icc* fixes only support -:doc:`units ` *lj*, *real*, *metal*, *si* and *nano* at the moment. +Note that the *polarize/bem/gmres* and *polarize/bem/icc* fixes only +support :doc:`units ` *lj*, *real*, *metal*, *si* and *nano* at +the moment. Related commands @@ -171,6 +225,15 @@ Default *iter_max* = 20 +*kspace* = yes + +*omega* = 0.7 (ICC only) + +*mr* = \# atoms in group *group-ID* minus 1 (GMRES only) + +No random charge initialization happens by default. + + ---------- .. _Barros: diff --git a/doc/src/fix_pour.rst b/doc/src/fix_pour.rst index 742648ac76..6ef18ea800 100644 --- a/doc/src/fix_pour.rst +++ b/doc/src/fix_pour.rst @@ -16,7 +16,7 @@ Syntax * type = atom type to assign to inserted particles (offset for molecule insertion) * seed = random # seed (positive integer) * one or more keyword/value pairs may be appended to args -* keyword = *region* or *diam* or *vol* or *rate* or *dens* or *vel* or *mol* or *rigid* or *shake* or *ignore* +* keyword = *region* or *diam* or *id* or *vol* or *rate* or *dens* or *vel* or *mol* or *molfrac* or *rigid* or *shake* or *ignore* .. parsed-literal:: diff --git a/doc/src/fix_qeq_reaxff.rst b/doc/src/fix_qeq_reaxff.rst index 906847f90a..db9015f187 100644 --- a/doc/src/fix_qeq_reaxff.rst +++ b/doc/src/fix_qeq_reaxff.rst @@ -124,7 +124,7 @@ LAMMPS was built with that package. See the :doc:`Build package This fix does not correctly handle interactions involving multiple periodic images of the same atom. Hence, it should not be used for -periodic cell dimensions less than 10 angstroms. +periodic cell dimensions less than 10 Angstroms. This fix may be used in combination with :doc:`fix efield ` and will apply the external electric field during charge equilibration, diff --git a/doc/src/fix_rigid.rst b/doc/src/fix_rigid.rst index 445b86466c..9a3b6e4da3 100644 --- a/doc/src/fix_rigid.rst +++ b/doc/src/fix_rigid.rst @@ -80,7 +80,7 @@ Syntax groupID1, groupID2, ... = list of N group IDs * zero or more keyword/value pairs may be appended -* keyword = *langevin* or *reinit* or *temp* or *iso* or *aniso* or *x* or *y* or *z* or *couple* or *tparam* or *pchain* or *dilate* or *force* or *torque* or *infile* +* keyword = *langevin* or *reinit* or *temp* or *iso* or *aniso* or *x* or *y* or *z* or *couple* or *tparam* or *pchain* or *dilate* or *force* or *torque* or *infile* or *gravity* .. parsed-literal:: @@ -115,6 +115,11 @@ Syntax xflag,yflag,zflag = off/on if component of center-of-mass torque is active *infile* filename filename = file with per-body values of mass, center-of-mass, moments of inertia + *gravity* values = gravity-ID + gravity-ID = ID of fix gravity command to add gravitational forces + +.. + FIXME These don't seem to be included in the source code *mol* value = template-ID template-ID = ID of molecule template specified in a separate :doc:`molecule ` command diff --git a/doc/src/fix_viscosity.rst b/doc/src/fix_viscosity.rst index 204e435d6e..c99196e09b 100644 --- a/doc/src/fix_viscosity.rst +++ b/doc/src/fix_viscosity.rst @@ -17,7 +17,7 @@ Syntax * pdim = *x* or *y* or *z* = direction of momentum transfer * Nbin = # of layers in pdim direction (must be even number) * zero or more keyword/value pairs may be appended -* keyword = *swap* or *target* +* keyword = *swap* or *vtarget* .. parsed-literal:: diff --git a/doc/src/fix_wall.rst b/doc/src/fix_wall.rst index 3028588505..014c89cfd5 100644 --- a/doc/src/fix_wall.rst +++ b/doc/src/fix_wall.rst @@ -70,7 +70,7 @@ Syntax cutoff = distance from wall at which wall-particle interaction is cut off (distance units) * zero or more keyword/value pairs may be appended -* keyword = *units* or *fld* +* keyword = *units* or *fld* or *pbc* .. parsed-literal:: diff --git a/doc/src/fix_wall_piston.rst b/doc/src/fix_wall_piston.rst index af3dece2f5..1237d1ac7c 100644 --- a/doc/src/fix_wall_piston.rst +++ b/doc/src/fix_wall_piston.rst @@ -14,7 +14,7 @@ Syntax * wall/piston = style name of this fix command * face = *zlo* * zero or more keyword/value pairs may be appended -* keyword = *pos* or *vel* or *ramp* or *units* +* keyword = *pos* or *vel* or *ramp* or *temp* or *units* .. parsed-literal:: @@ -32,6 +32,10 @@ Syntax *lattice* = the wall position is defined in lattice units *box* = the wall position is defined in simulation box units +.. + FIXME: There are several "undocumented" key words for this fix: *rough*, + *rampNL1*, *rampNL2*, *rampNL3*, *rampNL4*, and *rampNL5*. + Examples """""""" diff --git a/doc/src/kspace_modify.rst b/doc/src/kspace_modify.rst index b1d6efa86c..3c6fccc285 100644 --- a/doc/src/kspace_modify.rst +++ b/doc/src/kspace_modify.rst @@ -11,7 +11,7 @@ Syntax kspace_modify keyword value ... * one or more keyword/value pairs may be listed -* keyword = *collective* or *compute* or *cutoff/adjust* or *diff* or *disp/auto* or *fftbench* or *force/disp/kspace* or *force/disp/real* or *force* or *gewald/disp* or *gewald* or *kmax/ewald* or *mesh* or *minorder* or *mix/disp* or *order/disp* or *order* or *overlap* or *scafacos* or *slab* or *splittol* +* keyword = *collective* or *compute* or *cutoff/adjust* or *diff* or *disp/auto* or *fftbench* or *force/disp/kspace* or *force/disp/real* or *force* or *gewald/disp* or *gewald* or *kmax/ewald* or *mesh* or *minorder* or *mix/disp* or *order/disp* or *order* or *overlap* or *scafacos* or *slab* or *splittol* or *wire* .. parsed-literal:: diff --git a/doc/src/kspace_style.rst b/doc/src/kspace_style.rst index 0852a728a4..38a6fce375 100644 --- a/doc/src/kspace_style.rst +++ b/doc/src/kspace_style.rst @@ -283,7 +283,7 @@ parameters and how to choose them is described in ---------- The *electrode* styles add methods that are required for the constant potential -method implemented in :doc:`fix electrode/* `. The styles +method implemented in :doc:`fix electrode/* `. The styles *ewald/electrode*, *pppm/electrode* and *pppm/electrode/intel* are available. These styles do not support the `kspace_modify slab nozforce` command. @@ -301,7 +301,7 @@ and for mixed periodic and non-periodic boundaries. MSM is most competitive versus Ewald and PPPM when only relatively low accuracy forces, about 1e-4 relative error or less accurate, are needed. Note that use of a larger Coulombic cutoff (i.e. 15 -angstroms instead of 10 angstroms) provides better MSM accuracy for +Angstroms instead of 10 Angstroms) provides better MSM accuracy for both the real space and grid computed forces. Currently calculation of the full pressure tensor in MSM is expensive. diff --git a/doc/src/mdi.rst b/doc/src/mdi.rst index d2b8ff185d..2f7fc65852 100644 --- a/doc/src/mdi.rst +++ b/doc/src/mdi.rst @@ -6,7 +6,7 @@ mdi command Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS mdi option args @@ -19,7 +19,7 @@ Syntax *elements* args = N_1 N_2 ... N_ntypes N_1,N_2,...N_ntypes = atomic number for each of ntypes LAMMPS atom types *plugin* args = name keyword value keyword value ... - name = name of plugin library, e.g. lammps means a liblammps.so library will be loaded + name = name of plugin library (e.g., *lammps* means a liblammps.so library will be loaded) keyword/value pairs in any order, some are required, some are optional keywords = *mdi* or *infile* or *extra* or *command* *mdi* value = args passed to MDI for driver to operate with plugins (required) @@ -173,8 +173,8 @@ commands, which are described further below. atom type values are consistent in both codes, then the >TYPES command can be used. If not, the optional *elements* keyword can be used to specify what element each LAMMPS atom type corresponds - to. This is specified by the atomic number of the element, e.g. 13 - for Al. An atomic number must be specified for each of the ntypes + to. This is specified by the atomic number of the element (e.g., 13 + for Al). An atomic number must be specified for each of the ntypes LAMMPS atom types. Ntypes is typically specified via the create_box command or in the data file read by the read_data command. In this has been done, the MDI driver can send an @@ -325,15 +325,15 @@ able to initiate and terminate the connection to the engine code. The only current MDI driver command in LAMMPS is the :doc:`fix mdi/qm ` command. If it is only used once in an input script -then it can initiate and terminate the connection. But if it is being -issued multiple times, e.g. in a loop that issues a :doc:`clear -` command, then it cannot initiate or terminate the connection +then it can initiate and terminate the connection, but if it is being +issued multiple times (e.g., in a loop that issues a :doc:`clear +` command), then it cannot initiate or terminate the connection multiple times. Instead, the *mdi connect* and *mdi exit* commands should be used outside the loop to initiate or terminate the connection. See the examples/mdi/in.series.driver script for an example of how this is done. The LOOP in that script is reading a series of data -file configurations and passing them to an MDI engine (e.g. quantum +file configurations and passing them to an MDI engine (e.g., quantum code) for energy and force evaluation. A *clear* command inside the loop wipes out the current system so a new one can be defined. This operation also destroys all fixes. So the :doc:`fix mdi/qm @@ -356,7 +356,7 @@ LAMMPS and MDI units, which the other codes will also perform in their preferred units. LAMMPS can also be used as an MDI engine in other unit choices it -supports, e.g. *lj*, but then no unit conversion is performed. +supports (e.g., *lj*), but then no unit conversion is performed. Related commands """""""""""""""" diff --git a/doc/src/neigh_modify.rst b/doc/src/neigh_modify.rst index d99a3187aa..8e5c517b94 100644 --- a/doc/src/neigh_modify.rst +++ b/doc/src/neigh_modify.rst @@ -16,12 +16,12 @@ Syntax keyword = *delay* or *every* or *check* or *once* or *cluster* or *include* or *exclude* or *page* or *one* or *binsize* or *collection/type* or *collection/interval* *delay* value = N - N = delay building until this many steps since last build + N = delay building neighbor lists until this many steps since last build *every* value = M - M = build neighbor list every this many steps + M = consider building neighbor lists every this many steps *check* value = *yes* or *no* - *yes* = only build if some atom has moved half the skin distance or more - *no* = always build on 1st step that *every* and *delay* are satisfied + *yes* = only build if at least one atom has moved half the skin distance or more + *no* = always build on 1st step where *every* and *delay* are conditions are satisfied *once* value = *yes* or *no* *yes* = only build neighbor list once at start of run and never rebuild *no* = rebuild neighbor list according to other settings @@ -71,30 +71,53 @@ Description """"""""""" This command sets parameters that affect the building and use of -pairwise neighbor lists. Depending on what pair interactions and -other commands are defined, a simulation may require one or more -neighbor lists. +pairwise neighbor lists. Depending on what pair interactions and other +commands are defined, a simulation may require one or more neighbor +lists. -The *every*, *delay*, *check*, and *once* options affect how often -lists are built as a simulation runs. The *delay* setting means never -build new lists until at least N steps after the previous build. The -*every* setting means build lists every M steps (after the delay has +The *every*, *delay*, *check*, and *once* options affect how often lists +are built as a simulation runs. The *delay* setting means never build +new lists until at least N steps after the previous build. The *every* +setting means attempt to build lists every M steps (after the delay has passed). If the *check* setting is *no*, the lists are built on the first step that satisfies the *delay* and *every* settings. If the *check* setting is *yes*, then the *every* and *delay* settings determine when a build may possibly be performed, but an actual build -only occurs if some atom has moved more than half the skin distance -(specified in the :doc:`neighbor ` command) since the last -build. +only occurs if at least one atom has moved more than half the neighbor +skin distance (specified in the :doc:`neighbor ` command) +since the last neighbor list build. -If the *once* setting is yes, then the neighbor list is only built -once at the beginning of each run, and never rebuilt, except on steps -when a restart file is written, or steps when a fix forces a rebuild -to occur (e.g. fixes that create or delete atoms, such as :doc:`fix deposit ` or :doc:`fix evaporate `). -This setting should only be made if you are certain atoms will not -move far enough that the neighbor list should be rebuilt, e.g. running -a simulation of a cold crystal. Note that it is not that expensive to -check if neighbor lists should be rebuilt. +.. admonition:: Impact of neighbor list settings + :class: note + + The choice of neighbor list settings can have a significant impact on + the (parallel) performance of LAMMPS and the correctness of the + simulation results. Since building the neighbor lists is time + consuming, doing it less frequently can speed up a calculation. If + the lists are rebuilt too infrequently, however, interacting pairs + may be missing and thus the resulting pairwise interactions + incorrect. The optimal settings depend on many factors like the + properties of the simulated system (density, geometry, topology, + temperature, pressure), the force field parameters and settings, the + size of the timestep, neighbor list skin distance and more. The + default settings are chosen to be very conservative to guarantee + correctness of the simulation. They depend on the *check* flag + heuristics to reduce the number of neighbor list rebuilds at a minor + expense for executing the check. Determining the correctness of a + specific choice of neighbor list settings is complicated by the fact + that a neighbor list rebuild changes the order in which pairwise + interactions are computed and thus + - due to the limitations of floating-point math - the trajectory. + +If the *once* setting is yes, then the neighbor list is only built once +at the beginning of each run, and never rebuilt, except on steps when a +restart file is written, or steps when a fix forces a rebuild to occur +(e.g. fixes that create or delete atoms, such as :doc:`fix deposit +` or :doc:`fix evaporate `). This setting +should only be made if you are certain atoms will not move far enough +that the neighbor list should be rebuilt, e.g. running a simulation of a +cold crystal. Note that it is not that expensive to check if neighbor +lists should be rebuilt. When the rRESPA integrator is used (see the :doc:`run_style ` command), the *every* and *delay* parameters refer to the longest @@ -234,11 +257,11 @@ depend on their atom type. Restrictions """""""""""" -If the "delay" setting is non-zero, then it must be a multiple of the -"every" setting. +If the *delay* setting is non-zero, then it must be a multiple of the +*every* setting. -The molecule/intra and molecule/inter exclude options can only be used -with atom styles that define molecule IDs. +The *molecule/intra* and *molecule/inter* exclusion options can only +be used with atom styles that define molecule IDs. The value of the *page* setting must be at least 10x larger than the *one* setting. This insures neighbor pages are not mostly empty @@ -252,6 +275,6 @@ Related commands Default """"""" -The option defaults are delay = 10, every = 1, check = yes, once = no, +The option defaults are delay = 0, every = 1, check = yes, once = no, cluster = no, include = all (same as no include option defined), exclude = none, page = 100000, one = 2000, and binsize = 0.0. diff --git a/doc/src/pair_airebo.rst b/doc/src/pair_airebo.rst index b250064476..9a1e4e5518 100644 --- a/doc/src/pair_airebo.rst +++ b/doc/src/pair_airebo.rst @@ -102,7 +102,7 @@ a few fitted spline values are slightly different. For most cases the statistical averages as the original REBO potential from which it was derived. The :math:`E^{\text{REBO}}` term in the AIREBO potential gives the model its reactive capabilities and only describes short-ranged C-C, C-H and H-H -interactions (:math:`r < 2` Angstroms). These interactions have strong +interactions (:math:`r < 2 \AA`). These interactions have strong coordination-dependence through a bond order parameter, which adjusts the attraction between the I,J atoms based on the position of other nearby atoms and thus has 3- and 4-body dependence. @@ -116,9 +116,9 @@ interactions is determined by the *cutoff* argument to the pair_style command which is a scale factor. For each type pair (C-C, C-H, H-H) the cutoff is obtained by multiplying the scale factor by the sigma value defined in the potential file for that type pair. In the -standard AIREBO potential, :math:`\sigma_{CC} = 3.4` Angstroms, so with a scale +standard AIREBO potential, :math:`\sigma_{CC} = 3.4 \AA`, so with a scale factor of 3.0 (the argument in pair_style), the resulting :math:`E^{\text{LJ}}` cutoff -would be 10.2 Angstroms. +would be :math:`10.2 \AA`. By default, the longer-ranged interaction is smoothly switched off between 2.16 and 3.0 :math:`\sigma`. By specifying *cutoff_min* in addition diff --git a/doc/src/pair_amoeba.rst b/doc/src/pair_amoeba.rst index 44a14f0f45..f5c0ea14df 100644 --- a/doc/src/pair_amoeba.rst +++ b/doc/src/pair_amoeba.rst @@ -156,7 +156,7 @@ settings. ---------- -.. versionadded:: TBD +.. versionadded:: 3Nov2022 The *amoeba* and *hippo* pair styles support extraction of two per-atom quantities by the :doc:`fix pair ` command. This allows the diff --git a/doc/src/pair_bpm_spring.rst b/doc/src/pair_bpm_spring.rst index 72e0083bd8..7dfa9bc12c 100644 --- a/doc/src/pair_bpm_spring.rst +++ b/doc/src/pair_bpm_spring.rst @@ -22,6 +22,8 @@ Examples Description """"""""""" +.. versionadded:: 4May2022 + Style *bpm/spring* computes pairwise forces with the formula .. math:: @@ -101,7 +103,11 @@ This pair style can only be used via the *pair* keyword of the Restrictions """""""""""" - none + +This pair style is part of the BPM package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package +` page for more info. + Related commands """""""""""""""" diff --git a/doc/src/pair_charmm.rst b/doc/src/pair_charmm.rst index 768ede1320..8ff6508dea 100644 --- a/doc/src/pair_charmm.rst +++ b/doc/src/pair_charmm.rst @@ -144,7 +144,7 @@ artifacts. conversion factor used internally in the code, from the LAMMPS value to the CHARMM value, as if it were effectively a parameter of the force field. This is because the CHARMM code uses a slightly - different value for the this conversion factor in :doc:`real units ` (Kcal/mole), namely CHARMM = 332.0716, LAMMPS = + different value for the this conversion factor in :doc:`real units ` (kcal/mol), namely CHARMM = 332.0716, LAMMPS = 332.06371. This is to enable more precise agreement by LAMMPS with the CHARMM force field energies and forces, when using one of these two CHARMM pair styles. diff --git a/doc/src/pair_coul.rst b/doc/src/pair_coul.rst index 4e0793467b..f22bc974b0 100644 --- a/doc/src/pair_coul.rst +++ b/doc/src/pair_coul.rst @@ -174,11 +174,11 @@ shifted force model described in :ref:`Fennell `, given by: E = q_iq_j \left[ \frac{\mbox{erfc} (\alpha r)}{r} - \frac{\mbox{erfc} (\alpha r_c)}{r_c} + \left( \frac{\mbox{erfc} (\alpha r_c)}{r_c^2} + \frac{2\alpha}{\sqrt{\pi}}\frac{\exp (-\alpha^2 r^2_c)}{r_c} \right)(r-r_c) \right] \qquad r < r_c -where :math:`\alpha` is the damping parameter and erfc() is the -complementary error-function. The potential corrects issues in the -Wolf model (described below) to provide consistent forces and energies -(the Wolf potential is not differentiable at the cutoff) and smooth -decay to zero. +where :math:`\alpha` is the damping parameter and *erfc()* is the +complementary error-function. The potential corrects issues in the Wolf +model (described below) to provide consistent forces and energies (the +Wolf potential is not differentiable at the cutoff) and smooth decay to +zero. ---------- @@ -192,30 +192,32 @@ summation method, described in :ref:`Wolf `, given by: \frac{1}{2} \sum_{j \neq i} \frac{q_i q_j {\rm erf}(\alpha r_{ij})}{r_{ij}} \qquad r < r_c -where :math:`\alpha` is the damping parameter, and erc() and erfc() are -error-function and complementary error-function terms. This potential -is essentially a short-range, spherically-truncated, +where :math:`\alpha` is the damping parameter, and *erf()* and *erfc()* +are error-function and complementary error-function terms. This +potential is essentially a short-range, spherically-truncated, charge-neutralized, shifted, pairwise *1/r* summation. With a manipulation of adding and subtracting a self term (for i = j) to the -first and second term on the right-hand-side, respectively, and a -small enough :math:`\alpha` damping parameter, the second term shrinks and -the potential becomes a rapidly-converging real-space summation. With -a long enough cutoff and small enough :math:`\alpha` parameter, the energy and -forces calculated by the Wolf summation method approach those of the +first and second term on the right-hand-side, respectively, and a small +enough :math:`\alpha` damping parameter, the second term shrinks and the +potential becomes a rapidly-converging real-space summation. With a +long enough cutoff and small enough :math:`\alpha` parameter, the energy +and forces calculated by the Wolf summation method approach those of the Ewald sum. So it is a means of getting effective long-range interactions with a short-range potential. ---------- -Style *coul/streitz* is the Coulomb pair interaction defined as part -of the Streitz-Mintmire potential, as described in :ref:`this paper `, in which charge distribution about an atom is modeled -as a Slater 1\ *s* orbital. More details can be found in the referenced +Style *coul/streitz* is the Coulomb pair interaction defined as part of +the Streitz-Mintmire potential, as described in :ref:`this paper +`, in which charge distribution about an atom is modeled as a +Slater 1\ *s* orbital. More details can be found in the referenced paper. To fully reproduce the published Streitz-Mintmire potential, -which is a variable charge potential, style *coul/streitz* must be -used with :doc:`pair_style eam/alloy ` (or some other -short-range potential that has been parameterized appropriately) via -the :doc:`pair_style hybrid/overlay ` command. Likewise, -charge equilibration must be performed via the :doc:`fix qeq/slater ` command. For example: +which is a variable charge potential, style *coul/streitz* must be used +with :doc:`pair_style eam/alloy ` (or some other short-range +potential that has been parameterized appropriately) via the +:doc:`pair_style hybrid/overlay ` command. Likewise, +charge equilibration must be performed via the :doc:`fix qeq/slater +` command. For example: .. code-block:: LAMMPS diff --git a/doc/src/pair_dielectric.rst b/doc/src/pair_dielectric.rst index dbdd163a76..0b60d202ea 100644 --- a/doc/src/pair_dielectric.rst +++ b/doc/src/pair_dielectric.rst @@ -76,16 +76,19 @@ Description """"""""""" All these pair styles are derived from the corresponding pair styles -without the *dielectric*\ suffix. In addition to computing atom forces -and energies, these pair styles compute the electrical field vector -at each atom, which are to be used in the :doc:`fix polarize ` commands. +without the *dielectric* suffix. In addition to computing atom forces +and energies, these pair styles compute the electric field vector at +each atom, which are intended to be used by the :doc:`fix polarize +` commands to compute induced charges at interfaces +between two regions of different dielectric constant. -These pair styles should be used with :doc:`atom_style dielectric `, -which uses atom charges rescaled by their local dielectric constant. +These pair styles should be used with :doc:`atom_style dielectric +`. The styles lj/cut/coul/long/dielectric, lj/cut/coul/msm/dielectric, and -lj/long/coul/long/dielectric should be used with their kspace style counterparts, -namely, pppm/dielectric, pppm/disp/dielectric, and msm/dielectric, respectively. +lj/long/coul/long/dielectric should be used with their kspace style +counterparts, namely, pppm/dielectric, pppm/disp/dielectric, and +msm/dielectric, respectively. ---------- @@ -97,24 +100,27 @@ Mixing, shift, table, tail correction, restart, rRESPA info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" For atom type pairs I,J and I != J, the epsilon and sigma coefficients -and cutoff distances for this pair style can be mixed. The default -mix value is *geometric*\ . See the "pair_modify" command for details. +and cutoff distances for this pair style can be mixed. The default mix +algorithm is *geometric*\ . See the :doc:`pair_modify `" +command for details. The :doc:`pair_modify ` table option is not relevant for this pair style. -This pair style writes its information to :doc:`binary restart files `, so pair_style and pair_coeff commands do not need -to be specified in an input script that reads a restart file. +These pair styles write its information to :doc:`binary restart files +`, 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 +These pair styles can only be used via the *pair* keyword of the :doc:`run_style respa ` command. It does not support the *inner*, *middle*, *outer* keywords. Restrictions """""""""""" -These styles are part of the DIELECTRIC package. They are only enabled if -LAMMPS was built with that package. See the :doc:`Build package ` page for more info. +These styles are part of the DIELECTRIC package. They are only enabled +if LAMMPS was built with that package. See the :doc:`Build package +` page for more info. Related commands """""""""""""""" diff --git a/doc/src/pair_dipole.rst b/doc/src/pair_dipole.rst index 50e1a1b023..eb6b2c4859 100644 --- a/doc/src/pair_dipole.rst +++ b/doc/src/pair_dipole.rst @@ -58,22 +58,26 @@ Examples .. code-block:: LAMMPS - pair_style lj/cut/dipole/cut 10.0 + pair_style lj/cut/dipole/cut 2.5 5.0 pair_coeff * * 1.0 1.0 - pair_coeff 2 3 1.0 1.0 2.5 4.0 + pair_coeff 2 3 0.8 1.0 2.5 4.0 pair_style lj/sf/dipole/sf 9.0 pair_coeff * * 1.0 1.0 pair_coeff 2 3 1.0 1.0 2.5 4.0 scale 0.5 - pair_coeff 2 3 1.0 1.0 2.5 4.0 + pair_coeff 2 3 0.8 1.0 2.5 4.0 - pair_style lj/cut/dipole/long 10.0 + pair_style lj/cut/dipole/long 2.5 3.5 pair_coeff * * 1.0 1.0 - pair_coeff 2 3 1.0 1.0 2.5 4.0 + pair_coeff 2 3 0.8 1.0 3.0 - pair_style lj/long/dipole/long long long 3.5 10.0 + pair_style lj/long/dipole/long long long 3.5 pair_coeff * * 1.0 1.0 - pair_coeff 2 3 1.0 1.0 2.5 4.0 + pair_coeff 2 3 0.8 1.0 + + pair_style lj/long/dipole/long cut long 2.5 3.5 + pair_coeff * * 1.0 1.0 + pair_coeff 2 3 0.8 1.0 3.0 Description """"""""""" @@ -254,23 +258,28 @@ long-range LJ interactions, the :doc:`kspace_style ewald/disp ---------- -The following coefficients must be defined for each pair of atoms -types via the :doc:`pair_coeff ` command as in the examples -above, or in the data file or restart files read by the -:doc:`read_data ` or :doc:`read_restart ` -commands, or by mixing as described below: +The following coefficients must be defined for each pair of atoms types +via the :doc:`pair_coeff ` command as in the examples above, +or in the data file or restart files read by the :doc:`read_data +` or :doc:`read_restart ` commands, or by +mixing as described below: * :math:`\epsilon` (energy units) * :math:`\sigma` (distance units) * cutoff1 (distance units) * cutoff2 (distance units) -The latter 2 coefficients are optional. If not specified, the global -LJ and Coulombic cutoffs specified in the pair_style command are used. -If only one cutoff is specified, it is used as the cutoff for both LJ -and Coulombic interactions for this type pair. If both coefficients -are specified, they are used as the LJ and Coulombic cutoffs for this -type pair. +The latter 2 coefficients are optional. If not specified, the global LJ +and Coulombic cutoffs specified in the pair_style command are used. If +only one cutoff is specified, it is used as the cutoff for both LJ and +Coulombic interactions for this type pair. If both coefficients are +specified, they are used as the LJ and Coulombic cutoffs for this type +pair. When using a long-rang Coulomb solver, only a global Coulomb +cutoff may be used and only the LJ cutoff may be changed with the +:doc:`pair_coeff ` command. When using the +*lj/long/dipole/long* pair style with *long* *long* setting, only a +single global cutoff may be provided and no cutoff for the +:doc:`pair_coeff ` command. ---------- diff --git a/doc/src/pair_eam.rst b/doc/src/pair_eam.rst index a7141c3849..27347b77f0 100644 --- a/doc/src/pair_eam.rst +++ b/doc/src/pair_eam.rst @@ -440,7 +440,7 @@ identical to the FS EAM files (see above). ---------- -.. versionadded:: TBD +.. versionadded:: 3Nov2022 The *eam*, *eam/alloy*, *eam/fs*, and *eam/he* pair styles support extraction of two per-atom quantities by the :doc:`fix pair ` diff --git a/doc/src/pair_granular.rst b/doc/src/pair_granular.rst index 6f84b0d9c7..0b8f3e11ae 100644 --- a/doc/src/pair_granular.rst +++ b/doc/src/pair_granular.rst @@ -97,7 +97,7 @@ on particle *i* due to contact with particle *j* is given by: Where :math:`\delta_{ij} = R_i + R_j - \|\mathbf{r}_{ij}\|` is the particle overlap, :math:`R_i, R_j` are the particle radii, :math:`\mathbf{r}_{ij} = \mathbf{r}_i - \mathbf{r}_j` is the vector separating the two -particle centers (note the i-j ordering so that :math:`F_{ne}` is +particle centers (note the i-j ordering so that :math:`\mathbf{F}_{ne}` is positive for repulsion), and :math:`\mathbf{n} = \frac{\mathbf{r}_{ij}}{\|\mathbf{r}_{ij}\|}`. Therefore, for *hooke*, the units of the spring constant :math:`k_n` are *force*\ /\ *distance*, or equivalently *mass*\ /*time\^2*. diff --git a/doc/src/pair_list.rst b/doc/src/pair_list.rst index 321bf61be9..fd08f9d6f0 100644 --- a/doc/src/pair_list.rst +++ b/doc/src/pair_list.rst @@ -30,15 +30,17 @@ Description """"""""""" Style *list* computes interactions between explicitly listed pairs of -atoms with the option to select functional form and parameters for -each individual pair. Because the parameters are set in the list -file, the pair_coeff command has no parameters (but still needs to be -provided). The *check* and *nocheck* keywords enable/disable a test -that checks whether all listed bonds were present and computed. +atoms with the option to select functional form and parameters for each +individual pair. Because the parameters are set in the list file, the +pair_coeff command has no parameters (but still needs to be provided). +The *check* and *nocheck* keywords enable/disable tests that checks +whether all listed pairs of atom IDs were present and the interactions +computed. If *nocheck* is set and either atom ID is not present, the +interaction is skipped. This pair style can be thought of as a hybrid between bonded, -non-bonded, and restraint interactions. It will typically be used as -an additional interaction within the *hybrid/overlay* pair style. It +non-bonded, and restraint interactions. It will typically be used as an +additional interaction within the *hybrid/overlay* pair style. It currently supports three interaction styles: a 12-6 Lennard-Jones, a Morse and a harmonic potential. @@ -57,8 +59,8 @@ The format of the list file is as follows: coeffs = list of coeffs cutoff = cutoff for interaction (optional) -The cutoff parameter is optional. If not specified, the global cutoff -is used. +The cutoff parameter is optional for all but the *quartic* interactions. +If it is not specified, the global cutoff is used. Here is an example file: @@ -69,6 +71,7 @@ Here is an example file: 15 259 lj126 1.0 1.0 50.0 15 603 morse 10.0 1.2 2.0 10.0 # and another comment 18 470 harmonic 50.0 1.2 5.0 + 19 332 quartic 10.0 5.0 -1.2 1.2 The style *lj126* computes pairwise interactions with the formula @@ -85,7 +88,7 @@ The style *morse* computes pairwise interactions with the formula .. math:: - E = D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] \qquad r < r_c + E = D_0 \left[ 1 - e^{-\alpha (r - r_0)} \right]^2 \qquad r < r_c and the coefficients: @@ -97,7 +100,7 @@ The style *harmonic* computes pairwise interactions with the formula .. math:: - E = K (r - r_0)^2 + E = K (r - r_0)^2 \qquad r < r_c and the coefficients: @@ -106,6 +109,19 @@ and the coefficients: Note that the usual 1/2 factor is included in :math:`K`. +The style *quartic* computes pairwise interactions with the formula + +.. math:: + + E = K (r - r_0)^2 (r - r_0 -b_1) (r - r_0 - b_2) \qquad r < r_c + +and the coefficients: + +* :math:`K` (energy units) +* :math:`r_0` (distance units) +* :math:`b_1` (distance units) +* :math:`b_2` (distance units) + ---------- Mixing, shift, table, tail correction, restart, rRESPA info @@ -120,8 +136,9 @@ pair style. The :doc:`pair_modify ` table and tail options are not relevant for this pair style. -This pair style does not write its information to :doc:`binary restart files `, so pair_style and pair_coeff commands need -to be specified in an input script that reads a restart file. +This pair style does not write its information to :doc:`binary restart +files `, so pair_style and pair_coeff commands 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 ` command. It does not support the @@ -133,17 +150,18 @@ Restrictions """""""""""" This pair style does not use a neighbor list and instead identifies -atoms by their IDs. This has two consequences: 1) The cutoff has to be -chosen sufficiently large, so that the second atom of a pair has to be -a ghost atom on the same node on which the first atom is local; -otherwise the interaction will be skipped. You can use the *check* -option to detect, if interactions are missing. 2) Unlike other pair -styles in LAMMPS, an atom I will not interact with multiple images of -atom J (assuming the images are within the cutoff distance), but only -with the nearest image. +atoms by their IDs. This has two consequences: 1) The cutoff has to be +chosen sufficiently large, so that the second atom of a pair has to be a +ghost atom on the same node on which the first atom is local; otherwise +the interaction will be skipped. You can use the *check* option to +detect, if interactions are missing. 2) Unlike other pair styles in +LAMMPS, an atom I will not interact with multiple images of atom J +(assuming the images are within the cutoff distance), but only with the +closest image. -This style is part of the MISC package. It is only enabled if -LAMMPS is build with that package. See the :doc:`Build package ` page on for more info. +This style is part of the MISC package. It is only enabled if LAMMPS is +build with that package. See the :doc:`Build package ` +page on for more info. Related commands """""""""""""""" @@ -151,8 +169,9 @@ Related commands :doc:`pair_coeff `, :doc:`pair_style hybrid/overlay `, :doc:`pair_style lj/cut `, -:doc:`pair_style morse `, +:doc:`bond_style morse `, :doc:`bond_style harmonic ` +:doc:`bond_style quartic ` Default """"""" diff --git a/doc/src/pair_mliap.rst b/doc/src/pair_mliap.rst index 3993a4701e..fcb9c7881e 100644 --- a/doc/src/pair_mliap.rst +++ b/doc/src/pair_mliap.rst @@ -1,8 +1,11 @@ .. index:: pair_style mliap +.. index:: pair_style mliap/kk pair_style mliap command ======================== +Accelerator Variants: *mliap/kk* + Syntax """""" @@ -177,7 +180,7 @@ to specify the path for these *model* and *descriptor* files. larger systems since their size depends on the total number of neighbors per MPI process. -.. versionadded:: TBD +.. versionadded:: 3Nov2022 The *unified* keyword is followed by an argument specifying the filename containing the serialized unified Python object and the "ghostneigh" toggle @@ -207,6 +210,12 @@ cutoff manually, such as in the following example. on the active LAMMPS object before the pair style is defined. This call locates and loads the mliap-specific python module that is built into LAMMPS. +---------- + +.. include:: accel_styles.rst + +---------- + Mixing, shift, table, tail correction, restart, rRESPA info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" diff --git a/doc/src/pair_pace.rst b/doc/src/pair_pace.rst index c9857c5caa..697a9965b6 100644 --- a/doc/src/pair_pace.rst +++ b/doc/src/pair_pace.rst @@ -1,11 +1,15 @@ .. index:: pair_style pace .. index:: pair_style pace/kk +.. index:: pair_style pace/extrapolation pair_style pace command ======================= Accelerator Variants: *pace/kk* +pair_style pace/extrapolation command +===================================== + Syntax """""" @@ -22,6 +26,10 @@ Syntax *recursive* = use recursive algorithm for basis functions *chunksize* value = number of atoms in each pass +.. code-block:: LAMMPS + + pair_style pace/extrapolation + Examples """""""" @@ -31,50 +39,95 @@ Examples pair_style pace product chunksize 2048 pair_coeff * * Cu-PBE-core-rep.ace Cu + pair_style pace/extrapolation + pair_coeff * * Cu.yaml Cu.asi Cu + Description """"""""""" Pair style *pace* computes interactions using the Atomic Cluster Expansion (ACE), which is a general expansion of the atomic energy in -multi-body basis functions. :ref:`(Drautz) `. -The *pace* pair style -provides an efficient implementation that -is described in this paper :ref:`(Lysogorskiy) `. +multi-body basis functions. :ref:`(Drautz) `. The *pace* +pair style provides an efficient implementation that is described in +this paper :ref:`(Lysogorskiy) `. -In ACE, the total energy is decomposed into a sum over -atomic energies. The energy of atom *i* is expressed as a -linear or non-linear function of one or more density functions. -By projecting the -density onto a local atomic base, the lowest order contributions -to the energy can be expressed as a set of scalar polynomials in -basis function contributions summed over neighbor atoms. +In ACE, the total energy is decomposed into a sum over atomic +energies. The energy of atom *i* is expressed as a linear or non-linear +function of one or more density functions. By projecting the density +onto a local atomic base, the lowest order contributions to the energy +can be expressed as a set of scalar polynomials in basis function +contributions summed over neighbor atoms. Only a single pair_coeff command is used with the *pace* style which specifies an ACE coefficient file followed by N additional arguments -specifying the mapping of ACE elements to LAMMPS atom types, -where N is the number of LAMMPS atom types: +specifying the mapping of ACE elements to LAMMPS atom types, where N is +the number of LAMMPS atom types: * ACE coefficient file * N element names = mapping of ACE elements to atom types Only a single pair_coeff command is used with the *pace* style which -specifies an ACE file that fully defines the potential. -Note that unlike for other potentials, cutoffs are -not set in the pair_style or pair_coeff command; they are specified in -the ACE file. +specifies an ACE file that fully defines the potential. Note that +unlike for other potentials, cutoffs are not set in the pair_style or +pair_coeff command; they are specified in the ACE file. The pair_style *pace* command may be followed by the optional keyword -*product* or *recursive*, which determines which of two algorithms -is used for the calculation of basis functions and derivatives. -The default is *recursive*. +*product* or *recursive*, which determines which of two algorithms is +used for the calculation of basis functions and derivatives. The +default is *recursive*. -The keyword *chunksize* is only applicable when -using the pair style *pace* with the KOKKOS package on GPUs and is -ignored otherwise. This keyword controls the number of atoms -in each pass used to compute the atomic cluster expansion and is used to -avoid running out of memory. For example if there are 8192 atoms in the -simulation and the *chunksize* is set to 4096, the ACE -calculation will be broken up into two passes (running on a single GPU). +The keyword *chunksize* is only applicable when using the pair style +*pace* with the KOKKOS package on GPUs and is ignored otherwise. This +keyword controls the number of atoms in each pass used to compute the +atomic cluster expansion and is used to avoid running out of memory. +For example if there are 8192 atoms in the simulation and the +*chunksize* is set to 4096, the ACE calculation will be broken up into +two passes (running on a single GPU). + +Extrapolation grade +""""""""""""""""""" + +Calculation of extrapolation grade in PACE is implemented in `pair_style +pace/extrapolation`. It is based on the MaxVol algorithm similar to +Moment Tensor Potential (MTP) by Shapeev et al. and is described in +:ref:`(Lysogorskiy2) `. In order to compute +extrapolation grade one needs to provide: + +#. ACE potential in B-basis form (`.yaml` format) and +#. Active Set Inverted (ASI) file for corresponding potential (`.asi` format) + +Calculation of extrapolation grades requires matrix-vector +multiplication for each atom and is slower than the usual `pair_style +pace recursive`, therefore it is *not* computed by default. +Extrapolation grade calculation is involved by `fix pair`, which +requests to compute `gamma`, as shown in example below: + +.. code-block:: LAMMPS + + pair_style pace/extrapolation + pair_coeff * * Cu.yaml Cu.asi Cu + + fix pace_gamma all pair 10 pace/extrapolation gamma 1 + + compute max_pace_gamma all reduce max f_pace_gamma + variable dump_skip equal "c_max_pace_gamma < 5" + + dump pace_dump all custom 20 extrapolative_structures.dump id type x y z f_pace_gamma + dump_modify pace_dump skip v_dump_skip + + variable max_pace_gamma equal c_max_pace_gamma + fix extreme_extrapolation all halt 10 v_max_pace_gamma > 25 + +Here extrapolation grade gamma is computed every 10 steps and is stored +in `f_pace_gamma` per-atom variable. The largest value of extrapolation +grade among all atoms in a structure is reduced to `c_max_pace_gamma` +variable. Only if this value exceeds extrapolation threshold 5, then +the structure will be dumped into `extrapolative_structures.dump` file, +but not more often than every 20 steps. + +On all other steps `pair_style pace recursive` will be used. + +---------- See the :doc:`pair_coeff ` page for alternate ways to specify the path for the ACE coefficient file. @@ -90,9 +143,10 @@ specify a pair_coeff command with I != J arguments for this style. This pair style does not support the :doc:`pair_modify ` shift, table, and tail options. -This pair style does not write its information to :doc:`binary restart files `, since it is stored in potential files. Thus, you -need to re-specify the pair_style and pair_coeff commands in an input -script that reads a restart file. +This pair style does not write its information to :doc:`binary restart +files `, since it is stored in potential files. Thus, you need +to re-specify the pair_style and pair_coeff commands 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 ` command. It does not support the @@ -107,19 +161,20 @@ This pair style can only be used via the *pair* keyword of the Restrictions """""""""""" -This pair style is part of the ML-PACE package. It is only enabled if LAMMPS -was built with that package. -See the :doc:`Build package ` page for more info. +This pair style is part of the ML-PACE package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package +` page for more info. Related commands """""""""""""""" -:doc:`pair_style snap ` +:doc:`pair_style snap `, +:doc:`fix pair ` Default """"""" -recursive, chunksize = 4096 +recursive, chunksize = 4096, .. _Drautz20191: @@ -127,4 +182,8 @@ recursive, chunksize = 4096 .. _Lysogorskiy20211: -**(Lysogorskiy)** Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, TBD (2021). +**(Lysogorskiy)** Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, npj Comp Mat, 7, 97 (2021). + +.. _Lysogorskiy2022: + +**(Lysogorskiy2022)** Lysogorskiy, Bochkarev, Mrovec, Drautz, TBS (2022). diff --git a/doc/src/pair_pod.rst b/doc/src/pair_pod.rst new file mode 100644 index 0000000000..0aa6250dab --- /dev/null +++ b/doc/src/pair_pod.rst @@ -0,0 +1,97 @@ +.. index:: pair_style pod + +pair_style pod command +======================== + +Syntax +"""""" + +.. code-block:: LAMMPS + + pair_style pod + +Examples +"""""""" + +.. code-block:: LAMMPS + + pair_style pod + pair_coeff * * Ta_param.pod Ta_coefficients.pod Ta + +Description +""""""""""" + +.. versionadded:: TBD + +Pair style *pod* defines the proper orthogonal descriptor (POD) +potential :ref:`(Nguyen) `. The mathematical definition of +the POD potential is described from :doc:`fitpod `, which is +used to fit the POD potential to *ab initio* energy and force data. + +Only a single pair_coeff command is used with the *pod* style which +specifies a POD parameter file followed by a coefficient file. + +The coefficient file (``Ta_coefficients.pod``) contains coefficients for the +POD potential. The top of the coefficient file can contain any number of +blank and comment lines (start with #), but follows a strict format +after that. The first non-blank non-comment line must contain: + +* POD_coefficients: *ncoeff* + +This is followed by *ncoeff* coefficients, one per line. The coefficient +file is generated after training the POD potential using :doc:`fitpod +`. + +The POD parameter file (``Ta_param.pod``) can contain blank and comment lines +(start with #) anywhere. Each non-blank non-comment line must contain +one keyword/value pair. See :doc:`fitpod ` for the description +of all the keywords that can be assigned in the parameter file. + +As an example, if a LAMMPS indium phosphide simulation has 4 atoms +types, with the first two being indium and the third and fourth being +phophorous, the pair_coeff command would look like this: + +.. code-block:: LAMMPS + + pair_coeff * * pod InP_param.pod InP_coefficients.pod In In P P + +The first 2 arguments must be \* \* so as to span all LAMMPS atom types. +The two filenames are for the parameter and coefficient files, respectively. +The two trailing 'In' arguments map LAMMPS atom types 1 and 2 to the +POD 'In' element. The two trailing 'P' arguments map LAMMPS atom types +3 and 4 to the POD 'P' element. + +If a POD mapping value is specified as NULL, the mapping is not +performed. This can be used when a *pod* potential is used as part of +the *hybrid* pair style. The NULL values are placeholders for atom +types that will be used with other potentials. + +Examples about training and using POD potentials are found in the +directory lammps/examples/PACKAGES/pod. + +---------- + +Restrictions +"""""""""""" + +This style is part of the ML-POD package. It is only enabled if LAMMPS +was built with that package. See the :doc:`Build package +` page for more info. + +This pair style does not compute per-atom energies and per-atom stresses. + +Related commands +"""""""""""""""" + +:doc:`fitpod `, + +Default +""""""" + +none + +---------- + +.. _Nguyen20221: + +**(Nguyen)** Nguyen and Rohskopf, arXiv preprint arXiv:2209.02362 (2022). diff --git a/doc/src/pair_smtbq.rst b/doc/src/pair_smtbq.rst index 50b4afaf2d..ea55b2f2d9 100644 --- a/doc/src/pair_smtbq.rst +++ b/doc/src/pair_smtbq.rst @@ -182,19 +182,19 @@ For each cations (metal): * Potential parameter: - If type of potential is 'second_moment' : A (eV), *p*, - :math:`\zeta^0` (eV) and *q*, :math:`r_{c1} (\mathrm{\mathring{A}})`, :math:`r_{c2} - (\mathrm{\mathring{A}})` and :math:`r_0 (\mathrm{\mathring{A}})` - - If type of potential is 'buck' : *C* (eV) and :math:`\rho (\mathrm{\mathring{A}})` + :math:`\zeta^0` (eV) and *q*, :math:`r_{c1} (\AA)`, :math:`r_{c2} + (\AA)` and :math:`r_0 (\AA)` + - If type of potential is 'buck' : *C* (eV) and :math:`\rho (\AA)` - If type of potential is 'buckPlusAttr' : *C* (eV) and :math:`\rho - (\mathrm{\mathring{A}})` *D* (eV), *B* :math:`(\mathrm{\mathring{A}}^{-1})`, :math:`r^{OO}_1 (\mathrm{\mathring{A}})` and - :math:`r^{OO}_2 (\mathrm{\mathring{A}})` + (\AA)` *D* (eV), *B* :math:`(\AA^{-1})`, :math:`r^{OO}_1 (\AA)` and + :math:`r^{OO}_2 (\AA)` * Divider line 4) Tables parameters: * Cutoff radius for the Coulomb interaction (:math:`R_{coul}`) -* Starting radius (:math:`r_{min} = 1,18845 \mathrm{\mathring{A}}`) and increments - (:math:`dr = 0.001 \mathrm{\mathring{A}}`) for creating the potential table. +* Starting radius (:math:`r_{min} = 1,18845 \AA`) and increments + (:math:`dr = 0.001 \AA`) for creating the potential table. * Divider line 5) Rick model parameter: @@ -208,7 +208,7 @@ For each cations (metal): 6) Coordination parameter: * First (:math:`r_{1n}`) and second (:math:`r_{2n}`) neighbor distances - in angstrom + in Angstrom * Divider line 7) Charge initialization mode: diff --git a/doc/src/pair_style.rst b/doc/src/pair_style.rst index bd047c687f..48daf34f17 100644 --- a/doc/src/pair_style.rst +++ b/doc/src/pair_style.rst @@ -313,6 +313,8 @@ accelerated styles exist. * :doc:`oxrna2/stk ` - * :doc:`oxrna2/xstk ` - * :doc:`pace ` - Atomic Cluster Expansion (ACE) machine-learning potential +* :doc:`pace/extrapolation ` - Atomic Cluster Expansion (ACE) machine-learning potential with extrapolation grades +* :doc:`pod ` - Proper orthogonal decomposition (POD) machine-learning potential * :doc:`peri/eps ` - peridynamic EPS potential * :doc:`peri/lps ` - peridynamic LPS potential * :doc:`peri/pmb ` - peridynamic PMB potential @@ -373,6 +375,7 @@ accelerated styles exist. * :doc:`vashishta ` - Vashishta 2-body and 3-body potential * :doc:`vashishta/table ` - * :doc:`wf/cut ` - Wang-Frenkel Potential for short-ranged interactions +* :doc:`ylz ` - Yuan-Li-Zhang Potential for anisotropic interactions * :doc:`yukawa ` - Yukawa potential * :doc:`yukawa/colloid ` - screened Yukawa potential for finite-size particles * :doc:`zbl ` - Ziegler-Biersack-Littmark potential diff --git a/doc/src/pair_sw.rst b/doc/src/pair_sw.rst index 579e4c6f3f..7b4e52c3d9 100644 --- a/doc/src/pair_sw.rst +++ b/doc/src/pair_sw.rst @@ -176,9 +176,13 @@ are placeholders for atom types that will be used with other potentials. .. note:: - When the *threebody off* keyword is used, multiple pair_coeff commands may - be used to specific the pairs of atoms which don't require three-body term. - In these cases, the first 2 arguments are not required to be \* \*. + When the *threebody off* keyword is used, multiple pair_coeff + commands may be used to specific the pairs of atoms which don't + require three-body term. In these cases, the first 2 arguments are + not required to be \* \*, the potential parameter file is only read + by the first :doc:`pair_coeff command ` and the element + to atom type mappings must be consistent across all *pair_coeff* + statements. If not LAMMPS will abort with an error. Stillinger-Weber files in the *potentials* directory of the LAMMPS distribution have a ".sw" suffix. Lines that are not blank or diff --git a/doc/src/pair_tracker.rst b/doc/src/pair_tracker.rst index 04967e952d..e34bedca2c 100644 --- a/doc/src/pair_tracker.rst +++ b/doc/src/pair_tracker.rst @@ -174,8 +174,8 @@ the specified attribute. Restrictions """""""""""" -This fix is part of the MISC package. It is only enabled if LAMMPS -was built with that package. See the :doc:`Build package +This pair style is part of the MISC package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package ` page for more info. This pair style is currently incompatible with granular pair styles diff --git a/doc/src/pair_ylz.rst b/doc/src/pair_ylz.rst new file mode 100644 index 0000000000..17cf0ca639 --- /dev/null +++ b/doc/src/pair_ylz.rst @@ -0,0 +1,177 @@ +.. index:: pair_style ylz + +pair_style ylz command +=========================== + +Syntax +"""""" + +.. code-block:: LAMMPS + + pair_style ylz cutoff + + +* cutoff = global cutoff for interactions (distance units) + +Examples +"""""""" + +.. code-block:: LAMMPS + + pair_style ylz 2.6 + pair_coeff * * 1.0 1.0 4 3 0.0 2.6 + + +Description +""""""""""" + +.. versionadded:: 3Nov2022 + +The *ylz* (Yuan-Li-Zhang) style computes an anisotropic interaction +between pairs of coarse-grained particles considering the relative +particle orientations. This potential was originally developed as a +particle-based solvent-free model for biological membranes +:ref:`(Yuan2010a) `. Unlike :doc:`pair_style gayberne +`, whose orientation dependence is strictly derived from +the closest distance between two ellipsoidal rigid bodies, the +orientation-dependence of this pair style is mathematically defined such +that the particles can self-assemble into one-particle-thick fluid +membranes. The potential of this pair style is described by: + +.. math:: + + U ( \mathbf{r}_{ij}, \mathbf{n}_i, \mathbf{n}_j ) =\left\{\begin{matrix} {u}_R(r)+\left [ 1-\phi (\mathbf{\hat{r}}_{ij}, \mathbf{n}_i, \mathbf{n}_j ) \right ]\epsilon, ~~ r<{r}_{min} \\ {u}_A(r)\phi (\mathbf{\hat{r}}_{ij}, \mathbf{n}_i, \mathbf{n}_j ),~~ {r}_{min}`, nanoparticle +endocytosis :ref:`(Huang) `, modeling of red blood cell membranes +:ref:`(Fu) `, :ref:`(Appshaw) `, and modeling of cell +elasticity :ref:`(Becton) `. + +Use of this pair style requires the NVE, NVT, or NPT fixes with the +*asphere* extension (e.g. :doc:`fix nve/asphere `) in +order to integrate particle rotation. Additionally, :doc:`atom_style +ellipsoid ` should be used since it defines the rotational +state of each particle. + +The following coefficients must be defined for each pair of atoms types +via the :doc:`pair_coeff ` command as in the examples above, +or in the data file or restart files read by the :doc:`read_data +` or :doc:`read_restart ` commands, or by +mixing as described below: + +* :math:`\epsilon` = well depth (energy units) +* :math:`\sigma` = minimum effective particle radii (distance units) +* :math:`\zeta` = tuning parameter for the slope of the attractive branch +* :math:`\mu` = parameter related to bending rigidity +* :math:`\beta` = parameter related to the spontaneous curvature +* cutoff (distance units) + +The last coefficient is optional. If not specified, the global +cutoff specified in the pair_style command is used. + +---------- + +Mixing, shift, table, tail correction, restart, rRESPA info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +For atom type pairs I,J and I != J, the epsilon and sigma coefficients +and cutoff distance for this pair style can be mixed. The default mix +value is *geometric*\ . See the "pair_modify" command for details. + +The :doc:`pair_modify ` table option is not relevant for +this pair style. + +This pair style does not support the :doc:`pair_modify ` +tail option for adding long-range tail corrections to energy and +pressure. + +This pair style writes its information to :doc:`binary restart files +`, 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 ` command. It does not support the +*inner*, *middle*, *outer* keywords. + +---------- + +Restrictions +"""""""""""" + +The *ylz* style is part of the ASPHERE package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package +` page for more info. + +This pair style requires that atoms store torque and a quaternion to +represent their orientation, as defined by the :doc:`atom_style +`. It also requires they store a per-atom :doc:`shape +`. The particles cannot store a per-particle diameter. To avoid +being mistakenly considered as point particles, the shape parameters ought +to be non-spherical, like [1 0.99 0.99]. Unlike the :doc:`resquared +` pair style for which the shape directly determines the +mathematical expressions of the potential, the shape parameters for this +pair style is only involved in the computation of the moment of inertia +and thus only influences the rotational dynamics of individual +particles. + +This pair style requires that **all** atoms are ellipsoids as defined by +the :doc:`atom_style ellipsoid ` command. + + +Related commands +"""""""""""""""" + +:doc:`pair_coeff `, :doc:`fix nve/asphere +:doc:`, `compute temp/asphere `, +:doc::doc:`pair_style resquared `, :doc:`pair_style +:doc:gayberne ` + +Default +""""""" + +none + +---------- + +.. _Yuan: + +**(Yuan2010a)** Yuan, Huang, Li, Lykotrafitis, Zhang, Phys. Rev. E, 82, 011905(2010). + +**(Yuan2010b)** Yuan, Huang, Zhang, Soft. Matter, 6, 4571(2010). + +.. _Huang: + +**(Huang)** Huang, Zhang, Yuan, Gao, Zhang, Nano Lett. 13, 4546(2013). + +.. _Fu: + +**(Fu)** Fu, Peng, Yuan, Kfoury, Young, Comput. Phys. Commun, 210, 193-203(2017). + +.. _Appshaw: + +**(Appshaw)** Appshaw, Seddon, Hanna, Soft. Matter,18, 1747(2022). + +.. _Becton: + +**(Becton)** Becton, Averett, Wang, Biomech. Model. Mechanobiology, 18, 425-433(2019). diff --git a/doc/src/pair_zbl.rst b/doc/src/pair_zbl.rst index 6c698b23d2..1986fffa4d 100644 --- a/doc/src/pair_zbl.rst +++ b/doc/src/pair_zbl.rst @@ -73,7 +73,7 @@ be included in a pair_coeff command. The numerical values of the exponential decay constants in the screening function depend on the unit of distance. In the above - equation they are given for units of angstroms. LAMMPS will + equation they are given for units of Angstroms. LAMMPS will automatically convert these values to the distance unit of the specified LAMMPS :doc:`units ` setting. The values of Z should always be given as multiples of a proton's charge, e.g. 29.0 for diff --git a/doc/src/pair_zero.rst b/doc/src/pair_zero.rst index 062b5204f8..0e6bac643a 100644 --- a/doc/src/pair_zero.rst +++ b/doc/src/pair_zero.rst @@ -8,11 +8,12 @@ Syntax .. code-block:: LAMMPS - pair_style zero cutoff [nocoeff] + pair_style zero cutoff [nocoeff] [full] * zero = style name of this pair style * cutoff = global cutoff (distance units) * nocoeff = ignore all pair_coeff parameters (optional) +* full = build full neighbor list (optional) Examples """""""" @@ -45,6 +46,9 @@ section for any pair style. Similarly, any pair_coeff commands will only be checked for the atom type numbers and the rest ignored. In this case, only the global cutoff will be used. +The optional *full* flag builds a full neighbor list instead of the default +half neighbor list. + The following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff ` command as in the examples above, or in the data file or restart files read by the diff --git a/doc/src/prd.rst b/doc/src/prd.rst index 758aa4f570..0f6e9e481f 100644 --- a/doc/src/prd.rst +++ b/doc/src/prd.rst @@ -18,7 +18,7 @@ Syntax * compute-ID = ID of the compute used for event detection * random_seed = random # seed (positive integer) * zero or more keyword/value pairs may be appended -* keyword = *min* or *temp* or *vel* +* keyword = *min* or *temp* or *vel* or *time* .. parsed-literal:: diff --git a/doc/src/processors.rst b/doc/src/processors.rst index d717fa9b73..e4279c00ea 100644 --- a/doc/src/processors.rst +++ b/doc/src/processors.rst @@ -18,18 +18,17 @@ Syntax *grid* arg = gstyle params ... gstyle = *onelevel* or *twolevel* or *numa* or *custom* - onelevel params = none - twolevel params = Nc Cx Cy Cz + *onelevel* params = none + *twolevel* params = Nc Cx Cy Cz Nc = number of cores per node Cx,Cy,Cz = # of cores in each dimension of 3d sub-grid assigned to each node - numa params = none - custom params = infile + *numa* params = none + *custom* params = infile infile = file containing grid layout *map* arg = *cart* or *cart/reorder* or *xyz* or *xzy* or *yxz* or *yzx* or *zxy* or *zyx* cart = use MPI_Cart() methods to map processors to 3d grid with reorder = 0 cart/reorder = use MPI_Cart() methods to map processors to 3d grid with reorder = 1 xyz,xzy,yxz,yzx,zxy,zyx = map processors to 3d grid in IJK ordering - *numa* arg = none *part* args = Psend Precv cstyle Psend = partition # (1 to Np) which will send its processor layout Precv = partition # (1 to Np) which will recv the processor layout diff --git a/doc/src/python.rst b/doc/src/python.rst index aad2f636d3..5316fb28a5 100644 --- a/doc/src/python.rst +++ b/doc/src/python.rst @@ -8,14 +8,25 @@ Syntax .. parsed-literal:: - python func keyword args ... + python mode keyword args ... -* func = name of Python function -* one or more keyword/args pairs must be appended +* mode = *source* or name of Python function + + if mode is *source*: .. parsed-literal:: - keyword = *invoke* or *input* or *return* or *format* or *length* or *file* or *here* or *exists* or *source* + keyword = *here* or name of a *Python file* + *here* arg = inline + inline = one or more lines of Python code which defines func + must be a single argument, typically enclosed between triple quotes + *Python file* = name of a file with Python code which will be executed immediately + +* if *mode* is the name of a Python function, one or more keywords with/without arguments must be appended + + .. parsed-literal:: + + keyword = *invoke* or *input* or *return* or *format* or *length* or *file* or *here* or *exists* *invoke* arg = none = invoke the previously defined Python function *input* args = N i1 i2 ... iN N = # of inputs to function @@ -24,7 +35,7 @@ Syntax SELF = reference to LAMMPS itself which can be accessed by Python function variable = v_name, where name = name of LAMMPS variable, e.g. v_abc *return* arg = varReturn - varReturn = v_name = LAMMPS variable name which return value of function will be assigned to + varReturn = v_name = LAMMPS variable name which the return value of the Python function will be assigned to *format* arg = fstring with M characters M = N if no return value, where N = # of inputs M = N+1 if there is a return value @@ -38,10 +49,6 @@ Syntax inline = one or more lines of Python code which defines func must be a single argument, typically enclosed between triple quotes *exists* arg = none = Python code has been loaded by previous python command - *source* arg = *filename* or *inline* - filename = file of Python code which will be executed immediately - inline = one or more lines of Python code which will be executed immediately - must be a single argument, typically enclosed between triple quotes Examples """""""" @@ -70,80 +77,105 @@ Examples lmp.command("pair_style lj/cut ${cut}") # LAMMPS commands lmp.command("pair_coeff * * 1.0 1.0") lmp.command("run 100") - """ + """ + + python source funcdef.py + + python source here "from lammps import lammps" + Description """"""""""" -Define a Python function or execute a previously defined function or -execute some arbitrary python code. +The *python* command allows interfacing LAMMPS with an embedded Python +interpreter and enables either executing arbitrary python code in that +interpreter, registering a Python function for future execution (as a +python style variable, from a fix interfaced with python, or for direct +invocation), or invoking such a previously registered function. + Arguments, including LAMMPS variables, can be passed to the function -from the LAMMPS input script and a value returned by the Python -function to a LAMMPS variable. The Python code for the function can -be included directly in the input script or in a separate Python file. -The function can be standard Python code or it can make "callbacks" to -LAMMPS through its library interface to query or set internal values -within LAMMPS. This is a powerful mechanism for performing complex -operations in a LAMMPS input script that are not possible with the -simple input script and variable syntax which LAMMPS defines. Thus -your input script can operate more like a true programming language. +from the LAMMPS input script and a value returned by the Python function +assigned to a LAMMPS variable. The Python code for the function can be included +directly in the input script or in a separate Python file. The function +can be standard Python code or it can make "callbacks" to LAMMPS through +its library interface to query or set internal values within LAMMPS. +This is a powerful mechanism for performing complex operations in a +LAMMPS input script that are not possible with the simple input script +and variable syntax which LAMMPS defines. Thus your input script can +operate more like a true programming language. Use of this command requires building LAMMPS with the PYTHON package which links to the Python library so that the Python interpreter is embedded in LAMMPS. More details about this process are given below. There are two ways to invoke a Python function once it has been -defined. One is using the *invoke* keyword. The other is to assign +registered. One is using the *invoke* keyword. The other is to assign the function to a :doc:`python-style variable ` defined in -your input script. Whenever the variable is evaluated, it will -execute the Python function to assign a value to the variable. Note -that variables can be evaluated in many different ways within LAMMPS. -They can be substituted for directly in an input script. Or they can -be passed to various commands as arguments, so that the variable is -evaluated during a simulation run. +your input script. Whenever the variable is evaluated, it will execute +the Python function to assign a value to the variable. Note that +variables can be evaluated in many different ways within LAMMPS. They +can be substituted with their result directly in an input script, or +they can be passed to various commands as arguments, so that the +variable is evaluated during a simulation run. -A broader overview of how Python can be used with LAMMPS is given on -the :doc:`Python ` doc page. There is an examples/python -directory which illustrates use of the python command. +A broader overview of how Python can be used with LAMMPS is given in the +:doc:`Use Python with LAMMPS ` section of the +documentation. There also is an ``examples/python`` directory which +illustrates use of the python command. ---------- -The *func* setting specifies the name of the Python function. The -code for the function is defined using the *file* or *here* keywords -as explained below. In case of the *source* keyword, the name of -the function is ignored. +The first argument of the *python* command is either the *source* +keyword or the name of a Python function. This defines the mode +of the python command. + +.. versionchanged:: TBD + +If the *source* keyword is used, it is followed by either a file name or +the *here* keyword. No other keywords can be used. The *here* keyword +is followed by a string with python commands, either on a single line +enclosed in quotes, or as multiple lines enclosed in triple quotes. +These Python commands will be passed to the python interpreter and +executed immediately without registering a Python function for future +execution. The code will be loaded into and run in the "main" module of +the Python interpreter. This allows running arbitrary Python code at +any time while processing the LAMMPS input file. This can be used to +pre-load Python modules, initialize global variables, define functions +or classes, or perform operations using the python programming language. +The Python code will be executed in parallel on all MPI processes. No +arguments can be passed. + +In all other cases, the first argument is the name of a Python function +that will be registered with LAMMPS for future execution. The function +may already be defined (see *exists* keyword) or must be defined using +the *file* or *here* keywords as explained below. If the *invoke* keyword is used, no other keywords can be used, and a -previous python command must have defined the Python function +previous *python* command must have registered the Python function referenced by this command. This invokes the Python function with the -previously defined arguments and return value processed as explained -below. You can invoke the function as many times as you wish in your -input script. - -If the *source* keyword is used, no other keywords can be used. -The argument can be a filename or a string with python commands, -either on a single line enclosed in quotes, or as multiple lines -enclosed in triple quotes. These python commands will be passed -to the python interpreter and executed immediately without registering -a python function for future execution. +previously defined arguments and the return value is processed as +explained below. You can invoke the function as many times as you wish +in your input script. The *input* keyword defines how many arguments *N* the Python function -expects. If it takes no arguments, then the *input* keyword should -not be used. Each argument can be specified directly as a value, -e.g. 6 or 3.14159 or abc (a string of characters). The type of each +expects. If it takes no arguments, then the *input* keyword should not +be used. Each argument can be specified directly as a value, e.g. '6' +or '3.14159' or 'abc' (a string of characters). The type of each argument is specified by the *format* keyword as explained below, so that Python will know how to interpret the value. If the word SELF is used for an argument it has a special meaning. A pointer is passed to -the Python function which it converts into a reference to LAMMPS -itself. This enables the function to call back to LAMMPS through its -library interface as explained below. This allows the Python function -to query or set values internal to LAMMPS which can affect the -subsequent execution of the input script. A LAMMPS variable can also -be used as an argument, specified as v_name, where "name" is the name -of the variable. Any style of LAMMPS variable can be used, as defined -by the :doc:`variable ` command. Each time the Python -function is invoked, the LAMMPS variable is evaluated and its value is -passed to the Python function. +the Python function which it can convert into a reference to LAMMPS +itself using the :doc:`LAMMPS Python module `. This +enables the function to call back to LAMMPS through its library +interface as explained below. This allows the Python function to query +or set values internal to LAMMPS which can affect the subsequent +execution of the input script. A LAMMPS variable can also be used as an +argument, specified as v_name, where "name" is the name of the variable. +Any style of LAMMPS variable returning a scalar or a string can be used, +as defined by the :doc:`variable ` command. The *format* +keyword must be used to set the type of data that is passed to Python. +Each time the Python function is invoked, the LAMMPS variable is +evaluated and its value is passed to the Python function. The *return* keyword is only needed if the Python function returns a value. The specified *varReturn* must be of the form v_name, where @@ -153,8 +185,9 @@ numeric or string value, as specified by the *format* keyword. As explained on the :doc:`variable ` doc page, the definition of a python-style variable associates a Python function name with the -variable. This must match the *func* setting for this command. For -example these two commands would be self-consistent: +variable. This must match the *Python function name* first argument of +the *python* command. For example these two commands would be +consistent: .. code-block:: LAMMPS @@ -163,21 +196,22 @@ example these two commands would be self-consistent: The two commands can appear in either order in the input script so long as both are specified before the Python function is invoked for -the first time. +the first time. Afterwards, the variable 'foo' is associated with +the Python function 'myMultiply'. -The *format* keyword must be used if the *input* or *return* keyword -is used. It defines an *fstring* with M characters, where M = sum of +The *format* keyword must be used if the *input* or *return* keywords +are used. It defines an *fstring* with M characters, where M = sum of number of inputs and outputs. The order of characters corresponds to the N inputs, followed by the return value (if it exists). Each character must be one of the following: "i" for integer, "f" for -floating point, "s" for string, or "p" for SELF. Each character -defines the type of the corresponding input or output value of the -Python function and affects the type conversion that is performed -internally as data is passed back and forth between LAMMPS and Python. -Note that it is permissible to use a :doc:`python-style variable ` in a LAMMPS command that allows for an -equal-style variable as an argument, but only if the output of the -Python function is flagged as a numeric value ("i" or "f") via the -*format* keyword. +floating point, "s" for string, or "p" for SELF. Each character defines +the type of the corresponding input or output value of the Python +function and affects the type conversion that is performed internally as +data is passed back and forth between LAMMPS and Python. Note that it +is permissible to use a :doc:`python-style variable ` in a +LAMMPS command that allows for an equal-style variable as an argument, +but only if the output of the Python function is flagged as a numeric +value ("i" or "f") via the *format* keyword. If the *return* keyword is used and the *format* keyword specifies the output as a string, then the default maximum length of that string is @@ -192,12 +226,13 @@ truncated. Either the *file*, *here*, or *exists* keyword must be used, but only one of them. These keywords specify what Python code to load into the -Python interpreter. The *file* keyword gives the name of a file, -which should end with a ".py" suffix, which contains Python code. The -code will be immediately loaded into and run in the "main" module of -the Python interpreter. Note that Python code which contains a -function definition does not "execute" the function when it is run; it -simply defines the function so that it can be invoked later. +Python interpreter. The *file* keyword gives the name of a file +containing Python code, which should end with a ".py" suffix. The code +will be immediately loaded into and run in the "main" module of the +Python interpreter. The Python code will be executed in parallel on all +MPI processes. Note that Python code which contains a function +definition does not "execute" the function when it is run; it simply +defines the function so that it can be invoked later. The *here* keyword does the same thing, except that the Python code follows as a single argument to the *here* keyword. This can be done @@ -208,14 +243,15 @@ proper indentation, blank lines, and comments, as desired. See the how triple quotes can be used as part of input script syntax. The *exists* keyword takes no argument. It means that Python code -containing the required Python function defined by the *func* setting, -is assumed to have been previously loaded by another python command. +containing the required Python function with the given name has already +been executed, for example by a *python source* command or in the same +file that was used previously with the *file* keyword. -Note that the Python code that is loaded and run must contain a -function with the specified *func* name. To operate properly when -later invoked, the function code must match the *input* and -*return* and *format* keywords specified by the python command. -Otherwise Python will generate an error. +Note that the Python code that is loaded and run must contain a function +with the specified function name. To operate properly when later +invoked, the function code must match the *input* and *return* and +*format* keywords specified by the python command. Otherwise Python +will generate an error. ---------- @@ -225,19 +261,19 @@ LAMMPS. Whether you load Python code from a file or directly from your input script, via the *file* and *here* keywords, the code can be identical. It must be indented properly as Python requires. It can contain -comments or blank lines. If the code is in your input script, it -cannot however contain triple-quoted Python strings, since that will -conflict with the triple-quote parsing that the LAMMPS input script -performs. +comments or blank lines. If the code is in your input script, it cannot +however contain triple-quoted Python strings, since that will conflict +with the triple-quote parsing that the LAMMPS input script performs. All the Python code you specify via one or more python commands is -loaded into the Python "main" module, i.e. __main__. The code can -define global variables or statements that are outside of function -definitions. It can contain multiple functions, only one of which -matches the *func* setting in the python command. This means you can -use the *file* keyword once to load several functions, and the -*exists* keyword thereafter in subsequent python commands to access -the other functions previously loaded. +loaded into the Python "main" module, i.e. ``__name__ == '__main__'``. +The code can define global variables, define global functions, define +classes or execute statements that are outside of function definitions. +It can contain multiple functions, only one of which matches the *func* +setting in the python command. This means you can use the *file* +keyword once to load several functions, and the *exists* keyword +thereafter in subsequent python commands to register the other functions +that were previously loaded with LAMMPS. A Python function you define (or more generally, the code you load) can import other Python modules or classes, it can make calls to other @@ -264,12 +300,13 @@ outside the function: nvaluelast = nvalue return nvalue -Nsteplast stores the previous timestep the function was invoked -(passed as an argument to the function). Nvaluelast stores the return -value computed on the last function invocation. If the function is -invoked again on the same timestep, the previous value is simply -returned, without re-computing it. The "global" statement inside the -Python function allows it to overwrite the global variables. +The variable 'nsteplast' stores the previous timestep the function was +invoked (passed as an argument to the function). The variable +'nvaluelast' stores the return value computed on the last function +invocation. If the function is invoked again on the same timestep, the +previous value is simply returned, without re-computing it. The +"global" statement inside the Python function allows it to overwrite the +global variables from within the local context of the function. Note that if you load Python code multiple times (via multiple python commands), you can overwrite previously loaded variables and functions @@ -285,19 +322,39 @@ copy of the Python function(s) you define. There is no connection between the Python interpreters running on different processors. This implies three important things. -First, if you put a print statement in your Python function, you will -see P copies of the output, when running on P processors. If the -prints occur at (nearly) the same time, the P copies of the output may -be mixed together. Welcome to the world of parallel programming and -debugging. +First, if you put a print or other statement creating output to the +screen in your Python function, you will see P copies of the output, +when running on P processors. If the prints occur at (nearly) the same +time, the P copies of the output may be mixed together. When loading +the LAMMPS Python module into the embedded Python interpreter, it is +possible to pass the pointer to the current LAMMPS class instance and +via the Python interface to the LAMMPS library interface, it is possible +to determine the MPI rank of the current process and thus adapt the +Python code so that output will only appear on MPI rank 0. The +following LAMMPS input demonstrates how this could be done. The text +'Hello, LAMMPS!' should be printed only once, even when running LAMMPS +in parallel. -Second, if your Python code loads modules that are not pre-loaded by -the Python library, then it will load the module from disk. This may -be a bottleneck if 1000s of processors try to load a module at the -same time. On some large supercomputers, loading of modules from disk -by Python may be disabled. In this case you would need to pre-build a -Python library that has the required modules pre-loaded and link -LAMMPS with that library. +.. code-block:: LAMMPS + + python python_hello input 1 SELF format p here """ + def python_hello(handle): + from lammps import lammps + lmp = lammps(ptr=handle) + me = lmp.extract_setting('world_rank') + if me == 0: + print('Hello, LAMMPS!') + """ + + python python_hello invoke + +If your Python code loads Python modules that are not pre-loaded by the +Python library, then it will load the module from disk. This may be a +bottleneck if 1000s of processors try to load a module at the same time. +On some large supercomputers, loading of modules from disk by Python may +be disabled. In this case you would need to pre-build a Python library +that has the required modules pre-loaded and link LAMMPS with that +library. Third, if your Python code calls back to LAMMPS (discussed in the next section) and causes LAMMPS to perform an MPI operation requires @@ -315,22 +372,21 @@ Python function is as follows: .. code-block:: python - def foo(lmpptr,...): + def foo(handle,...): from lammps import lammps - lmp = lammps(ptr=lmpptr) + lmp = lammps(ptr=handle) lmp.command('print "Hello from inside Python"') ... -The function definition must include a variable (lmpptr in this case) -which corresponds to SELF in the python command. The first line of the -function imports the :doc:`"lammps" Python module `. -The second line creates a Python object ``lmp`` which -wraps the instance of LAMMPS that called the function. The "ptr=lmpptr" -argument is what makes that happen. The third line invokes the -command() function in the LAMMPS library interface. It takes a single -string argument which is a LAMMPS input script command for LAMMPS to -execute, the same as if it appeared in your input script. In this case, -LAMMPS should output +The function definition must include a variable ('handle' in this case) +which corresponds to SELF in the *python* command. The first line of +the function imports the :doc:`"lammps" Python module `. +The second line creates a Python object ``lmp`` which wraps the instance +of LAMMPS that called the function. The 'ptr=handle' argument is what +makes that happen. The third line invokes the command() function in the +LAMMPS library interface. It takes a single string argument which is a +LAMMPS input script command for LAMMPS to execute, the same as if it +appeared in your input script. In this case, LAMMPS should output .. parsed-literal:: @@ -344,8 +400,8 @@ The :doc:`Python_head` page describes the syntax for how Python wraps the various functions included in the LAMMPS library interface. -A more interesting example is in the examples/python/in.python script -which loads and runs the following function from examples/python/funcs.py: +A more interesting example is in the ``examples/python/in.python`` script +which loads and runs the following function from ``examples/python/funcs.py``: .. code-block:: python @@ -495,24 +551,35 @@ Restrictions """""""""""" This command is part of the PYTHON package. It is only enabled if -LAMMPS was built with that package. See the :doc:`Build package ` page for more info. +LAMMPS was built with that package. See the :doc:`Build package +` page for more info. -Building LAMMPS with the PYTHON package will link LAMMPS with the -Python library on your system. Settings to enable this are in the +Building LAMMPS with the PYTHON package will link LAMMPS with the Python +library on your system. Settings to enable this are in the lib/python/Makefile.lammps file. See the lib/python/README file for information on those settings. -If you use Python code which calls back to LAMMPS, via the SELF input argument -explained above, there is an extra step required when building LAMMPS. LAMMPS -must also be built as a shared library and your Python function must be able to -load the :doc:`"lammps" Python module ` that wraps the LAMMPS -library interface. These are the same steps required to use Python by itself -to wrap LAMMPS. Details on these steps are explained on the :doc:`Python -` doc page. Note that it is important that the stand-alone LAMMPS -executable and the LAMMPS shared library be consistent (built from the same -source code files) in order for this to work. If the two have been built at +If you use Python code which calls back to LAMMPS, via the SELF input +argument explained above, there is an extra step required when building +LAMMPS. LAMMPS must also be built as a shared library and your Python +function must be able to load the :doc:`"lammps" Python module +` that wraps the LAMMPS library interface. These are the +same steps required to use Python by itself to wrap LAMMPS. Details on +these steps are explained on the :doc:`Python ` doc page. +Note that it is important that the stand-alone LAMMPS executable and the +LAMMPS shared library be consistent (built from the same source code +files) in order for this to work. If the two have been built at different times using different source files, problems may occur. +Another limitation of calling back to Python from the LAMMPS module +using the *python* command in a LAMMPS input is that both, the Python +interpreter and LAMMPS, must be linked to the same Python runtime as a +shared library. If the Python interpreter is linked to Python +statically (which seems to happen with Conda) then loading the shared +LAMMPS library will create a second python "main" module that hides the +one from the Python interpreter and all previous defined function and +global variables will become invisible. + Related commands """""""""""""""" diff --git a/doc/src/read_data.rst b/doc/src/read_data.rst index 858029caae..453208ed3f 100644 --- a/doc/src/read_data.rst +++ b/doc/src/read_data.rst @@ -71,8 +71,14 @@ Also see the explanation of the :doc:`-restart command-line switch This command can be used multiple times to add new atoms and their properties to an existing system by using the *add*, *offset*, and -*shift* keywords. See more details below, which includes the use case -for the *extra* keywords. +*shift* keywords. However, it is important to understand that several +system parameters, like the number of types of different kinds and per +atom settings are **locked in** after the first *read_data* command, +which means that no type ID (including its offset) may have a larger +value when processing additional data files than what is set by the +first data file and the corresponding *read_data* command options. See +more details on this situation below, which includes the use case for +the *extra* keywords. The *group* keyword adds all the atoms in the data file to the specified group-ID. The group will be created if it does not already @@ -334,16 +340,20 @@ and are called "tilt factors" because they are the amount of displacement applied to faces of an originally orthogonal box to transform it into the parallelepiped. -By default, the tilt factors (xy,xz,yz) can not skew the box more than -half the distance of the corresponding parallel box length. For -example, if xlo = 2 and xhi = 12, then the x box length is 10 and the -xy tilt factor must be between -5 and 5. Similarly, both xz and yz -must be between -(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is not -a limitation, since if the maximum tilt factor is 5 (as in this -example), then configurations with tilt = ..., -15, -5, 5, 15, 25, -... are all geometrically equivalent. If you wish to define a box -with tilt factors that exceed these limits, you can use the :doc:`box tilt ` command, with a setting of *large*\ ; a setting of -*small* is the default. +The tilt factors (xy,xz,yz) should not skew the box more than half the +distance of the corresponding parallel box length. For example, if +:math:`x_\text{lo} = 2` and :math:`x_\text{hi} = 12`, then the :math:`x` +box length is 10 and the :math:`xy` tilt factor must be between +:math:`-5` and :math:`5`. Similarly, both :math:`xz` and :math:`yz` +must be between :math:`-(x_\text{hi}-x_\text{lo})/2` and +:math:`+(y_\text{hi}-y_\text{lo})/2`. Note that this is not a +limitation, since if the maximum tilt factor is 5 (as in this example), +then configurations with tilt :math:`= \dots, -15`, :math:`-5`, +:math:`5`, :math:`15`, :math:`25, \dots` are all geometrically +equivalent. Simulations with large tilt factors will run inefficiently, +since they require more ghost atoms and thus more communication. With +very large tilt factors, LAMMPS will eventually produce incorrect +trajectories and stop with errors due to lost atoms or similar. See the :doc:`Howto triclinic ` page for a geometric description of triclinic boxes, as defined by LAMMPS, and diff --git a/doc/src/reset_atom_ids.rst b/doc/src/reset_atom_ids.rst deleted file mode 100644 index e83d65d546..0000000000 --- a/doc/src/reset_atom_ids.rst +++ /dev/null @@ -1,94 +0,0 @@ -.. index:: reset_atom_ids - -reset_atom_ids command -====================== - -Syntax -"""""" - -.. code-block:: LAMMPS - - reset_atom_ids keyword values ... - - * zero or more keyword/value pairs may be appended - * keyword = *sort* - -.. parsed-literal:: - - *sort* value = *yes* or *no* - -Examples -"""""""" - -.. code-block:: LAMMPS - - reset_atom_ids - reset_atom_ids sort yes - -Description -""""""""""" - -Reset atom IDs for the system, including all the global IDs stored -for bond, angle, dihedral, improper topology data. This will -create a set of IDs that are numbered contiguously from 1 to N -for a N atoms system. - -This can be useful to do after performing a "delete_atoms" command for -a molecular system. The delete_atoms compress yes option will not -perform this operation due to the existence of bond topology. It can -also be useful to do after any simulation which has lost atoms, -e.g. due to atoms moving outside a simulation box with fixed -boundaries (see the "boundary command"), or due to evaporation (see -the "fix evaporate" command). - -If the *sort* keyword is used with a setting of *yes*, then the -assignment of new atom IDs will be the same no matter how many -processors LAMMPS is running on. This is done by first doing a -spatial sort of all the atoms into bins and sorting them within each -bin. Because the set of bins is independent of the number of -processors, this enables a consistent assignment of new IDs to each -atom. - -This can be useful to do after using the "create_atoms" command and/or -"replicate" command. In general those commands do not guarantee -assignment of the same atom ID to the same physical atom when LAMMPS -is run on different numbers of processors. Enforcing consistent IDs -can be useful for debugging or comparing output from two different -runs. - -Note that the spatial sort requires communication of atom IDs and -coordinates between processors in an all-to-all manner. This is done -efficiently in LAMMPS, but it is more expensive than how atom IDs are -reset without sorting. - -Note that whether sorting or not, the resetting of IDs is not a -compression, where gaps in atom IDs are removed by decrementing atom -IDs that are larger. Instead the IDs for all atoms are erased, and -new IDs are assigned so that the atoms owned by an individual -processor have consecutive IDs, as the :doc:`create_atoms -` command explains. - -.. note:: - - If this command is used before a :doc:`pair style ` is - defined, an error about bond topology atom IDs not being found may - result. This is because the cutoff distance for ghost atom - communication was not sufficient to find atoms in bonds, angles, etc - that are owned by other processors. The :doc:`comm_modify cutoff ` command can be used to correct this issue. - Or you can define a pair style before using this command. If you do - the former, you should unset the comm_modify cutoff after using - reset_atom_ids so that subsequent communication is not inefficient. - -Restrictions -"""""""""""" -none - -Related commands -"""""""""""""""" - -:doc:`delete_atoms ` - -Default -""""""" - -By default, *sort* is no. diff --git a/doc/src/reset_atoms.rst b/doc/src/reset_atoms.rst new file mode 100644 index 0000000000..8643eaf725 --- /dev/null +++ b/doc/src/reset_atoms.rst @@ -0,0 +1,283 @@ +.. index:: reset_atoms + +reset_atoms command +=================== + +Syntax +"""""" + +.. code-block:: LAMMPS + + reset_atoms property arguments ... + +* property = *id* or *image* or *mol* +* additional arguments depend on the property + + .. code-block:: LAMMPS + + reset_atoms id keyword value ... + + * zero or more keyword/value pairs can be appended + * keyword = *sort* + + .. parsed-literal:: + + *sort* value = *yes* or *no* + + .. code-block:: LAMMPS + + reset_atoms image group-ID + + * group-ID = ID of group of atoms whose image flags will be reset + + .. code-block:: LAMMPS + + reset atoms mol group-ID keyword value ... + + * group-ID = ID of group of atoms whose molecule IDs will be reset + * zero or more keyword/value pairs can be appended + * keyword = *compress* or *offset* or *single* + + .. parsed-literal:: + + *compress* value = *yes* or *no* + *offset* value = *Noffset* >= -1 + *single* value = *yes* or *no* to treat single atoms (no bonds) as molecules + + +Examples +"""""""" + +.. code-block:: LAMMPS + + reset_atoms id + reset_atoms id sort yes + reset_atoms image all + reset_atoms image mobile + reset_atoms mol all + reset_atoms mol all offset 10 single yes + reset_atoms mol solvent compress yes offset 100 + reset_atoms mol solvent compress no + + +Description +""""""""""" + +.. versionadded:: TBD + +The *reset_atoms* command resets the values of a specified atom +property. In contrast to the set command, it does this in a +collective manner which resets the values for many atoms in a +self-consistent way. This is often useful when the simulated system +has undergone significant modifications like adding or removing atoms +or molecules, joining data files, changing bonds, or large-scale +diffusion. + +The new values can be thought of as a *reset*, similar to values atoms +would have if a new data file were being read or a new simulation +performed. Note that the set command also resets atom properties to +new values, but it treats each atom independently. + +The *property* setting can be *id* or *image* or *mol*. For *id*, the +IDs of all the atoms are reset to contiguous values. For *image*, the +image flags of atoms in the specified *group-ID* are reset so that at +least one atom in each molecule is in the simulation box (image flag = +0). For *mol*, the molecule IDs of all atoms are reset to contiguous +values. + +More details on these operations and their arguments or optional +keyword/value settings are given below. + +---------- + +*Property id* + +Reset atom IDs for the entire system, including all the global IDs +stored for bond, angle, dihedral, improper topology data. This will +create a set of IDs that are numbered contiguously from 1 to N for a N +atoms system. + +This can be useful to do after performing a "delete_atoms" command for +a molecular system. The delete_atoms compress yes option will not +perform this operation due to the existence of bond topology. It can +also be useful to do after any simulation which has lost atoms, +e.g. due to atoms moving outside a simulation box with fixed +boundaries (see the "boundary command"), or due to evaporation (see +the "fix evaporate" command). + +If the *sort* keyword is used with a setting of *yes*, then the +assignment of new atom IDs will be the same no matter how many +processors LAMMPS is running on. This is done by first doing a +spatial sort of all the atoms into bins and sorting them within each +bin. Because the set of bins is independent of the number of +processors, this enables a consistent assignment of new IDs to each +atom. + +This can be useful to do after using the "create_atoms" command and/or +"replicate" command. In general those commands do not guarantee +assignment of the same atom ID to the same physical atom when LAMMPS +is run on different numbers of processors. Enforcing consistent IDs +can be useful for debugging or comparing output from two different +runs. + +Note that the spatial sort requires communication of atom IDs and +coordinates between processors in an all-to-all manner. This is done +efficiently in LAMMPS, but it is more expensive than how atom IDs are +reset without sorting. + +Note that whether sorting or not, the resetting of IDs is not a +compression, where gaps in atom IDs are removed by decrementing atom +IDs that are larger. Instead the IDs for all atoms are erased, and +new IDs are assigned so that the atoms owned by an individual +processor have consecutive IDs, as the :doc:`create_atoms +` command explains. + +.. note:: + + If this command is used before a :doc:`pair style ` is + defined, an error about bond topology atom IDs not being found may + result. This is because the cutoff distance for ghost atom + communication was not sufficient to find atoms in bonds, angles, etc + that are owned by other processors. The :doc:`comm_modify cutoff + ` command can be used to correct this issue. Or you can + define a pair style before using this command. If you do the former, + you should unset the *comm_modify cutoff* after using *reset + atoms id* so that subsequent communication is not inefficient. + +---------- + +*Property image* + +Reset the image flags of atoms so that at least one atom in each +molecule has an image flag of 0. Molecular topology is respected so +that if the molecule straddles a periodic simulation box boundary, the +images flags of all atoms in the molecule will be consistent. This +avoids inconsistent image flags that could result from resetting all +image flags to zero with the :doc:`set ` command. + +.. note:: + + If the system has no bonds, there is no reason to use this command, + since image flags for different atoms do not need to be + consistent. Use the :doc:`set ` command with its *image* + keyword instead. + +Only image flags for atoms in the specified *group-ID* are reset; all +others remain unchanged. No check is made for whether the group +covers complete molecule fragments and thus whether the command will +result in inconsistent image flags. + +Molecular fragments are identified by the algorithm used by the +:doc:`compute fragment/atom ` command. For each +fragment the average of the largest and the smallest image flag in +each direction across all atoms in the fragment is computed and +subtracted from the current image flag in the same direction. + +This can be a useful operation to perform after running longer +equilibration runs of mobile systems where molecules would pass +through the system multiple times and thus produce non-zero image +flags. + +.. note:: + + Same as explained for the :doc:`compute fragment/atom + ` command, molecules are identified using the + current bond topology. This will **not** account for bonds broken by + the :doc:`bond_style quartic ` command, because this + bond style does not perform a full update of the bond topology data + structures within LAMMPS. In that case, using the :doc:`delete_bonds + all bond 0 remove ` will permanently delete such + broken bonds and should thus be used first. + +---------- + +*Property mol* + +Reset molecule IDs for a specified group of atoms based on current +bond connectivity. This will typically create a new set of molecule +IDs for atoms in the group. Only molecule IDs for atoms in the +specified *group-ID* are reset; molecule IDs for atoms not in the +group are not changed. + +For purposes of this operation, molecules are identified by the current +bond connectivity in the system, which may or may not be consistent with +the current molecule IDs. A molecule in this context is a set of atoms +connected to each other with explicit bonds. The specific algorithm +used is the one of :doc:`compute fragment/atom ` +Once the molecules are identified and a new molecule ID computed for +each, this command will update the current molecule ID for all atoms in +the group with the new molecule ID. Note that if the group excludes +atoms within molecules, one (physical) molecule may become two or more +(logical) molecules. For example if the group excludes atoms in the +middle of a linear chain, then each end of the chain is considered an +independent molecule and will be assigned a different molecule ID. + +This can be a useful operation to perform after running reactive +molecular dynamics run with :doc:`fix bond/react `, +:doc:`fix bond/create `, or :doc:`fix bond/break +`, all of which can change molecule topologies. It can +also be useful after molecules have been deleted with the +:doc:`delete_atoms ` command or after a simulation which +has lost molecules, e.g. via the :doc:`fix evaporate ` +command. + +The *compress* keyword determines how new molecule IDs are computed. If +the setting is *yes* (the default) and there are N molecules in the +group, the new molecule IDs will be a set of N contiguous values. See +the *offset* keyword for details on selecting the range of these values. +If the setting is *no*, the molecule ID of every atom in the molecule +will be set to the smallest atom ID of any atom in the molecule. + +The *single* keyword determines whether single atoms (not bonded to +another atom) are treated as one-atom molecules or not, based on the +*yes* or *no* setting. If the setting is *no* (the default), their +molecule IDs are set to 0. This setting can be important if the new +molecule IDs will be used as input to other commands such as +:doc:`compute chunk/atom molecule ` or :doc:`fix +rigid molecule `. + +The *offset* keyword is only used if the *compress* setting is *yes*. +Its default value is *Noffset* = -1. In that case, if the specified +group is *all*, then the new compressed molecule IDs will range from 1 +to N. If the specified group is not *all* and the largest molecule ID +of atoms outside that group is M, then the new compressed molecule IDs will +range from M+1 to M+N, to avoid collision with existing molecule +IDs. If an *Noffset* >= 0 is specified, then the new compressed +molecule IDs will range from *Noffset*\ +1 to *Noffset*\ +N. If the group +is not *all* there may be collisions with the molecule IDs of other atoms. + +.. note:: + + Same as explained for the :doc:`compute fragment/atom + ` command, molecules are identified using the + current bond topology. This will **not** account for bonds broken by + the :doc:`bond_style quartic ` command, because this + bond style does not perform a full update of the bond topology data + structures within LAMMPS. In that case, using the :doc:`delete_bonds + all bond 0 remove ` will permanently delete such broken + bonds and should thus be used first. + + +Restrictions +"""""""""""" + +The *image* property can only be used when the atom style supports bonds. + +Related commands +"""""""""""""""" + +:doc:`compute fragment/atom ` +:doc:`fix bond/react `, +:doc:`fix bond/create `, +:doc:`fix bond/break `, +:doc:`fix evaporate `, +:doc:`delete_atoms `, +:doc:`delete_bonds ` + +Defaults +"""""""" + +For property *id*, the default keyword setting is sort = no. + +For property *mol*, the default keyword settings are compress = yes, +single = no, and offset = -1. diff --git a/doc/src/reset_mol_ids.rst b/doc/src/reset_mol_ids.rst deleted file mode 100644 index 0d6063b3ef..0000000000 --- a/doc/src/reset_mol_ids.rst +++ /dev/null @@ -1,116 +0,0 @@ -.. index:: reset_mol_ids - -reset_mol_ids command -===================== - -Syntax -"""""" - -.. parsed-literal:: - - reset_mol_ids group-ID keyword value ... - -* group-ID = ID of group of atoms whose molecule IDs will be reset -* zero or more keyword/value pairs may be appended -* keyword = *compress* or *offset* or *single* - - .. parsed-literal:: - - *compress* value = *yes* or *no* - *offset* value = *Noffset* >= -1 - *single* value = *yes* or *no* to treat single atoms (no bonds) as molecules - -Examples -"""""""" - -.. code-block:: LAMMPS - - reset_mol_ids all - reset_mol_ids all offset 10 single yes - reset_mol_ids solvent compress yes offset 100 - reset_mol_ids solvent compress no - -Description -""""""""""" - -Reset molecule IDs for a group of atoms based on current bond -connectivity. This will typically create a new set of molecule IDs -for atoms in the group. Only molecule IDs for atoms in the specified -group are reset; molecule IDs for atoms not in the group are not -changed. - -For purposes of this operation, molecules are identified by the current -bond connectivity in the system, which may or may not be consistent with -the current molecule IDs. A molecule in this context is a set of atoms -connected to each other with explicit bonds. The specific algorithm -used is the one of :doc:`compute fragment/atom ` -Once the molecules are identified and a new molecule ID computed for -each, this command will update the current molecule ID for all atoms in -the group with the new molecule ID. Note that if the group excludes -atoms within molecules, one (physical) molecule may become two or more -(logical) molecules. For example if the group excludes atoms in the -middle of a linear chain, then each end of the chain is considered an -independent molecule and will be assigned a different molecule ID. - -This can be a useful operation to perform after running reactive -molecular dynamics run with :doc:`fix bond/react `, -:doc:`fix bond/create `, or :doc:`fix bond/break -`, all of which can change molecule topologies. It can -also be useful after molecules have been deleted with the -:doc:`delete_atoms ` command or after a simulation which -has lost molecules, e.g. via the :doc:`fix evaporate ` -command. - -The *compress* keyword determines how new molecule IDs are computed. If -the setting is *yes* (the default) and there are N molecules in the -group, the new molecule IDs will be a set of N contiguous values. See -the *offset* keyword for details on selecting the range of these values. -If the setting is *no*, the molecule ID of every atom in the molecule -will be set to the smallest atom ID of any atom in the molecule. - -The *single* keyword determines whether single atoms (not bonded to -another atom) are treated as one-atom molecules or not, based on the -*yes* or *no* setting. If the setting is *no* (the default), their -molecule IDs are set to 0. This setting can be important if the new -molecule IDs will be used as input to other commands such as -:doc:`compute chunk/atom molecule ` or :doc:`fix -rigid molecule `. - -The *offset* keyword is only used if the *compress* setting is *yes*. -Its default value is *Noffset* = -1. In that case, if the specified -group is *all*, then the new compressed molecule IDs will range from 1 -to N. If the specified group is not *all* and the largest molecule ID -of atoms outside that group is M, then the new compressed molecule IDs will -range from M+1 to M+N, to avoid collision with existing molecule -IDs. If an *Noffset* >= 0 is specified, then the new compressed -molecule IDs will range from *Noffset*\ +1 to *Noffset*\ +N. If the group -is not *all* there may be collisions with the molecule IDs of other atoms. - -.. note:: - - The same as explained for the :doc:`compute fragment/atom - ` command, molecules are identified using the - current bond topology. This will not account for bonds broken by - the :doc:`bond_style quartic ` command because it - does not perform a full update of the bond topology data structures - within LAMMPS. - -Restrictions -"""""""""""" -none - -Related commands -"""""""""""""""" - -:doc:`reset_atom_ids `, :doc:`fix bond/react `, -:doc:`fix bond/create `, -:doc:`fix bond/break `, -:doc:`fix evaporate `, -:doc:`delete_atoms `, -:doc:`compute fragment/atom ` - -Default -""""""" - -The default keyword settings are compress = yes, single = no, and -offset = -1. diff --git a/doc/src/run_style.rst b/doc/src/run_style.rst index e8ba264495..fdbdcd228c 100644 --- a/doc/src/run_style.rst +++ b/doc/src/run_style.rst @@ -101,7 +101,7 @@ Py2 by Pz2, then Px1 must be an integer multiple of Px2, and similarly for Py1 a multiple of Py2, and Pz1 a multiple of Pz2. Typically the best way to do this is to let the first partition choose -its onn optimal layout, then require the second partition's layout to +its own optimal layout, then require the second partition's layout to match the integer multiple constraint. See the :doc:`processors ` command with its *part* keyword for a way to control this, e.g. @@ -221,7 +221,7 @@ impropers, and dihedrals can be computed on this innermost 0.5 fs step. The outermost timestep cannot be greater than 4.0 fs without risking energy drift. Smooth switching of forces between the levels of the rRESPA hierarchy is also necessary to avoid drift, and a 1-2 -angstrom "healing distance" (the distance between the outer and inner +Angstrom "healing distance" (the distance between the outer and inner cutoffs) works reasonably well. We thus recommend the following settings for use of the *respa* style without SHAKE in biomolecular simulations: @@ -277,7 +277,7 @@ Even a LJ system can benefit from rRESPA if the interactions are divided by the inner, middle and outer keywords. A 2-fold or more speedup can be obtained while maintaining good energy conservation. In real units, for a pure LJ fluid at liquid density, with a sigma of -3.0 angstroms, and epsilon of 0.1 Kcal/mol, the following settings +3.0 Angstroms, and epsilon of 0.1 kcal/mol, the following settings seem to work well: .. code-block:: LAMMPS diff --git a/doc/src/tad.rst b/doc/src/tad.rst index b36ad2e431..cc6d52d415 100644 --- a/doc/src/tad.rst +++ b/doc/src/tad.rst @@ -18,7 +18,7 @@ Syntax * tmax = reciprocal of lowest expected pre-exponential factor (time units) * compute-ID = ID of the compute used for event detection * zero or more keyword/value pairs may be appended -* keyword = *min* or *neb* or *min_style* or *neb_style* or *neb_log* +* keyword = *min* or *neb* or *neb_style* or *neb_step* or *neb_log* .. parsed-literal:: diff --git a/doc/src/thermo_modify.rst b/doc/src/thermo_modify.rst index 2600b337bc..1bee26c289 100644 --- a/doc/src/thermo_modify.rst +++ b/doc/src/thermo_modify.rst @@ -28,6 +28,7 @@ Syntax *format* values = *line* string, *int* string, *float* string, ID string, or *none* string = C-style format string ID = integer from 1 to N, or integer from -1 to -N, where N = # of quantities being output + *or* an integer range such as 2*6 (negative values are not allowed) *or* a thermo keyword or reference to compute, fix, property or variable. *temp* value = compute ID that calculates a temperature *press* value = compute ID that calculates a pressure @@ -65,10 +66,10 @@ atom can be "lost" if it moves across a non-periodic simulation box :doc:`boundary ` or if it moves more than a box length outside the simulation domain (or more than a processor sub-domain length) before reneighboring occurs. The latter case is typically due to bad -dynamics, e.g. too large a timestep or huge forces and velocities. If +dynamics (e.g., too large a time step and/or huge forces and velocities). If the value is *ignore*, LAMMPS does not check for lost atoms. If the value is *error* or *warn*, LAMMPS checks and either issues an error or -warning. The code will exit with an error and continue with a warning. +warning. The simulation will exit with an error and continue with a warning. A warning will only be issued once, the first time an atom is lost. This can be a useful debugging option. @@ -89,10 +90,10 @@ that should be investigated, but LAMMPS cannot determine for certain whether they are an indication of an error. Some warning messages are printed during a run (or immediately before) -each time a specific MPI rank encounters the issue, e.g. bonds that are -stretched too far or dihedrals in extreme configurations. These number +each time a specific MPI rank encounters the issue (e.g., bonds that are +stretched too far or dihedrals in extreme configurations). These number of these can quickly blow up the size of the log file and screen output. -Thus a limit of 100 warning messages is applied by default. The warning +Thus, a limit of 100 warning messages is applied by default. The warning count is applied to the entire input unless reset with a ``thermo_modify warn reset`` command. If there are more warnings than the limit, LAMMPS will print one final warning that it will not print any additional @@ -160,8 +161,8 @@ for a column or field of thermodynamic output. The setting for *ID string* replaces the default text with the provided string. *ID* can be a positive integer when it represents the column number counting from the left, a negative integer when it represents the column number from -the right (i.e. -1 is the last column/keyword), or a thermo keyword (or -compute, fix, property, or variable reference) and then it replaces the +the right (i.e., :math:`-1` is the last column/keyword), or a thermo keyword +(or compute, fix, property, or variable reference) and then it replaces the string for that specific thermo keyword. The *colname* keyword can be used multiple times. If multiple *colname* @@ -171,19 +172,22 @@ to their default values. The *format* keyword can be used to change the default numeric format of any of quantities the :doc:`thermo_style ` command -outputs. All the specified format strings are C-style formats, e.g. as -used by the C/C++ printf() command. The *line* keyword takes a single +outputs. All the specified format strings are C-style formats (i.e., as +used by the C/C++ printf() command). The *line* keyword takes a single argument which is the format string for the entire line of thermo -output, with N fields, which you must enclose in quotes if it is more +output, with :math:`N` fields, which you must enclose in quotes if it is more than one field. The *int* and *float* keywords take a single format argument and are applied to all integer or floating-point quantities output. The setting for *ID string* also takes a single format argument -which is used for the indexed value in each line. The interpretation is -the same as for *colname*, i.e. a positive integer is the n-th value +that is used for the indexed value in each line. The interpretation is +the same as for *colname* (i.e., a positive integer is the n-th value corresponding to the n-th thermo keyword, a negative integer is counting -backwards, and a string matches the entry with the thermo keyword., -e.g. the fifth column is output in high precision for "format 5 %20.15g" -and the pair energy for "format epair %20.15g". +backwards, and a string matches the entry with the thermo keyword). +For example, the fifth column is output in high precision for +"format 5 %20.15g", and the pair energy for "format epair %20.15g". +The *ID* field can be a range, such as "3\*6", "*", "2*", or "\*3"; +in such cases, all fields in the range (inclusive) are set to the specified +format string. Ranges containing negative numbers are not supported. The *format* keyword can be used multiple times. The precedence is that for each value in a line of output, the *ID* format (if specified) @@ -201,8 +205,8 @@ settings, reverting all values to their default format. to the corresponding 8-byte form when it is applied to those keywords. However, when specifying the *line* option or *format ID string* option for *step* and *natoms*, you should specify a format - string appropriate for an 8-byte signed integer, e.g. one with "%ld" - or "%lld" depending on the platform. + string appropriate for an 8-byte signed integer (i.e., one with "%ld" + or "%lld", depending on the platform). The *temp* keyword is used to determine how thermodynamic temperature is calculated, which is used by all thermo quantities that require a diff --git a/doc/src/units.rst b/doc/src/units.rst index da81c17078..2554806fb5 100644 --- a/doc/src/units.rst +++ b/doc/src/units.rst @@ -30,7 +30,7 @@ and dump files. Typically, this command is used at the very beginning of an input script. For all units except *lj*, LAMMPS uses physical constants from -www.physics.nist.gov. For the definition of Kcal in real units, +www.physics.nist.gov. For the definition of kcal in real units, LAMMPS uses the thermochemical calorie = 4.184 J. The choice you make for units simply sets some internal conversion @@ -102,17 +102,17 @@ For style *real*, these are the units: * mass = grams/mole * distance = Angstroms * time = femtoseconds -* energy = Kcal/mole +* energy = kcal/mol * velocity = Angstroms/femtosecond -* force = Kcal/mole-Angstrom -* torque = Kcal/mole +* force = (kcal/mol)/Angstrom +* torque = kcal/mol * temperature = Kelvin * pressure = atmospheres * dynamic viscosity = Poise * charge = multiple of electron charge (1.0 is a proton) * dipole = charge\*Angstroms * electric field = volts/Angstrom -* density = gram/cm\^dim +* density = g/cm\^dim For style *metal*, these are the units: diff --git a/doc/src/variable.rst b/doc/src/variable.rst index 969c3f1fe2..fce5a62a55 100644 --- a/doc/src/variable.rst +++ b/doc/src/variable.rst @@ -213,6 +213,9 @@ from the list of active variables, and is thus available to be re-defined in a subsequent variable command. The *delete* style does the same thing. +Variables are **not** deleted by the :doc:`clear ` command with +the exception of atomfile-style variables. + ---------- The :doc:`Commands parse ` page explains how @@ -265,7 +268,7 @@ the first string is assigned to the variable. Each time a string is assigned. All processors assign the same string to the variable. -*Index* style variables with a single string value can also be set by +Index-style variables with a single string value can also be set by using the :doc:`command-line switch -var `. The *loop* style is identical to the *index* style except that the @@ -285,7 +288,7 @@ be one string for each processor partition or "world". LAMMPS can be run with multiple partitions via the :doc:`-partition command-line switch `. This variable command assigns one string to each world. All processors in the world are assigned the same string. -The next command cannot be used with *equal* style variables, since +The next command cannot be used with equal-style variables, since there is only one value per world. This style of variable is useful when you wish to run different simulations on different partitions, or when performing a parallel tempering simulation (see the :doc:`temper @@ -303,7 +306,7 @@ string. This continues until all the variable strings are consumed. Thus, this command can be used to run 50 simulations on 8 processor partitions. The simulations will be run one after the other on whatever partition becomes available, until they are all finished. -*Universe* style variables are incremented using the files +Universe-style variables are incremented using the files "tmp.lammps.variable" and "tmp.lammps.variable.lock" which you will see in your directory during such a LAMMPS run. @@ -319,11 +322,12 @@ in the input script, or if the script is read again in a loop. The other difference is that *string* performs variable substitution even if the string parameter is quoted. -For the *format* style, an equal-style variable is specified along -with a C-style format string, e.g. "%f" or "%.10g", which must be -appropriate for formatting a double-precision floating-point value. -The default format is "%.15g". This variable style allows an -equal-style variable to be formatted precisely when it is evaluated. +For the *format* style, an equal-style or compatible variable is +specified along with a C-style format string, e.g. "%f" or "%.10g", +which must be appropriate for formatting a double-precision +floating-point value and may not have extra characters. The default +format is "%.15g". This variable style allows an equal-style variable +to be formatted precisely when it is evaluated. Note that if you simply wish to print a variable value with desired precision to the screen or logfile via the :doc:`print ` or @@ -340,7 +344,9 @@ variable can be used to adapt the behavior of LAMMPS input scripts via environment variable settings, or to retrieve information that has been previously stored with the :doc:`shell putenv ` command. Note that because environment variable settings are stored by the -operating systems, they persist beyond a :doc:`clear ` command. +operating systems, they persist even if the corresponding *getenv* +style variable is deleted, and also are set for sub-shells executed +by the :doc:`shell ` command. For the *file* style, a filename is provided which contains a list of strings to assign to the variable, one per line. The strings can be @@ -372,7 +378,9 @@ This means the variable can then be evaluated as many times as desired and will return those values. There are two ways to cause the next set of per-atom values from the file to be read: use the :doc:`next ` command or the next() function in an atom-style -variable, as discussed below. +variable, as discussed below. Unlike most variable styles +atomfile-style variables are **deleted** during a :doc:`clear ` +command. The rules for formatting the file are as follows. Each time a set of per-atom values is read, a non-blank line is searched for in the file. diff --git a/doc/src/velocity.rst b/doc/src/velocity.rst index cd283de399..c1afaf2edc 100644 --- a/doc/src/velocity.rst +++ b/doc/src/velocity.rst @@ -33,7 +33,7 @@ Syntax *angular* = zero the angular momentum * zero or more keyword/value pairs may be appended -* keyword = *dist* or *sum* or *mom* or *rot* or *temp* or *bias* or *loop* or *units* +* keyword = *dist* or *sum* or *mom* or *rot* or *temp* or *bias* or *loop* or *rigid* or *units* .. parsed-literal:: diff --git a/doc/utils/check-packages.py b/doc/utils/check-packages.py old mode 100755 new mode 100644 diff --git a/doc/utils/check-styles.py b/doc/utils/check-styles.py old mode 100755 new mode 100644 diff --git a/doc/utils/converters/lammpsdoc/doc_anchor_check.py b/doc/utils/converters/lammpsdoc/doc_anchor_check.py old mode 100755 new mode 100644 diff --git a/doc/utils/converters/lammpsdoc/rst_anchor_check.py b/doc/utils/converters/lammpsdoc/rst_anchor_check.py old mode 100755 new mode 100644 diff --git a/doc/utils/converters/lammpsdoc/txt2html.py b/doc/utils/converters/lammpsdoc/txt2html.py old mode 100755 new mode 100644 index ed9f47a4e4..93f1b257a5 --- a/doc/utils/converters/lammpsdoc/txt2html.py +++ b/doc/utils/converters/lammpsdoc/txt2html.py @@ -3,7 +3,7 @@ # # Python rewrite of txt2html # The original txt2html was written in C by Steve Plimpton -# (http://www.cs.sandia.gov/cgi-bin/sjplimp/) +# (https://sjplimp.github.io/) # # Copyright (C) 2015 Richard Berger # diff --git a/doc/utils/converters/lammpsdoc/txt2rst.py b/doc/utils/converters/lammpsdoc/txt2rst.py old mode 100755 new mode 100644 diff --git a/doc/utils/fixup_headers.py b/doc/utils/fixup_headers.py old mode 100755 new mode 100644 diff --git a/doc/utils/sphinx-config/LAMMPSLexer.py b/doc/utils/sphinx-config/LAMMPSLexer.py index 116cdb7388..c8826a9ed6 100644 --- a/doc/utils/sphinx-config/LAMMPSLexer.py +++ b/doc/utils/sphinx-config/LAMMPSLexer.py @@ -1,25 +1,33 @@ from pygments.lexer import RegexLexer, words, include, default from pygments.token import * -LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "atom_modify", "atom_style", -"balance", "bond_coeff", "bond_style", "bond_write", "boundary", "box", -"clear", "comm_modify", "comm_style", -"compute_modify", "create_atoms", "create_bonds", "create_box", "delete_atoms", -"delete_bonds", "dielectric", "dihedral_coeff", "dihedral_style", "dimension", -"displace_atoms", "dump_modify", "dynamical_matrix", "echo", "elif", "else", -"fix_modify", "group2ndx", "hyper", "if", "improper_coeff", -"improper_style", "include", "info", "jump", "kim", -"kspace_modify", "kspace_style", "label", "lattice", -"log", "mass", "message", "minimize", "min_modify", "min_style", "molecule", -"ndx2group", "neb", "neb/spin", "neighbor", "neigh_modify", "newton", "next", -"package", "pair_coeff", "pair_modify", "pair_style", "pair_write", -"partition", "prd", "print", "processors", "python", "quit", "read_data", -"read_dump", "read_restart", "replicate", "rerun", "reset_ids", -"reset_timestep", "restart", "run", "run_style", "server", "set", "shell", -"special_bonds", "suffix", "tad", "temper", "temper/grem", "temper/npt", "then", -"thermo", "thermo_modify", "thermo_style", "third_order", "timer", "timestep", -"units", "velocity", "write_coeff", -"write_data", "write_restart") +LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "atom_modify", + "atom_style", "balance", "bond_coeff", "bond_style", + "bond_write", "boundary", "clear", "comm_modify", + "comm_style", "compute_modify", "create_atoms", + "create_bonds", "create_box", "delete_atoms", + "delete_bonds", "dielectric", "dihedral_coeff", + "dihedral_style", "dimension", "displace_atoms", + "dump_modify", "dynamical_matrix", "echo", "elif", + "else", "fix_modify", "group2ndx", "hyper", "if", + "improper_coeff", "improper_style", "include", + "info", "jump", "kim", "kspace_modify", + "kspace_style", "label", "labelmap", "lattice", + "log", "mass", "mdi", "message", "minimize", + "min_modify", "min_style", "molecule", "ndx2group", + "neb", "neb/spin", "neighbor", "neigh_modify", + "newton", "next", "package", "pair_coeff", + "pair_modify", "pair_style", "pair_write", + "partition", "plugin", "prd", "print", "processors", + "python", "quit", "read_data", "read_dump", + "read_restart", "replicate", "rerun", "reset_atoms", + "reset_timestep", "restart", "run", "run_style", + "server", "set", "shell", "special_bonds", "suffix", + "tad", "temper", "temper/grem", "temper/npt", "then", + "thermo", "thermo_modify", "thermo_style", + "third_order", "timer", "timestep", "units", + "velocity", "write_coeff", "write_data", + "write_restart") #fix ID group-ID style args #compute ID group-ID style args diff --git a/doc/utils/sphinx-config/_themes/lammps_theme/static/css/theme.css b/doc/utils/sphinx-config/_themes/lammps_theme/static/css/theme.css index 0d9ae7e1a4..5f393d1f32 100644 --- a/doc/utils/sphinx-config/_themes/lammps_theme/static/css/theme.css +++ b/doc/utils/sphinx-config/_themes/lammps_theme/static/css/theme.css @@ -1,4 +1,4 @@ html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.rst-content .wy-breadcrumbs li tt,.wy-breadcrumbs li .rst-content tt,.wy-breadcrumbs li code{padding:5px;border:none;background:none}.rst-content .wy-breadcrumbs li tt.literal,.wy-breadcrumbs li .rst-content tt.literal,.wy-breadcrumbs li code.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.field-list>dt:after,html.writer-html5 .rst-content dl.footnote>dt:after{content:":"}html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.footnote>dt>span.brackets{margin-right:.5rem}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{font-style:italic}html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.footnote>dd p,html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.rst-content .wy-breadcrumbs li tt,.wy-breadcrumbs li .rst-content tt,.wy-breadcrumbs li code{padding:5px;border:none;background:none}.rst-content .wy-breadcrumbs li tt.literal,.wy-breadcrumbs li .rst-content tt.literal,.wy-breadcrumbs li code.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.field-list>dt:after,html.writer-html5 .rst-content dl.footnote>dt:after{content:""}html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.footnote>dt>span.brackets{margin-right:.5rem}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{font-style:italic}html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.footnote>dd p,html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} diff --git a/doc/utils/sphinx-config/conf.py.in b/doc/utils/sphinx-config/conf.py.in index c89aa8b4ae..9765bd0c11 100644 --- a/doc/utils/sphinx-config/conf.py.in +++ b/doc/utils/sphinx-config/conf.py.in @@ -38,7 +38,7 @@ sys.path.append(os.path.join(LAMMPS_DOC_DIR, 'src', '_ext')) # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' +needs_sphinx = '5.2.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom @@ -53,10 +53,6 @@ extensions = [ 'tab_or_note', 'breathe', ] -# 2017-12-07: commented out, since this package is broken with Sphinx 16.x -# yet we can no longer use Sphinx 15.x, since that breaks with -# newer version of the multiprocessor module. -# 'sphinxcontrib.images', images_config = { 'default_image_width' : '25%', @@ -159,7 +155,6 @@ pygments_style = 'default' # If true, keep warnings as "system message" paragraphs in the built documents. #keep_warnings = False - # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for @@ -264,8 +259,18 @@ else: html_math_renderer = 'mathjax' # use relative path for mathjax, so it is looked for in the -# html tree and the manual becomes readable when offline +# html tree and the manual becomes readable when offline mathjax_path = 'mathjax/es5/tex-mml-chtml.js' + +# hack to enable use of \AA in :math: +rst_prolog = r""" + +.. only:: html + + :math:`\renewcommand{\AA}{\text{Å}}` + +""" + # -- Options for LaTeX output --------------------------------------------- latex_elements = { @@ -278,6 +283,48 @@ latex_elements = { # Additional stuff for the LaTeX preamble. 'preamble': r''' \setcounter{tocdepth}{2} +\renewcommand{\sfdefault}{ptm} % Use Times New Roman font for \textrm +\renewcommand{\sfdefault}{phv} % Use Helvetica font for \textsf +% Set up math fonts to match text fonts +\DeclareSymbolFont{operators} {OT1}{ptm}{m}{n} +\DeclareSymbolFont{bold} {OT1}{ptm}{bx}{n} +\DeclareSymbolFont{italic} {OT1}{ptm}{m}{it} +\DeclareSymbolFont{extraops} {OT1}{ztmcm}{m}{n} +\DeclareSymbolFont{letters} {OML}{ztmcm}{m}{it} +\DeclareSymbolFont{largesymbols}{OMX}{ztmcm}{m}{n} +% symbols (and \mathcal) are taken from computer modern. +% setup mappings +\DeclareSymbolFontAlphabet{\mathrm} {operators} +\DeclareSymbolFontAlphabet{\mathnormal}{letters} +\DeclareMathAlphabet{\mathnormal}{OT1}{ptm}{m}{n} +\DeclareMathAlphabet{\mathrm}{OT1}{ptm}{m}{n} +\DeclareMathAlphabet{\mathbf}{OT1}{ptm}{bx}{n} +\DeclareMathAlphabet{\mathit}{OT1}{ptm}{m}{it} +\DeclareMathAlphabet{\mathtt}{OT1}{pcr}{m}{n} +\SetMathAlphabet\mathit{bold}{OT1}{ptm}{bx}{it} +% declare missing operators +\DeclareMathSymbol{\omicron}{0}{operators}{`\o} +\DeclareMathSymbol{\Gamma}{\mathalpha}{extraops}{"00} +\DeclareMathSymbol{\Delta}{\mathalpha}{extraops}{"01} +\DeclareMathSymbol{\Theta}{\mathalpha}{extraops}{"02} +\DeclareMathSymbol{\Lambda}{\mathalpha}{extraops}{"03} +\DeclareMathSymbol{\Xi}{\mathalpha}{extraops}{"04} +\DeclareMathSymbol{\Pi}{\mathalpha}{extraops}{"05} +\DeclareMathSymbol{\Sigma}{\mathalpha}{extraops}{"06} +\DeclareMathSymbol{\Upsilon}{\mathalpha}{extraops}{"07} +\DeclareMathSymbol{\Phi}{\mathalpha}{extraops}{"08} +\DeclareMathSymbol{\Psi}{\mathalpha}{extraops}{"09} +\DeclareMathSymbol{\Omega}{\mathalpha}{extraops}{"0A} + +\renewcommand{\AA}{\mbox{\textrm{\r{A}}}} +% Make ToC number fields wider to accommodate sections with >= 100 subsections +% or >= 10 subsections with >= 10 subsubsections +\makeatletter +\renewcommand*{\sphinxtableofcontentshook}{% + \renewcommand*\l@section{\@dottedtocline{1}{1.5em}{3.1em}} + \renewcommand*\l@subsection{\@dottedtocline{2}{4.6em}{4.5em}} +} +\makeatother ''' } @@ -362,9 +409,9 @@ at Sandia National Laboratories, a US Department of Energy facility, with funding from the DOE. It is an open-source code, distributed freely under the terms of the GNU Public License (GPL). -The primary author of the code is Steve Plimpton, who can be emailed -at sjplimp@sandia.gov. The LAMMPS WWW Site at www.lammps.org has -more information about the code and its uses. +The LAMMPS developers can be contacted at developers@lammps.org. +The LAMMPS WWW Site at www.lammps.org has more information about +the code and its uses. """ epub_author = 'The LAMMPS Developers' diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index b87e77e861..ec7a54349d 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -78,6 +78,7 @@ Alexey ali aliceblue Allinger +allocatable allocator allocators allosws @@ -122,6 +123,7 @@ Antonelli api Apoorva Appl +Appshaw apptainer Apu arallel @@ -180,6 +182,7 @@ Avalos avalue aveforce Avendano +Averett avi AVX awpmd @@ -225,6 +228,7 @@ Bartels Bartelt barycenter barye +basename Bashford bashrc Baskes @@ -236,6 +240,7 @@ bcolor bdiam bdw Beckman +Becton Belak Bellott bem @@ -252,6 +257,7 @@ berlin Berne Bertotti Bessarab +bessel Beutler Bext Bfrac @@ -269,6 +275,7 @@ bilayers binsize binstyle binutils +Biomech biomolecular biomolecule Biomolecules @@ -442,6 +449,7 @@ checkbox checkmark checkqeq checksum +chemflag chemistries Chemnitz Cheng @@ -599,9 +607,11 @@ Cummins Cundall cundall Curk +curv Cusentino customIDs cutbond +cutghost cuthi cutinner cutlo @@ -657,6 +667,7 @@ Dcut de dE De +deallocate deallocated debye Debye @@ -691,6 +702,7 @@ dequidt Dequidt der dereference +dereferenced derekt Deresiewicz Derjagin @@ -730,6 +742,7 @@ diel Dietz differentiable diffusively +diffusivities diffusivity dihedral dihedrals @@ -741,6 +754,7 @@ dimensionality dimensioned dimgray dipolar +dipoleflag dir Direc dirname @@ -749,6 +763,7 @@ discretization discretized discretizing disp +dispersionflag dissipative Dissipative distharm @@ -811,6 +826,7 @@ du dU Ducastelle Dudarev +Dufils Duin Dullweber dumpfile @@ -898,6 +914,7 @@ elastance Electroneg electronegative electronegativity +electroneutrality Eleftheriou ElementN elementset @@ -920,6 +937,7 @@ Emmrich emol eN endian +endocytosis energetics energyCorr eng @@ -962,7 +980,6 @@ equilization equipartitioning eradius erate -erc Ercolessi Erdmann erf @@ -1013,12 +1030,14 @@ evirials ew ewald Ewald +ewaldflag excitations excv exe executables extep extrema +extxyz exy ey ez @@ -1085,8 +1104,10 @@ Fincham Fint fingerprintconstants fingerprintsperelement +finitecutflag Finnis Fiorin +fitpod fixID fj Fji @@ -1129,6 +1150,7 @@ Forschungszentrum fortran Fortran Fosado +fourbody fourier fp fphi @@ -1151,6 +1173,7 @@ ftm ftol fuer fugacity +Fu Fumi func funcs @@ -1261,6 +1284,7 @@ greenyellow Greffet grem gREM +Grepl Grest Grigera Grimme @@ -1302,6 +1326,7 @@ Hamaker Hamel Hammerschmidt Hanley +Hanna haptic Haque Hara @@ -1486,6 +1511,7 @@ interfacial interial interlayer intermolecular +interoperable Interparticle interstitials intertube @@ -1498,6 +1524,9 @@ inumeric inv invariants inversed +invertible +invertibility +ionicities ionizable ionocovalent iostreams @@ -1617,6 +1646,7 @@ Kalia Kamberaj Kantorovich Kapfer +Karhunen Karls Karlsruhe Karniadakis @@ -1652,6 +1682,7 @@ kepler keV Keyes keyfile +Kfoury Khersonskii Khrapak Khvostov @@ -1870,6 +1901,7 @@ ln localhost localTemp localvectors +Loeve Loewen logfile logfreq @@ -1907,6 +1939,7 @@ lwsock lx ly Lybrand +Lykotrafitis lyon Lysogorskiy Lyulin @@ -1920,6 +1953,7 @@ Mackrodt MacOS Macromolecules macroparticle +Maday Madura Magda Magdeburg @@ -2017,6 +2051,7 @@ MEAM meamf meanDist mech +Mechanobiology Mecke mediumaquamarine mediumblue @@ -2183,6 +2218,7 @@ msd msi MSI msm +msmflag msse msst Mtchell @@ -2233,6 +2269,7 @@ MxN myCompute myIndex mylammps +myMultiply MyPool mysocket mySpin @@ -2261,6 +2298,8 @@ nanometer nanometers nanoparticle nanoparticles +nanopores +nanostructures nanotube Nanotube nanotubes @@ -2344,6 +2383,7 @@ Ng nghost Nghost Ngpu +ngpus Ngyuen nh nharmonic @@ -2369,6 +2409,7 @@ nktv nl nlayers nlen +Nlimit nlines Nlines nlo @@ -2387,6 +2428,7 @@ Nmols nn nnodes npits +npj nO Nocedal nocite @@ -2457,7 +2499,8 @@ nsq Nstart nstats Nstep -Nsteplast +Nsteps +nsteplast Nstop nsub Nsw @@ -2487,7 +2530,7 @@ numpy Numpy Nurdin Nvalue -Nvaluelast +nvaluelast Nvalues nvc nvcc @@ -2531,10 +2574,10 @@ Omelyan omp OMP oneAPI +onebody onelevel oneway onlysalt -onn ons OO Oord @@ -2613,6 +2656,7 @@ Pastewka pathangle pathname pathnames +Patera Patomtrans Pattnaik Pavese @@ -2732,6 +2776,7 @@ Polym polymorph polymorphism Ponder +Ponte popen Popoola Popov @@ -2753,6 +2798,7 @@ PowerShell ppme ppn pppm +pppmflag Prakash Praprotnik prd @@ -2907,6 +2953,7 @@ Rcmx Rcmy Rco Rcut +rcut rcutfac rdc rdf @@ -2932,6 +2979,7 @@ refactoring reflectionstyle Reinders reinit +reinitflag relaxbox relink relres @@ -2999,6 +3047,7 @@ Rij RIj Rik Rin +rin Rinaldi Rino RiRj @@ -3074,6 +3123,7 @@ Rutuparna rx rxd rxnave +rxnbond rxnsum ry Ryckaert @@ -3134,9 +3184,11 @@ sdpd SDPD se seagreen +Searles Secor sectoring sed +Seddon segmental Seifert Seleson @@ -3163,6 +3215,7 @@ sfree Sg Shan Shanno +Shapeev shapex shapey shapez @@ -3262,6 +3315,7 @@ SPH spica SPICA Spickermann +spinflag splined spparks Sprik @@ -3447,6 +3501,7 @@ thermo thermochemical thermochemistry thermodynamically +thermopotentiostat Thermophysical thermostatted thermostatting @@ -3619,6 +3674,7 @@ Universite unix unmaintained unoptimized +unordered unpadded unphysical unphysically @@ -3684,6 +3740,7 @@ vdw vdW vdwl vec +Vecchio vectorial vectorization Vectorization @@ -3812,6 +3869,7 @@ workflows Workum Worley Wriggers +writedata Wuppertal Wurtzite www @@ -3890,6 +3948,7 @@ yhi yi ylat ylo +ylz ymax ymin yml diff --git a/examples/ASPHERE/README b/examples/ASPHERE/README index 1aa9552bec..c44f7b0934 100644 --- a/examples/ASPHERE/README +++ b/examples/ASPHERE/README @@ -29,8 +29,10 @@ stochastic rotation dynamics solvent, using the fix srd command. box = 2d rigid box particles in SRDs, self-diffusion and viscosity dimer = 2d rigid dimers in SRDs, self-diffusion and viscosity ellipsoid = 2d ellipsoids in SRDs, self-diffusion and viscosity +flat_membrane = 2d flat membrane in NVE, self-diffusion and viscosity line = 2d line-faceted rigid particles, NEMD shearing for viscosity, implicit and in SRDs poly = 2d poly-disperse spheroids in SRDs, self-diffusion and viscosity star = 2d rigid star particles in SRDs, self-diffusion and viscosity tri = 3d triangle-faceted rigid particles in SRDs, NEMD shearing for viscosity +vesicle = 3d vesicle in NVE, self-diffusionand viscosity diff --git a/examples/ASPHERE/flat_membrane/in.flat_membrane b/examples/ASPHERE/flat_membrane/in.flat_membrane new file mode 100644 index 0000000000..c49961eac3 --- /dev/null +++ b/examples/ASPHERE/flat_membrane/in.flat_membrane @@ -0,0 +1,55 @@ +# flat membrane demo +variable r0 equal 0.97 +variable d1 equal ${r0} +variable d2 equal sqrt(3.0)*${r0} +variable d3 equal 3.0*${r0} +variable ro equal 2./${d1}/${d2}/${d3} + +variable T equal 0.23 +variable LD equal 1.0 + +units lj +atom_style ellipsoid + +boundary p p p + +lattice custom ${ro} a1 ${d1} 0.0 0.0 a2 0.0 ${d2} 0.0 & + a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 + + +region box block 0 40 0 24 -20 20 +create_box 1 box +region membrane block 0 40 0 24 -0.5 0.5 +create_atoms 1 region membrane + +group membrane region membrane + +set type 1 mass 1.0 + +set type 1 shape 1 0.99 0.99 + +set group all quat 0 -1 0 90 + +#compute memb all temp/com +#compute rot all temp/asphere bias memb +velocity all create ${T} 87287 loop geom + +pair_style ylz 2.6 +pair_coeff * * 1.0 1.0 4 3 0.0 2.6 +neighbor 1.0 bin + + +thermo_style custom step temp press pxx pyy +thermo 200 + +timestep 0.01 + +#dump 1 all atom 10 dump_onlymembrane.lammpstrj + +fix 1 all langevin ${T} ${T} ${LD} 48279 + + +fix 2 all nve/asphere +run 3000 + + diff --git a/examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.1 b/examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.1 new file mode 100644 index 0000000000..750aa5328c --- /dev/null +++ b/examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.1 @@ -0,0 +1,159 @@ +LAMMPS (15 Sep 2022) + using 1 OpenMP thread(s) per MPI task +# flat membrane demo +variable r0 equal 0.97 +variable d1 equal ${r0} +variable d1 equal 0.97 +variable d2 equal sqrt(3.0)*${r0} +variable d2 equal sqrt(3.0)*0.97 +variable d3 equal 3.0*${r0} +variable d3 equal 3.0*0.97 +variable ro equal 2./${d1}/${d2}/${d3} +variable ro equal 2./0.97/${d2}/${d3} +variable ro equal 2./0.97/1.68008928334181/${d3} +variable ro equal 2./0.97/1.68008928334181/2.91 + +variable T equal 0.23 +variable LD equal 1.0 + +units lj +atom_style ellipsoid + +boundary p p p + +lattice custom ${ro} a1 ${d1} 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 +lattice custom 0.421728460751825 a1 ${d1} 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 +lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 +lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 1.68008928334181 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 +lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 1.68008928334181 0.0 a3 0.0 0.0 2.91 basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 +Lattice spacing in x,y,z = 0.97 1.6800893 2.91 + + +region box block 0 40 0 24 -20 20 +create_box 1 box +Created orthogonal box = (0 0 -58.2) to (38.8 40.322143 58.2) + 1 by 1 by 1 MPI processor grid +region membrane block 0 40 0 24 -0.5 0.5 +create_atoms 1 region membrane +Created 1920 atoms + using lattice units in orthogonal box = (0 0 -58.2) to (38.8 40.322143 58.2) + create_atoms CPU = 0.001 seconds + +group membrane region membrane +1920 atoms in group membrane + +set type 1 mass 1.0 +Setting atom values ... + 1920 settings made for mass + +set type 1 shape 1 1 1 +Setting atom values ... + 1920 settings made for shape + +set group all quat 0 -1 0 90 +Setting atom values ... + 1920 settings made for quat + +#compute memb all temp/com +#compute rot all temp/asphere bias memb +velocity all create ${T} 87287 loop geom +velocity all create 0.23 87287 loop geom + +pair_style ylz 2.6 +pair_coeff * * 1.0 1.0 4 3 0.0 2.6 +neighbor 1.0 bin + + +thermo_style custom step temp press pxx pyy +thermo 200 + +timestep 0.01 + +#dump 1 all atom 10 dump_onlymembrane.lammpstrj + +fix 1 all langevin ${T} ${T} ${LD} 48279 +fix 1 all langevin 0.23 ${T} ${LD} 48279 +fix 1 all langevin 0.23 0.23 ${LD} 48279 +fix 1 all langevin 0.23 0.23 1 48279 + + +fix 2 all nve/asphere +run 3000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair ylz command: + +@Article{Yuan10, + author = {H. Yuan, C. Huang, J. Li, G. Lykotrafitis, and S. Zhang}, + title = {One-particle-thick, solvent-free, coarse-grained model for biological and biomimetic fluid membranes}, + journal = {Phys. Rev. E}, + year = 2010, + volume = 82, + pages = {011905} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 10 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.6 + ghost atom cutoff = 3.6 + binsize = 1.8, bins = 22 23 65 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair ylz, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.024 | 5.024 | 5.024 Mbytes + Step Temp Press Pxx Pyy + 0 0.23 -0.0073508785 -0.012283389 -0.012234574 + 200 0.20903886 -0.0010605951 -0.0011885957 -0.00198842 + 400 0.21898026 -0.00069250685 -0.0013217981 -0.00073225707 + 600 0.22689361 -0.00057919328 -0.00076880503 -0.0010242283 + 800 0.22983221 -0.00032145682 -0.00051928834 -0.00059337525 + 1000 0.23819392 -0.00027969126 -0.00088082301 -5.2666567e-05 + 1200 0.22053795 -0.00029571329 -0.0004446455 -0.00035529929 + 1400 0.22285021 -0.0002690371 -0.00068896571 -3.6258442e-05 + 1600 0.22687044 2.8599875e-05 -0.00032651798 0.0004056081 + 1800 0.23356905 -2.28742e-05 -0.00027073251 0.00025081131 + 2000 0.22499821 8.8230586e-06 -7.5750159e-05 0.0001988705 + 2200 0.23162995 -9.026855e-05 -0.00025832535 5.4904927e-05 + 2400 0.22920223 0.00016700455 3.5283125e-05 0.00034955857 + 2600 0.2260299 5.3095557e-05 0.00025691786 0.00013353467 + 2800 0.2296401 0.00043234854 0.00058344966 0.00063645193 + 3000 0.22564577 2.6423111e-05 8.9918406e-05 0.00022146229 +Loop time of 6.76659 on 1 procs for 3000 steps with 1920 atoms + +Performance: 383058.431 tau/day, 443.355 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 5.7968 | 5.7968 | 5.7968 | 0.0 | 85.67 +Neigh | 0.086077 | 0.086077 | 0.086077 | 0.0 | 1.27 +Comm | 0.034761 | 0.034761 | 0.034761 | 0.0 | 0.51 +Output | 0.00038014 | 0.00038014 | 0.00038014 | 0.0 | 0.01 +Modify | 0.8268 | 0.8268 | 0.8268 | 0.0 | 12.22 +Other | | 0.02181 | | | 0.32 + +Nlocal: 1920 ave 1920 max 1920 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 772 ave 772 max 772 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 46804 ave 46804 max 46804 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 46804 +Ave neighs/atom = 24.377083 +Neighbor list builds = 99 +Dangerous builds = 0 + + +Total wall time: 0:00:06 diff --git a/examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.4 b/examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.4 new file mode 100644 index 0000000000..7bbe99b58b --- /dev/null +++ b/examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.4 @@ -0,0 +1,159 @@ +LAMMPS (15 Sep 2022) + using 1 OpenMP thread(s) per MPI task +# flat membrane demo +variable r0 equal 0.97 +variable d1 equal ${r0} +variable d1 equal 0.97 +variable d2 equal sqrt(3.0)*${r0} +variable d2 equal sqrt(3.0)*0.97 +variable d3 equal 3.0*${r0} +variable d3 equal 3.0*0.97 +variable ro equal 2./${d1}/${d2}/${d3} +variable ro equal 2./0.97/${d2}/${d3} +variable ro equal 2./0.97/1.68008928334181/${d3} +variable ro equal 2./0.97/1.68008928334181/2.91 + +variable T equal 0.23 +variable LD equal 1.0 + +units lj +atom_style ellipsoid + +boundary p p p + +lattice custom ${ro} a1 ${d1} 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 +lattice custom 0.421728460751825 a1 ${d1} 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 +lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 +lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 1.68008928334181 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 +lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 1.68008928334181 0.0 a3 0.0 0.0 2.91 basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 +Lattice spacing in x,y,z = 0.97 1.6800893 2.91 + + +region box block 0 40 0 24 -20 20 +create_box 1 box +Created orthogonal box = (0 0 -58.2) to (38.8 40.322143 58.2) + 1 by 1 by 4 MPI processor grid +region membrane block 0 40 0 24 -0.5 0.5 +create_atoms 1 region membrane +Created 1920 atoms + using lattice units in orthogonal box = (0 0 -58.2) to (38.8 40.322143 58.2) + create_atoms CPU = 0.001 seconds + +group membrane region membrane +1920 atoms in group membrane + +set type 1 mass 1.0 +Setting atom values ... + 1920 settings made for mass + +set type 1 shape 1 1 1 +Setting atom values ... + 1920 settings made for shape + +set group all quat 0 -1 0 90 +Setting atom values ... + 1920 settings made for quat + +#compute memb all temp/com +#compute rot all temp/asphere bias memb +velocity all create ${T} 87287 loop geom +velocity all create 0.23 87287 loop geom + +pair_style ylz 2.6 +pair_coeff * * 1.0 1.0 4 3 0.0 2.6 +neighbor 1.0 bin + + +thermo_style custom step temp press pxx pyy +thermo 200 + +timestep 0.01 + +#dump 1 all atom 10 dump_onlymembrane.lammpstrj + +fix 1 all langevin ${T} ${T} ${LD} 48279 +fix 1 all langevin 0.23 ${T} ${LD} 48279 +fix 1 all langevin 0.23 0.23 ${LD} 48279 +fix 1 all langevin 0.23 0.23 1 48279 + + +fix 2 all nve/asphere +run 3000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair ylz command: + +@Article{Yuan10, + author = {H. Yuan, C. Huang, J. Li, G. Lykotrafitis, and S. Zhang}, + title = {One-particle-thick, solvent-free, coarse-grained model for biological and biomimetic fluid membranes}, + journal = {Phys. Rev. E}, + year = 2010, + volume = 82, + pages = {011905} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 10 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.6 + ghost atom cutoff = 3.6 + binsize = 1.8, bins = 22 23 65 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair ylz, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.182 | 4.794 | 5.472 Mbytes + Step Temp Press Pxx Pyy + 0 0.23 -0.0073508785 -0.012283389 -0.012234574 + 200 0.20647718 -0.0012368074 -0.0021167303 -0.0015343502 + 400 0.21648371 -0.00085695085 -0.0015627331 -0.0011177093 + 600 0.22929515 -0.00050218657 -0.0008332 -0.00062622609 + 800 0.22062664 -0.00049172378 -0.000611884 -0.00075089294 + 1000 0.22422425 -0.00039405068 -0.00037600355 -0.00070786572 + 1200 0.2298767 -0.00025939082 -0.00021616578 -0.00053125505 + 1400 0.2335927 5.8028332e-05 0.00017530192 -3.1675138e-05 + 1600 0.22884878 -0.0001733902 -0.0008056431 0.00014276754 + 1800 0.22813498 0.00019873459 0.00051040124 5.8860949e-05 + 2000 0.2273166 -3.3595127e-05 0.0001705632 -0.00026498213 + 2200 0.2251643 -2.4517311e-05 -4.0618888e-05 1.066658e-05 + 2400 0.22460629 -4.5661259e-05 -0.00019144039 -1.6649099e-05 + 2600 0.23085675 0.00014029405 0.00017983536 0.00017895001 + 2800 0.22364591 4.2999164e-05 -0.00011000466 0.00024363243 + 3000 0.23421357 0.00023505702 0.00020752013 0.00053567111 +Loop time of 4.68577 on 4 procs for 3000 steps with 1920 atoms + +Performance: 553164.568 tau/day, 640.237 timesteps/s +95.6% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.00015072 | 1.6029 | 3.8573 | 131.7 | 34.21 +Neigh | 0.00055747 | 0.025423 | 0.065858 | 17.0 | 0.54 +Comm | 0.0052259 | 0.48173 | 1.624 | 96.5 | 10.28 +Output | 0.0003894 | 0.023428 | 0.047223 | 15.0 | 0.50 +Modify | 0.00037337 | 0.2141 | 0.44595 | 46.3 | 4.57 +Other | | 2.338 | | | 49.90 + +Nlocal: 480 ave 1011 max 0 min +Histogram: 2 0 0 0 0 0 0 0 1 1 +Nghost: 860 ave 1771 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 11697.8 ave 30095 max 0 min +Histogram: 2 0 0 0 0 1 0 0 0 1 + +Total # of neighbors = 46791 +Ave neighs/atom = 24.370313 +Neighbor list builds = 99 +Dangerous builds = 0 + + +Total wall time: 0:00:04 diff --git a/examples/ASPHERE/vesicle/in.vesicle b/examples/ASPHERE/vesicle/in.vesicle new file mode 100644 index 0000000000..ae8e2e3d75 --- /dev/null +++ b/examples/ASPHERE/vesicle/in.vesicle @@ -0,0 +1,33 @@ +# Vesicle demo + +variable T equal 0.2 +variable LD equal 1.0 + +units lj +atom_style ellipsoid + +boundary p p p + +read_data read_data.vesicle1026 + +compute ali all temp/com +compute rott all temp/asphere bias ali + +velocity all create ${T} 87287 loop geom + +pair_style ylz 2.6 +pair_coeff * * 1.0 1.0 4 3 0.0 2.6 +neighbor 1.0 bin + +thermo_style custom step temp press pxx pyy +thermo 200 + +timestep 0.001 + +#dump 1 all atom 10 onlymembrane2.lammpstrj + +fix 1 all langevin ${T} ${T} ${LD} 48279 +fix 2 all nve/asphere + +run 3000 + diff --git a/examples/ASPHERE/vesicle/log.18Oct22.vesicle.g++.1 b/examples/ASPHERE/vesicle/log.18Oct22.vesicle.g++.1 new file mode 100644 index 0000000000..f974a524e6 --- /dev/null +++ b/examples/ASPHERE/vesicle/log.18Oct22.vesicle.g++.1 @@ -0,0 +1,122 @@ +LAMMPS (15 Sep 2022) + using 1 OpenMP thread(s) per MPI task +# Vesicle demo + +variable T equal 0.2 +variable LD equal 1.0 + +units lj +atom_style ellipsoid + +boundary p p p + +read_data read_data.vesicle1026 +Reading data file ... + orthogonal box = (-35 -35 -35) to (35 35 35) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 2938 atoms + 2938 ellipsoids + read_data CPU = 0.010 seconds + +compute ali all temp/com +compute rott all temp/asphere bias ali + +velocity all create ${T} 87287 loop geom +velocity all create 0.2 87287 loop geom + +pair_style ylz 2.6 +pair_coeff * * 1.0 1.0 4 3 0.0 2.6 +neighbor 1.0 bin + +thermo_style custom step temp press pxx pyy +thermo 200 + +timestep 0.001 + +#dump 1 all atom 10 onlymembrane2.lammpstrj + +fix 1 all langevin ${T} ${T} ${LD} 48279 +fix 1 all langevin 0.2 ${T} ${LD} 48279 +fix 1 all langevin 0.2 0.2 ${LD} 48279 +fix 1 all langevin 0.2 0.2 1 48279 +fix 2 all nve/asphere + +run 3000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair ylz command: + +@Article{Yuan10, + author = {H. Yuan, C. Huang, J. Li, G. Lykotrafitis, and S. Zhang}, + title = {One-particle-thick, solvent-free, coarse-grained model for biological and biomimetic fluid membranes}, + journal = {Phys. Rev. E}, + year = 2010, + volume = 82, + pages = {011905} +} + +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 +Neighbor list info ... + update: every = 1 steps, delay = 10 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.6 + ghost atom cutoff = 3.6 + binsize = 1.8, bins = 39 39 39 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair ylz, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.091 | 5.091 | 5.091 Mbytes + Step Temp Press Pxx Pyy + 0 0.2 -0.0054891414 -0.0052713616 -0.0053641136 + 200 0.12816247 -0.0051288861 -0.0048542514 -0.0049847561 + 400 0.1377632 -0.0048071582 -0.0045651263 -0.0048444087 + 600 0.14983781 -0.0045305725 -0.0043305994 -0.0046127777 + 800 0.16205271 -0.0041176346 -0.0040534483 -0.0041351779 + 1000 0.17462122 -0.0037000069 -0.0034938539 -0.0037915494 + 1200 0.18335448 -0.0032674318 -0.0032790248 -0.0031967931 + 1400 0.19195613 -0.0029332101 -0.0030823703 -0.0028287799 + 1600 0.19261762 -0.0025263447 -0.0025152249 -0.0026205398 + 1800 0.19758674 -0.0021087725 -0.001981333 -0.002309048 + 2000 0.19748896 -0.0017662369 -0.0019316344 -0.0016696035 + 2200 0.20196986 -0.0013363214 -0.0015581191 -0.0013384961 + 2400 0.20109248 -0.0009190831 -0.0010331417 -0.0010664316 + 2600 0.20228664 -0.00053590675 -0.00071808747 -0.00050218533 + 2800 0.20512955 -0.00030845899 -0.00016244901 -0.00047877516 + 3000 0.19855941 -7.9520073e-05 -0.00014969215 -5.4724226e-06 +Loop time of 9.6866 on 1 procs for 3000 steps with 2938 atoms + +Performance: 26758.610 tau/day, 309.706 timesteps/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 8.3097 | 8.3097 | 8.3097 | 0.0 | 85.79 +Neigh | 0.039037 | 0.039037 | 0.039037 | 0.0 | 0.40 +Comm | 0.0021766 | 0.0021766 | 0.0021766 | 0.0 | 0.02 +Output | 0.00048628 | 0.00048628 | 0.00048628 | 0.0 | 0.01 +Modify | 1.3043 | 1.3043 | 1.3043 | 0.0 | 13.47 +Other | | 0.0309 | | | 0.32 + +Nlocal: 2938 ave 2938 max 2938 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 73242 ave 73242 max 73242 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 73242 +Ave neighs/atom = 24.929204 +Neighbor list builds = 26 +Dangerous builds = 0 + +Total wall time: 0:00:09 diff --git a/examples/ASPHERE/vesicle/log.18Oct22.vesicle.g++.4 b/examples/ASPHERE/vesicle/log.18Oct22.vesicle.g++.4 new file mode 100644 index 0000000000..0340219494 --- /dev/null +++ b/examples/ASPHERE/vesicle/log.18Oct22.vesicle.g++.4 @@ -0,0 +1,122 @@ +LAMMPS (15 Sep 2022) + using 1 OpenMP thread(s) per MPI task +# Vesicle demo + +variable T equal 0.2 +variable LD equal 1.0 + +units lj +atom_style ellipsoid + +boundary p p p + +read_data read_data.vesicle1026 +Reading data file ... + orthogonal box = (-35 -35 -35) to (35 35 35) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 2938 atoms + 2938 ellipsoids + read_data CPU = 0.137 seconds + +compute ali all temp/com +compute rott all temp/asphere bias ali + +velocity all create ${T} 87287 loop geom +velocity all create 0.2 87287 loop geom + +pair_style ylz 2.6 +pair_coeff * * 1.0 1.0 4 3 0.0 2.6 +neighbor 1.0 bin + +thermo_style custom step temp press pxx pyy +thermo 200 + +timestep 0.001 + +#dump 1 all atom 10 onlymembrane2.lammpstrj + +fix 1 all langevin ${T} ${T} ${LD} 48279 +fix 1 all langevin 0.2 ${T} ${LD} 48279 +fix 1 all langevin 0.2 0.2 ${LD} 48279 +fix 1 all langevin 0.2 0.2 1 48279 +fix 2 all nve/asphere + +run 3000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair ylz command: + +@Article{Yuan10, + author = {H. Yuan, C. Huang, J. Li, G. Lykotrafitis, and S. Zhang}, + title = {One-particle-thick, solvent-free, coarse-grained model for biological and biomimetic fluid membranes}, + journal = {Phys. Rev. E}, + year = 2010, + volume = 82, + pages = {011905} +} + +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 +Neighbor list info ... + update: every = 1 steps, delay = 10 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.6 + ghost atom cutoff = 3.6 + binsize = 1.8, bins = 39 39 39 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair ylz, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.899 | 4.9 | 4.902 Mbytes + Step Temp Press Pxx Pyy + 0 0.2 -0.0054891414 -0.0052713616 -0.0053641136 + 200 0.12893798 -0.0051492794 -0.0048734875 -0.0049624005 + 400 0.13798694 -0.004875313 -0.0047071897 -0.0049305051 + 600 0.14725193 -0.0046349542 -0.004719983 -0.0045791451 + 800 0.16146954 -0.0042232199 -0.0040789193 -0.0043672895 + 1000 0.17268468 -0.0037146703 -0.0036270393 -0.0039169034 + 1200 0.18266242 -0.0032749755 -0.0032971704 -0.0033323855 + 1400 0.18500165 -0.0028179031 -0.0030659821 -0.0027519633 + 1600 0.19513132 -0.0023407512 -0.0025109801 -0.0023416835 + 1800 0.19645259 -0.0019995412 -0.0019064341 -0.0021757747 + 2000 0.19658104 -0.0015897919 -0.0015850523 -0.0016828478 + 2200 0.1989936 -0.0011794062 -0.0011779716 -0.0012070706 + 2400 0.20011525 -0.0009147432 -0.00094040885 -0.001073922 + 2600 0.2013975 -0.00059253676 -0.00051920304 -0.00075138934 + 2800 0.19715513 -0.00020995605 -0.00024386426 -0.0005475745 + 3000 0.1976782 -0.0001308553 5.693004e-05 -0.00034478469 +Loop time of 8.46954 on 4 procs for 3000 steps with 2938 atoms + +Performance: 30603.800 tau/day, 354.211 timesteps/s +77.9% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.1751 | 2.4162 | 2.6707 | 13.2 | 28.53 +Neigh | 0.0090503 | 0.0098389 | 0.010503 | 0.6 | 0.12 +Comm | 3.5807 | 4.1526 | 4.9283 | 24.3 | 49.03 +Output | 0.00032165 | 0.0029648 | 0.010842 | 8.4 | 0.04 +Modify | 0.34554 | 0.37442 | 0.39198 | 2.8 | 4.42 +Other | | 1.514 | | | 17.87 + +Nlocal: 734.5 ave 739 max 730 min +Histogram: 1 0 1 0 0 0 0 1 0 1 +Nghost: 420.25 ave 424 max 415 min +Histogram: 1 0 0 0 0 1 0 1 0 1 +Neighs: 18304.5 ave 19839 max 16636 min +Histogram: 1 0 0 0 1 0 1 0 0 1 + +Total # of neighbors = 73218 +Ave neighs/atom = 24.921035 +Neighbor list builds = 25 +Dangerous builds = 0 + +Total wall time: 0:00:08 diff --git a/examples/ASPHERE/vesicle/read_data.vesicle1026 b/examples/ASPHERE/vesicle/read_data.vesicle1026 new file mode 100644 index 0000000000..fd19a28dc9 --- /dev/null +++ b/examples/ASPHERE/vesicle/read_data.vesicle1026 @@ -0,0 +1,5894 @@ +vesicle with diameter = 30.000000 + 2938 atoms + 2938 ellipsoids + +2 atom types + + -35.000000 35.000000 xlo xhi + -35.000000 35.000000 ylo yhi + -35.000000 35.000000 zlo zhi + + +Atoms + + 1 1 1 0.236369 0.008147 0.007400 15.002449 + 2 1 1 0.236369 0.009058 0.008176 -14.997137 + 3 1 1 0.236369 0.982317 0.006003 14.977515 + 4 1 1 0.236369 0.499657 0.850462 14.970191 + 5 1 1 0.236369 -0.484200 0.858835 14.973257 + 6 1 1 0.236369 -0.980072 0.000536 14.969934 + 7 1 1 0.236369 -0.487738 -0.844341 14.972224 + 8 1 1 0.236369 0.495992 -0.848423 14.969306 + 9 1 1 0.236369 1.967468 0.003801 14.875429 + 10 1 1 0.236369 1.743277 0.918007 14.879609 + 11 1 1 0.236369 1.113786 1.613755 14.879801 + 12 1 1 0.236369 0.245704 1.952462 14.880711 + 13 1 1 0.236369 -0.684707 1.837788 14.877077 + 14 1 1 0.236369 -1.460650 1.302105 14.879852 + 15 1 1 0.236369 -1.892997 0.471044 14.878757 + 16 1 1 0.236369 -1.899581 -0.466026 14.872105 + 17 1 1 0.236369 -1.461286 -1.290651 14.873132 + 18 1 1 0.236369 -0.685121 -1.830163 14.874006 + 19 1 1 0.236369 0.243920 -1.936765 14.874140 + 20 1 1 0.236369 1.121805 -1.605111 14.873376 + 21 1 1 0.236369 1.740185 -0.902411 14.874023 + 22 1 1 0.236369 2.926712 0.009773 14.714534 + 23 1 1 0.236369 2.776288 0.954025 14.721295 + 24 1 1 0.236369 2.318645 1.800006 14.715246 + 25 1 1 0.236369 1.607352 2.458621 14.714752 + 26 1 1 0.236369 0.725955 2.844870 14.715823 + 27 1 1 0.236369 -0.234225 2.920971 14.714802 + 28 1 1 0.236369 -1.171581 2.680787 14.719352 + 29 1 1 0.236369 -1.975411 2.158632 14.715377 + 30 1 1 0.236369 -2.571940 1.394665 14.713028 + 31 1 1 0.236369 -2.879383 0.486979 14.717951 + 32 1 1 0.236369 -2.886125 -0.478112 14.715334 + 33 1 1 0.236369 -2.570883 -1.389643 14.715409 + 34 1 1 0.236369 -1.981504 -2.145722 14.712464 + 35 1 1 0.236369 -1.174532 -2.674720 14.720451 + 36 1 1 0.236369 -0.233422 -2.908453 14.716358 + 37 1 1 0.236369 0.725326 -2.834764 14.712555 + 38 1 1 0.236369 1.603735 -2.443065 14.720828 + 39 1 1 0.236369 2.318807 -1.796879 14.714596 + 40 1 1 0.236369 2.768141 -0.942174 14.717918 + 41 1 1 0.236369 3.886673 0.006786 14.495506 + 42 1 1 0.236369 3.764132 0.974945 14.490888 + 43 1 1 0.236369 3.409728 1.871221 14.498487 + 44 1 1 0.236369 2.838016 2.666692 14.495538 + 45 1 1 0.236369 2.082101 3.283022 14.494300 + 46 1 1 0.236369 1.204590 3.698422 14.497577 + 47 1 1 0.236369 0.248227 3.877786 14.494458 + 48 1 1 0.236369 -0.721005 3.814295 14.489101 + 49 1 1 0.236369 -1.645903 3.521303 14.493714 + 50 1 1 0.236369 -2.467115 2.992798 14.496967 + 51 1 1 0.236369 -3.138075 2.285655 14.496247 + 52 1 1 0.236369 -3.602861 1.435389 14.494610 + 53 1 1 0.236369 -3.845122 0.496555 14.488977 + 54 1 1 0.236369 -3.850047 -0.481406 14.496070 + 55 1 1 0.236369 -3.608468 -1.419260 14.493382 + 56 1 1 0.236369 -3.135851 -2.279685 14.495484 + 57 1 1 0.236369 -2.465065 -2.987372 14.496419 + 58 1 1 0.236369 -1.649593 -3.505831 14.496935 + 59 1 1 0.236369 -0.721615 -3.812873 14.489179 + 60 1 1 0.236369 0.246009 -3.867148 14.496686 + 61 1 1 0.236369 1.207205 -3.688069 14.494561 + 62 1 1 0.236369 2.082784 -3.269809 14.489649 + 63 1 1 0.236369 2.835124 -2.653811 14.491404 + 64 1 1 0.236369 3.409064 -1.867115 14.490222 + 65 1 1 0.236369 3.769226 -0.955625 14.494532 + 66 1 1 0.236369 4.831185 0.007182 14.209362 + 67 1 1 0.236369 4.728366 0.974711 14.204641 + 68 1 1 0.236369 4.432226 1.902409 14.213836 + 69 1 1 0.236369 3.958879 2.761768 14.206463 + 70 1 1 0.236369 3.324492 3.501028 14.207107 + 71 1 1 0.236369 2.558856 4.092555 14.206959 + 72 1 1 0.236369 1.677107 4.522663 14.204372 + 73 1 1 0.236369 0.738266 4.775807 14.209231 + 74 1 1 0.236369 -0.241774 4.820371 14.206512 + 75 1 1 0.236369 -1.199252 4.667897 14.208039 + 76 1 1 0.236369 -2.119901 4.329385 14.213427 + 77 1 1 0.236369 -2.949359 3.814207 14.213145 + 78 1 1 0.236369 -3.655911 3.149587 14.205164 + 79 1 1 0.236369 -4.209582 2.344586 14.209871 + 80 1 1 0.236369 -4.595737 1.449015 14.207548 + 81 1 1 0.236369 -4.793337 0.492737 14.211145 + 82 1 1 0.236369 -4.788546 -0.487115 14.209187 + 83 1 1 0.236369 -4.594618 -1.434430 14.206560 + 84 1 1 0.236369 -4.210245 -2.337042 14.208883 + 85 1 1 0.236369 -3.649250 -3.137962 14.212510 + 86 1 1 0.236369 -2.948467 -3.806856 14.211196 + 87 1 1 0.236369 -2.115829 -4.324088 14.205943 + 88 1 1 0.236369 -1.201007 -4.663990 14.205525 + 89 1 1 0.236369 -0.240405 -4.808847 14.207657 + 90 1 1 0.236369 0.735801 -4.756609 14.212575 + 91 1 1 0.236369 1.675323 -4.515254 14.210800 + 92 1 1 0.236369 2.550988 -4.088988 14.210294 + 93 1 1 0.236369 3.327225 -3.492603 14.205365 + 94 1 1 0.236369 3.965178 -2.750031 14.204745 + 95 1 1 0.236369 4.440180 -1.901151 14.212713 + 96 1 1 0.236369 4.724193 -0.961817 14.208156 + 97 1 1 0.236369 5.745940 0.006101 13.863070 + 98 1 1 0.236369 5.662377 0.972143 13.862796 + 99 1 1 0.236369 5.412473 1.917505 13.863350 + 100 1 1 0.236369 5.014692 2.800030 13.860913 + 101 1 1 0.236369 4.467743 3.614763 13.860509 + 102 1 1 0.236369 3.800382 4.313477 13.867188 + 103 1 1 0.236369 3.012768 4.893471 13.867280 + 104 1 1 0.236369 2.145575 5.331985 13.864229 + 105 1 1 0.236369 1.211008 5.618217 13.861845 + 106 1 1 0.236369 0.249643 5.738793 13.864179 + 107 1 1 0.236369 -0.726485 5.694540 13.864878 + 108 1 1 0.236369 -1.674336 5.493201 13.867139 + 109 1 1 0.236369 -2.577391 5.126097 13.859066 + 110 1 1 0.236369 -3.405862 4.622528 13.863583 + 111 1 1 0.236369 -4.139704 3.972283 13.862477 + 112 1 1 0.236369 -4.755016 3.223939 13.864365 + 113 1 1 0.236369 -5.228391 2.371840 13.863782 + 114 1 1 0.236369 -5.545897 1.455792 13.860451 + 115 1 1 0.236369 -5.718048 0.491941 13.859238 + 116 1 1 0.236369 -5.711314 -0.484398 13.858293 + 117 1 1 0.236369 -5.549647 -1.443818 13.858785 + 118 1 1 0.236369 -5.220719 -2.356827 13.861420 + 119 1 1 0.236369 -4.755072 -3.204463 13.865988 + 120 1 1 0.236369 -4.139783 -3.968336 13.861548 + 121 1 1 0.236369 -3.412277 -4.607617 13.864389 + 122 1 1 0.236369 -2.574664 -5.124518 13.868122 + 123 1 1 0.236369 -1.680830 -5.482667 13.864673 + 124 1 1 0.236369 -0.721365 -5.689452 13.863591 + 125 1 1 0.236369 0.251796 -5.727772 13.860516 + 126 1 1 0.236369 1.218039 -5.608801 13.865591 + 127 1 1 0.236369 2.141134 -5.325368 13.867083 + 128 1 1 0.236369 3.013653 -4.883482 13.866791 + 129 1 1 0.236369 3.795038 -4.302647 13.864164 + 130 1 1 0.236369 4.474122 -3.604820 13.864741 + 131 1 1 0.236369 5.015635 -2.794963 13.867343 + 132 1 1 0.236369 5.421460 -1.905784 13.862525 + 133 1 1 0.236369 5.659502 -0.961837 13.861091 + 134 1 1 0.236369 6.636968 0.003081 13.459410 + 135 1 1 0.236369 6.565086 0.969990 13.456045 + 136 1 1 0.236369 6.354399 1.920187 13.459311 + 137 1 1 0.236369 6.015736 2.822992 13.453566 + 138 1 1 0.236369 5.538814 3.663028 13.463037 + 139 1 1 0.236369 4.946563 4.434812 13.455159 + 140 1 1 0.236369 4.245252 5.102368 13.459165 + 141 1 1 0.236369 3.464621 5.665793 13.456567 + 142 1 1 0.236369 2.600938 6.105942 13.460268 + 143 1 1 0.236369 1.681553 6.422354 13.453371 + 144 1 1 0.236369 0.730737 6.598900 13.453760 + 145 1 1 0.236369 -0.238281 6.632947 13.462362 + 146 1 1 0.236369 -1.204279 6.526881 13.453969 + 147 1 1 0.236369 -2.139696 6.281419 13.456415 + 148 1 1 0.236369 -3.032263 5.909556 13.458353 + 149 1 1 0.236369 -3.858405 5.404235 13.455558 + 150 1 1 0.236369 -4.602318 4.780050 13.458520 + 151 1 1 0.236369 -5.246877 4.059523 13.460900 + 152 1 1 0.236369 -5.784967 3.252610 13.458310 + 153 1 1 0.236369 -6.187544 2.374884 13.462411 + 154 1 1 0.236369 -6.466162 1.445202 13.454562 + 155 1 1 0.236369 -6.611723 0.494172 13.457259 + 156 1 1 0.236369 -6.611739 -0.482438 13.455894 + 157 1 1 0.236369 -6.472233 -1.433887 13.459072 + 158 1 1 0.236369 -6.187571 -2.369661 13.453456 + 159 1 1 0.236369 -5.781771 -3.243640 13.453728 + 160 1 1 0.236369 -5.249937 -4.047241 13.456320 + 161 1 1 0.236369 -4.596915 -4.769634 13.454075 + 162 1 1 0.236369 -3.856347 -5.393940 13.454792 + 163 1 1 0.236369 -3.031080 -5.890668 13.456803 + 164 1 1 0.236369 -2.138056 -6.273561 13.453489 + 165 1 1 0.236369 -1.204074 -6.521459 13.460184 + 166 1 1 0.236369 -0.240979 -6.624119 13.459505 + 167 1 1 0.236369 0.735025 -6.585376 13.454832 + 168 1 1 0.236369 1.687605 -6.409650 13.453713 + 169 1 1 0.236369 2.600470 -6.101056 13.457158 + 170 1 1 0.236369 3.456688 -5.658591 13.457722 + 171 1 1 0.236369 4.246150 -5.096342 13.455118 + 172 1 1 0.236369 4.944596 -4.426660 13.461787 + 173 1 1 0.236369 5.541229 -3.653072 13.459071 + 174 1 1 0.236369 6.007197 -2.814666 13.453321 + 175 1 1 0.236369 6.353469 -1.907785 13.462085 + 176 1 1 0.236369 6.565321 -0.962008 13.457621 + 177 1 1 0.236369 7.506491 0.008855 12.990961 + 178 1 1 0.236369 7.443154 0.979159 12.991444 + 179 1 1 0.236369 7.250921 1.949584 13.000365 + 180 1 1 0.236369 6.933606 2.873006 12.999044 + 181 1 1 0.236369 6.500661 3.752503 12.996533 + 182 1 1 0.236369 5.953113 4.570595 12.990651 + 183 1 1 0.236369 5.310748 5.310591 12.993606 + 184 1 1 0.236369 4.567600 5.952176 12.995019 + 185 1 1 0.236369 3.756868 6.497353 12.991371 + 186 1 1 0.236369 2.871961 6.938860 12.996091 + 187 1 1 0.236369 1.944828 7.250376 12.993640 + 188 1 1 0.236369 0.985203 7.438880 12.994886 + 189 1 1 0.236369 0.007802 7.509677 12.996159 + 190 1 1 0.236369 -0.978135 7.444796 12.991129 + 191 1 1 0.236369 -1.931849 7.246344 12.990954 + 192 1 1 0.236369 -2.862369 6.929114 12.993391 + 193 1 1 0.236369 -3.745132 6.502308 12.995598 + 194 1 1 0.236369 -4.561352 5.958827 12.996000 + 195 1 1 0.236369 -5.298833 5.304484 12.992797 + 196 1 1 0.236369 -5.947087 4.566101 12.999508 + 197 1 1 0.236369 -6.490105 3.755982 12.998638 + 198 1 1 0.236369 -6.923989 2.876169 12.994827 + 199 1 1 0.236369 -7.236267 1.946307 13.000202 + 200 1 1 0.236369 -7.427888 0.979022 12.996164 + 201 1 1 0.236369 -7.493557 0.006889 12.992725 + 202 1 1 0.236369 -7.432050 -0.969486 12.998487 + 203 1 1 0.236369 -7.236328 -1.932407 12.994894 + 204 1 1 0.236369 -6.923768 -2.868993 12.992881 + 205 1 1 0.236369 -6.491683 -3.746454 12.999935 + 206 1 1 0.236369 -5.940760 -4.563291 12.991808 + 207 1 1 0.236369 -5.294541 -5.297698 12.995507 + 208 1 1 0.236369 -4.560209 -5.944023 13.000100 + 209 1 1 0.236369 -3.743775 -6.492182 12.996864 + 210 1 1 0.236369 -2.864255 -6.921115 12.996528 + 211 1 1 0.236369 -1.939065 -7.236487 12.995078 + 212 1 1 0.236369 -0.975934 -7.428026 12.996159 + 213 1 1 0.236369 0.004709 -7.496489 12.999494 + 214 1 1 0.236369 0.981251 -7.435293 12.994143 + 215 1 1 0.236369 1.949586 -7.237357 12.992669 + 216 1 1 0.236369 2.872073 -6.919167 12.994616 + 217 1 1 0.236369 3.752259 -6.493566 12.993117 + 218 1 1 0.236369 4.567418 -5.949014 12.994827 + 219 1 1 0.236369 5.305578 -5.294172 12.996656 + 220 1 1 0.236369 5.954507 -4.560894 12.995727 + 221 1 1 0.236369 6.498302 -3.741482 12.994235 + 222 1 1 0.236369 6.938330 -2.862027 12.999116 + 223 1 1 0.236369 7.248746 -1.939275 12.993385 + 224 1 1 0.236369 7.437685 -0.976474 12.994381 + 225 1 1 0.236369 8.342602 0.000542 12.477221 + 226 1 1 0.236369 8.284859 0.991725 12.472662 + 227 1 1 0.236369 8.104794 1.965208 12.474358 + 228 1 1 0.236369 7.813148 2.906868 12.473229 + 229 1 1 0.236369 7.416586 3.805622 12.473032 + 230 1 1 0.236369 6.915984 4.665417 12.480947 + 231 1 1 0.236369 6.318709 5.445337 12.472378 + 232 1 1 0.236369 5.627629 6.152093 12.480435 + 233 1 1 0.236369 4.864319 6.772642 12.477117 + 234 1 1 0.236369 4.030487 7.304240 12.473181 + 235 1 1 0.236369 3.134197 7.728369 12.476949 + 236 1 1 0.236369 2.197792 8.046352 12.478039 + 237 1 1 0.236369 1.233387 8.243754 12.472946 + 238 1 1 0.236369 0.250139 8.333462 12.481826 + 239 1 1 0.236369 -0.735744 8.302074 12.478574 + 240 1 1 0.236369 -1.711455 8.163359 12.476656 + 241 1 1 0.236369 -2.668131 7.897974 12.480682 + 242 1 1 0.236369 -3.581347 7.526266 12.474672 + 243 1 1 0.236369 -4.440636 7.046880 12.480284 + 244 1 1 0.236369 -5.250579 6.479222 12.475334 + 245 1 1 0.236369 -5.970097 5.809719 12.481457 + 246 1 1 0.236369 -6.616659 5.062180 12.474485 + 247 1 1 0.236369 -7.170667 4.246580 12.481615 + 248 1 1 0.236369 -7.620630 3.366679 12.477152 + 249 1 1 0.236369 -7.967846 2.440552 12.477690 + 250 1 1 0.236369 -8.197550 1.475913 12.481981 + 251 1 1 0.236369 -8.309287 0.499190 12.479754 + 252 1 1 0.236369 -8.313449 -0.484086 12.475182 + 253 1 1 0.236369 -8.196927 -1.468164 12.472623 + 254 1 1 0.236369 -7.967903 -2.425785 12.472485 + 255 1 1 0.236369 -7.621526 -3.349605 12.480174 + 256 1 1 0.236369 -7.169312 -4.229012 12.476165 + 257 1 1 0.236369 -6.617171 -5.054663 12.475886 + 258 1 1 0.236369 -5.975430 -5.804399 12.477275 + 259 1 1 0.236369 -5.247196 -6.466692 12.480966 + 260 1 1 0.236369 -4.438766 -7.046682 12.476103 + 261 1 1 0.236369 -3.583594 -7.518777 12.478088 + 262 1 1 0.236369 -2.660134 -7.885083 12.472992 + 263 1 1 0.236369 -1.707401 -8.152363 12.475404 + 264 1 1 0.236369 -0.732024 -8.296770 12.473493 + 265 1 1 0.236369 0.247938 -8.325579 12.474493 + 266 1 1 0.236369 1.233039 -8.233910 12.475834 + 267 1 1 0.236369 2.199971 -8.030596 12.474747 + 268 1 1 0.236369 3.138777 -7.718087 12.474200 + 269 1 1 0.236369 4.024740 -7.294178 12.478381 + 270 1 1 0.236369 4.865503 -6.761644 12.480041 + 271 1 1 0.236369 5.626075 -6.141365 12.474129 + 272 1 1 0.236369 6.319298 -5.432952 12.481007 + 273 1 1 0.236369 6.916838 -4.646044 12.479501 + 274 1 1 0.236369 7.421795 -3.800243 12.477408 + 275 1 1 0.236369 7.819187 -2.893838 12.481744 + 276 1 1 0.236369 8.109442 -1.952914 12.477693 + 277 1 1 0.236369 8.283970 -0.977144 12.474221 + 278 1 1 0.236369 9.134763 0.003904 11.908878 + 279 1 1 0.236369 9.086678 0.977994 11.908920 + 280 1 1 0.236369 8.927060 1.939988 11.903433 + 281 1 1 0.236369 8.669655 2.873200 11.903570 + 282 1 1 0.236369 8.322831 3.777514 11.908700 + 283 1 1 0.236369 7.872214 4.637782 11.905225 + 284 1 1 0.236369 7.334697 5.448916 11.900819 + 285 1 1 0.236369 6.718580 6.195060 11.908080 + 286 1 1 0.236369 6.019244 6.875793 11.904567 + 287 1 1 0.236369 5.254803 7.475567 11.903100 + 288 1 1 0.236369 4.433233 7.991251 11.903635 + 289 1 1 0.236369 3.558572 8.421059 11.903970 + 290 1 1 0.236369 2.641935 8.747941 11.908248 + 291 1 1 0.236369 1.693779 8.978514 11.900687 + 292 1 1 0.236369 0.730960 9.110054 11.907567 + 293 1 1 0.236369 -0.234218 9.129388 11.909027 + 294 1 1 0.236369 -1.211686 9.056889 11.903158 + 295 1 1 0.236369 -2.162231 8.874002 11.906869 + 296 1 1 0.236369 -3.096054 8.593277 11.902619 + 297 1 1 0.236369 -3.983451 8.217744 11.906520 + 298 1 1 0.236369 -4.836370 7.749660 11.901051 + 299 1 1 0.236369 -5.633873 7.184319 11.909968 + 300 1 1 0.236369 -6.365657 6.548993 11.906400 + 301 1 1 0.236369 -7.029082 5.837095 11.904137 + 302 1 1 0.236369 -7.602521 5.049842 11.900606 + 303 1 1 0.236369 -8.102361 4.213413 11.908876 + 304 1 1 0.236369 -8.503709 3.330269 11.906336 + 305 1 1 0.236369 -8.804485 2.411399 11.908779 + 306 1 1 0.236369 -9.014196 1.457490 11.905346 + 307 1 1 0.236369 -9.110298 0.488764 11.900379 + 308 1 1 0.236369 -9.110304 -0.480655 11.909491 + 309 1 1 0.236369 -9.007939 -1.446733 11.904407 + 310 1 1 0.236369 -8.808203 -2.398372 11.907624 + 311 1 1 0.236369 -8.497827 -3.325156 11.901811 + 312 1 1 0.236369 -8.097600 -4.203402 11.908452 + 313 1 1 0.236369 -7.599611 -5.042783 11.909396 + 314 1 1 0.236369 -7.023189 -5.824264 11.908080 + 315 1 1 0.236369 -6.362364 -6.541619 11.907871 + 316 1 1 0.236369 -5.634340 -7.178748 11.904352 + 317 1 1 0.236369 -4.839173 -7.738678 11.907319 + 318 1 1 0.236369 -3.984984 -8.209963 11.905955 + 319 1 1 0.236369 -3.096898 -8.581793 11.906147 + 320 1 1 0.236369 -2.165798 -8.866601 11.903749 + 321 1 1 0.236369 -1.210239 -9.050098 11.907342 + 322 1 1 0.236369 -0.239174 -9.124435 11.901909 + 323 1 1 0.236369 0.736874 -9.094561 11.900315 + 324 1 1 0.236369 1.699983 -8.971650 11.905920 + 325 1 1 0.236369 2.636773 -8.733502 11.905765 + 326 1 1 0.236369 3.554510 -8.409696 11.905808 + 327 1 1 0.236369 4.429907 -7.984533 11.907245 + 328 1 1 0.236369 5.252794 -7.470225 11.909575 + 329 1 1 0.236369 6.019714 -6.864369 11.909742 + 330 1 1 0.236369 6.715812 -6.193252 11.909333 + 331 1 1 0.236369 7.332818 -5.436181 11.906341 + 332 1 1 0.236369 7.871530 -4.634128 11.909562 + 333 1 1 0.236369 8.315545 -3.770350 11.901470 + 334 1 1 0.236369 8.679190 -2.861096 11.903708 + 335 1 1 0.236369 8.926754 -1.928812 11.900667 + 336 1 1 0.236369 9.080752 -0.965490 11.905684 + 337 1 1 0.236369 9.893911 0.007213 11.284969 + 338 1 1 0.236369 9.843022 0.994033 11.279409 + 339 1 1 0.236369 9.698986 1.967023 11.281860 + 340 1 1 0.236369 9.454189 2.922682 11.278579 + 341 1 1 0.236369 9.123089 3.845766 11.280629 + 342 1 1 0.236369 8.694979 4.732416 11.285398 + 343 1 1 0.236369 8.172183 5.576549 11.282967 + 344 1 1 0.236369 7.583702 6.359481 11.285288 + 345 1 1 0.236369 6.908384 7.088481 11.283987 + 346 1 1 0.236369 6.170659 7.739089 11.286529 + 347 1 1 0.236369 5.371363 8.316176 11.278204 + 348 1 1 0.236369 4.521436 8.808938 11.279355 + 349 1 1 0.236369 3.617469 9.211207 11.281760 + 350 1 1 0.236369 2.688493 9.523629 11.284995 + 351 1 1 0.236369 1.720428 9.746809 11.286527 + 352 1 1 0.236369 0.746106 9.872401 11.277856 + 353 1 1 0.236369 -0.239906 9.894813 11.278973 + 354 1 1 0.236369 -1.224391 9.821727 11.281838 + 355 1 1 0.236369 -2.193793 9.649280 11.285243 + 356 1 1 0.236369 -3.143227 9.381132 11.282841 + 357 1 1 0.236369 -4.065925 9.022492 11.285142 + 358 1 1 0.236369 -4.943813 8.570121 11.279295 + 359 1 1 0.236369 -5.763343 8.038870 11.284324 + 360 1 1 0.236369 -6.542486 7.416157 11.283784 + 361 1 1 0.236369 -7.249694 6.736721 11.277666 + 362 1 1 0.236369 -7.878178 5.972726 11.284999 + 363 1 1 0.236369 -8.430388 5.162562 11.287514 + 364 1 1 0.236369 -8.904059 4.295221 11.278879 + 365 1 1 0.236369 -9.291832 3.383714 11.281203 + 366 1 1 0.236369 -9.580667 2.447719 11.279508 + 367 1 1 0.236369 -9.775115 1.480193 11.284741 + 368 1 1 0.236369 -9.868077 0.500815 11.279376 + 369 1 1 0.236369 -9.876329 -0.487319 11.287466 + 370 1 1 0.236369 -9.771167 -1.465943 11.277767 + 371 1 1 0.236369 -9.577908 -2.434709 11.277995 + 372 1 1 0.236369 -9.289973 -3.373203 11.285640 + 373 1 1 0.236369 -8.908842 -4.282477 11.286195 + 374 1 1 0.236369 -8.434924 -5.152016 11.283260 + 375 1 1 0.236369 -7.878970 -5.963850 11.285138 + 376 1 1 0.236369 -7.248814 -6.722305 11.282792 + 377 1 1 0.236369 -6.538302 -7.407188 11.283456 + 378 1 1 0.236369 -5.771072 -8.026994 11.279504 + 379 1 1 0.236369 -4.941247 -8.555392 11.282632 + 380 1 1 0.236369 -4.061877 -9.012181 11.278106 + 381 1 1 0.236369 -3.147375 -9.374451 11.278158 + 382 1 1 0.236369 -2.197869 -9.634707 11.280949 + 383 1 1 0.236369 -1.223612 -9.805120 11.283906 + 384 1 1 0.236369 -0.243916 -9.877890 11.286517 + 385 1 1 0.236369 0.747338 -9.859262 11.284331 + 386 1 1 0.236369 1.727240 -9.731892 11.284450 + 387 1 1 0.236369 2.685965 -9.515152 11.284555 + 388 1 1 0.236369 3.616730 -9.201883 11.285595 + 389 1 1 0.236369 4.517850 -8.792791 11.284203 + 390 1 1 0.236369 5.366962 -8.298495 11.282796 + 391 1 1 0.236369 6.175494 -7.731697 11.280914 + 392 1 1 0.236369 6.914489 -7.072970 11.286939 + 393 1 1 0.236369 7.584501 -6.354941 11.280062 + 394 1 1 0.236369 8.174263 -5.567352 11.282709 + 395 1 1 0.236369 8.691719 -4.727340 11.285000 + 396 1 1 0.236369 9.113797 -3.833368 11.280139 + 397 1 1 0.236369 9.455047 -2.905230 11.286053 + 398 1 1 0.236369 9.697217 -1.953205 11.282979 + 399 1 1 0.236369 9.842656 -0.977705 11.286698 + 400 1 1 0.236369 10.608389 0.009323 10.610109 + 401 1 1 0.236369 10.565585 0.985530 10.615955 + 402 1 1 0.236369 10.426946 1.954641 10.615879 + 403 1 1 0.236369 10.207687 2.906443 10.612479 + 404 1 1 0.236369 9.895071 3.837892 10.607619 + 405 1 1 0.236369 9.501600 4.731401 10.610270 + 406 1 1 0.236369 9.024913 5.587732 10.609360 + 407 1 1 0.236369 8.470636 6.395593 10.609263 + 408 1 1 0.236369 7.838709 7.150305 10.608867 + 409 1 1 0.236369 7.146309 7.843407 10.606615 + 410 1 1 0.236369 6.395102 8.473356 10.615532 + 411 1 1 0.236369 5.588965 9.019979 10.611137 + 412 1 1 0.236369 4.734314 9.498027 10.612386 + 413 1 1 0.236369 3.835623 9.896103 10.609758 + 414 1 1 0.236369 2.910834 10.206571 10.616542 + 415 1 1 0.236369 1.956142 10.428626 10.616441 + 416 1 1 0.236369 0.988340 10.567152 10.616247 + 417 1 1 0.236369 0.005313 10.615385 10.613264 + 418 1 1 0.236369 -0.975402 10.561965 10.613863 + 419 1 1 0.236369 -1.947902 10.430413 10.609942 + 420 1 1 0.236369 -2.896525 10.202544 10.611829 + 421 1 1 0.236369 -3.823758 9.895994 10.609335 + 422 1 1 0.236369 -4.723535 9.500034 10.613786 + 423 1 1 0.236369 -5.582748 9.025595 10.614382 + 424 1 1 0.236369 -6.389241 8.466582 10.607412 + 425 1 1 0.236369 -7.144085 7.844247 10.608818 + 426 1 1 0.236369 -7.835563 7.150211 10.608641 + 427 1 1 0.236369 -8.459850 6.400515 10.612843 + 428 1 1 0.236369 -9.012643 5.590265 10.613854 + 429 1 1 0.236369 -9.490066 4.731308 10.614945 + 430 1 1 0.236369 -9.881608 3.835018 10.606791 + 431 1 1 0.236369 -10.196521 2.905172 10.608623 + 432 1 1 0.236369 -10.416568 1.958483 10.611293 + 433 1 1 0.236369 -10.554979 0.981636 10.610386 + 434 1 1 0.236369 -10.597025 0.001584 10.610006 + 435 1 1 0.236369 -10.558949 -0.975041 10.607240 + 436 1 1 0.236369 -10.419243 -1.941542 10.614215 + 437 1 1 0.236369 -10.198811 -2.895575 10.610628 + 438 1 1 0.236369 -9.883643 -3.824538 10.613345 + 439 1 1 0.236369 -9.487689 -4.727707 10.612112 + 440 1 1 0.236369 -9.017235 -5.579913 10.607116 + 441 1 1 0.236369 -8.461703 -6.382891 10.609677 + 442 1 1 0.236369 -7.836133 -7.142438 10.616256 + 443 1 1 0.236369 -7.138943 -7.832402 10.615916 + 444 1 1 0.236369 -6.383462 -8.461273 10.610382 + 445 1 1 0.236369 -5.580212 -9.016664 10.612778 + 446 1 1 0.236369 -4.719964 -9.490757 10.612227 + 447 1 1 0.236369 -3.824793 -9.882185 10.614907 + 448 1 1 0.236369 -2.902567 -10.191890 10.616179 + 449 1 1 0.236369 -1.942936 -10.417384 10.607357 + 450 1 1 0.236369 -0.974786 -10.560518 10.615482 + 451 1 1 0.236369 0.009160 -10.603225 10.612226 + 452 1 1 0.236369 0.978665 -10.558995 10.608545 + 453 1 1 0.236369 1.953582 -10.422826 10.608816 + 454 1 1 0.236369 2.906878 -10.191857 10.613659 + 455 1 1 0.236369 3.836156 -9.884879 10.612569 + 456 1 1 0.236369 4.735471 -9.487148 10.612465 + 457 1 1 0.236369 5.586881 -9.009496 10.616287 + 458 1 1 0.236369 6.399753 -8.462582 10.612419 + 459 1 1 0.236369 7.150335 -7.829342 10.607600 + 460 1 1 0.236369 7.838731 -7.144570 10.608268 + 461 1 1 0.236369 8.466010 -6.384455 10.607623 + 462 1 1 0.236369 9.025132 -5.576363 10.608064 + 463 1 1 0.236369 9.499375 -4.720595 10.613317 + 464 1 1 0.236369 9.891889 -3.830212 10.613000 + 465 1 1 0.236369 10.205113 -2.898176 10.610326 + 466 1 1 0.236369 10.432078 -1.943870 10.608230 + 467 1 1 0.236369 10.563273 -0.973349 10.610497 + 468 1 1 0.236369 11.284981 0.008597 9.898187 + 469 1 1 0.236369 11.237111 0.989685 9.894185 + 470 1 1 0.236369 11.115439 1.966393 9.897738 + 471 1 1 0.236369 10.896013 2.924169 9.893139 + 472 1 1 0.236369 10.605130 3.866724 9.896587 + 473 1 1 0.236369 10.222861 4.766785 9.899038 + 474 1 1 0.236369 9.769561 5.644214 9.892284 + 475 1 1 0.236369 9.238978 6.471381 9.894991 + 476 1 1 0.236369 8.644903 7.253909 9.891317 + 477 1 1 0.236369 7.981299 7.981314 9.891511 + 478 1 1 0.236369 7.254566 8.641223 9.890827 + 479 1 1 0.236369 6.472821 9.244148 9.890980 + 480 1 1 0.236369 5.645243 9.769947 9.896457 + 481 1 1 0.236369 4.772595 10.229783 9.894301 + 482 1 1 0.236369 3.863956 10.598809 9.896573 + 483 1 1 0.236369 2.925215 10.894346 9.898753 + 484 1 1 0.236369 1.967786 11.115856 9.897823 + 485 1 1 0.236369 0.984997 11.236211 9.899949 + 486 1 1 0.236369 0.007093 11.279122 9.898003 + 487 1 1 0.236369 -0.980545 11.236238 9.899543 + 488 1 1 0.236369 -1.957140 11.107161 9.897579 + 489 1 1 0.236369 -2.912784 10.897867 9.892723 + 490 1 1 0.236369 -3.852664 10.604164 9.897380 + 491 1 1 0.236369 -4.761531 10.229287 9.897122 + 492 1 1 0.236369 -5.632179 9.774588 9.897920 + 493 1 1 0.236369 -6.460861 9.245194 9.897659 + 494 1 1 0.236369 -7.245598 8.643867 9.893371 + 495 1 1 0.236369 -7.967845 7.981551 9.895292 + 496 1 1 0.236369 -8.634979 7.258680 9.897918 + 497 1 1 0.236369 -9.229647 6.473622 9.895915 + 498 1 1 0.236369 -9.758356 5.641849 9.899726 + 499 1 1 0.236369 -10.218410 4.774017 9.891903 + 500 1 1 0.236369 -10.591340 3.859529 9.899260 + 501 1 1 0.236369 -10.887500 2.921200 9.897709 + 502 1 1 0.236369 -11.100858 1.962981 9.893049 + 503 1 1 0.236369 -11.225983 0.989101 9.896461 + 504 1 1 0.236369 -11.274949 0.006153 9.894816 + 505 1 1 0.236369 -11.231502 -0.981681 9.891482 + 506 1 1 0.236369 -11.105073 -1.957096 9.895681 + 507 1 1 0.236369 -10.883924 -2.916012 9.899882 + 508 1 1 0.236369 -10.591019 -3.849808 9.894609 + 509 1 1 0.236369 -10.216179 -4.762005 9.896097 + 510 1 1 0.236369 -9.760292 -5.630509 9.891297 + 511 1 1 0.236369 -9.232620 -6.459213 9.892186 + 512 1 1 0.236369 -8.632667 -7.245109 9.891817 + 513 1 1 0.236369 -7.969027 -7.973943 9.890556 + 514 1 1 0.236369 -7.241889 -8.633429 9.892914 + 515 1 1 0.236369 -6.463339 -9.230590 9.892489 + 516 1 1 0.236369 -5.628862 -9.763483 9.893773 + 517 1 1 0.236369 -4.763932 -10.216045 9.891531 + 518 1 1 0.236369 -3.856107 -10.595258 9.900173 + 519 1 1 0.236369 -2.917760 -10.883930 9.895322 + 520 1 1 0.236369 -1.957698 -11.101442 9.894066 + 521 1 1 0.236369 -0.978862 -11.229282 9.892686 + 522 1 1 0.236369 0.004484 -11.275387 9.893835 + 523 1 1 0.236369 0.986566 -11.233723 9.894178 + 524 1 1 0.236369 1.965969 -11.105663 9.899450 + 525 1 1 0.236369 2.925136 -10.885127 9.895142 + 526 1 1 0.236369 3.864885 -10.589760 9.896279 + 527 1 1 0.236369 4.775447 -10.219017 9.890235 + 528 1 1 0.236369 5.648526 -9.757734 9.896065 + 529 1 1 0.236369 6.470484 -9.231224 9.897962 + 530 1 1 0.236369 7.250488 -8.632572 9.896759 + 531 1 1 0.236369 7.981428 -7.964562 9.895470 + 532 1 1 0.236369 8.640079 -7.248763 9.898445 + 533 1 1 0.236369 9.243321 -6.464321 9.899812 + 534 1 1 0.236369 9.771989 -5.633899 9.893325 + 535 1 1 0.236369 10.229585 -4.760283 9.898158 + 536 1 1 0.236369 10.602323 -3.856333 9.893039 + 537 1 1 0.236369 10.897257 -2.912255 9.890336 + 538 1 1 0.236369 11.112979 -1.957811 9.891129 + 539 1 1 0.236369 11.242095 -0.977339 9.893474 + 540 1 1 0.236369 11.905501 0.007120 9.134477 + 541 1 1 0.236369 11.863132 0.987598 9.131602 + 542 1 1 0.236369 11.739495 1.964901 9.133044 + 543 1 1 0.236369 11.542015 2.923489 9.135861 + 544 1 1 0.236369 11.258130 3.870478 9.139089 + 545 1 1 0.236369 10.898422 4.784103 9.138234 + 546 1 1 0.236369 10.473551 5.664954 9.138567 + 547 1 1 0.236369 9.964960 6.512622 9.136019 + 548 1 1 0.236369 9.395433 7.311944 9.140614 + 549 1 1 0.236369 8.762213 8.062267 9.141311 + 550 1 1 0.236369 8.063446 8.761565 9.140747 + 551 1 1 0.236369 7.316679 9.396238 9.136037 + 552 1 1 0.236369 6.512794 9.966665 9.140471 + 553 1 1 0.236369 5.670751 10.468179 9.135286 + 554 1 1 0.236369 4.787337 10.906563 9.137452 + 555 1 1 0.236369 3.868444 11.264119 9.137025 + 556 1 1 0.236369 2.921547 11.538993 9.139880 + 557 1 1 0.236369 1.962034 11.744149 9.134269 + 558 1 1 0.236369 0.986962 11.867449 9.138055 + 559 1 1 0.236369 0.002703 11.909849 9.137444 + 560 1 1 0.236369 -0.980748 11.868851 9.137986 + 561 1 1 0.236369 -1.950508 11.741844 9.134521 + 562 1 1 0.236369 -2.917052 11.537781 9.134738 + 563 1 1 0.236369 -3.855143 11.263477 9.133303 + 564 1 1 0.236369 -4.776384 10.899116 9.132428 + 565 1 1 0.236369 -5.656226 10.467590 9.134287 + 566 1 1 0.236369 -6.504879 9.966091 9.134970 + 567 1 1 0.236369 -7.301230 9.399486 9.136779 + 568 1 1 0.236369 -8.052303 8.761163 9.141330 + 569 1 1 0.236369 -8.751561 8.065716 9.131703 + 570 1 1 0.236369 -9.388849 7.318574 9.138517 + 571 1 1 0.236369 -9.954628 6.514598 9.140473 + 572 1 1 0.236369 -10.456509 5.664017 9.140080 + 573 1 1 0.236369 -10.894702 4.788390 9.132613 + 574 1 1 0.236369 -11.248796 3.870109 9.140974 + 575 1 1 0.236369 -11.531768 2.926150 9.135830 + 576 1 1 0.236369 -11.729661 1.961409 9.140179 + 577 1 1 0.236369 -11.851966 0.985300 9.140071 + 578 1 1 0.236369 -11.898628 0.004810 9.134973 + 579 1 1 0.236369 -11.851035 -0.980446 9.137733 + 580 1 1 0.236369 -11.728097 -1.958239 9.140067 + 581 1 1 0.236369 -11.531010 -2.919659 9.131631 + 582 1 1 0.236369 -11.246666 -3.861437 9.132190 + 583 1 1 0.236369 -10.892097 -4.778317 9.135189 + 584 1 1 0.236369 -10.464454 -5.657860 9.132913 + 585 1 1 0.236369 -9.960534 -6.500610 9.131762 + 586 1 1 0.236369 -9.386939 -7.301209 9.139244 + 587 1 1 0.236369 -8.747848 -8.051832 9.134694 + 588 1 1 0.236369 -8.051598 -8.748254 9.139596 + 589 1 1 0.236369 -7.301416 -9.382415 9.133158 + 590 1 1 0.236369 -6.505662 -9.954721 9.138183 + 591 1 1 0.236369 -5.658576 -10.463964 9.140177 + 592 1 1 0.236369 -4.779397 -10.888044 9.138993 + 593 1 1 0.236369 -3.862904 -11.254573 9.133718 + 594 1 1 0.236369 -2.919988 -11.529648 9.135011 + 595 1 1 0.236369 -1.951938 -11.735844 9.135053 + 596 1 1 0.236369 -0.977767 -11.857216 9.134096 + 597 1 1 0.236369 0.001897 -11.896903 9.134794 + 598 1 1 0.236369 0.987669 -11.857676 9.132291 + 599 1 1 0.236369 1.960201 -11.732927 9.135937 + 600 1 1 0.236369 2.921901 -11.526647 9.135968 + 601 1 1 0.236369 3.872528 -11.251563 9.131712 + 602 1 1 0.236369 4.785902 -10.892133 9.137792 + 603 1 1 0.236369 5.673213 -10.459936 9.132016 + 604 1 1 0.236369 6.515814 -9.955386 9.133113 + 605 1 1 0.236369 7.315144 -9.386994 9.138268 + 606 1 1 0.236369 8.068008 -8.746748 9.136967 + 607 1 1 0.236369 8.764125 -8.050649 9.131482 + 608 1 1 0.236369 9.400898 -7.301807 9.134302 + 609 1 1 0.236369 9.962538 -6.505991 9.135188 + 610 1 1 0.236369 10.474656 -5.655949 9.132886 + 611 1 1 0.236369 10.904103 -4.778868 9.132167 + 612 1 1 0.236369 11.265409 -3.858976 9.136029 + 613 1 1 0.236369 11.541431 -2.915244 9.135125 + 614 1 1 0.236369 11.742791 -1.951687 9.139667 + 615 1 1 0.236369 11.867668 -0.978886 9.136797 + 616 1 1 0.236369 12.474323 0.007287 8.341729 + 617 1 1 0.236369 12.438578 0.987418 8.338157 + 618 1 1 0.236369 12.327501 1.951616 8.333694 + 619 1 1 0.236369 12.133187 2.912923 8.333603 + 620 1 1 0.236369 11.870071 3.862704 8.335216 + 621 1 1 0.236369 11.530053 4.777062 8.337213 + 622 1 1 0.236369 11.118533 5.666303 8.340736 + 623 1 1 0.236369 10.636633 6.526217 8.335148 + 624 1 1 0.236369 10.096760 7.338386 8.336341 + 625 1 1 0.236369 9.484652 8.109755 8.340003 + 626 1 1 0.236369 8.825327 8.821402 8.336426 + 627 1 1 0.236369 8.106554 9.484779 8.336773 + 628 1 1 0.236369 7.338181 10.093942 8.335108 + 629 1 1 0.236369 6.525533 10.639169 8.337430 + 630 1 1 0.236369 5.672013 11.118375 8.342511 + 631 1 1 0.236369 4.780535 11.532433 8.342431 + 632 1 1 0.236369 3.859888 11.866547 8.337490 + 633 1 1 0.236369 2.920824 12.131449 8.340308 + 634 1 1 0.236369 1.956858 12.328443 8.336076 + 635 1 1 0.236369 0.978715 12.436207 8.343053 + 636 1 1 0.236369 0.001209 12.478697 8.339800 + 637 1 1 0.236369 -0.969918 12.443240 8.335623 + 638 1 1 0.236369 -1.946215 12.325204 8.334650 + 639 1 1 0.236369 -2.903092 12.130432 8.339212 + 640 1 1 0.236369 -3.851980 11.866930 8.336297 + 641 1 1 0.236369 -4.767322 11.522681 8.334265 + 642 1 1 0.236369 -5.655891 11.121511 8.335138 + 643 1 1 0.236369 -6.516305 10.638210 8.334049 + 644 1 1 0.236369 -7.324737 10.093108 8.340362 + 645 1 1 0.236369 -8.096321 9.493323 8.341371 + 646 1 1 0.236369 -8.818572 8.823674 8.341627 + 647 1 1 0.236369 -9.478921 8.102821 8.336204 + 648 1 1 0.236369 -10.088171 7.331730 8.342512 + 649 1 1 0.236369 -10.632935 6.522447 8.339633 + 650 1 1 0.236369 -11.110618 5.663720 8.333698 + 651 1 1 0.236369 -11.521201 4.773576 8.336994 + 652 1 1 0.236369 -11.859728 3.859879 8.338890 + 653 1 1 0.236369 -12.127014 2.914411 8.339831 + 654 1 1 0.236369 -12.312141 1.954677 8.338021 + 655 1 1 0.236369 -12.430778 0.985794 8.341665 + 656 1 1 0.236369 -12.466658 0.008583 8.335002 + 657 1 1 0.236369 -12.426645 -0.975066 8.343302 + 658 1 1 0.236369 -12.313501 -1.941440 8.341891 + 659 1 1 0.236369 -12.122083 -2.902005 8.336955 + 660 1 1 0.236369 -11.857167 -3.852013 8.339716 + 661 1 1 0.236369 -11.521427 -4.765162 8.336591 + 662 1 1 0.236369 -11.107769 -5.656034 8.334446 + 663 1 1 0.236369 -10.625636 -6.507436 8.338769 + 664 1 1 0.236369 -10.081356 -7.324858 8.341806 + 665 1 1 0.236369 -9.481114 -8.092923 8.341193 + 666 1 1 0.236369 -8.816982 -8.811630 8.343030 + 667 1 1 0.236369 -8.094295 -9.479966 8.336889 + 668 1 1 0.236369 -7.324481 -10.087581 8.337451 + 669 1 1 0.236369 -6.512455 -10.633798 8.335058 + 670 1 1 0.236369 -5.660130 -11.107952 8.336891 + 671 1 1 0.236369 -4.763365 -11.516216 8.339090 + 672 1 1 0.236369 -3.853253 -11.858829 8.339056 + 673 1 1 0.236369 -2.910484 -12.122262 8.335158 + 674 1 1 0.236369 -1.949637 -12.316036 8.334724 + 675 1 1 0.236369 -0.976881 -12.430622 8.337539 + 676 1 1 0.236369 0.006210 -12.465539 8.341867 + 677 1 1 0.236369 0.984282 -12.424683 8.335404 + 678 1 1 0.236369 1.951578 -12.309882 8.338561 + 679 1 1 0.236369 2.920853 -12.125341 8.334817 + 680 1 1 0.236369 3.861360 -11.857628 8.342200 + 681 1 1 0.236369 4.780223 -11.513788 8.341220 + 682 1 1 0.236369 5.662824 -11.110107 8.339197 + 683 1 1 0.236369 6.525230 -10.624498 8.337449 + 684 1 1 0.236369 7.340228 -10.083904 8.338455 + 685 1 1 0.236369 8.109789 -9.482163 8.342423 + 686 1 1 0.236369 8.827656 -8.810805 8.342604 + 687 1 1 0.236369 9.491672 -8.093388 8.338537 + 688 1 1 0.236369 10.095229 -7.325419 8.338846 + 689 1 1 0.236369 10.635942 -6.514112 8.342651 + 690 1 1 0.236369 11.116659 -5.661788 8.339339 + 691 1 1 0.236369 11.524006 -4.770511 8.341311 + 692 1 1 0.236369 11.861928 -3.850462 8.340167 + 693 1 1 0.236369 12.136832 -2.905206 8.338250 + 694 1 1 0.236369 12.321506 -1.941197 8.335751 + 695 1 1 0.236369 12.436552 -0.976474 8.339579 + 696 1 1 0.236369 12.993710 0.007571 7.501843 + 697 1 1 0.236369 12.957848 0.991310 7.501975 + 698 1 1 0.236369 12.848261 1.963987 7.508620 + 699 1 1 0.236369 12.657076 2.926451 7.501256 + 700 1 1 0.236369 12.407794 3.881814 7.506456 + 701 1 1 0.236369 12.076487 4.805124 7.504373 + 702 1 1 0.236369 11.681822 5.700681 7.506126 + 703 1 1 0.236369 11.212281 6.574788 7.507375 + 704 1 1 0.236369 10.684580 7.401285 7.503033 + 705 1 1 0.236369 10.090805 8.182451 7.500430 + 706 1 1 0.236369 9.444381 8.930246 7.508355 + 707 1 1 0.236369 8.747499 9.610094 7.503693 + 708 1 1 0.236369 7.992372 10.243681 7.506613 + 709 1 1 0.236369 7.200482 10.828036 7.508957 + 710 1 1 0.236369 6.353919 11.337913 7.502741 + 711 1 1 0.236369 5.487475 11.782816 7.509979 + 712 1 1 0.236369 4.576468 12.164621 7.508344 + 713 1 1 0.236369 3.645433 12.478092 7.507913 + 714 1 1 0.236369 2.694813 12.710396 7.506566 + 715 1 1 0.236369 1.718773 12.883816 7.505437 + 716 1 1 0.236369 0.741288 12.976463 7.503867 + 717 1 1 0.236369 -0.241183 12.992644 7.508222 + 718 1 1 0.236369 -1.219758 12.938089 7.505953 + 719 1 1 0.236369 -2.193752 12.805793 7.507816 + 720 1 1 0.236369 -3.162855 12.600913 7.509877 + 721 1 1 0.236369 -4.105877 12.327837 7.507883 + 722 1 1 0.236369 -5.024334 11.987090 7.508529 + 723 1 1 0.236369 -5.918837 11.565593 7.504856 + 724 1 1 0.236369 -6.771753 11.086148 7.508738 + 725 1 1 0.236369 -7.592363 10.541510 7.503338 + 726 1 1 0.236369 -8.369206 9.934465 7.502053 + 727 1 1 0.236369 -9.096167 9.277220 7.504944 + 728 1 1 0.236369 -9.764385 8.565778 7.500312 + 729 1 1 0.236369 -10.385881 7.802834 7.508276 + 730 1 1 0.236369 -10.947621 6.992721 7.502643 + 731 1 1 0.236369 -11.440121 6.141000 7.506775 + 732 1 1 0.236369 -11.879558 5.256682 7.507939 + 733 1 1 0.236369 -12.236448 4.347058 7.506818 + 734 1 1 0.236369 -12.529715 3.410524 7.506508 + 735 1 1 0.236369 -12.752821 2.453059 7.502373 + 736 1 1 0.236369 -12.904880 1.472722 7.504774 + 737 1 1 0.236369 -12.975105 0.496402 7.509364 + 738 1 1 0.236369 -12.978077 -0.490293 7.502411 + 739 1 1 0.236369 -12.905381 -1.469381 7.502091 + 740 1 1 0.236369 -12.756313 -2.434974 7.502725 + 741 1 1 0.236369 -12.528128 -3.399757 7.507758 + 742 1 1 0.236369 -12.243189 -4.338927 7.503314 + 743 1 1 0.236369 -11.878174 -5.248265 7.506031 + 744 1 1 0.236369 -11.448705 -6.134024 7.501840 + 745 1 1 0.236369 -10.947888 -6.981665 7.500875 + 746 1 1 0.236369 -10.392502 -7.785873 7.503089 + 747 1 1 0.236369 -9.764465 -8.549057 7.502309 + 748 1 1 0.236369 -9.096290 -9.265291 7.509092 + 749 1 1 0.236369 -8.370029 -9.929459 7.509369 + 750 1 1 0.236369 -7.592647 -10.531836 7.500319 + 751 1 1 0.236369 -6.772411 -11.080398 7.505936 + 752 1 1 0.236369 -5.918387 -11.557160 7.500438 + 753 1 1 0.236369 -5.017977 -11.971141 7.504249 + 754 1 1 0.236369 -4.104337 -12.317834 7.505216 + 755 1 1 0.236369 -3.160884 -12.595744 7.508403 + 756 1 1 0.236369 -2.201313 -12.798758 7.506250 + 757 1 1 0.236369 -1.224415 -12.930551 7.502552 + 758 1 1 0.236369 -0.245368 -12.980101 7.509047 + 759 1 1 0.236369 0.742197 -12.964523 7.507673 + 760 1 1 0.236369 1.723509 -12.873010 7.505627 + 761 1 1 0.236369 2.691129 -12.702157 7.508972 + 762 1 1 0.236369 3.639262 -12.468089 7.503681 + 763 1 1 0.236369 4.571877 -12.151129 7.503377 + 764 1 1 0.236369 5.485363 -11.770884 7.506189 + 765 1 1 0.236369 6.361789 -11.322589 7.500869 + 766 1 1 0.236369 7.196835 -10.814448 7.503755 + 767 1 1 0.236369 7.990156 -10.239451 7.501874 + 768 1 1 0.236369 8.749129 -9.601131 7.508105 + 769 1 1 0.236369 9.445991 -8.916522 7.507232 + 770 1 1 0.236369 10.093203 -8.175773 7.506747 + 771 1 1 0.236369 10.687583 -7.387980 7.509140 + 772 1 1 0.236369 11.208905 -6.556421 7.508210 + 773 1 1 0.236369 11.673766 -5.694055 7.505487 + 774 1 1 0.236369 12.077576 -4.793994 7.500155 + 775 1 1 0.236369 12.405406 -3.867996 7.500947 + 776 1 1 0.236369 12.662085 -2.915590 7.505148 + 777 1 1 0.236369 12.849076 -1.950627 7.509525 + 778 1 1 0.236369 12.960250 -0.980748 7.508431 + 779 1 1 0.236369 13.460905 0.001787 6.643680 + 780 1 1 0.236369 13.420082 0.984448 6.644064 + 781 1 1 0.236369 13.316652 1.966304 6.638056 + 782 1 1 0.236369 13.136804 2.927099 6.637539 + 783 1 1 0.236369 12.886653 3.885653 6.642163 + 784 1 1 0.236369 12.566020 4.812956 6.636453 + 785 1 1 0.236369 12.188879 5.712009 6.643922 + 786 1 1 0.236369 11.735136 6.592766 6.643633 + 787 1 1 0.236369 11.225927 7.432076 6.637988 + 788 1 1 0.236369 10.655487 8.231792 6.637779 + 789 1 1 0.236369 10.020536 8.983207 6.641257 + 790 1 1 0.236369 9.338722 9.690556 6.641496 + 791 1 1 0.236369 8.611075 10.342447 6.642334 + 792 1 1 0.236369 7.832653 10.946398 6.640267 + 793 1 1 0.236369 7.017163 11.488950 6.635302 + 794 1 1 0.236369 6.159312 11.966054 6.639925 + 795 1 1 0.236369 5.268911 12.386440 6.634761 + 796 1 1 0.236369 4.344253 12.737892 6.641907 + 797 1 1 0.236369 3.403465 13.017634 6.640927 + 798 1 1 0.236369 2.444462 13.235540 6.640325 + 799 1 1 0.236369 1.479364 13.372649 6.636600 + 800 1 1 0.236369 0.500764 13.447304 6.641467 + 801 1 1 0.236369 -0.484497 13.449446 6.641575 + 802 1 1 0.236369 -1.470060 13.375653 6.637773 + 803 1 1 0.236369 -2.436350 13.235330 6.634658 + 804 1 1 0.236369 -3.401632 13.019266 6.642767 + 805 1 1 0.236369 -4.342565 12.733890 6.642033 + 806 1 1 0.236369 -5.255160 12.390639 6.639427 + 807 1 1 0.236369 -6.148034 11.970807 6.641400 + 808 1 1 0.236369 -7.001720 11.490053 6.642242 + 809 1 1 0.236369 -7.820310 10.948014 6.637637 + 810 1 1 0.236369 -8.599748 10.348126 6.643467 + 811 1 1 0.236369 -9.330043 9.693349 6.640097 + 812 1 1 0.236369 -10.017140 8.982667 6.637209 + 813 1 1 0.236369 -10.640725 8.223694 6.636999 + 814 1 1 0.236369 -11.210143 7.426788 6.643232 + 815 1 1 0.236369 -11.723091 6.592393 6.637991 + 816 1 1 0.236369 -12.180215 5.711968 6.635831 + 817 1 1 0.236369 -12.561739 4.809159 6.643794 + 818 1 1 0.236369 -12.878996 3.885488 6.640839 + 819 1 1 0.236369 -13.124387 2.933171 6.644152 + 820 1 1 0.236369 -13.303747 1.961008 6.636269 + 821 1 1 0.236369 -13.409308 0.992010 6.642618 + 822 1 1 0.236369 -13.449415 0.000637 6.639268 + 823 1 1 0.236369 -13.415142 -0.977758 6.640238 + 824 1 1 0.236369 -13.308860 -1.954742 6.634779 + 825 1 1 0.236369 -13.123518 -2.921105 6.639975 + 826 1 1 0.236369 -12.880631 -3.874704 6.640666 + 827 1 1 0.236369 -12.561521 -4.801617 6.639311 + 828 1 1 0.236369 -12.175560 -5.704119 6.634927 + 829 1 1 0.236369 -11.729471 -6.574302 6.639482 + 830 1 1 0.236369 -11.213429 -7.420783 6.634862 + 831 1 1 0.236369 -10.643230 -8.218635 6.642767 + 832 1 1 0.236369 -10.017970 -8.974838 6.640277 + 833 1 1 0.236369 -9.329624 -9.682012 6.641241 + 834 1 1 0.236369 -8.604573 -10.338796 6.640803 + 835 1 1 0.236369 -7.824860 -10.941032 6.640565 + 836 1 1 0.236369 -7.005884 -11.478972 6.643869 + 837 1 1 0.236369 -6.146014 -11.961965 6.636100 + 838 1 1 0.236369 -5.260652 -12.372814 6.639079 + 839 1 1 0.236369 -4.339686 -12.727254 6.642754 + 840 1 1 0.236369 -3.401687 -13.006505 6.639300 + 841 1 1 0.236369 -2.442454 -13.219569 6.641954 + 842 1 1 0.236369 -1.463537 -13.366531 6.636129 + 843 1 1 0.236369 -0.488418 -13.442926 6.641247 + 844 1 1 0.236369 0.497369 -13.434851 6.643475 + 845 1 1 0.236369 1.481025 -13.366450 6.635957 + 846 1 1 0.236369 2.447902 -13.220472 6.638611 + 847 1 1 0.236369 3.409683 -13.011402 6.634749 + 848 1 1 0.236369 4.351320 -12.726468 6.636588 + 849 1 1 0.236369 5.265894 -12.380793 6.640992 + 850 1 1 0.236369 6.157878 -11.955153 6.643044 + 851 1 1 0.236369 7.009355 -11.477045 6.637778 + 852 1 1 0.236369 7.837139 -10.940216 6.634603 + 853 1 1 0.236369 8.607454 -10.333678 6.643383 + 854 1 1 0.236369 9.340105 -9.680969 6.639041 + 855 1 1 0.236369 10.027466 -8.976652 6.643435 + 856 1 1 0.236369 10.652950 -8.220031 6.637610 + 857 1 1 0.236369 11.227538 -7.420494 6.641241 + 858 1 1 0.236369 11.735720 -6.581916 6.634505 + 859 1 1 0.236369 12.183807 -5.703225 6.639454 + 860 1 1 0.236369 12.565776 -4.798318 6.637648 + 861 1 1 0.236369 12.889421 -3.870351 6.637691 + 862 1 1 0.236369 13.135533 -2.919573 6.643864 + 863 1 1 0.236369 13.314244 -1.952480 6.641835 + 864 1 1 0.236369 13.423301 -0.972158 6.637670 + 865 1 1 0.236369 13.858787 0.006343 5.746580 + 866 1 1 0.236369 13.826831 0.983547 5.744407 + 867 1 1 0.236369 13.728011 1.959307 5.746016 + 868 1 1 0.236369 13.555505 2.918880 5.749846 + 869 1 1 0.236369 13.310552 3.864969 5.746410 + 870 1 1 0.236369 13.005053 4.800391 5.741757 + 871 1 1 0.236369 12.634344 5.700556 5.748634 + 872 1 1 0.236369 12.200228 6.579132 5.747513 + 873 1 1 0.236369 11.710330 7.424531 5.741340 + 874 1 1 0.236369 11.160284 8.231376 5.741865 + 875 1 1 0.236369 10.553020 8.993001 5.743222 + 876 1 1 0.236369 9.890627 9.713183 5.744487 + 877 1 1 0.236369 9.176679 10.388218 5.745536 + 878 1 1 0.236369 8.426471 11.015515 5.743002 + 879 1 1 0.236369 7.624033 11.578965 5.748531 + 880 1 1 0.236369 6.788750 12.086890 5.748179 + 881 1 1 0.236369 5.919216 12.535227 5.742989 + 882 1 1 0.236369 5.020990 12.924916 5.746408 + 883 1 1 0.236369 4.097585 13.245614 5.741267 + 884 1 1 0.236369 3.153791 13.501594 5.746951 + 885 1 1 0.236369 2.195228 13.685338 5.743725 + 886 1 1 0.236369 1.224521 13.808591 5.746946 + 887 1 1 0.236369 0.246752 13.861085 5.743205 + 888 1 1 0.236369 -0.730913 13.842525 5.747056 + 889 1 1 0.236369 -1.698840 13.757368 5.744189 + 890 1 1 0.236369 -2.666574 13.601267 5.744170 + 891 1 1 0.236369 -3.620567 13.383149 5.742321 + 892 1 1 0.236369 -4.558733 13.090117 5.747497 + 893 1 1 0.236369 -5.470189 12.739097 5.748445 + 894 1 1 0.236369 -6.356005 12.319064 5.749516 + 895 1 1 0.236369 -7.200441 11.842472 5.745393 + 896 1 1 0.236369 -8.019394 11.306518 5.742183 + 897 1 1 0.236369 -8.797778 10.707996 5.746280 + 898 1 1 0.236369 -9.533259 10.064214 5.742233 + 899 1 1 0.236369 -10.220258 9.359631 5.744355 + 900 1 1 0.236369 -10.850298 8.621829 5.748782 + 901 1 1 0.236369 -11.427159 7.826661 5.744542 + 902 1 1 0.236369 -11.958871 7.004237 5.749508 + 903 1 1 0.236369 -12.421947 6.138680 5.743982 + 904 1 1 0.236369 -12.822608 5.254840 5.747234 + 905 1 1 0.236369 -13.163986 4.330706 5.746138 + 906 1 1 0.236369 -13.430449 3.391159 5.741260 + 907 1 1 0.236369 -13.638887 2.435025 5.744375 + 908 1 1 0.236369 -13.770734 1.471706 5.749499 + 909 1 1 0.236369 -13.845538 0.491214 5.740807 + 910 1 1 0.236369 -13.843353 -0.486095 5.744092 + 911 1 1 0.236369 -13.779019 -1.457108 5.742658 + 912 1 1 0.236369 -13.639097 -2.428197 5.742530 + 913 1 1 0.236369 -13.435679 -3.380410 5.743823 + 914 1 1 0.236369 -13.157145 -4.328335 5.749493 + 915 1 1 0.236369 -12.817865 -5.242389 5.745276 + 916 1 1 0.236369 -12.421017 -6.132738 5.748284 + 917 1 1 0.236369 -11.953720 -6.993932 5.743754 + 918 1 1 0.236369 -11.434097 -7.817595 5.744838 + 919 1 1 0.236369 -10.851216 -8.611835 5.749762 + 920 1 1 0.236369 -10.213596 -9.354448 5.741581 + 921 1 1 0.236369 -9.530418 -10.055162 5.740955 + 922 1 1 0.236369 -8.800003 -10.693313 5.747312 + 923 1 1 0.236369 -8.023469 -11.289480 5.749569 + 924 1 1 0.236369 -7.205053 -11.827667 5.741340 + 925 1 1 0.236369 -6.352552 -12.312866 5.746768 + 926 1 1 0.236369 -5.468713 -12.728488 5.741712 + 927 1 1 0.236369 -4.554994 -13.084764 5.747191 + 928 1 1 0.236369 -3.618699 -13.370411 5.746508 + 929 1 1 0.236369 -2.669363 -13.589757 5.740689 + 930 1 1 0.236369 -1.703475 -13.746236 5.748231 + 931 1 1 0.236369 -0.732175 -13.831888 5.750114 + 932 1 1 0.236369 0.244820 -13.849639 5.744619 + 933 1 1 0.236369 1.224259 -13.796974 5.743699 + 934 1 1 0.236369 2.195229 -13.675130 5.740740 + 935 1 1 0.236369 3.158366 -13.488748 5.742504 + 936 1 1 0.236369 4.105472 -13.237269 5.746062 + 937 1 1 0.236369 5.028927 -12.911443 5.746265 + 938 1 1 0.236369 5.922809 -12.529288 5.742777 + 939 1 1 0.236369 6.789812 -12.073184 5.746795 + 940 1 1 0.236369 7.630407 -11.572598 5.740852 + 941 1 1 0.236369 8.427747 -11.003454 5.749657 + 942 1 1 0.236369 9.182997 -10.379667 5.741177 + 943 1 1 0.236369 9.892752 -9.707614 5.743591 + 944 1 1 0.236369 10.546850 -8.982820 5.746762 + 945 1 1 0.236369 11.160544 -8.219281 5.745291 + 946 1 1 0.236369 11.710731 -7.415056 5.745561 + 947 1 1 0.236369 12.202271 -6.566022 5.744043 + 948 1 1 0.236369 12.634405 -5.694671 5.747941 + 949 1 1 0.236369 13.011987 -4.784239 5.743077 + 950 1 1 0.236369 13.311049 -3.855275 5.746744 + 951 1 1 0.236369 13.550176 -2.910878 5.749473 + 952 1 1 0.236369 13.726943 -1.948393 5.743558 + 953 1 1 0.236369 13.832616 -0.975879 5.748386 + 954 1 1 0.236369 14.209118 0.001496 4.829468 + 955 1 1 0.236369 14.177135 0.981974 4.822835 + 956 1 1 0.236369 14.070273 1.964773 4.823166 + 957 1 1 0.236369 13.909856 2.921342 4.825742 + 958 1 1 0.236369 13.671074 3.882797 4.828465 + 959 1 1 0.236369 13.372683 4.807060 4.828169 + 960 1 1 0.236369 13.002777 5.727189 4.828392 + 961 1 1 0.236369 12.585067 6.603882 4.821686 + 962 1 1 0.236369 12.099089 7.458128 4.822878 + 963 1 1 0.236369 11.549812 8.277956 4.829231 + 964 1 1 0.236369 10.955832 9.055345 4.830011 + 965 1 1 0.236369 10.303628 9.782209 4.829061 + 966 1 1 0.236369 9.606536 10.474257 4.831037 + 967 1 1 0.236369 8.860008 11.114509 4.830789 + 968 1 1 0.236369 8.072915 11.699380 4.823823 + 969 1 1 0.236369 7.244866 12.219523 4.826690 + 970 1 1 0.236369 6.385389 12.690826 4.829469 + 971 1 1 0.236369 5.492401 13.106627 4.826816 + 972 1 1 0.236369 4.584620 13.447357 4.827766 + 973 1 1 0.236369 3.643304 13.731196 4.827174 + 974 1 1 0.236369 2.690146 13.953563 4.828902 + 975 1 1 0.236369 1.713732 14.108888 4.822226 + 976 1 1 0.236369 0.744427 14.194882 4.826520 + 977 1 1 0.236369 -0.237223 14.201880 4.823891 + 978 1 1 0.236369 -1.218612 14.156508 4.824966 + 979 1 1 0.236369 -2.193368 14.041506 4.827108 + 980 1 1 0.236369 -3.158101 13.856921 4.829029 + 981 1 1 0.236369 -4.101004 13.605228 4.825715 + 982 1 1 0.236369 -5.034504 13.289715 4.826668 + 983 1 1 0.236369 -5.940414 12.909249 4.822882 + 984 1 1 0.236369 -6.809336 12.462340 4.823740 + 985 1 1 0.236369 -7.653764 11.966251 4.824520 + 986 1 1 0.236369 -8.460285 11.405844 4.826092 + 987 1 1 0.236369 -9.227627 10.801115 4.823995 + 988 1 1 0.236369 -9.952463 10.139300 4.824225 + 989 1 1 0.236369 -10.627903 9.420657 4.830508 + 990 1 1 0.236369 -11.248142 8.671856 4.827453 + 991 1 1 0.236369 -11.823980 7.869671 4.830979 + 992 1 1 0.236369 -12.333498 7.034907 4.827773 + 993 1 1 0.236369 -12.789428 6.165578 4.824099 + 994 1 1 0.236369 -13.183486 5.273957 4.822617 + 995 1 1 0.236369 -13.518777 4.350015 4.827056 + 996 1 1 0.236369 -13.784854 3.403707 4.826018 + 997 1 1 0.236369 -13.983358 2.446754 4.828507 + 998 1 1 0.236369 -14.123401 1.477904 4.829186 + 999 1 1 0.236369 -14.194888 0.492007 4.825586 + 1000 1 1 0.236369 -14.186821 -0.487820 4.827266 + 1001 1 1 0.236369 -14.121529 -1.462051 4.823648 + 1002 1 1 0.236369 -13.989316 -2.431571 4.831027 + 1003 1 1 0.236369 -13.781241 -3.390694 4.826720 + 1004 1 1 0.236369 -13.521592 -4.338619 4.824354 + 1005 1 1 0.236369 -13.185484 -5.264123 4.823883 + 1006 1 1 0.236369 -12.791269 -6.162061 4.831121 + 1007 1 1 0.236369 -12.337770 -7.027476 4.828486 + 1008 1 1 0.236369 -11.825732 -7.857503 4.828671 + 1009 1 1 0.236369 -11.256052 -8.660873 4.828161 + 1010 1 1 0.236369 -10.627600 -9.411052 4.829382 + 1011 1 1 0.236369 -9.954812 -10.123473 4.827397 + 1012 1 1 0.236369 -9.226790 -10.792543 4.826624 + 1013 1 1 0.236369 -8.463734 -11.396298 4.830379 + 1014 1 1 0.236369 -7.652060 -11.951935 4.825521 + 1015 1 1 0.236369 -6.809667 -12.456242 4.824018 + 1016 1 1 0.236369 -5.935345 -12.893447 4.824408 + 1017 1 1 0.236369 -5.035022 -13.279612 4.830640 + 1018 1 1 0.236369 -4.098949 -13.589177 4.828619 + 1019 1 1 0.236369 -3.158023 -13.838572 4.830123 + 1020 1 1 0.236369 -2.188522 -14.024565 4.825379 + 1021 1 1 0.236369 -1.222148 -14.148488 4.827922 + 1022 1 1 0.236369 -0.241434 -14.199706 4.821908 + 1023 1 1 0.236369 0.736091 -14.179688 4.830792 + 1024 1 1 0.236369 1.718498 -14.096416 4.826289 + 1025 1 1 0.236369 2.682626 -13.943881 4.826791 + 1026 1 1 0.236369 3.637217 -13.720544 4.829255 + 1027 1 1 0.236369 4.582615 -13.440818 4.824954 + 1028 1 1 0.236369 5.495670 -13.089713 4.827852 + 1029 1 1 0.236369 6.389442 -12.684133 4.824861 + 1030 1 1 0.236369 7.246897 -12.214064 4.824703 + 1031 1 1 0.236369 8.075038 -11.681897 4.828053 + 1032 1 1 0.236369 8.856236 -11.097656 4.825929 + 1033 1 1 0.236369 9.610177 -10.463220 4.822621 + 1034 1 1 0.236369 10.308375 -9.779789 4.823953 + 1035 1 1 0.236369 10.958040 -9.045503 4.831310 + 1036 1 1 0.236369 11.556741 -8.261353 4.828581 + 1037 1 1 0.236369 12.095436 -7.446322 4.828186 + 1038 1 1 0.236369 12.583148 -6.600582 4.824853 + 1039 1 1 0.236369 13.008166 -5.711907 4.821790 + 1040 1 1 0.236369 13.371186 -4.799605 4.827297 + 1041 1 1 0.236369 13.668416 -3.872118 4.821955 + 1042 1 1 0.236369 13.902808 -2.919017 4.824239 + 1043 1 1 0.236369 14.073253 -1.947114 4.823499 + 1044 1 1 0.236369 14.172385 -0.978560 4.826085 + 1045 1 1 0.236369 14.496932 0.008819 3.889972 + 1046 1 1 0.236369 14.465694 0.987377 3.888565 + 1047 1 1 0.236369 14.357119 1.951947 3.885433 + 1048 1 1 0.236369 14.197656 2.920363 3.885206 + 1049 1 1 0.236369 13.963893 3.869734 3.883068 + 1050 1 1 0.236369 13.678057 4.807274 3.884005 + 1051 1 1 0.236369 13.324568 5.714794 3.889498 + 1052 1 1 0.236369 12.899234 6.600005 3.883180 + 1053 1 1 0.236369 12.432994 7.464668 3.891464 + 1054 1 1 0.236369 11.892131 8.286757 3.886582 + 1055 1 1 0.236369 11.312876 9.064589 3.883083 + 1056 1 1 0.236369 10.676377 9.810018 3.888007 + 1057 1 1 0.236369 9.987705 10.502121 3.890603 + 1058 1 1 0.236369 9.259494 11.153469 3.885759 + 1059 1 1 0.236369 8.485699 11.750854 3.890085 + 1060 1 1 0.236369 7.670359 12.300605 3.889369 + 1061 1 1 0.236369 6.817900 12.786762 3.888195 + 1062 1 1 0.236369 5.940019 13.226187 3.886056 + 1063 1 1 0.236369 5.033888 13.591256 3.886224 + 1064 1 1 0.236369 4.103751 13.905255 3.886569 + 1065 1 1 0.236369 3.156946 14.148257 3.886516 + 1066 1 1 0.236369 2.200184 14.327615 3.884475 + 1067 1 1 0.236369 1.231550 14.442653 3.887253 + 1068 1 1 0.236369 0.248254 14.493875 3.882684 + 1069 1 1 0.236369 -0.729744 14.470341 3.887934 + 1070 1 1 0.236369 -1.699218 14.395562 3.882777 + 1071 1 1 0.236369 -2.667019 14.248803 3.891008 + 1072 1 1 0.236369 -3.624910 14.026443 3.890886 + 1073 1 1 0.236369 -4.560424 13.757434 3.885668 + 1074 1 1 0.236369 -5.480416 13.416953 3.892026 + 1075 1 1 0.236369 -6.377454 13.018160 3.891833 + 1076 1 1 0.236369 -7.237820 12.550021 3.892172 + 1077 1 1 0.236369 -8.072570 12.039243 3.883863 + 1078 1 1 0.236369 -8.865780 11.463881 3.882315 + 1079 1 1 0.236369 -9.615190 10.833649 3.884767 + 1080 1 1 0.236369 -10.326068 10.160986 3.885749 + 1081 1 1 0.236369 -10.989445 9.445301 3.884619 + 1082 1 1 0.236369 -11.599588 8.682014 3.889845 + 1083 1 1 0.236369 -12.157209 7.871721 3.884545 + 1084 1 1 0.236369 -12.662474 7.036183 3.886770 + 1085 1 1 0.236369 -13.108584 6.162400 3.884880 + 1086 1 1 0.236369 -13.494222 5.270053 3.885744 + 1087 1 1 0.236369 -13.819298 4.340642 3.891315 + 1088 1 1 0.236369 -14.084871 3.402836 3.882413 + 1089 1 1 0.236369 -14.275512 2.438193 3.883608 + 1090 1 1 0.236369 -14.404588 1.474597 3.886166 + 1091 1 1 0.236369 -14.477076 0.491232 3.890692 + 1092 1 1 0.236369 -14.470909 -0.481758 3.884418 + 1093 1 1 0.236369 -14.411085 -1.465500 3.891638 + 1094 1 1 0.236369 -14.273842 -2.429172 3.891984 + 1095 1 1 0.236369 -14.081150 -3.388592 3.886038 + 1096 1 1 0.236369 -13.820282 -4.333674 3.892134 + 1097 1 1 0.236369 -13.497881 -5.258701 3.883507 + 1098 1 1 0.236369 -13.112846 -6.152288 3.889895 + 1099 1 1 0.236369 -12.665221 -7.030031 3.888079 + 1100 1 1 0.236369 -12.157454 -7.865787 3.888497 + 1101 1 1 0.236369 -11.597786 -8.673831 3.887185 + 1102 1 1 0.236369 -10.986623 -9.435796 3.884490 + 1103 1 1 0.236369 -10.331248 -10.153452 3.883727 + 1104 1 1 0.236369 -9.613560 -10.824213 3.888637 + 1105 1 1 0.236369 -8.859511 -11.456050 3.890310 + 1106 1 1 0.236369 -8.067302 -12.022726 3.888982 + 1107 1 1 0.236369 -7.244017 -12.540834 3.887002 + 1108 1 1 0.236369 -6.377039 -13.007844 3.891730 + 1109 1 1 0.236369 -5.481041 -13.404391 3.888200 + 1110 1 1 0.236369 -4.563012 -13.739473 3.884553 + 1111 1 1 0.236369 -3.629434 -14.025236 3.889124 + 1112 1 1 0.236369 -2.673784 -14.232102 3.885492 + 1113 1 1 0.236369 -1.702331 -14.381351 3.889775 + 1114 1 1 0.236369 -0.729075 -14.464349 3.892267 + 1115 1 1 0.236369 0.250947 -14.481835 3.884983 + 1116 1 1 0.236369 1.224518 -14.431572 3.891604 + 1117 1 1 0.236369 2.195791 -14.317541 3.889250 + 1118 1 1 0.236369 3.164173 -14.140253 3.883238 + 1119 1 1 0.236369 4.111002 -13.892796 3.884744 + 1120 1 1 0.236369 5.041411 -13.581372 3.891632 + 1121 1 1 0.236369 5.938919 -13.209941 3.887084 + 1122 1 1 0.236369 6.818344 -12.775953 3.891111 + 1123 1 1 0.236369 7.665091 -12.286133 3.890079 + 1124 1 1 0.236369 8.481607 -11.749522 3.882469 + 1125 1 1 0.236369 9.252573 -11.144773 3.889993 + 1126 1 1 0.236369 9.991323 -10.495413 3.889144 + 1127 1 1 0.236369 10.669531 -9.798838 3.890962 + 1128 1 1 0.236369 11.306480 -9.057418 3.888091 + 1129 1 1 0.236369 11.897522 -8.272285 3.888547 + 1130 1 1 0.236369 12.431325 -7.448625 3.883397 + 1131 1 1 0.236369 12.901684 -6.590016 3.884423 + 1132 1 1 0.236369 13.316466 -5.712887 3.882649 + 1133 1 1 0.236369 13.673426 -4.793894 3.886731 + 1134 1 1 0.236369 13.965124 -3.862148 3.885551 + 1135 1 1 0.236369 14.197401 -2.907470 3.885159 + 1136 1 1 0.236369 14.365883 -1.950808 3.887250 + 1137 1 1 0.236369 14.462122 -0.975208 3.884103 + 1138 1 1 0.236369 14.712795 0.000516 2.935693 + 1139 1 1 0.236369 14.682835 0.987680 2.935757 + 1140 1 1 0.236369 14.581059 1.968572 2.932269 + 1141 1 1 0.236369 14.421993 2.933210 2.926363 + 1142 1 1 0.236369 14.193375 3.889038 2.935385 + 1143 1 1 0.236369 13.907739 4.829142 2.933184 + 1144 1 1 0.236369 13.552514 5.747853 2.927093 + 1145 1 1 0.236369 13.135397 6.642535 2.936319 + 1146 1 1 0.236369 12.666983 7.502466 2.929499 + 1147 1 1 0.236369 12.130378 8.329914 2.934447 + 1148 1 1 0.236369 11.549695 9.126678 2.930969 + 1149 1 1 0.236369 10.920296 9.878089 2.932226 + 1150 1 1 0.236369 10.236692 10.581458 2.931131 + 1151 1 1 0.236369 9.505470 11.236003 2.931879 + 1152 1 1 0.236369 8.732913 11.850196 2.928108 + 1153 1 1 0.236369 7.919582 12.404275 2.932227 + 1154 1 1 0.236369 7.079573 12.911406 2.927903 + 1155 1 1 0.236369 6.193947 13.347790 2.930809 + 1156 1 1 0.236369 5.294834 13.735809 2.931731 + 1157 1 1 0.236369 4.365206 14.056609 2.930974 + 1158 1 1 0.236369 3.418818 14.312943 2.934696 + 1159 1 1 0.236369 2.450984 14.513742 2.936317 + 1160 1 1 0.236369 1.480084 14.638398 2.936077 + 1161 1 1 0.236369 0.499946 14.705408 2.933814 + 1162 1 1 0.236369 -0.488369 14.704020 2.928354 + 1163 1 1 0.236369 -1.467063 14.646744 2.926718 + 1164 1 1 0.236369 -2.437209 14.515246 2.928241 + 1165 1 1 0.236369 -3.404994 14.312192 2.932130 + 1166 1 1 0.236369 -4.355437 14.055361 2.932638 + 1167 1 1 0.236369 -5.281333 13.729949 2.930003 + 1168 1 1 0.236369 -6.189093 13.350642 2.932720 + 1169 1 1 0.236369 -7.062648 12.910988 2.935268 + 1170 1 1 0.236369 -7.912010 12.403009 2.928890 + 1171 1 1 0.236369 -8.721806 11.853912 2.929218 + 1172 1 1 0.236369 -9.491387 11.238181 2.927609 + 1173 1 1 0.236369 -10.217790 10.577261 2.931641 + 1174 1 1 0.236369 -10.907744 9.875095 2.934562 + 1175 1 1 0.236369 -11.537417 9.127357 2.929353 + 1176 1 1 0.236369 -12.121611 8.332316 2.934232 + 1177 1 1 0.236369 -12.648496 7.498003 2.930725 + 1178 1 1 0.236369 -13.130221 6.638896 2.931860 + 1179 1 1 0.236369 -13.540829 5.744983 2.936216 + 1180 1 1 0.236369 -13.891137 4.828142 2.933253 + 1181 1 1 0.236369 -14.186243 3.887307 2.936056 + 1182 1 1 0.236369 -14.414676 2.939398 2.927314 + 1183 1 1 0.236369 -14.573402 1.968821 2.935336 + 1184 1 1 0.236369 -14.672680 0.986369 2.926939 + 1185 1 1 0.236369 -14.705873 0.008321 2.927588 + 1186 1 1 0.236369 -14.672322 -0.975100 2.932662 + 1187 1 1 0.236369 -14.580038 -1.954670 2.930056 + 1188 1 1 0.236369 -14.413492 -2.926439 2.929551 + 1189 1 1 0.236369 -14.184544 -3.883192 2.934312 + 1190 1 1 0.236369 -13.895354 -4.824941 2.929372 + 1191 1 1 0.236369 -13.537247 -5.739904 2.932429 + 1192 1 1 0.236369 -13.121978 -6.629675 2.930975 + 1193 1 1 0.236369 -12.655223 -7.492762 2.929281 + 1194 1 1 0.236369 -12.121692 -8.319634 2.934679 + 1195 1 1 0.236369 -11.544418 -9.112488 2.932060 + 1196 1 1 0.236369 -10.902655 -9.860293 2.927060 + 1197 1 1 0.236369 -10.226131 -10.574203 2.929018 + 1198 1 1 0.236369 -9.492452 -11.230045 2.928064 + 1199 1 1 0.236369 -8.723068 -11.838115 2.931958 + 1200 1 1 0.236369 -7.908081 -12.398573 2.928376 + 1201 1 1 0.236369 -7.065175 -12.895380 2.931279 + 1202 1 1 0.236369 -6.187803 -13.344402 2.933649 + 1203 1 1 0.236369 -5.278757 -13.722990 2.935905 + 1204 1 1 0.236369 -4.355210 -14.042834 2.933979 + 1205 1 1 0.236369 -3.405992 -14.306013 2.927156 + 1206 1 1 0.236369 -2.437365 -14.502458 2.935737 + 1207 1 1 0.236369 -1.472163 -14.636403 2.936100 + 1208 1 1 0.236369 -0.481864 -14.703281 2.932426 + 1209 1 1 0.236369 0.493486 -14.695997 2.935930 + 1210 1 1 0.236369 1.479257 -14.629933 2.929661 + 1211 1 1 0.236369 2.452865 -14.503912 2.935367 + 1212 1 1 0.236369 3.417238 -14.309859 2.926358 + 1213 1 1 0.236369 4.362351 -14.047506 2.931188 + 1214 1 1 0.236369 5.293731 -13.720458 2.927830 + 1215 1 1 0.236369 6.200811 -13.336503 2.929505 + 1216 1 1 0.236369 7.070405 -12.894841 2.928069 + 1217 1 1 0.236369 7.916988 -12.390844 2.932284 + 1218 1 1 0.236369 8.736477 -11.834582 2.932931 + 1219 1 1 0.236369 9.504848 -11.233556 2.929844 + 1220 1 1 0.236369 10.229830 -10.568692 2.926892 + 1221 1 1 0.236369 10.915057 -9.863629 2.926827 + 1222 1 1 0.236369 11.547015 -9.116958 2.926913 + 1223 1 1 0.236369 12.131687 -8.317111 2.927070 + 1224 1 1 0.236369 12.660617 -7.492395 2.926512 + 1225 1 1 0.236369 13.133857 -6.627448 2.936092 + 1226 1 1 0.236369 13.545920 -5.742717 2.933703 + 1227 1 1 0.236369 13.901243 -4.823205 2.933879 + 1228 1 1 0.236369 14.190274 -3.880274 2.926688 + 1229 1 1 0.236369 14.425822 -2.929044 2.927531 + 1230 1 1 0.236369 14.581456 -1.954503 2.928968 + 1231 1 1 0.236369 14.688226 -0.978789 2.935288 + 1232 1 1 0.236369 14.875663 0.007657 1.967613 + 1233 1 1 0.236369 14.839632 0.989407 1.967834 + 1234 1 1 0.236369 14.745179 1.965272 1.961361 + 1235 1 1 0.236369 14.587250 2.934460 1.960816 + 1236 1 1 0.236369 14.362218 3.892046 1.959765 + 1237 1 1 0.236369 14.071334 4.838014 1.965324 + 1238 1 1 0.236369 13.722854 5.752452 1.965073 + 1239 1 1 0.236369 13.315058 6.646245 1.959782 + 1240 1 1 0.236369 12.838616 7.511250 1.962232 + 1241 1 1 0.236369 12.316913 8.348224 1.958349 + 1242 1 1 0.236369 11.736301 9.136562 1.964448 + 1243 1 1 0.236369 11.108440 9.898852 1.965703 + 1244 1 1 0.236369 10.435766 10.602637 1.966522 + 1245 1 1 0.236369 9.712260 11.271905 1.965746 + 1246 1 1 0.236369 8.947860 11.892923 1.962228 + 1247 1 1 0.236369 8.139858 12.453494 1.961371 + 1248 1 1 0.236369 7.294125 12.966617 1.958447 + 1249 1 1 0.236369 6.430137 13.418649 1.966087 + 1250 1 1 0.236369 5.528328 13.809254 1.958953 + 1251 1 1 0.236369 4.598459 14.149792 1.957954 + 1252 1 1 0.236369 3.656217 14.422619 1.960643 + 1253 1 1 0.236369 2.699844 14.632860 1.967321 + 1254 1 1 0.236369 1.724607 14.775598 1.964635 + 1255 1 1 0.236369 0.745783 14.858313 1.961749 + 1256 1 1 0.236369 -0.241555 14.876658 1.966462 + 1257 1 1 0.236369 -1.223387 14.829757 1.964641 + 1258 1 1 0.236369 -2.199321 14.707860 1.963974 + 1259 1 1 0.236369 -3.169431 14.530412 1.962287 + 1260 1 1 0.236369 -4.117955 14.294512 1.967506 + 1261 1 1 0.236369 -5.055690 13.991763 1.966122 + 1262 1 1 0.236369 -5.967415 13.628961 1.957998 + 1263 1 1 0.236369 -6.857837 13.195741 1.959309 + 1264 1 1 0.236369 -7.716559 12.715842 1.962721 + 1265 1 1 0.236369 -8.536472 12.181083 1.963699 + 1266 1 1 0.236369 -9.323537 11.586966 1.960823 + 1267 1 1 0.236369 -10.064429 10.950080 1.962282 + 1268 1 1 0.236369 -10.765612 10.254758 1.961876 + 1269 1 1 0.236369 -11.420725 9.518738 1.959266 + 1270 1 1 0.236369 -12.030101 8.748077 1.967421 + 1271 1 1 0.236369 -12.582636 7.929099 1.961493 + 1272 1 1 0.236369 -13.073648 7.086819 1.966263 + 1273 1 1 0.236369 -13.515440 6.205755 1.958306 + 1274 1 1 0.236369 -13.889143 5.295444 1.962131 + 1275 1 1 0.236369 -14.208042 4.361121 1.958649 + 1276 1 1 0.236369 -14.472129 3.413412 1.961031 + 1277 1 1 0.236369 -14.660834 2.450535 1.967353 + 1278 1 1 0.236369 -14.789586 1.481697 1.966438 + 1279 1 1 0.236369 -14.857567 0.497720 1.959628 + 1280 1 1 0.236369 -14.854702 -0.488496 1.963252 + 1281 1 1 0.236369 -14.789110 -1.470130 1.960842 + 1282 1 1 0.236369 -14.663351 -2.443444 1.966922 + 1283 1 1 0.236369 -14.467711 -3.402880 1.958707 + 1284 1 1 0.236369 -14.212084 -4.351868 1.965768 + 1285 1 1 0.236369 -13.898278 -5.286197 1.959637 + 1286 1 1 0.236369 -13.513983 -6.191968 1.965093 + 1287 1 1 0.236369 -13.072783 -7.070941 1.960213 + 1288 1 1 0.236369 -12.577640 -7.926834 1.959964 + 1289 1 1 0.236369 -12.027713 -8.735601 1.960054 + 1290 1 1 0.236369 -11.418039 -9.516937 1.967660 + 1291 1 1 0.236369 -10.765119 -10.247613 1.961711 + 1292 1 1 0.236369 -10.063819 -10.936768 1.964246 + 1293 1 1 0.236369 -9.323436 -11.582982 1.958359 + 1294 1 1 0.236369 -8.535296 -12.173670 1.960214 + 1295 1 1 0.236369 -7.709220 -12.702958 1.966641 + 1296 1 1 0.236369 -6.851580 -13.189146 1.962494 + 1297 1 1 0.236369 -5.967198 -13.615413 1.957924 + 1298 1 1 0.236369 -5.058661 -13.980483 1.962542 + 1299 1 1 0.236369 -4.118907 -14.286501 1.966134 + 1300 1 1 0.236369 -3.171402 -14.527933 1.966612 + 1301 1 1 0.236369 -2.200861 -14.703801 1.960904 + 1302 1 1 0.236369 -1.221424 -14.817519 1.960253 + 1303 1 1 0.236369 -0.236550 -14.861800 1.966209 + 1304 1 1 0.236369 0.745503 -14.848513 1.962270 + 1305 1 1 0.236369 1.722295 -14.767523 1.962964 + 1306 1 1 0.236369 2.697564 -14.625053 1.959748 + 1307 1 1 0.236369 3.654950 -14.407740 1.959408 + 1308 1 1 0.236369 4.605318 -14.137056 1.966961 + 1309 1 1 0.236369 5.530204 -13.800800 1.967820 + 1310 1 1 0.236369 6.429551 -13.407554 1.961794 + 1311 1 1 0.236369 7.297307 -12.950589 1.966161 + 1312 1 1 0.236369 8.138582 -12.440268 1.967433 + 1313 1 1 0.236369 8.941549 -11.882761 1.966831 + 1314 1 1 0.236369 9.712886 -11.262242 1.966303 + 1315 1 1 0.236369 10.437392 -10.595156 1.964726 + 1316 1 1 0.236369 11.115622 -9.885046 1.959611 + 1317 1 1 0.236369 11.741422 -9.125872 1.960268 + 1318 1 1 0.236369 12.319865 -8.336862 1.962236 + 1319 1 1 0.236369 12.839557 -7.505467 1.958144 + 1320 1 1 0.236369 13.315119 -6.641792 1.960579 + 1321 1 1 0.236369 13.720496 -5.746360 1.967694 + 1322 1 1 0.236369 14.067941 -4.823483 1.961020 + 1323 1 1 0.236369 14.363268 -3.883538 1.963610 + 1324 1 1 0.236369 14.587516 -2.927608 1.964010 + 1325 1 1 0.236369 14.750580 -1.958351 1.966908 + 1326 1 1 0.236369 14.842007 -0.982842 1.961853 + 1327 1 1 0.236369 14.974616 0.008152 0.987975 + 1328 1 1 0.236369 14.942479 0.985331 0.983092 + 1329 1 1 0.236369 14.841060 1.958184 0.981675 + 1330 1 1 0.236369 14.684353 2.922530 0.987271 + 1331 1 1 0.236369 14.460618 3.882007 0.987927 + 1332 1 1 0.236369 14.180707 4.819508 0.984015 + 1333 1 1 0.236369 13.831355 5.736483 0.986763 + 1334 1 1 0.236369 13.433249 6.624798 0.984209 + 1335 1 1 0.236369 12.970833 7.493649 0.989142 + 1336 1 1 0.236369 12.449241 8.324123 0.984702 + 1337 1 1 0.236369 11.879800 9.112656 0.988035 + 1338 1 1 0.236369 11.260399 9.871388 0.987381 + 1339 1 1 0.236369 10.592236 10.592068 0.990693 + 1340 1 1 0.236369 9.875108 11.257509 0.983055 + 1341 1 1 0.236369 9.117618 11.879484 0.987029 + 1342 1 1 0.236369 8.318971 12.454856 0.981884 + 1343 1 1 0.236369 7.488506 12.972218 0.986491 + 1344 1 1 0.236369 6.627264 13.431940 0.989508 + 1345 1 1 0.236369 5.736805 13.834267 0.981454 + 1346 1 1 0.236369 4.818477 14.182699 0.984341 + 1347 1 1 0.236369 3.874160 14.462820 0.988140 + 1348 1 1 0.236369 2.926837 14.681940 0.989650 + 1349 1 1 0.236369 1.958086 14.843092 0.986056 + 1350 1 1 0.236369 0.983325 14.938801 0.990995 + 1351 1 1 0.236369 0.001170 14.973467 0.985333 + 1352 1 1 0.236369 -0.970800 14.936511 0.983720 + 1353 1 1 0.236369 -1.950452 14.840521 0.985776 + 1354 1 1 0.236369 -2.917627 14.681948 0.982655 + 1355 1 1 0.236369 -3.870546 14.467340 0.982636 + 1356 1 1 0.236369 -4.807512 14.181651 0.983730 + 1357 1 1 0.236369 -5.722496 13.835626 0.988618 + 1358 1 1 0.236369 -6.614507 13.433989 0.987139 + 1359 1 1 0.236369 -7.479984 12.972552 0.990716 + 1360 1 1 0.236369 -8.311729 12.455215 0.988780 + 1361 1 1 0.236369 -9.106717 11.876322 0.986776 + 1362 1 1 0.236369 -9.862436 11.263036 0.985549 + 1363 1 1 0.236369 -10.574383 10.589197 0.983918 + 1364 1 1 0.236369 -11.246227 9.869752 0.988571 + 1365 1 1 0.236369 -11.870820 9.114989 0.981991 + 1366 1 1 0.236369 -12.437022 8.324662 0.982115 + 1367 1 1 0.236369 -12.961224 7.492290 0.988396 + 1368 1 1 0.236369 -13.423682 6.620149 0.984593 + 1369 1 1 0.236369 -13.827679 5.734363 0.986853 + 1370 1 1 0.236369 -14.171901 4.819300 0.984035 + 1371 1 1 0.236369 -14.454623 3.876425 0.988184 + 1372 1 1 0.236369 -14.677263 2.920731 0.984652 + 1373 1 1 0.236369 -14.839715 1.956332 0.988232 + 1374 1 1 0.236369 -14.930437 0.979974 0.991000 + 1375 1 1 0.236369 -14.966930 0.004837 0.981884 + 1376 1 1 0.236369 -14.934371 -0.974758 0.985729 + 1377 1 1 0.236369 -14.833520 -1.949888 0.981985 + 1378 1 1 0.236369 -14.671687 -2.911222 0.988299 + 1379 1 1 0.236369 -14.448123 -3.869768 0.990167 + 1380 1 1 0.236369 -14.167832 -4.808430 0.981911 + 1381 1 1 0.236369 -13.818553 -5.727479 0.986246 + 1382 1 1 0.236369 -13.418752 -6.617934 0.986573 + 1383 1 1 0.236369 -12.957413 -7.481550 0.987898 + 1384 1 1 0.236369 -12.442034 -8.315418 0.984043 + 1385 1 1 0.236369 -11.870521 -9.104847 0.987066 + 1386 1 1 0.236369 -11.248533 -9.868935 0.983032 + 1387 1 1 0.236369 -10.583182 -10.577783 0.987615 + 1388 1 1 0.236369 -9.860134 -11.249370 0.988031 + 1389 1 1 0.236369 -9.111224 -11.872331 0.985644 + 1390 1 1 0.236369 -8.311349 -12.438816 0.982624 + 1391 1 1 0.236369 -7.475676 -12.959365 0.985265 + 1392 1 1 0.236369 -6.616180 -13.423250 0.987007 + 1393 1 1 0.236369 -5.721826 -13.823166 0.984270 + 1394 1 1 0.236369 -4.803082 -14.171891 0.989354 + 1395 1 1 0.236369 -3.865111 -14.449031 0.982274 + 1396 1 1 0.236369 -2.910778 -14.673616 0.983559 + 1397 1 1 0.236369 -1.951793 -14.831354 0.990423 + 1398 1 1 0.236369 -0.976361 -14.928210 0.987599 + 1399 1 1 0.236369 0.008979 -14.959814 0.988576 + 1400 1 1 0.236369 0.984880 -14.929507 0.989156 + 1401 1 1 0.236369 1.958739 -14.832727 0.981531 + 1402 1 1 0.236369 2.926217 -14.673394 0.985194 + 1403 1 1 0.236369 3.882168 -14.454656 0.988302 + 1404 1 1 0.236369 4.816587 -14.168224 0.982437 + 1405 1 1 0.236369 5.729982 -13.819790 0.987373 + 1406 1 1 0.236369 6.624665 -13.423742 0.983515 + 1407 1 1 0.236369 7.488221 -12.957564 0.989447 + 1408 1 1 0.236369 8.325371 -12.441013 0.989414 + 1409 1 1 0.236369 9.118071 -11.865778 0.985578 + 1410 1 1 0.236369 9.875965 -11.247149 0.984995 + 1411 1 1 0.236369 10.591094 -10.574062 0.990663 + 1412 1 1 0.236369 11.256920 -9.863160 0.981129 + 1413 1 1 0.236369 11.879991 -9.103464 0.985031 + 1414 1 1 0.236369 12.450908 -8.311023 0.985925 + 1415 1 1 0.236369 12.964133 -7.478490 0.987228 + 1416 1 1 0.236369 13.429908 -6.618335 0.981747 + 1417 1 1 0.236369 13.835470 -5.721617 0.982474 + 1418 1 1 0.236369 14.177805 -4.801639 0.987589 + 1419 1 1 0.236369 14.466228 -3.868633 0.983230 + 1420 1 1 0.236369 14.687594 -2.915293 0.982238 + 1421 1 1 0.236369 14.843432 -1.945764 0.981478 + 1422 1 1 0.236369 14.940379 -0.978019 0.982703 + 1423 1 1 0.236369 15.003864 0.008808 0.005111 + 1424 1 1 0.236369 14.975639 0.981086 0.008673 + 1425 1 1 0.236369 14.879016 1.963008 0.007663 + 1426 1 1 0.236369 14.716082 2.933139 0.001350 + 1427 1 1 0.236369 14.495825 3.887943 0.000649 + 1428 1 1 0.236369 14.213404 4.826377 0.006724 + 1429 1 1 0.236369 13.866035 5.743457 0.004822 + 1430 1 1 0.236369 13.460147 6.640346 0.004954 + 1431 1 1 0.236369 12.991474 7.509132 0.003135 + 1432 1 1 0.236369 12.475943 8.340379 0.003235 + 1433 1 1 0.236369 11.906209 9.140889 0.009091 + 1434 1 1 0.236369 11.282191 9.891178 0.004503 + 1435 1 1 0.236369 10.607105 10.611712 0.007486 + 1436 1 1 0.236369 9.892474 11.278698 0.001853 + 1437 1 1 0.236369 9.139763 11.905753 0.000849 + 1438 1 1 0.236369 8.333710 12.478932 0.002070 + 1439 1 1 0.236369 7.508637 12.991855 0.005589 + 1440 1 1 0.236369 6.635111 13.460867 0.006617 + 1441 1 1 0.236369 5.746942 13.862184 0.009392 + 1442 1 1 0.236369 4.826594 14.212935 0.000402 + 1443 1 1 0.236369 3.884466 14.491958 0.001637 + 1444 1 1 0.236369 2.932071 14.712390 0.004381 + 1445 1 1 0.236369 1.959115 14.873868 0.003257 + 1446 1 1 0.236369 0.987759 14.968712 0.000899 + 1447 1 1 0.236369 0.005996 15.009504 0.008103 + 1448 1 1 0.236369 -0.980487 14.968048 0.003996 + 1449 1 1 0.236369 -1.957329 14.872820 0.006553 + 1450 1 1 0.236369 -2.924830 14.711903 0.005668 + 1451 1 1 0.236369 -3.882089 14.491050 0.000031 + 1452 1 1 0.236369 -4.817240 14.204066 0.006514 + 1453 1 1 0.236369 -5.731929 13.864617 0.003171 + 1454 1 1 0.236369 -6.628156 13.458261 0.002659 + 1455 1 1 0.236369 -7.494799 12.992836 0.004604 + 1456 1 1 0.236369 -8.324915 12.473982 0.006232 + 1457 1 1 0.236369 -9.130444 11.901209 0.008019 + 1458 1 1 0.236369 -9.881107 11.281282 0.005612 + 1459 1 1 0.236369 -10.605522 10.606680 0.000248 + 1460 1 1 0.236369 -11.272427 9.896214 0.007935 + 1461 1 1 0.236369 -11.898869 9.136210 0.002731 + 1462 1 1 0.236369 -12.466450 8.336635 0.008229 + 1463 1 1 0.236369 -12.990335 7.507444 0.006886 + 1464 1 1 0.236369 -13.445424 6.642724 0.006039 + 1465 1 1 0.236369 -13.849706 5.742876 0.003870 + 1466 1 1 0.236369 -14.194784 4.826734 0.000655 + 1467 1 1 0.236369 -14.479018 3.886753 0.009986 + 1468 1 1 0.236369 -14.706728 2.929767 0.006610 + 1469 1 1 0.236369 -14.868959 1.966284 0.002292 + 1470 1 1 0.236369 -14.966876 0.990872 0.000923 + 1471 1 1 0.236369 -14.994922 0.006265 0.002410 + 1472 1 1 0.236369 -14.962028 -0.979234 0.009026 + 1473 1 1 0.236369 -14.864044 -1.956663 0.002173 + 1474 1 1 0.236369 -14.710950 -2.920555 0.004795 + 1475 1 1 0.236369 -14.482271 -3.879000 0.009092 + 1476 1 1 0.236369 -14.198782 -4.818910 0.001938 + 1477 1 1 0.236369 -13.856483 -5.734749 0.004480 + 1478 1 1 0.236369 -13.443706 -6.632525 0.006178 + 1479 1 1 0.236369 -12.984476 -7.493215 0.005942 + 1480 1 1 0.236369 -12.467638 -8.332997 0.006659 + 1481 1 1 0.236369 -11.890881 -9.131081 0.002677 + 1482 1 1 0.236369 -11.271038 -9.887322 0.004239 + 1483 1 1 0.236369 -10.602082 -10.605828 0.007993 + 1484 1 1 0.236369 -9.881790 -11.268591 0.009323 + 1485 1 1 0.236369 -9.126095 -11.891834 0.004697 + 1486 1 1 0.236369 -8.328015 -12.468087 0.003063 + 1487 1 1 0.236369 -7.493199 -12.988689 0.004394 + 1488 1 1 0.236369 -6.630658 -13.448787 0.003069 + 1489 1 1 0.236369 -5.737859 -13.854031 0.002750 + 1490 1 1 0.236369 -4.815803 -14.196664 0.001387 + 1491 1 1 0.236369 -3.873617 -14.484823 0.001665 + 1492 1 1 0.236369 -2.922287 -14.702261 0.004939 + 1493 1 1 0.236369 -1.956767 -14.862553 0.000866 + 1494 1 1 0.236369 -0.976608 -14.958370 0.009268 + 1495 1 1 0.236369 0.003002 -14.996540 0.001485 + 1496 1 1 0.236369 0.985061 -14.964981 0.001605 + 1497 1 1 0.236369 1.966227 -14.862806 0.007177 + 1498 1 1 0.236369 2.930391 -14.709679 0.006749 + 1499 1 1 0.236369 3.886187 -14.487579 0.003585 + 1500 1 1 0.236369 4.825196 -14.198747 0.000905 + 1501 1 1 0.236369 5.741654 -13.849138 0.000082 + 1502 1 1 0.236369 6.636932 -13.449066 0.003728 + 1503 1 1 0.236369 7.500868 -12.988223 0.007883 + 1504 1 1 0.236369 8.337847 -12.471257 0.004473 + 1505 1 1 0.236369 9.133994 -11.890970 0.000996 + 1506 1 1 0.236369 9.893163 -11.271568 0.008058 + 1507 1 1 0.236369 10.610850 -10.602827 0.006595 + 1508 1 1 0.236369 11.278789 -9.883538 0.004524 + 1509 1 1 0.236369 11.905251 -9.123500 0.005334 + 1510 1 1 0.236369 12.479108 -8.330219 0.005267 + 1511 1 1 0.236369 12.992817 -7.493073 0.006297 + 1512 1 1 0.236369 13.460942 -6.632292 0.006466 + 1513 1 1 0.236369 13.858934 -5.730664 0.001918 + 1514 1 1 0.236369 14.207891 -4.814474 0.008017 + 1515 1 1 0.236369 14.488921 -3.880617 0.001966 + 1516 1 1 0.236369 14.713986 -2.921927 0.004113 + 1517 1 1 0.236369 14.871686 -1.951563 0.002357 + 1518 1 1 0.236369 14.969776 -0.971747 0.002722 + 1519 1 1 0.236369 14.969309 0.005293 -0.980960 + 1520 1 1 0.236369 14.938517 0.985211 -0.971764 + 1521 1 1 0.236369 14.841580 1.960509 -0.975845 + 1522 1 1 0.236369 14.681667 2.929321 -0.976406 + 1523 1 1 0.236369 14.463854 3.875502 -0.975812 + 1524 1 1 0.236369 14.182551 4.815326 -0.977679 + 1525 1 1 0.236369 13.837915 5.731086 -0.977723 + 1526 1 1 0.236369 13.426499 6.627065 -0.971164 + 1527 1 1 0.236369 12.967394 7.492849 -0.976310 + 1528 1 1 0.236369 12.449101 8.320617 -0.973578 + 1529 1 1 0.236369 11.880058 9.119929 -0.974347 + 1530 1 1 0.236369 11.256100 9.872276 -0.973091 + 1531 1 1 0.236369 10.584576 10.589391 -0.978322 + 1532 1 1 0.236369 9.873375 11.257339 -0.978208 + 1533 1 1 0.236369 9.113609 11.883789 -0.973874 + 1534 1 1 0.236369 8.315972 12.452102 -0.979201 + 1535 1 1 0.236369 7.493489 12.970852 -0.972710 + 1536 1 1 0.236369 6.624432 13.425388 -0.979350 + 1537 1 1 0.236369 5.737577 13.831314 -0.971514 + 1538 1 1 0.236369 4.818893 14.181217 -0.973821 + 1539 1 1 0.236369 3.874047 14.460026 -0.979704 + 1540 1 1 0.236369 2.926890 14.680621 -0.972516 + 1541 1 1 0.236369 1.960760 14.844197 -0.971730 + 1542 1 1 0.236369 0.985398 14.945205 -0.975405 + 1543 1 1 0.236369 0.005523 14.970505 -0.977059 + 1544 1 1 0.236369 -0.976765 14.941534 -0.976631 + 1545 1 1 0.236369 -1.945977 14.843427 -0.974030 + 1546 1 1 0.236369 -2.917809 14.680549 -0.978447 + 1547 1 1 0.236369 -3.870265 14.462870 -0.980762 + 1548 1 1 0.236369 -4.802359 14.181810 -0.971567 + 1549 1 1 0.236369 -5.719397 13.831111 -0.971085 + 1550 1 1 0.236369 -6.616101 13.424746 -0.973252 + 1551 1 1 0.236369 -7.480762 12.965032 -0.971153 + 1552 1 1 0.236369 -8.309624 12.451948 -0.976171 + 1553 1 1 0.236369 -9.102768 11.878115 -0.979767 + 1554 1 1 0.236369 -9.859921 11.260046 -0.976403 + 1555 1 1 0.236369 -10.577976 10.584022 -0.973621 + 1556 1 1 0.236369 -11.250125 9.876192 -0.974313 + 1557 1 1 0.236369 -11.866290 9.115782 -0.972307 + 1558 1 1 0.236369 -12.440917 8.316046 -0.973464 + 1559 1 1 0.236369 -12.953524 7.488002 -0.974875 + 1560 1 1 0.236369 -13.423955 6.627289 -0.978299 + 1561 1 1 0.236369 -13.823197 5.737175 -0.977683 + 1562 1 1 0.236369 -14.166375 4.821109 -0.972690 + 1563 1 1 0.236369 -14.456073 3.883808 -0.977188 + 1564 1 1 0.236369 -14.676915 2.929052 -0.980243 + 1565 1 1 0.236369 -14.837954 1.962358 -0.972391 + 1566 1 1 0.236369 -14.932617 0.986956 -0.976693 + 1567 1 1 0.236369 -14.963845 0.005550 -0.979326 + 1568 1 1 0.236369 -14.930351 -0.974758 -0.981004 + 1569 1 1 0.236369 -14.839344 -1.952430 -0.974522 + 1570 1 1 0.236369 -14.674753 -2.913543 -0.977350 + 1571 1 1 0.236369 -14.455117 -3.865334 -0.977286 + 1572 1 1 0.236369 -14.171125 -4.808523 -0.976634 + 1573 1 1 0.236369 -13.826090 -5.719560 -0.975886 + 1574 1 1 0.236369 -13.422745 -6.619418 -0.978046 + 1575 1 1 0.236369 -12.953003 -7.480154 -0.976264 + 1576 1 1 0.236369 -12.435984 -8.313029 -0.980984 + 1577 1 1 0.236369 -11.866634 -9.110341 -0.979333 + 1578 1 1 0.236369 -11.246168 -9.862702 -0.978011 + 1579 1 1 0.236369 -10.582134 -10.580728 -0.973602 + 1580 1 1 0.236369 -9.865408 -11.243860 -0.975238 + 1581 1 1 0.236369 -9.109982 -11.869834 -0.974035 + 1582 1 1 0.236369 -8.315699 -12.437954 -0.973000 + 1583 1 1 0.236369 -7.480778 -12.962440 -0.972527 + 1584 1 1 0.236369 -6.613130 -13.418233 -0.979870 + 1585 1 1 0.236369 -5.721709 -13.822757 -0.974474 + 1586 1 1 0.236369 -4.805838 -14.165466 -0.973517 + 1587 1 1 0.236369 -3.869583 -14.451316 -0.974026 + 1588 1 1 0.236369 -2.917215 -14.671498 -0.974996 + 1589 1 1 0.236369 -1.948684 -14.830808 -0.980664 + 1590 1 1 0.236369 -0.971331 -14.934314 -0.979095 + 1591 1 1 0.236369 0.007624 -14.965958 -0.977740 + 1592 1 1 0.236369 0.984707 -14.927927 -0.974619 + 1593 1 1 0.236369 1.961178 -14.839224 -0.978873 + 1594 1 1 0.236369 2.926545 -14.676382 -0.980278 + 1595 1 1 0.236369 3.875206 -14.454866 -0.971241 + 1596 1 1 0.236369 4.816313 -14.166198 -0.978979 + 1597 1 1 0.236369 5.731434 -13.827479 -0.971214 + 1598 1 1 0.236369 6.621047 -13.416361 -0.974943 + 1599 1 1 0.236369 7.485420 -12.954740 -0.978567 + 1600 1 1 0.236369 8.317692 -12.440017 -0.975867 + 1601 1 1 0.236369 9.118593 -11.872287 -0.973919 + 1602 1 1 0.236369 9.873327 -11.252741 -0.978448 + 1603 1 1 0.236369 10.590836 -10.577634 -0.979900 + 1604 1 1 0.236369 11.256019 -9.868765 -0.975550 + 1605 1 1 0.236369 11.874918 -9.111250 -0.978858 + 1606 1 1 0.236369 12.450663 -8.314415 -0.977925 + 1607 1 1 0.236369 12.965362 -7.479436 -0.971316 + 1608 1 1 0.236369 13.433749 -6.613402 -0.977955 + 1609 1 1 0.236369 13.837586 -5.719400 -0.971584 + 1610 1 1 0.236369 14.177467 -4.806284 -0.976941 + 1611 1 1 0.236369 14.458114 -3.873486 -0.980944 + 1612 1 1 0.236369 14.686995 -2.916951 -0.977946 + 1613 1 1 0.236369 14.848203 -1.947285 -0.979495 + 1614 1 1 0.236369 14.945551 -0.971083 -0.971106 + 1615 1 1 0.236369 14.872242 0.002892 -1.953390 + 1616 1 1 0.236369 14.843661 0.987856 -1.952441 + 1617 1 1 0.236369 14.747580 1.969642 -1.955270 + 1618 1 1 0.236369 14.586757 2.937411 -1.949067 + 1619 1 1 0.236369 14.361466 3.894008 -1.956862 + 1620 1 1 0.236369 14.072385 4.832133 -1.949657 + 1621 1 1 0.236369 13.723261 5.752006 -1.953621 + 1622 1 1 0.236369 13.309860 6.649760 -1.948689 + 1623 1 1 0.236369 12.843884 7.510140 -1.952613 + 1624 1 1 0.236369 12.315038 8.343397 -1.949185 + 1625 1 1 0.236369 11.736416 9.138049 -1.954365 + 1626 1 1 0.236369 11.116282 9.896824 -1.953891 + 1627 1 1 0.236369 10.431412 10.608116 -1.951914 + 1628 1 1 0.236369 9.710992 11.275005 -1.948778 + 1629 1 1 0.236369 8.948704 11.890174 -1.956563 + 1630 1 1 0.236369 8.135892 12.454051 -1.957471 + 1631 1 1 0.236369 7.295348 12.965203 -1.953882 + 1632 1 1 0.236369 6.424326 13.414784 -1.951936 + 1633 1 1 0.236369 5.529653 13.813262 -1.948696 + 1634 1 1 0.236369 4.599506 14.153492 -1.954955 + 1635 1 1 0.236369 3.653512 14.424411 -1.952442 + 1636 1 1 0.236369 2.691516 14.633656 -1.950076 + 1637 1 1 0.236369 1.721421 14.779827 -1.954619 + 1638 1 1 0.236369 0.741141 14.860946 -1.956940 + 1639 1 1 0.236369 -0.244576 14.878073 -1.953476 + 1640 1 1 0.236369 -1.223743 14.828580 -1.957602 + 1641 1 1 0.236369 -2.204013 14.717096 -1.951139 + 1642 1 1 0.236369 -3.165976 14.530542 -1.956777 + 1643 1 1 0.236369 -4.125336 14.291975 -1.955896 + 1644 1 1 0.236369 -5.054996 13.989043 -1.952591 + 1645 1 1 0.236369 -5.965986 13.621662 -1.951619 + 1646 1 1 0.236369 -6.858561 13.194857 -1.954157 + 1647 1 1 0.236369 -7.713466 12.721941 -1.951828 + 1648 1 1 0.236369 -8.535534 12.181585 -1.949429 + 1649 1 1 0.236369 -9.326548 11.584688 -1.950873 + 1650 1 1 0.236369 -10.067347 10.942924 -1.953964 + 1651 1 1 0.236369 -10.766992 10.258887 -1.952174 + 1652 1 1 0.236369 -11.425197 9.521213 -1.955395 + 1653 1 1 0.236369 -12.023066 8.742114 -1.950619 + 1654 1 1 0.236369 -12.573141 7.931182 -1.954460 + 1655 1 1 0.236369 -13.070782 7.079564 -1.957107 + 1656 1 1 0.236369 -13.513388 6.206233 -1.954871 + 1657 1 1 0.236369 -13.895748 5.300552 -1.954889 + 1658 1 1 0.236369 -14.210385 4.361166 -1.957661 + 1659 1 1 0.236369 -14.472625 3.418418 -1.956132 + 1660 1 1 0.236369 -14.659269 2.454582 -1.949284 + 1661 1 1 0.236369 -14.792345 1.475509 -1.951333 + 1662 1 1 0.236369 -14.857539 0.500139 -1.949328 + 1663 1 1 0.236369 -14.861816 -0.488768 -1.955183 + 1664 1 1 0.236369 -14.797644 -1.472704 -1.948933 + 1665 1 1 0.236369 -14.666290 -2.446864 -1.955805 + 1666 1 1 0.236369 -14.466409 -3.403939 -1.948251 + 1667 1 1 0.236369 -14.208741 -4.354005 -1.953749 + 1668 1 1 0.236369 -13.891541 -5.283416 -1.955597 + 1669 1 1 0.236369 -13.511196 -6.192004 -1.949709 + 1670 1 1 0.236369 -13.076947 -7.069880 -1.954288 + 1671 1 1 0.236369 -12.577091 -7.926723 -1.952878 + 1672 1 1 0.236369 -12.023330 -8.737295 -1.950416 + 1673 1 1 0.236369 -11.423372 -9.514906 -1.949574 + 1674 1 1 0.236369 -10.763530 -10.247029 -1.953948 + 1675 1 1 0.236369 -10.071410 -10.932637 -1.956927 + 1676 1 1 0.236369 -9.323952 -11.580401 -1.955239 + 1677 1 1 0.236369 -8.536114 -12.168329 -1.949973 + 1678 1 1 0.236369 -7.717340 -12.711935 -1.948524 + 1679 1 1 0.236369 -6.853658 -13.192936 -1.952210 + 1680 1 1 0.236369 -5.968317 -13.610742 -1.948513 + 1681 1 1 0.236369 -5.055435 -13.982173 -1.951920 + 1682 1 1 0.236369 -4.117146 -14.279717 -1.948013 + 1683 1 1 0.236369 -3.163535 -14.526048 -1.950269 + 1684 1 1 0.236369 -2.197038 -14.700598 -1.956037 + 1685 1 1 0.236369 -1.224915 -14.820355 -1.952725 + 1686 1 1 0.236369 -0.241365 -14.862297 -1.951491 + 1687 1 1 0.236369 0.744916 -14.848385 -1.949203 + 1688 1 1 0.236369 1.718548 -14.762738 -1.951892 + 1689 1 1 0.236369 2.691094 -14.623468 -1.947896 + 1690 1 1 0.236369 3.653479 -14.412838 -1.956601 + 1691 1 1 0.236369 4.600846 -14.142664 -1.954959 + 1692 1 1 0.236369 5.530051 -13.799503 -1.953124 + 1693 1 1 0.236369 6.428014 -13.409793 -1.956597 + 1694 1 1 0.236369 7.296537 -12.959583 -1.955612 + 1695 1 1 0.236369 8.136949 -12.442899 -1.956082 + 1696 1 1 0.236369 8.947586 -11.880195 -1.951173 + 1697 1 1 0.236369 9.714158 -11.265207 -1.954635 + 1698 1 1 0.236369 10.434957 -10.594903 -1.949987 + 1699 1 1 0.236369 11.109038 -9.881668 -1.952433 + 1700 1 1 0.236369 11.736726 -9.131833 -1.955587 + 1701 1 1 0.236369 12.322259 -8.333427 -1.951025 + 1702 1 1 0.236369 12.843915 -7.502356 -1.957402 + 1703 1 1 0.236369 13.315603 -6.640243 -1.952167 + 1704 1 1 0.236369 13.716602 -5.741884 -1.947955 + 1705 1 1 0.236369 14.071731 -4.819450 -1.954263 + 1706 1 1 0.236369 14.357122 -3.887567 -1.952306 + 1707 1 1 0.236369 14.588168 -2.922460 -1.948620 + 1708 1 1 0.236369 14.743665 -1.955953 -1.955294 + 1709 1 1 0.236369 14.843583 -0.978604 -1.949568 + 1710 1 1 0.236369 14.715713 0.001524 -2.924604 + 1711 1 1 0.236369 14.687192 0.985114 -2.917556 + 1712 1 1 0.236369 14.587282 1.965362 -2.923559 + 1713 1 1 0.236369 14.419056 2.935708 -2.917860 + 1714 1 1 0.236369 14.192239 3.890331 -2.918288 + 1715 1 1 0.236369 13.899101 4.833560 -2.924464 + 1716 1 1 0.236369 13.551112 5.752138 -2.916569 + 1717 1 1 0.236369 13.136250 6.642502 -2.923818 + 1718 1 1 0.236369 12.659736 7.501432 -2.918569 + 1719 1 1 0.236369 12.130479 8.332130 -2.918247 + 1720 1 1 0.236369 11.550556 9.124035 -2.921375 + 1721 1 1 0.236369 10.920103 9.869712 -2.917198 + 1722 1 1 0.236369 10.233039 10.580137 -2.925345 + 1723 1 1 0.236369 9.498664 11.237787 -2.924997 + 1724 1 1 0.236369 8.727268 11.849799 -2.917772 + 1725 1 1 0.236369 7.924199 12.409881 -2.926168 + 1726 1 1 0.236369 7.074726 12.905763 -2.919072 + 1727 1 1 0.236369 6.196526 13.345253 -2.918188 + 1728 1 1 0.236369 5.295424 13.738041 -2.925193 + 1729 1 1 0.236369 4.362384 14.060507 -2.921469 + 1730 1 1 0.236369 3.415810 14.314594 -2.922880 + 1731 1 1 0.236369 2.454117 14.509448 -2.918616 + 1732 1 1 0.236369 1.481300 14.645763 -2.923502 + 1733 1 1 0.236369 0.494881 14.708679 -2.918111 + 1734 1 1 0.236369 -0.485093 14.709189 -2.924624 + 1735 1 1 0.236369 -1.462837 14.644742 -2.917718 + 1736 1 1 0.236369 -2.446241 14.507772 -2.917094 + 1737 1 1 0.236369 -3.404617 14.319736 -2.924444 + 1738 1 1 0.236369 -4.354602 14.060686 -2.925851 + 1739 1 1 0.236369 -5.284436 13.729713 -2.920870 + 1740 1 1 0.236369 -6.190061 13.353380 -2.926260 + 1741 1 1 0.236369 -7.062625 12.910588 -2.918071 + 1742 1 1 0.236369 -7.906197 12.400558 -2.917269 + 1743 1 1 0.236369 -8.724864 11.849250 -2.919302 + 1744 1 1 0.236369 -9.490523 11.241186 -2.923922 + 1745 1 1 0.236369 -10.225560 10.579027 -2.920463 + 1746 1 1 0.236369 -10.901098 9.874930 -2.916966 + 1747 1 1 0.236369 -11.537773 9.125252 -2.917400 + 1748 1 1 0.236369 -12.124760 8.331846 -2.920293 + 1749 1 1 0.236369 -12.650749 7.503687 -2.918431 + 1750 1 1 0.236369 -13.125557 6.637943 -2.917993 + 1751 1 1 0.236369 -13.536308 5.751719 -2.920753 + 1752 1 1 0.236369 -13.894198 4.830098 -2.926348 + 1753 1 1 0.236369 -14.188325 3.893101 -2.923842 + 1754 1 1 0.236369 -14.411070 2.938715 -2.922035 + 1755 1 1 0.236369 -14.571411 1.963590 -2.922048 + 1756 1 1 0.236369 -14.676988 0.986646 -2.917602 + 1757 1 1 0.236369 -14.707456 0.005543 -2.925678 + 1758 1 1 0.236369 -14.671434 -0.978200 -2.922956 + 1759 1 1 0.236369 -14.580121 -1.959984 -2.924584 + 1760 1 1 0.236369 -14.407517 -2.922936 -2.923894 + 1761 1 1 0.236369 -14.181421 -3.886458 -2.919077 + 1762 1 1 0.236369 -13.892175 -4.821532 -2.923473 + 1763 1 1 0.236369 -13.542559 -5.742948 -2.923981 + 1764 1 1 0.236369 -13.125561 -6.625403 -2.924958 + 1765 1 1 0.236369 -12.652860 -7.492144 -2.924148 + 1766 1 1 0.236369 -12.119060 -8.316992 -2.918179 + 1767 1 1 0.236369 -11.537247 -9.113791 -2.922573 + 1768 1 1 0.236369 -10.901398 -9.859592 -2.919700 + 1769 1 1 0.236369 -10.220728 -10.572625 -2.916997 + 1770 1 1 0.236369 -9.494299 -11.225592 -2.922090 + 1771 1 1 0.236369 -8.717380 -11.835067 -2.920303 + 1772 1 1 0.236369 -7.911354 -12.396460 -2.916659 + 1773 1 1 0.236369 -7.067895 -12.895244 -2.922708 + 1774 1 1 0.236369 -6.188736 -13.339245 -2.919710 + 1775 1 1 0.236369 -5.280477 -13.719802 -2.923207 + 1776 1 1 0.236369 -4.353155 -14.049115 -2.917498 + 1777 1 1 0.236369 -3.402921 -14.310972 -2.923399 + 1778 1 1 0.236369 -2.437046 -14.498042 -2.923401 + 1779 1 1 0.236369 -1.462961 -14.635543 -2.917284 + 1780 1 1 0.236369 -0.486243 -14.701115 -2.921426 + 1781 1 1 0.236369 0.501232 -14.697154 -2.924283 + 1782 1 1 0.236369 1.473742 -14.634849 -2.926097 + 1783 1 1 0.236369 2.447515 -14.498592 -2.924653 + 1784 1 1 0.236369 3.413530 -14.302174 -2.923331 + 1785 1 1 0.236369 4.364543 -14.041803 -2.916740 + 1786 1 1 0.236369 5.292837 -13.724839 -2.918518 + 1787 1 1 0.236369 6.201711 -13.336908 -2.919622 + 1788 1 1 0.236369 7.075618 -12.899923 -2.917948 + 1789 1 1 0.236369 7.920469 -12.394193 -2.922146 + 1790 1 1 0.236369 8.732156 -11.837023 -2.919317 + 1791 1 1 0.236369 9.505459 -11.233824 -2.921542 + 1792 1 1 0.236369 10.227684 -10.569864 -2.918149 + 1793 1 1 0.236369 10.919031 -9.859551 -2.921981 + 1794 1 1 0.236369 11.547220 -9.114987 -2.917755 + 1795 1 1 0.236369 12.133787 -8.323741 -2.926266 + 1796 1 1 0.236369 12.660606 -7.488971 -2.916395 + 1797 1 1 0.236369 13.134231 -6.630206 -2.923603 + 1798 1 1 0.236369 13.551016 -5.741797 -2.926020 + 1799 1 1 0.236369 13.899459 -4.823522 -2.924834 + 1800 1 1 0.236369 14.191845 -3.880205 -2.921559 + 1801 1 1 0.236369 14.418962 -2.924751 -2.917466 + 1802 1 1 0.236369 14.582464 -1.957970 -2.923521 + 1803 1 1 0.236369 14.682194 -0.976415 -2.918514 + 1804 1 1 0.236369 14.497691 0.007159 -3.880582 + 1805 1 1 0.236369 14.460544 0.980948 -3.874973 + 1806 1 1 0.236369 14.360859 1.955942 -3.879819 + 1807 1 1 0.236369 14.194091 2.920214 -3.881467 + 1808 1 1 0.236369 13.972712 3.875870 -3.873757 + 1809 1 1 0.236369 13.674111 4.803227 -3.875420 + 1810 1 1 0.236369 13.323121 5.722798 -3.872705 + 1811 1 1 0.236369 12.904718 6.602509 -3.872435 + 1812 1 1 0.236369 12.427366 7.460331 -3.876938 + 1813 1 1 0.236369 11.900721 8.284877 -3.873226 + 1814 1 1 0.236369 11.313887 9.067751 -3.877519 + 1815 1 1 0.236369 10.673190 9.805074 -3.873389 + 1816 1 1 0.236369 9.990504 10.508407 -3.882047 + 1817 1 1 0.236369 9.259625 11.152680 -3.880998 + 1818 1 1 0.236369 8.481001 11.759917 -3.874879 + 1819 1 1 0.236369 7.667443 12.304775 -3.878375 + 1820 1 1 0.236369 6.822488 12.790411 -3.878349 + 1821 1 1 0.236369 5.946860 13.223068 -3.876267 + 1822 1 1 0.236369 5.039087 13.596753 -3.882047 + 1823 1 1 0.236369 4.107107 13.896956 -3.878409 + 1824 1 1 0.236369 3.163226 14.148537 -3.881718 + 1825 1 1 0.236369 2.203561 14.330077 -3.875390 + 1826 1 1 0.236369 1.227581 14.445065 -3.877082 + 1827 1 1 0.236369 0.250111 14.488730 -3.881525 + 1828 1 1 0.236369 -0.730739 14.474577 -3.878223 + 1829 1 1 0.236369 -1.708349 14.387881 -3.877984 + 1830 1 1 0.236369 -2.674655 14.242787 -3.875693 + 1831 1 1 0.236369 -3.630746 14.027707 -3.880102 + 1832 1 1 0.236369 -4.565672 13.753692 -3.881475 + 1833 1 1 0.236369 -5.487991 13.415003 -3.877609 + 1834 1 1 0.236369 -6.371671 13.016109 -3.874999 + 1835 1 1 0.236369 -7.238016 12.551942 -3.876146 + 1836 1 1 0.236369 -8.074997 12.035373 -3.873280 + 1837 1 1 0.236369 -8.868431 11.466718 -3.879758 + 1838 1 1 0.236369 -9.619907 10.841587 -3.880085 + 1839 1 1 0.236369 -10.326797 10.163752 -3.879928 + 1840 1 1 0.236369 -10.992288 9.446674 -3.874184 + 1841 1 1 0.236369 -11.605528 8.674477 -3.875262 + 1842 1 1 0.236369 -12.157444 7.878764 -3.873501 + 1843 1 1 0.236369 -12.664769 7.034835 -3.875176 + 1844 1 1 0.236369 -13.106298 6.162496 -3.875675 + 1845 1 1 0.236369 -13.495691 5.269050 -3.877890 + 1846 1 1 0.236369 -13.820051 4.340921 -3.876658 + 1847 1 1 0.236369 -14.085205 3.395915 -3.872383 + 1848 1 1 0.236369 -14.282211 2.435876 -3.872713 + 1849 1 1 0.236369 -14.413639 1.475370 -3.878917 + 1850 1 1 0.236369 -14.474681 0.496153 -3.880731 + 1851 1 1 0.236369 -14.478211 -0.480744 -3.878115 + 1852 1 1 0.236369 -14.406136 -1.456425 -3.876741 + 1853 1 1 0.236369 -14.274135 -2.428793 -3.881988 + 1854 1 1 0.236369 -14.076061 -3.385086 -3.873619 + 1855 1 1 0.236369 -13.819527 -4.334872 -3.873342 + 1856 1 1 0.236369 -13.497855 -5.251970 -3.877314 + 1857 1 1 0.236369 -13.111840 -6.151009 -3.880193 + 1858 1 1 0.236369 -12.662942 -7.028485 -3.875070 + 1859 1 1 0.236369 -12.157093 -7.869944 -3.875289 + 1860 1 1 0.236369 -11.602139 -8.666285 -3.877678 + 1861 1 1 0.236369 -10.988949 -9.436813 -3.880580 + 1862 1 1 0.236369 -10.324953 -10.151016 -3.874342 + 1863 1 1 0.236369 -9.612819 -10.828117 -3.873401 + 1864 1 1 0.236369 -8.867119 -11.450948 -3.880861 + 1865 1 1 0.236369 -8.067855 -12.028353 -3.872889 + 1866 1 1 0.236369 -7.238666 -12.542430 -3.882283 + 1867 1 1 0.236369 -6.376488 -13.001851 -3.877898 + 1868 1 1 0.236369 -5.479242 -13.409139 -3.882174 + 1869 1 1 0.236369 -4.566377 -13.744484 -3.879941 + 1870 1 1 0.236369 -3.629887 -14.017497 -3.875216 + 1871 1 1 0.236369 -2.670142 -14.238394 -3.875344 + 1872 1 1 0.236369 -1.702822 -14.383311 -3.879634 + 1873 1 1 0.236369 -0.730571 -14.463696 -3.879020 + 1874 1 1 0.236369 0.252739 -14.483873 -3.881353 + 1875 1 1 0.236369 1.232148 -14.427747 -3.881870 + 1876 1 1 0.236369 2.203830 -14.314863 -3.874693 + 1877 1 1 0.236369 3.157146 -14.138947 -3.879037 + 1878 1 1 0.236369 4.105655 -13.890154 -3.877067 + 1879 1 1 0.236369 5.032303 -13.578192 -3.872767 + 1880 1 1 0.236369 5.943915 -13.210696 -3.875596 + 1881 1 1 0.236369 6.817629 -12.777737 -3.877554 + 1882 1 1 0.236369 7.668175 -12.286962 -3.875792 + 1883 1 1 0.236369 8.485550 -11.742039 -3.875629 + 1884 1 1 0.236369 9.256122 -11.150082 -3.879984 + 1885 1 1 0.236369 9.986054 -10.499550 -3.874237 + 1886 1 1 0.236369 10.670624 -9.802040 -3.877258 + 1887 1 1 0.236369 11.310447 -9.060691 -3.877945 + 1888 1 1 0.236369 11.901511 -8.276950 -3.875195 + 1889 1 1 0.236369 12.424840 -7.449371 -3.876733 + 1890 1 1 0.236369 12.903272 -6.593522 -3.879736 + 1891 1 1 0.236369 13.323245 -5.704588 -3.881534 + 1892 1 1 0.236369 13.670470 -4.794536 -3.876395 + 1893 1 1 0.236369 13.969939 -3.865045 -3.875543 + 1894 1 1 0.236369 14.202089 -2.911636 -3.876406 + 1895 1 1 0.236369 14.359652 -1.949238 -3.876949 + 1896 1 1 0.236369 14.457170 -0.970813 -3.877560 + 1897 1 1 0.236369 14.210805 0.001168 -4.818354 + 1898 1 1 0.236369 14.179202 0.987407 -4.817282 + 1899 1 1 0.236369 14.074845 1.963322 -4.813943 + 1900 1 1 0.236369 13.909321 2.928636 -4.811627 + 1901 1 1 0.236369 13.667599 3.876594 -4.818942 + 1902 1 1 0.236369 13.373430 4.812646 -4.813671 + 1903 1 1 0.236369 13.005874 5.722167 -4.820246 + 1904 1 1 0.236369 12.581161 6.601778 -4.821237 + 1905 1 1 0.236369 12.093160 7.461165 -4.817053 + 1906 1 1 0.236369 11.556800 8.276192 -4.815962 + 1907 1 1 0.236369 10.956831 9.049054 -4.819283 + 1908 1 1 0.236369 10.307755 9.790014 -4.820144 + 1909 1 1 0.236369 9.609122 10.469487 -4.814821 + 1910 1 1 0.236369 8.856691 11.108096 -4.818051 + 1911 1 1 0.236369 8.078272 11.693735 -4.816487 + 1912 1 1 0.236369 7.248034 12.220808 -4.814645 + 1913 1 1 0.236369 6.390387 12.690988 -4.815639 + 1914 1 1 0.236369 5.499620 13.106215 -4.816531 + 1915 1 1 0.236369 4.583695 13.448668 -4.813828 + 1916 1 1 0.236369 3.638332 13.735707 -4.814740 + 1917 1 1 0.236369 2.685393 13.951634 -4.818397 + 1918 1 1 0.236369 1.718278 14.105017 -4.813271 + 1919 1 1 0.236369 0.744538 14.194164 -4.814984 + 1920 1 1 0.236369 -0.236818 14.203995 -4.815721 + 1921 1 1 0.236369 -1.215432 14.151092 -4.821401 + 1922 1 1 0.236369 -2.191943 14.041958 -4.813222 + 1923 1 1 0.236369 -3.154849 13.854630 -4.820452 + 1924 1 1 0.236369 -4.099974 13.601924 -4.813188 + 1925 1 1 0.236369 -5.036442 13.286146 -4.818217 + 1926 1 1 0.236369 -5.932202 12.902816 -4.817298 + 1927 1 1 0.236369 -6.812932 12.471134 -4.813654 + 1928 1 1 0.236369 -7.660112 11.964750 -4.820176 + 1929 1 1 0.236369 -8.459976 11.410408 -4.815511 + 1930 1 1 0.236369 -9.232499 10.796738 -4.812286 + 1931 1 1 0.236369 -9.955214 10.130097 -4.815228 + 1932 1 1 0.236369 -10.625751 9.424415 -4.821114 + 1933 1 1 0.236369 -11.253758 8.668110 -4.814609 + 1934 1 1 0.236369 -11.823912 7.868260 -4.819021 + 1935 1 1 0.236369 -12.337625 7.031535 -4.814683 + 1936 1 1 0.236369 -12.793255 6.171281 -4.817960 + 1937 1 1 0.236369 -13.188147 5.265760 -4.816173 + 1938 1 1 0.236369 -13.517736 4.345763 -4.819371 + 1939 1 1 0.236369 -13.789542 3.407062 -4.812537 + 1940 1 1 0.236369 -13.990986 2.449381 -4.817857 + 1941 1 1 0.236369 -14.126894 1.474325 -4.820804 + 1942 1 1 0.236369 -14.192257 0.498046 -4.821283 + 1943 1 1 0.236369 -14.187792 -0.482989 -4.815323 + 1944 1 1 0.236369 -14.125499 -1.461951 -4.812222 + 1945 1 1 0.236369 -13.985463 -2.433011 -4.818393 + 1946 1 1 0.236369 -13.784283 -3.389840 -4.814140 + 1947 1 1 0.236369 -13.515593 -4.337249 -4.818703 + 1948 1 1 0.236369 -13.183729 -5.261293 -4.820348 + 1949 1 1 0.236369 -12.794385 -6.156159 -4.816451 + 1950 1 1 0.236369 -12.338549 -7.026676 -4.817717 + 1951 1 1 0.236369 -11.821924 -7.864463 -4.811806 + 1952 1 1 0.236369 -11.253050 -8.658627 -4.818674 + 1953 1 1 0.236369 -10.623492 -9.413486 -4.815669 + 1954 1 1 0.236369 -9.948550 -10.126069 -4.815878 + 1955 1 1 0.236369 -9.228477 -10.788821 -4.815433 + 1956 1 1 0.236369 -8.464808 -11.396642 -4.815983 + 1957 1 1 0.236369 -7.653670 -11.955937 -4.818793 + 1958 1 1 0.236369 -6.814672 -12.456261 -4.820073 + 1959 1 1 0.236369 -5.936491 -12.900900 -4.814262 + 1960 1 1 0.236369 -5.032945 -13.278417 -4.821195 + 1961 1 1 0.236369 -4.103137 -13.592299 -4.813576 + 1962 1 1 0.236369 -3.150760 -13.841450 -4.817528 + 1963 1 1 0.236369 -2.190216 -14.025798 -4.813292 + 1964 1 1 0.236369 -1.214582 -14.141156 -4.811882 + 1965 1 1 0.236369 -0.242821 -14.192514 -4.817367 + 1966 1 1 0.236369 0.740501 -14.183989 -4.821053 + 1967 1 1 0.236369 1.712612 -14.090854 -4.813722 + 1968 1 1 0.236369 2.688388 -13.947044 -4.815291 + 1969 1 1 0.236369 3.642787 -13.720779 -4.816504 + 1970 1 1 0.236369 4.583955 -13.440893 -4.815915 + 1971 1 1 0.236369 5.502079 -13.096759 -4.818500 + 1972 1 1 0.236369 6.392130 -12.688334 -4.814121 + 1973 1 1 0.236369 7.247153 -12.215443 -4.818225 + 1974 1 1 0.236369 8.068768 -11.681488 -4.812758 + 1975 1 1 0.236369 8.861428 -11.104330 -4.818255 + 1976 1 1 0.236369 9.603148 -10.464105 -4.813632 + 1977 1 1 0.236369 10.302562 -9.778999 -4.813544 + 1978 1 1 0.236369 10.953840 -9.044799 -4.821090 + 1979 1 1 0.236369 11.549569 -8.268711 -4.817567 + 1980 1 1 0.236369 12.099079 -7.445859 -4.811940 + 1981 1 1 0.236369 12.584460 -6.600041 -4.817448 + 1982 1 1 0.236369 13.007844 -5.711310 -4.818287 + 1983 1 1 0.236369 13.369267 -4.805065 -4.815228 + 1984 1 1 0.236369 13.673988 -3.866708 -4.813012 + 1985 1 1 0.236369 13.905847 -2.916196 -4.813709 + 1986 1 1 0.236369 14.078312 -1.952379 -4.816208 + 1987 1 1 0.236369 14.179036 -0.971641 -4.814175 + 1988 1 1 0.236369 13.861758 0.008184 -5.732854 + 1989 1 1 0.236369 13.829137 0.986924 -5.735804 + 1990 1 1 0.236369 13.723750 1.950218 -5.731747 + 1991 1 1 0.236369 13.554768 2.919575 -5.735306 + 1992 1 1 0.236369 13.317265 3.861688 -5.730770 + 1993 1 1 0.236369 13.011210 4.791884 -5.732274 + 1994 1 1 0.236369 12.634676 5.697225 -5.738921 + 1995 1 1 0.236369 12.208374 6.576787 -5.737874 + 1996 1 1 0.236369 11.706350 7.419725 -5.738974 + 1997 1 1 0.236369 11.157873 8.228050 -5.734910 + 1998 1 1 0.236369 10.553105 8.993370 -5.739685 + 1999 1 1 0.236369 9.893128 9.716237 -5.735566 + 2000 1 1 0.236369 9.179263 10.389684 -5.730425 + 2001 1 1 0.236369 8.427602 11.013241 -5.733429 + 2002 1 1 0.236369 7.631691 11.581246 -5.731542 + 2003 1 1 0.236369 6.789833 12.084944 -5.735289 + 2004 1 1 0.236369 5.919527 12.539364 -5.737375 + 2005 1 1 0.236369 5.021821 12.924580 -5.738421 + 2006 1 1 0.236369 4.099402 13.247336 -5.730639 + 2007 1 1 0.236369 3.154700 13.496839 -5.732689 + 2008 1 1 0.236369 2.201328 13.684382 -5.730748 + 2009 1 1 0.236369 1.221870 13.810371 -5.733539 + 2010 1 1 0.236369 0.250503 13.863050 -5.738391 + 2011 1 1 0.236369 -0.731794 13.839888 -5.737353 + 2012 1 1 0.236369 -1.699385 13.753523 -5.739669 + 2013 1 1 0.236369 -2.671931 13.603822 -5.739811 + 2014 1 1 0.236369 -3.621102 13.383500 -5.737456 + 2015 1 1 0.236369 -4.550584 13.094423 -5.738547 + 2016 1 1 0.236369 -5.468755 12.732876 -5.733480 + 2017 1 1 0.236369 -6.356308 12.321568 -5.731227 + 2018 1 1 0.236369 -7.207442 11.844219 -5.736732 + 2019 1 1 0.236369 -8.022483 11.301665 -5.739250 + 2020 1 1 0.236369 -8.800019 10.703531 -5.732321 + 2021 1 1 0.236369 -9.534097 10.057596 -5.735567 + 2022 1 1 0.236369 -10.212559 9.364768 -5.733378 + 2023 1 1 0.236369 -10.849691 8.613501 -5.733421 + 2024 1 1 0.236369 -11.427417 7.830079 -5.736037 + 2025 1 1 0.236369 -11.956195 7.004985 -5.733658 + 2026 1 1 0.236369 -12.415121 6.147999 -5.733917 + 2027 1 1 0.236369 -12.826518 5.248846 -5.735000 + 2028 1 1 0.236369 -13.158623 4.330077 -5.738339 + 2029 1 1 0.236369 -13.429280 3.395967 -5.735132 + 2030 1 1 0.236369 -13.640581 2.434293 -5.732768 + 2031 1 1 0.236369 -13.771238 1.474626 -5.736053 + 2032 1 1 0.236369 -13.841928 0.491559 -5.732877 + 2033 1 1 0.236369 -13.841296 -0.483012 -5.733387 + 2034 1 1 0.236369 -13.774828 -1.456624 -5.730694 + 2035 1 1 0.236369 -13.634985 -2.424908 -5.737172 + 2036 1 1 0.236369 -13.434000 -3.384614 -5.736828 + 2037 1 1 0.236369 -13.162492 -4.321307 -5.736381 + 2038 1 1 0.236369 -12.823452 -5.237606 -5.739990 + 2039 1 1 0.236369 -12.418679 -6.129451 -5.733916 + 2040 1 1 0.236369 -11.952276 -6.997440 -5.734599 + 2041 1 1 0.236369 -11.434134 -7.820363 -5.736596 + 2042 1 1 0.236369 -10.852497 -8.605249 -5.736037 + 2043 1 1 0.236369 -10.213300 -9.355505 -5.735629 + 2044 1 1 0.236369 -9.530246 -10.047715 -5.737107 + 2045 1 1 0.236369 -8.793444 -10.698068 -5.737995 + 2046 1 1 0.236369 -8.024424 -11.291310 -5.739092 + 2047 1 1 0.236369 -7.201307 -11.832575 -5.738912 + 2048 1 1 0.236369 -6.350020 -12.313407 -5.730786 + 2049 1 1 0.236369 -5.469820 -12.729000 -5.735327 + 2050 1 1 0.236369 -4.555819 -13.077106 -5.732769 + 2051 1 1 0.236369 -3.622134 -13.370673 -5.737142 + 2052 1 1 0.236369 -2.667612 -13.595149 -5.740174 + 2053 1 1 0.236369 -1.699764 -13.744935 -5.734095 + 2054 1 1 0.236369 -0.732373 -13.831050 -5.736676 + 2055 1 1 0.236369 0.252790 -13.855822 -5.733763 + 2056 1 1 0.236369 1.229768 -13.795468 -5.731792 + 2057 1 1 0.236369 2.195598 -13.675746 -5.739238 + 2058 1 1 0.236369 3.156130 -13.491775 -5.734368 + 2059 1 1 0.236369 4.101625 -13.232384 -5.734428 + 2060 1 1 0.236369 5.026578 -12.914213 -5.735033 + 2061 1 1 0.236369 5.925655 -12.521625 -5.735705 + 2062 1 1 0.236369 6.794986 -12.079425 -5.730584 + 2063 1 1 0.236369 7.626660 -11.571682 -5.738428 + 2064 1 1 0.236369 8.424447 -10.999388 -5.734658 + 2065 1 1 0.236369 9.185154 -10.380702 -5.733987 + 2066 1 1 0.236369 9.891044 -9.705832 -5.739950 + 2067 1 1 0.236369 10.554288 -8.981208 -5.733829 + 2068 1 1 0.236369 11.156492 -8.221458 -5.731870 + 2069 1 1 0.236369 11.712322 -7.416564 -5.736300 + 2070 1 1 0.236369 12.206033 -6.565202 -5.735878 + 2071 1 1 0.236369 12.643055 -5.692503 -5.739403 + 2072 1 1 0.236369 13.004611 -4.784969 -5.734438 + 2073 1 1 0.236369 13.314304 -3.859781 -5.731535 + 2074 1 1 0.236369 13.553756 -2.912402 -5.738182 + 2075 1 1 0.236369 13.721185 -1.948678 -5.739305 + 2076 1 1 0.236369 13.832719 -0.969274 -5.738372 + 2077 1 1 0.236369 13.461935 0.003010 -6.627652 + 2078 1 1 0.236369 13.421592 0.985851 -6.627006 + 2079 1 1 0.236369 13.317544 1.965293 -6.628020 + 2080 1 1 0.236369 13.132722 2.933282 -6.629648 + 2081 1 1 0.236369 12.888886 3.883486 -6.631187 + 2082 1 1 0.236369 12.568010 4.809601 -6.627916 + 2083 1 1 0.236369 12.185534 5.712153 -6.628710 + 2084 1 1 0.236369 11.740200 6.590648 -6.627693 + 2085 1 1 0.236369 11.221811 7.423018 -6.633082 + 2086 1 1 0.236369 10.651113 8.225005 -6.627590 + 2087 1 1 0.236369 10.024321 8.983887 -6.627527 + 2088 1 1 0.236369 9.340822 9.690848 -6.625029 + 2089 1 1 0.236369 8.613564 10.343933 -6.626042 + 2090 1 1 0.236369 7.837676 10.951151 -6.632549 + 2091 1 1 0.236369 7.009848 11.484698 -6.624838 + 2092 1 1 0.236369 6.153691 11.971760 -6.632334 + 2093 1 1 0.236369 5.268590 12.383067 -6.632154 + 2094 1 1 0.236369 4.347494 12.736887 -6.634245 + 2095 1 1 0.236369 3.412473 13.023969 -6.631324 + 2096 1 1 0.236369 2.453300 13.232907 -6.631586 + 2097 1 1 0.236369 1.477818 13.373148 -6.628466 + 2098 1 1 0.236369 0.499935 13.449685 -6.630365 + 2099 1 1 0.236369 -0.487315 13.446855 -6.632466 + 2100 1 1 0.236369 -1.465062 13.373706 -6.630402 + 2101 1 1 0.236369 -2.433725 13.236305 -6.632784 + 2102 1 1 0.236369 -3.397141 13.020505 -6.626007 + 2103 1 1 0.236369 -4.334404 12.734368 -6.632833 + 2104 1 1 0.236369 -5.254364 12.382513 -6.627535 + 2105 1 1 0.236369 -6.146482 11.966417 -6.626829 + 2106 1 1 0.236369 -7.001868 11.484813 -6.634181 + 2107 1 1 0.236369 -7.818925 10.944499 -6.632908 + 2108 1 1 0.236369 -8.603592 10.350185 -6.634024 + 2109 1 1 0.236369 -9.333490 9.690248 -6.626243 + 2110 1 1 0.236369 -10.009566 8.979978 -6.633859 + 2111 1 1 0.236369 -10.644051 8.226548 -6.627669 + 2112 1 1 0.236369 -11.213260 7.429673 -6.629770 + 2113 1 1 0.236369 -11.722747 6.589660 -6.626300 + 2114 1 1 0.236369 -12.171124 5.716345 -6.630746 + 2115 1 1 0.236369 -12.558872 4.814491 -6.634077 + 2116 1 1 0.236369 -12.881604 3.879630 -6.632144 + 2117 1 1 0.236369 -13.130877 2.932598 -6.627221 + 2118 1 1 0.236369 -13.303546 1.960353 -6.628841 + 2119 1 1 0.236369 -13.411531 0.982594 -6.625633 + 2120 1 1 0.236369 -13.443471 0.003397 -6.626942 + 2121 1 1 0.236369 -13.409741 -0.973841 -6.633298 + 2122 1 1 0.236369 -13.303101 -1.955010 -6.624616 + 2123 1 1 0.236369 -13.126005 -2.915382 -6.626943 + 2124 1 1 0.236369 -12.880089 -3.869770 -6.634192 + 2125 1 1 0.236369 -12.555784 -4.802477 -6.627539 + 2126 1 1 0.236369 -12.175676 -5.700975 -6.629475 + 2127 1 1 0.236369 -11.731457 -6.575199 -6.633983 + 2128 1 1 0.236369 -11.212885 -7.414475 -6.633186 + 2129 1 1 0.236369 -10.642877 -8.219608 -6.633564 + 2130 1 1 0.236369 -10.018898 -8.974646 -6.628252 + 2131 1 1 0.236369 -9.328543 -9.677128 -6.631996 + 2132 1 1 0.236369 -8.602277 -10.333666 -6.632910 + 2133 1 1 0.236369 -7.825504 -10.936336 -6.629029 + 2134 1 1 0.236369 -7.007118 -11.473789 -6.625027 + 2135 1 1 0.236369 -6.148213 -11.959639 -6.628161 + 2136 1 1 0.236369 -5.259283 -12.371552 -6.627431 + 2137 1 1 0.236369 -4.337220 -12.727635 -6.631986 + 2138 1 1 0.236369 -3.402074 -13.010612 -6.632262 + 2139 1 1 0.236369 -2.440823 -13.221620 -6.633957 + 2140 1 1 0.236369 -1.468563 -13.368505 -6.627697 + 2141 1 1 0.236369 -0.482533 -13.439583 -6.629258 + 2142 1 1 0.236369 0.495777 -13.442787 -6.629472 + 2143 1 1 0.236369 1.478940 -13.364801 -6.625713 + 2144 1 1 0.236369 2.449610 -13.223656 -6.624675 + 2145 1 1 0.236369 3.410569 -13.009160 -6.626733 + 2146 1 1 0.236369 4.344879 -12.724560 -6.631864 + 2147 1 1 0.236369 5.271353 -12.379297 -6.627568 + 2148 1 1 0.236369 6.159809 -11.955822 -6.626737 + 2149 1 1 0.236369 7.008764 -11.474418 -6.628468 + 2150 1 1 0.236369 7.832463 -10.938341 -6.626106 + 2151 1 1 0.236369 8.608836 -10.333421 -6.625062 + 2152 1 1 0.236369 9.343745 -9.681533 -6.627955 + 2153 1 1 0.236369 10.021791 -8.974774 -6.634141 + 2154 1 1 0.236369 10.653873 -8.220473 -6.632487 + 2155 1 1 0.236369 11.225880 -7.416342 -6.634063 + 2156 1 1 0.236369 11.737759 -6.578824 -6.624980 + 2157 1 1 0.236369 12.185562 -5.701964 -6.629486 + 2158 1 1 0.236369 12.565758 -4.803186 -6.626382 + 2159 1 1 0.236369 12.887826 -3.874062 -6.629762 + 2160 1 1 0.236369 13.135315 -2.920796 -6.629388 + 2161 1 1 0.236369 13.310807 -1.954029 -6.630073 + 2162 1 1 0.236369 13.421801 -0.974160 -6.625413 + 2163 1 1 0.236369 12.994890 0.001307 -7.491257 + 2164 1 1 0.236369 12.958689 0.982960 -7.493668 + 2165 1 1 0.236369 12.849833 1.965540 -7.497077 + 2166 1 1 0.236369 12.663832 2.925152 -7.497083 + 2167 1 1 0.236369 12.408094 3.875066 -7.497545 + 2168 1 1 0.236369 12.071419 4.807305 -7.492957 + 2169 1 1 0.236369 11.675478 5.704675 -7.492254 + 2170 1 1 0.236369 11.213398 6.571456 -7.491773 + 2171 1 1 0.236369 10.689705 7.403018 -7.491938 + 2172 1 1 0.236369 10.098163 8.189416 -7.497462 + 2173 1 1 0.236369 9.447129 8.926180 -7.491995 + 2174 1 1 0.236369 8.744205 9.612510 -7.493703 + 2175 1 1 0.236369 7.989655 10.244480 -7.497685 + 2176 1 1 0.236369 7.198906 10.827016 -7.496189 + 2177 1 1 0.236369 6.357806 11.340754 -7.495468 + 2178 1 1 0.236369 5.479590 11.788474 -7.494994 + 2179 1 1 0.236369 4.575340 12.165959 -7.494594 + 2180 1 1 0.236369 3.640050 12.471363 -7.496549 + 2181 1 1 0.236369 2.692335 12.710655 -7.497086 + 2182 1 1 0.236369 1.719578 12.878381 -7.492965 + 2183 1 1 0.236369 0.746561 12.969766 -7.490659 + 2184 1 1 0.236369 -0.245660 12.995304 -7.494058 + 2185 1 1 0.236369 -1.219107 12.933707 -7.494069 + 2186 1 1 0.236369 -2.195668 12.808761 -7.492613 + 2187 1 1 0.236369 -3.158470 12.607105 -7.496274 + 2188 1 1 0.236369 -4.101153 12.329507 -7.495467 + 2189 1 1 0.236369 -5.020665 11.981667 -7.494906 + 2190 1 1 0.236369 -5.918459 11.571548 -7.490713 + 2191 1 1 0.236369 -6.768196 11.085587 -7.495492 + 2192 1 1 0.236369 -7.595577 10.541458 -7.493626 + 2193 1 1 0.236369 -8.368020 9.941478 -7.495406 + 2194 1 1 0.236369 -9.096458 9.277131 -7.494462 + 2195 1 1 0.236369 -9.764174 8.560059 -7.499588 + 2196 1 1 0.236369 -10.391953 7.801113 -7.491978 + 2197 1 1 0.236369 -10.946495 6.987115 -7.493285 + 2198 1 1 0.236369 -11.442871 6.146381 -7.497997 + 2199 1 1 0.236369 -11.874086 5.255924 -7.499854 + 2200 1 1 0.236369 -12.235258 4.340977 -7.492368 + 2201 1 1 0.236369 -12.536518 3.402456 -7.494325 + 2202 1 1 0.236369 -12.750271 2.451509 -7.493458 + 2203 1 1 0.236369 -12.901433 1.480087 -7.493653 + 2204 1 1 0.236369 -12.974133 0.498979 -7.492657 + 2205 1 1 0.236369 -12.978953 -0.483993 -7.491127 + 2206 1 1 0.236369 -12.901290 -1.462298 -7.493341 + 2207 1 1 0.236369 -12.751414 -2.439149 -7.498793 + 2208 1 1 0.236369 -12.527513 -3.393849 -7.492863 + 2209 1 1 0.236369 -12.239458 -4.335915 -7.495528 + 2210 1 1 0.236369 -11.879744 -5.244264 -7.493590 + 2211 1 1 0.236369 -11.448669 -6.137157 -7.493511 + 2212 1 1 0.236369 -10.946011 -6.975673 -7.493216 + 2213 1 1 0.236369 -10.384673 -7.788086 -7.499412 + 2214 1 1 0.236369 -9.766525 -8.553984 -7.497760 + 2215 1 1 0.236369 -9.094804 -9.266519 -7.498320 + 2216 1 1 0.236369 -8.361495 -9.930631 -7.490715 + 2217 1 1 0.236369 -7.590519 -10.536674 -7.494848 + 2218 1 1 0.236369 -6.767433 -11.075886 -7.493266 + 2219 1 1 0.236369 -5.918668 -11.556490 -7.493322 + 2220 1 1 0.236369 -5.025861 -11.969969 -7.499185 + 2221 1 1 0.236369 -4.099908 -12.320358 -7.497749 + 2222 1 1 0.236369 -3.154715 -12.596706 -7.497158 + 2223 1 1 0.236369 -2.194108 -12.798952 -7.490862 + 2224 1 1 0.236369 -1.224443 -12.928979 -7.497709 + 2225 1 1 0.236369 -0.244313 -12.978780 -7.497514 + 2226 1 1 0.236369 0.745622 -12.961889 -7.493237 + 2227 1 1 0.236369 1.723743 -12.873674 -7.493515 + 2228 1 1 0.236369 2.687527 -12.703846 -7.492963 + 2229 1 1 0.236369 3.640642 -12.462797 -7.491629 + 2230 1 1 0.236369 4.574279 -12.151116 -7.492727 + 2231 1 1 0.236369 5.485886 -11.770029 -7.499806 + 2232 1 1 0.236369 6.360960 -11.325094 -7.494163 + 2233 1 1 0.236369 7.197204 -10.817465 -7.490791 + 2234 1 1 0.236369 7.994782 -10.241103 -7.499083 + 2235 1 1 0.236369 8.743731 -9.601050 -7.494454 + 2236 1 1 0.236369 9.449601 -8.917019 -7.490692 + 2237 1 1 0.236369 10.098226 -8.174867 -7.498005 + 2238 1 1 0.236369 10.684536 -7.387099 -7.494747 + 2239 1 1 0.236369 11.213264 -6.563552 -7.498733 + 2240 1 1 0.236369 11.677938 -5.693974 -7.492513 + 2241 1 1 0.236369 12.073687 -4.798063 -7.496853 + 2242 1 1 0.236369 12.406125 -3.873635 -7.498128 + 2243 1 1 0.236369 12.665860 -2.917195 -7.490196 + 2244 1 1 0.236369 12.850864 -1.959047 -7.492872 + 2245 1 1 0.236369 12.960649 -0.978515 -7.491744 + 2246 1 1 0.236369 12.474649 0.002525 -8.326721 + 2247 1 1 0.236369 12.440493 0.980587 -8.326659 + 2248 1 1 0.236369 12.319811 1.957680 -8.328245 + 2249 1 1 0.236369 12.128676 2.920688 -8.331665 + 2250 1 1 0.236369 11.863528 3.854143 -8.328623 + 2251 1 1 0.236369 11.524124 4.780309 -8.327958 + 2252 1 1 0.236369 11.118523 5.670186 -8.325271 + 2253 1 1 0.236369 10.634899 6.525703 -8.331525 + 2254 1 1 0.236369 10.098319 7.340629 -8.328276 + 2255 1 1 0.236369 9.491046 8.101143 -8.325475 + 2256 1 1 0.236369 8.828326 8.824257 -8.330002 + 2257 1 1 0.236369 8.104871 9.492037 -8.328076 + 2258 1 1 0.236369 7.337432 10.096466 -8.326379 + 2259 1 1 0.236369 6.525526 10.643705 -8.331528 + 2260 1 1 0.236369 5.667575 11.122142 -8.327116 + 2261 1 1 0.236369 4.775667 11.532332 -8.333553 + 2262 1 1 0.236369 3.863833 11.862292 -8.328422 + 2263 1 1 0.236369 2.911905 12.131816 -8.327855 + 2264 1 1 0.236369 1.954320 12.321701 -8.333483 + 2265 1 1 0.236369 0.988275 12.434938 -8.324629 + 2266 1 1 0.236369 0.003650 12.473390 -8.325222 + 2267 1 1 0.236369 -0.975454 12.441657 -8.325802 + 2268 1 1 0.236369 -1.949848 12.323740 -8.325672 + 2269 1 1 0.236369 -2.902383 12.136883 -8.329817 + 2270 1 1 0.236369 -3.852719 11.871502 -8.332030 + 2271 1 1 0.236369 -4.769523 11.526765 -8.330031 + 2272 1 1 0.236369 -5.653215 11.116385 -8.327103 + 2273 1 1 0.236369 -6.511629 10.636434 -8.324234 + 2274 1 1 0.236369 -7.324731 10.094556 -8.332620 + 2275 1 1 0.236369 -8.094113 9.486479 -8.326166 + 2276 1 1 0.236369 -8.812084 8.823658 -8.333001 + 2277 1 1 0.236369 -9.483523 8.104274 -8.325982 + 2278 1 1 0.236369 -10.084817 7.333480 -8.328919 + 2279 1 1 0.236369 -10.633845 6.517962 -8.333103 + 2280 1 1 0.236369 -11.104401 5.666382 -8.325133 + 2281 1 1 0.236369 -11.519266 4.777913 -8.331906 + 2282 1 1 0.236369 -11.853152 3.857317 -8.332403 + 2283 1 1 0.236369 -12.124980 2.918388 -8.330838 + 2284 1 1 0.236369 -12.312678 1.955488 -8.330410 + 2285 1 1 0.236369 -12.424220 0.982902 -8.327493 + 2286 1 1 0.236369 -12.471566 0.007930 -8.326779 + 2287 1 1 0.236369 -12.433057 -0.970390 -8.323677 + 2288 1 1 0.236369 -12.318286 -1.943536 -8.323621 + 2289 1 1 0.236369 -12.120626 -2.903648 -8.325978 + 2290 1 1 0.236369 -11.855633 -3.849061 -8.330803 + 2291 1 1 0.236369 -11.521526 -4.767293 -8.324013 + 2292 1 1 0.236369 -11.104710 -5.655882 -8.329443 + 2293 1 1 0.236369 -10.627987 -6.515645 -8.331387 + 2294 1 1 0.236369 -10.089394 -7.328427 -8.327262 + 2295 1 1 0.236369 -9.483124 -8.093788 -8.333405 + 2296 1 1 0.236369 -8.817707 -8.816017 -8.333120 + 2297 1 1 0.236369 -8.092056 -9.476147 -8.331751 + 2298 1 1 0.236369 -7.329960 -10.087423 -8.331549 + 2299 1 1 0.236369 -6.514246 -10.633771 -8.326360 + 2300 1 1 0.236369 -5.659753 -11.109707 -8.329125 + 2301 1 1 0.236369 -4.771796 -11.517103 -8.325099 + 2302 1 1 0.236369 -3.845490 -11.851928 -8.329656 + 2303 1 1 0.236369 -2.904559 -12.120549 -8.325178 + 2304 1 1 0.236369 -1.943720 -12.311314 -8.326069 + 2305 1 1 0.236369 -0.972040 -12.428007 -8.327715 + 2306 1 1 0.236369 0.005163 -12.466711 -8.331948 + 2307 1 1 0.236369 0.981809 -12.424840 -8.328265 + 2308 1 1 0.236369 1.957675 -12.314562 -8.328927 + 2309 1 1 0.236369 2.912717 -12.122860 -8.329758 + 2310 1 1 0.236369 3.855552 -11.859536 -8.332621 + 2311 1 1 0.236369 4.773042 -11.515094 -8.330962 + 2312 1 1 0.236369 5.671832 -11.107206 -8.330195 + 2313 1 1 0.236369 6.526329 -10.630592 -8.329802 + 2314 1 1 0.236369 7.332122 -10.083086 -8.332091 + 2315 1 1 0.236369 8.104619 -9.482725 -8.330386 + 2316 1 1 0.236369 8.825634 -8.819001 -8.330741 + 2317 1 1 0.236369 9.486719 -8.093972 -8.325352 + 2318 1 1 0.236369 10.097641 -7.324292 -8.330133 + 2319 1 1 0.236369 10.639747 -6.510825 -8.324833 + 2320 1 1 0.236369 11.116951 -5.653090 -8.330873 + 2321 1 1 0.236369 11.525338 -4.766485 -8.325799 + 2322 1 1 0.236369 11.869156 -3.848818 -8.327461 + 2323 1 1 0.236369 12.136424 -2.908945 -8.333374 + 2324 1 1 0.236369 12.325777 -1.950546 -8.326538 + 2325 1 1 0.236369 12.437665 -0.971226 -8.333396 + 2326 1 1 0.236369 11.909683 0.001643 -9.124583 + 2327 1 1 0.236369 11.862209 0.985523 -9.122642 + 2328 1 1 0.236369 11.743327 1.961319 -9.127103 + 2329 1 1 0.236369 11.545702 2.926822 -9.125108 + 2330 1 1 0.236369 11.258186 3.869434 -9.125561 + 2331 1 1 0.236369 10.900478 4.788177 -9.129147 + 2332 1 1 0.236369 10.475278 5.672613 -9.123575 + 2333 1 1 0.236369 9.963218 6.516723 -9.128545 + 2334 1 1 0.236369 9.394003 7.319010 -9.122178 + 2335 1 1 0.236369 8.761251 8.061659 -9.128437 + 2336 1 1 0.236369 8.061887 8.764641 -9.126058 + 2337 1 1 0.236369 7.315674 9.391460 -9.128085 + 2338 1 1 0.236369 6.516831 9.964939 -9.129048 + 2339 1 1 0.236369 5.668934 10.466090 -9.125969 + 2340 1 1 0.236369 4.786804 10.904693 -9.130345 + 2341 1 1 0.236369 3.871981 11.264557 -9.130050 + 2342 1 1 0.236369 2.923685 11.541878 -9.130477 + 2343 1 1 0.236369 1.964733 11.739550 -9.128313 + 2344 1 1 0.236369 0.983844 11.864678 -9.123295 + 2345 1 1 0.236369 0.005158 11.905977 -9.126286 + 2346 1 1 0.236369 -0.974341 11.861537 -9.122757 + 2347 1 1 0.236369 -1.949517 11.741237 -9.121617 + 2348 1 1 0.236369 -2.916369 11.543314 -9.128155 + 2349 1 1 0.236369 -3.861245 11.261038 -9.129225 + 2350 1 1 0.236369 -4.773771 10.899400 -9.126239 + 2351 1 1 0.236369 -5.654744 10.469805 -9.127891 + 2352 1 1 0.236369 -6.503749 9.966498 -9.122827 + 2353 1 1 0.236369 -7.299574 9.396776 -9.128821 + 2354 1 1 0.236369 -8.057881 8.755529 -9.122984 + 2355 1 1 0.236369 -8.754223 8.065630 -9.125593 + 2356 1 1 0.236369 -9.388035 7.318638 -9.124227 + 2357 1 1 0.236369 -9.958568 6.509916 -9.127986 + 2358 1 1 0.236369 -10.461794 5.671238 -9.131329 + 2359 1 1 0.236369 -10.894863 4.790001 -9.129497 + 2360 1 1 0.236369 -11.248571 3.870110 -9.126348 + 2361 1 1 0.236369 -11.535235 2.928548 -9.131179 + 2362 1 1 0.236369 -11.733975 1.961753 -9.125921 + 2363 1 1 0.236369 -11.856703 0.987309 -9.128660 + 2364 1 1 0.236369 -11.897235 0.000480 -9.124459 + 2365 1 1 0.236369 -11.858599 -0.978865 -9.122608 + 2366 1 1 0.236369 -11.732057 -1.955108 -9.131175 + 2367 1 1 0.236369 -11.533327 -2.918475 -9.128009 + 2368 1 1 0.236369 -11.253957 -3.855854 -9.127207 + 2369 1 1 0.236369 -10.897971 -4.775791 -9.130621 + 2370 1 1 0.236369 -10.463166 -5.655850 -9.130628 + 2371 1 1 0.236369 -9.957024 -6.500945 -9.130698 + 2372 1 1 0.236369 -9.382300 -7.306486 -9.122418 + 2373 1 1 0.236369 -8.754913 -8.059171 -9.121728 + 2374 1 1 0.236369 -8.050807 -8.754786 -9.127508 + 2375 1 1 0.236369 -7.308006 -9.384634 -9.128286 + 2376 1 1 0.236369 -6.500510 -9.958289 -9.125888 + 2377 1 1 0.236369 -5.655912 -10.456946 -9.123501 + 2378 1 1 0.236369 -4.771117 -10.893804 -9.123438 + 2379 1 1 0.236369 -3.862648 -11.253968 -9.122789 + 2380 1 1 0.236369 -2.916304 -11.530754 -9.123442 + 2381 1 1 0.236369 -1.954675 -11.728625 -9.131358 + 2382 1 1 0.236369 -0.980983 -11.853045 -9.122222 + 2383 1 1 0.236369 0.005752 -11.896354 -9.131242 + 2384 1 1 0.236369 0.988781 -11.857065 -9.131127 + 2385 1 1 0.236369 1.960869 -11.729516 -9.124307 + 2386 1 1 0.236369 2.926550 -11.526704 -9.126037 + 2387 1 1 0.236369 3.873913 -11.251739 -9.126176 + 2388 1 1 0.236369 4.785195 -10.897305 -9.126399 + 2389 1 1 0.236369 5.670866 -10.464186 -9.130765 + 2390 1 1 0.236369 6.512961 -9.956775 -9.129121 + 2391 1 1 0.236369 7.309663 -9.389150 -9.130251 + 2392 1 1 0.236369 8.062782 -8.752421 -9.121524 + 2393 1 1 0.236369 8.763350 -8.055237 -9.130716 + 2394 1 1 0.236369 9.394474 -7.305846 -9.130821 + 2395 1 1 0.236369 9.963365 -6.505666 -9.124806 + 2396 1 1 0.236369 10.471113 -5.659318 -9.127981 + 2397 1 1 0.236369 10.901646 -4.777937 -9.130136 + 2398 1 1 0.236369 11.262904 -3.863744 -9.125050 + 2399 1 1 0.236369 11.541401 -2.914766 -9.123957 + 2400 1 1 0.236369 11.746041 -1.957137 -9.123369 + 2401 1 1 0.236369 11.867824 -0.974692 -9.128731 + 2402 1 1 0.236369 11.279492 0.004086 -9.885847 + 2403 1 1 0.236369 11.235919 0.986181 -9.886169 + 2404 1 1 0.236369 11.114475 1.965794 -9.884106 + 2405 1 1 0.236369 10.899701 2.926320 -9.882486 + 2406 1 1 0.236369 10.597636 3.858905 -9.880776 + 2407 1 1 0.236369 10.229934 4.767294 -9.888873 + 2408 1 1 0.236369 9.771839 5.640539 -9.887630 + 2409 1 1 0.236369 9.243512 6.474838 -9.886404 + 2410 1 1 0.236369 8.645205 7.257519 -9.880250 + 2411 1 1 0.236369 7.982070 7.979566 -9.886778 + 2412 1 1 0.236369 7.257653 8.640798 -9.881192 + 2413 1 1 0.236369 6.472393 9.245210 -9.887812 + 2414 1 1 0.236369 5.639645 9.775756 -9.887987 + 2415 1 1 0.236369 4.773457 10.223159 -9.880276 + 2416 1 1 0.236369 3.860485 10.606184 -9.880676 + 2417 1 1 0.236369 2.927254 10.895441 -9.883805 + 2418 1 1 0.236369 1.962051 11.114632 -9.885146 + 2419 1 1 0.236369 0.991190 11.243275 -9.886606 + 2420 1 1 0.236369 0.001765 11.282831 -9.882503 + 2421 1 1 0.236369 -0.981612 11.239456 -9.882344 + 2422 1 1 0.236369 -1.949535 11.115164 -9.889898 + 2423 1 1 0.236369 -2.918416 10.893973 -9.889663 + 2424 1 1 0.236369 -3.850298 10.602569 -9.886953 + 2425 1 1 0.236369 -4.758781 10.227182 -9.882190 + 2426 1 1 0.236369 -5.634427 9.774021 -9.883885 + 2427 1 1 0.236369 -6.464766 9.240367 -9.880359 + 2428 1 1 0.236369 -7.239303 8.639359 -9.888605 + 2429 1 1 0.236369 -7.970475 7.975855 -9.884020 + 2430 1 1 0.236369 -8.634739 7.256795 -9.887100 + 2431 1 1 0.236369 -9.236499 6.478262 -9.889336 + 2432 1 1 0.236369 -9.763425 5.642667 -9.881419 + 2433 1 1 0.236369 -10.217833 4.776053 -9.884280 + 2434 1 1 0.236369 -10.588530 3.860429 -9.887156 + 2435 1 1 0.236369 -10.890852 2.920229 -9.888507 + 2436 1 1 0.236369 -11.103158 1.962182 -9.886788 + 2437 1 1 0.236369 -11.230594 0.988534 -9.889513 + 2438 1 1 0.236369 -11.270517 0.006338 -9.883652 + 2439 1 1 0.236369 -11.233246 -0.977491 -9.887744 + 2440 1 1 0.236369 -11.097552 -1.955184 -9.882608 + 2441 1 1 0.236369 -10.892491 -2.917264 -9.887197 + 2442 1 1 0.236369 -10.592857 -3.855639 -9.885999 + 2443 1 1 0.236369 -10.220670 -4.764749 -9.889629 + 2444 1 1 0.236369 -9.759154 -5.631701 -9.889879 + 2445 1 1 0.236369 -9.231066 -6.463915 -9.888321 + 2446 1 1 0.236369 -8.636995 -7.247967 -9.887478 + 2447 1 1 0.236369 -7.967666 -7.967457 -9.889525 + 2448 1 1 0.236369 -7.243527 -8.637341 -9.886852 + 2449 1 1 0.236369 -6.460057 -9.230030 -9.889688 + 2450 1 1 0.236369 -5.633213 -9.761546 -9.889174 + 2451 1 1 0.236369 -4.757101 -10.215490 -9.889469 + 2452 1 1 0.236369 -3.852970 -10.595396 -9.881142 + 2453 1 1 0.236369 -2.915276 -10.885476 -9.887069 + 2454 1 1 0.236369 -1.953444 -11.101000 -9.884270 + 2455 1 1 0.236369 -0.980348 -11.228972 -9.886411 + 2456 1 1 0.236369 0.009292 -11.273377 -9.880672 + 2457 1 1 0.236369 0.987575 -11.227471 -9.882763 + 2458 1 1 0.236369 1.960874 -11.105534 -9.881316 + 2459 1 1 0.236369 2.923169 -10.887374 -9.884198 + 2460 1 1 0.236369 3.864191 -10.588855 -9.883291 + 2461 1 1 0.236369 4.770142 -10.216486 -9.886276 + 2462 1 1 0.236369 5.640617 -9.760160 -9.887954 + 2463 1 1 0.236369 6.477126 -9.235032 -9.888875 + 2464 1 1 0.236369 7.254942 -8.633066 -9.888462 + 2465 1 1 0.236369 7.978201 -7.971676 -9.880801 + 2466 1 1 0.236369 8.641358 -7.241104 -9.889842 + 2467 1 1 0.236369 9.240257 -6.460602 -9.881392 + 2468 1 1 0.236369 9.771908 -5.629258 -9.884964 + 2469 1 1 0.236369 10.225308 -4.761675 -9.882105 + 2470 1 1 0.236369 10.604888 -3.852597 -9.885711 + 2471 1 1 0.236369 10.894027 -2.912859 -9.886722 + 2472 1 1 0.236369 11.114738 -1.949908 -9.882616 + 2473 1 1 0.236369 11.241481 -0.982595 -9.886585 + 2474 1 1 0.236369 10.607968 0.001873 -10.601036 + 2475 1 1 0.236369 10.569940 0.988090 -10.597715 + 2476 1 1 0.236369 10.428003 1.958437 -10.598200 + 2477 1 1 0.236369 10.207775 2.907164 -10.604161 + 2478 1 1 0.236369 9.895792 3.839655 -10.602246 + 2479 1 1 0.236369 9.496264 4.737058 -10.598316 + 2480 1 1 0.236369 9.017971 5.590383 -10.605075 + 2481 1 1 0.236369 8.471966 6.395629 -10.599022 + 2482 1 1 0.236369 7.846021 7.149678 -10.597837 + 2483 1 1 0.236369 7.149832 7.842761 -10.601580 + 2484 1 1 0.236369 6.392474 8.471037 -10.600899 + 2485 1 1 0.236369 5.589514 9.022565 -10.598087 + 2486 1 1 0.236369 4.729511 9.504173 -10.596755 + 2487 1 1 0.236369 3.838833 9.893909 -10.598700 + 2488 1 1 0.236369 2.907977 10.205092 -10.603095 + 2489 1 1 0.236369 1.951489 10.434963 -10.601583 + 2490 1 1 0.236369 0.987824 10.566810 -10.604050 + 2491 1 1 0.236369 0.007582 10.614095 -10.601503 + 2492 1 1 0.236369 -0.969783 10.562605 -10.605816 + 2493 1 1 0.236369 -1.948270 10.430537 -10.606043 + 2494 1 1 0.236369 -2.900799 10.202449 -10.600252 + 2495 1 1 0.236369 -3.824176 9.896995 -10.600433 + 2496 1 1 0.236369 -4.720802 9.501677 -10.605787 + 2497 1 1 0.236369 -5.575886 9.027104 -10.600507 + 2498 1 1 0.236369 -6.386887 8.470852 -10.601155 + 2499 1 1 0.236369 -7.141366 7.845274 -10.598043 + 2500 1 1 0.236369 -7.832261 7.154159 -10.600175 + 2501 1 1 0.236369 -8.455693 6.396585 -10.603885 + 2502 1 1 0.236369 -9.011207 5.588241 -10.605534 + 2503 1 1 0.236369 -9.489405 4.735830 -10.605997 + 2504 1 1 0.236369 -9.887373 3.839794 -10.600383 + 2505 1 1 0.236369 -10.194662 2.904539 -10.599611 + 2506 1 1 0.236369 -10.422188 1.949215 -10.603852 + 2507 1 1 0.236369 -10.555679 0.979222 -10.602382 + 2508 1 1 0.236369 -10.597723 0.001429 -10.602943 + 2509 1 1 0.236369 -10.552926 -0.976940 -10.605780 + 2510 1 1 0.236369 -10.417016 -1.942700 -10.605904 + 2511 1 1 0.236369 -10.192311 -2.902339 -10.605393 + 2512 1 1 0.236369 -9.882207 -3.826823 -10.599823 + 2513 1 1 0.236369 -9.494627 -4.720985 -10.604412 + 2514 1 1 0.236369 -9.017884 -5.582508 -10.604229 + 2515 1 1 0.236369 -8.463376 -6.389545 -10.606515 + 2516 1 1 0.236369 -7.835766 -7.142731 -10.599331 + 2517 1 1 0.236369 -7.145393 -7.836646 -10.600991 + 2518 1 1 0.236369 -6.387665 -8.461014 -10.601082 + 2519 1 1 0.236369 -5.580246 -9.009903 -10.599179 + 2520 1 1 0.236369 -4.722356 -9.491644 -10.598355 + 2521 1 1 0.236369 -3.822285 -9.882605 -10.602668 + 2522 1 1 0.236369 -2.899649 -10.196174 -10.605242 + 2523 1 1 0.236369 -1.945577 -10.420457 -10.604644 + 2524 1 1 0.236369 -0.970059 -10.554049 -10.599399 + 2525 1 1 0.236369 0.003405 -10.598865 -10.599905 + 2526 1 1 0.236369 0.980035 -10.552347 -10.606003 + 2527 1 1 0.236369 1.954036 -10.424622 -10.602759 + 2528 1 1 0.236369 2.911201 -10.193761 -10.601689 + 2529 1 1 0.236369 3.835390 -9.888467 -10.598860 + 2530 1 1 0.236369 4.734726 -9.494351 -10.605124 + 2531 1 1 0.236369 5.589935 -9.016641 -10.601746 + 2532 1 1 0.236369 6.396409 -8.462914 -10.605883 + 2533 1 1 0.236369 7.150358 -7.837090 -10.598727 + 2534 1 1 0.236369 7.847870 -7.136269 -10.602664 + 2535 1 1 0.236369 8.465086 -6.389173 -10.604240 + 2536 1 1 0.236369 9.020713 -5.574229 -10.605796 + 2537 1 1 0.236369 9.499111 -4.721388 -10.605812 + 2538 1 1 0.236369 9.896237 -3.822821 -10.597327 + 2539 1 1 0.236369 10.210478 -2.898964 -10.604555 + 2540 1 1 0.236369 10.430695 -1.946596 -10.597036 + 2541 1 1 0.236369 10.565730 -0.976781 -10.603204 + 2542 1 1 0.236369 9.897649 0.005456 -11.267997 + 2543 1 1 0.236369 9.845720 0.987296 -11.274166 + 2544 1 1 0.236369 9.702698 1.962761 -11.276963 + 2545 1 1 0.236369 9.455459 2.915339 -11.271472 + 2546 1 1 0.236369 9.118553 3.847568 -11.272041 + 2547 1 1 0.236369 8.690650 4.739647 -11.268533 + 2548 1 1 0.236369 8.173951 5.579839 -11.275585 + 2549 1 1 0.236369 7.577178 6.357369 -11.269720 + 2550 1 1 0.236369 6.906367 7.086397 -11.274120 + 2551 1 1 0.236369 6.175315 7.736053 -11.267876 + 2552 1 1 0.236369 5.368216 8.309154 -11.269237 + 2553 1 1 0.236369 4.520625 8.806407 -11.270479 + 2554 1 1 0.236369 3.620408 9.210680 -11.275448 + 2555 1 1 0.236369 2.687391 9.525705 -11.277443 + 2556 1 1 0.236369 1.726793 9.748794 -11.275497 + 2557 1 1 0.236369 0.740492 9.864026 -11.272232 + 2558 1 1 0.236369 -0.242630 9.891460 -11.276513 + 2559 1 1 0.236369 -1.219977 9.814022 -11.269059 + 2560 1 1 0.236369 -2.194326 9.646030 -11.268489 + 2561 1 1 0.236369 -3.140929 9.382403 -11.274260 + 2562 1 1 0.236369 -4.062884 9.015915 -11.272906 + 2563 1 1 0.236369 -4.944953 8.571825 -11.277568 + 2564 1 1 0.236369 -5.767105 8.033183 -11.274488 + 2565 1 1 0.236369 -6.541886 7.421462 -11.272745 + 2566 1 1 0.236369 -7.244746 6.728554 -11.274975 + 2567 1 1 0.236369 -7.876540 5.976102 -11.270766 + 2568 1 1 0.236369 -8.433132 5.157219 -11.268485 + 2569 1 1 0.236369 -8.904867 4.293482 -11.271892 + 2570 1 1 0.236369 -9.289402 3.385280 -11.274944 + 2571 1 1 0.236369 -9.581914 2.445591 -11.268312 + 2572 1 1 0.236369 -9.775432 1.476207 -11.276955 + 2573 1 1 0.236369 -9.877791 0.496446 -11.271334 + 2574 1 1 0.236369 -9.871805 -0.485507 -11.268114 + 2575 1 1 0.236369 -9.770142 -1.469920 -11.272433 + 2576 1 1 0.236369 -9.583401 -2.439919 -11.268030 + 2577 1 1 0.236369 -9.293380 -3.378743 -11.274877 + 2578 1 1 0.236369 -8.901888 -4.286447 -11.272327 + 2579 1 1 0.236369 -8.436737 -5.148839 -11.268485 + 2580 1 1 0.236369 -7.883701 -5.968702 -11.275450 + 2581 1 1 0.236369 -7.241871 -6.718818 -11.269329 + 2582 1 1 0.236369 -6.542792 -7.409820 -11.276214 + 2583 1 1 0.236369 -5.764536 -8.029675 -11.273220 + 2584 1 1 0.236369 -4.944140 -8.562553 -11.268844 + 2585 1 1 0.236369 -4.064181 -9.009073 -11.270554 + 2586 1 1 0.236369 -3.143958 -9.370382 -11.272627 + 2587 1 1 0.236369 -2.194922 -9.640233 -11.271501 + 2588 1 1 0.236369 -1.223106 -9.811041 -11.276819 + 2589 1 1 0.236369 -0.240089 -9.879311 -11.275183 + 2590 1 1 0.236369 0.743428 -9.856359 -11.277339 + 2591 1 1 0.236369 1.718811 -9.738492 -11.269132 + 2592 1 1 0.236369 2.686182 -9.513373 -11.277448 + 2593 1 1 0.236369 3.615709 -9.202501 -11.272093 + 2594 1 1 0.236369 4.518513 -8.796375 -11.276400 + 2595 1 1 0.236369 5.374458 -8.300941 -11.271718 + 2596 1 1 0.236369 6.167275 -7.728448 -11.271375 + 2597 1 1 0.236369 6.915414 -7.079913 -11.270127 + 2598 1 1 0.236369 7.576638 -6.356543 -11.274498 + 2599 1 1 0.236369 8.180010 -5.565430 -11.268432 + 2600 1 1 0.236369 8.694133 -4.725561 -11.269774 + 2601 1 1 0.236369 9.114071 -3.832427 -11.276587 + 2602 1 1 0.236369 9.456253 -2.914235 -11.274786 + 2603 1 1 0.236369 9.703521 -1.955948 -11.268522 + 2604 1 1 0.236369 9.844255 -0.979285 -11.276486 + 2605 1 1 0.236369 9.139486 0.001117 -11.892402 + 2606 1 1 0.236369 9.085704 0.979655 -11.899277 + 2607 1 1 0.236369 8.932978 1.936557 -11.892621 + 2608 1 1 0.236369 8.677342 2.877021 -11.893680 + 2609 1 1 0.236369 8.315886 3.779520 -11.892569 + 2610 1 1 0.236369 7.870045 4.635853 -11.890980 + 2611 1 1 0.236369 7.336433 5.448846 -11.898531 + 2612 1 1 0.236369 6.714429 6.195070 -11.900096 + 2613 1 1 0.236369 6.022873 6.878335 -11.891964 + 2614 1 1 0.236369 5.256111 7.472875 -11.895568 + 2615 1 1 0.236369 4.430317 7.994570 -11.899214 + 2616 1 1 0.236369 3.553507 8.417662 -11.899410 + 2617 1 1 0.236369 2.638729 8.745680 -11.899149 + 2618 1 1 0.236369 1.700815 8.978466 -11.898620 + 2619 1 1 0.236369 0.733029 9.109381 -11.890575 + 2620 1 1 0.236369 -0.234923 9.136321 -11.897440 + 2621 1 1 0.236369 -1.210989 9.053792 -11.894310 + 2622 1 1 0.236369 -2.158534 8.873649 -11.891778 + 2623 1 1 0.236369 -3.097457 8.593380 -11.897852 + 2624 1 1 0.236369 -3.984246 8.218661 -11.893028 + 2625 1 1 0.236369 -4.834497 7.749631 -11.896292 + 2626 1 1 0.236369 -5.633636 7.189952 -11.897194 + 2627 1 1 0.236369 -6.369165 6.551027 -11.893762 + 2628 1 1 0.236369 -7.027901 5.836789 -11.896382 + 2629 1 1 0.236369 -7.602280 5.049578 -11.899107 + 2630 1 1 0.236369 -8.094472 4.218932 -11.890515 + 2631 1 1 0.236369 -8.504075 3.334900 -11.895118 + 2632 1 1 0.236369 -8.802124 2.410202 -11.895222 + 2633 1 1 0.236369 -9.005592 1.461226 -11.897050 + 2634 1 1 0.236369 -9.115051 0.486668 -11.898327 + 2635 1 1 0.236369 -9.112097 -0.479526 -11.891671 + 2636 1 1 0.236369 -9.011733 -1.449235 -11.897621 + 2637 1 1 0.236369 -8.807537 -2.396097 -11.894913 + 2638 1 1 0.236369 -8.496561 -3.316506 -11.894785 + 2639 1 1 0.236369 -8.095555 -4.206694 -11.890668 + 2640 1 1 0.236369 -7.606552 -5.040183 -11.897604 + 2641 1 1 0.236369 -7.023854 -5.826396 -11.897643 + 2642 1 1 0.236369 -6.366157 -6.537071 -11.897200 + 2643 1 1 0.236369 -5.637957 -7.176059 -11.894727 + 2644 1 1 0.236369 -4.843257 -7.733881 -11.896518 + 2645 1 1 0.236369 -3.988326 -8.208934 -11.897842 + 2646 1 1 0.236369 -3.094950 -8.587294 -11.893538 + 2647 1 1 0.236369 -2.163733 -8.861376 -11.897687 + 2648 1 1 0.236369 -1.209099 -9.044484 -11.890685 + 2649 1 1 0.236369 -0.241374 -9.127254 -11.895324 + 2650 1 1 0.236369 0.732553 -9.096034 -11.896022 + 2651 1 1 0.236369 1.698926 -8.971383 -11.894622 + 2652 1 1 0.236369 2.638205 -8.734854 -11.894170 + 2653 1 1 0.236369 3.557181 -8.404243 -11.892230 + 2654 1 1 0.236369 4.429069 -7.984495 -11.891492 + 2655 1 1 0.236369 5.252959 -7.470913 -11.898700 + 2656 1 1 0.236369 6.014897 -6.864386 -11.899408 + 2657 1 1 0.236369 6.711464 -6.190765 -11.897169 + 2658 1 1 0.236369 7.336062 -5.443158 -11.894227 + 2659 1 1 0.236369 7.869904 -4.633710 -11.896513 + 2660 1 1 0.236369 8.320987 -3.772525 -11.891045 + 2661 1 1 0.236369 8.678798 -2.862448 -11.899730 + 2662 1 1 0.236369 8.932227 -1.926186 -11.890360 + 2663 1 1 0.236369 9.086482 -0.963109 -11.893631 + 2664 1 1 0.236369 8.343147 0.004872 -12.465873 + 2665 1 1 0.236369 8.282814 0.989484 -12.470565 + 2666 1 1 0.236369 8.106482 1.958050 -12.471754 + 2667 1 1 0.236369 7.821517 2.903894 -12.466319 + 2668 1 1 0.236369 7.414601 3.810783 -12.471744 + 2669 1 1 0.236369 6.914584 4.659619 -12.464929 + 2670 1 1 0.236369 6.322627 5.449338 -12.469904 + 2671 1 1 0.236369 5.632729 6.149336 -12.469492 + 2672 1 1 0.236369 4.863044 6.775338 -12.462458 + 2673 1 1 0.236369 4.030184 7.303362 -12.470225 + 2674 1 1 0.236369 3.136149 7.723958 -12.464060 + 2675 1 1 0.236369 2.200419 8.044252 -12.471644 + 2676 1 1 0.236369 1.232553 8.250793 -12.468953 + 2677 1 1 0.236369 0.250780 8.331874 -12.462373 + 2678 1 1 0.236369 -0.739689 8.302191 -12.469374 + 2679 1 1 0.236369 -1.711811 8.155467 -12.470825 + 2680 1 1 0.236369 -2.665652 7.901206 -12.465970 + 2681 1 1 0.236369 -3.574213 7.523700 -12.465591 + 2682 1 1 0.236369 -4.443091 7.049731 -12.463300 + 2683 1 1 0.236369 -5.242408 6.480941 -12.463071 + 2684 1 1 0.236369 -5.975304 5.812392 -12.471512 + 2685 1 1 0.236369 -6.619342 5.059238 -12.464449 + 2686 1 1 0.236369 -7.167290 4.244692 -12.463455 + 2687 1 1 0.236369 -7.616503 3.360829 -12.467227 + 2688 1 1 0.236369 -7.964979 2.440169 -12.471293 + 2689 1 1 0.236369 -8.192884 1.482695 -12.471137 + 2690 1 1 0.236369 -8.311527 0.502683 -12.470042 + 2691 1 1 0.236369 -8.313243 -0.490201 -12.464261 + 2692 1 1 0.236369 -8.192450 -1.469261 -12.467971 + 2693 1 1 0.236369 -7.961974 -2.427076 -12.463774 + 2694 1 1 0.236369 -7.616819 -3.352409 -12.470565 + 2695 1 1 0.236369 -7.169090 -4.233262 -12.464715 + 2696 1 1 0.236369 -6.620166 -5.053159 -12.470545 + 2697 1 1 0.236369 -5.974619 -5.801943 -12.463660 + 2698 1 1 0.236369 -5.241752 -6.470441 -12.466591 + 2699 1 1 0.236369 -4.448497 -7.042373 -12.462433 + 2700 1 1 0.236369 -3.582404 -7.521857 -12.471289 + 2701 1 1 0.236369 -2.664270 -7.890607 -12.462706 + 2702 1 1 0.236369 -1.711104 -8.145647 -12.468450 + 2703 1 1 0.236369 -0.739388 -8.295521 -12.471375 + 2704 1 1 0.236369 0.253531 -8.320752 -12.462385 + 2705 1 1 0.236369 1.239317 -8.241300 -12.465550 + 2706 1 1 0.236369 2.197714 -8.028912 -12.467838 + 2707 1 1 0.236369 3.136357 -7.721653 -12.466080 + 2708 1 1 0.236369 4.026177 -7.294853 -12.468573 + 2709 1 1 0.236369 4.868143 -6.763049 -12.469868 + 2710 1 1 0.236369 5.631095 -6.142749 -12.471666 + 2711 1 1 0.236369 6.315298 -5.435669 -12.470510 + 2712 1 1 0.236369 6.913223 -4.652531 -12.468310 + 2713 1 1 0.236369 7.419455 -3.804012 -12.463276 + 2714 1 1 0.236369 7.820315 -2.898807 -12.467633 + 2715 1 1 0.236369 8.108775 -1.955769 -12.465666 + 2716 1 1 0.236369 8.283395 -0.982465 -12.468166 + 2717 1 1 0.236369 7.502037 0.001098 -12.982009 + 2718 1 1 0.236369 7.441281 0.987267 -12.982718 + 2719 1 1 0.236369 7.253193 1.950859 -12.989125 + 2720 1 1 0.236369 6.930306 2.872308 -12.989454 + 2721 1 1 0.236369 6.503754 3.757061 -12.983778 + 2722 1 1 0.236369 5.959148 4.566101 -12.986604 + 2723 1 1 0.236369 5.305480 5.309464 -12.989303 + 2724 1 1 0.236369 4.566481 5.956844 -12.984143 + 2725 1 1 0.236369 3.754742 6.495563 -12.984165 + 2726 1 1 0.236369 2.878476 6.929130 -12.981265 + 2727 1 1 0.236369 1.945837 7.245868 -12.984320 + 2728 1 1 0.236369 0.983084 7.444461 -12.985528 + 2729 1 1 0.236369 0.005027 7.502760 -12.984614 + 2730 1 1 0.236369 -0.977692 7.441153 -12.980560 + 2731 1 1 0.236369 -1.939820 7.249666 -12.985195 + 2732 1 1 0.236369 -2.861421 6.934773 -12.986894 + 2733 1 1 0.236369 -3.743970 6.498521 -12.980552 + 2734 1 1 0.236369 -4.563058 5.954284 -12.980461 + 2735 1 1 0.236369 -5.294653 5.307444 -12.981419 + 2736 1 1 0.236369 -5.949569 4.575550 -12.982965 + 2737 1 1 0.236369 -6.490613 3.750577 -12.983734 + 2738 1 1 0.236369 -6.921874 2.874091 -12.983047 + 2739 1 1 0.236369 -7.241054 1.949056 -12.986022 + 2740 1 1 0.236369 -7.431824 0.984888 -12.986385 + 2741 1 1 0.236369 -7.494730 0.003096 -12.988202 + 2742 1 1 0.236369 -7.426894 -0.969928 -12.981565 + 2743 1 1 0.236369 -7.236660 -1.940212 -12.980960 + 2744 1 1 0.236369 -6.928403 -2.866935 -12.980892 + 2745 1 1 0.236369 -6.492403 -3.741130 -12.989317 + 2746 1 1 0.236369 -5.946356 -4.559136 -12.989801 + 2747 1 1 0.236369 -5.294654 -5.296456 -12.988744 + 2748 1 1 0.236369 -4.561511 -5.945411 -12.985106 + 2749 1 1 0.236369 -3.747601 -6.493778 -12.989684 + 2750 1 1 0.236369 -2.864149 -6.919587 -12.990280 + 2751 1 1 0.236369 -1.936349 -7.235617 -12.989464 + 2752 1 1 0.236369 -0.969961 -7.431462 -12.984307 + 2753 1 1 0.236369 0.009347 -7.491650 -12.989820 + 2754 1 1 0.236369 0.987125 -7.432585 -12.983800 + 2755 1 1 0.236369 1.948232 -7.240767 -12.984623 + 2756 1 1 0.236369 2.877558 -6.921148 -12.989643 + 2757 1 1 0.236369 3.758997 -6.494197 -12.987965 + 2758 1 1 0.236369 4.566363 -5.940632 -12.986869 + 2759 1 1 0.236369 5.306660 -5.303286 -12.989114 + 2760 1 1 0.236369 5.950193 -4.562757 -12.982987 + 2761 1 1 0.236369 6.503471 -3.749515 -12.985924 + 2762 1 1 0.236369 6.934171 -2.865698 -12.990205 + 2763 1 1 0.236369 7.248105 -1.933244 -12.983564 + 2764 1 1 0.236369 7.438103 -0.969811 -12.981573 + 2765 1 1 0.236369 6.639679 0.005333 -13.451693 + 2766 1 1 0.236369 6.566526 0.974007 -13.444983 + 2767 1 1 0.236369 6.353722 1.916971 -13.450563 + 2768 1 1 0.236369 6.007892 2.823495 -13.452847 + 2769 1 1 0.236369 5.533700 3.660702 -13.447784 + 2770 1 1 0.236369 4.945163 4.431981 -13.443743 + 2771 1 1 0.236369 4.245036 5.101962 -13.445398 + 2772 1 1 0.236369 3.460520 5.666098 -13.449044 + 2773 1 1 0.236369 2.603707 6.115550 -13.445913 + 2774 1 1 0.236369 1.681580 6.420695 -13.448278 + 2775 1 1 0.236369 0.726807 6.599736 -13.448679 + 2776 1 1 0.236369 -0.236608 6.632160 -13.443668 + 2777 1 1 0.236369 -1.196289 6.529645 -13.447303 + 2778 1 1 0.236369 -2.138610 6.288976 -13.445255 + 2779 1 1 0.236369 -3.033077 5.901508 -13.445943 + 2780 1 1 0.236369 -3.858821 5.405180 -13.451669 + 2781 1 1 0.236369 -4.603952 4.777316 -13.446162 + 2782 1 1 0.236369 -5.243644 4.056591 -13.449155 + 2783 1 1 0.236369 -5.780899 3.253425 -13.451813 + 2784 1 1 0.236369 -6.189889 2.371269 -13.446682 + 2785 1 1 0.236369 -6.468617 1.443317 -13.448116 + 2786 1 1 0.236369 -6.610918 0.490867 -13.452451 + 2787 1 1 0.236369 -6.610345 -0.484001 -13.447856 + 2788 1 1 0.236369 -6.466832 -1.432652 -13.449946 + 2789 1 1 0.236369 -6.189948 -2.364594 -13.444542 + 2790 1 1 0.236369 -5.776710 -3.243221 -13.453001 + 2791 1 1 0.236369 -5.246374 -4.047661 -13.451065 + 2792 1 1 0.236369 -4.603304 -4.766603 -13.444285 + 2793 1 1 0.236369 -3.859563 -5.391810 -13.450911 + 2794 1 1 0.236369 -3.026354 -5.893261 -13.449914 + 2795 1 1 0.236369 -2.139015 -6.272973 -13.449651 + 2796 1 1 0.236369 -1.198327 -6.516220 -13.445090 + 2797 1 1 0.236369 -0.235775 -6.623986 -13.447380 + 2798 1 1 0.236369 0.730915 -6.590769 -13.444959 + 2799 1 1 0.236369 1.685195 -6.410100 -13.452229 + 2800 1 1 0.236369 2.599766 -6.103623 -13.451170 + 2801 1 1 0.236369 3.460970 -5.655049 -13.446796 + 2802 1 1 0.236369 4.248781 -5.089490 -13.452452 + 2803 1 1 0.236369 4.950424 -4.424400 -13.445661 + 2804 1 1 0.236369 5.536910 -3.653506 -13.447057 + 2805 1 1 0.236369 6.008214 -2.809340 -13.445107 + 2806 1 1 0.236369 6.355443 -1.907196 -13.451485 + 2807 1 1 0.236369 6.570480 -0.960984 -13.445712 + 2808 1 1 0.236369 5.748644 0.009491 -13.850623 + 2809 1 1 0.236369 5.667385 0.979639 -13.849380 + 2810 1 1 0.236369 5.414505 1.919635 -13.853901 + 2811 1 1 0.236369 5.018924 2.803338 -13.856318 + 2812 1 1 0.236369 4.471962 3.606542 -13.855163 + 2813 1 1 0.236369 3.796469 4.314877 -13.854985 + 2814 1 1 0.236369 3.014756 4.893639 -13.853773 + 2815 1 1 0.236369 2.145246 5.329868 -13.854574 + 2816 1 1 0.236369 1.215866 5.620215 -13.851937 + 2817 1 1 0.236369 0.251060 5.741325 -13.848805 + 2818 1 1 0.236369 -0.726095 5.699998 -13.855324 + 2819 1 1 0.236369 -1.679980 5.491595 -13.855747 + 2820 1 1 0.236369 -2.576023 5.126366 -13.848984 + 2821 1 1 0.236369 -3.409448 4.618083 -13.848931 + 2822 1 1 0.236369 -4.136456 3.974251 -13.855094 + 2823 1 1 0.236369 -4.754060 3.217855 -13.857428 + 2824 1 1 0.236369 -5.229587 2.372902 -13.850384 + 2825 1 1 0.236369 -5.545979 1.448021 -13.856886 + 2826 1 1 0.236369 -5.710809 0.488386 -13.853578 + 2827 1 1 0.236369 -5.709574 -0.481721 -13.853791 + 2828 1 1 0.236369 -5.546388 -1.440384 -13.852143 + 2829 1 1 0.236369 -5.230312 -2.362803 -13.856923 + 2830 1 1 0.236369 -4.750407 -3.208042 -13.852203 + 2831 1 1 0.236369 -4.134233 -3.963464 -13.856872 + 2832 1 1 0.236369 -3.408234 -4.607323 -13.857040 + 2833 1 1 0.236369 -2.575548 -5.122973 -13.853782 + 2834 1 1 0.236369 -1.680174 -5.485491 -13.855482 + 2835 1 1 0.236369 -0.719239 -5.691926 -13.848752 + 2836 1 1 0.236369 0.252850 -5.730605 -13.853027 + 2837 1 1 0.236369 1.214995 -5.608146 -13.853740 + 2838 1 1 0.236369 2.144605 -5.323518 -13.855107 + 2839 1 1 0.236369 3.013034 -4.878674 -13.853497 + 2840 1 1 0.236369 3.799646 -4.305051 -13.850399 + 2841 1 1 0.236369 4.466257 -3.602347 -13.856505 + 2842 1 1 0.236369 5.015061 -2.793563 -13.857968 + 2843 1 1 0.236369 5.421581 -1.911621 -13.851106 + 2844 1 1 0.236369 5.663148 -0.968055 -13.852141 + 2845 1 1 0.236369 4.826331 0.007236 -14.199815 + 2846 1 1 0.236369 4.727859 0.976331 -14.194804 + 2847 1 1 0.236369 4.433929 1.903425 -14.199180 + 2848 1 1 0.236369 3.966895 2.762857 -14.194790 + 2849 1 1 0.236369 3.331737 3.498892 -14.198983 + 2850 1 1 0.236369 2.555584 4.097264 -14.194676 + 2851 1 1 0.236369 1.684490 4.526738 -14.196915 + 2852 1 1 0.236369 0.734681 4.767842 -14.197006 + 2853 1 1 0.236369 -0.239949 4.816220 -14.203906 + 2854 1 1 0.236369 -1.206412 4.672314 -14.198550 + 2855 1 1 0.236369 -2.121468 4.329153 -14.199822 + 2856 1 1 0.236369 -2.942998 3.817148 -14.197671 + 2857 1 1 0.236369 -3.651156 3.146231 -14.198517 + 2858 1 1 0.236369 -4.210445 2.346316 -14.201792 + 2859 1 1 0.236369 -4.592179 1.443749 -14.198431 + 2860 1 1 0.236369 -4.791735 0.494891 -14.195324 + 2861 1 1 0.236369 -4.791334 -0.486099 -14.203903 + 2862 1 1 0.236369 -4.598337 -1.437473 -14.202701 + 2863 1 1 0.236369 -4.209864 -2.333847 -14.196201 + 2864 1 1 0.236369 -3.656994 -3.132929 -14.203748 + 2865 1 1 0.236369 -2.950803 -3.812235 -14.202526 + 2866 1 1 0.236369 -2.116568 -4.320300 -14.200748 + 2867 1 1 0.236369 -1.202459 -4.663830 -14.194904 + 2868 1 1 0.236369 -0.242013 -4.811407 -14.197810 + 2869 1 1 0.236369 0.734186 -4.762737 -14.203793 + 2870 1 1 0.236369 1.680863 -4.515904 -14.200838 + 2871 1 1 0.236369 2.556002 -4.088862 -14.202024 + 2872 1 1 0.236369 3.323193 -3.490994 -14.201197 + 2873 1 1 0.236369 3.959078 -2.750932 -14.203685 + 2874 1 1 0.236369 4.430850 -1.895121 -14.195646 + 2875 1 1 0.236369 4.727075 -0.963935 -14.196309 + 2876 1 1 0.236369 3.887171 0.009921 -14.481676 + 2877 1 1 0.236369 3.761915 0.974929 -14.480660 + 2878 1 1 0.236369 3.408741 1.873809 -14.481242 + 2879 1 1 0.236369 2.830244 2.659537 -14.487682 + 2880 1 1 0.236369 2.081429 3.287118 -14.485044 + 2881 1 1 0.236369 1.209214 3.695160 -14.488608 + 2882 1 1 0.236369 0.253529 3.880133 -14.488874 + 2883 1 1 0.236369 -0.727159 3.822713 -14.488817 + 2884 1 1 0.236369 -1.648058 3.513698 -14.487210 + 2885 1 1 0.236369 -2.466035 2.993929 -14.487383 + 2886 1 1 0.236369 -3.138406 2.286221 -14.483732 + 2887 1 1 0.236369 -3.601315 1.434942 -14.484699 + 2888 1 1 0.236369 -3.843537 0.495575 -14.482949 + 2889 1 1 0.236369 -3.845383 -0.484397 -14.486118 + 2890 1 1 0.236369 -3.609636 -1.419494 -14.482959 + 2891 1 1 0.236369 -3.137038 -2.277610 -14.483036 + 2892 1 1 0.236369 -2.465618 -2.983504 -14.487671 + 2893 1 1 0.236369 -1.646193 -3.507545 -14.488101 + 2894 1 1 0.236369 -0.723680 -3.810207 -14.488567 + 2895 1 1 0.236369 0.250090 -3.870309 -14.487206 + 2896 1 1 0.236369 1.202125 -3.685094 -14.483646 + 2897 1 1 0.236369 2.085947 -3.268760 -14.480474 + 2898 1 1 0.236369 2.839882 -2.648707 -14.485823 + 2899 1 1 0.236369 3.410570 -1.868958 -14.486976 + 2900 1 1 0.236369 3.763151 -0.964286 -14.488236 + 2901 1 1 0.236369 2.933179 0.008935 -14.702319 + 2902 1 1 0.236369 2.771378 0.956717 -14.709332 + 2903 1 1 0.236369 2.319174 1.797807 -14.705525 + 2904 1 1 0.236369 1.601404 2.454893 -14.709712 + 2905 1 1 0.236369 0.720881 2.845754 -14.709362 + 2906 1 1 0.236369 -0.233543 2.920217 -14.704345 + 2907 1 1 0.236369 -1.174659 2.682798 -14.710219 + 2908 1 1 0.236369 -1.976654 2.155330 -14.703547 + 2909 1 1 0.236369 -2.565646 1.394800 -14.710839 + 2910 1 1 0.236369 -2.879055 0.485465 -14.701981 + 2911 1 1 0.236369 -2.885027 -0.475714 -14.705247 + 2912 1 1 0.236369 -2.569273 -1.390107 -14.708938 + 2913 1 1 0.236369 -1.978462 -2.146765 -14.703107 + 2914 1 1 0.236369 -1.170718 -2.671832 -14.711478 + 2915 1 1 0.236369 -0.235782 -2.915320 -14.704170 + 2916 1 1 0.236369 0.719836 -2.829517 -14.702817 + 2917 1 1 0.236369 1.609618 -2.443360 -14.705590 + 2918 1 1 0.236369 2.315707 -1.792658 -14.704572 + 2919 1 1 0.236369 2.769426 -0.940857 -14.707141 + 2920 1 1 0.236369 1.963552 0.000964 -14.864084 + 2921 1 1 0.236369 1.742944 0.915869 -14.871602 + 2922 1 1 0.236369 1.120041 1.613650 -14.869738 + 2923 1 1 0.236369 0.242855 1.943941 -14.870758 + 2924 1 1 0.236369 -0.689616 1.836460 -14.869994 + 2925 1 1 0.236369 -1.462901 1.306745 -14.862250 + 2926 1 1 0.236369 -1.895307 0.474123 -14.863179 + 2927 1 1 0.236369 -1.898512 -0.460156 -14.870300 + 2928 1 1 0.236369 -1.462311 -1.296274 -14.865066 + 2929 1 1 0.236369 -0.685170 -1.824449 -14.871288 + 2930 1 1 0.236369 0.244850 -1.941877 -14.870191 + 2931 1 1 0.236369 1.120156 -1.608419 -14.869825 + 2932 1 1 0.236369 1.742886 -0.909693 -14.865219 + 2933 1 1 0.236369 0.982835 0.007015 -14.959318 + 2934 1 1 0.236369 0.495699 0.859132 -14.959350 + 2935 1 1 0.236369 -0.484253 0.857102 -14.962943 + 2936 1 1 0.236369 -0.971915 0.007567 -14.960075 + 2937 1 1 0.236369 -0.483884 -0.844191 -14.965137 + 2938 1 1 0.236369 0.494415 -0.846791 -14.958210 + +Ellipsoids + + 1 1.000000 1.000000 1.010000 0.707299 0.000000 -0.706915 0.000349 + 2 1.000000 1.000000 1.010000 0.707320 -0.000000 0.706893 0.000385 + 3 1.000000 1.000000 1.010000 0.729879 0.000000 -0.683577 0.000274 + 4 1.000000 1.000000 1.010000 0.718785 0.000000 -0.694113 0.039433 + 5 1.000000 1.000000 1.010000 0.695605 0.000000 -0.717246 0.041140 + 6 1.000000 1.000000 1.010000 0.683619 0.000000 -0.729839 0.000026 + 7 1.000000 1.000000 1.010000 0.695519 0.000000 -0.717368 -0.040455 + 8 1.000000 1.000000 1.010000 0.718701 0.000000 -0.694205 -0.039346 + 9 1.000000 1.000000 1.010000 0.752038 0.000000 -0.659120 0.000168 + 10 1.000000 1.000000 1.010000 0.747043 0.000000 -0.663515 0.040936 + 11 1.000000 1.000000 1.010000 0.732875 0.000000 -0.676397 0.073357 + 12 1.000000 1.000000 1.010000 0.712871 0.000000 -0.695336 0.091233 + 13 1.000000 1.000000 1.010000 0.690786 0.000000 -0.717605 0.088647 + 14 1.000000 1.000000 1.010000 0.671817 0.000000 -0.737898 0.064572 + 15 1.000000 1.000000 1.010000 0.661004 0.000000 -0.750007 0.023744 + 16 1.000000 1.000000 1.010000 0.660819 0.000000 -0.750177 -0.023507 + 17 1.000000 1.000000 1.010000 0.671782 0.000000 -0.737975 -0.064040 + 18 1.000000 1.000000 1.010000 0.690772 0.000000 -0.717661 -0.088304 + 19 1.000000 1.000000 1.010000 0.712832 0.000000 -0.695464 -0.090556 + 20 1.000000 1.000000 1.010000 0.733068 0.000000 -0.676229 -0.072978 + 21 1.000000 1.000000 1.010000 0.746991 0.000000 -0.663614 -0.040262 + 22 1.000000 1.000000 1.010000 0.773006 0.000000 -0.634398 0.000421 + 23 1.000000 1.000000 1.010000 0.769723 0.000000 -0.637041 0.041284 + 24 1.000000 1.000000 1.010000 0.759777 0.000000 -0.645373 0.078944 + 25 1.000000 1.000000 1.010000 0.744016 0.000000 -0.659026 0.110114 + 26 1.000000 1.000000 1.010000 0.724009 0.000000 -0.677251 0.130927 + 27 1.000000 1.000000 1.010000 0.701566 0.000000 -0.698967 0.138749 + 28 1.000000 1.000000 1.010000 0.678945 0.000000 -0.722307 0.131551 + 29 1.000000 1.000000 1.010000 0.658914 0.000000 -0.744253 0.109176 + 30 1.000000 1.000000 1.010000 0.643642 0.000000 -0.761911 0.072222 + 31 1.000000 1.000000 1.010000 0.635651 0.000000 -0.771555 0.025529 + 32 1.000000 1.000000 1.010000 0.635466 0.000000 -0.771722 -0.025074 + 33 1.000000 1.000000 1.010000 0.643677 0.000000 -0.761908 -0.071950 + 34 1.000000 1.000000 1.010000 0.658747 0.000000 -0.744488 -0.108579 + 35 1.000000 1.000000 1.010000 0.678873 0.000000 -0.722427 -0.131266 + 36 1.000000 1.000000 1.010000 0.701584 0.000000 -0.699065 -0.138159 + 37 1.000000 1.000000 1.010000 0.724000 0.000000 -0.677341 -0.130508 + 38 1.000000 1.000000 1.010000 0.743928 0.000000 -0.659243 -0.109408 + 39 1.000000 1.000000 1.010000 0.759784 0.000000 -0.645381 -0.078811 + 40 1.000000 1.000000 1.010000 0.769569 0.000000 -0.637259 -0.040794 + 41 1.000000 1.000000 1.010000 0.793405 0.000000 -0.608695 0.000285 + 42 1.000000 1.000000 1.010000 0.790849 0.000000 -0.610631 0.041083 + 43 1.000000 1.000000 1.010000 0.783309 0.000000 -0.616519 0.079570 + 44 1.000000 1.000000 1.010000 0.771064 0.000000 -0.626248 0.115209 + 45 1.000000 1.000000 1.010000 0.754568 0.000000 -0.640010 0.144965 + 46 1.000000 1.000000 1.010000 0.734932 0.000000 -0.657096 0.167629 + 47 1.000000 1.000000 1.010000 0.712931 0.000000 -0.677410 0.181231 + 48 1.000000 1.000000 1.010000 0.689903 0.000000 -0.700050 0.184290 + 49 1.000000 1.000000 1.010000 0.667202 0.000000 -0.723821 0.175855 + 50 1.000000 1.000000 1.010000 0.646375 0.000000 -0.747263 0.154267 + 51 1.000000 1.000000 1.010000 0.628846 0.000000 -0.768042 0.121099 + 52 1.000000 1.000000 1.010000 0.616393 0.000000 -0.783606 0.077600 + 53 1.000000 1.000000 1.010000 0.609769 0.000000 -0.792114 0.027147 + 54 1.000000 1.000000 1.010000 0.609688 0.000000 -0.792205 -0.026309 + 55 1.000000 1.000000 1.010000 0.616233 0.000000 -0.783815 -0.076755 + 56 1.000000 1.000000 1.010000 0.628893 0.000000 -0.768052 -0.120790 + 57 1.000000 1.000000 1.010000 0.646419 0.000000 -0.747280 -0.153997 + 58 1.000000 1.000000 1.010000 0.667109 0.000000 -0.724087 -0.175108 + 59 1.000000 1.000000 1.010000 0.689888 0.000000 -0.700081 -0.184229 + 60 1.000000 1.000000 1.010000 0.712880 0.000000 -0.677592 -0.180755 + 61 1.000000 1.000000 1.010000 0.735001 0.000000 -0.657128 -0.167203 + 62 1.000000 1.000000 1.010000 0.754605 0.000000 -0.640083 -0.144444 + 63 1.000000 1.000000 1.010000 0.771030 0.000000 -0.626382 -0.114709 + 64 1.000000 1.000000 1.010000 0.783337 0.000000 -0.616501 -0.079438 + 65 1.000000 1.000000 1.010000 0.790937 0.000000 -0.610572 -0.040255 + 66 1.000000 1.000000 1.010000 0.812989 0.000000 -0.582279 0.000294 + 67 1.000000 1.000000 1.010000 0.810916 0.000000 -0.583790 0.040059 + 68 1.000000 1.000000 1.010000 0.804763 0.000000 -0.588350 0.078746 + 69 1.000000 1.000000 1.010000 0.794938 0.000000 -0.595542 0.115775 + 70 1.000000 1.000000 1.010000 0.781524 0.000000 -0.605754 0.149275 + 71 1.000000 1.000000 1.010000 0.765029 0.000000 -0.618831 0.178265 + 72 1.000000 1.000000 1.010000 0.745587 0.000000 -0.634998 0.202183 + 73 1.000000 1.000000 1.010000 0.724289 0.000000 -0.653568 0.219668 + 74 1.000000 1.000000 1.010000 0.701386 0.000000 -0.674984 0.229027 + 75 1.000000 1.000000 1.010000 0.678258 0.000000 -0.698113 0.229357 + 76 1.000000 1.000000 1.010000 0.655269 0.000000 -0.722617 0.220108 + 77 1.000000 1.000000 1.010000 0.633833 0.000000 -0.747038 0.200473 + 78 1.000000 1.000000 1.010000 0.614944 0.000000 -0.769874 0.170698 + 79 1.000000 1.000000 1.010000 0.599770 0.000000 -0.789498 0.130265 + 80 1.000000 1.000000 1.010000 0.588926 0.000000 -0.804016 0.082001 + 81 1.000000 1.000000 1.010000 0.583339 0.000000 -0.811741 0.028145 + 82 1.000000 1.000000 1.010000 0.583443 0.000000 -0.811677 -0.027826 + 83 1.000000 1.000000 1.010000 0.588935 0.000000 -0.804092 -0.081189 + 84 1.000000 1.000000 1.010000 0.599736 0.000000 -0.789589 -0.129870 + 85 1.000000 1.000000 1.010000 0.615143 0.000000 -0.769874 -0.169979 + 86 1.000000 1.000000 1.010000 0.633837 0.000000 -0.747125 -0.200138 + 87 1.000000 1.000000 1.010000 0.655339 0.000000 -0.722601 -0.219950 + 88 1.000000 1.000000 1.010000 0.678208 0.000000 -0.698202 -0.229235 + 89 1.000000 1.000000 1.010000 0.701418 0.000000 -0.675127 -0.228509 + 90 1.000000 1.000000 1.010000 0.724236 0.000000 -0.653903 -0.218846 + 91 1.000000 1.000000 1.010000 0.745538 0.000000 -0.635172 -0.201816 + 92 1.000000 1.000000 1.010000 0.764855 0.000000 -0.619083 -0.178140 + 93 1.000000 1.000000 1.010000 0.781596 0.000000 -0.605745 -0.148932 + 94 1.000000 1.000000 1.010000 0.795082 0.000000 -0.595446 -0.115278 + 95 1.000000 1.000000 1.010000 0.804921 0.000000 -0.588144 -0.078673 + 96 1.000000 1.000000 1.010000 0.810822 0.000000 -0.583956 -0.039531 + 97 1.000000 1.000000 1.010000 0.831532 0.000000 -0.555476 0.000244 + 98 1.000000 1.000000 1.010000 0.829861 0.000000 -0.556604 0.039032 + 99 1.000000 1.000000 1.010000 0.824833 0.000000 -0.560044 0.077462 + 100 1.000000 1.000000 1.010000 0.816771 0.000000 -0.565538 0.114244 + 101 1.000000 1.000000 1.010000 0.805530 0.000000 -0.573377 0.149534 + 102 1.000000 1.000000 1.010000 0.791569 0.000000 -0.583503 0.181502 + 103 1.000000 1.000000 1.010000 0.774825 0.000000 -0.596148 0.210368 + 104 1.000000 1.000000 1.010000 0.755963 0.000000 -0.610988 0.234977 + 105 1.000000 1.000000 1.010000 0.735085 0.000000 -0.628328 0.254662 + 106 1.000000 1.000000 1.010000 0.712964 0.000000 -0.647890 0.268181 + 107 1.000000 1.000000 1.010000 0.689778 0.000000 -0.669733 0.275071 + 108 1.000000 1.000000 1.010000 0.666501 0.000000 -0.693104 0.274560 + 109 1.000000 1.000000 1.010000 0.643495 0.000000 -0.717916 0.265538 + 110 1.000000 1.000000 1.010000 0.621702 0.000000 -0.743038 0.247751 + 111 1.000000 1.000000 1.010000 0.601694 0.000000 -0.767825 0.220020 + 112 1.000000 1.000000 1.010000 0.584447 0.000000 -0.790345 0.183782 + 113 1.000000 1.000000 1.010000 0.570775 0.000000 -0.809347 0.138465 + 114 1.000000 1.000000 1.010000 0.561366 0.000000 -0.823040 0.086446 + 115 1.000000 1.000000 1.010000 0.556242 0.000000 -0.830497 0.029479 + 116 1.000000 1.000000 1.010000 0.556402 0.000000 -0.830406 -0.029026 + 117 1.000000 1.000000 1.010000 0.561240 0.000000 -0.823198 -0.085761 + 118 1.000000 1.000000 1.010000 0.570926 0.000000 -0.809385 -0.137618 + 119 1.000000 1.000000 1.010000 0.584422 0.000000 -0.790612 -0.182712 + 120 1.000000 1.000000 1.010000 0.601678 0.000000 -0.767891 -0.219835 + 121 1.000000 1.000000 1.010000 0.621515 0.000000 -0.743423 -0.247065 + 122 1.000000 1.000000 1.010000 0.643598 0.000000 -0.717918 -0.265283 + 123 1.000000 1.000000 1.010000 0.666323 0.000000 -0.693415 -0.274205 + 124 1.000000 1.000000 1.010000 0.689898 0.000000 -0.669705 -0.274839 + 125 1.000000 1.000000 1.010000 0.713017 0.000000 -0.647997 -0.267781 + 126 1.000000 1.000000 1.010000 0.735244 0.000000 -0.628342 -0.254172 + 127 1.000000 1.000000 1.010000 0.755866 0.000000 -0.611206 -0.234721 + 128 1.000000 1.000000 1.010000 0.774859 0.000000 -0.596240 -0.209979 + 129 1.000000 1.000000 1.010000 0.791495 0.000000 -0.583712 -0.181151 + 130 1.000000 1.000000 1.010000 0.805641 0.000000 -0.573343 -0.149069 + 131 1.000000 1.000000 1.010000 0.816754 0.000000 -0.565612 -0.113999 + 132 1.000000 1.000000 1.010000 0.825008 0.000000 -0.559856 -0.076968 + 133 1.000000 1.000000 1.010000 0.829828 0.000000 -0.556681 -0.038629 + 134 1.000000 1.000000 1.010000 0.849195 0.000000 -0.528080 0.000121 + 135 1.000000 1.000000 1.010000 0.847812 0.000000 -0.528925 0.038128 + 136 1.000000 1.000000 1.010000 0.843629 0.000000 -0.531544 0.075833 + 137 1.000000 1.000000 1.010000 0.836932 0.000000 -0.535642 0.112395 + 138 1.000000 1.000000 1.010000 0.827335 0.000000 -0.542005 0.147469 + 139 1.000000 1.000000 1.010000 0.815365 0.000000 -0.549850 0.181230 + 140 1.000000 1.000000 1.010000 0.800902 0.000000 -0.559911 0.212262 + 141 1.000000 1.000000 1.010000 0.784500 0.000000 -0.571535 0.240641 + 142 1.000000 1.000000 1.010000 0.765934 0.000000 -0.585495 0.265596 + 143 1.000000 1.000000 1.010000 0.745683 0.000000 -0.601299 0.287047 + 144 1.000000 1.000000 1.010000 0.724123 0.000000 -0.619199 0.303709 + 145 1.000000 1.000000 1.010000 0.701472 0.000000 -0.639311 0.314991 + 146 1.000000 1.000000 1.010000 0.678132 0.000000 -0.661237 0.320784 + 147 1.000000 1.000000 1.010000 0.654747 0.000000 -0.684902 0.319711 + 148 1.000000 1.000000 1.010000 0.631648 0.000000 -0.709838 0.311690 + 149 1.000000 1.000000 1.010000 0.609449 0.000000 -0.735704 0.295485 + 150 1.000000 1.000000 1.010000 0.588765 0.000000 -0.761689 0.270528 + 151 1.000000 1.000000 1.010000 0.570249 0.000000 -0.786485 0.237187 + 152 1.000000 1.000000 1.010000 0.554293 0.000000 -0.809029 0.195526 + 153 1.000000 1.000000 1.010000 0.542054 0.000000 -0.827565 0.145990 + 154 1.000000 1.000000 1.010000 0.533315 0.000000 -0.841078 0.090343 + 155 1.000000 1.000000 1.010000 0.528807 0.000000 -0.848170 0.031146 + 156 1.000000 1.000000 1.010000 0.528785 0.000000 -0.848211 -0.030411 + 157 1.000000 1.000000 1.010000 0.533201 0.000000 -0.841228 -0.089622 + 158 1.000000 1.000000 1.010000 0.541941 0.000000 -0.827675 -0.145785 + 159 1.000000 1.000000 1.010000 0.554305 0.000000 -0.809129 -0.195078 + 160 1.000000 1.000000 1.010000 0.570095 0.000000 -0.786763 -0.236634 + 161 1.000000 1.000000 1.010000 0.588840 0.000000 -0.761795 -0.270066 + 162 1.000000 1.000000 1.010000 0.609471 0.000000 -0.735877 -0.295009 + 163 1.000000 1.000000 1.010000 0.631631 0.000000 -0.710204 -0.310889 + 164 1.000000 1.000000 1.010000 0.654767 0.000000 -0.685014 -0.319432 + 165 1.000000 1.000000 1.010000 0.678143 0.000000 -0.661391 -0.320444 + 166 1.000000 1.000000 1.010000 0.701405 0.000000 -0.639509 -0.314736 + 167 1.000000 1.000000 1.010000 0.724227 0.000000 -0.619356 -0.303140 + 168 1.000000 1.000000 1.010000 0.745830 0.000000 -0.601374 -0.286508 + 169 1.000000 1.000000 1.010000 0.765942 0.000000 -0.585543 -0.265467 + 170 1.000000 1.000000 1.010000 0.784349 0.000000 -0.571828 -0.240437 + 171 1.000000 1.000000 1.010000 0.800953 0.000000 -0.559910 -0.212075 + 172 1.000000 1.000000 1.010000 0.815306 0.000000 -0.550055 -0.180876 + 173 1.000000 1.000000 1.010000 0.827422 0.000000 -0.541972 -0.147103 + 174 1.000000 1.000000 1.010000 0.836803 0.000000 -0.535901 -0.112120 + 175 1.000000 1.000000 1.010000 0.843607 0.000000 -0.531649 -0.075343 + 176 1.000000 1.000000 1.010000 0.847808 0.000000 -0.528954 -0.037812 + 177 1.000000 1.000000 1.010000 0.866114 0.000000 -0.499846 0.000341 + 178 1.000000 1.000000 1.010000 0.864887 0.000000 -0.500547 0.037726 + 179 1.000000 1.000000 1.010000 0.861098 0.000000 -0.502816 0.075404 + 180 1.000000 1.000000 1.010000 0.854964 0.000000 -0.506464 0.111937 + 181 1.000000 1.000000 1.010000 0.846504 0.000000 -0.511489 0.147683 + 182 1.000000 1.000000 1.010000 0.835703 0.000000 -0.518053 0.182270 + 183 1.000000 1.000000 1.010000 0.822758 0.000000 -0.526144 0.215039 + 184 1.000000 1.000000 1.010000 0.807588 0.000000 -0.536179 0.245589 + 185 1.000000 1.000000 1.010000 0.790696 0.000000 -0.547549 0.273845 + 186 1.000000 1.000000 1.010000 0.771796 0.000000 -0.560925 0.299489 + 187 1.000000 1.000000 1.010000 0.751532 0.000000 -0.576081 0.321450 + 188 1.000000 1.000000 1.010000 0.729950 0.000000 -0.593184 0.339566 + 189 1.000000 1.000000 1.010000 0.707291 0.000000 -0.612084 0.353685 + 190 1.000000 1.000000 1.010000 0.683671 0.000000 -0.633188 0.362859 + 191 1.000000 1.000000 1.010000 0.660005 0.000000 -0.656095 0.365969 + 192 1.000000 1.000000 1.010000 0.636078 0.000000 -0.680861 0.363089 + 193 1.000000 1.000000 1.010000 0.612548 0.000000 -0.706887 0.353689 + 194 1.000000 1.000000 1.010000 0.589937 0.000000 -0.733974 0.336536 + 195 1.000000 1.000000 1.010000 0.568668 0.000000 -0.761545 0.310911 + 196 1.000000 1.000000 1.010000 0.549412 0.000000 -0.788334 0.276904 + 197 1.000000 1.000000 1.010000 0.532688 0.000000 -0.813050 0.234932 + 198 1.000000 1.000000 1.010000 0.518885 0.000000 -0.834645 0.184734 + 199 1.000000 1.000000 1.010000 0.508798 0.000000 -0.851397 0.127466 + 200 1.000000 1.000000 1.010000 0.502416 0.000000 -0.862183 0.064950 + 201 1.000000 1.000000 1.010000 0.500195 0.000000 -0.865913 0.000459 + 202 1.000000 1.000000 1.010000 0.502334 0.000000 -0.862278 -0.064313 + 203 1.000000 1.000000 1.010000 0.508695 0.000000 -0.851583 -0.126635 + 204 1.000000 1.000000 1.010000 0.518845 0.000000 -0.834760 -0.184326 + 205 1.000000 1.000000 1.010000 0.532630 0.000000 -0.813250 -0.234371 + 206 1.000000 1.000000 1.010000 0.549483 0.000000 -0.788292 -0.276883 + 207 1.000000 1.000000 1.010000 0.568777 0.000000 -0.761637 -0.310486 + 208 1.000000 1.000000 1.010000 0.589946 0.000000 -0.734324 -0.335754 + 209 1.000000 1.000000 1.010000 0.612561 0.000000 -0.707112 -0.353216 + 210 1.000000 1.000000 1.010000 0.636025 0.000000 -0.681109 -0.362715 + 211 1.000000 1.000000 1.010000 0.659821 0.000000 -0.656496 -0.365579 + 212 1.000000 1.000000 1.010000 0.683718 0.000000 -0.633562 -0.362116 + 213 1.000000 1.000000 1.010000 0.707218 0.000000 -0.612455 -0.353188 + 214 1.000000 1.000000 1.010000 0.729864 0.000000 -0.593326 -0.339503 + 215 1.000000 1.000000 1.010000 0.751657 0.000000 -0.576192 -0.320959 + 216 1.000000 1.000000 1.010000 0.771841 0.000000 -0.561216 -0.298827 + 217 1.000000 1.000000 1.010000 0.790605 0.000000 -0.547732 -0.273740 + 218 1.000000 1.000000 1.010000 0.807594 0.000000 -0.536220 -0.245481 + 219 1.000000 1.000000 1.010000 0.822689 0.000000 -0.526487 -0.214464 + 220 1.000000 1.000000 1.010000 0.835715 0.000000 -0.518179 -0.181857 + 221 1.000000 1.000000 1.010000 0.846506 0.000000 -0.511594 -0.147305 + 222 1.000000 1.000000 1.010000 0.855055 0.000000 -0.506408 -0.111496 + 223 1.000000 1.000000 1.010000 0.861135 0.000000 -0.502807 -0.075044 + 224 1.000000 1.000000 1.010000 0.864785 0.000000 -0.500731 -0.037628 + 225 1.000000 1.000000 1.010000 0.881994 0.000000 -0.471260 0.000020 + 226 1.000000 1.000000 1.010000 0.880935 0.000000 -0.471749 0.037510 + 227 1.000000 1.000000 1.010000 0.877533 0.000000 -0.473674 0.074623 + 228 1.000000 1.000000 1.010000 0.872006 0.000000 -0.476721 0.111099 + 229 1.000000 1.000000 1.010000 0.864398 0.000000 -0.480922 0.146733 + 230 1.000000 1.000000 1.010000 0.854601 0.000000 -0.486413 0.181823 + 231 1.000000 1.000000 1.010000 0.842947 0.000000 -0.493054 0.215263 + 232 1.000000 1.000000 1.010000 0.829139 0.000000 -0.501431 0.247175 + 233 1.000000 1.000000 1.010000 0.813676 0.000000 -0.510905 0.277322 + 234 1.000000 1.000000 1.010000 0.796427 0.000000 -0.521842 0.305588 + 235 1.000000 1.000000 1.010000 0.777445 0.000000 -0.534688 0.331192 + 236 1.000000 1.000000 1.010000 0.757110 0.000000 -0.549036 0.354041 + 237 1.000000 1.000000 1.010000 0.735600 0.000000 -0.565136 0.373516 + 238 1.000000 1.000000 1.010000 0.712974 0.000000 -0.583161 0.389346 + 239 1.000000 1.000000 1.010000 0.689554 0.000000 -0.602977 0.401165 + 240 1.000000 1.000000 1.010000 0.665569 0.000000 -0.624534 0.408627 + 241 1.000000 1.000000 1.010000 0.641182 0.000000 -0.648456 0.410353 + 242 1.000000 1.000000 1.010000 0.616964 0.000000 -0.673849 0.406549 + 243 1.000000 1.000000 1.010000 0.593315 0.000000 -0.700950 0.395785 + 244 1.000000 1.000000 1.010000 0.570133 0.000000 -0.729085 0.378660 + 245 1.000000 1.000000 1.010000 0.548705 0.000000 -0.757931 0.352793 + 246 1.000000 1.000000 1.010000 0.528634 0.000000 -0.786554 0.319186 + 247 1.000000 1.000000 1.010000 0.510986 0.000000 -0.813779 0.276870 + 248 1.000000 1.000000 1.010000 0.496013 0.000000 -0.838333 0.226205 + 249 1.000000 1.000000 1.010000 0.484237 0.000000 -0.858666 0.167949 + 250 1.000000 1.000000 1.010000 0.476294 0.000000 -0.873203 0.103251 + 251 1.000000 1.000000 1.010000 0.472278 0.000000 -0.880745 0.035230 + 252 1.000000 1.000000 1.010000 0.472093 0.000000 -0.880886 -0.034182 + 253 1.000000 1.000000 1.010000 0.476146 0.000000 -0.873336 -0.102801 + 254 1.000000 1.000000 1.010000 0.484112 0.000000 -0.858912 -0.167051 + 255 1.000000 1.000000 1.010000 0.495968 0.000000 -0.838659 -0.225091 + 256 1.000000 1.000000 1.010000 0.510872 0.000000 -0.814156 -0.275972 + 257 1.000000 1.000000 1.010000 0.528602 0.000000 -0.786750 -0.318755 + 258 1.000000 1.000000 1.010000 0.548502 0.000000 -0.758131 -0.352681 + 259 1.000000 1.000000 1.010000 0.570212 0.000000 -0.729405 -0.377923 + 260 1.000000 1.000000 1.010000 0.593334 0.000000 -0.700886 -0.395871 + 261 1.000000 1.000000 1.010000 0.616901 0.000000 -0.674120 -0.406196 + 262 1.000000 1.000000 1.010000 0.641323 0.000000 -0.648546 -0.409993 + 263 1.000000 1.000000 1.010000 0.665649 0.000000 -0.624708 -0.408231 + 264 1.000000 1.000000 1.010000 0.689635 0.000000 -0.602956 -0.401057 + 265 1.000000 1.000000 1.010000 0.712927 0.000000 -0.583266 -0.389276 + 266 1.000000 1.000000 1.010000 0.735598 0.000000 -0.565383 -0.373146 + 267 1.000000 1.000000 1.010000 0.757193 0.000000 -0.549228 -0.353565 + 268 1.000000 1.000000 1.010000 0.777573 0.000000 -0.534718 -0.330843 + 269 1.000000 1.000000 1.010000 0.796319 0.000000 -0.522204 -0.305252 + 270 1.000000 1.000000 1.010000 0.813715 0.000000 -0.511074 -0.276898 + 271 1.000000 1.000000 1.010000 0.829185 0.000000 -0.501492 -0.246899 + 272 1.000000 1.000000 1.010000 0.842934 0.000000 -0.493306 -0.214735 + 273 1.000000 1.000000 1.010000 0.854679 0.000000 -0.486533 -0.181133 + 274 1.000000 1.000000 1.010000 0.864452 0.000000 -0.480905 -0.146469 + 275 1.000000 1.000000 1.010000 0.872044 0.000000 -0.476780 -0.110539 + 276 1.000000 1.000000 1.010000 0.877584 0.000000 -0.473657 -0.074133 + 277 1.000000 1.000000 1.010000 0.880919 0.000000 -0.471821 -0.036959 + 278 1.000000 1.000000 1.010000 0.896835 0.000000 -0.442365 0.000145 + 279 1.000000 1.000000 1.010000 0.895911 0.000000 -0.442743 0.036359 + 280 1.000000 1.000000 1.010000 0.893012 0.000000 -0.444172 0.072390 + 281 1.000000 1.000000 1.010000 0.888209 0.000000 -0.446613 0.107800 + 282 1.000000 1.000000 1.010000 0.881594 0.000000 -0.449915 0.142716 + 283 1.000000 1.000000 1.010000 0.873087 0.000000 -0.454309 0.176980 + 284 1.000000 1.000000 1.010000 0.862801 0.000000 -0.459654 0.210457 + 285 1.000000 1.000000 1.010000 0.850760 0.000000 -0.466234 0.242554 + 286 1.000000 1.000000 1.010000 0.836983 0.000000 -0.473868 0.273695 + 287 1.000000 1.000000 1.010000 0.821638 0.000000 -0.482707 0.303157 + 288 1.000000 1.000000 1.010000 0.804801 0.000000 -0.492796 0.330828 + 289 1.000000 1.000000 1.010000 0.786476 0.000000 -0.504212 0.356687 + 290 1.000000 1.000000 1.010000 0.766814 0.000000 -0.517291 0.380008 + 291 1.000000 1.000000 1.010000 0.745953 0.000000 -0.531660 0.401113 + 292 1.000000 1.000000 1.010000 0.724119 0.000000 -0.547754 0.419067 + 293 1.000000 1.000000 1.010000 0.701567 0.000000 -0.565546 0.433544 + 294 1.000000 1.000000 1.010000 0.677958 0.000000 -0.585011 0.445124 + 295 1.000000 1.000000 1.010000 0.654184 0.000000 -0.606438 0.451969 + 296 1.000000 1.000000 1.010000 0.629938 0.000000 -0.629687 0.454612 + 297 1.000000 1.000000 1.010000 0.606025 0.000000 -0.654657 0.451837 + 298 1.000000 1.000000 1.010000 0.582080 0.000000 -0.681399 0.443710 + 299 1.000000 1.000000 1.010000 0.558828 0.000000 -0.710094 0.428342 + 300 1.000000 1.000000 1.010000 0.536557 0.000000 -0.739395 0.406697 + 301 1.000000 1.000000 1.010000 0.515553 0.000000 -0.769346 0.377242 + 302 1.000000 1.000000 1.010000 0.496528 0.000000 -0.799058 0.339068 + 303 1.000000 1.000000 1.010000 0.479640 0.000000 -0.827217 0.292673 + 304 1.000000 1.000000 1.010000 0.465453 0.000000 -0.852358 0.238409 + 305 1.000000 1.000000 1.010000 0.454551 0.000000 -0.873003 0.176774 + 306 1.000000 1.000000 1.010000 0.446772 0.000000 -0.888018 0.108714 + 307 1.000000 1.000000 1.010000 0.442974 0.000000 -0.895779 0.036791 + 308 1.000000 1.000000 1.010000 0.443133 0.000000 -0.895727 -0.036151 + 309 1.000000 1.000000 1.010000 0.446881 0.000000 -0.888059 -0.107925 + 310 1.000000 1.000000 1.010000 0.454397 0.000000 -0.873262 -0.175888 + 311 1.000000 1.000000 1.010000 0.465500 0.000000 -0.852406 -0.238147 + 312 1.000000 1.000000 1.010000 0.479698 0.000000 -0.827402 -0.292053 + 313 1.000000 1.000000 1.010000 0.496678 0.000000 -0.799238 -0.338421 + 314 1.000000 1.000000 1.010000 0.515674 0.000000 -0.769658 -0.376441 + 315 1.000000 1.000000 1.010000 0.536614 0.000000 -0.739578 -0.406289 + 316 1.000000 1.000000 1.010000 0.558736 0.000000 -0.710205 -0.428279 + 317 1.000000 1.000000 1.010000 0.582002 0.000000 -0.681840 -0.443134 + 318 1.000000 1.000000 1.010000 0.605952 0.000000 -0.654894 -0.451594 + 319 1.000000 1.000000 1.010000 0.629896 0.000000 -0.630067 -0.454144 + 320 1.000000 1.000000 1.010000 0.654070 0.000000 -0.606641 -0.451861 + 321 1.000000 1.000000 1.010000 0.677992 0.000000 -0.585222 -0.444795 + 322 1.000000 1.000000 1.010000 0.701446 0.000000 -0.565629 -0.433632 + 323 1.000000 1.000000 1.010000 0.724272 0.000000 -0.547848 -0.418681 + 324 1.000000 1.000000 1.010000 0.746090 0.000000 -0.531770 -0.400713 + 325 1.000000 1.000000 1.010000 0.766745 0.000000 -0.517619 -0.379701 + 326 1.000000 1.000000 1.010000 0.786420 0.000000 -0.504523 -0.356371 + 327 1.000000 1.000000 1.010000 0.804743 0.000000 -0.493037 -0.330611 + 328 1.000000 1.000000 1.010000 0.821585 0.000000 -0.482944 -0.302924 + 329 1.000000 1.000000 1.010000 0.837000 0.000000 -0.474094 -0.273251 + 330 1.000000 1.000000 1.010000 0.850715 0.000000 -0.466339 -0.242512 + 331 1.000000 1.000000 1.010000 0.862776 0.000000 -0.459916 -0.209988 + 332 1.000000 1.000000 1.010000 0.873055 0.000000 -0.454432 -0.176824 + 333 1.000000 1.000000 1.010000 0.881578 0.000000 -0.449998 -0.142558 + 334 1.000000 1.000000 1.010000 0.888352 0.000000 -0.446448 -0.107305 + 335 1.000000 1.000000 1.010000 0.893049 0.000000 -0.444163 -0.071988 + 336 1.000000 1.000000 1.010000 0.895879 0.000000 -0.442844 -0.035912 + 337 1.000000 1.000000 1.010000 0.910835 0.000000 -0.412770 0.000264 + 338 1.000000 1.000000 1.010000 0.909961 0.000000 -0.413093 0.036405 + 339 1.000000 1.000000 1.010000 0.907272 0.000000 -0.414295 0.072234 + 340 1.000000 1.000000 1.010000 0.902800 0.000000 -0.416309 0.107881 + 341 1.000000 1.000000 1.010000 0.896615 0.000000 -0.419124 0.142887 + 342 1.000000 1.000000 1.010000 0.888595 0.000000 -0.423005 0.177383 + 343 1.000000 1.000000 1.010000 0.878802 0.000000 -0.427789 0.211433 + 344 1.000000 1.000000 1.010000 0.867533 0.000000 -0.433314 0.244181 + 345 1.000000 1.000000 1.010000 0.854474 0.000000 -0.439898 0.276340 + 346 1.000000 1.000000 1.010000 0.839956 0.000000 -0.447547 0.306880 + 347 1.000000 1.000000 1.010000 0.823992 0.000000 -0.456032 0.336263 + 348 1.000000 1.000000 1.010000 0.806614 0.000000 -0.465846 0.363816 + 349 1.000000 1.000000 1.010000 0.787735 0.000000 -0.477169 0.389594 + 350 1.000000 1.000000 1.010000 0.767829 0.000000 -0.489606 0.413188 + 351 1.000000 1.000000 1.010000 0.746528 0.000000 -0.503570 0.434872 + 352 1.000000 1.000000 1.010000 0.724471 0.000000 -0.518657 0.454022 + 353 1.000000 1.000000 1.010000 0.701432 0.000000 -0.535783 0.470032 + 354 1.000000 1.000000 1.010000 0.677650 0.000000 -0.554647 0.482864 + 355 1.000000 1.000000 1.010000 0.653390 0.000000 -0.575372 0.491964 + 356 1.000000 1.000000 1.010000 0.628705 0.000000 -0.597956 0.497171 + 357 1.000000 1.000000 1.010000 0.603785 0.000000 -0.622618 0.497785 + 358 1.000000 1.000000 1.010000 0.579005 0.000000 -0.649190 0.493261 + 359 1.000000 1.000000 1.010000 0.554945 0.000000 -0.677541 0.482675 + 360 1.000000 1.000000 1.010000 0.531017 0.000000 -0.708113 0.465400 + 361 1.000000 1.000000 1.010000 0.508342 0.000000 -0.739297 0.441620 + 362 1.000000 1.000000 1.010000 0.487285 0.000000 -0.771809 0.408490 + 363 1.000000 1.000000 1.010000 0.468048 0.000000 -0.803636 0.367559 + 364 1.000000 1.000000 1.010000 0.450734 0.000000 -0.834215 0.317686 + 365 1.000000 1.000000 1.010000 0.436244 0.000000 -0.861893 0.258518 + 366 1.000000 1.000000 1.010000 0.425029 0.000000 -0.884591 0.191961 + 367 1.000000 1.000000 1.010000 0.417406 0.000000 -0.901002 0.118182 + 368 1.000000 1.000000 1.010000 0.413470 0.000000 -0.909622 0.040388 + 369 1.000000 1.000000 1.010000 0.413431 0.000000 -0.909688 -0.039274 + 370 1.000000 1.000000 1.010000 0.417323 0.000000 -0.901177 -0.117140 + 371 1.000000 1.000000 1.010000 0.425012 0.000000 -0.884804 -0.191013 + 372 1.000000 1.000000 1.010000 0.436311 0.000000 -0.862110 -0.257679 + 373 1.000000 1.000000 1.010000 0.450660 0.000000 -0.834631 -0.316696 + 374 1.000000 1.000000 1.010000 0.467801 0.000000 -0.803987 -0.367106 + 375 1.000000 1.000000 1.010000 0.487204 0.000000 -0.772102 -0.408032 + 376 1.000000 1.000000 1.010000 0.508323 0.000000 -0.739811 -0.440781 + 377 1.000000 1.000000 1.010000 0.531059 0.000000 -0.708343 -0.465002 + 378 1.000000 1.000000 1.010000 0.554631 0.000000 -0.677950 -0.482460 + 379 1.000000 1.000000 1.010000 0.579015 0.000000 -0.649663 -0.492626 + 380 1.000000 1.000000 1.010000 0.603803 0.000000 -0.622734 -0.497618 + 381 1.000000 1.000000 1.010000 0.628557 0.000000 -0.598121 -0.497160 + 382 1.000000 1.000000 1.010000 0.653241 0.000000 -0.575745 -0.491725 + 383 1.000000 1.000000 1.010000 0.677650 0.000000 -0.555095 -0.482348 + 384 1.000000 1.000000 1.010000 0.701334 0.000000 -0.536410 -0.469462 + 385 1.000000 1.000000 1.010000 0.724504 0.000000 -0.519060 -0.453509 + 386 1.000000 1.000000 1.010000 0.746706 0.000000 -0.503708 -0.434406 + 387 1.000000 1.000000 1.010000 0.767798 0.000000 -0.489808 -0.413007 + 388 1.000000 1.000000 1.010000 0.787734 0.000000 -0.477428 -0.389278 + 389 1.000000 1.000000 1.010000 0.806583 0.000000 -0.466278 -0.363330 + 390 1.000000 1.000000 1.010000 0.823960 0.000000 -0.456476 -0.335738 + 391 1.000000 1.000000 1.010000 0.840101 0.000000 -0.447428 -0.306657 + 392 1.000000 1.000000 1.010000 0.854613 0.000000 -0.440009 -0.275732 + 393 1.000000 1.000000 1.010000 0.867602 0.000000 -0.433237 -0.244076 + 394 1.000000 1.000000 1.010000 0.878867 0.000000 -0.427819 -0.211103 + 395 1.000000 1.000000 1.010000 0.888575 0.000000 -0.423107 -0.177241 + 396 1.000000 1.000000 1.010000 0.896546 0.000000 -0.419395 -0.142524 + 397 1.000000 1.000000 1.010000 0.902784 0.000000 -0.416516 -0.107218 + 398 1.000000 1.000000 1.010000 0.907264 0.000000 -0.414398 -0.071737 + 399 1.000000 1.000000 1.010000 0.909904 0.000000 -0.413271 -0.035799 + 400 1.000000 1.000000 1.010000 0.923864 0.000000 -0.382721 0.000336 + 401 1.000000 1.000000 1.010000 0.923012 0.000000 -0.383125 0.035567 + 402 1.000000 1.000000 1.010000 0.920533 0.000000 -0.384207 0.070742 + 403 1.000000 1.000000 1.010000 0.916544 0.000000 -0.385729 0.105640 + 404 1.000000 1.000000 1.010000 0.910887 0.000000 -0.388038 0.140394 + 405 1.000000 1.000000 1.010000 0.903631 0.000000 -0.391182 0.174438 + 406 1.000000 1.000000 1.010000 0.894805 0.000000 -0.395018 0.208048 + 407 1.000000 1.000000 1.010000 0.884433 0.000000 -0.399664 0.240930 + 408 1.000000 1.000000 1.010000 0.872480 0.000000 -0.405207 0.273107 + 409 1.000000 1.000000 1.010000 0.859164 0.000000 -0.411428 0.304244 + 410 1.000000 1.000000 1.010000 0.844386 0.000000 -0.418705 0.334212 + 411 1.000000 1.000000 1.010000 0.828383 0.000000 -0.426799 0.362800 + 412 1.000000 1.000000 1.010000 0.811001 0.000000 -0.435943 0.390167 + 413 1.000000 1.000000 1.010000 0.792334 0.000000 -0.446140 0.416131 + 414 1.000000 1.000000 1.010000 0.772626 0.000000 -0.457665 0.439991 + 415 1.000000 1.000000 1.010000 0.751773 0.000000 -0.470424 0.462102 + 416 1.000000 1.000000 1.010000 0.730013 0.000000 -0.484379 0.482139 + 417 1.000000 1.000000 1.010000 0.707232 0.000000 -0.499862 0.499961 + 418 1.000000 1.000000 1.010000 0.683738 0.000000 -0.517258 0.514729 + 419 1.000000 1.000000 1.010000 0.659616 0.000000 -0.535979 0.526910 + 420 1.000000 1.000000 1.010000 0.635192 0.000000 -0.556768 0.535294 + 421 1.000000 1.000000 1.010000 0.610387 0.000000 -0.579236 0.540290 + 422 1.000000 1.000000 1.010000 0.585341 0.000000 -0.604133 0.540739 + 423 1.000000 1.000000 1.010000 0.560384 0.000000 -0.630965 0.536520 + 424 1.000000 1.000000 1.010000 0.535757 0.000000 -0.659930 0.526741 + 425 1.000000 1.000000 1.010000 0.511787 0.000000 -0.690786 0.510773 + 426 1.000000 1.000000 1.010000 0.488725 0.000000 -0.723455 0.487608 + 427 1.000000 1.000000 1.010000 0.467023 0.000000 -0.757199 0.456661 + 428 1.000000 1.000000 1.010000 0.446841 0.000000 -0.791536 0.416898 + 429 1.000000 1.000000 1.010000 0.428662 0.000000 -0.825205 0.367812 + 430 1.000000 1.000000 1.010000 0.412927 0.000000 -0.856499 0.309678 + 431 1.000000 1.000000 1.010000 0.400100 0.000000 -0.883926 0.242063 + 432 1.000000 1.000000 1.010000 0.390813 0.000000 -0.905182 0.167066 + 433 1.000000 1.000000 1.010000 0.384876 0.000000 -0.919044 0.085027 + 434 1.000000 1.000000 1.010000 0.382966 0.000000 -0.923762 0.000138 + 435 1.000000 1.000000 1.010000 0.384708 0.000000 -0.919163 -0.084491 + 436 1.000000 1.000000 1.010000 0.390750 0.000000 -0.905473 -0.165628 + 437 1.000000 1.000000 1.010000 0.400036 0.000000 -0.884168 -0.241284 + 438 1.000000 1.000000 1.010000 0.412933 0.000000 -0.856828 -0.308759 + 439 1.000000 1.000000 1.010000 0.428641 0.000000 -0.825282 -0.367664 + 440 1.000000 1.000000 1.010000 0.446539 0.000000 -0.791879 -0.416571 + 441 1.000000 1.000000 1.010000 0.466781 0.000000 -0.757804 -0.455903 + 442 1.000000 1.000000 1.010000 0.488741 0.000000 -0.723855 -0.486997 + 443 1.000000 1.000000 1.010000 0.511898 0.000000 -0.691264 -0.510013 + 444 1.000000 1.000000 1.010000 0.535893 0.000000 -0.660096 -0.526395 + 445 1.000000 1.000000 1.010000 0.560377 0.000000 -0.631190 -0.536262 + 446 1.000000 1.000000 1.010000 0.585370 0.000000 -0.604341 -0.540476 + 447 1.000000 1.000000 1.010000 0.610325 0.000000 -0.579789 -0.539767 + 448 1.000000 1.000000 1.010000 0.635018 0.000000 -0.557260 -0.534989 + 449 1.000000 1.000000 1.010000 0.659703 0.000000 -0.536189 -0.526586 + 450 1.000000 1.000000 1.010000 0.683754 0.000000 -0.517323 -0.514644 + 451 1.000000 1.000000 1.010000 0.707323 0.000000 -0.500059 -0.499635 + 452 1.000000 1.000000 1.010000 0.729810 0.000000 -0.484544 -0.482281 + 453 1.000000 1.000000 1.010000 0.751744 0.000000 -0.470410 -0.462163 + 454 1.000000 1.000000 1.010000 0.772594 0.000000 -0.457950 -0.439750 + 455 1.000000 1.000000 1.010000 0.792374 0.000000 -0.446393 -0.415784 + 456 1.000000 1.000000 1.010000 0.811067 0.000000 -0.436099 -0.389856 + 457 1.000000 1.000000 1.010000 0.828367 0.000000 -0.427112 -0.362468 + 458 1.000000 1.000000 1.010000 0.844531 0.000000 -0.418686 -0.333870 + 459 1.000000 1.000000 1.010000 0.859286 0.000000 -0.411537 -0.303751 + 460 1.000000 1.000000 1.010000 0.872511 0.000000 -0.405254 -0.272935 + 461 1.000000 1.000000 1.010000 0.884436 0.000000 -0.399827 -0.240646 + 462 1.000000 1.000000 1.010000 0.894866 0.000000 -0.395075 -0.207680 + 463 1.000000 1.000000 1.010000 0.903621 0.000000 -0.391368 -0.174073 + 464 1.000000 1.000000 1.010000 0.910832 0.000000 -0.388265 -0.140124 + 465 1.000000 1.000000 1.010000 0.916558 0.000000 -0.385771 -0.105372 + 466 1.000000 1.000000 1.010000 0.920666 0.000000 -0.383957 -0.070357 + 467 1.000000 1.000000 1.010000 0.923050 0.000000 -0.383072 -0.035141 + 468 1.000000 1.000000 1.010000 0.935892 0.000000 -0.352286 0.000306 + 469 1.000000 1.000000 1.010000 0.935119 0.000000 -0.352574 0.035267 + 470 1.000000 1.000000 1.010000 0.932844 0.000000 -0.353374 0.070205 + 471 1.000000 1.000000 1.010000 0.929022 0.000000 -0.354850 0.104885 + 472 1.000000 1.000000 1.010000 0.923699 0.000000 -0.356849 0.139425 + 473 1.000000 1.000000 1.010000 0.916840 0.000000 -0.359721 0.173220 + 474 1.000000 1.000000 1.010000 0.908591 0.000000 -0.362789 0.206995 + 475 1.000000 1.000000 1.010000 0.898813 0.000000 -0.366844 0.239918 + 476 1.000000 1.000000 1.010000 0.887717 0.000000 -0.371256 0.272265 + 477 1.000000 1.000000 1.010000 0.875156 0.000000 -0.376548 0.303831 + 478 1.000000 1.000000 1.010000 0.861249 0.000000 -0.382701 0.334350 + 479 1.000000 1.000000 1.010000 0.845975 0.000000 -0.389569 0.364092 + 480 1.000000 1.000000 1.010000 0.829497 0.000000 -0.397459 0.392378 + 481 1.000000 1.000000 1.010000 0.811771 0.000000 -0.405993 0.419759 + 482 1.000000 1.000000 1.010000 0.792931 0.000000 -0.415842 0.445349 + 483 1.000000 1.000000 1.010000 0.772954 0.000000 -0.426663 0.469576 + 484 1.000000 1.000000 1.010000 0.752020 0.000000 -0.438331 0.492272 + 485 1.000000 1.000000 1.010000 0.729943 0.000000 -0.451855 0.512845 + 486 1.000000 1.000000 1.010000 0.707274 0.000000 -0.466290 0.531354 + 487 1.000000 1.000000 1.010000 0.683616 0.000000 -0.482474 0.547620 + 488 1.000000 1.000000 1.010000 0.659383 0.000000 -0.500166 0.561292 + 489 1.000000 1.000000 1.010000 0.634769 0.000000 -0.519361 0.572130 + 490 1.000000 1.000000 1.010000 0.609630 0.000000 -0.540869 0.579493 + 491 1.000000 1.000000 1.010000 0.584273 0.000000 -0.564310 0.583249 + 492 1.000000 1.000000 1.010000 0.558890 0.000000 -0.590027 0.582675 + 493 1.000000 1.000000 1.010000 0.533595 0.000000 -0.618053 0.577310 + 494 1.000000 1.000000 1.010000 0.508459 0.000000 -0.648450 0.566553 + 495 1.000000 1.000000 1.010000 0.484220 0.000000 -0.681020 0.549311 + 496 1.000000 1.000000 1.010000 0.460769 0.000000 -0.715694 0.524857 + 497 1.000000 1.000000 1.010000 0.438590 0.000000 -0.752062 0.491977 + 498 1.000000 1.000000 1.010000 0.418049 0.000000 -0.789253 0.449795 + 499 1.000000 1.000000 1.010000 0.399286 0.000000 -0.825695 0.398496 + 500 1.000000 1.000000 1.010000 0.383417 0.000000 -0.860488 0.335488 + 501 1.000000 1.000000 1.010000 0.370287 0.000000 -0.890925 0.262947 + 502 1.000000 1.000000 1.010000 0.360464 0.000000 -0.914936 0.181542 + 503 1.000000 1.000000 1.010000 0.354615 0.000000 -0.930377 0.092987 + 504 1.000000 1.000000 1.010000 0.352413 0.000000 -0.935844 0.000582 + 505 1.000000 1.000000 1.010000 0.354368 0.000000 -0.930535 -0.092351 + 506 1.000000 1.000000 1.010000 0.360409 0.000000 -0.915070 -0.180976 + 507 1.000000 1.000000 1.010000 0.370377 0.000000 -0.891033 -0.262454 + 508 1.000000 1.000000 1.010000 0.383253 0.000000 -0.860784 -0.334915 + 509 1.000000 1.000000 1.010000 0.399306 0.000000 -0.826145 -0.397541 + 510 1.000000 1.000000 1.010000 0.417750 0.000000 -0.789597 -0.449469 + 511 1.000000 1.000000 1.010000 0.438317 0.000000 -0.752590 -0.491412 + 512 1.000000 1.000000 1.010000 0.460605 0.000000 -0.716076 -0.524479 + 513 1.000000 1.000000 1.010000 0.484060 0.000000 -0.681216 -0.549209 + 514 1.000000 1.000000 1.010000 0.508452 0.000000 -0.648779 -0.566182 + 515 1.000000 1.000000 1.010000 0.533365 0.000000 -0.618463 -0.577083 + 516 1.000000 1.000000 1.010000 0.558863 0.000000 -0.590249 -0.582476 + 517 1.000000 1.000000 1.010000 0.584097 0.000000 -0.564611 -0.583134 + 518 1.000000 1.000000 1.010000 0.609511 0.000000 -0.541256 -0.579257 + 519 1.000000 1.000000 1.010000 0.634600 0.000000 -0.519893 -0.571834 + 520 1.000000 1.000000 1.010000 0.659347 0.000000 -0.500232 -0.561275 + 521 1.000000 1.000000 1.010000 0.683641 0.000000 -0.482438 -0.547620 + 522 1.000000 1.000000 1.010000 0.707212 0.000000 -0.466307 -0.531421 + 523 1.000000 1.000000 1.010000 0.729987 0.000000 -0.451732 -0.512891 + 524 1.000000 1.000000 1.010000 0.751999 0.000000 -0.438611 -0.492054 + 525 1.000000 1.000000 1.010000 0.772990 0.000000 -0.426746 -0.469440 + 526 1.000000 1.000000 1.010000 0.792985 0.000000 -0.415977 -0.445127 + 527 1.000000 1.000000 1.010000 0.811889 0.000000 -0.406013 -0.419511 + 528 1.000000 1.000000 1.010000 0.829616 0.000000 -0.397571 -0.392014 + 529 1.000000 1.000000 1.010000 0.845966 0.000000 -0.389961 -0.363693 + 530 1.000000 1.000000 1.010000 0.861199 0.000000 -0.383030 -0.334103 + 531 1.000000 1.000000 1.010000 0.875222 0.000000 -0.376826 -0.303296 + 532 1.000000 1.000000 1.010000 0.887632 0.000000 -0.371573 -0.272108 + 533 1.000000 1.000000 1.010000 0.898861 0.000000 -0.366935 -0.239599 + 534 1.000000 1.000000 1.010000 0.908655 0.000000 -0.362840 -0.206625 + 535 1.000000 1.000000 1.010000 0.916938 0.000000 -0.359604 -0.172943 + 536 1.000000 1.000000 1.010000 0.923737 0.000000 -0.356872 -0.139110 + 537 1.000000 1.000000 1.010000 0.929086 0.000000 -0.354801 -0.104473 + 538 1.000000 1.000000 1.010000 0.932897 0.000000 -0.353290 -0.069929 + 539 1.000000 1.000000 1.010000 0.935175 0.000000 -0.352470 -0.034819 + 540 1.000000 1.000000 1.010000 0.946938 0.000000 -0.321416 0.000251 + 541 1.000000 1.000000 1.010000 0.946231 0.000000 -0.321615 0.034783 + 542 1.000000 1.000000 1.010000 0.944055 0.000000 -0.322412 0.069364 + 543 1.000000 1.000000 1.010000 0.940499 0.000000 -0.323630 0.103562 + 544 1.000000 1.000000 1.010000 0.935448 0.000000 -0.325478 0.137843 + 545 1.000000 1.000000 1.010000 0.929055 0.000000 -0.327744 0.171583 + 546 1.000000 1.000000 1.010000 0.921350 0.000000 -0.330402 0.204815 + 547 1.000000 1.000000 1.010000 0.912158 0.000000 -0.333727 0.237897 + 548 1.000000 1.000000 1.010000 0.901654 0.000000 -0.337703 0.270142 + 549 1.000000 1.000000 1.010000 0.889861 0.000000 -0.342166 0.301777 + 550 1.000000 1.000000 1.010000 0.876687 0.000000 -0.347289 0.332882 + 551 1.000000 1.000000 1.010000 0.862399 0.000000 -0.352897 0.362948 + 552 1.000000 1.000000 1.010000 0.846728 0.000000 -0.359596 0.392099 + 553 1.000000 1.000000 1.010000 0.830026 0.000000 -0.366710 0.420215 + 554 1.000000 1.000000 1.010000 0.812064 0.000000 -0.374767 0.447326 + 555 1.000000 1.000000 1.010000 0.793003 0.000000 -0.383787 0.473132 + 556 1.000000 1.000000 1.010000 0.772876 0.000000 -0.394000 0.497420 + 557 1.000000 1.000000 1.010000 0.751911 0.000000 -0.404747 0.520393 + 558 1.000000 1.000000 1.010000 0.729983 0.000000 -0.416981 0.541527 + 559 1.000000 1.000000 1.010000 0.707170 0.000000 -0.430382 0.560965 + 560 1.000000 1.000000 1.010000 0.683617 0.000000 -0.445240 0.578298 + 561 1.000000 1.000000 1.010000 0.659545 0.000000 -0.461540 0.593280 + 562 1.000000 1.000000 1.010000 0.634650 0.000000 -0.479700 0.605893 + 563 1.000000 1.000000 1.010000 0.609538 0.000000 -0.499305 0.615758 + 564 1.000000 1.000000 1.010000 0.583772 0.000000 -0.521455 0.622331 + 565 1.000000 1.000000 1.010000 0.558085 0.000000 -0.545575 0.625211 + 566 1.000000 1.000000 1.010000 0.532176 0.000000 -0.572070 0.624119 + 567 1.000000 1.000000 1.010000 0.506657 0.000000 -0.600930 0.618209 + 568 1.000000 1.000000 1.010000 0.481338 0.000000 -0.632823 0.606505 + 569 1.000000 1.000000 1.010000 0.456402 0.000000 -0.666884 0.589035 + 570 1.000000 1.000000 1.010000 0.432660 0.000000 -0.703706 0.563563 + 571 1.000000 1.000000 1.010000 0.410171 0.000000 -0.742682 0.529324 + 572 1.000000 1.000000 1.010000 0.389126 0.000000 -0.783026 0.485233 + 573 1.000000 1.000000 1.010000 0.369954 0.000000 -0.822810 0.431414 + 574 1.000000 1.000000 1.010000 0.353693 0.000000 -0.861343 0.364676 + 575 1.000000 1.000000 1.010000 0.340021 0.000000 -0.895600 0.286855 + 576 1.000000 1.000000 1.010000 0.330136 0.000000 -0.922923 0.198052 + 577 1.000000 1.000000 1.010000 0.323910 0.000000 -0.940638 0.101401 + 578 1.000000 1.000000 1.010000 0.321561 0.000000 -0.946889 0.000499 + 579 1.000000 1.000000 1.010000 0.323857 0.000000 -0.940707 -0.100934 + 580 1.000000 1.000000 1.010000 0.330147 0.000000 -0.922984 -0.197747 + 581 1.000000 1.000000 1.010000 0.339892 0.000000 -0.895791 -0.286412 + 582 1.000000 1.000000 1.010000 0.353469 0.000000 -0.861589 -0.364313 + 583 1.000000 1.000000 1.010000 0.369955 0.000000 -0.823232 -0.430606 + 584 1.000000 1.000000 1.010000 0.388751 0.000000 -0.783226 -0.485210 + 585 1.000000 1.000000 1.010000 0.409730 0.000000 -0.743142 -0.529019 + 586 1.000000 1.000000 1.010000 0.432511 0.000000 -0.704436 -0.562764 + 587 1.000000 1.000000 1.010000 0.456372 0.000000 -0.667495 -0.588367 + 588 1.000000 1.000000 1.010000 0.481196 0.000000 -0.633269 -0.606153 + 589 1.000000 1.000000 1.010000 0.506445 0.000000 -0.601456 -0.617871 + 590 1.000000 1.000000 1.010000 0.532080 0.000000 -0.572575 -0.623737 + 591 1.000000 1.000000 1.010000 0.558036 0.000000 -0.545904 -0.624968 + 592 1.000000 1.000000 1.010000 0.583658 0.000000 -0.522039 -0.621948 + 593 1.000000 1.000000 1.010000 0.609295 0.000000 -0.499674 -0.615699 + 594 1.000000 1.000000 1.010000 0.634545 0.000000 -0.479971 -0.605790 + 595 1.000000 1.000000 1.010000 0.659495 0.000000 -0.461730 -0.593187 + 596 1.000000 1.000000 1.010000 0.683671 0.000000 -0.445364 -0.578139 + 597 1.000000 1.000000 1.010000 0.707151 0.000000 -0.430610 -0.560814 + 598 1.000000 1.000000 1.010000 0.730016 0.000000 -0.417010 -0.541460 + 599 1.000000 1.000000 1.010000 0.751894 0.000000 -0.405046 -0.520185 + 600 1.000000 1.000000 1.010000 0.772933 0.000000 -0.394112 -0.497243 + 601 1.000000 1.000000 1.010000 0.793152 0.000000 -0.383788 -0.472882 + 602 1.000000 1.000000 1.010000 0.812105 0.000000 -0.375030 -0.447032 + 603 1.000000 1.000000 1.010000 0.830127 0.000000 -0.366700 -0.420023 + 604 1.000000 1.000000 1.010000 0.846879 0.000000 -0.359498 -0.391864 + 605 1.000000 1.000000 1.010000 0.862418 0.000000 -0.353097 -0.362708 + 606 1.000000 1.000000 1.010000 0.876860 0.000000 -0.347273 -0.332442 + 607 1.000000 1.000000 1.010000 0.890019 0.000000 -0.341991 -0.301512 + 608 1.000000 1.000000 1.010000 0.901817 0.000000 -0.337529 -0.269815 + 609 1.000000 1.000000 1.010000 0.912174 0.000000 -0.333801 -0.237730 + 610 1.000000 1.000000 1.010000 0.921447 0.000000 -0.330296 -0.204550 + 611 1.000000 1.000000 1.010000 0.929173 0.000000 -0.327512 -0.171387 + 612 1.000000 1.000000 1.010000 0.935569 0.000000 -0.325313 -0.137409 + 613 1.000000 1.000000 1.010000 0.940523 0.000000 -0.323650 -0.103285 + 614 1.000000 1.000000 1.010000 0.944045 0.000000 -0.322544 -0.068876 + 615 1.000000 1.000000 1.010000 0.946225 0.000000 -0.321668 -0.034462 + 616 1.000000 1.000000 1.010000 0.956887 0.000000 -0.290461 0.000254 + 617 1.000000 1.000000 1.010000 0.956252 0.000000 -0.290513 0.034403 + 618 1.000000 1.000000 1.010000 0.954311 0.000000 -0.290943 0.068134 + 619 1.000000 1.000000 1.010000 0.950950 0.000000 -0.292019 0.102072 + 620 1.000000 1.000000 1.010000 0.946261 0.000000 -0.293427 0.135980 + 621 1.000000 1.000000 1.010000 0.940268 0.000000 -0.295383 0.169249 + 622 1.000000 1.000000 1.010000 0.932938 0.000000 -0.297813 0.202320 + 623 1.000000 1.000000 1.010000 0.924334 0.000000 -0.300446 0.235242 + 624 1.000000 1.000000 1.010000 0.914517 0.000000 -0.303656 0.267305 + 625 1.000000 1.000000 1.010000 0.903303 0.000000 -0.307566 0.299075 + 626 1.000000 1.000000 1.010000 0.891093 0.000000 -0.311704 0.329838 + 627 1.000000 1.000000 1.010000 0.877560 0.000000 -0.316539 0.360128 + 628 1.000000 1.000000 1.010000 0.862839 0.000000 -0.321853 0.389768 + 629 1.000000 1.000000 1.010000 0.846982 0.000000 -0.327914 0.418442 + 630 1.000000 1.000000 1.010000 0.830003 0.000000 -0.334751 0.446136 + 631 1.000000 1.000000 1.010000 0.811907 0.000000 -0.342164 0.473002 + 632 1.000000 1.000000 1.010000 0.792842 0.000000 -0.350355 0.498652 + 633 1.000000 1.000000 1.010000 0.772854 0.000000 -0.359508 0.522925 + 634 1.000000 1.000000 1.010000 0.751787 0.000000 -0.369357 0.546252 + 635 1.000000 1.000000 1.010000 0.729800 0.000000 -0.380877 0.567737 + 636 1.000000 1.000000 1.010000 0.707135 0.000000 -0.392890 0.587875 + 637 1.000000 1.000000 1.010000 0.683877 0.000000 -0.406060 0.606158 + 638 1.000000 1.000000 1.010000 0.659659 0.000000 -0.421005 0.622579 + 639 1.000000 1.000000 1.010000 0.635024 0.000000 -0.437623 0.636577 + 640 1.000000 1.000000 1.010000 0.609627 0.000000 -0.455657 0.648639 + 641 1.000000 1.000000 1.010000 0.584016 0.000000 -0.475730 0.657728 + 642 1.000000 1.000000 1.010000 0.558152 0.000000 -0.497614 0.663963 + 643 1.000000 1.000000 1.010000 0.531821 0.000000 -0.522255 0.666646 + 644 1.000000 1.000000 1.010000 0.505854 0.000000 -0.549487 0.664963 + 645 1.000000 1.000000 1.010000 0.479868 0.000000 -0.579096 0.659070 + 646 1.000000 1.000000 1.010000 0.454074 0.000000 -0.612073 0.647444 + 647 1.000000 1.000000 1.010000 0.428992 0.000000 -0.647738 0.629604 + 648 1.000000 1.000000 1.010000 0.404746 0.000000 -0.686869 0.603648 + 649 1.000000 1.000000 1.010000 0.381691 0.000000 -0.728062 0.569419 + 650 1.000000 1.000000 1.010000 0.360034 0.000000 -0.771610 0.524399 + 651 1.000000 1.000000 1.010000 0.340567 0.000000 -0.815936 0.467186 + 652 1.000000 1.000000 1.010000 0.323657 0.000000 -0.858650 0.397449 + 653 1.000000 1.000000 1.010000 0.309622 0.000000 -0.897629 0.313683 + 654 1.000000 1.000000 1.010000 0.299221 0.000000 -0.928998 0.217784 + 655 1.000000 1.000000 1.010000 0.292769 0.000000 -0.949575 0.112218 + 656 1.000000 1.000000 1.010000 0.290419 0.000000 -0.956899 0.000985 + 657 1.000000 1.000000 1.010000 0.292853 0.000000 -0.949694 -0.110989 + 658 1.000000 1.000000 1.010000 0.299216 0.000000 -0.929348 -0.216291 + 659 1.000000 1.000000 1.010000 0.309540 0.000000 -0.898036 -0.312597 + 660 1.000000 1.000000 1.010000 0.323643 0.000000 -0.858978 -0.396752 + 661 1.000000 1.000000 1.010000 0.340454 0.000000 -0.816317 -0.466603 + 662 1.000000 1.000000 1.010000 0.360009 0.000000 -0.771970 -0.523885 + 663 1.000000 1.000000 1.010000 0.381633 0.000000 -0.728688 -0.568656 + 664 1.000000 1.000000 1.010000 0.404796 0.000000 -0.687108 -0.603343 + 665 1.000000 1.000000 1.010000 0.428878 0.000000 -0.648350 -0.629052 + 666 1.000000 1.000000 1.010000 0.453976 0.000000 -0.612603 -0.647011 + 667 1.000000 1.000000 1.010000 0.479713 0.000000 -0.579437 -0.658884 + 668 1.000000 1.000000 1.010000 0.505774 0.000000 -0.549582 -0.664945 + 669 1.000000 1.000000 1.010000 0.531884 0.000000 -0.522404 -0.666479 + 670 1.000000 1.000000 1.010000 0.557941 0.000000 -0.498155 -0.663734 + 671 1.000000 1.000000 1.010000 0.584097 0.000000 -0.476052 -0.657423 + 672 1.000000 1.000000 1.010000 0.609560 0.000000 -0.455995 -0.648463 + 673 1.000000 1.000000 1.010000 0.634792 0.000000 -0.437786 -0.636696 + 674 1.000000 1.000000 1.010000 0.659549 0.000000 -0.421277 -0.622511 + 675 1.000000 1.000000 1.010000 0.683693 0.000000 -0.406505 -0.606067 + 676 1.000000 1.000000 1.010000 0.707253 0.000000 -0.393179 -0.587540 + 677 1.000000 1.000000 1.010000 0.729947 0.000000 -0.380792 -0.567605 + 678 1.000000 1.000000 1.010000 0.751712 0.000000 -0.369863 -0.546013 + 679 1.000000 1.000000 1.010000 0.772888 0.000000 -0.359447 -0.522916 + 680 1.000000 1.000000 1.010000 0.792895 0.000000 -0.350624 -0.498378 + 681 1.000000 1.000000 1.010000 0.811999 0.000000 -0.342420 -0.472658 + 682 1.000000 1.000000 1.010000 0.829905 0.000000 -0.334913 -0.446196 + 683 1.000000 1.000000 1.010000 0.847066 0.000000 -0.328112 -0.418116 + 684 1.000000 1.000000 1.010000 0.862916 0.000000 -0.322037 -0.389447 + 685 1.000000 1.000000 1.010000 0.877588 0.000000 -0.316675 -0.359939 + 686 1.000000 1.000000 1.010000 0.891152 0.000000 -0.311944 -0.329451 + 687 1.000000 1.000000 1.010000 0.903494 0.000000 -0.307554 -0.298512 + 688 1.000000 1.000000 1.010000 0.914562 0.000000 -0.303853 -0.266926 + 689 1.000000 1.000000 1.010000 0.924342 0.000000 -0.300745 -0.234828 + 690 1.000000 1.000000 1.010000 0.932956 0.000000 -0.297835 -0.202207 + 691 1.000000 1.000000 1.010000 0.940221 0.000000 -0.295631 -0.169075 + 692 1.000000 1.000000 1.010000 0.946213 0.000000 -0.293750 -0.135618 + 693 1.000000 1.000000 1.010000 0.950957 0.000000 -0.292101 -0.101774 + 694 1.000000 1.000000 1.010000 0.954280 0.000000 -0.291124 -0.067796 + 695 1.000000 1.000000 1.010000 0.956240 0.000000 -0.290598 -0.034026 + 696 1.000000 1.000000 1.010000 0.965926 0.000000 -0.258817 0.000261 + 697 1.000000 1.000000 1.010000 0.965281 0.000000 -0.258963 0.034219 + 698 1.000000 1.000000 1.010000 0.963315 0.000000 -0.259637 0.067912 + 699 1.000000 1.000000 1.010000 0.960141 0.000000 -0.260402 0.101590 + 700 1.000000 1.000000 1.010000 0.955644 0.000000 -0.261615 0.135289 + 701 1.000000 1.000000 1.010000 0.949910 0.000000 -0.263192 0.168525 + 702 1.000000 1.000000 1.010000 0.942937 0.000000 -0.265166 0.201386 + 703 1.000000 1.000000 1.010000 0.934607 0.000000 -0.267575 0.234336 + 704 1.000000 1.000000 1.010000 0.925185 0.000000 -0.270185 0.266521 + 705 1.000000 1.000000 1.010000 0.914514 0.000000 -0.273365 0.298222 + 706 1.000000 1.000000 1.010000 0.902545 0.000000 -0.277105 0.329582 + 707 1.000000 1.000000 1.010000 0.889645 0.000000 -0.281038 0.359930 + 708 1.000000 1.000000 1.010000 0.875396 0.000000 -0.285735 0.389920 + 709 1.000000 1.000000 1.010000 0.860094 0.000000 -0.290705 0.419201 + 710 1.000000 1.000000 1.010000 0.843622 0.000000 -0.296310 0.447775 + 711 1.000000 1.000000 1.010000 0.826302 0.000000 -0.302722 0.474957 + 712 1.000000 1.000000 1.010000 0.807743 0.000000 -0.309644 0.501669 + 713 1.000000 1.000000 1.010000 0.788300 0.000000 -0.317219 0.527215 + 714 1.000000 1.000000 1.010000 0.767981 0.000000 -0.325695 0.551479 + 715 1.000000 1.000000 1.010000 0.746496 0.000000 -0.334933 0.574946 + 716 1.000000 1.000000 1.010000 0.724359 0.000000 -0.345122 0.596821 + 717 1.000000 1.000000 1.010000 0.701402 0.000000 -0.356629 0.617131 + 718 1.000000 1.000000 1.010000 0.677762 0.000000 -0.368972 0.636002 + 719 1.000000 1.000000 1.010000 0.653378 0.000000 -0.382883 0.653068 + 720 1.000000 1.000000 1.010000 0.628184 0.000000 -0.398333 0.668368 + 721 1.000000 1.000000 1.010000 0.602660 0.000000 -0.415077 0.681551 + 722 1.000000 1.000000 1.010000 0.576748 0.000000 -0.433657 0.692317 + 723 1.000000 1.000000 1.010000 0.550234 0.000000 -0.454527 0.700463 + 724 1.000000 1.000000 1.010000 0.523780 0.000000 -0.477707 0.705302 + 725 1.000000 1.000000 1.010000 0.496950 0.000000 -0.503217 0.706975 + 726 1.000000 1.000000 1.010000 0.470146 0.000000 -0.531874 0.704324 + 727 1.000000 1.000000 1.010000 0.443715 0.000000 -0.563632 0.696732 + 728 1.000000 1.000000 1.010000 0.417731 0.000000 -0.598536 0.683561 + 729 1.000000 1.000000 1.010000 0.392301 0.000000 -0.637792 0.662813 + 730 1.000000 1.000000 1.010000 0.367573 0.000000 -0.680318 0.634080 + 731 1.000000 1.000000 1.010000 0.344401 0.000000 -0.726652 0.594446 + 732 1.000000 1.000000 1.010000 0.322685 0.000000 -0.775354 0.542864 + 733 1.000000 1.000000 1.010000 0.303480 0.000000 -0.824563 0.477489 + 734 1.000000 1.000000 1.010000 0.286911 0.000000 -0.872159 0.396259 + 735 1.000000 1.000000 1.010000 0.273582 0.000000 -0.914220 0.298923 + 736 1.000000 1.000000 1.010000 0.264315 0.000000 -0.946386 0.185717 + 737 1.000000 1.000000 1.010000 0.259783 0.000000 -0.963564 0.063696 + 738 1.000000 1.000000 1.010000 0.259531 0.000000 -0.963679 -0.062978 + 739 1.000000 1.000000 1.010000 0.264217 0.000000 -0.946480 -0.185380 + 740 1.000000 1.000000 1.010000 0.273379 0.000000 -0.914928 -0.296936 + 741 1.000000 1.000000 1.010000 0.286850 0.000000 -0.872671 -0.395174 + 742 1.000000 1.000000 1.010000 0.303172 0.000000 -0.824939 -0.477036 + 743 1.000000 1.000000 1.010000 0.322552 0.000000 -0.775735 -0.542399 + 744 1.000000 1.000000 1.010000 0.344030 0.000000 -0.726896 -0.594361 + 745 1.000000 1.000000 1.010000 0.367368 0.000000 -0.680803 -0.633678 + 746 1.000000 1.000000 1.010000 0.391819 0.000000 -0.638426 -0.662488 + 747 1.000000 1.000000 1.010000 0.417507 0.000000 -0.599355 -0.682980 + 748 1.000000 1.000000 1.010000 0.443591 0.000000 -0.564297 -0.696273 + 749 1.000000 1.000000 1.010000 0.470133 0.000000 -0.532379 -0.703952 + 750 1.000000 1.000000 1.010000 0.496802 0.000000 -0.503439 -0.706921 + 751 1.000000 1.000000 1.010000 0.523682 0.000000 -0.477788 -0.705319 + 752 1.000000 1.000000 1.010000 0.550141 0.000000 -0.454605 -0.700485 + 753 1.000000 1.000000 1.010000 0.576767 0.000000 -0.433887 -0.692157 + 754 1.000000 1.000000 1.010000 0.602627 0.000000 -0.415228 -0.681488 + 755 1.000000 1.000000 1.010000 0.628205 0.000000 -0.398387 -0.668316 + 756 1.000000 1.000000 1.010000 0.653163 0.000000 -0.383073 -0.653171 + 757 1.000000 1.000000 1.010000 0.677632 0.000000 -0.369068 -0.636085 + 758 1.000000 1.000000 1.010000 0.701299 0.000000 -0.356968 -0.617053 + 759 1.000000 1.000000 1.010000 0.724390 0.000000 -0.345475 -0.596579 + 760 1.000000 1.000000 1.010000 0.746624 0.000000 -0.335077 -0.574696 + 761 1.000000 1.000000 1.010000 0.767926 0.000000 -0.325962 -0.551397 + 762 1.000000 1.000000 1.010000 0.788231 0.000000 -0.317320 -0.527257 + 763 1.000000 1.000000 1.010000 0.807741 0.000000 -0.309746 -0.501609 + 764 1.000000 1.000000 1.010000 0.826348 0.000000 -0.302795 -0.474830 + 765 1.000000 1.000000 1.010000 0.843854 0.000000 -0.296336 -0.447320 + 766 1.000000 1.000000 1.010000 0.860155 0.000000 -0.290757 -0.419040 + 767 1.000000 1.000000 1.010000 0.875419 0.000000 -0.285670 -0.389916 + 768 1.000000 1.000000 1.010000 0.889704 0.000000 -0.281233 -0.359632 + 769 1.000000 1.000000 1.010000 0.902665 0.000000 -0.277170 -0.329201 + 770 1.000000 1.000000 1.010000 0.914544 0.000000 -0.273565 -0.297947 + 771 1.000000 1.000000 1.010000 0.925256 0.000000 -0.270408 -0.266045 + 772 1.000000 1.000000 1.010000 0.934682 0.000000 -0.267764 -0.233820 + 773 1.000000 1.000000 1.010000 0.942920 0.000000 -0.265309 -0.201277 + 774 1.000000 1.000000 1.010000 0.949997 0.000000 -0.263104 -0.168173 + 775 1.000000 1.000000 1.010000 0.955722 0.000000 -0.261546 -0.134871 + 776 1.000000 1.000000 1.010000 0.960168 0.000000 -0.260459 -0.101183 + 777 1.000000 1.000000 1.010000 0.963338 0.000000 -0.259673 -0.067451 + 778 1.000000 1.000000 1.010000 0.965254 0.000000 -0.259114 -0.033845 + 779 1.000000 1.000000 1.010000 0.973840 0.000000 -0.227236 0.000061 + 780 1.000000 1.000000 1.010000 0.973204 0.000000 -0.227460 0.033703 + 781 1.000000 1.000000 1.010000 0.971406 0.000000 -0.227649 0.067433 + 782 1.000000 1.000000 1.010000 0.968348 0.000000 -0.228381 0.100714 + 783 1.000000 1.000000 1.010000 0.963995 0.000000 -0.229531 0.134275 + 784 1.000000 1.000000 1.010000 0.958521 0.000000 -0.230730 0.167333 + 785 1.000000 1.000000 1.010000 0.951836 0.000000 -0.232496 0.199885 + 786 1.000000 1.000000 1.010000 0.943873 0.000000 -0.234459 0.232663 + 787 1.000000 1.000000 1.010000 0.934843 0.000000 -0.236520 0.264814 + 788 1.000000 1.000000 1.010000 0.924607 0.000000 -0.239109 0.296529 + 789 1.000000 1.000000 1.010000 0.913158 0.000000 -0.242312 0.327760 + 790 1.000000 1.000000 1.010000 0.900629 0.000000 -0.245685 0.358477 + 791 1.000000 1.000000 1.010000 0.887065 0.000000 -0.249468 0.388434 + 792 1.000000 1.000000 1.010000 0.872315 0.000000 -0.253591 0.418041 + 793 1.000000 1.000000 1.010000 0.856603 0.000000 -0.258051 0.446812 + 794 1.000000 1.000000 1.010000 0.839770 0.000000 -0.263437 0.474750 + 795 1.000000 1.000000 1.010000 0.821919 0.000000 -0.268953 0.502109 + 796 1.000000 1.000000 1.010000 0.802951 0.000000 -0.275581 0.528511 + 797 1.000000 1.000000 1.010000 0.783207 0.000000 -0.282548 0.553854 + 798 1.000000 1.000000 1.010000 0.762520 0.000000 -0.290119 0.578268 + 799 1.000000 1.000000 1.010000 0.741151 0.000000 -0.298441 0.601355 + 800 1.000000 1.000000 1.010000 0.718808 0.000000 -0.307855 0.623330 + 801 1.000000 1.000000 1.010000 0.695599 0.000000 -0.318102 0.644168 + 802 1.000000 1.000000 1.010000 0.671574 0.000000 -0.329369 0.663705 + 803 1.000000 1.000000 1.010000 0.647156 0.000000 -0.341636 0.681523 + 804 1.000000 1.000000 1.010000 0.621822 0.000000 -0.355935 0.697602 + 805 1.000000 1.000000 1.010000 0.596061 0.000000 -0.371336 0.711914 + 806 1.000000 1.000000 1.010000 0.570014 0.000000 -0.388066 0.724216 + 807 1.000000 1.000000 1.010000 0.543286 0.000000 -0.407296 0.734132 + 808 1.000000 1.000000 1.010000 0.516425 0.000000 -0.428575 0.741369 + 809 1.000000 1.000000 1.010000 0.489251 0.000000 -0.452157 0.745780 + 810 1.000000 1.000000 1.010000 0.462010 0.000000 -0.479130 0.746312 + 811 1.000000 1.000000 1.010000 0.434820 0.000000 -0.508915 0.742924 + 812 1.000000 1.000000 1.010000 0.407624 0.000000 -0.542654 0.734417 + 813 1.000000 1.000000 1.010000 0.381095 0.000000 -0.580644 0.719458 + 814 1.000000 1.000000 1.010000 0.355377 0.000000 -0.623175 0.696678 + 815 1.000000 1.000000 1.010000 0.330439 0.000000 -0.669683 0.665083 + 816 1.000000 1.000000 1.010000 0.306610 0.000000 -0.721390 0.620956 + 817 1.000000 1.000000 1.010000 0.285195 0.000000 -0.776408 0.562009 + 818 1.000000 1.000000 1.010000 0.266014 0.000000 -0.832019 0.486806 + 819 1.000000 1.000000 1.010000 0.250037 0.000000 -0.885762 0.391034 + 820 1.000000 1.000000 1.010000 0.237526 0.000000 -0.931561 0.275275 + 821 1.000000 1.000000 1.010000 0.230090 0.000000 -0.962495 0.143739 + 822 1.000000 1.000000 1.010000 0.227273 0.000000 -0.973831 0.000093 + 823 1.000000 1.000000 1.010000 0.229877 0.000000 -0.962838 -0.141775 + 824 1.000000 1.000000 1.010000 0.237358 0.000000 -0.931822 -0.274534 + 825 1.000000 1.000000 1.010000 0.249805 0.000000 -0.886320 -0.389916 + 826 1.000000 1.000000 1.010000 0.265833 0.000000 -0.832646 -0.485833 + 827 1.000000 1.000000 1.010000 0.284983 0.000000 -0.776698 -0.561716 + 828 1.000000 1.000000 1.010000 0.306546 0.000000 -0.721786 -0.620527 + 829 1.000000 1.000000 1.010000 0.330026 0.000000 -0.670773 -0.664188 + 830 1.000000 1.000000 1.010000 0.355075 0.000000 -0.623095 -0.696903 + 831 1.000000 1.000000 1.010000 0.381034 0.000000 -0.581182 -0.719056 + 832 1.000000 1.000000 1.010000 0.407515 0.000000 -0.543152 -0.734110 + 833 1.000000 1.000000 1.010000 0.434668 0.000000 -0.509422 -0.742667 + 834 1.000000 1.000000 1.010000 0.461736 0.000000 -0.479377 -0.746323 + 835 1.000000 1.000000 1.010000 0.489070 0.000000 -0.452566 -0.745650 + 836 1.000000 1.000000 1.010000 0.516203 0.000000 -0.429031 -0.741260 + 837 1.000000 1.000000 1.010000 0.543219 0.000000 -0.407299 -0.734180 + 838 1.000000 1.000000 1.010000 0.569721 0.000000 -0.388580 -0.724171 + 839 1.000000 1.000000 1.010000 0.596092 0.000000 -0.371509 -0.711797 + 840 1.000000 1.000000 1.010000 0.621744 0.000000 -0.356092 -0.697591 + 841 1.000000 1.000000 1.010000 0.646959 0.000000 -0.342337 -0.681359 + 842 1.000000 1.000000 1.010000 0.671713 0.000000 -0.329428 -0.663535 + 843 1.000000 1.000000 1.010000 0.695501 0.000000 -0.318255 -0.644199 + 844 1.000000 1.000000 1.010000 0.718737 0.000000 -0.308192 -0.623245 + 845 1.000000 1.000000 1.010000 0.741201 0.000000 -0.298505 -0.601262 + 846 1.000000 1.000000 1.010000 0.762643 0.000000 -0.290258 -0.578036 + 847 1.000000 1.000000 1.010000 0.783371 0.000000 -0.282352 -0.553721 + 848 1.000000 1.000000 1.010000 0.803158 0.000000 -0.275473 -0.528253 + 849 1.000000 1.000000 1.010000 0.821879 0.000000 -0.269272 -0.502004 + 850 1.000000 1.000000 1.010000 0.839806 0.000000 -0.263688 -0.474547 + 851 1.000000 1.000000 1.010000 0.856557 0.000000 -0.258362 -0.446720 + 852 1.000000 1.000000 1.010000 0.872447 0.000000 -0.253415 -0.417872 + 853 1.000000 1.000000 1.010000 0.887080 0.000000 -0.249631 -0.388297 + 854 1.000000 1.000000 1.010000 0.900729 0.000000 -0.245672 -0.358236 + 855 1.000000 1.000000 1.010000 0.913264 0.000000 -0.242336 -0.327447 + 856 1.000000 1.000000 1.010000 0.924667 0.000000 -0.239220 -0.296250 + 857 1.000000 1.000000 1.010000 0.934913 0.000000 -0.236667 -0.264436 + 858 1.000000 1.000000 1.010000 0.943999 0.000000 -0.234235 -0.232379 + 859 1.000000 1.000000 1.010000 0.951881 0.000000 -0.232475 -0.199694 + 860 1.000000 1.000000 1.010000 0.958581 0.000000 -0.230825 -0.166862 + 861 1.000000 1.000000 1.010000 0.964095 0.000000 -0.229407 -0.133764 + 862 1.000000 1.000000 1.010000 0.968323 0.000000 -0.228602 -0.100456 + 863 1.000000 1.000000 1.010000 0.971399 0.000000 -0.227814 -0.066970 + 864 1.000000 1.000000 1.010000 0.973271 0.000000 -0.227237 -0.033281 + 865 1.000000 1.000000 1.010000 0.980749 0.000000 -0.195274 0.000216 + 866 1.000000 1.000000 1.010000 0.980176 0.000000 -0.195289 0.033437 + 867 1.000000 1.000000 1.010000 0.978408 0.000000 -0.195624 0.066705 + 868 1.000000 1.000000 1.010000 0.975457 0.000000 -0.196339 0.099670 + 869 1.000000 1.000000 1.010000 0.971369 0.000000 -0.197136 0.132591 + 870 1.000000 1.000000 1.010000 0.966108 0.000000 -0.198043 0.165574 + 871 1.000000 1.000000 1.010000 0.959680 0.000000 -0.199597 0.197927 + 872 1.000000 1.000000 1.010000 0.952116 0.000000 -0.201145 0.230249 + 873 1.000000 1.000000 1.010000 0.943480 0.000000 -0.202744 0.262183 + 874 1.000000 1.000000 1.010000 0.933692 0.000000 -0.204862 0.293684 + 875 1.000000 1.000000 1.010000 0.922817 0.000000 -0.207349 0.324676 + 876 1.000000 1.000000 1.010000 0.910804 0.000000 -0.210156 0.355346 + 877 1.000000 1.000000 1.010000 0.897661 0.000000 -0.213287 0.385633 + 878 1.000000 1.000000 1.010000 0.883559 0.000000 -0.216503 0.415270 + 879 1.000000 1.000000 1.010000 0.868330 0.000000 -0.220554 0.444251 + 880 1.000000 1.000000 1.010000 0.852162 0.000000 -0.224736 0.472560 + 881 1.000000 1.000000 1.010000 0.835010 0.000000 -0.229182 0.500235 + 882 1.000000 1.000000 1.010000 0.816860 0.000000 -0.234343 0.527089 + 883 1.000000 1.000000 1.010000 0.797826 0.000000 -0.239766 0.553161 + 884 1.000000 1.000000 1.010000 0.777859 0.000000 -0.246126 0.578237 + 885 1.000000 1.000000 1.010000 0.757072 0.000000 -0.252837 0.602424 + 886 1.000000 1.000000 1.010000 0.735390 0.000000 -0.260376 0.625624 + 887 1.000000 1.000000 1.010000 0.712897 0.000000 -0.268434 0.647859 + 888 1.000000 1.000000 1.010000 0.689671 0.000000 -0.277658 0.668775 + 889 1.000000 1.000000 1.010000 0.665876 0.000000 -0.287457 0.688461 + 890 1.000000 1.000000 1.010000 0.641197 0.000000 -0.298550 0.706919 + 891 1.000000 1.000000 1.010000 0.615927 0.000000 -0.310636 0.723975 + 892 1.000000 1.000000 1.010000 0.589999 0.000000 -0.324598 0.739282 + 893 1.000000 1.000000 1.010000 0.563704 0.000000 -0.339731 0.752875 + 894 1.000000 1.000000 1.010000 0.536875 0.000000 -0.356804 0.764498 + 895 1.000000 1.000000 1.010000 0.509940 0.000000 -0.375477 0.773937 + 896 1.000000 1.000000 1.010000 0.482451 0.000000 -0.396631 0.780977 + 897 1.000000 1.000000 1.010000 0.454746 0.000000 -0.421131 0.784764 + 898 1.000000 1.000000 1.010000 0.426997 0.000000 -0.448120 0.785405 + 899 1.000000 1.000000 1.010000 0.399206 0.000000 -0.479591 0.781426 + 900 1.000000 1.000000 1.010000 0.372041 0.000000 -0.514937 0.772286 + 901 1.000000 1.000000 1.010000 0.344900 0.000000 -0.555391 0.756693 + 902 1.000000 1.000000 1.010000 0.318570 0.000000 -0.601421 0.732670 + 903 1.000000 1.000000 1.010000 0.293118 0.000000 -0.653232 0.698119 + 904 1.000000 1.000000 1.010000 0.269518 0.000000 -0.710704 0.649815 + 905 1.000000 1.000000 1.010000 0.247513 0.000000 -0.773742 0.583148 + 906 1.000000 1.000000 1.010000 0.228381 0.000000 -0.838264 0.495132 + 907 1.000000 1.000000 1.010000 0.212876 0.000000 -0.899593 0.381335 + 908 1.000000 1.000000 1.010000 0.202060 0.000000 -0.948783 0.242861 + 909 1.000000 1.000000 1.010000 0.195899 0.000000 -0.977054 0.083602 + 910 1.000000 1.000000 1.010000 0.196012 0.000000 -0.977109 -0.082688 + 911 1.000000 1.000000 1.010000 0.201646 0.000000 -0.949374 -0.240889 + 912 1.000000 1.000000 1.010000 0.212744 0.000000 -0.899959 -0.380543 + 913 1.000000 1.000000 1.010000 0.228211 0.000000 -0.839081 -0.493824 + 914 1.000000 1.000000 1.010000 0.247654 0.000000 -0.774030 -0.582705 + 915 1.000000 1.000000 1.010000 0.269327 0.000000 -0.711401 -0.649132 + 916 1.000000 1.000000 1.010000 0.293098 0.000000 -0.653834 -0.697563 + 917 1.000000 1.000000 1.010000 0.318376 0.000000 -0.601632 -0.732582 + 918 1.000000 1.000000 1.010000 0.344589 0.000000 -0.555895 -0.756464 + 919 1.000000 1.000000 1.010000 0.371848 0.000000 -0.515455 -0.772034 + 920 1.000000 1.000000 1.010000 0.399233 0.000000 -0.479609 -0.781401 + 921 1.000000 1.000000 1.010000 0.426901 0.000000 -0.448372 -0.785314 + 922 1.000000 1.000000 1.010000 0.454476 0.000000 -0.421704 -0.784613 + 923 1.000000 1.000000 1.010000 0.482165 0.000000 -0.397583 -0.780669 + 924 1.000000 1.000000 1.010000 0.509616 0.000000 -0.375726 -0.774029 + 925 1.000000 1.000000 1.010000 0.536882 0.000000 -0.356809 -0.764490 + 926 1.000000 1.000000 1.010000 0.563617 0.000000 -0.339659 -0.752972 + 927 1.000000 1.000000 1.010000 0.590054 0.000000 -0.324678 -0.739203 + 928 1.000000 1.000000 1.010000 0.615911 0.000000 -0.311083 -0.723797 + 929 1.000000 1.000000 1.010000 0.641073 0.000000 -0.298652 -0.706989 + 930 1.000000 1.000000 1.010000 0.665737 0.000000 -0.287875 -0.688420 + 931 1.000000 1.000000 1.010000 0.689630 0.000000 -0.277981 -0.668683 + 932 1.000000 1.000000 1.010000 0.712856 0.000000 -0.268696 -0.647796 + 933 1.000000 1.000000 1.010000 0.735406 0.000000 -0.260431 -0.625582 + 934 1.000000 1.000000 1.010000 0.757106 0.000000 -0.252871 -0.602368 + 935 1.000000 1.000000 1.010000 0.778012 0.000000 -0.246089 -0.578046 + 936 1.000000 1.000000 1.010000 0.798010 0.000000 -0.239964 -0.552809 + 937 1.000000 1.000000 1.010000 0.817083 0.000000 -0.234414 -0.526711 + 938 1.000000 1.000000 1.010000 0.835110 0.000000 -0.229201 -0.500058 + 939 1.000000 1.000000 1.010000 0.852281 0.000000 -0.224817 -0.472308 + 940 1.000000 1.000000 1.010000 0.868497 0.000000 -0.220285 -0.444058 + 941 1.000000 1.000000 1.010000 0.883643 0.000000 -0.216814 -0.414931 + 942 1.000000 1.000000 1.010000 0.897821 0.000000 -0.213140 -0.385343 + 943 1.000000 1.000000 1.010000 0.910873 0.000000 -0.210143 -0.355176 + 944 1.000000 1.000000 1.010000 0.922821 0.000000 -0.207601 -0.324504 + 945 1.000000 1.000000 1.010000 0.933765 0.000000 -0.205038 -0.293330 + 946 1.000000 1.000000 1.010000 0.943525 0.000000 -0.202921 -0.261884 + 947 1.000000 1.000000 1.010000 0.952229 0.000000 -0.201073 -0.229846 + 948 1.000000 1.000000 1.010000 0.959717 0.000000 -0.199597 -0.197748 + 949 1.000000 1.000000 1.010000 0.966207 0.000000 -0.198051 -0.164985 + 950 1.000000 1.000000 1.010000 0.971406 0.000000 -0.197165 -0.132271 + 951 1.000000 1.000000 1.010000 0.975467 0.000000 -0.196409 -0.099439 + 952 1.000000 1.000000 1.010000 0.978441 0.000000 -0.195577 -0.066346 + 953 1.000000 1.000000 1.010000 0.980174 0.000000 -0.195342 -0.033162 + 954 1.000000 1.000000 1.010000 0.986612 0.000000 -0.163086 0.000051 + 955 1.000000 1.000000 1.010000 0.986076 0.000000 -0.162953 0.033179 + 956 1.000000 1.000000 1.010000 0.984332 0.000000 -0.163297 0.066521 + 957 1.000000 1.000000 1.010000 0.981502 0.000000 -0.163778 0.099146 + 958 1.000000 1.000000 1.010000 0.977451 0.000000 -0.164556 0.132328 + 959 1.000000 1.000000 1.010000 0.972374 0.000000 -0.165420 0.164697 + 960 1.000000 1.000000 1.010000 0.966047 0.000000 -0.166534 0.197534 + 961 1.000000 1.000000 1.010000 0.958788 0.000000 -0.167540 0.229467 + 962 1.000000 1.000000 1.010000 0.950294 0.000000 -0.169069 0.261450 + 963 1.000000 1.000000 1.010000 0.940630 0.000000 -0.171042 0.293189 + 964 1.000000 1.000000 1.010000 0.930002 0.000000 -0.172981 0.324305 + 965 1.000000 1.000000 1.010000 0.918324 0.000000 -0.175217 0.354936 + 966 1.000000 1.000000 1.010000 0.905528 0.000000 -0.177703 0.385281 + 967 1.000000 1.000000 1.010000 0.891679 0.000000 -0.180440 0.415150 + 968 1.000000 1.000000 1.010000 0.876874 0.000000 -0.183243 0.444425 + 969 1.000000 1.000000 1.010000 0.861070 0.000000 -0.186806 0.472930 + 970 1.000000 1.000000 1.010000 0.844259 0.000000 -0.190614 0.500892 + 971 1.000000 1.000000 1.010000 0.826425 0.000000 -0.194579 0.528356 + 972 1.000000 1.000000 1.010000 0.807940 0.000000 -0.199110 0.554606 + 973 1.000000 1.000000 1.010000 0.788296 0.000000 -0.204064 0.580472 + 974 1.000000 1.000000 1.010000 0.767867 0.000000 -0.209504 0.605382 + 975 1.000000 1.000000 1.010000 0.746386 0.000000 -0.215239 0.629746 + 976 1.000000 1.000000 1.010000 0.724428 0.000000 -0.221915 0.652655 + 977 1.000000 1.000000 1.010000 0.701493 0.000000 -0.229210 0.674811 + 978 1.000000 1.000000 1.010000 0.677787 0.000000 -0.237200 0.695946 + 979 1.000000 1.000000 1.010000 0.653401 0.000000 -0.246105 0.715891 + 980 1.000000 1.000000 1.010000 0.628333 0.000000 -0.256007 0.734614 + 981 1.000000 1.000000 1.010000 0.602796 0.000000 -0.266728 0.751993 + 982 1.000000 1.000000 1.010000 0.576437 0.000000 -0.278948 0.768055 + 983 1.000000 1.000000 1.010000 0.549612 0.000000 -0.292374 0.782588 + 984 1.000000 1.000000 1.010000 0.522489 0.000000 -0.307778 0.795159 + 985 1.000000 1.000000 1.010000 0.494875 0.000000 -0.324931 0.805927 + 986 1.000000 1.000000 1.010000 0.466868 0.000000 -0.344602 0.814422 + 987 1.000000 1.000000 1.010000 0.438714 0.000000 -0.366457 0.820512 + 988 1.000000 1.000000 1.010000 0.410301 0.000000 -0.391812 0.823490 + 989 1.000000 1.000000 1.010000 0.381791 0.000000 -0.421709 0.822434 + 990 1.000000 1.000000 1.010000 0.353672 0.000000 -0.454958 0.817270 + 991 1.000000 1.000000 1.010000 0.325476 0.000000 -0.494677 0.805829 + 992 1.000000 1.000000 1.010000 0.297999 0.000000 -0.540126 0.787058 + 993 1.000000 1.000000 1.010000 0.271199 0.000000 -0.593124 0.758060 + 994 1.000000 1.000000 1.010000 0.245825 0.000000 -0.654116 0.715334 + 995 1.000000 1.000000 1.010000 0.222159 0.000000 -0.724297 0.652717 + 996 1.000000 1.000000 1.010000 0.200999 0.000000 -0.800521 0.564593 + 997 1.000000 1.000000 1.010000 0.183623 0.000000 -0.876846 0.444325 + 998 1.000000 1.000000 1.010000 0.170864 0.000000 -0.942162 0.288335 + 999 1.000000 1.000000 1.010000 0.163895 0.000000 -0.981390 0.100060 + 1000 1.000000 1.000000 1.010000 0.164019 0.000000 -0.981458 -0.099181 + 1001 1.000000 1.000000 1.010000 0.170578 0.000000 -0.942980 -0.285818 + 1002 1.000000 1.000000 1.010000 0.183412 0.000000 -0.878084 -0.441960 + 1003 1.000000 1.000000 1.010000 0.200838 0.000000 -0.801603 -0.563113 + 1004 1.000000 1.000000 1.010000 0.221837 0.000000 -0.725021 -0.652023 + 1005 1.000000 1.000000 1.010000 0.245612 0.000000 -0.654911 -0.714679 + 1006 1.000000 1.000000 1.010000 0.271211 0.000000 -0.593867 -0.757474 + 1007 1.000000 1.000000 1.010000 0.297772 0.000000 -0.540609 -0.786813 + 1008 1.000000 1.000000 1.010000 0.325154 0.000000 -0.495119 -0.805687 + 1009 1.000000 1.000000 1.010000 0.353292 0.000000 -0.455519 -0.817121 + 1010 1.000000 1.000000 1.010000 0.381599 0.000000 -0.422008 -0.822369 + 1011 1.000000 1.000000 1.010000 0.409987 0.000000 -0.392582 -0.823280 + 1012 1.000000 1.000000 1.010000 0.438609 0.000000 -0.366887 -0.820375 + 1013 1.000000 1.000000 1.010000 0.466666 0.000000 -0.345148 -0.814307 + 1014 1.000000 1.000000 1.010000 0.494727 0.000000 -0.325356 -0.805847 + 1015 1.000000 1.000000 1.010000 0.522408 0.000000 -0.307943 -0.795148 + 1016 1.000000 1.000000 1.010000 0.549584 0.000000 -0.292776 -0.782457 + 1017 1.000000 1.000000 1.010000 0.576350 0.000000 -0.279360 -0.767971 + 1018 1.000000 1.000000 1.010000 0.602746 0.000000 -0.267164 -0.751878 + 1019 1.000000 1.000000 1.010000 0.628242 0.000000 -0.256386 -0.734560 + 1020 1.000000 1.000000 1.010000 0.653461 0.000000 -0.246275 -0.715778 + 1021 1.000000 1.000000 1.010000 0.677687 0.000000 -0.237480 -0.695948 + 1022 1.000000 1.000000 1.010000 0.701392 0.000000 -0.229189 -0.674923 + 1023 1.000000 1.000000 1.010000 0.724251 0.000000 -0.222364 -0.652698 + 1024 1.000000 1.000000 1.010000 0.746518 0.000000 -0.215524 -0.629492 + 1025 1.000000 1.000000 1.010000 0.767747 0.000000 -0.209600 -0.605502 + 1026 1.000000 1.000000 1.010000 0.788222 0.000000 -0.204315 -0.580484 + 1027 1.000000 1.000000 1.010000 0.807945 0.000000 -0.199091 -0.554605 + 1028 1.000000 1.000000 1.010000 0.826589 0.000000 -0.194754 -0.528035 + 1029 1.000000 1.000000 1.010000 0.844385 0.000000 -0.190472 -0.500734 + 1030 1.000000 1.000000 1.010000 0.861147 0.000000 -0.186764 -0.472805 + 1031 1.000000 1.000000 1.010000 0.877028 0.000000 -0.183507 -0.444012 + 1032 1.000000 1.000000 1.010000 0.891788 0.000000 -0.180432 -0.414919 + 1033 1.000000 1.000000 1.010000 0.905690 0.000000 -0.177457 -0.385013 + 1034 1.000000 1.000000 1.010000 0.918410 0.000000 -0.175015 -0.354814 + 1035 1.000000 1.000000 1.010000 0.930093 0.000000 -0.173055 -0.324006 + 1036 1.000000 1.000000 1.010000 0.940808 0.000000 -0.171032 -0.292624 + 1037 1.000000 1.000000 1.010000 0.950331 0.000000 -0.169329 -0.261149 + 1038 1.000000 1.000000 1.010000 0.958785 0.000000 -0.167674 -0.229384 + 1039 1.000000 1.000000 1.010000 0.966189 0.000000 -0.166318 -0.197021 + 1040 1.000000 1.000000 1.010000 0.972409 0.000000 -0.165429 -0.164480 + 1041 1.000000 1.000000 1.010000 0.977519 0.000000 -0.164403 -0.132018 + 1042 1.000000 1.000000 1.010000 0.981500 0.000000 -0.163809 -0.099116 + 1043 1.000000 1.000000 1.010000 0.984373 0.000000 -0.163294 -0.065917 + 1044 1.000000 1.000000 1.010000 0.986054 0.000000 -0.163107 -0.033072 + 1045 1.000000 1.000000 1.010000 0.991422 0.000000 -0.130703 0.000296 + 1046 1.000000 1.000000 1.010000 0.990865 0.000000 -0.130712 0.033190 + 1047 1.000000 1.000000 1.010000 0.989209 0.000000 -0.130917 0.065770 + 1048 1.000000 1.000000 1.010000 0.986432 0.000000 -0.131231 0.098641 + 1049 1.000000 1.000000 1.010000 0.982557 0.000000 -0.131721 0.131268 + 1050 1.000000 1.000000 1.010000 0.977572 0.000000 -0.132353 0.163815 + 1051 1.000000 1.000000 1.010000 0.971507 0.000000 -0.133354 0.195936 + 1052 1.000000 1.000000 1.010000 0.964337 0.000000 -0.134217 0.228121 + 1053 1.000000 1.000000 1.010000 0.956046 0.000000 -0.135545 0.260005 + 1054 1.000000 1.000000 1.010000 0.946694 0.000000 -0.136787 0.291650 + 1055 1.000000 1.000000 1.010000 0.936433 0.000000 -0.138153 0.322502 + 1056 1.000000 1.000000 1.010000 0.924993 0.000000 -0.140004 0.353252 + 1057 1.000000 1.000000 1.010000 0.912571 0.000000 -0.142053 0.383451 + 1058 1.000000 1.000000 1.010000 0.899159 0.000000 -0.143976 0.413260 + 1059 1.000000 1.000000 1.010000 0.884713 0.000000 -0.146494 0.442518 + 1060 1.000000 1.000000 1.010000 0.869211 0.000000 -0.149065 0.471436 + 1061 1.000000 1.000000 1.010000 0.852767 0.000000 -0.151949 0.499700 + 1062 1.000000 1.000000 1.010000 0.835381 0.000000 -0.154952 0.527379 + 1063 1.000000 1.000000 1.010000 0.817150 0.000000 -0.158469 0.554214 + 1064 1.000000 1.000000 1.010000 0.797935 0.000000 -0.162251 0.580495 + 1065 1.000000 1.000000 1.010000 0.777930 0.000000 -0.166442 0.605906 + 1066 1.000000 1.000000 1.010000 0.757169 0.000000 -0.170929 0.630459 + 1067 1.000000 1.000000 1.010000 0.735549 0.000000 -0.176076 0.654191 + 1068 1.000000 1.000000 1.010000 0.712931 0.000000 -0.181452 0.677351 + 1069 1.000000 1.000000 1.010000 0.689694 0.000000 -0.187890 0.699300 + 1070 1.000000 1.000000 1.010000 0.665871 0.000000 -0.194286 0.720325 + 1071 1.000000 1.000000 1.010000 0.641214 0.000000 -0.202147 0.740258 + 1072 1.000000 1.000000 1.010000 0.615772 0.000000 -0.210614 0.759254 + 1073 1.000000 1.000000 1.010000 0.589950 0.000000 -0.219469 0.777041 + 1074 1.000000 1.000000 1.010000 0.563382 0.000000 -0.230176 0.793486 + 1075 1.000000 1.000000 1.010000 0.536242 0.000000 -0.241764 0.808699 + 1076 1.000000 1.000000 1.010000 0.508684 0.000000 -0.255027 0.822315 + 1077 1.000000 1.000000 1.010000 0.480656 0.000000 -0.269228 0.834557 + 1078 1.000000 1.000000 1.010000 0.452257 0.000000 -0.286083 0.844760 + 1079 1.000000 1.000000 1.010000 0.423592 0.000000 -0.305761 0.852690 + 1080 1.000000 1.000000 1.010000 0.394685 0.000000 -0.328193 0.858203 + 1081 1.000000 1.000000 1.010000 0.365710 0.000000 -0.354015 0.860773 + 1082 1.000000 1.000000 1.010000 0.336745 0.000000 -0.384993 0.859292 + 1083 1.000000 1.000000 1.010000 0.307613 0.000000 -0.421073 0.853271 + 1084 1.000000 1.000000 1.010000 0.279058 0.000000 -0.464321 0.840555 + 1085 1.000000 1.000000 1.010000 0.250903 0.000000 -0.516231 0.818873 + 1086 1.000000 1.000000 1.010000 0.223962 0.000000 -0.578376 0.784425 + 1087 1.000000 1.000000 1.010000 0.198273 0.000000 -0.654265 0.729812 + 1088 1.000000 1.000000 1.010000 0.174762 0.000000 -0.740454 0.648989 + 1089 1.000000 1.000000 1.010000 0.154779 0.000000 -0.836718 0.525306 + 1090 1.000000 1.000000 1.010000 0.140001 0.000000 -0.925747 0.351273 + 1091 1.000000 1.000000 1.010000 0.131882 0.000000 -0.983458 0.124170 + 1092 1.000000 1.000000 1.010000 0.131699 0.000000 -0.983753 -0.122008 + 1093 1.000000 1.000000 1.010000 0.140002 0.000000 -0.926626 -0.348946 + 1094 1.000000 1.000000 1.010000 0.154868 0.000000 -0.838088 -0.523091 + 1095 1.000000 1.000000 1.010000 0.174600 0.000000 -0.742122 -0.647124 + 1096 1.000000 1.000000 1.010000 0.198121 0.000000 -0.654944 -0.729244 + 1097 1.000000 1.000000 1.010000 0.223605 0.000000 -0.579017 -0.784054 + 1098 1.000000 1.000000 1.010000 0.250671 0.000000 -0.517347 -0.818240 + 1099 1.000000 1.000000 1.010000 0.278883 0.000000 -0.464776 -0.840361 + 1100 1.000000 1.000000 1.010000 0.307517 0.000000 -0.421687 -0.853003 + 1101 1.000000 1.000000 1.010000 0.336574 0.000000 -0.385101 -0.859311 + 1102 1.000000 1.000000 1.010000 0.365568 0.000000 -0.354331 -0.860703 + 1103 1.000000 1.000000 1.010000 0.394407 0.000000 -0.328299 -0.858291 + 1104 1.000000 1.000000 1.010000 0.423483 0.000000 -0.306284 -0.852556 + 1105 1.000000 1.000000 1.010000 0.452322 0.000000 -0.286777 -0.844490 + 1106 1.000000 1.000000 1.010000 0.480564 0.000000 -0.269901 -0.834393 + 1107 1.000000 1.000000 1.010000 0.508386 0.000000 -0.254940 -0.822526 + 1108 1.000000 1.000000 1.010000 0.536134 0.000000 -0.241954 -0.808714 + 1109 1.000000 1.000000 1.010000 0.563234 0.000000 -0.230195 -0.793585 + 1110 1.000000 1.000000 1.010000 0.589739 0.000000 -0.219718 -0.777130 + 1111 1.000000 1.000000 1.010000 0.615646 0.000000 -0.210569 -0.759368 + 1112 1.000000 1.000000 1.010000 0.640963 0.000000 -0.202156 -0.740472 + 1113 1.000000 1.000000 1.010000 0.665760 0.000000 -0.194818 -0.720284 + 1114 1.000000 1.000000 1.010000 0.689704 0.000000 -0.188155 -0.699218 + 1115 1.000000 1.000000 1.010000 0.712999 0.000000 -0.181675 -0.677220 + 1116 1.000000 1.000000 1.010000 0.735408 0.000000 -0.176426 -0.654255 + 1117 1.000000 1.000000 1.010000 0.757102 0.000000 -0.171257 -0.630451 + 1118 1.000000 1.000000 1.010000 0.778115 0.000000 -0.166338 -0.605696 + 1119 1.000000 1.000000 1.010000 0.798143 0.000000 -0.162240 -0.580211 + 1120 1.000000 1.000000 1.010000 0.817338 0.000000 -0.158707 -0.553869 + 1121 1.000000 1.000000 1.010000 0.835473 0.000000 -0.155126 -0.527182 + 1122 1.000000 1.000000 1.010000 0.852849 0.000000 -0.152132 -0.499505 + 1123 1.000000 1.000000 1.010000 0.869251 0.000000 -0.149228 -0.471311 + 1124 1.000000 1.000000 1.010000 0.884693 0.000000 -0.146263 -0.442636 + 1125 1.000000 1.000000 1.010000 0.899141 0.000000 -0.144228 -0.413211 + 1126 1.000000 1.000000 1.010000 0.912670 0.000000 -0.142009 -0.383233 + 1127 1.000000 1.000000 1.010000 0.925016 0.000000 -0.140214 -0.353109 + 1128 1.000000 1.000000 1.010000 0.936424 0.000000 -0.138405 -0.322418 + 1129 1.000000 1.000000 1.010000 0.946834 0.000000 -0.136865 -0.291160 + 1130 1.000000 1.000000 1.010000 0.956182 0.000000 -0.135348 -0.259607 + 1131 1.000000 1.000000 1.010000 0.964409 0.000000 -0.134268 -0.227789 + 1132 1.000000 1.000000 1.010000 0.971516 0.000000 -0.133204 -0.195995 + 1133 1.000000 1.000000 1.010000 0.977614 0.000000 -0.132509 -0.163437 + 1134 1.000000 1.000000 1.010000 0.982580 0.000000 -0.131803 -0.131009 + 1135 1.000000 1.000000 1.010000 0.986472 0.000000 -0.131248 -0.098220 + 1136 1.000000 1.000000 1.010000 0.989216 0.000000 -0.130902 -0.065693 + 1137 1.000000 1.000000 1.010000 0.990892 0.000000 -0.130605 -0.032792 + 1138 1.000000 1.000000 1.010000 0.995155 0.000000 -0.098314 0.000017 + 1139 1.000000 1.000000 1.010000 0.994602 0.000000 -0.098350 0.033088 + 1140 1.000000 1.000000 1.010000 0.992949 0.000000 -0.098419 0.066073 + 1141 1.000000 1.000000 1.010000 0.990233 0.000000 -0.098472 0.098703 + 1142 1.000000 1.000000 1.010000 0.986362 0.000000 -0.099157 0.131371 + 1143 1.000000 1.000000 1.010000 0.981444 0.000000 -0.099544 0.163888 + 1144 1.000000 1.000000 1.010000 0.975435 0.000000 -0.099966 0.196300 + 1145 1.000000 1.000000 1.010000 0.968282 0.000000 -0.101020 0.228527 + 1146 1.000000 1.000000 1.010000 0.960173 0.000000 -0.101628 0.260270 + 1147 1.000000 1.000000 1.010000 0.950903 0.000000 -0.102832 0.291906 + 1148 1.000000 1.000000 1.010000 0.940611 0.000000 -0.103802 0.323228 + 1149 1.000000 1.000000 1.010000 0.929336 0.000000 -0.105073 0.353970 + 1150 1.000000 1.000000 1.010000 0.917038 0.000000 -0.106461 0.384327 + 1151 1.000000 1.000000 1.010000 0.903720 0.000000 -0.108094 0.414253 + 1152 1.000000 1.000000 1.010000 0.889340 0.000000 -0.109684 0.443896 + 1153 1.000000 1.000000 1.010000 0.874001 0.000000 -0.111786 0.472891 + 1154 1.000000 1.000000 1.010000 0.857775 0.000000 -0.113679 0.501298 + 1155 1.000000 1.000000 1.010000 0.840482 0.000000 -0.116205 0.529231 + 1156 1.000000 1.000000 1.010000 0.822421 0.000000 -0.118745 0.556349 + 1157 1.000000 1.000000 1.010000 0.803387 0.000000 -0.121546 0.582920 + 1158 1.000000 1.000000 1.010000 0.783530 0.000000 -0.124805 0.608690 + 1159 1.000000 1.000000 1.010000 0.762659 0.000000 -0.128258 0.633957 + 1160 1.000000 1.000000 1.010000 0.741165 0.000000 -0.132020 0.658213 + 1161 1.000000 1.000000 1.010000 0.718791 0.000000 -0.136021 0.681790 + 1162 1.000000 1.000000 1.010000 0.695501 0.000000 -0.140341 0.704686 + 1163 1.000000 1.000000 1.010000 0.671658 0.000000 -0.145169 0.726499 + 1164 1.000000 1.000000 1.010000 0.647145 0.000000 -0.150759 0.747312 + 1165 1.000000 1.000000 1.010000 0.621698 0.000000 -0.157200 0.767320 + 1166 1.000000 1.000000 1.010000 0.595700 0.000000 -0.164055 0.786274 + 1167 1.000000 1.000000 1.010000 0.569167 0.000000 -0.171600 0.804116 + 1168 1.000000 1.000000 1.010000 0.542000 0.000000 -0.180306 0.820808 + 1169 1.000000 1.000000 1.010000 0.514469 0.000000 -0.190101 0.836172 + 1170 1.000000 1.000000 1.010000 0.486080 0.000000 -0.200845 0.850522 + 1171 1.000000 1.000000 1.010000 0.457581 0.000000 -0.213306 0.863204 + 1172 1.000000 1.000000 1.010000 0.428472 0.000000 -0.227779 0.874373 + 1173 1.000000 1.000000 1.010000 0.399141 0.000000 -0.244897 0.883579 + 1174 1.000000 1.000000 1.010000 0.369453 0.000000 -0.264703 0.890751 + 1175 1.000000 1.000000 1.010000 0.339737 0.000000 -0.287413 0.895529 + 1176 1.000000 1.000000 1.010000 0.309709 0.000000 -0.315825 0.896847 + 1177 1.000000 1.000000 1.010000 0.279625 0.000000 -0.349524 0.894227 + 1178 1.000000 1.000000 1.010000 0.249795 0.000000 -0.391172 0.885769 + 1179 1.000000 1.000000 1.010000 0.220498 0.000000 -0.443897 0.868526 + 1180 1.000000 1.000000 1.010000 0.191930 0.000000 -0.509568 0.838751 + 1181 1.000000 1.000000 1.010000 0.164637 0.000000 -0.594476 0.787079 + 1182 1.000000 1.000000 1.010000 0.139651 0.000000 -0.698734 0.701618 + 1183 1.000000 1.000000 1.010000 0.118687 0.000000 -0.824619 0.553098 + 1184 1.000000 1.000000 1.010000 0.103552 0.000000 -0.942542 0.317634 + 1185 1.000000 1.000000 1.010000 0.098096 0.000000 -0.995173 0.002828 + 1186 1.000000 1.000000 1.010000 0.103614 0.000000 -0.943814 -0.313815 + 1187 1.000000 1.000000 1.010000 0.118241 0.000000 -0.826044 -0.551062 + 1188 1.000000 1.000000 1.010000 0.139421 0.000000 -0.700573 -0.699829 + 1189 1.000000 1.000000 1.010000 0.164520 0.000000 -0.594663 -0.786962 + 1190 1.000000 1.000000 1.010000 0.191734 0.000000 -0.509342 -0.838933 + 1191 1.000000 1.000000 1.010000 0.220364 0.000000 -0.443767 -0.868625 + 1192 1.000000 1.000000 1.010000 0.249675 0.000000 -0.391541 -0.885640 + 1193 1.000000 1.000000 1.010000 0.279363 0.000000 -0.349615 -0.894274 + 1194 1.000000 1.000000 1.010000 0.309405 0.000000 -0.316329 -0.896774 + 1195 1.000000 1.000000 1.010000 0.339275 0.000000 -0.288130 -0.895474 + 1196 1.000000 1.000000 1.010000 0.369194 0.000000 -0.264474 -0.890926 + 1197 1.000000 1.000000 1.010000 0.398878 0.000000 -0.244789 -0.883728 + 1198 1.000000 1.000000 1.010000 0.428299 0.000000 -0.227987 -0.874404 + 1199 1.000000 1.000000 1.010000 0.457297 0.000000 -0.213798 -0.863232 + 1200 1.000000 1.000000 1.010000 0.486109 0.000000 -0.200876 -0.850498 + 1201 1.000000 1.000000 1.010000 0.514188 0.000000 -0.190111 -0.836342 + 1202 1.000000 1.000000 1.010000 0.541964 0.000000 -0.180446 -0.820801 + 1203 1.000000 1.000000 1.010000 0.569179 0.000000 -0.172012 -0.804019 + 1204 1.000000 1.000000 1.010000 0.595613 0.000000 -0.164281 -0.786293 + 1205 1.000000 1.000000 1.010000 0.621630 0.000000 -0.157020 -0.767411 + 1206 1.000000 1.000000 1.010000 0.647096 0.000000 -0.151266 -0.747252 + 1207 1.000000 1.000000 1.010000 0.671513 0.000000 -0.145742 -0.726519 + 1208 1.000000 1.000000 1.010000 0.695657 0.000000 -0.140506 -0.704500 + 1209 1.000000 1.000000 1.010000 0.718648 0.000000 -0.136228 -0.681899 + 1210 1.000000 1.000000 1.010000 0.741168 0.000000 -0.131816 -0.658251 + 1211 1.000000 1.000000 1.010000 0.762734 0.000000 -0.128284 -0.633862 + 1212 1.000000 1.000000 1.010000 0.783521 0.000000 -0.124492 -0.608767 + 1213 1.000000 1.000000 1.010000 0.803384 0.000000 -0.121631 -0.582906 + 1214 1.000000 1.000000 1.010000 0.822507 0.000000 -0.118695 -0.556232 + 1215 1.000000 1.000000 1.010000 0.840680 0.000000 -0.116183 -0.528923 + 1216 1.000000 1.000000 1.010000 0.857767 0.000000 -0.113827 -0.501278 + 1217 1.000000 1.000000 1.010000 0.874077 0.000000 -0.111871 -0.472730 + 1218 1.000000 1.000000 1.010000 0.889508 0.000000 -0.109912 -0.443502 + 1219 1.000000 1.000000 1.010000 0.903739 0.000000 -0.108035 -0.414227 + 1220 1.000000 1.000000 1.010000 0.917093 0.000000 -0.106403 -0.384211 + 1221 1.000000 1.000000 1.010000 0.929429 0.000000 -0.104970 -0.353755 + 1222 1.000000 1.000000 1.010000 0.940683 0.000000 -0.103711 -0.323048 + 1223 1.000000 1.000000 1.010000 0.951032 0.000000 -0.102611 -0.291564 + 1224 1.000000 1.000000 1.010000 0.960223 0.000000 -0.101593 -0.260097 + 1225 1.000000 1.000000 1.010000 0.968377 0.000000 -0.101056 -0.228108 + 1226 1.000000 1.000000 1.010000 0.975425 0.000000 -0.100237 -0.196213 + 1227 1.000000 1.000000 1.010000 0.981456 0.000000 -0.099618 -0.163769 + 1228 1.000000 1.000000 1.010000 0.986420 0.000000 -0.098902 -0.131127 + 1229 1.000000 1.000000 1.010000 0.990247 0.000000 -0.098490 -0.098541 + 1230 1.000000 1.000000 1.010000 0.992990 0.000000 -0.098318 -0.065607 + 1231 1.000000 1.000000 1.010000 0.994617 0.000000 -0.098303 -0.032780 + 1232 1.000000 1.000000 1.010000 0.997839 0.000000 -0.065706 0.000256 + 1233 1.000000 1.000000 1.010000 0.997287 0.000000 -0.065763 0.033065 + 1234 1.000000 1.000000 1.010000 0.995673 0.000000 -0.065644 0.065775 + 1235 1.000000 1.000000 1.010000 0.992965 0.000000 -0.065788 0.098455 + 1236 1.000000 1.000000 1.010000 0.989172 0.000000 -0.066002 0.131079 + 1237 1.000000 1.000000 1.010000 0.984257 0.000000 -0.066519 0.163748 + 1238 1.000000 1.000000 1.010000 0.978343 0.000000 -0.066912 0.195876 + 1239 1.000000 1.000000 1.010000 0.971358 0.000000 -0.067207 0.227920 + 1240 1.000000 1.000000 1.010000 0.963255 0.000000 -0.067888 0.259869 + 1241 1.000000 1.000000 1.010000 0.954123 0.000000 -0.068381 0.291503 + 1242 1.000000 1.000000 1.010000 0.944004 0.000000 -0.069354 0.322562 + 1243 1.000000 1.000000 1.010000 0.932779 0.000000 -0.070207 0.353545 + 1244 1.000000 1.000000 1.010000 0.920714 0.000000 -0.071166 0.383695 + 1245 1.000000 1.000000 1.010000 0.907504 0.000000 -0.072164 0.413798 + 1246 1.000000 1.000000 1.010000 0.893323 0.000000 -0.073160 0.443420 + 1247 1.000000 1.000000 1.010000 0.878187 0.000000 -0.074416 0.472494 + 1248 1.000000 1.000000 1.010000 0.862000 0.000000 -0.075704 0.501223 + 1249 1.000000 1.000000 1.010000 0.845108 0.000000 -0.077501 0.528947 + 1250 1.000000 1.000000 1.010000 0.827187 0.000000 -0.078924 0.556356 + 1251 1.000000 1.000000 1.010000 0.808217 0.000000 -0.080717 0.583326 + 1252 1.000000 1.000000 1.010000 0.788551 0.000000 -0.082838 0.609364 + 1253 1.000000 1.000000 1.010000 0.768075 0.000000 -0.085326 0.634650 + 1254 1.000000 1.000000 1.010000 0.746637 0.000000 -0.087681 0.659428 + 1255 1.000000 1.000000 1.010000 0.724465 0.000000 -0.090227 0.683381 + 1256 1.000000 1.000000 1.010000 0.701393 0.000000 -0.093405 0.706628 + 1257 1.000000 1.000000 1.010000 0.677677 0.000000 -0.096576 0.728991 + 1258 1.000000 1.000000 1.010000 0.653216 0.000000 -0.100217 0.750510 + 1259 1.000000 1.000000 1.010000 0.627980 0.000000 -0.104152 0.771228 + 1260 1.000000 1.000000 1.010000 0.602316 0.000000 -0.108847 0.790802 + 1261 1.000000 1.000000 1.010000 0.575804 0.000000 -0.113770 0.809634 + 1262 1.000000 1.000000 1.010000 0.548791 0.000000 -0.118877 0.827464 + 1263 1.000000 1.000000 1.010000 0.520964 0.000000 -0.125365 0.844322 + 1264 1.000000 1.000000 1.010000 0.492781 0.000000 -0.132738 0.859970 + 1265 1.000000 1.000000 1.010000 0.464239 0.000000 -0.140964 0.874420 + 1266 1.000000 1.000000 1.010000 0.435014 0.000000 -0.150240 0.887801 + 1267 1.000000 1.000000 1.010000 0.405653 0.000000 -0.161228 0.899695 + 1268 1.000000 1.000000 1.010000 0.375596 0.000000 -0.174148 0.910275 + 1269 1.000000 1.000000 1.010000 0.345262 0.000000 -0.189209 0.919236 + 1270 1.000000 1.000000 1.010000 0.314811 0.000000 -0.208261 0.926025 + 1271 1.000000 1.000000 1.010000 0.283931 0.000000 -0.230257 0.930787 + 1272 1.000000 1.000000 1.010000 0.253418 0.000000 -0.258626 0.932143 + 1273 1.000000 1.000000 1.010000 0.222483 0.000000 -0.293392 0.929743 + 1274 1.000000 1.000000 1.010000 0.191892 0.000000 -0.340991 0.920273 + 1275 1.000000 1.000000 1.010000 0.161580 0.000000 -0.404310 0.900236 + 1276 1.000000 1.000000 1.010000 0.132404 0.000000 -0.493764 0.859457 + 1277 1.000000 1.000000 1.010000 0.105381 0.000000 -0.622552 0.775451 + 1278 1.000000 1.000000 1.010000 0.082390 0.000000 -0.795944 0.599738 + 1279 1.000000 1.000000 1.010000 0.067574 0.000000 -0.967011 0.245608 + 1280 1.000000 1.000000 1.010000 0.067629 0.000000 -0.968190 -0.240905 + 1281 1.000000 1.000000 1.010000 0.082018 0.000000 -0.797403 -0.597848 + 1282 1.000000 1.000000 1.010000 0.105176 0.000000 -0.623579 -0.774653 + 1283 1.000000 1.000000 1.010000 0.132114 0.000000 -0.494491 -0.859084 + 1284 1.000000 1.000000 1.010000 0.161365 0.000000 -0.406263 -0.899395 + 1285 1.000000 1.000000 1.010000 0.191491 0.000000 -0.341161 -0.920294 + 1286 1.000000 1.000000 1.010000 0.222179 0.000000 -0.294933 -0.929328 + 1287 1.000000 1.000000 1.010000 0.252956 0.000000 -0.258457 -0.932316 + 1288 1.000000 1.000000 1.010000 0.283949 0.000000 -0.230149 -0.930808 + 1289 1.000000 1.000000 1.010000 0.314507 0.000000 -0.207822 -0.926226 + 1290 1.000000 1.000000 1.010000 0.345315 0.000000 -0.190017 -0.919049 + 1291 1.000000 1.000000 1.010000 0.375450 0.000000 -0.174262 -0.910313 + 1292 1.000000 1.000000 1.010000 0.405406 0.000000 -0.161594 -0.899741 + 1293 1.000000 1.000000 1.010000 0.434935 0.000000 -0.150113 -0.887861 + 1294 1.000000 1.000000 1.010000 0.464136 0.000000 -0.140813 -0.874500 + 1295 1.000000 1.000000 1.010000 0.492782 0.000000 -0.133129 -0.859908 + 1296 1.000000 1.000000 1.010000 0.521044 0.000000 -0.125619 -0.844235 + 1297 1.000000 1.000000 1.010000 0.548647 0.000000 -0.119002 -0.827541 + 1298 1.000000 1.000000 1.010000 0.575620 0.000000 -0.113674 -0.809777 + 1299 1.000000 1.000000 1.010000 0.602232 0.000000 -0.108841 -0.790867 + 1300 1.000000 1.000000 1.010000 0.627920 0.000000 -0.104401 -0.771244 + 1301 1.000000 1.000000 1.010000 0.653162 0.000000 -0.100097 -0.750573 + 1302 1.000000 1.000000 1.010000 0.677699 0.000000 -0.096440 -0.728988 + 1303 1.000000 1.000000 1.010000 0.701507 0.000000 -0.093470 -0.706507 + 1304 1.000000 1.000000 1.010000 0.724470 0.000000 -0.090309 -0.683365 + 1305 1.000000 1.000000 1.010000 0.746607 0.000000 -0.087659 -0.659464 + 1306 1.000000 1.000000 1.010000 0.768060 0.000000 -0.085050 -0.634704 + 1307 1.000000 1.000000 1.010000 0.788601 0.000000 -0.082862 -0.609297 + 1308 1.000000 1.000000 1.010000 0.808414 0.000000 -0.081116 -0.582998 + 1309 1.000000 1.000000 1.010000 0.827269 0.000000 -0.079304 -0.556181 + 1310 1.000000 1.000000 1.010000 0.845188 0.000000 -0.077380 -0.528839 + 1311 1.000000 1.000000 1.010000 0.862168 0.000000 -0.076044 -0.500883 + 1312 1.000000 1.000000 1.010000 0.878274 0.000000 -0.074692 -0.472287 + 1313 1.000000 1.000000 1.010000 0.893330 0.000000 -0.073386 -0.443369 + 1314 1.000000 1.000000 1.010000 0.907596 0.000000 -0.072209 -0.413588 + 1315 1.000000 1.000000 1.010000 0.920798 0.000000 -0.071115 -0.383501 + 1316 1.000000 1.000000 1.010000 0.932968 0.000000 -0.069996 -0.353088 + 1317 1.000000 1.000000 1.010000 0.944136 0.000000 -0.069211 -0.322205 + 1318 1.000000 1.000000 1.010000 0.954223 0.000000 -0.068525 -0.291141 + 1319 1.000000 1.000000 1.010000 0.963310 0.000000 -0.067754 -0.259699 + 1320 1.000000 1.000000 1.010000 0.971386 0.000000 -0.067240 -0.227788 + 1321 1.000000 1.000000 1.010000 0.978368 0.000000 -0.067019 -0.195718 + 1322 1.000000 1.000000 1.010000 0.984333 0.000000 -0.066405 -0.163335 + 1323 1.000000 1.000000 1.010000 0.989201 0.000000 -0.066133 -0.130794 + 1324 1.000000 1.000000 1.010000 0.992980 0.000000 -0.065897 -0.098228 + 1325 1.000000 1.000000 1.010000 0.995679 0.000000 -0.065807 -0.065520 + 1326 1.000000 1.000000 1.010000 0.997308 0.000000 -0.065557 -0.032843 + 1327 1.000000 1.000000 1.010000 0.999457 0.000000 -0.032935 0.000272 + 1328 1.000000 1.000000 1.010000 0.998922 0.000000 -0.032789 0.032864 + 1329 1.000000 1.000000 1.010000 0.997317 0.000000 -0.032807 0.065440 + 1330 1.000000 1.000000 1.010000 0.994645 0.000000 -0.033075 0.097910 + 1331 1.000000 1.000000 1.010000 0.990886 0.000000 -0.033222 0.130545 + 1332 1.000000 1.000000 1.010000 0.986097 0.000000 -0.033242 0.162811 + 1333 1.000000 1.000000 1.010000 0.980231 0.000000 -0.033541 0.194991 + 1334 1.000000 1.000000 1.010000 0.973380 0.000000 -0.033681 0.226710 + 1335 1.000000 1.000000 1.010000 0.965402 0.000000 -0.034125 0.258525 + 1336 1.000000 1.000000 1.010000 0.956425 0.000000 -0.034300 0.289955 + 1337 1.000000 1.000000 1.010000 0.946501 0.000000 -0.034785 0.320820 + 1338 1.000000 1.000000 1.010000 0.935503 0.000000 -0.035165 0.351563 + 1339 1.000000 1.000000 1.010000 0.923464 0.000000 -0.035731 0.382018 + 1340 1.000000 1.000000 1.010000 0.910501 0.000000 -0.035972 0.411939 + 1341 1.000000 1.000000 1.010000 0.896531 0.000000 -0.036680 0.441461 + 1342 1.000000 1.000000 1.010000 0.881543 0.000000 -0.037103 0.470643 + 1343 1.000000 1.000000 1.010000 0.865699 0.000000 -0.037957 0.499124 + 1344 1.000000 1.000000 1.010000 0.848972 0.000000 -0.038824 0.527010 + 1345 1.000000 1.000000 1.010000 0.831334 0.000000 -0.039330 0.554380 + 1346 1.000000 1.000000 1.010000 0.812709 0.000000 -0.040343 0.581271 + 1347 1.000000 1.000000 1.010000 0.793154 0.000000 -0.041513 0.607605 + 1348 1.000000 1.000000 1.010000 0.773006 0.000000 -0.042665 0.632962 + 1349 1.000000 1.000000 1.010000 0.751832 0.000000 -0.043706 0.657904 + 1350 1.000000 1.000000 1.010000 0.729910 0.000000 -0.045245 0.682044 + 1351 1.000000 1.000000 1.010000 0.707134 0.000000 -0.046429 0.705553 + 1352 1.000000 1.000000 1.010000 0.683843 0.000000 -0.047950 0.728052 + 1353 1.000000 1.000000 1.010000 0.659536 0.000000 -0.049820 0.750020 + 1354 1.000000 1.000000 1.010000 0.634629 0.000000 -0.051609 0.771092 + 1355 1.000000 1.000000 1.010000 0.609142 0.000000 -0.053742 0.791238 + 1356 1.000000 1.000000 1.010000 0.582941 0.000000 -0.056226 0.810567 + 1357 1.000000 1.000000 1.010000 0.556159 0.000000 -0.059233 0.828962 + 1358 1.000000 1.000000 1.010000 0.528785 0.000000 -0.062199 0.846474 + 1359 1.000000 1.000000 1.010000 0.500788 0.000000 -0.065912 0.863057 + 1360 1.000000 1.000000 1.010000 0.472295 0.000000 -0.069755 0.878676 + 1361 1.000000 1.000000 1.010000 0.443183 0.000000 -0.074227 0.893353 + 1362 1.000000 1.000000 1.010000 0.413910 0.000000 -0.079352 0.906853 + 1363 1.000000 1.000000 1.010000 0.383999 0.000000 -0.085425 0.919373 + 1364 1.000000 1.000000 1.010000 0.353574 0.000000 -0.093225 0.930749 + 1365 1.000000 1.000000 1.010000 0.322915 0.000000 -0.101375 0.940983 + 1366 1.000000 1.000000 1.010000 0.292200 0.000000 -0.112051 0.949770 + 1367 1.000000 1.000000 1.010000 0.260882 0.000000 -0.126259 0.957078 + 1368 1.000000 1.000000 1.010000 0.229205 0.000000 -0.143192 0.962788 + 1369 1.000000 1.000000 1.010000 0.197839 0.000000 -0.166249 0.966034 + 1370 1.000000 1.000000 1.010000 0.166258 0.000000 -0.197274 0.966148 + 1371 1.000000 1.000000 1.010000 0.134589 0.000000 -0.244774 0.960193 + 1372 1.000000 1.000000 1.010000 0.103312 0.000000 -0.317750 0.942529 + 1373 1.000000 1.000000 1.010000 0.073252 0.000000 -0.449672 0.890185 + 1374 1.000000 1.000000 1.010000 0.046522 0.000000 -0.710282 0.702379 + 1375 1.000000 1.000000 1.010000 0.032749 0.000000 -0.999451 0.004924 + 1376 1.000000 1.000000 1.010000 0.046264 0.000000 -0.710291 -0.702386 + 1377 1.000000 1.000000 1.010000 0.073000 0.000000 -0.448592 -0.890750 + 1378 1.000000 1.000000 1.010000 0.103095 0.000000 -0.319748 -0.941877 + 1379 1.000000 1.000000 1.010000 0.134457 0.000000 -0.245636 -0.959992 + 1380 1.000000 1.000000 1.010000 0.165958 0.000000 -0.197303 -0.966193 + 1381 1.000000 1.000000 1.010000 0.197747 0.000000 -0.166347 -0.966036 + 1382 1.000000 1.000000 1.010000 0.229221 0.000000 -0.143520 -0.962735 + 1383 1.000000 1.000000 1.010000 0.260646 0.000000 -0.126383 -0.957126 + 1384 1.000000 1.000000 1.010000 0.291874 0.000000 -0.112402 -0.949829 + 1385 1.000000 1.000000 1.010000 0.322682 0.000000 -0.102014 -0.940994 + 1386 1.000000 1.000000 1.010000 0.353495 0.000000 -0.092719 -0.930830 + 1387 1.000000 1.000000 1.010000 0.383568 0.000000 -0.085852 -0.919514 + 1388 1.000000 1.000000 1.010000 0.413695 0.000000 -0.079655 -0.906924 + 1389 1.000000 1.000000 1.010000 0.443002 0.000000 -0.074174 -0.893447 + 1390 1.000000 1.000000 1.010000 0.472030 0.000000 -0.069426 -0.878845 + 1391 1.000000 1.000000 1.010000 0.500700 0.000000 -0.065621 -0.863130 + 1392 1.000000 1.000000 1.010000 0.528609 0.000000 -0.062249 -0.846580 + 1393 1.000000 1.000000 1.010000 0.556042 0.000000 -0.059032 -0.829055 + 1394 1.000000 1.000000 1.010000 0.582974 0.000000 -0.056583 -0.810518 + 1395 1.000000 1.000000 1.010000 0.609156 0.000000 -0.053789 -0.791224 + 1396 1.000000 1.000000 1.010000 0.634761 0.000000 -0.051678 -0.770979 + 1397 1.000000 1.000000 1.010000 0.659474 0.000000 -0.050088 -0.750057 + 1398 1.000000 1.000000 1.010000 0.683695 0.000000 -0.048174 -0.728176 + 1399 1.000000 1.000000 1.010000 0.707318 0.000000 -0.046611 -0.705357 + 1400 1.000000 1.000000 1.010000 0.729960 0.000000 -0.045186 -0.681995 + 1401 1.000000 1.000000 1.010000 0.751877 0.000000 -0.043533 -0.657865 + 1402 1.000000 1.000000 1.010000 0.773030 0.000000 -0.042497 -0.632945 + 1403 1.000000 1.000000 1.010000 0.793354 0.000000 -0.041526 -0.607343 + 1404 1.000000 1.000000 1.010000 0.812765 0.000000 -0.040301 -0.581196 + 1405 1.000000 1.000000 1.010000 0.831316 0.000000 -0.039609 -0.554386 + 1406 1.000000 1.000000 1.010000 0.848998 0.000000 -0.038610 -0.526984 + 1407 1.000000 1.000000 1.010000 0.865814 0.000000 -0.038097 -0.498913 + 1408 1.000000 1.000000 1.010000 0.881742 0.000000 -0.037398 -0.470247 + 1409 1.000000 1.000000 1.010000 0.896660 0.000000 -0.036646 -0.441201 + 1410 1.000000 1.000000 1.010000 0.910602 0.000000 -0.036056 -0.411708 + 1411 1.000000 1.000000 1.010000 0.923615 0.000000 -0.035756 -0.381650 + 1412 1.000000 1.000000 1.010000 0.935554 0.000000 -0.034960 -0.351449 + 1413 1.000000 1.000000 1.010000 0.946583 0.000000 -0.034689 -0.320589 + 1414 1.000000 1.000000 1.010000 0.956538 0.000000 -0.034352 -0.289576 + 1415 1.000000 1.000000 1.010000 0.965487 0.000000 -0.034086 -0.258211 + 1416 1.000000 1.000000 1.010000 0.973414 0.000000 -0.033609 -0.226572 + 1417 1.000000 1.000000 1.010000 0.980335 0.000000 -0.033397 -0.194493 + 1418 1.000000 1.000000 1.010000 0.986180 0.000000 -0.033378 -0.162283 + 1419 1.000000 1.000000 1.010000 0.990953 0.000000 -0.033059 -0.130073 + 1420 1.000000 1.000000 1.010000 0.994676 0.000000 -0.032903 -0.097656 + 1421 1.000000 1.000000 1.010000 0.997345 0.000000 -0.032797 -0.065020 + 1422 1.000000 1.000000 1.010000 0.998930 0.000000 -0.032782 -0.032626 + 1423 1.000000 1.000000 1.010000 1.000000 0.000000 -0.000170 0.000294 + 1424 1.000000 1.000000 1.010000 0.999465 0.000000 -0.000289 0.032703 + 1425 1.000000 1.000000 1.010000 0.997850 0.000000 -0.000256 0.065540 + 1426 1.000000 1.000000 1.010000 0.995166 0.000000 -0.000045 0.098210 + 1427 1.000000 1.000000 1.010000 0.991429 0.000000 -0.000022 0.130647 + 1428 1.000000 1.000000 1.010000 0.986635 0.000000 -0.000227 0.162945 + 1429 1.000000 1.000000 1.010000 0.980786 0.000000 -0.000164 0.195089 + 1430 1.000000 1.000000 1.010000 0.973860 0.000000 -0.000169 0.227150 + 1431 1.000000 1.000000 1.010000 0.965862 0.000000 -0.000108 0.259056 + 1432 1.000000 1.000000 1.010000 0.956906 0.000000 -0.000113 0.290397 + 1433 1.000000 1.000000 1.010000 0.946888 0.000000 -0.000320 0.321563 + 1434 1.000000 1.000000 1.010000 0.935933 0.000000 -0.000160 0.352179 + 1435 1.000000 1.000000 1.010000 0.923838 0.000000 -0.000270 0.382784 + 1436 1.000000 1.000000 1.010000 0.910877 0.000000 -0.000068 0.412677 + 1437 1.000000 1.000000 1.010000 0.896921 0.000000 -0.000032 0.442190 + 1438 1.000000 1.000000 1.010000 0.881863 0.000000 -0.000078 0.471505 + 1439 1.000000 1.000000 1.010000 0.866138 0.000000 -0.000215 0.499805 + 1440 1.000000 1.000000 1.010000 0.849154 0.000000 -0.000260 0.528145 + 1441 1.000000 1.000000 1.010000 0.831556 0.000000 -0.000376 0.555441 + 1442 1.000000 1.000000 1.010000 0.812883 0.000000 -0.000016 0.582428 + 1443 1.000000 1.000000 1.010000 0.793380 0.000000 -0.000069 0.608727 + 1444 1.000000 1.000000 1.010000 0.773126 0.000000 -0.000189 0.634252 + 1445 1.000000 1.000000 1.010000 0.751860 0.000000 -0.000144 0.659323 + 1446 1.000000 1.000000 1.010000 0.730015 0.000000 -0.000041 0.683431 + 1447 1.000000 1.000000 1.010000 0.707248 0.000000 -0.000382 0.706965 + 1448 1.000000 1.000000 1.010000 0.683606 0.000000 -0.000195 0.729851 + 1449 1.000000 1.000000 1.010000 0.659364 0.000000 -0.000331 0.751824 + 1450 1.000000 1.000000 1.010000 0.634432 0.000000 -0.000298 0.772978 + 1451 1.000000 1.000000 1.010000 0.608781 0.000000 -0.000002 0.793338 + 1452 1.000000 1.000000 1.010000 0.582590 0.000000 -0.000373 0.812766 + 1453 1.000000 1.000000 1.010000 0.555851 0.000000 -0.000190 0.831282 + 1454 1.000000 1.000000 1.010000 0.528289 0.000000 -0.000168 0.849064 + 1455 1.000000 1.000000 1.010000 0.500165 0.000000 -0.000307 0.865930 + 1456 1.000000 1.000000 1.010000 0.471640 0.000000 -0.000441 0.881791 + 1457 1.000000 1.000000 1.010000 0.442328 0.000000 -0.000604 0.896853 + 1458 1.000000 1.000000 1.010000 0.412988 0.000000 -0.000453 0.910736 + 1459 1.000000 1.000000 1.010000 0.382709 0.000000 -0.000022 0.923869 + 1460 1.000000 1.000000 1.010000 0.352498 0.000000 -0.000750 0.935812 + 1461 1.000000 1.000000 1.010000 0.321587 0.000000 -0.000283 0.946880 + 1462 1.000000 1.000000 1.010000 0.290466 0.000000 -0.000945 0.956885 + 1463 1.000000 1.000000 1.010000 0.259027 0.000000 -0.000886 0.965870 + 1464 1.000000 1.000000 1.010000 0.227431 0.000000 -0.000885 0.973794 + 1465 1.000000 1.000000 1.010000 0.195276 0.000000 -0.000661 0.980748 + 1466 1.000000 1.000000 1.010000 0.163153 0.000000 -0.000134 0.986601 + 1467 1.000000 1.000000 1.010000 0.130754 0.000000 -0.002547 0.991412 + 1468 1.000000 1.000000 1.010000 0.098161 0.000000 -0.002245 0.995168 + 1469 1.000000 1.000000 1.010000 0.065692 0.000000 -0.001163 0.997839 + 1470 1.000000 1.000000 1.010000 0.033048 0.000000 -0.000931 0.999453 + 1471 1.000000 1.000000 1.010000 0.000224 0.000000 -0.359019 0.933330 + 1472 1.000000 1.000000 1.010000 0.032673 0.000000 -0.009212 -0.999424 + 1473 1.000000 1.000000 1.010000 0.065396 0.000000 -0.001108 -0.997859 + 1474 1.000000 1.000000 1.010000 0.097834 0.000000 -0.001634 -0.995201 + 1475 1.000000 1.000000 1.010000 0.130478 0.000000 -0.002324 -0.991448 + 1476 1.000000 1.000000 1.010000 0.162867 0.000000 -0.000397 -0.986648 + 1477 1.000000 1.000000 1.010000 0.194946 0.000000 -0.000766 -0.980814 + 1478 1.000000 1.000000 1.010000 0.227159 0.000000 -0.000907 -0.973857 + 1479 1.000000 1.000000 1.010000 0.258725 0.000000 -0.000766 -0.965951 + 1480 1.000000 1.000000 1.010000 0.290348 0.000000 -0.000765 -0.956921 + 1481 1.000000 1.000000 1.010000 0.321612 0.000000 -0.000278 -0.946871 + 1482 1.000000 1.000000 1.010000 0.352318 0.000000 -0.000401 -0.935880 + 1483 1.000000 1.000000 1.010000 0.382765 0.000000 -0.000696 -0.923845 + 1484 1.000000 1.000000 1.010000 0.412719 0.000000 -0.000754 -0.910858 + 1485 1.000000 1.000000 1.010000 0.442261 0.000000 -0.000354 -0.896886 + 1486 1.000000 1.000000 1.010000 0.471468 0.000000 -0.000217 -0.881883 + 1487 1.000000 1.000000 1.010000 0.500146 0.000000 -0.000293 -0.865941 + 1488 1.000000 1.000000 1.010000 0.528107 0.000000 -0.000194 -0.849178 + 1489 1.000000 1.000000 1.010000 0.555587 0.000000 -0.000165 -0.831458 + 1490 1.000000 1.000000 1.010000 0.582563 0.000000 -0.000079 -0.812786 + 1491 1.000000 1.000000 1.010000 0.608955 0.000000 -0.000091 -0.793205 + 1492 1.000000 1.000000 1.010000 0.634448 0.000000 -0.000260 -0.772965 + 1493 1.000000 1.000000 1.010000 0.659344 0.000000 -0.000044 -0.751841 + 1494 1.000000 1.000000 1.010000 0.683685 0.000000 -0.000452 -0.729777 + 1495 1.000000 1.000000 1.010000 0.707178 0.000000 -0.000070 -0.707036 + 1496 1.000000 1.000000 1.010000 0.729960 0.000000 -0.000073 -0.683490 + 1497 1.000000 1.000000 1.010000 0.752047 0.000000 -0.000318 -0.659110 + 1498 1.000000 1.000000 1.010000 0.773103 0.000000 -0.000291 -0.634281 + 1499 1.000000 1.000000 1.010000 0.793437 0.000000 -0.000151 -0.608653 + 1500 1.000000 1.000000 1.010000 0.812945 0.000000 -0.000037 -0.582340 + 1501 1.000000 1.000000 1.010000 0.831558 0.000000 -0.000003 -0.555438 + 1502 1.000000 1.000000 1.010000 0.849275 0.000000 -0.000146 -0.527951 + 1503 1.000000 1.000000 1.010000 0.866056 0.000000 -0.000303 -0.499947 + 1504 1.000000 1.000000 1.010000 0.881984 0.000000 -0.000169 -0.471279 + 1505 1.000000 1.000000 1.010000 0.896987 0.000000 -0.000037 -0.442058 + 1506 1.000000 1.000000 1.010000 0.910949 0.000000 -0.000295 -0.412518 + 1507 1.000000 1.000000 1.010000 0.923952 0.000000 -0.000238 -0.382509 + 1508 1.000000 1.000000 1.010000 0.935974 0.000000 -0.000161 -0.352070 + 1509 1.000000 1.000000 1.010000 0.947030 0.000000 -0.000188 -0.321146 + 1510 1.000000 1.000000 1.010000 0.957005 0.000000 -0.000183 -0.290071 + 1511 1.000000 1.000000 1.010000 0.965988 0.000000 -0.000217 -0.258587 + 1512 1.000000 1.000000 1.010000 0.973917 0.000000 -0.000221 -0.226904 + 1513 1.000000 1.000000 1.010000 0.980845 0.000000 -0.000065 -0.194791 + 1514 1.000000 1.000000 1.010000 0.986687 0.000000 -0.000271 -0.162632 + 1515 1.000000 1.000000 1.010000 0.991452 0.000000 -0.000066 -0.130473 + 1516 1.000000 1.000000 1.010000 0.995200 0.000000 -0.000138 -0.097859 + 1517 1.000000 1.000000 1.010000 0.997873 0.000000 -0.000079 -0.065194 + 1518 1.000000 1.000000 1.010000 0.999475 0.000000 -0.000091 -0.032406 + 1519 1.000000 1.000000 1.010000 0.999465 -0.000000 0.032713 0.000177 + 1520 1.000000 1.000000 1.010000 0.998934 -0.000000 0.032421 0.032870 + 1521 1.000000 1.000000 1.010000 0.997319 -0.000000 0.032611 0.065516 + 1522 1.000000 1.000000 1.010000 0.994633 -0.000000 0.032716 0.098152 + 1523 1.000000 1.000000 1.010000 0.990930 -0.000000 0.032812 0.130315 + 1524 1.000000 1.000000 1.010000 0.986129 -0.000000 0.033027 0.162665 + 1525 1.000000 1.000000 1.010000 0.980290 -0.000000 0.033225 0.194752 + 1526 1.000000 1.000000 1.010000 0.973354 -0.000000 0.033249 0.226883 + 1527 1.000000 1.000000 1.010000 0.965405 -0.000000 0.033691 0.258569 + 1528 1.000000 1.000000 1.010000 0.956463 -0.000000 0.033918 0.289875 + 1529 1.000000 1.000000 1.010000 0.946454 -0.000000 0.034296 0.321012 + 1530 1.000000 1.000000 1.010000 0.935475 -0.000000 0.034665 0.351689 + 1531 1.000000 1.000000 1.010000 0.923429 -0.000000 0.035305 0.382142 + 1532 1.000000 1.000000 1.010000 0.910489 -0.000000 0.035799 0.411982 + 1533 1.000000 1.000000 1.010000 0.896455 -0.000000 0.036194 0.441655 + 1534 1.000000 1.000000 1.010000 0.881530 -0.000000 0.037013 0.470675 + 1535 1.000000 1.000000 1.010000 0.865791 -0.000000 0.037421 0.499005 + 1536 1.000000 1.000000 1.010000 0.848984 -0.000000 0.038445 0.527018 + 1537 1.000000 1.000000 1.010000 0.831373 -0.000000 0.038938 0.554349 + 1538 1.000000 1.000000 1.010000 0.812731 -0.000000 0.039916 0.581271 + 1539 1.000000 1.000000 1.010000 0.793169 -0.000000 0.041167 0.607608 + 1540 1.000000 1.000000 1.010000 0.773017 -0.000000 0.041933 0.632997 + 1541 1.000000 1.000000 1.010000 0.751890 -0.000000 0.043066 0.657881 + 1542 1.000000 1.000000 1.010000 0.729949 -0.000000 0.044514 0.682050 + 1543 1.000000 1.000000 1.010000 0.707237 -0.000000 0.046043 0.705476 + 1544 1.000000 1.000000 1.010000 0.683705 -0.000000 0.047598 0.728205 + 1545 1.000000 1.000000 1.010000 0.659654 -0.000000 0.049212 0.749957 + 1546 1.000000 1.000000 1.010000 0.634616 -0.000000 0.051394 0.771117 + 1547 1.000000 1.000000 1.010000 0.609118 -0.000000 0.053657 0.791263 + 1548 1.000000 1.000000 1.010000 0.583067 -0.000000 0.055527 0.810524 + 1549 1.000000 1.000000 1.010000 0.556178 -0.000000 0.058206 0.829022 + 1550 1.000000 1.000000 1.010000 0.528617 -0.000000 0.061379 0.846639 + 1551 1.000000 1.000000 1.010000 0.500639 -0.000000 0.064661 0.863238 + 1552 1.000000 1.000000 1.010000 0.472277 -0.000000 0.068890 0.878754 + 1553 1.000000 1.000000 1.010000 0.443299 -0.000000 0.073687 0.893340 + 1554 1.000000 1.000000 1.010000 0.413892 -0.000000 0.078643 0.906923 + 1555 1.000000 1.000000 1.010000 0.383788 -0.000000 0.084588 0.919539 + 1556 1.000000 1.000000 1.010000 0.353611 -0.000000 0.091833 0.930874 + 1557 1.000000 1.000000 1.010000 0.322996 -0.000000 0.100376 0.941062 + 1558 1.000000 1.000000 1.010000 0.291878 -0.000000 0.111202 0.949969 + 1559 1.000000 1.000000 1.010000 0.260840 -0.000000 0.124633 0.957303 + 1560 1.000000 1.000000 1.010000 0.229379 -0.000000 0.142141 0.962902 + 1561 1.000000 1.000000 1.010000 0.197933 -0.000000 0.164667 0.966285 + 1562 1.000000 1.000000 1.010000 0.166303 -0.000000 0.195017 0.966598 + 1563 1.000000 1.000000 1.010000 0.134718 -0.000000 0.241777 0.960934 + 1564 1.000000 1.000000 1.010000 0.103525 -0.000000 0.315657 0.943209 + 1565 1.000000 1.000000 1.010000 0.073205 -0.000000 0.442809 0.893622 + 1566 1.000000 1.000000 1.010000 0.046343 -0.000000 0.702646 0.710029 + 1567 1.000000 1.000000 1.010000 0.032671 -0.000000 0.999450 0.005664 + 1568 1.000000 1.000000 1.010000 0.046165 0.000000 0.708605 -0.704093 + 1569 1.000000 1.000000 1.010000 0.072937 0.000000 0.445403 -0.892354 + 1570 1.000000 1.000000 1.010000 0.103032 0.000000 0.316341 -0.943034 + 1571 1.000000 1.000000 1.010000 0.134157 0.000000 0.242904 -0.960729 + 1572 1.000000 1.000000 1.010000 0.165893 0.000000 0.196283 -0.966412 + 1573 1.000000 1.000000 1.010000 0.197364 0.000000 0.164884 -0.966365 + 1574 1.000000 1.000000 1.010000 0.229170 0.000000 0.142277 -0.962932 + 1575 1.000000 1.000000 1.010000 0.260637 0.000000 0.124943 -0.957318 + 1576 1.000000 1.000000 1.010000 0.291910 0.000000 0.112088 -0.949855 + 1577 1.000000 1.000000 1.010000 0.322873 0.000000 0.101157 -0.941021 + 1578 1.000000 1.000000 1.010000 0.353387 0.000000 0.092312 -0.930912 + 1579 1.000000 1.000000 1.010000 0.383626 0.000000 0.084619 -0.919603 + 1580 1.000000 1.000000 1.010000 0.413443 0.000000 0.078680 -0.907124 + 1581 1.000000 1.000000 1.010000 0.442969 0.000000 0.073323 -0.893534 + 1582 1.000000 1.000000 1.010000 0.471897 0.000000 0.068760 -0.878968 + 1583 1.000000 1.000000 1.010000 0.500603 0.000000 0.064767 -0.863251 + 1584 1.000000 1.000000 1.010000 0.528617 0.000000 0.061824 -0.846606 + 1585 1.000000 1.000000 1.010000 0.556033 0.000000 0.058450 -0.829102 + 1586 1.000000 1.000000 1.010000 0.582838 0.000000 0.055713 -0.810676 + 1587 1.000000 1.000000 1.010000 0.609053 0.000000 0.053336 -0.791334 + 1588 1.000000 1.000000 1.010000 0.634585 0.000000 0.051247 -0.771153 + 1589 1.000000 1.000000 1.010000 0.659547 0.000000 0.049594 -0.750025 + 1590 1.000000 1.000000 1.010000 0.683826 0.000000 0.047733 -0.728082 + 1591 1.000000 1.000000 1.010000 0.707286 0.000000 0.046086 -0.705423 + 1592 1.000000 1.000000 1.010000 0.729960 0.000000 0.044529 -0.682038 + 1593 1.000000 1.000000 1.010000 0.751912 0.000000 0.043394 -0.657834 + 1594 1.000000 1.000000 1.010000 0.773026 0.000000 0.042278 -0.632965 + 1595 1.000000 1.000000 1.010000 0.793222 0.000000 0.040823 -0.607563 + 1596 1.000000 1.000000 1.010000 0.812774 0.000000 0.040164 -0.581192 + 1597 1.000000 1.000000 1.010000 0.831295 0.000000 0.038945 -0.554466 + 1598 1.000000 1.000000 1.010000 0.849003 0.000000 0.038296 -0.526999 + 1599 1.000000 1.000000 1.010000 0.865804 0.000000 0.037690 -0.498961 + 1600 1.000000 1.000000 1.010000 0.881660 0.000000 0.036904 -0.470440 + 1601 1.000000 1.000000 1.010000 0.896616 0.000000 0.036203 -0.441326 + 1602 1.000000 1.000000 1.010000 0.910530 0.000000 0.035815 -0.411890 + 1603 1.000000 1.000000 1.010000 0.923590 0.000000 0.035365 -0.381748 + 1604 1.000000 1.000000 1.010000 0.935503 0.000000 0.034757 -0.351606 + 1605 1.000000 1.000000 1.010000 0.946489 0.000000 0.034474 -0.320888 + 1606 1.000000 1.000000 1.010000 0.956517 0.000000 0.034071 -0.289679 + 1607 1.000000 1.000000 1.010000 0.965501 0.000000 0.033535 -0.258231 + 1608 1.000000 1.000000 1.010000 0.973465 0.000000 0.033475 -0.226376 + 1609 1.000000 1.000000 1.010000 0.980365 0.000000 0.033025 -0.194407 + 1610 1.000000 1.000000 1.010000 0.986166 0.000000 0.033017 -0.162437 + 1611 1.000000 1.000000 1.010000 0.990926 0.000000 0.032997 -0.130298 + 1612 1.000000 1.000000 1.010000 0.994675 0.000000 0.032760 -0.097715 + 1613 1.000000 1.000000 1.010000 0.997345 0.000000 0.032721 -0.065050 + 1614 1.000000 1.000000 1.010000 0.998951 0.000000 0.032386 -0.032385 + 1615 1.000000 1.000000 1.010000 0.997869 -0.000000 0.065252 0.000097 + 1616 1.000000 1.000000 1.010000 0.997324 -0.000000 0.065238 0.033008 + 1617 1.000000 1.000000 1.010000 0.995678 -0.000000 0.065430 0.065911 + 1618 1.000000 1.000000 1.010000 0.992980 -0.000000 0.065399 0.098562 + 1619 1.000000 1.000000 1.010000 0.989169 -0.000000 0.065907 0.131150 + 1620 1.000000 1.000000 1.010000 0.984322 -0.000000 0.065997 0.163570 + 1621 1.000000 1.000000 1.010000 0.978370 -0.000000 0.066526 0.195872 + 1622 1.000000 1.000000 1.010000 0.971337 -0.000000 0.066848 0.228114 + 1623 1.000000 1.000000 1.010000 0.963306 -0.000000 0.067539 0.259770 + 1624 1.000000 1.000000 1.010000 0.954168 -0.000000 0.068083 0.291426 + 1625 1.000000 1.000000 1.010000 0.944010 -0.000000 0.068999 0.322620 + 1626 1.000000 1.000000 1.010000 0.932880 -0.000000 0.069764 0.353365 + 1627 1.000000 1.000000 1.010000 0.920648 -0.000000 0.070647 0.383948 + 1628 1.000000 1.000000 1.010000 0.907489 -0.000000 0.071545 0.413938 + 1629 1.000000 1.000000 1.010000 0.893366 -0.000000 0.072957 0.443368 + 1630 1.000000 1.000000 1.010000 0.878134 -0.000000 0.074283 0.472613 + 1631 1.000000 1.000000 1.010000 0.862035 -0.000000 0.075530 0.501189 + 1632 1.000000 1.000000 1.010000 0.845060 -0.000000 0.076987 0.529100 + 1633 1.000000 1.000000 1.010000 0.827193 -0.000000 0.078495 0.556409 + 1634 1.000000 1.000000 1.010000 0.808217 -0.000000 0.080575 0.583346 + 1635 1.000000 1.000000 1.010000 0.788494 -0.000000 0.082498 0.609484 + 1636 1.000000 1.000000 1.010000 0.767906 -0.000000 0.084613 0.634950 + 1637 1.000000 1.000000 1.010000 0.746560 -0.000000 0.087228 0.659575 + 1638 1.000000 1.000000 1.010000 0.724356 -0.000000 0.090009 0.683525 + 1639 1.000000 1.000000 1.010000 0.701321 -0.000000 0.092799 0.706779 + 1640 1.000000 1.000000 1.010000 0.677664 -0.000000 0.096245 0.729046 + 1641 1.000000 1.000000 1.010000 0.653127 -0.000000 0.099522 0.750680 + 1642 1.000000 1.000000 1.010000 0.628064 -0.000000 0.103855 0.771200 + 1643 1.000000 1.000000 1.010000 0.602097 -0.000000 0.108257 0.791050 + 1644 1.000000 1.000000 1.010000 0.575780 -0.000000 0.113026 0.809755 + 1645 1.000000 1.000000 1.010000 0.548737 -0.000000 0.118565 0.827545 + 1646 1.000000 1.000000 1.010000 0.520925 -0.000000 0.125054 0.844393 + 1647 1.000000 1.000000 1.010000 0.492923 -0.000000 0.131945 0.860010 + 1648 1.000000 1.000000 1.010000 0.464232 -0.000000 0.139961 0.874585 + 1649 1.000000 1.000000 1.010000 0.434870 -0.000000 0.149538 0.887990 + 1650 1.000000 1.000000 1.010000 0.405413 -0.000000 0.160686 0.899900 + 1651 1.000000 1.000000 1.010000 0.375616 -0.000000 0.173248 0.910438 + 1652 1.000000 1.000000 1.010000 0.345211 -0.000000 0.188807 0.919338 + 1653 1.000000 1.000000 1.010000 0.314703 -0.000000 0.206709 0.926409 + 1654 1.000000 1.000000 1.010000 0.284105 -0.000000 0.229410 0.930943 + 1655 1.000000 1.000000 1.010000 0.253198 -0.000000 0.257768 0.932441 + 1656 1.000000 1.000000 1.010000 0.222495 -0.000000 0.292903 0.929894 + 1657 1.000000 1.000000 1.010000 0.191880 -0.000000 0.339596 0.920791 + 1658 1.000000 1.000000 1.010000 0.161544 -0.000000 0.404140 0.900319 + 1659 1.000000 1.000000 1.010000 0.132461 -0.000000 0.492289 0.860294 + 1660 1.000000 1.000000 1.010000 0.105129 -0.000000 0.618447 0.778763 + 1661 1.000000 1.000000 1.010000 0.081858 -0.000000 0.794961 0.601113 + 1662 1.000000 1.000000 1.010000 0.067265 -0.000000 0.966433 0.247958 + 1663 1.000000 1.000000 1.010000 0.067341 0.000000 0.967944 -0.241972 + 1664 1.000000 1.000000 1.010000 0.081711 0.000000 0.795165 -0.600863 + 1665 1.000000 1.000000 1.010000 0.105016 0.000000 0.620914 -0.776812 + 1666 1.000000 1.000000 1.010000 0.131989 0.000000 0.492397 -0.860305 + 1667 1.000000 1.000000 1.010000 0.161307 0.000000 0.404035 -0.900408 + 1668 1.000000 1.000000 1.010000 0.191452 0.000000 0.340702 -0.920472 + 1669 1.000000 1.000000 1.010000 0.222083 0.000000 0.292838 -0.930013 + 1670 1.000000 1.000000 1.010000 0.252817 0.000000 0.257777 -0.932542 + 1671 1.000000 1.000000 1.010000 0.283910 0.000000 0.229370 -0.931013 + 1672 1.000000 1.000000 1.010000 0.314578 0.000000 0.206806 -0.926430 + 1673 1.000000 1.000000 1.010000 0.345073 0.000000 0.188397 -0.919473 + 1674 1.000000 1.000000 1.010000 0.375439 0.000000 0.173607 -0.910443 + 1675 1.000000 1.000000 1.010000 0.405125 0.000000 0.161091 -0.899958 + 1676 1.000000 1.000000 1.010000 0.434866 0.000000 0.149918 -0.887928 + 1677 1.000000 1.000000 1.010000 0.464000 0.000000 0.140167 -0.874676 + 1678 1.000000 1.000000 1.010000 0.492672 0.000000 0.131849 -0.860169 + 1679 1.000000 1.000000 1.010000 0.521020 0.000000 0.124942 -0.844350 + 1680 1.000000 1.000000 1.010000 0.548553 0.000000 0.118490 -0.827678 + 1681 1.000000 1.000000 1.010000 0.575705 0.000000 0.113049 -0.809805 + 1682 1.000000 1.000000 1.010000 0.602210 0.000000 0.107908 -0.791011 + 1683 1.000000 1.000000 1.010000 0.628097 0.000000 0.103543 -0.771215 + 1684 1.000000 1.000000 1.010000 0.653243 0.000000 0.099865 -0.750534 + 1685 1.000000 1.000000 1.010000 0.677618 0.000000 0.096068 -0.729113 + 1686 1.000000 1.000000 1.010000 0.701392 0.000000 0.092794 -0.706710 + 1687 1.000000 1.000000 1.010000 0.724458 0.000000 0.089720 -0.683455 + 1688 1.000000 1.000000 1.010000 0.746541 0.000000 0.087211 -0.659599 + 1689 1.000000 1.000000 1.010000 0.767937 0.000000 0.084573 -0.634918 + 1690 1.000000 1.000000 1.010000 0.788548 0.000000 0.082726 -0.609384 + 1691 1.000000 1.000000 1.010000 0.808307 0.000000 0.080619 -0.583216 + 1692 1.000000 1.000000 1.010000 0.827289 0.000000 0.078727 -0.556232 + 1693 1.000000 1.000000 1.010000 0.845152 0.000000 0.077175 -0.528926 + 1694 1.000000 1.000000 1.010000 0.862096 0.000000 0.075612 -0.501072 + 1695 1.000000 1.000000 1.010000 0.878245 0.000000 0.074265 -0.472409 + 1696 1.000000 1.000000 1.010000 0.893448 0.000000 0.072795 -0.443229 + 1697 1.000000 1.000000 1.010000 0.907601 0.000000 0.071773 -0.413652 + 1698 1.000000 1.000000 1.010000 0.920802 0.000000 0.070599 -0.383588 + 1699 1.000000 1.000000 1.010000 0.932957 0.000000 0.069778 -0.353161 + 1700 1.000000 1.000000 1.010000 0.944063 0.000000 0.069054 -0.322455 + 1701 1.000000 1.000000 1.010000 0.954285 0.000000 0.068136 -0.291029 + 1702 1.000000 1.000000 1.010000 0.963354 0.000000 0.067716 -0.259544 + 1703 1.000000 1.000000 1.010000 0.971415 0.000000 0.066956 -0.227749 + 1704 1.000000 1.000000 1.010000 0.978424 0.000000 0.066377 -0.195656 + 1705 1.000000 1.000000 1.010000 0.984376 0.000000 0.066167 -0.163176 + 1706 1.000000 1.000000 1.010000 0.989200 0.000000 0.065780 -0.130985 + 1707 1.000000 1.000000 1.010000 0.993029 0.000000 0.065388 -0.098066 + 1708 1.000000 1.000000 1.010000 0.995705 0.000000 0.065454 -0.065476 + 1709 1.000000 1.000000 1.010000 0.997340 0.000000 0.065146 -0.032701 + 1710 1.000000 1.000000 1.010000 0.995193 -0.000000 0.097935 0.000051 + 1711 1.000000 1.000000 1.010000 0.994666 -0.000000 0.097731 0.032999 + 1712 1.000000 1.000000 1.010000 0.992990 -0.000000 0.098097 0.065945 + 1713 1.000000 1.000000 1.010000 0.990248 -0.000000 0.098211 0.098812 + 1714 1.000000 1.000000 1.010000 0.986408 -0.000000 0.098601 0.131444 + 1715 1.000000 1.000000 1.010000 0.981427 -0.000000 0.099305 0.164131 + 1716 1.000000 1.000000 1.010000 0.975437 -0.000000 0.099617 0.196468 + 1717 1.000000 1.000000 1.010000 0.968323 -0.000000 0.100597 0.228542 + 1718 1.000000 1.000000 1.010000 0.960175 -0.000000 0.101308 0.260385 + 1719 1.000000 1.000000 1.010000 0.950931 -0.000000 0.102274 0.292012 + 1720 1.000000 1.000000 1.010000 0.940664 -0.000000 0.103476 0.323177 + 1721 1.000000 1.000000 1.010000 0.929444 -0.000000 0.104582 0.353831 + 1722 1.000000 1.000000 1.010000 0.917028 -0.000000 0.106284 0.384400 + 1723 1.000000 1.000000 1.010000 0.903645 -0.000000 0.107880 0.414473 + 1724 1.000000 1.000000 1.010000 0.889296 -0.000000 0.109343 0.444069 + 1725 1.000000 1.000000 1.010000 0.874030 -0.000000 0.111507 0.472903 + 1726 1.000000 1.000000 1.010000 0.857762 -0.000000 0.113404 0.501382 + 1727 1.000000 1.000000 1.010000 0.840563 -0.000000 0.115721 0.529208 + 1728 1.000000 1.000000 1.010000 0.822426 -0.000000 0.118472 0.556399 + 1729 1.000000 1.000000 1.010000 0.803323 -0.000000 0.121154 0.583090 + 1730 1.000000 1.000000 1.010000 0.783473 -0.000000 0.124323 0.608862 + 1731 1.000000 1.000000 1.010000 0.762753 -0.000000 0.127529 0.633991 + 1732 1.000000 1.000000 1.010000 0.741182 -0.000000 0.131409 0.658317 + 1733 1.000000 1.000000 1.010000 0.718674 -0.000000 0.135315 0.682054 + 1734 1.000000 1.000000 1.010000 0.695583 -0.000000 0.140106 0.704652 + 1735 1.000000 1.000000 1.010000 0.671753 -0.000000 0.144742 0.726497 + 1736 1.000000 1.000000 1.010000 0.646879 -0.000000 0.150327 0.747629 + 1737 1.000000 1.000000 1.010000 0.621742 -0.000000 0.156719 0.767383 + 1738 1.000000 1.000000 1.010000 0.595751 -0.000000 0.163624 0.786325 + 1739 1.000000 1.000000 1.010000 0.569067 -0.000000 0.171106 0.804292 + 1740 1.000000 1.000000 1.010000 0.541990 -0.000000 0.179893 0.820905 + 1741 1.000000 1.000000 1.010000 0.514413 -0.000000 0.189054 0.836444 + 1742 1.000000 1.000000 1.010000 0.486146 -0.000000 0.200119 0.850655 + 1743 1.000000 1.000000 1.010000 0.457388 -0.000000 0.212728 0.863448 + 1744 1.000000 1.000000 1.010000 0.428530 -0.000000 0.227447 0.874431 + 1745 1.000000 1.000000 1.010000 0.398940 -0.000000 0.244015 0.883914 + 1746 1.000000 1.000000 1.010000 0.369479 -0.000000 0.263244 0.891172 + 1747 1.000000 1.000000 1.010000 0.339593 -0.000000 0.286425 0.895900 + 1748 1.000000 1.000000 1.010000 0.309521 -0.000000 0.314526 0.897369 + 1749 1.000000 1.000000 1.010000 0.279608 -0.000000 0.348024 0.894818 + 1750 1.000000 1.000000 1.010000 0.249685 -0.000000 0.389680 0.886457 + 1751 1.000000 1.000000 1.010000 0.220531 -0.000000 0.441625 0.869674 + 1752 1.000000 1.000000 1.010000 0.191834 -0.000000 0.508550 0.839390 + 1753 1.000000 1.000000 1.010000 0.164530 -0.000000 0.592344 0.788707 + 1754 1.000000 1.000000 1.010000 0.139550 -0.000000 0.698192 0.702178 + 1755 1.000000 1.000000 1.010000 0.118253 -0.000000 0.824181 0.553842 + 1756 1.000000 1.000000 1.010000 0.103238 -0.000000 0.942238 0.318637 + 1757 1.000000 1.000000 1.010000 0.098023 -0.000000 0.995182 0.001885 + 1758 1.000000 1.000000 1.010000 0.103353 0.000000 0.943226 -0.315661 + 1759 1.000000 1.000000 1.010000 0.118189 0.000000 0.824880 -0.552815 + 1760 1.000000 1.000000 1.010000 0.139270 0.000000 0.700330 -0.700101 + 1761 1.000000 1.000000 1.010000 0.164350 0.000000 0.592391 -0.788709 + 1762 1.000000 1.000000 1.010000 0.191592 0.000000 0.508870 -0.839252 + 1763 1.000000 1.000000 1.010000 0.220257 0.000000 0.442577 -0.869260 + 1764 1.000000 1.000000 1.010000 0.249440 0.000000 0.391104 -0.885899 + 1765 1.000000 1.000000 1.010000 0.279338 0.000000 0.349111 -0.894479 + 1766 1.000000 1.000000 1.010000 0.309250 0.000000 0.314852 -0.897348 + 1767 1.000000 1.000000 1.010000 0.339378 0.000000 0.287236 -0.895722 + 1768 1.000000 1.000000 1.010000 0.369158 0.000000 0.263884 -0.891116 + 1769 1.000000 1.000000 1.010000 0.398900 0.000000 0.243887 -0.883967 + 1770 1.000000 1.000000 1.010000 0.428145 0.000000 0.227655 -0.874566 + 1771 1.000000 1.000000 1.010000 0.457335 0.000000 0.213044 -0.863399 + 1772 1.000000 1.000000 1.010000 0.485955 0.000000 0.200167 -0.850753 + 1773 1.000000 1.000000 1.010000 0.514092 0.000000 0.189597 -0.836518 + 1774 1.000000 1.000000 1.010000 0.541848 0.000000 0.179710 -0.821039 + 1775 1.000000 1.000000 1.010000 0.569080 0.000000 0.171353 -0.804230 + 1776 1.000000 1.000000 1.010000 0.595687 0.000000 0.163315 -0.786438 + 1777 1.000000 1.000000 1.010000 0.621733 0.000000 0.156758 -0.767382 + 1778 1.000000 1.000000 1.010000 0.647076 0.000000 0.150703 -0.747383 + 1779 1.000000 1.000000 1.010000 0.671728 0.000000 0.144813 -0.726506 + 1780 1.000000 1.000000 1.010000 0.695549 0.000000 0.140039 -0.704699 + 1781 1.000000 1.000000 1.010000 0.718829 0.000000 0.135662 -0.681822 + 1782 1.000000 1.000000 1.010000 0.741036 0.000000 0.131647 -0.658434 + 1783 1.000000 1.000000 1.010000 0.762646 0.000000 0.127899 -0.634045 + 1784 1.000000 1.000000 1.010000 0.783484 0.000000 0.124442 -0.608824 + 1785 1.000000 1.000000 1.010000 0.803475 0.000000 0.121078 -0.582896 + 1786 1.000000 1.000000 1.010000 0.822475 0.000000 0.118307 -0.556361 + 1787 1.000000 1.000000 1.010000 0.840707 0.000000 0.115797 -0.528963 + 1788 1.000000 1.000000 1.010000 0.857823 0.000000 0.113389 -0.501280 + 1789 1.000000 1.000000 1.010000 0.874117 0.000000 0.111460 -0.472753 + 1790 1.000000 1.000000 1.010000 0.889463 0.000000 0.109431 -0.443712 + 1791 1.000000 1.000000 1.010000 0.903763 0.000000 0.107734 -0.414254 + 1792 1.000000 1.000000 1.010000 0.917083 0.000000 0.106103 -0.384318 + 1793 1.000000 1.000000 1.010000 0.929510 0.000000 0.104792 -0.353596 + 1794 1.000000 1.000000 1.010000 0.940725 0.000000 0.103402 -0.323024 + 1795 1.000000 1.000000 1.010000 0.950995 0.000000 0.102551 -0.291706 + 1796 1.000000 1.000000 1.010000 0.960277 0.000000 0.101261 -0.260027 + 1797 1.000000 1.000000 1.010000 0.968397 0.000000 0.100630 -0.228212 + 1798 1.000000 1.000000 1.010000 0.975469 0.000000 0.099951 -0.196137 + 1799 1.000000 1.000000 1.010000 0.981478 0.000000 0.099331 -0.163812 + 1800 1.000000 1.000000 1.010000 0.986439 0.000000 0.098724 -0.131118 + 1801 1.000000 1.000000 1.010000 0.990284 0.000000 0.098209 -0.098454 + 1802 1.000000 1.000000 1.010000 0.993001 0.000000 0.098131 -0.065721 + 1803 1.000000 1.000000 1.010000 0.994668 0.000000 0.097797 -0.032719 + 1804 1.000000 1.000000 1.010000 0.991462 -0.000000 0.130397 0.000241 + 1805 1.000000 1.000000 1.010000 0.990922 -0.000000 0.130324 0.032992 + 1806 1.000000 1.000000 1.010000 0.989230 -0.000000 0.130703 0.065891 + 1807 1.000000 1.000000 1.010000 0.986442 -0.000000 0.131141 0.098664 + 1808 1.000000 1.000000 1.010000 0.982590 -0.000000 0.131336 0.131407 + 1809 1.000000 1.000000 1.010000 0.977615 -0.000000 0.132118 0.163748 + 1810 1.000000 1.000000 1.010000 0.971521 -0.000000 0.132799 0.196241 + 1811 1.000000 1.000000 1.010000 0.964387 -0.000000 0.133812 0.228150 + 1812 1.000000 1.000000 1.010000 0.956101 -0.000000 0.135127 0.260022 + 1813 1.000000 1.000000 1.010000 0.946813 -0.000000 0.136279 0.291502 + 1814 1.000000 1.000000 1.010000 0.936434 -0.000000 0.137944 0.322587 + 1815 1.000000 1.000000 1.010000 0.925055 -0.000000 0.139555 0.353268 + 1816 1.000000 1.000000 1.010000 0.912573 -0.000000 0.141702 0.383576 + 1817 1.000000 1.000000 1.010000 0.899181 -0.000000 0.143812 0.413268 + 1818 1.000000 1.000000 1.010000 0.884619 -0.000000 0.145932 0.442892 + 1819 1.000000 1.000000 1.010000 0.869164 -0.000000 0.148661 0.471650 + 1820 1.000000 1.000000 1.010000 0.852833 -0.000000 0.151525 0.499716 + 1821 1.000000 1.000000 1.010000 0.835538 -0.000000 0.154559 0.527246 + 1822 1.000000 1.000000 1.010000 0.817218 -0.000000 0.158227 0.554184 + 1823 1.000000 1.000000 1.010000 0.798056 -0.000000 0.161981 0.580405 + 1824 1.000000 1.000000 1.010000 0.778062 -0.000000 0.166204 0.605801 + 1825 1.000000 1.000000 1.010000 0.757242 -0.000000 0.170507 0.630486 + 1826 1.000000 1.000000 1.010000 0.735460 -0.000000 0.175644 0.654407 + 1827 1.000000 1.000000 1.010000 0.712977 -0.000000 0.181449 0.677304 + 1828 1.000000 1.000000 1.010000 0.689672 -0.000000 0.187406 0.699451 + 1829 1.000000 1.000000 1.010000 0.665621 -0.000000 0.194218 0.720575 + 1830 1.000000 1.000000 1.010000 0.640977 -0.000000 0.201537 0.740629 + 1831 1.000000 1.000000 1.010000 0.615613 -0.000000 0.210088 0.759529 + 1832 1.000000 1.000000 1.010000 0.589777 -0.000000 0.219339 0.777209 + 1833 1.000000 1.000000 1.010000 0.563129 -0.000000 0.229468 0.793870 + 1834 1.000000 1.000000 1.010000 0.536308 -0.000000 0.240826 0.808935 + 1835 1.000000 1.000000 1.010000 0.508639 -0.000000 0.254041 0.822648 + 1836 1.000000 1.000000 1.010000 0.480487 -0.000000 0.268670 0.834834 + 1837 1.000000 1.000000 1.010000 0.452226 -0.000000 0.285856 0.844854 + 1838 1.000000 1.000000 1.010000 0.423597 -0.000000 0.305235 0.852876 + 1839 1.000000 1.000000 1.010000 0.394680 -0.000000 0.327687 0.858399 + 1840 1.000000 1.000000 1.010000 0.365589 -0.000000 0.353175 0.861169 + 1841 1.000000 1.000000 1.010000 0.336316 -0.000000 0.384130 0.859846 + 1842 1.000000 1.000000 1.010000 0.307646 -0.000000 0.419802 0.853885 + 1843 1.000000 1.000000 1.010000 0.278836 -0.000000 0.463358 0.841160 + 1844 1.000000 1.000000 1.010000 0.250803 -0.000000 0.515363 0.819450 + 1845 1.000000 1.000000 1.010000 0.223782 -0.000000 0.577714 0.784964 + 1846 1.000000 1.000000 1.010000 0.197975 -0.000000 0.652912 0.731103 + 1847 1.000000 1.000000 1.010000 0.174385 -0.000000 0.740327 0.649235 + 1848 1.000000 1.000000 1.010000 0.154383 -0.000000 0.836331 0.526039 + 1849 1.000000 1.000000 1.010000 0.139712 -0.000000 0.925506 0.352022 + 1850 1.000000 1.000000 1.010000 0.131607 -0.000000 0.983298 0.125715 + 1851 1.000000 1.000000 1.010000 0.131432 0.000000 0.983795 -0.121955 + 1852 1.000000 1.000000 1.010000 0.139503 0.000000 0.926965 -0.348245 + 1853 1.000000 1.000000 1.010000 0.154593 0.000000 0.837556 -0.524023 + 1854 1.000000 1.000000 1.010000 0.174297 0.000000 0.741468 -0.647955 + 1855 1.000000 1.000000 1.010000 0.197780 0.000000 0.653134 -0.730958 + 1856 1.000000 1.000000 1.010000 0.223339 0.000000 0.578935 -0.784190 + 1857 1.000000 1.000000 1.010000 0.250510 0.000000 0.516523 -0.818809 + 1858 1.000000 1.000000 1.010000 0.278715 0.000000 0.463686 -0.841019 + 1859 1.000000 1.000000 1.010000 0.307469 0.000000 0.420363 -0.853673 + 1860 1.000000 1.000000 1.010000 0.336225 0.000000 0.384646 -0.859651 + 1861 1.000000 1.000000 1.010000 0.365507 0.000000 0.354002 -0.860864 + 1862 1.000000 1.000000 1.010000 0.394428 0.000000 0.327672 -0.858521 + 1863 1.000000 1.000000 1.010000 0.423472 0.000000 0.305124 -0.852977 + 1864 1.000000 1.000000 1.010000 0.452001 0.000000 0.286319 -0.844817 + 1865 1.000000 1.000000 1.010000 0.480556 0.000000 0.268776 -0.834760 + 1866 1.000000 1.000000 1.010000 0.508522 0.000000 0.254604 -0.822546 + 1867 1.000000 1.000000 1.010000 0.536032 0.000000 0.241285 -0.808982 + 1868 1.000000 1.000000 1.010000 0.563309 0.000000 0.229776 -0.793653 + 1869 1.000000 1.000000 1.010000 0.589682 0.000000 0.219413 -0.777260 + 1870 1.000000 1.000000 1.010000 0.615564 0.000000 0.209994 -0.759595 + 1871 1.000000 1.000000 1.010000 0.641071 0.000000 0.201558 -0.740542 + 1872 1.000000 1.000000 1.010000 0.665746 0.000000 0.194323 -0.720431 + 1873 1.000000 1.000000 1.010000 0.689663 0.000000 0.187576 -0.699414 + 1874 1.000000 1.000000 1.010000 0.713040 0.000000 0.181482 -0.677228 + 1875 1.000000 1.000000 1.010000 0.735591 0.000000 0.176006 -0.654161 + 1876 1.000000 1.000000 1.010000 0.757295 0.000000 0.170631 -0.630388 + 1877 1.000000 1.000000 1.010000 0.777982 0.000000 0.166229 -0.605898 + 1878 1.000000 1.000000 1.010000 0.798066 0.000000 0.161999 -0.580386 + 1879 1.000000 1.000000 1.010000 0.817227 0.000000 0.158073 -0.554215 + 1880 1.000000 1.000000 1.010000 0.835576 0.000000 0.154652 -0.527159 + 1881 1.000000 1.000000 1.010000 0.852855 0.000000 0.151624 -0.499648 + 1882 1.000000 1.000000 1.010000 0.869324 0.000000 0.148682 -0.471349 + 1883 1.000000 1.000000 1.010000 0.884824 0.000000 0.146036 -0.442447 + 1884 1.000000 1.000000 1.010000 0.899166 0.000000 0.143819 -0.413299 + 1885 1.000000 1.000000 1.010000 0.912628 0.000000 0.141514 -0.383516 + 1886 1.000000 1.000000 1.010000 0.925044 0.000000 0.139722 -0.353229 + 1887 1.000000 1.000000 1.010000 0.936464 0.000000 0.138016 -0.322471 + 1888 1.000000 1.000000 1.010000 0.946872 0.000000 0.136369 -0.291268 + 1889 1.000000 1.000000 1.010000 0.956167 0.000000 0.135179 -0.259754 + 1890 1.000000 1.000000 1.010000 0.964411 0.000000 0.134091 -0.227884 + 1891 1.000000 1.000000 1.010000 0.971593 0.000000 0.133133 -0.195662 + 1892 1.000000 1.000000 1.010000 0.977644 0.000000 0.132199 -0.163510 + 1893 1.000000 1.000000 1.010000 0.982620 0.000000 0.131435 -0.131079 + 1894 1.000000 1.000000 1.010000 0.986503 0.000000 0.130922 -0.098338 + 1895 1.000000 1.000000 1.010000 0.989254 0.000000 0.130627 -0.065676 + 1896 1.000000 1.000000 1.010000 0.990918 0.000000 0.130440 -0.032658 + 1897 1.000000 1.000000 1.010000 0.986672 -0.000000 0.162722 0.000039 + 1898 1.000000 1.000000 1.010000 0.986102 -0.000000 0.162756 0.033360 + 1899 1.000000 1.000000 1.010000 0.984391 -0.000000 0.162962 0.066463 + 1900 1.000000 1.000000 1.010000 0.981550 -0.000000 0.163331 0.099412 + 1901 1.000000 1.000000 1.010000 0.977513 -0.000000 0.164307 0.132177 + 1902 1.000000 1.000000 1.010000 0.972420 -0.000000 0.164940 0.164905 + 1903 1.000000 1.000000 1.010000 0.966128 -0.000000 0.166260 0.197369 + 1904 1.000000 1.000000 1.010000 0.958784 -0.000000 0.167574 0.229461 + 1905 1.000000 1.000000 1.010000 0.950263 -0.000000 0.168928 0.261654 + 1906 1.000000 1.000000 1.010000 0.940752 -0.000000 0.170548 0.293086 + 1907 1.000000 1.000000 1.010000 0.930105 -0.000000 0.172652 0.324185 + 1908 1.000000 1.000000 1.010000 0.918336 -0.000000 0.174832 0.355095 + 1909 1.000000 1.000000 1.010000 0.905656 -0.000000 0.177163 0.385228 + 1910 1.000000 1.000000 1.010000 0.891736 -0.000000 0.180082 0.415182 + 1911 1.000000 1.000000 1.010000 0.877015 -0.000000 0.182982 0.444254 + 1912 1.000000 1.000000 1.010000 0.861143 -0.000000 0.186340 0.472980 + 1913 1.000000 1.000000 1.010000 0.844376 -0.000000 0.190069 0.500902 + 1914 1.000000 1.000000 1.010000 0.826579 -0.000000 0.194142 0.528277 + 1915 1.000000 1.000000 1.010000 0.807944 -0.000000 0.198582 0.554790 + 1916 1.000000 1.000000 1.010000 0.788197 -0.000000 0.203578 0.580777 + 1917 1.000000 1.000000 1.010000 0.767788 -0.000000 0.209154 0.605604 + 1918 1.000000 1.000000 1.010000 0.746503 -0.000000 0.214891 0.629726 + 1919 1.000000 1.000000 1.010000 0.724435 -0.000000 0.221447 0.652806 + 1920 1.000000 1.000000 1.010000 0.701503 -0.000000 0.228828 0.674931 + 1921 1.000000 1.000000 1.010000 0.677852 -0.000000 0.237104 0.695915 + 1922 1.000000 1.000000 1.010000 0.653421 -0.000000 0.245459 0.716094 + 1923 1.000000 1.000000 1.010000 0.628388 -0.000000 0.255625 0.734700 + 1924 1.000000 1.000000 1.010000 0.602769 -0.000000 0.266177 0.752209 + 1925 1.000000 1.000000 1.010000 0.576331 -0.000000 0.278609 0.768258 + 1926 1.000000 1.000000 1.010000 0.549734 -0.000000 0.292177 0.782576 + 1927 1.000000 1.000000 1.010000 0.522457 -0.000000 0.307037 0.795467 + 1928 1.000000 1.000000 1.010000 0.494672 -0.000000 0.324758 0.806121 + 1929 1.000000 1.000000 1.010000 0.466877 -0.000000 0.343842 0.814738 + 1930 1.000000 1.000000 1.010000 0.438437 -0.000000 0.365894 0.820911 + 1931 1.000000 1.000000 1.010000 0.409993 -0.000000 0.391566 0.823761 + 1932 1.000000 1.000000 1.010000 0.381817 -0.000000 0.420921 0.822825 + 1933 1.000000 1.000000 1.010000 0.353333 -0.000000 0.454245 0.817812 + 1934 1.000000 1.000000 1.010000 0.325292 -0.000000 0.493884 0.806389 + 1935 1.000000 1.000000 1.010000 0.297658 -0.000000 0.539365 0.787709 + 1936 1.000000 1.000000 1.010000 0.271155 -0.000000 0.592323 0.758702 + 1937 1.000000 1.000000 1.010000 0.245458 -0.000000 0.654257 0.715331 + 1938 1.000000 1.000000 1.010000 0.221923 -0.000000 0.724137 0.652975 + 1939 1.000000 1.000000 1.010000 0.200666 -0.000000 0.799569 0.566059 + 1940 1.000000 1.000000 1.010000 0.183279 -0.000000 0.876314 0.445515 + 1941 1.000000 1.000000 1.010000 0.170545 -0.000000 0.942270 0.288170 + 1942 1.000000 1.000000 1.010000 0.163809 -0.000000 0.981270 0.101367 + 1943 1.000000 1.000000 1.010000 0.163624 0.000000 0.981597 -0.098457 + 1944 1.000000 1.000000 1.010000 0.170195 0.000000 0.942860 -0.286440 + 1945 1.000000 1.000000 1.010000 0.183133 0.000000 0.877559 -0.443117 + 1946 1.000000 1.000000 1.010000 0.200475 0.000000 0.801039 -0.564045 + 1947 1.000000 1.000000 1.010000 0.221771 0.000000 0.724754 -0.652341 + 1948 1.000000 1.000000 1.010000 0.245512 0.000000 0.654858 -0.714762 + 1949 1.000000 1.000000 1.010000 0.270784 0.000000 0.593175 -0.758168 + 1950 1.000000 1.000000 1.010000 0.297581 0.000000 0.539864 -0.787396 + 1951 1.000000 1.000000 1.010000 0.325156 0.000000 0.493544 -0.806652 + 1952 1.000000 1.000000 1.010000 0.353200 0.000000 0.454943 -0.817482 + 1953 1.000000 1.000000 1.010000 0.381599 0.000000 0.420972 -0.822900 + 1954 1.000000 1.000000 1.010000 0.410077 0.000000 0.391720 -0.823646 + 1955 1.000000 1.000000 1.010000 0.438423 0.000000 0.366320 -0.820728 + 1956 1.000000 1.000000 1.010000 0.466552 0.000000 0.344290 -0.814735 + 1957 1.000000 1.000000 1.010000 0.494704 0.000000 0.324877 -0.806054 + 1958 1.000000 1.000000 1.010000 0.522263 0.000000 0.307755 -0.795316 + 1959 1.000000 1.000000 1.010000 0.549593 0.000000 0.292086 -0.782709 + 1960 1.000000 1.000000 1.010000 0.576363 0.000000 0.278896 -0.768129 + 1961 1.000000 1.000000 1.010000 0.602623 0.000000 0.266401 -0.752247 + 1962 1.000000 1.000000 1.010000 0.628418 0.000000 0.255695 -0.734650 + 1963 1.000000 1.000000 1.010000 0.653408 0.000000 0.245719 -0.716017 + 1964 1.000000 1.000000 1.010000 0.677848 0.000000 0.236835 -0.696011 + 1965 1.000000 1.000000 1.010000 0.701356 0.000000 0.229111 -0.674987 + 1966 1.000000 1.000000 1.010000 0.724351 0.000000 0.221868 -0.652756 + 1967 1.000000 1.000000 1.010000 0.746412 0.000000 0.215136 -0.629751 + 1968 1.000000 1.000000 1.010000 0.767871 0.000000 0.209063 -0.605530 + 1969 1.000000 1.000000 1.010000 0.788352 0.000000 0.203776 -0.580496 + 1970 1.000000 1.000000 1.010000 0.807988 0.000000 0.198740 -0.554669 + 1971 1.000000 1.000000 1.010000 0.826678 0.000000 0.194285 -0.528069 + 1972 1.000000 1.000000 1.010000 0.844427 0.000000 0.190023 -0.500833 + 1973 1.000000 1.000000 1.010000 0.861160 0.000000 0.186521 -0.472878 + 1974 1.000000 1.000000 1.010000 0.876997 0.000000 0.183038 -0.444268 + 1975 1.000000 1.000000 1.010000 0.891824 0.000000 0.180071 -0.414999 + 1976 1.000000 1.000000 1.010000 0.905640 0.000000 0.177216 -0.385241 + 1977 1.000000 1.000000 1.010000 0.918403 0.000000 0.174730 -0.354974 + 1978 1.000000 1.000000 1.010000 0.930106 0.000000 0.172765 -0.324122 + 1979 1.000000 1.000000 1.010000 0.940749 0.000000 0.170710 -0.293001 + 1980 1.000000 1.000000 1.010000 0.950430 0.000000 0.168770 -0.261150 + 1981 1.000000 1.000000 1.010000 0.958830 0.000000 0.167426 -0.229378 + 1982 1.000000 1.000000 1.010000 0.966208 0.000000 0.166212 -0.197018 + 1983 1.000000 1.000000 1.010000 0.972435 0.000000 0.165053 -0.164705 + 1984 1.000000 1.000000 1.010000 0.977601 0.000000 0.164075 -0.131816 + 1985 1.000000 1.000000 1.010000 0.981569 0.000000 0.163452 -0.099021 + 1986 1.000000 1.000000 1.010000 0.984409 0.000000 0.163008 -0.066080 + 1987 1.000000 1.000000 1.010000 0.986134 0.000000 0.162669 -0.032831 + 1988 1.000000 1.000000 1.010000 0.980839 -0.000000 0.194822 0.000278 + 1989 1.000000 1.000000 1.010000 0.980230 -0.000000 0.194998 0.033552 + 1990 1.000000 1.000000 1.010000 0.978499 -0.000000 0.195257 0.066436 + 1991 1.000000 1.000000 1.010000 0.975539 -0.000000 0.195906 0.099726 + 1992 1.000000 1.000000 1.010000 0.971497 -0.000000 0.196585 0.132469 + 1993 1.000000 1.000000 1.010000 0.966229 -0.000000 0.197705 0.165271 + 1994 1.000000 1.000000 1.010000 0.959755 -0.000000 0.199306 0.197858 + 1995 1.000000 1.000000 1.010000 0.952232 -0.000000 0.200758 0.230110 + 1996 1.000000 1.000000 1.010000 0.943498 -0.000000 0.202743 0.262120 + 1997 1.000000 1.000000 1.010000 0.933732 -0.000000 0.204691 0.293676 + 1998 1.000000 1.000000 1.010000 0.922832 -0.000000 0.207233 0.324708 + 1999 1.000000 1.000000 1.010000 0.910847 -0.000000 0.209817 0.355436 + 2000 1.000000 1.000000 1.010000 0.897745 -0.000000 0.212751 0.385733 + 2001 1.000000 1.000000 1.010000 0.883630 -0.000000 0.216193 0.415281 + 2002 1.000000 1.000000 1.010000 0.868485 -0.000000 0.219876 0.444284 + 2003 1.000000 1.000000 1.010000 0.852236 -0.000000 0.224303 0.472632 + 2004 1.000000 1.000000 1.010000 0.835005 -0.000000 0.228937 0.500355 + 2005 1.000000 1.000000 1.010000 0.816898 -0.000000 0.234055 0.527159 + 2006 1.000000 1.000000 1.010000 0.797875 -0.000000 0.239339 0.553273 + 2007 1.000000 1.000000 1.010000 0.777921 -0.000000 0.245652 0.578354 + 2008 1.000000 1.000000 1.010000 0.757222 -0.000000 0.252299 0.602461 + 2009 1.000000 1.000000 1.010000 0.735337 -0.000000 0.259852 0.625905 + 2010 1.000000 1.000000 1.010000 0.712984 -0.000000 0.268175 0.647870 + 2011 1.000000 1.000000 1.010000 0.689642 -0.000000 0.277313 0.668947 + 2012 1.000000 1.000000 1.010000 0.665847 -0.000000 0.287342 0.688536 + 2013 1.000000 1.000000 1.010000 0.641066 -0.000000 0.298353 0.707121 + 2014 1.000000 1.000000 1.010000 0.615903 -0.000000 0.310415 0.724090 + 2015 1.000000 1.000000 1.010000 0.590211 -0.000000 0.324022 0.739365 + 2016 1.000000 1.000000 1.010000 0.563622 -0.000000 0.339156 0.753195 + 2017 1.000000 1.000000 1.010000 0.536802 -0.000000 0.355831 0.765002 + 2018 1.000000 1.000000 1.010000 0.509733 -0.000000 0.375027 0.774291 + 2019 1.000000 1.000000 1.010000 0.482286 -0.000000 0.396646 0.781071 + 2020 1.000000 1.000000 1.010000 0.454509 -0.000000 0.420530 0.785224 + 2021 1.000000 1.000000 1.010000 0.426805 -0.000000 0.447995 0.785581 + 2022 1.000000 1.000000 1.010000 0.399350 -0.000000 0.478701 0.781898 + 2023 1.000000 1.000000 1.010000 0.371708 -0.000000 0.514402 0.772802 + 2024 1.000000 1.000000 1.010000 0.344841 -0.000000 0.554711 0.757219 + 2025 1.000000 1.000000 1.010000 0.318382 -0.000000 0.600430 0.733564 + 2026 1.000000 1.000000 1.010000 0.293238 -0.000000 0.652067 0.699157 + 2027 1.000000 1.000000 1.010000 0.269094 -0.000000 0.710472 0.650245 + 2028 1.000000 1.000000 1.010000 0.247408 -0.000000 0.773423 0.583615 + 2029 1.000000 1.000000 1.010000 0.228316 -0.000000 0.837737 0.496053 + 2030 1.000000 1.000000 1.010000 0.212528 -0.000000 0.899426 0.381921 + 2031 1.000000 1.000000 1.010000 0.201685 -0.000000 0.948605 0.243868 + 2032 1.000000 1.000000 1.010000 0.195707 -0.000000 0.977077 0.083778 + 2033 1.000000 1.000000 1.010000 0.195708 0.000000 0.977201 -0.082325 + 2034 1.000000 1.000000 1.010000 0.201349 0.000000 0.949333 -0.241301 + 2035 1.000000 1.000000 1.010000 0.212616 0.000000 0.900043 -0.380418 + 2036 1.000000 1.000000 1.010000 0.228122 0.000000 0.838567 -0.494738 + 2037 1.000000 1.000000 1.010000 0.247155 0.000000 0.773947 -0.583027 + 2038 1.000000 1.000000 1.010000 0.269038 0.000000 0.711458 -0.649189 + 2039 1.000000 1.000000 1.010000 0.292817 0.000000 0.653208 -0.698268 + 2040 1.000000 1.000000 1.010000 0.318325 0.000000 0.600889 -0.733213 + 2041 1.000000 1.000000 1.010000 0.344525 0.000000 0.555263 -0.756958 + 2042 1.000000 1.000000 1.010000 0.371527 0.000000 0.514947 -0.772527 + 2043 1.000000 1.000000 1.010000 0.399194 0.000000 0.479218 -0.781662 + 2044 1.000000 1.000000 1.010000 0.426744 0.000000 0.448432 -0.785365 + 2045 1.000000 1.000000 1.010000 0.454630 0.000000 0.420991 -0.784907 + 2046 1.000000 1.000000 1.010000 0.482093 0.000000 0.396975 -0.781023 + 2047 1.000000 1.000000 1.010000 0.509757 0.000000 0.375435 -0.774078 + 2048 1.000000 1.000000 1.010000 0.536872 0.000000 0.355984 -0.764882 + 2049 1.000000 1.000000 1.010000 0.563567 0.000000 0.339348 -0.753150 + 2050 1.000000 1.000000 1.010000 0.589928 0.000000 0.324191 -0.739517 + 2051 1.000000 1.000000 1.010000 0.615801 0.000000 0.310683 -0.724061 + 2052 1.000000 1.000000 1.010000 0.641139 0.000000 0.298507 -0.706990 + 2053 1.000000 1.000000 1.010000 0.665810 0.000000 0.287270 -0.688602 + 2054 1.000000 1.000000 1.010000 0.689618 0.000000 0.277445 -0.668917 + 2055 1.000000 1.000000 1.010000 0.713041 0.000000 0.268088 -0.647843 + 2056 1.000000 1.000000 1.010000 0.735542 0.000000 0.259938 -0.625628 + 2057 1.000000 1.000000 1.010000 0.757114 0.000000 0.252801 -0.602387 + 2058 1.000000 1.000000 1.010000 0.777968 0.000000 0.245768 -0.578242 + 2059 1.000000 1.000000 1.010000 0.797985 0.000000 0.239643 -0.552983 + 2060 1.000000 1.000000 1.010000 0.817054 0.000000 0.234006 -0.526938 + 2061 1.000000 1.000000 1.010000 0.835230 0.000000 0.229008 -0.499947 + 2062 1.000000 1.000000 1.010000 0.852372 0.000000 0.224141 -0.472465 + 2063 1.000000 1.000000 1.010000 0.868460 0.000000 0.220253 -0.444146 + 2064 1.000000 1.000000 1.010000 0.883692 0.000000 0.216389 -0.415046 + 2065 1.000000 1.000000 1.010000 0.897869 0.000000 0.212872 -0.385379 + 2066 1.000000 1.000000 1.010000 0.910886 0.000000 0.210058 -0.355192 + 2067 1.000000 1.000000 1.010000 0.922964 0.000000 0.207112 -0.324410 + 2068 1.000000 1.000000 1.010000 0.933785 0.000000 0.204650 -0.293538 + 2069 1.000000 1.000000 1.010000 0.943575 0.000000 0.202604 -0.261951 + 2070 1.000000 1.000000 1.010000 0.952301 0.000000 0.200777 -0.229807 + 2071 1.000000 1.000000 1.010000 0.959820 0.000000 0.199237 -0.197609 + 2072 1.000000 1.000000 1.010000 0.966221 0.000000 0.197875 -0.165112 + 2073 1.000000 1.000000 1.010000 0.971489 0.000000 0.196650 -0.132430 + 2074 1.000000 1.000000 1.010000 0.975540 0.000000 0.196019 -0.099489 + 2075 1.000000 1.000000 1.010000 0.978450 0.000000 0.195520 -0.066385 + 2076 1.000000 1.000000 1.010000 0.980241 0.000000 0.195043 -0.032945 + 2077 1.000000 1.000000 1.010000 0.973952 -0.000000 0.226755 0.000103 + 2078 1.000000 1.000000 1.010000 0.973323 -0.000000 0.226940 0.033760 + 2079 1.000000 1.000000 1.010000 0.971478 -0.000000 0.227345 0.067411 + 2080 1.000000 1.000000 1.010000 0.968366 -0.000000 0.228195 0.100965 + 2081 1.000000 1.000000 1.010000 0.964085 -0.000000 0.229184 0.134219 + 2082 1.000000 1.000000 1.010000 0.958602 -0.000000 0.230463 0.167237 + 2083 1.000000 1.000000 1.010000 0.951911 -0.000000 0.232091 0.199999 + 2084 1.000000 1.000000 1.010000 0.944018 -0.000000 0.233923 0.232615 + 2085 1.000000 1.000000 1.010000 0.934900 -0.000000 0.236484 0.264647 + 2086 1.000000 1.000000 1.010000 0.924673 -0.000000 0.238905 0.296487 + 2087 1.000000 1.000000 1.010000 0.913266 -0.000000 0.241833 0.327815 + 2088 1.000000 1.000000 1.010000 0.900735 -0.000000 0.245142 0.358584 + 2089 1.000000 1.000000 1.010000 0.887163 -0.000000 0.248907 0.388570 + 2090 1.000000 1.000000 1.010000 0.872384 -0.000000 0.253231 0.418115 + 2091 1.000000 1.000000 1.010000 0.856563 -0.000000 0.257850 0.447004 + 2092 1.000000 1.000000 1.010000 0.839668 -0.000000 0.263188 0.475069 + 2093 1.000000 1.000000 1.010000 0.821941 -0.000000 0.268913 0.502094 + 2094 1.000000 1.000000 1.010000 0.803038 -0.000000 0.275294 0.528529 + 2095 1.000000 1.000000 1.010000 0.783382 -0.000000 0.282014 0.553878 + 2096 1.000000 1.000000 1.010000 0.762730 -0.000000 0.289749 0.578176 + 2097 1.000000 1.000000 1.010000 0.741124 -0.000000 0.298152 0.601532 + 2098 1.000000 1.000000 1.010000 0.718791 -0.000000 0.307405 0.623571 + 2099 1.000000 1.000000 1.010000 0.695527 -0.000000 0.317831 0.644380 + 2100 1.000000 1.000000 1.010000 0.671685 -0.000000 0.329069 0.663741 + 2101 1.000000 1.000000 1.010000 0.647222 -0.000000 0.341514 0.681521 + 2102 1.000000 1.000000 1.010000 0.621897 -0.000000 0.355167 0.697925 + 2103 1.000000 1.000000 1.010000 0.596240 -0.000000 0.370859 0.712012 + 2104 1.000000 1.000000 1.010000 0.569912 -0.000000 0.387756 0.724462 + 2105 1.000000 1.000000 1.010000 0.543201 -0.000000 0.406753 0.734496 + 2106 1.000000 1.000000 1.010000 0.516307 -0.000000 0.428367 0.741572 + 2107 1.000000 1.000000 1.010000 0.489202 -0.000000 0.452041 0.745882 + 2108 1.000000 1.000000 1.010000 0.461860 -0.000000 0.478622 0.746730 + 2109 1.000000 1.000000 1.010000 0.434545 -0.000000 0.508377 0.743453 + 2110 1.000000 1.000000 1.010000 0.407712 -0.000000 0.542559 0.734439 + 2111 1.000000 1.000000 1.010000 0.380943 -0.000000 0.580066 0.720004 + 2112 1.000000 1.000000 1.010000 0.355154 -0.000000 0.622395 0.697489 + 2113 1.000000 1.000000 1.010000 0.330194 -0.000000 0.669295 0.665594 + 2114 1.000000 1.000000 1.010000 0.306752 -0.000000 0.720885 0.621472 + 2115 1.000000 1.000000 1.010000 0.285118 -0.000000 0.775739 0.562971 + 2116 1.000000 1.000000 1.010000 0.265682 -0.000000 0.832141 0.486780 + 2117 1.000000 1.000000 1.010000 0.249491 -0.000000 0.885549 0.391863 + 2118 1.000000 1.000000 1.010000 0.237319 -0.000000 0.931550 0.275488 + 2119 1.000000 1.000000 1.010000 0.229530 -0.000000 0.962772 0.142781 + 2120 1.000000 1.000000 1.010000 0.226999 -0.000000 0.973895 0.000499 + 2121 1.000000 1.000000 1.010000 0.229739 0.000000 0.962930 -0.141369 + 2122 1.000000 1.000000 1.010000 0.237166 0.000000 0.931743 -0.274969 + 2123 1.000000 1.000000 1.010000 0.249364 0.000000 0.886424 -0.389963 + 2124 1.000000 1.000000 1.010000 0.265619 0.000000 0.832760 -0.485755 + 2125 1.000000 1.000000 1.010000 0.284842 0.000000 0.776210 -0.562461 + 2126 1.000000 1.000000 1.010000 0.306385 0.000000 0.721742 -0.620658 + 2127 1.000000 1.000000 1.010000 0.329907 0.000000 0.670482 -0.664541 + 2128 1.000000 1.000000 1.010000 0.354950 0.000000 0.623334 -0.696753 + 2129 1.000000 1.000000 1.010000 0.380932 0.000000 0.580679 -0.719516 + 2130 1.000000 1.000000 1.010000 0.407345 0.000000 0.542568 -0.734636 + 2131 1.000000 1.000000 1.010000 0.434520 0.000000 0.509154 -0.742936 + 2132 1.000000 1.000000 1.010000 0.461646 0.000000 0.479167 -0.746513 + 2133 1.000000 1.000000 1.010000 0.488903 0.000000 0.452182 -0.745993 + 2134 1.000000 1.000000 1.010000 0.515986 0.000000 0.428329 -0.741817 + 2135 1.000000 1.000000 1.010000 0.543096 0.000000 0.407025 -0.734423 + 2136 1.000000 1.000000 1.010000 0.569692 0.000000 0.388090 -0.724456 + 2137 1.000000 1.000000 1.010000 0.596119 0.000000 0.371018 -0.712031 + 2138 1.000000 1.000000 1.010000 0.621737 0.000000 0.355706 -0.697794 + 2139 1.000000 1.000000 1.010000 0.646992 0.000000 0.341953 -0.681520 + 2140 1.000000 1.000000 1.010000 0.671585 0.000000 0.329104 -0.663825 + 2141 1.000000 1.000000 1.010000 0.695635 0.000000 0.317799 -0.644279 + 2142 1.000000 1.000000 1.010000 0.718700 0.000000 0.307541 -0.623610 + 2143 1.000000 1.000000 1.010000 0.741168 0.000000 0.298181 -0.601463 + 2144 1.000000 1.000000 1.010000 0.762692 0.000000 0.289690 -0.578257 + 2145 1.000000 1.000000 1.010000 0.783416 0.000000 0.282095 -0.553789 + 2146 1.000000 1.000000 1.010000 0.803058 0.000000 0.275414 -0.528437 + 2147 1.000000 1.000000 1.010000 0.822027 0.000000 0.268774 -0.502029 + 2148 1.000000 1.000000 1.010000 0.839892 0.000000 0.263117 -0.474711 + 2149 1.000000 1.000000 1.010000 0.856604 0.000000 0.258096 -0.446785 + 2150 1.000000 1.000000 1.010000 0.872433 0.000000 0.253222 -0.418017 + 2151 1.000000 1.000000 1.010000 0.887186 0.000000 0.249037 -0.388434 + 2152 1.000000 1.000000 1.010000 0.900822 0.000000 0.245273 -0.358274 + 2153 1.000000 1.000000 1.010000 0.913271 0.000000 0.242141 -0.327573 + 2154 1.000000 1.000000 1.010000 0.924702 0.000000 0.239048 -0.296282 + 2155 1.000000 1.000000 1.010000 0.934970 0.000000 0.236499 -0.264386 + 2156 1.000000 1.000000 1.010000 0.944090 0.000000 0.233939 -0.232309 + 2157 1.000000 1.000000 1.010000 0.951961 0.000000 0.232160 -0.199679 + 2158 1.000000 1.000000 1.010000 0.958630 0.000000 0.230474 -0.167061 + 2159 1.000000 1.000000 1.010000 0.964126 0.000000 0.229185 -0.133923 + 2160 1.000000 1.000000 1.010000 0.968415 0.000000 0.228179 -0.100532 + 2161 1.000000 1.000000 1.010000 0.971462 0.000000 0.227518 -0.067055 + 2162 1.000000 1.000000 1.010000 0.973347 0.000000 0.226900 -0.033362 + 2163 1.000000 1.000000 1.010000 0.966011 -0.000000 0.258503 0.000045 + 2164 1.000000 1.000000 1.010000 0.965355 -0.000000 0.258725 0.033938 + 2165 1.000000 1.000000 1.010000 0.963405 -0.000000 0.259287 0.067978 + 2166 1.000000 1.000000 1.010000 0.960209 -0.000000 0.260181 0.101515 + 2167 1.000000 1.000000 1.010000 0.955735 -0.000000 0.261383 0.135094 + 2168 1.000000 1.000000 1.010000 0.949950 -0.000000 0.262940 0.168696 + 2169 1.000000 1.000000 1.010000 0.942968 -0.000000 0.264850 0.201660 + 2170 1.000000 1.000000 1.010000 0.934739 -0.000000 0.267131 0.234315 + 2171 1.000000 1.000000 1.010000 0.925290 -0.000000 0.269773 0.266571 + 2172 1.000000 1.000000 1.010000 0.914559 -0.000000 0.273111 0.298317 + 2173 1.000000 1.000000 1.010000 0.902699 -0.000000 0.276618 0.329570 + 2174 1.000000 1.000000 1.010000 0.889642 -0.000000 0.280765 0.360150 + 2175 1.000000 1.000000 1.010000 0.875398 -0.000000 0.285497 0.390089 + 2176 1.000000 1.000000 1.010000 0.860137 -0.000000 0.290348 0.419360 + 2177 1.000000 1.000000 1.010000 0.843697 -0.000000 0.295993 0.447842 + 2178 1.000000 1.000000 1.010000 0.826187 -0.000000 0.302280 0.475439 + 2179 1.000000 1.000000 1.010000 0.807758 -0.000000 0.309198 0.501920 + 2180 1.000000 1.000000 1.010000 0.788251 -0.000000 0.317024 0.527405 + 2181 1.000000 1.000000 1.010000 0.767946 -0.000000 0.325406 0.551697 + 2182 1.000000 1.000000 1.010000 0.746542 -0.000000 0.334597 0.575082 + 2183 1.000000 1.000000 1.010000 0.724494 -0.000000 0.344729 0.596884 + 2184 1.000000 1.000000 1.010000 0.701294 -0.000000 0.356123 0.617546 + 2185 1.000000 1.000000 1.010000 0.677759 -0.000000 0.368630 0.636204 + 2186 1.000000 1.000000 1.010000 0.653311 -0.000000 0.382268 0.653495 + 2187 1.000000 1.000000 1.010000 0.628286 -0.000000 0.397614 0.668700 + 2188 1.000000 1.000000 1.010000 0.602744 -0.000000 0.414502 0.681827 + 2189 1.000000 1.000000 1.010000 0.576734 -0.000000 0.433237 0.692591 + 2190 1.000000 1.000000 1.010000 0.550214 -0.000000 0.453766 0.700971 + 2191 1.000000 1.000000 1.010000 0.523769 -0.000000 0.477149 0.705688 + 2192 1.000000 1.000000 1.010000 0.496787 -0.000000 0.502840 0.707357 + 2193 1.000000 1.000000 1.010000 0.470202 -0.000000 0.531317 0.704708 + 2194 1.000000 1.000000 1.010000 0.443587 -0.000000 0.563199 0.697164 + 2195 1.000000 1.000000 1.010000 0.417642 -0.000000 0.598756 0.683423 + 2196 1.000000 1.000000 1.010000 0.391900 -0.000000 0.637263 0.663558 + 2197 1.000000 1.000000 1.010000 0.367356 -0.000000 0.680240 0.634290 + 2198 1.000000 1.000000 1.010000 0.344264 -0.000000 0.726094 0.595206 + 2199 1.000000 1.000000 1.010000 0.322614 -0.000000 0.775135 0.543218 + 2200 1.000000 1.000000 1.010000 0.303099 -0.000000 0.824559 0.477738 + 2201 1.000000 1.000000 1.010000 0.286406 -0.000000 0.872407 0.396077 + 2202 1.000000 1.000000 1.010000 0.273380 -0.000000 0.914225 0.299092 + 2203 1.000000 1.000000 1.010000 0.264109 -0.000000 0.946213 0.186888 + 2204 1.000000 1.000000 1.010000 0.259339 -0.000000 0.963652 0.064175 + 2205 1.000000 1.000000 1.010000 0.259191 0.000000 0.963816 -0.062271 + 2206 1.000000 1.000000 1.010000 0.264008 0.000000 0.946663 -0.184738 + 2207 1.000000 1.000000 1.010000 0.273395 0.000000 0.914728 -0.297536 + 2208 1.000000 1.000000 1.010000 0.286434 0.000000 0.872748 -0.395306 + 2209 1.000000 1.000000 1.010000 0.303027 0.000000 0.824908 -0.477182 + 2210 1.000000 1.000000 1.010000 0.322209 0.000000 0.775602 -0.542792 + 2211 1.000000 1.000000 1.010000 0.343924 0.000000 0.726454 -0.594963 + 2212 1.000000 1.000000 1.010000 0.367188 0.000000 0.680804 -0.633782 + 2213 1.000000 1.000000 1.010000 0.391972 0.000000 0.638125 -0.662688 + 2214 1.000000 1.000000 1.010000 0.417474 0.000000 0.598965 -0.683342 + 2215 1.000000 1.000000 1.010000 0.443521 0.000000 0.563785 -0.696732 + 2216 1.000000 1.000000 1.010000 0.470172 0.000000 0.531484 -0.704601 + 2217 1.000000 1.000000 1.010000 0.496866 0.000000 0.503020 -0.707174 + 2218 1.000000 1.000000 1.010000 0.523669 0.000000 0.477373 -0.705610 + 2219 1.000000 1.000000 1.010000 0.550085 0.000000 0.454340 -0.700701 + 2220 1.000000 1.000000 1.010000 0.576531 0.000000 0.433796 -0.692411 + 2221 1.000000 1.000000 1.010000 0.602728 0.000000 0.414826 -0.681644 + 2222 1.000000 1.000000 1.010000 0.628335 0.000000 0.397871 -0.668501 + 2223 1.000000 1.000000 1.010000 0.653315 0.000000 0.382418 -0.653403 + 2224 1.000000 1.000000 1.010000 0.677624 0.000000 0.368927 -0.636175 + 2225 1.000000 1.000000 1.010000 0.701321 0.000000 0.356573 -0.617256 + 2226 1.000000 1.000000 1.010000 0.724479 0.000000 0.344983 -0.596755 + 2227 1.000000 1.000000 1.010000 0.746644 0.000000 0.334650 -0.574920 + 2228 1.000000 1.000000 1.010000 0.767876 0.000000 0.325445 -0.551772 + 2229 1.000000 1.000000 1.010000 0.788312 0.000000 0.316991 -0.527334 + 2230 1.000000 1.000000 1.010000 0.807820 0.000000 0.309371 -0.501714 + 2231 1.000000 1.000000 1.010000 0.826386 0.000000 0.302598 -0.474891 + 2232 1.000000 1.000000 1.010000 0.843853 0.000000 0.296107 -0.447474 + 2233 1.000000 1.000000 1.010000 0.860200 0.000000 0.290319 -0.419250 + 2234 1.000000 1.000000 1.010000 0.875485 0.000000 0.285500 -0.389893 + 2235 1.000000 1.000000 1.010000 0.889712 0.000000 0.280907 -0.359866 + 2236 1.000000 1.000000 1.010000 0.902798 0.000000 0.276623 -0.329296 + 2237 1.000000 1.000000 1.010000 0.914653 0.000000 0.273241 -0.297907 + 2238 1.000000 1.000000 1.010000 0.925327 0.000000 0.270046 -0.266167 + 2239 1.000000 1.000000 1.010000 0.934738 0.000000 0.267381 -0.234035 + 2240 1.000000 1.000000 1.010000 0.943039 0.000000 0.264875 -0.201293 + 2241 1.000000 1.000000 1.010000 0.949978 0.000000 0.263055 -0.168358 + 2242 1.000000 1.000000 1.010000 0.955725 0.000000 0.261436 -0.135061 + 2243 1.000000 1.000000 1.010000 0.960292 0.000000 0.259976 -0.101252 + 2244 1.000000 1.000000 1.010000 0.963453 0.000000 0.259164 -0.067760 + 2245 1.000000 1.000000 1.010000 0.965382 0.000000 0.258644 -0.033782 + 2246 1.000000 1.000000 1.010000 0.957009 -0.000000 0.290057 0.000088 + 2247 1.000000 1.000000 1.010000 0.956361 -0.000000 0.290181 0.034173 + 2248 1.000000 1.000000 1.010000 0.954300 -0.000000 0.290922 0.068386 + 2249 1.000000 1.000000 1.010000 0.950917 -0.000000 0.292024 0.102370 + 2250 1.000000 1.000000 1.010000 0.946300 -0.000000 0.293399 0.135773 + 2251 1.000000 1.000000 1.010000 0.940281 -0.000000 0.295222 0.169460 + 2252 1.000000 1.000000 1.010000 0.933032 -0.000000 0.297372 0.202535 + 2253 1.000000 1.000000 1.010000 0.924347 -0.000000 0.300380 0.235274 + 2254 1.000000 1.000000 1.010000 0.914574 -0.000000 0.303390 0.267411 + 2255 1.000000 1.000000 1.010000 0.903522 -0.000000 0.307134 0.298858 + 2256 1.000000 1.000000 1.010000 0.891151 -0.000000 0.311447 0.329926 + 2257 1.000000 1.000000 1.010000 0.877540 -0.000000 0.316240 0.360439 + 2258 1.000000 1.000000 1.010000 0.862858 -0.000000 0.321584 0.389949 + 2259 1.000000 1.000000 1.010000 0.846983 -0.000000 0.327683 0.418622 + 2260 1.000000 1.000000 1.010000 0.829970 -0.000000 0.334312 0.446526 + 2261 1.000000 1.000000 1.010000 0.811850 -0.000000 0.341973 0.473237 + 2262 1.000000 1.000000 1.010000 0.792965 -0.000000 0.350092 0.498641 + 2263 1.000000 1.000000 1.010000 0.772697 -0.000000 0.359244 0.523338 + 2264 1.000000 1.000000 1.010000 0.751752 -0.000000 0.369440 0.546245 + 2265 1.000000 1.000000 1.010000 0.730034 -0.000000 0.380184 0.567900 + 2266 1.000000 1.000000 1.010000 0.707193 -0.000000 0.392499 0.588067 + 2267 1.000000 1.000000 1.010000 0.683732 -0.000000 0.405841 0.606468 + 2268 1.000000 1.000000 1.010000 0.659548 -0.000000 0.420783 0.622847 + 2269 1.000000 1.000000 1.010000 0.635042 -0.000000 0.437121 0.636904 + 2270 1.000000 1.000000 1.010000 0.609617 -0.000000 0.455387 0.648837 + 2271 1.000000 1.000000 1.010000 0.583967 -0.000000 0.475481 0.657952 + 2272 1.000000 1.000000 1.010000 0.558128 -0.000000 0.497464 0.664096 + 2273 1.000000 1.000000 1.010000 0.531848 -0.000000 0.521917 0.666888 + 2274 1.000000 1.000000 1.010000 0.505800 -0.000000 0.549157 0.665276 + 2275 1.000000 1.000000 1.010000 0.479683 -0.000000 0.578803 0.659463 + 2276 1.000000 1.000000 1.010000 0.454126 -0.000000 0.611721 0.647740 + 2277 1.000000 1.000000 1.010000 0.428765 -0.000000 0.647373 0.630134 + 2278 1.000000 1.000000 1.010000 0.404636 -0.000000 0.686346 0.604317 + 2279 1.000000 1.000000 1.010000 0.381498 -0.000000 0.728098 0.569502 + 2280 1.000000 1.000000 1.010000 0.360036 -0.000000 0.771244 0.524936 + 2281 1.000000 1.000000 1.010000 0.340552 -0.000000 0.815634 0.467724 + 2282 1.000000 1.000000 1.010000 0.323610 -0.000000 0.858647 0.397493 + 2283 1.000000 1.000000 1.010000 0.309476 -0.000000 0.897434 0.314382 + 2284 1.000000 1.000000 1.010000 0.299023 -0.000000 0.928994 0.218073 + 2285 1.000000 1.000000 1.010000 0.292505 -0.000000 0.949672 0.112091 + 2286 1.000000 1.000000 1.010000 0.290114 -0.000000 0.956992 0.000911 + 2287 1.000000 1.000000 1.010000 0.292209 0.000000 0.949921 -0.110744 + 2288 1.000000 1.000000 1.010000 0.298677 0.000000 0.929356 -0.217001 + 2289 1.000000 1.000000 1.010000 0.309315 0.000000 0.897922 -0.313146 + 2290 1.000000 1.000000 1.010000 0.323440 0.000000 0.858996 -0.396880 + 2291 1.000000 1.000000 1.010000 0.340214 0.000000 0.815998 -0.467335 + 2292 1.000000 1.000000 1.010000 0.359975 0.000000 0.771841 -0.524098 + 2293 1.000000 1.000000 1.010000 0.381565 0.000000 0.728118 -0.569432 + 2294 1.000000 1.000000 1.010000 0.404439 0.000000 0.686558 -0.604207 + 2295 1.000000 1.000000 1.010000 0.428736 0.000000 0.648071 -0.629436 + 2296 1.000000 1.000000 1.010000 0.453895 0.000000 0.612086 -0.647556 + 2297 1.000000 1.000000 1.010000 0.479670 0.000000 0.579383 -0.658963 + 2298 1.000000 1.000000 1.010000 0.505582 0.000000 0.549427 -0.665219 + 2299 1.000000 1.000000 1.010000 0.531772 0.000000 0.522110 -0.666798 + 2300 1.000000 1.000000 1.010000 0.557917 0.000000 0.497817 -0.664008 + 2301 1.000000 1.000000 1.010000 0.583816 0.000000 0.475621 -0.657984 + 2302 1.000000 1.000000 1.010000 0.609684 0.000000 0.455774 -0.648503 + 2303 1.000000 1.000000 1.010000 0.634907 0.000000 0.437419 -0.636834 + 2304 1.000000 1.000000 1.010000 0.659668 0.000000 0.421029 -0.622553 + 2305 1.000000 1.000000 1.010000 0.683799 0.000000 0.406178 -0.606167 + 2306 1.000000 1.000000 1.010000 0.707229 0.000000 0.392844 -0.587794 + 2307 1.000000 1.000000 1.010000 0.729896 0.000000 0.380593 -0.567803 + 2308 1.000000 1.000000 1.010000 0.751849 0.000000 0.369386 -0.546147 + 2309 1.000000 1.000000 1.010000 0.772740 0.000000 0.359451 -0.523133 + 2310 1.000000 1.000000 1.010000 0.792801 0.000000 0.350387 -0.498694 + 2311 1.000000 1.000000 1.010000 0.811898 0.000000 0.342201 -0.472991 + 2312 1.000000 1.000000 1.010000 0.830114 0.000000 0.334551 -0.446079 + 2313 1.000000 1.000000 1.010000 0.847083 0.000000 0.327792 -0.418333 + 2314 1.000000 1.000000 1.010000 0.862835 0.000000 0.321994 -0.389661 + 2315 1.000000 1.000000 1.010000 0.877583 0.000000 0.316412 -0.360181 + 2316 1.000000 1.000000 1.010000 0.891147 0.000000 0.311564 -0.329825 + 2317 1.000000 1.000000 1.010000 0.903521 0.000000 0.307267 -0.298727 + 2318 1.000000 1.000000 1.010000 0.914652 0.000000 0.303582 -0.266925 + 2319 1.000000 1.000000 1.010000 0.924521 0.000000 0.300218 -0.234799 + 2320 1.000000 1.000000 1.010000 0.933064 0.000000 0.297652 -0.201978 + 2321 1.000000 1.000000 1.010000 0.940366 0.000000 0.295210 -0.169007 + 2322 1.000000 1.000000 1.010000 0.946365 0.000000 0.293290 -0.135554 + 2323 1.000000 1.000000 1.010000 0.950983 0.000000 0.291967 -0.101918 + 2324 1.000000 1.000000 1.010000 0.954360 0.000000 0.290785 -0.068118 + 2325 1.000000 1.000000 1.010000 0.956301 0.000000 0.290419 -0.033847 + 2326 1.000000 1.000000 1.010000 0.947049 -0.000000 0.321088 0.000058 + 2327 1.000000 1.000000 1.010000 0.946303 -0.000000 0.321410 0.034722 + 2328 1.000000 1.000000 1.010000 0.944137 -0.000000 0.322197 0.069237 + 2329 1.000000 1.000000 1.010000 0.940606 -0.000000 0.323278 0.103690 + 2330 1.000000 1.000000 1.010000 0.935562 -0.000000 0.325140 0.137866 + 2331 1.000000 1.000000 1.010000 0.929128 -0.000000 0.327453 0.171747 + 2332 1.000000 1.000000 1.010000 0.921444 -0.000000 0.329936 0.205139 + 2333 1.000000 1.000000 1.010000 0.912173 -0.000000 0.333535 0.238105 + 2334 1.000000 1.000000 1.010000 0.901728 -0.000000 0.337189 0.270537 + 2335 1.000000 1.000000 1.010000 0.889939 -0.000000 0.341853 0.301903 + 2336 1.000000 1.000000 1.010000 0.876739 -0.000000 0.346894 0.333156 + 2337 1.000000 1.000000 1.010000 0.862458 -0.000000 0.352762 0.362940 + 2338 1.000000 1.000000 1.010000 0.846862 -0.000000 0.359242 0.392135 + 2339 1.000000 1.000000 1.010000 0.830049 -0.000000 0.366516 0.420338 + 2340 1.000000 1.000000 1.010000 0.812092 -0.000000 0.374609 0.447409 + 2341 1.000000 1.000000 1.010000 0.793093 -0.000000 0.383527 0.473191 + 2342 1.000000 1.000000 1.010000 0.772935 -0.000000 0.393646 0.497609 + 2343 1.000000 1.000000 1.010000 0.751991 -0.000000 0.404626 0.520372 + 2344 1.000000 1.000000 1.010000 0.729929 -0.000000 0.416654 0.541851 + 2345 1.000000 1.000000 1.010000 0.707228 -0.000000 0.430104 0.561105 + 2346 1.000000 1.000000 1.010000 0.683749 -0.000000 0.444870 0.578427 + 2347 1.000000 1.000000 1.010000 0.659542 -0.000000 0.461150 0.593586 + 2348 1.000000 1.000000 1.010000 0.634669 -0.000000 0.479337 0.606162 + 2349 1.000000 1.000000 1.010000 0.609352 -0.000000 0.499325 0.615926 + 2350 1.000000 1.000000 1.010000 0.583806 -0.000000 0.521223 0.622493 + 2351 1.000000 1.000000 1.010000 0.558096 -0.000000 0.545288 0.625452 + 2352 1.000000 1.000000 1.010000 0.532108 -0.000000 0.571673 0.624541 + 2353 1.000000 1.000000 1.010000 0.506593 -0.000000 0.600776 0.618410 + 2354 1.000000 1.000000 1.010000 0.480931 -0.000000 0.632570 0.607091 + 2355 1.000000 1.000000 1.010000 0.456258 -0.000000 0.666747 0.589302 + 2356 1.000000 1.000000 1.010000 0.432470 -0.000000 0.703344 0.564160 + 2357 1.000000 1.000000 1.010000 0.409821 -0.000000 0.742647 0.529643 + 2358 1.000000 1.000000 1.010000 0.388932 -0.000000 0.782610 0.486059 + 2359 1.000000 1.000000 1.010000 0.369905 -0.000000 0.822707 0.431652 + 2360 1.000000 1.000000 1.010000 0.353383 -0.000000 0.861241 0.365217 + 2361 1.000000 1.000000 1.010000 0.339862 -0.000000 0.895544 0.287219 + 2362 1.000000 1.000000 1.010000 0.329710 -0.000000 0.922997 0.198412 + 2363 1.000000 1.000000 1.010000 0.323541 -0.000000 0.940728 0.101744 + 2364 1.000000 1.000000 1.010000 0.321324 -0.000000 0.946969 0.000050 + 2365 1.000000 1.000000 1.010000 0.323332 0.000000 0.940885 -0.100958 + 2366 1.000000 1.000000 1.010000 0.329839 0.000000 0.923114 -0.197651 + 2367 1.000000 1.000000 1.010000 0.339753 0.000000 0.895840 -0.286425 + 2368 1.000000 1.000000 1.010000 0.353160 0.000000 0.861814 -0.364080 + 2369 1.000000 1.000000 1.010000 0.369713 0.000000 0.823323 -0.430641 + 2370 1.000000 1.000000 1.010000 0.388715 0.000000 0.783262 -0.485182 + 2371 1.000000 1.000000 1.010000 0.409796 0.000000 0.743076 -0.529061 + 2372 1.000000 1.000000 1.010000 0.432435 0.000000 0.703760 -0.563668 + 2373 1.000000 1.000000 1.010000 0.456117 0.000000 0.666911 -0.589225 + 2374 1.000000 1.000000 1.010000 0.481149 0.000000 0.632660 -0.606825 + 2375 1.000000 1.000000 1.010000 0.506254 0.000000 0.601296 -0.618182 + 2376 1.000000 1.000000 1.010000 0.532142 0.000000 0.572019 -0.624195 + 2377 1.000000 1.000000 1.010000 0.557935 0.000000 0.545591 -0.625331 + 2378 1.000000 1.000000 1.010000 0.583822 0.000000 0.521279 -0.622431 + 2379 1.000000 1.000000 1.010000 0.609251 0.000000 0.499351 -0.616005 + 2380 1.000000 1.000000 1.010000 0.634606 0.000000 0.479537 -0.606068 + 2381 1.000000 1.000000 1.010000 0.659401 0.000000 0.461842 -0.593205 + 2382 1.000000 1.000000 1.010000 0.683576 0.000000 0.445153 -0.578414 + 2383 1.000000 1.000000 1.010000 0.707242 0.000000 0.430461 -0.560813 + 2384 1.000000 1.000000 1.010000 0.730043 0.000000 0.416972 -0.541452 + 2385 1.000000 1.000000 1.010000 0.751937 0.000000 0.404769 -0.520340 + 2386 1.000000 1.000000 1.010000 0.773055 0.000000 0.393756 -0.497336 + 2387 1.000000 1.000000 1.010000 0.793196 0.000000 0.383608 -0.472953 + 2388 1.000000 1.000000 1.010000 0.812113 0.000000 0.374644 -0.447341 + 2389 1.000000 1.000000 1.010000 0.830070 0.000000 0.366643 -0.420186 + 2390 1.000000 1.000000 1.010000 0.846846 0.000000 0.359420 -0.392006 + 2391 1.000000 1.000000 1.010000 0.862371 0.000000 0.352953 -0.362961 + 2392 1.000000 1.000000 1.010000 0.876852 0.000000 0.346895 -0.332858 + 2393 1.000000 1.000000 1.010000 0.889987 0.000000 0.341939 -0.301663 + 2394 1.000000 1.000000 1.010000 0.901747 0.000000 0.337521 -0.270061 + 2395 1.000000 1.000000 1.010000 0.912261 0.000000 0.333522 -0.237789 + 2396 1.000000 1.000000 1.010000 0.921435 0.000000 0.330215 -0.204732 + 2397 1.000000 1.000000 1.010000 0.929172 0.000000 0.327512 -0.171392 + 2398 1.000000 1.000000 1.010000 0.935623 0.000000 0.325062 -0.137638 + 2399 1.000000 1.000000 1.010000 0.940616 0.000000 0.323371 -0.103305 + 2400 1.000000 1.000000 1.010000 0.944195 0.000000 0.322061 -0.069088 + 2401 1.000000 1.000000 1.010000 0.946298 0.000000 0.321467 -0.034324 + 2402 1.000000 1.000000 1.010000 0.935959 -0.000000 0.352109 0.000146 + 2403 1.000000 1.000000 1.010000 0.935184 -0.000000 0.352414 0.035155 + 2404 1.000000 1.000000 1.010000 0.932956 -0.000000 0.353075 0.070221 + 2405 1.000000 1.000000 1.010000 0.929139 -0.000000 0.354515 0.104976 + 2406 1.000000 1.000000 1.010000 0.923790 -0.000000 0.356665 0.139294 + 2407 1.000000 1.000000 1.010000 0.916990 -0.000000 0.359334 0.173230 + 2408 1.000000 1.000000 1.010000 0.908668 -0.000000 0.362659 0.206884 + 2409 1.000000 1.000000 1.010000 0.898913 -0.000000 0.366519 0.240042 + 2410 1.000000 1.000000 1.010000 0.887780 -0.000000 0.370947 0.272478 + 2411 1.000000 1.000000 1.010000 0.875208 -0.000000 0.376436 0.303820 + 2412 1.000000 1.000000 1.010000 0.861357 -0.000000 0.382410 0.334406 + 2413 1.000000 1.000000 1.010000 0.845980 -0.000000 0.389484 0.364171 + 2414 1.000000 1.000000 1.010000 0.829414 -0.000000 0.397262 0.392753 + 2415 1.000000 1.000000 1.010000 0.811877 -0.000000 0.405729 0.419809 + 2416 1.000000 1.000000 1.010000 0.792891 -0.000000 0.415365 0.445864 + 2417 1.000000 1.000000 1.010000 0.773034 -0.000000 0.426220 0.469845 + 2418 1.000000 1.000000 1.010000 0.751922 -0.000000 0.438119 0.492610 + 2419 1.000000 1.000000 1.010000 0.730089 -0.000000 0.451249 0.513171 + 2420 1.000000 1.000000 1.010000 0.707148 -0.000000 0.465873 0.531886 + 2421 1.000000 1.000000 1.010000 0.683576 -0.000000 0.481948 0.548133 + 2422 1.000000 1.000000 1.010000 0.659574 -0.000000 0.499637 0.561538 + 2423 1.000000 1.000000 1.010000 0.634602 -0.000000 0.519467 0.572219 + 2424 1.000000 1.000000 1.010000 0.609634 -0.000000 0.540605 0.579734 + 2425 1.000000 1.000000 1.010000 0.584242 -0.000000 0.563945 0.583633 + 2426 1.000000 1.000000 1.010000 0.558724 -0.000000 0.589710 0.583155 + 2427 1.000000 1.000000 1.010000 0.533302 -0.000000 0.617834 0.577814 + 2428 1.000000 1.000000 1.010000 0.508526 -0.000000 0.648431 0.566514 + 2429 1.000000 1.000000 1.010000 0.483964 -0.000000 0.681016 0.549542 + 2430 1.000000 1.000000 1.010000 0.460607 -0.000000 0.715552 0.525191 + 2431 1.000000 1.000000 1.010000 0.438373 -0.000000 0.751839 0.492511 + 2432 1.000000 1.000000 1.010000 0.417627 -0.000000 0.789034 0.450569 + 2433 1.000000 1.000000 1.010000 0.399175 -0.000000 0.825552 0.398904 + 2434 1.000000 1.000000 1.010000 0.383240 -0.000000 0.860391 0.335939 + 2435 1.000000 1.000000 1.010000 0.370011 -0.000000 0.890988 0.263122 + 2436 1.000000 1.000000 1.010000 0.360271 -0.000000 0.915002 0.181596 + 2437 1.000000 1.000000 1.010000 0.354357 -0.000000 0.930473 0.093008 + 2438 1.000000 1.000000 1.010000 0.352242 -0.000000 0.935909 0.000600 + 2439 1.000000 1.000000 1.010000 0.354235 0.000000 0.930620 -0.092000 + 2440 1.000000 1.000000 1.010000 0.360262 0.000000 0.915114 -0.181047 + 2441 1.000000 1.000000 1.010000 0.369929 0.000000 0.891082 -0.262918 + 2442 1.000000 1.000000 1.010000 0.383084 0.000000 0.860579 -0.335634 + 2443 1.000000 1.000000 1.010000 0.399109 0.000000 0.826031 -0.397976 + 2444 1.000000 1.000000 1.010000 0.417763 0.000000 0.789523 -0.449586 + 2445 1.000000 1.000000 1.010000 0.438341 0.000000 0.752329 -0.491791 + 2446 1.000000 1.000000 1.010000 0.460469 0.000000 0.715925 -0.524805 + 2447 1.000000 1.000000 1.010000 0.484018 0.000000 0.681425 -0.548987 + 2448 1.000000 1.000000 1.010000 0.508383 0.000000 0.648511 -0.566551 + 2449 1.000000 1.000000 1.010000 0.533419 0.000000 0.618375 -0.577128 + 2450 1.000000 1.000000 1.010000 0.558704 0.000000 0.590248 -0.582630 + 2451 1.000000 1.000000 1.010000 0.584256 0.000000 0.564486 -0.583095 + 2452 1.000000 1.000000 1.010000 0.609504 0.000000 0.540700 -0.579784 + 2453 1.000000 1.000000 1.010000 0.634641 0.000000 0.519592 -0.572061 + 2454 1.000000 1.000000 1.010000 0.659430 0.000000 0.499918 -0.561457 + 2455 1.000000 1.000000 1.010000 0.683598 0.000000 0.482300 -0.547796 + 2456 1.000000 1.000000 1.010000 0.707326 0.000000 0.465928 -0.531602 + 2457 1.000000 1.000000 1.010000 0.730028 0.000000 0.451551 -0.512992 + 2458 1.000000 1.000000 1.010000 0.751923 0.000000 0.438223 -0.492516 + 2459 1.000000 1.000000 1.010000 0.772973 0.000000 0.426453 -0.469735 + 2460 1.000000 1.000000 1.010000 0.793021 0.000000 0.415673 -0.445347 + 2461 1.000000 1.000000 1.010000 0.811820 0.000000 0.406049 -0.419611 + 2462 1.000000 1.000000 1.010000 0.829508 0.000000 0.397476 -0.392338 + 2463 1.000000 1.000000 1.010000 0.846103 0.000000 0.389560 -0.363803 + 2464 1.000000 1.000000 1.010000 0.861313 0.000000 0.382736 -0.334145 + 2465 1.000000 1.000000 1.010000 0.875238 0.000000 0.376452 -0.303716 + 2466 1.000000 1.000000 1.010000 0.887750 0.000000 0.371415 -0.271941 + 2467 1.000000 1.000000 1.010000 0.898983 0.000000 0.366584 -0.239678 + 2468 1.000000 1.000000 1.010000 0.908740 0.000000 0.362676 -0.206536 + 2469 1.000000 1.000000 1.010000 0.917022 0.000000 0.359301 -0.173128 + 2470 1.000000 1.000000 1.010000 0.923834 0.000000 0.356665 -0.138997 + 2471 1.000000 1.000000 1.010000 0.929088 0.000000 0.354780 -0.104526 + 2472 1.000000 1.000000 1.010000 0.932999 0.000000 0.353073 -0.069664 + 2473 1.000000 1.000000 1.010000 0.935227 0.000000 0.352314 -0.035015 + 2474 1.000000 1.000000 1.010000 0.923942 -0.000000 0.382532 0.000068 + 2475 1.000000 1.000000 1.010000 0.923213 -0.000000 0.382629 0.035675 + 2476 1.000000 1.000000 1.010000 0.920694 -0.000000 0.383788 0.070920 + 2477 1.000000 1.000000 1.010000 0.916616 -0.000000 0.385543 0.105698 + 2478 1.000000 1.000000 1.010000 0.910935 -0.000000 0.387895 0.140478 + 2479 1.000000 1.000000 1.010000 0.903649 -0.000000 0.390994 0.174760 + 2480 1.000000 1.000000 1.010000 0.894746 -0.000000 0.395049 0.208247 + 2481 1.000000 1.000000 1.010000 0.884527 -0.000000 0.399408 0.241009 + 2482 1.000000 1.000000 1.010000 0.872662 -0.000000 0.404816 0.273103 + 2483 1.000000 1.000000 1.010000 0.859253 -0.000000 0.411251 0.304232 + 2484 1.000000 1.000000 1.010000 0.844442 -0.000000 0.418457 0.334383 + 2485 1.000000 1.000000 1.010000 0.828450 -0.000000 0.426452 0.363055 + 2486 1.000000 1.000000 1.010000 0.810959 -0.000000 0.435576 0.390666 + 2487 1.000000 1.000000 1.010000 0.792447 -0.000000 0.445862 0.416214 + 2488 1.000000 1.000000 1.010000 0.772611 -0.000000 0.457431 0.440261 + 2489 1.000000 1.000000 1.010000 0.751689 -0.000000 0.470028 0.462641 + 2490 1.000000 1.000000 1.010000 0.730015 -0.000000 0.484108 0.482408 + 2491 1.000000 1.000000 1.010000 0.707285 -0.000000 0.499577 0.500170 + 2492 1.000000 1.000000 1.010000 0.683866 -0.000000 0.516962 0.514856 + 2493 1.000000 1.000000 1.010000 0.659598 -0.000000 0.535890 0.527022 + 2494 1.000000 1.000000 1.010000 0.635042 -0.000000 0.556567 0.535681 + 2495 1.000000 1.000000 1.010000 0.610337 -0.000000 0.579011 0.540588 + 2496 1.000000 1.000000 1.010000 0.585370 -0.000000 0.603869 0.541003 + 2497 1.000000 1.000000 1.010000 0.560461 -0.000000 0.630534 0.536946 + 2498 1.000000 1.000000 1.010000 0.535791 -0.000000 0.659633 0.527080 + 2499 1.000000 1.000000 1.010000 0.511746 -0.000000 0.690526 0.511166 + 2500 1.000000 1.000000 1.010000 0.488734 -0.000000 0.723145 0.488058 + 2501 1.000000 1.000000 1.010000 0.466963 -0.000000 0.757180 0.456754 + 2502 1.000000 1.000000 1.010000 0.446727 -0.000000 0.791514 0.417062 + 2503 1.000000 1.000000 1.010000 0.428557 -0.000000 0.825004 0.368384 + 2504 1.000000 1.000000 1.010000 0.412707 -0.000000 0.856409 0.310219 + 2505 1.000000 1.000000 1.010000 0.399957 -0.000000 0.883947 0.242222 + 2506 1.000000 1.000000 1.010000 0.390497 -0.000000 0.905434 0.166438 + 2507 1.000000 1.000000 1.010000 0.384683 -0.000000 0.919137 0.084890 + 2508 1.000000 1.000000 1.010000 0.382797 -0.000000 0.923832 0.000125 + 2509 1.000000 1.000000 1.010000 0.384812 0.000000 0.919104 -0.084662 + 2510 1.000000 1.000000 1.010000 0.390629 0.000000 0.905483 -0.165859 + 2511 1.000000 1.000000 1.010000 0.400114 0.000000 0.883962 -0.241911 + 2512 1.000000 1.000000 1.010000 0.412726 0.000000 0.856731 -0.309303 + 2513 1.000000 1.000000 1.010000 0.428293 0.000000 0.825528 -0.367517 + 2514 1.000000 1.000000 1.010000 0.446499 0.000000 0.791770 -0.416821 + 2515 1.000000 1.000000 1.010000 0.466753 0.000000 0.757547 -0.456359 + 2516 1.000000 1.000000 1.010000 0.488539 0.000000 0.723579 -0.487609 + 2517 1.000000 1.000000 1.010000 0.511606 0.000000 0.690929 -0.510760 + 2518 1.000000 1.000000 1.010000 0.535697 0.000000 0.659976 -0.526745 + 2519 1.000000 1.000000 1.010000 0.560224 0.000000 0.631128 -0.536495 + 2520 1.000000 1.000000 1.010000 0.585226 0.000000 0.604042 -0.540966 + 2521 1.000000 1.000000 1.010000 0.610330 0.000000 0.579463 -0.540110 + 2522 1.000000 1.000000 1.010000 0.635068 0.000000 0.556843 -0.535364 + 2523 1.000000 1.000000 1.010000 0.659638 0.000000 0.536085 -0.526774 + 2524 1.000000 1.000000 1.010000 0.683843 0.000000 0.517031 -0.514818 + 2525 1.000000 1.000000 1.010000 0.707187 0.000000 0.499968 -0.499919 + 2526 1.000000 1.000000 1.010000 0.729851 0.000000 0.484607 -0.482155 + 2527 1.000000 1.000000 1.010000 0.751763 0.000000 0.470223 -0.462323 + 2528 1.000000 1.000000 1.010000 0.772714 0.000000 0.457556 -0.439950 + 2529 1.000000 1.000000 1.010000 0.792398 0.000000 0.446026 -0.416131 + 2530 1.000000 1.000000 1.010000 0.811057 0.000000 0.435828 -0.390180 + 2531 1.000000 1.000000 1.010000 0.828465 0.000000 0.426615 -0.362830 + 2532 1.000000 1.000000 1.010000 0.844514 0.000000 0.418600 -0.334020 + 2533 1.000000 1.000000 1.010000 0.859307 0.000000 0.411244 -0.304089 + 2534 1.000000 1.000000 1.010000 0.872717 0.000000 0.405029 -0.272610 + 2535 1.000000 1.000000 1.010000 0.884429 0.000000 0.399727 -0.240840 + 2536 1.000000 1.000000 1.010000 0.894840 0.000000 0.395135 -0.207677 + 2537 1.000000 1.000000 1.010000 0.903677 0.000000 0.391203 -0.174152 + 2538 1.000000 1.000000 1.010000 0.911034 0.000000 0.387867 -0.139917 + 2539 1.000000 1.000000 1.010000 0.916658 0.000000 0.385526 -0.105391 + 2540 1.000000 1.000000 1.010000 0.920749 0.000000 0.383736 -0.070489 + 2541 1.000000 1.000000 1.010000 0.923135 0.000000 0.382855 -0.035269 + 2542 1.000000 1.000000 1.010000 0.911028 -0.000000 0.412344 0.000200 + 2543 1.000000 1.000000 1.010000 0.910042 -0.000000 0.412936 0.036161 + 2544 1.000000 1.000000 1.010000 0.907362 -0.000000 0.414125 0.072079 + 2545 1.000000 1.000000 1.010000 0.902893 -0.000000 0.416170 0.107641 + 2546 1.000000 1.000000 1.010000 0.896630 -0.000000 0.419042 0.143035 + 2547 1.000000 1.000000 1.010000 0.888654 -0.000000 0.422708 0.177795 + 2548 1.000000 1.000000 1.010000 0.878870 -0.000000 0.427572 0.211588 + 2549 1.000000 1.000000 1.010000 0.867562 -0.000000 0.433161 0.244351 + 2550 1.000000 1.000000 1.010000 0.854518 -0.000000 0.439764 0.276416 + 2551 1.000000 1.000000 1.010000 0.840160 -0.000000 0.447106 0.306965 + 2552 1.000000 1.000000 1.010000 0.824013 -0.000000 0.456014 0.336233 + 2553 1.000000 1.000000 1.010000 0.806649 -0.000000 0.465719 0.363899 + 2554 1.000000 1.000000 1.010000 0.787819 -0.000000 0.476990 0.389643 + 2555 1.000000 1.000000 1.010000 0.767823 -0.000000 0.489431 0.413407 + 2556 1.000000 1.000000 1.010000 0.746686 -0.000000 0.503181 0.435051 + 2557 1.000000 1.000000 1.010000 0.724353 -0.000000 0.518829 0.454013 + 2558 1.000000 1.000000 1.010000 0.701365 -0.000000 0.535860 0.470043 + 2559 1.000000 1.000000 1.010000 0.677728 -0.000000 0.554509 0.482912 + 2560 1.000000 1.000000 1.010000 0.653322 -0.000000 0.575138 0.492328 + 2561 1.000000 1.000000 1.010000 0.628731 -0.000000 0.597720 0.497421 + 2562 1.000000 1.000000 1.010000 0.603765 -0.000000 0.622544 0.497902 + 2563 1.000000 1.000000 1.010000 0.578973 -0.000000 0.649124 0.493385 + 2564 1.000000 1.000000 1.010000 0.554728 -0.000000 0.677621 0.482812 + 2565 1.000000 1.000000 1.010000 0.530954 -0.000000 0.707783 0.465972 + 2566 1.000000 1.000000 1.010000 0.508376 -0.000000 0.739469 0.441292 + 2567 1.000000 1.000000 1.010000 0.487158 -0.000000 0.771563 0.409106 + 2568 1.000000 1.000000 1.010000 0.467658 -0.000000 0.803734 0.367843 + 2569 1.000000 1.000000 1.010000 0.450588 -0.000000 0.834261 0.317771 + 2570 1.000000 1.000000 1.010000 0.436198 -0.000000 0.861842 0.258766 + 2571 1.000000 1.000000 1.010000 0.424781 -0.000000 0.884700 0.192009 + 2572 1.000000 1.000000 1.010000 0.417236 -0.000000 0.901110 0.117960 + 2573 1.000000 1.000000 1.010000 0.413083 -0.000000 0.909811 0.040073 + 2574 1.000000 1.000000 1.010000 0.413146 0.000000 0.909820 -0.039201 + 2575 1.000000 1.000000 1.010000 0.417253 0.000000 0.901161 -0.117511 + 2576 1.000000 1.000000 1.010000 0.424718 0.000000 0.884820 -0.191594 + 2577 1.000000 1.000000 1.010000 0.436068 0.000000 0.862039 -0.258327 + 2578 1.000000 1.000000 1.010000 0.450623 0.000000 0.834422 -0.317300 + 2579 1.000000 1.000000 1.010000 0.467512 0.000000 0.804030 -0.367380 + 2580 1.000000 1.000000 1.010000 0.486990 0.000000 0.771925 -0.408622 + 2581 1.000000 1.000000 1.010000 0.508312 0.000000 0.739686 -0.441003 + 2582 1.000000 1.000000 1.010000 0.530888 0.000000 0.708219 -0.465385 + 2583 1.000000 1.000000 1.010000 0.554761 0.000000 0.677677 -0.482695 + 2584 1.000000 1.000000 1.010000 0.578881 0.000000 0.649249 -0.493328 + 2585 1.000000 1.000000 1.010000 0.603688 0.000000 0.622724 -0.497772 + 2586 1.000000 1.000000 1.010000 0.628606 0.000000 0.598076 -0.497151 + 2587 1.000000 1.000000 1.010000 0.653302 0.000000 0.575362 -0.492093 + 2588 1.000000 1.000000 1.010000 0.677660 0.000000 0.554794 -0.482681 + 2589 1.000000 1.000000 1.010000 0.701422 0.000000 0.536077 -0.469711 + 2590 1.000000 1.000000 1.010000 0.724422 0.000000 0.519052 -0.453649 + 2591 1.000000 1.000000 1.010000 0.746539 0.000000 0.503412 -0.435035 + 2592 1.000000 1.000000 1.010000 0.767828 0.000000 0.489691 -0.413091 + 2593 1.000000 1.000000 1.010000 0.787764 0.000000 0.477157 -0.389550 + 2594 1.000000 1.000000 1.010000 0.806619 0.000000 0.466046 -0.363548 + 2595 1.000000 1.000000 1.010000 0.824143 0.000000 0.456057 -0.335858 + 2596 1.000000 1.000000 1.010000 0.840038 0.000000 0.447448 -0.306801 + 2597 1.000000 1.000000 1.010000 0.854712 0.000000 0.439565 -0.276135 + 2598 1.000000 1.000000 1.010000 0.867523 0.000000 0.433278 -0.244282 + 2599 1.000000 1.000000 1.010000 0.879062 0.000000 0.427419 -0.211101 + 2600 1.000000 1.000000 1.010000 0.888736 0.000000 0.422758 -0.177268 + 2601 1.000000 1.000000 1.010000 0.896582 0.000000 0.419322 -0.142510 + 2602 1.000000 1.000000 1.010000 0.902876 0.000000 0.416223 -0.107583 + 2603 1.000000 1.000000 1.010000 0.907456 0.000000 0.413957 -0.071853 + 2604 1.000000 1.000000 1.010000 0.910012 0.000000 0.413027 -0.035869 + 2605 1.000000 1.000000 1.010000 0.897038 -0.000000 0.441954 0.000042 + 2606 1.000000 1.000000 1.010000 0.895984 -0.000000 0.442588 0.036438 + 2607 1.000000 1.000000 1.010000 0.893184 -0.000000 0.443846 0.072274 + 2608 1.000000 1.000000 1.010000 0.888382 -0.000000 0.446234 0.107942 + 2609 1.000000 1.000000 1.010000 0.881632 -0.000000 0.449770 0.142939 + 2610 1.000000 1.000000 1.010000 0.873177 -0.000000 0.454113 0.177042 + 2611 1.000000 1.000000 1.010000 0.862844 -0.000000 0.459573 0.210458 + 2612 1.000000 1.000000 1.010000 0.850751 -0.000000 0.466181 0.242689 + 2613 1.000000 1.000000 1.010000 0.837114 -0.000000 0.473525 0.273888 + 2614 1.000000 1.000000 1.010000 0.821714 -0.000000 0.482578 0.303159 + 2615 1.000000 1.000000 1.010000 0.804757 -0.000000 0.492725 0.331041 + 2616 1.000000 1.000000 1.010000 0.786403 -0.000000 0.504291 0.356737 + 2617 1.000000 1.000000 1.010000 0.766779 -0.000000 0.517233 0.380158 + 2618 1.000000 1.000000 1.010000 0.746112 -0.000000 0.531485 0.401048 + 2619 1.000000 1.000000 1.010000 0.724182 -0.000000 0.547428 0.419385 + 2620 1.000000 1.000000 1.010000 0.701549 -0.000000 0.565198 0.434029 + 2621 1.000000 1.000000 1.010000 0.677957 -0.000000 0.584925 0.445238 + 2622 1.000000 1.000000 1.010000 0.654232 -0.000000 0.606139 0.452301 + 2623 1.000000 1.000000 1.010000 0.629882 -0.000000 0.629635 0.454762 + 2624 1.000000 1.000000 1.010000 0.605931 -0.000000 0.654454 0.452259 + 2625 1.000000 1.000000 1.010000 0.582093 -0.000000 0.681311 0.443828 + 2626 1.000000 1.000000 1.010000 0.558751 -0.000000 0.709787 0.428953 + 2627 1.000000 1.000000 1.010000 0.536347 -0.000000 0.739276 0.407190 + 2628 1.000000 1.000000 1.010000 0.515488 -0.000000 0.769292 0.377442 + 2629 1.000000 1.000000 1.010000 0.496512 -0.000000 0.799057 0.339093 + 2630 1.000000 1.000000 1.010000 0.479590 -0.000000 0.826980 0.293425 + 2631 1.000000 1.000000 1.010000 0.465285 -0.000000 0.852299 0.238949 + 2632 1.000000 1.000000 1.010000 0.454372 -0.000000 0.873070 0.176901 + 2633 1.000000 1.000000 1.010000 0.446838 -0.000000 0.887943 0.109059 + 2634 1.000000 1.000000 1.010000 0.442822 -0.000000 0.895860 0.036643 + 2635 1.000000 1.000000 1.010000 0.442766 0.000000 0.895909 -0.036127 + 2636 1.000000 1.000000 1.010000 0.446675 0.000000 0.888132 -0.108182 + 2637 1.000000 1.000000 1.010000 0.454188 0.000000 0.873363 -0.175929 + 2638 1.000000 1.000000 1.010000 0.465379 0.000000 0.852591 -0.237720 + 2639 1.000000 1.000000 1.010000 0.479501 0.000000 0.827295 -0.292681 + 2640 1.000000 1.000000 1.010000 0.496331 0.000000 0.799364 -0.338634 + 2641 1.000000 1.000000 1.010000 0.515544 0.000000 0.769543 -0.376853 + 2642 1.000000 1.000000 1.010000 0.536379 0.000000 0.739674 -0.406423 + 2643 1.000000 1.000000 1.010000 0.558543 0.000000 0.710234 -0.428482 + 2644 1.000000 1.000000 1.010000 0.581795 0.000000 0.681906 -0.443305 + 2645 1.000000 1.000000 1.010000 0.605815 0.000000 0.654862 -0.451823 + 2646 1.000000 1.000000 1.010000 0.629908 0.000000 0.629693 -0.454647 + 2647 1.000000 1.000000 1.010000 0.654093 0.000000 0.606643 -0.451827 + 2648 1.000000 1.000000 1.010000 0.677986 0.000000 0.585059 -0.445017 + 2649 1.000000 1.000000 1.010000 0.701393 0.000000 0.565490 -0.433899 + 2650 1.000000 1.000000 1.010000 0.724175 0.000000 0.547822 -0.418880 + 2651 1.000000 1.000000 1.010000 0.746089 0.000000 0.531593 -0.400948 + 2652 1.000000 1.000000 1.010000 0.766807 0.000000 0.517355 -0.379936 + 2653 1.000000 1.000000 1.010000 0.786543 0.000000 0.504313 -0.356398 + 2654 1.000000 1.000000 1.010000 0.804804 0.000000 0.492766 -0.330866 + 2655 1.000000 1.000000 1.010000 0.821647 0.000000 0.482731 -0.303096 + 2656 1.000000 1.000000 1.010000 0.836985 0.000000 0.474011 -0.273442 + 2657 1.000000 1.000000 1.010000 0.850740 0.000000 0.466241 -0.242611 + 2658 1.000000 1.000000 1.010000 0.862890 0.000000 0.459556 -0.210307 + 2659 1.000000 1.000000 1.010000 0.873137 0.000000 0.454234 -0.176925 + 2660 1.000000 1.000000 1.010000 0.881730 0.000000 0.449667 -0.142660 + 2661 1.000000 1.000000 1.010000 0.888379 0.000000 0.446378 -0.107375 + 2662 1.000000 1.000000 1.010000 0.893210 0.000000 0.443854 -0.071902 + 2663 1.000000 1.000000 1.010000 0.896056 0.000000 0.442493 -0.035832 + 2664 1.000000 1.000000 1.010000 0.882100 -0.000000 0.471061 0.000184 + 2665 1.000000 1.000000 1.010000 0.880927 -0.000000 0.471769 0.037433 + 2666 1.000000 1.000000 1.010000 0.877588 -0.000000 0.473615 0.074357 + 2667 1.000000 1.000000 1.010000 0.872185 -0.000000 0.476421 0.110977 + 2668 1.000000 1.000000 1.010000 0.864367 -0.000000 0.480913 0.146945 + 2669 1.000000 1.000000 1.010000 0.854715 -0.000000 0.486234 0.181763 + 2670 1.000000 1.000000 1.010000 0.843015 -0.000000 0.492882 0.215389 + 2671 1.000000 1.000000 1.010000 0.829304 -0.000000 0.501170 0.247152 + 2672 1.000000 1.000000 1.010000 0.813726 -0.000000 0.510661 0.277626 + 2673 1.000000 1.000000 1.010000 0.796438 -0.000000 0.521815 0.305608 + 2674 1.000000 1.000000 1.010000 0.777543 -0.000000 0.534516 0.331239 + 2675 1.000000 1.000000 1.010000 0.757187 -0.000000 0.548920 0.354055 + 2676 1.000000 1.000000 1.010000 0.735581 -0.000000 0.564952 0.373833 + 2677 1.000000 1.000000 1.010000 0.712996 -0.000000 0.582897 0.389703 + 2678 1.000000 1.000000 1.010000 0.689450 -0.000000 0.602921 0.401429 + 2679 1.000000 1.000000 1.010000 0.665534 -0.000000 0.624654 0.408501 + 2680 1.000000 1.000000 1.010000 0.641196 -0.000000 0.648152 0.410813 + 2681 1.000000 1.000000 1.010000 0.617089 -0.000000 0.673696 0.406614 + 2682 1.000000 1.000000 1.010000 0.593146 -0.000000 0.700759 0.396377 + 2683 1.000000 1.000000 1.010000 0.570246 -0.000000 0.728822 0.378996 + 2684 1.000000 1.000000 1.010000 0.548484 -0.000000 0.757893 0.353219 + 2685 1.000000 1.000000 1.010000 0.528436 -0.000000 0.786643 0.319293 + 2686 1.000000 1.000000 1.010000 0.510827 -0.000000 0.813783 0.277151 + 2687 1.000000 1.000000 1.010000 0.495952 -0.000000 0.838420 0.226016 + 2688 1.000000 1.000000 1.010000 0.484209 -0.000000 0.858670 0.168010 + 2689 1.000000 1.000000 1.010000 0.476249 -0.000000 0.873161 0.103810 + 2690 1.000000 1.000000 1.010000 0.472068 -0.000000 0.880847 0.035508 + 2691 1.000000 1.000000 1.010000 0.471924 0.000000 0.880958 -0.034647 + 2692 1.000000 1.000000 1.010000 0.476184 0.000000 0.873303 -0.102912 + 2693 1.000000 1.000000 1.010000 0.484130 0.000000 0.858863 -0.167247 + 2694 1.000000 1.000000 1.010000 0.495960 0.000000 0.838573 -0.225430 + 2695 1.000000 1.000000 1.010000 0.510748 0.000000 0.814064 -0.276472 + 2696 1.000000 1.000000 1.010000 0.528457 0.000000 0.786819 -0.318825 + 2697 1.000000 1.000000 1.010000 0.548374 0.000000 0.758117 -0.352910 + 2698 1.000000 1.000000 1.010000 0.570247 0.000000 0.729117 -0.378428 + 2699 1.000000 1.000000 1.010000 0.592973 0.000000 0.701036 -0.396147 + 2700 1.000000 1.000000 1.010000 0.616905 0.000000 0.673946 -0.406479 + 2701 1.000000 1.000000 1.010000 0.641192 0.000000 0.648355 -0.410498 + 2702 1.000000 1.000000 1.010000 0.665530 0.000000 0.624846 -0.408212 + 2703 1.000000 1.000000 1.010000 0.689455 0.000000 0.603095 -0.401158 + 2704 1.000000 1.000000 1.010000 0.713063 0.000000 0.583081 -0.389305 + 2705 1.000000 1.000000 1.010000 0.735748 0.000000 0.564951 -0.373504 + 2706 1.000000 1.000000 1.010000 0.757165 0.000000 0.549199 -0.353668 + 2707 1.000000 1.000000 1.010000 0.777545 0.000000 0.534582 -0.331127 + 2708 1.000000 1.000000 1.010000 0.796391 0.000000 0.522005 -0.305404 + 2709 1.000000 1.000000 1.010000 0.813815 0.000000 0.510831 -0.277050 + 2710 1.000000 1.000000 1.010000 0.829282 0.000000 0.501320 -0.246918 + 2711 1.000000 1.000000 1.010000 0.842933 0.000000 0.493202 -0.214978 + 2712 1.000000 1.000000 1.010000 0.854689 0.000000 0.486382 -0.181493 + 2713 1.000000 1.000000 1.010000 0.864521 0.000000 0.480705 -0.146720 + 2714 1.000000 1.000000 1.010000 0.872167 0.000000 0.476498 -0.110789 + 2715 1.000000 1.000000 1.010000 0.877673 0.000000 0.473468 -0.074283 + 2716 1.000000 1.000000 1.010000 0.880961 0.000000 0.471727 -0.037171 + 2717 1.000000 1.000000 1.010000 0.866125 -0.000000 0.499828 0.000042 + 2718 1.000000 1.000000 1.010000 0.864927 -0.000000 0.500453 0.038057 + 2719 1.000000 1.000000 1.010000 0.861221 -0.000000 0.502593 0.075485 + 2720 1.000000 1.000000 1.010000 0.854990 -0.000000 0.506412 0.111981 + 2721 1.000000 1.000000 1.010000 0.846638 -0.000000 0.511198 0.147923 + 2722 1.000000 1.000000 1.010000 0.835843 -0.000000 0.517890 0.182091 + 2723 1.000000 1.000000 1.010000 0.822694 -0.000000 0.526221 0.215096 + 2724 1.000000 1.000000 1.010000 0.807615 -0.000000 0.535995 0.245903 + 2725 1.000000 1.000000 1.010000 0.790691 -0.000000 0.547524 0.273909 + 2726 1.000000 1.000000 1.010000 0.772003 -0.000000 0.560736 0.299309 + 2727 1.000000 1.000000 1.010000 0.751584 -0.000000 0.576017 0.321445 + 2728 1.000000 1.000000 1.010000 0.729910 -0.000000 0.593006 0.339964 + 2729 1.000000 1.000000 1.010000 0.707225 -0.000000 0.612145 0.353709 + 2730 1.000000 1.000000 1.010000 0.683665 -0.000000 0.633142 0.362951 + 2731 1.000000 1.000000 1.010000 0.659796 -0.000000 0.656115 0.366310 + 2732 1.000000 1.000000 1.010000 0.636087 -0.000000 0.680656 0.363458 + 2733 1.000000 1.000000 1.010000 0.612478 -0.000000 0.706854 0.353876 + 2734 1.000000 1.000000 1.010000 0.589762 -0.000000 0.734035 0.336710 + 2735 1.000000 1.000000 1.010000 0.568684 -0.000000 0.761379 0.311289 + 2736 1.000000 1.000000 1.010000 0.549211 -0.000000 0.788169 0.277772 + 2737 1.000000 1.000000 1.010000 0.532482 -0.000000 0.813193 0.234905 + 2738 1.000000 1.000000 1.010000 0.518781 -0.000000 0.834699 0.184780 + 2739 1.000000 1.000000 1.010000 0.508489 -0.000000 0.851531 0.127805 + 2740 1.000000 1.000000 1.010000 0.502184 -0.000000 0.862284 0.065396 + 2741 1.000000 1.000000 1.010000 0.500100 -0.000000 0.865967 0.000206 + 2742 1.000000 1.000000 1.010000 0.502223 0.000000 0.862335 -0.064430 + 2743 1.000000 1.000000 1.010000 0.508512 0.000000 0.851595 -0.127284 + 2744 1.000000 1.000000 1.010000 0.518568 0.000000 0.834916 -0.184398 + 2745 1.000000 1.000000 1.010000 0.532470 0.000000 0.813385 -0.234268 + 2746 1.000000 1.000000 1.010000 0.549304 0.000000 0.788468 -0.276735 + 2747 1.000000 1.000000 1.010000 0.568709 0.000000 0.761649 -0.310580 + 2748 1.000000 1.000000 1.010000 0.589806 0.000000 0.734241 -0.336182 + 2749 1.000000 1.000000 1.010000 0.612425 0.000000 0.707093 -0.353489 + 2750 1.000000 1.000000 1.010000 0.635997 0.000000 0.681090 -0.362799 + 2751 1.000000 1.000000 1.010000 0.659872 0.000000 0.656409 -0.365645 + 2752 1.000000 1.000000 1.010000 0.683850 0.000000 0.633241 -0.362430 + 2753 1.000000 1.000000 1.010000 0.707327 0.000000 0.612345 -0.353159 + 2754 1.000000 1.000000 1.010000 0.730013 0.000000 0.593125 -0.339535 + 2755 1.000000 1.000000 1.010000 0.751642 0.000000 0.576058 -0.321234 + 2756 1.000000 1.000000 1.010000 0.771970 0.000000 0.560995 -0.298910 + 2757 1.000000 1.000000 1.010000 0.790760 0.000000 0.547498 -0.273758 + 2758 1.000000 1.000000 1.010000 0.807638 0.000000 0.536239 -0.245294 + 2759 1.000000 1.000000 1.010000 0.822732 0.000000 0.526257 -0.214864 + 2760 1.000000 1.000000 1.010000 0.835725 0.000000 0.518085 -0.182076 + 2761 1.000000 1.000000 1.010000 0.846633 0.000000 0.511290 -0.147628 + 2762 1.000000 1.000000 1.010000 0.855055 0.000000 0.506363 -0.111706 + 2763 1.000000 1.000000 1.010000 0.861212 0.000000 0.502703 -0.074852 + 2764 1.000000 1.000000 1.010000 0.864901 0.000000 0.500547 -0.037394 + 2765 1.000000 1.000000 1.010000 0.849297 -0.000000 0.527915 0.000209 + 2766 1.000000 1.000000 1.010000 0.847918 -0.000000 0.528742 0.038304 + 2767 1.000000 1.000000 1.010000 0.843687 -0.000000 0.531464 0.075744 + 2768 1.000000 1.000000 1.010000 0.836805 -0.000000 0.535827 0.112460 + 2769 1.000000 1.000000 1.010000 0.827352 -0.000000 0.541962 0.147531 + 2770 1.000000 1.000000 1.010000 0.815414 -0.000000 0.549773 0.181243 + 2771 1.000000 1.000000 1.010000 0.800971 -0.000000 0.559758 0.212405 + 2772 1.000000 1.000000 1.010000 0.784450 -0.000000 0.571540 0.240791 + 2773 1.000000 1.000000 1.010000 0.766026 -0.000000 0.585131 0.266133 + 2774 1.000000 1.000000 1.010000 0.745697 -0.000000 0.601272 0.287069 + 2775 1.000000 1.000000 1.010000 0.724037 -0.000000 0.619219 0.303872 + 2776 1.000000 1.000000 1.010000 0.701505 -0.000000 0.639123 0.315298 + 2777 1.000000 1.000000 1.010000 0.678317 -0.000000 0.660967 0.320948 + 2778 1.000000 1.000000 1.010000 0.654750 -0.000000 0.684651 0.320243 + 2779 1.000000 1.000000 1.010000 0.631551 -0.000000 0.709961 0.311606 + 2780 1.000000 1.000000 1.010000 0.609416 -0.000000 0.735680 0.295613 + 2781 1.000000 1.000000 1.010000 0.588620 -0.000000 0.761759 0.270647 + 2782 1.000000 1.000000 1.010000 0.570216 -0.000000 0.786497 0.237226 + 2783 1.000000 1.000000 1.010000 0.554332 -0.000000 0.808971 0.195656 + 2784 1.000000 1.000000 1.010000 0.541808 -0.000000 0.827730 0.145967 + 2785 1.000000 1.000000 1.010000 0.533173 -0.000000 0.841176 0.090279 + 2786 1.000000 1.000000 1.010000 0.528766 -0.000000 0.848203 0.030950 + 2787 1.000000 1.000000 1.010000 0.528720 0.000000 0.848247 -0.030529 + 2788 1.000000 1.000000 1.010000 0.533226 0.000000 0.841214 -0.089604 + 2789 1.000000 1.000000 1.010000 0.541769 0.000000 0.827822 -0.145595 + 2790 1.000000 1.000000 1.010000 0.554426 0.000000 0.809054 -0.195045 + 2791 1.000000 1.000000 1.010000 0.570139 0.000000 0.786702 -0.236732 + 2792 1.000000 1.000000 1.010000 0.588592 0.000000 0.761958 -0.270148 + 2793 1.000000 1.000000 1.010000 0.609359 0.000000 0.735968 -0.295014 + 2794 1.000000 1.000000 1.010000 0.631723 0.000000 0.710027 -0.311108 + 2795 1.000000 1.000000 1.010000 0.654730 0.000000 0.685019 -0.319496 + 2796 1.000000 1.000000 1.010000 0.678252 0.000000 0.661260 -0.320482 + 2797 1.000000 1.000000 1.010000 0.701525 0.000000 0.639294 -0.314907 + 2798 1.000000 1.000000 1.010000 0.724139 0.000000 0.619252 -0.303560 + 2799 1.000000 1.000000 1.010000 0.745779 0.000000 0.601405 -0.286575 + 2800 1.000000 1.000000 1.010000 0.765943 0.000000 0.585455 -0.265657 + 2801 1.000000 1.000000 1.010000 0.784489 0.000000 0.571648 -0.240406 + 2802 1.000000 1.000000 1.010000 0.801031 0.000000 0.559893 -0.211825 + 2803 1.000000 1.000000 1.010000 0.815514 0.000000 0.549740 -0.180896 + 2804 1.000000 1.000000 1.010000 0.827426 0.000000 0.541929 -0.147240 + 2805 1.000000 1.000000 1.010000 0.836887 0.000000 0.535804 -0.111956 + 2806 1.000000 1.000000 1.010000 0.843719 0.000000 0.531470 -0.075354 + 2807 1.000000 1.000000 1.010000 0.847982 0.000000 0.528676 -0.037785 + 2808 1.000000 1.000000 1.010000 0.831667 -0.000000 0.555275 0.000381 + 2809 1.000000 1.000000 1.010000 0.830037 -0.000000 0.556318 0.039351 + 2810 1.000000 1.000000 1.010000 0.824931 -0.000000 0.559885 0.077579 + 2811 1.000000 1.000000 1.010000 0.816872 -0.000000 0.565364 0.114382 + 2812 1.000000 1.000000 1.010000 0.805652 -0.000000 0.573285 0.149228 + 2813 1.000000 1.000000 1.010000 0.791550 -0.000000 0.583464 0.181709 + 2814 1.000000 1.000000 1.010000 0.774919 -0.000000 0.595972 0.210518 + 2815 1.000000 1.000000 1.010000 0.755986 -0.000000 0.610939 0.235029 + 2816 1.000000 1.000000 1.010000 0.735210 -0.000000 0.628108 0.254845 + 2817 1.000000 1.000000 1.010000 0.713002 -0.000000 0.647707 0.268521 + 2818 1.000000 1.000000 1.010000 0.689780 -0.000000 0.669572 0.275458 + 2819 1.000000 1.000000 1.010000 0.666330 -0.000000 0.693196 0.274742 + 2820 1.000000 1.000000 1.010000 0.643488 -0.000000 0.717854 0.265722 + 2821 1.000000 1.000000 1.010000 0.621520 -0.000000 0.743168 0.247818 + 2822 1.000000 1.000000 1.010000 0.601729 -0.000000 0.767740 0.220222 + 2823 1.000000 1.000000 1.010000 0.584402 -0.000000 0.790433 0.183548 + 2824 1.000000 1.000000 1.010000 0.570620 -0.000000 0.809421 0.138673 + 2825 1.000000 1.000000 1.010000 0.561320 -0.000000 0.823117 0.086014 + 2826 1.000000 1.000000 1.010000 0.556367 -0.000000 0.830421 0.029275 + 2827 1.000000 1.000000 1.010000 0.556398 0.000000 0.830414 -0.028875 + 2828 1.000000 1.000000 1.010000 0.561253 0.000000 0.823206 -0.085599 + 2829 1.000000 1.000000 1.010000 0.570647 0.000000 0.809511 -0.138033 + 2830 1.000000 1.000000 1.010000 0.584433 0.000000 0.790519 -0.183077 + 2831 1.000000 1.000000 1.010000 0.601777 0.000000 0.767871 -0.219633 + 2832 1.000000 1.000000 1.010000 0.621576 0.000000 0.743342 -0.247154 + 2833 1.000000 1.000000 1.010000 0.643515 0.000000 0.717920 -0.265479 + 2834 1.000000 1.000000 1.010000 0.666318 0.000000 0.693309 -0.274486 + 2835 1.000000 1.000000 1.010000 0.689934 0.000000 0.669527 -0.275180 + 2836 1.000000 1.000000 1.010000 0.713044 0.000000 0.647874 -0.268007 + 2837 1.000000 1.000000 1.010000 0.735196 0.000000 0.628325 -0.254353 + 2838 1.000000 1.000000 1.010000 0.755978 0.000000 0.611045 -0.234780 + 2839 1.000000 1.000000 1.010000 0.774906 0.000000 0.596188 -0.209955 + 2840 1.000000 1.000000 1.010000 0.791650 0.000000 0.583441 -0.181348 + 2841 1.000000 1.000000 1.010000 0.805543 0.000000 0.573475 -0.149089 + 2842 1.000000 1.000000 1.010000 0.816804 0.000000 0.565538 -0.114004 + 2843 1.000000 1.000000 1.010000 0.825081 0.000000 0.559709 -0.077247 + 2844 1.000000 1.000000 1.010000 0.829950 0.000000 0.556480 -0.038890 + 2845 1.000000 1.000000 1.010000 0.812960 -0.000000 0.582320 0.000297 + 2846 1.000000 1.000000 1.010000 0.810966 -0.000000 0.583714 0.040148 + 2847 1.000000 1.000000 1.010000 0.804879 -0.000000 0.588177 0.078846 + 2848 1.000000 1.000000 1.010000 0.795154 -0.000000 0.595237 0.115856 + 2849 1.000000 1.000000 1.010000 0.781709 -0.000000 0.605529 0.149214 + 2850 1.000000 1.000000 1.010000 0.764998 -0.000000 0.618771 0.178607 + 2851 1.000000 1.000000 1.010000 0.745764 -0.000000 0.634725 0.202384 + 2852 1.000000 1.000000 1.010000 0.724223 -0.000000 0.653688 0.219531 + 2853 1.000000 1.000000 1.010000 0.701428 -0.000000 0.674992 0.228875 + 2854 1.000000 1.000000 1.010000 0.678068 -0.000000 0.698169 0.229746 + 2855 1.000000 1.000000 1.010000 0.655183 -0.000000 0.722632 0.220312 + 2856 1.000000 1.000000 1.010000 0.633922 -0.000000 0.746874 0.200803 + 2857 1.000000 1.000000 1.010000 0.615019 -0.000000 0.769839 0.170588 + 2858 1.000000 1.000000 1.010000 0.599690 -0.000000 0.789530 0.130440 + 2859 1.000000 1.000000 1.010000 0.588938 -0.000000 0.804032 0.081757 + 2860 1.000000 1.000000 1.010000 0.583244 -0.000000 0.811804 0.028302 + 2861 1.000000 1.000000 1.010000 0.583326 0.000000 0.811763 -0.027781 + 2862 1.000000 1.000000 1.010000 0.588810 0.000000 0.804163 -0.081390 + 2863 1.000000 1.000000 1.010000 0.599648 0.000000 0.789664 -0.129820 + 2864 1.000000 1.000000 1.010000 0.614884 0.000000 0.770106 -0.169863 + 2865 1.000000 1.000000 1.010000 0.633742 0.000000 0.747098 -0.200536 + 2866 1.000000 1.000000 1.010000 0.655299 0.000000 0.722666 -0.219857 + 2867 1.000000 1.000000 1.010000 0.678152 0.000000 0.698202 -0.229399 + 2868 1.000000 1.000000 1.010000 0.701377 0.000000 0.675080 -0.228774 + 2869 1.000000 1.000000 1.010000 0.724206 0.000000 0.653807 -0.219231 + 2870 1.000000 1.000000 1.010000 0.745683 0.000000 0.634968 -0.201921 + 2871 1.000000 1.000000 1.010000 0.764990 0.000000 0.618902 -0.178186 + 2872 1.000000 1.000000 1.010000 0.781535 0.000000 0.605825 -0.148926 + 2873 1.000000 1.000000 1.010000 0.794967 0.000000 0.595584 -0.115351 + 2874 1.000000 1.000000 1.010000 0.804848 0.000000 0.588262 -0.078533 + 2875 1.000000 1.000000 1.010000 0.810948 0.000000 0.583775 -0.039639 + 2876 1.000000 1.000000 1.010000 0.793487 -0.000000 0.608587 0.000417 + 2877 1.000000 1.000000 1.010000 0.790857 -0.000000 0.610618 0.041111 + 2878 1.000000 1.000000 1.010000 0.783368 -0.000000 0.616419 0.079762 + 2879 1.000000 1.000000 1.010000 0.770939 -0.000000 0.626442 0.114997 + 2880 1.000000 1.000000 1.010000 0.754578 -0.000000 0.639939 0.145223 + 2881 1.000000 1.000000 1.010000 0.735054 -0.000000 0.656979 0.167555 + 2882 1.000000 1.000000 1.010000 0.713057 -0.000000 0.677242 0.181366 + 2883 1.000000 1.000000 1.010000 0.689757 -0.000000 0.700084 0.184709 + 2884 1.000000 1.000000 1.010000 0.667126 -0.000000 0.723956 0.175587 + 2885 1.000000 1.000000 1.010000 0.646364 -0.000000 0.747240 0.154423 + 2886 1.000000 1.000000 1.010000 0.628771 -0.000000 0.768081 0.121240 + 2887 1.000000 1.000000 1.010000 0.616370 -0.000000 0.783621 0.077630 + 2888 1.000000 1.000000 1.010000 0.609769 -0.000000 0.792116 0.027104 + 2889 1.000000 1.000000 1.010000 0.609740 0.000000 0.792158 -0.026489 + 2890 1.000000 1.000000 1.010000 0.616138 0.000000 0.783883 -0.076829 + 2891 1.000000 1.000000 1.010000 0.628794 0.000000 0.768131 -0.120797 + 2892 1.000000 1.000000 1.010000 0.646366 0.000000 0.747345 -0.153904 + 2893 1.000000 1.000000 1.010000 0.667171 0.000000 0.723990 -0.175277 + 2894 1.000000 1.000000 1.010000 0.689837 0.000000 0.700158 -0.184128 + 2895 1.000000 1.000000 1.010000 0.712978 0.000000 0.677428 -0.180977 + 2896 1.000000 1.000000 1.010000 0.734907 0.000000 0.657228 -0.167220 + 2897 1.000000 1.000000 1.010000 0.754702 0.000000 0.639965 -0.144463 + 2898 1.000000 1.000000 1.010000 0.771155 0.000000 0.626265 -0.114511 + 2899 1.000000 1.000000 1.010000 0.783381 0.000000 0.616433 -0.079526 + 2900 1.000000 1.000000 1.010000 0.790847 0.000000 0.610663 -0.040644 + 2901 1.000000 1.000000 1.010000 0.773191 -0.000000 0.634173 0.000385 + 2902 1.000000 1.000000 1.010000 0.769667 -0.000000 0.637099 0.041438 + 2903 1.000000 1.000000 1.010000 0.759822 -0.000000 0.645327 0.078894 + 2904 1.000000 1.000000 1.010000 0.743898 -0.000000 0.659177 0.110010 + 2905 1.000000 1.000000 1.010000 0.723899 -0.000000 0.677346 0.131043 + 2906 1.000000 1.000000 1.010000 0.701578 -0.000000 0.698943 0.138807 + 2907 1.000000 1.000000 1.010000 0.678853 -0.000000 0.722359 0.131741 + 2908 1.000000 1.000000 1.010000 0.658843 -0.000000 0.744326 0.109108 + 2909 1.000000 1.000000 1.010000 0.643791 -0.000000 0.761785 0.072228 + 2910 1.000000 1.000000 1.010000 0.635580 -0.000000 0.771615 0.025479 + 2911 1.000000 1.000000 1.010000 0.635443 0.000000 0.771744 -0.024966 + 2912 1.000000 1.000000 1.010000 0.643689 0.000000 0.761892 -0.072005 + 2913 1.000000 1.000000 1.010000 0.658793 0.000000 0.744431 -0.108693 + 2914 1.000000 1.000000 1.010000 0.678948 0.000000 0.722369 -0.131193 + 2915 1.000000 1.000000 1.010000 0.701524 0.000000 0.699039 -0.138595 + 2916 1.000000 1.000000 1.010000 0.723886 0.000000 0.677488 -0.130381 + 2917 1.000000 1.000000 1.010000 0.744094 0.000000 0.659040 -0.109501 + 2918 1.000000 1.000000 1.010000 0.759753 0.000000 0.645433 -0.078686 + 2919 1.000000 1.000000 1.010000 0.769639 0.000000 0.637177 -0.040762 + 2920 1.000000 1.000000 1.010000 0.751985 -0.000000 0.659180 0.000043 + 2921 1.000000 1.000000 1.010000 0.747056 -0.000000 0.663504 0.040862 + 2922 1.000000 1.000000 1.010000 0.733033 -0.000000 0.676223 0.073383 + 2923 1.000000 1.000000 1.010000 0.712808 -0.000000 0.695442 0.090910 + 2924 1.000000 1.000000 1.010000 0.690660 -0.000000 0.717727 0.088640 + 2925 1.000000 1.000000 1.010000 0.671720 -0.000000 0.737958 0.064884 + 2926 1.000000 1.000000 1.010000 0.660897 -0.000000 0.750095 0.023927 + 2927 1.000000 1.000000 1.010000 0.660839 0.000000 0.750169 -0.023214 + 2928 1.000000 1.000000 1.010000 0.671739 0.000000 0.737987 -0.064354 + 2929 1.000000 1.000000 1.010000 0.690767 0.000000 0.717697 -0.088049 + 2930 1.000000 1.000000 1.010000 0.712855 0.000000 0.695407 -0.090812 + 2931 1.000000 1.000000 1.010000 0.733036 0.000000 0.676245 -0.073147 + 2932 1.000000 1.000000 1.010000 0.747072 0.000000 0.663502 -0.040604 + 2933 1.000000 1.000000 1.010000 0.729918 -0.000000 0.683535 0.000321 + 2934 1.000000 1.000000 1.010000 0.718702 -0.000000 0.694175 0.039867 + 2935 1.000000 1.000000 1.010000 0.695596 -0.000000 0.717258 0.041086 + 2936 1.000000 1.000000 1.010000 0.683802 -0.000000 0.729668 0.000369 + 2937 1.000000 1.000000 1.010000 0.695606 0.000000 0.717284 -0.040462 + 2938 1.000000 1.000000 1.010000 0.718673 0.000000 0.694236 -0.039301 + + diff --git a/examples/COUPLE/fortran/libfwrapper.c b/examples/COUPLE/fortran/libfwrapper.c index e25cdc94c8..6c44906a59 100644 --- a/examples/COUPLE/fortran/libfwrapper.c +++ b/examples/COUPLE/fortran/libfwrapper.c @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - www.cs.sandia.gov/~sjplimp/lammps.html - Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/COUPLE/fortran2/LAMMPS-wrapper.cpp b/examples/COUPLE/fortran2/LAMMPS-wrapper.cpp index eb6f421606..4774cb6b49 100644 --- a/examples/COUPLE/fortran2/LAMMPS-wrapper.cpp +++ b/examples/COUPLE/fortran2/LAMMPS-wrapper.cpp @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/ - Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/COUPLE/fortran2/LAMMPS-wrapper.h b/examples/COUPLE/fortran2/LAMMPS-wrapper.h index 479af91738..02e1a651a9 100644 --- a/examples/COUPLE/fortran2/LAMMPS-wrapper.h +++ b/examples/COUPLE/fortran2/LAMMPS-wrapper.h @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - www.cs.sandia.gov/~sjplimp/lammps.html - Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/COUPLE/fortran_dftb/LAMMPS-wrapper.cpp b/examples/COUPLE/fortran_dftb/LAMMPS-wrapper.cpp index eb6f421606..4774cb6b49 100644 --- a/examples/COUPLE/fortran_dftb/LAMMPS-wrapper.cpp +++ b/examples/COUPLE/fortran_dftb/LAMMPS-wrapper.cpp @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/ - Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/COUPLE/fortran_dftb/LAMMPS-wrapper.h b/examples/COUPLE/fortran_dftb/LAMMPS-wrapper.h index 553466d138..e1eec9fc72 100644 --- a/examples/COUPLE/fortran_dftb/LAMMPS-wrapper.h +++ b/examples/COUPLE/fortran_dftb/LAMMPS-wrapper.h @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - www.cs.sandia.gov/~sjplimp/lammps.html - Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/COUPLE/fortran_dftb/LAMMPS-wrapper2.cpp b/examples/COUPLE/fortran_dftb/LAMMPS-wrapper2.cpp index 44d7b5bca4..83d594df60 100644 --- a/examples/COUPLE/fortran_dftb/LAMMPS-wrapper2.cpp +++ b/examples/COUPLE/fortran_dftb/LAMMPS-wrapper2.cpp @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/ - Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/COUPLE/fortran_dftb/LAMMPS-wrapper2.h b/examples/COUPLE/fortran_dftb/LAMMPS-wrapper2.h index d3705179ed..45c41b569a 100644 --- a/examples/COUPLE/fortran_dftb/LAMMPS-wrapper2.h +++ b/examples/COUPLE/fortran_dftb/LAMMPS-wrapper2.h @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - www.cs.sandia.gov/~sjplimp/lammps.html - Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/COUPLE/multiple/multiple.cpp b/examples/COUPLE/multiple/multiple.cpp index 1b6bb66485..43dc90323b 100644 --- a/examples/COUPLE/multiple/multiple.cpp +++ b/examples/COUPLE/multiple/multiple.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/ - Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/COUPLE/plugin/.gitignore b/examples/COUPLE/plugin/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/examples/COUPLE/plugin/.gitignore @@ -0,0 +1 @@ +/build diff --git a/examples/COUPLE/plugin/CMakeLists.txt b/examples/COUPLE/plugin/CMakeLists.txt new file mode 100644 index 0000000000..f4064d3f65 --- /dev/null +++ b/examples/COUPLE/plugin/CMakeLists.txt @@ -0,0 +1,47 @@ +########################################## +# CMake build system for coupling to the LAMMPS library +# where the library is loaded dynamically at runtime. +########################################## + +cmake_minimum_required(VERSION 3.10) + +# enforce out-of-source build +if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) + message(FATAL_ERROR "In-source builds are not allowed. You must create and use a build directory. " + "Please remove CMakeCache.txt and CMakeFiles first.") +endif() + +project(liblammpsplugin VERSION 1.0 LANGUAGES C) + +# by default, install into $HOME/.local (not /usr/local), +# so that no root access (and sudo) is needed +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "Default install path" FORCE) +endif() + +# ugly hacks for MSVC which by default always reports an old C++ standard in the __cplusplus macro +# and prints lots of pointless warnings about "unsafe" functions +if(MSVC) + if(CMAKE_C_COMPILER_ID STREQUAL "MSVC") + if(LAMMPS_EXCEPTIONS) + add_compile_options(/EHsc) + endif() + endif() + add_compile_definitions(_CRT_SECURE_NO_WARNINGS) +endif() + +find_package(MPI REQUIRED) +# do not include the (obsolete) MPI C++ bindings which makes +# for leaner object files and avoids namespace conflicts +set(MPI_CXX_SKIP_MPICXX TRUE) + +########################## + +add_executable(simple-plugin simple.c liblammpsplugin.c) +target_link_libraries(simple-plugin PRIVATE MPI::MPI_C) +target_compile_definitions(simple-plugin PRIVATE LAMMPS_LIB_MPI) + +# link with -ldl or equivalent for plugin loading; except on Windows +if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + target_link_libraries(simple-plugin PRIVATE ${CMAKE_DL_LIBS}) +endif() diff --git a/examples/COUPLE/plugin/README b/examples/COUPLE/plugin/README index bced08b6d7..beed549d3f 100644 --- a/examples/COUPLE/plugin/README +++ b/examples/COUPLE/plugin/README @@ -11,32 +11,39 @@ liblammpsplugin.c is the LAMMPS library plugin loader You can then build the driver executable codes with a compile line like below. -mpicc -c -O -Wall -g -I$HOME/lammps/src liblammpsplugin.c -mpicc -c -O -Wall -g simple.c -mpicc simple.o liblammpsplugin.o -ldl -o simpleC +mpicc -c -O -DLAMMPS_LIB_MPI -Wall -g liblammpsplugin.c +mpicc -c -O -DLAMMPS_LIB_MPI -Wall -g simple.c +mpicc simple.o liblammpsplugin.o -ldl -o simple-plugin + +or using the provided CMake file with: + +mkdir build +cd build +cmake ../ +cmake --build . You also need to build LAMMPS as a shared library -(see examples/COUPLE/README), e.g. +(see examples/COUPLE/README), e.g. cd $HOME/lammps/src make mode=shlib mpi -or +or cd $HOME/lammps mkdir build-shared cd build-shared -cmake -D BUILD_LIB=on -D BUILD_SHARED_LIBS=on ../cmake +cmake -D BUILD_MPI=on -D BUILD_SHARED_LIBS=on ../cmake make -You then run simpleC on a parallel machine +You then run simple-plugin on a parallel machine on some number of processors Q with 3 arguments: -% mpirun -np Q simpleC P in.lj $HOME/lammps/src/liblammps.so +% mpirun -np Q simple-plugin P in.lj $HOME/lammps/src/liblammps.so or -% mpirun -np Q simpleC P in.lj $HOME/lammps/build-shared/liblammps.so +% mpirun -np Q simple-plugin P in.lj $HOME/lammps/build-shared/liblammps.so P is the number of procs you want LAMMPS to run on (must be <= Q) and in.lj is a LAMMPS input script and the last argument is the path to diff --git a/examples/COUPLE/plugin/liblammpsplugin.c b/examples/COUPLE/plugin/liblammpsplugin.c index ea2e2ab536..996a27524f 100644 --- a/examples/COUPLE/plugin/liblammpsplugin.c +++ b/examples/COUPLE/plugin/liblammpsplugin.c @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -18,10 +18,29 @@ a LAMMPS plugin to some other software. */ -#include "library.h" #include "liblammpsplugin.h" -#include + +#if defined(_WIN32) + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif + +#if defined(_WIN32_WINNT) +#undef _WIN32_WINNT +#endif + +// target Windows version is windows 7 and later +#define _WIN32_WINNT _WIN32_WINNT_WIN7 +#define PSAPI_VERSION 2 + +#include +#else #include +#endif + +#include + liblammpsplugin_t *liblammpsplugin_load(const char *lib) { @@ -29,14 +48,29 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib) void *handle; if (lib == NULL) return NULL; + +#ifdef _WIN32 + handle = (void *) LoadLibrary(lib); +#else handle = dlopen(lib,RTLD_NOW|RTLD_GLOBAL); +#endif if (handle == NULL) return NULL; lmp = (liblammpsplugin_t *) malloc(sizeof(liblammpsplugin_t)); lmp->handle = handle; -#define ADDSYM(symbol) lmp->symbol = dlsym(handle,"lammps_" #symbol) +#ifdef _WIN32 +#define ADDSYM(symbol) *(void **) (&lmp->symbol) = (void *) GetProcAddress((HINSTANCE) handle, "lammps_" #symbol) +#else +#define ADDSYM(symbol) *(void **) (&lmp->symbol) = dlsym(handle,"lammps_" #symbol) +#endif + +#if defined(LAMMPS_LIB_MPI) ADDSYM(open); +#else + lmp->open = NULL; +#endif + ADDSYM(open_no_mpi); ADDSYM(open_fortran); ADDSYM(close); @@ -46,6 +80,8 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib) ADDSYM(kokkos_finalize); ADDSYM(python_finalize); + ADDSYM(error); + ADDSYM(file); ADDSYM(command); ADDSYM(commands_list); @@ -70,6 +106,7 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib) ADDSYM(extract_compute); ADDSYM(extract_fix); ADDSYM(extract_variable); + ADDSYM(extract_variable_datatype); ADDSYM(set_variable); ADDSYM(gather_atoms); @@ -77,8 +114,15 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib) ADDSYM(gather_atoms_subset); ADDSYM(scatter_atoms); ADDSYM(scatter_atoms_subset); + ADDSYM(gather_bonds); + ADDSYM(gather); + ADDSYM(gather_concat); + ADDSYM(gather_subset); + ADDSYM(scatter); + ADDSYM(scatter_subset); + ADDSYM(create_atoms); ADDSYM(find_pair_neighlist); @@ -116,6 +160,9 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib) ADDSYM(plugin_count); ADDSYM(plugin_name); + ADDSYM(encode_image_flags); + ADDSYM(decode_image_flags); + ADDSYM(set_fix_external_callback); ADDSYM(fix_external_get_force); ADDSYM(fix_external_set_energy_global); @@ -125,6 +172,8 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib) ADDSYM(fix_external_set_vector_length); ADDSYM(fix_external_set_vector); + ADDSYM(flush_buffers); + ADDSYM(free); ADDSYM(is_running); @@ -139,6 +188,8 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib) lmp->has_error = NULL; lmp->get_last_error_message = NULL; #endif + + ADDSYM(python_api_version); return lmp; } @@ -147,7 +198,11 @@ int liblammpsplugin_release(liblammpsplugin_t *lmp) if (lmp == NULL) return 1; if (lmp->handle == NULL) return 2; +#ifdef _WIN32 + FreeLibrary((HINSTANCE) handle); +#else dlclose(lmp->handle); +#endif free((void *)lmp); return 0; } diff --git a/examples/COUPLE/plugin/liblammpsplugin.h b/examples/COUPLE/plugin/liblammpsplugin.h index 219ddb2574..eb63ca6807 100644 --- a/examples/COUPLE/plugin/liblammpsplugin.h +++ b/examples/COUPLE/plugin/liblammpsplugin.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -28,11 +28,71 @@ #define LAMMPS_SMALLBIG #endif +#if defined(LAMMPS_LIB_MPI) #include -#if defined(LAMMPS_BIGBIG) || defined(LAMMPS_SMALLBIG) -#include /* for int64_t */ #endif +#if defined(LAMMPS_BIGBIG) || defined(LAMMPS_SMALLBIG) +#include /* for int64_t */ +#endif + +/* The following enums must be kept in sync with the equivalent enums + * or constants in python/lammps/constants.py, fortran/lammps.f90, + * tools/swig/lammps.i, and examples/COUPLE/plugin/liblammpsplugin.h */ + +/* Data type constants for extracting data from atoms, computes and fixes */ + +enum _LMP_DATATYPE_CONST { + LAMMPS_INT = 0, /*!< 32-bit integer (array) */ + LAMMPS_INT_2D = 1, /*!< two-dimensional 32-bit integer array */ + LAMMPS_DOUBLE = 2, /*!< 64-bit double (array) */ + LAMMPS_DOUBLE_2D = 3, /*!< two-dimensional 64-bit double array */ + LAMMPS_INT64 = 4, /*!< 64-bit integer (array) */ + LAMMPS_INT64_2D = 5, /*!< two-dimensional 64-bit integer array */ + LAMMPS_STRING = 6 /*!< C-String */ +}; + +/* Style constants for extracting data from computes and fixes. */ + +enum _LMP_STYLE_CONST { + LMP_STYLE_GLOBAL = 0, /*!< return global data */ + LMP_STYLE_ATOM = 1, /*!< return per-atom data */ + LMP_STYLE_LOCAL = 2 /*!< return local data */ +}; + +/* Type and size constants for extracting data from computes and fixes. */ + +enum _LMP_TYPE_CONST { + LMP_TYPE_SCALAR = 0, /*!< return scalar */ + LMP_TYPE_VECTOR = 1, /*!< return vector */ + LMP_TYPE_ARRAY = 2, /*!< return array */ + LMP_SIZE_VECTOR = 3, /*!< return length of vector */ + LMP_SIZE_ROWS = 4, /*!< return number of rows */ + LMP_SIZE_COLS = 5 /*!< return number of columns */ +}; + +/* Error codes to select the suitable function in the Error class */ + +enum _LMP_ERROR_CONST { + LMP_ERROR_WARNING = 0, /*!< call Error::warning() */ + LMP_ERROR_ONE = 1, /*!< called from one MPI rank */ + LMP_ERROR_ALL = 2, /*!< called from all MPI ranks */ + LMP_ERROR_WORLD = 4, /*!< error on Comm::world */ + LMP_ERROR_UNIVERSE = 8 /*!< error on Comm::universe */ +}; + +/** Variable style constants for extracting data from variables. + * + * Must be kept in sync with the equivalent constants in python/lammps/constants.py, + * fortran/lammps.f90, and tools/swig/lammps.i */ + +enum _LMP_VAR_CONST { + LMP_VAR_EQUAL = 0, /*!< compatible with equal-style variables */ + LMP_VAR_ATOM = 1, /*!< compatible with atom-style variables */ + LMP_VAR_VECTOR = 2, /*!< compatible with vector-style variables */ + LMP_VAR_STRING = 3 /*!< return value will be a string (catch-all) */ +}; + #ifdef __cplusplus extern "C" { #endif @@ -49,7 +109,11 @@ struct _liblammpsplugin { int abiversion; int has_exceptions; void *handle; +#if defined(LAMMPS_LIB_MPI) void *(*open)(int, char **, MPI_Comm, void **); +#else + void *open; +#endif void *(*open_no_mpi)(int, char **, void **); void *(*open_fortran)(int, char **, void **, int); void (*close)(void *); @@ -59,13 +123,15 @@ struct _liblammpsplugin { void (*kokkos_finalize)(); void (*python_finalize)(); + void (*error)(void *, int, const char *); + void (*file)(void *, char *); char *(*command)(void *, const char *); void (*commands_list)(void *, int, const char **); void (*commands_string)(void *, const char *); double (*get_natoms)(void *); - double (*get_thermo)(void *, char *); + double (*get_thermo)(void *, const char *); void (*extract_box)(void *, double *, double *, double *, double *, double *, int *, int *); @@ -78,12 +144,13 @@ struct _liblammpsplugin { int *(*extract_global_datatype)(void *, const char *); void *(*extract_global)(void *, const char *); - void *(*extract_atom_datatype)(void *, const char *); + int *(*extract_atom_datatype)(void *, const char *); void *(*extract_atom)(void *, const char *); void *(*extract_compute)(void *, const char *, int, int); void *(*extract_fix)(void *, const char *, int, int, int, int); void *(*extract_variable)(void *, const char *, char *); + int (*extract_variable_datatype)(void *, const char *); int (*set_variable)(void *, char *, char *); void (*gather_atoms)(void *, char *, int, int, void *); @@ -93,22 +160,26 @@ struct _liblammpsplugin { void (*scatter_atoms_subset)(void *, char *, int, int, int, int *, void *); void (*gather_bonds)(void *, void *); - -// lammps_create_atoms() takes tagint and imageint as args -// ifdef insures they are compatible with rest of LAMMPS -// caller must match to how LAMMPS library is built + + void (*gather)(void *, char *, int, int, void *); + void (*gather_concat)(void *, char *, int, int, void *); + void (*gather_subset)(void *, char *, int, int, int, int *,void *); + void (*scatter)(void *, char *, int, int, void *); + void (*scatter_subset)(void *, char *, int, int, int, int *, void *); + +/* lammps_create_atoms() takes tagint and imageint as args + * the ifdef insures they are compatible with rest of LAMMPS + * caller must match to how LAMMPS library is built */ #ifndef LAMMPS_BIGBIG - void (*create_atoms)(void *, int, int *, int *, double *, - double *, int *, int); + void (*create_atoms)(void *, int, int *, int *, double *, double *, int *, int); #else - void (*create_atoms)(void *, int, int64_t *, int *, double *, - double *, int64_t *, int); + void (*create_atoms)(void *, int, int64_t *, int *, double *, double *, int64_t *, int); #endif int (*find_pair_neighlist)(void *, const char *, int, int, int); int (*find_fix_neighlist)(void *, const char *, int); - int (*find_compute_neighlist)(void *, char *, int); + int (*find_compute_neighlist)(void *, const char *, int); int (*neighlist_num_elements)(void *, int); void (*neighlist_element_neighbors)(void *, int, int, int *, int *, int **); @@ -141,8 +212,16 @@ struct _liblammpsplugin { int (*plugin_count)(); int (*plugin_name)(int, char *, char *, int); - void (*set_fix_external_callback)(void *, const char *, FixExternalFnPtr, void*); - void (*fix_external_get_force)(void *, const char *); +#if !defined(LAMMPS_BIGBIG) + int (*encode_image_flags)(int, int, int); + void (*decode_image_flags)(int, int *); +#else + int64_t (*encode_image_flags)(int, int, int); + void (*decode_image_flags)(int64_t, int *); +#endif + + void (*set_fix_external_callback)(void *, const char *, FixExternalFnPtr, void *); + double **(*fix_external_get_force)(void *, const char *); void (*fix_external_set_energy_global)(void *, const char *, double); void (*fix_external_set_energy_peratom)(void *, const char *, double *); void (*fix_external_set_virial_global)(void *, const char *, double *); @@ -150,6 +229,8 @@ struct _liblammpsplugin { void (*fix_external_set_vector_length)(void *, const char *, int); void (*fix_external_set_vector)(void *, const char *, int, double); + void (*flush_buffers)(void *); + void (*free)(void *); void (*is_running)(void *); @@ -157,6 +238,8 @@ struct _liblammpsplugin { int (*has_error)(void *); int (*get_last_error_message)(void *, char *, int); + + int (*python_api_version)(); }; typedef struct _liblammpsplugin liblammpsplugin_t; diff --git a/examples/COUPLE/plugin/simple.c b/examples/COUPLE/plugin/simple.c index dc3934b40c..8383584a38 100644 --- a/examples/COUPLE/plugin/simple.c +++ b/examples/COUPLE/plugin/simple.c @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - www.cs.sandia.gov/~sjplimp/lammps.html - Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories + https://www.lammps.org, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -19,10 +19,16 @@ in.lammps = LAMMPS input script See README for compilation instructions */ +#include + #include #include #include -#include + +/* define so interface to lammps_open() is available, + since we will run on split communicator */ +#define LAMMPS_LIB_MPI 1 + #include "liblammpsplugin.h" /* this is the include for the plugin loader */ int main(int narg, char **arg) @@ -87,7 +93,13 @@ int main(int narg, char **arg) MPI_Abort(MPI_COMM_WORLD,1); } } - if (lammps == 1) lmp = plugin->open(0,NULL,comm_lammps,NULL); + if (lammps == 1) { + if (plugin->open == NULL) { + printf("ERROR: liblammpsmpi.c must be compiled with -DLAMMPS_LIB_MPI=1 for this program\n"); + MPI_Abort(MPI_COMM_WORLD,2); + } + lmp = plugin->open(0,NULL,comm_lammps,NULL); + } while (1) { if (me == 0) { @@ -112,23 +124,23 @@ int main(int narg, char **arg) int natoms = plugin->get_natoms(lmp); x = (double *) malloc(3*natoms*sizeof(double)); - plugin->gather_atoms(lmp,"x",1,3,x); + plugin->gather_atoms(lmp,(char *)"x",1,3,x); v = (double *) malloc(3*natoms*sizeof(double)); - plugin->gather_atoms(lmp,"v",1,3,v); + plugin->gather_atoms(lmp,(char *)"v",1,3,v); double epsilon = 0.1; x[0] += epsilon; - plugin->scatter_atoms(lmp,"x",1,3,x); + plugin->scatter_atoms(lmp,(char *)"x",1,3,x); plugin->command(lmp,"run 1"); } - // extract force on single atom two different ways + /* extract force on single atom two different ways */ if (lammps == 1) { double **f = (double **) plugin->extract_atom(lmp,"f"); printf("Force on 1 atom via extract_atom: %g\n",f[0][0]); - double *fx = (double *) plugin->extract_variable(lmp,"fx","all"); + double *fx = (double *) plugin->extract_variable(lmp,"fx",(char *)"all"); printf("Force on 1 atom via extract_variable: %g\n",fx[0]); } @@ -160,7 +172,7 @@ int main(int narg, char **arg) if (v) free(v); if (type) free(type); - // close down LAMMPS + /* close down LAMMPS */ if (lammps == 1) { plugin->close(lmp); diff --git a/examples/COUPLE/simple/CMakeLists.txt b/examples/COUPLE/simple/CMakeLists.txt index 4112eaa4e7..d9b877ec76 100644 --- a/examples/COUPLE/simple/CMakeLists.txt +++ b/examples/COUPLE/simple/CMakeLists.txt @@ -1,17 +1,44 @@ cmake_minimum_required(VERSION 3.10) -project(simple CXX) -set(LAMMPS_SRC_DIRECTORY "" CACHE PATH "Path for lammps source") -if(NOT LAMMPS_SRC_DIRECTORY STREQUAL "" AND EXISTS ${LAMMPS_SRC_DIRECTORY}/cmake/CMakeLists.txt) - option(BUILD_LIB "Build LAMMPS library" ON) - add_subdirectory(${LAMMPS_SRC_DIRECTORY}/cmake lammps) -else() +# enforce out-of-source build +if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) + message(FATAL_ERROR "In-source builds are not allowed. You must create and use a build directory. " + "Please remove CMakeCache.txt and CMakeFiles first.") +endif() + +project(couple-simple VERSION 1.0 LANGUAGES C CXX) + +# by default, install into $HOME/.local (not /usr/local), +# so that no root access (and sudo) is needed +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "Default install path" FORCE) +endif() + +# ugly hacks for MSVC which by default always reports an old C++ standard in the __cplusplus macro +# and prints lots of pointless warnings about "unsafe" functions +if(MSVC) + if(CMAKE_C_COMPILER_ID STREQUAL "MSVC") + if(LAMMPS_EXCEPTIONS) + add_compile_options(/EHsc) + endif() + endif() + add_compile_definitions(_CRT_SECURE_NO_WARNINGS) +endif() + +find_package(MPI QUIET) +# do not include the (obsolete) MPI C++ bindings which makes +# for leaner object files and avoids namespace conflicts +set(MPI_CXX_SKIP_MPICXX TRUE) + +########################## + +# build within LAMMPS build system +if(NOT LAMMPS_SOURCE_DIR) find_package(LAMMPS REQUIRED) endif() add_executable(simpleCC simple.cpp) target_link_libraries(simpleCC LAMMPS::lammps) -enable_language(C) add_executable(simpleC simple.c) target_link_libraries(simpleC LAMMPS::lammps) diff --git a/examples/COUPLE/simple/simple.c b/examples/COUPLE/simple/simple.c index 603ff270b7..fe2864f41e 100644 --- a/examples/COUPLE/simple/simple.c +++ b/examples/COUPLE/simple/simple.c @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - www.cs.sandia.gov/~sjplimp/lammps.html - Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/COUPLE/simple/simple.cpp b/examples/COUPLE/simple/simple.cpp index c05266975e..bf1174267e 100644 --- a/examples/COUPLE/simple/simple.cpp +++ b/examples/COUPLE/simple/simple.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/ - Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/COUPLE/simple/simple.f90 b/examples/COUPLE/simple/simple.f90 index 56b1534c40..8902104e47 100644 --- a/examples/COUPLE/simple/simple.f90 +++ b/examples/COUPLE/simple/simple.f90 @@ -1,6 +1,6 @@ ! LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator -! www.cs.sandia.gov/~sjplimp/lammps.html -! Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories +! https://www.lammps.org/, Sandia National Laboratories +! LAMMPS development team: developers@lammps.org ! ! Copyright (2003) Sandia Corporation. Under the terms of Contract ! DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/COUPLE/simple/simple_f77.f90 b/examples/COUPLE/simple/simple_f77.f90 index 374a0748ee..ac1c03f061 100644 --- a/examples/COUPLE/simple/simple_f77.f90 +++ b/examples/COUPLE/simple/simple_f77.f90 @@ -1,6 +1,6 @@ ! LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator -! www.cs.sandia.gov/~sjplimp/lammps.html -! Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories +! https://www.lammps.org/, Sandia National Laboratories +! LAMMPS development team: developers@lammps.org ! ! Copyright (2003) Sandia Corporation. Under the terms of Contract ! DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/PACKAGES/cgdna/examples/oxDNA2/unique_bp/generate_unique.py b/examples/PACKAGES/cgdna/examples/oxDNA2/unique_bp/generate_unique.py index 2cd6f46aec..330215bd80 100644 --- a/examples/PACKAGES/cgdna/examples/oxDNA2/unique_bp/generate_unique.py +++ b/examples/PACKAGES/cgdna/examples/oxDNA2/unique_bp/generate_unique.py @@ -3,7 +3,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS Development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/PACKAGES/cgdna/util/generate.py b/examples/PACKAGES/cgdna/util/generate.py index d2ba3ba980..cd7465acdb 100644 --- a/examples/PACKAGES/cgdna/util/generate.py +++ b/examples/PACKAGES/cgdna/util/generate.py @@ -3,7 +3,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS Development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/PACKAGES/dielectric/README b/examples/PACKAGES/dielectric/README index 1d5f30263c..ef775e479f 100644 --- a/examples/PACKAGES/dielectric/README +++ b/examples/PACKAGES/dielectric/README @@ -2,7 +2,7 @@ This folder contains some example data and input scripts for the DIELECTRIC pack Nguyen TD, Li H, Bagchi D, Solis FJ, Olvera de la Cruz, Incorporating surface polarization effects into large-scale coarse-grained molecular dynamics simulation, Computer Physics Communications 2019, 241, 80--91. -- data.confined : two point opposite charges confined between two interfaces (epsilon1=2/epsilon2=10/epsilon2=2) +- data.confined : two point opposite charges confined between two interfaces (epsilon2=2/epsilon1=10/epsilon2=2) - data.sphere : two point opposite charges outside a spherical interface (epsilon_in=1/epsilon2=10) - in.confined : read in data.confined @@ -10,7 +10,7 @@ Nguyen TD, Li H, Bagchi D, Solis FJ, Olvera de la Cruz, Incorporating surface po For "atom_style dielectric" the Atoms section in the data file contains 15 following columns: -id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature +id mol type q x y z normx normy normz area/patch ed em epsilon curvature where @@ -34,9 +34,13 @@ where For interface particles, epsilon is set to be em (the mean dielectric value above). -* area_per_patch: the surface area of the patch (element). +* area/patch: the surface area of the patch (element). For real charges, this value is irrelevant, can be 1.0. * curvature: surface mean curvature at the patch. For example, for spherical interfaces, curvature = 1/spherical radius. For planar interfaces, curvature = 0. + +Note that the properties normx, normy, normz, area/patch, ed, em, and curvature are not +used for the non-interface beads. epsilon is used to scale the charge of any non-interface +ion, see the documentation for pair styles with the dielectric suffix and fix polarize. diff --git a/examples/PACKAGES/dielectric/in.confined b/examples/PACKAGES/dielectric/in.confined index beb5b9a2b0..0f9dab7bba 100644 --- a/examples/PACKAGES/dielectric/in.confined +++ b/examples/PACKAGES/dielectric/in.confined @@ -7,7 +7,7 @@ # Dielectric constants can be set to be different from the input data file variable epsilon1 index 20 -variable epsilon2 index 8 +variable epsilon2 index 10 variable data index data.confined diff --git a/examples/PACKAGES/electrode/README b/examples/PACKAGES/electrode/README index 652194670b..b0c64d496b 100644 --- a/examples/PACKAGES/electrode/README +++ b/examples/PACKAGES/electrode/README @@ -1,14 +1,14 @@ These examples demonstrate the use of the ELECTRODE package for constant potential molecular dynamics. planar/ - au-vac.data -- gold electrodes with vacuum + data.au-vac -- gold electrodes with vacuum in.planar* -- comparison of gold electrodes with vacuum to theoretical capacitance of planar capacitor -- 5x, further labeled by long-range solver (ewald / pppm) and boundary correction (ew2d / ew3dc / ffield) -- the pppm-ew2d combination would not give correct results and will throw an error if selected test.sh -- run all in.planar files and check charge at 1.2V and %difference from theoretical (last column) graph-il/ - graph-il.data -- graphene electrodes with electrolyte (coarse-grained BMIm-PF6) + data.graph-il -- graphene electrodes with electrolyte (coarse-grained BMIm-PF6) in.conp -- reference run at constant potential in.etypes -- type-based smart neighborlists in.ffield -- finite field method with fully periodic cell @@ -18,10 +18,22 @@ graph-il/ in.thermo -- thermalize electrolyte with thermopotentiostat instead of NVT au-aq/ - au-aq.data -- gold electrodes with electrolyte (SPC water + NaCl) + data.au-aq -- gold electrodes with electrolyte (SPC water + NaCl) in.ffield -- finite field method with fully periodic cell in.tf -- Thomas-Fermi metallicity model with more delocalized charges +madelung/ + data.au-elyt -- tiny electrodes with two electrolyte atoms in between + settings.mod -- common settings + in.* -- setup KSpace and fix electrode/conp + plate_cap.py -- compute reference energy and charges from Madelung style sum + eval.py -- compare output of reference and Lammps job (used by test.sh) + test.sh -- run all in.* files and check charge at 1 V and %difference from theoretical (last column) + +piston/ + data.piston -- two electrodes with water + in.piston -- equilibrate distance between rigid electrodes + # future work: # in.cylinder -- comparison of carbon nanotube to theoretical induced charge for charge near circular conductor diff --git a/examples/PACKAGES/electrode/au-aq/in.ffield b/examples/PACKAGES/electrode/au-aq/in.ffield index 094fc39144..de594f8c9a 100644 --- a/examples/PACKAGES/electrode/au-aq/in.ffield +++ b/examples/PACKAGES/electrode/au-aq/in.ffield @@ -4,7 +4,7 @@ boundary p p p # ffield uses periodic z-boundary and no slab include settings.mod # styles, groups, computes and fixes -fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7 +fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes on thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qtop c_qbot c_qztop c_qzbot diff --git a/examples/PACKAGES/electrode/au-aq/in.tf b/examples/PACKAGES/electrode/au-aq/in.tf index d73efd10fc..23beb357d8 100644 --- a/examples/PACKAGES/electrode/au-aq/in.tf +++ b/examples/PACKAGES/electrode/au-aq/in.tf @@ -6,7 +6,7 @@ boundary p p p # ffield uses periodic z-boundary and no slab include settings.mod # styles, groups, computes and fixes -fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7 +fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes on fix_modify conp tf 6 1.0 18.1715745 fix_modify conp tf 7 1.0 18.1715745 diff --git a/examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-ffield.g++.1 b/examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-ffield.g++.1 similarity index 52% rename from examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-ffield.g++.1 rename to examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-ffield.g++.1 index 76e15ebe53..2c43724875 100644 --- a/examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-ffield.g++.1 +++ b/examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-ffield.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with constant potential using finite field # for z-periodic gold-saline electrochemical cell @@ -37,8 +37,8 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-3 neighbors 1 = max # of 1-4 neighbors 2 = max # of special neighbors - special bonds CPU = 0.002 seconds - read_data CPU = 0.051 seconds + special bonds CPU = 0.006 seconds + read_data CPU = 0.097 seconds group bot type 6 1620 atoms in group bot @@ -52,11 +52,12 @@ group electrolyte type 1 2 3 4 5 fix nvt electrolyte nvt temp 298.0 298.0 241 fix shake SPC shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters 2160 = # of frozen angles - find clusters CPU = 0.002 seconds + find clusters CPU = 0.006 seconds variable q atom q variable qz atom q*(z-lz/2) @@ -67,12 +68,41 @@ compute qzbot bot reduce sum v_qz compute ctemp electrolyte temp -fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7 +fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes on 3240 atoms in group conp_group thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qtop c_qbot c_qztop c_qzbot run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.24017705 @@ -82,9 +112,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.093542e-07 using double precision MKL FFT 3d grid and FFT values/proc = 472567 349920 - generated 21 of 21 mixed pair_coeff terms from geometric mixing rule +Generated 21 of 21 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 17 ghost atom cutoff = 17 @@ -105,35 +135,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 194.6 | 194.6 | 194.6 Mbytes +Per MPI rank memory allocation (min/avg/max) = 194.8 | 194.8 | 194.8 Mbytes Step Temp c_ctemp E_pair TotEng c_qtop c_qbot c_qztop c_qzbot - 0 171.61215 298.06731 -39212.819 -35306.164 4.1391573 -4.1391573 78.718381 131.56372 - 50 147.03139 255.37383 -39870.139 -36523.051 4.1312167 -4.1312167 78.563872 131.30255 - 100 149.89027 260.33932 -39878.859 -36466.689 4.0217834 -4.0217834 76.482548 127.82573 - 150 151.7382 263.54893 -39873.178 -36418.942 4.0469977 -4.0469977 76.967548 128.59855 - 200 151.7508 263.57081 -39827.015 -36372.492 4.1830375 -4.1830375 79.554159 132.93925 - 250 152.61146 265.06566 -39791.293 -36317.177 4.1835865 -4.1835865 79.56665 132.97185 - 300 153.51486 266.63475 -39751.841 -36257.16 4.1571861 -4.1571861 79.061431 132.12905 - 350 156.35115 271.561 -39754.955 -36195.708 4.3498059 -4.3498059 82.720202 138.28678 - 400 156.26118 271.40474 -39690.781 -36133.582 4.3444079 -4.3444079 82.619396 138.11873 - 450 158.54164 275.36558 -39681.083 -36071.97 4.2020488 -4.2020488 79.912674 133.55185 - 500 161.40138 280.33258 -39684.185 -36009.972 4.3021924 -4.3021924 81.807527 136.7464 -Loop time of 246.197 on 1 procs for 500 steps with 9798 atoms + 0 171.61215 298.06731 -39021.917 -35115.261 4.1391573 -4.1391573 78.718381 131.56372 + 50 147.03139 255.37383 -39679.603 -36332.515 4.1312167 -4.1312167 78.563872 131.30255 + 100 149.89027 260.33932 -39693.369 -36281.2 4.0217834 -4.0217834 76.482548 127.82573 + 150 151.7382 263.54893 -39686.526 -36232.29 4.0469977 -4.0469977 76.967548 128.59855 + 200 151.7508 263.57081 -39634.089 -36179.566 4.1830375 -4.1830375 79.554159 132.93925 + 250 152.61146 265.06566 -39598.341 -36124.226 4.1835865 -4.1835865 79.56665 132.97185 + 300 153.51486 266.63475 -39560.107 -36065.426 4.1571861 -4.1571861 79.06143 132.12905 + 350 156.35115 271.561 -39554.338 -35995.09 4.3498059 -4.3498059 82.720202 138.28678 + 400 156.26118 271.40474 -39490.412 -35933.213 4.344408 -4.344408 82.619398 138.11874 + 450 158.54163 275.36557 -39487.28 -35878.167 4.2020489 -4.2020489 79.912677 133.55186 + 500 161.40137 280.33257 -39485.763 -35811.55 4.3021927 -4.3021927 81.807532 136.74641 +Loop time of 146.959 on 1 procs for 500 steps with 9798 atoms -Performance: 0.175 ns/day, 136.776 hours/ns, 2.031 timesteps/s -356.3% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.294 ns/day, 81.644 hours/ns, 3.402 timesteps/s, 33.336 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 105.64 | 105.64 | 105.64 | 0.0 | 42.91 -Bond | 0.0010592 | 0.0010592 | 0.0010592 | 0.0 | 0.00 -Kspace | 37.643 | 37.643 | 37.643 | 0.0 | 15.29 -Neigh | 5.8827 | 5.8827 | 5.8827 | 0.0 | 2.39 -Comm | 0.18181 | 0.18181 | 0.18181 | 0.0 | 0.07 -Output | 0.0055762 | 0.0055762 | 0.0055762 | 0.0 | 0.00 -Modify | 96.78 | 96.78 | 96.78 | 0.0 | 39.31 -Other | | 0.06346 | | | 0.03 +Pair | 69.832 | 69.832 | 69.832 | 0.0 | 47.52 +Bond | 0.00091634 | 0.00091634 | 0.00091634 | 0.0 | 0.00 +Kspace | 33.817 | 33.817 | 33.817 | 0.0 | 23.01 +Neigh | 4.2067 | 4.2067 | 4.2067 | 0.0 | 2.86 +Comm | 0.12212 | 0.12212 | 0.12212 | 0.0 | 0.08 +Output | 0.0031896 | 0.0031896 | 0.0031896 | 0.0 | 0.00 +Modify | 38.92 | 38.92 | 38.92 | 0.0 | 26.48 +Other | | 0.05687 | | | 0.04 Nlocal: 9798 ave 9798 max 9798 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -147,4 +177,4 @@ Ave neighs/atom = 842.63544 Ave special neighs/atom = 1.3227189 Neighbor list builds = 22 Dangerous builds = 0 -Total wall time: 0:19:39 +Total wall time: 0:05:33 diff --git a/examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-ffield.g++.4 b/examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-ffield.g++.4 similarity index 53% rename from examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-ffield.g++.4 rename to examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-ffield.g++.4 index 685a71eb74..5a18629cab 100644 --- a/examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-ffield.g++.4 +++ b/examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-ffield.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with constant potential using finite field # for z-periodic gold-saline electrochemical cell @@ -39,7 +39,7 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-4 neighbors 2 = max # of special neighbors special bonds CPU = 0.002 seconds - read_data CPU = 0.149 seconds + read_data CPU = 0.118 seconds group bot type 6 1620 atoms in group bot @@ -53,11 +53,12 @@ group electrolyte type 1 2 3 4 5 fix nvt electrolyte nvt temp 298.0 298.0 241 fix shake SPC shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters 2160 = # of frozen angles - find clusters CPU = 0.003 seconds + find clusters CPU = 0.002 seconds variable q atom q variable qz atom q*(z-lz/2) @@ -68,12 +69,41 @@ compute qzbot bot reduce sum v_qz compute ctemp electrolyte temp -fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7 +fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes on 3240 atoms in group conp_group thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qtop c_qbot c_qztop c_qzbot run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.24017705 @@ -83,9 +113,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.093542e-07 using double precision MKL FFT 3d grid and FFT values/proc = 138958 87480 - generated 21 of 21 mixed pair_coeff terms from geometric mixing rule +Generated 21 of 21 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 17 ghost atom cutoff = 17 @@ -106,35 +136,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 118.1 | 120.6 | 123.1 Mbytes +Per MPI rank memory allocation (min/avg/max) = 118.2 | 120.7 | 123.2 Mbytes Step Temp c_ctemp E_pair TotEng c_qtop c_qbot c_qztop c_qzbot - 0 171.61215 298.06731 -39212.819 -35306.164 4.1391573 -4.1391573 78.718381 131.56372 - 50 147.03139 255.37383 -39870.139 -36523.051 4.1312167 -4.1312167 78.563872 131.30255 - 100 149.89027 260.33932 -39878.859 -36466.689 4.0217834 -4.0217834 76.482548 127.82573 - 150 151.7382 263.54893 -39873.178 -36418.942 4.0469977 -4.0469977 76.967548 128.59855 - 200 151.7508 263.57081 -39827.015 -36372.492 4.1830375 -4.1830375 79.554159 132.93925 - 250 152.61146 265.06566 -39791.293 -36317.177 4.1835865 -4.1835865 79.56665 132.97185 - 300 153.51486 266.63475 -39751.841 -36257.16 4.1571861 -4.1571861 79.061431 132.12905 - 350 156.35115 271.561 -39754.955 -36195.708 4.3498059 -4.3498059 82.7202 138.28678 - 400 156.26118 271.40474 -39690.781 -36133.582 4.3444079 -4.3444079 82.619398 138.11873 - 450 158.54163 275.36558 -39681.083 -36071.97 4.2020488 -4.2020488 79.912675 133.55185 - 500 161.40138 280.33257 -39684.185 -36009.972 4.3021924 -4.3021924 81.807527 136.7464 -Loop time of 111.902 on 4 procs for 500 steps with 9798 atoms + 0 171.61215 298.06731 -39021.917 -35115.261 4.1391573 -4.1391573 78.718381 131.56372 + 50 147.03139 255.37383 -39679.603 -36332.515 4.1312167 -4.1312167 78.563872 131.30255 + 100 149.89027 260.33932 -39693.369 -36281.2 4.0217834 -4.0217834 76.482548 127.82573 + 150 151.7382 263.54893 -39686.526 -36232.29 4.0469977 -4.0469977 76.967548 128.59855 + 200 151.7508 263.57081 -39634.089 -36179.566 4.1830375 -4.1830375 79.554159 132.93925 + 250 152.61146 265.06566 -39598.341 -36124.226 4.1835864 -4.1835864 79.56665 132.97185 + 300 153.51486 266.63475 -39560.107 -36065.426 4.1571861 -4.1571861 79.06143 132.12905 + 350 156.35115 271.561 -39554.338 -35995.09 4.3498059 -4.3498059 82.720201 138.28678 + 400 156.26118 271.40474 -39490.412 -35933.213 4.3444079 -4.3444079 82.619397 138.11873 + 450 158.54163 275.36558 -39487.279 -35878.167 4.202049 -4.202049 79.912678 133.55186 + 500 161.40137 280.33256 -39485.763 -35811.55 4.3021925 -4.3021925 81.807529 136.7464 +Loop time of 97.2399 on 4 procs for 500 steps with 9798 atoms -Performance: 0.386 ns/day, 62.168 hours/ns, 4.468 timesteps/s -97.2% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 0.444 ns/day, 54.022 hours/ns, 5.142 timesteps/s, 50.381 katom-step/s +87.0% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 21.816 | 31.136 | 40.866 | 166.5 | 27.82 -Bond | 0.00073413 | 0.00080346 | 0.00084203 | 0.0 | 0.00 -Kspace | 29.546 | 39.137 | 48.326 | 146.4 | 34.97 -Neigh | 2.5867 | 2.5872 | 2.5877 | 0.0 | 2.31 -Comm | 0.33289 | 0.33603 | 0.33791 | 0.3 | 0.30 -Output | 0.0022537 | 0.0030028 | 0.005192 | 2.3 | 0.00 -Modify | 38.498 | 38.635 | 38.77 | 2.2 | 34.53 -Other | | 0.06679 | | | 0.06 +Pair | 19.363 | 28.08 | 37.126 | 160.3 | 28.88 +Bond | 0.00094043 | 0.00096516 | 0.00098016 | 0.0 | 0.00 +Kspace | 31.655 | 40.554 | 49.143 | 131.3 | 41.71 +Neigh | 2.2289 | 2.2294 | 2.2297 | 0.0 | 2.29 +Comm | 0.5341 | 0.54079 | 0.5478 | 0.9 | 0.56 +Output | 0.0024141 | 0.0026943 | 0.0034176 | 0.8 | 0.00 +Modify | 25.6 | 25.755 | 25.908 | 2.8 | 26.49 +Other | | 0.07733 | | | 0.08 Nlocal: 2449.5 ave 2908 max 2012 min Histogram: 2 0 0 0 0 0 0 0 0 2 @@ -148,4 +178,4 @@ Ave neighs/atom = 842.63544 Ave special neighs/atom = 1.3227189 Neighbor list builds = 22 Dangerous builds = 0 -Total wall time: 0:07:48 +Total wall time: 0:03:03 diff --git a/examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-tf.g++.1 b/examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-tf.g++.1 similarity index 53% rename from examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-tf.g++.1 rename to examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-tf.g++.1 index 316e092c55..5ed60bc88a 100644 --- a/examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-tf.g++.1 +++ b/examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-tf.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with constant potential using finite field # for z-periodic gold-saline electrochemical cell # using Thomas-Fermi metallicity model: electrode q and qz will be @@ -39,8 +39,8 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-3 neighbors 1 = max # of 1-4 neighbors 2 = max # of special neighbors - special bonds CPU = 0.010 seconds - read_data CPU = 0.115 seconds + special bonds CPU = 0.003 seconds + read_data CPU = 0.065 seconds group bot type 6 1620 atoms in group bot @@ -54,11 +54,12 @@ group electrolyte type 1 2 3 4 5 fix nvt electrolyte nvt temp 298.0 298.0 241 fix shake SPC shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters 2160 = # of frozen angles - find clusters CPU = 0.010 seconds + find clusters CPU = 0.002 seconds variable q atom q variable qz atom q*(z-lz/2) @@ -69,7 +70,7 @@ compute qzbot bot reduce sum v_qz compute ctemp electrolyte temp -fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7 +fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes on 3240 atoms in group conp_group fix_modify conp tf 6 1.0 18.1715745 fix_modify conp tf 7 1.0 18.1715745 @@ -77,6 +78,35 @@ fix_modify conp tf 7 1.0 18.1715745 thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qtop c_qbot c_qztop c_qzbot run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.24017705 @@ -86,9 +116,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.093542e-07 using double precision MKL FFT 3d grid and FFT values/proc = 472567 349920 - generated 21 of 21 mixed pair_coeff terms from geometric mixing rule +Generated 21 of 21 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 17 ghost atom cutoff = 17 @@ -109,35 +139,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 194.6 | 194.6 | 194.6 Mbytes +Per MPI rank memory allocation (min/avg/max) = 194.8 | 194.8 | 194.8 Mbytes Step Temp c_ctemp E_pair TotEng c_qtop c_qbot c_qztop c_qzbot - 0 171.61215 298.06731 -39190.106 -35283.45 4.0804484 -4.0804484 79.075127 131.20697 - 50 147.14308 255.56782 -39849.964 -36500.334 3.9990346 -3.9990346 77.497181 128.57759 - 100 149.94935 260.44194 -39857.533 -36444.019 3.8613914 -3.8613914 74.82985 124.15315 - 150 151.95924 263.93285 -39855.567 -36396.299 3.8677064 -3.8677064 74.957279 124.33201 - 200 151.66737 263.42591 -39802.585 -36349.961 3.99842 -3.99842 77.491015 128.54496 - 250 152.36874 264.64408 -39763.306 -36294.716 3.9925863 -3.9925863 77.379445 128.37226 - 300 153.83916 267.19802 -39737.075 -36235.012 3.94995 -3.94995 76.553896 127.00395 - 350 155.88897 270.75827 -39722.265 -36173.539 4.0598524 -4.0598524 78.679643 130.5394 - 400 156.51993 271.85415 -39674.759 -36111.669 4.1312899 -4.1312899 80.060369 132.83599 - 450 160.21339 278.26919 -39697.962 -36050.793 3.9068098 -3.9068098 75.713484 125.59216 - 500 161.63639 280.74075 -39669.412 -35989.849 3.9261656 -3.9261656 76.0806 126.22255 -Loop time of 280.183 on 1 procs for 500 steps with 9798 atoms + 0 171.61215 298.06731 -39001.911 -35095.255 4.0804484 -4.0804484 79.075127 131.20697 + 50 147.14308 255.56782 -39665.525 -36315.894 3.9990346 -3.9990346 77.497181 128.57759 + 100 149.94935 260.44194 -39679.441 -36265.927 3.8613914 -3.8613914 74.82985 124.15315 + 150 151.95924 263.93285 -39677.184 -36217.916 3.8677064 -3.8677064 74.957279 124.33201 + 200 151.66737 263.42591 -39618.173 -36165.549 3.99842 -3.99842 77.491015 128.54496 + 250 152.36874 264.64408 -39579.164 -36110.574 3.9925863 -3.9925863 77.379445 128.37226 + 300 153.83916 267.19802 -39554.899 -36052.836 3.94995 -3.94995 76.553896 127.00395 + 350 155.88897 270.75827 -39535.02 -35986.294 4.0598524 -4.0598524 78.679643 130.5394 + 400 156.51993 271.85415 -39484.219 -35921.13 4.1312898 -4.1312898 80.060368 132.83598 + 450 160.21339 278.26919 -39517.776 -35870.607 3.9068098 -3.9068098 75.713484 125.59216 + 500 161.63639 280.74075 -39488.333 -35808.771 3.9261656 -3.9261656 76.080599 126.22255 +Loop time of 185.804 on 1 procs for 500 steps with 9798 atoms -Performance: 0.154 ns/day, 155.657 hours/ns, 1.785 timesteps/s -341.9% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.233 ns/day, 103.225 hours/ns, 2.691 timesteps/s, 26.366 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 119.69 | 119.69 | 119.69 | 0.0 | 42.72 -Bond | 0.0010952 | 0.0010952 | 0.0010952 | 0.0 | 0.00 -Kspace | 42.137 | 42.137 | 42.137 | 0.0 | 15.04 -Neigh | 6.5403 | 6.5403 | 6.5403 | 0.0 | 2.33 -Comm | 0.19411 | 0.19411 | 0.19411 | 0.0 | 0.07 -Output | 0.0053644 | 0.0053644 | 0.0053644 | 0.0 | 0.00 -Modify | 111.54 | 111.54 | 111.54 | 0.0 | 39.81 -Other | | 0.07244 | | | 0.03 +Pair | 91 | 91 | 91 | 0.0 | 48.98 +Bond | 0.0010315 | 0.0010315 | 0.0010315 | 0.0 | 0.00 +Kspace | 40.32 | 40.32 | 40.32 | 0.0 | 21.70 +Neigh | 5.6505 | 5.6505 | 5.6505 | 0.0 | 3.04 +Comm | 0.15304 | 0.15304 | 0.15304 | 0.0 | 0.08 +Output | 0.0041829 | 0.0041829 | 0.0041829 | 0.0 | 0.00 +Modify | 48.607 | 48.607 | 48.607 | 0.0 | 26.16 +Other | | 0.06807 | | | 0.04 Nlocal: 9798 ave 9798 max 9798 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -151,4 +181,4 @@ Ave neighs/atom = 842.7079 Ave special neighs/atom = 1.3227189 Neighbor list builds = 23 Dangerous builds = 0 -Total wall time: 0:21:11 +Total wall time: 0:06:18 diff --git a/examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-tf.g++.4 b/examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-tf.g++.4 similarity index 53% rename from examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-tf.g++.4 rename to examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-tf.g++.4 index 450a6c1fda..9791c35b43 100644 --- a/examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-tf.g++.4 +++ b/examples/PACKAGES/electrode/au-aq/log.1Dec2022.au-aq-tf.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with constant potential using finite field # for z-periodic gold-saline electrochemical cell # using Thomas-Fermi metallicity model: electrode q and qz will be @@ -41,7 +41,7 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-4 neighbors 2 = max # of special neighbors special bonds CPU = 0.002 seconds - read_data CPU = 0.091 seconds + read_data CPU = 0.114 seconds group bot type 6 1620 atoms in group bot @@ -55,11 +55,12 @@ group electrolyte type 1 2 3 4 5 fix nvt electrolyte nvt temp 298.0 298.0 241 fix shake SPC shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters 2160 = # of frozen angles - find clusters CPU = 0.001 seconds + find clusters CPU = 0.002 seconds variable q atom q variable qz atom q*(z-lz/2) @@ -70,7 +71,7 @@ compute qzbot bot reduce sum v_qz compute ctemp electrolyte temp -fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7 +fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes on 3240 atoms in group conp_group fix_modify conp tf 6 1.0 18.1715745 fix_modify conp tf 7 1.0 18.1715745 @@ -78,6 +79,35 @@ fix_modify conp tf 7 1.0 18.1715745 thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qtop c_qbot c_qztop c_qzbot run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.24017705 @@ -87,9 +117,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.093542e-07 using double precision MKL FFT 3d grid and FFT values/proc = 138958 87480 - generated 21 of 21 mixed pair_coeff terms from geometric mixing rule +Generated 21 of 21 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 17 ghost atom cutoff = 17 @@ -110,35 +140,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 118.1 | 120.6 | 123.1 Mbytes +Per MPI rank memory allocation (min/avg/max) = 118.2 | 120.7 | 123.2 Mbytes Step Temp c_ctemp E_pair TotEng c_qtop c_qbot c_qztop c_qzbot - 0 171.61215 298.06731 -39190.106 -35283.45 4.0804484 -4.0804484 79.075127 131.20697 - 50 147.14308 255.56782 -39849.964 -36500.334 3.9990346 -3.9990346 77.497181 128.57759 - 100 149.94935 260.44194 -39857.533 -36444.019 3.8613914 -3.8613914 74.82985 124.15315 - 150 151.95924 263.93285 -39855.567 -36396.299 3.8677064 -3.8677064 74.957279 124.33201 - 200 151.66737 263.42591 -39802.585 -36349.961 3.99842 -3.99842 77.491015 128.54496 - 250 152.36874 264.64408 -39763.306 -36294.716 3.9925863 -3.9925863 77.379445 128.37226 - 300 153.83916 267.19802 -39737.075 -36235.012 3.94995 -3.94995 76.553896 127.00395 - 350 155.88897 270.75827 -39722.265 -36173.539 4.0598524 -4.0598524 78.679643 130.5394 - 400 156.51993 271.85415 -39674.759 -36111.669 4.1312899 -4.1312899 80.060369 132.83599 - 450 160.21339 278.26919 -39697.962 -36050.793 3.9068098 -3.9068098 75.713485 125.59216 - 500 161.63639 280.74075 -39669.412 -35989.849 3.9261654 -3.9261654 76.080597 126.22255 -Loop time of 110.716 on 4 procs for 500 steps with 9798 atoms + 0 171.61215 298.06731 -39001.911 -35095.255 4.0804484 -4.0804484 79.075127 131.20697 + 50 147.14308 255.56782 -39665.525 -36315.894 3.9990346 -3.9990346 77.497181 128.57759 + 100 149.94935 260.44194 -39679.441 -36265.927 3.8613914 -3.8613914 74.82985 124.15315 + 150 151.95924 263.93285 -39677.184 -36217.916 3.8677064 -3.8677064 74.957279 124.33201 + 200 151.66737 263.42591 -39618.173 -36165.549 3.99842 -3.99842 77.491015 128.54496 + 250 152.36874 264.64408 -39579.163 -36110.574 3.9925863 -3.9925863 77.379445 128.37226 + 300 153.83916 267.19802 -39554.899 -36052.835 3.94995 -3.94995 76.553896 127.00395 + 350 155.88897 270.75826 -39535.02 -35986.294 4.0598523 -4.0598523 78.679642 130.5394 + 400 156.51993 271.85415 -39484.219 -35921.13 4.1312897 -4.1312897 80.060366 132.83598 + 450 160.21339 278.26919 -39517.776 -35870.607 3.9068099 -3.9068099 75.713486 125.59216 + 500 161.63639 280.74075 -39488.333 -35808.771 3.9261657 -3.9261657 76.080602 126.22256 +Loop time of 104.099 on 4 procs for 500 steps with 9798 atoms -Performance: 0.390 ns/day, 61.509 hours/ns, 4.516 timesteps/s -97.2% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 0.415 ns/day, 57.833 hours/ns, 4.803 timesteps/s, 47.061 katom-step/s +87.7% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 21.17 | 30.449 | 39.65 | 164.9 | 27.50 -Bond | 0.0007313 | 0.00077537 | 0.00081477 | 0.0 | 0.00 -Kspace | 29.854 | 38.911 | 48.058 | 143.8 | 35.14 -Neigh | 2.7206 | 2.7213 | 2.722 | 0.0 | 2.46 -Comm | 0.33023 | 0.33225 | 0.33384 | 0.2 | 0.30 -Output | 0.0024528 | 0.0027565 | 0.0035754 | 0.9 | 0.00 -Modify | 38.091 | 38.233 | 38.365 | 2.1 | 34.53 -Other | | 0.06636 | | | 0.06 +Pair | 20.951 | 30.326 | 40.07 | 166.7 | 29.13 +Bond | 0.00098259 | 0.0010706 | 0.0011926 | 0.3 | 0.00 +Kspace | 33.465 | 43.037 | 52.268 | 137.5 | 41.34 +Neigh | 2.6007 | 2.6014 | 2.6021 | 0.0 | 2.50 +Comm | 0.57766 | 0.58318 | 0.58875 | 0.7 | 0.56 +Output | 0.0022277 | 0.0024765 | 0.0031841 | 0.8 | 0.00 +Modify | 27.292 | 27.47 | 27.647 | 3.1 | 26.39 +Other | | 0.0787 | | | 0.08 Nlocal: 2449.5 ave 2908 max 2017 min Histogram: 2 0 0 0 0 0 0 0 0 2 @@ -147,9 +177,9 @@ Histogram: 2 0 0 0 0 0 0 0 0 2 Neighs: 2.06421e+06 ave 2.7551e+06 max 1.40237e+06 min Histogram: 2 0 0 0 0 0 0 0 0 2 -Total # of neighbors = 8256853 -Ave neighs/atom = 842.708 +Total # of neighbors = 8256852 +Ave neighs/atom = 842.7079 Ave special neighs/atom = 1.3227189 Neighbor list builds = 23 Dangerous builds = 0 -Total wall time: 0:08:22 +Total wall time: 0:03:12 diff --git a/examples/PACKAGES/electrode/graph-il/.gitignore b/examples/PACKAGES/electrode/graph-il/.gitignore index 8ee8bfa0f2..592bb61996 100644 --- a/examples/PACKAGES/electrode/graph-il/.gitignore +++ b/examples/PACKAGES/electrode/graph-il/.gitignore @@ -1 +1,2 @@ log.lammps* +in.temp diff --git a/examples/PACKAGES/electrode/graph-il/algo_test.sh b/examples/PACKAGES/electrode/graph-il/algo_test.sh new file mode 100755 index 0000000000..6106fe02dc --- /dev/null +++ b/examples/PACKAGES/electrode/graph-il/algo_test.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +LMP_BIN="$1" +NP="${2:-1}" +echo "MPI over $NP procs:" +for feat in conp etypes tf +do + echo "Using base input file in.$feat:" + echo "mat_inv, log excerpts:" + logfile="log.algo_test.$NP.$feat" + mpirun -np $NP $LMP_BIN -i in.$feat -l $logfile > /dev/null 2>&1 + grep -A2 'Per MPI rank' $logfile + grep -B1 'Loop time' $logfile + rm $logfile + for cgtype in mat_cg cg + do + for tol in 1e-4 1e-5 1e-6 + do + echo "$cgtype, tol = $tol, log excerpts:" + logfile="log.algo_test.$NP.$feat.$cgtype.$tol" + sed '/electrode/ s/$/ algo '"$cgtype"' '"$tol"'/' in.$feat > in.temp + mpirun -np $NP $LMP_BIN -i in.temp -l $logfile > /dev/null 2>&1 + grep -A2 'Per MPI rank' $logfile + grep -B1 'Loop time' $logfile + rm $logfile + done + done +done diff --git a/examples/PACKAGES/electrode/graph-il/data.graph-il b/examples/PACKAGES/electrode/graph-il/data.graph-il index 600adeb64f..597e3c21d8 100644 --- a/examples/PACKAGES/electrode/graph-il/data.graph-il +++ b/examples/PACKAGES/electrode/graph-il/data.graph-il @@ -3,7 +3,7 @@ LAMMPS data file. CGCMM style. atom_style full generated by VMD/TopoTools v1.7 o 3776 atoms 640 bonds 320 angles - 5 atom types + 6 atom types 2 bond types 1 angle types @@ -18,6 +18,7 @@ LAMMPS data file. CGCMM style. atom_style full generated by VMD/TopoTools v1.7 o 3 57.119999 # Roy-Maroncelli BMI3 4 144.960007 # Roy-Maroncelli PF64 5 12.001000 # carbon 5 + 6 12.001000 # carbon 5 Pair Coeffs # lj/cut/coul/long @@ -26,6 +27,7 @@ Pair Coeffs # lj/cut/coul/long 3 0.43738 5.04 4 1.12572 5.06 5 0.05497 3.37 +6 0.05497 3.37 Bond Coeffs # harmonic @@ -1318,1252 +1320,1252 @@ Angle Coeffs # harmonic 1278 639 2 0.157800 13.112696 26.068785 21.224487 # 2 1279 639 3 0.184800 13.700453 25.668398 15.818604 # 3 1280 640 4 -0.780000 30.804737 25.139051 26.365158 # 4 -1281 645 5 0.000000 1.229756 1.065000 -61.575001 # 5 -1282 645 5 0.000000 3.689268 1.065000 -61.575001 # 5 -1283 645 5 0.000000 2.459512 0.355000 -61.575001 # 5 -1284 645 5 0.000000 6.148780 1.065000 -61.575001 # 5 -1285 645 5 0.000000 4.919024 0.355000 -61.575001 # 5 -1286 645 5 0.000000 8.608293 1.065000 -61.575001 # 5 -1287 645 5 0.000000 7.378536 0.355000 -61.575001 # 5 -1288 645 5 0.000000 11.067804 1.065000 -61.575001 # 5 -1289 645 5 0.000000 9.838048 0.355000 -61.575001 # 5 -1290 645 5 0.000000 13.527316 1.065000 -61.575001 # 5 -1291 645 5 0.000000 12.297561 0.355000 -61.575001 # 5 -1292 645 5 0.000000 15.986829 1.065000 -61.575001 # 5 -1293 645 5 0.000000 14.757072 0.355000 -61.575001 # 5 -1294 645 5 0.000000 18.446341 1.065000 -61.575001 # 5 -1295 645 5 0.000000 17.216585 0.355000 -61.575001 # 5 -1296 645 5 0.000000 20.905853 1.065000 -61.575001 # 5 -1297 645 5 0.000000 19.676096 0.355000 -61.575001 # 5 -1298 645 5 0.000000 23.365364 1.065000 -61.575001 # 5 -1299 645 5 0.000000 22.135609 0.355000 -61.575001 # 5 -1300 645 5 0.000000 25.824877 1.065000 -61.575001 # 5 -1301 645 5 0.000000 24.595121 0.355000 -61.575001 # 5 -1302 645 5 0.000000 28.284389 1.065000 -61.575001 # 5 -1303 645 5 0.000000 27.054632 0.355000 -61.575001 # 5 -1304 645 5 0.000000 30.743900 1.065000 -61.575001 # 5 -1305 645 5 0.000000 29.514145 0.355000 -61.575001 # 5 -1306 645 5 0.000000 31.973658 0.355000 -61.575001 # 5 -1307 645 5 0.000000 2.459512 3.195000 -61.575001 # 5 -1308 645 5 0.000000 1.229756 2.485000 -61.575001 # 5 -1309 645 5 0.000000 4.919024 3.195000 -61.575001 # 5 -1310 645 5 0.000000 3.689268 2.485000 -61.575001 # 5 -1311 645 5 0.000000 7.378536 3.195000 -61.575001 # 5 -1312 645 5 0.000000 6.148780 2.485000 -61.575001 # 5 -1313 645 5 0.000000 9.838048 3.195000 -61.575001 # 5 -1314 645 5 0.000000 8.608293 2.485000 -61.575001 # 5 -1315 645 5 0.000000 12.297561 3.195000 -61.575001 # 5 -1316 645 5 0.000000 11.067804 2.485000 -61.575001 # 5 -1317 645 5 0.000000 14.757072 3.195000 -61.575001 # 5 -1318 645 5 0.000000 13.527316 2.485000 -61.575001 # 5 -1319 645 5 0.000000 17.216585 3.195000 -61.575001 # 5 -1320 645 5 0.000000 15.986829 2.485000 -61.575001 # 5 -1321 645 5 0.000000 19.676096 3.195000 -61.575001 # 5 -1322 645 5 0.000000 18.446341 2.485000 -61.575001 # 5 -1323 645 5 0.000000 22.135609 3.195000 -61.575001 # 5 -1324 645 5 0.000000 20.905853 2.485000 -61.575001 # 5 -1325 645 5 0.000000 24.595121 3.195000 -61.575001 # 5 -1326 645 5 0.000000 23.365364 2.485000 -61.575001 # 5 -1327 645 5 0.000000 27.054632 3.195000 -61.575001 # 5 -1328 645 5 0.000000 25.824877 2.485000 -61.575001 # 5 -1329 645 5 0.000000 29.514145 3.195000 -61.575001 # 5 -1330 645 5 0.000000 28.284389 2.485000 -61.575001 # 5 -1331 645 5 0.000000 31.973658 3.195000 -61.575001 # 5 -1332 645 5 0.000000 30.743900 2.485000 -61.575001 # 5 -1333 645 5 0.000000 1.229756 5.325000 -61.575001 # 5 -1334 645 5 0.000000 3.689268 5.325000 -61.575001 # 5 -1335 645 5 0.000000 2.459512 4.615000 -61.575001 # 5 -1336 645 5 0.000000 6.148780 5.325000 -61.575001 # 5 -1337 645 5 0.000000 4.919024 4.615000 -61.575001 # 5 -1338 645 5 0.000000 8.608293 5.325000 -61.575001 # 5 -1339 645 5 0.000000 7.378536 4.615000 -61.575001 # 5 -1340 645 5 0.000000 11.067804 5.325000 -61.575001 # 5 -1341 645 5 0.000000 9.838048 4.615000 -61.575001 # 5 -1342 645 5 0.000000 13.527316 5.325000 -61.575001 # 5 -1343 645 5 0.000000 12.297561 4.615000 -61.575001 # 5 -1344 645 5 0.000000 15.986829 5.325000 -61.575001 # 5 -1345 645 5 0.000000 14.757072 4.615000 -61.575001 # 5 -1346 645 5 0.000000 18.446341 5.325000 -61.575001 # 5 -1347 645 5 0.000000 17.216585 4.615000 -61.575001 # 5 -1348 645 5 0.000000 20.905853 5.325000 -61.575001 # 5 -1349 645 5 0.000000 19.676096 4.615000 -61.575001 # 5 -1350 645 5 0.000000 23.365364 5.325000 -61.575001 # 5 -1351 645 5 0.000000 22.135609 4.615000 -61.575001 # 5 -1352 645 5 0.000000 25.824877 5.325000 -61.575001 # 5 -1353 645 5 0.000000 24.595121 4.615000 -61.575001 # 5 -1354 645 5 0.000000 28.284389 5.325000 -61.575001 # 5 -1355 645 5 0.000000 27.054632 4.615000 -61.575001 # 5 -1356 645 5 0.000000 30.743900 5.325000 -61.575001 # 5 -1357 645 5 0.000000 29.514145 4.615000 -61.575001 # 5 -1358 645 5 0.000000 31.973658 4.615000 -61.575001 # 5 -1359 645 5 0.000000 2.459512 7.455000 -61.575001 # 5 -1360 645 5 0.000000 1.229756 6.745000 -61.575001 # 5 -1361 645 5 0.000000 4.919024 7.455000 -61.575001 # 5 -1362 645 5 0.000000 3.689268 6.745000 -61.575001 # 5 -1363 645 5 0.000000 7.378536 7.455000 -61.575001 # 5 -1364 645 5 0.000000 6.148780 6.745000 -61.575001 # 5 -1365 645 5 0.000000 9.838048 7.455000 -61.575001 # 5 -1366 645 5 0.000000 8.608293 6.745000 -61.575001 # 5 -1367 645 5 0.000000 12.297561 7.455000 -61.575001 # 5 -1368 645 5 0.000000 11.067804 6.745000 -61.575001 # 5 -1369 645 5 0.000000 14.757072 7.455000 -61.575001 # 5 -1370 645 5 0.000000 13.527316 6.745000 -61.575001 # 5 -1371 645 5 0.000000 17.216585 7.455000 -61.575001 # 5 -1372 645 5 0.000000 15.986829 6.745000 -61.575001 # 5 -1373 645 5 0.000000 19.676096 7.455000 -61.575001 # 5 -1374 645 5 0.000000 18.446341 6.745000 -61.575001 # 5 -1375 645 5 0.000000 22.135609 7.455000 -61.575001 # 5 -1376 645 5 0.000000 20.905853 6.745000 -61.575001 # 5 -1377 645 5 0.000000 24.595121 7.455000 -61.575001 # 5 -1378 645 5 0.000000 23.365364 6.745000 -61.575001 # 5 -1379 645 5 0.000000 27.054632 7.455000 -61.575001 # 5 -1380 645 5 0.000000 25.824877 6.745000 -61.575001 # 5 -1381 645 5 0.000000 29.514145 7.455000 -61.575001 # 5 -1382 645 5 0.000000 28.284389 6.745000 -61.575001 # 5 -1383 645 5 0.000000 31.973658 7.455000 -61.575001 # 5 -1384 645 5 0.000000 30.743900 6.745000 -61.575001 # 5 -1385 645 5 0.000000 1.229756 9.585000 -61.575001 # 5 -1386 645 5 0.000000 3.689268 9.585000 -61.575001 # 5 -1387 645 5 0.000000 2.459512 8.875000 -61.575001 # 5 -1388 645 5 0.000000 6.148780 9.585000 -61.575001 # 5 -1389 645 5 0.000000 4.919024 8.875000 -61.575001 # 5 -1390 645 5 0.000000 8.608293 9.585000 -61.575001 # 5 -1391 645 5 0.000000 7.378536 8.875000 -61.575001 # 5 -1392 645 5 0.000000 11.067804 9.585000 -61.575001 # 5 -1393 645 5 0.000000 9.838048 8.875000 -61.575001 # 5 -1394 645 5 0.000000 13.527316 9.585000 -61.575001 # 5 -1395 645 5 0.000000 12.297561 8.875000 -61.575001 # 5 -1396 645 5 0.000000 15.986829 9.585000 -61.575001 # 5 -1397 645 5 0.000000 14.757072 8.875000 -61.575001 # 5 -1398 645 5 0.000000 18.446341 9.585000 -61.575001 # 5 -1399 645 5 0.000000 17.216585 8.875000 -61.575001 # 5 -1400 645 5 0.000000 20.905853 9.585000 -61.575001 # 5 -1401 645 5 0.000000 19.676096 8.875000 -61.575001 # 5 -1402 645 5 0.000000 23.365364 9.585000 -61.575001 # 5 -1403 645 5 0.000000 22.135609 8.875000 -61.575001 # 5 -1404 645 5 0.000000 25.824877 9.585000 -61.575001 # 5 -1405 645 5 0.000000 24.595121 8.875000 -61.575001 # 5 -1406 645 5 0.000000 28.284389 9.585000 -61.575001 # 5 -1407 645 5 0.000000 27.054632 8.875000 -61.575001 # 5 -1408 645 5 0.000000 30.743900 9.585000 -61.575001 # 5 -1409 645 5 0.000000 29.514145 8.875000 -61.575001 # 5 -1410 645 5 0.000000 31.973658 8.875000 -61.575001 # 5 -1411 645 5 0.000000 2.459512 11.715001 -61.575001 # 5 -1412 645 5 0.000000 1.229756 11.005000 -61.575001 # 5 -1413 645 5 0.000000 4.919024 11.715001 -61.575001 # 5 -1414 645 5 0.000000 3.689268 11.005000 -61.575001 # 5 -1415 645 5 0.000000 7.378536 11.715001 -61.575001 # 5 -1416 645 5 0.000000 6.148780 11.005000 -61.575001 # 5 -1417 645 5 0.000000 9.838048 11.715001 -61.575001 # 5 -1418 645 5 0.000000 8.608293 11.005000 -61.575001 # 5 -1419 645 5 0.000000 12.297561 11.715001 -61.575001 # 5 -1420 645 5 0.000000 11.067804 11.005000 -61.575001 # 5 -1421 645 5 0.000000 14.757072 11.715001 -61.575001 # 5 -1422 645 5 0.000000 13.527316 11.005000 -61.575001 # 5 -1423 645 5 0.000000 17.216585 11.715001 -61.575001 # 5 -1424 645 5 0.000000 15.986829 11.005000 -61.575001 # 5 -1425 645 5 0.000000 19.676096 11.715001 -61.575001 # 5 -1426 645 5 0.000000 18.446341 11.005000 -61.575001 # 5 -1427 645 5 0.000000 22.135609 11.715001 -61.575001 # 5 -1428 645 5 0.000000 20.905853 11.005000 -61.575001 # 5 -1429 645 5 0.000000 24.595121 11.715001 -61.575001 # 5 -1430 645 5 0.000000 23.365364 11.005000 -61.575001 # 5 -1431 645 5 0.000000 27.054632 11.715001 -61.575001 # 5 -1432 645 5 0.000000 25.824877 11.005000 -61.575001 # 5 -1433 645 5 0.000000 29.514145 11.715001 -61.575001 # 5 -1434 645 5 0.000000 28.284389 11.005000 -61.575001 # 5 -1435 645 5 0.000000 31.973658 11.715001 -61.575001 # 5 -1436 645 5 0.000000 30.743900 11.005000 -61.575001 # 5 -1437 645 5 0.000000 1.229756 13.845000 -61.575001 # 5 -1438 645 5 0.000000 3.689268 13.845000 -61.575001 # 5 -1439 645 5 0.000000 2.459512 13.135000 -61.575001 # 5 -1440 645 5 0.000000 6.148780 13.845000 -61.575001 # 5 -1441 645 5 0.000000 4.919024 13.135000 -61.575001 # 5 -1442 645 5 0.000000 8.608293 13.845000 -61.575001 # 5 -1443 645 5 0.000000 7.378536 13.135000 -61.575001 # 5 -1444 645 5 0.000000 11.067804 13.845000 -61.575001 # 5 -1445 645 5 0.000000 9.838048 13.135000 -61.575001 # 5 -1446 645 5 0.000000 13.527316 13.845000 -61.575001 # 5 -1447 645 5 0.000000 12.297561 13.135000 -61.575001 # 5 -1448 645 5 0.000000 15.986829 13.845000 -61.575001 # 5 -1449 645 5 0.000000 14.757072 13.135000 -61.575001 # 5 -1450 645 5 0.000000 18.446341 13.845000 -61.575001 # 5 -1451 645 5 0.000000 17.216585 13.135000 -61.575001 # 5 -1452 645 5 0.000000 20.905853 13.845000 -61.575001 # 5 -1453 645 5 0.000000 19.676096 13.135000 -61.575001 # 5 -1454 645 5 0.000000 23.365364 13.845000 -61.575001 # 5 -1455 645 5 0.000000 22.135609 13.135000 -61.575001 # 5 -1456 645 5 0.000000 25.824877 13.845000 -61.575001 # 5 -1457 645 5 0.000000 24.595121 13.135000 -61.575001 # 5 -1458 645 5 0.000000 28.284389 13.845000 -61.575001 # 5 -1459 645 5 0.000000 27.054632 13.135000 -61.575001 # 5 -1460 645 5 0.000000 30.743900 13.845000 -61.575001 # 5 -1461 645 5 0.000000 29.514145 13.135000 -61.575001 # 5 -1462 645 5 0.000000 31.973658 13.135000 -61.575001 # 5 -1463 645 5 0.000000 2.459512 15.975000 -61.575001 # 5 -1464 645 5 0.000000 1.229756 15.265000 -61.575001 # 5 -1465 645 5 0.000000 4.919024 15.975000 -61.575001 # 5 -1466 645 5 0.000000 3.689268 15.265000 -61.575001 # 5 -1467 645 5 0.000000 7.378536 15.975000 -61.575001 # 5 -1468 645 5 0.000000 6.148780 15.265000 -61.575001 # 5 -1469 645 5 0.000000 9.838048 15.975000 -61.575001 # 5 -1470 645 5 0.000000 8.608293 15.265000 -61.575001 # 5 -1471 645 5 0.000000 12.297561 15.975000 -61.575001 # 5 -1472 645 5 0.000000 11.067804 15.265000 -61.575001 # 5 -1473 645 5 0.000000 14.757072 15.975000 -61.575001 # 5 -1474 645 5 0.000000 13.527316 15.265000 -61.575001 # 5 -1475 645 5 0.000000 17.216585 15.975000 -61.575001 # 5 -1476 645 5 0.000000 15.986829 15.265000 -61.575001 # 5 -1477 645 5 0.000000 19.676096 15.975000 -61.575001 # 5 -1478 645 5 0.000000 18.446341 15.265000 -61.575001 # 5 -1479 645 5 0.000000 22.135609 15.975000 -61.575001 # 5 -1480 645 5 0.000000 20.905853 15.265000 -61.575001 # 5 -1481 645 5 0.000000 24.595121 15.975000 -61.575001 # 5 -1482 645 5 0.000000 23.365364 15.265000 -61.575001 # 5 -1483 645 5 0.000000 27.054632 15.975000 -61.575001 # 5 -1484 645 5 0.000000 25.824877 15.265000 -61.575001 # 5 -1485 645 5 0.000000 29.514145 15.975000 -61.575001 # 5 -1486 645 5 0.000000 28.284389 15.265000 -61.575001 # 5 -1487 645 5 0.000000 31.973658 15.975000 -61.575001 # 5 -1488 645 5 0.000000 30.743900 15.265000 -61.575001 # 5 -1489 645 5 0.000000 1.229756 18.105000 -61.575001 # 5 -1490 645 5 0.000000 3.689268 18.105000 -61.575001 # 5 -1491 645 5 0.000000 2.459512 17.395000 -61.575001 # 5 -1492 645 5 0.000000 6.148780 18.105000 -61.575001 # 5 -1493 645 5 0.000000 4.919024 17.395000 -61.575001 # 5 -1494 645 5 0.000000 8.608293 18.105000 -61.575001 # 5 -1495 645 5 0.000000 7.378536 17.395000 -61.575001 # 5 -1496 645 5 0.000000 11.067804 18.105000 -61.575001 # 5 -1497 645 5 0.000000 9.838048 17.395000 -61.575001 # 5 -1498 645 5 0.000000 13.527316 18.105000 -61.575001 # 5 -1499 645 5 0.000000 12.297561 17.395000 -61.575001 # 5 -1500 645 5 0.000000 15.986829 18.105000 -61.575001 # 5 -1501 645 5 0.000000 14.757072 17.395000 -61.575001 # 5 -1502 645 5 0.000000 18.446341 18.105000 -61.575001 # 5 -1503 645 5 0.000000 17.216585 17.395000 -61.575001 # 5 -1504 645 5 0.000000 20.905853 18.105000 -61.575001 # 5 -1505 645 5 0.000000 19.676096 17.395000 -61.575001 # 5 -1506 645 5 0.000000 23.365364 18.105000 -61.575001 # 5 -1507 645 5 0.000000 22.135609 17.395000 -61.575001 # 5 -1508 645 5 0.000000 25.824877 18.105000 -61.575001 # 5 -1509 645 5 0.000000 24.595121 17.395000 -61.575001 # 5 -1510 645 5 0.000000 28.284389 18.105000 -61.575001 # 5 -1511 645 5 0.000000 27.054632 17.395000 -61.575001 # 5 -1512 645 5 0.000000 30.743900 18.105000 -61.575001 # 5 -1513 645 5 0.000000 29.514145 17.395000 -61.575001 # 5 -1514 645 5 0.000000 31.973658 17.395000 -61.575001 # 5 -1515 645 5 0.000000 2.459512 20.235001 -61.575001 # 5 -1516 645 5 0.000000 1.229756 19.525000 -61.575001 # 5 -1517 645 5 0.000000 4.919024 20.235001 -61.575001 # 5 -1518 645 5 0.000000 3.689268 19.525000 -61.575001 # 5 -1519 645 5 0.000000 7.378536 20.235001 -61.575001 # 5 -1520 645 5 0.000000 6.148780 19.525000 -61.575001 # 5 -1521 645 5 0.000000 9.838048 20.235001 -61.575001 # 5 -1522 645 5 0.000000 8.608293 19.525000 -61.575001 # 5 -1523 645 5 0.000000 12.297561 20.235001 -61.575001 # 5 -1524 645 5 0.000000 11.067804 19.525000 -61.575001 # 5 -1525 645 5 0.000000 14.757072 20.235001 -61.575001 # 5 -1526 645 5 0.000000 13.527316 19.525000 -61.575001 # 5 -1527 645 5 0.000000 17.216585 20.235001 -61.575001 # 5 -1528 645 5 0.000000 15.986829 19.525000 -61.575001 # 5 -1529 645 5 0.000000 19.676096 20.235001 -61.575001 # 5 -1530 645 5 0.000000 18.446341 19.525000 -61.575001 # 5 -1531 645 5 0.000000 22.135609 20.235001 -61.575001 # 5 -1532 645 5 0.000000 20.905853 19.525000 -61.575001 # 5 -1533 645 5 0.000000 24.595121 20.235001 -61.575001 # 5 -1534 645 5 0.000000 23.365364 19.525000 -61.575001 # 5 -1535 645 5 0.000000 27.054632 20.235001 -61.575001 # 5 -1536 645 5 0.000000 25.824877 19.525000 -61.575001 # 5 -1537 645 5 0.000000 29.514145 20.235001 -61.575001 # 5 -1538 645 5 0.000000 28.284389 19.525000 -61.575001 # 5 -1539 645 5 0.000000 31.973658 20.235001 -61.575001 # 5 -1540 645 5 0.000000 30.743900 19.525000 -61.575001 # 5 -1541 645 5 0.000000 1.229756 22.365000 -61.575001 # 5 -1542 645 5 0.000000 3.689268 22.365000 -61.575001 # 5 -1543 645 5 0.000000 2.459512 21.655001 -61.575001 # 5 -1544 645 5 0.000000 6.148780 22.365000 -61.575001 # 5 -1545 645 5 0.000000 4.919024 21.655001 -61.575001 # 5 -1546 645 5 0.000000 8.608293 22.365000 -61.575001 # 5 -1547 645 5 0.000000 7.378536 21.655001 -61.575001 # 5 -1548 645 5 0.000000 11.067804 22.365000 -61.575001 # 5 -1549 645 5 0.000000 9.838048 21.655001 -61.575001 # 5 -1550 645 5 0.000000 13.527316 22.365000 -61.575001 # 5 -1551 645 5 0.000000 12.297561 21.655001 -61.575001 # 5 -1552 645 5 0.000000 15.986829 22.365000 -61.575001 # 5 -1553 645 5 0.000000 14.757072 21.655001 -61.575001 # 5 -1554 645 5 0.000000 18.446341 22.365000 -61.575001 # 5 -1555 645 5 0.000000 17.216585 21.655001 -61.575001 # 5 -1556 645 5 0.000000 20.905853 22.365000 -61.575001 # 5 -1557 645 5 0.000000 19.676096 21.655001 -61.575001 # 5 -1558 645 5 0.000000 23.365364 22.365000 -61.575001 # 5 -1559 645 5 0.000000 22.135609 21.655001 -61.575001 # 5 -1560 645 5 0.000000 25.824877 22.365000 -61.575001 # 5 -1561 645 5 0.000000 24.595121 21.655001 -61.575001 # 5 -1562 645 5 0.000000 28.284389 22.365000 -61.575001 # 5 -1563 645 5 0.000000 27.054632 21.655001 -61.575001 # 5 -1564 645 5 0.000000 30.743900 22.365000 -61.575001 # 5 -1565 645 5 0.000000 29.514145 21.655001 -61.575001 # 5 -1566 645 5 0.000000 31.973658 21.655001 -61.575001 # 5 -1567 645 5 0.000000 2.459512 24.495001 -61.575001 # 5 -1568 645 5 0.000000 1.229756 23.785000 -61.575001 # 5 -1569 645 5 0.000000 4.919024 24.495001 -61.575001 # 5 -1570 645 5 0.000000 3.689268 23.785000 -61.575001 # 5 -1571 645 5 0.000000 7.378536 24.495001 -61.575001 # 5 -1572 645 5 0.000000 6.148780 23.785000 -61.575001 # 5 -1573 645 5 0.000000 9.838048 24.495001 -61.575001 # 5 -1574 645 5 0.000000 8.608293 23.785000 -61.575001 # 5 -1575 645 5 0.000000 12.297561 24.495001 -61.575001 # 5 -1576 645 5 0.000000 11.067804 23.785000 -61.575001 # 5 -1577 645 5 0.000000 14.757072 24.495001 -61.575001 # 5 -1578 645 5 0.000000 13.527316 23.785000 -61.575001 # 5 -1579 645 5 0.000000 17.216585 24.495001 -61.575001 # 5 -1580 645 5 0.000000 15.986829 23.785000 -61.575001 # 5 -1581 645 5 0.000000 19.676096 24.495001 -61.575001 # 5 -1582 645 5 0.000000 18.446341 23.785000 -61.575001 # 5 -1583 645 5 0.000000 22.135609 24.495001 -61.575001 # 5 -1584 645 5 0.000000 20.905853 23.785000 -61.575001 # 5 -1585 645 5 0.000000 24.595121 24.495001 -61.575001 # 5 -1586 645 5 0.000000 23.365364 23.785000 -61.575001 # 5 -1587 645 5 0.000000 27.054632 24.495001 -61.575001 # 5 -1588 645 5 0.000000 25.824877 23.785000 -61.575001 # 5 -1589 645 5 0.000000 29.514145 24.495001 -61.575001 # 5 -1590 645 5 0.000000 28.284389 23.785000 -61.575001 # 5 -1591 645 5 0.000000 31.973658 24.495001 -61.575001 # 5 -1592 645 5 0.000000 30.743900 23.785000 -61.575001 # 5 -1593 645 5 0.000000 1.229756 26.625000 -61.575001 # 5 -1594 645 5 0.000000 3.689268 26.625000 -61.575001 # 5 -1595 645 5 0.000000 2.459512 25.915003 -61.575001 # 5 -1596 645 5 0.000000 6.148780 26.625000 -61.575001 # 5 -1597 645 5 0.000000 4.919024 25.915003 -61.575001 # 5 -1598 645 5 0.000000 8.608293 26.625000 -61.575001 # 5 -1599 645 5 0.000000 7.378536 25.915003 -61.575001 # 5 -1600 645 5 0.000000 11.067804 26.625000 -61.575001 # 5 -1601 645 5 0.000000 9.838048 25.915003 -61.575001 # 5 -1602 645 5 0.000000 13.527316 26.625000 -61.575001 # 5 -1603 645 5 0.000000 12.297561 25.915003 -61.575001 # 5 -1604 645 5 0.000000 15.986829 26.625000 -61.575001 # 5 -1605 645 5 0.000000 14.757072 25.915003 -61.575001 # 5 -1606 645 5 0.000000 18.446341 26.625000 -61.575001 # 5 -1607 645 5 0.000000 17.216585 25.915003 -61.575001 # 5 -1608 645 5 0.000000 20.905853 26.625000 -61.575001 # 5 -1609 645 5 0.000000 19.676096 25.915003 -61.575001 # 5 -1610 645 5 0.000000 23.365364 26.625000 -61.575001 # 5 -1611 645 5 0.000000 22.135609 25.915003 -61.575001 # 5 -1612 645 5 0.000000 25.824877 26.625000 -61.575001 # 5 -1613 645 5 0.000000 24.595121 25.915003 -61.575001 # 5 -1614 645 5 0.000000 28.284389 26.625000 -61.575001 # 5 -1615 645 5 0.000000 27.054632 25.915003 -61.575001 # 5 -1616 645 5 0.000000 30.743900 26.625000 -61.575001 # 5 -1617 645 5 0.000000 29.514145 25.915003 -61.575001 # 5 -1618 645 5 0.000000 31.973658 25.915003 -61.575001 # 5 -1619 645 5 0.000000 2.459512 28.754999 -61.575001 # 5 -1620 645 5 0.000000 1.229756 28.045000 -61.575001 # 5 -1621 645 5 0.000000 4.919024 28.754999 -61.575001 # 5 -1622 645 5 0.000000 3.689268 28.045000 -61.575001 # 5 -1623 645 5 0.000000 7.378536 28.754999 -61.575001 # 5 -1624 645 5 0.000000 6.148780 28.045000 -61.575001 # 5 -1625 645 5 0.000000 9.838048 28.754999 -61.575001 # 5 -1626 645 5 0.000000 8.608293 28.045000 -61.575001 # 5 -1627 645 5 0.000000 12.297561 28.754999 -61.575001 # 5 -1628 645 5 0.000000 11.067804 28.045000 -61.575001 # 5 -1629 645 5 0.000000 14.757072 28.754999 -61.575001 # 5 -1630 645 5 0.000000 13.527316 28.045000 -61.575001 # 5 -1631 645 5 0.000000 17.216585 28.754999 -61.575001 # 5 -1632 645 5 0.000000 15.986829 28.045000 -61.575001 # 5 -1633 645 5 0.000000 19.676096 28.754999 -61.575001 # 5 -1634 645 5 0.000000 18.446341 28.045000 -61.575001 # 5 -1635 645 5 0.000000 22.135609 28.754999 -61.575001 # 5 -1636 645 5 0.000000 20.905853 28.045000 -61.575001 # 5 -1637 645 5 0.000000 24.595121 28.754999 -61.575001 # 5 -1638 645 5 0.000000 23.365364 28.045000 -61.575001 # 5 -1639 645 5 0.000000 27.054632 28.754999 -61.575001 # 5 -1640 645 5 0.000000 25.824877 28.045000 -61.575001 # 5 -1641 645 5 0.000000 29.514145 28.754999 -61.575001 # 5 -1642 645 5 0.000000 28.284389 28.045000 -61.575001 # 5 -1643 645 5 0.000000 31.973658 28.754999 -61.575001 # 5 -1644 645 5 0.000000 30.743900 28.045000 -61.575001 # 5 -1645 645 5 0.000000 1.229756 30.885000 -61.575001 # 5 -1646 645 5 0.000000 3.689268 30.885000 -61.575001 # 5 -1647 645 5 0.000000 2.459512 30.174999 -61.575001 # 5 -1648 645 5 0.000000 6.148780 30.885000 -61.575001 # 5 -1649 645 5 0.000000 4.919024 30.174999 -61.575001 # 5 -1650 645 5 0.000000 8.608293 30.885000 -61.575001 # 5 -1651 645 5 0.000000 7.378536 30.174999 -61.575001 # 5 -1652 645 5 0.000000 11.067804 30.885000 -61.575001 # 5 -1653 645 5 0.000000 9.838048 30.174999 -61.575001 # 5 -1654 645 5 0.000000 13.527316 30.885000 -61.575001 # 5 -1655 645 5 0.000000 12.297561 30.174999 -61.575001 # 5 -1656 645 5 0.000000 15.986829 30.885000 -61.575001 # 5 -1657 645 5 0.000000 14.757072 30.174999 -61.575001 # 5 -1658 645 5 0.000000 18.446341 30.885000 -61.575001 # 5 -1659 645 5 0.000000 17.216585 30.174999 -61.575001 # 5 -1660 645 5 0.000000 20.905853 30.885000 -61.575001 # 5 -1661 645 5 0.000000 19.676096 30.174999 -61.575001 # 5 -1662 645 5 0.000000 23.365364 30.885000 -61.575001 # 5 -1663 645 5 0.000000 22.135609 30.174999 -61.575001 # 5 -1664 645 5 0.000000 25.824877 30.885000 -61.575001 # 5 -1665 645 5 0.000000 24.595121 30.174999 -61.575001 # 5 -1666 645 5 0.000000 28.284389 30.885000 -61.575001 # 5 -1667 645 5 0.000000 27.054632 30.174999 -61.575001 # 5 -1668 645 5 0.000000 30.743900 30.885000 -61.575001 # 5 -1669 645 5 0.000000 29.514145 30.174999 -61.575001 # 5 -1670 645 5 0.000000 31.973658 30.174999 -61.575001 # 5 -1671 645 5 0.000000 2.459512 33.014999 -61.575001 # 5 -1672 645 5 0.000000 1.229756 32.305000 -61.575001 # 5 -1673 645 5 0.000000 4.919024 33.014999 -61.575001 # 5 -1674 645 5 0.000000 3.689268 32.305000 -61.575001 # 5 -1675 645 5 0.000000 7.378536 33.014999 -61.575001 # 5 -1676 645 5 0.000000 6.148780 32.305000 -61.575001 # 5 -1677 645 5 0.000000 9.838048 33.014999 -61.575001 # 5 -1678 645 5 0.000000 8.608293 32.305000 -61.575001 # 5 -1679 645 5 0.000000 12.297561 33.014999 -61.575001 # 5 -1680 645 5 0.000000 11.067804 32.305000 -61.575001 # 5 -1681 645 5 0.000000 14.757072 33.014999 -61.575001 # 5 -1682 645 5 0.000000 13.527316 32.305000 -61.575001 # 5 -1683 645 5 0.000000 17.216585 33.014999 -61.575001 # 5 -1684 645 5 0.000000 15.986829 32.305000 -61.575001 # 5 -1685 645 5 0.000000 19.676096 33.014999 -61.575001 # 5 -1686 645 5 0.000000 18.446341 32.305000 -61.575001 # 5 -1687 645 5 0.000000 22.135609 33.014999 -61.575001 # 5 -1688 645 5 0.000000 20.905853 32.305000 -61.575001 # 5 -1689 645 5 0.000000 24.595121 33.014999 -61.575001 # 5 -1690 645 5 0.000000 23.365364 32.305000 -61.575001 # 5 -1691 645 5 0.000000 27.054632 33.014999 -61.575001 # 5 -1692 645 5 0.000000 25.824877 32.305000 -61.575001 # 5 -1693 645 5 0.000000 29.514145 33.014999 -61.575001 # 5 -1694 645 5 0.000000 28.284389 32.305000 -61.575001 # 5 -1695 645 5 0.000000 31.973658 33.014999 -61.575001 # 5 -1696 645 5 0.000000 30.743900 32.305000 -61.575001 # 5 -1697 643 5 0.000000 1.229756 1.065000 -58.224998 # 5 +1281 645 6 0.000000 1.229756 1.065000 -61.575001 # 5 +1282 645 6 0.000000 3.689268 1.065000 -61.575001 # 5 +1283 645 6 0.000000 2.459512 0.355000 -61.575001 # 5 +1284 645 6 0.000000 6.148780 1.065000 -61.575001 # 5 +1285 645 6 0.000000 4.919024 0.355000 -61.575001 # 5 +1286 645 6 0.000000 8.608293 1.065000 -61.575001 # 5 +1287 645 6 0.000000 7.378536 0.355000 -61.575001 # 5 +1288 645 6 0.000000 11.067804 1.065000 -61.575001 # 5 +1289 645 6 0.000000 9.838048 0.355000 -61.575001 # 5 +1290 645 6 0.000000 13.527316 1.065000 -61.575001 # 5 +1291 645 6 0.000000 12.297561 0.355000 -61.575001 # 5 +1292 645 6 0.000000 15.986829 1.065000 -61.575001 # 5 +1293 645 6 0.000000 14.757072 0.355000 -61.575001 # 5 +1294 645 6 0.000000 18.446341 1.065000 -61.575001 # 5 +1295 645 6 0.000000 17.216585 0.355000 -61.575001 # 5 +1296 645 6 0.000000 20.905853 1.065000 -61.575001 # 5 +1297 645 6 0.000000 19.676096 0.355000 -61.575001 # 5 +1298 645 6 0.000000 23.365364 1.065000 -61.575001 # 5 +1299 645 6 0.000000 22.135609 0.355000 -61.575001 # 5 +1300 645 6 0.000000 25.824877 1.065000 -61.575001 # 5 +1301 645 6 0.000000 24.595121 0.355000 -61.575001 # 5 +1302 645 6 0.000000 28.284389 1.065000 -61.575001 # 5 +1303 645 6 0.000000 27.054632 0.355000 -61.575001 # 5 +1304 645 6 0.000000 30.743900 1.065000 -61.575001 # 5 +1305 645 6 0.000000 29.514145 0.355000 -61.575001 # 5 +1306 645 6 0.000000 31.973658 0.355000 -61.575001 # 5 +1307 645 6 0.000000 2.459512 3.195000 -61.575001 # 5 +1308 645 6 0.000000 1.229756 2.485000 -61.575001 # 5 +1309 645 6 0.000000 4.919024 3.195000 -61.575001 # 5 +1310 645 6 0.000000 3.689268 2.485000 -61.575001 # 5 +1311 645 6 0.000000 7.378536 3.195000 -61.575001 # 5 +1312 645 6 0.000000 6.148780 2.485000 -61.575001 # 5 +1313 645 6 0.000000 9.838048 3.195000 -61.575001 # 5 +1314 645 6 0.000000 8.608293 2.485000 -61.575001 # 5 +1315 645 6 0.000000 12.297561 3.195000 -61.575001 # 5 +1316 645 6 0.000000 11.067804 2.485000 -61.575001 # 5 +1317 645 6 0.000000 14.757072 3.195000 -61.575001 # 5 +1318 645 6 0.000000 13.527316 2.485000 -61.575001 # 5 +1319 645 6 0.000000 17.216585 3.195000 -61.575001 # 5 +1320 645 6 0.000000 15.986829 2.485000 -61.575001 # 5 +1321 645 6 0.000000 19.676096 3.195000 -61.575001 # 5 +1322 645 6 0.000000 18.446341 2.485000 -61.575001 # 5 +1323 645 6 0.000000 22.135609 3.195000 -61.575001 # 5 +1324 645 6 0.000000 20.905853 2.485000 -61.575001 # 5 +1325 645 6 0.000000 24.595121 3.195000 -61.575001 # 5 +1326 645 6 0.000000 23.365364 2.485000 -61.575001 # 5 +1327 645 6 0.000000 27.054632 3.195000 -61.575001 # 5 +1328 645 6 0.000000 25.824877 2.485000 -61.575001 # 5 +1329 645 6 0.000000 29.514145 3.195000 -61.575001 # 5 +1330 645 6 0.000000 28.284389 2.485000 -61.575001 # 5 +1331 645 6 0.000000 31.973658 3.195000 -61.575001 # 5 +1332 645 6 0.000000 30.743900 2.485000 -61.575001 # 5 +1333 645 6 0.000000 1.229756 5.325000 -61.575001 # 5 +1334 645 6 0.000000 3.689268 5.325000 -61.575001 # 5 +1335 645 6 0.000000 2.459512 4.615000 -61.575001 # 5 +1336 645 6 0.000000 6.148780 5.325000 -61.575001 # 5 +1337 645 6 0.000000 4.919024 4.615000 -61.575001 # 5 +1338 645 6 0.000000 8.608293 5.325000 -61.575001 # 5 +1339 645 6 0.000000 7.378536 4.615000 -61.575001 # 5 +1340 645 6 0.000000 11.067804 5.325000 -61.575001 # 5 +1341 645 6 0.000000 9.838048 4.615000 -61.575001 # 5 +1342 645 6 0.000000 13.527316 5.325000 -61.575001 # 5 +1343 645 6 0.000000 12.297561 4.615000 -61.575001 # 5 +1344 645 6 0.000000 15.986829 5.325000 -61.575001 # 5 +1345 645 6 0.000000 14.757072 4.615000 -61.575001 # 5 +1346 645 6 0.000000 18.446341 5.325000 -61.575001 # 5 +1347 645 6 0.000000 17.216585 4.615000 -61.575001 # 5 +1348 645 6 0.000000 20.905853 5.325000 -61.575001 # 5 +1349 645 6 0.000000 19.676096 4.615000 -61.575001 # 5 +1350 645 6 0.000000 23.365364 5.325000 -61.575001 # 5 +1351 645 6 0.000000 22.135609 4.615000 -61.575001 # 5 +1352 645 6 0.000000 25.824877 5.325000 -61.575001 # 5 +1353 645 6 0.000000 24.595121 4.615000 -61.575001 # 5 +1354 645 6 0.000000 28.284389 5.325000 -61.575001 # 5 +1355 645 6 0.000000 27.054632 4.615000 -61.575001 # 5 +1356 645 6 0.000000 30.743900 5.325000 -61.575001 # 5 +1357 645 6 0.000000 29.514145 4.615000 -61.575001 # 5 +1358 645 6 0.000000 31.973658 4.615000 -61.575001 # 5 +1359 645 6 0.000000 2.459512 7.455000 -61.575001 # 5 +1360 645 6 0.000000 1.229756 6.745000 -61.575001 # 5 +1361 645 6 0.000000 4.919024 7.455000 -61.575001 # 5 +1362 645 6 0.000000 3.689268 6.745000 -61.575001 # 5 +1363 645 6 0.000000 7.378536 7.455000 -61.575001 # 5 +1364 645 6 0.000000 6.148780 6.745000 -61.575001 # 5 +1365 645 6 0.000000 9.838048 7.455000 -61.575001 # 5 +1366 645 6 0.000000 8.608293 6.745000 -61.575001 # 5 +1367 645 6 0.000000 12.297561 7.455000 -61.575001 # 5 +1368 645 6 0.000000 11.067804 6.745000 -61.575001 # 5 +1369 645 6 0.000000 14.757072 7.455000 -61.575001 # 5 +1370 645 6 0.000000 13.527316 6.745000 -61.575001 # 5 +1371 645 6 0.000000 17.216585 7.455000 -61.575001 # 5 +1372 645 6 0.000000 15.986829 6.745000 -61.575001 # 5 +1373 645 6 0.000000 19.676096 7.455000 -61.575001 # 5 +1374 645 6 0.000000 18.446341 6.745000 -61.575001 # 5 +1375 645 6 0.000000 22.135609 7.455000 -61.575001 # 5 +1376 645 6 0.000000 20.905853 6.745000 -61.575001 # 5 +1377 645 6 0.000000 24.595121 7.455000 -61.575001 # 5 +1378 645 6 0.000000 23.365364 6.745000 -61.575001 # 5 +1379 645 6 0.000000 27.054632 7.455000 -61.575001 # 5 +1380 645 6 0.000000 25.824877 6.745000 -61.575001 # 5 +1381 645 6 0.000000 29.514145 7.455000 -61.575001 # 5 +1382 645 6 0.000000 28.284389 6.745000 -61.575001 # 5 +1383 645 6 0.000000 31.973658 7.455000 -61.575001 # 5 +1384 645 6 0.000000 30.743900 6.745000 -61.575001 # 5 +1385 645 6 0.000000 1.229756 9.585000 -61.575001 # 5 +1386 645 6 0.000000 3.689268 9.585000 -61.575001 # 5 +1387 645 6 0.000000 2.459512 8.875000 -61.575001 # 5 +1388 645 6 0.000000 6.148780 9.585000 -61.575001 # 5 +1389 645 6 0.000000 4.919024 8.875000 -61.575001 # 5 +1390 645 6 0.000000 8.608293 9.585000 -61.575001 # 5 +1391 645 6 0.000000 7.378536 8.875000 -61.575001 # 5 +1392 645 6 0.000000 11.067804 9.585000 -61.575001 # 5 +1393 645 6 0.000000 9.838048 8.875000 -61.575001 # 5 +1394 645 6 0.000000 13.527316 9.585000 -61.575001 # 5 +1395 645 6 0.000000 12.297561 8.875000 -61.575001 # 5 +1396 645 6 0.000000 15.986829 9.585000 -61.575001 # 5 +1397 645 6 0.000000 14.757072 8.875000 -61.575001 # 5 +1398 645 6 0.000000 18.446341 9.585000 -61.575001 # 5 +1399 645 6 0.000000 17.216585 8.875000 -61.575001 # 5 +1400 645 6 0.000000 20.905853 9.585000 -61.575001 # 5 +1401 645 6 0.000000 19.676096 8.875000 -61.575001 # 5 +1402 645 6 0.000000 23.365364 9.585000 -61.575001 # 5 +1403 645 6 0.000000 22.135609 8.875000 -61.575001 # 5 +1404 645 6 0.000000 25.824877 9.585000 -61.575001 # 5 +1405 645 6 0.000000 24.595121 8.875000 -61.575001 # 5 +1406 645 6 0.000000 28.284389 9.585000 -61.575001 # 5 +1407 645 6 0.000000 27.054632 8.875000 -61.575001 # 5 +1408 645 6 0.000000 30.743900 9.585000 -61.575001 # 5 +1409 645 6 0.000000 29.514145 8.875000 -61.575001 # 5 +1410 645 6 0.000000 31.973658 8.875000 -61.575001 # 5 +1411 645 6 0.000000 2.459512 11.715001 -61.575001 # 5 +1412 645 6 0.000000 1.229756 11.005000 -61.575001 # 5 +1413 645 6 0.000000 4.919024 11.715001 -61.575001 # 5 +1414 645 6 0.000000 3.689268 11.005000 -61.575001 # 5 +1415 645 6 0.000000 7.378536 11.715001 -61.575001 # 5 +1416 645 6 0.000000 6.148780 11.005000 -61.575001 # 5 +1417 645 6 0.000000 9.838048 11.715001 -61.575001 # 5 +1418 645 6 0.000000 8.608293 11.005000 -61.575001 # 5 +1419 645 6 0.000000 12.297561 11.715001 -61.575001 # 5 +1420 645 6 0.000000 11.067804 11.005000 -61.575001 # 5 +1421 645 6 0.000000 14.757072 11.715001 -61.575001 # 5 +1422 645 6 0.000000 13.527316 11.005000 -61.575001 # 5 +1423 645 6 0.000000 17.216585 11.715001 -61.575001 # 5 +1424 645 6 0.000000 15.986829 11.005000 -61.575001 # 5 +1425 645 6 0.000000 19.676096 11.715001 -61.575001 # 5 +1426 645 6 0.000000 18.446341 11.005000 -61.575001 # 5 +1427 645 6 0.000000 22.135609 11.715001 -61.575001 # 5 +1428 645 6 0.000000 20.905853 11.005000 -61.575001 # 5 +1429 645 6 0.000000 24.595121 11.715001 -61.575001 # 5 +1430 645 6 0.000000 23.365364 11.005000 -61.575001 # 5 +1431 645 6 0.000000 27.054632 11.715001 -61.575001 # 5 +1432 645 6 0.000000 25.824877 11.005000 -61.575001 # 5 +1433 645 6 0.000000 29.514145 11.715001 -61.575001 # 5 +1434 645 6 0.000000 28.284389 11.005000 -61.575001 # 5 +1435 645 6 0.000000 31.973658 11.715001 -61.575001 # 5 +1436 645 6 0.000000 30.743900 11.005000 -61.575001 # 5 +1437 645 6 0.000000 1.229756 13.845000 -61.575001 # 5 +1438 645 6 0.000000 3.689268 13.845000 -61.575001 # 5 +1439 645 6 0.000000 2.459512 13.135000 -61.575001 # 5 +1440 645 6 0.000000 6.148780 13.845000 -61.575001 # 5 +1441 645 6 0.000000 4.919024 13.135000 -61.575001 # 5 +1442 645 6 0.000000 8.608293 13.845000 -61.575001 # 5 +1443 645 6 0.000000 7.378536 13.135000 -61.575001 # 5 +1444 645 6 0.000000 11.067804 13.845000 -61.575001 # 5 +1445 645 6 0.000000 9.838048 13.135000 -61.575001 # 5 +1446 645 6 0.000000 13.527316 13.845000 -61.575001 # 5 +1447 645 6 0.000000 12.297561 13.135000 -61.575001 # 5 +1448 645 6 0.000000 15.986829 13.845000 -61.575001 # 5 +1449 645 6 0.000000 14.757072 13.135000 -61.575001 # 5 +1450 645 6 0.000000 18.446341 13.845000 -61.575001 # 5 +1451 645 6 0.000000 17.216585 13.135000 -61.575001 # 5 +1452 645 6 0.000000 20.905853 13.845000 -61.575001 # 5 +1453 645 6 0.000000 19.676096 13.135000 -61.575001 # 5 +1454 645 6 0.000000 23.365364 13.845000 -61.575001 # 5 +1455 645 6 0.000000 22.135609 13.135000 -61.575001 # 5 +1456 645 6 0.000000 25.824877 13.845000 -61.575001 # 5 +1457 645 6 0.000000 24.595121 13.135000 -61.575001 # 5 +1458 645 6 0.000000 28.284389 13.845000 -61.575001 # 5 +1459 645 6 0.000000 27.054632 13.135000 -61.575001 # 5 +1460 645 6 0.000000 30.743900 13.845000 -61.575001 # 5 +1461 645 6 0.000000 29.514145 13.135000 -61.575001 # 5 +1462 645 6 0.000000 31.973658 13.135000 -61.575001 # 5 +1463 645 6 0.000000 2.459512 15.975000 -61.575001 # 5 +1464 645 6 0.000000 1.229756 15.265000 -61.575001 # 5 +1465 645 6 0.000000 4.919024 15.975000 -61.575001 # 5 +1466 645 6 0.000000 3.689268 15.265000 -61.575001 # 5 +1467 645 6 0.000000 7.378536 15.975000 -61.575001 # 5 +1468 645 6 0.000000 6.148780 15.265000 -61.575001 # 5 +1469 645 6 0.000000 9.838048 15.975000 -61.575001 # 5 +1470 645 6 0.000000 8.608293 15.265000 -61.575001 # 5 +1471 645 6 0.000000 12.297561 15.975000 -61.575001 # 5 +1472 645 6 0.000000 11.067804 15.265000 -61.575001 # 5 +1473 645 6 0.000000 14.757072 15.975000 -61.575001 # 5 +1474 645 6 0.000000 13.527316 15.265000 -61.575001 # 5 +1475 645 6 0.000000 17.216585 15.975000 -61.575001 # 5 +1476 645 6 0.000000 15.986829 15.265000 -61.575001 # 5 +1477 645 6 0.000000 19.676096 15.975000 -61.575001 # 5 +1478 645 6 0.000000 18.446341 15.265000 -61.575001 # 5 +1479 645 6 0.000000 22.135609 15.975000 -61.575001 # 5 +1480 645 6 0.000000 20.905853 15.265000 -61.575001 # 5 +1481 645 6 0.000000 24.595121 15.975000 -61.575001 # 5 +1482 645 6 0.000000 23.365364 15.265000 -61.575001 # 5 +1483 645 6 0.000000 27.054632 15.975000 -61.575001 # 5 +1484 645 6 0.000000 25.824877 15.265000 -61.575001 # 5 +1485 645 6 0.000000 29.514145 15.975000 -61.575001 # 5 +1486 645 6 0.000000 28.284389 15.265000 -61.575001 # 5 +1487 645 6 0.000000 31.973658 15.975000 -61.575001 # 5 +1488 645 6 0.000000 30.743900 15.265000 -61.575001 # 5 +1489 645 6 0.000000 1.229756 18.105000 -61.575001 # 5 +1490 645 6 0.000000 3.689268 18.105000 -61.575001 # 5 +1491 645 6 0.000000 2.459512 17.395000 -61.575001 # 5 +1492 645 6 0.000000 6.148780 18.105000 -61.575001 # 5 +1493 645 6 0.000000 4.919024 17.395000 -61.575001 # 5 +1494 645 6 0.000000 8.608293 18.105000 -61.575001 # 5 +1495 645 6 0.000000 7.378536 17.395000 -61.575001 # 5 +1496 645 6 0.000000 11.067804 18.105000 -61.575001 # 5 +1497 645 6 0.000000 9.838048 17.395000 -61.575001 # 5 +1498 645 6 0.000000 13.527316 18.105000 -61.575001 # 5 +1499 645 6 0.000000 12.297561 17.395000 -61.575001 # 5 +1500 645 6 0.000000 15.986829 18.105000 -61.575001 # 5 +1501 645 6 0.000000 14.757072 17.395000 -61.575001 # 5 +1502 645 6 0.000000 18.446341 18.105000 -61.575001 # 5 +1503 645 6 0.000000 17.216585 17.395000 -61.575001 # 5 +1504 645 6 0.000000 20.905853 18.105000 -61.575001 # 5 +1505 645 6 0.000000 19.676096 17.395000 -61.575001 # 5 +1506 645 6 0.000000 23.365364 18.105000 -61.575001 # 5 +1507 645 6 0.000000 22.135609 17.395000 -61.575001 # 5 +1508 645 6 0.000000 25.824877 18.105000 -61.575001 # 5 +1509 645 6 0.000000 24.595121 17.395000 -61.575001 # 5 +1510 645 6 0.000000 28.284389 18.105000 -61.575001 # 5 +1511 645 6 0.000000 27.054632 17.395000 -61.575001 # 5 +1512 645 6 0.000000 30.743900 18.105000 -61.575001 # 5 +1513 645 6 0.000000 29.514145 17.395000 -61.575001 # 5 +1514 645 6 0.000000 31.973658 17.395000 -61.575001 # 5 +1515 645 6 0.000000 2.459512 20.235001 -61.575001 # 5 +1516 645 6 0.000000 1.229756 19.525000 -61.575001 # 5 +1517 645 6 0.000000 4.919024 20.235001 -61.575001 # 5 +1518 645 6 0.000000 3.689268 19.525000 -61.575001 # 5 +1519 645 6 0.000000 7.378536 20.235001 -61.575001 # 5 +1520 645 6 0.000000 6.148780 19.525000 -61.575001 # 5 +1521 645 6 0.000000 9.838048 20.235001 -61.575001 # 5 +1522 645 6 0.000000 8.608293 19.525000 -61.575001 # 5 +1523 645 6 0.000000 12.297561 20.235001 -61.575001 # 5 +1524 645 6 0.000000 11.067804 19.525000 -61.575001 # 5 +1525 645 6 0.000000 14.757072 20.235001 -61.575001 # 5 +1526 645 6 0.000000 13.527316 19.525000 -61.575001 # 5 +1527 645 6 0.000000 17.216585 20.235001 -61.575001 # 5 +1528 645 6 0.000000 15.986829 19.525000 -61.575001 # 5 +1529 645 6 0.000000 19.676096 20.235001 -61.575001 # 5 +1530 645 6 0.000000 18.446341 19.525000 -61.575001 # 5 +1531 645 6 0.000000 22.135609 20.235001 -61.575001 # 5 +1532 645 6 0.000000 20.905853 19.525000 -61.575001 # 5 +1533 645 6 0.000000 24.595121 20.235001 -61.575001 # 5 +1534 645 6 0.000000 23.365364 19.525000 -61.575001 # 5 +1535 645 6 0.000000 27.054632 20.235001 -61.575001 # 5 +1536 645 6 0.000000 25.824877 19.525000 -61.575001 # 5 +1537 645 6 0.000000 29.514145 20.235001 -61.575001 # 5 +1538 645 6 0.000000 28.284389 19.525000 -61.575001 # 5 +1539 645 6 0.000000 31.973658 20.235001 -61.575001 # 5 +1540 645 6 0.000000 30.743900 19.525000 -61.575001 # 5 +1541 645 6 0.000000 1.229756 22.365000 -61.575001 # 5 +1542 645 6 0.000000 3.689268 22.365000 -61.575001 # 5 +1543 645 6 0.000000 2.459512 21.655001 -61.575001 # 5 +1544 645 6 0.000000 6.148780 22.365000 -61.575001 # 5 +1545 645 6 0.000000 4.919024 21.655001 -61.575001 # 5 +1546 645 6 0.000000 8.608293 22.365000 -61.575001 # 5 +1547 645 6 0.000000 7.378536 21.655001 -61.575001 # 5 +1548 645 6 0.000000 11.067804 22.365000 -61.575001 # 5 +1549 645 6 0.000000 9.838048 21.655001 -61.575001 # 5 +1550 645 6 0.000000 13.527316 22.365000 -61.575001 # 5 +1551 645 6 0.000000 12.297561 21.655001 -61.575001 # 5 +1552 645 6 0.000000 15.986829 22.365000 -61.575001 # 5 +1553 645 6 0.000000 14.757072 21.655001 -61.575001 # 5 +1554 645 6 0.000000 18.446341 22.365000 -61.575001 # 5 +1555 645 6 0.000000 17.216585 21.655001 -61.575001 # 5 +1556 645 6 0.000000 20.905853 22.365000 -61.575001 # 5 +1557 645 6 0.000000 19.676096 21.655001 -61.575001 # 5 +1558 645 6 0.000000 23.365364 22.365000 -61.575001 # 5 +1559 645 6 0.000000 22.135609 21.655001 -61.575001 # 5 +1560 645 6 0.000000 25.824877 22.365000 -61.575001 # 5 +1561 645 6 0.000000 24.595121 21.655001 -61.575001 # 5 +1562 645 6 0.000000 28.284389 22.365000 -61.575001 # 5 +1563 645 6 0.000000 27.054632 21.655001 -61.575001 # 5 +1564 645 6 0.000000 30.743900 22.365000 -61.575001 # 5 +1565 645 6 0.000000 29.514145 21.655001 -61.575001 # 5 +1566 645 6 0.000000 31.973658 21.655001 -61.575001 # 5 +1567 645 6 0.000000 2.459512 24.495001 -61.575001 # 5 +1568 645 6 0.000000 1.229756 23.785000 -61.575001 # 5 +1569 645 6 0.000000 4.919024 24.495001 -61.575001 # 5 +1570 645 6 0.000000 3.689268 23.785000 -61.575001 # 5 +1571 645 6 0.000000 7.378536 24.495001 -61.575001 # 5 +1572 645 6 0.000000 6.148780 23.785000 -61.575001 # 5 +1573 645 6 0.000000 9.838048 24.495001 -61.575001 # 5 +1574 645 6 0.000000 8.608293 23.785000 -61.575001 # 5 +1575 645 6 0.000000 12.297561 24.495001 -61.575001 # 5 +1576 645 6 0.000000 11.067804 23.785000 -61.575001 # 5 +1577 645 6 0.000000 14.757072 24.495001 -61.575001 # 5 +1578 645 6 0.000000 13.527316 23.785000 -61.575001 # 5 +1579 645 6 0.000000 17.216585 24.495001 -61.575001 # 5 +1580 645 6 0.000000 15.986829 23.785000 -61.575001 # 5 +1581 645 6 0.000000 19.676096 24.495001 -61.575001 # 5 +1582 645 6 0.000000 18.446341 23.785000 -61.575001 # 5 +1583 645 6 0.000000 22.135609 24.495001 -61.575001 # 5 +1584 645 6 0.000000 20.905853 23.785000 -61.575001 # 5 +1585 645 6 0.000000 24.595121 24.495001 -61.575001 # 5 +1586 645 6 0.000000 23.365364 23.785000 -61.575001 # 5 +1587 645 6 0.000000 27.054632 24.495001 -61.575001 # 5 +1588 645 6 0.000000 25.824877 23.785000 -61.575001 # 5 +1589 645 6 0.000000 29.514145 24.495001 -61.575001 # 5 +1590 645 6 0.000000 28.284389 23.785000 -61.575001 # 5 +1591 645 6 0.000000 31.973658 24.495001 -61.575001 # 5 +1592 645 6 0.000000 30.743900 23.785000 -61.575001 # 5 +1593 645 6 0.000000 1.229756 26.625000 -61.575001 # 5 +1594 645 6 0.000000 3.689268 26.625000 -61.575001 # 5 +1595 645 6 0.000000 2.459512 25.915003 -61.575001 # 5 +1596 645 6 0.000000 6.148780 26.625000 -61.575001 # 5 +1597 645 6 0.000000 4.919024 25.915003 -61.575001 # 5 +1598 645 6 0.000000 8.608293 26.625000 -61.575001 # 5 +1599 645 6 0.000000 7.378536 25.915003 -61.575001 # 5 +1600 645 6 0.000000 11.067804 26.625000 -61.575001 # 5 +1601 645 6 0.000000 9.838048 25.915003 -61.575001 # 5 +1602 645 6 0.000000 13.527316 26.625000 -61.575001 # 5 +1603 645 6 0.000000 12.297561 25.915003 -61.575001 # 5 +1604 645 6 0.000000 15.986829 26.625000 -61.575001 # 5 +1605 645 6 0.000000 14.757072 25.915003 -61.575001 # 5 +1606 645 6 0.000000 18.446341 26.625000 -61.575001 # 5 +1607 645 6 0.000000 17.216585 25.915003 -61.575001 # 5 +1608 645 6 0.000000 20.905853 26.625000 -61.575001 # 5 +1609 645 6 0.000000 19.676096 25.915003 -61.575001 # 5 +1610 645 6 0.000000 23.365364 26.625000 -61.575001 # 5 +1611 645 6 0.000000 22.135609 25.915003 -61.575001 # 5 +1612 645 6 0.000000 25.824877 26.625000 -61.575001 # 5 +1613 645 6 0.000000 24.595121 25.915003 -61.575001 # 5 +1614 645 6 0.000000 28.284389 26.625000 -61.575001 # 5 +1615 645 6 0.000000 27.054632 25.915003 -61.575001 # 5 +1616 645 6 0.000000 30.743900 26.625000 -61.575001 # 5 +1617 645 6 0.000000 29.514145 25.915003 -61.575001 # 5 +1618 645 6 0.000000 31.973658 25.915003 -61.575001 # 5 +1619 645 6 0.000000 2.459512 28.754999 -61.575001 # 5 +1620 645 6 0.000000 1.229756 28.045000 -61.575001 # 5 +1621 645 6 0.000000 4.919024 28.754999 -61.575001 # 5 +1622 645 6 0.000000 3.689268 28.045000 -61.575001 # 5 +1623 645 6 0.000000 7.378536 28.754999 -61.575001 # 5 +1624 645 6 0.000000 6.148780 28.045000 -61.575001 # 5 +1625 645 6 0.000000 9.838048 28.754999 -61.575001 # 5 +1626 645 6 0.000000 8.608293 28.045000 -61.575001 # 5 +1627 645 6 0.000000 12.297561 28.754999 -61.575001 # 5 +1628 645 6 0.000000 11.067804 28.045000 -61.575001 # 5 +1629 645 6 0.000000 14.757072 28.754999 -61.575001 # 5 +1630 645 6 0.000000 13.527316 28.045000 -61.575001 # 5 +1631 645 6 0.000000 17.216585 28.754999 -61.575001 # 5 +1632 645 6 0.000000 15.986829 28.045000 -61.575001 # 5 +1633 645 6 0.000000 19.676096 28.754999 -61.575001 # 5 +1634 645 6 0.000000 18.446341 28.045000 -61.575001 # 5 +1635 645 6 0.000000 22.135609 28.754999 -61.575001 # 5 +1636 645 6 0.000000 20.905853 28.045000 -61.575001 # 5 +1637 645 6 0.000000 24.595121 28.754999 -61.575001 # 5 +1638 645 6 0.000000 23.365364 28.045000 -61.575001 # 5 +1639 645 6 0.000000 27.054632 28.754999 -61.575001 # 5 +1640 645 6 0.000000 25.824877 28.045000 -61.575001 # 5 +1641 645 6 0.000000 29.514145 28.754999 -61.575001 # 5 +1642 645 6 0.000000 28.284389 28.045000 -61.575001 # 5 +1643 645 6 0.000000 31.973658 28.754999 -61.575001 # 5 +1644 645 6 0.000000 30.743900 28.045000 -61.575001 # 5 +1645 645 6 0.000000 1.229756 30.885000 -61.575001 # 5 +1646 645 6 0.000000 3.689268 30.885000 -61.575001 # 5 +1647 645 6 0.000000 2.459512 30.174999 -61.575001 # 5 +1648 645 6 0.000000 6.148780 30.885000 -61.575001 # 5 +1649 645 6 0.000000 4.919024 30.174999 -61.575001 # 5 +1650 645 6 0.000000 8.608293 30.885000 -61.575001 # 5 +1651 645 6 0.000000 7.378536 30.174999 -61.575001 # 5 +1652 645 6 0.000000 11.067804 30.885000 -61.575001 # 5 +1653 645 6 0.000000 9.838048 30.174999 -61.575001 # 5 +1654 645 6 0.000000 13.527316 30.885000 -61.575001 # 5 +1655 645 6 0.000000 12.297561 30.174999 -61.575001 # 5 +1656 645 6 0.000000 15.986829 30.885000 -61.575001 # 5 +1657 645 6 0.000000 14.757072 30.174999 -61.575001 # 5 +1658 645 6 0.000000 18.446341 30.885000 -61.575001 # 5 +1659 645 6 0.000000 17.216585 30.174999 -61.575001 # 5 +1660 645 6 0.000000 20.905853 30.885000 -61.575001 # 5 +1661 645 6 0.000000 19.676096 30.174999 -61.575001 # 5 +1662 645 6 0.000000 23.365364 30.885000 -61.575001 # 5 +1663 645 6 0.000000 22.135609 30.174999 -61.575001 # 5 +1664 645 6 0.000000 25.824877 30.885000 -61.575001 # 5 +1665 645 6 0.000000 24.595121 30.174999 -61.575001 # 5 +1666 645 6 0.000000 28.284389 30.885000 -61.575001 # 5 +1667 645 6 0.000000 27.054632 30.174999 -61.575001 # 5 +1668 645 6 0.000000 30.743900 30.885000 -61.575001 # 5 +1669 645 6 0.000000 29.514145 30.174999 -61.575001 # 5 +1670 645 6 0.000000 31.973658 30.174999 -61.575001 # 5 +1671 645 6 0.000000 2.459512 33.014999 -61.575001 # 5 +1672 645 6 0.000000 1.229756 32.305000 -61.575001 # 5 +1673 645 6 0.000000 4.919024 33.014999 -61.575001 # 5 +1674 645 6 0.000000 3.689268 32.305000 -61.575001 # 5 +1675 645 6 0.000000 7.378536 33.014999 -61.575001 # 5 +1676 645 6 0.000000 6.148780 32.305000 -61.575001 # 5 +1677 645 6 0.000000 9.838048 33.014999 -61.575001 # 5 +1678 645 6 0.000000 8.608293 32.305000 -61.575001 # 5 +1679 645 6 0.000000 12.297561 33.014999 -61.575001 # 5 +1680 645 6 0.000000 11.067804 32.305000 -61.575001 # 5 +1681 645 6 0.000000 14.757072 33.014999 -61.575001 # 5 +1682 645 6 0.000000 13.527316 32.305000 -61.575001 # 5 +1683 645 6 0.000000 17.216585 33.014999 -61.575001 # 5 +1684 645 6 0.000000 15.986829 32.305000 -61.575001 # 5 +1685 645 6 0.000000 19.676096 33.014999 -61.575001 # 5 +1686 645 6 0.000000 18.446341 32.305000 -61.575001 # 5 +1687 645 6 0.000000 22.135609 33.014999 -61.575001 # 5 +1688 645 6 0.000000 20.905853 32.305000 -61.575001 # 5 +1689 645 6 0.000000 24.595121 33.014999 -61.575001 # 5 +1690 645 6 0.000000 23.365364 32.305000 -61.575001 # 5 +1691 645 6 0.000000 27.054632 33.014999 -61.575001 # 5 +1692 645 6 0.000000 25.824877 32.305000 -61.575001 # 5 +1693 645 6 0.000000 29.514145 33.014999 -61.575001 # 5 +1694 645 6 0.000000 28.284389 32.305000 -61.575001 # 5 +1695 645 6 0.000000 31.973658 33.014999 -61.575001 # 5 +1696 645 6 0.000000 30.743900 32.305000 -61.575001 # 5 +1697 643 6 0.000000 1.229756 1.065000 -58.224998 # 5 1698 641 5 -0.003588 1.229756 1.065000 -54.875000 # 5 -1699 643 5 0.000000 2.459512 1.775000 -58.224998 # 5 -1700 643 5 0.000000 3.689268 1.065000 -58.224998 # 5 +1699 643 6 0.000000 2.459512 1.775000 -58.224998 # 5 +1700 643 6 0.000000 3.689268 1.065000 -58.224998 # 5 1701 641 5 0.010943 3.689268 1.065000 -54.875000 # 5 1702 641 5 0.003654 2.459512 0.355000 -54.875000 # 5 -1703 643 5 0.000000 4.919024 1.775000 -58.224998 # 5 -1704 643 5 0.000000 6.148780 1.065000 -58.224998 # 5 +1703 643 6 0.000000 4.919024 1.775000 -58.224998 # 5 +1704 643 6 0.000000 6.148780 1.065000 -58.224998 # 5 1705 641 5 0.007813 6.148780 1.065000 -54.875000 # 5 1706 641 5 0.011720 4.919024 0.355000 -54.875000 # 5 -1707 643 5 0.000000 7.378536 1.775000 -58.224998 # 5 -1708 643 5 0.000000 8.608293 1.065000 -58.224998 # 5 +1707 643 6 0.000000 7.378536 1.775000 -58.224998 # 5 +1708 643 6 0.000000 8.608293 1.065000 -58.224998 # 5 1709 641 5 -0.003508 8.608293 1.065000 -54.875000 # 5 1710 641 5 0.001472 7.378536 0.355000 -54.875000 # 5 -1711 643 5 0.000000 9.838048 1.775000 -58.224998 # 5 -1712 643 5 0.000000 11.067804 1.065000 -58.224998 # 5 +1711 643 6 0.000000 9.838048 1.775000 -58.224998 # 5 +1712 643 6 0.000000 11.067804 1.065000 -58.224998 # 5 1713 641 5 -0.000091 11.067804 1.065000 -54.875000 # 5 1714 641 5 -0.002586 9.838048 0.355000 -54.875000 # 5 -1715 643 5 0.000000 12.297561 1.775000 -58.224998 # 5 -1716 643 5 0.000000 13.527316 1.065000 -58.224998 # 5 +1715 643 6 0.000000 12.297561 1.775000 -58.224998 # 5 +1716 643 6 0.000000 13.527316 1.065000 -58.224998 # 5 1717 641 5 0.011584 13.527316 1.065000 -54.875000 # 5 1718 641 5 0.009209 12.297561 0.355000 -54.875000 # 5 -1719 643 5 0.000000 14.757072 1.775000 -58.224998 # 5 -1720 643 5 0.000000 15.986829 1.065000 -58.224998 # 5 +1719 643 6 0.000000 14.757072 1.775000 -58.224998 # 5 +1720 643 6 0.000000 15.986829 1.065000 -58.224998 # 5 1721 641 5 0.004193 15.986829 1.065000 -54.875000 # 5 1722 641 5 0.013449 14.757072 0.355000 -54.875000 # 5 -1723 643 5 0.000000 17.216585 1.775000 -58.224998 # 5 -1724 643 5 0.000000 18.446341 1.065000 -58.224998 # 5 +1723 643 6 0.000000 17.216585 1.775000 -58.224998 # 5 +1724 643 6 0.000000 18.446341 1.065000 -58.224998 # 5 1725 641 5 -0.001422 18.446341 1.065000 -54.875000 # 5 1726 641 5 0.003415 17.216585 0.355000 -54.875000 # 5 -1727 643 5 0.000000 19.676096 1.775000 -58.224998 # 5 -1728 643 5 0.000000 20.905853 1.065000 -58.224998 # 5 +1727 643 6 0.000000 19.676096 1.775000 -58.224998 # 5 +1728 643 6 0.000000 20.905853 1.065000 -58.224998 # 5 1729 641 5 0.004366 20.905853 1.065000 -54.875000 # 5 1730 641 5 0.007882 19.676096 0.355000 -54.875000 # 5 -1731 643 5 0.000000 22.135609 1.775000 -58.224998 # 5 -1732 643 5 0.000000 23.365364 1.065000 -58.224998 # 5 +1731 643 6 0.000000 22.135609 1.775000 -58.224998 # 5 +1732 643 6 0.000000 23.365364 1.065000 -58.224998 # 5 1733 641 5 0.005847 23.365364 1.065000 -54.875000 # 5 1734 641 5 0.009526 22.135609 0.355000 -54.875000 # 5 -1735 643 5 0.000000 24.595121 1.775000 -58.224998 # 5 -1736 643 5 0.000000 25.824877 1.065000 -58.224998 # 5 +1735 643 6 0.000000 24.595121 1.775000 -58.224998 # 5 +1736 643 6 0.000000 25.824877 1.065000 -58.224998 # 5 1737 641 5 0.008915 25.824877 1.065000 -54.875000 # 5 1738 641 5 0.007506 24.595121 0.355000 -54.875000 # 5 -1739 643 5 0.000000 27.054632 1.775000 -58.224998 # 5 -1740 643 5 0.000000 28.284389 1.065000 -58.224998 # 5 +1739 643 6 0.000000 27.054632 1.775000 -58.224998 # 5 +1740 643 6 0.000000 28.284389 1.065000 -58.224998 # 5 1741 641 5 0.003894 28.284389 1.065000 -54.875000 # 5 1742 641 5 0.006134 27.054632 0.355000 -54.875000 # 5 -1743 643 5 0.000000 29.514145 1.775000 -58.224998 # 5 -1744 643 5 0.000000 30.743900 1.065000 -58.224998 # 5 +1743 643 6 0.000000 29.514145 1.775000 -58.224998 # 5 +1744 643 6 0.000000 30.743900 1.065000 -58.224998 # 5 1745 641 5 -0.008012 30.743900 1.065000 -54.875000 # 5 1746 641 5 -0.003567 29.514145 0.355000 -54.875000 # 5 -1747 643 5 0.000000 31.973658 1.775000 -58.224998 # 5 +1747 643 6 0.000000 31.973658 1.775000 -58.224998 # 5 1748 641 5 -0.009828 31.973658 0.355000 -54.875000 # 5 -1749 643 5 0.000000 1.229756 3.905000 -58.224998 # 5 -1750 643 5 0.000000 2.459512 3.195000 -58.224998 # 5 +1749 643 6 0.000000 1.229756 3.905000 -58.224998 # 5 +1750 643 6 0.000000 2.459512 3.195000 -58.224998 # 5 1751 641 5 0.005462 2.459512 3.195000 -54.875000 # 5 1752 641 5 -0.000737 1.229756 2.485000 -54.875000 # 5 -1753 643 5 0.000000 3.689268 3.905000 -58.224998 # 5 -1754 643 5 0.000000 4.919024 3.195000 -58.224998 # 5 +1753 643 6 0.000000 3.689268 3.905000 -58.224998 # 5 +1754 643 6 0.000000 4.919024 3.195000 -58.224998 # 5 1755 641 5 0.007224 4.919024 3.195000 -54.875000 # 5 1756 641 5 0.009510 3.689268 2.485000 -54.875000 # 5 -1757 643 5 0.000000 6.148780 3.905000 -58.224998 # 5 -1758 643 5 0.000000 7.378536 3.195000 -58.224998 # 5 +1757 643 6 0.000000 6.148780 3.905000 -58.224998 # 5 +1758 643 6 0.000000 7.378536 3.195000 -58.224998 # 5 1759 641 5 -0.002420 7.378536 3.195000 -54.875000 # 5 1760 641 5 0.005396 6.148780 2.485000 -54.875000 # 5 -1761 643 5 0.000000 8.608293 3.905000 -58.224998 # 5 -1762 643 5 0.000000 9.838048 3.195000 -58.224998 # 5 +1761 643 6 0.000000 8.608293 3.905000 -58.224998 # 5 +1762 643 6 0.000000 9.838048 3.195000 -58.224998 # 5 1763 641 5 -0.008531 9.838048 3.195000 -54.875000 # 5 1764 641 5 -0.005950 8.608293 2.485000 -54.875000 # 5 -1765 643 5 0.000000 11.067804 3.905000 -58.224998 # 5 -1766 643 5 0.000000 12.297561 3.195000 -58.224998 # 5 +1765 643 6 0.000000 11.067804 3.905000 -58.224998 # 5 +1766 643 6 0.000000 12.297561 3.195000 -58.224998 # 5 1767 641 5 -0.001160 12.297561 3.195000 -54.875000 # 5 1768 641 5 -0.004007 11.067804 2.485000 -54.875000 # 5 -1769 643 5 0.000000 13.527316 3.905000 -58.224998 # 5 -1770 643 5 0.000000 14.757072 3.195000 -58.224998 # 5 +1769 643 6 0.000000 13.527316 3.905000 -58.224998 # 5 +1770 643 6 0.000000 14.757072 3.195000 -58.224998 # 5 1771 641 5 0.001250 14.757072 3.195000 -54.875000 # 5 1772 641 5 0.005086 13.527316 2.485000 -54.875000 # 5 -1773 643 5 0.000000 15.986829 3.905000 -58.224998 # 5 -1774 643 5 0.000000 17.216585 3.195000 -58.224998 # 5 +1773 643 6 0.000000 15.986829 3.905000 -58.224998 # 5 +1774 643 6 0.000000 17.216585 3.195000 -58.224998 # 5 1775 641 5 -0.008754 17.216585 3.195000 -54.875000 # 5 1776 641 5 -0.001144 15.986829 2.485000 -54.875000 # 5 -1777 643 5 0.000000 18.446341 3.905000 -58.224998 # 5 -1778 643 5 0.000000 19.676096 3.195000 -58.224998 # 5 +1777 643 6 0.000000 18.446341 3.905000 -58.224998 # 5 +1778 643 6 0.000000 19.676096 3.195000 -58.224998 # 5 1779 641 5 -0.006182 19.676096 3.195000 -54.875000 # 5 1780 641 5 -0.008547 18.446341 2.485000 -54.875000 # 5 -1781 643 5 0.000000 20.905853 3.905000 -58.224998 # 5 -1782 643 5 0.000000 22.135609 3.195000 -58.224998 # 5 +1781 643 6 0.000000 20.905853 3.905000 -58.224998 # 5 +1782 643 6 0.000000 22.135609 3.195000 -58.224998 # 5 1783 641 5 -0.000136 22.135609 3.195000 -54.875000 # 5 1784 641 5 -0.001686 20.905853 2.485000 -54.875000 # 5 -1785 643 5 0.000000 23.365364 3.905000 -58.224998 # 5 -1786 643 5 0.000000 24.595121 3.195000 -58.224998 # 5 +1785 643 6 0.000000 23.365364 3.905000 -58.224998 # 5 +1786 643 6 0.000000 24.595121 3.195000 -58.224998 # 5 1787 641 5 0.007455 24.595121 3.195000 -54.875000 # 5 1788 641 5 0.003996 23.365364 2.485000 -54.875000 # 5 -1789 643 5 0.000000 25.824877 3.905000 -58.224998 # 5 -1790 643 5 0.000000 27.054632 3.195000 -58.224998 # 5 +1789 643 6 0.000000 25.824877 3.905000 -58.224998 # 5 +1790 643 6 0.000000 27.054632 3.195000 -58.224998 # 5 1791 641 5 0.011764 27.054632 3.195000 -54.875000 # 5 1792 641 5 0.011886 25.824877 2.485000 -54.875000 # 5 -1793 643 5 0.000000 28.284389 3.905000 -58.224998 # 5 -1794 643 5 0.000000 29.514145 3.195000 -58.224998 # 5 +1793 643 6 0.000000 28.284389 3.905000 -58.224998 # 5 +1794 643 6 0.000000 29.514145 3.195000 -58.224998 # 5 1795 641 5 0.000651 29.514145 3.195000 -54.875000 # 5 1796 641 5 0.006646 28.284389 2.485000 -54.875000 # 5 -1797 643 5 0.000000 30.743900 3.905000 -58.224998 # 5 -1798 643 5 0.000000 31.973658 3.195000 -58.224998 # 5 +1797 643 6 0.000000 30.743900 3.905000 -58.224998 # 5 +1798 643 6 0.000000 31.973658 3.195000 -58.224998 # 5 1799 641 5 -0.004203 31.973658 3.195000 -54.875000 # 5 1800 641 5 -0.006245 30.743900 2.485000 -54.875000 # 5 -1801 643 5 0.000000 1.229756 5.325000 -58.224998 # 5 +1801 643 6 0.000000 1.229756 5.325000 -58.224998 # 5 1802 641 5 0.008550 1.229756 5.325000 -54.875000 # 5 -1803 643 5 0.000000 2.459512 6.035000 -58.224998 # 5 -1804 643 5 0.000000 3.689268 5.325000 -58.224998 # 5 +1803 643 6 0.000000 2.459512 6.035000 -58.224998 # 5 +1804 643 6 0.000000 3.689268 5.325000 -58.224998 # 5 1805 641 5 0.004636 3.689268 5.325000 -54.875000 # 5 1806 641 5 0.006617 2.459512 4.615000 -54.875000 # 5 -1807 643 5 0.000000 4.919024 6.035000 -58.224998 # 5 -1808 643 5 0.000000 6.148780 5.325000 -58.224998 # 5 +1807 643 6 0.000000 4.919024 6.035000 -58.224998 # 5 +1808 643 6 0.000000 6.148780 5.325000 -58.224998 # 5 1809 641 5 -0.001615 6.148780 5.325000 -54.875000 # 5 1810 641 5 0.002141 4.919024 4.615000 -54.875000 # 5 -1811 643 5 0.000000 7.378536 6.035000 -58.224998 # 5 -1812 643 5 0.000000 8.608293 5.325000 -58.224998 # 5 +1811 643 6 0.000000 7.378536 6.035000 -58.224998 # 5 +1812 643 6 0.000000 8.608293 5.325000 -58.224998 # 5 1813 641 5 -0.005838 8.608293 5.325000 -54.875000 # 5 1814 641 5 -0.003742 7.378536 4.615000 -54.875000 # 5 -1815 643 5 0.000000 9.838048 6.035000 -58.224998 # 5 -1816 643 5 0.000000 11.067804 5.325000 -58.224998 # 5 +1815 643 6 0.000000 9.838048 6.035000 -58.224998 # 5 +1816 643 6 0.000000 11.067804 5.325000 -58.224998 # 5 1817 641 5 -0.007155 11.067804 5.325000 -54.875000 # 5 1818 641 5 -0.007801 9.838048 4.615000 -54.875000 # 5 -1819 643 5 0.000000 12.297561 6.035000 -58.224998 # 5 -1820 643 5 0.000000 13.527316 5.325000 -58.224998 # 5 +1819 643 6 0.000000 12.297561 6.035000 -58.224998 # 5 +1820 643 6 0.000000 13.527316 5.325000 -58.224998 # 5 1821 641 5 -0.002605 13.527316 5.325000 -54.875000 # 5 1822 641 5 -0.004730 12.297561 4.615000 -54.875000 # 5 -1823 643 5 0.000000 14.757072 6.035000 -58.224998 # 5 -1824 643 5 0.000000 15.986829 5.325000 -58.224998 # 5 +1823 643 6 0.000000 14.757072 6.035000 -58.224998 # 5 +1824 643 6 0.000000 15.986829 5.325000 -58.224998 # 5 1825 641 5 -0.000732 15.986829 5.325000 -54.875000 # 5 1826 641 5 -0.001883 14.757072 4.615000 -54.875000 # 5 -1827 643 5 0.000000 17.216585 6.035000 -58.224998 # 5 -1828 643 5 0.000000 18.446341 5.325000 -58.224998 # 5 +1827 643 6 0.000000 17.216585 6.035000 -58.224998 # 5 +1828 643 6 0.000000 18.446341 5.325000 -58.224998 # 5 1829 641 5 0.000743 18.446341 5.325000 -54.875000 # 5 1830 641 5 -0.004118 17.216585 4.615000 -54.875000 # 5 -1831 643 5 0.000000 19.676096 6.035000 -58.224998 # 5 -1832 643 5 0.000000 20.905853 5.325000 -58.224998 # 5 +1831 643 6 0.000000 19.676096 6.035000 -58.224998 # 5 +1832 643 6 0.000000 20.905853 5.325000 -58.224998 # 5 1833 641 5 0.001093 20.905853 5.325000 -54.875000 # 5 1834 641 5 -0.002237 19.676096 4.615000 -54.875000 # 5 -1835 643 5 0.000000 22.135609 6.035000 -58.224998 # 5 -1836 643 5 0.000000 23.365364 5.325000 -58.224998 # 5 +1835 643 6 0.000000 22.135609 6.035000 -58.224998 # 5 +1836 643 6 0.000000 23.365364 5.325000 -58.224998 # 5 1837 641 5 0.000579 23.365364 5.325000 -54.875000 # 5 1838 641 5 -0.000424 22.135609 4.615000 -54.875000 # 5 -1839 643 5 0.000000 24.595121 6.035000 -58.224998 # 5 -1840 643 5 0.000000 25.824877 5.325000 -58.224998 # 5 +1839 643 6 0.000000 24.595121 6.035000 -58.224998 # 5 +1840 643 6 0.000000 25.824877 5.325000 -58.224998 # 5 1841 641 5 0.002589 25.824877 5.325000 -54.875000 # 5 1842 641 5 0.004117 24.595121 4.615000 -54.875000 # 5 -1843 643 5 0.000000 27.054632 6.035000 -58.224998 # 5 -1844 643 5 0.000000 28.284389 5.325000 -58.224998 # 5 +1843 643 6 0.000000 27.054632 6.035000 -58.224998 # 5 +1844 643 6 0.000000 28.284389 5.325000 -58.224998 # 5 1845 641 5 -0.000439 28.284389 5.325000 -54.875000 # 5 1846 641 5 0.005714 27.054632 4.615000 -54.875000 # 5 -1847 643 5 0.000000 29.514145 6.035000 -58.224998 # 5 -1848 643 5 0.000000 30.743900 5.325000 -58.224998 # 5 +1847 643 6 0.000000 29.514145 6.035000 -58.224998 # 5 +1848 643 6 0.000000 30.743900 5.325000 -58.224998 # 5 1849 641 5 0.000936 30.743900 5.325000 -54.875000 # 5 1850 641 5 0.000273 29.514145 4.615000 -54.875000 # 5 -1851 643 5 0.000000 31.973658 6.035000 -58.224998 # 5 +1851 643 6 0.000000 31.973658 6.035000 -58.224998 # 5 1852 641 5 0.003837 31.973658 4.615000 -54.875000 # 5 -1853 643 5 0.000000 1.229756 8.165000 -58.224998 # 5 -1854 643 5 0.000000 2.459512 7.455000 -58.224998 # 5 +1853 643 6 0.000000 1.229756 8.165000 -58.224998 # 5 +1854 643 6 0.000000 2.459512 7.455000 -58.224998 # 5 1855 641 5 0.005056 2.459512 7.455000 -54.875000 # 5 1856 641 5 0.009685 1.229756 6.745000 -54.875000 # 5 -1857 643 5 0.000000 3.689268 8.165000 -58.224998 # 5 -1858 643 5 0.000000 4.919024 7.455000 -58.224998 # 5 +1857 643 6 0.000000 3.689268 8.165000 -58.224998 # 5 +1858 643 6 0.000000 4.919024 7.455000 -58.224998 # 5 1859 641 5 -0.001063 4.919024 7.455000 -54.875000 # 5 1860 641 5 0.002508 3.689268 6.745000 -54.875000 # 5 -1861 643 5 0.000000 6.148780 8.165000 -58.224998 # 5 -1862 643 5 0.000000 7.378536 7.455000 -58.224998 # 5 +1861 643 6 0.000000 6.148780 8.165000 -58.224998 # 5 +1862 643 6 0.000000 7.378536 7.455000 -58.224998 # 5 1863 641 5 -0.000730 7.378536 7.455000 -54.875000 # 5 1864 641 5 -0.001948 6.148780 6.745000 -54.875000 # 5 -1865 643 5 0.000000 8.608293 8.165000 -58.224998 # 5 -1866 643 5 0.000000 9.838048 7.455000 -58.224998 # 5 +1865 643 6 0.000000 8.608293 8.165000 -58.224998 # 5 +1866 643 6 0.000000 9.838048 7.455000 -58.224998 # 5 1867 641 5 -0.002210 9.838048 7.455000 -54.875000 # 5 1868 641 5 -0.002657 8.608293 6.745000 -54.875000 # 5 -1869 643 5 0.000000 11.067804 8.165000 -58.224998 # 5 -1870 643 5 0.000000 12.297561 7.455000 -58.224998 # 5 +1869 643 6 0.000000 11.067804 8.165000 -58.224998 # 5 +1870 643 6 0.000000 12.297561 7.455000 -58.224998 # 5 1871 641 5 -0.003415 12.297561 7.455000 -54.875000 # 5 1872 641 5 -0.005292 11.067804 6.745000 -54.875000 # 5 -1873 643 5 0.000000 13.527316 8.165000 -58.224998 # 5 -1874 643 5 0.000000 14.757072 7.455000 -58.224998 # 5 +1873 643 6 0.000000 13.527316 8.165000 -58.224998 # 5 +1874 643 6 0.000000 14.757072 7.455000 -58.224998 # 5 1875 641 5 0.000678 14.757072 7.455000 -54.875000 # 5 1876 641 5 -0.002777 13.527316 6.745000 -54.875000 # 5 -1877 643 5 0.000000 15.986829 8.165000 -58.224998 # 5 -1878 643 5 0.000000 17.216585 7.455000 -58.224998 # 5 +1877 643 6 0.000000 15.986829 8.165000 -58.224998 # 5 +1878 643 6 0.000000 17.216585 7.455000 -58.224998 # 5 1879 641 5 0.009440 17.216585 7.455000 -54.875000 # 5 1880 641 5 0.002971 15.986829 6.745000 -54.875000 # 5 -1881 643 5 0.000000 18.446341 8.165000 -58.224998 # 5 -1882 643 5 0.000000 19.676096 7.455000 -58.224998 # 5 +1881 643 6 0.000000 18.446341 8.165000 -58.224998 # 5 +1882 643 6 0.000000 19.676096 7.455000 -58.224998 # 5 1883 641 5 0.010732 19.676096 7.455000 -54.875000 # 5 1884 641 5 0.010304 18.446341 6.745000 -54.875000 # 5 -1885 643 5 0.000000 20.905853 8.165000 -58.224998 # 5 -1886 643 5 0.000000 22.135609 7.455000 -58.224998 # 5 +1885 643 6 0.000000 20.905853 8.165000 -58.224998 # 5 +1886 643 6 0.000000 22.135609 7.455000 -58.224998 # 5 1887 641 5 0.001280 22.135609 7.455000 -54.875000 # 5 1888 641 5 0.004551 20.905853 6.745000 -54.875000 # 5 -1889 643 5 0.000000 23.365364 8.165000 -58.224998 # 5 -1890 643 5 0.000000 24.595121 7.455000 -58.224998 # 5 +1889 643 6 0.000000 23.365364 8.165000 -58.224998 # 5 +1890 643 6 0.000000 24.595121 7.455000 -58.224998 # 5 1891 641 5 -0.002971 24.595121 7.455000 -54.875000 # 5 1892 641 5 -0.000717 23.365364 6.745000 -54.875000 # 5 -1893 643 5 0.000000 25.824877 8.165000 -58.224998 # 5 -1894 643 5 0.000000 27.054632 7.455000 -58.224998 # 5 +1893 643 6 0.000000 25.824877 8.165000 -58.224998 # 5 +1894 643 6 0.000000 27.054632 7.455000 -58.224998 # 5 1895 641 5 -0.009147 27.054632 7.455000 -54.875000 # 5 1896 641 5 -0.003601 25.824877 6.745000 -54.875000 # 5 -1897 643 5 0.000000 28.284389 8.165000 -58.224998 # 5 -1898 643 5 0.000000 29.514145 7.455000 -58.224998 # 5 +1897 643 6 0.000000 28.284389 8.165000 -58.224998 # 5 +1898 643 6 0.000000 29.514145 7.455000 -58.224998 # 5 1899 641 5 -0.008823 29.514145 7.455000 -54.875000 # 5 1900 641 5 -0.008714 28.284389 6.745000 -54.875000 # 5 -1901 643 5 0.000000 30.743900 8.165000 -58.224998 # 5 -1902 643 5 0.000000 31.973658 7.455000 -58.224998 # 5 +1901 643 6 0.000000 30.743900 8.165000 -58.224998 # 5 +1902 643 6 0.000000 31.973658 7.455000 -58.224998 # 5 1903 641 5 0.004843 31.973658 7.455000 -54.875000 # 5 1904 641 5 -0.000116 30.743900 6.745000 -54.875000 # 5 -1905 643 5 0.000000 1.229756 9.585000 -58.224998 # 5 +1905 643 6 0.000000 1.229756 9.585000 -58.224998 # 5 1906 641 5 -0.001203 1.229756 9.585000 -54.875000 # 5 -1907 643 5 0.000000 2.459512 10.295000 -58.224998 # 5 -1908 643 5 0.000000 3.689268 9.585000 -58.224998 # 5 +1907 643 6 0.000000 2.459512 10.295000 -58.224998 # 5 +1908 643 6 0.000000 3.689268 9.585000 -58.224998 # 5 1909 641 5 -0.004563 3.689268 9.585000 -54.875000 # 5 1910 641 5 -0.000358 2.459512 8.875000 -54.875000 # 5 -1911 643 5 0.000000 4.919024 10.295000 -58.224998 # 5 -1912 643 5 0.000000 6.148780 9.585000 -58.224998 # 5 +1911 643 6 0.000000 4.919024 10.295000 -58.224998 # 5 +1912 643 6 0.000000 6.148780 9.585000 -58.224998 # 5 1913 641 5 0.000004 6.148780 9.585000 -54.875000 # 5 1914 641 5 -0.002674 4.919024 8.875000 -54.875000 # 5 -1915 643 5 0.000000 7.378536 10.295000 -58.224998 # 5 -1916 643 5 0.000000 8.608293 9.585000 -58.224998 # 5 +1915 643 6 0.000000 7.378536 10.295000 -58.224998 # 5 +1916 643 6 0.000000 8.608293 9.585000 -58.224998 # 5 1917 641 5 0.004455 8.608293 9.585000 -54.875000 # 5 1918 641 5 0.002541 7.378536 8.875000 -54.875000 # 5 -1919 643 5 0.000000 9.838048 10.295000 -58.224998 # 5 -1920 643 5 0.000000 11.067804 9.585000 -58.224998 # 5 +1919 643 6 0.000000 9.838048 10.295000 -58.224998 # 5 +1920 643 6 0.000000 11.067804 9.585000 -58.224998 # 5 1921 641 5 0.000248 11.067804 9.585000 -54.875000 # 5 1922 641 5 0.001632 9.838048 8.875000 -54.875000 # 5 -1923 643 5 0.000000 12.297561 10.295000 -58.224998 # 5 -1924 643 5 0.000000 13.527316 9.585000 -58.224998 # 5 +1923 643 6 0.000000 12.297561 10.295000 -58.224998 # 5 +1924 643 6 0.000000 13.527316 9.585000 -58.224998 # 5 1925 641 5 -0.001488 13.527316 9.585000 -54.875000 # 5 1926 641 5 -0.001732 12.297561 8.875000 -54.875000 # 5 -1927 643 5 0.000000 14.757072 10.295000 -58.224998 # 5 -1928 643 5 0.000000 15.986829 9.585000 -58.224998 # 5 +1927 643 6 0.000000 14.757072 10.295000 -58.224998 # 5 +1928 643 6 0.000000 15.986829 9.585000 -58.224998 # 5 1929 641 5 0.002363 15.986829 9.585000 -54.875000 # 5 1930 641 5 0.000638 14.757072 8.875000 -54.875000 # 5 -1931 643 5 0.000000 17.216585 10.295000 -58.224998 # 5 -1932 643 5 0.000000 18.446341 9.585000 -58.224998 # 5 +1931 643 6 0.000000 17.216585 10.295000 -58.224998 # 5 +1932 643 6 0.000000 18.446341 9.585000 -58.224998 # 5 1933 641 5 0.006632 18.446341 9.585000 -54.875000 # 5 1934 641 5 0.008486 17.216585 8.875000 -54.875000 # 5 -1935 643 5 0.000000 19.676096 10.295000 -58.224998 # 5 -1936 643 5 0.000000 20.905853 9.585000 -58.224998 # 5 +1935 643 6 0.000000 19.676096 10.295000 -58.224998 # 5 +1936 643 6 0.000000 20.905853 9.585000 -58.224998 # 5 1937 641 5 -0.001081 20.905853 9.585000 -54.875000 # 5 1938 641 5 0.007670 19.676096 8.875000 -54.875000 # 5 -1939 643 5 0.000000 22.135609 10.295000 -58.224998 # 5 -1940 643 5 0.000000 23.365364 9.585000 -58.224998 # 5 +1939 643 6 0.000000 22.135609 10.295000 -58.224998 # 5 +1940 643 6 0.000000 23.365364 9.585000 -58.224998 # 5 1941 641 5 -0.000533 23.365364 9.585000 -54.875000 # 5 1942 641 5 -0.000633 22.135609 8.875000 -54.875000 # 5 -1943 643 5 0.000000 24.595121 10.295000 -58.224998 # 5 -1944 643 5 0.000000 25.824877 9.585000 -58.224998 # 5 +1943 643 6 0.000000 24.595121 10.295000 -58.224998 # 5 +1944 643 6 0.000000 25.824877 9.585000 -58.224998 # 5 1945 641 5 -0.001969 25.824877 9.585000 -54.875000 # 5 1946 641 5 -0.001500 24.595121 8.875000 -54.875000 # 5 -1947 643 5 0.000000 27.054632 10.295000 -58.224998 # 5 -1948 643 5 0.000000 28.284389 9.585000 -58.224998 # 5 +1947 643 6 0.000000 27.054632 10.295000 -58.224998 # 5 +1948 643 6 0.000000 28.284389 9.585000 -58.224998 # 5 1949 641 5 -0.010794 28.284389 9.585000 -54.875000 # 5 1950 641 5 -0.008912 27.054632 8.875000 -54.875000 # 5 -1951 643 5 0.000000 29.514145 10.295000 -58.224998 # 5 -1952 643 5 0.000000 30.743900 9.585000 -58.224998 # 5 +1951 643 6 0.000000 29.514145 10.295000 -58.224998 # 5 +1952 643 6 0.000000 30.743900 9.585000 -58.224998 # 5 1953 641 5 -0.006916 30.743900 9.585000 -54.875000 # 5 1954 641 5 -0.011078 29.514145 8.875000 -54.875000 # 5 -1955 643 5 0.000000 31.973658 10.295000 -58.224998 # 5 +1955 643 6 0.000000 31.973658 10.295000 -58.224998 # 5 1956 641 5 -0.000838 31.973658 8.875000 -54.875000 # 5 -1957 643 5 0.000000 1.229756 12.425000 -58.224998 # 5 -1958 643 5 0.000000 2.459512 11.715001 -58.224998 # 5 +1957 643 6 0.000000 1.229756 12.425000 -58.224998 # 5 +1958 643 6 0.000000 2.459512 11.715001 -58.224998 # 5 1959 641 5 -0.007341 2.459512 11.715001 -54.875000 # 5 1960 641 5 -0.006195 1.229756 11.005000 -54.875000 # 5 -1961 643 5 0.000000 3.689268 12.425000 -58.224998 # 5 -1962 643 5 0.000000 4.919024 11.715001 -58.224998 # 5 +1961 643 6 0.000000 3.689268 12.425000 -58.224998 # 5 +1962 643 6 0.000000 4.919024 11.715001 -58.224998 # 5 1963 641 5 -0.004578 4.919024 11.715001 -54.875000 # 5 1964 641 5 -0.006829 3.689268 11.005000 -54.875000 # 5 -1965 643 5 0.000000 6.148780 12.425000 -58.224998 # 5 -1966 643 5 0.000000 7.378536 11.715001 -58.224998 # 5 +1965 643 6 0.000000 6.148780 12.425000 -58.224998 # 5 +1966 643 6 0.000000 7.378536 11.715001 -58.224998 # 5 1967 641 5 0.003036 7.378536 11.715001 -54.875000 # 5 1968 641 5 0.000159 6.148780 11.005000 -54.875000 # 5 -1969 643 5 0.000000 8.608293 12.425000 -58.224998 # 5 -1970 643 5 0.000000 9.838048 11.715001 -58.224998 # 5 +1969 643 6 0.000000 8.608293 12.425000 -58.224998 # 5 +1970 643 6 0.000000 9.838048 11.715001 -58.224998 # 5 1971 641 5 0.000897 9.838048 11.715001 -54.875000 # 5 1972 641 5 0.004621 8.608293 11.005000 -54.875000 # 5 -1973 643 5 0.000000 11.067804 12.425000 -58.224998 # 5 -1974 643 5 0.000000 12.297561 11.715001 -58.224998 # 5 +1973 643 6 0.000000 11.067804 12.425000 -58.224998 # 5 +1974 643 6 0.000000 12.297561 11.715001 -58.224998 # 5 1975 641 5 -0.003884 12.297561 11.715001 -54.875000 # 5 1976 641 5 -0.000606 11.067804 11.005000 -54.875000 # 5 -1977 643 5 0.000000 13.527316 12.425000 -58.224998 # 5 -1978 643 5 0.000000 14.757072 11.715001 -58.224998 # 5 +1977 643 6 0.000000 13.527316 12.425000 -58.224998 # 5 +1978 643 6 0.000000 14.757072 11.715001 -58.224998 # 5 1979 641 5 -0.003377 14.757072 11.715001 -54.875000 # 5 1980 641 5 -0.002753 13.527316 11.005000 -54.875000 # 5 -1981 643 5 0.000000 15.986829 12.425000 -58.224998 # 5 -1982 643 5 0.000000 17.216585 11.715001 -58.224998 # 5 +1981 643 6 0.000000 15.986829 12.425000 -58.224998 # 5 +1982 643 6 0.000000 17.216585 11.715001 -58.224998 # 5 1983 641 5 -0.002284 17.216585 11.715001 -54.875000 # 5 1984 641 5 -0.000813 15.986829 11.005000 -54.875000 # 5 -1985 643 5 0.000000 18.446341 12.425000 -58.224998 # 5 -1986 643 5 0.000000 19.676096 11.715001 -58.224998 # 5 +1985 643 6 0.000000 18.446341 12.425000 -58.224998 # 5 +1986 643 6 0.000000 19.676096 11.715001 -58.224998 # 5 1987 641 5 -0.005689 19.676096 11.715001 -54.875000 # 5 1988 641 5 -0.001327 18.446341 11.005000 -54.875000 # 5 -1989 643 5 0.000000 20.905853 12.425000 -58.224998 # 5 -1990 643 5 0.000000 22.135609 11.715001 -58.224998 # 5 +1989 643 6 0.000000 20.905853 12.425000 -58.224998 # 5 +1990 643 6 0.000000 22.135609 11.715001 -58.224998 # 5 1991 641 5 -0.001225 22.135609 11.715001 -54.875000 # 5 1992 641 5 -0.006269 20.905853 11.005000 -54.875000 # 5 -1993 643 5 0.000000 23.365364 12.425000 -58.224998 # 5 -1994 643 5 0.000000 24.595121 11.715001 -58.224998 # 5 +1993 643 6 0.000000 23.365364 12.425000 -58.224998 # 5 +1994 643 6 0.000000 24.595121 11.715001 -58.224998 # 5 1995 641 5 0.012030 24.595121 11.715001 -54.875000 # 5 1996 641 5 0.003991 23.365364 11.005000 -54.875000 # 5 -1997 643 5 0.000000 25.824877 12.425000 -58.224998 # 5 -1998 643 5 0.000000 27.054632 11.715001 -58.224998 # 5 +1997 643 6 0.000000 25.824877 12.425000 -58.224998 # 5 +1998 643 6 0.000000 27.054632 11.715001 -58.224998 # 5 1999 641 5 0.002808 27.054632 11.715001 -54.875000 # 5 2000 641 5 0.005501 25.824877 11.005000 -54.875000 # 5 -2001 643 5 0.000000 28.284389 12.425000 -58.224998 # 5 -2002 643 5 0.000000 29.514145 11.715001 -58.224998 # 5 +2001 643 6 0.000000 28.284389 12.425000 -58.224998 # 5 +2002 643 6 0.000000 29.514145 11.715001 -58.224998 # 5 2003 641 5 -0.006380 29.514145 11.715001 -54.875000 # 5 2004 641 5 -0.005915 28.284389 11.005000 -54.875000 # 5 -2005 643 5 0.000000 30.743900 12.425000 -58.224998 # 5 -2006 643 5 0.000000 31.973658 11.715001 -58.224998 # 5 +2005 643 6 0.000000 30.743900 12.425000 -58.224998 # 5 +2006 643 6 0.000000 31.973658 11.715001 -58.224998 # 5 2007 641 5 -0.006475 31.973658 11.715001 -54.875000 # 5 2008 641 5 -0.007286 30.743900 11.005000 -54.875000 # 5 -2009 643 5 0.000000 1.229756 13.845000 -58.224998 # 5 +2009 643 6 0.000000 1.229756 13.845000 -58.224998 # 5 2010 641 5 -0.005636 1.229756 13.845000 -54.875000 # 5 -2011 643 5 0.000000 2.459512 14.555000 -58.224998 # 5 -2012 643 5 0.000000 3.689268 13.845000 -58.224998 # 5 +2011 643 6 0.000000 2.459512 14.555000 -58.224998 # 5 +2012 643 6 0.000000 3.689268 13.845000 -58.224998 # 5 2013 641 5 -0.003389 3.689268 13.845000 -54.875000 # 5 2014 641 5 -0.006559 2.459512 13.135000 -54.875000 # 5 -2015 643 5 0.000000 4.919024 14.555000 -58.224998 # 5 -2016 643 5 0.000000 6.148780 13.845000 -58.224998 # 5 +2015 643 6 0.000000 4.919024 14.555000 -58.224998 # 5 +2016 643 6 0.000000 6.148780 13.845000 -58.224998 # 5 2017 641 5 0.002367 6.148780 13.845000 -54.875000 # 5 2018 641 5 -0.002424 4.919024 13.135000 -54.875000 # 5 -2019 643 5 0.000000 7.378536 14.555000 -58.224998 # 5 -2020 643 5 0.000000 8.608293 13.845000 -58.224998 # 5 +2019 643 6 0.000000 7.378536 14.555000 -58.224998 # 5 +2020 643 6 0.000000 8.608293 13.845000 -58.224998 # 5 2021 641 5 0.000402 8.608293 13.845000 -54.875000 # 5 2022 641 5 0.002615 7.378536 13.135000 -54.875000 # 5 -2023 643 5 0.000000 9.838048 14.555000 -58.224998 # 5 -2024 643 5 0.000000 11.067804 13.845000 -58.224998 # 5 +2023 643 6 0.000000 9.838048 14.555000 -58.224998 # 5 +2024 643 6 0.000000 11.067804 13.845000 -58.224998 # 5 2025 641 5 -0.009056 11.067804 13.845000 -54.875000 # 5 2026 641 5 -0.003350 9.838048 13.135000 -54.875000 # 5 -2027 643 5 0.000000 12.297561 14.555000 -58.224998 # 5 -2028 643 5 0.000000 13.527316 13.845000 -58.224998 # 5 +2027 643 6 0.000000 12.297561 14.555000 -58.224998 # 5 +2028 643 6 0.000000 13.527316 13.845000 -58.224998 # 5 2029 641 5 -0.006284 13.527316 13.845000 -54.875000 # 5 2030 641 5 -0.007513 12.297561 13.135000 -54.875000 # 5 -2031 643 5 0.000000 14.757072 14.555000 -58.224998 # 5 -2032 643 5 0.000000 15.986829 13.845000 -58.224998 # 5 +2031 643 6 0.000000 14.757072 14.555000 -58.224998 # 5 +2032 643 6 0.000000 15.986829 13.845000 -58.224998 # 5 2033 641 5 -0.003130 15.986829 13.845000 -54.875000 # 5 2034 641 5 -0.004061 14.757072 13.135000 -54.875000 # 5 -2035 643 5 0.000000 17.216585 14.555000 -58.224998 # 5 -2036 643 5 0.000000 18.446341 13.845000 -58.224998 # 5 +2035 643 6 0.000000 17.216585 14.555000 -58.224998 # 5 +2036 643 6 0.000000 18.446341 13.845000 -58.224998 # 5 2037 641 5 -0.005508 18.446341 13.845000 -54.875000 # 5 2038 641 5 -0.004163 17.216585 13.135000 -54.875000 # 5 -2039 643 5 0.000000 19.676096 14.555000 -58.224998 # 5 -2040 643 5 0.000000 20.905853 13.845000 -58.224998 # 5 +2039 643 6 0.000000 19.676096 14.555000 -58.224998 # 5 +2040 643 6 0.000000 20.905853 13.845000 -58.224998 # 5 2041 641 5 -0.004896 20.905853 13.845000 -54.875000 # 5 2042 641 5 -0.006983 19.676096 13.135000 -54.875000 # 5 -2043 643 5 0.000000 22.135609 14.555000 -58.224998 # 5 -2044 643 5 0.000000 23.365364 13.845000 -58.224998 # 5 +2043 643 6 0.000000 22.135609 14.555000 -58.224998 # 5 +2044 643 6 0.000000 23.365364 13.845000 -58.224998 # 5 2045 641 5 0.008255 23.365364 13.845000 -54.875000 # 5 2046 641 5 0.001284 22.135609 13.135000 -54.875000 # 5 -2047 643 5 0.000000 24.595121 14.555000 -58.224998 # 5 -2048 643 5 0.000000 25.824877 13.845000 -58.224998 # 5 +2047 643 6 0.000000 24.595121 14.555000 -58.224998 # 5 +2048 643 6 0.000000 25.824877 13.845000 -58.224998 # 5 2049 641 5 0.009224 25.824877 13.845000 -54.875000 # 5 2050 641 5 0.014893 24.595121 13.135000 -54.875000 # 5 -2051 643 5 0.000000 27.054632 14.555000 -58.224998 # 5 -2052 643 5 0.000000 28.284389 13.845000 -58.224998 # 5 +2051 643 6 0.000000 27.054632 14.555000 -58.224998 # 5 +2052 643 6 0.000000 28.284389 13.845000 -58.224998 # 5 2053 641 5 -0.001344 28.284389 13.845000 -54.875000 # 5 2054 641 5 0.004420 27.054632 13.135000 -54.875000 # 5 -2055 643 5 0.000000 29.514145 14.555000 -58.224998 # 5 -2056 643 5 0.000000 30.743900 13.845000 -58.224998 # 5 +2055 643 6 0.000000 29.514145 14.555000 -58.224998 # 5 +2056 643 6 0.000000 30.743900 13.845000 -58.224998 # 5 2057 641 5 -0.003552 30.743900 13.845000 -54.875000 # 5 2058 641 5 -0.003214 29.514145 13.135000 -54.875000 # 5 -2059 643 5 0.000000 31.973658 14.555000 -58.224998 # 5 +2059 643 6 0.000000 31.973658 14.555000 -58.224998 # 5 2060 641 5 -0.006139 31.973658 13.135000 -54.875000 # 5 -2061 643 5 0.000000 1.229756 16.684999 -58.224998 # 5 -2062 643 5 0.000000 2.459512 15.975000 -58.224998 # 5 +2061 643 6 0.000000 1.229756 16.684999 -58.224998 # 5 +2062 643 6 0.000000 2.459512 15.975000 -58.224998 # 5 2063 641 5 0.001574 2.459512 15.975000 -54.875000 # 5 2064 641 5 -0.000780 1.229756 15.265000 -54.875000 # 5 -2065 643 5 0.000000 3.689268 16.684999 -58.224998 # 5 -2066 643 5 0.000000 4.919024 15.975000 -58.224998 # 5 +2065 643 6 0.000000 3.689268 16.684999 -58.224998 # 5 +2066 643 6 0.000000 4.919024 15.975000 -58.224998 # 5 2067 641 5 0.007831 4.919024 15.975000 -54.875000 # 5 2068 641 5 0.001119 3.689268 15.265000 -54.875000 # 5 -2069 643 5 0.000000 6.148780 16.684999 -58.224998 # 5 -2070 643 5 0.000000 7.378536 15.975000 -58.224998 # 5 +2069 643 6 0.000000 6.148780 16.684999 -58.224998 # 5 +2070 643 6 0.000000 7.378536 15.975000 -58.224998 # 5 2071 641 5 0.011161 7.378536 15.975000 -54.875000 # 5 2072 641 5 0.008319 6.148780 15.265000 -54.875000 # 5 -2073 643 5 0.000000 8.608293 16.684999 -58.224998 # 5 -2074 643 5 0.000000 9.838048 15.975000 -58.224998 # 5 +2073 643 6 0.000000 8.608293 16.684999 -58.224998 # 5 +2074 643 6 0.000000 9.838048 15.975000 -58.224998 # 5 2075 641 5 -0.003084 9.838048 15.975000 -54.875000 # 5 2076 641 5 0.002350 8.608293 15.265000 -54.875000 # 5 -2077 643 5 0.000000 11.067804 16.684999 -58.224998 # 5 -2078 643 5 0.000000 12.297561 15.975000 -58.224998 # 5 +2077 643 6 0.000000 11.067804 16.684999 -58.224998 # 5 +2078 643 6 0.000000 12.297561 15.975000 -58.224998 # 5 2079 641 5 -0.005651 12.297561 15.975000 -54.875000 # 5 2080 641 5 -0.009897 11.067804 15.265000 -54.875000 # 5 -2081 643 5 0.000000 13.527316 16.684999 -58.224998 # 5 -2082 643 5 0.000000 14.757072 15.975000 -58.224998 # 5 +2081 643 6 0.000000 13.527316 16.684999 -58.224998 # 5 +2082 643 6 0.000000 14.757072 15.975000 -58.224998 # 5 2083 641 5 0.003052 14.757072 15.975000 -54.875000 # 5 2084 641 5 -0.003381 13.527316 15.265000 -54.875000 # 5 -2085 643 5 0.000000 15.986829 16.684999 -58.224998 # 5 -2086 643 5 0.000000 17.216585 15.975000 -58.224998 # 5 +2085 643 6 0.000000 15.986829 16.684999 -58.224998 # 5 +2086 643 6 0.000000 17.216585 15.975000 -58.224998 # 5 2087 641 5 0.000425 17.216585 15.975000 -54.875000 # 5 2088 641 5 0.000337 15.986829 15.265000 -54.875000 # 5 -2089 643 5 0.000000 18.446341 16.684999 -58.224998 # 5 -2090 643 5 0.000000 19.676096 15.975000 -58.224998 # 5 +2089 643 6 0.000000 18.446341 16.684999 -58.224998 # 5 +2090 643 6 0.000000 19.676096 15.975000 -58.224998 # 5 2091 641 5 -0.005275 19.676096 15.975000 -54.875000 # 5 2092 641 5 -0.004269 18.446341 15.265000 -54.875000 # 5 -2093 643 5 0.000000 20.905853 16.684999 -58.224998 # 5 -2094 643 5 0.000000 22.135609 15.975000 -58.224998 # 5 +2093 643 6 0.000000 20.905853 16.684999 -58.224998 # 5 +2094 643 6 0.000000 22.135609 15.975000 -58.224998 # 5 2095 641 5 -0.002293 22.135609 15.975000 -54.875000 # 5 2096 641 5 -0.004618 20.905853 15.265000 -54.875000 # 5 -2097 643 5 0.000000 23.365364 16.684999 -58.224998 # 5 -2098 643 5 0.000000 24.595121 15.975000 -58.224998 # 5 +2097 643 6 0.000000 23.365364 16.684999 -58.224998 # 5 +2098 643 6 0.000000 24.595121 15.975000 -58.224998 # 5 2099 641 5 -0.000050 24.595121 15.975000 -54.875000 # 5 2100 641 5 0.002728 23.365364 15.265000 -54.875000 # 5 -2101 643 5 0.000000 25.824877 16.684999 -58.224998 # 5 -2102 643 5 0.000000 27.054632 15.975000 -58.224998 # 5 +2101 643 6 0.000000 25.824877 16.684999 -58.224998 # 5 +2102 643 6 0.000000 27.054632 15.975000 -58.224998 # 5 2103 641 5 -0.006245 27.054632 15.975000 -54.875000 # 5 2104 641 5 0.000248 25.824877 15.265000 -54.875000 # 5 -2105 643 5 0.000000 28.284389 16.684999 -58.224998 # 5 -2106 643 5 0.000000 29.514145 15.975000 -58.224998 # 5 +2105 643 6 0.000000 28.284389 16.684999 -58.224998 # 5 +2106 643 6 0.000000 29.514145 15.975000 -58.224998 # 5 2107 641 5 0.000383 29.514145 15.975000 -54.875000 # 5 2108 641 5 -0.003405 28.284389 15.265000 -54.875000 # 5 -2109 643 5 0.000000 30.743900 16.684999 -58.224998 # 5 -2110 643 5 0.000000 31.973658 15.975000 -58.224998 # 5 +2109 643 6 0.000000 30.743900 16.684999 -58.224998 # 5 +2110 643 6 0.000000 31.973658 15.975000 -58.224998 # 5 2111 641 5 0.002854 31.973658 15.975000 -54.875000 # 5 2112 641 5 0.000745 30.743900 15.265000 -54.875000 # 5 -2113 643 5 0.000000 1.229756 18.105000 -58.224998 # 5 +2113 643 6 0.000000 1.229756 18.105000 -58.224998 # 5 2114 641 5 0.006231 1.229756 18.105000 -54.875000 # 5 -2115 643 5 0.000000 2.459512 18.815001 -58.224998 # 5 -2116 643 5 0.000000 3.689268 18.105000 -58.224998 # 5 +2115 643 6 0.000000 2.459512 18.815001 -58.224998 # 5 +2116 643 6 0.000000 3.689268 18.105000 -58.224998 # 5 2117 641 5 0.005054 3.689268 18.105000 -54.875000 # 5 2118 641 5 0.003812 2.459512 17.395000 -54.875000 # 5 -2119 643 5 0.000000 4.919024 18.815001 -58.224998 # 5 -2120 643 5 0.000000 6.148780 18.105000 -58.224998 # 5 +2119 643 6 0.000000 4.919024 18.815001 -58.224998 # 5 +2120 643 6 0.000000 6.148780 18.105000 -58.224998 # 5 2121 641 5 0.013249 6.148780 18.105000 -54.875000 # 5 2122 641 5 0.010130 4.919024 17.395000 -54.875000 # 5 -2123 643 5 0.000000 7.378536 18.815001 -58.224998 # 5 -2124 643 5 0.000000 8.608293 18.105000 -58.224998 # 5 +2123 643 6 0.000000 7.378536 18.815001 -58.224998 # 5 +2124 643 6 0.000000 8.608293 18.105000 -58.224998 # 5 2125 641 5 0.006670 8.608293 18.105000 -54.875000 # 5 2126 641 5 0.014021 7.378536 17.395000 -54.875000 # 5 -2127 643 5 0.000000 9.838048 18.815001 -58.224998 # 5 -2128 643 5 0.000000 11.067804 18.105000 -58.224998 # 5 +2127 643 6 0.000000 9.838048 18.815001 -58.224998 # 5 +2128 643 6 0.000000 11.067804 18.105000 -58.224998 # 5 2129 641 5 -0.002118 11.067804 18.105000 -54.875000 # 5 2130 641 5 -0.000411 9.838048 17.395000 -54.875000 # 5 -2131 643 5 0.000000 12.297561 18.815001 -58.224998 # 5 -2132 643 5 0.000000 13.527316 18.105000 -58.224998 # 5 +2131 643 6 0.000000 12.297561 18.815001 -58.224998 # 5 +2132 643 6 0.000000 13.527316 18.105000 -58.224998 # 5 2133 641 5 0.007999 13.527316 18.105000 -54.875000 # 5 2134 641 5 -0.000407 12.297561 17.395000 -54.875000 # 5 -2135 643 5 0.000000 14.757072 18.815001 -58.224998 # 5 -2136 643 5 0.000000 15.986829 18.105000 -58.224998 # 5 +2135 643 6 0.000000 14.757072 18.815001 -58.224998 # 5 +2136 643 6 0.000000 15.986829 18.105000 -58.224998 # 5 2137 641 5 0.009877 15.986829 18.105000 -54.875000 # 5 2138 641 5 0.009779 14.757072 17.395000 -54.875000 # 5 -2139 643 5 0.000000 17.216585 18.815001 -58.224998 # 5 -2140 643 5 0.000000 18.446341 18.105000 -58.224998 # 5 +2139 643 6 0.000000 17.216585 18.815001 -58.224998 # 5 +2140 643 6 0.000000 18.446341 18.105000 -58.224998 # 5 2141 641 5 0.000396 18.446341 18.105000 -54.875000 # 5 2142 641 5 0.003629 17.216585 17.395000 -54.875000 # 5 -2143 643 5 0.000000 19.676096 18.815001 -58.224998 # 5 -2144 643 5 0.000000 20.905853 18.105000 -58.224998 # 5 +2143 643 6 0.000000 19.676096 18.815001 -58.224998 # 5 +2144 643 6 0.000000 20.905853 18.105000 -58.224998 # 5 2145 641 5 -0.002504 20.905853 18.105000 -54.875000 # 5 2146 641 5 -0.003126 19.676096 17.395000 -54.875000 # 5 -2147 643 5 0.000000 22.135609 18.815001 -58.224998 # 5 -2148 643 5 0.000000 23.365364 18.105000 -58.224998 # 5 +2147 643 6 0.000000 22.135609 18.815001 -58.224998 # 5 +2148 643 6 0.000000 23.365364 18.105000 -58.224998 # 5 2149 641 5 -0.002268 23.365364 18.105000 -54.875000 # 5 2150 641 5 -0.002543 22.135609 17.395000 -54.875000 # 5 -2151 643 5 0.000000 24.595121 18.815001 -58.224998 # 5 -2152 643 5 0.000000 25.824877 18.105000 -58.224998 # 5 +2151 643 6 0.000000 24.595121 18.815001 -58.224998 # 5 +2152 643 6 0.000000 25.824877 18.105000 -58.224998 # 5 2153 641 5 -0.007529 25.824877 18.105000 -54.875000 # 5 2154 641 5 -0.004597 24.595121 17.395000 -54.875000 # 5 -2155 643 5 0.000000 27.054632 18.815001 -58.224998 # 5 -2156 643 5 0.000000 28.284389 18.105000 -58.224998 # 5 +2155 643 6 0.000000 27.054632 18.815001 -58.224998 # 5 +2156 643 6 0.000000 28.284389 18.105000 -58.224998 # 5 2157 641 5 -0.002070 28.284389 18.105000 -54.875000 # 5 2158 641 5 -0.008049 27.054632 17.395000 -54.875000 # 5 -2159 643 5 0.000000 29.514145 18.815001 -58.224998 # 5 -2160 643 5 0.000000 30.743900 18.105000 -58.224998 # 5 +2159 643 6 0.000000 29.514145 18.815001 -58.224998 # 5 +2160 643 6 0.000000 30.743900 18.105000 -58.224998 # 5 2161 641 5 0.009740 30.743900 18.105000 -54.875000 # 5 2162 641 5 0.003938 29.514145 17.395000 -54.875000 # 5 -2163 643 5 0.000000 31.973658 18.815001 -58.224998 # 5 +2163 643 6 0.000000 31.973658 18.815001 -58.224998 # 5 2164 641 5 0.008697 31.973658 17.395000 -54.875000 # 5 -2165 643 5 0.000000 1.229756 20.945002 -58.224998 # 5 -2166 643 5 0.000000 2.459512 20.235001 -58.224998 # 5 +2165 643 6 0.000000 1.229756 20.945002 -58.224998 # 5 +2166 643 6 0.000000 2.459512 20.235001 -58.224998 # 5 2167 641 5 0.000833 2.459512 20.235001 -54.875000 # 5 2168 641 5 0.005078 1.229756 19.525000 -54.875000 # 5 -2169 643 5 0.000000 3.689268 20.945002 -58.224998 # 5 -2170 643 5 0.000000 4.919024 20.235001 -58.224998 # 5 +2169 643 6 0.000000 3.689268 20.945002 -58.224998 # 5 +2170 643 6 0.000000 4.919024 20.235001 -58.224998 # 5 2171 641 5 0.002076 4.919024 20.235001 -54.875000 # 5 2172 641 5 0.002543 3.689268 19.525000 -54.875000 # 5 -2173 643 5 0.000000 6.148780 20.945002 -58.224998 # 5 -2174 643 5 0.000000 7.378536 20.235001 -58.224998 # 5 +2173 643 6 0.000000 6.148780 20.945002 -58.224998 # 5 +2174 643 6 0.000000 7.378536 20.235001 -58.224998 # 5 2175 641 5 0.003162 7.378536 20.235001 -54.875000 # 5 2176 641 5 0.006698 6.148780 19.525000 -54.875000 # 5 -2177 643 5 0.000000 8.608293 20.945002 -58.224998 # 5 -2178 643 5 0.000000 9.838048 20.235001 -58.224998 # 5 +2177 643 6 0.000000 8.608293 20.945002 -58.224998 # 5 +2178 643 6 0.000000 9.838048 20.235001 -58.224998 # 5 2179 641 5 -0.002118 9.838048 20.235001 -54.875000 # 5 2180 641 5 0.002728 8.608293 19.525000 -54.875000 # 5 -2181 643 5 0.000000 11.067804 20.945002 -58.224998 # 5 -2182 643 5 0.000000 12.297561 20.235001 -58.224998 # 5 +2181 643 6 0.000000 11.067804 20.945002 -58.224998 # 5 +2182 643 6 0.000000 12.297561 20.235001 -58.224998 # 5 2183 641 5 0.000686 12.297561 20.235001 -54.875000 # 5 2184 641 5 -0.000752 11.067804 19.525000 -54.875000 # 5 -2185 643 5 0.000000 13.527316 20.945002 -58.224998 # 5 -2186 643 5 0.000000 14.757072 20.235001 -58.224998 # 5 +2185 643 6 0.000000 13.527316 20.945002 -58.224998 # 5 +2186 643 6 0.000000 14.757072 20.235001 -58.224998 # 5 2187 641 5 0.005540 14.757072 20.235001 -54.875000 # 5 2188 641 5 0.006939 13.527316 19.525000 -54.875000 # 5 -2189 643 5 0.000000 15.986829 20.945002 -58.224998 # 5 -2190 643 5 0.000000 17.216585 20.235001 -58.224998 # 5 +2189 643 6 0.000000 15.986829 20.945002 -58.224998 # 5 +2190 643 6 0.000000 17.216585 20.235001 -58.224998 # 5 2191 641 5 0.000313 17.216585 20.235001 -54.875000 # 5 2192 641 5 0.006963 15.986829 19.525000 -54.875000 # 5 -2193 643 5 0.000000 18.446341 20.945002 -58.224998 # 5 -2194 643 5 0.000000 19.676096 20.235001 -58.224998 # 5 +2193 643 6 0.000000 18.446341 20.945002 -58.224998 # 5 +2194 643 6 0.000000 19.676096 20.235001 -58.224998 # 5 2195 641 5 -0.001275 19.676096 20.235001 -54.875000 # 5 2196 641 5 0.000026 18.446341 19.525000 -54.875000 # 5 -2197 643 5 0.000000 20.905853 20.945002 -58.224998 # 5 -2198 643 5 0.000000 22.135609 20.235001 -58.224998 # 5 +2197 643 6 0.000000 20.905853 20.945002 -58.224998 # 5 +2198 643 6 0.000000 22.135609 20.235001 -58.224998 # 5 2199 641 5 0.002140 22.135609 20.235001 -54.875000 # 5 2200 641 5 -0.000590 20.905853 19.525000 -54.875000 # 5 -2201 643 5 0.000000 23.365364 20.945002 -58.224998 # 5 -2202 643 5 0.000000 24.595121 20.235001 -58.224998 # 5 +2201 643 6 0.000000 23.365364 20.945002 -58.224998 # 5 +2202 643 6 0.000000 24.595121 20.235001 -58.224998 # 5 2203 641 5 0.001859 24.595121 20.235001 -54.875000 # 5 2204 641 5 0.000575 23.365364 19.525000 -54.875000 # 5 -2205 643 5 0.000000 25.824877 20.945002 -58.224998 # 5 -2206 643 5 0.000000 27.054632 20.235001 -58.224998 # 5 +2205 643 6 0.000000 25.824877 20.945002 -58.224998 # 5 +2206 643 6 0.000000 27.054632 20.235001 -58.224998 # 5 2207 641 5 -0.002327 27.054632 20.235001 -54.875000 # 5 2208 641 5 -0.003830 25.824877 19.525000 -54.875000 # 5 -2209 643 5 0.000000 28.284389 20.945002 -58.224998 # 5 -2210 643 5 0.000000 29.514145 20.235001 -58.224998 # 5 +2209 643 6 0.000000 28.284389 20.945002 -58.224998 # 5 +2210 643 6 0.000000 29.514145 20.235001 -58.224998 # 5 2211 641 5 0.003241 29.514145 20.235001 -54.875000 # 5 2212 641 5 -0.000728 28.284389 19.525000 -54.875000 # 5 -2213 643 5 0.000000 30.743900 20.945002 -58.224998 # 5 -2214 643 5 0.000000 31.973658 20.235001 -58.224998 # 5 +2213 643 6 0.000000 30.743900 20.945002 -58.224998 # 5 +2214 643 6 0.000000 31.973658 20.235001 -58.224998 # 5 2215 641 5 0.006229 31.973658 20.235001 -54.875000 # 5 2216 641 5 0.008059 30.743900 19.525000 -54.875000 # 5 -2217 643 5 0.000000 1.229756 22.365000 -58.224998 # 5 +2217 643 6 0.000000 1.229756 22.365000 -58.224998 # 5 2218 641 5 0.000847 1.229756 22.365000 -54.875000 # 5 -2219 643 5 0.000000 2.459512 23.075001 -58.224998 # 5 -2220 643 5 0.000000 3.689268 22.365000 -58.224998 # 5 +2219 643 6 0.000000 2.459512 23.075001 -58.224998 # 5 +2220 643 6 0.000000 3.689268 22.365000 -58.224998 # 5 2221 641 5 -0.001325 3.689268 22.365000 -54.875000 # 5 2222 641 5 -0.000438 2.459512 21.655001 -54.875000 # 5 -2223 643 5 0.000000 4.919024 23.075001 -58.224998 # 5 -2224 643 5 0.000000 6.148780 22.365000 -58.224998 # 5 +2223 643 6 0.000000 4.919024 23.075001 -58.224998 # 5 +2224 643 6 0.000000 6.148780 22.365000 -58.224998 # 5 2225 641 5 0.000098 6.148780 22.365000 -54.875000 # 5 2226 641 5 -0.000806 4.919024 21.655001 -54.875000 # 5 -2227 643 5 0.000000 7.378536 23.075001 -58.224998 # 5 -2228 643 5 0.000000 8.608293 22.365000 -58.224998 # 5 +2227 643 6 0.000000 7.378536 23.075001 -58.224998 # 5 +2228 643 6 0.000000 8.608293 22.365000 -58.224998 # 5 2229 641 5 -0.000639 8.608293 22.365000 -54.875000 # 5 2230 641 5 -0.000020 7.378536 21.655001 -54.875000 # 5 -2231 643 5 0.000000 9.838048 23.075001 -58.224998 # 5 -2232 643 5 0.000000 11.067804 22.365000 -58.224998 # 5 +2231 643 6 0.000000 9.838048 23.075001 -58.224998 # 5 +2232 643 6 0.000000 11.067804 22.365000 -58.224998 # 5 2233 641 5 -0.002278 11.067804 22.365000 -54.875000 # 5 2234 641 5 -0.002485 9.838048 21.655001 -54.875000 # 5 -2235 643 5 0.000000 12.297561 23.075001 -58.224998 # 5 -2236 643 5 0.000000 13.527316 22.365000 -58.224998 # 5 +2235 643 6 0.000000 12.297561 23.075001 -58.224998 # 5 +2236 643 6 0.000000 13.527316 22.365000 -58.224998 # 5 2237 641 5 -0.002978 13.527316 22.365000 -54.875000 # 5 2238 641 5 -0.001476 12.297561 21.655001 -54.875000 # 5 -2239 643 5 0.000000 14.757072 23.075001 -58.224998 # 5 -2240 643 5 0.000000 15.986829 22.365000 -58.224998 # 5 +2239 643 6 0.000000 14.757072 23.075001 -58.224998 # 5 +2240 643 6 0.000000 15.986829 22.365000 -58.224998 # 5 2241 641 5 -0.008032 15.986829 22.365000 -54.875000 # 5 2242 641 5 -0.002538 14.757072 21.655001 -54.875000 # 5 -2243 643 5 0.000000 17.216585 23.075001 -58.224998 # 5 -2244 643 5 0.000000 18.446341 22.365000 -58.224998 # 5 +2243 643 6 0.000000 17.216585 23.075001 -58.224998 # 5 +2244 643 6 0.000000 18.446341 22.365000 -58.224998 # 5 2245 641 5 -0.006260 18.446341 22.365000 -54.875000 # 5 2246 641 5 -0.006008 17.216585 21.655001 -54.875000 # 5 -2247 643 5 0.000000 19.676096 23.075001 -58.224998 # 5 -2248 643 5 0.000000 20.905853 22.365000 -58.224998 # 5 +2247 643 6 0.000000 19.676096 23.075001 -58.224998 # 5 +2248 643 6 0.000000 20.905853 22.365000 -58.224998 # 5 2249 641 5 0.000811 20.905853 22.365000 -54.875000 # 5 2250 641 5 -0.002102 19.676096 21.655001 -54.875000 # 5 -2251 643 5 0.000000 22.135609 23.075001 -58.224998 # 5 -2252 643 5 0.000000 23.365364 22.365000 -58.224998 # 5 +2251 643 6 0.000000 22.135609 23.075001 -58.224998 # 5 +2252 643 6 0.000000 23.365364 22.365000 -58.224998 # 5 2253 641 5 0.010056 23.365364 22.365000 -54.875000 # 5 2254 641 5 0.004824 22.135609 21.655001 -54.875000 # 5 -2255 643 5 0.000000 24.595121 23.075001 -58.224998 # 5 -2256 643 5 0.000000 25.824877 22.365000 -58.224998 # 5 +2255 643 6 0.000000 24.595121 23.075001 -58.224998 # 5 +2256 643 6 0.000000 25.824877 22.365000 -58.224998 # 5 2257 641 5 0.006494 25.824877 22.365000 -54.875000 # 5 2258 641 5 0.008689 24.595121 21.655001 -54.875000 # 5 -2259 643 5 0.000000 27.054632 23.075001 -58.224998 # 5 -2260 643 5 0.000000 28.284389 22.365000 -58.224998 # 5 +2259 643 6 0.000000 27.054632 23.075001 -58.224998 # 5 +2260 643 6 0.000000 28.284389 22.365000 -58.224998 # 5 2261 641 5 -0.001213 28.284389 22.365000 -54.875000 # 5 2262 641 5 0.000874 27.054632 21.655001 -54.875000 # 5 -2263 643 5 0.000000 29.514145 23.075001 -58.224998 # 5 -2264 643 5 0.000000 30.743900 22.365000 -58.224998 # 5 +2263 643 6 0.000000 29.514145 23.075001 -58.224998 # 5 +2264 643 6 0.000000 30.743900 22.365000 -58.224998 # 5 2265 641 5 0.000251 30.743900 22.365000 -54.875000 # 5 2266 641 5 -0.000260 29.514145 21.655001 -54.875000 # 5 -2267 643 5 0.000000 31.973658 23.075001 -58.224998 # 5 +2267 643 6 0.000000 31.973658 23.075001 -58.224998 # 5 2268 641 5 0.002191 31.973658 21.655001 -54.875000 # 5 -2269 643 5 0.000000 1.229756 25.205000 -58.224998 # 5 -2270 643 5 0.000000 2.459512 24.495001 -58.224998 # 5 +2269 643 6 0.000000 1.229756 25.205000 -58.224998 # 5 +2270 643 6 0.000000 2.459512 24.495001 -58.224998 # 5 2271 641 5 0.002056 2.459512 24.495001 -54.875000 # 5 2272 641 5 0.002481 1.229756 23.785000 -54.875000 # 5 -2273 643 5 0.000000 3.689268 25.205000 -58.224998 # 5 -2274 643 5 0.000000 4.919024 24.495001 -58.224998 # 5 +2273 643 6 0.000000 3.689268 25.205000 -58.224998 # 5 +2274 643 6 0.000000 4.919024 24.495001 -58.224998 # 5 2275 641 5 0.000969 4.919024 24.495001 -54.875000 # 5 2276 641 5 -0.000433 3.689268 23.785000 -54.875000 # 5 -2277 643 5 0.000000 6.148780 25.205000 -58.224998 # 5 -2278 643 5 0.000000 7.378536 24.495001 -58.224998 # 5 +2277 643 6 0.000000 6.148780 25.205000 -58.224998 # 5 +2278 643 6 0.000000 7.378536 24.495001 -58.224998 # 5 2279 641 5 0.006329 7.378536 24.495001 -54.875000 # 5 2280 641 5 0.001582 6.148780 23.785000 -54.875000 # 5 -2281 643 5 0.000000 8.608293 25.205000 -58.224998 # 5 -2282 643 5 0.000000 9.838048 24.495001 -58.224998 # 5 +2281 643 6 0.000000 8.608293 25.205000 -58.224998 # 5 +2282 643 6 0.000000 9.838048 24.495001 -58.224998 # 5 2283 641 5 0.004981 9.838048 24.495001 -54.875000 # 5 2284 641 5 0.004188 8.608293 23.785000 -54.875000 # 5 -2285 643 5 0.000000 11.067804 25.205000 -58.224998 # 5 -2286 643 5 0.000000 12.297561 24.495001 -58.224998 # 5 +2285 643 6 0.000000 11.067804 25.205000 -58.224998 # 5 +2286 643 6 0.000000 12.297561 24.495001 -58.224998 # 5 2287 641 5 -0.001260 12.297561 24.495001 -54.875000 # 5 2288 641 5 -0.000028 11.067804 23.785000 -54.875000 # 5 -2289 643 5 0.000000 13.527316 25.205000 -58.224998 # 5 -2290 643 5 0.000000 14.757072 24.495001 -58.224998 # 5 +2289 643 6 0.000000 13.527316 25.205000 -58.224998 # 5 +2290 643 6 0.000000 14.757072 24.495001 -58.224998 # 5 2291 641 5 -0.005709 14.757072 24.495001 -54.875000 # 5 2292 641 5 -0.004497 13.527316 23.785000 -54.875000 # 5 -2293 643 5 0.000000 15.986829 25.205000 -58.224998 # 5 -2294 643 5 0.000000 17.216585 24.495001 -58.224998 # 5 +2293 643 6 0.000000 15.986829 25.205000 -58.224998 # 5 +2294 643 6 0.000000 17.216585 24.495001 -58.224998 # 5 2295 641 5 -0.006480 17.216585 24.495001 -54.875000 # 5 2296 641 5 -0.009101 15.986829 23.785000 -54.875000 # 5 -2297 643 5 0.000000 18.446341 25.205000 -58.224998 # 5 -2298 643 5 0.000000 19.676096 24.495001 -58.224998 # 5 +2297 643 6 0.000000 18.446341 25.205000 -58.224998 # 5 +2298 643 6 0.000000 19.676096 24.495001 -58.224998 # 5 2299 641 5 -0.004734 19.676096 24.495001 -54.875000 # 5 2300 641 5 -0.005912 18.446341 23.785000 -54.875000 # 5 -2301 643 5 0.000000 20.905853 25.205000 -58.224998 # 5 -2302 643 5 0.000000 22.135609 24.495001 -58.224998 # 5 +2301 643 6 0.000000 20.905853 25.205000 -58.224998 # 5 +2302 643 6 0.000000 22.135609 24.495001 -58.224998 # 5 2303 641 5 -0.001646 22.135609 24.495001 -54.875000 # 5 2304 641 5 -0.002450 20.905853 23.785000 -54.875000 # 5 -2305 643 5 0.000000 23.365364 25.205000 -58.224998 # 5 -2306 643 5 0.000000 24.595121 24.495001 -58.224998 # 5 +2305 643 6 0.000000 23.365364 25.205000 -58.224998 # 5 +2306 643 6 0.000000 24.595121 24.495001 -58.224998 # 5 2307 641 5 0.005414 24.595121 24.495001 -54.875000 # 5 2308 641 5 0.007322 23.365364 23.785000 -54.875000 # 5 -2309 643 5 0.000000 25.824877 25.205000 -58.224998 # 5 -2310 643 5 0.000000 27.054632 24.495001 -58.224998 # 5 +2309 643 6 0.000000 25.824877 25.205000 -58.224998 # 5 +2310 643 6 0.000000 27.054632 24.495001 -58.224998 # 5 2311 641 5 -0.000631 27.054632 24.495001 -54.875000 # 5 2312 641 5 0.005698 25.824877 23.785000 -54.875000 # 5 -2313 643 5 0.000000 28.284389 25.205000 -58.224998 # 5 -2314 643 5 0.000000 29.514145 24.495001 -58.224998 # 5 +2313 643 6 0.000000 28.284389 25.205000 -58.224998 # 5 +2314 643 6 0.000000 29.514145 24.495001 -58.224998 # 5 2315 641 5 -0.002033 29.514145 24.495001 -54.875000 # 5 2316 641 5 -0.002141 28.284389 23.785000 -54.875000 # 5 -2317 643 5 0.000000 30.743900 25.205000 -58.224998 # 5 -2318 643 5 0.000000 31.973658 24.495001 -58.224998 # 5 +2317 643 6 0.000000 30.743900 25.205000 -58.224998 # 5 +2318 643 6 0.000000 31.973658 24.495001 -58.224998 # 5 2319 641 5 0.003109 31.973658 24.495001 -54.875000 # 5 2320 641 5 -0.000306 30.743900 23.785000 -54.875000 # 5 -2321 643 5 0.000000 1.229756 26.625000 -58.224998 # 5 +2321 643 6 0.000000 1.229756 26.625000 -58.224998 # 5 2322 641 5 0.007488 1.229756 26.625000 -54.875000 # 5 -2323 643 5 0.000000 2.459512 27.335001 -58.224998 # 5 -2324 643 5 0.000000 3.689268 26.625000 -58.224998 # 5 +2323 643 6 0.000000 2.459512 27.335001 -58.224998 # 5 +2324 643 6 0.000000 3.689268 26.625000 -58.224998 # 5 2325 641 5 -0.001935 3.689268 26.625000 -54.875000 # 5 2326 641 5 0.003202 2.459512 25.915003 -54.875000 # 5 -2327 643 5 0.000000 4.919024 27.335001 -58.224998 # 5 -2328 643 5 0.000000 6.148780 26.625000 -58.224998 # 5 +2327 643 6 0.000000 4.919024 27.335001 -58.224998 # 5 +2328 643 6 0.000000 6.148780 26.625000 -58.224998 # 5 2329 641 5 0.003198 6.148780 26.625000 -54.875000 # 5 2330 641 5 -0.000216 4.919024 25.915003 -54.875000 # 5 -2331 643 5 0.000000 7.378536 27.335001 -58.224998 # 5 -2332 643 5 0.000000 8.608293 26.625000 -58.224998 # 5 +2331 643 6 0.000000 7.378536 27.335001 -58.224998 # 5 +2332 643 6 0.000000 8.608293 26.625000 -58.224998 # 5 2333 641 5 0.011576 8.608293 26.625000 -54.875000 # 5 2334 641 5 0.009867 7.378536 25.915003 -54.875000 # 5 -2335 643 5 0.000000 9.838048 27.335001 -58.224998 # 5 -2336 643 5 0.000000 11.067804 26.625000 -58.224998 # 5 +2335 643 6 0.000000 9.838048 27.335001 -58.224998 # 5 +2336 643 6 0.000000 11.067804 26.625000 -58.224998 # 5 2337 641 5 0.003285 11.067804 26.625000 -54.875000 # 5 2338 641 5 0.008584 9.838048 25.915003 -54.875000 # 5 -2339 643 5 0.000000 12.297561 27.335001 -58.224998 # 5 -2340 643 5 0.000000 13.527316 26.625000 -58.224998 # 5 +2339 643 6 0.000000 12.297561 27.335001 -58.224998 # 5 +2340 643 6 0.000000 13.527316 26.625000 -58.224998 # 5 2341 641 5 -0.003316 13.527316 26.625000 -54.875000 # 5 2342 641 5 -0.000890 12.297561 25.915003 -54.875000 # 5 -2343 643 5 0.000000 14.757072 27.335001 -58.224998 # 5 -2344 643 5 0.000000 15.986829 26.625000 -58.224998 # 5 +2343 643 6 0.000000 14.757072 27.335001 -58.224998 # 5 +2344 643 6 0.000000 15.986829 26.625000 -58.224998 # 5 2345 641 5 -0.001762 15.986829 26.625000 -54.875000 # 5 2346 641 5 -0.003871 14.757072 25.915003 -54.875000 # 5 -2347 643 5 0.000000 17.216585 27.335001 -58.224998 # 5 -2348 643 5 0.000000 18.446341 26.625000 -58.224998 # 5 +2347 643 6 0.000000 17.216585 27.335001 -58.224998 # 5 +2348 643 6 0.000000 18.446341 26.625000 -58.224998 # 5 2349 641 5 0.000557 18.446341 26.625000 -54.875000 # 5 2350 641 5 -0.001206 17.216585 25.915003 -54.875000 # 5 -2351 643 5 0.000000 19.676096 27.335001 -58.224998 # 5 -2352 643 5 0.000000 20.905853 26.625000 -58.224998 # 5 +2351 643 6 0.000000 19.676096 27.335001 -58.224998 # 5 +2352 643 6 0.000000 20.905853 26.625000 -58.224998 # 5 2353 641 5 -0.007701 20.905853 26.625000 -54.875000 # 5 2354 641 5 -0.003700 19.676096 25.915003 -54.875000 # 5 -2355 643 5 0.000000 22.135609 27.335001 -58.224998 # 5 -2356 643 5 0.000000 23.365364 26.625000 -58.224998 # 5 +2355 643 6 0.000000 22.135609 27.335001 -58.224998 # 5 +2356 643 6 0.000000 23.365364 26.625000 -58.224998 # 5 2357 641 5 -0.007612 23.365364 26.625000 -54.875000 # 5 2358 641 5 -0.008315 22.135609 25.915003 -54.875000 # 5 -2359 643 5 0.000000 24.595121 27.335001 -58.224998 # 5 -2360 643 5 0.000000 25.824877 26.625000 -58.224998 # 5 +2359 643 6 0.000000 24.595121 27.335001 -58.224998 # 5 +2360 643 6 0.000000 25.824877 26.625000 -58.224998 # 5 2361 641 5 -0.003587 25.824877 26.625000 -54.875000 # 5 2362 641 5 -0.002191 24.595121 25.915003 -54.875000 # 5 -2363 643 5 0.000000 27.054632 27.335001 -58.224998 # 5 -2364 643 5 0.000000 28.284389 26.625000 -58.224998 # 5 +2363 643 6 0.000000 27.054632 27.335001 -58.224998 # 5 +2364 643 6 0.000000 28.284389 26.625000 -58.224998 # 5 2365 641 5 -0.003499 28.284389 26.625000 -54.875000 # 5 2366 641 5 -0.003007 27.054632 25.915003 -54.875000 # 5 -2367 643 5 0.000000 29.514145 27.335001 -58.224998 # 5 -2368 643 5 0.000000 30.743900 26.625000 -58.224998 # 5 +2367 643 6 0.000000 29.514145 27.335001 -58.224998 # 5 +2368 643 6 0.000000 30.743900 26.625000 -58.224998 # 5 2369 641 5 0.003394 30.743900 26.625000 -54.875000 # 5 2370 641 5 -0.001233 29.514145 25.915003 -54.875000 # 5 -2371 643 5 0.000000 31.973658 27.335001 -58.224998 # 5 +2371 643 6 0.000000 31.973658 27.335001 -58.224998 # 5 2372 641 5 0.006692 31.973658 25.915003 -54.875000 # 5 -2373 643 5 0.000000 1.229756 29.465000 -58.224998 # 5 -2374 643 5 0.000000 2.459512 28.754999 -58.224998 # 5 +2373 643 6 0.000000 1.229756 29.465000 -58.224998 # 5 +2374 643 6 0.000000 2.459512 28.754999 -58.224998 # 5 2375 641 5 -0.001831 2.459512 28.754999 -54.875000 # 5 2376 641 5 0.005599 1.229756 28.045000 -54.875000 # 5 -2377 643 5 0.000000 3.689268 29.465000 -58.224998 # 5 -2378 643 5 0.000000 4.919024 28.754999 -58.224998 # 5 +2377 643 6 0.000000 3.689268 29.465000 -58.224998 # 5 +2378 643 6 0.000000 4.919024 28.754999 -58.224998 # 5 2379 641 5 -0.008531 4.919024 28.754999 -54.875000 # 5 2380 641 5 -0.006260 3.689268 28.045000 -54.875000 # 5 -2381 643 5 0.000000 6.148780 29.465000 -58.224998 # 5 -2382 643 5 0.000000 7.378536 28.754999 -58.224998 # 5 +2381 643 6 0.000000 6.148780 29.465000 -58.224998 # 5 +2382 643 6 0.000000 7.378536 28.754999 -58.224998 # 5 2383 641 5 0.001326 7.378536 28.754999 -54.875000 # 5 2384 641 5 -0.001277 6.148780 28.045000 -54.875000 # 5 -2385 643 5 0.000000 8.608293 29.465000 -58.224998 # 5 -2386 643 5 0.000000 9.838048 28.754999 -58.224998 # 5 +2385 643 6 0.000000 8.608293 29.465000 -58.224998 # 5 +2386 643 6 0.000000 9.838048 28.754999 -58.224998 # 5 2387 641 5 0.003092 9.838048 28.754999 -54.875000 # 5 2388 641 5 0.006884 8.608293 28.045000 -54.875000 # 5 -2389 643 5 0.000000 11.067804 29.465000 -58.224998 # 5 -2390 643 5 0.000000 12.297561 28.754999 -58.224998 # 5 +2389 643 6 0.000000 11.067804 29.465000 -58.224998 # 5 +2390 643 6 0.000000 12.297561 28.754999 -58.224998 # 5 2391 641 5 -0.002576 12.297561 28.754999 -54.875000 # 5 2392 641 5 0.001806 11.067804 28.045000 -54.875000 # 5 -2393 643 5 0.000000 13.527316 29.465000 -58.224998 # 5 -2394 643 5 0.000000 14.757072 28.754999 -58.224998 # 5 +2393 643 6 0.000000 13.527316 29.465000 -58.224998 # 5 +2394 643 6 0.000000 14.757072 28.754999 -58.224998 # 5 2395 641 5 -0.004872 14.757072 28.754999 -54.875000 # 5 2396 641 5 -0.004103 13.527316 28.045000 -54.875000 # 5 -2397 643 5 0.000000 15.986829 29.465000 -58.224998 # 5 -2398 643 5 0.000000 17.216585 28.754999 -58.224998 # 5 +2397 643 6 0.000000 15.986829 29.465000 -58.224998 # 5 +2398 643 6 0.000000 17.216585 28.754999 -58.224998 # 5 2399 641 5 -0.000422 17.216585 28.754999 -54.875000 # 5 2400 641 5 -0.002198 15.986829 28.045000 -54.875000 # 5 -2401 643 5 0.000000 18.446341 29.465000 -58.224998 # 5 -2402 643 5 0.000000 19.676096 28.754999 -58.224998 # 5 +2401 643 6 0.000000 18.446341 29.465000 -58.224998 # 5 +2402 643 6 0.000000 19.676096 28.754999 -58.224998 # 5 2403 641 5 0.001379 19.676096 28.754999 -54.875000 # 5 2404 641 5 0.001819 18.446341 28.045000 -54.875000 # 5 -2405 643 5 0.000000 20.905853 29.465000 -58.224998 # 5 -2406 643 5 0.000000 22.135609 28.754999 -58.224998 # 5 +2405 643 6 0.000000 20.905853 29.465000 -58.224998 # 5 +2406 643 6 0.000000 22.135609 28.754999 -58.224998 # 5 2407 641 5 -0.005427 22.135609 28.754999 -54.875000 # 5 2408 641 5 -0.004095 20.905853 28.045000 -54.875000 # 5 -2409 643 5 0.000000 23.365364 29.465000 -58.224998 # 5 -2410 643 5 0.000000 24.595121 28.754999 -58.224998 # 5 +2409 643 6 0.000000 23.365364 29.465000 -58.224998 # 5 +2410 643 6 0.000000 24.595121 28.754999 -58.224998 # 5 2411 641 5 -0.004898 24.595121 28.754999 -54.875000 # 5 2412 641 5 -0.008527 23.365364 28.045000 -54.875000 # 5 -2413 643 5 0.000000 25.824877 29.465000 -58.224998 # 5 -2414 643 5 0.000000 27.054632 28.754999 -58.224998 # 5 +2413 643 6 0.000000 25.824877 29.465000 -58.224998 # 5 +2414 643 6 0.000000 27.054632 28.754999 -58.224998 # 5 2415 641 5 -0.003380 27.054632 28.754999 -54.875000 # 5 2416 641 5 -0.004711 25.824877 28.045000 -54.875000 # 5 -2417 643 5 0.000000 28.284389 29.465000 -58.224998 # 5 -2418 643 5 0.000000 29.514145 28.754999 -58.224998 # 5 +2417 643 6 0.000000 28.284389 29.465000 -58.224998 # 5 +2418 643 6 0.000000 29.514145 28.754999 -58.224998 # 5 2419 641 5 -0.000594 29.514145 28.754999 -54.875000 # 5 2420 641 5 -0.002774 28.284389 28.045000 -54.875000 # 5 -2421 643 5 0.000000 30.743900 29.465000 -58.224998 # 5 -2422 643 5 0.000000 31.973658 28.754999 -58.224998 # 5 +2421 643 6 0.000000 30.743900 29.465000 -58.224998 # 5 +2422 643 6 0.000000 31.973658 28.754999 -58.224998 # 5 2423 641 5 0.004889 31.973658 28.754999 -54.875000 # 5 2424 641 5 0.003245 30.743900 28.045000 -54.875000 # 5 -2425 643 5 0.000000 1.229756 30.885000 -58.224998 # 5 +2425 643 6 0.000000 1.229756 30.885000 -58.224998 # 5 2426 641 5 -0.002838 1.229756 30.885000 -54.875000 # 5 -2427 643 5 0.000000 2.459512 31.594999 -58.224998 # 5 -2428 643 5 0.000000 3.689268 30.885000 -58.224998 # 5 +2427 643 6 0.000000 2.459512 31.594999 -58.224998 # 5 +2428 643 6 0.000000 3.689268 30.885000 -58.224998 # 5 2429 641 5 -0.006812 3.689268 30.885000 -54.875000 # 5 2430 641 5 -0.004015 2.459512 30.174999 -54.875000 # 5 -2431 643 5 0.000000 4.919024 31.594999 -58.224998 # 5 -2432 643 5 0.000000 6.148780 30.885000 -58.224998 # 5 +2431 643 6 0.000000 4.919024 31.594999 -58.224998 # 5 +2432 643 6 0.000000 6.148780 30.885000 -58.224998 # 5 2433 641 5 -0.006069 6.148780 30.885000 -54.875000 # 5 2434 641 5 -0.008296 4.919024 30.174999 -54.875000 # 5 -2435 643 5 0.000000 7.378536 31.594999 -58.224998 # 5 -2436 643 5 0.000000 8.608293 30.885000 -58.224998 # 5 +2435 643 6 0.000000 7.378536 31.594999 -58.224998 # 5 +2436 643 6 0.000000 8.608293 30.885000 -58.224998 # 5 2437 641 5 -0.002255 8.608293 30.885000 -54.875000 # 5 2438 641 5 -0.003430 7.378536 30.174999 -54.875000 # 5 -2439 643 5 0.000000 9.838048 31.594999 -58.224998 # 5 -2440 643 5 0.000000 11.067804 30.885000 -58.224998 # 5 +2439 643 6 0.000000 9.838048 31.594999 -58.224998 # 5 +2440 643 6 0.000000 11.067804 30.885000 -58.224998 # 5 2441 641 5 -0.000229 11.067804 30.885000 -54.875000 # 5 2442 641 5 -0.000462 9.838048 30.174999 -54.875000 # 5 -2443 643 5 0.000000 12.297561 31.594999 -58.224998 # 5 -2444 643 5 0.000000 13.527316 30.885000 -58.224998 # 5 +2443 643 6 0.000000 12.297561 31.594999 -58.224998 # 5 +2444 643 6 0.000000 13.527316 30.885000 -58.224998 # 5 2445 641 5 -0.001512 13.527316 30.885000 -54.875000 # 5 2446 641 5 -0.001278 12.297561 30.174999 -54.875000 # 5 -2447 643 5 0.000000 14.757072 31.594999 -58.224998 # 5 -2448 643 5 0.000000 15.986829 30.885000 -58.224998 # 5 +2447 643 6 0.000000 14.757072 31.594999 -58.224998 # 5 +2448 643 6 0.000000 15.986829 30.885000 -58.224998 # 5 2449 641 5 -0.004102 15.986829 30.885000 -54.875000 # 5 2450 641 5 -0.004635 14.757072 30.174999 -54.875000 # 5 -2451 643 5 0.000000 17.216585 31.594999 -58.224998 # 5 -2452 643 5 0.000000 18.446341 30.885000 -58.224998 # 5 +2451 643 6 0.000000 17.216585 31.594999 -58.224998 # 5 +2452 643 6 0.000000 18.446341 30.885000 -58.224998 # 5 2453 641 5 0.004251 18.446341 30.885000 -54.875000 # 5 2454 641 5 -0.002159 17.216585 30.174999 -54.875000 # 5 -2455 643 5 0.000000 19.676096 31.594999 -58.224998 # 5 -2456 643 5 0.000000 20.905853 30.885000 -58.224998 # 5 +2455 643 6 0.000000 19.676096 31.594999 -58.224998 # 5 +2456 643 6 0.000000 20.905853 30.885000 -58.224998 # 5 2457 641 5 0.008685 20.905853 30.885000 -54.875000 # 5 2458 641 5 0.005523 19.676096 30.174999 -54.875000 # 5 -2459 643 5 0.000000 22.135609 31.594999 -58.224998 # 5 -2460 643 5 0.000000 23.365364 30.885000 -58.224998 # 5 +2459 643 6 0.000000 22.135609 31.594999 -58.224998 # 5 +2460 643 6 0.000000 23.365364 30.885000 -58.224998 # 5 2461 641 5 0.002572 23.365364 30.885000 -54.875000 # 5 2462 641 5 0.002376 22.135609 30.174999 -54.875000 # 5 -2463 643 5 0.000000 24.595121 31.594999 -58.224998 # 5 -2464 643 5 0.000000 25.824877 30.885000 -58.224998 # 5 +2463 643 6 0.000000 24.595121 31.594999 -58.224998 # 5 +2464 643 6 0.000000 25.824877 30.885000 -58.224998 # 5 2465 641 5 -0.000839 25.824877 30.885000 -54.875000 # 5 2466 641 5 -0.001646 24.595121 30.174999 -54.875000 # 5 -2467 643 5 0.000000 27.054632 31.594999 -58.224998 # 5 -2468 643 5 0.000000 28.284389 30.885000 -58.224998 # 5 +2467 643 6 0.000000 27.054632 31.594999 -58.224998 # 5 +2468 643 6 0.000000 28.284389 30.885000 -58.224998 # 5 2469 641 5 -0.002002 28.284389 30.885000 -54.875000 # 5 2470 641 5 -0.002164 27.054632 30.174999 -54.875000 # 5 -2471 643 5 0.000000 29.514145 31.594999 -58.224998 # 5 -2472 643 5 0.000000 30.743900 30.885000 -58.224998 # 5 +2471 643 6 0.000000 29.514145 31.594999 -58.224998 # 5 +2472 643 6 0.000000 30.743900 30.885000 -58.224998 # 5 2473 641 5 -0.002250 30.743900 30.885000 -54.875000 # 5 2474 641 5 -0.001397 29.514145 30.174999 -54.875000 # 5 -2475 643 5 0.000000 31.973658 31.594999 -58.224998 # 5 +2475 643 6 0.000000 31.973658 31.594999 -58.224998 # 5 2476 641 5 -0.000786 31.973658 30.174999 -54.875000 # 5 -2477 643 5 0.000000 1.229756 33.724998 -58.224998 # 5 -2478 643 5 0.000000 2.459512 33.014999 -58.224998 # 5 +2477 643 6 0.000000 1.229756 33.724998 -58.224998 # 5 +2478 643 6 0.000000 2.459512 33.014999 -58.224998 # 5 2479 641 5 -0.000772 2.459512 33.014999 -54.875000 # 5 2480 641 5 -0.005455 1.229756 32.305000 -54.875000 # 5 -2481 643 5 0.000000 3.689268 33.724998 -58.224998 # 5 -2482 643 5 0.000000 4.919024 33.014999 -58.224998 # 5 +2481 643 6 0.000000 3.689268 33.724998 -58.224998 # 5 +2482 643 6 0.000000 4.919024 33.014999 -58.224998 # 5 2483 641 5 0.003106 4.919024 33.014999 -54.875000 # 5 2484 641 5 -0.001614 3.689268 32.305000 -54.875000 # 5 -2485 643 5 0.000000 6.148780 33.724998 -58.224998 # 5 -2486 643 5 0.000000 7.378536 33.014999 -58.224998 # 5 +2485 643 6 0.000000 6.148780 33.724998 -58.224998 # 5 +2486 643 6 0.000000 7.378536 33.014999 -58.224998 # 5 2487 641 5 -0.000846 7.378536 33.014999 -54.875000 # 5 2488 641 5 -0.002162 6.148780 32.305000 -54.875000 # 5 -2489 643 5 0.000000 8.608293 33.724998 -58.224998 # 5 -2490 643 5 0.000000 9.838048 33.014999 -58.224998 # 5 +2489 643 6 0.000000 8.608293 33.724998 -58.224998 # 5 +2490 643 6 0.000000 9.838048 33.014999 -58.224998 # 5 2491 641 5 -0.000940 9.838048 33.014999 -54.875000 # 5 2492 641 5 -0.003071 8.608293 32.305000 -54.875000 # 5 -2493 643 5 0.000000 11.067804 33.724998 -58.224998 # 5 -2494 643 5 0.000000 12.297561 33.014999 -58.224998 # 5 +2493 643 6 0.000000 11.067804 33.724998 -58.224998 # 5 +2494 643 6 0.000000 12.297561 33.014999 -58.224998 # 5 2495 641 5 0.007028 12.297561 33.014999 -54.875000 # 5 2496 641 5 0.000774 11.067804 32.305000 -54.875000 # 5 -2497 643 5 0.000000 13.527316 33.724998 -58.224998 # 5 -2498 643 5 0.000000 14.757072 33.014999 -58.224998 # 5 +2497 643 6 0.000000 13.527316 33.724998 -58.224998 # 5 +2498 643 6 0.000000 14.757072 33.014999 -58.224998 # 5 2499 641 5 0.008285 14.757072 33.014999 -54.875000 # 5 2500 641 5 0.004584 13.527316 32.305000 -54.875000 # 5 -2501 643 5 0.000000 15.986829 33.724998 -58.224998 # 5 -2502 643 5 0.000000 17.216585 33.014999 -58.224998 # 5 +2501 643 6 0.000000 15.986829 33.724998 -58.224998 # 5 +2502 643 6 0.000000 17.216585 33.014999 -58.224998 # 5 2503 641 5 0.004904 17.216585 33.014999 -54.875000 # 5 2504 641 5 0.000781 15.986829 32.305000 -54.875000 # 5 -2505 643 5 0.000000 18.446341 33.724998 -58.224998 # 5 -2506 643 5 0.000000 19.676096 33.014999 -58.224998 # 5 +2505 643 6 0.000000 18.446341 33.724998 -58.224998 # 5 +2506 643 6 0.000000 19.676096 33.014999 -58.224998 # 5 2507 641 5 0.014678 19.676096 33.014999 -54.875000 # 5 2508 641 5 0.006950 18.446341 32.305000 -54.875000 # 5 -2509 643 5 0.000000 20.905853 33.724998 -58.224998 # 5 -2510 643 5 0.000000 22.135609 33.014999 -58.224998 # 5 +2509 643 6 0.000000 20.905853 33.724998 -58.224998 # 5 +2510 643 6 0.000000 22.135609 33.014999 -58.224998 # 5 2511 641 5 0.013213 22.135609 33.014999 -54.875000 # 5 2512 641 5 0.014441 20.905853 32.305000 -54.875000 # 5 -2513 643 5 0.000000 23.365364 33.724998 -58.224998 # 5 -2514 643 5 0.000000 24.595121 33.014999 -58.224998 # 5 +2513 643 6 0.000000 23.365364 33.724998 -58.224998 # 5 +2514 643 6 0.000000 24.595121 33.014999 -58.224998 # 5 2515 641 5 0.005259 24.595121 33.014999 -54.875000 # 5 2516 641 5 0.006529 23.365364 32.305000 -54.875000 # 5 -2517 643 5 0.000000 25.824877 33.724998 -58.224998 # 5 -2518 643 5 0.000000 27.054632 33.014999 -58.224998 # 5 +2517 643 6 0.000000 25.824877 33.724998 -58.224998 # 5 +2518 643 6 0.000000 27.054632 33.014999 -58.224998 # 5 2519 641 5 0.001456 27.054632 33.014999 -54.875000 # 5 2520 641 5 0.001437 25.824877 32.305000 -54.875000 # 5 -2521 643 5 0.000000 28.284389 33.724998 -58.224998 # 5 -2522 643 5 0.000000 29.514145 33.014999 -58.224998 # 5 +2521 643 6 0.000000 28.284389 33.724998 -58.224998 # 5 +2522 643 6 0.000000 29.514145 33.014999 -58.224998 # 5 2523 641 5 -0.003657 29.514145 33.014999 -54.875000 # 5 2524 641 5 -0.001334 28.284389 32.305000 -54.875000 # 5 -2525 643 5 0.000000 30.743900 33.724998 -58.224998 # 5 -2526 643 5 0.000000 31.973658 33.014999 -58.224998 # 5 +2525 643 6 0.000000 30.743900 33.724998 -58.224998 # 5 +2526 643 6 0.000000 31.973658 33.014999 -58.224998 # 5 2527 641 5 -0.007720 31.973658 33.014999 -54.875000 # 5 2528 641 5 -0.004950 30.743900 32.305000 -54.875000 # 5 2529 642 5 -0.000663 1.229756 1.065000 54.875008 # 5 @@ -2982,838 +2984,838 @@ Angle Coeffs # harmonic 2942 642 5 -0.006769 28.284389 32.305000 54.875008 # 5 2943 642 5 0.003066 31.973658 33.014999 54.875008 # 5 2944 642 5 0.001246 30.743900 32.305000 54.875008 # 5 -2945 644 5 0.000000 1.229756 1.065000 58.225006 # 5 -2946 646 5 0.000000 1.229756 1.065000 61.574997 # 5 -2947 644 5 0.000000 2.459512 1.775000 58.225006 # 5 -2948 644 5 0.000000 3.689268 1.065000 58.225006 # 5 -2949 646 5 0.000000 3.689268 1.065000 61.574997 # 5 -2950 646 5 0.000000 2.459512 0.355000 61.574997 # 5 -2951 644 5 0.000000 4.919024 1.775000 58.225006 # 5 -2952 644 5 0.000000 6.148780 1.065000 58.225006 # 5 -2953 646 5 0.000000 6.148780 1.065000 61.574997 # 5 -2954 646 5 0.000000 4.919024 0.355000 61.574997 # 5 -2955 644 5 0.000000 7.378536 1.775000 58.225006 # 5 -2956 644 5 0.000000 8.608293 1.065000 58.225006 # 5 -2957 646 5 0.000000 8.608293 1.065000 61.574997 # 5 -2958 646 5 0.000000 7.378536 0.355000 61.574997 # 5 -2959 644 5 0.000000 9.838048 1.775000 58.225006 # 5 -2960 644 5 0.000000 11.067804 1.065000 58.225006 # 5 -2961 646 5 0.000000 11.067804 1.065000 61.574997 # 5 -2962 646 5 0.000000 9.838048 0.355000 61.574997 # 5 -2963 644 5 0.000000 12.297561 1.775000 58.225006 # 5 -2964 644 5 0.000000 13.527316 1.065000 58.225006 # 5 -2965 646 5 0.000000 13.527316 1.065000 61.574997 # 5 -2966 646 5 0.000000 12.297561 0.355000 61.574997 # 5 -2967 644 5 0.000000 14.757072 1.775000 58.225006 # 5 -2968 644 5 0.000000 15.986829 1.065000 58.225006 # 5 -2969 646 5 0.000000 15.986829 1.065000 61.574997 # 5 -2970 646 5 0.000000 14.757072 0.355000 61.574997 # 5 -2971 644 5 0.000000 17.216585 1.775000 58.225006 # 5 -2972 644 5 0.000000 18.446341 1.065000 58.225006 # 5 -2973 646 5 0.000000 18.446341 1.065000 61.574997 # 5 -2974 646 5 0.000000 17.216585 0.355000 61.574997 # 5 -2975 644 5 0.000000 19.676096 1.775000 58.225006 # 5 -2976 644 5 0.000000 20.905853 1.065000 58.225006 # 5 -2977 646 5 0.000000 20.905853 1.065000 61.574997 # 5 -2978 646 5 0.000000 19.676096 0.355000 61.574997 # 5 -2979 644 5 0.000000 22.135609 1.775000 58.225006 # 5 -2980 644 5 0.000000 23.365364 1.065000 58.225006 # 5 -2981 646 5 0.000000 23.365364 1.065000 61.574997 # 5 -2982 646 5 0.000000 22.135609 0.355000 61.574997 # 5 -2983 644 5 0.000000 24.595121 1.775000 58.225006 # 5 -2984 644 5 0.000000 25.824877 1.065000 58.225006 # 5 -2985 646 5 0.000000 25.824877 1.065000 61.574997 # 5 -2986 646 5 0.000000 24.595121 0.355000 61.574997 # 5 -2987 644 5 0.000000 27.054632 1.775000 58.225006 # 5 -2988 644 5 0.000000 28.284389 1.065000 58.225006 # 5 -2989 646 5 0.000000 28.284389 1.065000 61.574997 # 5 -2990 646 5 0.000000 27.054632 0.355000 61.574997 # 5 -2991 644 5 0.000000 29.514145 1.775000 58.225006 # 5 -2992 644 5 0.000000 30.743900 1.065000 58.225006 # 5 -2993 646 5 0.000000 30.743900 1.065000 61.574997 # 5 -2994 646 5 0.000000 29.514145 0.355000 61.574997 # 5 -2995 644 5 0.000000 31.973658 1.775000 58.225006 # 5 -2996 646 5 0.000000 31.973658 0.355000 61.574997 # 5 -2997 644 5 0.000000 1.229756 3.905000 58.225006 # 5 -2998 644 5 0.000000 2.459512 3.195000 58.225006 # 5 -2999 646 5 0.000000 2.459512 3.195000 61.574997 # 5 -3000 646 5 0.000000 1.229756 2.485000 61.574997 # 5 -3001 644 5 0.000000 3.689268 3.905000 58.225006 # 5 -3002 644 5 0.000000 4.919024 3.195000 58.225006 # 5 -3003 646 5 0.000000 4.919024 3.195000 61.574997 # 5 -3004 646 5 0.000000 3.689268 2.485000 61.574997 # 5 -3005 644 5 0.000000 6.148780 3.905000 58.225006 # 5 -3006 644 5 0.000000 7.378536 3.195000 58.225006 # 5 -3007 646 5 0.000000 7.378536 3.195000 61.574997 # 5 -3008 646 5 0.000000 6.148780 2.485000 61.574997 # 5 -3009 644 5 0.000000 8.608293 3.905000 58.225006 # 5 -3010 644 5 0.000000 9.838048 3.195000 58.225006 # 5 -3011 646 5 0.000000 9.838048 3.195000 61.574997 # 5 -3012 646 5 0.000000 8.608293 2.485000 61.574997 # 5 -3013 644 5 0.000000 11.067804 3.905000 58.225006 # 5 -3014 644 5 0.000000 12.297561 3.195000 58.225006 # 5 -3015 646 5 0.000000 12.297561 3.195000 61.574997 # 5 -3016 646 5 0.000000 11.067804 2.485000 61.574997 # 5 -3017 644 5 0.000000 13.527316 3.905000 58.225006 # 5 -3018 644 5 0.000000 14.757072 3.195000 58.225006 # 5 -3019 646 5 0.000000 14.757072 3.195000 61.574997 # 5 -3020 646 5 0.000000 13.527316 2.485000 61.574997 # 5 -3021 644 5 0.000000 15.986829 3.905000 58.225006 # 5 -3022 644 5 0.000000 17.216585 3.195000 58.225006 # 5 -3023 646 5 0.000000 17.216585 3.195000 61.574997 # 5 -3024 646 5 0.000000 15.986829 2.485000 61.574997 # 5 -3025 644 5 0.000000 18.446341 3.905000 58.225006 # 5 -3026 644 5 0.000000 19.676096 3.195000 58.225006 # 5 -3027 646 5 0.000000 19.676096 3.195000 61.574997 # 5 -3028 646 5 0.000000 18.446341 2.485000 61.574997 # 5 -3029 644 5 0.000000 20.905853 3.905000 58.225006 # 5 -3030 644 5 0.000000 22.135609 3.195000 58.225006 # 5 -3031 646 5 0.000000 22.135609 3.195000 61.574997 # 5 -3032 646 5 0.000000 20.905853 2.485000 61.574997 # 5 -3033 644 5 0.000000 23.365364 3.905000 58.225006 # 5 -3034 644 5 0.000000 24.595121 3.195000 58.225006 # 5 -3035 646 5 0.000000 24.595121 3.195000 61.574997 # 5 -3036 646 5 0.000000 23.365364 2.485000 61.574997 # 5 -3037 644 5 0.000000 25.824877 3.905000 58.225006 # 5 -3038 644 5 0.000000 27.054632 3.195000 58.225006 # 5 -3039 646 5 0.000000 27.054632 3.195000 61.574997 # 5 -3040 646 5 0.000000 25.824877 2.485000 61.574997 # 5 -3041 644 5 0.000000 28.284389 3.905000 58.225006 # 5 -3042 644 5 0.000000 29.514145 3.195000 58.225006 # 5 -3043 646 5 0.000000 29.514145 3.195000 61.574997 # 5 -3044 646 5 0.000000 28.284389 2.485000 61.574997 # 5 -3045 644 5 0.000000 30.743900 3.905000 58.225006 # 5 -3046 644 5 0.000000 31.973658 3.195000 58.225006 # 5 -3047 646 5 0.000000 31.973658 3.195000 61.574997 # 5 -3048 646 5 0.000000 30.743900 2.485000 61.574997 # 5 -3049 644 5 0.000000 1.229756 5.325000 58.225006 # 5 -3050 646 5 0.000000 1.229756 5.325000 61.574997 # 5 -3051 644 5 0.000000 2.459512 6.035000 58.225006 # 5 -3052 644 5 0.000000 3.689268 5.325000 58.225006 # 5 -3053 646 5 0.000000 3.689268 5.325000 61.574997 # 5 -3054 646 5 0.000000 2.459512 4.615000 61.574997 # 5 -3055 644 5 0.000000 4.919024 6.035000 58.225006 # 5 -3056 644 5 0.000000 6.148780 5.325000 58.225006 # 5 -3057 646 5 0.000000 6.148780 5.325000 61.574997 # 5 -3058 646 5 0.000000 4.919024 4.615000 61.574997 # 5 -3059 644 5 0.000000 7.378536 6.035000 58.225006 # 5 -3060 644 5 0.000000 8.608293 5.325000 58.225006 # 5 -3061 646 5 0.000000 8.608293 5.325000 61.574997 # 5 -3062 646 5 0.000000 7.378536 4.615000 61.574997 # 5 -3063 644 5 0.000000 9.838048 6.035000 58.225006 # 5 -3064 644 5 0.000000 11.067804 5.325000 58.225006 # 5 -3065 646 5 0.000000 11.067804 5.325000 61.574997 # 5 -3066 646 5 0.000000 9.838048 4.615000 61.574997 # 5 -3067 644 5 0.000000 12.297561 6.035000 58.225006 # 5 -3068 644 5 0.000000 13.527316 5.325000 58.225006 # 5 -3069 646 5 0.000000 13.527316 5.325000 61.574997 # 5 -3070 646 5 0.000000 12.297561 4.615000 61.574997 # 5 -3071 644 5 0.000000 14.757072 6.035000 58.225006 # 5 -3072 644 5 0.000000 15.986829 5.325000 58.225006 # 5 -3073 646 5 0.000000 15.986829 5.325000 61.574997 # 5 -3074 646 5 0.000000 14.757072 4.615000 61.574997 # 5 -3075 644 5 0.000000 17.216585 6.035000 58.225006 # 5 -3076 644 5 0.000000 18.446341 5.325000 58.225006 # 5 -3077 646 5 0.000000 18.446341 5.325000 61.574997 # 5 -3078 646 5 0.000000 17.216585 4.615000 61.574997 # 5 -3079 644 5 0.000000 19.676096 6.035000 58.225006 # 5 -3080 644 5 0.000000 20.905853 5.325000 58.225006 # 5 -3081 646 5 0.000000 20.905853 5.325000 61.574997 # 5 -3082 646 5 0.000000 19.676096 4.615000 61.574997 # 5 -3083 644 5 0.000000 22.135609 6.035000 58.225006 # 5 -3084 644 5 0.000000 23.365364 5.325000 58.225006 # 5 -3085 646 5 0.000000 23.365364 5.325000 61.574997 # 5 -3086 646 5 0.000000 22.135609 4.615000 61.574997 # 5 -3087 644 5 0.000000 24.595121 6.035000 58.225006 # 5 -3088 644 5 0.000000 25.824877 5.325000 58.225006 # 5 -3089 646 5 0.000000 25.824877 5.325000 61.574997 # 5 -3090 646 5 0.000000 24.595121 4.615000 61.574997 # 5 -3091 644 5 0.000000 27.054632 6.035000 58.225006 # 5 -3092 644 5 0.000000 28.284389 5.325000 58.225006 # 5 -3093 646 5 0.000000 28.284389 5.325000 61.574997 # 5 -3094 646 5 0.000000 27.054632 4.615000 61.574997 # 5 -3095 644 5 0.000000 29.514145 6.035000 58.225006 # 5 -3096 644 5 0.000000 30.743900 5.325000 58.225006 # 5 -3097 646 5 0.000000 30.743900 5.325000 61.574997 # 5 -3098 646 5 0.000000 29.514145 4.615000 61.574997 # 5 -3099 644 5 0.000000 31.973658 6.035000 58.225006 # 5 -3100 646 5 0.000000 31.973658 4.615000 61.574997 # 5 -3101 644 5 0.000000 1.229756 8.165000 58.225006 # 5 -3102 644 5 0.000000 2.459512 7.455000 58.225006 # 5 -3103 646 5 0.000000 2.459512 7.455000 61.574997 # 5 -3104 646 5 0.000000 1.229756 6.745000 61.574997 # 5 -3105 644 5 0.000000 3.689268 8.165000 58.225006 # 5 -3106 644 5 0.000000 4.919024 7.455000 58.225006 # 5 -3107 646 5 0.000000 4.919024 7.455000 61.574997 # 5 -3108 646 5 0.000000 3.689268 6.745000 61.574997 # 5 -3109 644 5 0.000000 6.148780 8.165000 58.225006 # 5 -3110 644 5 0.000000 7.378536 7.455000 58.225006 # 5 -3111 646 5 0.000000 7.378536 7.455000 61.574997 # 5 -3112 646 5 0.000000 6.148780 6.745000 61.574997 # 5 -3113 644 5 0.000000 8.608293 8.165000 58.225006 # 5 -3114 644 5 0.000000 9.838048 7.455000 58.225006 # 5 -3115 646 5 0.000000 9.838048 7.455000 61.574997 # 5 -3116 646 5 0.000000 8.608293 6.745000 61.574997 # 5 -3117 644 5 0.000000 11.067804 8.165000 58.225006 # 5 -3118 644 5 0.000000 12.297561 7.455000 58.225006 # 5 -3119 646 5 0.000000 12.297561 7.455000 61.574997 # 5 -3120 646 5 0.000000 11.067804 6.745000 61.574997 # 5 -3121 644 5 0.000000 13.527316 8.165000 58.225006 # 5 -3122 644 5 0.000000 14.757072 7.455000 58.225006 # 5 -3123 646 5 0.000000 14.757072 7.455000 61.574997 # 5 -3124 646 5 0.000000 13.527316 6.745000 61.574997 # 5 -3125 644 5 0.000000 15.986829 8.165000 58.225006 # 5 -3126 644 5 0.000000 17.216585 7.455000 58.225006 # 5 -3127 646 5 0.000000 17.216585 7.455000 61.574997 # 5 -3128 646 5 0.000000 15.986829 6.745000 61.574997 # 5 -3129 644 5 0.000000 18.446341 8.165000 58.225006 # 5 -3130 644 5 0.000000 19.676096 7.455000 58.225006 # 5 -3131 646 5 0.000000 19.676096 7.455000 61.574997 # 5 -3132 646 5 0.000000 18.446341 6.745000 61.574997 # 5 -3133 644 5 0.000000 20.905853 8.165000 58.225006 # 5 -3134 644 5 0.000000 22.135609 7.455000 58.225006 # 5 -3135 646 5 0.000000 22.135609 7.455000 61.574997 # 5 -3136 646 5 0.000000 20.905853 6.745000 61.574997 # 5 -3137 644 5 0.000000 23.365364 8.165000 58.225006 # 5 -3138 644 5 0.000000 24.595121 7.455000 58.225006 # 5 -3139 646 5 0.000000 24.595121 7.455000 61.574997 # 5 -3140 646 5 0.000000 23.365364 6.745000 61.574997 # 5 -3141 644 5 0.000000 25.824877 8.165000 58.225006 # 5 -3142 644 5 0.000000 27.054632 7.455000 58.225006 # 5 -3143 646 5 0.000000 27.054632 7.455000 61.574997 # 5 -3144 646 5 0.000000 25.824877 6.745000 61.574997 # 5 -3145 644 5 0.000000 28.284389 8.165000 58.225006 # 5 -3146 644 5 0.000000 29.514145 7.455000 58.225006 # 5 -3147 646 5 0.000000 29.514145 7.455000 61.574997 # 5 -3148 646 5 0.000000 28.284389 6.745000 61.574997 # 5 -3149 644 5 0.000000 30.743900 8.165000 58.225006 # 5 -3150 644 5 0.000000 31.973658 7.455000 58.225006 # 5 -3151 646 5 0.000000 31.973658 7.455000 61.574997 # 5 -3152 646 5 0.000000 30.743900 6.745000 61.574997 # 5 -3153 644 5 0.000000 1.229756 9.585000 58.225006 # 5 -3154 646 5 0.000000 1.229756 9.585000 61.574997 # 5 -3155 644 5 0.000000 2.459512 10.295000 58.225006 # 5 -3156 644 5 0.000000 3.689268 9.585000 58.225006 # 5 -3157 646 5 0.000000 3.689268 9.585000 61.574997 # 5 -3158 646 5 0.000000 2.459512 8.875000 61.574997 # 5 -3159 644 5 0.000000 4.919024 10.295000 58.225006 # 5 -3160 644 5 0.000000 6.148780 9.585000 58.225006 # 5 -3161 646 5 0.000000 6.148780 9.585000 61.574997 # 5 -3162 646 5 0.000000 4.919024 8.875000 61.574997 # 5 -3163 644 5 0.000000 7.378536 10.295000 58.225006 # 5 -3164 644 5 0.000000 8.608293 9.585000 58.225006 # 5 -3165 646 5 0.000000 8.608293 9.585000 61.574997 # 5 -3166 646 5 0.000000 7.378536 8.875000 61.574997 # 5 -3167 644 5 0.000000 9.838048 10.295000 58.225006 # 5 -3168 644 5 0.000000 11.067804 9.585000 58.225006 # 5 -3169 646 5 0.000000 11.067804 9.585000 61.574997 # 5 -3170 646 5 0.000000 9.838048 8.875000 61.574997 # 5 -3171 644 5 0.000000 12.297561 10.295000 58.225006 # 5 -3172 644 5 0.000000 13.527316 9.585000 58.225006 # 5 -3173 646 5 0.000000 13.527316 9.585000 61.574997 # 5 -3174 646 5 0.000000 12.297561 8.875000 61.574997 # 5 -3175 644 5 0.000000 14.757072 10.295000 58.225006 # 5 -3176 644 5 0.000000 15.986829 9.585000 58.225006 # 5 -3177 646 5 0.000000 15.986829 9.585000 61.574997 # 5 -3178 646 5 0.000000 14.757072 8.875000 61.574997 # 5 -3179 644 5 0.000000 17.216585 10.295000 58.225006 # 5 -3180 644 5 0.000000 18.446341 9.585000 58.225006 # 5 -3181 646 5 0.000000 18.446341 9.585000 61.574997 # 5 -3182 646 5 0.000000 17.216585 8.875000 61.574997 # 5 -3183 644 5 0.000000 19.676096 10.295000 58.225006 # 5 -3184 644 5 0.000000 20.905853 9.585000 58.225006 # 5 -3185 646 5 0.000000 20.905853 9.585000 61.574997 # 5 -3186 646 5 0.000000 19.676096 8.875000 61.574997 # 5 -3187 644 5 0.000000 22.135609 10.295000 58.225006 # 5 -3188 644 5 0.000000 23.365364 9.585000 58.225006 # 5 -3189 646 5 0.000000 23.365364 9.585000 61.574997 # 5 -3190 646 5 0.000000 22.135609 8.875000 61.574997 # 5 -3191 644 5 0.000000 24.595121 10.295000 58.225006 # 5 -3192 644 5 0.000000 25.824877 9.585000 58.225006 # 5 -3193 646 5 0.000000 25.824877 9.585000 61.574997 # 5 -3194 646 5 0.000000 24.595121 8.875000 61.574997 # 5 -3195 644 5 0.000000 27.054632 10.295000 58.225006 # 5 -3196 644 5 0.000000 28.284389 9.585000 58.225006 # 5 -3197 646 5 0.000000 28.284389 9.585000 61.574997 # 5 -3198 646 5 0.000000 27.054632 8.875000 61.574997 # 5 -3199 644 5 0.000000 29.514145 10.295000 58.225006 # 5 -3200 644 5 0.000000 30.743900 9.585000 58.225006 # 5 -3201 646 5 0.000000 30.743900 9.585000 61.574997 # 5 -3202 646 5 0.000000 29.514145 8.875000 61.574997 # 5 -3203 644 5 0.000000 31.973658 10.295000 58.225006 # 5 -3204 646 5 0.000000 31.973658 8.875000 61.574997 # 5 -3205 644 5 0.000000 1.229756 12.425000 58.225006 # 5 -3206 644 5 0.000000 2.459512 11.715001 58.225006 # 5 -3207 646 5 0.000000 2.459512 11.715001 61.574997 # 5 -3208 646 5 0.000000 1.229756 11.005000 61.574997 # 5 -3209 644 5 0.000000 3.689268 12.425000 58.225006 # 5 -3210 644 5 0.000000 4.919024 11.715001 58.225006 # 5 -3211 646 5 0.000000 4.919024 11.715001 61.574997 # 5 -3212 646 5 0.000000 3.689268 11.005000 61.574997 # 5 -3213 644 5 0.000000 6.148780 12.425000 58.225006 # 5 -3214 644 5 0.000000 7.378536 11.715001 58.225006 # 5 -3215 646 5 0.000000 7.378536 11.715001 61.574997 # 5 -3216 646 5 0.000000 6.148780 11.005000 61.574997 # 5 -3217 644 5 0.000000 8.608293 12.425000 58.225006 # 5 -3218 644 5 0.000000 9.838048 11.715001 58.225006 # 5 -3219 646 5 0.000000 9.838048 11.715001 61.574997 # 5 -3220 646 5 0.000000 8.608293 11.005000 61.574997 # 5 -3221 644 5 0.000000 11.067804 12.425000 58.225006 # 5 -3222 644 5 0.000000 12.297561 11.715001 58.225006 # 5 -3223 646 5 0.000000 12.297561 11.715001 61.574997 # 5 -3224 646 5 0.000000 11.067804 11.005000 61.574997 # 5 -3225 644 5 0.000000 13.527316 12.425000 58.225006 # 5 -3226 644 5 0.000000 14.757072 11.715001 58.225006 # 5 -3227 646 5 0.000000 14.757072 11.715001 61.574997 # 5 -3228 646 5 0.000000 13.527316 11.005000 61.574997 # 5 -3229 644 5 0.000000 15.986829 12.425000 58.225006 # 5 -3230 644 5 0.000000 17.216585 11.715001 58.225006 # 5 -3231 646 5 0.000000 17.216585 11.715001 61.574997 # 5 -3232 646 5 0.000000 15.986829 11.005000 61.574997 # 5 -3233 644 5 0.000000 18.446341 12.425000 58.225006 # 5 -3234 644 5 0.000000 19.676096 11.715001 58.225006 # 5 -3235 646 5 0.000000 19.676096 11.715001 61.574997 # 5 -3236 646 5 0.000000 18.446341 11.005000 61.574997 # 5 -3237 644 5 0.000000 20.905853 12.425000 58.225006 # 5 -3238 644 5 0.000000 22.135609 11.715001 58.225006 # 5 -3239 646 5 0.000000 22.135609 11.715001 61.574997 # 5 -3240 646 5 0.000000 20.905853 11.005000 61.574997 # 5 -3241 644 5 0.000000 23.365364 12.425000 58.225006 # 5 -3242 644 5 0.000000 24.595121 11.715001 58.225006 # 5 -3243 646 5 0.000000 24.595121 11.715001 61.574997 # 5 -3244 646 5 0.000000 23.365364 11.005000 61.574997 # 5 -3245 644 5 0.000000 25.824877 12.425000 58.225006 # 5 -3246 644 5 0.000000 27.054632 11.715001 58.225006 # 5 -3247 646 5 0.000000 27.054632 11.715001 61.574997 # 5 -3248 646 5 0.000000 25.824877 11.005000 61.574997 # 5 -3249 644 5 0.000000 28.284389 12.425000 58.225006 # 5 -3250 644 5 0.000000 29.514145 11.715001 58.225006 # 5 -3251 646 5 0.000000 29.514145 11.715001 61.574997 # 5 -3252 646 5 0.000000 28.284389 11.005000 61.574997 # 5 -3253 644 5 0.000000 30.743900 12.425000 58.225006 # 5 -3254 644 5 0.000000 31.973658 11.715001 58.225006 # 5 -3255 646 5 0.000000 31.973658 11.715001 61.574997 # 5 -3256 646 5 0.000000 30.743900 11.005000 61.574997 # 5 -3257 644 5 0.000000 1.229756 13.845000 58.225006 # 5 -3258 646 5 0.000000 1.229756 13.845000 61.574997 # 5 -3259 644 5 0.000000 2.459512 14.555000 58.225006 # 5 -3260 644 5 0.000000 3.689268 13.845000 58.225006 # 5 -3261 646 5 0.000000 3.689268 13.845000 61.574997 # 5 -3262 646 5 0.000000 2.459512 13.135000 61.574997 # 5 -3263 644 5 0.000000 4.919024 14.555000 58.225006 # 5 -3264 644 5 0.000000 6.148780 13.845000 58.225006 # 5 -3265 646 5 0.000000 6.148780 13.845000 61.574997 # 5 -3266 646 5 0.000000 4.919024 13.135000 61.574997 # 5 -3267 644 5 0.000000 7.378536 14.555000 58.225006 # 5 -3268 644 5 0.000000 8.608293 13.845000 58.225006 # 5 -3269 646 5 0.000000 8.608293 13.845000 61.574997 # 5 -3270 646 5 0.000000 7.378536 13.135000 61.574997 # 5 -3271 644 5 0.000000 9.838048 14.555000 58.225006 # 5 -3272 644 5 0.000000 11.067804 13.845000 58.225006 # 5 -3273 646 5 0.000000 11.067804 13.845000 61.574997 # 5 -3274 646 5 0.000000 9.838048 13.135000 61.574997 # 5 -3275 644 5 0.000000 12.297561 14.555000 58.225006 # 5 -3276 644 5 0.000000 13.527316 13.845000 58.225006 # 5 -3277 646 5 0.000000 13.527316 13.845000 61.574997 # 5 -3278 646 5 0.000000 12.297561 13.135000 61.574997 # 5 -3279 644 5 0.000000 14.757072 14.555000 58.225006 # 5 -3280 644 5 0.000000 15.986829 13.845000 58.225006 # 5 -3281 646 5 0.000000 15.986829 13.845000 61.574997 # 5 -3282 646 5 0.000000 14.757072 13.135000 61.574997 # 5 -3283 644 5 0.000000 17.216585 14.555000 58.225006 # 5 -3284 644 5 0.000000 18.446341 13.845000 58.225006 # 5 -3285 646 5 0.000000 18.446341 13.845000 61.574997 # 5 -3286 646 5 0.000000 17.216585 13.135000 61.574997 # 5 -3287 644 5 0.000000 19.676096 14.555000 58.225006 # 5 -3288 644 5 0.000000 20.905853 13.845000 58.225006 # 5 -3289 646 5 0.000000 20.905853 13.845000 61.574997 # 5 -3290 646 5 0.000000 19.676096 13.135000 61.574997 # 5 -3291 644 5 0.000000 22.135609 14.555000 58.225006 # 5 -3292 644 5 0.000000 23.365364 13.845000 58.225006 # 5 -3293 646 5 0.000000 23.365364 13.845000 61.574997 # 5 -3294 646 5 0.000000 22.135609 13.135000 61.574997 # 5 -3295 644 5 0.000000 24.595121 14.555000 58.225006 # 5 -3296 644 5 0.000000 25.824877 13.845000 58.225006 # 5 -3297 646 5 0.000000 25.824877 13.845000 61.574997 # 5 -3298 646 5 0.000000 24.595121 13.135000 61.574997 # 5 -3299 644 5 0.000000 27.054632 14.555000 58.225006 # 5 -3300 644 5 0.000000 28.284389 13.845000 58.225006 # 5 -3301 646 5 0.000000 28.284389 13.845000 61.574997 # 5 -3302 646 5 0.000000 27.054632 13.135000 61.574997 # 5 -3303 644 5 0.000000 29.514145 14.555000 58.225006 # 5 -3304 644 5 0.000000 30.743900 13.845000 58.225006 # 5 -3305 646 5 0.000000 30.743900 13.845000 61.574997 # 5 -3306 646 5 0.000000 29.514145 13.135000 61.574997 # 5 -3307 644 5 0.000000 31.973658 14.555000 58.225006 # 5 -3308 646 5 0.000000 31.973658 13.135000 61.574997 # 5 -3309 644 5 0.000000 1.229756 16.684999 58.225006 # 5 -3310 644 5 0.000000 2.459512 15.975000 58.225006 # 5 -3311 646 5 0.000000 2.459512 15.975000 61.574997 # 5 -3312 646 5 0.000000 1.229756 15.265000 61.574997 # 5 -3313 644 5 0.000000 3.689268 16.684999 58.225006 # 5 -3314 644 5 0.000000 4.919024 15.975000 58.225006 # 5 -3315 646 5 0.000000 4.919024 15.975000 61.574997 # 5 -3316 646 5 0.000000 3.689268 15.265000 61.574997 # 5 -3317 644 5 0.000000 6.148780 16.684999 58.225006 # 5 -3318 644 5 0.000000 7.378536 15.975000 58.225006 # 5 -3319 646 5 0.000000 7.378536 15.975000 61.574997 # 5 -3320 646 5 0.000000 6.148780 15.265000 61.574997 # 5 -3321 644 5 0.000000 8.608293 16.684999 58.225006 # 5 -3322 644 5 0.000000 9.838048 15.975000 58.225006 # 5 -3323 646 5 0.000000 9.838048 15.975000 61.574997 # 5 -3324 646 5 0.000000 8.608293 15.265000 61.574997 # 5 -3325 644 5 0.000000 11.067804 16.684999 58.225006 # 5 -3326 644 5 0.000000 12.297561 15.975000 58.225006 # 5 -3327 646 5 0.000000 12.297561 15.975000 61.574997 # 5 -3328 646 5 0.000000 11.067804 15.265000 61.574997 # 5 -3329 644 5 0.000000 13.527316 16.684999 58.225006 # 5 -3330 644 5 0.000000 14.757072 15.975000 58.225006 # 5 -3331 646 5 0.000000 14.757072 15.975000 61.574997 # 5 -3332 646 5 0.000000 13.527316 15.265000 61.574997 # 5 -3333 644 5 0.000000 15.986829 16.684999 58.225006 # 5 -3334 644 5 0.000000 17.216585 15.975000 58.225006 # 5 -3335 646 5 0.000000 17.216585 15.975000 61.574997 # 5 -3336 646 5 0.000000 15.986829 15.265000 61.574997 # 5 -3337 644 5 0.000000 18.446341 16.684999 58.225006 # 5 -3338 644 5 0.000000 19.676096 15.975000 58.225006 # 5 -3339 646 5 0.000000 19.676096 15.975000 61.574997 # 5 -3340 646 5 0.000000 18.446341 15.265000 61.574997 # 5 -3341 644 5 0.000000 20.905853 16.684999 58.225006 # 5 -3342 644 5 0.000000 22.135609 15.975000 58.225006 # 5 -3343 646 5 0.000000 22.135609 15.975000 61.574997 # 5 -3344 646 5 0.000000 20.905853 15.265000 61.574997 # 5 -3345 644 5 0.000000 23.365364 16.684999 58.225006 # 5 -3346 644 5 0.000000 24.595121 15.975000 58.225006 # 5 -3347 646 5 0.000000 24.595121 15.975000 61.574997 # 5 -3348 646 5 0.000000 23.365364 15.265000 61.574997 # 5 -3349 644 5 0.000000 25.824877 16.684999 58.225006 # 5 -3350 644 5 0.000000 27.054632 15.975000 58.225006 # 5 -3351 646 5 0.000000 27.054632 15.975000 61.574997 # 5 -3352 646 5 0.000000 25.824877 15.265000 61.574997 # 5 -3353 644 5 0.000000 28.284389 16.684999 58.225006 # 5 -3354 644 5 0.000000 29.514145 15.975000 58.225006 # 5 -3355 646 5 0.000000 29.514145 15.975000 61.574997 # 5 -3356 646 5 0.000000 28.284389 15.265000 61.574997 # 5 -3357 644 5 0.000000 30.743900 16.684999 58.225006 # 5 -3358 644 5 0.000000 31.973658 15.975000 58.225006 # 5 -3359 646 5 0.000000 31.973658 15.975000 61.574997 # 5 -3360 646 5 0.000000 30.743900 15.265000 61.574997 # 5 -3361 644 5 0.000000 1.229756 18.105000 58.225006 # 5 -3362 646 5 0.000000 1.229756 18.105000 61.574997 # 5 -3363 644 5 0.000000 2.459512 18.815001 58.225006 # 5 -3364 644 5 0.000000 3.689268 18.105000 58.225006 # 5 -3365 646 5 0.000000 3.689268 18.105000 61.574997 # 5 -3366 646 5 0.000000 2.459512 17.395000 61.574997 # 5 -3367 644 5 0.000000 4.919024 18.815001 58.225006 # 5 -3368 644 5 0.000000 6.148780 18.105000 58.225006 # 5 -3369 646 5 0.000000 6.148780 18.105000 61.574997 # 5 -3370 646 5 0.000000 4.919024 17.395000 61.574997 # 5 -3371 644 5 0.000000 7.378536 18.815001 58.225006 # 5 -3372 644 5 0.000000 8.608293 18.105000 58.225006 # 5 -3373 646 5 0.000000 8.608293 18.105000 61.574997 # 5 -3374 646 5 0.000000 7.378536 17.395000 61.574997 # 5 -3375 644 5 0.000000 9.838048 18.815001 58.225006 # 5 -3376 644 5 0.000000 11.067804 18.105000 58.225006 # 5 -3377 646 5 0.000000 11.067804 18.105000 61.574997 # 5 -3378 646 5 0.000000 9.838048 17.395000 61.574997 # 5 -3379 644 5 0.000000 12.297561 18.815001 58.225006 # 5 -3380 644 5 0.000000 13.527316 18.105000 58.225006 # 5 -3381 646 5 0.000000 13.527316 18.105000 61.574997 # 5 -3382 646 5 0.000000 12.297561 17.395000 61.574997 # 5 -3383 644 5 0.000000 14.757072 18.815001 58.225006 # 5 -3384 644 5 0.000000 15.986829 18.105000 58.225006 # 5 -3385 646 5 0.000000 15.986829 18.105000 61.574997 # 5 -3386 646 5 0.000000 14.757072 17.395000 61.574997 # 5 -3387 644 5 0.000000 17.216585 18.815001 58.225006 # 5 -3388 644 5 0.000000 18.446341 18.105000 58.225006 # 5 -3389 646 5 0.000000 18.446341 18.105000 61.574997 # 5 -3390 646 5 0.000000 17.216585 17.395000 61.574997 # 5 -3391 644 5 0.000000 19.676096 18.815001 58.225006 # 5 -3392 644 5 0.000000 20.905853 18.105000 58.225006 # 5 -3393 646 5 0.000000 20.905853 18.105000 61.574997 # 5 -3394 646 5 0.000000 19.676096 17.395000 61.574997 # 5 -3395 644 5 0.000000 22.135609 18.815001 58.225006 # 5 -3396 644 5 0.000000 23.365364 18.105000 58.225006 # 5 -3397 646 5 0.000000 23.365364 18.105000 61.574997 # 5 -3398 646 5 0.000000 22.135609 17.395000 61.574997 # 5 -3399 644 5 0.000000 24.595121 18.815001 58.225006 # 5 -3400 644 5 0.000000 25.824877 18.105000 58.225006 # 5 -3401 646 5 0.000000 25.824877 18.105000 61.574997 # 5 -3402 646 5 0.000000 24.595121 17.395000 61.574997 # 5 -3403 644 5 0.000000 27.054632 18.815001 58.225006 # 5 -3404 644 5 0.000000 28.284389 18.105000 58.225006 # 5 -3405 646 5 0.000000 28.284389 18.105000 61.574997 # 5 -3406 646 5 0.000000 27.054632 17.395000 61.574997 # 5 -3407 644 5 0.000000 29.514145 18.815001 58.225006 # 5 -3408 644 5 0.000000 30.743900 18.105000 58.225006 # 5 -3409 646 5 0.000000 30.743900 18.105000 61.574997 # 5 -3410 646 5 0.000000 29.514145 17.395000 61.574997 # 5 -3411 644 5 0.000000 31.973658 18.815001 58.225006 # 5 -3412 646 5 0.000000 31.973658 17.395000 61.574997 # 5 -3413 644 5 0.000000 1.229756 20.945002 58.225006 # 5 -3414 644 5 0.000000 2.459512 20.235001 58.225006 # 5 -3415 646 5 0.000000 2.459512 20.235001 61.574997 # 5 -3416 646 5 0.000000 1.229756 19.525000 61.574997 # 5 -3417 644 5 0.000000 3.689268 20.945002 58.225006 # 5 -3418 644 5 0.000000 4.919024 20.235001 58.225006 # 5 -3419 646 5 0.000000 4.919024 20.235001 61.574997 # 5 -3420 646 5 0.000000 3.689268 19.525000 61.574997 # 5 -3421 644 5 0.000000 6.148780 20.945002 58.225006 # 5 -3422 644 5 0.000000 7.378536 20.235001 58.225006 # 5 -3423 646 5 0.000000 7.378536 20.235001 61.574997 # 5 -3424 646 5 0.000000 6.148780 19.525000 61.574997 # 5 -3425 644 5 0.000000 8.608293 20.945002 58.225006 # 5 -3426 644 5 0.000000 9.838048 20.235001 58.225006 # 5 -3427 646 5 0.000000 9.838048 20.235001 61.574997 # 5 -3428 646 5 0.000000 8.608293 19.525000 61.574997 # 5 -3429 644 5 0.000000 11.067804 20.945002 58.225006 # 5 -3430 644 5 0.000000 12.297561 20.235001 58.225006 # 5 -3431 646 5 0.000000 12.297561 20.235001 61.574997 # 5 -3432 646 5 0.000000 11.067804 19.525000 61.574997 # 5 -3433 644 5 0.000000 13.527316 20.945002 58.225006 # 5 -3434 644 5 0.000000 14.757072 20.235001 58.225006 # 5 -3435 646 5 0.000000 14.757072 20.235001 61.574997 # 5 -3436 646 5 0.000000 13.527316 19.525000 61.574997 # 5 -3437 644 5 0.000000 15.986829 20.945002 58.225006 # 5 -3438 644 5 0.000000 17.216585 20.235001 58.225006 # 5 -3439 646 5 0.000000 17.216585 20.235001 61.574997 # 5 -3440 646 5 0.000000 15.986829 19.525000 61.574997 # 5 -3441 644 5 0.000000 18.446341 20.945002 58.225006 # 5 -3442 644 5 0.000000 19.676096 20.235001 58.225006 # 5 -3443 646 5 0.000000 19.676096 20.235001 61.574997 # 5 -3444 646 5 0.000000 18.446341 19.525000 61.574997 # 5 -3445 644 5 0.000000 20.905853 20.945002 58.225006 # 5 -3446 644 5 0.000000 22.135609 20.235001 58.225006 # 5 -3447 646 5 0.000000 22.135609 20.235001 61.574997 # 5 -3448 646 5 0.000000 20.905853 19.525000 61.574997 # 5 -3449 644 5 0.000000 23.365364 20.945002 58.225006 # 5 -3450 644 5 0.000000 24.595121 20.235001 58.225006 # 5 -3451 646 5 0.000000 24.595121 20.235001 61.574997 # 5 -3452 646 5 0.000000 23.365364 19.525000 61.574997 # 5 -3453 644 5 0.000000 25.824877 20.945002 58.225006 # 5 -3454 644 5 0.000000 27.054632 20.235001 58.225006 # 5 -3455 646 5 0.000000 27.054632 20.235001 61.574997 # 5 -3456 646 5 0.000000 25.824877 19.525000 61.574997 # 5 -3457 644 5 0.000000 28.284389 20.945002 58.225006 # 5 -3458 644 5 0.000000 29.514145 20.235001 58.225006 # 5 -3459 646 5 0.000000 29.514145 20.235001 61.574997 # 5 -3460 646 5 0.000000 28.284389 19.525000 61.574997 # 5 -3461 644 5 0.000000 30.743900 20.945002 58.225006 # 5 -3462 644 5 0.000000 31.973658 20.235001 58.225006 # 5 -3463 646 5 0.000000 31.973658 20.235001 61.574997 # 5 -3464 646 5 0.000000 30.743900 19.525000 61.574997 # 5 -3465 644 5 0.000000 1.229756 22.365000 58.225006 # 5 -3466 646 5 0.000000 1.229756 22.365000 61.574997 # 5 -3467 644 5 0.000000 2.459512 23.075001 58.225006 # 5 -3468 644 5 0.000000 3.689268 22.365000 58.225006 # 5 -3469 646 5 0.000000 3.689268 22.365000 61.574997 # 5 -3470 646 5 0.000000 2.459512 21.655001 61.574997 # 5 -3471 644 5 0.000000 4.919024 23.075001 58.225006 # 5 -3472 644 5 0.000000 6.148780 22.365000 58.225006 # 5 -3473 646 5 0.000000 6.148780 22.365000 61.574997 # 5 -3474 646 5 0.000000 4.919024 21.655001 61.574997 # 5 -3475 644 5 0.000000 7.378536 23.075001 58.225006 # 5 -3476 644 5 0.000000 8.608293 22.365000 58.225006 # 5 -3477 646 5 0.000000 8.608293 22.365000 61.574997 # 5 -3478 646 5 0.000000 7.378536 21.655001 61.574997 # 5 -3479 644 5 0.000000 9.838048 23.075001 58.225006 # 5 -3480 644 5 0.000000 11.067804 22.365000 58.225006 # 5 -3481 646 5 0.000000 11.067804 22.365000 61.574997 # 5 -3482 646 5 0.000000 9.838048 21.655001 61.574997 # 5 -3483 644 5 0.000000 12.297561 23.075001 58.225006 # 5 -3484 644 5 0.000000 13.527316 22.365000 58.225006 # 5 -3485 646 5 0.000000 13.527316 22.365000 61.574997 # 5 -3486 646 5 0.000000 12.297561 21.655001 61.574997 # 5 -3487 644 5 0.000000 14.757072 23.075001 58.225006 # 5 -3488 644 5 0.000000 15.986829 22.365000 58.225006 # 5 -3489 646 5 0.000000 15.986829 22.365000 61.574997 # 5 -3490 646 5 0.000000 14.757072 21.655001 61.574997 # 5 -3491 644 5 0.000000 17.216585 23.075001 58.225006 # 5 -3492 644 5 0.000000 18.446341 22.365000 58.225006 # 5 -3493 646 5 0.000000 18.446341 22.365000 61.574997 # 5 -3494 646 5 0.000000 17.216585 21.655001 61.574997 # 5 -3495 644 5 0.000000 19.676096 23.075001 58.225006 # 5 -3496 644 5 0.000000 20.905853 22.365000 58.225006 # 5 -3497 646 5 0.000000 20.905853 22.365000 61.574997 # 5 -3498 646 5 0.000000 19.676096 21.655001 61.574997 # 5 -3499 644 5 0.000000 22.135609 23.075001 58.225006 # 5 -3500 644 5 0.000000 23.365364 22.365000 58.225006 # 5 -3501 646 5 0.000000 23.365364 22.365000 61.574997 # 5 -3502 646 5 0.000000 22.135609 21.655001 61.574997 # 5 -3503 644 5 0.000000 24.595121 23.075001 58.225006 # 5 -3504 644 5 0.000000 25.824877 22.365000 58.225006 # 5 -3505 646 5 0.000000 25.824877 22.365000 61.574997 # 5 -3506 646 5 0.000000 24.595121 21.655001 61.574997 # 5 -3507 644 5 0.000000 27.054632 23.075001 58.225006 # 5 -3508 644 5 0.000000 28.284389 22.365000 58.225006 # 5 -3509 646 5 0.000000 28.284389 22.365000 61.574997 # 5 -3510 646 5 0.000000 27.054632 21.655001 61.574997 # 5 -3511 644 5 0.000000 29.514145 23.075001 58.225006 # 5 -3512 644 5 0.000000 30.743900 22.365000 58.225006 # 5 -3513 646 5 0.000000 30.743900 22.365000 61.574997 # 5 -3514 646 5 0.000000 29.514145 21.655001 61.574997 # 5 -3515 644 5 0.000000 31.973658 23.075001 58.225006 # 5 -3516 646 5 0.000000 31.973658 21.655001 61.574997 # 5 -3517 644 5 0.000000 1.229756 25.205000 58.225006 # 5 -3518 644 5 0.000000 2.459512 24.495001 58.225006 # 5 -3519 646 5 0.000000 2.459512 24.495001 61.574997 # 5 -3520 646 5 0.000000 1.229756 23.785000 61.574997 # 5 -3521 644 5 0.000000 3.689268 25.205000 58.225006 # 5 -3522 644 5 0.000000 4.919024 24.495001 58.225006 # 5 -3523 646 5 0.000000 4.919024 24.495001 61.574997 # 5 -3524 646 5 0.000000 3.689268 23.785000 61.574997 # 5 -3525 644 5 0.000000 6.148780 25.205000 58.225006 # 5 -3526 644 5 0.000000 7.378536 24.495001 58.225006 # 5 -3527 646 5 0.000000 7.378536 24.495001 61.574997 # 5 -3528 646 5 0.000000 6.148780 23.785000 61.574997 # 5 -3529 644 5 0.000000 8.608293 25.205000 58.225006 # 5 -3530 644 5 0.000000 9.838048 24.495001 58.225006 # 5 -3531 646 5 0.000000 9.838048 24.495001 61.574997 # 5 -3532 646 5 0.000000 8.608293 23.785000 61.574997 # 5 -3533 644 5 0.000000 11.067804 25.205000 58.225006 # 5 -3534 644 5 0.000000 12.297561 24.495001 58.225006 # 5 -3535 646 5 0.000000 12.297561 24.495001 61.574997 # 5 -3536 646 5 0.000000 11.067804 23.785000 61.574997 # 5 -3537 644 5 0.000000 13.527316 25.205000 58.225006 # 5 -3538 644 5 0.000000 14.757072 24.495001 58.225006 # 5 -3539 646 5 0.000000 14.757072 24.495001 61.574997 # 5 -3540 646 5 0.000000 13.527316 23.785000 61.574997 # 5 -3541 644 5 0.000000 15.986829 25.205000 58.225006 # 5 -3542 644 5 0.000000 17.216585 24.495001 58.225006 # 5 -3543 646 5 0.000000 17.216585 24.495001 61.574997 # 5 -3544 646 5 0.000000 15.986829 23.785000 61.574997 # 5 -3545 644 5 0.000000 18.446341 25.205000 58.225006 # 5 -3546 644 5 0.000000 19.676096 24.495001 58.225006 # 5 -3547 646 5 0.000000 19.676096 24.495001 61.574997 # 5 -3548 646 5 0.000000 18.446341 23.785000 61.574997 # 5 -3549 644 5 0.000000 20.905853 25.205000 58.225006 # 5 -3550 644 5 0.000000 22.135609 24.495001 58.225006 # 5 -3551 646 5 0.000000 22.135609 24.495001 61.574997 # 5 -3552 646 5 0.000000 20.905853 23.785000 61.574997 # 5 -3553 644 5 0.000000 23.365364 25.205000 58.225006 # 5 -3554 644 5 0.000000 24.595121 24.495001 58.225006 # 5 -3555 646 5 0.000000 24.595121 24.495001 61.574997 # 5 -3556 646 5 0.000000 23.365364 23.785000 61.574997 # 5 -3557 644 5 0.000000 25.824877 25.205000 58.225006 # 5 -3558 644 5 0.000000 27.054632 24.495001 58.225006 # 5 -3559 646 5 0.000000 27.054632 24.495001 61.574997 # 5 -3560 646 5 0.000000 25.824877 23.785000 61.574997 # 5 -3561 644 5 0.000000 28.284389 25.205000 58.225006 # 5 -3562 644 5 0.000000 29.514145 24.495001 58.225006 # 5 -3563 646 5 0.000000 29.514145 24.495001 61.574997 # 5 -3564 646 5 0.000000 28.284389 23.785000 61.574997 # 5 -3565 644 5 0.000000 30.743900 25.205000 58.225006 # 5 -3566 644 5 0.000000 31.973658 24.495001 58.225006 # 5 -3567 646 5 0.000000 31.973658 24.495001 61.574997 # 5 -3568 646 5 0.000000 30.743900 23.785000 61.574997 # 5 -3569 644 5 0.000000 1.229756 26.625000 58.225006 # 5 -3570 646 5 0.000000 1.229756 26.625000 61.574997 # 5 -3571 644 5 0.000000 2.459512 27.335001 58.225006 # 5 -3572 644 5 0.000000 3.689268 26.625000 58.225006 # 5 -3573 646 5 0.000000 3.689268 26.625000 61.574997 # 5 -3574 646 5 0.000000 2.459512 25.915003 61.574997 # 5 -3575 644 5 0.000000 4.919024 27.335001 58.225006 # 5 -3576 644 5 0.000000 6.148780 26.625000 58.225006 # 5 -3577 646 5 0.000000 6.148780 26.625000 61.574997 # 5 -3578 646 5 0.000000 4.919024 25.915003 61.574997 # 5 -3579 644 5 0.000000 7.378536 27.335001 58.225006 # 5 -3580 644 5 0.000000 8.608293 26.625000 58.225006 # 5 -3581 646 5 0.000000 8.608293 26.625000 61.574997 # 5 -3582 646 5 0.000000 7.378536 25.915003 61.574997 # 5 -3583 644 5 0.000000 9.838048 27.335001 58.225006 # 5 -3584 644 5 0.000000 11.067804 26.625000 58.225006 # 5 -3585 646 5 0.000000 11.067804 26.625000 61.574997 # 5 -3586 646 5 0.000000 9.838048 25.915003 61.574997 # 5 -3587 644 5 0.000000 12.297561 27.335001 58.225006 # 5 -3588 644 5 0.000000 13.527316 26.625000 58.225006 # 5 -3589 646 5 0.000000 13.527316 26.625000 61.574997 # 5 -3590 646 5 0.000000 12.297561 25.915003 61.574997 # 5 -3591 644 5 0.000000 14.757072 27.335001 58.225006 # 5 -3592 644 5 0.000000 15.986829 26.625000 58.225006 # 5 -3593 646 5 0.000000 15.986829 26.625000 61.574997 # 5 -3594 646 5 0.000000 14.757072 25.915003 61.574997 # 5 -3595 644 5 0.000000 17.216585 27.335001 58.225006 # 5 -3596 644 5 0.000000 18.446341 26.625000 58.225006 # 5 -3597 646 5 0.000000 18.446341 26.625000 61.574997 # 5 -3598 646 5 0.000000 17.216585 25.915003 61.574997 # 5 -3599 644 5 0.000000 19.676096 27.335001 58.225006 # 5 -3600 644 5 0.000000 20.905853 26.625000 58.225006 # 5 -3601 646 5 0.000000 20.905853 26.625000 61.574997 # 5 -3602 646 5 0.000000 19.676096 25.915003 61.574997 # 5 -3603 644 5 0.000000 22.135609 27.335001 58.225006 # 5 -3604 644 5 0.000000 23.365364 26.625000 58.225006 # 5 -3605 646 5 0.000000 23.365364 26.625000 61.574997 # 5 -3606 646 5 0.000000 22.135609 25.915003 61.574997 # 5 -3607 644 5 0.000000 24.595121 27.335001 58.225006 # 5 -3608 644 5 0.000000 25.824877 26.625000 58.225006 # 5 -3609 646 5 0.000000 25.824877 26.625000 61.574997 # 5 -3610 646 5 0.000000 24.595121 25.915003 61.574997 # 5 -3611 644 5 0.000000 27.054632 27.335001 58.225006 # 5 -3612 644 5 0.000000 28.284389 26.625000 58.225006 # 5 -3613 646 5 0.000000 28.284389 26.625000 61.574997 # 5 -3614 646 5 0.000000 27.054632 25.915003 61.574997 # 5 -3615 644 5 0.000000 29.514145 27.335001 58.225006 # 5 -3616 644 5 0.000000 30.743900 26.625000 58.225006 # 5 -3617 646 5 0.000000 30.743900 26.625000 61.574997 # 5 -3618 646 5 0.000000 29.514145 25.915003 61.574997 # 5 -3619 644 5 0.000000 31.973658 27.335001 58.225006 # 5 -3620 646 5 0.000000 31.973658 25.915003 61.574997 # 5 -3621 644 5 0.000000 1.229756 29.465000 58.225006 # 5 -3622 644 5 0.000000 2.459512 28.754999 58.225006 # 5 -3623 646 5 0.000000 2.459512 28.754999 61.574997 # 5 -3624 646 5 0.000000 1.229756 28.045000 61.574997 # 5 -3625 644 5 0.000000 3.689268 29.465000 58.225006 # 5 -3626 644 5 0.000000 4.919024 28.754999 58.225006 # 5 -3627 646 5 0.000000 4.919024 28.754999 61.574997 # 5 -3628 646 5 0.000000 3.689268 28.045000 61.574997 # 5 -3629 644 5 0.000000 6.148780 29.465000 58.225006 # 5 -3630 644 5 0.000000 7.378536 28.754999 58.225006 # 5 -3631 646 5 0.000000 7.378536 28.754999 61.574997 # 5 -3632 646 5 0.000000 6.148780 28.045000 61.574997 # 5 -3633 644 5 0.000000 8.608293 29.465000 58.225006 # 5 -3634 644 5 0.000000 9.838048 28.754999 58.225006 # 5 -3635 646 5 0.000000 9.838048 28.754999 61.574997 # 5 -3636 646 5 0.000000 8.608293 28.045000 61.574997 # 5 -3637 644 5 0.000000 11.067804 29.465000 58.225006 # 5 -3638 644 5 0.000000 12.297561 28.754999 58.225006 # 5 -3639 646 5 0.000000 12.297561 28.754999 61.574997 # 5 -3640 646 5 0.000000 11.067804 28.045000 61.574997 # 5 -3641 644 5 0.000000 13.527316 29.465000 58.225006 # 5 -3642 644 5 0.000000 14.757072 28.754999 58.225006 # 5 -3643 646 5 0.000000 14.757072 28.754999 61.574997 # 5 -3644 646 5 0.000000 13.527316 28.045000 61.574997 # 5 -3645 644 5 0.000000 15.986829 29.465000 58.225006 # 5 -3646 644 5 0.000000 17.216585 28.754999 58.225006 # 5 -3647 646 5 0.000000 17.216585 28.754999 61.574997 # 5 -3648 646 5 0.000000 15.986829 28.045000 61.574997 # 5 -3649 644 5 0.000000 18.446341 29.465000 58.225006 # 5 -3650 644 5 0.000000 19.676096 28.754999 58.225006 # 5 -3651 646 5 0.000000 19.676096 28.754999 61.574997 # 5 -3652 646 5 0.000000 18.446341 28.045000 61.574997 # 5 -3653 644 5 0.000000 20.905853 29.465000 58.225006 # 5 -3654 644 5 0.000000 22.135609 28.754999 58.225006 # 5 -3655 646 5 0.000000 22.135609 28.754999 61.574997 # 5 -3656 646 5 0.000000 20.905853 28.045000 61.574997 # 5 -3657 644 5 0.000000 23.365364 29.465000 58.225006 # 5 -3658 644 5 0.000000 24.595121 28.754999 58.225006 # 5 -3659 646 5 0.000000 24.595121 28.754999 61.574997 # 5 -3660 646 5 0.000000 23.365364 28.045000 61.574997 # 5 -3661 644 5 0.000000 25.824877 29.465000 58.225006 # 5 -3662 644 5 0.000000 27.054632 28.754999 58.225006 # 5 -3663 646 5 0.000000 27.054632 28.754999 61.574997 # 5 -3664 646 5 0.000000 25.824877 28.045000 61.574997 # 5 -3665 644 5 0.000000 28.284389 29.465000 58.225006 # 5 -3666 644 5 0.000000 29.514145 28.754999 58.225006 # 5 -3667 646 5 0.000000 29.514145 28.754999 61.574997 # 5 -3668 646 5 0.000000 28.284389 28.045000 61.574997 # 5 -3669 644 5 0.000000 30.743900 29.465000 58.225006 # 5 -3670 644 5 0.000000 31.973658 28.754999 58.225006 # 5 -3671 646 5 0.000000 31.973658 28.754999 61.574997 # 5 -3672 646 5 0.000000 30.743900 28.045000 61.574997 # 5 -3673 644 5 0.000000 1.229756 30.885000 58.225006 # 5 -3674 646 5 0.000000 1.229756 30.885000 61.574997 # 5 -3675 644 5 0.000000 2.459512 31.594999 58.225006 # 5 -3676 644 5 0.000000 3.689268 30.885000 58.225006 # 5 -3677 646 5 0.000000 3.689268 30.885000 61.574997 # 5 -3678 646 5 0.000000 2.459512 30.174999 61.574997 # 5 -3679 644 5 0.000000 4.919024 31.594999 58.225006 # 5 -3680 644 5 0.000000 6.148780 30.885000 58.225006 # 5 -3681 646 5 0.000000 6.148780 30.885000 61.574997 # 5 -3682 646 5 0.000000 4.919024 30.174999 61.574997 # 5 -3683 644 5 0.000000 7.378536 31.594999 58.225006 # 5 -3684 644 5 0.000000 8.608293 30.885000 58.225006 # 5 -3685 646 5 0.000000 8.608293 30.885000 61.574997 # 5 -3686 646 5 0.000000 7.378536 30.174999 61.574997 # 5 -3687 644 5 0.000000 9.838048 31.594999 58.225006 # 5 -3688 644 5 0.000000 11.067804 30.885000 58.225006 # 5 -3689 646 5 0.000000 11.067804 30.885000 61.574997 # 5 -3690 646 5 0.000000 9.838048 30.174999 61.574997 # 5 -3691 644 5 0.000000 12.297561 31.594999 58.225006 # 5 -3692 644 5 0.000000 13.527316 30.885000 58.225006 # 5 -3693 646 5 0.000000 13.527316 30.885000 61.574997 # 5 -3694 646 5 0.000000 12.297561 30.174999 61.574997 # 5 -3695 644 5 0.000000 14.757072 31.594999 58.225006 # 5 -3696 644 5 0.000000 15.986829 30.885000 58.225006 # 5 -3697 646 5 0.000000 15.986829 30.885000 61.574997 # 5 -3698 646 5 0.000000 14.757072 30.174999 61.574997 # 5 -3699 644 5 0.000000 17.216585 31.594999 58.225006 # 5 -3700 644 5 0.000000 18.446341 30.885000 58.225006 # 5 -3701 646 5 0.000000 18.446341 30.885000 61.574997 # 5 -3702 646 5 0.000000 17.216585 30.174999 61.574997 # 5 -3703 644 5 0.000000 19.676096 31.594999 58.225006 # 5 -3704 644 5 0.000000 20.905853 30.885000 58.225006 # 5 -3705 646 5 0.000000 20.905853 30.885000 61.574997 # 5 -3706 646 5 0.000000 19.676096 30.174999 61.574997 # 5 -3707 644 5 0.000000 22.135609 31.594999 58.225006 # 5 -3708 644 5 0.000000 23.365364 30.885000 58.225006 # 5 -3709 646 5 0.000000 23.365364 30.885000 61.574997 # 5 -3710 646 5 0.000000 22.135609 30.174999 61.574997 # 5 -3711 644 5 0.000000 24.595121 31.594999 58.225006 # 5 -3712 644 5 0.000000 25.824877 30.885000 58.225006 # 5 -3713 646 5 0.000000 25.824877 30.885000 61.574997 # 5 -3714 646 5 0.000000 24.595121 30.174999 61.574997 # 5 -3715 644 5 0.000000 27.054632 31.594999 58.225006 # 5 -3716 644 5 0.000000 28.284389 30.885000 58.225006 # 5 -3717 646 5 0.000000 28.284389 30.885000 61.574997 # 5 -3718 646 5 0.000000 27.054632 30.174999 61.574997 # 5 -3719 644 5 0.000000 29.514145 31.594999 58.225006 # 5 -3720 644 5 0.000000 30.743900 30.885000 58.225006 # 5 -3721 646 5 0.000000 30.743900 30.885000 61.574997 # 5 -3722 646 5 0.000000 29.514145 30.174999 61.574997 # 5 -3723 644 5 0.000000 31.973658 31.594999 58.225006 # 5 -3724 646 5 0.000000 31.973658 30.174999 61.574997 # 5 -3725 644 5 0.000000 1.229756 33.724998 58.225006 # 5 -3726 644 5 0.000000 2.459512 33.014999 58.225006 # 5 -3727 646 5 0.000000 2.459512 33.014999 61.574997 # 5 -3728 646 5 0.000000 1.229756 32.305000 61.574997 # 5 -3729 644 5 0.000000 3.689268 33.724998 58.225006 # 5 -3730 644 5 0.000000 4.919024 33.014999 58.225006 # 5 -3731 646 5 0.000000 4.919024 33.014999 61.574997 # 5 -3732 646 5 0.000000 3.689268 32.305000 61.574997 # 5 -3733 644 5 0.000000 6.148780 33.724998 58.225006 # 5 -3734 644 5 0.000000 7.378536 33.014999 58.225006 # 5 -3735 646 5 0.000000 7.378536 33.014999 61.574997 # 5 -3736 646 5 0.000000 6.148780 32.305000 61.574997 # 5 -3737 644 5 0.000000 8.608293 33.724998 58.225006 # 5 -3738 644 5 0.000000 9.838048 33.014999 58.225006 # 5 -3739 646 5 0.000000 9.838048 33.014999 61.574997 # 5 -3740 646 5 0.000000 8.608293 32.305000 61.574997 # 5 -3741 644 5 0.000000 11.067804 33.724998 58.225006 # 5 -3742 644 5 0.000000 12.297561 33.014999 58.225006 # 5 -3743 646 5 0.000000 12.297561 33.014999 61.574997 # 5 -3744 646 5 0.000000 11.067804 32.305000 61.574997 # 5 -3745 644 5 0.000000 13.527316 33.724998 58.225006 # 5 -3746 644 5 0.000000 14.757072 33.014999 58.225006 # 5 -3747 646 5 0.000000 14.757072 33.014999 61.574997 # 5 -3748 646 5 0.000000 13.527316 32.305000 61.574997 # 5 -3749 644 5 0.000000 15.986829 33.724998 58.225006 # 5 -3750 644 5 0.000000 17.216585 33.014999 58.225006 # 5 -3751 646 5 0.000000 17.216585 33.014999 61.574997 # 5 -3752 646 5 0.000000 15.986829 32.305000 61.574997 # 5 -3753 644 5 0.000000 18.446341 33.724998 58.225006 # 5 -3754 644 5 0.000000 19.676096 33.014999 58.225006 # 5 -3755 646 5 0.000000 19.676096 33.014999 61.574997 # 5 -3756 646 5 0.000000 18.446341 32.305000 61.574997 # 5 -3757 644 5 0.000000 20.905853 33.724998 58.225006 # 5 -3758 644 5 0.000000 22.135609 33.014999 58.225006 # 5 -3759 646 5 0.000000 22.135609 33.014999 61.574997 # 5 -3760 646 5 0.000000 20.905853 32.305000 61.574997 # 5 -3761 644 5 0.000000 23.365364 33.724998 58.225006 # 5 -3762 644 5 0.000000 24.595121 33.014999 58.225006 # 5 -3763 646 5 0.000000 24.595121 33.014999 61.574997 # 5 -3764 646 5 0.000000 23.365364 32.305000 61.574997 # 5 -3765 644 5 0.000000 25.824877 33.724998 58.225006 # 5 -3766 644 5 0.000000 27.054632 33.014999 58.225006 # 5 -3767 646 5 0.000000 27.054632 33.014999 61.574997 # 5 -3768 646 5 0.000000 25.824877 32.305000 61.574997 # 5 -3769 644 5 0.000000 28.284389 33.724998 58.225006 # 5 -3770 644 5 0.000000 29.514145 33.014999 58.225006 # 5 -3771 646 5 0.000000 29.514145 33.014999 61.574997 # 5 -3772 646 5 0.000000 28.284389 32.305000 61.574997 # 5 -3773 644 5 0.000000 30.743900 33.724998 58.225006 # 5 -3774 644 5 0.000000 31.973658 33.014999 58.225006 # 5 -3775 646 5 0.000000 31.973658 33.014999 61.574997 # 5 -3776 646 5 0.000000 30.743900 32.305000 61.574997 # 5 +2945 644 6 0.000000 1.229756 1.065000 58.225006 # 5 +2946 646 6 0.000000 1.229756 1.065000 61.574997 # 5 +2947 644 6 0.000000 2.459512 1.775000 58.225006 # 5 +2948 644 6 0.000000 3.689268 1.065000 58.225006 # 5 +2949 646 6 0.000000 3.689268 1.065000 61.574997 # 5 +2950 646 6 0.000000 2.459512 0.355000 61.574997 # 5 +2951 644 6 0.000000 4.919024 1.775000 58.225006 # 5 +2952 644 6 0.000000 6.148780 1.065000 58.225006 # 5 +2953 646 6 0.000000 6.148780 1.065000 61.574997 # 5 +2954 646 6 0.000000 4.919024 0.355000 61.574997 # 5 +2955 644 6 0.000000 7.378536 1.775000 58.225006 # 5 +2956 644 6 0.000000 8.608293 1.065000 58.225006 # 5 +2957 646 6 0.000000 8.608293 1.065000 61.574997 # 5 +2958 646 6 0.000000 7.378536 0.355000 61.574997 # 5 +2959 644 6 0.000000 9.838048 1.775000 58.225006 # 5 +2960 644 6 0.000000 11.067804 1.065000 58.225006 # 5 +2961 646 6 0.000000 11.067804 1.065000 61.574997 # 5 +2962 646 6 0.000000 9.838048 0.355000 61.574997 # 5 +2963 644 6 0.000000 12.297561 1.775000 58.225006 # 5 +2964 644 6 0.000000 13.527316 1.065000 58.225006 # 5 +2965 646 6 0.000000 13.527316 1.065000 61.574997 # 5 +2966 646 6 0.000000 12.297561 0.355000 61.574997 # 5 +2967 644 6 0.000000 14.757072 1.775000 58.225006 # 5 +2968 644 6 0.000000 15.986829 1.065000 58.225006 # 5 +2969 646 6 0.000000 15.986829 1.065000 61.574997 # 5 +2970 646 6 0.000000 14.757072 0.355000 61.574997 # 5 +2971 644 6 0.000000 17.216585 1.775000 58.225006 # 5 +2972 644 6 0.000000 18.446341 1.065000 58.225006 # 5 +2973 646 6 0.000000 18.446341 1.065000 61.574997 # 5 +2974 646 6 0.000000 17.216585 0.355000 61.574997 # 5 +2975 644 6 0.000000 19.676096 1.775000 58.225006 # 5 +2976 644 6 0.000000 20.905853 1.065000 58.225006 # 5 +2977 646 6 0.000000 20.905853 1.065000 61.574997 # 5 +2978 646 6 0.000000 19.676096 0.355000 61.574997 # 5 +2979 644 6 0.000000 22.135609 1.775000 58.225006 # 5 +2980 644 6 0.000000 23.365364 1.065000 58.225006 # 5 +2981 646 6 0.000000 23.365364 1.065000 61.574997 # 5 +2982 646 6 0.000000 22.135609 0.355000 61.574997 # 5 +2983 644 6 0.000000 24.595121 1.775000 58.225006 # 5 +2984 644 6 0.000000 25.824877 1.065000 58.225006 # 5 +2985 646 6 0.000000 25.824877 1.065000 61.574997 # 5 +2986 646 6 0.000000 24.595121 0.355000 61.574997 # 5 +2987 644 6 0.000000 27.054632 1.775000 58.225006 # 5 +2988 644 6 0.000000 28.284389 1.065000 58.225006 # 5 +2989 646 6 0.000000 28.284389 1.065000 61.574997 # 5 +2990 646 6 0.000000 27.054632 0.355000 61.574997 # 5 +2991 644 6 0.000000 29.514145 1.775000 58.225006 # 5 +2992 644 6 0.000000 30.743900 1.065000 58.225006 # 5 +2993 646 6 0.000000 30.743900 1.065000 61.574997 # 5 +2994 646 6 0.000000 29.514145 0.355000 61.574997 # 5 +2995 644 6 0.000000 31.973658 1.775000 58.225006 # 5 +2996 646 6 0.000000 31.973658 0.355000 61.574997 # 5 +2997 644 6 0.000000 1.229756 3.905000 58.225006 # 5 +2998 644 6 0.000000 2.459512 3.195000 58.225006 # 5 +2999 646 6 0.000000 2.459512 3.195000 61.574997 # 5 +3000 646 6 0.000000 1.229756 2.485000 61.574997 # 5 +3001 644 6 0.000000 3.689268 3.905000 58.225006 # 5 +3002 644 6 0.000000 4.919024 3.195000 58.225006 # 5 +3003 646 6 0.000000 4.919024 3.195000 61.574997 # 5 +3004 646 6 0.000000 3.689268 2.485000 61.574997 # 5 +3005 644 6 0.000000 6.148780 3.905000 58.225006 # 5 +3006 644 6 0.000000 7.378536 3.195000 58.225006 # 5 +3007 646 6 0.000000 7.378536 3.195000 61.574997 # 5 +3008 646 6 0.000000 6.148780 2.485000 61.574997 # 5 +3009 644 6 0.000000 8.608293 3.905000 58.225006 # 5 +3010 644 6 0.000000 9.838048 3.195000 58.225006 # 5 +3011 646 6 0.000000 9.838048 3.195000 61.574997 # 5 +3012 646 6 0.000000 8.608293 2.485000 61.574997 # 5 +3013 644 6 0.000000 11.067804 3.905000 58.225006 # 5 +3014 644 6 0.000000 12.297561 3.195000 58.225006 # 5 +3015 646 6 0.000000 12.297561 3.195000 61.574997 # 5 +3016 646 6 0.000000 11.067804 2.485000 61.574997 # 5 +3017 644 6 0.000000 13.527316 3.905000 58.225006 # 5 +3018 644 6 0.000000 14.757072 3.195000 58.225006 # 5 +3019 646 6 0.000000 14.757072 3.195000 61.574997 # 5 +3020 646 6 0.000000 13.527316 2.485000 61.574997 # 5 +3021 644 6 0.000000 15.986829 3.905000 58.225006 # 5 +3022 644 6 0.000000 17.216585 3.195000 58.225006 # 5 +3023 646 6 0.000000 17.216585 3.195000 61.574997 # 5 +3024 646 6 0.000000 15.986829 2.485000 61.574997 # 5 +3025 644 6 0.000000 18.446341 3.905000 58.225006 # 5 +3026 644 6 0.000000 19.676096 3.195000 58.225006 # 5 +3027 646 6 0.000000 19.676096 3.195000 61.574997 # 5 +3028 646 6 0.000000 18.446341 2.485000 61.574997 # 5 +3029 644 6 0.000000 20.905853 3.905000 58.225006 # 5 +3030 644 6 0.000000 22.135609 3.195000 58.225006 # 5 +3031 646 6 0.000000 22.135609 3.195000 61.574997 # 5 +3032 646 6 0.000000 20.905853 2.485000 61.574997 # 5 +3033 644 6 0.000000 23.365364 3.905000 58.225006 # 5 +3034 644 6 0.000000 24.595121 3.195000 58.225006 # 5 +3035 646 6 0.000000 24.595121 3.195000 61.574997 # 5 +3036 646 6 0.000000 23.365364 2.485000 61.574997 # 5 +3037 644 6 0.000000 25.824877 3.905000 58.225006 # 5 +3038 644 6 0.000000 27.054632 3.195000 58.225006 # 5 +3039 646 6 0.000000 27.054632 3.195000 61.574997 # 5 +3040 646 6 0.000000 25.824877 2.485000 61.574997 # 5 +3041 644 6 0.000000 28.284389 3.905000 58.225006 # 5 +3042 644 6 0.000000 29.514145 3.195000 58.225006 # 5 +3043 646 6 0.000000 29.514145 3.195000 61.574997 # 5 +3044 646 6 0.000000 28.284389 2.485000 61.574997 # 5 +3045 644 6 0.000000 30.743900 3.905000 58.225006 # 5 +3046 644 6 0.000000 31.973658 3.195000 58.225006 # 5 +3047 646 6 0.000000 31.973658 3.195000 61.574997 # 5 +3048 646 6 0.000000 30.743900 2.485000 61.574997 # 5 +3049 644 6 0.000000 1.229756 5.325000 58.225006 # 5 +3050 646 6 0.000000 1.229756 5.325000 61.574997 # 5 +3051 644 6 0.000000 2.459512 6.035000 58.225006 # 5 +3052 644 6 0.000000 3.689268 5.325000 58.225006 # 5 +3053 646 6 0.000000 3.689268 5.325000 61.574997 # 5 +3054 646 6 0.000000 2.459512 4.615000 61.574997 # 5 +3055 644 6 0.000000 4.919024 6.035000 58.225006 # 5 +3056 644 6 0.000000 6.148780 5.325000 58.225006 # 5 +3057 646 6 0.000000 6.148780 5.325000 61.574997 # 5 +3058 646 6 0.000000 4.919024 4.615000 61.574997 # 5 +3059 644 6 0.000000 7.378536 6.035000 58.225006 # 5 +3060 644 6 0.000000 8.608293 5.325000 58.225006 # 5 +3061 646 6 0.000000 8.608293 5.325000 61.574997 # 5 +3062 646 6 0.000000 7.378536 4.615000 61.574997 # 5 +3063 644 6 0.000000 9.838048 6.035000 58.225006 # 5 +3064 644 6 0.000000 11.067804 5.325000 58.225006 # 5 +3065 646 6 0.000000 11.067804 5.325000 61.574997 # 5 +3066 646 6 0.000000 9.838048 4.615000 61.574997 # 5 +3067 644 6 0.000000 12.297561 6.035000 58.225006 # 5 +3068 644 6 0.000000 13.527316 5.325000 58.225006 # 5 +3069 646 6 0.000000 13.527316 5.325000 61.574997 # 5 +3070 646 6 0.000000 12.297561 4.615000 61.574997 # 5 +3071 644 6 0.000000 14.757072 6.035000 58.225006 # 5 +3072 644 6 0.000000 15.986829 5.325000 58.225006 # 5 +3073 646 6 0.000000 15.986829 5.325000 61.574997 # 5 +3074 646 6 0.000000 14.757072 4.615000 61.574997 # 5 +3075 644 6 0.000000 17.216585 6.035000 58.225006 # 5 +3076 644 6 0.000000 18.446341 5.325000 58.225006 # 5 +3077 646 6 0.000000 18.446341 5.325000 61.574997 # 5 +3078 646 6 0.000000 17.216585 4.615000 61.574997 # 5 +3079 644 6 0.000000 19.676096 6.035000 58.225006 # 5 +3080 644 6 0.000000 20.905853 5.325000 58.225006 # 5 +3081 646 6 0.000000 20.905853 5.325000 61.574997 # 5 +3082 646 6 0.000000 19.676096 4.615000 61.574997 # 5 +3083 644 6 0.000000 22.135609 6.035000 58.225006 # 5 +3084 644 6 0.000000 23.365364 5.325000 58.225006 # 5 +3085 646 6 0.000000 23.365364 5.325000 61.574997 # 5 +3086 646 6 0.000000 22.135609 4.615000 61.574997 # 5 +3087 644 6 0.000000 24.595121 6.035000 58.225006 # 5 +3088 644 6 0.000000 25.824877 5.325000 58.225006 # 5 +3089 646 6 0.000000 25.824877 5.325000 61.574997 # 5 +3090 646 6 0.000000 24.595121 4.615000 61.574997 # 5 +3091 644 6 0.000000 27.054632 6.035000 58.225006 # 5 +3092 644 6 0.000000 28.284389 5.325000 58.225006 # 5 +3093 646 6 0.000000 28.284389 5.325000 61.574997 # 5 +3094 646 6 0.000000 27.054632 4.615000 61.574997 # 5 +3095 644 6 0.000000 29.514145 6.035000 58.225006 # 5 +3096 644 6 0.000000 30.743900 5.325000 58.225006 # 5 +3097 646 6 0.000000 30.743900 5.325000 61.574997 # 5 +3098 646 6 0.000000 29.514145 4.615000 61.574997 # 5 +3099 644 6 0.000000 31.973658 6.035000 58.225006 # 5 +3100 646 6 0.000000 31.973658 4.615000 61.574997 # 5 +3101 644 6 0.000000 1.229756 8.165000 58.225006 # 5 +3102 644 6 0.000000 2.459512 7.455000 58.225006 # 5 +3103 646 6 0.000000 2.459512 7.455000 61.574997 # 5 +3104 646 6 0.000000 1.229756 6.745000 61.574997 # 5 +3105 644 6 0.000000 3.689268 8.165000 58.225006 # 5 +3106 644 6 0.000000 4.919024 7.455000 58.225006 # 5 +3107 646 6 0.000000 4.919024 7.455000 61.574997 # 5 +3108 646 6 0.000000 3.689268 6.745000 61.574997 # 5 +3109 644 6 0.000000 6.148780 8.165000 58.225006 # 5 +3110 644 6 0.000000 7.378536 7.455000 58.225006 # 5 +3111 646 6 0.000000 7.378536 7.455000 61.574997 # 5 +3112 646 6 0.000000 6.148780 6.745000 61.574997 # 5 +3113 644 6 0.000000 8.608293 8.165000 58.225006 # 5 +3114 644 6 0.000000 9.838048 7.455000 58.225006 # 5 +3115 646 6 0.000000 9.838048 7.455000 61.574997 # 5 +3116 646 6 0.000000 8.608293 6.745000 61.574997 # 5 +3117 644 6 0.000000 11.067804 8.165000 58.225006 # 5 +3118 644 6 0.000000 12.297561 7.455000 58.225006 # 5 +3119 646 6 0.000000 12.297561 7.455000 61.574997 # 5 +3120 646 6 0.000000 11.067804 6.745000 61.574997 # 5 +3121 644 6 0.000000 13.527316 8.165000 58.225006 # 5 +3122 644 6 0.000000 14.757072 7.455000 58.225006 # 5 +3123 646 6 0.000000 14.757072 7.455000 61.574997 # 5 +3124 646 6 0.000000 13.527316 6.745000 61.574997 # 5 +3125 644 6 0.000000 15.986829 8.165000 58.225006 # 5 +3126 644 6 0.000000 17.216585 7.455000 58.225006 # 5 +3127 646 6 0.000000 17.216585 7.455000 61.574997 # 5 +3128 646 6 0.000000 15.986829 6.745000 61.574997 # 5 +3129 644 6 0.000000 18.446341 8.165000 58.225006 # 5 +3130 644 6 0.000000 19.676096 7.455000 58.225006 # 5 +3131 646 6 0.000000 19.676096 7.455000 61.574997 # 5 +3132 646 6 0.000000 18.446341 6.745000 61.574997 # 5 +3133 644 6 0.000000 20.905853 8.165000 58.225006 # 5 +3134 644 6 0.000000 22.135609 7.455000 58.225006 # 5 +3135 646 6 0.000000 22.135609 7.455000 61.574997 # 5 +3136 646 6 0.000000 20.905853 6.745000 61.574997 # 5 +3137 644 6 0.000000 23.365364 8.165000 58.225006 # 5 +3138 644 6 0.000000 24.595121 7.455000 58.225006 # 5 +3139 646 6 0.000000 24.595121 7.455000 61.574997 # 5 +3140 646 6 0.000000 23.365364 6.745000 61.574997 # 5 +3141 644 6 0.000000 25.824877 8.165000 58.225006 # 5 +3142 644 6 0.000000 27.054632 7.455000 58.225006 # 5 +3143 646 6 0.000000 27.054632 7.455000 61.574997 # 5 +3144 646 6 0.000000 25.824877 6.745000 61.574997 # 5 +3145 644 6 0.000000 28.284389 8.165000 58.225006 # 5 +3146 644 6 0.000000 29.514145 7.455000 58.225006 # 5 +3147 646 6 0.000000 29.514145 7.455000 61.574997 # 5 +3148 646 6 0.000000 28.284389 6.745000 61.574997 # 5 +3149 644 6 0.000000 30.743900 8.165000 58.225006 # 5 +3150 644 6 0.000000 31.973658 7.455000 58.225006 # 5 +3151 646 6 0.000000 31.973658 7.455000 61.574997 # 5 +3152 646 6 0.000000 30.743900 6.745000 61.574997 # 5 +3153 644 6 0.000000 1.229756 9.585000 58.225006 # 5 +3154 646 6 0.000000 1.229756 9.585000 61.574997 # 5 +3155 644 6 0.000000 2.459512 10.295000 58.225006 # 5 +3156 644 6 0.000000 3.689268 9.585000 58.225006 # 5 +3157 646 6 0.000000 3.689268 9.585000 61.574997 # 5 +3158 646 6 0.000000 2.459512 8.875000 61.574997 # 5 +3159 644 6 0.000000 4.919024 10.295000 58.225006 # 5 +3160 644 6 0.000000 6.148780 9.585000 58.225006 # 5 +3161 646 6 0.000000 6.148780 9.585000 61.574997 # 5 +3162 646 6 0.000000 4.919024 8.875000 61.574997 # 5 +3163 644 6 0.000000 7.378536 10.295000 58.225006 # 5 +3164 644 6 0.000000 8.608293 9.585000 58.225006 # 5 +3165 646 6 0.000000 8.608293 9.585000 61.574997 # 5 +3166 646 6 0.000000 7.378536 8.875000 61.574997 # 5 +3167 644 6 0.000000 9.838048 10.295000 58.225006 # 5 +3168 644 6 0.000000 11.067804 9.585000 58.225006 # 5 +3169 646 6 0.000000 11.067804 9.585000 61.574997 # 5 +3170 646 6 0.000000 9.838048 8.875000 61.574997 # 5 +3171 644 6 0.000000 12.297561 10.295000 58.225006 # 5 +3172 644 6 0.000000 13.527316 9.585000 58.225006 # 5 +3173 646 6 0.000000 13.527316 9.585000 61.574997 # 5 +3174 646 6 0.000000 12.297561 8.875000 61.574997 # 5 +3175 644 6 0.000000 14.757072 10.295000 58.225006 # 5 +3176 644 6 0.000000 15.986829 9.585000 58.225006 # 5 +3177 646 6 0.000000 15.986829 9.585000 61.574997 # 5 +3178 646 6 0.000000 14.757072 8.875000 61.574997 # 5 +3179 644 6 0.000000 17.216585 10.295000 58.225006 # 5 +3180 644 6 0.000000 18.446341 9.585000 58.225006 # 5 +3181 646 6 0.000000 18.446341 9.585000 61.574997 # 5 +3182 646 6 0.000000 17.216585 8.875000 61.574997 # 5 +3183 644 6 0.000000 19.676096 10.295000 58.225006 # 5 +3184 644 6 0.000000 20.905853 9.585000 58.225006 # 5 +3185 646 6 0.000000 20.905853 9.585000 61.574997 # 5 +3186 646 6 0.000000 19.676096 8.875000 61.574997 # 5 +3187 644 6 0.000000 22.135609 10.295000 58.225006 # 5 +3188 644 6 0.000000 23.365364 9.585000 58.225006 # 5 +3189 646 6 0.000000 23.365364 9.585000 61.574997 # 5 +3190 646 6 0.000000 22.135609 8.875000 61.574997 # 5 +3191 644 6 0.000000 24.595121 10.295000 58.225006 # 5 +3192 644 6 0.000000 25.824877 9.585000 58.225006 # 5 +3193 646 6 0.000000 25.824877 9.585000 61.574997 # 5 +3194 646 6 0.000000 24.595121 8.875000 61.574997 # 5 +3195 644 6 0.000000 27.054632 10.295000 58.225006 # 5 +3196 644 6 0.000000 28.284389 9.585000 58.225006 # 5 +3197 646 6 0.000000 28.284389 9.585000 61.574997 # 5 +3198 646 6 0.000000 27.054632 8.875000 61.574997 # 5 +3199 644 6 0.000000 29.514145 10.295000 58.225006 # 5 +3200 644 6 0.000000 30.743900 9.585000 58.225006 # 5 +3201 646 6 0.000000 30.743900 9.585000 61.574997 # 5 +3202 646 6 0.000000 29.514145 8.875000 61.574997 # 5 +3203 644 6 0.000000 31.973658 10.295000 58.225006 # 5 +3204 646 6 0.000000 31.973658 8.875000 61.574997 # 5 +3205 644 6 0.000000 1.229756 12.425000 58.225006 # 5 +3206 644 6 0.000000 2.459512 11.715001 58.225006 # 5 +3207 646 6 0.000000 2.459512 11.715001 61.574997 # 5 +3208 646 6 0.000000 1.229756 11.005000 61.574997 # 5 +3209 644 6 0.000000 3.689268 12.425000 58.225006 # 5 +3210 644 6 0.000000 4.919024 11.715001 58.225006 # 5 +3211 646 6 0.000000 4.919024 11.715001 61.574997 # 5 +3212 646 6 0.000000 3.689268 11.005000 61.574997 # 5 +3213 644 6 0.000000 6.148780 12.425000 58.225006 # 5 +3214 644 6 0.000000 7.378536 11.715001 58.225006 # 5 +3215 646 6 0.000000 7.378536 11.715001 61.574997 # 5 +3216 646 6 0.000000 6.148780 11.005000 61.574997 # 5 +3217 644 6 0.000000 8.608293 12.425000 58.225006 # 5 +3218 644 6 0.000000 9.838048 11.715001 58.225006 # 5 +3219 646 6 0.000000 9.838048 11.715001 61.574997 # 5 +3220 646 6 0.000000 8.608293 11.005000 61.574997 # 5 +3221 644 6 0.000000 11.067804 12.425000 58.225006 # 5 +3222 644 6 0.000000 12.297561 11.715001 58.225006 # 5 +3223 646 6 0.000000 12.297561 11.715001 61.574997 # 5 +3224 646 6 0.000000 11.067804 11.005000 61.574997 # 5 +3225 644 6 0.000000 13.527316 12.425000 58.225006 # 5 +3226 644 6 0.000000 14.757072 11.715001 58.225006 # 5 +3227 646 6 0.000000 14.757072 11.715001 61.574997 # 5 +3228 646 6 0.000000 13.527316 11.005000 61.574997 # 5 +3229 644 6 0.000000 15.986829 12.425000 58.225006 # 5 +3230 644 6 0.000000 17.216585 11.715001 58.225006 # 5 +3231 646 6 0.000000 17.216585 11.715001 61.574997 # 5 +3232 646 6 0.000000 15.986829 11.005000 61.574997 # 5 +3233 644 6 0.000000 18.446341 12.425000 58.225006 # 5 +3234 644 6 0.000000 19.676096 11.715001 58.225006 # 5 +3235 646 6 0.000000 19.676096 11.715001 61.574997 # 5 +3236 646 6 0.000000 18.446341 11.005000 61.574997 # 5 +3237 644 6 0.000000 20.905853 12.425000 58.225006 # 5 +3238 644 6 0.000000 22.135609 11.715001 58.225006 # 5 +3239 646 6 0.000000 22.135609 11.715001 61.574997 # 5 +3240 646 6 0.000000 20.905853 11.005000 61.574997 # 5 +3241 644 6 0.000000 23.365364 12.425000 58.225006 # 5 +3242 644 6 0.000000 24.595121 11.715001 58.225006 # 5 +3243 646 6 0.000000 24.595121 11.715001 61.574997 # 5 +3244 646 6 0.000000 23.365364 11.005000 61.574997 # 5 +3245 644 6 0.000000 25.824877 12.425000 58.225006 # 5 +3246 644 6 0.000000 27.054632 11.715001 58.225006 # 5 +3247 646 6 0.000000 27.054632 11.715001 61.574997 # 5 +3248 646 6 0.000000 25.824877 11.005000 61.574997 # 5 +3249 644 6 0.000000 28.284389 12.425000 58.225006 # 5 +3250 644 6 0.000000 29.514145 11.715001 58.225006 # 5 +3251 646 6 0.000000 29.514145 11.715001 61.574997 # 5 +3252 646 6 0.000000 28.284389 11.005000 61.574997 # 5 +3253 644 6 0.000000 30.743900 12.425000 58.225006 # 5 +3254 644 6 0.000000 31.973658 11.715001 58.225006 # 5 +3255 646 6 0.000000 31.973658 11.715001 61.574997 # 5 +3256 646 6 0.000000 30.743900 11.005000 61.574997 # 5 +3257 644 6 0.000000 1.229756 13.845000 58.225006 # 5 +3258 646 6 0.000000 1.229756 13.845000 61.574997 # 5 +3259 644 6 0.000000 2.459512 14.555000 58.225006 # 5 +3260 644 6 0.000000 3.689268 13.845000 58.225006 # 5 +3261 646 6 0.000000 3.689268 13.845000 61.574997 # 5 +3262 646 6 0.000000 2.459512 13.135000 61.574997 # 5 +3263 644 6 0.000000 4.919024 14.555000 58.225006 # 5 +3264 644 6 0.000000 6.148780 13.845000 58.225006 # 5 +3265 646 6 0.000000 6.148780 13.845000 61.574997 # 5 +3266 646 6 0.000000 4.919024 13.135000 61.574997 # 5 +3267 644 6 0.000000 7.378536 14.555000 58.225006 # 5 +3268 644 6 0.000000 8.608293 13.845000 58.225006 # 5 +3269 646 6 0.000000 8.608293 13.845000 61.574997 # 5 +3270 646 6 0.000000 7.378536 13.135000 61.574997 # 5 +3271 644 6 0.000000 9.838048 14.555000 58.225006 # 5 +3272 644 6 0.000000 11.067804 13.845000 58.225006 # 5 +3273 646 6 0.000000 11.067804 13.845000 61.574997 # 5 +3274 646 6 0.000000 9.838048 13.135000 61.574997 # 5 +3275 644 6 0.000000 12.297561 14.555000 58.225006 # 5 +3276 644 6 0.000000 13.527316 13.845000 58.225006 # 5 +3277 646 6 0.000000 13.527316 13.845000 61.574997 # 5 +3278 646 6 0.000000 12.297561 13.135000 61.574997 # 5 +3279 644 6 0.000000 14.757072 14.555000 58.225006 # 5 +3280 644 6 0.000000 15.986829 13.845000 58.225006 # 5 +3281 646 6 0.000000 15.986829 13.845000 61.574997 # 5 +3282 646 6 0.000000 14.757072 13.135000 61.574997 # 5 +3283 644 6 0.000000 17.216585 14.555000 58.225006 # 5 +3284 644 6 0.000000 18.446341 13.845000 58.225006 # 5 +3285 646 6 0.000000 18.446341 13.845000 61.574997 # 5 +3286 646 6 0.000000 17.216585 13.135000 61.574997 # 5 +3287 644 6 0.000000 19.676096 14.555000 58.225006 # 5 +3288 644 6 0.000000 20.905853 13.845000 58.225006 # 5 +3289 646 6 0.000000 20.905853 13.845000 61.574997 # 5 +3290 646 6 0.000000 19.676096 13.135000 61.574997 # 5 +3291 644 6 0.000000 22.135609 14.555000 58.225006 # 5 +3292 644 6 0.000000 23.365364 13.845000 58.225006 # 5 +3293 646 6 0.000000 23.365364 13.845000 61.574997 # 5 +3294 646 6 0.000000 22.135609 13.135000 61.574997 # 5 +3295 644 6 0.000000 24.595121 14.555000 58.225006 # 5 +3296 644 6 0.000000 25.824877 13.845000 58.225006 # 5 +3297 646 6 0.000000 25.824877 13.845000 61.574997 # 5 +3298 646 6 0.000000 24.595121 13.135000 61.574997 # 5 +3299 644 6 0.000000 27.054632 14.555000 58.225006 # 5 +3300 644 6 0.000000 28.284389 13.845000 58.225006 # 5 +3301 646 6 0.000000 28.284389 13.845000 61.574997 # 5 +3302 646 6 0.000000 27.054632 13.135000 61.574997 # 5 +3303 644 6 0.000000 29.514145 14.555000 58.225006 # 5 +3304 644 6 0.000000 30.743900 13.845000 58.225006 # 5 +3305 646 6 0.000000 30.743900 13.845000 61.574997 # 5 +3306 646 6 0.000000 29.514145 13.135000 61.574997 # 5 +3307 644 6 0.000000 31.973658 14.555000 58.225006 # 5 +3308 646 6 0.000000 31.973658 13.135000 61.574997 # 5 +3309 644 6 0.000000 1.229756 16.684999 58.225006 # 5 +3310 644 6 0.000000 2.459512 15.975000 58.225006 # 5 +3311 646 6 0.000000 2.459512 15.975000 61.574997 # 5 +3312 646 6 0.000000 1.229756 15.265000 61.574997 # 5 +3313 644 6 0.000000 3.689268 16.684999 58.225006 # 5 +3314 644 6 0.000000 4.919024 15.975000 58.225006 # 5 +3315 646 6 0.000000 4.919024 15.975000 61.574997 # 5 +3316 646 6 0.000000 3.689268 15.265000 61.574997 # 5 +3317 644 6 0.000000 6.148780 16.684999 58.225006 # 5 +3318 644 6 0.000000 7.378536 15.975000 58.225006 # 5 +3319 646 6 0.000000 7.378536 15.975000 61.574997 # 5 +3320 646 6 0.000000 6.148780 15.265000 61.574997 # 5 +3321 644 6 0.000000 8.608293 16.684999 58.225006 # 5 +3322 644 6 0.000000 9.838048 15.975000 58.225006 # 5 +3323 646 6 0.000000 9.838048 15.975000 61.574997 # 5 +3324 646 6 0.000000 8.608293 15.265000 61.574997 # 5 +3325 644 6 0.000000 11.067804 16.684999 58.225006 # 5 +3326 644 6 0.000000 12.297561 15.975000 58.225006 # 5 +3327 646 6 0.000000 12.297561 15.975000 61.574997 # 5 +3328 646 6 0.000000 11.067804 15.265000 61.574997 # 5 +3329 644 6 0.000000 13.527316 16.684999 58.225006 # 5 +3330 644 6 0.000000 14.757072 15.975000 58.225006 # 5 +3331 646 6 0.000000 14.757072 15.975000 61.574997 # 5 +3332 646 6 0.000000 13.527316 15.265000 61.574997 # 5 +3333 644 6 0.000000 15.986829 16.684999 58.225006 # 5 +3334 644 6 0.000000 17.216585 15.975000 58.225006 # 5 +3335 646 6 0.000000 17.216585 15.975000 61.574997 # 5 +3336 646 6 0.000000 15.986829 15.265000 61.574997 # 5 +3337 644 6 0.000000 18.446341 16.684999 58.225006 # 5 +3338 644 6 0.000000 19.676096 15.975000 58.225006 # 5 +3339 646 6 0.000000 19.676096 15.975000 61.574997 # 5 +3340 646 6 0.000000 18.446341 15.265000 61.574997 # 5 +3341 644 6 0.000000 20.905853 16.684999 58.225006 # 5 +3342 644 6 0.000000 22.135609 15.975000 58.225006 # 5 +3343 646 6 0.000000 22.135609 15.975000 61.574997 # 5 +3344 646 6 0.000000 20.905853 15.265000 61.574997 # 5 +3345 644 6 0.000000 23.365364 16.684999 58.225006 # 5 +3346 644 6 0.000000 24.595121 15.975000 58.225006 # 5 +3347 646 6 0.000000 24.595121 15.975000 61.574997 # 5 +3348 646 6 0.000000 23.365364 15.265000 61.574997 # 5 +3349 644 6 0.000000 25.824877 16.684999 58.225006 # 5 +3350 644 6 0.000000 27.054632 15.975000 58.225006 # 5 +3351 646 6 0.000000 27.054632 15.975000 61.574997 # 5 +3352 646 6 0.000000 25.824877 15.265000 61.574997 # 5 +3353 644 6 0.000000 28.284389 16.684999 58.225006 # 5 +3354 644 6 0.000000 29.514145 15.975000 58.225006 # 5 +3355 646 6 0.000000 29.514145 15.975000 61.574997 # 5 +3356 646 6 0.000000 28.284389 15.265000 61.574997 # 5 +3357 644 6 0.000000 30.743900 16.684999 58.225006 # 5 +3358 644 6 0.000000 31.973658 15.975000 58.225006 # 5 +3359 646 6 0.000000 31.973658 15.975000 61.574997 # 5 +3360 646 6 0.000000 30.743900 15.265000 61.574997 # 5 +3361 644 6 0.000000 1.229756 18.105000 58.225006 # 5 +3362 646 6 0.000000 1.229756 18.105000 61.574997 # 5 +3363 644 6 0.000000 2.459512 18.815001 58.225006 # 5 +3364 644 6 0.000000 3.689268 18.105000 58.225006 # 5 +3365 646 6 0.000000 3.689268 18.105000 61.574997 # 5 +3366 646 6 0.000000 2.459512 17.395000 61.574997 # 5 +3367 644 6 0.000000 4.919024 18.815001 58.225006 # 5 +3368 644 6 0.000000 6.148780 18.105000 58.225006 # 5 +3369 646 6 0.000000 6.148780 18.105000 61.574997 # 5 +3370 646 6 0.000000 4.919024 17.395000 61.574997 # 5 +3371 644 6 0.000000 7.378536 18.815001 58.225006 # 5 +3372 644 6 0.000000 8.608293 18.105000 58.225006 # 5 +3373 646 6 0.000000 8.608293 18.105000 61.574997 # 5 +3374 646 6 0.000000 7.378536 17.395000 61.574997 # 5 +3375 644 6 0.000000 9.838048 18.815001 58.225006 # 5 +3376 644 6 0.000000 11.067804 18.105000 58.225006 # 5 +3377 646 6 0.000000 11.067804 18.105000 61.574997 # 5 +3378 646 6 0.000000 9.838048 17.395000 61.574997 # 5 +3379 644 6 0.000000 12.297561 18.815001 58.225006 # 5 +3380 644 6 0.000000 13.527316 18.105000 58.225006 # 5 +3381 646 6 0.000000 13.527316 18.105000 61.574997 # 5 +3382 646 6 0.000000 12.297561 17.395000 61.574997 # 5 +3383 644 6 0.000000 14.757072 18.815001 58.225006 # 5 +3384 644 6 0.000000 15.986829 18.105000 58.225006 # 5 +3385 646 6 0.000000 15.986829 18.105000 61.574997 # 5 +3386 646 6 0.000000 14.757072 17.395000 61.574997 # 5 +3387 644 6 0.000000 17.216585 18.815001 58.225006 # 5 +3388 644 6 0.000000 18.446341 18.105000 58.225006 # 5 +3389 646 6 0.000000 18.446341 18.105000 61.574997 # 5 +3390 646 6 0.000000 17.216585 17.395000 61.574997 # 5 +3391 644 6 0.000000 19.676096 18.815001 58.225006 # 5 +3392 644 6 0.000000 20.905853 18.105000 58.225006 # 5 +3393 646 6 0.000000 20.905853 18.105000 61.574997 # 5 +3394 646 6 0.000000 19.676096 17.395000 61.574997 # 5 +3395 644 6 0.000000 22.135609 18.815001 58.225006 # 5 +3396 644 6 0.000000 23.365364 18.105000 58.225006 # 5 +3397 646 6 0.000000 23.365364 18.105000 61.574997 # 5 +3398 646 6 0.000000 22.135609 17.395000 61.574997 # 5 +3399 644 6 0.000000 24.595121 18.815001 58.225006 # 5 +3400 644 6 0.000000 25.824877 18.105000 58.225006 # 5 +3401 646 6 0.000000 25.824877 18.105000 61.574997 # 5 +3402 646 6 0.000000 24.595121 17.395000 61.574997 # 5 +3403 644 6 0.000000 27.054632 18.815001 58.225006 # 5 +3404 644 6 0.000000 28.284389 18.105000 58.225006 # 5 +3405 646 6 0.000000 28.284389 18.105000 61.574997 # 5 +3406 646 6 0.000000 27.054632 17.395000 61.574997 # 5 +3407 644 6 0.000000 29.514145 18.815001 58.225006 # 5 +3408 644 6 0.000000 30.743900 18.105000 58.225006 # 5 +3409 646 6 0.000000 30.743900 18.105000 61.574997 # 5 +3410 646 6 0.000000 29.514145 17.395000 61.574997 # 5 +3411 644 6 0.000000 31.973658 18.815001 58.225006 # 5 +3412 646 6 0.000000 31.973658 17.395000 61.574997 # 5 +3413 644 6 0.000000 1.229756 20.945002 58.225006 # 5 +3414 644 6 0.000000 2.459512 20.235001 58.225006 # 5 +3415 646 6 0.000000 2.459512 20.235001 61.574997 # 5 +3416 646 6 0.000000 1.229756 19.525000 61.574997 # 5 +3417 644 6 0.000000 3.689268 20.945002 58.225006 # 5 +3418 644 6 0.000000 4.919024 20.235001 58.225006 # 5 +3419 646 6 0.000000 4.919024 20.235001 61.574997 # 5 +3420 646 6 0.000000 3.689268 19.525000 61.574997 # 5 +3421 644 6 0.000000 6.148780 20.945002 58.225006 # 5 +3422 644 6 0.000000 7.378536 20.235001 58.225006 # 5 +3423 646 6 0.000000 7.378536 20.235001 61.574997 # 5 +3424 646 6 0.000000 6.148780 19.525000 61.574997 # 5 +3425 644 6 0.000000 8.608293 20.945002 58.225006 # 5 +3426 644 6 0.000000 9.838048 20.235001 58.225006 # 5 +3427 646 6 0.000000 9.838048 20.235001 61.574997 # 5 +3428 646 6 0.000000 8.608293 19.525000 61.574997 # 5 +3429 644 6 0.000000 11.067804 20.945002 58.225006 # 5 +3430 644 6 0.000000 12.297561 20.235001 58.225006 # 5 +3431 646 6 0.000000 12.297561 20.235001 61.574997 # 5 +3432 646 6 0.000000 11.067804 19.525000 61.574997 # 5 +3433 644 6 0.000000 13.527316 20.945002 58.225006 # 5 +3434 644 6 0.000000 14.757072 20.235001 58.225006 # 5 +3435 646 6 0.000000 14.757072 20.235001 61.574997 # 5 +3436 646 6 0.000000 13.527316 19.525000 61.574997 # 5 +3437 644 6 0.000000 15.986829 20.945002 58.225006 # 5 +3438 644 6 0.000000 17.216585 20.235001 58.225006 # 5 +3439 646 6 0.000000 17.216585 20.235001 61.574997 # 5 +3440 646 6 0.000000 15.986829 19.525000 61.574997 # 5 +3441 644 6 0.000000 18.446341 20.945002 58.225006 # 5 +3442 644 6 0.000000 19.676096 20.235001 58.225006 # 5 +3443 646 6 0.000000 19.676096 20.235001 61.574997 # 5 +3444 646 6 0.000000 18.446341 19.525000 61.574997 # 5 +3445 644 6 0.000000 20.905853 20.945002 58.225006 # 5 +3446 644 6 0.000000 22.135609 20.235001 58.225006 # 5 +3447 646 6 0.000000 22.135609 20.235001 61.574997 # 5 +3448 646 6 0.000000 20.905853 19.525000 61.574997 # 5 +3449 644 6 0.000000 23.365364 20.945002 58.225006 # 5 +3450 644 6 0.000000 24.595121 20.235001 58.225006 # 5 +3451 646 6 0.000000 24.595121 20.235001 61.574997 # 5 +3452 646 6 0.000000 23.365364 19.525000 61.574997 # 5 +3453 644 6 0.000000 25.824877 20.945002 58.225006 # 5 +3454 644 6 0.000000 27.054632 20.235001 58.225006 # 5 +3455 646 6 0.000000 27.054632 20.235001 61.574997 # 5 +3456 646 6 0.000000 25.824877 19.525000 61.574997 # 5 +3457 644 6 0.000000 28.284389 20.945002 58.225006 # 5 +3458 644 6 0.000000 29.514145 20.235001 58.225006 # 5 +3459 646 6 0.000000 29.514145 20.235001 61.574997 # 5 +3460 646 6 0.000000 28.284389 19.525000 61.574997 # 5 +3461 644 6 0.000000 30.743900 20.945002 58.225006 # 5 +3462 644 6 0.000000 31.973658 20.235001 58.225006 # 5 +3463 646 6 0.000000 31.973658 20.235001 61.574997 # 5 +3464 646 6 0.000000 30.743900 19.525000 61.574997 # 5 +3465 644 6 0.000000 1.229756 22.365000 58.225006 # 5 +3466 646 6 0.000000 1.229756 22.365000 61.574997 # 5 +3467 644 6 0.000000 2.459512 23.075001 58.225006 # 5 +3468 644 6 0.000000 3.689268 22.365000 58.225006 # 5 +3469 646 6 0.000000 3.689268 22.365000 61.574997 # 5 +3470 646 6 0.000000 2.459512 21.655001 61.574997 # 5 +3471 644 6 0.000000 4.919024 23.075001 58.225006 # 5 +3472 644 6 0.000000 6.148780 22.365000 58.225006 # 5 +3473 646 6 0.000000 6.148780 22.365000 61.574997 # 5 +3474 646 6 0.000000 4.919024 21.655001 61.574997 # 5 +3475 644 6 0.000000 7.378536 23.075001 58.225006 # 5 +3476 644 6 0.000000 8.608293 22.365000 58.225006 # 5 +3477 646 6 0.000000 8.608293 22.365000 61.574997 # 5 +3478 646 6 0.000000 7.378536 21.655001 61.574997 # 5 +3479 644 6 0.000000 9.838048 23.075001 58.225006 # 5 +3480 644 6 0.000000 11.067804 22.365000 58.225006 # 5 +3481 646 6 0.000000 11.067804 22.365000 61.574997 # 5 +3482 646 6 0.000000 9.838048 21.655001 61.574997 # 5 +3483 644 6 0.000000 12.297561 23.075001 58.225006 # 5 +3484 644 6 0.000000 13.527316 22.365000 58.225006 # 5 +3485 646 6 0.000000 13.527316 22.365000 61.574997 # 5 +3486 646 6 0.000000 12.297561 21.655001 61.574997 # 5 +3487 644 6 0.000000 14.757072 23.075001 58.225006 # 5 +3488 644 6 0.000000 15.986829 22.365000 58.225006 # 5 +3489 646 6 0.000000 15.986829 22.365000 61.574997 # 5 +3490 646 6 0.000000 14.757072 21.655001 61.574997 # 5 +3491 644 6 0.000000 17.216585 23.075001 58.225006 # 5 +3492 644 6 0.000000 18.446341 22.365000 58.225006 # 5 +3493 646 6 0.000000 18.446341 22.365000 61.574997 # 5 +3494 646 6 0.000000 17.216585 21.655001 61.574997 # 5 +3495 644 6 0.000000 19.676096 23.075001 58.225006 # 5 +3496 644 6 0.000000 20.905853 22.365000 58.225006 # 5 +3497 646 6 0.000000 20.905853 22.365000 61.574997 # 5 +3498 646 6 0.000000 19.676096 21.655001 61.574997 # 5 +3499 644 6 0.000000 22.135609 23.075001 58.225006 # 5 +3500 644 6 0.000000 23.365364 22.365000 58.225006 # 5 +3501 646 6 0.000000 23.365364 22.365000 61.574997 # 5 +3502 646 6 0.000000 22.135609 21.655001 61.574997 # 5 +3503 644 6 0.000000 24.595121 23.075001 58.225006 # 5 +3504 644 6 0.000000 25.824877 22.365000 58.225006 # 5 +3505 646 6 0.000000 25.824877 22.365000 61.574997 # 5 +3506 646 6 0.000000 24.595121 21.655001 61.574997 # 5 +3507 644 6 0.000000 27.054632 23.075001 58.225006 # 5 +3508 644 6 0.000000 28.284389 22.365000 58.225006 # 5 +3509 646 6 0.000000 28.284389 22.365000 61.574997 # 5 +3510 646 6 0.000000 27.054632 21.655001 61.574997 # 5 +3511 644 6 0.000000 29.514145 23.075001 58.225006 # 5 +3512 644 6 0.000000 30.743900 22.365000 58.225006 # 5 +3513 646 6 0.000000 30.743900 22.365000 61.574997 # 5 +3514 646 6 0.000000 29.514145 21.655001 61.574997 # 5 +3515 644 6 0.000000 31.973658 23.075001 58.225006 # 5 +3516 646 6 0.000000 31.973658 21.655001 61.574997 # 5 +3517 644 6 0.000000 1.229756 25.205000 58.225006 # 5 +3518 644 6 0.000000 2.459512 24.495001 58.225006 # 5 +3519 646 6 0.000000 2.459512 24.495001 61.574997 # 5 +3520 646 6 0.000000 1.229756 23.785000 61.574997 # 5 +3521 644 6 0.000000 3.689268 25.205000 58.225006 # 5 +3522 644 6 0.000000 4.919024 24.495001 58.225006 # 5 +3523 646 6 0.000000 4.919024 24.495001 61.574997 # 5 +3524 646 6 0.000000 3.689268 23.785000 61.574997 # 5 +3525 644 6 0.000000 6.148780 25.205000 58.225006 # 5 +3526 644 6 0.000000 7.378536 24.495001 58.225006 # 5 +3527 646 6 0.000000 7.378536 24.495001 61.574997 # 5 +3528 646 6 0.000000 6.148780 23.785000 61.574997 # 5 +3529 644 6 0.000000 8.608293 25.205000 58.225006 # 5 +3530 644 6 0.000000 9.838048 24.495001 58.225006 # 5 +3531 646 6 0.000000 9.838048 24.495001 61.574997 # 5 +3532 646 6 0.000000 8.608293 23.785000 61.574997 # 5 +3533 644 6 0.000000 11.067804 25.205000 58.225006 # 5 +3534 644 6 0.000000 12.297561 24.495001 58.225006 # 5 +3535 646 6 0.000000 12.297561 24.495001 61.574997 # 5 +3536 646 6 0.000000 11.067804 23.785000 61.574997 # 5 +3537 644 6 0.000000 13.527316 25.205000 58.225006 # 5 +3538 644 6 0.000000 14.757072 24.495001 58.225006 # 5 +3539 646 6 0.000000 14.757072 24.495001 61.574997 # 5 +3540 646 6 0.000000 13.527316 23.785000 61.574997 # 5 +3541 644 6 0.000000 15.986829 25.205000 58.225006 # 5 +3542 644 6 0.000000 17.216585 24.495001 58.225006 # 5 +3543 646 6 0.000000 17.216585 24.495001 61.574997 # 5 +3544 646 6 0.000000 15.986829 23.785000 61.574997 # 5 +3545 644 6 0.000000 18.446341 25.205000 58.225006 # 5 +3546 644 6 0.000000 19.676096 24.495001 58.225006 # 5 +3547 646 6 0.000000 19.676096 24.495001 61.574997 # 5 +3548 646 6 0.000000 18.446341 23.785000 61.574997 # 5 +3549 644 6 0.000000 20.905853 25.205000 58.225006 # 5 +3550 644 6 0.000000 22.135609 24.495001 58.225006 # 5 +3551 646 6 0.000000 22.135609 24.495001 61.574997 # 5 +3552 646 6 0.000000 20.905853 23.785000 61.574997 # 5 +3553 644 6 0.000000 23.365364 25.205000 58.225006 # 5 +3554 644 6 0.000000 24.595121 24.495001 58.225006 # 5 +3555 646 6 0.000000 24.595121 24.495001 61.574997 # 5 +3556 646 6 0.000000 23.365364 23.785000 61.574997 # 5 +3557 644 6 0.000000 25.824877 25.205000 58.225006 # 5 +3558 644 6 0.000000 27.054632 24.495001 58.225006 # 5 +3559 646 6 0.000000 27.054632 24.495001 61.574997 # 5 +3560 646 6 0.000000 25.824877 23.785000 61.574997 # 5 +3561 644 6 0.000000 28.284389 25.205000 58.225006 # 5 +3562 644 6 0.000000 29.514145 24.495001 58.225006 # 5 +3563 646 6 0.000000 29.514145 24.495001 61.574997 # 5 +3564 646 6 0.000000 28.284389 23.785000 61.574997 # 5 +3565 644 6 0.000000 30.743900 25.205000 58.225006 # 5 +3566 644 6 0.000000 31.973658 24.495001 58.225006 # 5 +3567 646 6 0.000000 31.973658 24.495001 61.574997 # 5 +3568 646 6 0.000000 30.743900 23.785000 61.574997 # 5 +3569 644 6 0.000000 1.229756 26.625000 58.225006 # 5 +3570 646 6 0.000000 1.229756 26.625000 61.574997 # 5 +3571 644 6 0.000000 2.459512 27.335001 58.225006 # 5 +3572 644 6 0.000000 3.689268 26.625000 58.225006 # 5 +3573 646 6 0.000000 3.689268 26.625000 61.574997 # 5 +3574 646 6 0.000000 2.459512 25.915003 61.574997 # 5 +3575 644 6 0.000000 4.919024 27.335001 58.225006 # 5 +3576 644 6 0.000000 6.148780 26.625000 58.225006 # 5 +3577 646 6 0.000000 6.148780 26.625000 61.574997 # 5 +3578 646 6 0.000000 4.919024 25.915003 61.574997 # 5 +3579 644 6 0.000000 7.378536 27.335001 58.225006 # 5 +3580 644 6 0.000000 8.608293 26.625000 58.225006 # 5 +3581 646 6 0.000000 8.608293 26.625000 61.574997 # 5 +3582 646 6 0.000000 7.378536 25.915003 61.574997 # 5 +3583 644 6 0.000000 9.838048 27.335001 58.225006 # 5 +3584 644 6 0.000000 11.067804 26.625000 58.225006 # 5 +3585 646 6 0.000000 11.067804 26.625000 61.574997 # 5 +3586 646 6 0.000000 9.838048 25.915003 61.574997 # 5 +3587 644 6 0.000000 12.297561 27.335001 58.225006 # 5 +3588 644 6 0.000000 13.527316 26.625000 58.225006 # 5 +3589 646 6 0.000000 13.527316 26.625000 61.574997 # 5 +3590 646 6 0.000000 12.297561 25.915003 61.574997 # 5 +3591 644 6 0.000000 14.757072 27.335001 58.225006 # 5 +3592 644 6 0.000000 15.986829 26.625000 58.225006 # 5 +3593 646 6 0.000000 15.986829 26.625000 61.574997 # 5 +3594 646 6 0.000000 14.757072 25.915003 61.574997 # 5 +3595 644 6 0.000000 17.216585 27.335001 58.225006 # 5 +3596 644 6 0.000000 18.446341 26.625000 58.225006 # 5 +3597 646 6 0.000000 18.446341 26.625000 61.574997 # 5 +3598 646 6 0.000000 17.216585 25.915003 61.574997 # 5 +3599 644 6 0.000000 19.676096 27.335001 58.225006 # 5 +3600 644 6 0.000000 20.905853 26.625000 58.225006 # 5 +3601 646 6 0.000000 20.905853 26.625000 61.574997 # 5 +3602 646 6 0.000000 19.676096 25.915003 61.574997 # 5 +3603 644 6 0.000000 22.135609 27.335001 58.225006 # 5 +3604 644 6 0.000000 23.365364 26.625000 58.225006 # 5 +3605 646 6 0.000000 23.365364 26.625000 61.574997 # 5 +3606 646 6 0.000000 22.135609 25.915003 61.574997 # 5 +3607 644 6 0.000000 24.595121 27.335001 58.225006 # 5 +3608 644 6 0.000000 25.824877 26.625000 58.225006 # 5 +3609 646 6 0.000000 25.824877 26.625000 61.574997 # 5 +3610 646 6 0.000000 24.595121 25.915003 61.574997 # 5 +3611 644 6 0.000000 27.054632 27.335001 58.225006 # 5 +3612 644 6 0.000000 28.284389 26.625000 58.225006 # 5 +3613 646 6 0.000000 28.284389 26.625000 61.574997 # 5 +3614 646 6 0.000000 27.054632 25.915003 61.574997 # 5 +3615 644 6 0.000000 29.514145 27.335001 58.225006 # 5 +3616 644 6 0.000000 30.743900 26.625000 58.225006 # 5 +3617 646 6 0.000000 30.743900 26.625000 61.574997 # 5 +3618 646 6 0.000000 29.514145 25.915003 61.574997 # 5 +3619 644 6 0.000000 31.973658 27.335001 58.225006 # 5 +3620 646 6 0.000000 31.973658 25.915003 61.574997 # 5 +3621 644 6 0.000000 1.229756 29.465000 58.225006 # 5 +3622 644 6 0.000000 2.459512 28.754999 58.225006 # 5 +3623 646 6 0.000000 2.459512 28.754999 61.574997 # 5 +3624 646 6 0.000000 1.229756 28.045000 61.574997 # 5 +3625 644 6 0.000000 3.689268 29.465000 58.225006 # 5 +3626 644 6 0.000000 4.919024 28.754999 58.225006 # 5 +3627 646 6 0.000000 4.919024 28.754999 61.574997 # 5 +3628 646 6 0.000000 3.689268 28.045000 61.574997 # 5 +3629 644 6 0.000000 6.148780 29.465000 58.225006 # 5 +3630 644 6 0.000000 7.378536 28.754999 58.225006 # 5 +3631 646 6 0.000000 7.378536 28.754999 61.574997 # 5 +3632 646 6 0.000000 6.148780 28.045000 61.574997 # 5 +3633 644 6 0.000000 8.608293 29.465000 58.225006 # 5 +3634 644 6 0.000000 9.838048 28.754999 58.225006 # 5 +3635 646 6 0.000000 9.838048 28.754999 61.574997 # 5 +3636 646 6 0.000000 8.608293 28.045000 61.574997 # 5 +3637 644 6 0.000000 11.067804 29.465000 58.225006 # 5 +3638 644 6 0.000000 12.297561 28.754999 58.225006 # 5 +3639 646 6 0.000000 12.297561 28.754999 61.574997 # 5 +3640 646 6 0.000000 11.067804 28.045000 61.574997 # 5 +3641 644 6 0.000000 13.527316 29.465000 58.225006 # 5 +3642 644 6 0.000000 14.757072 28.754999 58.225006 # 5 +3643 646 6 0.000000 14.757072 28.754999 61.574997 # 5 +3644 646 6 0.000000 13.527316 28.045000 61.574997 # 5 +3645 644 6 0.000000 15.986829 29.465000 58.225006 # 5 +3646 644 6 0.000000 17.216585 28.754999 58.225006 # 5 +3647 646 6 0.000000 17.216585 28.754999 61.574997 # 5 +3648 646 6 0.000000 15.986829 28.045000 61.574997 # 5 +3649 644 6 0.000000 18.446341 29.465000 58.225006 # 5 +3650 644 6 0.000000 19.676096 28.754999 58.225006 # 5 +3651 646 6 0.000000 19.676096 28.754999 61.574997 # 5 +3652 646 6 0.000000 18.446341 28.045000 61.574997 # 5 +3653 644 6 0.000000 20.905853 29.465000 58.225006 # 5 +3654 644 6 0.000000 22.135609 28.754999 58.225006 # 5 +3655 646 6 0.000000 22.135609 28.754999 61.574997 # 5 +3656 646 6 0.000000 20.905853 28.045000 61.574997 # 5 +3657 644 6 0.000000 23.365364 29.465000 58.225006 # 5 +3658 644 6 0.000000 24.595121 28.754999 58.225006 # 5 +3659 646 6 0.000000 24.595121 28.754999 61.574997 # 5 +3660 646 6 0.000000 23.365364 28.045000 61.574997 # 5 +3661 644 6 0.000000 25.824877 29.465000 58.225006 # 5 +3662 644 6 0.000000 27.054632 28.754999 58.225006 # 5 +3663 646 6 0.000000 27.054632 28.754999 61.574997 # 5 +3664 646 6 0.000000 25.824877 28.045000 61.574997 # 5 +3665 644 6 0.000000 28.284389 29.465000 58.225006 # 5 +3666 644 6 0.000000 29.514145 28.754999 58.225006 # 5 +3667 646 6 0.000000 29.514145 28.754999 61.574997 # 5 +3668 646 6 0.000000 28.284389 28.045000 61.574997 # 5 +3669 644 6 0.000000 30.743900 29.465000 58.225006 # 5 +3670 644 6 0.000000 31.973658 28.754999 58.225006 # 5 +3671 646 6 0.000000 31.973658 28.754999 61.574997 # 5 +3672 646 6 0.000000 30.743900 28.045000 61.574997 # 5 +3673 644 6 0.000000 1.229756 30.885000 58.225006 # 5 +3674 646 6 0.000000 1.229756 30.885000 61.574997 # 5 +3675 644 6 0.000000 2.459512 31.594999 58.225006 # 5 +3676 644 6 0.000000 3.689268 30.885000 58.225006 # 5 +3677 646 6 0.000000 3.689268 30.885000 61.574997 # 5 +3678 646 6 0.000000 2.459512 30.174999 61.574997 # 5 +3679 644 6 0.000000 4.919024 31.594999 58.225006 # 5 +3680 644 6 0.000000 6.148780 30.885000 58.225006 # 5 +3681 646 6 0.000000 6.148780 30.885000 61.574997 # 5 +3682 646 6 0.000000 4.919024 30.174999 61.574997 # 5 +3683 644 6 0.000000 7.378536 31.594999 58.225006 # 5 +3684 644 6 0.000000 8.608293 30.885000 58.225006 # 5 +3685 646 6 0.000000 8.608293 30.885000 61.574997 # 5 +3686 646 6 0.000000 7.378536 30.174999 61.574997 # 5 +3687 644 6 0.000000 9.838048 31.594999 58.225006 # 5 +3688 644 6 0.000000 11.067804 30.885000 58.225006 # 5 +3689 646 6 0.000000 11.067804 30.885000 61.574997 # 5 +3690 646 6 0.000000 9.838048 30.174999 61.574997 # 5 +3691 644 6 0.000000 12.297561 31.594999 58.225006 # 5 +3692 644 6 0.000000 13.527316 30.885000 58.225006 # 5 +3693 646 6 0.000000 13.527316 30.885000 61.574997 # 5 +3694 646 6 0.000000 12.297561 30.174999 61.574997 # 5 +3695 644 6 0.000000 14.757072 31.594999 58.225006 # 5 +3696 644 6 0.000000 15.986829 30.885000 58.225006 # 5 +3697 646 6 0.000000 15.986829 30.885000 61.574997 # 5 +3698 646 6 0.000000 14.757072 30.174999 61.574997 # 5 +3699 644 6 0.000000 17.216585 31.594999 58.225006 # 5 +3700 644 6 0.000000 18.446341 30.885000 58.225006 # 5 +3701 646 6 0.000000 18.446341 30.885000 61.574997 # 5 +3702 646 6 0.000000 17.216585 30.174999 61.574997 # 5 +3703 644 6 0.000000 19.676096 31.594999 58.225006 # 5 +3704 644 6 0.000000 20.905853 30.885000 58.225006 # 5 +3705 646 6 0.000000 20.905853 30.885000 61.574997 # 5 +3706 646 6 0.000000 19.676096 30.174999 61.574997 # 5 +3707 644 6 0.000000 22.135609 31.594999 58.225006 # 5 +3708 644 6 0.000000 23.365364 30.885000 58.225006 # 5 +3709 646 6 0.000000 23.365364 30.885000 61.574997 # 5 +3710 646 6 0.000000 22.135609 30.174999 61.574997 # 5 +3711 644 6 0.000000 24.595121 31.594999 58.225006 # 5 +3712 644 6 0.000000 25.824877 30.885000 58.225006 # 5 +3713 646 6 0.000000 25.824877 30.885000 61.574997 # 5 +3714 646 6 0.000000 24.595121 30.174999 61.574997 # 5 +3715 644 6 0.000000 27.054632 31.594999 58.225006 # 5 +3716 644 6 0.000000 28.284389 30.885000 58.225006 # 5 +3717 646 6 0.000000 28.284389 30.885000 61.574997 # 5 +3718 646 6 0.000000 27.054632 30.174999 61.574997 # 5 +3719 644 6 0.000000 29.514145 31.594999 58.225006 # 5 +3720 644 6 0.000000 30.743900 30.885000 58.225006 # 5 +3721 646 6 0.000000 30.743900 30.885000 61.574997 # 5 +3722 646 6 0.000000 29.514145 30.174999 61.574997 # 5 +3723 644 6 0.000000 31.973658 31.594999 58.225006 # 5 +3724 646 6 0.000000 31.973658 30.174999 61.574997 # 5 +3725 644 6 0.000000 1.229756 33.724998 58.225006 # 5 +3726 644 6 0.000000 2.459512 33.014999 58.225006 # 5 +3727 646 6 0.000000 2.459512 33.014999 61.574997 # 5 +3728 646 6 0.000000 1.229756 32.305000 61.574997 # 5 +3729 644 6 0.000000 3.689268 33.724998 58.225006 # 5 +3730 644 6 0.000000 4.919024 33.014999 58.225006 # 5 +3731 646 6 0.000000 4.919024 33.014999 61.574997 # 5 +3732 646 6 0.000000 3.689268 32.305000 61.574997 # 5 +3733 644 6 0.000000 6.148780 33.724998 58.225006 # 5 +3734 644 6 0.000000 7.378536 33.014999 58.225006 # 5 +3735 646 6 0.000000 7.378536 33.014999 61.574997 # 5 +3736 646 6 0.000000 6.148780 32.305000 61.574997 # 5 +3737 644 6 0.000000 8.608293 33.724998 58.225006 # 5 +3738 644 6 0.000000 9.838048 33.014999 58.225006 # 5 +3739 646 6 0.000000 9.838048 33.014999 61.574997 # 5 +3740 646 6 0.000000 8.608293 32.305000 61.574997 # 5 +3741 644 6 0.000000 11.067804 33.724998 58.225006 # 5 +3742 644 6 0.000000 12.297561 33.014999 58.225006 # 5 +3743 646 6 0.000000 12.297561 33.014999 61.574997 # 5 +3744 646 6 0.000000 11.067804 32.305000 61.574997 # 5 +3745 644 6 0.000000 13.527316 33.724998 58.225006 # 5 +3746 644 6 0.000000 14.757072 33.014999 58.225006 # 5 +3747 646 6 0.000000 14.757072 33.014999 61.574997 # 5 +3748 646 6 0.000000 13.527316 32.305000 61.574997 # 5 +3749 644 6 0.000000 15.986829 33.724998 58.225006 # 5 +3750 644 6 0.000000 17.216585 33.014999 58.225006 # 5 +3751 646 6 0.000000 17.216585 33.014999 61.574997 # 5 +3752 646 6 0.000000 15.986829 32.305000 61.574997 # 5 +3753 644 6 0.000000 18.446341 33.724998 58.225006 # 5 +3754 644 6 0.000000 19.676096 33.014999 58.225006 # 5 +3755 646 6 0.000000 19.676096 33.014999 61.574997 # 5 +3756 646 6 0.000000 18.446341 32.305000 61.574997 # 5 +3757 644 6 0.000000 20.905853 33.724998 58.225006 # 5 +3758 644 6 0.000000 22.135609 33.014999 58.225006 # 5 +3759 646 6 0.000000 22.135609 33.014999 61.574997 # 5 +3760 646 6 0.000000 20.905853 32.305000 61.574997 # 5 +3761 644 6 0.000000 23.365364 33.724998 58.225006 # 5 +3762 644 6 0.000000 24.595121 33.014999 58.225006 # 5 +3763 646 6 0.000000 24.595121 33.014999 61.574997 # 5 +3764 646 6 0.000000 23.365364 32.305000 61.574997 # 5 +3765 644 6 0.000000 25.824877 33.724998 58.225006 # 5 +3766 644 6 0.000000 27.054632 33.014999 58.225006 # 5 +3767 646 6 0.000000 27.054632 33.014999 61.574997 # 5 +3768 646 6 0.000000 25.824877 32.305000 61.574997 # 5 +3769 644 6 0.000000 28.284389 33.724998 58.225006 # 5 +3770 644 6 0.000000 29.514145 33.014999 58.225006 # 5 +3771 646 6 0.000000 29.514145 33.014999 61.574997 # 5 +3772 646 6 0.000000 28.284389 32.305000 61.574997 # 5 +3773 644 6 0.000000 30.743900 33.724998 58.225006 # 5 +3774 644 6 0.000000 31.973658 33.014999 58.225006 # 5 +3775 646 6 0.000000 31.973658 33.014999 61.574997 # 5 +3776 646 6 0.000000 30.743900 32.305000 61.574997 # 5 Bonds diff --git a/examples/PACKAGES/electrode/graph-il/in.conp b/examples/PACKAGES/electrode/graph-il/in.conp index 12fcd88541..e5eec24da3 100644 --- a/examples/PACKAGES/electrode/graph-il/in.conp +++ b/examples/PACKAGES/electrode/graph-il/in.conp @@ -3,9 +3,9 @@ boundary p p f # slab calculation include settings.mod # styles, groups, computes and fixes -kspace_modify slab 3.0 +kspace_modify slab 3.0 # amat twostep -fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on +fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on #algo mat_inv thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop diff --git a/examples/PACKAGES/electrode/graph-il/in.conq b/examples/PACKAGES/electrode/graph-il/in.conq index 08429924d4..7f315a4b12 100644 --- a/examples/PACKAGES/electrode/graph-il/in.conq +++ b/examples/PACKAGES/electrode/graph-il/in.conq @@ -5,14 +5,10 @@ boundary p p f # slab calculation include settings.mod # styles, groups, computes and fixes kspace_modify slab 3.0 -fix conq bot electrode/conq -1.0 1.979 couple top 1.0 etypes 5 # conq doesn't take symm option - -# ask fix conq to output electrode potentials to internal variables -variable vbot internal 0.0 -variable vtop internal 0.0 -fix_modify conq set v bot vbot -fix_modify conq set v top vtop +fix conq bot electrode/conq -1.0 1.979 couple top 1.0 etypes on # symm on +variable dv equal f_conq[2]-f_conq[1] +# symm on and off give different electrode potentials, but identical potential difference thermo 50 -thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop +thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop f_conq[1] f_conq[2] v_dv run 500 diff --git a/examples/PACKAGES/electrode/graph-il/in.conq2 b/examples/PACKAGES/electrode/graph-il/in.conq2 index 46c9ecbf99..d860bf6c1a 100644 --- a/examples/PACKAGES/electrode/graph-il/in.conq2 +++ b/examples/PACKAGES/electrode/graph-il/in.conq2 @@ -5,30 +5,16 @@ boundary p p f # slab calculation include settings.mod # styles, groups, computes and fixes kspace_modify slab 3.0 -fix conp bot electrode/conp v_vbot 1.979 couple top v_vtop etypes 5 +fix conp bot electrode/conp v_vbot 1.979 couple top v_vtop etypes on -# get the four entries of electrode elastance matrix -variable me00 internal 0.0 -variable me01 internal 0.0 -variable me10 internal 0.0 -variable me11 internal 0.0 -fix_modify conp set me bot bot me00 -fix_modify conp set me bot top me01 -fix_modify conp set me top bot me10 -fix_modify conp set me top top me11 - -# get the 0V charges (qsb), and excess charge required to reach preset total charges -variable qsb_bot internal 0.0 -variable qsb_top internal 0.0 -fix_modify conp set qsb bot qsb_bot -fix_modify conp set qsb top qsb_top -variable qex_bot equal -1.0-v_qsb_bot # difference between desired and 0V charge -variable qex_top equal 1.0-v_qsb_top # difference between desired and 0V charge +variable qex_bot equal -1.0-f_conp[1][1] # difference between desired and 0V charge +variable qex_top equal 1.0-f_conp[2][1] # difference between desired and 0V charge # calculate imposed potential as elastance * excess charge # note: fix will wait until the run setup to look for its potential variables -variable vbot equal v_me00*v_qex_bot+v_me01*v_qex_top -variable vtop equal v_me10*v_qex_bot+v_me11*v_qex_top +# which is why we can define variable names *after* fix conp without error +variable vbot equal f_conp[1][4]*v_qex_bot+f_conp[1][5]*v_qex_top +variable vtop equal f_conp[2][4]*v_qex_bot+f_conp[2][5]*v_qex_top thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop diff --git a/examples/PACKAGES/electrode/graph-il/in.etypes b/examples/PACKAGES/electrode/graph-il/in.etypes index 30edebdc77..990c8bb415 100644 --- a/examples/PACKAGES/electrode/graph-il/in.etypes +++ b/examples/PACKAGES/electrode/graph-il/in.etypes @@ -5,7 +5,7 @@ boundary p p f # slab calculation include settings.mod # styles, groups, computes and fixes kspace_modify slab 3.0 -fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5 +fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes on thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop diff --git a/examples/PACKAGES/electrode/graph-il/in.ffield b/examples/PACKAGES/electrode/graph-il/in.ffield index 3d07402ffd..0771e91e62 100644 --- a/examples/PACKAGES/electrode/graph-il/in.ffield +++ b/examples/PACKAGES/electrode/graph-il/in.ffield @@ -4,7 +4,7 @@ boundary p p p # ffield uses periodic z-boundary and no slab include settings.mod # styles, groups, computes and fixes -fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5 ffield yes +fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes on ffield yes thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop diff --git a/examples/PACKAGES/electrode/graph-il/in.ramp b/examples/PACKAGES/electrode/graph-il/in.ramp index da6053ff9d..e4b897937d 100644 --- a/examples/PACKAGES/electrode/graph-il/in.ramp +++ b/examples/PACKAGES/electrode/graph-il/in.ramp @@ -6,7 +6,7 @@ include settings.mod # styles, groups, computes and fixes kspace_modify slab 3.0 variable v equal ramp(2,4) -fix conp bot electrode/conp 0.0 1.979 couple top v_v symm on etypes 5 +fix conp bot electrode/conp 0.0 1.979 couple top v_v symm on etypes on thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_v diff --git a/examples/PACKAGES/electrode/graph-il/in.thermo b/examples/PACKAGES/electrode/graph-il/in.thermo index a1d75196c9..eed574bff6 100644 --- a/examples/PACKAGES/electrode/graph-il/in.thermo +++ b/examples/PACKAGES/electrode/graph-il/in.thermo @@ -6,9 +6,9 @@ include settings.mod # styles, groups, computes and fixes kspace_modify slab 3.0 unfix nvt # remove NVT thermostat included from "settings.mod" -fix conpthermo bot electrode/thermo -1.0 1.979 couple top 1.0 etypes 5 temp 500 100 7 # temp tau rng +fix conpthermo bot electrode/thermo -1.0 1.979 couple top 1.0 etypes on temp 500 100 7 symm on # temp tau rng # to compare to regular constant potential, switch previous line to this: -#fix conp bot electrode/conp -1.0 1.979 couple top 1.0 etypes 5 symm on +#fix conp bot electrode/conp -1.0 1.979 couple top 1.0 etypes on symm on fix nve electrolyte nve # note ionic liquid does not reach 500K immediately diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conp.g++.1 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conp.g++.1 similarity index 51% rename from examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conp.g++.1 rename to examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conp.g++.1 index 086f109958..c5cd2579af 100644 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conp.g++.1 +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conp.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with constant potential # for graphene-ionic liquid supercapacitor @@ -37,13 +37,20 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-3 neighbors 1 = max # of 1-4 neighbors 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.036 seconds + special bonds CPU = 0.004 seconds + read_data CPU = 0.027 seconds -group bot molecule 641 -416 atoms in group bot -group top molecule 642 +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos 416 atoms in group top +group bot subtract ele top +416 atoms in group bot group bmi type 1 2 3 960 atoms in group bmi @@ -52,24 +59,54 @@ group electrolyte type 1 2 3 4 fix nvt electrolyte nvt temp 500.0 500.0 100 fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters 320 = # of frozen angles - find clusters CPU = 0.001 seconds + find clusters CPU = 0.005 seconds variable q atom q compute qtop top reduce sum v_q compute qbot bot reduce sum v_q compute ctemp electrolyte temp -kspace_modify slab 3.0 +kspace_modify slab 3.0 # amat twostep -fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on +fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on #algo mat_inv 832 atoms in group conp_group thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.20904498 @@ -79,9 +116,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.1149519e-07 using double precision MKL FFT 3d grid and FFT values/proc = 307242 204800 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule +Generated 15 of 15 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 18 ghost atom cutoff = 18 @@ -97,35 +134,35 @@ Neighbor list info ... pair build: copy stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 57.15 | 57.15 | 57.15 Mbytes +Per MPI rank memory allocation (min/avg/max) = 57.19 | 57.19 | 57.19 Mbytes Step Temp c_ctemp E_pair TotEng c_qbot c_qtop - 0 0 0 25137191 25137191 0.0085142912 -0.0085142912 + 0 0 0 25137190 25137190 0.0085142912 -0.0085142912 50 17.83755 64.26354 25137031 25137214 0.0045923944 -0.0045923944 - 100 48.393682 174.34846 25136774 25137273 -0.009514517 0.009514517 - 150 70.421272 253.7075 25136655 25137380 -0.033017005 0.033017005 - 200 82.204844 296.16031 25136667 25137514 -0.063668175 0.063668175 - 250 87.54223 315.38937 25136757 25137659 -0.096776257 0.096776257 - 300 91.704746 330.38571 25136865 25137810 -0.1283784 0.1283784 - 350 100.36017 361.56871 25136934 25137968 -0.15649799 0.15649799 - 400 111.37575 401.25467 25136986 25138133 -0.18065435 0.18065435 - 450 121.79848 438.80476 25137043 25138298 -0.19979365 0.19979365 - 500 126.95916 457.39718 25137145 25138453 -0.21037535 0.21037535 -Loop time of 103.439 on 1 procs for 500 steps with 3776 atoms + 100 48.393682 174.34846 25136775 25137273 -0.009514517 0.009514517 + 150 70.421272 253.7075 25136657 25137382 -0.033017005 0.033017005 + 200 82.204844 296.16031 25136670 25137517 -0.063668175 0.063668175 + 250 87.54223 315.38937 25136762 25137663 -0.096776257 0.096776257 + 300 91.704746 330.38571 25136871 25137816 -0.1283784 0.1283784 + 350 100.36017 361.56871 25136941 25137975 -0.15649799 0.15649799 + 400 111.37575 401.25467 25136994 25138141 -0.18065435 0.18065435 + 450 121.79848 438.80476 25137052 25138307 -0.19979365 0.19979365 + 500 126.95916 457.39718 25137155 25138463 -0.21037535 0.21037535 +Loop time of 91.5523 on 1 procs for 500 steps with 3776 atoms -Performance: 0.418 ns/day, 57.466 hours/ns, 4.834 timesteps/s -393.6% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.472 ns/day, 50.862 hours/ns, 5.461 timesteps/s, 20.622 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 19.309 | 19.309 | 19.309 | 0.0 | 18.67 -Bond | 0.0018867 | 0.0018867 | 0.0018867 | 0.0 | 0.00 -Kspace | 23.047 | 23.047 | 23.047 | 0.0 | 22.28 -Neigh | 0.25707 | 0.25707 | 0.25707 | 0.0 | 0.25 -Comm | 0.070734 | 0.070734 | 0.070734 | 0.0 | 0.07 -Output | 0.0023085 | 0.0023085 | 0.0023085 | 0.0 | 0.00 -Modify | 60.73 | 60.73 | 60.73 | 0.0 | 58.71 -Other | | 0.01994 | | | 0.02 +Pair | 18.906 | 18.906 | 18.906 | 0.0 | 20.65 +Bond | 0.0012922 | 0.0012922 | 0.0012922 | 0.0 | 0.00 +Kspace | 34.476 | 34.476 | 34.476 | 0.0 | 37.66 +Neigh | 0.26641 | 0.26641 | 0.26641 | 0.0 | 0.29 +Comm | 0.069067 | 0.069067 | 0.069067 | 0.0 | 0.08 +Output | 0.0021466 | 0.0021466 | 0.0021466 | 0.0 | 0.00 +Modify | 37.805 | 37.805 | 37.805 | 0.0 | 41.29 +Other | | 0.0271 | | | 0.03 Nlocal: 3776 ave 3776 max 3776 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -139,4 +176,4 @@ Ave neighs/atom = 457.18432 Ave special neighs/atom = 0.50847458 Neighbor list builds = 7 Dangerous builds = 0 -Total wall time: 0:03:10 +Total wall time: 0:01:48 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conp.g++.4 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conp.g++.4 similarity index 51% rename from examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conp.g++.4 rename to examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conp.g++.4 index f74768b08d..ba941705aa 100644 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conp.g++.4 +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conp.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with constant potential # for graphene-ionic liquid supercapacitor @@ -38,13 +38,20 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-3 neighbors 1 = max # of 1-4 neighbors 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.014 seconds + special bonds CPU = 0.003 seconds + read_data CPU = 0.038 seconds -group bot molecule 641 -416 atoms in group bot -group top molecule 642 +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos 416 atoms in group top +group bot subtract ele top +416 atoms in group bot group bmi type 1 2 3 960 atoms in group bmi @@ -53,24 +60,54 @@ group electrolyte type 1 2 3 4 fix nvt electrolyte nvt temp 500.0 500.0 100 fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters 320 = # of frozen angles - find clusters CPU = 0.001 seconds + find clusters CPU = 0.003 seconds variable q atom q compute qtop top reduce sum v_q compute qbot bot reduce sum v_q compute ctemp electrolyte temp -kspace_modify slab 3.0 +kspace_modify slab 3.0 # amat twostep -fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on +fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on #algo mat_inv 832 atoms in group conp_group thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.20904498 @@ -80,9 +117,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.1149519e-07 using double precision MKL FFT 3d grid and FFT values/proc = 151593 85504 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule +Generated 15 of 15 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 18 ghost atom cutoff = 18 @@ -98,35 +135,35 @@ Neighbor list info ... pair build: copy stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 23.13 | 26.96 | 30.79 Mbytes +Per MPI rank memory allocation (min/avg/max) = 23.16 | 26.99 | 30.82 Mbytes Step Temp c_ctemp E_pair TotEng c_qbot c_qtop - 0 0 0 25137191 25137191 0.0085142912 -0.0085142912 + 0 0 0 25137190 25137190 0.0085142912 -0.0085142912 50 17.83755 64.26354 25137031 25137214 0.0045923944 -0.0045923944 - 100 48.393682 174.34846 25136774 25137273 -0.009514517 0.009514517 - 150 70.421272 253.7075 25136655 25137380 -0.033017005 0.033017005 - 200 82.204844 296.16031 25136667 25137514 -0.063668175 0.063668175 - 250 87.54223 315.38937 25136757 25137659 -0.096776257 0.096776257 - 300 91.704746 330.38571 25136865 25137810 -0.1283784 0.1283784 - 350 100.36017 361.56871 25136934 25137968 -0.15649799 0.15649799 - 400 111.37575 401.25467 25136986 25138133 -0.18065435 0.18065435 - 450 121.79848 438.80476 25137043 25138298 -0.19979365 0.19979365 - 500 126.95916 457.39718 25137145 25138453 -0.21037535 0.21037535 -Loop time of 49.6656 on 4 procs for 500 steps with 3776 atoms + 100 48.393682 174.34846 25136775 25137273 -0.009514517 0.009514517 + 150 70.421272 253.7075 25136657 25137382 -0.033017005 0.033017005 + 200 82.204844 296.16031 25136670 25137517 -0.063668175 0.063668175 + 250 87.54223 315.38937 25136762 25137663 -0.096776257 0.096776257 + 300 91.704746 330.38571 25136871 25137816 -0.1283784 0.1283784 + 350 100.36017 361.56871 25136941 25137975 -0.15649799 0.15649799 + 400 111.37575 401.25467 25136994 25138141 -0.18065435 0.18065435 + 450 121.79848 438.80476 25137052 25138307 -0.19979365 0.19979365 + 500 126.95916 457.39718 25137155 25138463 -0.21037535 0.21037535 +Loop time of 49.6413 on 4 procs for 500 steps with 3776 atoms -Performance: 0.870 ns/day, 27.592 hours/ns, 10.067 timesteps/s -95.1% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 0.870 ns/day, 27.578 hours/ns, 10.072 timesteps/s, 38.033 katom-step/s +76.3% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 5.968 | 6.1677 | 6.382 | 6.5 | 12.42 -Bond | 0.00071151 | 0.00078617 | 0.00090387 | 0.0 | 0.00 -Kspace | 17.345 | 17.558 | 17.755 | 3.8 | 35.35 -Neigh | 0.10939 | 0.10945 | 0.10948 | 0.0 | 0.22 -Comm | 0.15295 | 0.15474 | 0.15699 | 0.4 | 0.31 -Output | 0.00074458 | 0.0010336 | 0.0018799 | 1.5 | 0.00 -Modify | 25.634 | 25.641 | 25.645 | 0.1 | 51.63 -Other | | 0.03276 | | | 0.07 +Pair | 5.3666 | 5.4998 | 5.6946 | 5.4 | 11.08 +Bond | 0.0011638 | 0.0012711 | 0.0014555 | 0.3 | 0.00 +Kspace | 24.047 | 24.241 | 24.374 | 2.6 | 48.83 +Neigh | 0.088235 | 0.088328 | 0.088432 | 0.0 | 0.18 +Comm | 0.30907 | 0.31913 | 0.32916 | 1.7 | 0.64 +Output | 0.0010669 | 0.0014463 | 0.0024232 | 1.5 | 0.00 +Modify | 19.435 | 19.445 | 19.454 | 0.2 | 39.17 +Other | | 0.04549 | | | 0.09 Nlocal: 944 ave 951 max 941 min Histogram: 1 2 0 0 0 0 0 0 0 1 @@ -140,4 +177,4 @@ Ave neighs/atom = 457.18432 Ave special neighs/atom = 0.50847458 Neighbor list builds = 7 Dangerous builds = 0 -Total wall time: 0:01:11 +Total wall time: 0:00:55 diff --git a/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq.g++.1 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq.g++.1 new file mode 100644 index 0000000000..c75238dc36 --- /dev/null +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq.g++.1 @@ -0,0 +1,186 @@ +LAMMPS (3 Nov 2022) +# electrodes with constrained total charges +# for graphene-ionic liquid supercapacitor + +boundary p p f # slab calculation +include settings.mod # styles, groups, computes and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 16 +bond_style harmonic +angle_style harmonic +kspace_style pppm/electrode 1e-7 +# kspace_modify in main script because ffield is periodic + +read_data "data.graph-il" +Reading data file ... + orthogonal box = (0 0 -68) to (32.2 34.4 68) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 3776 atoms + scanning bonds ... + 2 = max bonds/atom + scanning angles ... + 1 = max angles/atom + reading bonds ... + 640 bonds + reading angles ... + 320 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.002 seconds + read_data CPU = 0.023 seconds + +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos +416 atoms in group top +group bot subtract ele top +416 atoms in group bot + +group bmi type 1 2 3 +960 atoms in group bmi +group electrolyte type 1 2 3 4 +1280 atoms in group electrolyte + +fix nvt electrolyte nvt temp 500.0 500.0 100 +fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... + 0 = # of size 2 clusters + 0 = # of size 3 clusters + 0 = # of size 4 clusters + 320 = # of frozen angles + find clusters CPU = 0.002 seconds + +variable q atom q +compute qtop top reduce sum v_q +compute qbot bot reduce sum v_q +compute ctemp electrolyte temp +kspace_modify slab 3.0 + +fix conq bot electrode/conq -1.0 1.979 couple top 1.0 etypes on # symm on +832 atoms in group conp_group +variable dv equal f_conq[2]-f_conq[1] +# symm on and off give different electrode potentials, but identical potential difference + +thermo 50 +thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop f_conq[1] f_conq[2] v_dv +run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +PPPM/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.20904498 + grid = 32 32 200 + stencil order = 5 + estimated absolute RMS force accuracy = 3.7023506e-05 + estimated relative force accuracy = 1.1149519e-07 + using double precision MKL FFT + 3d grid and FFT values/proc = 307242 204800 +Generated 15 of 15 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 = 18 + ghost atom cutoff = 18 + binsize = 9, bins = 4 4 16 + 3 neighbor lists, perpetual/occasional/extra = 2 1 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conq, occasional, skip from (1) + attributes: half, newton on + pair build: skip + stencil: none + bin: none + (3) fix electrode/conq, perpetual, skip from (1) + attributes: half, newton on + pair build: skip + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 54.25 | 54.25 | 54.25 Mbytes + Step Temp c_ctemp E_pair TotEng c_qbot c_qtop f_conq[1] f_conq[2] v_dv + 0 0 0 25137446 25137446 -1 1 -9.931852 10.097344 20.029196 + 50 20.206425 72.797911 25137263 25137472 -1 1 -9.4359366 9.5964514 19.032388 + 100 55.931663 201.50563 25136961 25137537 -1 1 -8.0440112 8.1861787 16.23019 + 150 81.389273 293.22204 25136818 25137656 -1 1 -6.1113109 6.2267114 12.338022 + 200 92.867946 334.57639 25136841 25137798 -1 1 -4.1857807 4.2740694 8.4598501 + 250 97.518304 351.33028 25136942 25137946 -1 1 -2.8383703 2.9101475 5.7485179 + 300 102.36577 368.79431 25137045 25138099 -1 1 -2.3831643 2.4461115 4.8292759 + 350 113.66597 409.50566 25137086 25138256 -1 1 -2.7083563 2.7457811 5.4541374 + 400 122.8443 442.57252 25137148 25138413 -1 1 -3.4311003 3.3941657 6.825266 + 450 128.63713 463.44243 25137235 25138560 -1 1 -4.132871 3.9852959 8.1181669 + 500 131.18361 472.61665 25137344 25138695 -1 1 -4.5104095 4.2567261 8.7671355 +Loop time of 89.4461 on 1 procs for 500 steps with 3776 atoms + +Performance: 0.483 ns/day, 49.692 hours/ns, 5.590 timesteps/s, 21.108 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 19.404 | 19.404 | 19.404 | 0.0 | 21.69 +Bond | 0.0014902 | 0.0014902 | 0.0014902 | 0.0 | 0.00 +Kspace | 35.449 | 35.449 | 35.449 | 0.0 | 39.63 +Neigh | 0.26499 | 0.26499 | 0.26499 | 0.0 | 0.30 +Comm | 0.068497 | 0.068497 | 0.068497 | 0.0 | 0.08 +Output | 0.0023974 | 0.0023974 | 0.0023974 | 0.0 | 0.00 +Modify | 34.225 | 34.225 | 34.225 | 0.0 | 38.26 +Other | | 0.03044 | | | 0.03 + +Nlocal: 3776 ave 3776 max 3776 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 12510 ave 12510 max 12510 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1.72559e+06 ave 1.72559e+06 max 1.72559e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1725588 +Ave neighs/atom = 456.98835 +Ave special neighs/atom = 0.50847458 +Neighbor list builds = 6 +Dangerous builds = 0 +Total wall time: 0:01:48 diff --git a/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq.g++.4 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq.g++.4 new file mode 100644 index 0000000000..65a143ad13 --- /dev/null +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq.g++.4 @@ -0,0 +1,187 @@ +LAMMPS (3 Nov 2022) +# electrodes with constrained total charges +# for graphene-ionic liquid supercapacitor + +boundary p p f # slab calculation +include settings.mod # styles, groups, computes and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" +processors * * 2 + +atom_style full +pair_style lj/cut/coul/long 16 +bond_style harmonic +angle_style harmonic +kspace_style pppm/electrode 1e-7 +# kspace_modify in main script because ffield is periodic + +read_data "data.graph-il" +Reading data file ... + orthogonal box = (0 0 -68) to (32.2 34.4 68) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 3776 atoms + scanning bonds ... + 2 = max bonds/atom + scanning angles ... + 1 = max angles/atom + reading bonds ... + 640 bonds + reading angles ... + 320 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.002 seconds + read_data CPU = 0.034 seconds + +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos +416 atoms in group top +group bot subtract ele top +416 atoms in group bot + +group bmi type 1 2 3 +960 atoms in group bmi +group electrolyte type 1 2 3 4 +1280 atoms in group electrolyte + +fix nvt electrolyte nvt temp 500.0 500.0 100 +fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... + 0 = # of size 2 clusters + 0 = # of size 3 clusters + 0 = # of size 4 clusters + 320 = # of frozen angles + find clusters CPU = 0.002 seconds + +variable q atom q +compute qtop top reduce sum v_q +compute qbot bot reduce sum v_q +compute ctemp electrolyte temp +kspace_modify slab 3.0 + +fix conq bot electrode/conq -1.0 1.979 couple top 1.0 etypes on # symm on +832 atoms in group conp_group +variable dv equal f_conq[2]-f_conq[1] +# symm on and off give different electrode potentials, but identical potential difference + +thermo 50 +thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop f_conq[1] f_conq[2] v_dv +run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +PPPM/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.20904498 + grid = 32 32 200 + stencil order = 5 + estimated absolute RMS force accuracy = 3.7023506e-05 + estimated relative force accuracy = 1.1149519e-07 + using double precision MKL FFT + 3d grid and FFT values/proc = 151593 85504 +Generated 15 of 15 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 = 18 + ghost atom cutoff = 18 + binsize = 9, bins = 4 4 16 + 3 neighbor lists, perpetual/occasional/extra = 2 1 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conq, occasional, skip from (1) + attributes: half, newton on + pair build: skip + stencil: none + bin: none + (3) fix electrode/conq, perpetual, skip from (1) + attributes: half, newton on + pair build: skip + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 22.9 | 26.72 | 30.55 Mbytes + Step Temp c_ctemp E_pair TotEng c_qbot c_qtop f_conq[1] f_conq[2] v_dv + 0 0 0 25137446 25137446 -1 1 -9.931852 10.097344 20.029196 + 50 20.206425 72.797911 25137263 25137472 -1 1 -9.4359366 9.5964514 19.032388 + 100 55.931663 201.50563 25136961 25137537 -1 1 -8.0440112 8.1861787 16.23019 + 150 81.389273 293.22204 25136818 25137656 -1 1 -6.1113109 6.2267114 12.338022 + 200 92.867946 334.57639 25136841 25137798 -1 1 -4.1857807 4.2740694 8.4598501 + 250 97.518304 351.33028 25136942 25137946 -1 1 -2.8383703 2.9101475 5.7485179 + 300 102.36577 368.79431 25137045 25138099 -1 1 -2.3831643 2.4461115 4.8292759 + 350 113.66597 409.50566 25137086 25138256 -1 1 -2.7083563 2.7457811 5.4541374 + 400 122.8443 442.57252 25137148 25138413 -1 1 -3.4311003 3.3941657 6.825266 + 450 128.63713 463.44243 25137235 25138560 -1 1 -4.132871 3.9852959 8.1181669 + 500 131.18361 472.61665 25137344 25138695 -1 1 -4.5104095 4.2567261 8.7671355 +Loop time of 53.4299 on 4 procs for 500 steps with 3776 atoms + +Performance: 0.809 ns/day, 29.683 hours/ns, 9.358 timesteps/s, 35.336 katom-step/s +74.0% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 5.5806 | 5.8872 | 6.1547 | 8.8 | 11.02 +Bond | 0.0011404 | 0.0012245 | 0.0012898 | 0.2 | 0.00 +Kspace | 26.55 | 26.822 | 27.129 | 4.1 | 50.20 +Neigh | 0.098647 | 0.099673 | 0.10083 | 0.3 | 0.19 +Comm | 0.35493 | 0.37282 | 0.3909 | 2.1 | 0.70 +Output | 0.0012274 | 0.001617 | 0.0026374 | 1.5 | 0.00 +Modify | 20.172 | 20.188 | 20.203 | 0.3 | 37.78 +Other | | 0.05647 | | | 0.11 + +Nlocal: 944 ave 948 max 940 min +Histogram: 1 0 0 1 0 0 1 0 0 1 +Nghost: 5920.5 ave 5941 max 5899 min +Histogram: 1 0 0 0 1 1 0 0 0 1 +Neighs: 431397 ave 442329 max 421103 min +Histogram: 2 0 0 0 0 0 0 0 1 1 + +Total # of neighbors = 1725588 +Ave neighs/atom = 456.98835 +Ave special neighs/atom = 0.50847458 +Neighbor list builds = 6 +Dangerous builds = 0 +Total wall time: 0:00:59 diff --git a/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq2.g++.1 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq2.g++.1 new file mode 100644 index 0000000000..a3eedd22c7 --- /dev/null +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq2.g++.1 @@ -0,0 +1,193 @@ +LAMMPS (3 Nov 2022) +# electrodes with constrained total charges imposed from dynamically computed potentials +# for graphene-ionic liquid supercapacitor + +boundary p p f # slab calculation +include settings.mod # styles, groups, computes and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 16 +bond_style harmonic +angle_style harmonic +kspace_style pppm/electrode 1e-7 +# kspace_modify in main script because ffield is periodic + +read_data "data.graph-il" +Reading data file ... + orthogonal box = (0 0 -68) to (32.2 34.4 68) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 3776 atoms + scanning bonds ... + 2 = max bonds/atom + scanning angles ... + 1 = max angles/atom + reading bonds ... + 640 bonds + reading angles ... + 320 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.002 seconds + read_data CPU = 0.022 seconds + +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos +416 atoms in group top +group bot subtract ele top +416 atoms in group bot + +group bmi type 1 2 3 +960 atoms in group bmi +group electrolyte type 1 2 3 4 +1280 atoms in group electrolyte + +fix nvt electrolyte nvt temp 500.0 500.0 100 +fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... + 0 = # of size 2 clusters + 0 = # of size 3 clusters + 0 = # of size 4 clusters + 320 = # of frozen angles + find clusters CPU = 0.001 seconds + +variable q atom q +compute qtop top reduce sum v_q +compute qbot bot reduce sum v_q +compute ctemp electrolyte temp +kspace_modify slab 3.0 + +fix conp bot electrode/conp v_vbot 1.979 couple top v_vtop etypes on +832 atoms in group conp_group + +variable qex_bot equal -1.0-f_conp[1][1] # difference between desired and 0V charge +variable qex_top equal 1.0-f_conp[2][1] # difference between desired and 0V charge + +# calculate imposed potential as elastance * excess charge +# note: fix will wait until the run setup to look for its potential variables +# which is why we can define variable names *after* fix conp without error +variable vbot equal f_conp[1][4]*v_qex_bot+f_conp[1][5]*v_qex_top +variable vtop equal f_conp[2][4]*v_qex_bot+f_conp[2][5]*v_qex_top + +thermo 50 +thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop +run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +PPPM/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.20904498 + grid = 32 32 200 + stencil order = 5 + estimated absolute RMS force accuracy = 3.7023506e-05 + estimated relative force accuracy = 1.1149519e-07 + using double precision MKL FFT + 3d grid and FFT values/proc = 307242 204800 +Generated 15 of 15 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 = 18 + ghost atom cutoff = 18 + binsize = 9, bins = 4 4 16 + 3 neighbor lists, perpetual/occasional/extra = 2 1 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, occasional, skip from (1) + attributes: half, newton on + pair build: skip + stencil: none + bin: none + (3) fix electrode/conp, perpetual, skip from (1) + attributes: half, newton on + pair build: skip + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 54.25 | 54.25 | 54.25 Mbytes + Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_vbot v_vtop + 0 0 0 25137446 25137446 -1 1 -9.931852 10.097344 + 50 20.206425 72.797911 25137263 25137472 -1 1 -9.4359366 9.5964514 + 100 55.931663 201.50563 25136961 25137537 -1 1 -8.0440112 8.1861787 + 150 81.389273 293.22204 25136818 25137656 -1 1 -6.1113109 6.2267114 + 200 92.867946 334.57639 25136841 25137798 -1 1 -4.1857807 4.2740694 + 250 97.518304 351.33028 25136942 25137946 -1 1 -2.8383703 2.9101475 + 300 102.36577 368.79431 25137045 25138099 -1 1 -2.3831643 2.4461115 + 350 113.66597 409.50566 25137086 25138256 -1 1 -2.7083563 2.7457811 + 400 122.8443 442.57252 25137148 25138413 -1 1 -3.4311003 3.3941657 + 450 128.63713 463.44243 25137235 25138560 -1 1 -4.132871 3.9852959 + 500 131.18361 472.61665 25137344 25138695 -1 1 -4.5104095 4.2567261 +Loop time of 85.5691 on 1 procs for 500 steps with 3776 atoms + +Performance: 0.505 ns/day, 47.538 hours/ns, 5.843 timesteps/s, 22.064 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 18.558 | 18.558 | 18.558 | 0.0 | 21.69 +Bond | 0.001404 | 0.001404 | 0.001404 | 0.0 | 0.00 +Kspace | 33.78 | 33.78 | 33.78 | 0.0 | 39.48 +Neigh | 0.27017 | 0.27017 | 0.27017 | 0.0 | 0.32 +Comm | 0.067438 | 0.067438 | 0.067438 | 0.0 | 0.08 +Output | 0.0026656 | 0.0026656 | 0.0026656 | 0.0 | 0.00 +Modify | 32.86 | 32.86 | 32.86 | 0.0 | 38.40 +Other | | 0.02916 | | | 0.03 + +Nlocal: 3776 ave 3776 max 3776 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 12510 ave 12510 max 12510 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1.72559e+06 ave 1.72559e+06 max 1.72559e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1725588 +Ave neighs/atom = 456.98835 +Ave special neighs/atom = 0.50847458 +Neighbor list builds = 6 +Dangerous builds = 0 +Total wall time: 0:01:42 diff --git a/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq2.g++.4 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq2.g++.4 new file mode 100644 index 0000000000..a0b182f3bb --- /dev/null +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-conq2.g++.4 @@ -0,0 +1,194 @@ +LAMMPS (3 Nov 2022) +# electrodes with constrained total charges imposed from dynamically computed potentials +# for graphene-ionic liquid supercapacitor + +boundary p p f # slab calculation +include settings.mod # styles, groups, computes and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" +processors * * 2 + +atom_style full +pair_style lj/cut/coul/long 16 +bond_style harmonic +angle_style harmonic +kspace_style pppm/electrode 1e-7 +# kspace_modify in main script because ffield is periodic + +read_data "data.graph-il" +Reading data file ... + orthogonal box = (0 0 -68) to (32.2 34.4 68) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 3776 atoms + scanning bonds ... + 2 = max bonds/atom + scanning angles ... + 1 = max angles/atom + reading bonds ... + 640 bonds + reading angles ... + 320 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.005 seconds + read_data CPU = 0.044 seconds + +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos +416 atoms in group top +group bot subtract ele top +416 atoms in group bot + +group bmi type 1 2 3 +960 atoms in group bmi +group electrolyte type 1 2 3 4 +1280 atoms in group electrolyte + +fix nvt electrolyte nvt temp 500.0 500.0 100 +fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... + 0 = # of size 2 clusters + 0 = # of size 3 clusters + 0 = # of size 4 clusters + 320 = # of frozen angles + find clusters CPU = 0.002 seconds + +variable q atom q +compute qtop top reduce sum v_q +compute qbot bot reduce sum v_q +compute ctemp electrolyte temp +kspace_modify slab 3.0 + +fix conp bot electrode/conp v_vbot 1.979 couple top v_vtop etypes on +832 atoms in group conp_group + +variable qex_bot equal -1.0-f_conp[1][1] # difference between desired and 0V charge +variable qex_top equal 1.0-f_conp[2][1] # difference between desired and 0V charge + +# calculate imposed potential as elastance * excess charge +# note: fix will wait until the run setup to look for its potential variables +# which is why we can define variable names *after* fix conp without error +variable vbot equal f_conp[1][4]*v_qex_bot+f_conp[1][5]*v_qex_top +variable vtop equal f_conp[2][4]*v_qex_bot+f_conp[2][5]*v_qex_top + +thermo 50 +thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop +run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +PPPM/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.20904498 + grid = 32 32 200 + stencil order = 5 + estimated absolute RMS force accuracy = 3.7023506e-05 + estimated relative force accuracy = 1.1149519e-07 + using double precision MKL FFT + 3d grid and FFT values/proc = 151593 85504 +Generated 15 of 15 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 = 18 + ghost atom cutoff = 18 + binsize = 9, bins = 4 4 16 + 3 neighbor lists, perpetual/occasional/extra = 2 1 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, occasional, skip from (1) + attributes: half, newton on + pair build: skip + stencil: none + bin: none + (3) fix electrode/conp, perpetual, skip from (1) + attributes: half, newton on + pair build: skip + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 22.9 | 26.72 | 30.55 Mbytes + Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_vbot v_vtop + 0 0 0 25137446 25137446 -1 1 -9.931852 10.097344 + 50 20.206425 72.797911 25137263 25137472 -1 1 -9.4359366 9.5964514 + 100 55.931663 201.50563 25136961 25137537 -1 1 -8.0440112 8.1861787 + 150 81.389273 293.22204 25136818 25137656 -1 1 -6.1113109 6.2267114 + 200 92.867946 334.57639 25136841 25137798 -1 1 -4.1857807 4.2740694 + 250 97.518304 351.33028 25136942 25137946 -1 1 -2.8383703 2.9101475 + 300 102.36577 368.79431 25137045 25138099 -1 1 -2.3831643 2.4461115 + 350 113.66597 409.50566 25137086 25138256 -1 1 -2.7083563 2.7457811 + 400 122.8443 442.57252 25137148 25138413 -1 1 -3.4311003 3.3941657 + 450 128.63713 463.44243 25137235 25138560 -1 1 -4.132871 3.9852959 + 500 131.18361 472.61665 25137344 25138695 -1 1 -4.5104095 4.2567261 +Loop time of 54.0351 on 4 procs for 500 steps with 3776 atoms + +Performance: 0.799 ns/day, 30.019 hours/ns, 9.253 timesteps/s, 34.940 katom-step/s +75.8% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 6.5878 | 6.8799 | 7.1455 | 8.0 | 12.73 +Bond | 0.0011081 | 0.0014187 | 0.0018792 | 0.8 | 0.00 +Kspace | 25.907 | 26.173 | 26.464 | 4.1 | 48.44 +Neigh | 0.16417 | 0.16425 | 0.16438 | 0.0 | 0.30 +Comm | 0.34948 | 0.36296 | 0.37524 | 1.9 | 0.67 +Output | 0.0017398 | 0.0021707 | 0.0033966 | 1.5 | 0.00 +Modify | 20.392 | 20.403 | 20.416 | 0.2 | 37.76 +Other | | 0.04783 | | | 0.09 + +Nlocal: 944 ave 948 max 940 min +Histogram: 1 0 0 1 0 0 1 0 0 1 +Nghost: 5920.5 ave 5941 max 5899 min +Histogram: 1 0 0 0 1 1 0 0 0 1 +Neighs: 431397 ave 442329 max 421103 min +Histogram: 2 0 0 0 0 0 0 0 1 1 + +Total # of neighbors = 1725588 +Ave neighs/atom = 456.98835 +Ave special neighs/atom = 0.50847458 +Neighbor list builds = 6 +Dangerous builds = 0 +Total wall time: 0:01:00 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-etypes.g++.1 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-etypes.g++.1 similarity index 54% rename from examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-etypes.g++.1 rename to examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-etypes.g++.1 index 3b2fe8b6a1..7fccf30e98 100644 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-etypes.g++.1 +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-etypes.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with constant potential and smart neighborlists # for graphene-ionic liquid supercapacitor @@ -37,13 +37,20 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-3 neighbors 1 = max # of 1-4 neighbors 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.024 seconds + special bonds CPU = 0.002 seconds + read_data CPU = 0.021 seconds -group bot molecule 641 -416 atoms in group bot -group top molecule 642 +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos 416 atoms in group top +group bot subtract ele top +416 atoms in group bot group bmi type 1 2 3 960 atoms in group bmi @@ -52,6 +59,7 @@ group electrolyte type 1 2 3 4 fix nvt electrolyte nvt temp 500.0 500.0 100 fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters @@ -64,12 +72,41 @@ compute qbot bot reduce sum v_q compute ctemp electrolyte temp kspace_modify slab 3.0 -fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5 +fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes on 832 atoms in group conp_group thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.20904498 @@ -79,9 +116,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.1149519e-07 using double precision MKL FFT 3d grid and FFT values/proc = 307242 204800 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule +Generated 15 of 15 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 18 ghost atom cutoff = 18 @@ -102,35 +139,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 56.89 | 56.89 | 56.89 Mbytes +Per MPI rank memory allocation (min/avg/max) = 54.25 | 54.25 | 54.25 Mbytes Step Temp c_ctemp E_pair TotEng c_qbot c_qtop - 0 0 0 25137191 25137191 0.0085142912 -0.0085142912 + 0 0 0 25137190 25137190 0.0085142912 -0.0085142912 50 17.83755 64.26354 25137031 25137214 0.0045923944 -0.0045923944 - 100 48.393682 174.34846 25136774 25137273 -0.009514517 0.009514517 - 150 70.421272 253.7075 25136655 25137380 -0.033017005 0.033017005 - 200 82.204844 296.16031 25136667 25137514 -0.063668175 0.063668175 - 250 87.54223 315.38937 25136757 25137659 -0.096776257 0.096776257 - 300 91.704746 330.38571 25136865 25137810 -0.1283784 0.1283784 - 350 100.36017 361.56871 25136934 25137968 -0.15649799 0.15649799 - 400 111.37575 401.25467 25136986 25138133 -0.18065435 0.18065435 - 450 121.79848 438.80476 25137043 25138298 -0.19979365 0.19979365 - 500 126.95916 457.39718 25137145 25138453 -0.21037535 0.21037535 -Loop time of 63.497 on 1 procs for 500 steps with 3776 atoms + 100 48.393682 174.34846 25136775 25137273 -0.009514517 0.009514517 + 150 70.421272 253.7075 25136657 25137382 -0.033017005 0.033017005 + 200 82.204844 296.16031 25136670 25137517 -0.063668175 0.063668175 + 250 87.54223 315.38937 25136762 25137663 -0.096776257 0.096776257 + 300 91.704746 330.38571 25136871 25137816 -0.1283784 0.1283784 + 350 100.36017 361.56871 25136942 25137975 -0.15649799 0.15649799 + 400 111.37575 401.25467 25136994 25138141 -0.18065435 0.18065435 + 450 121.79848 438.80476 25137052 25138307 -0.19979365 0.19979365 + 500 126.95916 457.39718 25137155 25138463 -0.21037535 0.21037535 +Loop time of 87.0709 on 1 procs for 500 steps with 3776 atoms -Performance: 0.680 ns/day, 35.276 hours/ns, 7.874 timesteps/s -393.9% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.496 ns/day, 48.373 hours/ns, 5.742 timesteps/s, 21.683 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 20.628 | 20.628 | 20.628 | 0.0 | 32.49 -Bond | 0.0019309 | 0.0019309 | 0.0019309 | 0.0 | 0.00 -Kspace | 23.61 | 23.61 | 23.61 | 0.0 | 37.18 -Neigh | 0.28156 | 0.28156 | 0.28156 | 0.0 | 0.44 -Comm | 0.061191 | 0.061191 | 0.061191 | 0.0 | 0.10 -Output | 0.0022666 | 0.0022666 | 0.0022666 | 0.0 | 0.00 -Modify | 18.891 | 18.891 | 18.891 | 0.0 | 29.75 -Other | | 0.02047 | | | 0.03 +Pair | 18.617 | 18.617 | 18.617 | 0.0 | 21.38 +Bond | 0.0014056 | 0.0014056 | 0.0014056 | 0.0 | 0.00 +Kspace | 34.856 | 34.856 | 34.856 | 0.0 | 40.03 +Neigh | 0.30015 | 0.30015 | 0.30015 | 0.0 | 0.34 +Comm | 0.065303 | 0.065303 | 0.065303 | 0.0 | 0.08 +Output | 0.0021663 | 0.0021663 | 0.0021663 | 0.0 | 0.00 +Modify | 33.201 | 33.201 | 33.201 | 0.0 | 38.13 +Other | | 0.0282 | | | 0.03 Nlocal: 3776 ave 3776 max 3776 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -144,4 +181,4 @@ Ave neighs/atom = 457.18432 Ave special neighs/atom = 0.50847458 Neighbor list builds = 7 Dangerous builds = 0 -Total wall time: 0:02:24 +Total wall time: 0:01:43 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-etypes.g++.4 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-etypes.g++.4 similarity index 54% rename from examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-etypes.g++.4 rename to examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-etypes.g++.4 index ed34a0c735..c0f4139689 100644 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-etypes.g++.4 +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-etypes.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with constant potential and smart neighborlists # for graphene-ionic liquid supercapacitor @@ -38,13 +38,20 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-3 neighbors 1 = max # of 1-4 neighbors 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.016 seconds + special bonds CPU = 0.004 seconds + read_data CPU = 0.047 seconds -group bot molecule 641 -416 atoms in group bot -group top molecule 642 +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos 416 atoms in group top +group bot subtract ele top +416 atoms in group bot group bmi type 1 2 3 960 atoms in group bmi @@ -53,11 +60,12 @@ group electrolyte type 1 2 3 4 fix nvt electrolyte nvt temp 500.0 500.0 100 fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters 320 = # of frozen angles - find clusters CPU = 0.001 seconds + find clusters CPU = 0.005 seconds variable q atom q compute qtop top reduce sum v_q @@ -65,12 +73,41 @@ compute qbot bot reduce sum v_q compute ctemp electrolyte temp kspace_modify slab 3.0 -fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5 +fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes on 832 atoms in group conp_group thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.20904498 @@ -80,9 +117,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.1149519e-07 using double precision MKL FFT 3d grid and FFT values/proc = 151593 85504 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule +Generated 15 of 15 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 18 ghost atom cutoff = 18 @@ -103,35 +140,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 23.63 | 27.46 | 31.29 Mbytes +Per MPI rank memory allocation (min/avg/max) = 22.9 | 26.72 | 30.55 Mbytes Step Temp c_ctemp E_pair TotEng c_qbot c_qtop - 0 0 0 25137191 25137191 0.0085142912 -0.0085142912 + 0 0 0 25137190 25137190 0.0085142912 -0.0085142912 50 17.83755 64.26354 25137031 25137214 0.0045923944 -0.0045923944 - 100 48.393682 174.34846 25136774 25137273 -0.009514517 0.009514517 - 150 70.421272 253.7075 25136655 25137380 -0.033017005 0.033017005 - 200 82.204844 296.16031 25136667 25137514 -0.063668175 0.063668175 - 250 87.54223 315.38937 25136757 25137659 -0.096776257 0.096776257 - 300 91.704746 330.38571 25136865 25137810 -0.1283784 0.1283784 - 350 100.36017 361.56871 25136934 25137968 -0.15649799 0.15649799 - 400 111.37575 401.25467 25136986 25138133 -0.18065435 0.18065435 - 450 121.79848 438.80476 25137043 25138298 -0.19979365 0.19979365 - 500 126.95916 457.39718 25137145 25138453 -0.21037535 0.21037535 -Loop time of 30.7883 on 4 procs for 500 steps with 3776 atoms + 100 48.393682 174.34846 25136775 25137273 -0.009514517 0.009514517 + 150 70.421272 253.7075 25136657 25137382 -0.033017005 0.033017005 + 200 82.204844 296.16031 25136670 25137517 -0.063668175 0.063668175 + 250 87.54223 315.38937 25136762 25137663 -0.096776257 0.096776257 + 300 91.704746 330.38571 25136871 25137816 -0.1283784 0.1283784 + 350 100.36017 361.56871 25136942 25137975 -0.15649799 0.15649799 + 400 111.37575 401.25467 25136994 25138141 -0.18065435 0.18065435 + 450 121.79848 438.80476 25137052 25138307 -0.19979365 0.19979365 + 500 126.95916 457.39718 25137155 25138463 -0.21037535 0.21037535 +Loop time of 48.4075 on 4 procs for 500 steps with 3776 atoms -Performance: 1.403 ns/day, 17.105 hours/ns, 16.240 timesteps/s -94.1% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 0.892 ns/day, 26.893 hours/ns, 10.329 timesteps/s, 39.002 katom-step/s +75.3% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 6.5102 | 6.7303 | 6.9362 | 7.6 | 21.86 -Bond | 0.00064504 | 0.00071061 | 0.000779 | 0.0 | 0.00 -Kspace | 14.081 | 14.287 | 14.507 | 5.2 | 46.40 -Neigh | 0.11831 | 0.11841 | 0.11851 | 0.0 | 0.38 -Comm | 0.12216 | 0.12434 | 0.12651 | 0.6 | 0.40 -Output | 0.00083347 | 0.0010533 | 0.0017069 | 1.2 | 0.00 -Modify | 9.5052 | 9.5071 | 9.5093 | 0.1 | 30.88 -Other | | 0.01927 | | | 0.06 +Pair | 5.3095 | 5.5504 | 5.7923 | 8.2 | 11.47 +Bond | 0.0011128 | 0.0012414 | 0.0014028 | 0.3 | 0.00 +Kspace | 24.084 | 24.322 | 24.559 | 3.9 | 50.24 +Neigh | 0.093557 | 0.09408 | 0.094377 | 0.1 | 0.19 +Comm | 0.30394 | 0.31319 | 0.3225 | 1.6 | 0.65 +Output | 0.0012719 | 0.0015908 | 0.0024592 | 1.3 | 0.00 +Modify | 18.066 | 18.079 | 18.091 | 0.2 | 37.35 +Other | | 0.04692 | | | 0.10 Nlocal: 944 ave 951 max 941 min Histogram: 1 2 0 0 0 0 0 0 0 1 @@ -145,4 +182,4 @@ Ave neighs/atom = 457.18432 Ave special neighs/atom = 0.50847458 Neighbor list builds = 7 Dangerous builds = 0 -Total wall time: 0:00:56 +Total wall time: 0:00:54 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ffield.g++.1 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ffield.g++.1 similarity index 54% rename from examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ffield.g++.1 rename to examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ffield.g++.1 index b7c2eea523..2103f43dfd 100644 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ffield.g++.1 +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ffield.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with constant potential using finite field # for z-periodic graphene-ionic liquid supercapacitor @@ -37,13 +37,20 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-3 neighbors 1 = max # of 1-4 neighbors 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.022 seconds + special bonds CPU = 0.002 seconds + read_data CPU = 0.021 seconds -group bot molecule 641 -416 atoms in group bot -group top molecule 642 +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos 416 atoms in group top +group bot subtract ele top +416 atoms in group bot group bmi type 1 2 3 960 atoms in group bmi @@ -52,6 +59,7 @@ group electrolyte type 1 2 3 4 fix nvt electrolyte nvt temp 500.0 500.0 100 fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters @@ -63,12 +71,41 @@ compute qtop top reduce sum v_q compute qbot bot reduce sum v_q compute ctemp electrolyte temp -fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5 ffield yes +fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes on ffield yes 832 atoms in group conp_group thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.20949995 @@ -78,9 +115,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.0544465e-07 using double precision MKL FFT 3d grid and FFT values/proc = 147537 92160 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule +Generated 15 of 15 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 18 ghost atom cutoff = 18 @@ -101,35 +138,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 49.5 | 49.5 | 49.5 Mbytes +Per MPI rank memory allocation (min/avg/max) = 46.1 | 46.1 | 46.1 Mbytes Step Temp c_ctemp E_pair TotEng c_qbot c_qtop - 0 0 0 25137187 25137187 0.0085209384 -0.0085209384 - 50 17.837642 64.263873 25137027 25137211 0.0045513522 -0.0045513522 - 100 48.393984 174.34955 25136771 25137269 -0.0097291786 0.0097291786 - 150 70.421823 253.70949 25136651 25137377 -0.033522793 0.033522793 - 200 82.205535 296.1628 25136664 25137510 -0.064555648 0.064555648 - 250 87.542843 315.39158 25136754 25137655 -0.098075546 0.098075546 - 300 91.705733 330.38927 25136862 25137806 -0.13006751 0.13006751 - 350 100.36128 361.5727 25136930 25137964 -0.15852814 0.15852814 - 400 111.37586 401.25505 25136982 25138129 -0.18297207 0.18297207 - 450 121.79814 438.80351 25137039 25138294 -0.2023394 0.2023394 - 500 126.95882 457.39597 25137142 25138449 -0.21305221 0.21305221 -Loop time of 36.7618 on 1 procs for 500 steps with 3776 atoms + 0 0 0 25137186 25137186 0.0085209384 -0.0085209384 + 50 17.837642 64.263873 25137027 25137210 0.0045513522 -0.0045513522 + 100 48.393984 174.34955 25136771 25137270 -0.0097291786 0.0097291786 + 150 70.421823 253.70949 25136653 25137378 -0.033522793 0.033522793 + 200 82.205535 296.1628 25136667 25137513 -0.064555648 0.064555648 + 250 87.542843 315.39158 25136758 25137660 -0.098075546 0.098075546 + 300 91.705733 330.38927 25136868 25137812 -0.13006751 0.13006751 + 350 100.36128 361.5727 25136938 25137971 -0.15852814 0.15852814 + 400 111.37586 401.25505 25136990 25138137 -0.18297207 0.18297207 + 450 121.79814 438.80351 25137049 25138303 -0.2023394 0.2023394 + 500 126.95882 457.39597 25137151 25138459 -0.21305221 0.21305221 +Loop time of 53.8411 on 1 procs for 500 steps with 3776 atoms -Performance: 1.175 ns/day, 20.423 hours/ns, 13.601 timesteps/s -393.9% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.802 ns/day, 29.912 hours/ns, 9.287 timesteps/s, 35.066 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 19.737 | 19.737 | 19.737 | 0.0 | 53.69 -Bond | 0.00092668 | 0.00092668 | 0.00092668 | 0.0 | 0.00 -Kspace | 6.5854 | 6.5854 | 6.5854 | 0.0 | 17.91 -Neigh | 0.33914 | 0.33914 | 0.33914 | 0.0 | 0.92 -Comm | 0.090124 | 0.090124 | 0.090124 | 0.0 | 0.25 -Output | 0.0013975 | 0.0013975 | 0.0013975 | 0.0 | 0.00 -Modify | 9.9834 | 9.9834 | 9.9834 | 0.0 | 27.16 -Other | | 0.02455 | | | 0.07 +Pair | 19.843 | 19.843 | 19.843 | 0.0 | 36.85 +Bond | 0.0016963 | 0.0016963 | 0.0016963 | 0.0 | 0.00 +Kspace | 11.232 | 11.232 | 11.232 | 0.0 | 20.86 +Neigh | 0.39189 | 0.39189 | 0.39189 | 0.0 | 0.73 +Comm | 0.12348 | 0.12348 | 0.12348 | 0.0 | 0.23 +Output | 0.0017904 | 0.0017904 | 0.0017904 | 0.0 | 0.00 +Modify | 22.207 | 22.207 | 22.207 | 0.0 | 41.25 +Other | | 0.04008 | | | 0.07 Nlocal: 3776 ave 3776 max 3776 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -143,4 +180,4 @@ Ave neighs/atom = 493.56224 Ave special neighs/atom = 0.50847458 Neighbor list builds = 7 Dangerous builds = 0 -Total wall time: 0:01:39 +Total wall time: 0:01:10 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ffield.g++.4 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ffield.g++.4 similarity index 54% rename from examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ffield.g++.4 rename to examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ffield.g++.4 index 205c08d88e..223530d493 100644 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ffield.g++.4 +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ffield.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with constant potential using finite field # for z-periodic graphene-ionic liquid supercapacitor @@ -38,13 +38,20 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-3 neighbors 1 = max # of 1-4 neighbors 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.016 seconds + special bonds CPU = 0.002 seconds + read_data CPU = 0.033 seconds -group bot molecule 641 -416 atoms in group bot -group top molecule 642 +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos 416 atoms in group top +group bot subtract ele top +416 atoms in group bot group bmi type 1 2 3 960 atoms in group bmi @@ -53,23 +60,53 @@ group electrolyte type 1 2 3 4 fix nvt electrolyte nvt temp 500.0 500.0 100 fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters 320 = # of frozen angles - find clusters CPU = 0.001 seconds + find clusters CPU = 0.002 seconds variable q atom q compute qtop top reduce sum v_q compute qbot bot reduce sum v_q compute ctemp electrolyte temp -fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5 ffield yes +fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes on ffield yes 832 atoms in group conp_group thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.20949995 @@ -79,9 +116,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.0544465e-07 using double precision MKL FFT 3d grid and FFT values/proc = 46644 23552 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule +Generated 15 of 15 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 18 ghost atom cutoff = 18 @@ -102,35 +139,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 21.96 | 22.27 | 22.77 Mbytes +Per MPI rank memory allocation (min/avg/max) = 21.23 | 21.34 | 21.65 Mbytes Step Temp c_ctemp E_pair TotEng c_qbot c_qtop - 0 0 0 25137187 25137187 0.0085209384 -0.0085209384 - 50 17.837642 64.263873 25137027 25137211 0.0045513522 -0.0045513522 - 100 48.393984 174.34955 25136771 25137269 -0.0097291786 0.0097291786 - 150 70.421823 253.70949 25136651 25137377 -0.033522793 0.033522793 - 200 82.205535 296.1628 25136664 25137510 -0.064555648 0.064555648 - 250 87.542843 315.39158 25136754 25137655 -0.098075546 0.098075546 - 300 91.705733 330.38927 25136862 25137806 -0.13006751 0.13006751 - 350 100.36128 361.5727 25136930 25137964 -0.15852814 0.15852814 - 400 111.37586 401.25505 25136982 25138129 -0.18297207 0.18297207 - 450 121.79814 438.80351 25137039 25138294 -0.2023394 0.2023394 - 500 126.95882 457.39597 25137142 25138449 -0.21305221 0.21305221 -Loop time of 19.3932 on 4 procs for 500 steps with 3776 atoms + 0 0 0 25137186 25137186 0.0085209384 -0.0085209384 + 50 17.837642 64.263873 25137027 25137210 0.0045513522 -0.0045513522 + 100 48.393984 174.34955 25136771 25137270 -0.0097291786 0.0097291786 + 150 70.421823 253.70949 25136653 25137378 -0.033522793 0.033522793 + 200 82.205535 296.1628 25136667 25137513 -0.064555648 0.064555648 + 250 87.542843 315.39158 25136758 25137660 -0.098075546 0.098075546 + 300 91.705733 330.38927 25136868 25137812 -0.13006751 0.13006751 + 350 100.36128 361.5727 25136938 25137971 -0.15852814 0.15852814 + 400 111.37586 401.25505 25136990 25138137 -0.18297207 0.18297207 + 450 121.79814 438.80351 25137049 25138303 -0.2023394 0.2023394 + 500 126.95882 457.39597 25137151 25138459 -0.21305221 0.21305221 +Loop time of 26.2807 on 4 procs for 500 steps with 3776 atoms -Performance: 2.228 ns/day, 10.774 hours/ns, 25.782 timesteps/s -96.3% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 1.644 ns/day, 14.600 hours/ns, 19.025 timesteps/s, 71.840 katom-step/s +83.1% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 7.1247 | 7.6399 | 8.1323 | 13.3 | 39.39 -Bond | 0.00072445 | 0.00077581 | 0.00085933 | 0.0 | 0.00 -Kspace | 5.098 | 5.5905 | 6.1036 | 15.6 | 28.83 -Neigh | 0.145 | 0.14517 | 0.14532 | 0.0 | 0.75 -Comm | 0.24683 | 0.25127 | 0.25907 | 1.0 | 1.30 -Output | 0.00084146 | 0.0011298 | 0.0019741 | 1.5 | 0.01 -Modify | 5.6957 | 5.7129 | 5.729 | 0.6 | 29.46 -Other | | 0.05153 | | | 0.27 +Pair | 5.8233 | 6.1941 | 6.6294 | 12.1 | 23.57 +Bond | 0.0010807 | 0.0011705 | 0.0013494 | 0.3 | 0.00 +Kspace | 8.0325 | 8.4703 | 8.8457 | 10.4 | 32.23 +Neigh | 0.14184 | 0.1421 | 0.14238 | 0.1 | 0.54 +Comm | 0.52248 | 0.54323 | 0.56352 | 2.7 | 2.07 +Output | 0.00079782 | 0.0011547 | 0.0021987 | 1.8 | 0.00 +Modify | 10.831 | 10.856 | 10.881 | 0.7 | 41.31 +Other | | 0.07293 | | | 0.28 Nlocal: 944 ave 951 max 941 min Histogram: 1 2 0 0 0 0 0 0 0 1 @@ -144,4 +181,4 @@ Ave neighs/atom = 493.56224 Ave special neighs/atom = 0.50847458 Neighbor list builds = 7 Dangerous builds = 0 -Total wall time: 0:00:44 +Total wall time: 0:00:32 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ramp.g++.1 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ramp.g++.1 similarity index 52% rename from examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ramp.g++.1 rename to examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ramp.g++.1 index 1dfcbac360..819a605f35 100644 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ramp.g++.1 +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ramp.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with equal-style ramped (electrode-)constant potential # for graphene-ionic liquid supercapacitor @@ -37,13 +37,20 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-3 neighbors 1 = max # of 1-4 neighbors 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.014 seconds + special bonds CPU = 0.002 seconds + read_data CPU = 0.021 seconds -group bot molecule 641 -416 atoms in group bot -group top molecule 642 +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos 416 atoms in group top +group bot subtract ele top +416 atoms in group bot group bmi type 1 2 3 960 atoms in group bmi @@ -52,6 +59,7 @@ group electrolyte type 1 2 3 4 fix nvt electrolyte nvt temp 500.0 500.0 100 fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters @@ -65,12 +73,41 @@ compute ctemp electrolyte temp kspace_modify slab 3.0 variable v equal ramp(2,4) -fix conp bot electrode/conp 0.0 1.979 couple top v_v symm on etypes 5 +fix conp bot electrode/conp 0.0 1.979 couple top v_v symm on etypes on 832 atoms in group conp_group thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_v run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.20904498 @@ -80,9 +117,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.1149519e-07 using double precision MKL FFT 3d grid and FFT values/proc = 307242 204800 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule +Generated 15 of 15 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 18 ghost atom cutoff = 18 @@ -103,35 +140,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 56.89 | 56.89 | 56.89 Mbytes +Per MPI rank memory allocation (min/avg/max) = 54.25 | 54.25 | 54.25 Mbytes Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_v - 0 0 0 25137191 25137191 0.0085142912 -0.0085142912 2 - 50 17.839699 64.271283 25137031 25137214 -0.0067894391 0.0067894391 2.2 - 100 48.411618 174.41308 25136774 25137273 -0.033422174 0.033422174 2.4 - 150 70.478909 253.91515 25136654 25137380 -0.071583953 0.071583953 2.6 - 200 82.322716 296.58497 25136666 25137513 -0.11962095 0.11962095 2.8 - 250 87.739905 316.10153 25136754 25137658 -0.17281469 0.17281469 3 - 300 91.974584 331.35786 25136861 25137808 -0.22657123 0.22657123 3.2 - 350 100.73048 362.90284 25136928 25137965 -0.27817429 0.27817429 3.4 - 400 111.78597 402.73256 25136977 25138129 -0.32659395 0.32659395 3.6 - 450 122.14181 440.04167 25137033 25138291 -0.37054363 0.37054363 3.8 - 500 127.32331 458.70912 25137133 25138444 -0.40653009 0.40653009 4 -Loop time of 50.8569 on 1 procs for 500 steps with 3776 atoms + 0 0 0 25137190 25137190 0.0085142912 -0.0085142912 2 + 50 17.839699 64.271283 25137031 25137215 -0.0067894391 0.0067894391 2.2 + 100 48.411618 174.41308 25136776 25137275 -0.033422174 0.033422174 2.4 + 150 70.478909 253.91515 25136658 25137384 -0.071583953 0.071583953 2.6 + 200 82.322716 296.58497 25136673 25137521 -0.11962095 0.11962095 2.8 + 250 87.739905 316.10153 25136766 25137670 -0.17281469 0.17281469 3 + 300 91.974584 331.35786 25136877 25137825 -0.22657123 0.22657123 3.2 + 350 100.73048 362.90284 25136949 25137987 -0.27817429 0.27817429 3.4 + 400 111.78597 402.73256 25137004 25138156 -0.32659395 0.32659395 3.6 + 450 122.14181 440.04167 25137066 25138324 -0.37054363 0.37054363 3.8 + 500 127.32331 458.70912 25137171 25138482 -0.40653009 0.40653009 4 +Loop time of 87.6405 on 1 procs for 500 steps with 3776 atoms -Performance: 0.849 ns/day, 28.254 hours/ns, 9.831 timesteps/s -393.5% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.493 ns/day, 48.689 hours/ns, 5.705 timesteps/s, 21.543 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 18.166 | 18.166 | 18.166 | 0.0 | 35.72 -Bond | 0.00091918 | 0.00091918 | 0.00091918 | 0.0 | 0.00 -Kspace | 17.267 | 17.267 | 17.267 | 0.0 | 33.95 -Neigh | 0.27635 | 0.27635 | 0.27635 | 0.0 | 0.54 -Comm | 0.044714 | 0.044714 | 0.044714 | 0.0 | 0.09 -Output | 0.0018345 | 0.0018345 | 0.0018345 | 0.0 | 0.00 -Modify | 15.086 | 15.086 | 15.086 | 0.0 | 29.66 -Other | | 0.01409 | | | 0.03 +Pair | 18.484 | 18.484 | 18.484 | 0.0 | 21.09 +Bond | 0.0016824 | 0.0016824 | 0.0016824 | 0.0 | 0.00 +Kspace | 35.426 | 35.426 | 35.426 | 0.0 | 40.42 +Neigh | 0.30201 | 0.30201 | 0.30201 | 0.0 | 0.34 +Comm | 0.066546 | 0.066546 | 0.066546 | 0.0 | 0.08 +Output | 0.0022768 | 0.0022768 | 0.0022768 | 0.0 | 0.00 +Modify | 33.33 | 33.33 | 33.33 | 0.0 | 38.03 +Other | | 0.0286 | | | 0.03 Nlocal: 3776 ave 3776 max 3776 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -145,4 +182,4 @@ Ave neighs/atom = 457.17161 Ave special neighs/atom = 0.50847458 Neighbor list builds = 7 Dangerous builds = 0 -Total wall time: 0:01:50 +Total wall time: 0:01:44 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ramp.g++.4 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ramp.g++.4 similarity index 52% rename from examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ramp.g++.4 rename to examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ramp.g++.4 index ca7625acd6..9287a669db 100644 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-ramp.g++.4 +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-ramp.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with equal-style ramped (electrode-)constant potential # for graphene-ionic liquid supercapacitor @@ -38,13 +38,20 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-3 neighbors 1 = max # of 1-4 neighbors 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.024 seconds + special bonds CPU = 0.003 seconds + read_data CPU = 0.034 seconds -group bot molecule 641 -416 atoms in group bot -group top molecule 642 +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos 416 atoms in group top +group bot subtract ele top +416 atoms in group bot group bmi type 1 2 3 960 atoms in group bmi @@ -53,11 +60,12 @@ group electrolyte type 1 2 3 4 fix nvt electrolyte nvt temp 500.0 500.0 100 fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters 320 = # of frozen angles - find clusters CPU = 0.001 seconds + find clusters CPU = 0.002 seconds variable q atom q compute qtop top reduce sum v_q @@ -66,12 +74,41 @@ compute ctemp electrolyte temp kspace_modify slab 3.0 variable v equal ramp(2,4) -fix conp bot electrode/conp 0.0 1.979 couple top v_v symm on etypes 5 +fix conp bot electrode/conp 0.0 1.979 couple top v_v symm on etypes on 832 atoms in group conp_group thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_v run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.20904498 @@ -81,9 +118,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.1149519e-07 using double precision MKL FFT 3d grid and FFT values/proc = 151593 85504 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule +Generated 15 of 15 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 18 ghost atom cutoff = 18 @@ -104,35 +141,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 23.63 | 27.46 | 31.29 Mbytes +Per MPI rank memory allocation (min/avg/max) = 22.9 | 26.72 | 30.55 Mbytes Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_v - 0 0 0 25137191 25137191 0.0085142912 -0.0085142912 2 - 50 17.839699 64.271283 25137031 25137214 -0.0067894391 0.0067894391 2.2 - 100 48.411618 174.41308 25136774 25137273 -0.033422174 0.033422174 2.4 - 150 70.478909 253.91515 25136654 25137380 -0.071583953 0.071583953 2.6 - 200 82.322716 296.58497 25136666 25137513 -0.11962095 0.11962095 2.8 - 250 87.739905 316.10153 25136754 25137658 -0.17281469 0.17281469 3 - 300 91.974584 331.35786 25136861 25137808 -0.22657123 0.22657123 3.2 - 350 100.73048 362.90284 25136928 25137965 -0.27817429 0.27817429 3.4 - 400 111.78597 402.73256 25136977 25138129 -0.32659395 0.32659395 3.6 - 450 122.14181 440.04167 25137033 25138291 -0.37054363 0.37054363 3.8 - 500 127.32331 458.70912 25137133 25138444 -0.40653009 0.40653009 4 -Loop time of 31.7642 on 4 procs for 500 steps with 3776 atoms + 0 0 0 25137190 25137190 0.0085142912 -0.0085142912 2 + 50 17.839699 64.271283 25137031 25137215 -0.0067894391 0.0067894391 2.2 + 100 48.411618 174.41308 25136776 25137275 -0.033422174 0.033422174 2.4 + 150 70.478909 253.91515 25136658 25137384 -0.071583953 0.071583953 2.6 + 200 82.322716 296.58497 25136673 25137521 -0.11962095 0.11962095 2.8 + 250 87.739905 316.10153 25136766 25137670 -0.17281469 0.17281469 3 + 300 91.974584 331.35786 25136877 25137825 -0.22657123 0.22657123 3.2 + 350 100.73048 362.90284 25136949 25137987 -0.27817429 0.27817429 3.4 + 400 111.78597 402.73256 25137004 25138156 -0.32659395 0.32659395 3.6 + 450 122.14181 440.04167 25137066 25138324 -0.37054363 0.37054363 3.8 + 500 127.32331 458.70912 25137171 25138482 -0.40653009 0.40653009 4 +Loop time of 49.2075 on 4 procs for 500 steps with 3776 atoms -Performance: 1.360 ns/day, 17.647 hours/ns, 15.741 timesteps/s -94.1% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 0.878 ns/day, 27.337 hours/ns, 10.161 timesteps/s, 38.368 katom-step/s +75.7% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 6.7949 | 7.0359 | 7.3092 | 7.9 | 22.15 -Bond | 0.00069874 | 0.00073747 | 0.00077928 | 0.0 | 0.00 -Kspace | 14.375 | 14.648 | 14.89 | 5.5 | 46.12 -Neigh | 0.12057 | 0.1206 | 0.12062 | 0.0 | 0.38 -Comm | 0.13412 | 0.13439 | 0.13483 | 0.1 | 0.42 -Output | 0.0010019 | 0.0013088 | 0.0020937 | 1.3 | 0.00 -Modify | 9.8017 | 9.8025 | 9.8031 | 0.0 | 30.86 -Other | | 0.02036 | | | 0.06 +Pair | 5.7517 | 5.9151 | 6.0961 | 6.6 | 12.02 +Bond | 0.0011959 | 0.0013362 | 0.0014512 | 0.2 | 0.00 +Kspace | 24.223 | 24.404 | 24.566 | 3.2 | 49.59 +Neigh | 0.10283 | 0.10288 | 0.10301 | 0.0 | 0.21 +Comm | 0.30801 | 0.31944 | 0.33141 | 2.0 | 0.65 +Output | 0.0010416 | 0.0014127 | 0.0024086 | 1.5 | 0.00 +Modify | 18.405 | 18.418 | 18.432 | 0.3 | 37.43 +Other | | 0.04459 | | | 0.09 Nlocal: 944 ave 951 max 941 min Histogram: 1 2 0 0 0 0 0 0 0 1 @@ -146,4 +183,4 @@ Ave neighs/atom = 457.17161 Ave special neighs/atom = 0.50847458 Neighbor list builds = 7 Dangerous builds = 0 -Total wall time: 0:00:58 +Total wall time: 0:00:55 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-thermo.g++.1 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-thermo.g++.1 similarity index 55% rename from examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-thermo.g++.1 rename to examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-thermo.g++.1 index e6fe963222..42eeb1f97e 100644 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-thermo.g++.1 +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-thermo.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with thermopotentiostat # for graphene-ionic liquid supercapacitor @@ -38,12 +38,19 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-4 neighbors 2 = max # of special neighbors special bonds CPU = 0.002 seconds - read_data CPU = 0.024 seconds + read_data CPU = 0.021 seconds -group bot molecule 641 -416 atoms in group bot -group top molecule 642 +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos 416 atoms in group top +group bot subtract ele top +416 atoms in group bot group bmi type 1 2 3 960 atoms in group bmi @@ -52,11 +59,12 @@ group electrolyte type 1 2 3 4 fix nvt electrolyte nvt temp 500.0 500.0 100 fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters 320 = # of frozen angles - find clusters CPU = 0.000 seconds + find clusters CPU = 0.001 seconds variable q atom q compute qtop top reduce sum v_q @@ -65,10 +73,10 @@ compute ctemp electrolyte temp kspace_modify slab 3.0 unfix nvt # remove NVT thermostat included from "settings.mod" -fix conpthermo bot electrode/thermo -1.0 1.979 couple top 1.0 etypes 5 temp 500 100 7 # temp tau rng +fix conpthermo bot electrode/thermo -1.0 1.979 couple top 1.0 etypes on temp 500 100 7 symm on # temp tau rng 832 atoms in group conp_group # to compare to regular constant potential, switch previous line to this: -#fix conp bot electrode/conp -1.0 1.979 couple top 1.0 etypes 5 symm on +#fix conp bot electrode/conp -1.0 1.979 couple top 1.0 etypes on symm on fix nve electrolyte nve # note ionic liquid does not reach 500K immediately @@ -77,6 +85,35 @@ fix nve electrolyte nve thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.20904498 @@ -86,9 +123,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.1149519e-07 using double precision MKL FFT 3d grid and FFT values/proc = 307242 204800 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule +Generated 15 of 15 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 18 ghost atom cutoff = 18 @@ -109,35 +146,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 56.89 | 56.89 | 56.89 Mbytes +Per MPI rank memory allocation (min/avg/max) = 54.25 | 54.25 | 54.25 Mbytes Step Temp c_ctemp E_pair TotEng c_qbot c_qtop - 0 0 0 25137187 25137187 0.12767613 -0.12767613 - 50 16.63971 59.94807 25137031 25137203 0.11714714 -0.11714714 - 100 40.785523 146.93846 25136782 25137202 0.1278358 -0.1278358 - 150 53.394067 192.3634 25136654 25137204 0.080257143 -0.080257143 - 200 56.419019 203.26143 25136624 25137205 0.024756489 -0.024756489 - 250 54.922935 197.87147 25136640 25137205 -0.024533719 0.024533719 - 300 52.884861 190.52888 25136660 25137205 -0.066341094 0.066341094 - 350 52.41676 188.84244 25136666 25137206 -0.089546252 0.089546252 - 400 54.366979 195.86852 25136646 25137206 -0.10239753 0.10239753 - 450 54.906542 197.81241 25136642 25137208 -0.099987401 0.099987401 - 500 54.33841 195.7656 25136642 25137201 -0.21295942 0.21295942 -Loop time of 49.9831 on 1 procs for 500 steps with 3776 atoms + 0 0 0 25137188 25137188 0.12767608 -0.12767608 + 50 16.63971 59.94807 25137031 25137202 0.11714711 -0.11714711 + 100 40.785523 146.93846 25136782 25137202 0.12783578 -0.12783578 + 150 53.394067 192.3634 25136653 25137203 0.080257127 -0.080257127 + 200 56.419019 203.26143 25136623 25137204 0.024756474 -0.024756474 + 250 54.922935 197.87147 25136641 25137206 -0.024533734 0.024533734 + 300 52.884861 190.52888 25136664 25137209 -0.066341109 0.066341109 + 350 52.41676 188.84244 25136670 25137210 -0.089546266 0.089546266 + 400 54.366979 195.86852 25136651 25137211 -0.10239755 0.10239755 + 450 54.906542 197.81241 25136645 25137210 -0.099987411 0.099987411 + 500 54.33841 195.7656 25136656 25137216 -0.21295943 0.21295943 +Loop time of 87.5281 on 1 procs for 500 steps with 3776 atoms -Performance: 0.864 ns/day, 27.768 hours/ns, 10.003 timesteps/s -393.3% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.494 ns/day, 48.627 hours/ns, 5.712 timesteps/s, 21.570 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 17.01 | 17.01 | 17.01 | 0.0 | 34.03 -Bond | 0.0010374 | 0.0010374 | 0.0010374 | 0.0 | 0.00 -Kspace | 18.096 | 18.096 | 18.096 | 0.0 | 36.20 -Neigh | 0.1828 | 0.1828 | 0.1828 | 0.0 | 0.37 -Comm | 0.043856 | 0.043856 | 0.043856 | 0.0 | 0.09 -Output | 0.0018373 | 0.0018373 | 0.0018373 | 0.0 | 0.00 -Modify | 14.632 | 14.632 | 14.632 | 0.0 | 29.27 -Other | | 0.01548 | | | 0.03 +Pair | 18.819 | 18.819 | 18.819 | 0.0 | 21.50 +Bond | 0.0014336 | 0.0014336 | 0.0014336 | 0.0 | 0.00 +Kspace | 34.891 | 34.891 | 34.891 | 0.0 | 39.86 +Neigh | 0.21542 | 0.21542 | 0.21542 | 0.0 | 0.25 +Comm | 0.063383 | 0.063383 | 0.063383 | 0.0 | 0.07 +Output | 0.0020476 | 0.0020476 | 0.0020476 | 0.0 | 0.00 +Modify | 33.507 | 33.507 | 33.507 | 0.0 | 38.28 +Other | | 0.0281 | | | 0.03 Nlocal: 3776 ave 3776 max 3776 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -151,4 +188,4 @@ Ave neighs/atom = 457.08845 Ave special neighs/atom = 0.50847458 Neighbor list builds = 5 Dangerous builds = 0 -Total wall time: 0:01:50 +Total wall time: 0:01:44 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-thermo.g++.4 b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-thermo.g++.4 similarity index 55% rename from examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-thermo.g++.4 rename to examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-thermo.g++.4 index 006fe4d31b..200dc681df 100644 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-thermo.g++.4 +++ b/examples/PACKAGES/electrode/graph-il/log.1Dec2022.graph-il-thermo.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) # electrodes with thermopotentiostat # for graphene-ionic liquid supercapacitor @@ -39,12 +39,19 @@ Finding 1-2 1-3 1-4 neighbors ... 1 = max # of 1-4 neighbors 2 = max # of special neighbors special bonds CPU = 0.002 seconds - read_data CPU = 0.025 seconds + read_data CPU = 0.036 seconds -group bot molecule 641 -416 atoms in group bot -group top molecule 642 +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +1891 atoms in group zpos +group ele type 5 +832 atoms in group ele +group top intersect ele zpos 416 atoms in group top +group bot subtract ele top +416 atoms in group bot group bmi type 1 2 3 960 atoms in group bmi @@ -53,11 +60,12 @@ group electrolyte type 1 2 3 4 fix nvt electrolyte nvt temp 500.0 500.0 100 fix shake bmi shake 1e-4 20 0 b 1 2 a 1 +Finding SHAKE clusters ... 0 = # of size 2 clusters 0 = # of size 3 clusters 0 = # of size 4 clusters 320 = # of frozen angles - find clusters CPU = 0.001 seconds + find clusters CPU = 0.005 seconds variable q atom q compute qtop top reduce sum v_q @@ -66,10 +74,10 @@ compute ctemp electrolyte temp kspace_modify slab 3.0 unfix nvt # remove NVT thermostat included from "settings.mod" -fix conpthermo bot electrode/thermo -1.0 1.979 couple top 1.0 etypes 5 temp 500 100 7 # temp tau rng +fix conpthermo bot electrode/thermo -1.0 1.979 couple top 1.0 etypes on temp 500 100 7 symm on # temp tau rng 832 atoms in group conp_group # to compare to regular constant potential, switch previous line to this: -#fix conp bot electrode/conp -1.0 1.979 couple top 1.0 etypes 5 symm on +#fix conp bot electrode/conp -1.0 1.979 couple top 1.0 etypes on symm on fix nve electrolyte nve # note ionic liquid does not reach 500K immediately @@ -78,6 +86,35 @@ fix nve electrolyte nve thermo 50 thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop run 500 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + PPPM/electrode initialization ... using 12-bit tables for long-range coulomb (src/kspace.cpp:342) G vector (1/distance) = 0.20904498 @@ -87,9 +124,9 @@ PPPM/electrode initialization ... estimated relative force accuracy = 1.1149519e-07 using double precision MKL FFT 3d grid and FFT values/proc = 151593 85504 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule +Generated 15 of 15 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 18 ghost atom cutoff = 18 @@ -110,35 +147,35 @@ Neighbor list info ... pair build: skip stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 23.63 | 27.46 | 31.29 Mbytes +Per MPI rank memory allocation (min/avg/max) = 22.9 | 26.72 | 30.55 Mbytes Step Temp c_ctemp E_pair TotEng c_qbot c_qtop - 0 0 0 25137187 25137187 0.12767613 -0.12767613 - 50 16.63971 59.94807 25137031 25137203 0.11714714 -0.11714714 - 100 40.785523 146.93846 25136782 25137202 0.1278358 -0.1278358 - 150 53.394067 192.3634 25136654 25137204 0.080257143 -0.080257143 - 200 56.419019 203.26143 25136624 25137205 0.024756489 -0.024756489 - 250 54.922935 197.87147 25136640 25137205 -0.024533719 0.024533719 - 300 52.884861 190.52888 25136660 25137205 -0.066341094 0.066341094 - 350 52.41676 188.84244 25136666 25137206 -0.089546252 0.089546252 - 400 54.366979 195.86852 25136646 25137206 -0.10239753 0.10239753 - 450 54.906542 197.81241 25136642 25137208 -0.099987401 0.099987401 - 500 54.33841 195.7656 25136642 25137201 -0.21295942 0.21295942 -Loop time of 27.6772 on 4 procs for 500 steps with 3776 atoms + 0 0 0 25137188 25137188 0.12767608 -0.12767608 + 50 16.63971 59.94807 25137031 25137202 0.11714711 -0.11714711 + 100 40.785523 146.93846 25136782 25137202 0.12783578 -0.12783578 + 150 53.394067 192.3634 25136653 25137203 0.080257127 -0.080257127 + 200 56.419019 203.26143 25136623 25137204 0.024756474 -0.024756474 + 250 54.922935 197.87147 25136641 25137206 -0.024533734 0.024533734 + 300 52.884861 190.52888 25136664 25137209 -0.066341109 0.066341109 + 350 52.41676 188.84244 25136670 25137210 -0.089546266 0.089546266 + 400 54.366979 195.86852 25136651 25137211 -0.10239755 0.10239755 + 450 54.906542 197.81241 25136645 25137210 -0.099987411 0.099987411 + 500 54.33841 195.7656 25136656 25137216 -0.21295943 0.21295943 +Loop time of 49.2564 on 4 procs for 500 steps with 3776 atoms -Performance: 1.561 ns/day, 15.376 hours/ns, 18.065 timesteps/s -91.7% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 0.877 ns/day, 27.365 hours/ns, 10.151 timesteps/s, 38.330 katom-step/s +76.1% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 4.6214 | 4.8032 | 4.9546 | 6.5 | 17.35 -Bond | 0.0005324 | 0.00060509 | 0.00069468 | 0.0 | 0.00 -Kspace | 13.883 | 14.034 | 14.216 | 3.8 | 50.71 -Neigh | 0.061704 | 0.061727 | 0.06176 | 0.0 | 0.22 -Comm | 0.10101 | 0.10374 | 0.10645 | 0.8 | 0.37 -Output | 0.00086818 | 0.0010909 | 0.001715 | 1.1 | 0.00 -Modify | 8.65 | 8.6524 | 8.6545 | 0.1 | 31.26 -Other | | 0.02055 | | | 0.07 +Pair | 5.6984 | 5.9083 | 6.1177 | 6.4 | 12.00 +Bond | 0.0011785 | 0.0012201 | 0.0013055 | 0.1 | 0.00 +Kspace | 24.311 | 24.519 | 24.729 | 3.1 | 49.78 +Neigh | 0.075406 | 0.075487 | 0.07556 | 0.0 | 0.15 +Comm | 0.29972 | 0.30943 | 0.31881 | 1.7 | 0.63 +Output | 0.0012474 | 0.001684 | 0.0027062 | 1.5 | 0.00 +Modify | 18.377 | 18.384 | 18.391 | 0.2 | 37.32 +Other | | 0.05679 | | | 0.12 Nlocal: 944 ave 951 max 940 min Histogram: 1 1 1 0 0 0 0 0 0 1 @@ -152,4 +189,4 @@ Ave neighs/atom = 457.08845 Ave special neighs/atom = 0.50847458 Neighbor list builds = 5 Dangerous builds = 0 -Total wall time: 0:00:50 +Total wall time: 0:00:55 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq.g++.1 b/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq.g++.1 deleted file mode 100644 index 5722e357ec..0000000000 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq.g++.1 +++ /dev/null @@ -1,153 +0,0 @@ -LAMMPS (24 Mar 2022) -# electrodes with constrained total charges -# for graphene-ionic liquid supercapacitor - -boundary p p f # slab calculation -include settings.mod # styles, groups, computes and fixes -# set boundary in main script because ffield is periodic -units real -# distribute electrode atoms among all processors: -if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" - -atom_style full -pair_style lj/cut/coul/long 16 -bond_style harmonic -angle_style harmonic -kspace_style pppm/electrode 1e-7 -# kspace_modify in main script because ffield is periodic - -read_data "data.graph-il" -Reading data file ... - orthogonal box = (0 0 -68) to (32.2 34.4 68) - 1 by 1 by 1 MPI processor grid - reading atoms ... - 3776 atoms - scanning bonds ... - 2 = max bonds/atom - scanning angles ... - 1 = max angles/atom - reading bonds ... - 640 bonds - reading angles ... - 320 angles -Finding 1-2 1-3 1-4 neighbors ... - special bond factors lj: 0 0 0 - special bond factors coul: 0 0 0 - 2 = max # of 1-2 neighbors - 1 = max # of 1-3 neighbors - 1 = max # of 1-4 neighbors - 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.012 seconds - -group bot molecule 641 -416 atoms in group bot -group top molecule 642 -416 atoms in group top - -group bmi type 1 2 3 -960 atoms in group bmi -group electrolyte type 1 2 3 4 -1280 atoms in group electrolyte - -fix nvt electrolyte nvt temp 500.0 500.0 100 -fix shake bmi shake 1e-4 20 0 b 1 2 a 1 - 0 = # of size 2 clusters - 0 = # of size 3 clusters - 0 = # of size 4 clusters - 320 = # of frozen angles - find clusters CPU = 0.000 seconds - -variable q atom q -compute qtop top reduce sum v_q -compute qbot bot reduce sum v_q -compute ctemp electrolyte temp -kspace_modify slab 3.0 - -fix conq bot electrode/conq -1.0 1.979 couple top 1.0 etypes 5 # conq doesn't take symm option -832 atoms in group conp_group - -# ask fix conq to output electrode potentials to internal variables -variable vbot internal 0.0 -variable vtop internal 0.0 -fix_modify conq set v bot vbot -fix_modify conq set v top vtop - -thermo 50 -thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop -run 500 -PPPM/electrode initialization ... - using 12-bit tables for long-range coulomb (src/kspace.cpp:342) - G vector (1/distance) = 0.20904498 - grid = 32 32 200 - stencil order = 5 - estimated absolute RMS force accuracy = 3.7023506e-05 - estimated relative force accuracy = 1.1149519e-07 - using double precision MKL FFT - 3d grid and FFT values/proc = 307242 204800 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 18 - ghost atom cutoff = 18 - binsize = 9, bins = 4 4 16 - 3 neighbor lists, perpetual/occasional/extra = 2 1 0 - (1) pair lj/cut/coul/long, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/3d - bin: standard - (2) fix electrode/conq, occasional, skip from (1) - attributes: half, newton on - pair build: skip - stencil: none - bin: none - (3) fix electrode/conq, perpetual, skip from (1) - attributes: half, newton on - pair build: skip - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 56.89 | 56.89 | 56.89 Mbytes - Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_vbot v_vtop - 0 0 0 25136984 25136984 -1 1 -9.931852 10.097344 - 50 20.206425 72.797911 25136825 25137033 -1 1 -9.4359366 9.5964514 - 100 55.931663 201.50563 25136587 25137163 -1 1 -8.0440112 8.1861787 - 150 81.389273 293.22204 25136533 25137371 -1 1 -6.1113109 6.2267114 - 200 92.867946 334.57639 25136646 25137603 -1 1 -4.1857807 4.2740694 - 250 97.518304 351.33028 25136809 25137814 -1 1 -2.8383703 2.9101475 - 300 102.36577 368.79431 25136933 25137987 -1 1 -2.3831643 2.4461115 - 350 113.66597 409.50566 25136960 25138131 -1 1 -2.7083563 2.7457811 - 400 122.8443 442.57252 25136991 25138256 -1 1 -3.4311003 3.3941657 - 450 128.63713 463.44243 25137048 25138373 -1 1 -4.132871 3.9852959 - 500 131.18361 472.61665 25137142 25138493 -1 1 -4.5104095 4.2567261 -Loop time of 48.9361 on 1 procs for 500 steps with 3776 atoms - -Performance: 0.883 ns/day, 27.187 hours/ns, 10.217 timesteps/s -393.9% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 17.652 | 17.652 | 17.652 | 0.0 | 36.07 -Bond | 0.0010418 | 0.0010418 | 0.0010418 | 0.0 | 0.00 -Kspace | 16.566 | 16.566 | 16.566 | 0.0 | 33.85 -Neigh | 0.21584 | 0.21584 | 0.21584 | 0.0 | 0.44 -Comm | 0.04167 | 0.04167 | 0.04167 | 0.0 | 0.09 -Output | 0.0014585 | 0.0014585 | 0.0014585 | 0.0 | 0.00 -Modify | 14.445 | 14.445 | 14.445 | 0.0 | 29.52 -Other | | 0.0134 | | | 0.03 - -Nlocal: 3776 ave 3776 max 3776 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 12510 ave 12510 max 12510 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 1.72559e+06 ave 1.72559e+06 max 1.72559e+06 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 1725588 -Ave neighs/atom = 456.98835 -Ave special neighs/atom = 0.50847458 -Neighbor list builds = 6 -Dangerous builds = 0 -Total wall time: 0:01:43 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq.g++.4 b/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq.g++.4 deleted file mode 100644 index 96343114e6..0000000000 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq.g++.4 +++ /dev/null @@ -1,154 +0,0 @@ -LAMMPS (24 Mar 2022) -# electrodes with constrained total charges -# for graphene-ionic liquid supercapacitor - -boundary p p f # slab calculation -include settings.mod # styles, groups, computes and fixes -# set boundary in main script because ffield is periodic -units real -# distribute electrode atoms among all processors: -if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" -processors * * 2 - -atom_style full -pair_style lj/cut/coul/long 16 -bond_style harmonic -angle_style harmonic -kspace_style pppm/electrode 1e-7 -# kspace_modify in main script because ffield is periodic - -read_data "data.graph-il" -Reading data file ... - orthogonal box = (0 0 -68) to (32.2 34.4 68) - 1 by 2 by 2 MPI processor grid - reading atoms ... - 3776 atoms - scanning bonds ... - 2 = max bonds/atom - scanning angles ... - 1 = max angles/atom - reading bonds ... - 640 bonds - reading angles ... - 320 angles -Finding 1-2 1-3 1-4 neighbors ... - special bond factors lj: 0 0 0 - special bond factors coul: 0 0 0 - 2 = max # of 1-2 neighbors - 1 = max # of 1-3 neighbors - 1 = max # of 1-4 neighbors - 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.020 seconds - -group bot molecule 641 -416 atoms in group bot -group top molecule 642 -416 atoms in group top - -group bmi type 1 2 3 -960 atoms in group bmi -group electrolyte type 1 2 3 4 -1280 atoms in group electrolyte - -fix nvt electrolyte nvt temp 500.0 500.0 100 -fix shake bmi shake 1e-4 20 0 b 1 2 a 1 - 0 = # of size 2 clusters - 0 = # of size 3 clusters - 0 = # of size 4 clusters - 320 = # of frozen angles - find clusters CPU = 0.001 seconds - -variable q atom q -compute qtop top reduce sum v_q -compute qbot bot reduce sum v_q -compute ctemp electrolyte temp -kspace_modify slab 3.0 - -fix conq bot electrode/conq -1.0 1.979 couple top 1.0 etypes 5 # conq doesn't take symm option -832 atoms in group conp_group - -# ask fix conq to output electrode potentials to internal variables -variable vbot internal 0.0 -variable vtop internal 0.0 -fix_modify conq set v bot vbot -fix_modify conq set v top vtop - -thermo 50 -thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop -run 500 -PPPM/electrode initialization ... - using 12-bit tables for long-range coulomb (src/kspace.cpp:342) - G vector (1/distance) = 0.20904498 - grid = 32 32 200 - stencil order = 5 - estimated absolute RMS force accuracy = 3.7023506e-05 - estimated relative force accuracy = 1.1149519e-07 - using double precision MKL FFT - 3d grid and FFT values/proc = 151593 85504 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 18 - ghost atom cutoff = 18 - binsize = 9, bins = 4 4 16 - 3 neighbor lists, perpetual/occasional/extra = 2 1 0 - (1) pair lj/cut/coul/long, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/3d - bin: standard - (2) fix electrode/conq, occasional, skip from (1) - attributes: half, newton on - pair build: skip - stencil: none - bin: none - (3) fix electrode/conq, perpetual, skip from (1) - attributes: half, newton on - pair build: skip - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 23.63 | 27.46 | 31.29 Mbytes - Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_vbot v_vtop - 0 0 0 25136984 25136984 -1 1 -9.931852 10.097344 - 50 20.206425 72.797911 25136825 25137033 -1 1 -9.4359366 9.5964514 - 100 55.931663 201.50563 25136587 25137163 -1 1 -8.0440112 8.1861787 - 150 81.389273 293.22204 25136533 25137371 -1 1 -6.1113109 6.2267114 - 200 92.867946 334.57639 25136646 25137603 -1 1 -4.1857807 4.2740694 - 250 97.518304 351.33028 25136809 25137814 -1 1 -2.8383703 2.9101475 - 300 102.36577 368.79431 25136933 25137987 -1 1 -2.3831643 2.4461115 - 350 113.66597 409.50566 25136960 25138131 -1 1 -2.7083563 2.7457811 - 400 122.8443 442.57252 25136991 25138256 -1 1 -3.4311003 3.3941657 - 450 128.63713 463.44243 25137048 25138373 -1 1 -4.132871 3.9852959 - 500 131.18361 472.61665 25137142 25138493 -1 1 -4.5104095 4.2567261 -Loop time of 28.8336 on 4 procs for 500 steps with 3776 atoms - -Performance: 1.498 ns/day, 16.019 hours/ns, 17.341 timesteps/s -94.1% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 5.7721 | 5.9353 | 6.144 | 6.0 | 20.58 -Bond | 0.00057855 | 0.00067043 | 0.00074793 | 0.0 | 0.00 -Kspace | 13.485 | 13.694 | 13.857 | 4.0 | 47.49 -Neigh | 0.092021 | 0.092044 | 0.092068 | 0.0 | 0.32 -Comm | 0.11486 | 0.11638 | 0.11801 | 0.4 | 0.40 -Output | 0.00090452 | 0.001109 | 0.0017097 | 1.0 | 0.00 -Modify | 8.974 | 8.9761 | 8.978 | 0.1 | 31.13 -Other | | 0.01837 | | | 0.06 - -Nlocal: 944 ave 948 max 940 min -Histogram: 1 0 0 1 0 0 1 0 0 1 -Nghost: 5920.5 ave 5941 max 5899 min -Histogram: 1 0 0 0 1 1 0 0 0 1 -Neighs: 431397 ave 442329 max 421103 min -Histogram: 2 0 0 0 0 0 0 0 1 1 - -Total # of neighbors = 1725588 -Ave neighs/atom = 456.98835 -Ave special neighs/atom = 0.50847458 -Neighbor list builds = 6 -Dangerous builds = 0 -Total wall time: 0:00:51 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq2.g++.1 b/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq2.g++.1 deleted file mode 100644 index 4465ed311d..0000000000 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq2.g++.1 +++ /dev/null @@ -1,170 +0,0 @@ -LAMMPS (24 Mar 2022) -# electrodes with constrained total charges imposed from dynamically computed potentials -# for graphene-ionic liquid supercapacitor - -boundary p p f # slab calculation -include settings.mod # styles, groups, computes and fixes -# set boundary in main script because ffield is periodic -units real -# distribute electrode atoms among all processors: -if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" - -atom_style full -pair_style lj/cut/coul/long 16 -bond_style harmonic -angle_style harmonic -kspace_style pppm/electrode 1e-7 -# kspace_modify in main script because ffield is periodic - -read_data "data.graph-il" -Reading data file ... - orthogonal box = (0 0 -68) to (32.2 34.4 68) - 1 by 1 by 1 MPI processor grid - reading atoms ... - 3776 atoms - scanning bonds ... - 2 = max bonds/atom - scanning angles ... - 1 = max angles/atom - reading bonds ... - 640 bonds - reading angles ... - 320 angles -Finding 1-2 1-3 1-4 neighbors ... - special bond factors lj: 0 0 0 - special bond factors coul: 0 0 0 - 2 = max # of 1-2 neighbors - 1 = max # of 1-3 neighbors - 1 = max # of 1-4 neighbors - 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.031 seconds - -group bot molecule 641 -416 atoms in group bot -group top molecule 642 -416 atoms in group top - -group bmi type 1 2 3 -960 atoms in group bmi -group electrolyte type 1 2 3 4 -1280 atoms in group electrolyte - -fix nvt electrolyte nvt temp 500.0 500.0 100 -fix shake bmi shake 1e-4 20 0 b 1 2 a 1 - 0 = # of size 2 clusters - 0 = # of size 3 clusters - 0 = # of size 4 clusters - 320 = # of frozen angles - find clusters CPU = 0.001 seconds - -variable q atom q -compute qtop top reduce sum v_q -compute qbot bot reduce sum v_q -compute ctemp electrolyte temp -kspace_modify slab 3.0 - -fix conp bot electrode/conp v_vbot 1.979 couple top v_vtop etypes 5 -832 atoms in group conp_group - -# get the four entries of electrode elastance matrix -variable me00 internal 0.0 -variable me01 internal 0.0 -variable me10 internal 0.0 -variable me11 internal 0.0 -fix_modify conp set me bot bot me00 -fix_modify conp set me bot top me01 -fix_modify conp set me top bot me10 -fix_modify conp set me top top me11 - -# get the 0V charges (qsb), and excess charge required to reach preset total charges -variable qsb_bot internal 0.0 -variable qsb_top internal 0.0 -fix_modify conp set qsb bot qsb_bot -fix_modify conp set qsb top qsb_top -variable qex_bot equal -1.0-v_qsb_bot # difference between desired and 0V charge -variable qex_top equal 1.0-v_qsb_top # difference between desired and 0V charge - -# calculate imposed potential as elastance * excess charge -# note: fix will wait until the run setup to look for its potential variables -variable vbot equal v_me00*v_qex_bot+v_me01*v_qex_top -variable vtop equal v_me10*v_qex_bot+v_me11*v_qex_top - -thermo 50 -thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop -run 500 -PPPM/electrode initialization ... - using 12-bit tables for long-range coulomb (src/kspace.cpp:342) - G vector (1/distance) = 0.20904498 - grid = 32 32 200 - stencil order = 5 - estimated absolute RMS force accuracy = 3.7023506e-05 - estimated relative force accuracy = 1.1149519e-07 - using double precision MKL FFT - 3d grid and FFT values/proc = 307242 204800 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 18 - ghost atom cutoff = 18 - binsize = 9, bins = 4 4 16 - 3 neighbor lists, perpetual/occasional/extra = 2 1 0 - (1) pair lj/cut/coul/long, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/3d - bin: standard - (2) fix electrode/conp, occasional, skip from (1) - attributes: half, newton on - pair build: skip - stencil: none - bin: none - (3) fix electrode/conp, perpetual, skip from (1) - attributes: half, newton on - pair build: skip - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 56.89 | 56.89 | 56.89 Mbytes - Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_vbot v_vtop - 0 0 0 25136984 25136984 -1 1 -9.931852 10.097344 - 50 20.206425 72.797911 25136825 25137033 -1 1 -9.4359366 9.5964514 - 100 55.931663 201.50563 25136587 25137163 -1 1 -8.0440112 8.1861787 - 150 81.389273 293.22204 25136533 25137371 -1 1 -6.1113109 6.2267114 - 200 92.867946 334.57639 25136646 25137603 -1 1 -4.1857807 4.2740694 - 250 97.518304 351.33028 25136809 25137814 -1 1 -2.8383703 2.9101475 - 300 102.36577 368.79431 25136933 25137987 -1 1 -2.3831643 2.4461115 - 350 113.66597 409.50566 25136960 25138131 -1 1 -2.7083563 2.7457811 - 400 122.8443 442.57252 25136991 25138256 -1 1 -3.4311003 3.3941657 - 450 128.63713 463.44243 25137048 25138373 -1 1 -4.132871 3.9852959 - 500 131.18361 472.61665 25137142 25138493 -1 1 -4.5104095 4.2567261 -Loop time of 62.9692 on 1 procs for 500 steps with 3776 atoms - -Performance: 0.686 ns/day, 34.983 hours/ns, 7.940 timesteps/s -393.7% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 20.307 | 20.307 | 20.307 | 0.0 | 32.25 -Bond | 0.0020074 | 0.0020074 | 0.0020074 | 0.0 | 0.00 -Kspace | 23.562 | 23.562 | 23.562 | 0.0 | 37.42 -Neigh | 0.26149 | 0.26149 | 0.26149 | 0.0 | 0.42 -Comm | 0.059436 | 0.059436 | 0.059436 | 0.0 | 0.09 -Output | 0.0023888 | 0.0023888 | 0.0023888 | 0.0 | 0.00 -Modify | 18.756 | 18.756 | 18.756 | 0.0 | 29.79 -Other | | 0.01897 | | | 0.03 - -Nlocal: 3776 ave 3776 max 3776 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 12510 ave 12510 max 12510 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 1.72559e+06 ave 1.72559e+06 max 1.72559e+06 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 1725588 -Ave neighs/atom = 456.98835 -Ave special neighs/atom = 0.50847458 -Neighbor list builds = 6 -Dangerous builds = 0 -Total wall time: 0:02:26 diff --git a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq2.g++.4 b/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq2.g++.4 deleted file mode 100644 index cf8ddf60a3..0000000000 --- a/examples/PACKAGES/electrode/graph-il/log.26Apr2022.graph-il-conq2.g++.4 +++ /dev/null @@ -1,171 +0,0 @@ -LAMMPS (24 Mar 2022) -# electrodes with constrained total charges imposed from dynamically computed potentials -# for graphene-ionic liquid supercapacitor - -boundary p p f # slab calculation -include settings.mod # styles, groups, computes and fixes -# set boundary in main script because ffield is periodic -units real -# distribute electrode atoms among all processors: -if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" -processors * * 2 - -atom_style full -pair_style lj/cut/coul/long 16 -bond_style harmonic -angle_style harmonic -kspace_style pppm/electrode 1e-7 -# kspace_modify in main script because ffield is periodic - -read_data "data.graph-il" -Reading data file ... - orthogonal box = (0 0 -68) to (32.2 34.4 68) - 1 by 2 by 2 MPI processor grid - reading atoms ... - 3776 atoms - scanning bonds ... - 2 = max bonds/atom - scanning angles ... - 1 = max angles/atom - reading bonds ... - 640 bonds - reading angles ... - 320 angles -Finding 1-2 1-3 1-4 neighbors ... - special bond factors lj: 0 0 0 - special bond factors coul: 0 0 0 - 2 = max # of 1-2 neighbors - 1 = max # of 1-3 neighbors - 1 = max # of 1-4 neighbors - 2 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.019 seconds - -group bot molecule 641 -416 atoms in group bot -group top molecule 642 -416 atoms in group top - -group bmi type 1 2 3 -960 atoms in group bmi -group electrolyte type 1 2 3 4 -1280 atoms in group electrolyte - -fix nvt electrolyte nvt temp 500.0 500.0 100 -fix shake bmi shake 1e-4 20 0 b 1 2 a 1 - 0 = # of size 2 clusters - 0 = # of size 3 clusters - 0 = # of size 4 clusters - 320 = # of frozen angles - find clusters CPU = 0.001 seconds - -variable q atom q -compute qtop top reduce sum v_q -compute qbot bot reduce sum v_q -compute ctemp electrolyte temp -kspace_modify slab 3.0 - -fix conp bot electrode/conp v_vbot 1.979 couple top v_vtop etypes 5 -832 atoms in group conp_group - -# get the four entries of electrode elastance matrix -variable me00 internal 0.0 -variable me01 internal 0.0 -variable me10 internal 0.0 -variable me11 internal 0.0 -fix_modify conp set me bot bot me00 -fix_modify conp set me bot top me01 -fix_modify conp set me top bot me10 -fix_modify conp set me top top me11 - -# get the 0V charges (qsb), and excess charge required to reach preset total charges -variable qsb_bot internal 0.0 -variable qsb_top internal 0.0 -fix_modify conp set qsb bot qsb_bot -fix_modify conp set qsb top qsb_top -variable qex_bot equal -1.0-v_qsb_bot # difference between desired and 0V charge -variable qex_top equal 1.0-v_qsb_top # difference between desired and 0V charge - -# calculate imposed potential as elastance * excess charge -# note: fix will wait until the run setup to look for its potential variables -variable vbot equal v_me00*v_qex_bot+v_me01*v_qex_top -variable vtop equal v_me10*v_qex_bot+v_me11*v_qex_top - -thermo 50 -thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop -run 500 -PPPM/electrode initialization ... - using 12-bit tables for long-range coulomb (src/kspace.cpp:342) - G vector (1/distance) = 0.20904498 - grid = 32 32 200 - stencil order = 5 - estimated absolute RMS force accuracy = 3.7023506e-05 - estimated relative force accuracy = 1.1149519e-07 - using double precision MKL FFT - 3d grid and FFT values/proc = 151593 85504 - generated 10 of 10 mixed pair_coeff terms from geometric mixing rule -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 18 - ghost atom cutoff = 18 - binsize = 9, bins = 4 4 16 - 3 neighbor lists, perpetual/occasional/extra = 2 1 0 - (1) pair lj/cut/coul/long, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/3d - bin: standard - (2) fix electrode/conp, occasional, skip from (1) - attributes: half, newton on - pair build: skip - stencil: none - bin: none - (3) fix electrode/conp, perpetual, skip from (1) - attributes: half, newton on - pair build: skip - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 23.63 | 27.46 | 31.29 Mbytes - Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_vbot v_vtop - 0 0 0 25136984 25136984 -1 1 -9.931852 10.097344 - 50 20.206425 72.797911 25136825 25137033 -1 1 -9.4359366 9.5964514 - 100 55.931663 201.50563 25136587 25137163 -1 1 -8.0440112 8.1861787 - 150 81.389273 293.22204 25136533 25137371 -1 1 -6.1113109 6.2267114 - 200 92.867946 334.57639 25136646 25137603 -1 1 -4.1857807 4.2740694 - 250 97.518304 351.33028 25136809 25137814 -1 1 -2.8383703 2.9101475 - 300 102.36577 368.79431 25136933 25137987 -1 1 -2.3831643 2.4461115 - 350 113.66597 409.50566 25136960 25138131 -1 1 -2.7083563 2.7457811 - 400 122.8443 442.57252 25136991 25138256 -1 1 -3.4311003 3.3941657 - 450 128.63713 463.44243 25137048 25138373 -1 1 -4.132871 3.9852959 - 500 131.18361 472.61665 25137142 25138493 -1 1 -4.5104095 4.2567261 -Loop time of 33.4031 on 4 procs for 500 steps with 3776 atoms - -Performance: 1.293 ns/day, 18.557 hours/ns, 14.969 timesteps/s -94.3% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 7.1262 | 7.3913 | 7.611 | 6.8 | 22.13 -Bond | 0.0007191 | 0.00079089 | 0.00087005 | 0.0 | 0.00 -Kspace | 15.139 | 15.358 | 15.623 | 4.7 | 45.98 -Neigh | 0.10374 | 0.10377 | 0.10383 | 0.0 | 0.31 -Comm | 0.14245 | 0.14353 | 0.14563 | 0.3 | 0.43 -Output | 0.0012987 | 0.0015671 | 0.0022434 | 1.0 | 0.00 -Modify | 10.381 | 10.383 | 10.384 | 0.0 | 31.08 -Other | | 0.02134 | | | 0.06 - -Nlocal: 944 ave 948 max 940 min -Histogram: 1 0 0 1 0 0 1 0 0 1 -Nghost: 5920.5 ave 5941 max 5899 min -Histogram: 1 0 0 0 1 1 0 0 0 1 -Neighs: 431397 ave 442329 max 421103 min -Histogram: 2 0 0 0 0 0 0 0 1 1 - -Total # of neighbors = 1725588 -Ave neighs/atom = 456.98835 -Ave special neighs/atom = 0.50847458 -Neighbor list builds = 6 -Dangerous builds = 0 -Total wall time: 0:01:01 diff --git a/examples/PACKAGES/electrode/graph-il/settings.mod b/examples/PACKAGES/electrode/graph-il/settings.mod index dcdaf7bfcd..ffbbfb1cc4 100644 --- a/examples/PACKAGES/electrode/graph-il/settings.mod +++ b/examples/PACKAGES/electrode/graph-il/settings.mod @@ -12,8 +12,13 @@ kspace_style pppm/electrode 1e-7 read_data "data.graph-il" -group bot molecule 641 -group top molecule 642 +# replicate 4 4 1 # test different sys sizes + +variable zpos atom "z > 0" +group zpos variable zpos +group ele type 5 +group top intersect ele zpos +group bot subtract ele top group bmi type 1 2 3 group electrolyte type 1 2 3 4 diff --git a/examples/PACKAGES/electrode/madelung/.gitignore b/examples/PACKAGES/electrode/madelung/.gitignore new file mode 100644 index 0000000000..89d8d1a065 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/.gitignore @@ -0,0 +1,2 @@ +*.csv +*.txt diff --git a/examples/PACKAGES/electrode/madelung/data.au-elyt b/examples/PACKAGES/electrode/madelung/data.au-elyt new file mode 100644 index 0000000000..366e317378 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/data.au-elyt @@ -0,0 +1,27 @@ +LAMMPS data file via write_data, version 24 Dec 2020, timestep = 0 + +4 atoms +3 atom types + +0 1 xlo xhi +0 1 ylo yhi +-10 10 zlo zhi + +Masses + +1 196.966553 +2 196.966553 +3 1.0 + +Pair Coeffs # lj/cut/coul/long + +1 0 0 +2 0 0 +3 0 0 + +Atoms # full + +1 1 1 0.00 0.00 0.00 -2.00 # bottom electrode +2 2 2 0.00 0.00 0.00 2.00 # top electrode +3 3 3 0.50 0.00 0.00 -1.00 # bottom electrolyte +4 3 3 -0.50 0.00 0.00 1.00 # top electrolyte diff --git a/examples/PACKAGES/electrode/madelung/eval.py b/examples/PACKAGES/electrode/madelung/eval.py new file mode 100644 index 0000000000..2f5a355d9b --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/eval.py @@ -0,0 +1,53 @@ +#!/usr/env/python3 + +import sys +import os.path as op + + +def rel_error(out, ref): + return 100 * abs((ref - out) / out) + + +assert len(sys.argv) == 5 + +with open(sys.argv[1]) as f: + ref_line = f.readlines()[-1].split(", ") +e_ref = float(ref_line[1]) +q_ref = float(ref_line[3]) +inv11_ref = float(ref_line[4]) +inv12_ref = float(ref_line[5]) +b1_ref = float(ref_line[6]) + +# out.csv +with open(sys.argv[2]) as f: + out_line = f.readlines()[-1].split(", ") +e_out = float(out_line[0]) +q_out = float(out_line[1]) + +out_lines = [("energy", e_ref, e_out), ("charge", q_ref, q_out)] + +# vec.csv +vec_file = "vec.csv" +if op.isfile(vec_file): + with open(sys.argv[4]) as f: + vec_line = f.readlines()[1:] + b1_out = float(vec_line[0]) + b2_out = float(vec_line[1]) + out_lines.append(("b1", b1_ref, b1_out)) + +# inv.csv +inv_file = "inv.csv" +if op.isfile(inv_file): + with open(inv_file) as f: + inv_line = f.readlines()[1].split() + inv11_out = float(inv_line[0]) + inv12_out = float(inv_line[1]) + out_lines.append(("inv11", inv11_ref, inv11_out)) + +lines = [] +for label, ref, out in out_lines: + error = rel_error(out, ref) + lines.append(f"{label}: {out:.5f}, {error:.5f}\n") + +with open("madelung.txt", 'a') as f: + f.writelines(lines) diff --git a/examples/PACKAGES/electrode/madelung/in.cg b/examples/PACKAGES/electrode/madelung/in.cg new file mode 100644 index 0000000000..39a90a1f29 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/in.cg @@ -0,0 +1,11 @@ +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on algo cg 1e-6 + +run 0 + diff --git a/examples/PACKAGES/electrode/madelung/in.ewald-ew2d b/examples/PACKAGES/electrode/madelung/in.ewald-ew2d new file mode 100644 index 0000000000..2f54e747d1 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/in.ewald-ew2d @@ -0,0 +1,11 @@ +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab ew2d + +include "settings.mod" # styles, computes, groups and fixes + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on write_inv inv.csv write_vec vec.csv + +run 0 + diff --git a/examples/PACKAGES/electrode/madelung/in.ewald-ew3dc b/examples/PACKAGES/electrode/madelung/in.ewald-ew3dc new file mode 100644 index 0000000000..c89804ef11 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/in.ewald-ew3dc @@ -0,0 +1,11 @@ +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on write_inv inv.csv write_vec vec.csv + +run 0 + diff --git a/examples/PACKAGES/electrode/madelung/in.ewald-ffield b/examples/PACKAGES/electrode/madelung/in.ewald-ffield new file mode 100644 index 0000000000..c30f82159b --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/in.ewald-ffield @@ -0,0 +1,10 @@ +boundary p p p +kspace_style ewald/electrode 1.0e-8 + +include "settings.mod" # styles, computes, groups and fixes + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on ffield yes write_inv inv.csv write_vec vec.csv + +run 0 + diff --git a/examples/PACKAGES/electrode/madelung/in.pppm-ew3dc b/examples/PACKAGES/electrode/madelung/in.pppm-ew3dc new file mode 100644 index 0000000000..c36587af08 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/in.pppm-ew3dc @@ -0,0 +1,11 @@ +boundary p p f +kspace_style pppm/electrode 1.0e-10 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on write_inv inv.csv write_vec vec.csv + +run 0 + diff --git a/examples/PACKAGES/electrode/madelung/in.pppm-ffield b/examples/PACKAGES/electrode/madelung/in.pppm-ffield new file mode 100644 index 0000000000..e161485e6f --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/in.pppm-ffield @@ -0,0 +1,10 @@ +boundary p p p +kspace_style pppm/electrode 1.0e-10 + +include "settings.mod" # styles, computes, groups and fixes + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on ffield yes write_inv inv.csv write_vec vec.csv + +run 0 + diff --git a/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-cg.g++.1 b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-cg.g++.1 new file mode 100644 index 0000000000..a0cd4d959c --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-cg.g++.1 @@ -0,0 +1,131 @@ +LAMMPS (3 Nov 2022) +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 12 + +read_data "data.au-elyt" +Reading data file ... + orthogonal box = (0 0 -10) to (1 1 10) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 4 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.003 seconds + +group bot type 1 +1 atoms in group bot +group top type 2 +1 atoms in group top + +# get electrode charges +variable q atom q +compute qbot bot reduce sum v_q +compute qtop top reduce sum v_q + +compute compute_pe all pe +variable vpe equal c_compute_pe +variable charge equal c_qtop +fix fxprint all print 1 "${vpe}, ${charge}" file "out.csv" + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on algo cg 1e-6 +2 atoms in group conp_group + +run 0 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Ewald/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) +WARNING: For better accuracy use 'pair_modify table 0' (src/kspace.cpp:365) + G vector (1/distance) = 0.32261103 + estimated absolute RMS force accuracy = 3.8272011e-06 + estimated relative force accuracy = 1.1525502e-08 + KSpace vectors: actual max1d max3d = 52 50 515150 + kxmax kymax kzmax = 1 1 50 +Generated 3 of 3 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 = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 1 1 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Proc sub-domain size < neighbor skin, could lead to lost atoms (src/domain.cpp:966) +139.943964815502, 0.279214485147241 +Per MPI rank memory allocation (min/avg/max) = 144.1 | 144.1 | 144.1 Mbytes + Step PotEng c_qbot c_qtop + 0 139.94396 -0.27921449 0.27921449 +Loop time of 1.092e-06 on 1 procs for 0 steps with 4 atoms + +91.6% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Bond | 0 | 0 | 0 | 0.0 | 0.00 +Kspace | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.092e-06 | | |100.00 + +Nlocal: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3596 ave 3596 max 3596 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 4790 ave 4790 max 4790 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4790 +Ave neighs/atom = 1197.5 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Average conjugate gradient steps: 1 +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-ewald-ew2d.g++.1 b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-ewald-ew2d.g++.1 new file mode 100644 index 0000000000..ff0a8550cd --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-ewald-ew2d.g++.1 @@ -0,0 +1,130 @@ +LAMMPS (3 Nov 2022) +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab ew2d + +include "settings.mod" # styles, computes, groups and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 12 + +read_data "data.au-elyt" +Reading data file ... + orthogonal box = (0 0 -10) to (1 1 10) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 4 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.002 seconds + +group bot type 1 +1 atoms in group bot +group top type 2 +1 atoms in group top + +# get electrode charges +variable q atom q +compute qbot bot reduce sum v_q +compute qtop top reduce sum v_q + +compute compute_pe all pe +variable vpe equal c_compute_pe +variable charge equal c_qtop +fix fxprint all print 1 "${vpe}, ${charge}" file "out.csv" + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on write_inv inv.csv write_vec vec.csv +2 atoms in group conp_group + +run 0 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Ewald/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) +WARNING: For better accuracy use 'pair_modify table 0' (src/kspace.cpp:365) + G vector (1/distance) = 0.32261103 + estimated absolute RMS force accuracy = 9.9990544e-06 + estimated relative force accuracy = 3.0111855e-08 + KSpace vectors: actual max1d max3d = 2 8 2456 + kxmax kymax kzmax = 1 1 8 +Generated 3 of 3 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 = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 1 1 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Proc sub-domain size < neighbor skin, could lead to lost atoms (src/domain.cpp:966) +139.946125020193, 0.279214126709814 +Per MPI rank memory allocation (min/avg/max) = 20.42 | 20.42 | 20.42 Mbytes + Step PotEng c_qbot c_qtop + 0 139.94613 -0.27921413 0.27921413 +Loop time of 1.082e-06 on 1 procs for 0 steps with 4 atoms + +0.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Bond | 0 | 0 | 0 | 0.0 | 0.00 +Kspace | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.082e-06 | | |100.00 + +Nlocal: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3596 ave 3596 max 3596 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 4790 ave 4790 max 4790 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4790 +Ave neighs/atom = 1197.5 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-ewald-ew3dc.g++.1 b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-ewald-ew3dc.g++.1 new file mode 100644 index 0000000000..5374b09ff1 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-ewald-ew3dc.g++.1 @@ -0,0 +1,130 @@ +LAMMPS (3 Nov 2022) +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 12 + +read_data "data.au-elyt" +Reading data file ... + orthogonal box = (0 0 -10) to (1 1 10) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 4 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.003 seconds + +group bot type 1 +1 atoms in group bot +group top type 2 +1 atoms in group top + +# get electrode charges +variable q atom q +compute qbot bot reduce sum v_q +compute qtop top reduce sum v_q + +compute compute_pe all pe +variable vpe equal c_compute_pe +variable charge equal c_qtop +fix fxprint all print 1 "${vpe}, ${charge}" file "out.csv" + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on write_inv inv.csv write_vec vec.csv +2 atoms in group conp_group + +run 0 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Ewald/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) +WARNING: For better accuracy use 'pair_modify table 0' (src/kspace.cpp:365) + G vector (1/distance) = 0.32261103 + estimated absolute RMS force accuracy = 3.8272011e-06 + estimated relative force accuracy = 1.1525502e-08 + KSpace vectors: actual max1d max3d = 52 50 515150 + kxmax kymax kzmax = 1 1 50 +Generated 3 of 3 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 = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 1 1 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Proc sub-domain size < neighbor skin, could lead to lost atoms (src/domain.cpp:966) +139.943964815502, 0.279214485147238 +Per MPI rank memory allocation (min/avg/max) = 144.1 | 144.1 | 144.1 Mbytes + Step PotEng c_qbot c_qtop + 0 139.94396 -0.27921449 0.27921449 +Loop time of 7.31e-07 on 1 procs for 0 steps with 4 atoms + +0.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Bond | 0 | 0 | 0 | 0.0 | 0.00 +Kspace | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 7.31e-07 | | |100.00 + +Nlocal: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3596 ave 3596 max 3596 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 4790 ave 4790 max 4790 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4790 +Ave neighs/atom = 1197.5 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-ewald-ffield.g++.1 b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-ewald-ffield.g++.1 new file mode 100644 index 0000000000..ea3799809d --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-ewald-ffield.g++.1 @@ -0,0 +1,129 @@ +LAMMPS (3 Nov 2022) +boundary p p p +kspace_style ewald/electrode 1.0e-8 + +include "settings.mod" # styles, computes, groups and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 12 + +read_data "data.au-elyt" +Reading data file ... + orthogonal box = (0 0 -10) to (1 1 10) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 4 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.002 seconds + +group bot type 1 +1 atoms in group bot +group top type 2 +1 atoms in group top + +# get electrode charges +variable q atom q +compute qbot bot reduce sum v_q +compute qtop top reduce sum v_q + +compute compute_pe all pe +variable vpe equal c_compute_pe +variable charge equal c_qtop +fix fxprint all print 1 "${vpe}, ${charge}" file "out.csv" + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on ffield yes write_inv inv.csv write_vec vec.csv +2 atoms in group conp_group + +run 0 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Ewald/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) +WARNING: For better accuracy use 'pair_modify table 0' (src/kspace.cpp:365) + G vector (1/distance) = 0.32261103 + estimated absolute RMS force accuracy = 9.9990544e-06 + estimated relative force accuracy = 3.0111855e-08 + KSpace vectors: actual max1d max3d = 10 8 2456 + kxmax kymax kzmax = 1 1 8 +Generated 3 of 3 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 = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 1 1 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Proc sub-domain size < neighbor skin, could lead to lost atoms (src/domain.cpp:966) +138.299024320284, 0.287160231879378 +Per MPI rank memory allocation (min/avg/max) = 21.19 | 21.19 | 21.19 Mbytes + Step PotEng c_qbot c_qtop + 0 138.29902 -0.28716023 0.28716023 +Loop time of 1.804e-06 on 1 procs for 0 steps with 4 atoms + +55.4% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Bond | 0 | 0 | 0 | 0.0 | 0.00 +Kspace | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.804e-06 | | |100.00 + +Nlocal: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 10796 ave 10796 max 10796 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 4790 ave 4790 max 4790 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4790 +Ave neighs/atom = 1197.5 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-pppm-ew3dc.g++.1 b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-pppm-ew3dc.g++.1 new file mode 100644 index 0000000000..a3961bd3cb --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-pppm-ew3dc.g++.1 @@ -0,0 +1,143 @@ +LAMMPS (3 Nov 2022) +boundary p p f +kspace_style pppm/electrode 1.0e-10 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 12 + +read_data "data.au-elyt" +Reading data file ... + orthogonal box = (0 0 -10) to (1 1 10) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 4 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.003 seconds + +group bot type 1 +1 atoms in group bot +group top type 2 +1 atoms in group top + +# get electrode charges +variable q atom q +compute qbot bot reduce sum v_q +compute qtop top reduce sum v_q + +compute compute_pe all pe +variable vpe equal c_compute_pe +variable charge equal c_qtop +fix fxprint all print 1 "${vpe}, ${charge}" file "out.csv" + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on write_inv inv.csv write_vec vec.csv +2 atoms in group conp_group + +run 0 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +PPPM/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) +WARNING: For better accuracy use 'pair_modify table 0' (src/kspace.cpp:365) + G vector (1/distance) = 0.37216302 + grid = 12 12 375 + stencil order = 5 + estimated absolute RMS force accuracy = 9.4312865e-06 + estimated relative force accuracy = 2.8402039e-08 + using double precision MKL FFT + 3d grid and FFT values/proc = 637099 54000 +Generated 3 of 3 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 = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 1 1 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Proc sub-domain size < neighbor skin, could lead to lost atoms (src/domain.cpp:966) +139.946107219358, 0.279214187928028 +Per MPI rank memory allocation (min/avg/max) = 40.22 | 40.22 | 40.22 Mbytes + Step PotEng c_qbot c_qtop + 0 139.94611 -0.27921419 0.27921419 +Loop time of 8.32e-07 on 1 procs for 0 steps with 4 atoms + +0.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Bond | 0 | 0 | 0 | 0.0 | 0.00 +Kspace | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 8.32e-07 | | |100.00 + +Nlocal: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3596 ave 3596 max 3596 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 4790 ave 4790 max 4790 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4790 +Ave neighs/atom = 1197.5 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-pppm-ffield.g++.1 b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-pppm-ffield.g++.1 new file mode 100644 index 0000000000..64664e7443 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/log.1Dec2022.madelung-pppm-ffield.g++.1 @@ -0,0 +1,142 @@ +LAMMPS (3 Nov 2022) +boundary p p p +kspace_style pppm/electrode 1.0e-10 + +include "settings.mod" # styles, computes, groups and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 12 + +read_data "data.au-elyt" +Reading data file ... + orthogonal box = (0 0 -10) to (1 1 10) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 4 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.002 seconds + +group bot type 1 +1 atoms in group bot +group top type 2 +1 atoms in group top + +# get electrode charges +variable q atom q +compute qbot bot reduce sum v_q +compute qtop top reduce sum v_q + +compute compute_pe all pe +variable vpe equal c_compute_pe +variable charge equal c_qtop +fix fxprint all print 1 "${vpe}, ${charge}" file "out.csv" + +thermo_style custom step pe c_qbot c_qtop +fix conp bot electrode/conp 0 2 couple top 1 symm on ffield yes write_inv inv.csv write_vec vec.csv +2 atoms in group conp_group + +run 0 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +PPPM/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) +WARNING: For better accuracy use 'pair_modify table 0' (src/kspace.cpp:365) + G vector (1/distance) = 0.37297537 + grid = 12 12 90 + stencil order = 5 + estimated absolute RMS force accuracy = 9.4312758e-06 + estimated relative force accuracy = 2.8402007e-08 + using double precision MKL FFT + 3d grid and FFT values/proc = 174824 12960 +Generated 3 of 3 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 = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 1 1 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Proc sub-domain size < neighbor skin, could lead to lost atoms (src/domain.cpp:966) +138.298994634846, 0.287160247352281 +Per MPI rank memory allocation (min/avg/max) = 16.7 | 16.7 | 16.7 Mbytes + Step PotEng c_qbot c_qtop + 0 138.29899 -0.28716025 0.28716025 +Loop time of 1.022e-06 on 1 procs for 0 steps with 4 atoms + +0.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Bond | 0 | 0 | 0 | 0.0 | 0.00 +Kspace | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.022e-06 | | |100.00 + +Nlocal: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 10796 ave 10796 max 10796 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 4790 ave 4790 max 4790 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4790 +Ave neighs/atom = 1197.5 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/electrode/madelung/plate_cap.py b/examples/PACKAGES/electrode/madelung/plate_cap.py new file mode 100755 index 0000000000..62d52fe102 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/plate_cap.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 + +import numpy as np +from scipy.special import erf + +ETA = 2 +SQRT2 = np.sqrt(2) +COULOMB = 332.06371 # Coulomb constant in Lammps 'real' units +QE2F = 23.060549 +LENGTH = 10000 # convergence parameter + + +def lattice(length): + """indices combinations of images in one quadrant""" + x = np.arange(length) # range(length) + y = np.arange(1, length) + return np.array(np.meshgrid(x, y)).T.reshape(-1, 2) + + +def a_element(r): + """Coulomb contribution of two Gaussians""" + return erf(ETA / SQRT2 * r) / r + + +def b_element(r, q): + """Coulomb contribution of a Gaussian with a point charge""" + return q * erf(ETA * r) / r + + +a = 1 # nearest neighbor distance i.e. lattice constant / sqrt(2) +x_elec = [-2, 2] +x_elyt = [-1, 1] +q_elyt = [0.5, -0.5] +distance_plates = x_elec[1] - x_elec[0] # distance between plates +v = np.array([-0.5, 0.5]) * (QE2F / COULOMB) + +# distances to images within electrode and to opposite electrode +distances = a * np.linalg.norm(lattice(LENGTH), axis=1) +opposite_distances = np.sqrt(np.square(distances) + distance_plates ** 2) + +# self interaction and within original box +A_11 = np.sqrt(2 / np.pi) * ETA +A_12 = erf(ETA * distance_plates / SQRT2) / distance_plates + +# interaction with periodic images +A_11 += 4 * np.sum(a_element(distances)) +A_12 += 4 * np.sum(a_element(opposite_distances)) +A = np.array([[A_11, A_12], [A_12, A_11]]) +inv = np.linalg.inv(A) +e = np.array([1, 1]) +inv -= np.matmul(inv, np.matmul(np.outer(e, e), inv)) / np.dot(e, np.dot(inv, e)) + +# electrode-electrolyte interaction +b = [] +for x in x_elec: + bi = 0 + for y, q in zip(x_elyt, q_elyt): + d = abs(y - x) + bi += b_element(d, q) + image_distances = np.sqrt(np.square(distances) + d ** 2) + bi += 4 * np.sum(b_element(image_distances, q)) + b.append(bi) +b = np.array(b) + +# electrolyte-electrolyte energy +elyt_11 = 4 * np.sum(1 / distances) +distance_elyt = x_elyt[1] - x_elyt[0] +elyt_12 = 1 / distance_elyt + 4 * np.sum( + 1 / np.sqrt(np.square(distances) + distance_elyt ** 2) +) +elyt = np.array([[elyt_11, elyt_12], [elyt_12, elyt_11]]) +energy_elyt = 0.5 * np.dot(q_elyt, np.dot(elyt, q_elyt)) + +# electrode charges and energy +q = np.dot(inv, v - b) +energy = COULOMB * (0.5 * np.dot(q, np.dot(A, q)) + np.dot(b, q) + energy_elyt) + +print( + "length, energy / kcal/mol, q1 / e, q2 / e, inv11 / A, inv12 / A, b1 / e/A, b2 / e/A" +) +print( + ", ".join( + [ + str(LENGTH), + f"{energy:.8f}", + f"{q[0]:.10f}", + f"{q[1]:.10f}", + f"{inv[0, 0]:.10f}", + f"{inv[0, 1]:.10f}", + f"{b[0]:.8f}", + f"{b[1]:.8f}", + ] + ) +) diff --git a/examples/PACKAGES/electrode/madelung/settings.mod b/examples/PACKAGES/electrode/madelung/settings.mod new file mode 100644 index 0000000000..aa1096ea81 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/settings.mod @@ -0,0 +1,22 @@ +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 12 + +read_data "data.au-elyt" + +group bot type 1 +group top type 2 + +# get electrode charges +variable q atom q +compute qbot bot reduce sum v_q +compute qtop top reduce sum v_q + +compute compute_pe all pe +variable vpe equal c_compute_pe +variable charge equal c_qtop +fix fxprint all print 1 "${vpe}, ${charge}" file "out.csv" diff --git a/examples/PACKAGES/electrode/madelung/test.sh b/examples/PACKAGES/electrode/madelung/test.sh new file mode 100644 index 0000000000..edac04f5b1 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/test.sh @@ -0,0 +1,23 @@ +#!/bin/bash -e + +lmpbin=$1 +if [ ! -f $lmpbin ]; then + echo "LAMMPS binary '$lmpbin' is not a file" + exit 1 +fi + +ref_out="plate_cap.csv" +if [ ! -f $ref_out ]; then + echo "Generating reference data" + python3 plate_cap.py > $ref_out +fi + +echo "Running Lammps inputs" +rm -rf madelung.txt && touch madelung.txt +for file in in.*; do + printf "\n$file\n" >> madelung.txt + rm -f out.csv inv.csv vec.csv + $lmpbin -i $file &> /dev/null + python3 eval.py $ref_out out.csv inv.csv vec.csv +done +cat madelung.txt diff --git a/examples/PACKAGES/electrode/piston/.gitignore b/examples/PACKAGES/electrode/piston/.gitignore new file mode 100644 index 0000000000..9336c29266 --- /dev/null +++ b/examples/PACKAGES/electrode/piston/.gitignore @@ -0,0 +1,2 @@ +top_wall.csv +data.pistoned diff --git a/examples/PACKAGES/electrode/piston/data.piston b/examples/PACKAGES/electrode/piston/data.piston new file mode 100644 index 0000000000..815edff7ba --- /dev/null +++ b/examples/PACKAGES/electrode/piston/data.piston @@ -0,0 +1,2128 @@ +LAMMPS data file via write_data, version 23 Jun 2022, timestep = 5000 + +726 atoms +4 atom types +420 bonds +1 bond types +210 angles +1 angle types + +0 17.6494 xlo xhi +0 20.3798 ylo yhi +0 26.0000 zlo zhi + +Masses + +1 500 +2 196.97 +3 15.9994 +4 1.008 + +Pair Coeffs # lj/cut/coul/long + +1 0.069 2.78 +2 5.29 2.951 +3 0.1553 3.166 +4 0 0 + +Bond Coeffs # harmonic + +1 600 1 + +Angle Coeffs # harmonic + +1 75 109.47 + +Atoms # full + +49 25 2 0 0 0 2.4018 0 0 0 +50 25 2 0 1.4708 2.5475 2.4018 0 0 0 +51 26 2 0 0 5.0949 2.4018 0 0 0 +57 29 2 0 2.9416 0 2.4018 0 0 0 +58 29 2 0 4.4124 2.5475 2.4018 0 0 0 +59 30 2 0 2.9416 5.0949 2.4018 0 0 0 +65 33 2 0 5.8832 0 2.4018 0 0 0 +66 33 2 0 7.354000000000001 2.5475 2.4018 0 0 0 +67 34 2 0 5.8832 5.0949 2.4018 0 0 0 +243 97 4 0.4238 4.215372213007002 2.2225202484567896 5.2803935587652235 0 0 0 +52 26 2 0 1.4708 7.6424 2.4018 0 0 0 +53 27 2 0 0 10.1898 2.4018 0 0 0 +60 30 2 0 4.4124 7.6424 2.4018 0 0 0 +61 31 2 0 2.9416 10.1898 2.4018 0 0 0 +68 34 2 0 7.354000000000001 7.6424 2.4018 0 0 0 +69 35 2 0 5.8832 10.1898 2.4018 0 0 0 +387 145 4 0.4238 5.821325736406644 4.80211316415021 5.03726935778638 0 0 0 +260 103 4 0.4238 4.266650899557808 6.124697675258705 6.600494419311919 0 0 0 +277 109 3 -0.8476 1.1595300211865478 9.226136831721583 5.6374387660682395 0 0 0 +422 157 4 0.4238 5.186379561937092 9.246331162340214 5.010378323358909 0 0 0 +278 109 4 0.4238 0.16509455550271238 9.324889581001292 5.600728087976438 0 0 0 +421 157 3 -0.8476 4.267061402816361 8.96456307950511 5.285080645137098 0 0 0 +372 140 4 0.4238 7.72049151444727 3.1081049977971733 5.624439615628745 0 0 0 +241 97 3 -0.8476 4.979583082691343 1.5807071976248444 5.344102790419773 0 0 0 +367 139 3 -0.8476 3.3292653199701174 3.842283776550616 5.301650818590438 0 0 0 +368 139 4 0.4238 3.684070197838302 4.776085383558861 5.2555059732229505 0 0 0 +369 139 4 0.4238 2.4614244393932903 3.790665660238261 4.807496843609001 0 0 0 +237 95 4 0.4238 0.8688372424570395 0.5637480725652825 15.837861037745109 0 0 0 +242 97 4 0.4238 5.838317925620407 2.08972820515595 5.4030316190296865 0 0 0 +244 98 3 -0.8476 3.06007349186706 3.3156446548102743 7.800821206312822 0 0 0 +245 98 4 0.4238 3.292495500569735 3.349267797972537 6.828787504752208 0 0 0 +246 98 4 0.4238 3.244639762451247 4.205236417313474 8.21862706780732 0 0 0 +357 135 4 0.4238 5.599931101613284 2.8266561120576155 8.823939192896898 0 0 0 +248 99 4 0.4238 4.69094628305157 1.7475560287256833 10.940028326694172 0 0 0 +355 135 3 -0.8476 6.1056692668831944 3.4565727858406277 8.234503978839392 0 0 0 +370 140 3 -0.8476 8.260944365686607 2.344956325089386 5.9787203639370485 0 0 0 +5 3 1 0 0 10.1898 21.4018 0 0 0 +115 55 3 -0.8476 0.6685955791423209 1.1406007302132561 5.285707584884053 0 0 0 +117 55 4 0.4238 0.8471253049325846 2.1223521279380155 5.351215251536808 0 0 0 +337 129 3 -0.8476 3.5673781090835357 0.1584650058169618 11.855592597757308 0 1 0 +423 157 4 0.4238 3.5925256519953384 9.568512539363969 4.86052578384893 0 0 0 +388 146 3 -0.8476 4.577545906676629 5.911730949363624 8.247639703277793 0 0 0 +371 140 4 0.4238 8.763880514062548 2.641297854555424 6.790654426306619 0 0 0 +389 146 4 0.4238 5.229395912055183 5.212412787511029 8.540975963214175 0 0 0 +498 182 4 0.4238 8.708572501204229 1.6439616819374039 8.893386862511662 0 0 0 +499 183 3 -0.8476 8.788151456935827 1.747387315190607 11.831408961401284 0 0 0 +356 135 4 0.4238 7.087379176847249 3.3036660348840203 8.347928594928105 0 0 0 +235 95 3 -0.8476 1.101376037954613 0.60797910815167 14.866280241985807 0 0 0 +338 129 4 0.4238 3.086322043066555 0.17977406211341077 10.979161321324465 0 1 0 +101 50 4 0.4238 2.3452088829773485 1.679109649521978 7.998572278214729 0 0 0 +102 50 4 0.4238 1.7396190746664724 0.7815651122817325 6.776156174616777 0 0 0 +264 104 4 0.4238 1.314649046187711 7.151850339115251 5.356458350291402 0 0 0 +261 103 4 0.4238 4.344863408391302 7.229373831864509 5.400411210770298 0 0 0 +385 145 3 -0.8476 6.530003789922046 4.200582924498773 5.405965238572253 0 0 0 +386 145 4 0.4238 6.338765403718886 4.011523164034656 6.369128936305808 0 0 0 +390 146 4 0.4238 4.287287022740962 6.4497527910965 9.039019879824611 0 0 0 +259 103 3 -0.8476 4.571078813074718 6.29125568333872 5.662634084209634 0 0 0 +289 113 3 -0.8476 4.563599041145234 10.086229905664549 15.478505257325894 0 0 0 +262 104 3 -0.8476 0.9505514460098017 6.233602776791171 5.200720279695964 0 0 0 +234 94 4 0.4238 4.252305918517927 1.5104772744979198 15.776671832358746 0 0 0 +280 110 3 -0.8476 1.4649156019387215 8.625787955794543 8.210124183091255 0 0 0 +282 110 4 0.4238 1.2707547191832915 8.813324944957127 7.247247535393375 0 0 0 +404 151 4 0.4238 7.729904936627753 8.547350043185194 4.926160208837444 0 0 0 +405 151 4 0.4238 7.2770516978143425 8.988822091523867 6.431700948049315 0 0 0 +406 152 3 -0.8476 6.948766849242647 7.673937623994841 7.644671158708728 0 0 0 +407 152 4 0.4238 6.525795796205249 7.732575312342498 8.54891509101289 0 0 0 +408 152 4 0.4238 6.276846030142793 7.340427836539666 6.983389418751862 0 0 0 +281 110 4 0.4238 2.4144110839464337 8.86628530860492 8.41166651398434 0 0 0 +20 10 1 0 7.354000000000001 7.6424 21.4018 0 0 0 +403 151 3 -0.8476 7.1864312239576424 9.196956401727144 5.457807169763902 0 0 0 +140 63 4 0.4238 0.4912611771674119 5.483308431151843 7.32949919291062 0 0 0 +285 111 4 0.4238 2.222990438980817 7.758768979093943 9.602927616521612 0 0 0 +409 153 3 -0.8476 5.935160755403179 7.784141671985828 10.24740953450964 0 0 0 +410 153 4 0.4238 4.93909044392348 7.872166125675881 10.23761068803176 0 0 0 +283 111 3 -0.8476 2.9298247024233324 7.37829634209124 10.199271578404066 0 0 0 +284 111 4 0.4238 2.726159641339314 7.613476216764882 11.149646102042892 0 0 0 +300 116 4 0.4238 4.275274919124041 9.222842133138407 7.0364892960604974 0 0 0 +512 187 4 0.4238 8.159095215967982 5.212728585270325 5.862691743711303 0 0 0 +298 116 3 -0.8476 4.190494283036901 9.481049160440392 7.998852108176557 0 0 0 +13 7 1 0 2.9416 10.1898 21.4018 0 0 0 +167 72 4 0.4238 0.6888402225915744 9.490941300073734 17.687956507725275 0 0 0 +429 159 4 0.4238 6.704370008541906 9.570813638495862 9.75268746894169 0 0 0 +108 52 4 0.4238 0.4307356664021716 1.1201849372165382 13.39567680690473 0 0 0 +12 6 1 0 4.4124 7.6424 21.4018 0 0 0 +247 99 3 -0.8476 4.798369931390891 2.717477731578589 10.72159669011324 0 0 0 +249 99 4 0.4238 5.569724797087956 3.0916316888033455 11.236399566632782 0 0 0 +267 105 4 0.4238 3.62546649656917 4.334166934495396 11.516982003845238 0 0 0 +150 66 4 0.4238 0.3228287181315222 5.899276873013697 16.725238911862725 0 0 0 +232 94 3 -0.8476 4.980041500359598 0.8346261397826029 15.659938276309026 0 0 0 +103 51 3 -0.8476 1.3815948057839214 1.9892393072986618 10.960941799077768 0 0 0 +105 51 4 0.4238 2.0221030524072807 2.7460833084547516 11.091083546320654 0 0 0 +250 100 3 -0.8476 2.301722380036556 5.246668471215713 14.405023028095087 0 0 0 +251 100 4 0.4238 2.9853736210987964 5.6903907848833 14.984447511680715 0 0 0 +252 100 4 0.4238 1.395180212806813 5.361974054490418 14.811085553109534 0 0 0 +373 141 3 -0.8476 6.646815591730961 3.269837172643641 12.49061507590581 0 0 0 +374 141 4 0.4238 7.61695093879876 3.3495637297543572 12.261527610728375 0 0 0 +375 141 4 0.4238 6.481076944432454 2.390896252454289 12.937821497826814 0 0 0 +104 51 4 0.4238 0.6408775265357468 2.0608378879286913 11.628933096734032 0 0 0 +265 105 3 -0.8476 2.665829598310941 4.431310187121227 11.780914482870632 0 0 0 +144 64 4 0.4238 1.1190003692376955 5.0763854683727105 11.194475677541284 0 0 0 +229 93 3 -0.8476 5.942159660769991 0.7056663353811532 13.066706981458427 0 0 0 +266 105 4 0.4238 2.6102606372647403 4.846758214864171 12.688832882140309 0 0 0 +395 148 4 0.4238 6.791261132816323 5.2898024056276745 12.585701895393779 0 0 0 +496 182 3 -0.8476 8.656612808236074 2.6043956420410055 8.619768961623533 0 0 0 +358 136 3 -0.8476 7.858969118177482 4.323431351970546 15.158280395791389 0 0 0 +360 136 4 0.4238 7.311852997599627 4.141096884179606 14.341323716565022 0 0 0 +253 101 3 -0.8476 3.817665348062464 7.236922003920382 15.80944183548915 0 0 0 +17 9 1 0 5.8832 0 21.4018 0 0 0 +19 10 1 0 5.8832 5.0949 21.4018 0 0 0 +100 50 3 -0.8476 2.0394304158997083 0.7656654195905199 7.730022146575006 0 0 0 +178 76 3 -0.8476 5.452117716887525 9.18307317194898 13.15234900976541 0 0 0 +230 93 4 0.4238 5.059291011599534 0.38866725021142023 12.720218114220543 0 0 0 +231 93 4 0.4238 6.65052979327983 0.5320676483156337 12.382546751012228 0 0 0 +438 162 4 0.4238 7.136291463905622 9.772834868066683 17.139493058543497 0 0 0 +392 147 4 0.4238 8.38899132126725 5.8867041743537785 10.871264350514622 0 0 0 +111 53 4 0.4238 0.6985999830537806 1.3383536972275127 18.387030005691326 0 0 0 +180 76 4 0.4238 5.066448032980861 9.32084082718892 14.064642262682645 0 0 0 +233 94 4 0.4238 5.359631037926651 0.9094520875690633 14.737813568002778 0 0 0 +132 60 4 0.4238 0.8001204790197485 3.675543835266074 19.791162893511412 0 0 0 +286 112 3 -0.8476 3.0492447110060503 7.857786324043542 12.841804772376726 0 0 0 +287 112 4 0.4238 3.2098640427703793 7.07245726341082 13.43968410246133 0 0 0 +288 112 4 0.4238 3.8390372213919517 8.470176800208547 12.876525558331952 0 0 0 +394 148 3 -0.8476 7.2698038333003865 6.06308390013827 12.169729898590939 0 0 0 +396 148 4 0.4238 7.625134114087918 6.6608118801271505 12.888382847618582 0 0 0 +411 153 4 0.4238 6.2467858019307405 7.628185967709829 11.184729075452916 0 0 0 +166 72 3 -0.8476 0.0743206093292875 9.473569850066479 18.47666767184439 0 0 0 +159 69 4 0.4238 1.5369814113431812 8.581432976068813 12.91659053642449 0 0 0 +398 149 4 0.4238 8.017182850481422 8.5320782164775 15.13105927119312 0 0 0 +2 1 1 0 1.4708 2.5475 21.4018 0 0 0 +1 1 1 0 0 0 21.4018 0 0 0 +179 76 4 0.4238 5.808389160323009 10.05110184314008 12.80652118090145 0 0 0 +397 149 3 -0.8476 7.8632248442135975 8.280908077117292 14.175438467851688 0 0 0 +255 101 4 0.4238 4.224951823034336 7.092621650496108 16.711270553877267 0 0 0 +157 69 3 -0.8476 0.7114882871642291 9.135205749045086 12.807511759002331 0 0 0 +399 149 4 0.4238 7.140453712689584 8.855850348945147 13.791975805848095 0 0 0 +123 57 4 0.4238 0.1728626542764581 2.0181635873205455 9.55686086062765 0 0 0 +225 91 4 0.4238 7.816768412673801 0.8081877810287403 6.235830770216829 0 0 0 +21 11 1 0 5.8832 10.1898 21.4018 0 0 0 +417 155 4 0.4238 7.446840838580808 7.638526256652861 17.47844985435655 0 0 0 +362 137 4 0.4238 8.438368672558527 1.697843860243226 18.184511664154215 0 0 0 +129 59 4 0.4238 2.3771977665576043 1.8808184338387064 14.85662965445542 0 0 0 +359 136 4 0.4238 8.004317147899858 3.470311511692344 15.659339900839715 0 0 0 +128 59 4 0.4238 2.5853876652451317 3.4859493525534666 14.640206423330152 0 0 0 +256 102 3 -0.8476 3.36490296390101 2.609708506768986 18.019307140512538 0 0 0 +257 102 4 0.4238 2.989126363066441 2.6901816560721703 17.09609745176498 0 0 0 +258 102 4 0.4238 3.0647304195149228 1.7475126999269013 18.42736968436024 0 0 0 +382 144 3 -0.8476 6.308567838033942 2.476405458922918 18.00362734600325 0 0 0 +383 144 4 0.4238 6.593826337020496 3.427881594462966 17.888209006303875 0 0 0 +384 144 4 0.4238 5.361992496088107 2.3728369988438636 17.69822741313443 0 0 0 +272 107 4 0.4238 3.0726725732915128 4.603284898982291 18.635316954863068 0 0 0 +136 62 3 -0.8476 0.23948646424302802 3.6277413105394416 5.266501733024619 0 0 0 +365 138 4 0.4238 6.60152996763605 0.43507104006823966 18.019264498760286 0 0 0 +127 59 3 -0.8476 3.0145932097721304 2.643552260009665 14.96601392575784 0 0 0 +271 107 3 -0.8476 2.827278930096859 5.559554731210942 18.476163062225744 0 0 0 +158 69 4 0.4238 0.16630528129120115 9.089290910056087 13.644570644109479 0 0 0 +143 64 4 0.4238 0.11900142343143351 5.141919127824521 9.905160447540569 0 0 0 +415 155 3 -0.8476 7.9442542108115335 8.345727638599643 16.976009837116557 0 0 0 +4 2 1 0 1.4708 7.6424 21.4018 0 0 0 +276 108 4 0.4238 5.037529413861975 7.933581116564438 18.631487966790633 0 0 0 +254 101 4 0.4238 3.6649393772595342 8.214616238881469 15.66525877571223 0 0 0 +273 107 4 0.4238 1.8466314153892824 5.625798601756419 18.291929064604975 0 0 0 +612 220 4 0.4238 0.010930989959980764 2.2950979118534867 16.414655321355454 1 0 0 +402 150 4 0.4238 7.106876741389108 5.041237644705272 16.640202749296954 0 0 0 +401 150 4 0.4238 6.160816653506991 5.742470969945153 17.771516210789446 0 0 0 +400 150 3 -0.8476 6.996177466129156 5.214390702343716 17.618857043546885 0 0 0 +274 108 3 -0.8476 5.0193324614485215 7.043802573153883 18.17545833659005 0 0 0 +528 192 4 0.4238 8.623421722431294 5.7883736084345525 18.747118071306133 0 0 0 +275 108 4 0.4238 4.270941130836966 6.494210206303432 18.54675158901018 0 0 0 +130 60 3 -0.8476 0.30151484910318527 2.9901129901722614 19.260524594746823 0 0 0 +11 6 1 0 2.9416 5.0949 21.4018 0 0 0 +18 9 1 0 7.354000000000001 2.5475 21.4018 0 0 0 +3 2 1 0 0 5.0949 21.4018 0 0 0 +10 5 1 0 4.4124 2.5475 21.4018 0 0 0 +9 5 1 0 2.9416 0 21.4018 0 0 0 +418 156 3 -0.8476 4.815860863260777 9.600073631276539 19.091570737625037 0 0 0 +339 129 4 0.4238 2.9025423126390995 0.19480209169066873 12.601698136013006 0 1 0 +109 53 3 -0.8476 0.7320791233467872 0.6615070322554488 17.651667727097692 0 0 0 +165 71 4 0.4238 2.859472025585106 9.797582345892868 15.993242699480307 0 0 0 +142 64 3 -0.8476 0.16654348806994 5.167371806030668 10.903705304455558 0 0 0 +163 71 3 -0.8476 1.9414938951301373 9.863706489144873 16.384324307347644 0 0 0 +138 62 4 0.4238 0.46610741541910466 4.573831154626459 5.035076125954408 0 0 0 +110 53 4 0.4238 1.4763821044438006 0.016750063584620126 17.82574113464481 0 0 0 +148 66 3 -0.8476 0.2769703268883889 5.693561891799246 17.702776395141402 0 0 0 +168 72 4 0.4238 0.3851910025501984 8.779692776604824 19.126201816661716 0 0 0 +155 68 4 0.4238 0.10882260140155935 8.290546750038025 9.473605554039466 0 0 0 +419 156 4 0.4238 4.047967060581894 10.091196220875956 19.502834381376417 0 0 0 +279 109 4 0.4238 1.5891078696758345 10.112454310586116 5.464507454644324 0 0 0 +291 113 4 0.4238 5.063106516523704 9.955504370697694 16.334894862001168 0 0 0 +54 27 2 0 1.4708 12.7373 2.4018 0 0 0 +55 28 2 0 0 15.2847 2.4018 0 0 0 +62 31 2 0 4.4124 12.7373 2.4018 0 0 0 +63 32 2 0 2.9416 15.2847 2.4018 0 0 0 +70 35 2 0 7.354000000000001 12.7373 2.4018 0 0 0 +71 36 2 0 5.8832 15.2847 2.4018 0 0 0 +318 122 4 0.4238 2.4931000294030397 14.68049042504776 5.4920668045650025 0 0 0 +296 115 4 0.4238 2.208767730761098 12.293362577947239 5.072155343064113 0 0 0 +295 115 3 -0.8476 2.7410377681036264 11.51283534649287 5.39997510809189 0 0 0 +199 83 3 -0.8476 0.06129132430832457 15.968850902749507 14.273604552188592 0 0 0 +212 87 4 0.4238 0.3953399839920288 18.41963167641668 8.462803851856744 0 0 0 +56 28 2 0 1.4708 17.8322 2.4018 0 0 0 +64 32 2 0 4.4124 17.8322 2.4018 0 0 0 +72 36 2 0 7.354000000000001 17.8322 2.4018 0 0 0 +297 115 4 0.4238 3.5789798694053823 11.840523499251022 5.836407740178439 0 0 0 +316 122 3 -0.8476 1.631070916269115 14.178948300051426 5.418846200398046 0 0 0 +596 215 4 0.4238 7.109490500299251 16.657127794200864 15.625332570434084 0 0 0 +314 121 4 0.4238 4.490843993311033 14.308637759802288 5.7106306175219235 0 0 0 +317 122 4 0.4238 1.2228714849231572 14.08342483249297 6.326727512493262 0 0 0 +174 74 4 0.4238 0.10528366135845268 10.672156321950682 8.064974532168508 0 0 0 +424 158 3 -0.8476 5.101470449901436 12.351136442855362 8.772696925752863 0 0 0 +425 158 4 0.4238 5.649118560615081 11.587884372956601 9.115520413794723 0 0 0 +426 158 4 0.4238 5.518356916008868 13.214561207653139 9.056780336843094 0 0 0 +439 163 3 -0.8476 5.216895399703456 12.666087681674787 6.107919140409087 0 0 0 +440 163 4 0.4238 5.134428643535018 12.421224390109284 7.073963155217279 0 0 0 +441 163 4 0.4238 6.100613681787685 13.106659778250902 5.950000862088552 0 0 0 +443 164 4 0.4238 3.0179543685175823 12.072582679909768 8.848462487266309 0 0 0 +445 165 3 -0.8476 6.966218323718499 14.281372161941382 9.127169341964189 0 0 0 +447 165 4 0.4238 7.624646039950888 13.622453813299824 8.763439333415302 0 0 0 +460 170 3 -0.8476 7.231000148289769 14.474338072546802 5.1752234073088434 0 0 0 +566 205 4 0.4238 7.518646792922765 11.165670099715314 5.4767432294161615 0 0 0 +313 121 3 -0.8476 4.249374596810806 15.278291683142973 5.672357126140297 0 0 0 +446 165 4 0.4238 6.995056551501562 15.117996997967099 8.580152736531433 0 0 0 +442 164 3 -0.8476 2.144166379995316 11.593027145751554 8.767705401585385 0 0 0 +444 164 4 0.4238 1.865344831645564 11.254665778946087 9.666466135499824 0 0 0 +462 170 4 0.4238 6.776273488291953 15.331599425251477 5.4167323900106 0 0 0 +299 116 4 0.4238 4.0091104777731 10.462167685474132 8.065982115733604 0 0 0 +192 80 4 0.4238 1.3860580922058752 13.1436420054917 8.112211821661765 0 0 0 +223 91 3 -0.8476 7.52144010123177 20.2328986694854 6.260038148125913 0 -1 0 +567 205 4 0.4238 7.955736322443579 12.60235407524488 4.835245774032379 0 0 0 +305 118 4 0.4238 6.893786791944795 11.515500740653623 11.433469545335605 0 0 0 +461 170 4 0.4238 8.21976057692041 14.619771975490195 5.140557051180058 0 0 0 +164 71 4 0.4238 1.3048907045107163 10.192492429629349 15.686730789235462 0 0 0 +99 49 4 0.4238 1.0827619391029717 18.26873197575731 5.107129350002369 0 -1 0 +352 134 3 -0.8476 8.394595542324181 20.120875755975867 8.788527591447366 0 -1 0 +569 206 4 0.4238 8.682110941177735 16.514860767752086 8.0240313566335 0 0 0 +333 127 4 0.4238 2.504646078973971 17.96447094238861 6.618993185042102 0 0 0 +315 121 4 0.4238 5.057127339180615 15.813425143166752 5.425034770839435 0 0 0 +331 127 3 -0.8476 2.954653688178904 17.216242853434046 7.106485686197738 0 0 0 +332 127 4 0.4238 3.3551983060071806 16.58127747290928 6.445892087695467 0 0 0 +334 128 3 -0.8476 5.043566489540578 18.004186709137286 9.213366138097703 0 0 0 +335 128 4 0.4238 4.8534442245780065 17.08711847665592 9.563850392227947 0 0 0 +336 128 4 0.4238 4.502654882669719 18.164209712655897 8.387650033745803 0 0 0 +457 169 3 -0.8476 6.386951423593993 17.09407894375587 5.485002802094392 0 0 0 +458 169 4 0.4238 5.61892086420923 17.69724507997371 5.269782898552741 0 0 0 +459 169 4 0.4238 7.245351610676392 17.55200717248309 5.253808457823567 0 0 0 +587 212 4 0.4238 6.379917790162203 17.31978420187041 8.579723356366076 0 0 0 +319 123 3 -0.8476 2.0677114935593575 19.18609967444404 9.32533337014183 0 0 0 +320 123 4 0.4238 2.090368391204653 20.00813559780426 8.756348571129193 0 0 0 +97 49 3 -0.8476 1.7504097903352551 18.96219016666924 5.377983758614883 0 -1 0 +228 92 4 0.4238 3.581463417361676 19.071976505337624 5.184605072808598 0 -1 0 +588 212 4 0.4238 6.867012146053887 16.99579012623044 7.055127228361595 0 0 0 +586 212 3 -0.8476 7.025608428738302 16.797780868958256 8.022411877651955 0 0 0 +354 134 4 0.4238 7.827463202425872 20.019031781296853 7.971221332030429 0 -1 0 +226 92 3 -0.8476 4.562210484918086 19.26013212674296 5.1323305800502 0 -1 0 +193 81 3 -0.8476 0.8245833071004024 15.300666811708652 10.602945389409069 0 0 0 +321 123 4 0.4238 2.6437193555376313 18.479848078853944 8.913722343322581 0 0 0 +227 92 4 0.4238 4.712710077676816 20.248725681455316 5.1380374657472725 0 -1 0 +98 49 4 0.4238 1.3169099320926019 19.863308853601175 5.370047176076334 0 -1 0 +195 81 4 0.4238 1.045026299766095 16.23909236758004 10.868960098517407 0 0 0 +190 80 3 -0.8476 1.0673503147674046 14.085080247246221 8.002121033682439 0 0 0 +351 133 4 0.4238 8.779395441989571 18.67398725375506 5.871414963418736 0 -1 0 +341 130 4 0.4238 3.725862356405534 15.178378283914109 10.363935258652589 0 0 0 +238 96 3 -0.8476 2.946487702291966 19.844718958102625 18.430810194805673 0 -1 0 +561 203 4 0.4238 8.487062671012106 13.174506720978874 16.752807885129265 0 0 0 +14 7 1 0 4.4124 12.7373 21.4018 0 0 0 +306 118 4 0.4238 7.592713515283044 11.24309034151053 12.883959279040775 0 0 0 +302 117 4 0.4238 2.2917433244225363 12.480034374758912 11.089180564282227 0 0 0 +492 180 4 0.4238 7.2798614407449715 18.48354654936143 18.243027445798187 0 -1 0 +304 118 3 -0.8476 6.741312426600244 11.49049946331648 12.421460688803913 0 0 0 +183 77 4 0.4238 2.201548550563256 13.161992926349898 14.583303285425934 0 0 0 +301 117 3 -0.8476 2.6357063505321605 13.418277941169993 11.126442794024449 0 0 0 +177 75 4 0.4238 0.19204032170237526 11.327264418539333 10.849228099788682 0 0 0 +322 124 3 -0.8476 3.4867447532822444 14.045576532793149 13.647754803089441 0 0 0 +323 124 4 0.4238 3.1658011972240745 13.858651548000461 12.719286015494765 0 0 0 +324 124 4 0.4238 4.26580535268166 13.454389428056905 13.856470892541978 0 0 0 +448 166 3 -0.8476 6.579157498376083 14.52764103922264 11.879113428187129 0 0 0 +449 166 4 0.4238 6.675526155039823 14.266590458656776 10.918609993418364 0 0 0 +450 166 4 0.4238 6.551221579412191 13.704955354686108 12.446923268432739 0 0 0 +327 125 4 0.4238 3.061708014353232 15.519451541059949 14.566416364520057 0 0 0 +303 117 4 0.4238 1.8693136785662339 14.057151356098624 11.059487163386526 0 0 0 +182 77 4 0.4238 1.0148338056408361 13.058404785217737 15.700265397978635 0 0 0 +181 77 3 -0.8476 1.3760596420800968 12.666739304066796 14.85402984054153 0 0 0 +307 119 3 -0.8476 5.577590489353157 12.605116663955032 14.44720455247256 0 0 0 +308 119 4 0.4238 5.926057421748659 12.93507429329256 15.324530351358025 0 0 0 +309 119 4 0.4238 6.31821835851717 12.166755458317258 13.937978772621406 0 0 0 +290 113 4 0.4238 4.749002859603123 11.001502011390924 15.120870949373925 0 0 0 +24 12 1 0 7.354000000000001 17.8322 21.4018 0 0 0 +175 75 3 -0.8476 1.090507061728097 11.393348279515585 11.283267717479667 0 0 0 +240 96 4 0.4238 3.3222779866144156 19.188357866486633 17.77661393841368 0 -1 0 +214 88 3 -0.8476 1.0041440810762274 17.927962188247605 11.451026414053889 0 0 0 +463 171 3 -0.8476 6.478201880018026 18.231732824554882 14.915456188855625 0 0 0 +465 171 4 0.4238 7.331603333633061 18.73234587278177 15.060688869833879 0 0 0 +342 130 4 0.4238 5.151525977130013 15.419699471374381 11.122798860463224 0 0 0 +467 172 4 0.4238 7.373650730002787 16.12868172847659 12.292759417267117 0 0 0 +590 213 4 0.4238 7.725648904318353 19.422181263009772 10.259925608254184 0 0 0 +216 88 4 0.4238 1.4153466561258405 18.4878207590961 10.731671944033392 0 0 0 +468 172 4 0.4238 7.8682878047740346 17.628912068879078 11.878912178039954 0 0 0 +437 162 4 0.4238 7.1569382445566525 11.404678434047124 17.082162602372872 0 0 0 +589 213 3 -0.8476 7.357564300487368 19.16732661285633 11.154108379375014 0 0 0 +591 213 4 0.4238 6.413143304412662 18.85574473106839 11.049295698727546 0 0 0 +217 89 3 -0.8476 2.064286019730025 18.728445270950314 13.637846451800218 0 0 0 +236 95 4 0.4238 1.418715591647955 20.090858346659182 14.558337650277243 0 -1 0 +597 215 4 0.4238 8.70246632792204 16.46727080170849 15.93030620143767 0 0 0 +436 162 3 -0.8476 6.569742653568437 10.596838324126017 17.133110468886443 0 0 0 +215 88 4 0.4238 0.08715363937956366 18.269960061366785 11.65636997646002 0 0 0 +340 130 3 -0.8476 4.353122850014628 15.86964660354185 10.722672907024947 0 0 0 +464 171 4 0.4238 6.2701227645746105 18.204285930924424 13.93772904528681 0 0 0 +343 131 3 -0.8476 4.88784150983056 18.004372378244586 12.654559147182416 0 0 0 +345 131 4 0.4238 4.2421926520515125 18.749219219212854 12.486210891320729 0 0 0 +218 89 4 0.4238 1.6778928796021548 18.302424080386913 12.81979617913041 0 0 0 +344 131 4 0.4238 4.501475250618193 17.145800216306796 12.317549750824261 0 0 0 +219 89 4 0.4238 2.3393750095214916 18.017837434553265 14.285428506544493 0 0 0 +466 172 3 -0.8476 8.164454664814901 16.73625177658097 12.218680653823448 0 0 0 +552 200 4 0.4238 8.577169536694708 12.443351977855762 6.998753646239745 0 0 0 +224 91 4 0.4238 6.584978788736939 20.16475927385633 5.915949157194169 0 -1 0 +201 83 4 0.4238 0.9935726128790141 16.274863843792748 14.466501082610389 0 0 0 +170 73 4 0.4238 0.15705997876552483 12.519334239761646 4.630530335389882 0 0 0 +16 8 1 0 4.4124 17.8322 21.4018 0 0 0 +364 138 3 -0.8476 6.366307006108234 19.974586154222894 17.53080628881647 0 -1 0 +595 215 3 -0.8476 7.780662951582441 16.18863261155242 16.199824213366497 0 0 0 +293 114 4 0.4238 1.9703783268715727 12.276659478071428 18.69543152820229 0 0 0 +565 205 3 -0.8476 8.264468631172923 11.825293895949471 5.383754879656755 0 0 0 +294 114 4 0.4238 2.5190378334598873 11.012727617204137 17.81903228135006 0 0 0 +453 167 4 0.4238 4.835483104335401 17.279043988713962 17.46997800663247 0 0 0 +310 120 3 -0.8476 0.6065213206590157 14.217798272189098 17.358859661169866 0 0 0 +312 120 4 0.4238 0.1479468689007446 13.443270025706306 17.794537825304722 0 0 0 +328 126 3 -0.8476 4.244821463031273 14.002780695856922 18.50302264302004 0 0 0 +329 126 4 0.4238 3.8406651384614183 13.088860779050396 18.46549938220707 0 0 0 +330 126 4 0.4238 3.5359242101158874 14.671810290106164 18.726325291291452 0 0 0 +454 168 3 -0.8476 6.484450039595873 13.836390187869883 16.68928336195824 0 0 0 +455 168 4 0.4238 5.6319511436742085 13.867898528487181 17.211061921013215 0 0 0 +456 168 4 0.4238 6.932978435045694 14.729258702175622 16.729384499993166 0 0 0 +292 114 3 -0.8476 2.7860244782055217 11.834757104744316 18.322009695562482 0 0 0 +191 80 4 0.4238 0.9690093276172831 14.511009418156055 8.901517517950873 0 0 0 +239 96 4 0.4238 2.9923969244117603 19.459980091914108 19.35269336323246 0 -1 0 +176 75 4 0.4238 1.1646262863451595 10.702948035039366 12.002888355816044 0 0 0 +222 90 4 0.4238 0.1453878739340946 16.847889041005075 18.290254998907823 0 0 0 +346 132 3 -0.8476 5.656540959385894 16.438996625983226 18.654765488300594 0 0 0 +347 132 4 0.4238 6.617635439103294 16.701054655697625 18.74208254158271 0 0 0 +490 180 3 -0.8476 7.937659864014185 17.91834349940131 18.74087071091535 0 -1 0 +7 4 1 0 0 15.2847 21.4018 0 0 0 +23 12 1 0 5.8832 15.2847 21.4018 0 0 0 +326 125 4 0.4238 3.497310910343585 16.868229494682133 15.377387787061595 0 0 0 +451 167 3 -0.8476 4.4549813660146595 17.84619270794852 16.739525544730768 0 0 0 +6 3 1 0 1.4708 12.7373 21.4018 0 0 0 +325 125 3 -0.8476 2.7573430590165198 16.420499344018907 14.875406414758897 0 0 0 +452 167 4 0.4238 5.188875233615405 18.133558720493767 16.12404151631669 0 0 0 +348 132 4 0.4238 5.550868825582559 15.474284262611643 18.895936618194007 0 0 0 +472 174 3 -0.8476 2.080609622031638 16.35011037096637 18.27189638693749 0 0 0 +473 174 4 0.4238 1.9635393067535534 15.378703243526882 18.065346184779028 0 0 0 +474 174 4 0.4238 2.6071515105921335 16.78509131506686 17.541454495391882 0 0 0 +8 4 1 0 1.4708 17.8322 21.4018 0 0 0 +22 11 1 0 7.354000000000001 12.7373 21.4018 0 0 0 +15 8 1 0 2.9416 15.2847 21.4018 0 0 0 +366 138 4 0.4238 5.798440311007832 20.197486158530367 16.738440844421206 0 -1 0 +427 159 3 -0.8476 6.69880532212971 10.54685438717572 9.535169837784467 0 0 0 +428 159 4 0.4238 7.638372417732451 10.888386579014366 9.511300231205533 0 0 0 +491 180 4 0.4238 8.80852796828548 18.404704793089476 18.811876741226857 0 -1 0 +420 156 4 0.4238 5.295698243366386 10.204323718807027 18.45545874784971 0 0 0 +73 37 2 0 8.8248 0 2.4018 0 0 0 +74 37 2 0 10.2956 2.5475 2.4018 0 0 0 +75 38 2 0 8.8248 5.0949 2.4018 0 0 0 +81 41 2 0 11.7664 0 2.4018 0 0 0 +82 41 2 0 13.237200000000001 2.5475 2.4018 0 0 0 +83 42 2 0 11.7664 5.0949 2.4018 0 0 0 +89 45 2 0 14.708000000000002 0 2.4018 0 0 0 +90 45 2 0 16.178800000000003 2.5475 2.4018 0 0 0 +91 46 2 0 14.708000000000002 5.0949 2.4018 0 0 0 +44 22 1 0 16.178800000000003 7.6424 21.4018 0 0 0 +620 223 4 0.4238 14.50573307562817 3.3878102935088648 5.252599862542667 0 0 0 +431 160 4 0.4238 9.728730115312695 9.332074012330212 10.936077127438926 0 0 0 +119 56 4 0.4238 15.447689337407642 1.5804577157846718 6.2865858126131124 -1 0 0 +76 38 2 0 10.2956 7.6424 2.4018 0 0 0 +77 39 2 0 8.8248 10.1898 2.4018 0 0 0 +84 42 2 0 13.237200000000001 7.6424 2.4018 0 0 0 +85 43 2 0 11.7664 10.1898 2.4018 0 0 0 +92 46 2 0 16.178800000000003 7.6424 2.4018 0 0 0 +93 47 2 0 14.708000000000002 10.1898 2.4018 0 0 0 +125 58 4 0.4238 17.11980738695315 4.451613797715876 12.165175118415005 -1 0 0 +639 229 4 0.4238 12.240251955899847 6.329826917238441 6.3967366381970745 0 0 0 +621 223 4 0.4238 13.029328966637872 4.0377610045012355 4.998784080340424 0 0 0 +173 74 4 0.4238 16.379291133562425 10.123405568744293 7.376647193452647 -1 0 0 +475 175 3 -0.8476 10.238461486464052 0.672832311221596 5.291254220629026 0 0 0 +495 181 4 0.4238 10.87679348779582 2.802199547341775 5.12069937092746 0 0 0 +493 181 3 -0.8476 11.185778219804481 3.7303901733267684 5.328041508387651 0 0 0 +511 187 3 -0.8476 9.131405616083761 5.3896269313997776 6.015399717127127 0 0 0 +619 223 3 -0.8476 13.923837028776344 4.183349355513367 5.421465935555536 0 0 0 +118 56 3 -0.8476 15.48762876858227 1.9617212570246132 5.362982578990697 -1 0 0 +518 189 4 0.4238 11.338664336046872 3.4747961660093996 9.850526387435213 0 0 0 +643 231 3 -0.8476 14.965600376927245 5.243104974403139 7.730205989674371 0 0 0 +645 231 4 0.4238 14.354822391535658 4.6184020137875255 7.243691399839285 0 0 0 +120 56 4 0.4238 15.126526800635466 1.2948143897129842 4.711184645838061 -1 0 0 +121 57 3 -0.8476 17.152518579677942 2.4739895822142235 8.97063089765563 -1 0 0 +476 175 4 0.4238 9.541180180939875 1.362564867501539 5.4863632446361095 0 0 0 +514 188 3 -0.8476 12.708114465413592 3.17130683982108 8.893190601446161 0 0 0 +515 188 4 0.4238 12.655773634711728 2.1832397115286697 8.748333344050575 0 0 0 +503 184 4 0.4238 12.607089924550714 6.103512603430973 9.450598149442257 0 0 0 +644 231 4 0.4238 14.557652021400914 5.491235006156537 8.608846776033309 0 0 0 +269 106 4 0.4238 17.08703987118386 7.263949554768752 14.623663476105321 -1 0 0 +717 255 4 0.4238 16.385497451663372 1.2728758889145508 7.9333612062641965 0 1 0 +141 63 4 0.4238 16.65789297152239 5.185262771894378 7.945286202375017 -1 0 0 +614 221 4 0.4238 14.616703771621246 0.1698807512440305 15.409771368522266 0 0 0 +607 219 3 -0.8476 14.462344009394053 0.6793423116269275 11.105758826612533 0 0 0 +263 104 4 0.4238 17.603971760421423 6.278664588640379 5.123299856226946 -1 0 0 +517 189 3 -0.8476 10.525057194673842 3.444777251501295 10.431165937462886 0 0 0 +519 189 4 0.4238 10.151901971569751 4.367263784723073 10.530028483274075 0 0 0 +650 233 4 0.4238 16.32595622025606 9.996431981399743 15.08216287942173 0 0 0 +107 52 4 0.4238 16.48508153364432 1.008917763693127 13.063941417530929 -1 0 0 +622 224 3 -0.8476 13.023155884557012 0.2648033403280529 8.631455865220707 0 0 0 +715 255 3 -0.8476 15.724422789824505 0.5744355810299474 7.65920531052352 0 1 0 +391 147 3 -0.8476 9.082540858622865 5.558347954969397 10.230038063134518 0 0 0 +361 137 3 -0.8476 9.214720235266167 1.3881354284034537 17.635549705024292 0 0 0 +153 67 4 0.4238 15.514303418474737 8.911222468398579 6.3239595507849815 -1 0 0 +268 106 3 -0.8476 17.178718003054936 6.346562714800259 15.010957825663588 -1 0 0 +657 235 4 0.4238 12.69257310485967 8.656399307172993 5.490304167452206 0 0 0 +494 181 4 0.4238 10.394763594783074 4.307349988929852 5.5315482255405 0 0 0 +502 184 3 -0.8476 13.435863538080216 6.071669848095443 10.009275806774918 0 0 0 +134 61 4 0.4238 15.526141405856706 7.049612897749026 5.318680854660697 -1 0 0 +135 61 4 0.4238 15.359752009898337 5.431166049985472 5.458576672077275 -1 0 0 +152 67 4 0.4238 15.437613800409792 9.466214227562812 4.790098672249199 -1 0 0 +133 61 3 -0.8476 16.012555055979618 6.175884958124715 5.3198579388035085 -1 0 0 +529 193 3 -0.8476 9.945477389616554 8.593989390667373 5.3703337592043034 0 0 0 +530 193 4 0.4238 10.830803134583942 8.129083231957276 5.362532664653105 0 0 0 +637 229 3 -0.8476 12.039935590255379 6.836925636576696 5.558450155876346 0 0 0 +638 229 4 0.4238 11.7611145014945 6.1983514362614205 4.841176301201255 0 0 0 +640 230 3 -0.8476 15.240940503012244 7.949949003513103 7.640448987741966 0 0 0 +641 230 4 0.4238 15.067197170144015 6.9767975301569125 7.4894871837079595 0 0 0 +642 230 4 0.4238 15.576333535448201 8.088014520677106 8.572355333692744 0 0 0 +655 235 3 -0.8476 13.004191297158767 9.606164553080209 5.519298359494044 0 0 0 +658 236 3 -0.8476 11.876528733244868 5.552371914074833 7.850656850543071 0 0 0 +659 236 4 0.4238 10.92031489334279 5.822095381183537 7.964255007678089 0 0 0 +660 236 4 0.4238 11.939635326262486 4.55496989803981 7.815910631660994 0 0 0 +662 237 4 0.4238 11.620333917885795 8.504164003021943 8.40963187399265 0 0 0 +151 67 3 -0.8476 16.03819057141091 9.318646584332017 5.575930262743634 -1 0 0 +663 237 4 0.4238 13.127301801983382 9.126019958826273 8.314924676496526 0 0 0 +661 237 3 -0.8476 12.307488292062576 9.055159203837746 8.883154197644409 0 0 0 +531 193 4 0.4238 10.083868359208074 9.571840984562062 5.527352176750637 0 0 0 +534 194 4 0.4238 9.903180518846904 8.323485911225582 8.827414462645084 0 0 0 +413 154 4 0.4238 9.500948972456086 8.457833234630993 13.286341884407108 0 0 0 +381 143 4 0.4238 9.25769242644089 5.614493984745122 14.831340871663464 0 0 0 +270 106 4 0.4238 16.366933443538798 5.807408336477406 14.786639151039799 -1 0 0 +154 68 3 -0.8476 16.99564515461883 7.825770754486284 9.923561098870746 -1 0 0 +122 57 4 0.4238 17.608391302551865 3.1828981231631994 8.432459270415713 -1 0 0 +516 188 4 0.4238 13.517085702329528 3.3855360806551484 9.440613096708791 0 0 0 +124 58 3 -0.8476 16.411785830213912 4.148280735389562 12.802901194663619 -1 0 0 +624 224 4 0.4238 13.930126291479176 0.36753804060024686 8.222982748895415 0 0 0 +625 225 3 -0.8476 14.98428106603324 3.1890455063249252 10.406423101890848 0 0 0 +626 225 4 0.4238 15.472788614570758 3.7621967035661794 11.064342621682465 0 0 0 +627 225 4 0.4238 15.606046260807988 2.923235921084861 9.669705149828133 0 0 0 +608 219 4 0.4238 13.930757596432434 0.44163579570407824 10.292793523003274 0 0 0 +377 142 4 0.4238 12.191413440075609 2.1971291882237174 13.725508574031558 0 0 0 +376 142 3 -0.8476 11.65558853146204 1.831500263754434 14.486565464984404 0 0 0 +378 142 4 0.4238 11.36369072351205 0.899589288626599 14.271303321734832 0 0 0 +520 190 3 -0.8476 12.654935116333444 3.6144365733479766 12.268065679812521 0 0 0 +521 190 4 0.4238 11.720649462653876 3.57122933772116 11.914167525009528 0 0 0 +522 190 4 0.4238 13.296420425080491 3.7009542441951844 11.505824543044751 0 0 0 +647 232 4 0.4238 15.955697677783952 7.47002550095265 11.508808252165453 0 0 0 +126 58 4 0.4238 16.489825840404063 3.161179459230855 12.9426897223294 -1 0 0 +501 183 4 0.4238 9.500019848464866 2.3066110626092433 11.406540899686282 0 0 0 +488 179 4 0.4238 12.17030372050298 0.7347365280132854 16.12066335925784 0 0 0 +609 219 4 0.4238 14.578703663356569 1.671584479943298 11.149542546257239 0 0 0 +603 217 4 0.4238 11.844098243859511 0.24798117628765415 5.546779239647546 0 0 0 +532 194 3 -0.8476 9.727066780245151 7.525894857288054 8.250498118054495 0 0 0 +537 195 4 0.4238 12.353495091196978 8.848001055384623 10.531260597227744 0 0 0 +504 184 4 0.4238 13.246675776258947 6.465082555635054 10.908961608114506 0 0 0 +646 232 3 -0.8476 15.758715697764478 6.829369444853389 12.250939163039321 0 0 0 +687 245 4 0.4238 13.254943960064889 8.98514832345121 14.717409467578584 0 0 0 +146 65 4 0.4238 14.652546983604765 7.3398264390259955 13.545785541481697 -1 0 0 +380 143 4 0.4238 10.760236960465424 5.844866070057884 14.234753882452535 0 0 0 +535 195 3 -0.8476 12.587076651097272 8.862929127468593 11.503483145123583 0 0 0 +536 195 4 0.4238 13.460125268843678 9.334043107310453 11.629331253591983 0 0 0 +430 160 3 -0.8476 9.63301619971604 9.682111590306123 10.00424421655961 0 0 0 +414 154 4 0.4238 10.667668910810049 8.205038284877624 12.172121771003793 0 0 0 +648 232 4 0.4238 16.323707616262194 6.01126007339594 12.143787481881885 0 0 0 +664 238 3 -0.8476 15.330461270589563 9.619824689380026 11.886964236163928 0 0 0 +665 238 4 0.4238 16.025013219734323 9.420697234702951 11.195627803834094 0 0 0 +666 238 4 0.4238 15.776839584375885 9.835419118555443 12.755448957787719 0 0 0 +542 197 4 0.4238 12.47763089417775 5.391278871991881 12.590948896510838 0 0 0 +668 239 4 0.4238 10.413336106414118 7.400226207839401 16.247663943219738 0 0 0 +526 192 3 -0.8476 9.447018738683195 6.35393197064873 18.704317187302387 0 0 0 +649 233 3 -0.8476 16.345292431988536 9.017776208820443 14.877567003768547 0 0 0 +541 197 3 -0.8476 12.016680597307857 6.241846410000483 12.844050222113939 0 0 0 +543 197 4 0.4238 12.66065014496007 6.841229844165456 13.319490684104343 0 0 0 +651 233 4 0.4238 15.415559139821084 8.651303043411826 14.913545232779468 0 0 0 +669 239 4 0.4238 11.34531831324323 8.719230683730283 16.006284652834186 0 0 0 +149 66 4 0.4238 16.975003500909565 5.532110247630704 17.965140968283233 -1 0 0 +379 143 3 -0.8476 10.168526258313129 5.976248477845736 15.030126623655189 0 0 0 +106 52 3 -0.8476 17.32022414402993 1.5314939343212752 12.892328616929841 -1 0 0 +156 68 4 0.4238 17.114254909284774 6.836096950343959 9.8430753514597 -1 0 0 +487 179 3 -0.8476 12.871539431927152 0.18134475334640518 16.570136924346187 0 0 0 +611 220 4 0.4238 16.96786977839787 2.245308644288098 14.936600889020037 0 0 0 +685 245 3 -0.8476 12.688631671624949 9.72961967112852 15.07103912691135 0 0 0 +630 226 4 0.4238 15.005489989911132 4.091712021991173 14.617352112708947 0 0 0 +116 55 4 0.4238 17.331046353595866 0.9826632711330118 5.254290449184732 -1 0 0 +510 186 4 0.4238 15.043136745492426 2.223973733634678 18.677734674555186 0 0 0 +507 185 4 0.4238 10.788282772357693 1.779605101333772 18.310039048189257 0 0 0 +509 186 4 0.4238 13.570227172248117 1.540106317407538 18.849458994365822 0 0 0 +610 220 3 -0.8476 16.959627787799334 2.6999855176143948 15.827219251577725 0 0 0 +524 191 4 0.4238 11.854768366914618 3.452430035980569 15.450256070858579 0 0 0 +131 60 4 0.4238 17.17888673686221 3.4245764675653874 18.79661190206157 -1 0 0 +506 185 4 0.4238 11.540722657327938 2.5145731008392413 19.55915181769573 0 0 0 +489 179 4 0.4238 13.29333780055349 0.711147543182084 17.30593329652049 0 0 0 +631 227 3 -0.8476 11.748759389818904 5.063013473056592 18.56850313403675 0 0 0 +632 227 4 0.4238 11.960957525709071 4.455714804852932 17.802892076261333 0 0 0 +634 228 3 -0.8476 15.6973562742273 4.094358065071973 18.118279668716543 0 0 0 +635 228 4 0.4238 15.200352516122278 4.946573617303477 17.95482962688389 0 0 0 +636 228 4 0.4238 15.941572938384622 3.6777232570725373 17.24262353813765 0 0 0 +523 191 3 -0.8476 12.025408686455123 4.2674240629078986 16.00403092905008 0 0 0 +505 185 3 -0.8476 11.616803826099243 1.794144829149753 18.869808159253164 0 0 0 +508 186 3 -0.8476 14.45694832583151 1.4653954955160282 18.393230297892163 0 0 0 +412 154 3 -0.8476 9.987626209974833 8.856276442416524 12.50891731085676 0 0 0 +45 23 1 0 14.708000000000002 10.1898 21.4018 0 0 0 +29 15 1 0 8.8248 10.1898 21.4018 0 0 0 +37 19 1 0 11.7664 10.1898 21.4018 0 0 0 +363 137 4 0.4238 8.891032147766978 0.7695517256996456 16.91960209454339 0 0 0 +628 226 3 -0.8476 14.748942182135409 4.651847451132323 15.405026919073109 0 0 0 +527 192 4 0.4238 10.256276910280322 5.768136621974385 18.74843629367082 0 0 0 +667 239 3 -0.8476 10.905387100614663 8.145686126522445 16.697304386582232 0 0 0 +145 65 3 -0.8476 14.048109555524928 7.505942731370751 14.324926458054504 -1 0 0 +629 226 4 0.4238 13.867967023118094 4.341344535587499 15.76205819579822 0 0 0 +525 191 4 0.4238 11.256779264811215 4.900357966674289 15.91127680861615 0 0 0 +500 183 4 0.4238 9.15950919943577 0.8451278902796727 12.050549180997539 0 0 0 +545 198 4 0.4238 10.3859577066206 9.32968686167653 18.002672781508142 0 0 0 +28 14 1 0 10.2956 7.6424 21.4018 0 0 0 +633 227 4 0.4238 12.214801106517807 5.938217167406841 18.43879809995541 0 0 0 +497 182 4 0.4238 9.206145816141262 3.1591445027130947 9.244482576320312 0 0 0 +671 240 4 0.4238 16.163078642836908 9.331042302154946 18.053830807429286 0 0 0 +670 240 3 -0.8476 15.224817405813624 9.144645834839004 17.76241457163988 0 0 0 +653 234 4 0.4238 12.461479289342714 7.49574321439815 17.453786763044352 0 0 0 +147 65 4 0.4238 14.070920627669235 6.7167697480003925 14.938673698254686 -1 0 0 +652 234 3 -0.8476 13.365831688920437 7.170425167622884 17.730039683862234 0 0 0 +654 234 4 0.4238 13.989818710227668 7.9478252106615095 17.809353682794825 0 0 0 +393 147 4 0.4238 9.051160636566062 6.107653142449054 9.395005687203998 0 0 0 +544 198 3 -0.8476 10.251293605893514 9.465474225781529 18.984216631773542 0 0 0 +546 198 4 0.4238 10.085424935750423 8.582422467561342 19.42320172197676 0 0 0 +416 155 4 0.4238 8.874760748308521 8.41771418724447 17.335141447942494 0 0 0 +34 17 1 0 13.237200000000001 2.5475 21.4018 0 0 0 +35 18 1 0 11.7664 5.0949 21.4018 0 0 0 +41 21 1 0 14.708000000000002 0 21.4018 0 0 0 +33 17 1 0 11.7664 0 21.4018 0 0 0 +42 21 1 0 16.178800000000003 2.5475 21.4018 0 0 0 +27 14 1 0 8.8248 5.0949 21.4018 0 0 0 +26 13 1 0 10.2956 2.5475 21.4018 0 0 0 +25 13 1 0 8.8248 0 21.4018 0 0 0 +43 22 1 0 14.708000000000002 5.0949 21.4018 0 0 0 +36 18 1 0 13.237200000000001 7.6424 21.4018 0 0 0 +137 62 4 0.4238 17.029879343610318 3.6063203619230157 5.778017012581245 -1 0 0 +513 187 4 0.4238 9.250995043077497 6.321981494907824 6.356593907209222 0 0 0 +139 63 3 -0.8476 17.63872263347519 5.18172987619495 8.140121207137877 -1 0 0 +672 240 4 0.4238 14.623489504230498 9.874295254591855 18.088016695075755 0 0 0 +533 194 4 0.4238 8.836211864765245 7.62533107456142 7.807226210399083 0 0 0 +78 39 2 0 10.2956 12.7373 2.4018 0 0 0 +79 40 2 0 8.8248 15.2847 2.4018 0 0 0 +86 43 2 0 13.237200000000001 12.7373 2.4018 0 0 0 +87 44 2 0 11.7664 15.2847 2.4018 0 0 0 +94 47 2 0 16.178800000000003 12.7373 2.4018 0 0 0 +95 48 2 0 14.708000000000002 15.2847 2.4018 0 0 0 +585 211 4 0.4238 10.671104024076405 14.523096964758968 5.378452704872705 0 0 0 +48 24 1 0 16.178800000000003 17.8322 21.4018 0 0 0 +80 40 2 0 10.2956 17.8322 2.4018 0 0 0 +88 44 2 0 13.237200000000001 17.8322 2.4018 0 0 0 +96 48 2 0 16.178800000000003 17.8322 2.4018 0 0 0 +189 79 4 0.4238 16.330716326393684 14.430543197032055 5.378876353138224 -1 0 0 +605 218 4 0.4238 14.554608821922615 17.810049518496978 5.425575473887812 0 -1 0 +185 78 4 0.4238 17.278396096257584 11.245243170341306 18.628865108751647 -1 0 0 +675 241 4 0.4238 14.050256076460313 11.268910684157941 5.2547329010893895 0 0 0 +583 211 3 -0.8476 9.742398396942372 14.830929242522885 5.585204967619628 0 0 0 +549 199 4 0.4238 9.880935542031319 11.534228571969086 5.578833372236164 0 0 0 +673 241 3 -0.8476 14.423537036600743 12.196595024378954 5.246789504930352 0 0 0 +691 247 3 -0.8476 12.226887967387686 13.96808871865356 5.550461386630152 0 0 0 +693 247 4 0.4238 12.405744481804994 14.402639542495168 6.433170805482284 0 0 0 +547 199 3 -0.8476 10.800294514900852 11.144551884206534 5.524694081527026 0 0 0 +548 199 4 0.4238 11.330392659763318 11.635863314460998 4.833601517261942 0 0 0 +551 200 4 0.4238 9.824105888312557 12.904381406994865 7.947029932960728 0 0 0 +570 206 4 0.4238 10.107087940276514 16.351002395244187 8.804555207290619 0 0 0 +674 241 4 0.4238 15.412065550992372 12.156879839921826 5.101070493632253 0 0 0 +676 242 3 -0.8476 13.149488474276104 14.303592627625555 8.033435431397672 0 0 0 +677 242 4 0.4238 12.520481979817932 13.57565652491699 8.306308729587867 0 0 0 +678 242 4 0.4238 14.090526371000333 13.970499146782764 8.092565441363229 0 0 0 +692 247 4 0.4238 13.047259912639866 13.485037990235355 5.244435494901086 0 0 0 +694 248 3 -0.8476 15.75249070806157 13.230109644684827 8.352539134651927 0 0 0 +695 248 4 0.4238 15.765048403110793 13.302188135502202 9.349859068474089 0 0 0 +696 248 4 0.4238 16.001000584924615 12.299903472725656 8.082429196171498 0 0 0 +553 201 3 -0.8476 11.536188658610737 12.261247879197334 8.838365774200673 0 0 0 +698 249 4 0.4238 13.152747288257768 15.38647935865847 9.369905701535087 0 0 0 +584 211 4 0.4238 9.742750697211381 15.334499473693516 6.449159937664458 0 0 0 +481 177 3 -0.8476 9.712261912951215 19.81131724866128 12.731667155342551 0 -1 0 +194 81 4 0.4238 17.614132852196526 15.025554160136025 11.033027733588618 -1 0 0 +697 249 3 -0.8476 13.074278463395652 15.880587473655579 10.235757789681385 0 0 0 +686 245 4 0.4238 12.316495205151407 10.25704939957381 14.307276157481006 0 0 0 +555 201 4 0.4238 11.763969176938547 12.541287007486309 9.770940538585773 0 0 0 +40 20 1 0 13.237200000000001 17.8322 21.4018 0 0 0 +572 207 4 0.4238 11.357418534899173 15.825375084096414 10.447114897443656 0 0 0 +477 175 4 0.4238 9.796764568089872 20.173557848497314 5.112000475676461 0 -1 0 +571 207 3 -0.8476 10.469632050143648 16.285507194605774 10.45781595454496 0 0 0 +617 222 4 0.4238 12.604572827998943 19.11782192983119 17.014530479074676 0 -1 0 +207 85 4 0.4238 16.484804937847407 17.95784225793004 5.125866981859153 -1 0 0 +604 218 3 -0.8476 14.919490237883124 18.740081140997685 5.469195595814299 0 -1 0 +606 218 4 0.4238 14.163642529486074 19.392337426063147 5.526256978773244 0 -1 0 +350 133 4 0.4238 9.847135671811797 17.59617059112192 5.2673712576069285 0 -1 0 +710 253 4 0.4238 13.094622584847201 15.473320385701221 5.264938889383966 0 0 0 +711 253 4 0.4238 14.484370529808553 15.807813174434916 6.054458768321659 0 0 0 +187 79 3 -0.8476 16.06784358046388 15.038800971157187 6.127822756092875 -1 0 0 +568 206 3 -0.8476 9.639082982591818 16.241142337718703 7.927684555691646 0 0 0 +482 177 4 0.4238 9.013549408922476 19.282481790090376 12.249864431686571 0 -1 0 +188 79 4 0.4238 16.054578692186666 14.524902713402577 6.985572058160539 -1 0 0 +709 253 3 -0.8476 13.69574544303163 16.20540052832755 5.585422851670113 0 0 0 +478 176 3 -0.8476 10.743136222875439 19.021221793365413 9.459342719817577 0 -1 0 +712 254 3 -0.8476 11.355719422270928 17.596452138767013 6.330954333049798 0 0 0 +713 254 4 0.4238 12.147100443543675 17.026867143366314 6.10894120498237 0 0 0 +714 254 4 0.4238 10.85441011892559 17.187831247840155 7.0936593948775375 0 0 0 +208 86 3 -0.8476 14.978787616946535 17.883565352950576 9.85434485358232 -1 0 0 +699 249 4 0.4238 13.803457673737139 16.562083734382476 10.297891058072048 0 0 0 +479 176 4 0.4238 10.830380710808972 18.201250779709707 10.025060408971106 0 -1 0 +210 86 4 0.4238 15.707952472992298 17.95740770355826 9.174001558520414 -1 0 0 +602 217 4 0.4238 11.931270349438666 19.05745227984406 5.986204602865755 0 -1 0 +480 176 4 0.4238 11.526129474544906 19.622068656329446 9.620292714944727 0 -1 0 +557 202 4 0.4238 9.13318824506834 12.473014112086789 9.617393618763018 0 0 0 +213 87 4 0.4238 17.054061009047526 18.335028953897382 7.167418106968749 -1 0 0 +349 133 3 -0.8476 8.966699097700523 18.04564610258063 5.116362049366701 0 -1 0 +601 217 3 -0.8476 12.434259484055977 19.920257686140243 5.935521094437088 0 -1 0 +211 87 3 -0.8476 17.115549893879596 18.586909191454463 8.133221500466798 -1 0 0 +716 255 4 0.4238 16.090290545633202 20.047836677861607 7.8703494362293585 0 0 0 +30 15 1 0 10.2956 12.7373 21.4018 0 0 0 +690 246 4 0.4238 14.016938477330777 11.918951523221422 17.048776835745876 0 0 0 +434 161 4 0.4238 9.693823285321802 10.480006453901664 13.46319566455011 0 0 0 +540 196 4 0.4238 11.674280249267774 11.854940896867596 12.289264008634488 0 0 0 +680 243 4 0.4238 16.478424726320092 12.587026221666738 11.664932438859578 0 0 0 +573 207 4 0.4238 9.91378123849236 15.920061312053692 11.204461329475878 0 0 0 +206 85 4 0.4238 16.98469098124782 16.433732066685277 5.432182455531139 -1 0 0 +679 243 3 -0.8476 15.864399170116613 12.312379072571936 10.924971754919977 0 0 0 +576 208 4 0.4238 10.588873040032755 14.34942231890106 13.367757482470923 0 0 0 +681 243 4 0.4238 15.065045663212485 11.850484998300644 11.309273873923207 0 0 0 +682 244 3 -0.8476 11.962561506249118 13.401175001102121 11.265786491254556 0 0 0 +683 244 4 0.4238 12.689665893772041 14.081940340712748 11.35454258028487 0 0 0 +684 244 4 0.4238 11.13131903032003 13.74213974238264 11.704852521590375 0 0 0 +196 82 3 -0.8476 15.90285320510125 15.42041398579357 12.053244611285264 -1 0 0 +198 82 4 0.4238 15.999832561023927 16.415625842665293 12.065435578871838 -1 0 0 +574 208 3 -0.8476 9.846636628795936 14.258971167237283 12.703751701446874 0 0 0 +432 160 4 0.4238 9.611886226641284 10.6816890833237 10.024203718077358 0 0 0 +197 82 4 0.4238 14.93374208238936 15.179298400795396 12.105082391999241 -1 0 0 +722 257 4 0.4238 14.253751156061526 14.665978439852315 14.219280715412237 0 0 0 +161 70 4 0.4238 15.961388715819947 12.577197095769023 14.434148039917726 -1 0 0 +721 257 3 -0.8476 13.443073239250747 15.202875049727682 13.985735521948472 0 0 0 +160 70 3 -0.8476 16.454216814462317 11.857514503546295 13.945090378978806 -1 0 0 +704 251 4 0.4238 16.492568511985038 14.65856714257437 14.904602735163373 0 0 0 +703 251 3 -0.8476 15.686041018071307 14.126152016812876 15.161599817811231 0 0 0 +723 257 4 0.4238 12.626015554694403 14.73882329909381 14.327894460415154 0 0 0 +200 83 4 0.4238 17.636715194805177 15.712516898031126 13.309851169131049 -1 0 0 +38 19 1 0 13.237200000000001 12.7373 21.4018 0 0 0 +471 173 4 0.4238 9.213708826688599 20.10521736834987 14.484550560031712 0 0 0 +616 222 3 -0.8476 12.486553254914368 18.179588143054474 17.339782319012816 0 -1 0 +31 16 1 0 8.8248 15.2847 21.4018 0 0 0 +558 202 4 0.4238 9.279605746055639 12.744930098194228 11.220905704732532 0 0 0 +209 86 4 0.4238 15.284708839266862 18.288339711647406 10.716070154782482 -1 0 0 +483 177 4 0.4238 10.589194302513869 19.71123832755193 12.261588666928713 0 -1 0 +579 209 4 0.4238 10.632760498133948 13.609865246700785 15.254030959955827 0 0 0 +656 235 4 0.4238 12.233494486101138 10.203173043550326 5.742028409390008 0 0 0 +46 23 1 0 16.178800000000003 12.7373 21.4018 0 0 0 +484 178 3 -0.8476 12.271762944753268 19.3092318048306 12.256076031945002 0 -1 0 +615 221 4 0.4238 15.703698741359615 19.437734901664438 14.911128387672555 0 -1 0 +701 250 4 0.4238 13.053700403965204 18.01421232485029 15.235824244829562 0 0 0 +486 178 4 0.4238 12.412225411434237 18.822427821700416 13.118219979361202 0 -1 0 +700 250 3 -0.8476 12.581078466090279 17.797604551340076 14.381593843109357 0 0 0 +702 250 4 0.4238 12.86343717428936 16.892117653667498 14.064786282811827 0 0 0 +593 214 4 0.4238 10.887928434111936 17.45241601646232 14.457678355975723 0 0 0 +718 256 3 -0.8476 16.113357623734434 19.089754005358483 12.130203493412996 0 0 0 +719 256 4 0.4238 15.731103913455442 19.005687028005063 13.050428928782427 0 0 0 +720 256 4 0.4238 15.794398214315043 19.940882962764434 11.713256954907804 0 0 0 +613 221 3 -0.8476 15.20393210112 20.26432473888685 14.652318504384699 0 -1 0 +600 216 4 0.4238 11.084689407902278 20.20403610863822 18.935319345381465 0 0 0 +485 178 4 0.4238 13.154564554087738 19.610816229399713 11.895925918696058 0 -1 0 +725 258 4 0.4238 16.569141248743357 17.107301434712273 15.075566187079383 0 0 0 +592 214 3 -0.8476 9.926060900867862 17.181240442111783 14.493396631013495 0 0 0 +220 90 3 -0.8476 16.837656850141205 16.7365181467464 18.02286642685194 -1 0 0 +577 209 3 -0.8476 11.267255610418932 14.304356543589998 14.914770347189284 0 0 0 +470 173 4 0.4238 9.418934192592229 18.827095608845703 15.479997089330922 0 0 0 +171 73 4 0.4238 17.22712271937352 12.084163738213748 6.093958329052445 -1 0 0 +724 258 3 -0.8476 15.977787063732565 17.877537936292324 15.31439037709252 0 0 0 +550 200 3 -0.8476 8.843880574348374 12.707663008542877 7.9255787960182325 0 0 0 +169 73 3 -0.8476 17.083413201671984 12.018684981104961 5.106506979270466 -1 0 0 +469 173 3 -0.8476 9.217462584338872 19.805716438344422 15.438639192053397 0 0 0 +47 24 1 0 14.708000000000002 15.2847 21.4018 0 0 0 +559 203 3 -0.8476 9.222833651291937 12.570348717943896 16.44681031548591 0 0 0 +39 20 1 0 11.7664 15.2847 21.4018 0 0 0 +564 204 4 0.4238 10.658684166557238 11.127527387280814 18.825581164798123 0 0 0 +186 78 4 0.4238 16.813476582396806 12.459781548073602 19.616474951157276 -1 0 0 +562 204 3 -0.8476 11.056949526067399 12.030021626625789 18.661602869563605 0 0 0 +563 204 4 0.4238 11.995444943416727 11.925404905340534 18.332541014507754 0 0 0 +580 210 3 -0.8476 10.448406987200734 14.81229121924737 18.347689310309658 0 0 0 +581 210 4 0.4238 10.594160894470312 13.85617327263508 18.60184473713495 0 0 0 +688 246 3 -0.8476 14.074844739563572 11.94780328954529 18.04668201078806 0 0 0 +689 246 4 0.4238 14.666244972833242 12.704816564391312 18.324489833823254 0 0 0 +435 161 4 0.4238 9.27206118562732 11.312172644181144 14.803435651426073 0 0 0 +202 84 3 -0.8476 14.891958761149404 14.616331988006797 17.552943751811167 -1 0 0 +204 84 4 0.4238 15.2986183079614 15.412266337573367 18.00140379447663 -1 0 0 +705 251 4 0.4238 15.388384001542512 14.393411825883335 16.078099953945607 0 0 0 +582 210 4 0.4238 9.924481028531677 15.271693180004116 19.064942024378542 0 0 0 +554 201 4 0.4238 11.80070270348779 11.306403015389012 8.703073689133799 0 0 0 +184 78 3 -0.8476 17.059420129620797 12.219767137760014 18.677376986174107 -1 0 0 +203 84 4 0.4238 13.908189752082496 14.760435488661487 17.44601976433382 -1 0 0 +560 203 4 0.4238 9.873397808788084 12.432659786103576 17.19367613275572 0 0 0 +32 16 1 0 10.2956 17.8322 21.4018 0 0 0 +538 196 3 -0.8476 11.856530283653065 11.071714403050905 12.883689284791696 0 0 0 +114 54 4 0.4238 16.740507502986524 19.733888369270662 17.464290232566544 -1 -1 0 +599 216 4 0.4238 9.991486069185791 19.92760256842262 17.754168449921202 0 0 0 +594 214 4 0.4238 9.567365199734075 17.10189768486746 13.563319997919086 0 0 0 +618 222 4 0.4238 11.757625359421008 18.153169411832355 18.02386286343707 0 -1 0 +578 209 4 0.4238 11.784309790163105 14.686144949572663 15.680859504578684 0 0 0 +598 216 3 -0.8476 10.440809954127937 19.538278556913312 18.558242715539976 0 0 0 +221 90 4 0.4238 16.40504190396716 17.635193851231918 17.95057348248026 -1 0 0 +726 258 4 0.4238 15.623940228103091 17.751260116932656 16.24113010577946 0 0 0 +113 54 4 0.4238 15.274792861943855 19.90322500302785 18.164027337467978 -1 -1 0 +112 54 3 -0.8476 16.001763578512946 19.25472642761485 17.938275397726326 -1 -1 0 +706 252 3 -0.8476 12.551685935685516 15.457175848664178 16.910098217483355 0 0 0 +707 252 4 0.4238 12.845942592767507 16.407649029956072 16.81002937477236 0 0 0 +708 252 4 0.4238 11.708194957139375 15.424075280938515 17.446220729813266 0 0 0 +172 74 3 -0.8476 16.76433481998671 10.797863993354191 8.006605472672149 -1 0 0 +162 70 4 0.4238 17.435264857566406 11.950759692050937 14.114943325593048 -1 0 0 +353 134 4 0.4238 9.254987607694568 19.627508709431815 8.660795000969017 0 -1 0 +433 161 3 -0.8476 8.946978004577417 10.956312644342525 13.927259409798495 0 0 0 +205 85 3 -0.8476 17.26823301711381 17.39134990381299 5.381460419461074 -1 0 0 +556 202 3 -0.8476 8.92984528918619 12.114054866496765 10.528327709580134 0 0 0 +575 208 4 0.4238 9.085368583583021 14.84916727603299 12.972339380460301 0 0 0 +539 196 4 0.4238 11.878312138663802 10.235425564757355 12.335831573597769 0 0 0 +311 120 4 0.4238 17.61891096205037 14.985380485740194 17.287899468199146 -1 0 0 +623 224 4 0.4238 12.381880540841486 20.312082142119113 7.939939105861083 0 -1 0 + +Velocities + +49 0 0 0 +50 0 0 0 +51 0 0 0 +57 0 0 0 +58 0 0 0 +59 0 0 0 +65 0 0 0 +66 0 0 0 +67 0 0 0 +243 -0.002822231990877442 -0.0023052214061719707 0.009530247074424172 +52 0 0 0 +53 0 0 0 +60 0 0 0 +61 0 0 0 +68 0 0 0 +69 0 0 0 +387 0.02040683175844618 0.030113474205102974 -0.0006765655981871661 +260 0.017568072072126094 0.03499100077202979 0.005917376062361976 +277 0.004833784750961121 -0.00983323915389275 0.005100923381866167 +422 0.004448794740744859 0.0020408391736819425 -0.010275883348163031 +278 0.003719859102099544 -0.025495496257443982 -0.006461254346208349 +421 0.006340358780268348 0.0018558120884466683 -0.004128164084761198 +372 0.0026494365999797627 0.0002416167810091355 0.0012395336245644754 +241 0.00014861395742901305 -0.0005174394549237438 -0.008073847438556242 +367 1.8977919425869245e-05 -0.002868464457728128 0.00126126747148945 +368 0.021696731790194046 -0.011658449783557777 -0.010106304430098976 +369 -0.0039062155813656472 0.012545818714569952 0.006562477023364197 +237 -0.028078564390780818 0.004642075302683817 -0.0069978916624241095 +242 -0.0021337131990320645 0.0018399202445872026 0.004897830174432379 +244 -0.000635853912060899 -0.0003117027780749414 -0.007075749642614316 +245 -0.005541920902969381 0.0025149861461632337 -0.008146082429684204 +246 -0.019695456306746895 0.005140535300857363 -0.01023662976377297 +357 0.002776409122597718 -0.008408343533829422 -0.009812139883210476 +248 -0.006684000376662951 0.005731878005754331 0.010024448438371488 +355 0.0039628389974169075 0.00046045180285836514 0.0006669919797090927 +370 -0.0026366044952138763 -0.0023389228268249564 0.0037486821808728667 +5 0 0 0 +115 -0.0020402352082021387 0.0036677720131863276 -0.00802303077613984 +117 -0.0034464988542171884 0.0016938233529814452 0.0262953836422676 +337 0.0073633788430925 0.004509282303724596 -0.0007650594341553004 +423 0.0026959799397957645 -0.006812979157387598 -0.010685424784478047 +388 0.0015852098107365846 0.005259230015998264 0.002751026511287103 +371 0.005779711986636393 -0.0008353768785160366 -0.00198237878607976 +389 0.0031846943488478907 0.011642110703518128 0.014420711142016252 +498 -0.005164631476145359 0.010939168436109934 0.022352344522590478 +499 0.006886168281265468 -0.009108086281242952 0.003883120004951695 +356 0.004163620682770444 0.013138193062289373 0.016049265341384164 +235 -0.003179198694301041 -0.003692981204063803 -0.0014262247525664452 +338 0.00310168679193579 -0.008146882520727082 0.0012671826351908747 +101 -0.006659046138748814 -0.0008304393783897443 0.0018191140652219755 +102 0.02188289620486816 -0.0011844869068423447 -0.012098996861358865 +264 -0.012316318853493463 0.0005577946038971241 0.00507703390200475 +261 0.03604318154809298 0.009806231532263591 -0.0160720490780732 +385 -0.002687032468404485 0.002271728237296993 -0.0017646573286989264 +386 -0.012497380519527533 0.0041402170434657075 -0.0033535206200510353 +390 0.0022744866866548233 0.0194196424464606 -0.006615088105745522 +259 0.005872554698472103 0.006217209229585764 -0.002947062491945664 +289 0.005394136139617279 -0.0018490152341513514 -0.0017693122242661956 +262 -0.0016568568125734 -0.002825219529412475 6.382233586258925e-05 +234 -0.008949726380115033 -0.015331490021295458 -0.0038004764767583044 +280 0.0004636341960603261 0.0006221175752928897 -0.0005407374987479414 +282 0.015715623100300606 0.013923022667883546 -0.0010483024598094686 +404 -0.014410298273982824 -0.012668338419291134 -0.011323512960376125 +405 0.0023458245411136914 -0.01692821219885552 -0.005019559570698842 +406 -0.003252744961088347 0.003382257937125399 -0.0025557519964832082 +407 -0.016535773877968372 -0.010199818886584635 -0.007880710321119557 +408 0.003104693710013748 0.024588717619135 -0.019734253685727947 +281 0.0038133770520735583 -0.02336844480331769 0.012395796079644686 +20 0 0 0 +403 0.002095886803122054 -0.005917998223858474 -0.0026387005496362314 +140 0.005917114366454788 0.00013672823352229473 0.010728054627890327 +285 0.0020423077594681877 -0.017314949305267807 -0.0078038982086199755 +409 0.0011885270468256002 0.001311496780392462 -0.006250213859486361 +410 0.002137303664280779 0.011393840611042969 -0.012019296950139544 +283 0.008387724395267328 -0.0004268569909832637 -0.004571499974862614 +284 0.0037479866880654462 0.003123659347513404 -0.006442038358579766 +300 -0.0020886391612222007 0.0011952415753491992 -0.002123570749439468 +512 0.0034541512569677144 -0.015701250730296833 -0.0006847182789978021 +298 0.004687912913638835 0.00396454302748385 -0.002268901914386687 +13 0 0 0 +167 0.008372557569580531 0.0020909883643117043 0.013455188067349093 +429 -0.0010329283045439992 -0.010344906649571438 -0.014496032790783172 +108 -0.014271917085942332 -0.002526311480035533 0.010864999945330718 +12 0 0 0 +247 -0.0013223759091741563 0.003051151563170616 0.0008020438055177612 +249 0.005915134979981071 0.001695039449665328 -0.009036002276667511 +267 -5.203826288410304e-05 0.011088343189988381 -0.016122035385740748 +150 -0.003275619611567659 -0.013131930835458579 -0.0031684098600017235 +232 0.009245437451002687 0.003369086397482676 0.0014175603209244307 +103 -0.002149210018643365 -0.00674464019035111 -0.004041355781702086 +105 -0.0012281774976330689 -0.009203227586228503 0.005694364069998308 +250 0.0023070568946502463 -0.0006414185530465225 0.0005282073163470133 +251 0.0009555910616923369 -0.005715887362345588 0.0060110066067819165 +252 -0.0002510451393985372 0.007329026713063109 -0.007493424691042163 +373 -0.0008705678021523996 -0.0024088310901922145 0.004592015983896998 +374 -0.003931339219109338 -0.016247225888682645 -0.012914239606148408 +375 -0.007942244152822379 -0.0060302172125581005 -0.0052038457937996765 +104 -0.011833857212613298 -0.004127926432757908 -0.015035492259698087 +265 0.0031454031762572156 -0.00246737648579412 0.0005406656545775518 +144 0.003546031095210744 -0.0038350589651608004 -0.007439077765406193 +229 0.0008187621059599007 -0.003770569170131831 0.004015947506505133 +266 0.013521098905566343 -0.022659542063113915 0.010384028628807856 +395 0.016278537764752236 -0.007528312170464568 0.0019027200331366068 +496 -0.0032866997173605483 0.005189101573918263 0.0017819703307354775 +358 -0.00043662911478563993 0.002091132008949735 0.0008355855190060376 +360 0.0021562801326494166 0.028681859833282353 -0.006852502071007954 +253 -0.00018608464258926786 -0.0034350314595455243 0.0021609958688780114 +17 0 0 0 +19 0 0 0 +100 -0.0002459862160224302 -0.0009442792339078408 -0.005128196004024017 +178 0.001378807349484608 0.003432156861170504 -0.006405935735664396 +230 -0.0030347069514960433 0.007114919870044278 0.0038760141152567214 +231 -0.004881286924708873 0.007364944438314923 -0.004742740868794306 +438 0.0026473976068899737 0.0032581497864147906 -0.021751859248191313 +392 0.009407580846764031 0.018205934857776874 0.004335142576954614 +111 0.004714061424162619 0.018228957649179207 -0.019987299139746964 +180 -0.005959092296708947 0.00037040100063528216 -0.009037319032682158 +233 1.5171261964060061e-05 -0.0007245864250013526 -0.002712199050964378 +132 -0.015054402443154296 -0.009164801953985011 0.03124839324921733 +286 0.00862264629438526 0.0020470752961162246 0.0002795935159881998 +287 0.013349805236602987 0.007260122847025134 0.005863728567388524 +288 -0.009317184630367126 0.02402454627808293 0.022064072519289615 +394 0.00408114796092972 0.0001262048336044046 0.002093477769512995 +396 -0.0007520969450285531 0.0027296854694956307 0.002310697288151023 +411 -0.004901362171333696 0.008797804190475603 -0.0029696518702863454 +166 -0.0011991302113043027 -0.0010146518351967157 0.005937081132183463 +159 -0.006903688208656232 -0.0017269476722276214 -2.6136668986767914e-05 +398 0.004555640424819427 0.004736373435451135 0.0017147780498698957 +2 0 0 0 +1 0 0 0 +179 0.009297541728472438 0.0034242450328185875 0.0017120759413145345 +397 0.0023632897757542284 0.005237892508362889 0.0019341925178973478 +255 0.028991618925043962 0.0025163600128309017 -0.010074435274392352 +157 -0.0053419651087539205 0.0009093299635396 0.0015631418651845292 +399 -0.0015933703029870642 0.0024191444535809022 0.005177427562284777 +123 -0.0008028814835527645 0.003446217051215865 0.007263081739694155 +225 0.004043632558155959 -0.0008602569408086914 -0.011024515477927854 +21 0 0 0 +417 -0.011016708095062428 0.021016423008858746 0.027021942113397354 +362 0.014400211555475738 0.02036532596351461 0.002366284053437811 +129 0.011984788717614495 -0.0038818338418699625 -0.01144947359364502 +359 -0.003799527036142441 -0.013871544730852163 -0.025355097880908957 +128 -0.019621574593312444 0.00330829030739978 0.011297099869832166 +256 0.004485857776842822 -0.006190801167325729 -0.004114050717367789 +257 -0.022889246506700947 0.016462815613716802 0.008995511031478167 +258 -0.0006750115093414352 -0.006492045194607161 -0.008539585614011868 +382 -0.000597634904196285 0.0031190547022447047 -0.0005426010315562802 +383 -0.01634488230604647 0.012293073745882217 0.03664733161082087 +384 -0.0036208229605027634 0.002392346607545294 0.009122574124318885 +272 0.010142233404856617 -0.005047913831595099 0.003412889130966729 +136 0.004503784480935454 0.0038223968860329467 0.0018198636906331498 +365 0.016589402600688283 -0.010293926257802932 0.006087471580008456 +127 0.0011478788695262919 0.005150422624549264 -0.011206416984160349 +271 0.0017123135951122007 -0.007785939214365013 -7.337703803098046e-05 +158 -0.009529404427389821 -0.0065789591819548935 -0.0015910212988070281 +143 -0.0047281625879192395 0.03124515069332843 0.0007451703256053234 +415 -0.00379066481523338 -0.0026663767364489017 0.0007712027345475282 +4 0 0 0 +276 0.01443192294700282 1.2119192948378698e-05 0.007580423687662169 +254 0.008413254538567476 -0.0031806116939371324 -0.005176729835500755 +273 -0.00235887879677462 -0.014807869627375875 0.018953669816605245 +612 0.000553795366781067 -0.008063136654246279 -0.015050782989627462 +402 0.0025057881076196976 0.013005029946408737 0.0024227412749199197 +401 -0.01611939125183101 -0.026613207073318514 0.011389739053037555 +400 0.0020939366064105544 0.004274317448135537 0.0039088401021415455 +274 0.0033890835718365284 0.0034962426873985687 0.0012142356622953697 +528 -0.0013204856705111925 0.008273432022243156 -0.006824479683978935 +275 -0.002467493814982517 0.009567039269012681 -0.001628281796299501 +130 -0.002294452700115776 0.004794778503598961 0.0012428491729459905 +11 0 0 0 +18 0 0 0 +3 0 0 0 +10 0 0 0 +9 0 0 0 +418 0.001969443672537646 0.0035591095160348667 6.840845948225931e-05 +339 0.009449547392686573 -0.015527752503599964 0.0020519522114406832 +109 0.0009019933692628193 -0.0023637997904728007 -0.001195708615075569 +165 -0.0031442370830047028 -0.00860076308764216 -0.004385624526108252 +142 0.0014997158829675526 0.0023986615572450763 0.0012176499361465287 +163 0.0005529616736063511 0.0011520262220100132 0.0026876826981595578 +138 0.00835009874289962 0.005446113136637283 0.012245936278168302 +110 0.0058595694218395306 0.006330401993370779 0.009691789005782887 +148 0.0010484300933068299 0.003614731905265376 0.0005656354442996937 +168 -0.0035453252363009 0.0030591240603495603 0.01141478999979606 +155 -0.006081584053376349 0.013488305256955841 0.003122684449638359 +419 -0.0043326958772574465 -0.007672862505363698 0.001741431881340215 +279 -0.006987931517458088 -0.004463380651949984 0.0032168497927575978 +291 0.013070263333084142 -0.011043304766923914 -0.007667022379803992 +54 0 0 0 +55 0 0 0 +62 0 0 0 +63 0 0 0 +70 0 0 0 +71 0 0 0 +318 0.002855540774250541 -0.008706265392435268 0.016709087896323416 +296 -0.006827138825786998 -0.008250089563741453 -0.010023271445379432 +295 0.0028025143164420044 0.004503395179327505 0.004740427349136433 +199 -0.0004276652048611721 0.0021036436581905785 0.001894836691998127 +212 0.0030494069444099436 0.008059312371114956 -0.0015384303490254432 +56 0 0 0 +64 0 0 0 +72 0 0 0 +297 -0.00863611007915637 0.023794218238383708 0.012286597898870223 +316 -0.0027282969248329306 0.0034784826105371163 -0.0015550482433265614 +596 0.0022540588825489087 -0.0004558511768009074 0.0021113703320854186 +314 0.0022730308836219526 -0.003576104706675502 -0.018305547725501175 +317 -0.008818932993818982 -0.01614550769887922 -0.006312790795656888 +174 -0.003989108346691385 -0.0041463772148390655 -0.012133006782017853 +424 -0.002061853383746996 0.0060283608089820645 0.0003858189982856313 +425 0.004667869130489407 0.006734610704535739 -0.008810620526543933 +426 0.001800378488543691 0.006572078134776592 -0.006959939430260138 +439 0.003570594672782302 -0.0075541274141492564 0.0011385953818795792 +440 -0.018483500755499073 0.026077043148287158 0.007762026717706596 +441 -0.0035160639639977304 0.01017935880582407 0.010925510238252048 +443 0.002752891522179302 0.002359520536859665 0.004402033435474336 +445 0.005109753638480509 0.0020799917239666893 0.0006203039106678689 +447 -0.004833957539877676 -0.013635648993521989 0.011042274951983328 +460 0.004502332563078225 -0.007019778994064603 -0.0020909163924237063 +566 0.006856255802710405 -0.007670066707940605 0.016488680237282137 +313 -0.00032024264450880786 -0.0033268448173116097 0.004213963501884734 +446 0.008230377667680117 -0.012002220683816067 -0.020817049936810675 +442 0.00632326144690708 -0.0028844850223673168 -0.0030935507749222787 +444 -0.006310050738245053 0.007701816347405714 -0.0030374249791888914 +462 -0.014819125088095908 -0.011935071226326503 -0.021055826472684266 +299 -0.01677058520297861 0.00017554348774697463 -0.004683820806050938 +192 0.0029983763762283316 0.00016984782773855043 -0.01239756136002042 +223 -0.0004979047776757504 0.0008512078443138333 0.0008443921365999649 +567 -0.015144427531155595 -0.010095143190313405 -0.003938143744796693 +305 0.011789453157160831 0.0011848420902197377 -0.006893690590609019 +461 0.003728808485234629 0.005861362556647005 0.030227046338109683 +164 -0.006371415362340771 -0.01791438320080124 9.28678768006752e-06 +99 -0.008674754592385234 0.0028175274440473265 -0.0035583112811675274 +352 -0.0019487809489514367 0.0005924046979209127 0.003081154877279966 +569 -0.004017890676087473 -0.02815893688383933 0.002950938479936915 +333 -0.034231073878134635 -0.020187818196016755 -0.002800887564445431 +315 -0.010786280226653037 0.0008279905777623672 -0.02094968371962149 +331 -0.003989578895582793 -0.002515570144974486 -0.0036650894134105383 +332 0.016019028086450147 0.01092586031507103 -0.004489180590132138 +334 -0.0050160125646465294 -0.0018598829970539145 -0.0053845119970308665 +335 -0.028710921574646858 -0.0077694127337625445 -0.033636255583214404 +336 0.007057694179060937 0.03364290478740563 -0.006438555338777638 +457 -0.0005470346035113902 -0.003636024539138937 -0.004693496328677859 +458 -0.014508974750418497 -0.025372567016445004 -0.015913823359620972 +459 -0.010595826221479657 0.016269726791195215 -0.00272015023858062 +587 0.009304708374423524 0.01802080928685514 -0.00225021037130779 +319 -6.329541868364268e-05 0.0007604880730009239 0.003923874710400092 +320 -0.013692396245649933 -0.004691994559443151 -0.004472120236690682 +97 -0.0041811451372435054 -0.0016947454452144169 -0.003088595435702038 +228 0.0035068470044357877 -0.00722159557397858 0.012380633273355516 +588 -0.007410650883482608 -0.004122963242300341 -0.002857693802382625 +586 -0.007183335289483923 -0.0021087039116411354 -0.002484722594033302 +354 -0.005993845781479215 0.012873796518682281 0.004349877868201698 +226 0.0006083611726830203 0.0035042017699132974 -0.003614859636821342 +193 -0.005669407429393517 0.004100406563704109 0.0010676709282988433 +321 -0.0071014047941653355 -0.001969377469874544 -0.0012339450644901888 +227 -0.011610696838439318 0.005519782536646491 -0.033176739962523336 +98 0.004309616722914489 0.002296427992121968 -0.0120792319341143 +195 -0.022875726692808136 0.01247390549316612 -0.01427276806388248 +190 0.0018356261705295177 0.0009825184232487147 -0.002190550287520845 +351 0.012404406240632222 -0.0006226879763799463 -0.0007946612762221016 +341 0.009353367040698626 -0.02002743130988449 0.011758841508559133 +238 0.001140654521438526 0.001459298321068358 0.001042104126190775 +561 0.011113989685122774 0.022628295093003382 0.007122561809265144 +14 0 0 0 +306 -0.0038854100448435683 0.009898877676498599 0.002296497679251702 +302 0.006250906499575308 0.0006651428085952308 0.003150835151576138 +492 0.0014990461900945217 0.00451246124630026 0.016271728963465862 +304 -0.0007644313239277986 -0.0002378869841683528 -0.008863599759836709 +183 -0.004235930717635777 0.015135770004869582 -0.009430966156809679 +301 0.001407295695739688 0.0025883970140671473 -0.0005129121354970562 +177 0.008532161224650597 -0.006166551287122611 -0.017051347217575095 +322 -0.006036741936123908 0.006694507238557491 -0.008797210546742736 +323 -0.0005878788759916577 -0.0046750514109782345 -0.00838774267309369 +324 0.0010320404343721495 0.018535823894319074 -0.0017230633321379187 +448 -0.0016501872771886364 0.0013105394169198484 -0.0016886903769968596 +449 -0.0018265835047153955 0.028292021845375437 -0.009028321848105923 +450 -0.004808560034150565 -0.01472989321192729 -0.02510566175036757 +327 0.00646416913515833 0.006855393213799753 -0.005266755020241675 +303 -0.0015080760032872007 -0.001614212669020773 -0.0071983001830801295 +182 0.005208468193997556 0.0074887616117697425 -0.00011567499674279219 +181 0.0041917814790537 0.006276446506232434 1.3253856979742307e-05 +307 -0.001742158205026559 -0.003906781181025906 0.0037522031056115815 +308 -0.030670315452765617 0.011715162069613731 0.00940047271483485 +309 0.015594087693923099 -0.011118430703491443 0.03507873836369949 +290 -0.01822990251793187 0.01136554812614189 0.019784306732369923 +24 0 0 0 +175 0.0003997089801711392 0.005612968231817301 -0.001977491453552462 +240 0.0021550359085433833 -0.013887726897599147 0.017007464029105246 +214 -0.0030236250800941365 -0.007746304500505268 -0.003265469519951162 +463 -0.0030506716559674306 8.022641073809966e-05 0.001305001465203792 +465 0.011668743673717535 -0.022561344284648188 -0.006913272055741826 +342 0.00761335978819216 0.01725411685187947 0.0031665163313512263 +467 0.005429443080097707 0.00505311980836296 0.03253239780470216 +590 -0.007667081749785803 -0.012646854519747352 -0.007344849346264026 +216 -0.015420086265898867 -0.0011289370701770252 -0.005213310630267644 +468 -0.014944650251435999 0.012290176565218719 0.03445762183628464 +437 0.008170752455860762 0.003515568999353165 -0.012392634739661046 +589 0.002120429597512166 -0.00404409002311151 -0.0008524764743937817 +591 0.0023748900106734744 -0.00911858234514646 0.011898881278063407 +217 -0.002002123365953612 -0.0016868233396341733 -0.0009793648464728668 +236 0.024017051264351316 -0.0011740301473598094 0.019254633312972093 +597 0.0006978982547704831 0.008971611751512084 0.01620145805868815 +436 0.006073089779316558 0.005758616207831075 -0.0010603059361670737 +215 -0.001968651756097078 -0.013581535743139927 0.011191410586834654 +340 0.0005155521625423603 -0.003066135423754587 -0.005507656172976111 +464 -0.013672365051519688 0.006462804234922297 0.0034084160890599114 +343 0.006296604556438187 -0.004345465035479592 -0.002148122930183059 +345 0.012407457872537 -0.002470006777829203 -0.017291130429046578 +218 -0.015256436367871109 -0.017127300174924556 0.013286905082506264 +344 0.006957172847952071 -0.005066948994127098 -0.0010697045913517173 +219 0.0129990390246623 0.01038063493403641 0.005896687981359087 +466 0.002244198202014901 0.00548664713748076 0.0017161884024748234 +552 -0.022571692032816285 0.003080463860301062 0.004147492761917047 +224 0.0030068463673795505 -0.0004210343710353578 -0.008435186117653032 +201 0.0002611282610589362 -0.02171208956219141 0.03614342720217159 +170 -0.004091015625502559 0.006132229043273037 -0.007894232048875658 +16 0 0 0 +364 -0.0015161431784151442 -0.0016413835416760833 -0.00011269983298135968 +595 0.0004009832164706928 -0.005943467092534516 -0.00021490750932348881 +293 0.0029792186491364907 -0.00951830053221831 0.009805396617398226 +565 -0.0020216291381893706 0.0005759466603249998 0.0037816069669276407 +294 0.006110145852875226 -0.011587409875187532 0.014746336149031355 +453 0.010684183447769217 0.00966936228778118 0.01067799815316271 +310 0.0013110820976444488 6.690346346024489e-05 -0.0013484122248995742 +312 0.0021350124964415944 -0.009300676520635393 -0.017126176751746602 +328 -0.0012173744274507857 -0.0010004333693518076 7.454356672613982e-05 +329 -0.004393989551355606 -0.0006342382009824402 0.025248414291071577 +330 0.003200826537968669 0.006262041666898172 -0.007660542795091789 +454 -0.001848413897192655 -0.006087838419291344 -0.00212182078058685 +455 0.002625640706938784 -0.005389333951319389 0.005133907982892303 +456 0.006533480317251084 -0.010660519588964945 0.006259950572557032 +292 0.0025205821997437323 0.0005728266872274269 -0.0031633541265021726 +191 0.016238306710869115 -0.003915115089834756 0.0017136737961342124 +239 0.00990944273613697 0.02760052218964869 0.011501959077712662 +176 -0.003812401466461981 0.00870460277141486 0.0014222213445986018 +222 -0.00575985861173191 0.022102253315148642 0.02527855635069059 +346 0.0011312225860331724 -0.0012039193200392066 -0.004868828659936997 +347 0.0022739232260907067 -0.011436140880903854 0.013284463507981098 +490 -0.0005595459079784365 -0.006269611312179471 0.0067393847431723 +7 0 0 0 +23 0 0 0 +326 0.0012996293407948924 0.008854456872801352 -0.005816613812790807 +451 -0.0028561369319889804 -0.0017465825473428813 0.008900668566522418 +6 0 0 0 +325 0.0010562870027208723 0.0034255062969131894 -0.0006172205493860827 +452 -0.009426612957814726 0.015699509362869738 0.009239585598848264 +348 -0.013065067399225125 -0.0011186833550731684 -0.01072093470053397 +472 -7.897472416050894e-05 0.0031805716301914226 -0.007784430712320418 +473 -0.006914952611644003 0.002498006849629822 -0.0006741048128127044 +474 -0.0022767631580318 -0.004582678763273538 -0.013994347301896512 +8 0 0 0 +22 0 0 0 +15 0 0 0 +366 -0.007893398177358455 0.015115361966491036 0.009170509752392673 +427 -0.0003444825785329123 -0.007337801801584954 -0.0009778496983795068 +428 0.001284241023354871 -0.013260102504623554 -0.021443246975242775 +491 -0.001767046133691502 -0.006564287081459821 0.023503882347904403 +420 -0.003509122175633548 0.01305155283816234 0.004947689893280669 +73 0 0 0 +74 0 0 0 +75 0 0 0 +81 0 0 0 +82 0 0 0 +83 0 0 0 +89 0 0 0 +90 0 0 0 +91 0 0 0 +44 0 0 0 +620 -0.018208136394152405 -0.01636478757026537 0.005723871336844999 +431 -0.005947889870410918 0.00044174663691606093 0.006557506419947902 +119 0.024721347844244186 0.008261586757785296 0.00907322934727056 +76 0 0 0 +77 0 0 0 +84 0 0 0 +85 0 0 0 +92 0 0 0 +93 0 0 0 +125 0.00376014626516738 0.002210168316563869 0.002298583773418513 +639 0.022515309952399035 0.009411637442127493 -0.008062907963212114 +621 -0.006374910185946932 0.00955951852607432 0.003250334549828182 +173 -0.021441066526937017 0.008981863969610688 0.01224124107433771 +475 0.004198954420745654 0.00028100082518072285 9.383026152395088e-05 +495 -0.004241287562035139 -0.005785104432022318 0.000523166704738585 +493 9.348630210513032e-05 -0.006284687922454231 -0.003701310284386629 +511 0.0007148304951871003 0.004802516087996348 -0.006923741019514223 +619 -0.002075393845858219 -0.003045847479122124 -0.001524738632164393 +118 0.00683188131992754 0.003668598221419104 0.006404555705525047 +518 0.0007042053936607947 0.0037009655583541416 0.006413238235319736 +643 -0.0004247381946310078 -0.0020119972122199944 0.003487618986222057 +645 -0.0048948895131701985 0.012363718645768199 -0.00928544818799057 +120 -0.010236314365806192 0.0022623366455210496 0.017281073956898166 +121 -0.001238562526158577 0.001104413566869127 0.005942347097054137 +476 0.012182201173028576 -0.004728148764198684 0.046347192725480664 +514 0.0022983792918737627 0.0014437839560773938 0.0036109547751728994 +515 -0.019172556612093973 -0.0016311268294803955 0.03216642670953416 +503 -0.0069105541563097604 -0.015249937977793143 0.0052637590343377815 +644 -0.010719473881067676 0.0037551606817486853 -0.0029346406103394162 +269 -0.004657911325433949 -0.003131957474482315 -0.011666276096979261 +717 -0.007598678858223351 0.0022229145917488594 0.005743247797030988 +141 -0.005265179044891148 0.002032989406198283 -0.015312221016573192 +614 -0.009219001917256551 0.005407772759963249 -0.0029756043481738784 +607 -0.0022318262514579175 -0.0013437454041061285 0.0034819193316852786 +263 -0.0031337390415979646 -0.0155076302314032 0.01168936778694652 +517 -0.004222729742737883 -0.0015412935817472574 -0.000744868553385778 +519 -0.017834616810459846 -0.005708672219139421 -0.013654944035195295 +650 0.016098074211762008 0.0008317702866467745 -0.0070629490018340796 +107 -0.013373872234929177 0.015550080911235302 0.000476694292789935 +622 0.0049167825063810506 -0.0019646746434102656 -0.0004138217494473092 +715 -0.0018479214618609496 -0.00040031683451092646 -0.0013844650938375396 +391 -0.0037858640614263014 -0.005495674469386023 0.0021697837969133988 +361 0.005936878618776804 -0.0060340273998497115 0.005302669782661007 +153 0.009350169255480476 -0.010095254447887305 -0.00021295408316436036 +268 0.00016309797421927704 0.001379673676436866 -0.0021059918993536083 +657 0.00797165705335179 -0.006626095212976235 0.002974029917145391 +494 0.001148355736449653 0.0036909034525013456 -0.02786109619932466 +502 -0.004711785614046966 -0.0032981402250937784 0.0026900818002181955 +134 -0.006372075048389165 -0.0010597064275151555 0.032493616061931636 +135 0.012441386237017894 -0.006758027851359993 -0.01093456688317497 +152 -0.022588064290988544 0.00886667288447623 0.008279189884228825 +133 0.002463951400607453 0.003811161478952187 -0.0012055726394182785 +529 0.0011447538436001538 -0.0013248981429381148 -0.002691009401164175 +530 -0.012741704403083629 -0.027504642134544018 -0.015426630500459096 +637 0.0027262342808301856 0.003417848363641975 -0.006980165287281133 +638 0.013337262716142521 -0.004492669699077519 -0.004062142879164206 +640 0.007343968608723324 -0.0017944529921501285 -0.0034872458540833894 +641 -0.0028237421192901504 -0.0005068756058293126 -0.00012747376583541385 +642 0.011814745657888743 -0.0024688971419446265 -0.005000832651892577 +655 0.001627324356529187 -0.004482993080078517 0.000808734460992604 +658 0.004840904310899923 -0.0002765015435387103 0.007219927125603741 +659 0.0024123333017816587 -0.0008252092073925724 -0.012010079098928605 +660 0.006288891732283029 -0.00028621221044029935 0.01017292418448191 +662 0.00042341404767420534 0.004858867208208743 -0.0025731587003398884 +151 -0.007481030563338991 0.0042940249428423454 -0.004138492391462666 +663 0.005706463166013832 -0.005134244724722354 0.01594300643902129 +661 -0.0004834562555479056 -0.0025170072941784116 0.0073306297338467516 +531 0.031627589352554296 -0.006929272021968033 0.005196746262871528 +534 -0.005636380674033646 -0.017477660905108702 0.01583147823999135 +413 0.011989224814873311 0.005002345322903481 0.013751203817150124 +381 -0.004459092376404236 -0.0050190034979797115 0.004721607878339021 +270 0.005446123992737857 -0.006947452847301007 -0.0011899546998997536 +154 0.0014172994016706149 -0.0033421080124123727 -0.0015470569232849327 +122 0.0012375927763631494 -0.011554657426034941 -0.00867285237322033 +516 0.005271954403411166 -0.0006481966287883752 2.6812633073704167e-05 +124 -0.003754526570879154 0.004041520353836536 -0.005167280520955695 +624 0.0024348446654673915 -0.011410862941411113 -0.008303184235291208 +625 -0.0004068734138486256 -0.0024077577282892604 0.0022463102414447145 +626 -0.007682544160104886 -0.002868348151472689 0.00804166794901491 +627 0.0055724420133055515 0.004831244270910297 0.0046825571947010595 +608 0.00904173534830472 -0.009299908749254992 -0.0015525376365491403 +377 -0.00531515207456117 -0.0003352083340617145 0.008223828332509607 +376 -0.0009132380668384925 -0.0032370142105785536 0.00992592406478607 +378 -0.013491407056118503 0.0024474110437273286 0.002430454281174073 +520 0.0029167102188674267 0.004050524998543141 0.006939254966538985 +521 0.0022255023178218117 -0.02084496868773591 0.011833792105899514 +522 -0.0021754058603597605 0.0036037952857744453 0.0025967549113268523 +647 0.01725665770888626 0.00025618854275232135 -0.004371903448504005 +126 -0.001396907296059675 0.005466933409078029 0.0035397437049442407 +501 0.0020137754495144103 -0.020560911871733662 -0.01930454581812061 +488 -0.013992558802764758 0.007135432550136229 0.019787547208033468 +609 -0.017041781544970595 0.00036953593881046697 0.004304666740455674 +603 0.004263060495225364 -0.0025041678366056743 -0.010088965858195222 +532 0.005236924638911616 -0.007374489144160924 -0.0014032938229172295 +537 -0.017202023712709204 0.029719340341784754 -0.0001481723823312356 +504 -0.006971669314112023 -0.003848037969451082 0.0024547071196951505 +646 0.0044060144797029716 0.00577277956175787 -0.0030311005618453533 +687 0.0029962372948669712 -0.00155376186210015 -0.007657774465803122 +146 -0.03168109088721509 -0.02093657671158045 -0.017430408359101673 +380 -0.004133070694344155 -0.023055369912419688 -0.0014608727321119676 +535 -0.0019018091647201572 -0.0027235789258337646 -0.003324715729768929 +536 -0.0033834221238263347 -0.00067664325480983 -0.0006818536684817816 +430 0.004878146505217018 -0.0005940118847220873 0.005061681229495326 +414 0.009784993638197226 0.007374598436598287 0.010895484131701147 +648 -0.01014869121728334 -0.004687101881511565 0.00012350285801009922 +664 0.002748144375770029 0.0026032090370390745 0.0006037618161079066 +665 0.009943417517975731 0.0332171540183687 -0.0010053949941968945 +666 -0.005204025673966604 0.005025169562373523 0.004088145103267187 +542 -0.0022871310890402786 -0.009483481838644251 0.039038521784662036 +668 -0.002010112042516619 -0.007839349380007939 -0.00012454825026704687 +526 0.004326170016375512 0.0006520283975472351 0.0013000875562086272 +649 0.006012493069566269 -0.0015705317570891995 0.0034453344311484997 +541 0.002417893801822803 0.004953709857499055 -0.0011048403053594347 +543 -0.006442682634596088 0.005483003196258186 0.010230143159271812 +651 5.851794152747379e-05 0.012096329874549444 -0.010504851962064576 +669 0.024559577529554937 -0.02670525413183529 -0.0006593803661219533 +149 0.005052614171349867 -0.016830388877089375 0.0024188350050921904 +379 -0.003329235103452224 -0.003013750877183804 -0.00414482381276264 +106 -0.0049276728477274205 0.0020773265341779523 0.0005342135720872503 +156 0.011327442559981039 -0.0005332212400849956 -0.021654626738406565 +487 -0.0005451479807017357 0.007096858276882301 -0.001211298812154257 +611 -0.021960485084400877 0.000683067126064194 -0.004807437709543965 +685 0.0054027121027461185 -0.0020836334168693686 -0.002685455633487145 +630 -0.008822313536481361 -0.004845697584124013 0.008618144649607666 +116 -0.0018481495655891557 0.003288677485939496 -0.01203827513108651 +510 -0.032301904778016324 0.03266518347502736 -0.010524750287846713 +507 0.01026908212324152 -0.003027423216310613 -0.01339935367398813 +509 -0.012123990818602938 -0.010921177126252526 -0.01085126541231615 +610 -0.0018536013560426982 0.0019641033697579227 -0.005272154166504122 +524 0.0025126158748017494 -0.011386391297567867 0.010899004749210146 +131 0.013925658871889492 0.01863780388390729 -0.012821208349513039 +506 0.002798516823548351 0.015462304271963446 -0.01979101766979263 +489 0.018551315704509276 0.005579119527076206 -0.011093956324755981 +631 -0.00213217437222647 0.007731605502977125 -5.708562343811414e-05 +632 -0.016010702686313313 0.003032381845605066 -0.00016432383794700518 +634 0.0024411605772810775 0.004856927419569082 0.0033624694714103616 +635 -0.004217713091711203 -0.0006169550158152153 -0.004853283570280516 +636 -0.0053752383344858115 -0.008175815179565843 0.007388678311008392 +523 -0.0016045268195455857 -0.0005433703477544734 -0.003812789038354003 +505 0.001251686805937162 -0.00358100309984456 -3.8168118482729824e-05 +508 -0.0024350068053152494 0.0035688590735699585 0.005610509346455448 +412 -0.00022593016936094175 0.0005569123807237037 0.0038001159805280626 +45 0 0 0 +29 0 0 0 +37 0 0 0 +363 -0.011964726025106835 0.002432278732280362 0.006076559669061676 +628 0.0008364492726496631 0.0005774360309607983 0.007909972736732423 +527 -0.001525771217934407 -0.00663724790475885 0.012008066487640058 +667 -0.0045753428553175395 -0.005313933751263768 -0.0015147195617714066 +145 0.0030897905888227985 -0.0005725135249566786 0.00520175803564182 +629 -0.011793195181352264 0.02610618463611397 -0.0011129416403377994 +525 -0.022420806448309998 -0.022996093757596713 0.015105277643548942 +500 -0.004188727339036917 -0.019564310174631772 -0.020323389800299303 +545 0.011136831496755695 0.002952182290516256 0.0005637316061665317 +28 0 0 0 +633 -0.02960278783895163 0.018048758207440972 -0.02963510627545276 +497 -0.023527326541010283 0.0208568120165425 0.005687411209495451 +671 0.0023108185550983966 0.012908244135685297 -0.004180129514014733 +670 0.006465909962417871 -0.006214105452110799 -0.005385675478166314 +653 0.0005457560351153357 -0.005732993238943683 -0.023978676323071678 +147 0.0009543364532176592 -0.0005669825788105438 0.005288972927967759 +652 -0.0020809963981695528 0.004201341752230154 -0.0037182713882387905 +654 -0.009705191096746496 0.00993785708033847 0.0002582345573881968 +393 0.00014977536429222813 -0.016157391113790023 -0.005007396695791053 +544 -0.0007464408473846617 -0.0025274118460750926 -0.0003262638562050646 +546 0.0007482564200138334 -0.005738810532314362 -0.0062078641022687555 +416 -0.005855847757407431 0.007349365261206047 0.00415066632160293 +34 0 0 0 +35 0 0 0 +41 0 0 0 +33 0 0 0 +42 0 0 0 +27 0 0 0 +26 0 0 0 +25 0 0 0 +43 0 0 0 +36 0 0 0 +137 -0.01807013140598822 -0.002206759585164299 -0.036470288931081965 +513 -0.016634738109428417 0.007838661917040123 -0.009140157784366151 +139 -0.008963827399168726 0.005060486629698257 0.00333600682613603 +672 -0.007607605155630691 -0.01456975078088874 -0.012598143794359841 +533 0.010617840224744613 -0.002777497773010237 -0.011197727642067286 +78 0 0 0 +79 0 0 0 +86 0 0 0 +87 0 0 0 +94 0 0 0 +95 0 0 0 +585 0.005605752859388974 -0.010142526760761094 0.03727990234950359 +48 0 0 0 +80 0 0 0 +88 0 0 0 +96 0 0 0 +189 -0.0066352869894572225 0.00024265908697179757 -0.008154695950714637 +605 0.002150142719826519 0.005331502869050656 -0.010584005781348844 +185 -0.00394193505540348 -0.006302674919906286 0.0014182920779830875 +675 -0.0005415046250754363 -0.0017158463927637298 -0.004355857781192924 +583 0.0023731378694094554 -0.000649623218570412 0.008513088612560797 +549 0.011016693797627375 0.028511018549521542 -0.0014920139544244682 +673 0.002569391041646503 -0.002953874401980327 -0.0027483375366729244 +691 0.0019340855980439994 0.00033670287218828305 -0.002850215590991099 +693 -0.010246446382756453 -0.01757295812509763 0.008367118291182465 +547 -0.0014747922178342681 -0.0011664893969373193 -0.0006060539317155183 +548 0.011682558902498964 -0.025233418213810175 -0.007658772705311056 +551 0.001350153023456467 0.00022279379737177285 -0.025939803341241217 +570 -0.005131884633683738 -0.021071670171871774 0.006468261966454463 +674 0.005944688363822889 -0.007207689386530191 0.021342103282829653 +676 -0.0019462920513466076 0.004407790321609089 -0.0015620365885013808 +677 0.006715775323883596 0.002944114457622447 0.014542952323996265 +678 0.0002778779391768264 0.006297772905186056 -0.026565168661761288 +692 0.009268689356589333 0.014731647385365748 -0.006025572741709686 +694 -0.003961631162606319 -0.0013806200811878214 -0.0008172345637775933 +695 -0.007667502982246405 0.0030490460467132675 -0.001088289569629578 +696 0.008468651107356945 0.0005907165859080803 0.003859911467064242 +553 -0.00047604019730420217 -0.0006315561767963964 0.0010024200881167521 +698 -0.0020717511399018134 0.010002747658628137 -0.006096442037637733 +584 -0.016580812361012713 0.012511158150068527 0.0008511110478859006 +481 0.0005948587232964445 0.001010539994860156 -0.007444450185793666 +194 0.00014052509066614157 -0.005196283194920727 0.006780792332164644 +697 -0.0013789642648926277 0.0036795675853680348 -0.0024305337069368458 +686 0.004822045126303928 0.0025096147997947602 0.0007703584546722453 +555 0.017189293067074386 -0.0008847199219453851 -0.0032260555994972286 +40 0 0 0 +572 0.011836142232616654 0.016930917726623914 0.0054145245254328695 +477 -0.0023182861715013415 0.0010624526210653072 0.012226130441533083 +571 0.003380622710715224 0.0006712391588360674 -0.0004913569633634105 +617 0.014810694316454103 0.004926610428412379 0.01925291118216818 +207 -0.007590085971879394 -0.014703490219233173 -0.010578241152045156 +604 -0.002926332808910417 0.006517063988398441 0.006874331039776373 +606 -0.006711013892835755 0.0017538833490847003 0.01109190361787526 +350 -0.00791114708309395 -0.018510770014932714 -0.004815453363899084 +710 -0.0064427786804492244 0.007900704613316586 -0.004014534901828139 +711 -0.013659088845790259 -0.006353686711340907 0.014745080974907615 +187 0.009196546495462546 -0.0006436048533352592 -0.0018751511705191544 +568 0.00351338252872656 -0.000468923257277023 -0.0006920890468333366 +482 -0.004913558802329553 -0.004280135253253908 0.00633294127596329 +188 0.004540426836736988 -0.007097215069674514 -0.005805835450005286 +709 0.001925645254538778 0.0014380880583831747 -0.004930937336155932 +478 0.0010797933791857736 0.0025266095076614922 -0.004986957491084801 +712 0.0005301580092307634 0.007828721030901242 0.0017280526627498729 +713 0.00023845816884353593 0.00504266543517644 0.007841645749689477 +714 -0.018116868406079928 -0.001053639709884517 -0.015294935527253715 +208 0.0022479985060981176 -0.0014519851635401385 -0.004570555125416719 +699 -0.0011994729208893943 0.003087096701170354 0.00206825365641926 +479 0.017036064852232736 -0.008815895837007535 -0.023904033427918216 +210 0.0037407613528955865 0.0035360396633836435 -0.0024281379564064314 +602 0.0075099029288607545 0.00248142438114653 0.007042328134206083 +480 0.003606247195743753 0.0011315638494953186 -0.012091977160979392 +557 0.01799594238988353 0.0010119724239675647 0.001713299481119473 +213 8.142606683067033e-05 0.0018049324742849876 0.001148356581106332 +349 -0.0011981816039239028 -0.004139945811682951 -0.0012467355401650265 +601 0.004020873251639709 0.004241016472708001 0.002563273451182537 +211 0.0011912649917131756 0.0025005537615394933 0.0008960825230590572 +716 -0.001685592699635269 0.0011640365948642592 0.005066042148810565 +30 0 0 0 +690 -0.008258764473906464 -0.015659920241712057 -0.002035366592494931 +434 -0.015147993202601842 -0.008391160991570657 -0.00133837501844855 +540 -0.01070956669106575 -0.0009034196831042784 -0.005091934969456589 +680 0.013411542345369893 -0.01224680766604758 -0.007693285108323204 +573 0.001125174289584756 -0.017065312099830133 -0.010847897177433372 +206 0.0062792678126364024 -0.004920618337422227 0.015385751090398978 +679 0.003851754102318177 0.00014121255786835605 -0.004367045609373842 +576 -0.006859141335892818 0.013475175880741354 0.019291224624438694 +681 -0.0010155508996575868 0.011841568778219715 -0.00038192110946660176 +682 -0.0033380546085591783 0.0029410572005993175 -0.0007868866109149822 +683 -0.0171452686314646 0.02080647918819655 -0.02494529463235201 +684 -0.011351263294960242 0.003268021853032265 -0.016211941153317734 +196 -0.0011300226991530493 -0.0007258875281920439 -0.0011053990262034088 +198 0.0028989491941254233 -0.0011295577630334667 -0.00010020171672689361 +574 0.010329552867290752 0.002573691251766472 0.0016334142849459905 +432 0.011312228177704555 -0.00040924084403576723 0.0030694280639071577 +197 -0.004165427208999216 0.003771685867294356 -0.03660165966181166 +722 -0.000648338729561578 -6.679565631513779e-07 0.0002618774194506748 +161 0.01798142895193523 0.0020571194054308513 0.016038128295544164 +721 -0.0003920833445493075 -0.0011075276896324445 -0.003149117714578652 +160 0.0012524360201935448 5.8385753508661056e-05 0.002094782880919037 +704 0.008829418227424335 -0.014756395405287588 0.01498750148919691 +703 -0.0008587083092325698 -0.007226841972489215 0.0002064836414122881 +723 -0.0005749020356670792 0.0016998018058745072 0.00022422970383630792 +200 0.031146059326807876 -0.005877684895195546 0.001580489200077874 +38 0 0 0 +471 -0.002412379012618108 0.002859766574078075 0.004225099064154239 +616 0.0015868289649342174 -0.0007154336713301255 -0.0018420555864635155 +31 0 0 0 +558 0.0010017769942429495 0.0028748423486200923 0.0029530298960570274 +209 -0.011547394561373242 0.021473730893253655 -0.010467996459002728 +483 -0.0011483108990157148 -0.01775883938741853 -0.006642617216380664 +579 -0.004400467068591756 -0.004727848404823099 -0.017194937494532058 +656 -0.009323761806544907 -0.00582840436180242 -0.033605778143606546 +46 0 0 0 +484 -0.0020388281695896135 -0.0013637084095724807 0.0019497022250018388 +615 -0.0005601690839121759 0.006209015490306886 0.014137268169018329 +701 -0.0037809143963855028 -0.003501975583518593 0.00300447780062066 +486 0.007618907754277993 0.0056944910767996034 0.004370581324618608 +700 -0.0046612326215811906 0.0009000392673902709 0.00237179703020734 +702 0.00448352509306984 0.007779674344946335 -0.009149493097928028 +593 -0.0015941057753356155 0.014578054449146513 -0.01738511514299848 +718 -0.001339803046916652 -0.0010137548764877385 -0.0018600250448437623 +719 -0.0041288597035935 -0.006640144853355004 -0.0035284383329067825 +720 -0.00828186051332812 -0.003436384759437303 -0.0014846993389069985 +613 -0.0037516874821196923 0.0008032080553151717 0.0030109183271456704 +600 0.0015665561791694254 -0.006074023336013163 -0.011441956255009576 +485 -0.008520355267151752 0.019106678931441436 0.0032307036002293785 +725 -0.018859767151860926 -0.01208741183555489 -0.00951241905524379 +592 0.002697557535774519 0.0016443361599495928 9.002589005331697e-05 +220 0.001644969207029382 0.004361924552822558 0.006117664057252492 +577 -0.0004582090954931718 0.0006102606399476886 0.001105420556781803 +470 -0.0062849098259277645 -0.004641593303172789 -0.0046067188749420885 +171 0.0008636188674837649 0.017476464872149055 -0.002555116980647831 +724 0.0008894985940205911 0.0005834133379995128 -0.0014610090405300256 +550 0.0006896316396178657 0.0009143133831033406 -0.0019354784779200378 +169 -0.0002215997710391417 0.006458478087593333 -0.0016723848777001873 +469 -0.0069673897228099664 -0.004505481750238904 0.001926603834355063 +47 0 0 0 +559 -0.007572098022459057 0.0034063887331657805 0.00015950666002367757 +39 0 0 0 +564 0.0034478240574839806 0.000977567496075238 0.011370397005249621 +186 0.003307811358636357 0.0024005138798181575 -0.0058730609160886635 +562 0.00040069870388580273 0.000886838393600568 0.0035753479994040382 +563 0.0009622848371929641 0.0012466569522117086 0.005071231855063573 +580 -0.0008152164468272666 -0.002281961916018554 -0.00340540442179655 +581 0.008664526206245351 -0.003613339366634202 -0.013849180825236965 +688 -0.0007737260024269964 -0.0021109727959323214 -0.0028686896014043996 +689 0.01184941834518123 -0.006439014918069607 -0.01795905690960574 +435 0.009487793849062317 0.008077776372612812 -0.003825190621775344 +202 0.0018611302621018263 0.001042316838629044 0.0007915024393209877 +204 -0.010242398098511275 -0.00771714677539368 0.027343526182630737 +705 0.00415826355703768 -0.027463756463854967 0.007706011293389328 +582 0.010940242714444454 -0.010471175449668265 0.010439795907298415 +554 -0.0033734100682732042 -0.0007050045550250698 -0.004141877996055899 +184 0.00954182511554633 -0.0030756224799226724 -0.0028355764318479435 +203 -0.0004896914330753941 -0.010713189084407382 0.006448641517112284 +560 0.002811074841408279 -0.0031284342121008137 -0.01007923914596747 +32 0 0 0 +538 -0.0014460833289970435 0.007075092708989862 0.0025968213594936666 +114 -0.0012344875182377776 -0.013021613850333872 -0.01551117572690931 +599 -0.009486941638727845 -0.0017646423596571908 -0.0022232385848233835 +594 -0.019757837691149267 0.020460127715951404 0.007156004053852354 +618 -0.004117904664209404 -0.007129562600878678 -0.008167279502096409 +578 -0.013243998449868415 -0.007568779562563151 0.01379750777771968 +598 -0.00894340226085164 -0.0011454896373641877 -0.002227227468484275 +221 -0.013387813082014567 -0.0036068811506120473 -0.0033536813661818755 +726 -0.010423730766968823 -0.005077846457722445 -0.006545701921982794 +113 0.009053197578918851 0.02806209034029739 -0.0038652610892807708 +112 -0.003598585058077683 0.010797122998889751 0.004964748066429578 +706 -0.009230566219107101 -0.00019179937588319708 -0.005897156455629181 +707 -0.0186040820527444 0.0030286498517162874 -0.0027171798388519654 +708 0.0005970323997883637 -0.011672330092629255 0.008809894454709295 +172 -0.003969055528345896 0.004616418314061088 0.006244115578595084 +162 0.003904417477970175 -0.02252457850998945 -0.0007511502242897511 +353 -0.004813423204096107 -0.0019593482773551324 -0.006475119883457997 +433 -0.005628582184186051 0.0004681681306527026 0.0048841056399051425 +205 -0.0025719666702933358 -0.0031601909448657315 -0.00034608644411026354 +556 0.006202519606328875 0.003259859743020484 -2.0384837307811827e-05 +575 0.009296645991498211 0.0182167459357296 -0.03573768643543234 +539 0.03550184814237637 0.005236622576246589 0.006877977306907682 +311 -0.005741616851658933 -0.006067351756425933 -0.004516807655761214 +623 0.00555361268890784 -0.038847648348719455 0.016774210292904084 + +Bonds + +1 1 277 278 +2 1 277 279 +3 1 421 422 +4 1 421 423 +5 1 241 242 +6 1 241 243 +7 1 367 368 +8 1 367 369 +9 1 244 245 +10 1 244 246 +11 1 355 356 +12 1 355 357 +13 1 370 371 +14 1 370 372 +15 1 115 116 +16 1 115 117 +17 1 337 338 +18 1 337 339 +19 1 388 389 +20 1 388 390 +21 1 499 500 +22 1 499 501 +23 1 235 236 +24 1 235 237 +25 1 385 386 +26 1 385 387 +27 1 259 260 +28 1 259 261 +29 1 289 290 +30 1 289 291 +31 1 262 263 +32 1 262 264 +33 1 280 281 +34 1 280 282 +35 1 406 407 +36 1 406 408 +37 1 403 404 +38 1 403 405 +39 1 409 410 +40 1 409 411 +41 1 283 284 +42 1 283 285 +43 1 298 299 +44 1 298 300 +45 1 247 248 +46 1 247 249 +47 1 232 233 +48 1 232 234 +49 1 103 104 +50 1 103 105 +51 1 250 251 +52 1 250 252 +53 1 373 374 +54 1 373 375 +55 1 265 266 +56 1 265 267 +57 1 229 230 +58 1 229 231 +59 1 496 497 +60 1 496 498 +61 1 358 359 +62 1 358 360 +63 1 253 254 +64 1 253 255 +65 1 100 101 +66 1 100 102 +67 1 178 179 +68 1 178 180 +69 1 286 287 +70 1 286 288 +71 1 394 395 +72 1 394 396 +73 1 166 167 +74 1 166 168 +75 1 397 398 +76 1 397 399 +77 1 157 158 +78 1 157 159 +79 1 256 257 +80 1 256 258 +81 1 382 383 +82 1 382 384 +83 1 136 137 +84 1 136 138 +85 1 127 128 +86 1 127 129 +87 1 271 272 +88 1 271 273 +89 1 415 416 +90 1 415 417 +91 1 400 401 +92 1 400 402 +93 1 274 275 +94 1 274 276 +95 1 130 131 +96 1 130 132 +97 1 418 419 +98 1 418 420 +99 1 109 110 +100 1 109 111 +101 1 142 143 +102 1 142 144 +103 1 163 164 +104 1 163 165 +105 1 148 149 +106 1 148 150 +107 1 295 296 +108 1 295 297 +109 1 199 200 +110 1 199 201 +111 1 316 317 +112 1 316 318 +113 1 424 425 +114 1 424 426 +115 1 439 440 +116 1 439 441 +117 1 445 446 +118 1 445 447 +119 1 460 461 +120 1 460 462 +121 1 313 314 +122 1 313 315 +123 1 442 443 +124 1 442 444 +125 1 223 224 +126 1 223 225 +127 1 352 353 +128 1 352 354 +129 1 331 332 +130 1 331 333 +131 1 334 335 +132 1 334 336 +133 1 457 458 +134 1 457 459 +135 1 319 320 +136 1 319 321 +137 1 97 98 +138 1 97 99 +139 1 586 587 +140 1 586 588 +141 1 226 227 +142 1 226 228 +143 1 193 194 +144 1 193 195 +145 1 190 191 +146 1 190 192 +147 1 238 239 +148 1 238 240 +149 1 304 305 +150 1 304 306 +151 1 301 302 +152 1 301 303 +153 1 322 323 +154 1 322 324 +155 1 448 449 +156 1 448 450 +157 1 181 182 +158 1 181 183 +159 1 307 308 +160 1 307 309 +161 1 175 176 +162 1 175 177 +163 1 214 215 +164 1 214 216 +165 1 463 464 +166 1 463 465 +167 1 589 590 +168 1 589 591 +169 1 217 218 +170 1 217 219 +171 1 436 437 +172 1 436 438 +173 1 340 341 +174 1 340 342 +175 1 343 344 +176 1 343 345 +177 1 466 467 +178 1 466 468 +179 1 364 365 +180 1 364 366 +181 1 595 596 +182 1 595 597 +183 1 565 566 +184 1 565 567 +185 1 310 311 +186 1 310 312 +187 1 328 329 +188 1 328 330 +189 1 454 455 +190 1 454 456 +191 1 292 293 +192 1 292 294 +193 1 346 347 +194 1 346 348 +195 1 490 491 +196 1 490 492 +197 1 451 452 +198 1 451 453 +199 1 325 326 +200 1 325 327 +201 1 472 473 +202 1 472 474 +203 1 427 428 +204 1 427 429 +205 1 475 476 +206 1 475 477 +207 1 493 494 +208 1 493 495 +209 1 511 512 +210 1 511 513 +211 1 619 620 +212 1 619 621 +213 1 118 119 +214 1 118 120 +215 1 643 644 +216 1 643 645 +217 1 121 122 +218 1 121 123 +219 1 514 515 +220 1 514 516 +221 1 607 608 +222 1 607 609 +223 1 517 518 +224 1 517 519 +225 1 622 623 +226 1 622 624 +227 1 715 716 +228 1 715 717 +229 1 391 392 +230 1 391 393 +231 1 361 362 +232 1 361 363 +233 1 268 269 +234 1 268 270 +235 1 502 503 +236 1 502 504 +237 1 133 134 +238 1 133 135 +239 1 529 530 +240 1 529 531 +241 1 637 638 +242 1 637 639 +243 1 640 641 +244 1 640 642 +245 1 655 656 +246 1 655 657 +247 1 658 659 +248 1 658 660 +249 1 151 152 +250 1 151 153 +251 1 661 662 +252 1 661 663 +253 1 154 155 +254 1 154 156 +255 1 124 125 +256 1 124 126 +257 1 625 626 +258 1 625 627 +259 1 376 377 +260 1 376 378 +261 1 520 521 +262 1 520 522 +263 1 532 533 +264 1 532 534 +265 1 646 647 +266 1 646 648 +267 1 535 536 +268 1 535 537 +269 1 430 431 +270 1 430 432 +271 1 664 665 +272 1 664 666 +273 1 526 527 +274 1 526 528 +275 1 649 650 +276 1 649 651 +277 1 541 542 +278 1 541 543 +279 1 379 380 +280 1 379 381 +281 1 106 107 +282 1 106 108 +283 1 487 488 +284 1 487 489 +285 1 685 686 +286 1 685 687 +287 1 610 611 +288 1 610 612 +289 1 631 632 +290 1 631 633 +291 1 634 635 +292 1 634 636 +293 1 523 524 +294 1 523 525 +295 1 505 506 +296 1 505 507 +297 1 508 509 +298 1 508 510 +299 1 412 413 +300 1 412 414 +301 1 628 629 +302 1 628 630 +303 1 667 668 +304 1 667 669 +305 1 145 146 +306 1 145 147 +307 1 670 671 +308 1 670 672 +309 1 652 653 +310 1 652 654 +311 1 544 545 +312 1 544 546 +313 1 139 140 +314 1 139 141 +315 1 583 584 +316 1 583 585 +317 1 673 674 +318 1 673 675 +319 1 691 692 +320 1 691 693 +321 1 547 548 +322 1 547 549 +323 1 676 677 +324 1 676 678 +325 1 694 695 +326 1 694 696 +327 1 553 554 +328 1 553 555 +329 1 481 482 +330 1 481 483 +331 1 697 698 +332 1 697 699 +333 1 571 572 +334 1 571 573 +335 1 604 605 +336 1 604 606 +337 1 187 188 +338 1 187 189 +339 1 568 569 +340 1 568 570 +341 1 709 710 +342 1 709 711 +343 1 478 479 +344 1 478 480 +345 1 712 713 +346 1 712 714 +347 1 208 209 +348 1 208 210 +349 1 349 350 +350 1 349 351 +351 1 601 602 +352 1 601 603 +353 1 211 212 +354 1 211 213 +355 1 679 680 +356 1 679 681 +357 1 682 683 +358 1 682 684 +359 1 196 197 +360 1 196 198 +361 1 574 575 +362 1 574 576 +363 1 721 722 +364 1 721 723 +365 1 160 161 +366 1 160 162 +367 1 703 704 +368 1 703 705 +369 1 616 617 +370 1 616 618 +371 1 484 485 +372 1 484 486 +373 1 700 701 +374 1 700 702 +375 1 718 719 +376 1 718 720 +377 1 613 614 +378 1 613 615 +379 1 592 593 +380 1 592 594 +381 1 220 221 +382 1 220 222 +383 1 577 578 +384 1 577 579 +385 1 724 725 +386 1 724 726 +387 1 550 551 +388 1 550 552 +389 1 169 170 +390 1 169 171 +391 1 469 470 +392 1 469 471 +393 1 559 560 +394 1 559 561 +395 1 562 563 +396 1 562 564 +397 1 580 581 +398 1 580 582 +399 1 688 689 +400 1 688 690 +401 1 202 203 +402 1 202 204 +403 1 184 185 +404 1 184 186 +405 1 538 539 +406 1 538 540 +407 1 598 599 +408 1 598 600 +409 1 112 113 +410 1 112 114 +411 1 706 707 +412 1 706 708 +413 1 172 173 +414 1 172 174 +415 1 433 434 +416 1 433 435 +417 1 205 206 +418 1 205 207 +419 1 556 557 +420 1 556 558 + +Angles + +1 1 278 277 279 +2 1 422 421 423 +3 1 242 241 243 +4 1 368 367 369 +5 1 245 244 246 +6 1 356 355 357 +7 1 371 370 372 +8 1 116 115 117 +9 1 338 337 339 +10 1 389 388 390 +11 1 500 499 501 +12 1 236 235 237 +13 1 386 385 387 +14 1 260 259 261 +15 1 290 289 291 +16 1 263 262 264 +17 1 281 280 282 +18 1 407 406 408 +19 1 404 403 405 +20 1 410 409 411 +21 1 284 283 285 +22 1 299 298 300 +23 1 248 247 249 +24 1 233 232 234 +25 1 104 103 105 +26 1 251 250 252 +27 1 374 373 375 +28 1 266 265 267 +29 1 230 229 231 +30 1 497 496 498 +31 1 359 358 360 +32 1 254 253 255 +33 1 101 100 102 +34 1 179 178 180 +35 1 287 286 288 +36 1 395 394 396 +37 1 167 166 168 +38 1 398 397 399 +39 1 158 157 159 +40 1 257 256 258 +41 1 383 382 384 +42 1 137 136 138 +43 1 128 127 129 +44 1 272 271 273 +45 1 416 415 417 +46 1 401 400 402 +47 1 275 274 276 +48 1 131 130 132 +49 1 419 418 420 +50 1 110 109 111 +51 1 143 142 144 +52 1 164 163 165 +53 1 149 148 150 +54 1 296 295 297 +55 1 200 199 201 +56 1 317 316 318 +57 1 425 424 426 +58 1 440 439 441 +59 1 446 445 447 +60 1 461 460 462 +61 1 314 313 315 +62 1 443 442 444 +63 1 224 223 225 +64 1 353 352 354 +65 1 332 331 333 +66 1 335 334 336 +67 1 458 457 459 +68 1 320 319 321 +69 1 98 97 99 +70 1 587 586 588 +71 1 227 226 228 +72 1 194 193 195 +73 1 191 190 192 +74 1 239 238 240 +75 1 305 304 306 +76 1 302 301 303 +77 1 323 322 324 +78 1 449 448 450 +79 1 182 181 183 +80 1 308 307 309 +81 1 176 175 177 +82 1 215 214 216 +83 1 464 463 465 +84 1 590 589 591 +85 1 218 217 219 +86 1 437 436 438 +87 1 341 340 342 +88 1 344 343 345 +89 1 467 466 468 +90 1 365 364 366 +91 1 596 595 597 +92 1 566 565 567 +93 1 311 310 312 +94 1 329 328 330 +95 1 455 454 456 +96 1 293 292 294 +97 1 347 346 348 +98 1 491 490 492 +99 1 452 451 453 +100 1 326 325 327 +101 1 473 472 474 +102 1 428 427 429 +103 1 476 475 477 +104 1 494 493 495 +105 1 512 511 513 +106 1 620 619 621 +107 1 119 118 120 +108 1 644 643 645 +109 1 122 121 123 +110 1 515 514 516 +111 1 608 607 609 +112 1 518 517 519 +113 1 623 622 624 +114 1 716 715 717 +115 1 392 391 393 +116 1 362 361 363 +117 1 269 268 270 +118 1 503 502 504 +119 1 134 133 135 +120 1 530 529 531 +121 1 638 637 639 +122 1 641 640 642 +123 1 656 655 657 +124 1 659 658 660 +125 1 152 151 153 +126 1 662 661 663 +127 1 155 154 156 +128 1 125 124 126 +129 1 626 625 627 +130 1 377 376 378 +131 1 521 520 522 +132 1 533 532 534 +133 1 647 646 648 +134 1 536 535 537 +135 1 431 430 432 +136 1 665 664 666 +137 1 527 526 528 +138 1 650 649 651 +139 1 542 541 543 +140 1 380 379 381 +141 1 107 106 108 +142 1 488 487 489 +143 1 686 685 687 +144 1 611 610 612 +145 1 632 631 633 +146 1 635 634 636 +147 1 524 523 525 +148 1 506 505 507 +149 1 509 508 510 +150 1 413 412 414 +151 1 629 628 630 +152 1 668 667 669 +153 1 146 145 147 +154 1 671 670 672 +155 1 653 652 654 +156 1 545 544 546 +157 1 140 139 141 +158 1 584 583 585 +159 1 674 673 675 +160 1 692 691 693 +161 1 548 547 549 +162 1 677 676 678 +163 1 695 694 696 +164 1 554 553 555 +165 1 482 481 483 +166 1 698 697 699 +167 1 572 571 573 +168 1 605 604 606 +169 1 188 187 189 +170 1 569 568 570 +171 1 710 709 711 +172 1 479 478 480 +173 1 713 712 714 +174 1 209 208 210 +175 1 350 349 351 +176 1 602 601 603 +177 1 212 211 213 +178 1 680 679 681 +179 1 683 682 684 +180 1 197 196 198 +181 1 575 574 576 +182 1 722 721 723 +183 1 161 160 162 +184 1 704 703 705 +185 1 617 616 618 +186 1 485 484 486 +187 1 701 700 702 +188 1 719 718 720 +189 1 614 613 615 +190 1 593 592 594 +191 1 221 220 222 +192 1 578 577 579 +193 1 725 724 726 +194 1 551 550 552 +195 1 170 169 171 +196 1 470 469 471 +197 1 560 559 561 +198 1 563 562 564 +199 1 581 580 582 +200 1 689 688 690 +201 1 203 202 204 +202 1 185 184 186 +203 1 539 538 540 +204 1 599 598 600 +205 1 113 112 114 +206 1 707 706 708 +207 1 173 172 174 +208 1 434 433 435 +209 1 206 205 207 +210 1 557 556 558 diff --git a/examples/PACKAGES/electrode/piston/data.piston.final b/examples/PACKAGES/electrode/piston/data.piston.final new file mode 100644 index 0000000000..8549261a3f --- /dev/null +++ b/examples/PACKAGES/electrode/piston/data.piston.final @@ -0,0 +1,2128 @@ +LAMMPS data file via write_data, version 3 Nov 2022, timestep = 100000 + +726 atoms +4 atom types +420 bonds +1 bond types +210 angles +1 angle types + +0 17.6494 xlo xhi +0 20.3798 ylo yhi +0 26 zlo zhi + +Masses + +1 500 +2 196.97 +3 15.9994 +4 1.008 + +Pair Coeffs # lj/cut/coul/long + +1 0.069 2.78 +2 5.29 2.951 +3 0.1553 3.166 +4 0 0 + +Bond Coeffs # harmonic + +1 600 1 + +Angle Coeffs # harmonic + +1 75 109.47 + +Atoms # full + +49 25 2 0.008543040314262548 0 0 2.4018 0 0 0 +50 25 2 0.0160448240953976 1.4708 2.5475 2.4018 0 0 0 +51 26 2 -0.0079256875305239 0 5.0949 2.4018 0 0 0 +57 29 2 -0.005227878579680007 2.9416 0 2.4018 0 0 0 +58 29 2 0.01534182829253148 4.4124 2.5475 2.4018 0 0 0 +59 30 2 0.005249625623138609 2.9416 5.0949 2.4018 0 0 0 +676 242 3 -0.8476 2.819460981381933 5.027845836373835 5.552858700712285 1 0 0 +677 242 4 0.4238 3.6237064095951212 5.498057979630644 5.1894159030362905 1 0 0 +678 242 4 0.4238 3.0474931330566792 4.071918834795528 5.737806475295655 1 0 0 +709 253 3 -0.8476 3.326005069719568 2.1405935467748485 5.508189818283542 1 1 0 +195 81 4 0.4238 0.9649465875607126 4.340812162842168 5.657183047543541 0 0 0 +193 81 3 -0.8476 0.07822017262197362 3.9629228426194305 5.3908801998879925 0 0 0 +194 81 4 0.4238 0.11965319368873736 2.964163951647319 5.41854519664211 0 0 0 +103 51 3 -0.8476 6.804813198264613 5.084871250040471 11.277692419576146 1 0 0 +710 253 4 0.4238 2.3404190574558714 1.9714070000250485 5.508878140894409 1 1 0 +713 254 4 0.4238 9.064078450490644 2.446520257897097 5.3348626027546535 0 1 0 +65 33 2 0.01159205120014908 5.8832 0 2.4018 0 0 0 +66 33 2 0.01814012345205012 7.354000000000001 2.5475 2.4018 0 0 0 +67 34 2 0.001406594129736151 5.8832 5.0949 2.4018 0 0 0 +73 37 2 0.007725405338865237 8.8248 0 2.4018 0 0 0 +74 37 2 0.01259870480846824 10.2956 2.5475 2.4018 0 0 0 +75 38 2 -0.0004634638718638646 8.8248 5.0949 2.4018 0 0 0 +712 254 3 -0.8476 8.802633903527065 3.406390680517518 5.233373245990451 0 1 0 +714 254 4 0.4238 9.596656647074049 3.988446812598421 5.408709008648956 0 1 0 +604 218 3 -0.8476 10.053718350737668 0.9458152116350096 5.395407376762871 0 0 0 +189 79 4 0.4238 7.4156883111781475 3.478062124305858 6.469061899326572 -1 1 0 +170 73 4 0.4238 11.80947244959249 4.900763207760851 5.38132073658318 -1 0 0 +315 121 4 0.4238 12.776759773328315 8.761973185109612 12.512691519633954 0 0 0 +605 218 4 0.4238 11.02536148980741 0.7580225920428326 5.251723453806732 0 0 0 +116 55 4 0.4238 6.860405297106715 1.6714006503015966 5.673388843698673 -1 0 0 +388 146 3 -0.8476 13.766836983830515 3.9827224990972567 5.330985943540624 0 -1 0 +389 146 4 0.4238 13.425795558197045 3.8960741688633775 6.267033057995917 0 -1 0 +586 212 3 -0.8476 12.99172583601213 0.9627880677417303 5.186804494815568 0 1 0 +81 41 2 -0.006484897416350773 11.7664 0 2.4018 0 0 0 +82 41 2 0.008703081094077752 13.237200000000001 2.5475 2.4018 0 0 0 +83 42 2 0.00416546498595383 11.7664 5.0949 2.4018 0 0 0 +89 45 2 -0.01428117869162144 14.708000000000002 0 2.4018 0 0 0 +90 45 2 0.008098914705004666 16.178800000000003 2.5475 2.4018 0 0 0 +91 46 2 -0.02631301835063423 14.708000000000002 5.0949 2.4018 0 0 0 +601 217 3 -0.8476 14.580700057086469 2.470074704951404 9.549553516230905 0 0 0 +602 217 4 0.4238 13.852177407353523 2.485606699806581 10.234399813568656 0 0 0 +107 52 4 0.4238 1.7753325684361263 5.260464281758941 12.927518370297552 0 0 0 +603 217 4 0.4238 15.320102605212748 3.0795550665438127 9.835591885333054 0 0 0 +378 142 4 0.4238 15.457095569986127 9.173371129323348 12.171458596416667 0 -1 0 +422 157 4 0.4238 4.786861348572543 7.318978962263422 5.502857747714512 0 0 0 +52 26 2 -0.01097199601095499 1.4708 7.6424 2.4018 0 0 0 +53 27 2 0.01511923962052951 0 10.1898 2.4018 0 0 0 +60 30 2 -0.006773385603520778 4.4124 7.6424 2.4018 0 0 0 +61 31 2 -0.0006618884891667937 2.9416 10.1898 2.4018 0 0 0 +316 122 3 -0.8476 13.376991964874126 9.733980167782747 5.2443510947274685 -1 0 0 +423 157 4 0.4238 6.118596559257136 6.376695231617992 5.575034452052516 0 0 0 +421 157 3 -0.8476 5.134517216890271 6.414178710640228 5.748768298079106 0 0 0 +643 231 3 -0.8476 3.1763474635956395 8.886111555148053 5.282080436718036 1 0 0 +644 231 4 0.4238 2.513118087318634 8.218141042299745 4.944523274214661 1 0 0 +581 210 4 0.4238 1.9210593488372454 5.953179684029002 6.41990460669887 1 2 0 +426 158 4 0.4238 15.617845693245721 0.24896899149304588 12.27982548992809 0 0 0 +582 210 4 0.4238 0.738973409880735 7.079488872493541 6.392936823978947 1 2 0 +299 116 4 0.4238 1.8742478531098932 0.3995180953106482 9.934219884593341 0 0 0 +691 247 3 -0.8476 7.689714173805594 6.217320019017989 5.258073041482447 0 0 0 +693 247 4 0.4238 8.37284176321211 6.235548870214623 5.9881454257142686 0 0 0 +369 139 4 0.4238 8.495516986476424 8.433565798354097 5.028752451013381 0 0 0 +300 116 4 0.4238 2.911599743969392 1.5040316802567835 10.542971525540692 0 0 0 +367 139 3 -0.8476 8.981733107973055 8.98237922473984 5.708751536331027 0 0 0 +368 139 4 0.4238 9.966826030721563 8.844561146157186 5.605781099266854 0 0 0 +68 34 2 -0.005353421945912079 7.354000000000001 7.6424 2.4018 0 0 0 +69 35 2 -0.02242224817485722 5.8832 10.1898 2.4018 0 0 0 +76 38 2 -0.008749553110635829 10.2956 7.6424 2.4018 0 0 0 +77 39 2 -0.001587975150694571 8.8248 10.1898 2.4018 0 0 0 +169 73 3 -0.8476 10.86775468338433 5.19328586965271 5.547456960295855 -1 0 0 +171 73 4 0.4238 10.800651355284717 6.183975873079292 5.42898775849054 -1 0 0 +425 158 4 0.4238 16.365686839954538 1.6918548567498142 12.120323120019671 0 0 0 +543 197 4 0.4238 15.74455376269356 5.985972014656273 4.244902593730374 1 -1 0 +522 190 4 0.4238 12.358773694396177 8.241027948029787 5.4342692843409335 0 0 0 +541 197 3 -0.8476 15.948040102134595 5.877893730968188 5.217997046194076 1 -1 0 +520 190 3 -0.8476 11.521538237363735 7.820855042448146 5.784258984209179 0 0 0 +521 190 4 0.4238 11.640196773280092 7.596913910660865 6.751612100022279 0 0 0 +213 87 4 0.4238 16.94869795729418 7.658694530040734 4.96211922323137 -1 1 0 +84 42 2 -0.02253342595559467 13.237200000000001 7.6424 2.4018 0 0 0 +85 43 2 -0.02386325442458492 11.7664 10.1898 2.4018 0 0 0 +92 46 2 -0.03395260336333754 16.178800000000003 7.6424 2.4018 0 0 0 +93 47 2 -0.02530118571584997 14.708000000000002 10.1898 2.4018 0 0 0 +211 87 3 -0.8476 17.523577595505472 8.373665168921514 5.360027780919543 -1 1 0 +212 87 4 0.4238 17.0831513845729 9.262879118182907 5.236238106470797 -1 1 0 +205 85 3 -0.8476 5.522367248324516 5.082933874779558 8.132800488002275 0 0 0 +207 85 4 0.4238 4.856839636565012 5.040433764778345 8.877963749174969 0 0 0 +206 85 4 0.4238 5.248881626300537 5.7908645558964675 7.4816162727356925 0 0 0 +188 79 4 0.4238 6.497322905499542 3.778149013994996 7.785564626115502 -1 1 0 +104 51 4 0.4238 6.975223059984354 6.057718294907826 11.434323932547846 1 0 0 +240 96 4 0.4238 15.907149183138676 1.5390029324335393 8.501706376153551 0 0 0 +186 78 4 0.4238 10.809679491055352 4.82920260257931 12.234285165918621 -1 0 0 +627 225 4 0.4238 1.142311523721859 0.5701072346557061 5.407977967350236 1 0 0 +679 243 3 -0.8476 14.388344112145468 5.895841187409739 12.553492598002434 0 0 0 +298 116 3 -0.8476 2.249658462135075 0.7910692719529153 10.774314024535329 0 0 0 +498 182 4 0.4238 3.1782299333534842 4.421584435342713 10.843305251025729 0 0 0 +242 97 4 0.4238 0.11372454909840307 4.5608406751586585 8.512959914844476 1 0 0 +497 182 4 0.4238 3.635093197649102 3.6372270746257795 9.485847319495857 0 0 0 +496 182 3 -0.8476 3.891719288381077 4.3420728032109785 10.147162657393025 0 0 0 +243 97 4 0.4238 1.166929713515916 3.3148448925475837 8.443094046894181 1 0 0 +653 234 4 0.4238 7.986724447375092 9.58663088134249 7.078331051080797 0 -1 0 +291 113 4 0.4238 1.3902648936489443 6.574700931558314 8.627083040419217 2 0 0 +476 175 4 0.4238 10.873396710796088 3.7503648821895377 7.099886667034369 0 0 0 +626 225 4 0.4238 17.341387780659073 1.3131579087511918 5.302792549204005 0 0 0 +187 79 3 -0.8476 6.972728954372332 3.0679623101137263 7.266310623507446 -1 1 0 +198 82 4 0.4238 11.676864533923228 2.4008557059764484 11.887821076968272 0 1 0 +477 175 4 0.4238 11.028257394545655 2.35049554258184 6.2734372961507034 0 0 0 +385 145 3 -0.8476 9.464341047888412 3.3817188372167357 10.216775935923458 0 0 0 +432 160 4 0.4238 7.4158023596883 5.242602008656209 8.911704625300178 1 0 0 +386 145 4 0.4238 9.834023311752183 3.1577521519269993 11.118538449130567 0 0 0 +387 145 4 0.4238 8.839522007452976 2.6580907515237095 9.923575914839613 0 0 0 +431 160 4 0.4238 8.97937772550123 4.855861822733754 9.180574759645397 1 0 0 +430 160 3 -0.8476 8.360641109810988 5.4265820345806866 8.640716144277553 1 0 0 +475 175 3 -0.8476 11.185122253842481 2.80161992224134 7.152006656534362 0 0 0 +577 209 3 -0.8476 11.892138326574036 4.606875557740573 8.77639055263619 0 0 0 +578 209 4 0.4238 11.15205283743665 4.662613397329064 9.446591004081876 0 0 0 +579 209 4 0.4238 11.806616036319609 3.757706369789849 8.255238997490805 0 0 0 +282 110 4 0.4238 11.993978725584078 0.6955935520855357 10.362669416358116 1 -1 0 +281 110 4 0.4238 13.246870870022725 0.7932688823507881 11.405429138463369 1 -1 0 +280 110 3 -0.8476 12.399897412926068 1.230819260076083 11.103456814170583 1 -1 0 +576 208 4 0.4238 7.424477420107739 1.9205433206111677 8.347065650914391 0 0 0 +115 55 3 -0.8476 6.566829197641645 0.7852168728409362 5.314930190030221 -1 0 0 +117 55 4 0.4238 7.3699037409564365 0.24315040972892277 5.0674680046309595 -1 0 0 +654 234 4 0.4238 6.5231563540652955 9.334766916189148 7.757419217563333 0 -1 0 +196 82 3 -0.8476 11.325205678636125 3.0960265761644146 12.514778502806406 0 1 0 +353 134 4 0.4238 10.34648669613546 9.717097284025227 12.21531953491664 1 -1 0 +575 208 4 0.4238 6.8621106467674515 0.6153612624236356 9.151348490167914 0 0 0 +390 146 4 0.4238 14.71592873372509 4.297162424310161 5.349801109951233 0 -1 0 +468 172 4 0.4238 14.334820367346975 9.458375422451784 9.389857451086156 0 1 0 +680 243 4 0.4238 14.420209860242771 5.620779336744502 11.592592717412877 0 0 0 +401 150 4 0.4238 13.58439176144119 5.20555361726743 9.602450324228725 0 0 0 +241 97 3 -0.8476 0.3452523216688656 3.6651747745441994 8.892669971959721 1 0 0 +400 150 3 -0.8476 14.455722458405065 5.628055139668128 9.852004866869082 0 0 0 +562 204 3 -0.8476 16.641350343283886 4.083296189715342 10.989056663280612 0 0 0 +563 204 4 0.4238 16.037770379422128 4.850987807509285 10.773784577109874 0 0 0 +564 204 4 0.4238 17.178401412678653 3.844498107566038 10.180011679572727 0 0 0 +687 245 4 0.4238 16.714761709756484 4.337732009968187 12.639387839102408 0 0 0 +467 172 4 0.4238 13.346114040811248 9.313588789790407 10.681417293752048 0 1 0 +666 238 4 0.4238 4.34126756117676 8.905137414158627 6.516509692747207 0 0 0 +664 238 3 -0.8476 4.751093055532058 9.063792850376354 7.414773021734108 0 0 0 +637 229 3 -0.8476 0.7471877141074242 8.354301697005937 11.535489275372338 1 -1 0 +290 113 4 0.4238 1.5797294433316216 5.599705770675408 9.923275349951421 2 0 0 +652 234 3 -0.8476 7.361488829472968 9.878076947823384 7.802307315600979 0 -1 0 +402 150 4 0.4238 14.817635634485477 6.133309514160487 9.068590593856563 0 0 0 +257 102 4 0.4238 2.654784049830047 9.360773717063745 10.840199367879586 1 0 0 +256 102 3 -0.8476 2.7861525988520546 9.125527207512318 9.87717977353219 1 0 0 +424 158 3 -0.8476 16.282645750155215 0.8737366464771422 12.689346105039219 0 0 0 +665 238 4 0.4238 4.161382545837657 8.676258785766425 8.123335852134215 0 0 0 +122 57 4 0.4238 7.825760402756952 0.4118083408578644 10.770069138315867 0 0 0 +258 102 4 0.4238 2.6507626673715956 8.142581237775797 9.752715909565804 1 0 0 +466 172 3 -0.8476 13.51508294943025 9.818693918214702 9.83505984792318 0 1 0 +377 142 4 0.4238 17.080578433321772 9.22752863551317 12.004131277448275 0 -1 0 +105 51 4 0.4238 5.853746057457844 4.953910172266563 10.997832121722793 1 0 0 +580 210 3 -0.8476 1.3210642970676016 6.5207610408534675 6.98369360583625 1 2 0 +638 229 4 0.4238 0.9970176405359414 7.548196505367084 10.999036348164699 1 -1 0 +717 255 4 0.4238 12.39024162854418 0.28840285676654837 6.591412796748799 1 1 0 +352 134 3 -0.8476 11.226526547688243 9.242192984029268 12.216220312698256 1 -1 0 +137 62 4 0.4238 2.027815877839267 1.8732362417553365 7.987025431651223 0 0 0 +692 247 4 0.4238 7.786529711776536 5.3723882747118985 4.732032313657794 0 0 0 +645 231 4 0.4238 2.8214978665553723 9.809957726487395 5.138560233155634 1 0 0 +185 78 4 0.4238 10.316334741569422 6.044854419256892 11.261952987588222 -1 0 0 +292 114 3 -0.8476 5.67656046565693 9.596732521658042 10.995975339349497 0 0 0 +294 114 4 0.4238 4.789939140622079 9.742378050555555 11.434941355604284 0 0 0 +574 208 3 -0.8476 7.516492206466037 1.3710743960569696 9.177498905408314 0 0 0 +711 253 4 0.4238 3.810396593432228 1.2880838486682353 5.311739399800884 1 1 0 +437 162 4 0.4238 6.860466827809697 8.422553075168016 11.337314477776795 1 0 0 +436 162 3 -0.8476 7.571135241081482 7.730803749388945 11.465517092648946 1 0 0 +588 212 4 0.4238 13.498663213828278 0.38996264096399363 4.542687820493753 0 1 0 +438 162 4 0.4238 8.31154777226707 7.888534002434359 10.812132835679304 1 0 0 +701 250 4 0.4238 9.286513797831446 6.646575924029509 9.147658317438076 2 -1 0 +700 250 3 -0.8476 9.643385938511667 7.47449461758298 9.580320183736939 2 -1 0 +513 187 4 0.4238 1.8185112493161812 10.053298043923604 8.893843011592004 1 0 0 +106 52 3 -0.8476 2.266275159877156 4.688670030017356 12.270229177579722 0 0 0 +702 250 4 0.4238 10.60077224354893 7.600272590312019 9.32033378097907 2 -1 0 +138 62 4 0.4238 3.3080664559545965 2.543423811679406 7.226477171885048 0 0 0 +542 197 4 0.4238 16.61438869395917 5.142214492766869 5.339474575210934 1 -1 0 +376 142 3 -0.8476 16.267806197381876 9.752608027087469 12.256508250931114 0 -1 0 +639 229 4 0.4238 1.2657862555275905 8.359520313997795 12.390492314175315 1 -1 0 +524 191 4 0.4238 13.000197848284115 7.591623195457351 8.231720539306574 0 -1 0 +360 136 4 0.4238 16.927450088881905 9.623013099606048 8.250041448548666 0 0 0 +359 136 4 0.4238 16.11845308444977 9.867127694636144 6.852701508709072 0 0 0 +358 136 3 -0.8476 16.050165493006663 9.508888830997453 7.78383224839627 0 0 0 +289 113 3 -0.8476 1.4110503224699262 6.539558634958015 9.626249498776556 2 0 0 +384 144 4 0.4238 2.493028840280995 9.719794300761412 12.910496964228098 0 -1 0 +406 152 3 -0.8476 15.247929159060655 7.012234071819868 7.773022011622398 0 0 0 +408 152 4 0.4238 15.48816222034174 6.532006856700564 6.929416156188867 0 0 0 +523 191 3 -0.8476 12.082020144652011 7.21880883213217 8.365736806678662 0 -1 0 +407 152 4 0.4238 15.63244454689617 7.93511971351192 7.752267289359093 0 0 0 +525 191 4 0.4238 12.142278624301815 6.233249103608379 8.523992954763008 0 -1 0 +625 225 3 -0.8476 0.6808462683385743 1.4551937786169056 5.347366251301949 1 0 0 +136 62 3 -0.8476 2.697762074389062 2.615104290660337 8.015394827891544 0 0 0 +587 212 4 0.4238 13.566186954572455 1.7288682835758 5.475103447756109 0 1 0 +184 78 3 -0.8476 10.806213490399747 5.820732453607262 12.104443472749216 -1 0 0 +404 151 4 0.4238 0.19226097555573238 0.6070051864264498 8.178840137751594 1 0 0 +313 121 3 -0.8476 13.713176980186857 8.464536347918953 12.326518306939699 0 0 0 +238 96 3 -0.8476 16.147179753895433 0.6588013419307613 8.092271913343968 0 0 0 +461 170 4 0.4238 9.724872597026858 0.5544258850846108 9.053145916541903 0 0 0 +354 134 4 0.4238 11.073991971501862 8.257853428140294 12.30459990822289 1 -1 0 +314 121 4 0.4238 13.814688248066297 7.503222137375749 12.582601723500172 0 0 0 +403 151 3 -0.8476 1.1872556285218714 0.5093445341888718 8.200033176326532 1 0 0 +698 249 4 0.4238 15.55803239857769 0.7459365278981882 6.259847956511043 0 1 0 +114 54 4 0.4238 7.782158286850564 4.869601692703211 12.807668425470919 0 -1 0 +697 249 3 -0.8476 15.855429109033778 0.4369326727389228 5.356480411028421 0 1 0 +606 218 4 0.4238 9.544775439662294 0.08501982626141869 5.398561718648435 0 0 0 +317 122 4 0.4238 13.333479801593976 9.740943665116738 4.24532200523119 -1 0 0 +108 52 4 0.4238 2.6709587275475806 3.9072302649054578 12.745192231166719 0 0 0 +382 144 3 -0.8476 3.147429286024961 10.109636142426924 12.262589634326233 0 -1 0 +219 89 4 0.4238 6.364020207274239 2.520405553770681 12.99540340928131 0 1 0 +670 240 3 -0.8476 6.773533755134105 3.717038175159099 16.491590206755482 1 1 0 +396 148 4 0.4238 5.803462923264418 5.197637234493128 18.99743460565577 1 0 0 +395 148 4 0.4238 6.231119807997449 5.430041501948986 17.438676906564567 1 0 0 +394 148 3 -0.8476 5.703165163684741 5.798066954915367 18.20406962093302 1 0 0 +204 84 4 0.4238 0.9285041127500067 6.081115753960207 17.765142563298816 0 0 0 +608 219 4 0.4238 3.4847098211944805 4.983851303239975 16.51022523448973 2 0 0 +203 84 4 0.4238 2.239308631405881 6.936298376846396 18.23106240529696 0 0 0 +202 84 3 -0.8476 1.7977361263740537 6.4724758132065725 17.4630234950725 0 0 0 +486 178 4 0.4238 1.5196084362896762 6.12225022226849 15.824399106036145 2 -1 0 +347 132 4 0.4238 3.6682462328407848 1.7981456998993772 14.104840128555262 0 0 0 +45 23 1 0.006123381361742108 14.708000000000002 10.1898 23.449863020791625 0 0 0 +471 173 4 0.4238 1.169657196352889 2.3243122122885453 14.225856073802426 1 0 0 +348 132 4 0.4238 3.2986057185518605 3.2227066069571335 14.81238521553265 0 0 0 +275 108 4 0.4238 3.030667138719297 2.590837305059514 17.506935704777117 0 1 0 +346 132 3 -0.8476 3.0631397880047393 2.5935970488364877 14.071588140230032 0 0 0 +572 207 4 0.4238 5.938146311728662 1.1988717244542944 18.449373741134067 2 0 0 +338 129 4 0.4238 3.072928503496896 1.7841590474751556 19.542649762121915 1 1 0 +485 178 4 0.4238 0.47678333061827677 5.47396748641097 14.747888473867437 2 -1 0 +571 207 3 -0.8476 5.4801718917026605 1.015513120679157 17.579521025148217 2 0 0 +591 213 4 0.4238 1.6285162972905645 3.4120124953752153 19.93620754678186 1 0 0 +589 213 3 -0.8476 0.8251068536873744 3.8954462084678685 20.28381032825206 1 0 0 +607 219 3 -0.8476 3.867930772442749 4.066191566694831 16.405134372982015 2 0 0 +609 219 4 0.4238 4.806032103818568 4.055085076366629 16.75132234398619 2 0 0 +180 76 4 0.4238 6.828372582015677 7.87413160734309 14.827932072927481 1 0 0 +274 108 3 -0.8476 2.2754290519199434 2.0804855419940176 17.918224542873194 0 1 0 +686 245 4 0.4238 17.05951378440882 3.718092322788279 14.110381025997988 0 0 0 +671 240 4 0.4238 7.723844896306422 3.5324942522771177 16.240882591061286 1 1 0 +672 240 4 0.4238 6.164914683475686 3.1703614971042993 15.916500506334968 1 1 0 +112 54 3 -0.8476 8.040671566798173 4.854493140691428 13.773559856960954 0 -1 0 +681 243 4 0.4238 14.923807986964198 5.253612199100808 13.101965411111607 0 0 0 +113 54 4 0.4238 7.6698060149863725 5.662965420048592 14.230545447349645 0 -1 0 +344 131 4 0.4238 10.95474300812148 4.0896914619293145 14.970342975126565 1 0 0 +343 131 3 -0.8476 10.063394350235356 3.7363576006086254 15.254338082590541 1 0 0 +345 131 4 0.4238 9.34090547780924 4.213383582128138 14.753881815078818 1 0 0 +255 101 4 0.4238 10.85824303556981 3.0901798958905475 17.415063203472258 1 1 0 +254 101 4 0.4238 10.431165704841273 2.7912121126124174 18.962593602768095 1 1 0 +309 119 4 0.4238 9.657908807892223 1.9712599592283588 15.351618323136861 0 0 0 +253 101 3 -0.8476 11.154265512428617 3.1439882841524334 18.368727773437268 1 1 0 +479 176 4 0.4238 5.403795086006659 1.4149877692142259 20.021771864299765 0 -1 0 +109 53 3 -0.8476 8.600205030653099 2.2462808893047232 19.821549314151852 -1 -1 0 +480 176 4 0.4238 6.258921142430334 0.1412548703721989 20.581229029437516 0 -1 0 +375 141 4 0.4238 9.117868061991976 1.036566241068436 18.751587159762384 1 0 0 +44 22 1 -0.0001812904321965569 16.178800000000003 7.6424 23.449863020791625 0 0 0 +110 53 4 0.4238 7.727663154061957 1.8390933537663159 20.091493343399456 -1 -1 0 +307 119 3 -0.8476 9.343792417931972 1.0220586309221074 15.332862776937171 0 0 0 +685 245 3 -0.8476 16.514983914712488 4.396701916152739 13.617453660612183 0 0 0 +635 228 4 0.4238 14.934439265290866 2.288341571568405 19.356194526021124 -1 1 0 +636 228 4 0.4238 16.2158222895273 2.6797206531874846 18.422648696940644 -1 1 0 +271 107 3 -0.8476 14.384906263459381 5.231528110011023 18.211019803516685 0 0 0 +722 257 4 0.4238 0.7841546606140447 3.2030543524924195 17.73657679021505 1 0 0 +481 177 3 -0.8476 12.581138481752648 4.859708235311564 14.646852856409735 0 -1 0 +721 257 3 -0.8476 17.60844845622247 3.454378290202139 17.230572913673747 0 0 0 +483 177 4 0.4238 13.160238723845719 4.100628436368969 14.944244840432273 0 -1 0 +723 257 4 0.4238 17.606644439674373 2.9907645897973025 16.344535049328133 0 0 0 +482 177 4 0.4238 13.012070955214067 5.324546157865892 13.873402918227042 0 -1 0 +210 86 4 0.4238 15.870038382436055 6.148820952871613 19.006015180550836 0 0 0 +208 86 3 -0.8476 16.865547237935143 6.098380167171903 19.086141002575904 0 0 0 +469 173 3 -0.8476 0.24099730438873146 2.3625139757391653 14.594820907791535 1 0 0 +209 86 4 0.4238 17.139292025421696 5.150302069211487 19.248054676505525 0 0 0 +688 246 3 -0.8476 14.623886499778722 3.6932990280304163 15.732807373833925 0 0 0 +690 246 4 0.4238 14.619196195132695 3.9139495349394897 16.70815146361856 0 0 0 +634 228 3 -0.8476 15.93174987773314 2.3544851495071337 19.324605678443945 -1 1 0 +689 246 4 0.4238 15.265375999751216 4.295738562336769 15.257869634602969 0 0 0 +662 237 4 0.4238 4.978031757165134 0.7547617838359337 14.20344931791269 0 0 0 +149 66 4 0.4238 6.142925343814942 8.825398894478063 19.325397902096977 1 -1 0 +590 213 4 0.4238 0.07861235173383108 3.2446527141465413 20.422437871943448 1 0 0 +433 161 3 -0.8476 13.453174159881309 1.2429493424526434 18.58612891404859 1 0 0 +435 161 4 0.4238 13.569356144672101 0.9791538990920698 17.628571988252272 1 0 0 +102 50 4 0.4238 6.712168198770753 6.861720337029987 19.24687390403485 2 0 0 +140 63 4 0.4238 14.018366924616625 9.69491277775119 14.008138262339143 -2 -1 0 +417 155 4 0.4238 5.208444868460392 7.220217558553598 16.73639408130369 0 0 0 +415 155 3 -0.8476 5.290910423508213 8.090179521588407 16.250219145720393 0 0 0 +416 155 4 0.4238 4.571517941560458 8.713170942042227 16.557394543089575 0 0 0 +459 169 4 0.4238 1.274864904832181 9.57147587035769 16.73714616564885 1 0 0 +217 89 3 -0.8476 6.03252642387316 1.682543967490432 13.429110083925117 0 1 0 +478 176 3 -0.8476 6.321181520041977 1.0326296477116548 20.13225702561793 0 -1 0 +361 137 3 -0.8476 1.6007303313238133 8.59744641622387 14.087757338010231 1 -1 0 +197 82 4 0.4238 11.189299229444917 2.6912260959037098 13.419027842857094 0 1 0 +650 233 4 0.4238 14.003306552648727 1.5742686356038393 16.043690746479285 1 0 0 +488 179 4 0.4238 14.200182875506746 9.953534892777244 19.839371915250766 1 -1 0 +484 178 3 -0.8476 1.310019783094791 6.016938649674422 14.852293828373476 2 -1 0 +661 237 3 -0.8476 4.352879610820145 0.25944931473696636 14.80665155844631 0 0 0 +363 137 4 0.4238 1.959463608305586 9.151048377028488 14.839313627996184 1 -1 0 +100 50 3 -0.8476 7.520229491829531 7.3048366120870165 19.635059688498004 2 0 0 +707 252 4 0.4238 11.76043130595752 9.939320694789002 19.71667383739911 0 1 0 +178 76 3 -0.8476 7.517489493276682 7.333706134334132 14.345168774847096 1 0 0 +684 244 4 0.4238 17.28192914942711 9.812564778400814 18.086534426021203 0 1 0 +36 18 1 -0.0179910439504863 13.237200000000001 7.6424 23.449863020791625 0 0 0 +276 108 4 0.4238 2.207595987778979 1.1805886699543764 17.487427077013713 0 1 0 +214 88 3 -0.8476 8.637264772060341 8.061628662502454 16.90108297131685 -1 0 0 +216 88 4 0.4238 9.630438446102557 8.174027520932198 16.932331381504746 -1 0 0 +539 196 4 0.4238 9.695497532266977 6.886264199273172 14.189789226002413 2 0 0 +538 196 3 -0.8476 10.563020232995258 6.775061520800534 14.674598753985302 2 0 0 +252 100 4 0.4238 7.685168241584919 9.610566187163585 16.889892309335206 0 0 0 +228 92 4 0.4238 11.050503228858997 8.010373029173316 15.663121686944693 0 -1 0 +226 92 3 -0.8476 11.28429273467671 8.543911989710573 16.475943851978776 0 -1 0 +227 92 4 0.4238 11.344287050217062 9.512148354407193 16.233205016457113 0 -1 0 +540 196 4 0.4238 11.161666855372657 6.168261200879016 14.151701557933738 2 0 0 +596 215 4 0.4238 12.771065336519738 7.748494590220643 16.220536748708703 1 -1 0 +215 88 4 0.4238 8.374011229887373 7.6671090745462545 16.020711214547347 -1 0 0 +234 94 4 0.4238 16.576430424719607 0.5062309843763978 19.13844592766813 0 0 0 +706 252 3 -0.8476 12.36193947812822 9.160747667168573 19.537751621413815 0 1 0 +708 252 4 0.4238 11.865171027143662 8.469425792189265 19.01306505088366 0 1 0 +373 141 3 -0.8476 9.412620718118959 0.35565490575707015 18.08114998455027 1 0 0 +272 107 4 0.4238 13.96923862413299 5.521984167683582 19.072911164078484 0 0 0 +273 107 4 0.4238 14.169684339674113 5.896953089438392 17.496254328798827 0 0 0 +362 137 4 0.4238 1.6305502404987111 7.6307855704072995 14.342077627004548 1 -1 0 +597 215 4 0.4238 13.155595108591708 6.281716998754621 15.614461099800554 1 -1 0 +519 189 4 0.4238 0.25052520571656256 7.410000747569126 19.453385808828934 1 0 0 +682 244 3 -0.8476 17.37568243426495 9.11353756111006 17.377610598188703 0 1 0 +161 70 4 0.4238 0.4276393931068581 9.645404130294276 19.94966591203612 1 0 0 +683 244 4 0.4238 16.762775639163923 8.349640967386419 17.579621185009074 0 1 0 +339 129 4 0.4238 2.953255533740337 0.7273765470433621 20.781809824703732 1 1 0 +470 173 4 0.4238 17.313495807482283 1.701791190164049 14.11457782420363 0 0 0 +595 215 3 -0.8476 13.434254199843643 7.000670331013912 16.25121582144323 1 -1 0 +649 233 3 -0.8476 13.730521799815536 0.614769911259436 16.114057992895944 1 0 0 +179 76 4 0.4238 7.376399341193584 7.418181342250472 13.358780560554386 1 0 0 +308 119 4 0.4238 9.328524040796328 0.6575663281326254 16.263946795393448 0 0 0 +663 237 4 0.4238 4.505521910089192 0.5457888494359412 15.752543276886664 0 0 0 +337 129 3 -0.8476 3.514575860727707 1.4477360756662245 20.37437556806391 1 1 0 +327 125 4 0.4238 4.963020305736973 4.844213183983858 21.800104413199907 0 1 0 +325 125 3 -0.8476 5.413526513655491 4.683300538459343 20.92195188291159 0 1 0 +326 125 4 0.4238 6.356823537007404 4.39129241653594 21.079824846511343 0 1 0 +535 195 3 -0.8476 2.983237344424761 5.852992742968334 19.86140129850823 1 0 0 +537 195 4 0.4238 3.8877052935337013 5.573139871228802 20.183303829725734 1 0 0 +2 1 1 0.01681964573718448 1.4708000000000014 2.5475000000000003 23.449863020791625 0 0 0 +1 1 1 0.009530892217576416 1.7763568394002505e-15 1.7763568394002505e-15 23.449863020791625 0 0 0 +11 6 1 -0.01524214201230506 2.941600000000001 5.094900000000001 23.449863020791625 0 0 0 +3 2 1 0.01449029221643637 1.7763568394002505e-15 5.094900000000001 23.449863020791625 0 0 0 +10 5 1 0.00691884776850595 4.4124 2.5474999999999994 23.449863020791625 0 0 0 +9 5 1 0.0195314219644623 2.9415999999999993 1.7763568394002505e-15 23.449863020791625 0 0 0 +536 195 4 0.4238 2.319795753718221 5.1326684425952385 20.063837216279858 1 0 0 +516 188 4 0.4238 8.108138722594667 5.927016819163718 20.411810376184487 1 -1 0 +111 53 4 0.4238 8.496355497036129 3.238090310367132 19.747187863764335 -1 -1 0 +515 188 4 0.4238 9.362944894589518 4.883962319684104 20.47605173012904 1 -1 0 +514 188 3 -0.8476 8.36740867133632 4.961263964951319 20.421886089225346 1 -1 0 +168 72 4 0.4238 11.376288543712512 4.443050222600666 19.712926478310834 0 0 0 +166 72 3 -0.8476 11.119316529543537 5.1744679228851975 20.344587376759364 0 0 0 +17 9 1 -0.0001196702448092049 5.8832 0 23.449863020791625 0 0 0 +19 10 1 -0.04577843504398507 5.8832 5.094900000000001 23.449863020791625 0 0 0 +18 9 1 0.005448749793554232 7.354000000000001 2.5474999999999994 23.449863020791625 0 0 0 +27 14 1 0.01621780275369726 8.8248 5.094900000000001 23.449863020791625 0 0 0 +26 13 1 0.009139377486030886 10.2956 2.5474999999999994 23.449863020791625 0 0 0 +25 13 1 0.005843126768876098 8.8248 0 23.449863020791625 0 0 0 +434 161 4 0.4238 12.577274249871005 1.7121343654934205 18.69868691361602 1 0 0 +41 21 1 -0.0175826914366148 14.708 0 23.449863020791625 0 0 0 +42 21 1 0.003543843405838151 16.178800000000003 2.5474999999999994 23.449863020791625 0 0 0 +43 22 1 -0.008930438763612256 14.708000000000002 5.0949 23.449863020791625 0 0 0 +33 17 1 -0.01319754578259268 11.7664 1.7763568394002505e-15 23.449863020791625 0 0 0 +35 18 1 0.005624883561307313 11.7664 5.094900000000001 23.449863020791625 0 0 0 +34 17 1 -0.001833361793814021 13.237200000000001 2.5474999999999994 23.449863020791625 0 0 0 +518 189 4 0.4238 1.7262219883909424 7.436086788297749 20.15214607725663 1 0 0 +101 50 4 0.4238 8.106166655216015 7.636318994291072 18.895600145997378 2 0 0 +517 189 3 -0.8476 0.8975282537764131 7.9667901703236526 19.974321127200675 1 0 0 +150 66 4 0.4238 4.649148498694868 8.243938426512141 19.63710700967118 1 -1 0 +37 19 1 0.008059123604893179 11.7664 10.1898 23.449863020791625 0 0 0 +13 7 1 0.003562500361631949 2.941600000000001 10.1898 23.449863020791625 0 0 0 +4 2 1 0.01118045101209775 1.4708000000000006 7.6424 23.449863020791625 0 0 0 +12 6 1 -0.008187862475270539 4.4124 7.6424 23.449863020791625 0 0 0 +148 66 3 -0.8476 5.168232450516505 9.047906137187535 19.346953256748833 1 -1 0 +5 3 1 0.01564426943939494 1.7763568394002505e-15 10.1898 23.449863020791625 0 0 0 +167 72 4 0.4238 11.942045323115195 5.649130151908711 20.657340273077285 0 0 0 +328 126 3 -0.8476 13.536656944721523 6.706920305720269 20.30923123396737 0 1 0 +329 126 4 0.4238 14.033035625445095 6.901107759295683 21.155340398492882 0 1 0 +330 126 4 0.4238 13.32248868402487 7.565726120598325 19.84383926291113 0 1 0 +28 14 1 0.005135353479473132 10.2956 7.6424 23.449863020791625 0 0 0 +29 15 1 -0.01709114553122559 8.8248 10.1898 23.449863020791625 0 0 0 +20 10 1 0.004420735120240576 7.354000000000001 7.6424 23.449863020791625 0 0 0 +21 11 1 -8.295950892680149e-05 5.8832 10.1898 23.449863020791625 0 0 0 +457 169 3 -0.8476 2.137690785024048 9.831264578841258 16.303498875411698 1 0 0 +573 207 4 0.4238 5.848305837212314 0.1762190034544807 17.17943778184179 2 0 0 +651 233 4 0.4238 14.491471777300028 0.03037914374267814 15.83219648354528 1 0 0 +218 89 4 0.4238 6.5919786085182075 0.9091158018046296 13.131077697911964 0 1 0 +54 27 2 0.009538003210554242 1.4708 12.7373 2.4018 0 0 0 +55 28 2 -0.003172379929243049 0 15.2847 2.4018 0 0 0 +62 31 2 -0.00186117057999337 4.4124 12.7373 2.4018 0 0 0 +63 32 2 0.00758887481169554 2.9416 15.2847 2.4018 0 0 0 +192 80 4 0.4238 4.794387147708667 14.909075171120765 5.419182095600811 0 0 0 +119 56 4 0.4238 3.2500817867314398 11.832800805491306 6.2682928485004785 0 -1 0 +118 56 3 -0.8476 2.709695006424336 11.627182945371326 5.452384520275485 0 -1 0 +191 80 4 0.4238 3.8571863060224443 13.57325796518277 5.356927851433144 0 0 0 +190 80 3 -0.8476 3.8530200194608413 14.572485850889231 5.396004384825564 0 0 0 +98 49 4 0.4238 2.2766564815872377 15.778957767705766 5.556621305001019 1 0 0 +120 56 4 0.4238 1.8997669381619913 12.21338080817393 5.432566828266767 0 -1 0 +97 49 3 -0.8476 1.6582359104391984 16.291326734509507 6.152472357053496 1 0 0 +244 98 3 -0.8476 0.3924528377280096 13.052383693685869 5.275030660375085 0 -1 0 +99 49 4 0.4238 1.9764418005425044 16.22605313800913 7.098245454454695 1 0 0 +631 227 3 -0.8476 8.778943735028687 10.474788944453667 12.685594012363595 -1 0 0 +295 115 3 -0.8476 6.836426798704437 14.252095160705379 5.316785643293747 0 0 0 +296 115 4 0.4238 6.3380790395823565 13.385929350133972 5.27926186731909 0 0 0 +336 128 4 0.4238 9.504568664514785 15.01506830678913 4.725006859909346 0 0 0 +70 35 2 0.01569918460207732 7.354000000000001 12.7373 2.4018 0 0 0 +71 36 2 0.01622723354682065 5.8832 15.2847 2.4018 0 0 0 +78 39 2 0.01233699237017652 10.2956 12.7373 2.4018 0 0 0 +79 40 2 -0.0123167339477786 8.8248 15.2847 2.4018 0 0 0 +334 128 3 -0.8476 9.804960251945063 14.585282143844777 5.576505038341256 0 0 0 +335 128 4 0.4238 10.764689305944286 14.811244909035093 5.743428161519318 0 0 0 +656 235 4 0.4238 11.274876877297288 11.589128799416661 6.812142647899859 0 0 0 +655 235 3 -0.8476 11.388256990917405 11.907831882964768 5.871092838018554 0 0 0 +657 235 4 0.4238 10.511574676431575 12.241068556600506 5.524131235030396 0 0 0 +331 127 3 -0.8476 8.647876026470513 11.72968917644971 5.372752090789252 0 0 0 +225 91 4 0.4238 13.252704815948258 12.484966119923902 5.4991907056523175 -1 -1 0 +223 91 3 -0.8476 14.108667496093203 12.961787209464076 5.699123243872336 -1 -1 0 +86 43 2 0.004517062113848894 13.237200000000001 12.7373 2.4018 0 0 0 +87 44 2 0.001691435347730985 11.7664 15.2847 2.4018 0 0 0 +94 47 2 0.00685931941051703 16.178800000000003 12.7373 2.4018 0 0 0 +95 48 2 0.006949345406057055 14.708000000000002 15.2847 2.4018 0 0 0 +246 98 4 0.4238 0.38146479586720616 13.911666462643149 4.763645752254332 0 -1 0 +224 91 4 0.4238 14.421312095518909 12.71496419083952 6.616368538934622 -1 -1 0 +283 111 3 -0.8476 15.628193884175449 15.67958654625237 5.712183668752193 -1 0 0 +285 111 4 0.4238 15.20823137338435 14.77263604396369 5.744946721536371 -1 0 0 +284 111 4 0.4238 15.39730073469381 16.18406388803546 6.544167099225616 -1 0 0 +135 61 4 0.4238 17.181734297894028 11.50938194605289 5.376919239592664 -1 0 0 +128 59 4 0.4238 12.510696850559 13.400814682569763 12.12154569673403 0 0 0 +641 230 4 0.4238 16.460174864867515 11.555259291722754 11.513987660535511 1 0 0 +694 248 3 -0.8476 5.646664121771563 12.003829343647613 5.265517005823366 1 0 0 +508 186 3 -0.8476 11.874631242554559 19.183954362495257 12.757848230170808 -1 0 0 +365 138 4 0.4238 6.888120955508712 13.350278100146872 11.983484682294058 0 -1 0 +56 28 2 -0.007346483191423765 1.4708 17.8322 2.4018 0 0 0 +64 32 2 -0.007040366496871621 4.4124 17.8322 2.4018 0 0 0 +264 104 4 0.4238 2.890774254525348 19.395952063865504 5.416360014788498 0 -1 0 +262 104 3 -0.8476 1.9229167571391381 19.551713032251147 5.613835629405332 0 -1 0 +303 117 4 0.4238 12.119648008726836 10.348886671661969 8.982817094596912 0 0 0 +263 104 4 0.4238 1.3632164588516946 19.027705040806982 4.971845369641502 0 -1 0 +696 248 4 0.4238 4.931090248366684 11.920720405779006 5.959093966041219 1 0 0 +555 201 4 0.4238 0.1476370801517249 17.587643965474964 5.9820586175388515 1 -1 0 +460 170 3 -0.8476 10.511653292375941 20.36092252510843 9.28183703745981 0 -1 0 +357 135 4 0.4238 5.30802705175001 20.077669929184395 5.47750029282528 0 -1 0 +355 135 3 -0.8476 4.502197418039438 19.485574693167184 5.469578450808493 0 -1 0 +642 230 4 0.4238 17.59514938340467 12.494288109655482 10.809223899354208 1 0 0 +440 163 4 0.4238 6.746420411262218 15.956533676323577 5.22022015080474 0 0 0 +441 163 4 0.4238 5.7446670540994935 16.848265237800078 6.151849013066668 0 0 0 +248 99 4 0.4238 0.19491065621647194 15.263151600771593 12.384493561505723 1 0 0 +439 163 3 -0.8476 6.316582565899266 16.852550879871938 5.331546912613838 0 0 0 +72 36 2 0.007179830066346712 7.354000000000001 17.8322 2.4018 0 0 0 +80 40 2 0.009767193963479517 10.2956 17.8322 2.4018 0 0 0 +593 214 4 0.4238 7.884845767551953 18.242346210560054 5.215564680586794 1 0 0 +592 214 3 -0.8476 8.441708788539396 19.06278952840712 5.34509407825288 1 0 0 +594 214 4 0.4238 9.407518236319975 18.806924915027857 5.3868767845437215 1 0 0 +229 93 3 -0.8476 11.002931909959898 17.85349899482245 5.534832624443298 -1 -1 0 +356 135 4 0.4238 4.727932098205787 18.62143419085674 5.019794724809724 0 -1 0 +443 164 4 0.4238 12.40229864797583 14.881890635527546 6.532324378182912 -1 0 0 +230 93 4 0.4238 11.272239561806135 18.40387542301247 6.325124179849419 -1 -1 0 +442 164 3 -0.8476 12.249392559907344 15.43317503022671 5.712134600968626 -1 0 0 +444 164 4 0.4238 13.129546035940322 15.725685437724305 5.338276770112374 -1 0 0 +231 93 4 0.4238 11.438767335047864 16.955174113268875 5.59016816824532 -1 -1 0 +88 44 2 -0.004661733698708054 13.237200000000001 17.8322 2.4018 0 0 0 +96 48 2 0.004146602187371051 16.178800000000003 17.8322 2.4018 0 0 0 +553 201 3 -0.8476 17.01816778562073 17.995397600438885 5.50550827227041 0 -1 0 +554 201 4 0.4238 16.440634429393626 17.270603716767287 5.129835074976055 0 -1 0 +699 249 4 0.4238 15.700109015732405 19.83239470687886 5.2730815881929605 0 0 0 +247 99 3 -0.8476 17.336782813381703 15.9758100387841 12.86878129068549 0 0 0 +527 192 4 0.4238 8.400400049346944 19.554495577047934 12.685963916073062 0 -1 0 +245 98 4 0.4238 0.14624632377865007 13.228544728434645 6.228106595314394 0 -1 0 +633 227 4 0.4238 7.8446313240677465 10.215293497567252 12.929977075896192 -1 0 0 +123 57 4 0.4238 7.0746556208220435 19.34524620318107 10.872591375491558 0 -1 0 +724 258 3 -0.8476 4.234176441183506 12.039368920513985 7.672701195843418 1 -1 0 +725 258 4 0.4238 4.137223358179028 11.154093396315286 8.127551251299957 1 -1 0 +342 130 4 0.4238 3.3490444756314663 14.507070913866091 7.917816047124389 1 0 0 +340 130 3 -0.8476 2.475251769304553 14.763988319874148 8.330709130564067 1 0 0 +341 130 4 0.4238 2.5667527473696508 14.772232456574866 9.326480518807314 1 0 0 +364 138 3 -0.8476 6.231328463002679 12.764543730928395 11.508572517819397 0 -1 0 +726 258 4 0.4238 4.70687708932946 12.676759931947513 8.28121621344766 1 -1 0 +503 184 4 0.4238 0.626740782878561 12.112155305683151 8.36175181603283 2 0 0 +502 184 3 -0.8476 0.3530019095059348 13.026562250348038 8.063539643828118 2 0 0 +504 184 4 0.4238 1.1590491426400296 13.616383360322493 8.014514200238665 2 0 0 +413 154 4 0.4238 10.310246047781114 12.645425170155443 9.649734635743975 -1 -1 0 +278 109 4 0.4238 2.0689926172355833 13.226423725069202 11.044416560097394 1 0 0 +270 106 4 0.4238 14.518258075018746 16.25012768269104 11.329980010628349 -1 0 0 +719 256 4 0.4238 14.442688875729713 18.00809488214158 8.65135922354247 0 0 0 +132 60 4 0.4238 13.719412563278548 19.25471490200023 12.012858419540821 0 -1 0 +297 115 4 0.4238 7.758248037390944 14.09126118228873 5.669459107658047 0 0 0 +392 147 4 0.4238 8.440775970159434 10.837303720059037 8.832462502385212 1 -1 0 +260 103 4 0.4238 6.064521948562677 13.07373599605862 9.675228220765085 1 0 0 +548 199 4 0.4238 8.329731669573114 16.02435016298476 8.300652493750043 0 0 0 +302 117 4 0.4238 10.534927101610386 10.641668809892366 8.71905928310815 0 0 0 +259 103 3 -0.8476 6.039295026524322 13.683249827267247 8.882849726337565 1 0 0 +261 103 4 0.4238 6.968645563455479 13.97585610861691 8.65769716313075 1 0 0 +640 230 3 -0.8476 16.65021625418278 12.46084907650203 11.134783599664194 1 0 0 +532 194 3 -0.8476 8.625524965508806 14.111716138349044 7.926539176924266 1 -1 0 +235 95 3 -0.8476 2.8058865877200936 17.909202481046883 10.86408017002096 1 -1 0 +533 194 4 0.4238 9.285608328477988 13.74349101780916 8.581291434167639 1 -1 0 +534 194 4 0.4238 9.031378094953077 14.119395432885998 7.012632675162272 1 -1 0 +621 223 4 0.4238 11.759447009759235 16.637770265234245 8.125266626319792 0 -1 0 +121 57 3 -0.8476 7.405164265328445 20.132366073683155 11.393370019265204 0 -1 0 +269 106 4 0.4238 15.69906664349124 15.938606379638701 12.414079729103287 -1 0 0 +265 105 3 -0.8476 13.858511390467266 12.2257643539824 11.862964948226105 1 -1 0 +547 199 3 -0.8476 8.479300024438404 16.994101102650657 8.493567490661286 0 0 0 +619 223 3 -0.8476 11.181389829059919 17.28631938477271 8.620479805635687 0 -1 0 +279 109 4 0.4238 2.3342044958643817 11.616099100570484 10.98832580613683 1 0 0 +293 114 4 0.4238 5.974133299119694 10.444262483041067 10.556494238721228 0 0 0 +695 248 4 0.4238 5.440253808833983 11.395549814498784 4.499102405585278 1 0 0 +494 181 4 0.4238 14.091170402355985 15.83372339966198 8.056796739388613 0 -1 0 +131 60 4 0.4238 14.375504558444222 19.40171818823153 10.52471778468597 0 -1 0 +715 255 3 -0.8476 12.148806693669629 19.94644025668999 7.2400816171341615 1 0 0 +239 96 4 0.4238 15.531142815012778 20.3309642839673 8.438322792523895 0 -1 0 +414 154 4 0.4238 10.783851523474887 13.801560969805426 10.70124633178135 -1 -1 0 +648 232 4 0.4238 13.545815145696485 13.70677775084171 8.047430920645967 1 -1 0 +646 232 3 -0.8476 12.89354184562956 14.45291909331316 8.180909241857698 1 -1 0 +565 205 3 -0.8476 16.571290714132587 15.380788191495872 9.978390686128293 0 0 0 +566 205 4 0.4238 16.486697788555325 14.396887548242892 10.135820192964106 0 0 0 +544 198 3 -0.8476 14.802744123952923 12.494905050684105 8.220714343430616 0 0 0 +546 198 4 0.4238 15.69958392914293 12.648272017127166 8.635636336988226 0 0 0 +545 198 4 0.4238 14.327341303672132 11.766564694345089 8.71418549827662 0 0 0 +495 181 4 0.4238 15.64406667138792 16.008563289169672 8.530685968345766 0 -1 0 +647 232 4 0.4238 12.174548141627941 14.158466532425988 8.81047248263604 1 -1 0 +493 181 3 -0.8476 14.888021746634598 16.43755314652351 8.036353729476255 0 -1 0 +301 117 3 -0.8476 11.444178994842403 10.634235762851835 8.302874111374269 0 0 0 +127 59 3 -0.8476 11.835398099674071 14.130588554568469 12.228336617000755 0 0 0 +266 105 4 0.4238 13.437837209675466 11.718053793881642 11.111124693406984 1 -1 0 +391 147 3 -0.8476 9.099036309266321 11.055510230198061 9.552934514493218 1 -1 0 +465 171 4 0.4238 4.507962365618935 16.739930651989027 12.02419305834093 1 1 0 +333 127 4 0.4238 7.671719130956259 11.719916025379499 5.589601145029327 0 0 0 +366 138 4 0.4238 5.3810066147385625 12.723574451940152 12.033239886655569 0 -1 0 +267 105 4 0.4238 14.695595476843678 12.667206008724747 11.539822065683758 1 -1 0 +157 69 3 -0.8476 5.628213484046431 19.7062241141079 8.476653698924062 0 -1 0 +412 154 3 -0.8476 10.588274339586592 13.60163970345705 9.74115068987977 -1 -1 0 +393 147 4 0.4238 8.752170977546312 10.727795337016143 10.43173357510416 1 -1 0 +405 151 4 0.4238 1.4893493439895436 20.379210451086568 7.3946095610145495 1 -1 0 +448 166 3 -0.8476 2.31094841939137 15.22894706649686 11.40418724815192 1 -1 0 +449 166 4 0.4238 2.4578750502157516 15.152016401940413 12.390338787322065 1 -1 0 +584 211 4 0.4238 7.457640650200761 17.192133224007062 11.208629944424919 0 0 0 +585 211 4 0.4238 7.4183339086411015 17.350678325691767 9.583838609015473 0 0 0 +318 122 4 0.4238 12.677059363876626 10.345851943535926 5.612738242773594 -1 0 0 +450 166 4 0.4238 2.5278285080124174 16.1586189746941 11.106405599802631 1 -1 0 +159 69 4 0.4238 5.396739043963939 19.542646637149865 7.517663044565708 0 -1 0 +277 109 3 -0.8476 1.9668284394083102 12.400955373279421 10.489290044953318 1 0 0 +174 74 4 0.4238 2.093131136233991 20.2908531347256 12.509936900888619 1 -1 0 +158 69 4 0.4238 5.72722641111533 18.830742461490534 8.949654740651088 0 -1 0 +236 95 4 0.4238 2.955886959156451 18.56642796559528 10.125462919315872 1 -1 0 +332 127 4 0.4238 8.992796984842672 10.791435697737592 5.34607589753084 0 0 0 +567 205 4 0.4238 17.492436254495992 15.680156746258747 10.227126720885458 0 0 0 +268 106 3 -0.8476 14.72205779127257 15.84637768385046 12.22186102297119 -1 0 0 +144 64 4 0.4238 11.609867542673534 17.63780259318367 11.964952217223086 0 -1 0 +143 64 4 0.4238 10.437547809860437 16.53467569974479 11.690352189869234 0 -1 0 +620 223 4 0.4238 11.248363625488201 17.110068003656618 9.60254814088919 0 -1 0 +142 64 3 -0.8476 11.326107809904766 16.875494366073085 11.383255826277036 0 -1 0 +129 59 4 0.4238 12.300763358612933 15.015557263662124 12.2446824789516 0 0 0 +549 199 4 0.4238 9.422230282072096 17.23756950681282 8.266389738781958 0 0 0 +583 211 3 -0.8476 6.97427468797035 17.61248426688647 10.440734635242483 0 0 0 +718 256 3 -0.8476 13.966610727938773 18.787186536259128 9.059246432430188 0 0 0 +237 95 4 0.4238 2.482978017919997 18.391152324186773 11.678608951138568 1 -1 0 +462 170 4 0.4238 10.307703252681602 19.40879670268801 9.05410643052076 0 -1 0 +130 60 3 -0.8476 14.46327699006248 19.66514390094484 11.485397145457227 0 -1 0 +720 256 4 0.4238 13.217661837076776 19.070863155758513 8.460408162150607 0 0 0 +383 144 4 0.4238 3.5533021915261043 10.935137256889309 12.654783731389125 0 -1 0 +133 61 3 -0.8476 16.51149780470187 10.788229938237286 5.201627541800947 -1 0 0 +511 187 3 -0.8476 1.1543831961823052 10.310487624376274 8.191850041914243 1 0 0 +134 61 4 0.4238 15.632698323193418 11.200996122194294 4.9621749152925725 -1 0 0 +716 255 4 0.4238 11.626630842918797 20.339515205022618 7.996935994482277 1 0 0 +512 187 4 0.4238 1.567722559344666 10.205106901475968 7.287390743726031 1 0 0 +509 186 4 0.4238 10.912595818989244 19.417924622524666 12.89837775340388 -1 0 0 +568 206 3 -0.8476 6.485313610696203 14.44523352047762 16.559346762808755 1 0 0 +569 206 4 0.4238 5.877025478161448 14.853591461355627 17.239958916387955 1 0 0 +304 118 3 -0.8476 3.972168127351238 15.654660056945955 17.403540948690193 1 -1 0 +305 118 4 0.4238 3.3854131498127042 14.920622411377614 17.06162240739048 1 -1 0 +418 156 3 -0.8476 2.2734537776824832 13.394090298029402 17.756318894272294 0 0 0 +306 118 4 0.4238 3.723466580375299 16.51489113835542 16.958399519713794 1 -1 0 +501 183 4 0.4238 2.8455782661452247 12.338053980852902 14.176040664713545 0 -1 0 +445 165 3 -0.8476 5.729110891648391 12.122083027826067 15.433974986322738 1 -1 0 +463 171 3 -0.8476 4.549155758711698 16.77122254564855 13.022854621887307 1 1 0 +172 74 3 -0.8476 2.0677673094230764 19.527911145364634 13.155909715455525 1 -1 0 +489 179 4 0.4238 14.886763033339717 10.902943702023924 18.70189284494204 1 -1 0 +419 156 4 0.4238 1.6504734693675003 13.234408025086623 18.52208606851008 0 0 0 +446 165 4 0.4238 5.710179429818999 13.041573185918448 15.82663266450181 1 -1 0 +420 156 4 0.4238 3.1335652597928223 12.910968687196343 17.92004363905744 0 0 0 +499 183 3 -0.8476 3.6979504775468945 12.369149009344994 13.654029663057878 0 -1 0 +500 183 4 0.4238 4.473726698288414 12.401810668166792 14.284194212701715 0 -1 0 +250 100 3 -0.8476 7.609604863953975 10.606171102951322 16.945230673113805 0 0 0 +147 65 4 0.4238 13.61668681394621 19.964324916590904 19.533511237350798 0 -1 0 +146 65 4 0.4238 12.536466740647986 19.339889174664197 20.586997674791956 0 -1 0 +570 206 4 0.4238 7.376196607403398 14.262759769403841 16.97532363052286 1 0 0 +323 124 4 0.4238 8.730985930270878 15.01364577963519 18.921207974437056 1 1 0 +324 124 4 0.4238 9.459353552713571 15.212836705232725 17.473301605982858 1 1 0 +322 124 3 -0.8476 8.813624638926065 14.65274321341759 17.992272333045058 1 1 0 +200 83 4 0.4238 10.388442485410472 11.91097015701038 16.806022211892135 -1 0 0 +623 224 4 0.4238 6.927586929691289 14.247240193752283 14.41222893771625 1 -1 0 +551 200 4 0.4238 12.247394341229853 11.259529069604119 14.84681275368594 1 0 0 +201 83 4 0.4238 9.71192070215314 12.977793729481439 17.840834618671714 -1 0 0 +199 83 3 -0.8476 9.899149161698215 12.010006135076521 17.672503104553247 -1 0 0 +312 120 4 0.4238 11.79495765458046 13.369509996222956 18.772893074029064 -1 0 0 +624 224 4 0.4238 7.897178590463072 15.319195662378577 13.652340180508801 1 -1 0 +350 133 4 0.4238 16.208874637827858 18.83362085868009 21.47129005078417 0 -1 0 +126 58 4 0.4238 8.88511907083734 13.272142299537386 13.66818822412786 0 -1 0 +622 224 3 -0.8476 7.593373444769949 14.366747565469286 13.67571894110038 1 -1 0 +550 200 3 -0.8476 11.432996415804167 11.567553927000933 15.33862353821482 1 0 0 +552 200 4 0.4238 10.76952107398665 11.935576775479335 14.687194082211969 1 0 0 +124 58 3 -0.8476 9.764955887504145 12.797152211212811 13.684703994662227 0 -1 0 +145 65 3 -0.8476 13.361959064058402 19.150230676335642 20.05540166992056 0 -1 0 +40 20 1 -0.006425533623795996 13.237200000000001 17.832199999999997 23.449863020791625 0 0 0 +599 216 4 0.4238 15.202481084467259 12.24900078170297 16.690922642575146 0 1 0 +251 100 4 0.4238 8.439342401574516 10.980938867010675 17.358856275145612 0 0 0 +704 251 4 0.4238 16.305154322814072 16.042350718561647 17.631988502422384 1 0 0 +703 251 3 -0.8476 16.0883225484333 16.255856181651623 16.67941162794245 1 0 0 +705 251 4 0.4238 15.715587557055152 15.442833175152185 16.232124973929633 1 0 0 +48 24 1 -0.02029044178834072 16.178800000000003 17.8322 23.449863020791625 0 0 0 +559 203 3 -0.8476 15.105531419639098 13.835234878317607 15.170664799706675 0 -1 0 +561 203 4 0.4238 14.406014847882542 14.34932009538237 14.674283203645347 0 -1 0 +675 241 4 0.4238 17.437788579674944 14.421546806543976 19.79224658208944 1 -1 0 +222 90 4 0.4238 15.365101969084085 15.332074787573918 19.959893780942252 0 0 0 +598 216 3 -0.8476 14.485446191543312 11.647768322089009 17.04360100536762 0 1 0 +177 75 4 0.4238 3.61134855335209 11.579252278014556 19.453192026472223 0 -1 0 +310 120 3 -0.8476 12.381985872710548 13.80369947515285 18.089607987476125 -1 0 0 +458 169 4 0.4238 2.6933087112285694 10.351514807091242 16.952058213771583 1 0 0 +139 63 3 -0.8476 13.691362264873232 10.627931433301129 14.158294798087477 -2 -1 0 +614 221 4 0.4238 11.61650220566129 15.485182333983216 17.966722851607205 1 -1 0 +600 216 4 0.4238 13.914747640475733 11.329877307455188 16.286467756847514 0 1 0 +617 222 4 0.4238 13.259523186751528 14.51825781874507 19.356416644998088 0 -1 0 +311 120 4 0.4238 12.776789012062968 13.102786397427105 17.495594179094766 -1 0 0 +530 193 4 0.4238 1.6281735604033576 12.886011322673935 16.268039063851113 1 0 0 +141 63 4 0.4238 13.630765327041322 11.105034290734396 13.28153613591018 -2 -1 0 +531 193 4 0.4238 0.4467031724535419 12.527812716084183 15.199183538889944 1 0 0 +399 149 4 0.4238 6.486830695241165 16.029581701860693 15.666779418386291 0 -1 0 +380 143 4 0.4238 3.5853869202872657 18.660092474563687 18.603647711199425 1 -1 0 +464 171 4 0.4238 4.023461569086171 16.009792558697868 13.40215734502378 1 1 0 +428 159 4 0.4238 9.469055750500404 10.667524387442267 20.937661270126558 1 -1 0 +397 149 3 -0.8476 6.413895340325838 16.8360319627653 15.07998984725994 0 -1 0 +319 123 3 -0.8476 0.7829907556311054 16.744941337967973 15.272421110502437 1 0 0 +398 149 4 0.4238 5.749127839593244 16.66081301160753 14.353776938898731 0 -1 0 +528 192 4 0.4238 8.975850745071186 20.350056923475165 13.990790392092903 0 -1 0 +321 123 4 0.4238 0.12521342288041218 16.277401530292295 15.862964127879662 1 0 0 +490 180 3 -0.8476 3.125563432540245 18.468684529246257 16.74556745319216 1 -1 0 +491 180 4 0.4238 3.575636793388386 18.624126139932855 15.8662072375943 1 -1 0 +492 180 4 0.4238 2.578632077563288 19.27047397837691 16.986406012030017 1 -1 0 +659 236 4 0.4238 1.0298389225267837 20.168025384298502 20.026919057347232 2 -1 0 +249 99 4 0.4238 0.16814848071124128 16.21206933125259 13.713202558066024 1 0 0 +164 71 4 0.4238 0.5299522359953556 20.257624996360576 17.55648066935482 0 -1 0 +162 70 4 0.4238 16.66913392996693 10.45829253707763 19.795901801640834 0 0 0 +371 140 4 0.4238 11.056255566760345 16.598270748160388 15.718911806822456 0 -1 0 +370 140 3 -0.8476 11.298560558575987 16.404137638756527 14.768331949474652 0 -1 0 +610 220 3 -0.8476 9.182998099495135 16.844324083314575 13.063635808058317 1 -1 0 +154 68 3 -0.8476 9.372552675513472 16.050092330482723 20.09128772182719 0 0 0 +155 68 4 0.4238 9.045313534743997 16.990624622451623 20.000103598074276 0 0 0 +156 68 4 0.4238 10.11796075622463 15.89226417482912 19.443632058888397 0 0 0 +612 220 4 0.4238 9.912940585757283 16.62881769597969 13.71228285972464 1 -1 0 +183 77 4 0.4238 7.463961847985207 18.60237515839614 19.98843047486115 0 -1 0 +629 226 4 0.4238 6.710399312260268 18.123336806911855 16.079630988721004 1 -1 0 +182 77 4 0.4238 7.757164552671424 18.810844945497134 18.395570465863837 0 -1 0 +181 77 3 -0.8476 8.125126014517141 18.452044538789227 19.253401321364763 0 -1 0 +611 220 4 0.4238 8.931884466842028 17.808185361298875 13.152595651819967 1 -1 0 +628 226 3 -0.8476 6.9796091824851425 18.952004521134636 16.570383047183572 1 -1 0 +630 226 4 0.4238 7.708609412032784 19.4156379445819 16.06679113644326 1 -1 0 +487 179 3 -0.8476 15.066619024936566 10.249951535799466 19.437593400150895 1 -1 0 +526 192 3 -0.8476 9.129233109396537 19.581112471942753 13.37014199224269 0 -1 0 +151 67 3 -0.8476 17.426283060222275 19.58522448708249 14.435121464885997 -2 -2 0 +160 70 3 -0.8476 0.01506610403255687 10.548473719534147 19.830294631268465 1 0 0 +351 133 4 0.4238 15.056477500508233 18.63959592950024 20.330692470756837 0 -1 0 +372 140 4 0.4238 12.170052868259033 16.843340153646995 14.550139731531836 0 -1 0 +473 174 4 0.4238 14.26517035940876 17.98252701799394 14.507717382131688 0 -1 0 +669 239 4 0.4238 15.647005666799474 17.715015917343795 16.152341030706786 1 0 0 +220 90 3 -0.8476 16.219792055920426 15.707023482600887 19.60084001936226 0 0 0 +221 90 4 0.4238 16.33803818547856 16.64326825776226 19.931693947174367 0 0 0 +349 133 3 -0.8476 16.000726312606744 18.426710693303725 20.581851466927844 0 -1 0 +176 75 4 0.4238 4.728802867281302 10.760075907012997 18.588971835799967 0 -1 0 +472 174 3 -0.8476 13.537149582394218 17.542196784550853 13.982262808143558 0 -1 0 +286 112 3 -0.8476 12.565689798467716 18.517223262424135 17.37055509192227 0 -1 0 +287 112 4 0.4238 12.767092649586525 18.693595832778726 18.334054128623215 0 -1 0 +288 112 4 0.4238 13.312023375950227 18.86734630158713 16.80451492455031 0 -1 0 +667 239 3 -0.8476 15.34738402069065 18.575704886300255 15.74070654907211 1 0 0 +557 202 4 0.4238 2.0877847893502692 15.917637143334856 14.598779519777349 1 0 0 +668 239 4 0.4238 16.102271316982648 18.97804359363653 15.222758820554837 1 0 0 +233 94 4 0.4238 16.939408664150182 19.300736366917782 19.285818625681394 0 -1 0 +232 94 3 -0.8476 17.251185745369266 20.17960735549295 18.92473073318461 0 -1 0 +556 202 3 -0.8476 2.5142033450925534 15.10859384094593 14.194283647198105 1 0 0 +613 221 3 -0.8476 11.029798398400157 16.24252383347896 17.67998671968566 1 -1 0 +615 221 4 0.4238 11.597398207517758 17.002005745636787 17.362143868985218 1 -1 0 +447 165 4 0.4238 6.2756188615712825 11.521571558695248 16.017683721626977 1 -1 0 +453 167 4 0.4238 3.215029455130721 15.987095453067399 19.079850682663047 0 0 0 +452 167 4 0.4238 2.0544632500236664 15.323519686230991 20.017604338312154 0 0 0 +451 167 3 -0.8476 2.772338132809199 16.01844856447551 19.975979335062384 0 0 0 +427 159 3 -0.8476 10.261611448686569 11.049130758551382 20.462021892602714 1 -1 0 +429 159 4 0.4238 10.007428161019474 11.279799732432494 19.52277538343466 1 -1 0 +14 7 1 0.003164654221259076 4.4124 12.7373 23.449863020791625 0 0 0 +7 4 1 0.009893054359739757 1.7763568394002505e-15 15.2847 23.449863020791625 0 0 0 +6 3 1 0.007054820838538483 1.4708000000000014 12.7373 23.449863020791625 0 0 0 +15 8 1 0.01742682861283385 2.941600000000001 15.2847 23.449863020791625 0 0 0 +410 153 4 0.4238 10.111531319873574 14.412553872150411 20.82849386163515 1 -1 0 +411 153 4 0.4238 10.469141456583753 12.84237118855151 21.09917747701026 1 -1 0 +23 12 1 0.002267061274119069 5.8832 15.2847 23.449863020791625 0 0 0 +22 11 1 -0.00588542885415537 7.354000000000001 12.7373 23.449863020791625 0 0 0 +31 16 1 0.004565600593305302 8.8248 15.2847 23.449863020791625 0 0 0 +30 15 1 -0.005925222637524864 10.2956 12.737299999999998 23.449863020791625 0 0 0 +409 153 3 -0.8476 10.837769824697997 13.725395752659518 20.80869263231772 1 -1 0 +674 241 4 0.4238 0.39525518297454587 12.95332622295135 20.169962624276398 2 -1 0 +673 241 3 -0.8476 0.6270046999503937 13.886923561797822 19.896670228457296 2 -1 0 +616 222 3 -0.8476 13.68828360729474 14.607480608256637 20.25542035696146 0 -1 0 +618 222 4 0.4238 12.980122773618541 14.639356060980928 20.960754364272496 0 -1 0 +47 24 1 0.007459299037120008 14.708000000000002 15.284699999999999 23.449863020791625 0 0 0 +39 20 1 0.003376862325317847 11.7664 15.2847 23.449863020791625 0 0 0 +46 23 1 0.009768162996603134 16.178800000000003 12.737299999999998 23.449863020791625 0 0 0 +38 19 1 0.011451708519644 13.237200000000001 12.7373 23.449863020791625 0 0 0 +529 193 3 -0.8476 1.4045836747088354 12.797677923854442 15.297364918402971 1 0 0 +379 143 3 -0.8476 3.6479330411961883 18.493128836123883 19.58762503197076 1 -1 0 +165 71 4 0.4238 0.6364380304987282 20.088673926904107 15.935757183747858 0 -1 0 +660 236 4 0.4238 2.12389322021301 19.263967819272075 20.834602549240042 2 -1 0 +658 236 3 -0.8476 1.5737386108979707 20.098541840243776 20.86318845039298 2 -1 0 +560 203 4 0.4238 15.394781076902573 13.050765407651904 14.622081620313322 0 -1 0 +381 143 4 0.4238 3.2550133288406142 17.598298120219788 19.799504375422842 1 -1 0 +125 58 4 0.4238 10.47743096516406 13.402844176984058 13.330419032611076 0 -1 0 +506 185 4 0.4238 17.00798692793307 10.56073453324316 15.263209711132241 -1 0 0 +8 4 1 0.007878856031568425 1.4708000000000023 17.8322 23.449863020791625 0 0 0 +16 8 1 -0.02162051739161995 4.412400000000001 17.8322 23.449863020791625 0 0 0 +454 168 3 -0.8476 6.1211530914480035 18.877217060758102 21.057303091018483 1 0 0 +455 168 4 0.4238 6.016004433060814 18.378364098649328 21.91758892263117 1 0 0 +456 168 4 0.4238 5.249585193480707 18.883650340743063 20.567064277406875 1 0 0 +24 12 1 -0.02105358127656316 7.354000000000001 17.8322 23.449863020791625 0 0 0 +32 16 1 -8.633878219141563e-05 10.2956 17.8322 23.449863020791625 0 0 0 +474 174 4 0.4238 13.940539993728047 16.977316374214087 13.262406896868265 0 -1 0 +320 123 4 0.4238 0.45185935575146113 17.666250404746776 15.068591299890938 1 0 0 +173 74 4 0.4238 2.7498380997441414 19.67489584208449 13.872273730507478 1 -1 0 +175 75 3 -0.8476 4.212203814165672 11.613788132755259 18.65457863001542 0 -1 0 +152 67 4 0.4238 0.6848929361146843 19.37421734773228 14.07318618999465 -1 -2 0 +505 185 3 -0.8476 16.758143951478264 11.211629355559246 14.546329703315896 -1 0 0 +558 202 4 0.4238 2.2322174055594726 14.29431286166049 14.701660067407344 1 0 0 +510 186 4 0.4238 12.208040730030191 18.659648620639253 13.541393467576771 -1 0 0 +374 141 4 0.4238 9.497589320200765 19.8441690425366 18.526563503706242 1 -1 0 +153 67 4 0.4238 16.840552768523775 19.914595574397616 13.694556413474471 -2 -2 0 +163 71 3 -0.8476 1.137603810251879 20.333101852965335 16.765870695643105 0 -1 0 +507 185 4 0.4238 16.68943419233681 10.7331700931247 13.670909273297896 -1 0 0 +632 227 4 0.4238 9.059492914790276 11.263838240899624 13.232125352935022 -1 0 0 + +Velocities + +49 0 0 0 +50 0 0 0 +51 0 0 0 +57 0 0 0 +58 0 0 0 +59 0 0 0 +676 0.0021411732266066546 -0.0031466597050466686 0.006950385069113567 +677 0.00471300605204294 -0.010676608272384733 0.0027534373566423364 +678 -0.008823855984279599 -0.007959499471369818 -0.004534651421080043 +709 0.005380424876014373 0.006307583340186229 -0.0018881938332245358 +195 0.0035011066672069953 -0.018982633794167522 0.013387657244058954 +193 -0.0016243730866856681 -0.0009043410307212374 0.00442651336838353 +194 -0.016844359613345537 -0.0020052459554273784 -0.01311294231282549 +103 0.0015806838149129447 0.002560824201124871 0.0047168491592377345 +710 0.007830390266471615 -0.009204470955483884 0.04052260106336803 +713 -0.011412032208487173 -0.0013968159548142917 -0.01011897403656863 +65 0 0 0 +66 0 0 0 +67 0 0 0 +73 0 0 0 +74 0 0 0 +75 0 0 0 +712 0.00439112600296801 0.00360710731488533 -0.0039525073869872964 +714 0.014803144807230072 -0.010674744767348688 -0.003430825293082879 +604 -0.00011827390695045583 -0.006806704613944644 0.0027321887706147296 +189 0.008154941183069432 0.00402238852258463 0.006084124951427027 +170 0.0013361044299764954 -0.00017168208250770554 -0.006118458408511565 +315 0.0037328380509703343 0.017096489497345373 0.013207513139570021 +605 0.003503171355645862 0.00393175960965181 0.01269038834140635 +116 -0.009757167707959114 0.010598646892323519 -0.010231402748289127 +388 0.001747370305520368 0.0018503925217209565 -0.0005923969541604404 +389 -0.02015066489450734 -0.008493989807482257 -0.009473043666461643 +586 0.0050721953206553675 -0.002995629227084019 -0.0022560086328735564 +81 0 0 0 +82 0 0 0 +83 0 0 0 +89 0 0 0 +90 0 0 0 +91 0 0 0 +601 0.0013661096020166409 -0.003796167035264375 0.0063671190647323125 +602 -0.008528174022195655 0.008966924162453272 -0.0044782466696049895 +107 0.002028194218827179 -0.012365773885091972 0.011299553506975946 +603 -0.0030874748643350066 0.0020597842518737266 0.005359799428542693 +378 -0.009420735022443168 0.009599931914543234 -0.009184011191465311 +422 0.0010193233677437787 0.005769570923430941 -0.0006033266822692004 +52 0 0 0 +53 0 0 0 +60 0 0 0 +61 0 0 0 +316 0.002099526043199114 -0.0045408329717682855 -0.0028575294101176726 +423 -0.0017639729433514052 0.002384599378075939 0.006405279839456641 +421 -0.0026843238108787987 0.0046959324815539945 0.0006610392109797653 +643 -0.003182764168498806 -0.002245164669701677 -0.0020501158160216556 +644 -0.02278045268171879 0.008802300249148224 0.014781779450300365 +581 0.014810628036019674 0.0056131550207308666 0.001138473889555862 +426 -0.01183599814307284 -0.0030118119812299515 0.011634339637079983 +582 0.011911283072524504 0.002506814749779835 -0.001888380076239702 +299 0.00994979834473168 -0.0096597572982869 0.006175710613675385 +691 -0.0026712809298204015 0.005580991440600302 -0.005608206061799583 +693 -0.014851955236401738 0.019823950564919104 0.005329652535995544 +369 -0.014885149160620455 0.006101800275190467 0.006812320026047257 +300 0.0008158139232951453 0.00232745268131941 0.00015792455194356278 +367 -0.0049456849226559435 0.008314528563211335 -0.002138833331259298 +368 -0.005849586902335537 0.016404409742447917 -0.023365351477116908 +68 0 0 0 +69 0 0 0 +76 0 0 0 +77 0 0 0 +169 0.005590524540675908 0.007794464783479033 0.003654628816346811 +171 0.012286139005426607 0.008057541351814898 0.0020922247023472014 +425 -0.016526775746840687 -0.0019895804930743877 -0.0012848640610859466 +543 -0.008403263122905095 -0.010110530886943685 0.0016250745100911436 +522 -0.00235343490059379 -0.005821725621201975 -0.014831986110216069 +541 -0.002052849658527383 0.001446847447984322 0.0015600130792332112 +520 0.0005441812914655316 0.0020611556729780707 0.0017969804508576564 +521 0.01905794717342043 -0.002386834191950047 -0.0014130319315243112 +213 -0.0036990379004162195 0.008707625631414345 -0.019663536410738924 +84 0 0 0 +85 0 0 0 +92 0 0 0 +93 0 0 0 +211 -0.005623424343732137 0.00041450752084430637 -0.00187652360271947 +212 0.006534163449200209 0.005670602877114846 -0.0069945707656233055 +205 0.008555811513959347 -0.002709371287039603 0.0014234983072410974 +207 0.01677499159222979 -0.003385261115317942 0.008761159144685641 +206 -0.0001887616937573145 -0.004069535594198049 0.0036374306485813203 +188 0.0030565470233890027 0.008303749761324268 0.0014899500510024226 +104 0.0036813924474077115 0.007994502590776614 -0.03313731805992863 +240 0.010056751094400922 -0.013332457722194798 0.036809456838136606 +186 -0.0012950439927692653 0.002894648277169305 0.006583342682271782 +627 -0.011158521584990703 -0.0009662710867750767 0.006042395691770004 +679 0.006444076291197415 -0.0014424205891745063 -0.0014998614075233054 +298 0.001415424120738642 0.003068364998106709 0.004182110752503899 +498 0.0015425122749562377 0.016719318190993645 -0.007505001561501574 +242 -0.02456132712089157 -0.00499984312835767 -0.017843586754103514 +497 0.007139149173339814 -0.0145879096307924 0.012441864775946854 +496 0.0010186556613462456 0.005655575482822908 -0.006762667135991682 +243 -0.007715796816331542 0.008719348744647202 -0.007300486873615359 +653 0.010449033256064723 0.004309437854212114 0.000935271957518078 +291 0.004183977929022222 0.0034791720281195566 0.008654935223702453 +476 0.016439414220948263 -0.0010854446635568742 -0.046096342306847136 +626 -0.004396560653690805 0.010758464422674686 -0.0049427779061986445 +187 -0.004442223772804815 0.0047589723343784175 -0.0006148440280884378 +198 -0.017122202248149542 0.004671830831065398 -0.021591592448874278 +477 0.0040737641278782745 -0.04058404020647128 0.019242920253909494 +385 0.007886786472273232 0.0013311289547582469 -0.006409370965421947 +432 -0.005112477606678751 0.009856086607739475 0.0027357065631810756 +386 0.02463926635147559 0.016683088148706424 -0.009438473091688007 +387 -0.00010606347230315728 -0.0020318345731269952 0.018980717561988752 +431 -0.007493012343989028 -0.00807857236319325 -0.009881982085251819 +430 -0.004524910755669161 0.0069218123924701105 0.0028532664656262 +475 0.0005240789999880052 -0.0036600642125827463 0.0005837376117434307 +577 -0.00039257654752591074 0.006216233007986547 0.002821290791104702 +578 0.020057630069978766 -0.004246264624556574 0.02613706699373874 +579 -0.007622100966699831 0.0073994147205036324 0.0020110299310591565 +282 0.0008362717929222001 0.0042467846601403755 0.0027792731068598457 +281 -0.0022527029426062414 0.003975642769665842 0.006531907364618286 +280 -0.0020932155844553303 0.003303421993385573 0.005106114099904367 +576 -0.021795680954640875 0.00033248379966947404 0.0035909079681866697 +115 0.0009651319566518861 0.001613687366934229 0.0031050301198059047 +117 0.007092275821736963 0.016601328333389103 -0.010174399596936017 +654 0.006666123396093453 0.0034820782549897476 -0.007548491071939311 +196 -0.007724650614744938 -0.004434335618261068 -0.006100969448446816 +353 0.0012893706598156962 -0.003696189678514886 0.006810683602718142 +575 -0.00015451142420669985 -0.007903206226872591 0.0053590040277165804 +390 0.0019318952353184432 -3.915485612460652e-05 0.02512946163532081 +468 -0.02149606396352213 -0.014627346139848459 -0.02322137074184742 +680 0.0021316175435442384 -0.006654962178855455 -0.0001873582646005704 +401 0.010401215314564395 -0.01960362072239097 -0.01515973547470601 +241 -0.005230192439982171 0.007020204461620798 -0.0013500646300778566 +400 -0.006812157761295941 0.009089711854151245 -0.0036543826545893435 +562 0.0019804650115473567 -0.00028603596969985575 0.005858052848098717 +563 -0.01218620597672023 -0.015524824921392979 -0.008793186490164185 +564 -0.008935569769710614 -0.019371477501039753 0.004169465211802351 +687 -0.02132702946477968 0.002624497943599152 -0.009338031127366477 +467 0.012537198784621843 0.002965885297784254 0.004720391558890157 +666 0.00798795194024716 -0.030319685798422914 -0.0020188158019839183 +664 0.004749322796011822 -0.0043766561886238765 -0.0049774737380464725 +637 0.00588099891901965 -0.001216339123192569 -0.0026242446564109594 +290 0.014516979272844701 0.0015897248385656547 0.005707976744589011 +652 0.006850034980395777 0.0026782797648557486 -0.0015069280546491383 +402 -0.0034976084774069804 0.004535202116435988 -0.005087829093657203 +257 0.0012607025312018137 -0.009368212646836838 0.006968118390459642 +256 -0.0018478117849684223 0.002025941765796813 0.003727441819147934 +424 -0.006901245522197137 -0.0013303335985025966 0.0011059441800063592 +665 -0.004108673022343136 0.02756341408187244 0.004998477269975495 +122 0.03325733328895117 -0.009837145275822285 0.010300807091427751 +258 0.02352477625978478 -0.000800587290288175 -0.002937467081773502 +466 0.0008211706166287764 0.0037786952682420934 0.0028864889717026224 +377 -0.006791525954268541 -0.012741664603392176 0.008960836876523243 +105 0.0075254897454936276 -0.004097719399251073 -0.012147216735037885 +580 0.0037274873834820628 -0.00451385869218868 -0.0005479283373083121 +638 0.02378979194655618 0.01258017180535563 -0.014888606022849447 +717 0.0008536852916907268 0.00758135276550789 0.00866904087809462 +352 0.0013677093267280443 -0.0035327394727749832 -0.0021756600763700967 +137 -0.004025571305218045 -0.0011771198658975714 -0.0028210853387310437 +692 0.0019285659783500123 -0.007498396388372936 0.016327933902900025 +645 -0.006334167147176737 0.0026932034532357765 0.03810632174272965 +185 -0.0258016499999917 0.002966337289661987 0.0192775032868555 +292 0.0032239529951158365 -0.002940539950527776 0.005128379648619589 +294 -0.002882030968976172 -0.009999674767135671 -0.004996218559394716 +574 -0.0017098010265335615 -0.006233341003337626 -0.003130881298453147 +711 0.011550634037340288 0.005661405841651928 0.016230520184342886 +437 0.016623543237673673 0.021126526281754876 0.01525697145973429 +436 0.0011580833433645576 0.001866769096270803 -0.0020668982892715054 +588 0.003788053246840207 0.004318290540820436 -0.009756708962759054 +438 0.002778859820834817 -0.0006615532270598109 -0.0008258015725774891 +701 -0.0077340127867783545 -0.0012750504303974512 -0.0015549160015513451 +700 0.0003771746026641942 -0.005971056101101204 0.00048713541643599623 +513 -0.007685562035241124 -0.003451884123490726 0.011140761717829488 +106 0.0012167401758591842 0.0005190446916700595 -0.0005689566549062379 +702 0.0012360073361495057 -0.014010782072965118 -0.00023435212022074399 +138 -0.00844580607399001 0.002622106272118458 -0.006828542248324802 +542 0.004462053398768184 0.00798739986184309 0.005271563844807477 +376 -0.002635850208642133 -0.0009250576279445919 -0.0022212103610827097 +639 -0.009436328867848297 -0.013749239756427646 0.006593851052360545 +524 -0.005123725178539699 0.015426884373031625 -0.01834347769166834 +360 -0.004178590839375953 0.012772866811974804 0.009637982488128747 +359 0.001703407707272143 0.009108089839648342 0.0055708198881699615 +358 -0.00036687245580791145 0.005831964931051857 0.004159047388106057 +289 -0.001595283063915116 -0.00038607006533445217 0.008644630517419101 +384 -0.0025783811970427543 -0.010842560568130202 0.0002485575154442456 +406 0.008334788236422419 0.0010503441284235345 -0.0023800280127281867 +408 -0.008249724433327414 0.0125860312627397 -0.013608031710222075 +523 0.002630732510263263 0.003918200827993626 0.002970183260485006 +407 0.0010126932985940003 0.004105264448148497 -0.0008185914388617361 +525 0.015007331123588413 -0.002998296737147837 -0.044921726699770494 +625 -0.003508771931501176 0.0027372555782873113 0.0013339734432499892 +136 -0.005107835457616012 -0.00017978248743965154 -0.003988644887833829 +587 0.0006181639400713768 0.001490404492305943 -0.005441807772501442 +184 0.006119642789751914 0.002129260802961511 0.000355130366432989 +404 0.0055448536095734375 0.0007743654867219097 0.016037969196716063 +313 -0.004078044888590166 0.0008247081419541478 -0.0005316362965100083 +238 0.0018177803681502889 0.001226893367767893 0.0007423981284663952 +461 0.0009318635511549625 -4.928350118386009e-05 0.0045466223791930825 +354 0.001972954579596857 -0.0043780296240654385 -0.01077371477183407 +314 -0.009623735019970261 0.00665798742211111 0.02408146022132393 +403 0.006589710410456089 0.007960810210289698 -0.0020320127654004315 +698 0.00031058122010607815 -0.010174080916795681 0.006501436501535736 +114 0.013755765119664892 -0.013815807900815349 -0.008433355002016293 +697 0.0007293039474806055 -0.0017923216167614411 0.003822203247328284 +606 0.008037094668825863 -0.011716121615248383 -0.01219235266766627 +317 -0.014708949199744841 0.009643525399184418 -0.0020141933611741514 +108 0.03603925575757461 0.012858477843299815 -0.009808108963212754 +382 -0.0028195334564676882 -0.0005791679751282715 0.00626241480650448 +219 -0.01247120825189971 0.0030987939456600623 -0.01140054054306225 +670 -0.0009417370514361473 -0.00047014470829927983 -0.002823228428905164 +396 -0.005706783431449613 -0.011306512585110057 -0.009211332176758109 +395 -0.023204652307578223 -0.011850758133780951 -0.014161496708519091 +394 0.0029623638021562065 -7.495431979780323e-05 -0.0017703271435133582 +204 -0.009868889536072716 0.02769142115737454 0.0017278949223337818 +608 -0.00450536239188671 0.002161396364473985 -0.014865545157464521 +203 0.0030390793343812923 0.007253293998996769 0.002638515417395934 +202 0.002472172566760438 0.0031112304950174172 0.005448652165971851 +486 0.0032226946473274958 0.027815340414288316 -0.0050285190432157985 +347 0.011618224126060037 0.010964925075023732 -0.006653010163344175 +45 0 0 2.5892839001447932e-05 +471 -0.007037423015746189 -0.003782108828722424 -0.011604084450051443 +348 -0.007877981592598695 0.00414031561501778 -0.0030371587615563864 +275 0.0027899592485585616 -0.011786738734745311 0.0008697111063236321 +346 0.0014770373743619686 0.003355855691268311 -0.005340974682633985 +572 -0.0025855405956535737 -0.007377959785635259 0.005585381444125606 +338 -0.0070240134955776665 0.004933198476666814 0.0002829725739334517 +485 -0.005851182975421713 0.013136051886263062 0.012654523591979782 +571 0.00834830199522675 -0.0009831706646230961 -0.0015188720646701576 +591 -0.014367954804647138 -0.0282607848831299 -0.0021645959273891365 +589 0.004702184319895896 0.0032133515813428256 -0.002238551119579548 +607 -0.0077765081012144705 -0.000563208567949008 -0.0033449827357436538 +609 0.00272424910864701 0.008195494864301909 -0.03137225773080429 +180 0.0008690738597768954 0.005018713025200337 -0.002945938694498902 +274 -0.005699313791818707 -0.004759962610832066 -0.005872756565232799 +686 0.008217894207660833 -0.0100983629438411 -0.021635270384703958 +671 -0.00024128230687570196 -0.021572647010253177 0.015357674519379468 +672 -0.0012462607034635857 -0.007069689753832631 0.00381563953963042 +112 0.005190774999806905 -0.005729811432305558 -0.0060176087276321245 +681 0.0007714432326670715 -0.004259570858526994 0.0008648677556282801 +113 0.0043631901827183815 7.2629853515748496e-06 -0.016906736065202134 +344 0.0006884579264700855 0.010742221645104114 0.011459152479148704 +343 0.0008499678995289771 -0.0009767427603578425 -0.0031023296178217664 +345 0.0020361124741315505 -0.0003990095428137886 -0.004264505629606172 +255 -0.007269101324618613 0.011421184414796655 0.003680445929695058 +254 0.006698925536045348 -0.0016114719270781995 0.005001912184894123 +309 0.0026873735966253492 -0.003516917240483255 -0.017190081722208775 +253 0.0010722910362563373 0.004038576864854738 0.0014868195441214305 +479 -0.013992183831219059 -0.02537860894898881 -0.00897013602536543 +109 0.002777209346426365 -0.001936144063141461 -0.0069405893687318095 +480 0.018491401867564334 -0.003446569057091999 -0.009085032649696024 +375 0.01146247831539809 -0.002217879718471049 0.0033766238753439658 +44 0 0 2.5892839001447936e-05 +110 0.0019920646548702734 -0.006687944878399153 -0.016768903427213912 +307 -0.0002242679944927341 -0.0028719408963667494 0.001806513745984584 +685 -0.0005070695650422137 -0.004796427068777599 -0.004675336978463182 +635 -0.006874160125070285 -0.0014608020876715408 -0.02409078032412396 +636 0.010895677030626532 -0.0037324590359100168 -0.00047381957852790586 +271 -0.0006627518310477532 -0.0006417588443855544 -0.000925908330851208 +722 -0.008255845250114668 0.00023297165630569398 0.0024535094545625113 +481 -0.005629526983345739 -0.0031242149927506956 0.0037214577831749165 +721 -0.001593152923256278 -0.0007609137655317765 -0.008921595727198363 +483 0.0018748021123651613 -0.0041152897635225805 -0.013180944449052353 +723 0.014252615954590953 0.004118554178258352 -0.011499683175531865 +482 -0.007456018443800531 0.022105815174257835 0.017712618439186752 +210 -0.0015471256324352317 -0.013597641088573208 -0.006216934372877166 +208 -0.0014177674098368779 0.0004455926366301616 0.00017918089607261745 +469 -0.0005997161956485187 0.004690227452983195 0.003880946509081852 +209 0.012946439616943303 0.0003010845740829233 -0.024955441077315038 +688 0.004244333938104657 0.00088687279816499 0.00042834367934795574 +690 -0.01615279858740688 0.013008480696852221 -0.002485959767769533 +634 -0.006715643473882907 0.005128315157175796 -0.0028461075943380623 +689 -0.02883305567581292 0.033940126886677344 -0.002767256806642573 +662 -0.01022324961652937 0.02459966582402962 0.007784567790126536 +149 0.003448328041689386 -0.006877133198457014 0.003969592342967052 +590 -0.02195059781319254 0.033237536847323716 -0.006017526921710795 +433 0.00272180042867418 0.005464940336619222 -0.007183585266666167 +435 -0.00997731338770566 0.018353157147169678 -0.012308600735794373 +102 -0.004933393112589753 -0.0014184896165212457 0.00282315695425379 +140 0.0037442461642616855 0.0008981125403190698 0.017717716926278767 +417 0.008997384653293916 -0.0007344093814239228 0.006883529345814865 +415 0.0010928032033067465 -0.005899521475255703 -0.0035861446547572782 +416 0.010512486392201103 -0.00010648666874990137 0.006727460050107925 +459 0.019803011405952094 -0.03588714256147905 0.008839860703799078 +217 0.0019975096609847784 0.007198832692135352 0.007528959939583509 +478 -0.003112488499603424 0.003929662738660447 0.0028623819844919673 +361 0.0006999918066639268 -0.004357350629198427 0.00022328947844429584 +197 0.0056318114382033204 -0.01769689459774823 -0.010011278507051987 +650 -0.013351051426644498 0.005724197454670781 -0.007295403538761586 +488 -0.0020278193298860344 -0.014631550395182694 0.006454598682826132 +484 0.0007862864811946282 0.005692991164955517 -0.0020259406411123064 +661 0.0014175655249771993 0.002025210035311634 0.0015878833296731276 +363 0.005742013891446284 -0.008837413122760119 0.0011588715258481145 +100 -0.0018359970011427253 -0.0034868726137758537 -0.0012239581668545684 +707 -0.009434545254390386 0.004083690301746898 1.2720907411063185e-05 +178 0.0002213341038015743 0.00042280505641683046 0.0012455284523796245 +684 -0.0016857583723109088 0.01457015268967376 -0.01248668591187947 +36 0 0 2.5892839001447932e-05 +276 -0.01288304297198337 -0.0024180918894788875 -0.009445007106884281 +214 0.0040375473866697525 0.004832098072512322 -0.0011350282263338225 +216 0.003281923037182911 0.012991080014267777 -0.00640293960536805 +539 0.005431350013191119 -0.02106556848906726 -0.00764575525773749 +538 0.004112938902306128 -0.002290109903302108 -0.0010714133951981704 +252 0.014720479077525389 -0.004278515844677452 0.00617407962447848 +228 -0.02651274201810521 0.006169895153203455 0.0026039557167579757 +226 -0.005986759492118269 -0.002624851477283382 0.002437497167111253 +227 0.037359535164647996 -0.005692341539956028 0.0007690705251742958 +540 0.029556683797969833 0.028216009622947624 -0.007637203209894227 +596 -0.000697425483047941 0.001418504974987797 0.0025860571290182237 +215 0.0019872688713270963 0.009030373521039053 -0.0024074898093308073 +234 -0.013734641718106119 -0.006668468740782935 -0.01326772362636071 +706 -0.0074752312033302334 0.005036319412231939 0.0023954321652624308 +708 -0.0008425953758246843 0.009181695196824482 -0.009248661735532846 +373 0.004422144964975159 -0.0017838198122578036 -0.00018027826543031534 +272 0.013275855183390188 0.014396950748917418 0.0007514222935930509 +273 0.005974305377988905 -0.0017929350389151585 -0.004011080458908929 +362 0.005928696718884773 -0.0061635334731560834 -0.0070875384379755196 +597 -0.011587275738507787 -0.0026775845755159858 0.005599952012635736 +519 -0.010602493961103342 0.01561109572005503 -0.004366769028339268 +682 0.001983241531391707 0.0001436343494854703 0.002165088698424475 +161 0.009978689554182 0.001974367386088278 -0.005346935314707327 +683 -0.011175053949123178 0.011604486671463417 0.005680469507150669 +339 0.011317559380578967 -0.013840330482369045 -0.013807747849132778 +470 -0.012260116006234724 0.0029555761306863846 0.02022738168370677 +595 -0.0012887047489432875 0.0007223671835801802 -0.0028794772050928733 +649 -0.001959620111970716 0.0027086652664905795 -0.004508497780011865 +179 -0.008134269078556558 -0.018166688138021095 0.0007578460469746819 +308 0.0220712849298707 0.00809270514744733 0.0063544521946541635 +663 -0.018587653237992264 0.008058025396004323 0.003021049320538634 +337 0.0009033685485476928 -0.0015102179823566727 -0.0064849412993145715 +327 0.00783068755116193 -0.006919671129723819 0.007255760426290675 +325 0.0014839226012046617 -0.004293646082977329 0.003541697150309064 +326 0.009138500341898103 0.016222223033475605 -0.004576555598052157 +535 0.005511650342351115 0.003976008787370079 -0.0035332740014495886 +537 0.00039714859735720515 -0.0034221246954245044 0.004417018509094299 +2 0 0 2.5892839001447915e-05 +1 0 0 2.5892839001447912e-05 +11 0 0 2.5892839001447912e-05 +3 0 0 2.589283900144791e-05 +10 0 0 2.589283900144792e-05 +9 0 0 2.5892839001447915e-05 +536 -0.008139619366591666 0.023305802200695613 0.020099395824835317 +516 -0.01472371433290118 -0.00947034405699238 -0.006759743057624231 +111 -0.0005643300911320225 -0.00203649367262994 -0.0031700572161786175 +515 0.0021658009569283476 0.013002309599111122 0.023091810824977285 +514 0.002194248370768298 -0.00477869990315876 -0.001376235961931239 +168 -0.007642051948728814 0.0025148703254984145 -0.0010089913229547366 +166 -0.0018884353605177553 0.00853020828258679 -0.005584376923825304 +17 0 0 2.5892839001447922e-05 +19 0 0 2.589283900144792e-05 +18 0 0 2.5892839001447925e-05 +27 0 0 2.5892839001447922e-05 +26 0 0 2.589283900144793e-05 +25 0 0 2.5892839001447925e-05 +434 -0.0131141501224289 -0.029735168306092356 0.018069386056516087 +41 0 0 2.5892839001447936e-05 +42 0 0 2.589283900144794e-05 +43 0 0 2.5892839001447932e-05 +33 0 0 2.5892839001447932e-05 +35 0 0 2.589283900144793e-05 +34 0 0 2.5892839001447936e-05 +518 -0.003364650601080657 -0.0025510701028415793 -0.019031077701915526 +101 0.0066056761815660925 -0.025335359921442018 -0.0042522676779589135 +517 -0.0042150036150125966 0.003039265084075177 0.001234238912865041 +150 -0.003263779481471764 -0.006968079925877713 -0.0285427305003533 +37 0 0 2.589283900144793e-05 +13 0 0 2.5892839001447912e-05 +4 0 0 2.5892839001447912e-05 +12 0 0 2.5892839001447915e-05 +148 0.004337680509183382 -0.0024120213706328784 -0.0023459000779718947 +5 0 0 2.589283900144791e-05 +167 0.0022761530768332797 0.0009747010232492098 -0.004993243345757521 +328 0.004462110300378782 0.003171460897117234 0.0013533076822872438 +329 -0.0028078357210696643 0.0006206344128711716 0.006200475106646407 +330 0.030738960581955917 0.003287330484129426 -0.010708188876434703 +28 0 0 2.5892839001447925e-05 +29 0 0 2.5892839001447922e-05 +20 0 0 2.5892839001447922e-05 +21 0 0 2.589283900144792e-05 +457 0.006550818533058792 -0.001884276384381016 0.003039243394733296 +573 0.013975969924696937 0.0024199182318704903 -0.0034702509100560364 +651 0.015420309153338693 0.010283570358113264 0.02634159883149936 +218 -0.003395956296838163 0.00547325260028855 0.0019942972776871965 +54 0 0 0 +55 0 0 0 +62 0 0 0 +63 0 0 0 +192 -0.004363758761444326 0.00951161221484961 0.017129944705041603 +119 -0.004701077453742114 -8.296328219091687e-05 -0.0009688745560292821 +118 -0.0009314150513423432 0.00027605062629613427 -0.0035150783233501826 +191 0.00680583753605197 0.003167173243801115 -0.015417719909486413 +190 -0.0014967223491699952 0.0025908878048932016 -0.002402175301537957 +98 -0.009260175858086675 -0.028226198550552986 0.007567183856183354 +120 -0.0034806697031884997 -0.003298183743718096 -0.004362434174689871 +97 0.005989233619364602 0.0023803823609934273 -0.0030417661760985806 +244 0.0017880362939288001 0.00422352421710819 0.0005606753077441453 +99 -0.006220115534110591 -0.002045805635333923 0.0006476194511692398 +631 -0.0033826096876896855 -0.002181941878393241 0.0025269093094629474 +295 0.0006648861314364348 -0.003931280096251278 -0.0026803518350101033 +296 0.0062929742791497266 -0.006194372009187594 -0.024124245716887833 +336 -2.5155253934298795e-05 -0.00267261595791318 -0.014156428435828225 +70 0 0 0 +71 0 0 0 +78 0 0 0 +79 0 0 0 +334 0.0001249108228848411 0.009592140759049824 -0.008055311762730182 +335 -0.008933120836296046 0.03861648264199437 0.005139262991883574 +656 -0.012795486572600556 0.01001730917412183 0.010504777975066928 +655 0.0002453631990046368 -0.008270009402721512 0.005790081828127683 +657 0.0059063953119072934 -0.011220436899447496 -0.011461093784466869 +331 -0.001861800330708783 -0.004080943128134591 -0.006024367439539751 +225 0.008847588531356471 -0.005432354583684017 -0.017291462941727266 +223 0.0018512701070779799 0.002105046598030068 -0.0050342839053457425 +86 0 0 0 +87 0 0 0 +94 0 0 0 +95 0 0 0 +246 0.019304488124036106 0.012412888772496453 0.01389232978530525 +224 0.011417823406336933 -0.02584104798241233 -0.01586969560916166 +283 -0.000656343011071711 0.0008016291011868049 -0.003620593475455601 +285 0.0051281146563605 -0.002140065887603185 -0.011749359473630993 +284 0.002108917603863087 -0.010745428739586635 0.004067661946326833 +135 -0.0019613502216042204 0.0060261613203991815 -0.005145175930284868 +128 -0.01091600795889493 -0.005359155172554258 0.0011735199042172864 +641 -0.0047721234085586475 -0.00089548417111443 -0.02881249647727017 +694 0.004306853434289274 -0.0003461190629024837 0.002613610137021579 +508 0.0038336193257742066 0.004428638671902145 -0.002578190874375256 +365 -0.0008789666156448981 -0.01647416448186925 0.005405726875929458 +56 0 0 0 +64 0 0 0 +264 -0.005069066816637629 0.008594012902267328 -0.004896454013501075 +262 -0.00411559201856892 0.0055846035307135136 0.0022939832937934027 +303 -0.012248995229285456 -0.02038598577770783 -0.0067506409467423655 +263 -0.007203606603798386 0.00015673233657838596 0.009479088778907655 +696 -0.002403944998986855 0.012547542006427242 -0.0025721085279788183 +555 0.010313716462669934 0.017093518256946594 -0.0007535353716470382 +460 0.004762464388993355 0.0035128765813662345 0.0002544426222686458 +357 0.0026975244838181372 0.0006296683369134417 -0.004187815650450881 +355 0.0009889367525614406 0.0028571604624972836 0.0044422297391537215 +642 0.011684188963247771 0.02173040302358248 0.027637684910990796 +440 0.004733172069375852 -0.0006744085975210469 0.015964767016019198 +441 0.019273424633345186 0.02031857101103021 0.01136636551406023 +248 0.005408140991082604 0.01948553192838653 -0.01769576815856515 +439 0.0021888008868001167 0.00022281918895093757 -0.0005699233777872146 +72 0 0 0 +80 0 0 0 +593 -0.010764868078727771 0.0004632189843140992 0.03371192356674729 +592 -0.0012510047155927621 -0.0013228538172386057 0.0030004231674896093 +594 -0.003138799668445178 -0.009265431891145101 -0.0035030936801646703 +229 -0.004015308077517968 0.002304541027168982 0.0018452763612786536 +356 -0.00439289027906843 -0.0003181501233854808 0.007804079534610549 +443 0.01501004287837676 0.01274826059103139 -0.0008103413168549527 +230 -0.0033363552955116165 0.0011395679198842948 0.002421577058286637 +442 0.004590428851528285 -0.00016647082324879346 -0.007536939151246863 +444 -0.0004709522261627252 0.0007916817345592208 -0.01857710544198639 +231 -0.005563876064052946 0.001516515443061688 0.0011917788782933065 +88 0 0 0 +96 0 0 0 +553 0.002310850563285711 0.0038622245684212407 0.001063744581887175 +554 0.020520241141740107 -0.005768318995011451 -0.008503556427794993 +699 0.009769647936468813 -0.0026398354232907723 -0.0019420937862542735 +247 -0.0005440687793801106 0.00533274551270155 -0.003116117624827588 +527 0.0018514500777837737 -0.009230378273878258 -0.0060158525133069156 +245 0.005556414067735625 -0.0055651124084785675 0.0033327958619201684 +633 -0.006228493799001829 -0.0025536564906557587 -0.008694681481617547 +123 -0.0013254634442550768 0.0063472029134561585 -0.011594854053242773 +724 0.009989087181242503 -0.005372152351255475 -0.0018551724238006096 +725 0.028063127915331425 0.0036594616018658425 0.019379030908003192 +342 0.0006491711315738201 0.016203183514455405 0.0023688436726023014 +340 -0.00433735839176797 -0.000495918764211808 0.002257318744322688 +341 -0.0006929018962787288 0.015189606179435388 0.0018137275128837062 +364 -0.00882244249614916 0.0034576704590505883 -0.00811983159685899 +726 -0.01855210191687358 0.024009648567330344 -0.010178733951576051 +503 0.014134059605139943 -0.004326106316946778 -0.001926850902735659 +502 0.003759520085920061 -0.005572417624353865 0.0038047544622829043 +504 -0.003935710721857757 0.005577813760648028 0.013790854542965157 +413 -0.021593565939491674 0.003234704353097422 0.011974405473584714 +278 0.00883327301294058 -0.013449834793822607 0.020644593756055547 +270 0.00781868067364934 0.002754459504676058 -0.0010544004588571533 +719 0.006398783376387078 0.001946288912145545 0.022229144951245915 +132 0.007832425765429163 0.011404797448368427 0.015400661765000056 +297 0.0038792006849247243 -0.007593554626325106 -0.012809257149632622 +392 -0.011715180257929931 -1.176189615249834e-05 0.009633360116141418 +260 -0.009423773124827882 -0.023186194647239755 -0.02190022720812517 +548 0.009629883272752136 0.006774886139507993 -0.020907198728238808 +302 -0.007841165533640462 0.003026014956910295 -0.00703538244890269 +259 -0.003426942147231846 0.0014749707614869303 -0.003444717877250437 +261 0.0006945604695285328 -0.010576783124679686 -0.0020734669000596877 +640 -0.0008886178358934431 0.0060434330372213935 -0.010383480842809305 +532 8.241792411033156e-05 0.006040661450994054 -0.002463893772382022 +235 0.0007038770519582305 0.0067292095538841615 -0.0028443681465380494 +533 -0.0002129926328668816 0.00488451374048223 -0.0028066827071909287 +534 0.007064961280930333 0.025232242617842127 0.0008574875214082739 +621 0.011287366443141251 -0.003449176508228183 0.017928382611092662 +121 0.0007022815589027053 -0.000892538811671254 -0.0018627823896997114 +269 0.00469009840256279 0.0015241035513903975 0.001984306143110744 +265 -0.0054586758884403105 0.002131291238446908 0.001153323924828889 +547 -0.0011175811849537705 0.004103087625132249 0.00078716134613171 +619 0.0003632578854721528 0.005362253640767787 -0.006417849782413687 +279 0.011624081133984786 -0.011774327315428757 -0.014995684102348524 +293 -0.0017466342827571289 -0.002552253740249767 0.002528434692005852 +695 -0.004911630333401857 0.008651651256560356 -0.0020402912967414214 +494 0.005776310030291935 -0.000219217384465697 -0.0012280489592709103 +131 -0.018436321747528253 -0.021208301175051184 0.0006884707536230596 +715 0.006546258488425628 -0.005755050576697564 -0.0039883518170252905 +239 0.011588133086593538 -0.011846815428878082 -0.00881463043856705 +414 0.010325867114536506 -0.0006113612193524784 0.0017105622669241444 +648 -0.0026558023935934014 -0.009616362543538188 0.010264407433954103 +646 -0.0003042619186802288 -0.006311024166021424 0.0031010083811757994 +565 0.0007394748342163842 0.004516477559592657 0.00033539363242210933 +566 0.002090696563890277 0.0033273332142688904 -0.006266252541019348 +544 0.0007700118900610095 -0.001389627444945187 -0.004115546441642321 +546 -0.008050688006328074 0.023127963394541477 0.006164274038600667 +545 0.005924140141637715 0.001350652630120117 0.004941780161927939 +495 0.0069079619862543245 -0.007627704476709708 -0.0021154124154080375 +647 -0.00017732064807360345 0.002645796003071014 0.007429648590994952 +493 0.008654158253716833 -0.004029112678793171 -0.0016991226950217582 +301 -0.00533271211616937 0.007677255432536089 -0.0016339575663828834 +127 -0.0017719186381853886 0.003534213331123468 -0.0014256780429603613 +266 -0.0005212803553580399 -0.010749716358853169 0.007192928429952392 +391 -0.002578132714595172 0.0014365390200574261 0.0008211021077538514 +465 0.016880882832760326 -0.01067083624985097 -0.00022780999411606596 +333 -0.002918705357704968 -0.01118788463028499 -0.011006638219927969 +366 -0.0034141036467909827 -0.01084067671589307 -0.0004984580617246783 +267 0.006279258266850698 -0.018295845749178304 0.003999927664413487 +157 -0.0032474639721635297 -0.002071067218862699 0.005146248544668708 +412 0.0010230248589894202 -0.002669542251526284 0.004046648042845933 +393 0.003984235524416656 0.01206305025975438 0.007338917088694135 +405 -0.0055971864668224415 -0.001835879479675777 -0.0003608610575552909 +448 0.004430595048261473 -0.005005222921986947 -0.0018506673587511161 +449 0.01637776697980032 -0.014127790377349642 -0.00434461965343095 +584 0.013793791431671172 -0.009326091804055824 -0.01747981576570497 +585 -0.008359394537154218 0.009831653490172253 -0.015131425117590833 +318 0.014260723165817455 -0.002876736345312385 0.01741120858595613 +450 0.016867039987388758 -0.006826024777415599 0.0014250845205727915 +159 -0.0020686816783562546 0.023218708679260347 0.0005679898884230374 +277 -0.00031624432316685767 -0.003276417788006159 0.007206583965036211 +174 0.02232250253907675 -0.01231852993148094 -0.010546896918912205 +158 0.009085924338852294 -0.014728147944420766 -0.020912169525047947 +236 0.006765120985488478 0.005926831661173007 -0.002318291635240894 +332 0.0042747818750445725 -0.0017899782198140476 -0.007971038141225751 +567 0.002235629448123555 0.003016503143010697 -0.003392544405989525 +268 0.004011420131944795 0.008377084166031164 0.002316053989518986 +144 -0.012024612981489083 0.005361811091711969 -0.0014672866723572583 +143 -0.0073730174733633545 0.0040880726939264795 -0.0165900644982253 +620 -0.0065142327069454865 0.035190802650504636 -0.0006640427681044298 +142 0.0028419016591640558 -0.004087187698190576 0.0037294719979222247 +129 0.008463487923697903 -0.0015510850454567688 -0.015170037898573475 +549 -0.0025830067012953825 0.01852116530899133 0.010385008510639499 +583 0.004268963968694046 0.0010471359047598279 -0.005851219475190436 +718 0.0006430494717885148 0.007923101925764318 0.004010379569037137 +237 0.014352864654346011 0.01020811390215342 0.00047127720322738515 +462 0.005064298161311936 0.0015423027868889188 0.008335104423218753 +130 0.004406284567008871 -0.00860513254615911 -0.004879385522234749 +720 0.00393831447904276 -0.006119628459627095 -0.006764066218979042 +383 0.004218653914705313 -0.01202327645784736 0.022980672819351747 +133 -0.00102039624254495 0.002371407198966068 0.0067364713751238425 +511 0.003912741513012298 0.00101552438914296 0.0018958766721141054 +134 -0.0033610434450266286 -0.0026284616742153787 0.00674072004379062 +716 0.010566057481285352 -0.02176428147337611 0.007168160969202919 +512 0.01634597212601708 -0.0002926570645188546 0.007738629495829494 +509 0.0011140510641293316 0.0007182760943427564 -0.014628144005186052 +568 -0.0039044314646687196 -0.006830451357868171 -0.0022373549345757774 +569 -0.0013290493571988461 0.004839537419246563 -0.006910692862670655 +304 0.0054736539006658485 -0.004960430228645577 -0.001968166657216059 +305 -0.012109090513145905 0.00577200024652643 0.005396896203310628 +418 -2.437543145425559e-05 -0.005689015414779892 -0.002258568108083334 +306 0.011459516326170439 0.0007872800806459576 0.005803298963212287 +501 -0.009350152887850311 0.003677986993344379 -0.011989987989375296 +445 -0.0008290701903718754 0.005643282980849799 0.0002485307221862214 +463 0.0004729541684906896 -0.0009865037215842994 0.0002106726307666064 +172 0.004731719855505472 -0.0030321314569809483 -0.0003530081265682011 +489 -0.014429505694453698 0.009455042753152534 0.01903652416959836 +419 0.0025409339530107623 -0.002879625146716656 0.0003702102460500956 +446 -0.00021411000691779435 0.00955825379875846 -0.00885753338160607 +420 0.007536051380740864 0.010381989365120456 0.005336366205111886 +499 -0.0006342662881036965 -0.00023501992000385272 0.0020560303434147245 +500 -0.01195099663304182 0.028212202950552916 0.014770929928671189 +250 0.007361035395654199 -0.004690688159251201 0.003061239445099873 +147 -0.009310962727936977 0.020391157953635785 0.03074647165589922 +146 -3.6811505540478325e-05 -0.017980254752765046 0.017302450341036273 +570 -0.0017712854514889199 0.0019656582840076615 -0.002982248494982292 +323 0.02025520719624794 0.00437956264756661 -0.0018309996628302016 +324 -0.014124442777214079 0.011549999461420518 -0.018237952404482057 +322 0.0016068916953904174 0.006306614444237204 -0.004315464210736402 +200 0.021753072613096884 0.018573023333333702 0.004427859217421257 +623 0.011452678250841558 -0.007224569524583359 0.0027236085578886244 +551 -0.014919499049456707 -0.01686470199682272 -0.009390344835571803 +201 -0.023111043546362873 0.00020560246955362896 -0.006295323851049318 +199 0.0004815918368625051 0.004853422247417755 -0.006061618709908838 +312 0.0008481996440953347 -0.006155473605828348 -0.0017282663370451403 +624 0.001586490607358962 0.004010243402294628 0.0059810887166708345 +350 -0.009760147323275311 -0.016632875743950715 0.016528153602606437 +126 -0.006532699294053725 -0.012656386469316777 0.0068195173267290715 +622 0.0024139583689417247 0.003498498050067583 -0.003655007006662313 +550 -0.0012162513220406828 -0.0033011033267567416 0.004819001835822252 +552 -0.00924649718960619 0.0013741774004242453 0.015653387667881418 +124 0.0001705708408269096 -0.000550279279659424 -0.0013377042655839796 +145 -0.002334830495624088 0.002793853156377406 0.006506801380971504 +40 0 0 2.589283900144793e-05 +599 0.0023217932209911667 -0.01835053819969972 -0.013463199934529201 +251 0.002581923394498151 0.0023298657256145133 0.006255129412513726 +704 -0.005296929928288727 0.01607189461778198 0.010179684267012322 +703 0.0034655840261788758 0.005574906464163651 0.005889701146370732 +705 0.010861930940493255 -0.0003350694921833778 0.01044180291497366 +48 0 0 2.5892839001447932e-05 +559 -0.005483933645194205 -0.0012780353966408038 0.0023721586219114825 +561 0.01337950290190957 0.0044607660522192946 -0.01823291897146361 +675 0.0031193771284579496 0.00217714638874969 7.001676744408073e-06 +222 -0.006345175465281138 0.004820356905560499 0.023282345551168215 +598 -0.0007217641988605089 -0.007385715555506205 -0.0009079271908534197 +177 -0.01851185003563661 -0.00016629752608533365 -0.012976887019520758 +310 0.0012985833227644886 -0.001566855158339641 0.001579031386051685 +458 0.0039239799167950645 -0.007481014210507378 0.009788403085109105 +139 0.00033494528818851267 0.0024585397677852625 0.000660401833580898 +614 -0.0009389256816982662 0.011828643953531368 0.018676419298217065 +600 -0.018094474476051486 0.00023445740586081488 0.008899796958011633 +617 -0.009036194427037533 -0.0025641807901169078 0.005251509094796726 +311 0.0010927413625261679 0.0024725292678410946 -0.0033258539523485773 +530 -0.009543198468485899 0.009194738162092713 0.002932821352048649 +141 0.007530076713547185 -0.010772382425474793 -0.007049312864075332 +531 0.01346275911311354 -0.015519264000711233 -0.013983233267324877 +399 -0.015794023221716955 0.013361754155793227 0.023184548477482157 +380 -0.00016532393637421034 0.005396941650961916 0.003706037154930361 +464 -0.009720016666000888 0.005508521851143906 -0.0010447395388278984 +428 -0.0032295145570997628 0.0073242509948272215 -0.008762443779130127 +397 -0.0019383749400236328 -0.004608215655716036 -0.0033540348251192864 +319 -0.0009038475895158715 0.0004032373568885917 -0.0008893950154038688 +398 0.0008784454978576588 -0.019930509233584276 -0.0023402740275860765 +528 -0.017149344935718215 0.0053125553694975455 -0.0062739095024969055 +321 0.011291342491685402 0.011778478494356572 0.02157510722031055 +490 0.003460299667122343 0.0005008872223548776 -0.003928509480568708 +491 -0.02042787598151604 0.009606293972625789 -0.014609420256501925 +492 -0.01179479155292874 -0.013123603914816054 0.006317741927870814 +659 -0.0069325446438758135 0.001872758468936734 -0.001820683375806924 +249 -0.003689403614427041 -0.009541231217973603 0.0028290387567211457 +164 -0.006400690048675919 -0.013877760093602321 -0.002977622020994794 +162 -0.004855407125325768 -0.01879111496764322 0.020518095513515515 +371 0.0186329030963466 -0.0030361600806192253 0.01127947927515273 +370 -0.006645327540014044 0.0013620044066288777 0.0040028544483149825 +610 0.002198658185540671 -0.005517799631155318 -0.0021977580020232164 +154 -0.0040921640552195535 0.004469932541531453 -0.004074017062258021 +155 0.00946262378435491 0.008912303180476127 -0.007853976504644958 +156 -0.007160039514904957 -0.009309817752610663 -0.004347645837647768 +612 -0.01853211573078728 -0.01727473985951407 0.017215191641891617 +183 -0.004442865646352574 -0.003400423991540166 -0.0018621889463709465 +629 0.020458137445744262 -0.0005441012285127372 -0.016121405666884327 +182 0.010414879082570251 0.030332837986610725 0.005191185967407049 +181 -0.004080198053479511 -0.0019011724834973821 -0.001840667647736802 +611 0.012212859606390776 -0.0026124264131294 -0.005669832465189566 +628 0.0001792339331808534 -0.002433089326052819 -0.001805358970649801 +630 -0.015366679651799057 0.027336154517751083 0.0030786076245146897 +487 -0.006612908041425593 -0.010557716751849671 -0.0004398534728532736 +526 -0.0028150615039515803 0.004044411001066752 -0.0013644193865672359 +151 -0.008568566244765728 0.0059744557184639255 -0.000627104807162225 +160 -0.005288304762918362 -0.004980091259974818 -0.0052020664728392955 +351 -0.014050712299375443 -0.02358677864502768 0.022078468617912066 +372 -0.010000271327845013 -0.0017495788438303597 -0.015743229425643938 +473 -0.008545742194336561 0.03299533080814433 -0.006554398847784694 +669 0.009323919846092737 -0.005503137113750206 -0.01757154792744392 +220 -0.010802030745763268 -0.003946674830891448 0.003347466106919407 +221 0.0031078719584793097 -0.0026986854685907176 -0.005051678138139105 +349 -0.0028467913154277976 0.00619549728782877 0.004513308653347061 +176 0.014573690185444051 0.005701141194454324 0.02429670540436278 +472 0.0034704444931731564 -0.0004223936528461586 0.004682456493386929 +286 -0.0007227944529852624 0.0002044846821905628 0.0005275546923425382 +287 -0.013787536809725281 0.0027725652215363646 0.0028043383019355616 +288 0.013467067943699075 -0.013607004090118587 0.010562692707514431 +667 -0.0033231615840826375 -0.0026754997278682718 -0.0025810158998434453 +557 0.00480046414868641 0.0036381648364985485 0.011568695731040347 +668 -0.010354343669844574 0.01551276249617225 0.001263283616141959 +233 0.018175533457414624 0.0017013730890884599 -0.000542455897216258 +232 0.0005655337868856603 0.005109144050052834 -0.0075456339065252485 +556 -0.002652573873678528 0.0017686267932879897 0.007383198916898972 +613 -0.0015918424196763945 0.004086688266801507 -0.0008860298641209033 +615 -0.0020836681424838757 -0.0005735018872513953 -0.013310568326146311 +447 0.01139703322386246 0.014688114003843386 -0.0018920048987641955 +453 -0.004830305681658932 0.02052395365578583 -0.006460118140426627 +452 -0.006659826339694623 0.0003543348655607981 -0.022845001543426367 +451 -0.005502850804956584 0.00025572828917443384 -0.005940030711587164 +427 0.006878068518221622 -0.00885399992822085 -0.004941337405656671 +429 0.016310095429692206 -0.004246153250381018 -0.0063539068368046086 +14 0 0 2.5892839001447915e-05 +7 0 0 2.5892839001447905e-05 +6 0 0 2.5892839001447912e-05 +15 0 0 2.589283900144791e-05 +410 0.0036773579068940594 0.005088334412447784 -0.00010670193844646754 +411 -0.013294041272967414 0.0018927422415192015 0.004022854780372532 +23 0 0 2.5892839001447915e-05 +22 0 0 2.5892839001447922e-05 +31 0 0 2.589283900144792e-05 +30 0 0 2.5892839001447925e-05 +409 -0.0033332525225770564 -0.00245864319500691 0.003352617057588178 +674 -0.0020876963116493253 0.0012720696117521837 0.004777046069219144 +673 0.001440207298745793 0.0006711067607754656 0.005750751000129193 +616 0.0034399261571874833 -0.0006771518251561286 -0.0008689301882926043 +618 0.011960174137895753 0.02757908212908868 0.006623095130093759 +47 0 0 2.589283900144793e-05 +39 0 0 2.5892839001447925e-05 +46 0 0 2.5892839001447936e-05 +38 0 0 2.5892839001447932e-05 +529 0.005442778008874495 0.007503881077571631 -0.00033589800355411745 +379 -0.001314351775643973 0.002379695621041653 0.003275885323478339 +165 0.00884464006202344 0.015924976929959245 -0.005078073570798919 +660 0.011025274705486485 0.007784764248372991 -0.019723554911707096 +658 -0.0017037660488597379 -0.0011580239500757668 -0.005506394723447372 +560 0.005991317348670128 -0.0022661168537082676 0.009892255799050512 +381 0.012417376249213864 -0.004828502113807977 -0.0018726878888628074 +125 -0.013873333040961978 0.004406736093524685 -0.021053266887589718 +506 -0.026262892601657484 -0.0021543522170194944 0.00442906465538162 +8 0 0 2.589283900144791e-05 +16 0 0 2.5892839001447912e-05 +454 -0.00010663947966301035 -0.005040601246033902 -0.0006922370547977346 +455 0.02289550486644541 -0.006075060916417402 0.0014647034106781431 +456 -0.0058551014431358 -0.028688264965094145 0.009412476538204347 +24 0 0 2.589283900144792e-05 +32 0 0 2.5892839001447922e-05 +474 0.018709003929338164 0.009713859155058282 0.005249922845235266 +320 0.020360034496335867 0.014864835586975439 0.030731515192935176 +173 -0.00013434925230160102 -0.003339721540542993 0.004399850614784226 +175 0.00477366431159889 0.0011728150452943586 0.0044527343392776805 +152 0.0025786212815767234 0.029696509429575725 0.013830328539275497 +505 -0.0004092230325628855 0.007490307555796668 0.004255257179335567 +558 -0.008265759925745195 0.00204552967410164 0.004668247385046733 +510 -0.0053380401606728245 0.0015521061958218008 -0.0005550030486493117 +374 0.02765868826006261 0.0017903292061302555 0.0026621329108467906 +153 -0.001037157082329749 0.005658079883762745 -0.006765436155795196 +163 2.534136430269839e-06 0.0043915276877542625 0.003615456878949748 +507 0.011440010041486237 0.01571871212288878 -0.001231948945091482 +632 -0.009407051140085434 -0.003481475839385426 0.0075372754448969695 + +Bonds + +1 1 676 677 +2 1 676 678 +3 1 709 710 +4 1 709 711 +5 1 193 194 +6 1 193 195 +7 1 103 104 +8 1 103 105 +9 1 712 713 +10 1 712 714 +11 1 604 605 +12 1 604 606 +13 1 388 389 +14 1 388 390 +15 1 586 587 +16 1 586 588 +17 1 601 602 +18 1 601 603 +19 1 316 317 +20 1 316 318 +21 1 421 422 +22 1 421 423 +23 1 643 644 +24 1 643 645 +25 1 691 692 +26 1 691 693 +27 1 367 368 +28 1 367 369 +29 1 169 170 +30 1 169 171 +31 1 541 542 +32 1 541 543 +33 1 520 521 +34 1 520 522 +35 1 211 212 +36 1 211 213 +37 1 205 206 +38 1 205 207 +39 1 679 680 +40 1 679 681 +41 1 298 299 +42 1 298 300 +43 1 496 497 +44 1 496 498 +45 1 187 188 +46 1 187 189 +47 1 385 386 +48 1 385 387 +49 1 430 431 +50 1 430 432 +51 1 475 476 +52 1 475 477 +53 1 577 578 +54 1 577 579 +55 1 280 281 +56 1 280 282 +57 1 115 116 +58 1 115 117 +59 1 196 197 +60 1 196 198 +61 1 241 242 +62 1 241 243 +63 1 400 401 +64 1 400 402 +65 1 562 563 +66 1 562 564 +67 1 664 665 +68 1 664 666 +69 1 637 638 +70 1 637 639 +71 1 652 653 +72 1 652 654 +73 1 256 257 +74 1 256 258 +75 1 424 425 +76 1 424 426 +77 1 466 467 +78 1 466 468 +79 1 580 581 +80 1 580 582 +81 1 352 353 +82 1 352 354 +83 1 292 293 +84 1 292 294 +85 1 574 575 +86 1 574 576 +87 1 436 437 +88 1 436 438 +89 1 700 701 +90 1 700 702 +91 1 106 107 +92 1 106 108 +93 1 376 377 +94 1 376 378 +95 1 358 359 +96 1 358 360 +97 1 289 290 +98 1 289 291 +99 1 406 407 +100 1 406 408 +101 1 523 524 +102 1 523 525 +103 1 625 626 +104 1 625 627 +105 1 136 137 +106 1 136 138 +107 1 184 185 +108 1 184 186 +109 1 313 314 +110 1 313 315 +111 1 238 239 +112 1 238 240 +113 1 403 404 +114 1 403 405 +115 1 697 698 +116 1 697 699 +117 1 382 383 +118 1 382 384 +119 1 670 671 +120 1 670 672 +121 1 394 395 +122 1 394 396 +123 1 202 203 +124 1 202 204 +125 1 346 347 +126 1 346 348 +127 1 571 572 +128 1 571 573 +129 1 589 590 +130 1 589 591 +131 1 607 608 +132 1 607 609 +133 1 274 275 +134 1 274 276 +135 1 112 113 +136 1 112 114 +137 1 343 344 +138 1 343 345 +139 1 253 254 +140 1 253 255 +141 1 109 110 +142 1 109 111 +143 1 307 308 +144 1 307 309 +145 1 685 686 +146 1 685 687 +147 1 271 272 +148 1 271 273 +149 1 481 482 +150 1 481 483 +151 1 721 722 +152 1 721 723 +153 1 208 209 +154 1 208 210 +155 1 469 470 +156 1 469 471 +157 1 688 689 +158 1 688 690 +159 1 634 635 +160 1 634 636 +161 1 433 434 +162 1 433 435 +163 1 415 416 +164 1 415 417 +165 1 217 218 +166 1 217 219 +167 1 478 479 +168 1 478 480 +169 1 361 362 +170 1 361 363 +171 1 484 485 +172 1 484 486 +173 1 661 662 +174 1 661 663 +175 1 100 101 +176 1 100 102 +177 1 178 179 +178 1 178 180 +179 1 214 215 +180 1 214 216 +181 1 538 539 +182 1 538 540 +183 1 226 227 +184 1 226 228 +185 1 706 707 +186 1 706 708 +187 1 373 374 +188 1 373 375 +189 1 682 683 +190 1 682 684 +191 1 595 596 +192 1 595 597 +193 1 649 650 +194 1 649 651 +195 1 337 338 +196 1 337 339 +197 1 325 326 +198 1 325 327 +199 1 535 536 +200 1 535 537 +201 1 514 515 +202 1 514 516 +203 1 166 167 +204 1 166 168 +205 1 517 518 +206 1 517 519 +207 1 148 149 +208 1 148 150 +209 1 328 329 +210 1 328 330 +211 1 457 458 +212 1 457 459 +213 1 118 119 +214 1 118 120 +215 1 190 191 +216 1 190 192 +217 1 97 98 +218 1 97 99 +219 1 244 245 +220 1 244 246 +221 1 631 632 +222 1 631 633 +223 1 295 296 +224 1 295 297 +225 1 334 335 +226 1 334 336 +227 1 655 656 +228 1 655 657 +229 1 331 332 +230 1 331 333 +231 1 223 224 +232 1 223 225 +233 1 283 284 +234 1 283 285 +235 1 694 695 +236 1 694 696 +237 1 508 509 +238 1 508 510 +239 1 262 263 +240 1 262 264 +241 1 460 461 +242 1 460 462 +243 1 355 356 +244 1 355 357 +245 1 439 440 +246 1 439 441 +247 1 592 593 +248 1 592 594 +249 1 229 230 +250 1 229 231 +251 1 442 443 +252 1 442 444 +253 1 553 554 +254 1 553 555 +255 1 247 248 +256 1 247 249 +257 1 724 725 +258 1 724 726 +259 1 340 341 +260 1 340 342 +261 1 364 365 +262 1 364 366 +263 1 502 503 +264 1 502 504 +265 1 259 260 +266 1 259 261 +267 1 640 641 +268 1 640 642 +269 1 532 533 +270 1 532 534 +271 1 235 236 +272 1 235 237 +273 1 121 122 +274 1 121 123 +275 1 265 266 +276 1 265 267 +277 1 547 548 +278 1 547 549 +279 1 619 620 +280 1 619 621 +281 1 715 716 +282 1 715 717 +283 1 646 647 +284 1 646 648 +285 1 565 566 +286 1 565 567 +287 1 544 545 +288 1 544 546 +289 1 493 494 +290 1 493 495 +291 1 301 302 +292 1 301 303 +293 1 127 128 +294 1 127 129 +295 1 391 392 +296 1 391 393 +297 1 157 158 +298 1 157 159 +299 1 412 413 +300 1 412 414 +301 1 448 449 +302 1 448 450 +303 1 277 278 +304 1 277 279 +305 1 268 269 +306 1 268 270 +307 1 142 143 +308 1 142 144 +309 1 583 584 +310 1 583 585 +311 1 718 719 +312 1 718 720 +313 1 130 131 +314 1 130 132 +315 1 133 134 +316 1 133 135 +317 1 511 512 +318 1 511 513 +319 1 568 569 +320 1 568 570 +321 1 304 305 +322 1 304 306 +323 1 418 419 +324 1 418 420 +325 1 445 446 +326 1 445 447 +327 1 463 464 +328 1 463 465 +329 1 172 173 +330 1 172 174 +331 1 499 500 +332 1 499 501 +333 1 250 251 +334 1 250 252 +335 1 322 323 +336 1 322 324 +337 1 199 200 +338 1 199 201 +339 1 622 623 +340 1 622 624 +341 1 550 551 +342 1 550 552 +343 1 124 125 +344 1 124 126 +345 1 145 146 +346 1 145 147 +347 1 703 704 +348 1 703 705 +349 1 559 560 +350 1 559 561 +351 1 598 599 +352 1 598 600 +353 1 310 311 +354 1 310 312 +355 1 139 140 +356 1 139 141 +357 1 397 398 +358 1 397 399 +359 1 319 320 +360 1 319 321 +361 1 490 491 +362 1 490 492 +363 1 370 371 +364 1 370 372 +365 1 610 611 +366 1 610 612 +367 1 154 155 +368 1 154 156 +369 1 181 182 +370 1 181 183 +371 1 628 629 +372 1 628 630 +373 1 487 488 +374 1 487 489 +375 1 526 527 +376 1 526 528 +377 1 151 152 +378 1 151 153 +379 1 160 161 +380 1 160 162 +381 1 220 221 +382 1 220 222 +383 1 349 350 +384 1 349 351 +385 1 472 473 +386 1 472 474 +387 1 286 287 +388 1 286 288 +389 1 667 668 +390 1 667 669 +391 1 232 233 +392 1 232 234 +393 1 556 557 +394 1 556 558 +395 1 613 614 +396 1 613 615 +397 1 451 452 +398 1 451 453 +399 1 427 428 +400 1 427 429 +401 1 409 410 +402 1 409 411 +403 1 673 674 +404 1 673 675 +405 1 616 617 +406 1 616 618 +407 1 529 530 +408 1 529 531 +409 1 379 380 +410 1 379 381 +411 1 658 659 +412 1 658 660 +413 1 454 455 +414 1 454 456 +415 1 175 176 +416 1 175 177 +417 1 505 506 +418 1 505 507 +419 1 163 164 +420 1 163 165 + +Angles + +1 1 677 676 678 +2 1 710 709 711 +3 1 194 193 195 +4 1 104 103 105 +5 1 713 712 714 +6 1 605 604 606 +7 1 389 388 390 +8 1 587 586 588 +9 1 602 601 603 +10 1 317 316 318 +11 1 422 421 423 +12 1 644 643 645 +13 1 692 691 693 +14 1 368 367 369 +15 1 170 169 171 +16 1 542 541 543 +17 1 521 520 522 +18 1 212 211 213 +19 1 206 205 207 +20 1 680 679 681 +21 1 299 298 300 +22 1 497 496 498 +23 1 188 187 189 +24 1 386 385 387 +25 1 431 430 432 +26 1 476 475 477 +27 1 578 577 579 +28 1 281 280 282 +29 1 116 115 117 +30 1 197 196 198 +31 1 242 241 243 +32 1 401 400 402 +33 1 563 562 564 +34 1 665 664 666 +35 1 638 637 639 +36 1 653 652 654 +37 1 257 256 258 +38 1 425 424 426 +39 1 467 466 468 +40 1 581 580 582 +41 1 353 352 354 +42 1 293 292 294 +43 1 575 574 576 +44 1 437 436 438 +45 1 701 700 702 +46 1 107 106 108 +47 1 377 376 378 +48 1 359 358 360 +49 1 290 289 291 +50 1 407 406 408 +51 1 524 523 525 +52 1 626 625 627 +53 1 137 136 138 +54 1 185 184 186 +55 1 314 313 315 +56 1 239 238 240 +57 1 404 403 405 +58 1 698 697 699 +59 1 383 382 384 +60 1 671 670 672 +61 1 395 394 396 +62 1 203 202 204 +63 1 347 346 348 +64 1 572 571 573 +65 1 590 589 591 +66 1 608 607 609 +67 1 275 274 276 +68 1 113 112 114 +69 1 344 343 345 +70 1 254 253 255 +71 1 110 109 111 +72 1 308 307 309 +73 1 686 685 687 +74 1 272 271 273 +75 1 482 481 483 +76 1 722 721 723 +77 1 209 208 210 +78 1 470 469 471 +79 1 689 688 690 +80 1 635 634 636 +81 1 434 433 435 +82 1 416 415 417 +83 1 218 217 219 +84 1 479 478 480 +85 1 362 361 363 +86 1 485 484 486 +87 1 662 661 663 +88 1 101 100 102 +89 1 179 178 180 +90 1 215 214 216 +91 1 539 538 540 +92 1 227 226 228 +93 1 707 706 708 +94 1 374 373 375 +95 1 683 682 684 +96 1 596 595 597 +97 1 650 649 651 +98 1 338 337 339 +99 1 326 325 327 +100 1 536 535 537 +101 1 515 514 516 +102 1 167 166 168 +103 1 518 517 519 +104 1 149 148 150 +105 1 329 328 330 +106 1 458 457 459 +107 1 119 118 120 +108 1 191 190 192 +109 1 98 97 99 +110 1 245 244 246 +111 1 632 631 633 +112 1 296 295 297 +113 1 335 334 336 +114 1 656 655 657 +115 1 332 331 333 +116 1 224 223 225 +117 1 284 283 285 +118 1 695 694 696 +119 1 509 508 510 +120 1 263 262 264 +121 1 461 460 462 +122 1 356 355 357 +123 1 440 439 441 +124 1 593 592 594 +125 1 230 229 231 +126 1 443 442 444 +127 1 554 553 555 +128 1 248 247 249 +129 1 725 724 726 +130 1 341 340 342 +131 1 365 364 366 +132 1 503 502 504 +133 1 260 259 261 +134 1 641 640 642 +135 1 533 532 534 +136 1 236 235 237 +137 1 122 121 123 +138 1 266 265 267 +139 1 548 547 549 +140 1 620 619 621 +141 1 716 715 717 +142 1 647 646 648 +143 1 566 565 567 +144 1 545 544 546 +145 1 494 493 495 +146 1 302 301 303 +147 1 128 127 129 +148 1 392 391 393 +149 1 158 157 159 +150 1 413 412 414 +151 1 449 448 450 +152 1 278 277 279 +153 1 269 268 270 +154 1 143 142 144 +155 1 584 583 585 +156 1 719 718 720 +157 1 131 130 132 +158 1 134 133 135 +159 1 512 511 513 +160 1 569 568 570 +161 1 305 304 306 +162 1 419 418 420 +163 1 446 445 447 +164 1 464 463 465 +165 1 173 172 174 +166 1 500 499 501 +167 1 251 250 252 +168 1 323 322 324 +169 1 200 199 201 +170 1 623 622 624 +171 1 551 550 552 +172 1 125 124 126 +173 1 146 145 147 +174 1 704 703 705 +175 1 560 559 561 +176 1 599 598 600 +177 1 311 310 312 +178 1 140 139 141 +179 1 398 397 399 +180 1 320 319 321 +181 1 491 490 492 +182 1 371 370 372 +183 1 611 610 612 +184 1 155 154 156 +185 1 182 181 183 +186 1 629 628 630 +187 1 488 487 489 +188 1 527 526 528 +189 1 152 151 153 +190 1 161 160 162 +191 1 221 220 222 +192 1 350 349 351 +193 1 473 472 474 +194 1 287 286 288 +195 1 668 667 669 +196 1 233 232 234 +197 1 557 556 558 +198 1 614 613 615 +199 1 452 451 453 +200 1 428 427 429 +201 1 410 409 411 +202 1 674 673 675 +203 1 617 616 618 +204 1 530 529 531 +205 1 380 379 381 +206 1 659 658 660 +207 1 455 454 456 +208 1 176 175 177 +209 1 506 505 507 +210 1 164 163 165 diff --git a/examples/PACKAGES/electrode/piston/in.piston b/examples/PACKAGES/electrode/piston/in.piston new file mode 100644 index 0000000000..35b4790935 --- /dev/null +++ b/examples/PACKAGES/electrode/piston/in.piston @@ -0,0 +1,65 @@ +# The intention is to find the average position of one wall at atmospheric +# pressure. The output is the wall position over time which can be used to +# find the average position for a run with fixed wall position. +# +# ----------------- Init Section ----------------- + +atom_style full +units real +boundary p p f +kspace_style pppm/electrode 1e-4 +kspace_modify slab 3.0 +pair_style lj/cut/coul/long 8 8 +bond_style harmonic +angle_style harmonic +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +# ----------------- Atom Definition Section ----------------- + +read_data "data.piston" + +# ----------------- Settings Section ----------------- + +pair_coeff 1 1 0.069 2.78 +pair_coeff 2 2 5.29 2.951 +pair_coeff 3 3 0.1553 3.166 +pair_coeff 4 4 0.0 0.0 +bond_coeff 1 600.0 1.0 +angle_coeff 1 75.0 109.47 +group wall type 1 +group gold type 2 +group spce type 3:4 +group ele union wall gold +fix fRattleSPCE spce shake 0.0001 10 0 b 1 a 1 +pair_modify mix arithmetic + +# ----------------- Run Section ----------------- + +neigh_modify every 1 delay 0 +timestep 2 +fix fxnvt spce nvt temp 300 300 500 +fix fxforce_au gold setforce 0.0 0.0 0.0 + +# equilibrate z-coordinate of upper electrode while keeping the electrode rigid +fix fxforce_wa wall setforce 0.0 0.0 NULL +fix fxpressure wall aveforce 0 0 -0.005246 # atomspheric pressure: area/force->nktv2p +fix fxdrag wall viscous 100 +fix fxrigid wall rigid/nve single + +# maintain constant potential during equilibration +# 'algo cg' allows for moving electrodes +fix fxele ele electrode/conp 0.0 1.805 symm on algo cg 1e-4 + +# setup output and run +variable q atom q +compute qwa wall reduce sum v_q +compute qau gold reduce sum v_q +variable top_wall equal (bound(wall,zmin)) +compute temp_mobile spce temp +variable s equal step +fix fxprint all print 1000 "${s} ${top_wall}" file top_wall.csv screen no +thermo_style custom step c_temp_mobile c_qwa c_qau v_top_wall +thermo 5000 +run 100000 +write_data "data.piston.final" + diff --git a/examples/PACKAGES/electrode/piston/log.1Dec2022.piston.g++.1 b/examples/PACKAGES/electrode/piston/log.1Dec2022.piston.g++.1 new file mode 100644 index 0000000000..a5b6d4cd4f --- /dev/null +++ b/examples/PACKAGES/electrode/piston/log.1Dec2022.piston.g++.1 @@ -0,0 +1,223 @@ +LAMMPS (3 Nov 2022) +# The intention is to find the average position of one wall at atmospheric +# pressure. The output is the wall position over time which can be used to +# find the average position for a run with fixed wall position. +# +# ----------------- Init Section ----------------- + +atom_style full +units real +boundary p p f +kspace_style pppm/electrode 1e-4 +kspace_modify slab 3.0 +pair_style lj/cut/coul/long 8 8 +bond_style harmonic +angle_style harmonic +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +# ----------------- Atom Definition Section ----------------- + +read_data "data.piston" +Reading data file ... + orthogonal box = (0 0 0) to (17.6494 20.3798 26) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 726 atoms + reading velocities ... + 726 velocities + scanning bonds ... + 2 = max bonds/atom + scanning angles ... + 1 = max angles/atom + reading bonds ... + 420 bonds + reading angles ... + 210 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.011 seconds + +# ----------------- Settings Section ----------------- + +pair_coeff 1 1 0.069 2.78 +pair_coeff 2 2 5.29 2.951 +pair_coeff 3 3 0.1553 3.166 +pair_coeff 4 4 0.0 0.0 +bond_coeff 1 600.0 1.0 +angle_coeff 1 75.0 109.47 +group wall type 1 +48 atoms in group wall +group gold type 2 +48 atoms in group gold +group spce type 3:4 +630 atoms in group spce +group ele union wall gold +96 atoms in group ele +fix fRattleSPCE spce shake 0.0001 10 0 b 1 a 1 +Finding SHAKE clusters ... + 0 = # of size 2 clusters + 0 = # of size 3 clusters + 0 = # of size 4 clusters + 210 = # of frozen angles + find clusters CPU = 0.000 seconds +pair_modify mix arithmetic + +# ----------------- Run Section ----------------- + +neigh_modify every 1 delay 0 +timestep 2 +fix fxnvt spce nvt temp 300 300 500 +fix fxforce_au gold setforce 0.0 0.0 0.0 + +# equilibrate z-coordinate of upper electrode while keeping the electrode rigid +fix fxforce_wa wall setforce 0.0 0.0 NULL +fix fxpressure wall aveforce 0 0 -0.005246 # atomspheric pressure: area/force->nktv2p +fix fxdrag wall viscous 100 +fix fxrigid wall rigid/nve single + 1 rigid bodies with 48 atoms + +# maintain constant potential during equilibration +# 'algo cg' allows for moving electrodes +fix fxele ele electrode/conp 0.0 1.805 symm on algo cg 1e-4 +96 atoms in group conp_group + +# setup output and run +variable q atom q +compute qwa wall reduce sum v_q +compute qau gold reduce sum v_q +variable top_wall equal (bound(wall,zmin)) +compute temp_mobile spce temp +variable s equal step +fix fxprint all print 1000 "${s} ${top_wall}" file top_wall.csv screen no +thermo_style custom step c_temp_mobile c_qwa c_qau v_top_wall +thermo 5000 +run 100000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +PPPM/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.32814871 + grid = 12 15 36 + stencil order = 5 + estimated absolute RMS force accuracy = 0.02930901 + estimated relative force accuracy = 8.8263214e-05 + using double precision MKL FFT + 3d grid and FFT values/proc = 15884 6480 +Generated 6 of 6 mixed pair_coeff terms from arithmetic 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 = 10 + ghost atom cutoff = 10 + binsize = 5, bins = 4 5 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 11.7 | 11.7 | 11.7 Mbytes + Step c_temp_mobile c_qwa c_qau v_top_wall + 0 303.38967 -0.042963484 0.042963484 21.4018 + 5000 285.08828 -0.26105255 0.26105255 25.155629 + 10000 323.19176 -0.26264003 0.26264003 24.541676 + 15000 310.479 -0.27318148 0.27318148 23.141522 + 20000 295.18544 -0.11313444 0.11313444 23.828735 + 25000 295.38607 -0.25433086 0.25433086 23.673314 + 30000 288.0613 -0.30099901 0.30099901 23.438086 + 35000 278.5591 -0.15823576 0.15823576 24.311915 + 40000 303.95751 -0.19941381 0.19941381 23.69594 + 45000 279.026 -0.1659962 0.1659962 23.588604 + 50000 298.79278 -0.28866703 0.28866703 23.372508 + 55000 301.03353 -0.078370381 0.078370381 23.192985 + 60000 306.77965 -0.12807205 0.12807205 23.968574 + 65000 309.86008 -0.27162663 0.27162663 23.616704 + 70000 287.31116 -0.029751882 0.029751882 23.667495 + 75000 312.48654 -0.10759866 0.10759866 23.504105 + 80000 309.94267 -0.2558548 0.2558548 23.810576 + 85000 328.04389 -0.1575471 0.1575471 24.013437 + 90000 302.9806 -0.032002164 0.032002164 24.264432 + 95000 294.20804 -0.27797238 0.27797238 23.291758 + 100000 307.63019 -0.19047448 0.19047448 23.632147 +Loop time of 530.844 on 1 procs for 100000 steps with 726 atoms + +Performance: 32.552 ns/day, 0.737 hours/ns, 188.379 timesteps/s, 136.763 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 190.47 | 190.47 | 190.47 | 0.0 | 35.88 +Bond | 0.10754 | 0.10754 | 0.10754 | 0.0 | 0.02 +Kspace | 73.179 | 73.179 | 73.179 | 0.0 | 13.79 +Neigh | 24.209 | 24.209 | 24.209 | 0.0 | 4.56 +Comm | 1.6857 | 1.6857 | 1.6857 | 0.0 | 0.32 +Output | 0.0016861 | 0.0016861 | 0.0016861 | 0.0 | 0.00 +Modify | 240.23 | 240.23 | 240.23 | 0.0 | 45.26 +Other | | 0.9595 | | | 0.18 + +Nlocal: 726 ave 726 max 726 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 2335 ave 2335 max 2335 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 120271 ave 120271 max 120271 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 120271 +Ave neighs/atom = 165.66253 +Ave special neighs/atom = 1.7355372 +Neighbor list builds = 7722 +Dangerous builds = 0 +write_data "data.piston.final" +System init for write_data ... +PPPM/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.32814871 + grid = 12 15 36 + stencil order = 5 + estimated absolute RMS force accuracy = 0.029311365 + estimated relative force accuracy = 8.8270304e-05 + using double precision MKL FFT + 3d grid and FFT values/proc = 15884 6480 +Generated 6 of 6 mixed pair_coeff terms from arithmetic mixing rule + +Average conjugate gradient steps: 1.981 +Total wall time: 0:08:50 diff --git a/examples/PACKAGES/electrode/piston/log.1Dec2022.piston.g++.4 b/examples/PACKAGES/electrode/piston/log.1Dec2022.piston.g++.4 new file mode 100644 index 0000000000..ffb6bcc61c --- /dev/null +++ b/examples/PACKAGES/electrode/piston/log.1Dec2022.piston.g++.4 @@ -0,0 +1,224 @@ +LAMMPS (3 Nov 2022) +# The intention is to find the average position of one wall at atmospheric +# pressure. The output is the wall position over time which can be used to +# find the average position for a run with fixed wall position. +# +# ----------------- Init Section ----------------- + +atom_style full +units real +boundary p p f +kspace_style pppm/electrode 1e-4 +kspace_modify slab 3.0 +pair_style lj/cut/coul/long 8 8 +bond_style harmonic +angle_style harmonic +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" +processors * * 2 + +# ----------------- Atom Definition Section ----------------- + +read_data "data.piston" +Reading data file ... + orthogonal box = (0 0 0) to (17.6494 20.3798 26) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 726 atoms + reading velocities ... + 726 velocities + scanning bonds ... + 2 = max bonds/atom + scanning angles ... + 1 = max angles/atom + reading bonds ... + 420 bonds + reading angles ... + 210 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.017 seconds + +# ----------------- Settings Section ----------------- + +pair_coeff 1 1 0.069 2.78 +pair_coeff 2 2 5.29 2.951 +pair_coeff 3 3 0.1553 3.166 +pair_coeff 4 4 0.0 0.0 +bond_coeff 1 600.0 1.0 +angle_coeff 1 75.0 109.47 +group wall type 1 +48 atoms in group wall +group gold type 2 +48 atoms in group gold +group spce type 3:4 +630 atoms in group spce +group ele union wall gold +96 atoms in group ele +fix fRattleSPCE spce shake 0.0001 10 0 b 1 a 1 +Finding SHAKE clusters ... + 0 = # of size 2 clusters + 0 = # of size 3 clusters + 0 = # of size 4 clusters + 210 = # of frozen angles + find clusters CPU = 0.002 seconds +pair_modify mix arithmetic + +# ----------------- Run Section ----------------- + +neigh_modify every 1 delay 0 +timestep 2 +fix fxnvt spce nvt temp 300 300 500 +fix fxforce_au gold setforce 0.0 0.0 0.0 + +# equilibrate z-coordinate of upper electrode while keeping the electrode rigid +fix fxforce_wa wall setforce 0.0 0.0 NULL +fix fxpressure wall aveforce 0 0 -0.005246 # atomspheric pressure: area/force->nktv2p +fix fxdrag wall viscous 100 +fix fxrigid wall rigid/nve single + 1 rigid bodies with 48 atoms + +# maintain constant potential during equilibration +# 'algo cg' allows for moving electrodes +fix fxele ele electrode/conp 0.0 1.805 symm on algo cg 1e-4 +96 atoms in group conp_group + +# setup output and run +variable q atom q +compute qwa wall reduce sum v_q +compute qau gold reduce sum v_q +variable top_wall equal (bound(wall,zmin)) +compute temp_mobile spce temp +variable s equal step +fix fxprint all print 1000 "${s} ${top_wall}" file top_wall.csv screen no +thermo_style custom step c_temp_mobile c_qwa c_qau v_top_wall +thermo 5000 +run 100000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +PPPM/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.32814871 + grid = 12 15 36 + stencil order = 5 + estimated absolute RMS force accuracy = 0.02930901 + estimated relative force accuracy = 8.8263214e-05 + using double precision MKL FFT + 3d grid and FFT values/proc = 8512 2880 +Generated 6 of 6 mixed pair_coeff terms from arithmetic 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 = 10 + ghost atom cutoff = 10 + binsize = 5, bins = 4 5 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 10.06 | 10.22 | 10.41 Mbytes + Step c_temp_mobile c_qwa c_qau v_top_wall + 0 303.38967 -0.042963484 0.042963484 21.4018 + 5000 292.03027 -0.19040435 0.19040435 24.581338 + 10000 309.52764 -0.48308301 0.48308301 23.776985 + 15000 295.00243 -0.16591109 0.16591109 23.672038 + 20000 293.5536 -0.086669084 0.086669084 23.426455 + 25000 303.0079 -0.16488112 0.16488112 23.862966 + 30000 306.31463 -0.23192653 0.23192653 23.819882 + 35000 303.66268 -0.2317907 0.2317907 23.495344 + 40000 301.39435 -0.34661329 0.34661329 23.657835 + 45000 291.61205 -0.30539427 0.30539427 23.437303 + 50000 298.65319 -0.096107034 0.096107034 23.57809 + 55000 282.65069 -0.14943539 0.14943539 23.823728 + 60000 310.64182 -0.17418813 0.17418813 23.286959 + 65000 308.47141 -0.02075662 0.02075662 23.91313 + 70000 292.5186 -0.080163162 0.080163162 23.96283 + 75000 270.13928 -0.029528648 0.029528648 23.488972 + 80000 322.10914 0.030761045 -0.030761045 23.47592 + 85000 310.60347 -0.24069996 0.24069996 23.987091 + 90000 294.35695 -0.070458235 0.070458235 23.397929 + 95000 308.69043 -0.2652581 0.2652581 23.473813 + 100000 318.71883 0.024035956 -0.024035956 23.449863 +Loop time of 590.232 on 4 procs for 100000 steps with 726 atoms + +Performance: 29.277 ns/day, 0.820 hours/ns, 169.425 timesteps/s, 123.003 katom-step/s +72.5% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 57.391 | 75.867 | 96.292 | 212.1 | 12.85 +Bond | 0.10177 | 0.11042 | 0.12415 | 2.7 | 0.02 +Kspace | 102.79 | 123.16 | 141.5 | 165.7 | 20.87 +Neigh | 12.808 | 12.895 | 12.982 | 2.3 | 2.18 +Comm | 18.885 | 19.973 | 21.064 | 24.0 | 3.38 +Output | 0.0022573 | 0.0022749 | 0.0023225 | 0.1 | 0.00 +Modify | 355.89 | 356.74 | 357.61 | 4.2 | 60.44 +Other | | 1.478 | | | 0.25 + +Nlocal: 181.5 ave 207 max 169 min +Histogram: 2 0 1 0 0 0 0 0 0 1 +Nghost: 1961.5 ave 1984 max 1926 min +Histogram: 1 0 0 0 0 0 1 0 1 1 +Neighs: 30051 ave 41646 max 20775 min +Histogram: 1 1 0 0 0 0 1 0 0 1 + +Total # of neighbors = 120204 +Ave neighs/atom = 165.57025 +Ave special neighs/atom = 1.7355372 +Neighbor list builds = 7663 +Dangerous builds = 0 +write_data "data.piston.final" +System init for write_data ... +PPPM/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.32814871 + grid = 12 15 36 + stencil order = 5 + estimated absolute RMS force accuracy = 0.029311028 + estimated relative force accuracy = 8.8269289e-05 + using double precision MKL FFT + 3d grid and FFT values/proc = 8512 2880 +Generated 6 of 6 mixed pair_coeff terms from arithmetic mixing rule + +Average conjugate gradient steps: 1.982 +Total wall time: 0:09:50 diff --git a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew2d.g++.1 b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew2d.g++.1 similarity index 76% rename from examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew2d.g++.1 rename to examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew2d.g++.1 index b01114e64c..bc2cf5b1e3 100644 --- a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew2d.g++.1 +++ b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew2d.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) boundary p p f kspace_style ewald/electrode 1.0e-7 kspace_modify slab ew2d @@ -28,8 +28,8 @@ Finding 1-2 1-3 1-4 neighbors ... 0 = max # of 1-3 neighbors 0 = max # of 1-4 neighbors 1 = max # of special neighbors - special bonds CPU = 0.000 seconds - read_data CPU = 0.006 seconds + special bonds CPU = 0.001 seconds + read_data CPU = 0.005 seconds group bot molecule 1 144 atoms in group bot @@ -67,6 +67,24 @@ thermo 1 thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev run 10 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) Ewald/electrode initialization ... WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327) @@ -76,9 +94,9 @@ WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327 estimated relative force accuracy = 1.2145309e-07 KSpace vectors: actual max1d max3d = 90 5 665 kxmax kymax kzmax = 3 3 5 - generated 1 of 1 mixed pair_coeff terms from geometric mixing rule +Generated 1 of 1 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 16 ghost atom cutoff = 16 @@ -94,7 +112,7 @@ Neighbor list info ... pair build: copy stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 15.93 | 15.93 | 15.93 Mbytes +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.94 | 15.94 Mbytes Step v_v c_qbot c_qtop v_qtheory v_percdev 0 0 0 0 0 0 1 0.2 -0.030920491 0.030920491 0.031376826 -1.4543703 @@ -107,22 +125,22 @@ Per MPI rank memory allocation (min/avg/max) = 15.93 | 15.93 | 15.93 Mbytes 8 1.6 -0.24736393 0.24736393 0.25101461 -1.4543704 9 1.8 -0.27828442 0.27828442 0.28239144 -1.4543704 10 2 -0.30920491 0.30920491 0.31376826 -1.4543704 -Loop time of 0.0912872 on 1 procs for 10 steps with 288 atoms +Loop time of 0.0451804 on 1 procs for 10 steps with 288 atoms -Performance: 9.465 ns/day, 2.536 hours/ns, 109.544 timesteps/s -400.1% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 19.123 ns/day, 1.255 hours/ns, 221.335 timesteps/s, 63.744 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.0086713 | 0.0086713 | 0.0086713 | 0.0 | 9.50 -Bond | 3.759e-06 | 3.759e-06 | 3.759e-06 | 0.0 | 0.00 -Kspace | 0.04575 | 0.04575 | 0.04575 | 0.0 | 50.12 +Pair | 0.0046814 | 0.0046814 | 0.0046814 | 0.0 | 10.36 +Bond | 1.293e-06 | 1.293e-06 | 1.293e-06 | 0.0 | 0.00 +Kspace | 0.028302 | 0.028302 | 0.028302 | 0.0 | 62.64 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.00018224 | 0.00018224 | 0.00018224 | 0.0 | 0.20 -Output | 0.0027569 | 0.0027569 | 0.0027569 | 0.0 | 3.02 -Modify | 0.03386 | 0.03386 | 0.03386 | 0.0 | 37.09 -Other | | 6.314e-05 | | | 0.07 +Comm | 7.3611e-05 | 7.3611e-05 | 7.3611e-05 | 0.0 | 0.16 +Output | 0.001128 | 0.001128 | 0.001128 | 0.0 | 2.50 +Modify | 0.010919 | 0.010919 | 0.010919 | 0.0 | 24.17 +Other | | 7.567e-05 | | | 0.17 Nlocal: 288 ave 288 max 288 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew2d.g++.4 b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew2d.g++.4 similarity index 76% rename from examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew2d.g++.4 rename to examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew2d.g++.4 index 29a0d660a1..b5243e747c 100644 --- a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew2d.g++.4 +++ b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew2d.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) boundary p p f kspace_style ewald/electrode 1.0e-7 kspace_modify slab ew2d @@ -29,8 +29,8 @@ Finding 1-2 1-3 1-4 neighbors ... 0 = max # of 1-3 neighbors 0 = max # of 1-4 neighbors 1 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.008 seconds + special bonds CPU = 0.003 seconds + read_data CPU = 0.009 seconds group bot molecule 1 144 atoms in group bot @@ -68,6 +68,24 @@ thermo 1 thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev run 10 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) Ewald/electrode initialization ... WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327) @@ -77,9 +95,9 @@ WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327 estimated relative force accuracy = 1.2145309e-07 KSpace vectors: actual max1d max3d = 90 5 665 kxmax kymax kzmax = 3 3 5 - generated 1 of 1 mixed pair_coeff terms from geometric mixing rule +Generated 1 of 1 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 16 ghost atom cutoff = 16 @@ -95,7 +113,7 @@ Neighbor list info ... pair build: copy stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 15.96 | 15.96 | 15.96 Mbytes +Per MPI rank memory allocation (min/avg/max) = 15.97 | 15.97 | 15.97 Mbytes Step v_v c_qbot c_qtop v_qtheory v_percdev 0 0 0 0 0 0 1 0.2 -0.030920491 0.030920491 0.031376826 -1.4543703 @@ -108,22 +126,22 @@ Per MPI rank memory allocation (min/avg/max) = 15.96 | 15.96 | 15.96 Mbytes 8 1.6 -0.24736393 0.24736393 0.25101461 -1.4543704 9 1.8 -0.27828442 0.27828442 0.28239144 -1.4543704 10 2 -0.30920491 0.30920491 0.31376826 -1.4543704 -Loop time of 0.0456609 on 4 procs for 10 steps with 288 atoms +Loop time of 0.022489 on 4 procs for 10 steps with 288 atoms -Performance: 18.922 ns/day, 1.268 hours/ns, 219.006 timesteps/s -86.7% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 38.419 ns/day, 0.625 hours/ns, 444.661 timesteps/s, 128.062 katom-step/s +91.6% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.0019389 | 0.0024013 | 0.0030807 | 0.9 | 5.26 -Bond | 1.493e-06 | 1.7132e-06 | 1.935e-06 | 0.0 | 0.00 -Kspace | 0.016165 | 0.016695 | 0.017072 | 0.3 | 36.56 +Pair | 0.0011688 | 0.0013694 | 0.0016077 | 0.4 | 6.09 +Bond | 6.72e-07 | 7.59e-07 | 9.02e-07 | 0.0 | 0.00 +Kspace | 0.0077542 | 0.0093901 | 0.010384 | 1.0 | 41.75 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.0030891 | 0.0037595 | 0.0040145 | 0.6 | 8.23 -Output | 0.0024177 | 0.0027885 | 0.0037099 | 1.0 | 6.11 -Modify | 0.01944 | 0.019746 | 0.020327 | 0.2 | 43.24 -Other | | 0.0002691 | | | 0.59 +Comm | 0.0015392 | 0.0016945 | 0.00183 | 0.3 | 7.53 +Output | 0.00084374 | 0.0010929 | 0.0015437 | 0.8 | 4.86 +Modify | 0.007495 | 0.0084669 | 0.010081 | 1.1 | 37.65 +Other | | 0.0004745 | | | 2.11 Nlocal: 72 ave 72 max 72 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew3dc.g++.1 b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew3dc.g++.1 similarity index 76% rename from examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew3dc.g++.1 rename to examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew3dc.g++.1 index d5292ad6ef..bebd5aed4a 100644 --- a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew3dc.g++.1 +++ b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew3dc.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) boundary p p f kspace_style ewald/electrode 1.0e-7 kspace_modify slab 3.0 # ew3dc @@ -28,8 +28,8 @@ Finding 1-2 1-3 1-4 neighbors ... 0 = max # of 1-3 neighbors 0 = max # of 1-4 neighbors 1 = max # of special neighbors - special bonds CPU = 0.000 seconds - read_data CPU = 0.007 seconds + special bonds CPU = 0.001 seconds + read_data CPU = 0.004 seconds group bot molecule 1 144 atoms in group bot @@ -67,6 +67,24 @@ thermo 1 thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev run 10 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) Ewald/electrode initialization ... WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327) @@ -76,9 +94,9 @@ WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327 estimated relative force accuracy = 9.3919471e-08 KSpace vectors: actual max1d max3d = 266 12 7812 kxmax kymax kzmax = 3 3 12 - generated 1 of 1 mixed pair_coeff terms from geometric mixing rule +Generated 1 of 1 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 16 ghost atom cutoff = 16 @@ -94,7 +112,7 @@ Neighbor list info ... pair build: copy stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 27.27 | 27.27 | 27.27 Mbytes +Per MPI rank memory allocation (min/avg/max) = 27.29 | 27.29 | 27.29 Mbytes Step v_v c_qbot c_qtop v_qtheory v_percdev 0 0 0 0 0 0 1 0.2 -0.030925182 0.030925182 0.031376826 -1.4394194 @@ -107,22 +125,22 @@ Per MPI rank memory allocation (min/avg/max) = 27.27 | 27.27 | 27.27 Mbytes 8 1.6 -0.24740146 0.24740146 0.25101461 -1.4394195 9 1.8 -0.27832664 0.27832664 0.28239144 -1.4394195 10 2 -0.30925182 0.30925182 0.31376826 -1.4394195 -Loop time of 0.0672288 on 1 procs for 10 steps with 288 atoms +Loop time of 0.0243868 on 1 procs for 10 steps with 288 atoms -Performance: 12.852 ns/day, 1.867 hours/ns, 148.746 timesteps/s -400.4% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 35.429 ns/day, 0.677 hours/ns, 410.058 timesteps/s, 118.097 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.0071442 | 0.0071442 | 0.0071442 | 0.0 | 10.63 -Bond | 2.976e-06 | 2.976e-06 | 2.976e-06 | 0.0 | 0.00 -Kspace | 0.0097903 | 0.0097903 | 0.0097903 | 0.0 | 14.56 +Pair | 0.0041504 | 0.0041504 | 0.0041504 | 0.0 | 17.02 +Bond | 8.92e-07 | 8.92e-07 | 8.92e-07 | 0.0 | 0.00 +Kspace | 0.0046942 | 0.0046942 | 0.0046942 | 0.0 | 19.25 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.00023514 | 0.00023514 | 0.00023514 | 0.0 | 0.35 -Output | 0.0029795 | 0.0029795 | 0.0029795 | 0.0 | 4.43 -Modify | 0.047009 | 0.047009 | 0.047009 | 0.0 | 69.92 -Other | | 6.809e-05 | | | 0.10 +Comm | 6.7942e-05 | 6.7942e-05 | 6.7942e-05 | 0.0 | 0.28 +Output | 0.0010799 | 0.0010799 | 0.0010799 | 0.0 | 4.43 +Modify | 0.014311 | 0.014311 | 0.014311 | 0.0 | 58.69 +Other | | 8.199e-05 | | | 0.34 Nlocal: 288 ave 288 max 288 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew3dc.g++.4 b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew3dc.g++.4 similarity index 76% rename from examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew3dc.g++.4 rename to examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew3dc.g++.4 index 92c5bf3cea..9899edc256 100644 --- a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ew3dc.g++.4 +++ b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ew3dc.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) boundary p p f kspace_style ewald/electrode 1.0e-7 kspace_modify slab 3.0 # ew3dc @@ -29,8 +29,8 @@ Finding 1-2 1-3 1-4 neighbors ... 0 = max # of 1-3 neighbors 0 = max # of 1-4 neighbors 1 = max # of special neighbors - special bonds CPU = 0.008 seconds - read_data CPU = 0.123 seconds + special bonds CPU = 0.003 seconds + read_data CPU = 0.007 seconds group bot molecule 1 144 atoms in group bot @@ -68,6 +68,24 @@ thermo 1 thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev run 10 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) Ewald/electrode initialization ... WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327) @@ -77,9 +95,9 @@ WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327 estimated relative force accuracy = 9.3919471e-08 KSpace vectors: actual max1d max3d = 266 12 7812 kxmax kymax kzmax = 3 3 12 - generated 1 of 1 mixed pair_coeff terms from geometric mixing rule +Generated 1 of 1 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 16 ghost atom cutoff = 16 @@ -95,7 +113,7 @@ Neighbor list info ... pair build: copy stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 27.31 | 27.31 | 27.31 Mbytes +Per MPI rank memory allocation (min/avg/max) = 27.32 | 27.32 | 27.32 Mbytes Step v_v c_qbot c_qtop v_qtheory v_percdev 0 0 0 0 0 0 1 0.2 -0.030925182 0.030925182 0.031376826 -1.4394194 @@ -108,22 +126,22 @@ Per MPI rank memory allocation (min/avg/max) = 27.31 | 27.31 | 27.31 Mbytes 8 1.6 -0.24740146 0.24740146 0.25101461 -1.4394195 9 1.8 -0.27832664 0.27832664 0.28239144 -1.4394195 10 2 -0.30925182 0.30925182 0.31376826 -1.4394195 -Loop time of 0.0459561 on 4 procs for 10 steps with 288 atoms +Loop time of 0.0200123 on 4 procs for 10 steps with 288 atoms -Performance: 18.801 ns/day, 1.277 hours/ns, 217.599 timesteps/s -95.8% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 43.173 ns/day, 0.556 hours/ns, 499.692 timesteps/s, 143.911 katom-step/s +90.2% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.0021527 | 0.0026891 | 0.0037845 | 1.3 | 5.85 -Bond | 1.303e-06 | 1.9462e-06 | 3.206e-06 | 0.0 | 0.00 -Kspace | 0.0066254 | 0.0077509 | 0.0083577 | 0.8 | 16.87 +Pair | 0.0014059 | 0.0015013 | 0.0015856 | 0.2 | 7.50 +Bond | 7.12e-07 | 8.9675e-07 | 1.19e-06 | 0.0 | 0.00 +Kspace | 0.0036091 | 0.0037586 | 0.0039024 | 0.2 | 18.78 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.00285 | 0.0057275 | 0.0067088 | 2.2 | 12.46 -Output | 0.0024325 | 0.0034682 | 0.0065316 | 3.0 | 7.55 -Modify | 0.025911 | 0.025969 | 0.026007 | 0.0 | 56.51 -Other | | 0.0003494 | | | 0.76 +Comm | 0.0017095 | 0.0017404 | 0.001775 | 0.1 | 8.70 +Output | 0.00092975 | 0.0010846 | 0.0015398 | 0.8 | 5.42 +Modify | 0.011292 | 0.011375 | 0.011438 | 0.1 | 56.84 +Other | | 0.0005509 | | | 2.75 Nlocal: 72 ave 72 max 72 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ffield.g++.1 b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ffield.g++.1 similarity index 77% rename from examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ffield.g++.1 rename to examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ffield.g++.1 index b0172323a3..3ea9920c7c 100644 --- a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ffield.g++.1 +++ b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ffield.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) boundary p p p # finite field, fully periodic kspace_style ewald/electrode 1.0e-7 @@ -28,7 +28,7 @@ Finding 1-2 1-3 1-4 neighbors ... 0 = max # of 1-4 neighbors 1 = max # of special neighbors special bonds CPU = 0.001 seconds - read_data CPU = 0.010 seconds + read_data CPU = 0.004 seconds group bot molecule 1 144 atoms in group bot @@ -66,6 +66,24 @@ thermo 1 thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev run 10 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) Ewald/electrode initialization ... WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327) @@ -75,9 +93,9 @@ WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327 estimated relative force accuracy = 1.2145309e-07 KSpace vectors: actual max1d max3d = 95 5 665 kxmax kymax kzmax = 3 3 5 - generated 1 of 1 mixed pair_coeff terms from geometric mixing rule +Generated 1 of 1 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 16 ghost atom cutoff = 16 @@ -93,7 +111,7 @@ Neighbor list info ... pair build: copy stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 16.01 | 16.01 | 16.01 Mbytes +Per MPI rank memory allocation (min/avg/max) = 16.02 | 16.02 | 16.02 Mbytes Step v_v c_qbot c_qtop v_qtheory v_percdev 0 0 0 0 0 0 1 0.2 -0.030908718 0.030908718 0.031376826 -1.491893 @@ -106,22 +124,22 @@ Per MPI rank memory allocation (min/avg/max) = 16.01 | 16.01 | 16.01 Mbytes 8 1.6 -0.24726974 0.24726974 0.25101461 -1.491893 9 1.8 -0.27817846 0.27817846 0.28239144 -1.491893 10 2 -0.30908718 0.30908718 0.31376826 -1.491893 -Loop time of 0.0481838 on 1 procs for 10 steps with 288 atoms +Loop time of 0.0147727 on 1 procs for 10 steps with 288 atoms -Performance: 17.931 ns/day, 1.338 hours/ns, 207.539 timesteps/s -390.7% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 58.486 ns/day, 0.410 hours/ns, 676.926 timesteps/s, 194.955 katom-step/s +75.1% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.0071719 | 0.0071719 | 0.0071719 | 0.0 | 14.88 -Bond | 2.946e-06 | 2.946e-06 | 2.946e-06 | 0.0 | 0.01 -Kspace | 0.0038758 | 0.0038758 | 0.0038758 | 0.0 | 8.04 +Pair | 0.0035163 | 0.0035163 | 0.0035163 | 0.0 | 23.80 +Bond | 9.61e-07 | 9.61e-07 | 9.61e-07 | 0.0 | 0.01 +Kspace | 0.0018156 | 0.0018156 | 0.0018156 | 0.0 | 12.29 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.00053561 | 0.00053561 | 0.00053561 | 0.0 | 1.11 -Output | 0.0025385 | 0.0025385 | 0.0025385 | 0.0 | 5.27 -Modify | 0.033951 | 0.033951 | 0.033951 | 0.0 | 70.46 -Other | | 0.0001075 | | | 0.22 +Comm | 0.00012717 | 0.00012717 | 0.00012717 | 0.0 | 0.86 +Output | 0.00083495 | 0.00083495 | 0.00083495 | 0.0 | 5.65 +Modify | 0.0083949 | 0.0083949 | 0.0083949 | 0.0 | 56.83 +Other | | 8.273e-05 | | | 0.56 Nlocal: 288 ave 288 max 288 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ffield.g++.4 b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ffield.g++.4 similarity index 76% rename from examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ffield.g++.4 rename to examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ffield.g++.4 index b1ee1bec45..ef9c212755 100644 --- a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-ewald-ffield.g++.4 +++ b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-ewald-ffield.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) boundary p p p # finite field, fully periodic kspace_style ewald/electrode 1.0e-7 @@ -28,8 +28,8 @@ Finding 1-2 1-3 1-4 neighbors ... 0 = max # of 1-3 neighbors 0 = max # of 1-4 neighbors 1 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.026 seconds + special bonds CPU = 0.002 seconds + read_data CPU = 0.006 seconds group bot molecule 1 144 atoms in group bot @@ -67,6 +67,24 @@ thermo 1 thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev run 10 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) Ewald/electrode initialization ... WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327) @@ -76,9 +94,9 @@ WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327 estimated relative force accuracy = 1.2145309e-07 KSpace vectors: actual max1d max3d = 95 5 665 kxmax kymax kzmax = 3 3 5 - generated 1 of 1 mixed pair_coeff terms from geometric mixing rule +Generated 1 of 1 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 16 ghost atom cutoff = 16 @@ -94,7 +112,7 @@ Neighbor list info ... pair build: copy stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 15.97 | 15.97 | 15.97 Mbytes +Per MPI rank memory allocation (min/avg/max) = 15.98 | 15.98 | 15.98 Mbytes Step v_v c_qbot c_qtop v_qtheory v_percdev 0 0 0 0 0 0 1 0.2 -0.030908718 0.030908718 0.031376826 -1.491893 @@ -107,22 +125,22 @@ Per MPI rank memory allocation (min/avg/max) = 15.97 | 15.97 | 15.97 Mbytes 8 1.6 -0.24726974 0.24726974 0.25101461 -1.491893 9 1.8 -0.27817846 0.27817846 0.28239144 -1.491893 10 2 -0.30908718 0.30908718 0.31376826 -1.491893 -Loop time of 0.0294825 on 4 procs for 10 steps with 288 atoms +Loop time of 0.0151333 on 4 procs for 10 steps with 288 atoms -Performance: 29.306 ns/day, 0.819 hours/ns, 339.184 timesteps/s -99.8% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 57.093 ns/day, 0.420 hours/ns, 660.794 timesteps/s, 190.309 katom-step/s +41.1% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.0020718 | 0.0025674 | 0.0029431 | 0.7 | 8.71 -Bond | 1.423e-06 | 2.0293e-06 | 2.615e-06 | 0.0 | 0.01 -Kspace | 0.0028016 | 0.0031772 | 0.0035529 | 0.5 | 10.78 +Pair | 0.0014606 | 0.0015586 | 0.0016093 | 0.1 | 10.30 +Bond | 9.31e-07 | 1.0197e-06 | 1.084e-06 | 0.0 | 0.01 +Kspace | 0.0014157 | 0.0015231 | 0.0016295 | 0.2 | 10.06 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.0023552 | 0.0032209 | 0.0035502 | 0.9 | 10.92 -Output | 0.0011969 | 0.0016057 | 0.002676 | 1.5 | 5.45 -Modify | 0.018358 | 0.018553 | 0.018654 | 0.1 | 62.93 -Other | | 0.0003563 | | | 1.21 +Comm | 0.0019994 | 0.0020111 | 0.0020282 | 0.0 | 13.29 +Output | 0.00072893 | 0.00095378 | 0.0015177 | 0.0 | 6.30 +Modify | 0.0081934 | 0.0082729 | 0.0083794 | 0.1 | 54.67 +Other | | 0.0008128 | | | 5.37 Nlocal: 72 ave 72 max 72 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ew3dc.g++.1 b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ew3dc.g++.1 similarity index 73% rename from examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ew3dc.g++.1 rename to examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ew3dc.g++.1 index ff0ae7698a..2e5d18d09c 100644 --- a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ew3dc.g++.1 +++ b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ew3dc.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) boundary p p f kspace_style pppm/electrode 1.0e-7 kspace_modify slab 3.0 @@ -28,8 +28,8 @@ Finding 1-2 1-3 1-4 neighbors ... 0 = max # of 1-3 neighbors 0 = max # of 1-4 neighbors 1 = max # of special neighbors - special bonds CPU = 0.000 seconds - read_data CPU = 0.007 seconds + special bonds CPU = 0.001 seconds + read_data CPU = 0.004 seconds group bot molecule 1 144 atoms in group bot @@ -67,6 +67,35 @@ thermo 1 thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev run 10 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) PPPM/electrode initialization ... WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327) @@ -78,9 +107,9 @@ WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327 estimated relative force accuracy = 8.4221827e-08 using double precision MKL FFT 3d grid and FFT values/proc = 4563 1600 - generated 1 of 1 mixed pair_coeff terms from geometric mixing rule +Generated 1 of 1 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 16 ghost atom cutoff = 16 @@ -97,7 +126,7 @@ Neighbor list info ... stencil: none bin: none WARNING: Using kspace solver on system with no charge (src/kspace.cpp:314) -Per MPI rank memory allocation (min/avg/max) = 7.93 | 7.93 | 7.93 Mbytes +Per MPI rank memory allocation (min/avg/max) = 7.942 | 7.942 | 7.942 Mbytes Step v_v c_qbot c_qtop v_qtheory v_percdev 0 0 0 0 0 0 1 0.2 -0.030912769 0.030912769 0.031376826 -1.4789807 @@ -110,22 +139,22 @@ Per MPI rank memory allocation (min/avg/max) = 7.93 | 7.93 | 7.93 Mbytes 8 1.6 -0.24730215 0.24730215 0.25101461 -1.4789807 9 1.8 -0.27821492 0.27821492 0.28239144 -1.4789807 10 2 -0.30912769 0.30912769 0.31376826 -1.4789807 -Loop time of 0.0784857 on 1 procs for 10 steps with 288 atoms +Loop time of 0.0176221 on 1 procs for 10 steps with 288 atoms -Performance: 11.008 ns/day, 2.180 hours/ns, 127.412 timesteps/s -400.0% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 49.029 ns/day, 0.490 hours/ns, 567.471 timesteps/s, 163.432 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.0075859 | 0.0075859 | 0.0075859 | 0.0 | 9.67 -Bond | 2.817e-06 | 2.817e-06 | 2.817e-06 | 0.0 | 0.00 -Kspace | 0.020841 | 0.020841 | 0.020841 | 0.0 | 26.55 +Pair | 0.0051407 | 0.0051407 | 0.0051407 | 0.0 | 29.17 +Bond | 9.92e-07 | 9.92e-07 | 9.92e-07 | 0.0 | 0.01 +Kspace | 0.0029456 | 0.0029456 | 0.0029456 | 0.0 | 16.72 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.00019415 | 0.00019415 | 0.00019415 | 0.0 | 0.25 -Output | 0.0032534 | 0.0032534 | 0.0032534 | 0.0 | 4.15 -Modify | 0.046545 | 0.046545 | 0.046545 | 0.0 | 59.30 -Other | | 6.246e-05 | | | 0.08 +Comm | 8.3497e-05 | 8.3497e-05 | 8.3497e-05 | 0.0 | 0.47 +Output | 0.0012832 | 0.0012832 | 0.0012832 | 0.0 | 7.28 +Modify | 0.0080737 | 0.0080737 | 0.0080737 | 0.0 | 45.82 +Other | | 9.442e-05 | | | 0.54 Nlocal: 288 ave 288 max 288 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -140,4 +169,4 @@ Ave special neighs/atom = 0 Neighbor list builds = 0 Dangerous builds = 0 -Total wall time: 0:00:10 +Total wall time: 0:00:01 diff --git a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ew3dc.g++.4 b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ew3dc.g++.4 similarity index 73% rename from examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ew3dc.g++.4 rename to examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ew3dc.g++.4 index 4fcb219a89..69950a5859 100644 --- a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ew3dc.g++.4 +++ b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ew3dc.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) boundary p p f kspace_style pppm/electrode 1.0e-7 kspace_modify slab 3.0 @@ -29,8 +29,8 @@ Finding 1-2 1-3 1-4 neighbors ... 0 = max # of 1-3 neighbors 0 = max # of 1-4 neighbors 1 = max # of special neighbors - special bonds CPU = 0.000 seconds - read_data CPU = 0.014 seconds + special bonds CPU = 0.003 seconds + read_data CPU = 0.007 seconds group bot molecule 1 144 atoms in group bot @@ -68,6 +68,35 @@ thermo 1 thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev run 10 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) PPPM/electrode initialization ... WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327) @@ -79,9 +108,9 @@ WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327 estimated relative force accuracy = 8.4221827e-08 using double precision MKL FFT 3d grid and FFT values/proc = 2691 672 - generated 1 of 1 mixed pair_coeff terms from geometric mixing rule +Generated 1 of 1 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 16 ghost atom cutoff = 16 @@ -98,7 +127,7 @@ Neighbor list info ... stencil: none bin: none WARNING: Using kspace solver on system with no charge (src/kspace.cpp:314) -Per MPI rank memory allocation (min/avg/max) = 7.716 | 7.765 | 7.814 Mbytes +Per MPI rank memory allocation (min/avg/max) = 7.725 | 7.774 | 7.823 Mbytes Step v_v c_qbot c_qtop v_qtheory v_percdev 0 0 0 0 0 0 1 0.2 -0.030912769 0.030912769 0.031376826 -1.4789807 @@ -111,22 +140,22 @@ Per MPI rank memory allocation (min/avg/max) = 7.716 | 7.765 | 7.814 Mbytes 8 1.6 -0.24730215 0.24730215 0.25101461 -1.4789807 9 1.8 -0.27821492 0.27821492 0.28239144 -1.4789807 10 2 -0.30912769 0.30912769 0.31376826 -1.4789807 -Loop time of 0.0296999 on 4 procs for 10 steps with 288 atoms +Loop time of 0.0162257 on 4 procs for 10 steps with 288 atoms -Performance: 29.091 ns/day, 0.825 hours/ns, 336.701 timesteps/s -91.5% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 53.249 ns/day, 0.451 hours/ns, 616.306 timesteps/s, 177.496 katom-step/s +50.4% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.0021578 | 0.0022153 | 0.0022978 | 0.1 | 7.46 -Bond | 1.161e-06 | 1.435e-06 | 1.943e-06 | 0.0 | 0.00 -Kspace | 0.0054884 | 0.0057437 | 0.0059072 | 0.2 | 19.34 +Pair | 0.0010955 | 0.0013022 | 0.0014351 | 0.3 | 8.03 +Bond | 6.13e-07 | 7.795e-07 | 1.031e-06 | 0.0 | 0.00 +Kspace | 0.0034606 | 0.003541 | 0.0036869 | 0.2 | 21.82 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.0015424 | 0.0025686 | 0.0031306 | 1.2 | 8.65 -Output | 0.0019229 | 0.0023315 | 0.0033526 | 1.2 | 7.85 -Modify | 0.016192 | 0.016494 | 0.016902 | 0.2 | 55.54 -Other | | 0.0003449 | | | 1.16 +Comm | 0.0015915 | 0.0017672 | 0.0019298 | 0.3 | 10.89 +Output | 0.00071528 | 0.00095256 | 0.001506 | 0.0 | 5.87 +Modify | 0.0080243 | 0.0080738 | 0.0081204 | 0.0 | 49.76 +Other | | 0.0005881 | | | 3.62 Nlocal: 72 ave 72 max 72 min Histogram: 4 0 0 0 0 0 0 0 0 0 @@ -141,4 +170,4 @@ Ave special neighs/atom = 0 Neighbor list builds = 0 Dangerous builds = 0 -Total wall time: 0:00:03 +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ffield.g++.1 b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ffield.g++.1 similarity index 73% rename from examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ffield.g++.1 rename to examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ffield.g++.1 index be13b1ca10..eb8d857fbe 100644 --- a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ffield.g++.1 +++ b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ffield.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) boundary p p p # finite field, fully periodic kspace_style pppm/electrode 1.0e-7 @@ -28,7 +28,7 @@ Finding 1-2 1-3 1-4 neighbors ... 0 = max # of 1-4 neighbors 1 = max # of special neighbors special bonds CPU = 0.001 seconds - read_data CPU = 0.006 seconds + read_data CPU = 0.004 seconds group bot molecule 1 144 atoms in group bot @@ -66,6 +66,35 @@ thermo 1 thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev run 10 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) PPPM/electrode initialization ... WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327) @@ -77,9 +106,9 @@ WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327 estimated relative force accuracy = 5.4638319e-08 using double precision MKL FFT 3d grid and FFT values/proc = 2873 768 - generated 1 of 1 mixed pair_coeff terms from geometric mixing rule +Generated 1 of 1 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 16 ghost atom cutoff = 16 @@ -96,7 +125,7 @@ Neighbor list info ... stencil: none bin: none WARNING: Using kspace solver on system with no charge (src/kspace.cpp:314) -Per MPI rank memory allocation (min/avg/max) = 7.86 | 7.86 | 7.86 Mbytes +Per MPI rank memory allocation (min/avg/max) = 7.871 | 7.871 | 7.871 Mbytes Step v_v c_qbot c_qtop v_qtheory v_percdev 0 0 0 0 0 0 1 0.2 -0.030902 0.030902 0.031376826 -1.5133027 @@ -109,22 +138,22 @@ Per MPI rank memory allocation (min/avg/max) = 7.86 | 7.86 | 7.86 Mbytes 8 1.6 -0.247216 0.247216 0.25101461 -1.5133028 9 1.8 -0.278118 0.278118 0.28239144 -1.5133028 10 2 -0.30902 0.30902 0.31376826 -1.5133028 -Loop time of 0.054016 on 1 procs for 10 steps with 288 atoms +Loop time of 0.0150845 on 1 procs for 10 steps with 288 atoms -Performance: 15.995 ns/day, 1.500 hours/ns, 185.130 timesteps/s -400.3% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 57.277 ns/day, 0.419 hours/ns, 662.933 timesteps/s, 190.925 katom-step/s +90.5% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.0081119 | 0.0081119 | 0.0081119 | 0.0 | 15.02 -Bond | 4.802e-06 | 4.802e-06 | 4.802e-06 | 0.0 | 0.01 -Kspace | 0.0053539 | 0.0053539 | 0.0053539 | 0.0 | 9.91 +Pair | 0.0052281 | 0.0052281 | 0.0052281 | 0.0 | 34.66 +Bond | 9.72e-07 | 9.72e-07 | 9.72e-07 | 0.0 | 0.01 +Kspace | 0.0017267 | 0.0017267 | 0.0017267 | 0.0 | 11.45 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.00052577 | 0.00052577 | 0.00052577 | 0.0 | 0.97 -Output | 0.0033476 | 0.0033476 | 0.0033476 | 0.0 | 6.20 -Modify | 0.036562 | 0.036562 | 0.036562 | 0.0 | 67.69 -Other | | 0.0001102 | | | 0.20 +Comm | 0.00016423 | 0.00016423 | 0.00016423 | 0.0 | 1.09 +Output | 0.0010211 | 0.0010211 | 0.0010211 | 0.0 | 6.77 +Modify | 0.0068532 | 0.0068532 | 0.0068532 | 0.0 | 45.43 +Other | | 9.022e-05 | | | 0.60 Nlocal: 288 ave 288 max 288 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -138,4 +167,4 @@ Ave neighs/atom = 92 Ave special neighs/atom = 0 Neighbor list builds = 0 Dangerous builds = 0 -Total wall time: 0:00:09 +Total wall time: 0:00:01 diff --git a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ffield.g++.4 b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ffield.g++.4 similarity index 73% rename from examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ffield.g++.4 rename to examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ffield.g++.4 index 619ed2bc48..75b20bb7f2 100644 --- a/examples/PACKAGES/electrode/planar/log.26Apr2022.planar-pppm-ffield.g++.4 +++ b/examples/PACKAGES/electrode/planar/log.1Dec2022.planar-pppm-ffield.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (24 Mar 2022) +LAMMPS (3 Nov 2022) boundary p p p # finite field, fully periodic kspace_style pppm/electrode 1.0e-7 @@ -28,8 +28,8 @@ Finding 1-2 1-3 1-4 neighbors ... 0 = max # of 1-3 neighbors 0 = max # of 1-4 neighbors 1 = max # of special neighbors - special bonds CPU = 0.001 seconds - read_data CPU = 0.022 seconds + special bonds CPU = 0.002 seconds + read_data CPU = 0.006 seconds group bot molecule 1 144 atoms in group bot @@ -67,6 +67,35 @@ thermo 1 thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev run 10 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- kspace_style pppm/electrode command: + +@article{Ahrens2021, +author = {Ahrens-Iwers, Ludwig J.V. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0063381}, +title = {{Constant potential simulations on a mesh}}, +journal = {Journal of Chemical Physics}, +year = {2021} +volume = {155}, +pages = {104104}, +} +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) PPPM/electrode initialization ... WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327) @@ -78,9 +107,9 @@ WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327 estimated relative force accuracy = 5.4638319e-08 using double precision MKL FFT 3d grid and FFT values/proc = 1287 192 - generated 1 of 1 mixed pair_coeff terms from geometric mixing rule +Generated 1 of 1 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 16 ghost atom cutoff = 16 @@ -97,7 +126,7 @@ Neighbor list info ... stencil: none bin: none WARNING: Using kspace solver on system with no charge (src/kspace.cpp:314) -Per MPI rank memory allocation (min/avg/max) = 7.712 | 7.712 | 7.712 Mbytes +Per MPI rank memory allocation (min/avg/max) = 7.721 | 7.721 | 7.721 Mbytes Step v_v c_qbot c_qtop v_qtheory v_percdev 0 0 0 0 0 0 1 0.2 -0.030902 0.030902 0.031376826 -1.5133027 @@ -110,22 +139,22 @@ Per MPI rank memory allocation (min/avg/max) = 7.712 | 7.712 | 7.712 Mbytes 8 1.6 -0.247216 0.247216 0.25101461 -1.5133028 9 1.8 -0.278118 0.278118 0.28239144 -1.5133028 10 2 -0.30902 0.30902 0.31376826 -1.5133028 -Loop time of 0.0301351 on 4 procs for 10 steps with 288 atoms +Loop time of 0.0169132 on 4 procs for 10 steps with 288 atoms -Performance: 28.671 ns/day, 0.837 hours/ns, 331.839 timesteps/s -99.8% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 51.084 ns/day, 0.470 hours/ns, 591.252 timesteps/s, 170.281 katom-step/s +49.8% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.0020768 | 0.0022701 | 0.0024074 | 0.3 | 7.53 -Bond | 1.271e-06 | 2.2107e-06 | 4.237e-06 | 0.0 | 0.01 -Kspace | 0.0039171 | 0.0040631 | 0.0042468 | 0.2 | 13.48 +Pair | 0.00098343 | 0.0013515 | 0.0015461 | 0.6 | 7.99 +Bond | 6.21e-07 | 6.81e-07 | 7.3e-07 | 0.0 | 0.00 +Kspace | 0.0036673 | 0.0038144 | 0.004106 | 0.3 | 22.55 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.0020711 | 0.0032953 | 0.0038884 | 1.3 | 10.93 -Output | 0.0013425 | 0.001877 | 0.0031692 | 1.7 | 6.23 -Modify | 0.018076 | 0.018252 | 0.018479 | 0.1 | 60.57 -Other | | 0.0003755 | | | 1.25 +Comm | 0.0015601 | 0.0016528 | 0.0017294 | 0.2 | 9.77 +Output | 0.00072013 | 0.00087465 | 0.0012429 | 0.0 | 5.17 +Modify | 0.0086712 | 0.0087641 | 0.0089049 | 0.1 | 51.82 +Other | | 0.0004551 | | | 2.69 Nlocal: 72 ave 72 max 72 min Histogram: 4 0 0 0 0 0 0 0 0 0 @@ -139,4 +168,4 @@ Ave neighs/atom = 92 Ave special neighs/atom = 0 Neighbor list builds = 0 Dangerous builds = 0 -Total wall time: 0:00:03 +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/fep/CC-CO/fep01/data.0.lmp b/examples/PACKAGES/fep/CC-CO/fep01/data.0.lmp new file mode 120000 index 0000000000..5c33e53300 --- /dev/null +++ b/examples/PACKAGES/fep/CC-CO/fep01/data.0.lmp @@ -0,0 +1 @@ +../mols/data.0.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CC-CO/fep10/data.1.lmp b/examples/PACKAGES/fep/CC-CO/fep10/data.1.lmp new file mode 120000 index 0000000000..4222a38b76 --- /dev/null +++ b/examples/PACKAGES/fep/CC-CO/fep10/data.1.lmp @@ -0,0 +1 @@ +../mols/data.1.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4-CF4/bar01/data.0.lmp b/examples/PACKAGES/fep/CH4-CF4/bar01/data.0.lmp new file mode 120000 index 0000000000..5c33e53300 --- /dev/null +++ b/examples/PACKAGES/fep/CH4-CF4/bar01/data.0.lmp @@ -0,0 +1 @@ +../mols/data.0.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4-CF4/bar10/data.1.lmp b/examples/PACKAGES/fep/CH4-CF4/bar10/data.1.lmp new file mode 120000 index 0000000000..4222a38b76 --- /dev/null +++ b/examples/PACKAGES/fep/CH4-CF4/bar10/data.1.lmp @@ -0,0 +1 @@ +../mols/data.1.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4-CF4/fep01/data.0.lmp b/examples/PACKAGES/fep/CH4-CF4/fep01/data.0.lmp new file mode 120000 index 0000000000..5c33e53300 --- /dev/null +++ b/examples/PACKAGES/fep/CH4-CF4/fep01/data.0.lmp @@ -0,0 +1 @@ +../mols/data.0.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4-CF4/fep10/data.1.lmp b/examples/PACKAGES/fep/CH4-CF4/fep10/data.1.lmp new file mode 120000 index 0000000000..4222a38b76 --- /dev/null +++ b/examples/PACKAGES/fep/CH4-CF4/fep10/data.1.lmp @@ -0,0 +1 @@ +../mols/data.1.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4hyd/fdti01/data.lmp b/examples/PACKAGES/fep/CH4hyd/fdti01/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/CH4hyd/fdti01/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4hyd/fdti10/data.lmp b/examples/PACKAGES/fep/CH4hyd/fdti10/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/CH4hyd/fdti10/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4hyd/fep01/data.lmp b/examples/PACKAGES/fep/CH4hyd/fep01/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/CH4hyd/fep01/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4hyd/fep10/data.lmp b/examples/PACKAGES/fep/CH4hyd/fep10/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/CH4hyd/fep10/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/SPCEhyd/fep01/data.lmp b/examples/PACKAGES/fep/SPCEhyd/fep01/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/SPCEhyd/fep01/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/SPCEhyd/fep10/data.lmp b/examples/PACKAGES/fep/SPCEhyd/fep10/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/SPCEhyd/fep10/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file diff --git a/examples/PACKAGES/pace/plugin/CMakeLists.txt b/examples/PACKAGES/pace/plugin/CMakeLists.txt index 6ad9c791ba..25fa877ffc 100644 --- a/examples/PACKAGES/pace/plugin/CMakeLists.txt +++ b/examples/PACKAGES/pace/plugin/CMakeLists.txt @@ -38,9 +38,15 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/lammps.ico ${CMAKE_SOURCE_DIR}/lammps-text-logo-wide.bmp ${CMAKE_SOURCE_DIR}/paceplugin.nsis ${CMAKE_BINARY_DIR}) if(BUILD_MPI) - add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MPI paceplugin.nsis - DEPENDS paceplugin - BYPRODUCTS LAMMPS-ML-PACE-plugin-${LAMMPS_VERSION}-MPI.exe) + if(USE_MSMPI) + add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MSMPI paceplugin.nsis + DEPENDS paceplugin + BYPRODUCTS LAMMPS-ML-PACE-plugin-${LAMMPS_VERSION}-MSMPI.exe) + else() + add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MPI paceplugin.nsis + DEPENDS paceplugin + BYPRODUCTS LAMMPS-ML-PACE-plugin-${LAMMPS_VERSION}-MPI.exe) + endif() else() add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION} paceplugin.nsis COMMAND ${CMAKE_COMMAND} -E echo ${PWD} diff --git a/examples/PACKAGES/pod/README.md b/examples/PACKAGES/pod/README.md new file mode 100644 index 0000000000..2c6db69200 --- /dev/null +++ b/examples/PACKAGES/pod/README.md @@ -0,0 +1,21 @@ +### Compile LAMMPS/POD + +Go to `lammps` directory and build with the POD package: + + cd path/to/lammps + mkdir build-pod + cd build-pod + cmake -C ../cmake/presets/basic.cmake -D PKG_ML-POD=on ../cmake + cmake --build . + +### Fit a POD potential for tantalum + +Go to `lammps/examples/PACKAGES/pod/Ta` directory and run + + lmp -in in.podfit + +See the README in `lammps/examples/PACKAGES/pod/Ta` for instructions on how to run MD with the potential. + +### Examples for other materials + +See [https://github.com/cesmix-mit/pod-examples](https://github.com/cesmix-mit/pod-examples) diff --git a/examples/PACKAGES/pod/Ta/README.md b/examples/PACKAGES/pod/Ta/README.md new file mode 100644 index 0000000000..031698550c --- /dev/null +++ b/examples/PACKAGES/pod/Ta/README.md @@ -0,0 +1,15 @@ +### POD example for Ta + +We will fit a potential to the `Ta` training data in the `XYZ` directory, which houses `.xyz` files +of the training data taken from [the FitSNAP repo](https://github.com/FitSNAP/FitSNAP/tree/master/examples/Ta_XYZ/XYZ) + +Fit POD with + + lmp -in in.fitpod + +This creates `Ta_coefficients.pod` for the linear model, which we can use to run MD with + + lmp -in in.pod + + + diff --git a/examples/PACKAGES/pod/Ta/Ta_coeff.pod b/examples/PACKAGES/pod/Ta/Ta_coeff.pod new file mode 120000 index 0000000000..ddf9c1426d --- /dev/null +++ b/examples/PACKAGES/pod/Ta/Ta_coeff.pod @@ -0,0 +1 @@ +../../../../potentials/Ta_coeff.pod \ No newline at end of file diff --git a/examples/PACKAGES/pod/Ta/Ta_coefficients.pod b/examples/PACKAGES/pod/Ta/Ta_coefficients.pod new file mode 100644 index 0000000000..c8943bb889 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/Ta_coefficients.pod @@ -0,0 +1,33 @@ +POD_coefficients: 32 +-4.44242 +4.10219 +-2.36987 +-3.92184 +0.83796 +-0.79457 +0.26230 +-21.24294 +-15.38460 +-38.44056 +8.29872 +-42.54514 +2.79976 +3.76109 +5.23499 +0.04878 +2.96006 +0.09101 +-0.19257 +-0.24326 +-0.16735 +0.53738 +0.02236 +-0.00154 +0.02488 +-0.00565 +0.07672 +-0.05894 +-0.05604 +-0.12664 +0.11723 +0.00262 diff --git a/examples/PACKAGES/pod/Ta/Ta_data.pod b/examples/PACKAGES/pod/Ta/Ta_data.pod new file mode 100644 index 0000000000..0933f3e79a --- /dev/null +++ b/examples/PACKAGES/pod/Ta/Ta_data.pod @@ -0,0 +1,20 @@ +file_format extxyz +file_extension xyz + +path_to_training_data_set "XYZ" +path_to_test_data_set "XYZ" + +fitting_weight_energy 100.0 +fitting_weight_force 1.0 +fitting_regularization_parameter 1e-10 + +error_analysis_for_training_data_set 1 +error_analysis_for_test_data_set 0 + +# Add the following basename to the name of output files +basename_for_output_files Ta + +# number of digits after the decimal point for pod coefficients +precision_for_pod_coefficients 5 + + diff --git a/examples/PACKAGES/pod/Ta/Ta_param.pod b/examples/PACKAGES/pod/Ta/Ta_param.pod new file mode 100644 index 0000000000..00c01b01a6 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/Ta_param.pod @@ -0,0 +1,32 @@ +# DATE: 2022-11-30 UNITS: metal CONTRIBUTOR: Ngoc Cuong Nguyen, exapde@gmail.com CITATION: https://arxiv.org/abs/2209.02362 +# chemical element symbols +species Ta + +# periodic boundary conditions +pbc 1 1 1 + +# inner cut-off radius +rin 1.0 + +# outer cut-off radius +rcut 5.0 + +# polynomial degrees for radial basis functions +bessel_polynomial_degree 3 +inverse_polynomial_degree 6 + +# one-body potential +onebody 1 + +# two-body linear POD potential +twobody_number_radial_basis_functions 6 + +# three-body linear POD potential +threebody_number_radial_basis_functions 5 +threebody_number_angular_basis_functions 5 + +# four-body linear SNAP potential +fourbody_snap_twojmax 0 + +# quadratic POD potential +quadratic_pod_potential 0 diff --git a/examples/PACKAGES/pod/Ta/Ta_training_analysis.pod b/examples/PACKAGES/pod/Ta/Ta_training_analysis.pod new file mode 100644 index 0000000000..d5bbec1cb8 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/Ta_training_analysis.pod @@ -0,0 +1,387 @@ +# Displaced_A15.xyz + config # atoms energy DFT energy energy error force DFT force force error + 1 64 -753.4412087 -754.220443 0.01217553565 7.734608752 8.398670477 0.1147177501 + 2 64 -752.99206 -753.865255 0.01364367179 8.845831302 9.134430545 0.128875643 + 3 64 -753.3230789 -754.0221 0.01092220404 8.320493902 9.017261102 0.1155421197 + 4 64 -753.5972757 -754.279613 0.01066151964 7.709417685 8.381725092 0.1058659753 + 5 64 -753.0554721 -753.777209 0.01127713895 8.89827564 9.478314477 0.1191609049 + 6 64 -753.3515905 -754.048643 0.01089144564 7.808950564 8.465317938 0.1128142237 + 7 64 -753.6515992 -754.317603 0.01040630929 7.441773668 8.127690491 0.1024025645 + 8 64 -753.3305668 -753.969161 0.009978033993 8.524333384 9.425464952 0.1066300011 + 9 64 -753.3982699 -754.141988 0.01162059587 8.165654685 8.821346913 0.1141641875 +# Displaced_BCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 10 54 -631.72742 -631.019667 0.01310653789 15.42892812 16.625876 0.264811012 + 11 54 -632.2725892 -631.719595 0.01024063328 14.51788198 15.58666626 0.2236637006 + 12 54 -631.9431698 -631.386255 0.01031323642 15.21539049 15.92378883 0.2259171686 + 13 54 -633.0728554 -632.575826 0.009204247811 13.38472946 14.55977162 0.2050161952 + 14 54 -630.8933737 -630.450212 0.008206698429 16.5539163 16.96340726 0.2366453149 + 15 54 -632.0739208 -631.669379 0.007491515673 15.23887638 16.05757315 0.2280333831 + 16 54 -632.8030856 -632.431277 0.006885343815 14.21127984 14.69810718 0.2026063598 + 17 54 -631.6814096 -630.960068 0.01335817778 14.70924474 15.99073148 0.2283605143 + 18 54 -625.0410285 -623.378198 0.03079315656 23.39224423 24.67640432 0.3504654115 +# Displaced_FCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 19 48 -555.9696753 -555.899463 0.001462755232 6.079460735 6.084617063 0.07083484607 + 20 48 -555.9506355 -555.922478 0.0005866147697 6.28112122 6.297071211 0.09285822038 + 21 48 -555.8344979 -555.800269 0.0007131011841 6.153574445 6.021098636 0.08137696888 + 22 48 -556.2639568 -556.196151 0.001412620461 5.066504178 5.127955094 0.08649299664 + 23 48 -555.6269121 -555.488929 0.002874647697 6.848109842 7.050223459 0.08116202322 + 24 48 -556.1089332 -556.027926 0.001687649405 5.662035842 5.611881174 0.07953916327 + 25 48 -556.0580873 -555.968399 0.001868505799 5.879931332 5.979217189 0.07470196866 + 26 48 -556.0083267 -556.047132 0.0008084440258 5.752828608 5.544452585 0.08224848502 + 27 48 -555.82441 -555.747848 0.001595040721 6.367423657 6.47892568 0.09497869851 +# Elastic_BCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 28 2 -23.68353253 -23.689367 0.002917237243 0.0006486347527 0.0006222748589 7.696560647e-06 + 29 2 -23.68281295 -23.689888 0.003537526523 0.0006442481331 0.0006166052222 7.353613433e-06 + 30 2 -23.68293438 -23.689996 0.00353080996 0.0009115876426 0.0008810425642 1.183334558e-05 + 31 2 -23.68108003 -23.690957 0.004938485589 1.044193546e-06 0 4.166083011e-07 + 32 2 -23.67919793 -23.690521 0.005661535829 0.0006261455712 0.0005982273815 7.573309962e-06 + 33 2 -23.67785535 -23.69038 0.006262326378 0.0006219476538 0.0005925723585 8.098703345e-06 + 34 2 -23.68415292 -23.689202 0.00252453823 0.0006520193214 0.0006279363025 7.128171198e-06 + 35 2 -23.68169552 -23.690482 0.004393238412 0.0009021557258 0.0008640138888 1.329061297e-05 + 36 2 -23.68301023 -23.689902 0.003445886213 0.0006432418939 0.0006152154094 8.589463686e-06 + 37 2 -23.68063814 -23.690563 0.004962429905 0.0006318669831 0.0006038725031 7.463726891e-06 + 38 2 -23.68337588 -23.690207 0.003415557958 0.001118071502 0.00107369735 1.811741272e-05 + 39 2 -23.68369233 -23.689285 0.00279633424 0.0009215683923 0.000890013483 1.127366011e-05 + 40 2 -23.68344234 -23.689768 0.003162828655 0.001120158205 0.001080249045 1.630224161e-05 + 41 2 -23.68224173 -23.68968 0.003719136062 0.0009070521506 0.0008680034562 1.339908745e-05 + 42 2 -23.68259685 -23.690074 0.003738573623 0.00143649564 0.001373818765 2.432187597e-05 + 43 2 -23.68469428 -23.688108 0.001706858485 0.0006587619148 0.0006336134468 7.932733886e-06 + 44 2 -23.68405177 -23.689241 0.002594615211 0.0009223784492 0.0008880101351 1.189350098e-05 + 45 2 -23.68384626 -23.68952 0.002836868987 0.0009181252225 0.0008860011287 1.116431522e-05 + 46 2 -23.68524763 -23.686278 0.0005151850612 0.0006668258323 0.0006406777661 8.585622872e-06 + 47 2 -23.67629396 -23.690097 0.006901518594 0.0008737523828 0.0008410160522 1.125104926e-05 + 48 2 -23.67835169 -23.690811 0.006229654604 0.0008814028122 0.0008500070588 1.103963422e-05 + 49 2 -23.67981574 -23.690266 0.005225130991 0.001091936388 0.001044322747 1.944706281e-05 + 50 2 -23.68209703 -23.690597 0.004249983197 0.001105769275 0.001050833003 2.242828166e-05 + 51 2 -23.68050418 -23.690673 0.005084408246 0.000631172526 0.0006038907186 7.85857762e-06 + 52 2 -23.68185505 -23.690551 0.00434797299 0.0009022813915 0.0008590064028 1.486707593e-05 + 53 2 -23.68191508 -23.690693 0.004388958442 0.0009013677777 0.0008590110593 1.516503239e-05 + 54 2 -23.68097184 -23.69021 0.004619081961 0.0009000307855 0.0008730051546 9.670733045e-06 + 55 2 -23.68426495 -23.688943 0.002339025274 0.0009232115961 0.0008800306813 1.619629586e-05 + 56 2 -23.67842316 -23.690136 0.00585641942 0.0006239138245 0.000593996633 8.394193459e-06 + 57 2 -23.6849427 -23.687444 0.001250651312 0.0009347957747 0.000903059245 1.290489522e-05 + 58 2 -23.6836322 -23.689801 0.003084401813 0.0009160470298 0.0008740011442 1.424271291e-05 + 59 2 -23.6814842 -23.690408 0.00446190038 8.690218922e-07 0 3.245696982e-07 + 60 2 -23.68115817 -23.690362 0.004601914896 0.0006345480975 0.0006067503605 9.377221837e-06 + 61 2 -23.67229452 -23.688881 0.008293240443 0.0008566684404 0.0008250054545 1.108928728e-05 + 62 2 -23.6791352 -23.690515 0.005689901939 0.001534883496 0.001475779794 2.12469595e-05 + 63 2 -23.67786743 -23.690551 0.006341785918 0.0006228264143 0.0005996599036 7.295416678e-06 + 64 2 -23.68316372 -23.689487 0.003161641446 0.0006469755816 0.0006194384554 7.530154689e-06 + 65 2 -23.6834063 -23.68986 0.003226849907 0.0009142334935 0.0008860124153 1.052672488e-05 + 66 2 -23.68377813 -23.689288 0.002754934411 0.00145229412 0.001396479144 1.7028268e-05 + 67 2 -23.67700773 -23.690457 0.006724637324 0.0006187196638 0.0005939831647 7.080762894e-06 + 68 2 -23.67552804 -23.689792 0.007131981721 0.0008698720997 0.0008340587509 1.418233126e-05 + 69 2 -23.67583966 -23.690006 0.007083167889 0.0006146073806 0.0005897694465 8.070657469e-06 + 70 2 -23.6777397 -23.690571 0.006415648131 0.0006207500925 0.0005939781141 7.401996527e-06 + 71 2 -23.68270064 -23.690213 0.003756180649 0.001112284016 0.001084315452 1.142137177e-05 + 72 2 -23.67870666 -23.690617 0.005955171449 0.0006250314539 0.0006024682564 6.623275773e-06 + 73 2 -23.68231586 -23.689761 0.00372256923 0.0009095463313 0.0008790688255 1.222939687e-05 + 74 2 -23.67673328 -23.69027 0.006768359835 7.188704984e-07 0 2.129270719e-07 + 75 2 -23.68164707 -23.690599 0.004475963334 0.0006376044826 0.0006137752031 6.574310078e-06 + 76 2 -23.67997815 -23.69061 0.00531592353 9.698202065e-07 0 3.958704534e-07 + 77 2 -23.68008634 -23.690603 0.005258328411 0.0008923489326 0.0008590331775 1.256831367e-05 + 78 2 -23.68488966 -23.687908 0.001509170978 0.0009340324028 0.0009010105438 1.204104822e-05 + 79 2 -23.6795094 -23.690688 0.005589299031 0.0008890828456 0.0008470064935 1.419626566e-05 + 80 2 -23.68316126 -23.689988 0.003413372454 0.0006451612224 0.0006194465272 7.422528504e-06 + 81 2 -23.68321956 -23.689613 0.003196718897 0.000912899593 0.0008740732235 1.539555522e-05 + 82 2 -23.68181374 -23.690678 0.004432127652 0.0006373963006 0.0006123757017 7.454253264e-06 + 83 2 -23.68196226 -23.69017 0.004103870298 0.0009041773842 0.0008750051428 9.854119735e-06 + 84 2 -23.68483517 -23.687892 0.001528413806 0.001142179928 0.001112070142 1.229243027e-05 + 85 2 -23.68271169 -23.690132 0.003710155487 0.0009085291666 0.000868018433 1.49999647e-05 + 86 2 -23.68018066 -23.690843 0.005331170668 0.0006305009468 0.0006081134763 5.908815719e-06 + 87 2 -23.67957976 -23.690598 0.005509118787 0.001259431767 0.001217674833 1.243374729e-05 + 88 2 -23.67869549 -23.690656 0.005980257091 0.0006251939788 0.0006024765556 7.130239281e-06 + 89 2 -23.67884961 -23.690254 0.005702197143 0.001084797449 0.001043496047 1.68662339e-05 + 90 2 -23.67961701 -23.690694 0.005538492834 0.0006273834422 0.0006010740387 8.134278748e-06 + 91 2 -23.68202458 -23.690097 0.004036211359 0.0009041492449 0.0008730234819 1.169617364e-05 + 92 2 -23.68476212 -23.688402 0.001819942156 0.0006575509652 0.000632180354 7.746949898e-06 + 93 2 -23.68425036 -23.688669 0.002209320265 0.001133553123 0.001092474256 1.677033392e-05 + 94 2 -23.68017683 -23.690538 0.005180583191 0.0008923392716 0.0008610145179 1.053989885e-05 + 95 2 -23.68290142 -23.689722 0.003410287964 0.0006465597037 0.0006251287867 7.275875005e-06 + 96 2 -23.6789537 -23.690581 0.005813649829 7.452601434e-07 0 2.355432866e-07 + 97 2 -23.6840847 -23.688755 0.002335150427 0.0006519723076 0.0006251143895 8.250788079e-06 + 98 2 -23.67367881 -23.689312 0.007816596299 0.0008618264365 0.0008290597083 1.323477647e-05 + 99 2 -23.68489152 -23.687388 0.001248238956 0.001145929445 0.001120237475 1.049029355e-05 + 100 2 -23.68174648 -23.690664 0.004458761579 0.0006367386055 0.0006109402589 6.270984334e-06 + 101 2 -23.67450636 -23.68941 0.007451817634 0.0006119997091 0.0005883553348 7.715800123e-06 + 102 2 -23.68321442 -23.690035 0.003410290658 0.0009128748923 0.0008810062429 1.106310227e-05 + 103 2 -23.67584952 -23.690015 0.007082738579 0.0008706222251 0.0008450195264 9.898495893e-06 + 104 2 -23.67856154 -23.690752 0.006095232174 0.0006245583967 0.0005996415596 7.0338752e-06 + 105 2 -23.68297614 -23.689825 0.00342442945 0.0009134966073 0.0008800215906 1.147892484e-05 + 106 2 -23.67876135 -23.690562 0.00590032283 0.0008849512172 0.0008560011682 1.005528708e-05 + 107 2 -23.67874342 -23.690622 0.005939288687 0.0008835043772 0.0008390017878 1.530603189e-05 + 108 2 -23.6843441 -23.688764 0.002209950671 0.0009250850126 0.0008910185183 1.254407066e-05 + 109 2 -23.68340608 -23.690011 0.003302460748 0.0006464901241 0.0006194287691 7.216590251e-06 + 110 2 -23.68476306 -23.687696 0.001466471271 0.001143422035 0.001087589996 2.279977174e-05 + 111 2 -23.67977853 -23.691019 0.005620235289 0.000888876189 0.0008540035129 1.1779733e-05 + 112 2 -23.68440001 -23.689025 0.002312496017 6.723949117e-07 0 2.64867667e-07 + 113 2 -23.68208689 -23.689952 0.003932553163 7.386834034e-07 0 2.881506548e-07 + 114 2 -23.67935439 -23.69061 0.005627806505 0.0008872685213 0.0008580011655 1.019979918e-05 + 115 2 -23.68099138 -23.690595 0.004801812376 0.0008956193373 0.0008680069124 9.843191999e-06 + 116 2 -23.67743565 -23.690231 0.006397673953 0.0006194343635 0.0005925892338 8.542917156e-06 + 117 2 -23.67809541 -23.690469 0.006186797078 0.0008802359765 0.0008500294113 1.182654414e-05 + 118 2 -23.68279142 -23.690482 0.003845288647 0.0009078436148 0.0008740102974 1.225600095e-05 + 119 2 -23.67443144 -23.689613 0.007590778784 0.0008650318724 0.0008320192305 1.23538989e-05 + 120 2 -23.68501591 -23.687426 0.001205043668 0.001145633567 0.00109577735 2.03694619e-05 + 121 2 -23.68302307 -23.689562 0.003269464306 0.0006474095532 0.0006265237426 6.532536014e-06 + 122 2 -23.68134549 -23.6904 0.004527256823 4.272990719e-07 0 1.732352794e-07 + 123 2 -23.67843015 -23.690561 0.006065426647 0.0006235069318 0.0005982273815 6.816496585e-06 + 124 2 -23.67292129 -23.689107 0.008092853971 0.0008589766346 0.0008180073349 1.439377155e-05 + 125 2 -23.68123551 -23.690145 0.004454742608 0.0009009679944 0.0008740766557 1.132072203e-05 + 126 2 -23.67777646 -23.690482 0.006352769316 0.0006215821083 0.0005939983165 8.362048689e-06 + 127 2 -23.68318209 -23.689864 0.003340952886 0.0009142894487 0.0008860124153 1.044271435e-05 +# Elastic_FCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 128 4 -46.449456 -46.437936 0.002880000611 0.0007088173441 0.001265949446 0.0001573706237 + 129 4 -46.45317307 -46.438504 0.003667267825 0.0007210982328 0.001492549497 0.0002032393675 + 130 4 -46.44686167 -46.436378 0.002620918523 0.0004870837365 0.000810592376 0.0001107544174 + 131 4 -46.45357979 -46.441551 0.003007196305 0.0008634182131 0.001283675193 0.0001231453909 + 132 4 -46.42409677 -46.416957 0.001784942313 0.0007481922079 0.001186145859 0.0001205918882 + 133 4 -46.45078882 -46.440495 0.002573455911 0.0007289008721 0.001212440514 0.0001119490174 + 134 4 -46.4501363 -46.437972 0.003041076136 0.001116532125 0.002358226452 0.0003166808771 + 135 4 -46.46241981 -46.44586 0.004139951293 0.001077737689 0.002033949852 0.0002702964015 + 136 4 -46.44743429 -46.435744 0.002922571394 0.0008383971706 0.001690849491 0.0002711013554 + 137 4 -46.45237555 -46.438209 0.003541637787 0.0007039962535 0.001160049999 0.0001096430557 + 138 4 -46.43645451 -46.42629 0.002541127472 0.0004839683449 0.0005297018029 1.480491546e-05 + 139 4 -46.45466199 -46.443301 0.002840247268 0.0008590849412 0.001818421568 0.0002395191538 + 140 4 -46.4513559 -46.439002 0.003088474484 0.000980675092 0.001416973535 0.0001142710898 + 141 4 -46.44224357 -46.432438 0.00245139227 0.0008958100898 0.001010469198 5.862303988e-05 + 142 4 -46.41846428 -46.412654 0.001452568802 0.001104791425 0.001801959766 0.0001900084105 + 143 4 -46.45594552 -46.443231 0.003178629143 0.0006959928784 0.001691590967 0.0002104366356 + 144 4 -46.44141177 -46.431513 0.00247469212 0.001149659372 0.001680544852 0.0001329997122 + 145 4 -46.44458344 -46.435608 0.00224385943 0.0007110215089 0.0009593039143 5.831382606e-05 + 146 4 -46.45129649 -46.437689 0.003401871689 0.0007271142738 0.001217708504 0.0001414871092 + 147 4 -46.43755262 -46.428447 0.002276404472 0.0008708378565 0.002060081552 0.0003082033743 + 148 4 -46.44295113 -46.432255 0.00267403188 0.0005315813764 0.0006274201144 5.596270268e-05 + 149 4 -46.45482154 -46.442315 0.003126635324 0.0008653689406 0.002424436842 0.0004107290683 + 150 4 -46.44918467 -46.436613 0.003142918309 0.0004839663128 0.0005321240457 3.890880543e-05 + 151 4 -46.44094809 -46.430825 0.002530772174 0.0007559646277 0.001399987143 0.0001669802678 + 152 4 -46.44335614 -46.43312 0.002559035587 0.0004859700309 0.0007272771136 6.315695513e-05 + 153 4 -46.44518607 -46.434347 0.002709767129 0.0007148497795 0.001284451634 0.0001580665901 + 154 4 -46.43969219 -46.430573 0.002279798333 0.00072875179 0.001315746176 0.000142372977 + 155 4 -46.46201856 -46.445665 0.004088390852 0.0008369246217 0.00180789159 0.0002715757049 + 156 4 -46.44738266 -46.435898 0.002871166201 0.0007118215897 0.001869300939 0.0002650888178 + 157 4 -46.45279209 -46.442107 0.00267127163 0.0005099355574 0.0006020930161 3.155335447e-05 + 158 4 -46.44687446 -46.434432 0.003110615714 0.0008364031703 0.001092982159 9.484366005e-05 + 159 4 -46.45033825 -46.436308 0.003507562522 0.000995428139 0.001839150891 0.0002479613631 + 160 4 -46.43248168 -46.423938 0.002135919949 0.0007772193879 0.001463463016 0.0001986681069 + 161 4 -46.43702199 -46.428115 0.002226747981 0.0005418219957 0.0008584497656 9.283863381e-05 + 162 4 -46.43553597 -46.4269 0.002158992752 0.001008467413 0.001845719914 0.00024455962 + 163 4 -46.43191737 -46.421142 0.002693841371 0.0009169914298 0.001309150106 9.335100097e-05 + 164 4 -46.44107961 -46.432233 0.002211651338 0.0006944670911 0.0007253109678 2.446203898e-05 + 165 4 -46.44097784 -46.429408 0.002892459649 0.0007189999753 0.001068327665 9.331287519e-05 + 166 4 -46.45970672 -46.445145 0.003640430606 0.0008323398895 0.001776038288 0.000241778013 + 167 4 -46.44583143 -46.435868 0.002490857628 0.001007239475 0.002376074704 0.0003893124404 + 168 4 -46.4515773 -46.439663 0.002978574612 0.0004764710524 0.001119403413 0.0001156692402 + 169 4 -46.43612447 -46.428287 0.00195936642 0.001036891264 0.001277000392 6.942055774e-05 + 170 4 -46.4323966 -46.424584 0.001953149801 0.0005497544117 0.0008032957114 5.852281957e-05 + 171 4 -46.41884421 -46.413045 0.001449803236 0.0009011718881 0.001248322074 7.333380516e-05 + 172 4 -46.44596985 -46.436994 0.002243961387 0.0008480487041 0.001331939188 0.0001689650386 + 173 4 -46.45736434 -46.443604 0.003440085706 0.0007046835731 0.001177046303 0.000122309487 + 174 4 -46.4531541 -46.439718 0.003359024693 6.718665553e-07 0 1.784212673e-07 + 175 4 -46.44922127 -46.435527 0.003423566396 0.0008698447035 0.0009338393866 5.635428662e-05 + 176 4 -46.44518705 -46.434787 0.002600012526 0.0008890985417 0.00117329195 6.906839261e-05 + 177 4 -46.44789017 -46.434929 0.00324029173 0.001006522874 0.001349491756 8.807224523e-05 + 178 4 -46.43673847 -46.426499 0.002559868692 0.0009134543991 0.001248937949 9.133606536e-05 + 179 4 -46.44932495 -46.437025 0.003074986544 0.0006805240432 0.000938418883 7.446008431e-05 + 180 4 -46.43885209 -46.428937 0.002478772296 0.0009031344997 0.001286352984 0.0001081690229 + 181 4 -46.45413306 -46.442516 0.002904263993 0.000506604563 0.00094855469 0.0001414866709 + 182 4 -46.44060244 -46.428736 0.002966609134 0.0007579010233 0.001424321593 0.0001681832084 + 183 4 -46.44430426 -46.433359 0.002736316202 0.0008950557387 0.001276381604 0.0001027241271 + 184 4 -46.45260002 -46.438799 0.00345025532 0.0006868717473 0.0008186940821 3.675916237e-05 + 185 4 -46.45478935 -46.441993 0.003199088629 0.000703010985 0.001887735151 0.0002666518851 + 186 4 -46.44949137 -46.439033 0.002614591408 0.0006795560995 0.000821568013 5.214373405e-05 + 187 4 -46.44856954 -46.436967 0.002900635979 0.000860448627 0.001482323514 0.0001802503616 + 188 4 -46.43759968 -46.427245 0.00258867094 0.0008795521813 0.001293885621 0.0001012099865 + 189 4 -46.45133388 -46.438046 0.003321969731 0.0009940752633 0.001627288542 0.0001741528671 + 190 4 -46.42813695 -46.420083 0.002013486722 0.001161998446 0.002395244873 0.0003650969018 + 191 4 -46.46060362 -46.445247 0.003839154837 0.0006909751141 0.001219330964 0.0001271217748 + 192 4 -46.45903895 -46.446044 0.003248736964 0.0006847065621 0.001305329077 0.0001398957152 + 193 4 -46.44724817 -46.434472 0.003194042613 0.0007061519125 0.0008323340675 6.681050285e-05 + 194 4 -46.45649776 -46.44458 0.002979439009 0.0004998748498 0.0009744208536 8.547729233e-05 + 195 4 -46.45403889 -46.441776 0.003065721535 0.0008652918641 0.001339231869 0.0001389938291 + 196 4 -46.44933689 -46.436389 0.003236972034 0.001007551549 0.001786741168 0.0002029508895 + 197 4 -46.459873 -46.446416 0.00336425035 0.0004914989987 0.0006588778339 6.549510811e-05 + 198 4 -46.46569473 -46.449806 0.003972183676 0.000943305002 0.002135055034 0.0003137851731 + 199 4 -46.43467991 -46.427189 0.00187272638 0.0007726175275 0.001050788276 7.135568315e-05 + 200 4 -46.43621938 -46.427857 0.002090594118 0.0007686546978 0.001487666629 0.0001823668299 + 201 4 -46.45576365 -46.44004 0.003930912967 0.0005030079851 0.000757202747 5.770676907e-05 + 202 4 -46.4483913 -46.437214 0.002794325435 0.0007102028538 0.001505586265 0.000179529909 + 203 4 -46.43168209 -46.422628 0.002263521917 0.0007374332623 0.001601713458 0.0002609325883 + 204 4 -46.45732644 -46.443535 0.00344786022 0.0009811025521 0.001590304373 0.0001690672254 + 205 4 -46.45144079 -46.439922 0.002879696366 0.0008698700101 0.001530493385 0.0001528171002 + 206 4 -46.44960522 -46.437675 0.002982555611 0.00112440729 0.002440246094 0.0004061057502 + 207 4 -46.45839808 -46.445558 0.003210018941 0.0006780842253 0.00113392416 0.0001196075532 + 208 4 -46.45130112 -46.439106 0.003048781046 0.0009934671927 0.001830731002 0.000245168776 + 209 4 -46.45826105 -46.443073 0.003797013279 0.0004759445984 0.0005766870902 2.863834812e-05 + 210 4 -46.4536082 -46.4397 0.003477049491 0.0006982622456 0.001204174406 0.0001154782847 + 211 4 -46.44819434 -46.436374 0.002955085327 0.0007363684621 0.001461656594 0.0002277550157 + 212 4 -46.43668282 -46.426557 0.00253145389 0.0007326220467 0.001359624213 0.0001251472548 + 213 4 -46.44485583 -46.434009 0.002711707903 0.000870647096 0.001391131194 0.0001541542453 + 214 4 -46.44732696 -46.436262 0.002766239028 0.001116549362 0.002503347159 0.0003211377445 + 215 4 -46.44414241 -46.434505 0.002409352177 0.0008685662223 0.001041637173 4.942106462e-05 + 216 4 -46.45095913 -46.438768 0.003047783488 0.0008482298138 0.001098285027 8.657909629e-05 + 217 4 -46.45111242 -46.440254 0.002714605501 0.0004892442432 0.0006069892915 5.824568303e-05 + 218 4 -46.43463407 -46.42286 0.002943517186 0.0004976409931 0.0007365242698 7.564906264e-05 + 219 4 -46.42611144 -46.418078 0.002008360417 0.001053243552 0.002028412187 0.0002473380313 + 220 4 -46.45344976 -46.440513 0.003234189608 0.0007024129954 0.001158189967 0.0001371889048 + 221 4 -46.41584187 -46.409824 0.001504467167 0.0007558580012 0.001759573812 0.0002386003087 + 222 4 -46.45494987 -46.440329 0.003655216631 0.0005034620022 0.0009534044263 0.0001064495091 + 223 4 -46.45000759 -46.43773 0.003069396495 0.0006831478015 0.000926180328 7.390298375e-05 + 224 4 -46.42538863 -46.416525 0.002215907169 0.0005605993692 0.0007573664899 5.946405938e-05 + 225 4 -46.45386072 -46.440293 0.003391930454 0.0006980795454 0.0007725386722 1.864508071e-05 + 226 4 -46.4527969 -46.43839 0.003601726069 0.0005103417187 0.0005612022808 1.656002337e-05 + 227 4 -46.45374294 -46.438916 0.00370673382 0.0006956794369 0.001650878554 0.0002154167998 +# GSF_110.xyz + config # atoms energy DFT energy energy error force DFT force force error + 228 24 -278.7403996 -279.068761 0.01368172569 2.282668754 1.756353161 0.04745635589 + 229 24 -279.902595 -279.784296 0.004929123883 0.9479314831 0.9057668891 0.02403120774 + 230 24 -279.9942014 -279.901657 0.003856015841 0.2795933118 0.001565946359 0.01120665859 + 231 24 -279.6335344 -279.584238 0.002054016532 1.573004204 1.035572248 0.05514377891 + 232 24 -279.9025974 -279.784283 0.004929767703 0.947921084 0.9056396189 0.02406018404 + 233 24 -279.1817177 -279.302158 0.005018345952 2.388096516 1.771965137 0.06275542538 + 234 24 -279.5900705 -279.55564 0.001434605813 1.950503627 1.405626506 0.05370441115 + 235 24 -279.0106063 -279.246939 0.00984719392 1.577003357 0.4813964151 0.08190583543 + 236 24 -279.1817217 -279.302157 0.005018138375 2.388094324 1.771953347 0.06275588675 + 237 24 -279.0107548 -279.246935 0.009840841347 1.576191869 0.4809484798 0.0819682416 + 238 24 -279.9941671 -279.896025 0.004089255845 0.2809227604 0.01060549839 0.01118927817 + 239 24 -279.6337951 -279.584237 0.002064919631 1.571895405 1.035836121 0.05510997377 + 240 24 -278.8616595 -279.124427 0.0109486445 2.383512182 1.809545887 0.06232801199 + 241 24 -279.2927133 -279.379366 0.003610531084 1.779238829 0.8982692706 0.07658702105 + 242 24 -279.292656 -279.37937 0.003613082676 1.779203263 0.898081355 0.0765940488 + 243 24 -278.8616573 -279.124427 0.01094873842 2.383511745 1.809523374 0.06232387507 + 244 24 -279.9942014 -279.901657 0.003856015842 0.27959331 0.001570374478 0.01120603916 + 245 24 -279.9072278 -279.79264 0.004774491325 0.8361247356 0.8392614852 0.02418251879 + 246 24 -279.9941671 -279.896025 0.004089255843 0.2809227622 0.01060243293 0.01118973247 + 247 24 -278.8973689 -279.206496 0.01288029691 1.390234609 0.005326518563 0.06648378416 + 248 24 -279.590075 -279.55564 0.001434791018 1.950495712 1.4056319 0.05370353355 + 249 24 -279.9072386 -279.79264 0.004774943229 0.8361385582 0.8392625708 0.02418484015 +# GSF_112.xyz + config # atoms energy DFT energy energy error force DFT force force error + 250 30 -345.1428414 -345.175835 0.001099787279 2.717783384 1.057395322 0.1393371019 + 251 30 -346.8213325 -346.361714 0.01532061701 1.6320981 1.220284939 0.1010819808 + 252 30 -346.3061373 -345.795524 0.01702044399 2.435031121 2.112860875 0.1171529224 + 253 30 -344.8834516 -345.164602 0.009371679669 3.314987489 1.765832199 0.1576958872 + 254 30 -346.9668291 -346.593523 0.01244353764 1.327935537 0.01148867129 0.08670065177 + 255 30 -346.7938009 -346.396186 0.01325383111 1.743989434 0.9954683928 0.09783463277 + 256 30 -345.0939055 -345.319406 0.007516682785 3.756566851 1.772040852 0.1806000978 + 257 30 -345.6468551 -345.594794 0.00173536844 3.432645857 1.516014157 0.1670589876 + 258 30 -346.2843474 -345.98566 0.00995624537 2.709563559 1.406252265 0.1356658489 + 259 30 -345.7058793 -345.383994 0.01072951129 2.464665654 0.963574308 0.13389942 + 260 30 -346.9664564 -346.582564 0.01279641284 1.32870642 0.0126740587 0.08670344939 + 261 30 -345.3305431 -345.452139 0.004053195139 4.515828739 2.787719406 0.1519418929 + 262 30 -346.966836 -346.593523 0.01244376534 1.327919807 0.01148834 0.08669988209 + 263 30 -345.5935851 -345.281949 0.01038786965 2.922665543 1.873142686 0.1300383724 + 264 30 -346.157169 -345.928661 0.007616932828 3.42803556 2.100874472 0.1330089569 + 265 30 -344.6836135 -345.111657 0.01426811685 4.87813643 3.358068319 0.1517605655 + 266 30 -346.8140968 -346.367123 0.01489912587 1.700448289 1.335797131 0.1014030448 + 267 30 -346.9664062 -346.582565 0.0127947081 1.328695393 0.01254743735 0.08670444025 + 268 30 -344.5284456 -344.91356 0.012837147 4.30679737 3.441834403 0.1293440404 + 269 30 -346.3471173 -345.836703 0.01701381162 2.177883948 1.608769148 0.1178087924 + 270 30 -344.9135302 -344.984307 0.002359225817 3.517317775 2.542628782 0.122092966 + 271 30 -346.7846048 -346.393931 0.01302245877 1.941770224 1.211680725 0.09898842713 +# Liquid.xyz + config # atoms energy DFT energy energy error force DFT force force error + 272 100 -1104.74829 -1105.601723 0.008534329546 31.13590643 31.39853886 0.5826598142 + 273 100 -1099.007356 -1099.673012 0.006656557481 34.30763539 32.03167218 0.6355970492 + 274 100 -1123.744375 -1121.31506 0.0242931528 23.69463257 20.81076453 0.4843518851 +# Surface.xyz + config # atoms energy DFT energy energy error force DFT force force error + 275 24 -279.9941674 -279.911828 0.003430809358 0.2809230273 0.002753093533 0.01155715982 + 276 48 -551.0953781 -555.359452 0.08883487284 6.541312712 0.003020630398 0.1949601982 + 277 40 -458.209131 -459.216162 0.02517577443 5.605061426 5.0461364 0.1098503638 + 278 40 -459.8554229 -461.144076 0.03221632783 2.691145822 0.005582740008 0.08174930001 + 279 24 -279.8970746 -279.635146 0.01091369091 1.238573481 1.288799837 0.008644383713 + 280 30 -346.9668295 -346.592525 0.01247681774 1.32793475 0.008446203407 0.08664452133 + 281 30 -345.8871537 -345.744506 0.004754921864 3.992236552 3.124961367 0.08594721633 +# Volume_A15.xyz + config # atoms energy DFT energy energy error force DFT force force error + 282 8 -66.46788051 -66.990732 0.06535643627 9.752469663e-15 0 1.665479097e-15 + 283 8 -72.67646146 -72.957807 0.03516819273 2.586146435e-14 0 4.592824963e-15 + 284 8 -94.20621366 -94.145745 0.00755858243 1.888003685e-14 0 2.536262854e-15 + 285 8 -94.43981933 -94.554682 0.01435783313 5.386472433e-15 0 7.930900378e-16 + 286 8 -79.39814886 -79.438363 0.005026767697 2.732255702e-14 0 4.777139332e-15 + 287 8 -69.38946962 -69.627817 0.02979342197 4.097415198e-15 0 6.093939011e-16 + 288 8 -83.05531805 -82.604907 0.05630138147 5.707505975e-15 0 9.444123724e-16 + 289 8 14.36690687 14.89048 0.0654466408 4.4225873e-14 0 6.966360359e-15 + 290 8 -94.13472519 -94.367599 0.02910922586 1.366361161e-14 0 1.887762444e-15 + 291 8 -89.38757156 -89.248227 0.01741807051 7.77370779e-15 0 1.130389185e-15 + 292 8 -87.49741165 -87.211997 0.03567683079 6.822093797e-15 0 9.11308066e-16 + 293 8 -93.42285179 -93.66897 0.03076477666 2.411445427e-15 0 4.058488494e-16 + 294 8 -8.05187323 -7.989166 0.007838403786 7.012640574e-14 0 1.102472786e-14 + 295 8 -85.3779751 -84.982834 0.04939263793 2.716993442e-15 0 4.647613313e-16 + 296 8 -92.37490481 -92.536373 0.0201835236 1.315958485e-14 0 1.882608652e-15 + 297 8 -26.56925158 -26.77612 0.02585855302 5.079538464e-14 0 8.697279448e-15 + 298 8 -77.90929192 -77.544107 0.04564811452 4.172342826e-15 0 7.131159089e-16 + 299 8 -80.55632181 -80.114217 0.05526310126 7.985686614e-15 0 1.195874996e-15 + 300 8 -41.83202596 -42.143041 0.03887688062 4.657987766e-14 0 8.540891409e-15 + 301 8 -91.02235339 -91.040671 0.002289700674 5.29233855e-15 0 8.086702604e-16 + 302 8 -84.76781055 -84.499231 0.03357244376 3.520461367e-14 0 6.70250169e-15 + 303 8 -60.71236154 -61.825173 0.1391014324 7.011275997e-15 0 1.104512893e-15 + 304 8 -91.5794594 -91.156873 0.05282330009 3.722647197e-15 0 6.096739866e-16 + 305 8 -54.28408457 -54.658744 0.04683242815 1.027218023e-13 0 1.699815447e-14 + 306 8 -72.29317827 -72.277255 0.00199040924 2.147214247e-15 0 3.631173776e-16 + 307 8 -75.14428628 -74.923334 0.02761903549 4.875315485e-15 0 8.058016421e-16 + 308 8 -64.41647714 -64.798066 0.04769860741 8.515566542e-15 0 1.300175245e-15 + 309 8 -93.29905733 -93.048342 0.03133941583 1.392455458e-14 0 1.75636545e-15 + 310 8 -63.56375833 -64.38702 0.1029077093 3.169925692e-15 0 4.425351867e-16 + 311 8 -88.81067445 -88.352871 0.05722543104 1.824573667e-14 0 3.223116218e-15 +# Volume_BCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 312 2 -16.38936242 -16.763625 0.1871312901 8.438105833e-16 0 3.261280135e-16 + 313 2 16.19675433 16.314145 0.05869533665 6.012211515e-14 0 2.140301825e-14 + 314 2 -21.24238574 -21.209071 0.01665736942 3.105315998e-15 0 1.031580172e-15 + 315 2 -15.80560502 -15.780524 0.01254051028 3.075772419e-14 0 1.04682611e-14 + 316 2 -19.05526774 -19.002205 0.02653137193 5.049484454e-15 0 1.840167643e-15 + 317 2 -22.67434567 -22.620568 0.02688883674 8.42211374e-16 0 2.844946501e-16 + 318 2 4.04311049 4.096885 0.02688725502 1.697721462e-14 0 5.111651843e-15 + 319 2 56.2105911 56.26276 0.02608445186 2.167345189e-13 0 8.162180947e-14 + 320 2 -22.55797904 -22.585113 0.01356697915 1.62710774e-15 0 5.666763355e-16 + 321 2 -21.75972417 -21.795501 0.0178884163 1.403784713e-15 0 3.978299172e-16 + 322 2 33.30678917 33.110078 0.09835558332 4.389819223e-14 0 1.229051583e-14 + 323 2 -20.82125169 -20.885998 0.0323731563 1.078546098e-15 0 2.960594732e-16 + 324 2 -23.55239721 -23.601336 0.02446939304 1.098352585e-15 0 3.53350523e-16 + 325 2 -23.17147126 -23.207313 0.01792086946 1.690886327e-15 0 6.164070796e-16 + 326 2 -19.78146338 -19.898089 0.05831281177 3.071791199e-15 0 1.188863822e-15 + 327 2 -23.45038238 -23.405474 0.02245418985 1.35097431e-15 0 4.949744318e-16 + 328 2 -4.653232293 -4.781324 0.06404585371 8.217105136e-15 0 2.951342874e-15 + 329 2 -18.67517238 -18.864936 0.09488180756 5.14040454e-16 0 1.896631e-16 + 330 2 -17.53439276 -17.813086 0.1393466189 6.912475817e-16 0 2.521131452e-16 + 331 2 -11.04889659 -11.197201 0.07415220345 1.082601284e-14 0 4.046820749e-15 + 332 2 -23.68489671 -23.696705 0.00590414498 1.843452652e-15 0 5.315481851e-16 +# Volume_FCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 333 4 -19.13390887 -19.075994 0.01447871809 1.517335469e-14 0 3.900232098e-15 + 334 4 -35.26038882 -34.873619 0.0966924543 3.754176171e-16 0 8.829019691e-17 + 335 4 -43.93272346 -43.950003 0.004319884817 1.957527644e-15 0 4.836987292e-16 + 336 4 -41.03733831 -40.991909 0.01135732773 2.229474894e-15 0 5.093220406e-16 + 337 4 -43.4228254 -43.453929 0.00777589967 2.787997321e-14 0 8.011425939e-15 + 338 4 -42.67289278 -42.686077 0.003296054 9.84568285e-16 0 2.229119667e-16 + 339 4 -33.58842759 -33.224653 0.09094364633 5.773580884e-16 0 1.303933813e-16 + 340 4 -27.01189372 -26.862709 0.03729618105 5.151726288e-15 0 1.109453787e-15 + 341 4 -25.59030438 -25.519883 0.01760534598 2.863765244e-16 0 7.531591092e-17 + 342 4 3.441093749 3.463071 0.005494312716 2.696629063e-14 0 6.828072631e-15 + 343 4 -31.9073245 -31.59595 0.07784362479 8.890859753e-16 0 1.682681772e-16 + 344 4 -45.06068744 -45.100466 0.009944641012 1.71159984e-15 0 3.996665291e-16 + 345 4 -46.03981427 -46.052258 0.0031109323 1.705627547e-15 0 4.273202162e-16 + 346 4 -30.24326213 -30.001189 0.06051828302 8.403226845e-16 0 2.104797818e-16 + 347 4 -22.957351 -22.8504 0.02673775024 6.125121657e-16 0 1.416690839e-16 + 348 4 -9.130654755 -9.164691 0.008509061334 1.894766019e-14 0 4.742914684e-15 + 349 4 -24.21746226 -24.150343 0.01677981454 1.777054657e-16 0 4.452456922e-17 + 350 4 -46.44761241 -46.426795 0.005204351765 2.043289244e-15 0 5.31981866e-16 + 351 4 -28.62111495 -28.451145 0.04249248833 8.802221276e-15 0 2.537755885e-15 + 352 4 40.31615798 40.341566 0.006352005141 2.120221165e-14 0 5.59689556e-15 + 353 4 19.51151427 19.617912 0.02659943252 6.461385682e-14 0 1.647388493e-14 + 354 4 -27.06356399 -26.954384 0.02729499736 3.089999778e-16 0 7.849623729e-17 + 355 4 -46.3678929 -46.323696 0.01104922394 2.195905041e-15 0 5.105869431e-16 + 356 4 -45.87221055 -45.828947 0.01081588677 1.843344298e-15 0 4.174901166e-16 + 357 4 -38.47076405 -38.16029 0.0776185126 2.683812325e-15 0 6.998163623e-16 + 358 4 -33.06813795 -32.919741 0.03709923634 1.577584492e-14 0 4.412991963e-15 + 359 4 -41.34431995 -41.272675 0.01791123821 2.234618078e-15 0 5.98499928e-16 + 360 4 -39.95757678 -39.753322 0.05106369446 1.172665551e-15 0 2.900618248e-16 + 361 4 -37.66252943 -37.547435 0.02877360828 6.430065721e-15 0 1.652468671e-15 + 362 4 -36.89659259 -36.52595 0.09266064636 3.213653781e-15 0 8.769027171e-16 + 363 4 -45.03250721 -45.016087 0.004105053074 1.112789617e-15 0 2.434395278e-16 diff --git a/examples/PACKAGES/pod/Ta/Ta_training_errors.pod b/examples/PACKAGES/pod/Ta/Ta_training_errors.pod new file mode 100644 index 0000000000..39b7af3723 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/Ta_training_errors.pod @@ -0,0 +1,20 @@ +**************** Begin of Error Analysis for the Training Data Set **************** +--------------------------------------------------------------------------------------------------- + File | # configs | # atoms | MAE energy | RMSE energy | MAE force | RMSE force +--------------------------------------------------------------------------------------------------- +Displaced_A15.xyz 9 576 0.011286 0.011334 0.113353 0.141650 +Displaced_BCC.xyz 9 486 0.012178 0.014005 0.240613 0.312191 +Displaced_FCC.xyz 9 432 0.001445 0.001591 0.082688 0.103800 +Elastic_BCC.xyz 100 200 0.004452 0.004783 0.000010 0.000013 +Elastic_FCC.xyz 100 400 0.002865 0.002923 0.000146 0.000207 +GSF_110.xyz 22 528 0.005804 0.006853 0.047276 0.097819 +GSF_112.xyz 22 660 0.010588 0.011555 0.123342 0.191090 +Liquid.xyz 3 300 0.013161 0.015355 0.567536 0.757847 +Surface.xyz 7 236 0.025400 0.037555 0.096121 0.295623 +Volume_A15.xyz 30 240 0.039281 0.048678 0.000000 0.000000 +Volume_BCC.xyz 21 42 0.049766 0.067554 0.000000 0.000000 +Volume_FCC.xyz 31 124 0.030056 0.041738 0.000000 0.000000 +--------------------------------------------------------------------------------------------------- +All files 363 4224 0.012917 0.025797 0.122473 0.260052 +--------------------------------------------------------------------------------------------------- +**************** End of Error Analysis for the Training Data Set **************** diff --git a/examples/PACKAGES/pod/Ta/XYZ/Displaced_A15.xyz b/examples/PACKAGES/pod/Ta/XYZ/Displaced_A15.xyz new file mode 100644 index 0000000000..b144703144 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/Displaced_A15.xyz @@ -0,0 +1,594 @@ +64 +Lattice="10.6000003815 0.0 0.0 0.0 10.6000003815 0.0 0.0 0.0 10.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-754.220443 stress="23963.03 -518.08 331.99 -518.08 26158.899999999998 289.93 331.99 289.93 26014.94" +Ta 10.54497 10.54551 10.5956 0.738379 0.48581 0.018519 +Ta 2.6058 2.59577 2.66276 0.983004 0.695353 -0.423917 +Ta 1.29338 2.62737 0.06659 0.967488 0.116743 -0.589823 +Ta 3.97859 2.60074 0.05226 -0.084389 0.137046 -0.423367 +Ta 0.06826 1.26322 2.67108 -0.470328 1.296441 -0.423078 +Ta 0.03489 4.006 2.58088 -0.263493 -1.182047 0.521328 +Ta 2.60404 0.03209 1.27573 0.332524 -0.382338 0.466834 +Ta 2.61384 0.03978 4.00017 0.19652 -0.552756 -0.617059 +Ta 5.26731 10.53909 0.0525 0.340753 0.932737 -1.082711 +Ta 8.00375 2.64902 2.69207 -0.352834 -0.034069 -0.546853 +Ta 6.64426 2.6613 10.54 0.209447 -0.170553 0.255905 +Ta 9.33824 2.64457 0.03106 -1.248523 0.1324 -0.277314 +Ta 5.3522 1.2665 2.5671 -0.296298 1.327488 0.591352 +Ta 5.27655 4.04903 2.65011 0.225842 -1.705193 -0.220596 +Ta 7.9997 10.54384 1.3323 -0.602859 0.598417 0.360383 +Ta 7.97961 10.59814 4.02363 -0.487819 0.018537 -0.681676 +Ta 0.07703 5.36114 0.02699 -0.850702 -0.481463 -0.618219 +Ta 2.6646 7.93725 2.60955 -0.375888 0.3131 0.609637 +Ta 1.40379 7.96668 10.52251 -1.425719 -0.081346 0.714056 +Ta 3.99035 7.99423 10.59771 -0.152265 -0.539619 0.318009 +Ta 0.04355 6.56889 2.62727 -0.178473 1.482119 0.427439 +Ta 0.00703 9.28757 2.68364 0.269104 -1.208309 -0.327712 +Ta 2.56957 5.34141 1.33893 0.850349 -0.517951 0.275559 +Ta 2.72447 5.25375 4.04037 -0.588363 0.226576 -0.96233 +Ta 10.53684 10.5759 5.2221 0.629328 0.101208 1.170955 +Ta 2.66913 2.7096 7.94723 0.175608 -0.725726 0.018084 +Ta 1.35438 2.68364 5.23358 -0.672848 -0.376194 0.690747 +Ta 3.92914 2.57652 5.21831 1.314233 0.49323 0.453261 +Ta 0.08152 1.31737 7.90103 -0.403463 -0.248525 0.230807 +Ta 0.01596 3.94268 7.99393 -0.081478 0.863863 -0.071733 +Ta 2.6785 10.52779 6.63557 -0.387653 0.744336 -0.69563 +Ta 2.57563 10.5398 9.20066 0.204661 1.016501 1.272453 +Ta 5.28026 5.2908 10.53874 0.210489 -0.369673 0.610136 +Ta 8.02116 8.00301 2.56791 -0.618631 -0.801014 1.16881 +Ta 6.56126 7.9104 0.04457 1.247918 -0.045758 -0.325354 +Ta 9.26485 7.95508 10.58594 0.342738 -0.215167 -0.069832 +Ta 5.26103 6.62842 2.63265 0.441032 0.314676 -0.03073 +Ta 5.28955 9.23968 2.5673 0.215784 0.14419 0.976532 +Ta 8.00221 5.33276 1.34132 -0.277749 -0.258368 -0.418189 +Ta 7.91864 5.28423 3.97891 0.132647 0.303744 -0.143621 +Ta 5.27037 0.01177 5.31967 0.293403 0.10204 -0.586267 +Ta 7.97577 2.58846 7.90284 -0.0766 0.318418 0.741565 +Ta 6.67111 2.70945 5.31433 -1.193866 -0.235149 -0.180348 +Ta 9.29025 2.58105 5.29066 0.286858 0.294859 0.204099 +Ta 5.2532 1.26795 7.91799 0.289819 0.925706 0.429944 +Ta 5.32703 4.04747 7.87622 0.177769 -1.251772 0.201923 +Ta 7.8991 10.56576 6.68405 0.011121 0.010154 -0.513286 +Ta 8.01539 10.54873 9.32177 -0.770371 0.244167 -0.539961 +Ta 10.59055 5.23373 5.29112 -0.122463 0.783939 0.309844 +Ta 2.7178 8.02017 8.01996 -0.833015 -1.143659 -1.244648 +Ta 1.28755 7.95382 5.35947 0.318174 -0.327947 -0.137883 +Ta 3.98149 8.00712 5.27935 -0.672169 -0.306686 0.158866 +Ta 0.04771 6.7013 8.02541 0.000928 -1.568952 -0.556323 +Ta 10.53454 9.27538 7.94586 0.490919 0.513788 -0.187133 +Ta 2.60384 5.37826 6.65237 0.107427 -0.010953 -0.135414 +Ta 2.65026 5.25782 9.27591 0.0403 0.521312 0.035425 +Ta 5.30975 5.33548 5.25863 -0.196083 -0.020488 0.519869 +Ta 7.98152 7.93147 7.94727 -0.52423 -0.25306 0.358801 +Ta 6.58336 7.99956 5.3353 0.546995 -0.296434 -0.355434 +Ta 9.20518 8.00165 5.34211 0.753656 -0.424927 -0.364529 +Ta 5.28813 6.67781 8.01704 0.382562 -1.149823 -0.614214 +Ta 5.2968 9.20687 7.96818 0.395589 1.452637 -0.053896 +Ta 7.90382 5.25794 6.62358 0.295654 0.152651 -0.023568 +Ta 8.00072 5.28621 9.26356 -0.210447 -0.178269 0.331507 +64 +Lattice = "10.6000003815 0.0 0.0 0.0 10.6000003815 0.0 0.0 0.0 10.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-753.865255 stress="25885.719999999998 -817.02 -36.62 -817.02 23024.370000000003 -107.14 -36.62 -107.14 29257.940000000002" +Ta 0.04908 0.00115 10.57826 -0.437757 -0.090743 0.15803 +Ta 2.61654 2.71455 2.72901 0.449605 -0.435267 -0.828991 +Ta 1.39595 2.61446 10.52477 -2.072616 -0.051825 0.877711 +Ta 3.90381 2.6756 0.06766 2.144694 -0.090086 0.075882 +Ta 0.05742 1.31249 2.58872 -0.607352 0.532786 0.378598 +Ta 0.05697 4.05163 2.67585 -0.777264 -1.885963 -0.048956 +Ta 2.58852 10.55529 1.39238 0.39704 0.642203 -1.068312 +Ta 2.6599 0.00552 4.01733 0.064098 0.179003 -0.177005 +Ta 5.26427 10.58342 10.56227 -0.033574 0.346172 0.680676 +Ta 7.89236 2.6016 2.71779 0.82825 0.497825 -0.656618 +Ta 6.6321 2.63976 10.53024 -0.906833 -0.010611 0.365963 +Ta 9.21243 2.59505 0.06665 1.376958 0.080901 -0.441221 +Ta 5.30011 1.36599 2.71012 -0.451121 -0.806818 -0.284864 +Ta 5.34341 4.00547 2.68181 -0.579497 -0.053233 -0.287661 +Ta 8.03029 10.56076 1.30843 -0.336212 0.217222 0.347111 +Ta 7.92561 0.06228 3.97753 0.289092 -0.611239 0.468926 +Ta 0.03512 5.22736 0.04735 -0.453067 0.31946 -0.683277 +Ta 2.66581 7.98939 2.66641 -0.662165 -0.149468 -0.087742 +Ta 1.29579 7.92632 10.58792 0.533672 -0.070014 0.096584 +Ta 3.93283 7.88849 0.0809 -0.020345 0.48243 -0.397113 +Ta 10.5959 6.57196 2.63734 -0.21413 1.634343 -0.170283 +Ta 10.56437 9.25635 2.72679 0.039077 -0.10791 -0.719333 +Ta 2.72037 5.31366 1.24606 -0.29128 0.032642 2.069655 +Ta 2.69611 5.37769 3.9661 0.124193 -0.201649 -0.71097 +Ta 0.07372 10.52817 5.29093 -0.789865 0.878036 0.020208 +Ta 2.61857 2.70351 8.02211 0.56874 -0.164877 -0.950145 +Ta 1.31355 2.72095 5.3785 -0.076491 -0.288 -0.243411 +Ta 3.89644 2.57087 5.2537 1.240837 0.47266 0.656808 +Ta 10.58888 1.30214 7.86943 0.255233 0.272119 0.455833 +Ta 0.04887 4.01408 7.90126 -0.289007 -0.346757 0.12366 +Ta 2.72928 0.06945 6.66193 -0.685761 -0.244829 -0.502888 +Ta 2.58101 0.04872 9.23137 0.339459 -0.233213 1.335765 +Ta 5.34108 5.36912 0.05283 -0.013471 -0.867347 -0.774099 +Ta 7.88186 7.9551 2.72317 0.734048 0.105961 -1.272735 +Ta 6.55598 7.99717 10.53185 1.370203 -0.182535 0.648941 +Ta 9.31791 7.96193 0.00269 -1.127055 -0.301221 0.303103 +Ta 5.24453 6.70165 2.62389 0.229886 -1.204827 0.172016 +Ta 5.32205 9.27675 2.72023 -0.32778 1.003783 -0.614408 +Ta 7.86861 5.30945 1.31803 0.764624 -0.183537 -0.038771 +Ta 7.92333 5.29865 3.91698 0.625441 0.03111 0.856974 +Ta 5.25271 10.51825 5.34383 0.561912 0.756882 -0.236387 +Ta 8.0222 2.60801 7.87152 -0.458387 0.66717 1.04408 +Ta 6.60212 2.59356 5.37931 0.070225 0.10084 -0.482484 +Ta 9.30602 2.68963 5.26783 -0.344876 -0.18676 -0.015312 +Ta 5.34458 1.3199 7.96406 -0.207209 0.12974 -0.023385 +Ta 5.27345 3.97769 7.88365 0.225407 0.210336 0.49958 +Ta 7.90209 0.06243 6.6921 0.296301 -0.597326 -1.321812 +Ta 7.9791 10.56722 9.28911 -0.274024 0.193096 0.130562 +Ta 0.08155 5.37803 5.24262 -1.153238 -0.394578 0.405264 +Ta 2.69772 8.006 7.99419 -0.445287 -0.699603 -0.114074 +Ta 1.38725 7.96453 5.37281 -1.117986 -0.159911 -0.252436 +Ta 3.9138 7.92522 5.25427 1.483723 -0.15328 0.336593 +Ta 10.54558 6.64409 7.90011 0.381189 -0.437364 0.391497 +Ta 0.0414 9.23222 7.94529 -0.069632 0.550601 0.135542 +Ta 2.6176 5.26509 6.55154 0.497368 0.356473 1.817883 +Ta 2.67779 5.27183 9.34564 -0.09738 0.356697 -2.092389 +Ta 5.37167 5.22358 5.28383 -1.082933 0.58337 0.189313 +Ta 7.97831 7.95033 7.98746 -0.334998 -0.148464 -0.752988 +Ta 6.58772 7.97118 5.22845 0.250508 -0.279802 0.963668 +Ta 9.29703 7.96398 5.22074 -0.269342 -0.065478 0.796032 +Ta 5.35894 6.66603 8.02645 -0.160453 -0.945482 -0.543903 +Ta 5.25491 9.2658 7.91135 0.540075 0.33829 0.275545 +Ta 7.86723 5.29649 6.61035 0.852005 0.19428 0.109663 +Ta 8.01927 5.21862 9.29005 -0.365475 0.483588 -0.393695 +64 +Lattice = "10.6000003815 0.0 0.0 0.0 10.6000003815 0.0 0.0 0.0 10.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-754.0221 stress="26594.42 1368.85 19.48 1368.85 26417.43 -1442.27 19.48 -1442.27 23937.75" +Ta 10.59872 10.5966 0.05505 -0.231571 0.031614 -0.560153 +Ta 2.72054 2.66769 2.56793 -0.779697 -0.12909 0.784258 +Ta 1.2783 2.60895 0.03547 0.744629 0.548126 -0.214124 +Ta 3.95508 2.65628 10.5551 -0.165396 0.001128 0.026529 +Ta 0.03293 1.39934 2.6967 0.072305 -0.873594 -0.208971 +Ta 10.5651 4.05678 2.65596 0.527021 -1.331302 0.031311 +Ta 2.60171 10.52714 1.285 0.350354 0.537482 0.600499 +Ta 2.68709 10.58122 3.91851 -0.372039 0.361715 0.809071 +Ta 5.31795 0.08026 0.03906 -0.106989 -0.635521 -0.720814 +Ta 8.02486 2.64122 2.59891 -0.739467 0.359337 0.641206 +Ta 6.60369 2.73118 0.06843 0.678906 -0.310297 -0.697991 +Ta 9.30745 2.57138 10.58055 -1.01243 0.693756 -0.108245 +Ta 5.35248 1.38217 2.58572 -0.13929 -0.071214 0.685498 +Ta 5.27678 4.05493 2.58839 0.361124 -1.418968 0.248615 +Ta 7.97704 10.56983 1.33943 -0.226745 0.137547 0.385956 +Ta 7.9205 10.58925 4.02197 -0.097537 0.228845 -1.559747 +Ta 10.58688 5.37691 0.04598 -0.241278 -0.869238 -0.792618 +Ta 2.56928 7.98994 2.68334 0.744667 -0.548988 -0.270704 +Ta 1.26784 7.95054 0.01116 0.281468 0.07337 -0.236417 +Ta 3.9146 8.01616 10.55414 0.995063 -0.220303 0.353326 +Ta 10.54844 6.60413 2.59023 0.147364 1.01708 0.40752 +Ta 10.5757 9.25815 2.63489 -0.140904 0.492732 0.101556 +Ta 2.66105 5.2801 1.30191 -0.364702 0.402682 -0.011419 +Ta 2.6432 5.35885 3.92681 -0.227023 -0.472196 0.151009 +Ta 10.53608 10.55781 5.26416 1.288203 0.545609 0.251638 +Ta 2.60772 2.73015 7.98088 0.261788 -1.092199 -0.8427 +Ta 1.24268 2.58441 5.28609 1.180704 0.409883 0.0645 +Ta 3.99146 2.5757 5.25407 -0.757243 0.334145 0.121851 +Ta 10.51746 1.40756 8.00795 0.326733 -1.91194 -0.281886 +Ta 0.00974 3.9413 7.96949 -0.442991 1.619821 -0.172523 +Ta 2.7025 10.58938 6.62226 -0.427598 0.249852 0.029935 +Ta 2.67552 0.00093 9.32012 -0.030321 0.09604 -1.176661 +Ta 5.21931 5.28624 10.52268 0.567659 0.751713 1.05061 +Ta 7.92372 7.92335 2.69137 -0.276611 0.573618 -0.487148 +Ta 6.67129 7.91947 0.00781 -1.67251 0.193902 0.064344 +Ta 9.22152 8.02659 0.00287 0.769306 -0.25307 0.030428 +Ta 5.33288 6.56827 2.67559 -0.356132 1.879818 -0.275818 +Ta 5.21843 9.3313 2.61368 0.313957 -1.184708 0.134729 +Ta 7.93465 5.34206 1.38987 -0.27093 -0.232294 -1.254009 +Ta 7.94771 5.35777 3.99603 -0.441572 -0.509412 0.402878 +Ta 5.28258 10.54181 5.27443 0.165589 0.546578 -0.181307 +Ta 7.87019 2.58685 7.88448 0.864444 0.720171 0.90474 +Ta 6.61351 2.69961 5.33299 -0.298459 -0.117041 -0.655843 +Ta 9.20963 2.61413 5.29428 0.646321 0.352518 0.003302 +Ta 5.381 1.3824 7.94181 -1.162347 -0.755975 0.017657 +Ta 5.28467 4.01816 7.99502 0.024319 -0.640279 -0.524219 +Ta 8.00243 10.5584 6.55969 -0.64714 0.462493 1.495007 +Ta 7.92724 0.03497 9.30326 0.221614 -0.134477 -0.661187 +Ta 10.55391 5.32768 5.23195 0.476568 -0.381016 0.980462 +Ta 2.64406 7.95567 7.93345 0.001297 0.120229 0.191712 +Ta 1.2986 7.9027 5.33624 0.708615 0.289977 -0.158132 +Ta 4.04604 7.87659 5.36207 -1.974177 0.710669 -0.438506 +Ta 0.04337 6.69689 8.01066 -0.426712 -1.619512 -0.55647 +Ta 10.54014 9.26136 7.89857 0.447195 1.282555 0.234867 +Ta 2.68344 5.29148 6.55058 -0.713159 0.045261 0.661323 +Ta 2.61535 5.26646 9.22004 -0.124682 0.621019 0.504493 +Ta 5.22677 5.33996 5.32711 1.047955 -1.01859 -0.083156 +Ta 7.93781 8.02504 7.94133 -0.089305 -0.92943 0.174588 +Ta 6.58943 7.89688 5.28857 1.109411 0.43459 0.232028 +Ta 9.26138 8.02661 5.25779 -0.279333 -0.594174 0.435718 +Ta 5.27411 6.62462 8.02195 0.25952 0.675178 -0.659935 +Ta 5.30985 9.30627 7.88256 -0.174466 -0.148032 0.732729 +Ta 7.99384 5.30652 6.67382 -0.405756 0.105152 -0.448951 +Ta 7.89346 5.23521 9.29012 0.232414 0.496659 0.293761 +64 +Lattice = "10.6000003815 0.0 0.0 0.0 10.6000003815 0.0 0.0 0.0 10.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-754.279613 stress="23907.050000000003 444.79 -765.15 444.79 24515.940000000002 375.59 -765.15 375.59 27487.829999999998" +Ta 0.00046 10.54735 10.58932 0.114704 0.911029 0.002417 +Ta 2.73129 2.71027 2.64805 -1.312269 -0.768934 0.192601 +Ta 1.30416 2.70676 0.05081 -0.549542 -0.385376 -0.090451 +Ta 3.9224 2.56802 0.05914 1.338111 0.432571 -0.522326 +Ta 10.52754 1.32714 2.64946 0.526452 0.497736 0.118023 +Ta 10.58917 3.98207 2.62548 0.027974 -0.098405 0.015828 +Ta 2.64792 0.02452 1.38081 -0.204416 -0.141407 -1.100083 +Ta 2.59488 0.05512 3.95199 0.552837 -0.178236 0.473214 +Ta 5.22138 10.52799 0.03746 0.576453 0.970244 -0.579639 +Ta 7.88634 2.63138 2.61996 0.902337 0.559648 1.080475 +Ta 6.69452 2.7219 0.06773 -2.02583 -0.335157 -0.878841 +Ta 9.21373 2.71014 0.05862 1.514389 -0.315085 -0.524943 +Ta 5.3281 1.39418 2.60417 -0.26237 -1.230172 0.420769 +Ta 5.2637 3.95414 2.69271 0.464892 1.262082 -0.270578 +Ta 7.90795 0.06254 1.39383 0.167236 -0.202524 -1.058609 +Ta 7.94511 10.51799 3.98105 0.185425 0.426977 0.087026 +Ta 10.57577 5.37732 10.54307 0.605017 -0.422613 0.786988 +Ta 2.70528 7.92008 2.71672 -0.16284 0.53844 -0.654288 +Ta 1.40108 7.96156 10.56262 -1.21314 -0.180661 0.475699 +Ta 3.94259 7.88815 10.51865 0.693466 0.102031 0.668128 +Ta 0.05295 6.61799 2.66959 -0.152823 0.384734 -0.111952 +Ta 0.0041 9.32626 2.60831 0.291126 -0.868362 0.393931 +Ta 2.66819 5.248 1.34131 -0.179205 0.374746 -1.338983 +Ta 2.57134 5.28818 3.89302 0.254849 0.332843 1.641299 +Ta 0.08271 0.0036 5.29844 -1.048937 -0.101097 -0.319135 +Ta 2.56753 2.70781 8.0214 1.017266 -0.740171 -0.566662 +Ta 1.30891 2.64281 5.34837 0.403908 0.226225 -0.301649 +Ta 3.96187 2.73119 5.27973 0.36121 -0.332647 0.382172 +Ta 1e-05 1.31854 7.9193 -0.134684 -0.420557 0.336931 +Ta 10.58062 3.94546 7.96883 0.091943 0.393742 -0.089206 +Ta 2.60743 10.5971 6.59487 0.481207 0.365851 0.394927 +Ta 2.59982 0.05852 9.25312 0.155387 -0.327875 0.594672 +Ta 5.343 5.33735 10.58109 -0.354201 -0.481611 0.070778 +Ta 8.0183 7.97031 2.57959 -0.638975 -0.537484 0.627877 +Ta 6.56415 8.01596 10.54595 1.046228 -0.215805 0.200416 +Ta 9.3142 8.00708 0.07335 -0.389686 -0.132571 -0.908238 +Ta 5.28371 6.62455 2.60926 0.349202 0.295946 0.196375 +Ta 5.365 9.35513 2.65232 -0.276908 -1.072093 0.33487 +Ta 7.99421 5.27285 1.26512 -0.338816 0.417402 0.989409 +Ta 7.93677 5.32858 3.96514 -0.064889 -0.126317 0.026895 +Ta 5.29831 0.06384 5.34991 -0.237157 -0.294846 -0.502816 +Ta 7.98101 2.63404 7.9256 -0.201557 -0.256297 0.618786 +Ta 6.68687 2.58375 5.27465 -0.880538 0.491034 0.225753 +Ta 9.31724 2.59345 5.36746 -0.514197 0.139552 -0.594594 +Ta 5.30469 1.39236 7.90055 -0.241299 -1.127636 0.542064 +Ta 5.36637 3.96474 7.94588 -0.457508 0.623304 -0.045721 +Ta 7.96852 10.54416 6.59542 0.045419 0.456297 0.883036 +Ta 8.01553 0.03504 9.33832 -0.703646 -0.11872 -0.79377 +Ta 10.53751 5.2766 5.33019 0.186467 0.354842 -0.464356 +Ta 2.67185 7.99879 7.94992 -0.462825 -0.70472 -0.660751 +Ta 1.32425 7.97625 5.27971 -0.162279 -0.301471 0.211964 +Ta 3.99685 7.99185 5.33585 0.128267 -0.133747 -0.138891 +Ta 0.00789 6.57979 7.98241 0.224508 0.703879 -0.465686 +Ta 10.56258 9.24146 7.92821 0.298346 0.405066 0.164699 +Ta 2.62183 5.25654 6.57113 0.142704 0.580891 0.073062 +Ta 2.62673 5.24695 9.20881 0.295489 0.626384 1.099379 +Ta 5.2818 5.28462 5.32566 0.254473 0.449594 -0.359163 +Ta 7.95127 7.97098 7.89566 -0.109482 -0.099213 1.128432 +Ta 6.69889 8.00506 5.30113 -1.722141 -0.416627 -0.484246 +Ta 9.22006 8.02217 5.33119 1.590079 -0.664694 -0.530738 +Ta 5.3507 6.64908 7.93434 -0.272774 -0.59058 -0.047159 +Ta 5.22906 9.26778 7.99824 0.577132 0.931079 -0.408552 +Ta 7.96263 5.26515 6.66322 -0.184291 0.081851 -0.89845 +Ta 8.00683 5.33642 9.24793 -0.405275 -0.01231 0.25158 +64 +Lattice = "10.6000003815 0.0 0.0 0.0 10.6000003815 0.0 0.0 0.0 10.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-753.777209 stress="31083.73 984.91 488.79 984.91 26853.05 -530.71 488.79 -530.71 21811.85" +Ta 0.03525 10.52946 0.01429 -0.625379 0.911584 -0.075876 +Ta 2.67988 2.6352 2.61064 -0.661 -0.104938 -0.074584 +Ta 1.30583 2.57403 10.55611 0.849169 0.350685 0.363742 +Ta 4.00357 2.65046 10.56488 -0.371611 0.087052 0.454216 +Ta 10.52633 1.38198 2.61375 0.406758 -1.451427 0.208757 +Ta 10.54339 3.93177 2.72703 0.391892 1.412298 -0.627514 +Ta 2.58523 10.55385 1.26507 0.409709 0.248799 1.81949 +Ta 2.68419 10.52194 4.02925 -0.316157 0.395146 -0.68287 +Ta 5.29632 0.02098 0.06019 0.094853 -0.22889 -0.089408 +Ta 7.9287 2.71315 2.57282 -0.40564 -1.092393 0.813413 +Ta 6.67221 2.56974 0.00085 -0.173428 0.384871 -0.232145 +Ta 9.35654 2.72035 0.02716 -1.448984 -0.868833 -0.407862 +Ta 5.28199 1.31545 2.71612 0.152676 -0.534988 -0.278452 +Ta 5.26218 3.92161 2.73258 0.236803 1.45327 -0.477397 +Ta 7.88956 10.53727 1.30155 0.542005 0.588247 1.124571 +Ta 7.90476 0.00491 4.03502 0.380439 0.303044 -0.981143 +Ta 0.01924 5.23985 0.02933 -0.216606 0.960671 0.012022 +Ta 2.63713 7.91332 2.57939 0.523618 0.457949 1.047743 +Ta 1.37591 7.98252 0.01161 -1.00541 -0.53207 -0.247965 +Ta 3.99074 7.99253 0.04105 0.630076 -0.445038 -0.609834 +Ta 0.06165 6.69839 2.59091 -0.637693 -1.500703 0.322027 +Ta 0.07693 9.27396 2.65088 -0.570248 0.946341 0.238964 +Ta 2.59233 5.37207 1.32243 0.660887 -0.556262 -0.409585 +Ta 2.576 5.32148 3.95475 0.669967 -0.454444 -0.141432 +Ta 10.57478 0.07838 5.30752 0.449309 -0.650528 0.069289 +Ta 2.68594 2.63787 8.02554 -0.925537 0.246259 -1.307471 +Ta 1.24534 2.6968 5.22637 0.880334 -0.170862 0.583158 +Ta 3.93645 2.66917 5.2391 0.126178 -0.08166 0.623252 +Ta 10.54417 1.38182 8.01183 0.881527 -1.210399 -0.267108 +Ta 0.00692 3.97458 7.93648 0.063896 0.736295 0.030003 +Ta 2.65183 10.59292 6.70102 -0.082168 0.001127 -0.769984 +Ta 2.70713 0.0237 9.32486 -0.216517 -0.079276 -0.963173 +Ta 5.32479 5.24418 0.01275 -0.313338 0.484215 0.061675 +Ta 7.97361 7.99989 2.66237 0.19173 -0.45925 0.057363 +Ta 6.68168 8.00545 10.53048 -1.274863 -0.575919 0.727629 +Ta 9.25988 8.00096 10.54122 0.923261 -0.776426 0.71368 +Ta 5.36822 6.70209 2.70369 -0.41461 -1.998428 -0.32579 +Ta 5.22169 9.20816 2.62305 0.467098 1.708569 0.377559 +Ta 7.90622 5.28573 1.40537 0.361428 0.577965 -1.113915 +Ta 7.91678 5.27023 4.0071 0.348505 0.46978 0.347783 +Ta 5.35908 0.08115 5.27632 -0.722672 -0.863673 0.500885 +Ta 8.00681 2.60911 7.87611 -0.950848 0.649728 1.17634 +Ta 6.63107 2.65234 5.3649 -0.782252 0.346241 -0.630632 +Ta 9.21464 2.71799 5.26365 0.65968 -0.244425 -0.123044 +Ta 5.22432 1.25125 8.02611 0.739331 1.510791 -0.273571 +Ta 5.22168 3.92029 7.91312 0.722496 0.766488 0.226631 +Ta 8.01588 0.04144 6.68445 -0.372854 -0.445221 -0.493611 +Ta 7.96204 10.55369 9.32548 -0.03274 0.375548 -0.623519 +Ta 0.01039 5.30368 5.2336 -0.715394 0.046629 0.901905 +Ta 2.5862 7.96502 7.96459 0.830832 -0.094714 -0.350325 +Ta 1.28578 7.88946 5.26227 1.126795 0.658952 0.004566 +Ta 3.96511 7.98863 5.30323 -0.273909 0.013132 -0.023712 +Ta 0.00505 6.67243 8.01234 -0.065254 -1.564213 -0.39785 +Ta 10.5258 9.23159 7.95484 0.714286 1.608236 -0.153688 +Ta 2.60834 5.24378 6.55963 0.476601 0.174876 0.899274 +Ta 2.60865 5.35101 9.24068 0.460063 -0.232332 0.21727 +Ta 5.34566 5.33553 5.26912 -1.0005 -0.062573 0.768202 +Ta 8.01116 7.98477 7.98864 -0.941009 -0.538031 -0.670857 +Ta 6.61332 7.98663 5.33587 0.694566 -0.00045 -0.06064 +Ta 9.34421 7.88519 5.33887 -1.50427 0.871847 -0.00909 +Ta 5.30405 6.66664 7.973 -0.127756 -0.408974 -0.168376 +Ta 5.3561 9.34104 7.93015 -0.198165 -1.429389 0.216524 +Ta 7.87231 5.36354 6.69962 0.402284 -0.367694 -0.602329 +Ta 7.98446 5.25368 9.3376 -0.122238 0.277788 -0.243182 +64 +Lattice = "10.6000003815 0.0 0.0 0.0 10.6000003815 0.0 0.0 0.0 10.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-754.048643 stress="27656.57 549.87 1164.0900000000001 549.87 24561.93 -1132.43 1164.0900000000001 -1132.43 25335.96" +Ta 10.58466 10.52281 10.54428 0.51911 1.030769 0.289199 +Ta 2.58906 2.62515 2.58331 0.980313 0.465455 0.986329 +Ta 1.33407 2.72467 0.03386 -0.636192 -0.969554 -0.333663 +Ta 3.90797 2.72086 10.53991 1.707244 -0.292948 0.571866 +Ta 0.07897 1.2643 2.65645 -0.600839 0.915626 -0.026383 +Ta 0.02729 3.96468 2.62566 -0.026464 0.178205 0.595013 +Ta 2.71828 0.03582 1.37493 -0.503659 -0.164847 -1.238234 +Ta 2.71013 0.01388 3.94029 -0.26741 0.122146 0.391015 +Ta 5.24382 0.05221 10.59611 0.985051 -0.524959 -0.239796 +Ta 8.00676 2.68277 2.72931 -0.040705 0.112169 -1.076862 +Ta 6.67012 2.581 0.05294 -0.795944 0.604015 0.013416 +Ta 9.2906 2.70214 10.5277 0.106867 -0.725536 0.830297 +Ta 5.31566 1.36303 2.63231 0.204579 -0.39964 0.160289 +Ta 5.36545 3.97557 2.63811 -0.35758 0.374857 -0.341338 +Ta 7.9635 0.07881 1.30941 -0.122693 -0.323484 0.045005 +Ta 8.01171 0.06526 3.99574 -0.213713 -0.382574 -0.612077 +Ta 10.5812 5.22205 0.06058 0.340369 1.238874 -0.422064 +Ta 2.58751 8.02506 2.67969 0.836087 -0.974582 -0.640712 +Ta 1.32816 7.92066 10.55287 0.3286 -0.149546 0.174414 +Ta 3.98668 7.91992 10.56445 -0.068023 0.343984 0.387619 +Ta 0.00065 6.67904 2.65936 -0.006212 -0.780593 0.078132 +Ta 0.05141 9.2904 2.64974 -0.390999 -0.009998 -0.048165 +Ta 2.65941 5.21716 1.36289 0.011633 0.757694 -0.318475 +Ta 2.67774 5.34503 4.02694 -0.206769 -0.188612 -0.829644 +Ta 0.07746 0.06322 5.35824 -0.166456 -0.826729 -0.728653 +Ta 2.67942 2.71807 8.01719 -0.311027 -0.729342 -0.903137 +Ta 1.37014 2.70616 5.31634 0.189855 -0.02996 -0.111687 +Ta 4.04242 2.65384 5.28532 -0.699395 0.065315 0.059883 +Ta 10.59566 1.39908 7.95465 0.507488 -1.93197 -0.080117 +Ta 10.51853 3.8922 7.91939 1.002489 2.435127 0.268143 +Ta 2.65129 0.0155 6.54214 0.056264 0.079221 1.857275 +Ta 2.68757 10.53742 9.30663 -0.393454 0.179293 -0.909888 +Ta 5.29366 5.33327 10.53757 0.377812 -0.518568 1.064217 +Ta 7.98799 8.02663 2.73107 -0.740413 -0.111466 -0.791724 +Ta 6.6836 7.95804 10.58871 -0.388073 0.234483 0.294061 +Ta 9.35116 7.96667 0.00673 -1.079729 -0.437475 -0.039029 +Ta 5.25103 6.63708 2.69902 0.341543 0.027342 -0.389479 +Ta 5.25134 9.28648 2.56753 0.545209 0.148316 0.627297 +Ta 7.99616 5.36815 1.3789 -0.304224 -0.13761 -0.04399 +Ta 8.00478 5.33099 4.04177 -0.265505 0.058703 -0.773223 +Ta 5.22309 0.05914 5.36259 1.064104 -0.650463 -0.956514 +Ta 8.03289 2.6841 7.99696 -1.569866 -0.680329 -0.545113 +Ta 6.70134 2.63641 5.29151 -0.518892 -0.054631 0.294653 +Ta 9.34008 2.57975 5.27834 -0.212974 0.581599 0.407505 +Ta 5.33316 1.27506 7.87414 0.002254 0.772406 0.627475 +Ta 5.282 3.94794 7.95331 0.365483 0.009532 -0.297329 +Ta 7.97216 0.0105 6.56218 -0.240616 0.092446 0.728274 +Ta 7.98286 10.57054 9.20843 -0.453634 0.391321 0.804177 +Ta 10.56331 5.32515 5.33591 0.676252 -0.554028 -0.273297 +Ta 2.56725 7.87047 7.92346 0.604213 1.153472 0.121871 +Ta 1.36329 7.87424 5.25876 -0.744927 0.627803 0.197684 +Ta 3.93049 7.97524 5.31529 0.833261 -0.289114 0.024624 +Ta 10.56491 6.65054 7.9509 0.112086 -1.05201 0.24323 +Ta 10.52371 9.29522 7.88036 0.696909 0.308497 0.359001 +Ta 2.71757 5.32353 6.61689 -0.32555 -0.351803 0.120067 +Ta 2.58315 5.3638 9.27005 0.352622 -0.422829 0.437931 +Ta 5.33722 5.23801 5.24924 0.119477 0.777101 0.795433 +Ta 8.00365 8.00131 7.92453 -0.798715 -0.83498 -0.04946 +Ta 6.57048 8.03185 5.31737 0.602944 -0.604804 0.027757 +Ta 9.2991 7.92465 5.23581 -0.427437 0.491553 0.583332 +Ta 5.29905 6.5928 8.01852 -0.005096 0.425504 -0.692783 +Ta 5.2848 9.23686 8.0324 0.055915 0.11712 -0.271961 +Ta 7.94377 5.22663 6.66616 -0.103255 0.624955 0.0228 +Ta 8.02399 5.3012 9.33589 -0.539595 0.360082 -0.504485 +64 +Lattice = "10.6000003815 0.0 0.0 0.0 10.6000003815 0.0 0.0 0.0 10.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-754.317603 stress="19468.33 -58.66 -1082.3899999999999 -58.66 27430.38 -1004.03 -1082.3899999999999 -1004.03 27246.98" +Ta 10.59125 10.59066 0.01705 -0.118141 -0.145557 -0.396942 +Ta 2.66355 2.56976 2.70172 0.219448 0.641719 -0.568891 +Ta 1.28225 2.66379 0.00075 0.804753 -0.213095 0.055931 +Ta 3.97426 2.68113 0.01584 -0.5516 -0.108225 0.097343 +Ta 0.04505 1.26937 2.60223 -0.282662 0.758456 0.398993 +Ta 0.00712 3.91022 2.683 -0.114677 0.106269 -0.518987 +Ta 2.72684 10.52432 1.35392 -0.726917 0.472688 -0.797823 +Ta 2.65771 10.58165 3.96524 -0.077037 0.011007 0.534617 +Ta 5.24942 0.01366 0.0772 0.258031 -0.214153 -1.051703 +Ta 7.94389 2.70276 2.58372 -0.034901 -0.786039 0.846874 +Ta 6.56897 2.63238 10.53781 0.820741 0.17553 0.316927 +Ta 9.25697 2.71824 0.03107 -0.141547 -0.541217 -0.295988 +Ta 5.2811 1.27529 2.68805 0.271914 1.289542 0.153822 +Ta 5.37617 4.03137 2.57831 -0.516957 -1.627578 0.618851 +Ta 7.91828 10.57185 1.29744 0.139377 0.343182 0.085819 +Ta 8.00764 10.55181 3.96506 -0.357185 0.552583 -0.126678 +Ta 0.0118 5.32177 10.55352 -0.219509 -0.620513 0.913793 +Ta 2.71308 7.96819 2.68219 -0.885887 -0.647834 -0.964512 +Ta 1.27335 7.87586 10.56985 0.732069 0.426178 0.624024 +Ta 3.92708 7.97831 10.57169 0.265397 -0.23012 0.239314 +Ta 10.58762 6.54896 2.70874 0.212568 1.24841 -0.75972 +Ta 0.00758 9.30089 2.66982 0.165843 -1.183907 0.012866 +Ta 2.61456 5.29021 1.37992 0.244522 -0.196185 -0.940657 +Ta 2.62758 5.2723 4.00316 0.333512 0.04522 -0.140777 +Ta 10.5382 10.57206 5.35381 0.701913 0.154249 -0.479572 +Ta 2.69884 2.72252 7.98246 -0.500546 -0.903317 -0.62617 +Ta 1.28389 2.59056 5.26081 0.772419 0.170547 0.489784 +Ta 4.01712 2.69857 5.29807 -0.593672 -0.373102 0.08628 +Ta 0.0291 1.26201 7.95665 -0.228249 1.225911 0.153224 +Ta 0.01323 4.01408 7.91542 -0.130807 -1.640213 -0.047405 +Ta 2.6335 0.07389 6.60337 -0.001447 -0.190083 0.039412 +Ta 2.62747 0.02086 9.22021 -0.039118 0.087686 0.983273 +Ta 5.37311 5.37921 0.00104 -0.959972 -0.838327 0.018335 +Ta 7.9566 8.01813 2.65235 0.04766 -0.892332 -0.496011 +Ta 6.57317 7.93825 10.57796 0.775293 0.395418 -0.12899 +Ta 9.2694 7.88151 10.53712 -0.581566 0.421257 0.44285 +Ta 5.22009 6.55334 2.65222 0.48966 1.629995 -0.065174 +Ta 5.33963 9.271 2.62989 0.037846 -0.612714 0.384536 +Ta 8.02119 5.29672 1.35359 -0.362251 0.224738 -0.893573 +Ta 7.94827 5.36972 3.97268 0.104266 -0.263664 0.222094 +Ta 5.3297 10.56835 5.37217 -0.099087 0.370321 -0.98499 +Ta 7.91532 2.64246 8.00295 0.680096 -0.069447 -0.387023 +Ta 6.62199 2.68295 5.3771 0.284007 -0.162815 -0.500346 +Ta 9.2514 2.68433 5.35239 -0.118786 -0.470272 -0.408554 +Ta 5.32938 1.27255 7.97134 -0.303978 0.286044 0.13783 +Ta 5.30418 3.93812 7.93568 0.040155 0.762457 0.076378 +Ta 7.95987 10.54938 6.61642 -0.218528 0.46405 0.105442 +Ta 7.87538 0.02651 9.23341 0.304713 -0.390603 0.650333 +Ta 0.01871 5.23215 5.21873 -0.275057 0.30265 1.189576 +Ta 2.58005 8.01801 8.00091 0.903103 -0.811538 -0.942974 +Ta 1.35622 7.90716 5.21911 -0.69223 0.095275 0.734107 +Ta 3.91664 8.00527 5.23273 1.355059 -0.299637 0.764864 +Ta 0.05597 6.54262 7.99991 -0.53468 1.450745 -0.817521 +Ta 0.05678 9.22328 7.97883 -0.723123 0.147795 -0.085492 +Ta 2.66025 5.35371 6.64491 0.12943 -0.14096 -0.631864 +Ta 2.64384 5.23012 9.2296 0.184014 0.70864 1.326423 +Ta 5.34418 5.35604 5.295 -0.670333 -0.337693 0.183358 +Ta 7.96554 7.96325 7.88581 0.240713 -0.060137 0.461609 +Ta 6.67445 7.93954 5.26624 -0.870954 0.115388 0.099246 +Ta 9.32253 7.94305 5.27672 -0.121051 -0.177459 -0.101598 +Ta 5.37998 6.62136 8.01604 -0.697928 -0.125018 -0.551236 +Ta 5.23732 9.22012 7.8725 0.142822 0.596726 0.634521 +Ta 7.90914 5.35867 6.63564 0.470037 -0.554497 -0.783277 +Ta 7.8945 5.29107 9.20052 0.619005 0.147575 1.411797 +64 +Lattice = "10.6000003815 0.0 0.0 0.0 10.6000003815 0.0 0.0 0.0 10.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-753.969161 stress="24114.940000000002 317.58 426.17 317.58 28035.48 -838.5899999999999 426.17 -838.5899999999999 25020.420000000002" +Ta 10.59947 10.59661 10.52413 -0.226907 -0.080536 0.902052 +Ta 2.59454 2.65092 2.68446 0.776819 0.171288 -0.551025 +Ta 1.33041 2.674 10.58143 0.176394 -0.183256 0.204614 +Ta 3.95295 2.58315 10.54506 0.854273 0.68598 0.610189 +Ta 10.59883 1.31774 2.66978 -0.091936 0.35913 -0.579748 +Ta 10.57967 3.96662 2.60593 0.084104 0.473431 0.095227 +Ta 2.59254 0.00678 1.31972 0.598698 0.099657 -0.823976 +Ta 2.59169 0.03133 3.90382 0.425043 -0.081448 1.419933 +Ta 5.37939 0.04023 0.07113 -1.005574 -0.469543 -0.545443 +Ta 7.94984 2.73234 2.65636 0.080843 -0.503649 -0.229292 +Ta 6.7035 2.71875 10.57105 -1.075835 -0.284081 0.217795 +Ta 9.33869 2.66536 10.5534 -0.645726 -0.07901 0.309219 +Ta 5.38144 1.37363 2.59678 -0.660687 -0.7539 0.448111 +Ta 5.27263 3.99656 2.66272 0.021249 -0.323657 0.146107 +Ta 7.96657 0.06435 1.30009 0.116005 -0.264227 0.267969 +Ta 7.99235 0.04847 3.89505 -0.241556 -0.152596 0.888561 +Ta 0.0218 5.29659 10.5698 0.190539 -0.014165 0.267054 +Ta 2.73175 8.00138 2.71285 -1.053594 -0.284418 -0.953258 +Ta 1.31806 7.96372 10.54256 -0.136246 -0.133944 0.366015 +Ta 3.91844 7.96217 10.56452 0.996651 0.062808 0.124581 +Ta 0.03602 6.66478 2.64422 0.197253 -0.463833 -0.145331 +Ta 10.5258 9.31439 2.65344 0.724814 -0.437657 -0.379722 +Ta 2.66149 5.31748 1.25965 -0.022671 0.017877 1.049002 +Ta 2.71043 5.3142 3.96356 -0.229855 -0.004722 -0.591605 +Ta 0.01714 0.02895 5.25397 -0.154714 -0.160145 0.666203 +Ta 2.64597 2.62331 8.00147 0.380032 0.718636 -0.704725 +Ta 1.34375 2.63266 5.31467 0.392862 -0.03449 -0.003614 +Ta 4.01969 2.72066 5.33483 -1.339879 -0.221236 -0.290386 +Ta 0.05334 1.28072 7.94153 -0.439149 1.033607 -0.306897 +Ta 10.56225 3.9163 7.87893 0.077647 0.175986 0.172003 +Ta 2.67491 10.58095 6.65598 -0.034472 0.357047 -1.370013 +Ta 2.61935 0.04143 9.225 0.449865 -0.403463 1.302128 +Ta 5.37858 5.37062 0.02738 -0.971327 -1.005554 -0.649326 +Ta 8.01211 7.93604 2.73 -0.650844 -0.187724 -0.927616 +Ta 6.6093 7.90613 0.06492 0.276128 0.710737 -0.478142 +Ta 9.28311 7.87808 10.53355 -0.273083 0.488493 0.413712 +Ta 5.22651 6.57935 2.58919 0.641086 0.512876 0.520235 +Ta 5.36331 9.19414 2.65024 0.022943 1.480425 0.177898 +Ta 7.9726 5.27207 1.2508 0.18907 0.389324 1.308572 +Ta 7.89187 5.26738 3.98139 0.703866 0.272666 -0.675214 +Ta 5.30786 0.02387 5.37311 -0.441452 -0.182156 -1.394336 +Ta 7.90554 2.64139 7.96721 0.778455 0.069504 -0.485925 +Ta 6.54626 2.62801 5.34703 1.838904 0.098736 -0.497372 +Ta 9.30386 2.63489 5.25676 -1.018893 -0.04522 0.187076 +Ta 5.34196 1.30641 7.91047 -0.440112 1.103483 0.738039 +Ta 5.33435 4.01755 7.93742 -0.433146 -1.463369 0.322362 +Ta 7.87923 10.59827 6.57191 0.570104 -0.011791 0.650285 +Ta 7.91667 0.07787 9.29291 0.417554 -0.726222 -0.85977 +Ta 0.00407 5.21804 5.29085 -0.306761 0.830359 -0.270748 +Ta 2.64244 8.01096 7.89122 -0.154505 -0.65194 -0.071913 +Ta 1.27073 7.96757 5.24059 1.78038 -0.289728 0.312266 +Ta 4.05652 7.94422 5.24628 -1.766243 -0.059655 0.397705 +Ta 10.55504 6.5449 8.02866 0.326135 1.292787 -0.813062 +Ta 10.54757 9.32356 7.97367 0.218025 -1.545104 -0.663048 +Ta 2.57132 5.31124 6.54943 0.638753 -0.09298 1.309355 +Ta 2.70552 5.36844 9.25923 -0.31279 -0.257789 -0.758911 +Ta 5.37917 5.32156 5.36422 -1.051024 0.088554 -0.982928 +Ta 7.96636 7.91391 7.89315 -0.365514 0.575159 0.279003 +Ta 6.60266 8.02328 5.30029 1.44818 -0.312672 -0.021217 +Ta 9.34959 7.99431 5.26212 -1.787702 -0.359966 0.327963 +Ta 5.27917 6.54337 7.93235 -0.08343 2.464228 0.472227 +Ta 5.31647 9.3383 7.99422 -0.013579 -1.711441 -0.018178 +Ta 7.90244 5.24771 6.59897 0.734729 0.047141 0.508435 +Ta 7.93795 5.34891 9.25032 0.301803 -0.342634 -0.33915 +64 +Lattice = "10.6000003815 0.0 0.0 0.0 10.6000003815 0.0 0.0 0.0 10.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-754.141988 stress="22301.33 -285.37 -20.8 -285.37 25600.899999999998 162.91 -20.8 162.91 28086.86" +Ta 10.53107 10.5509 0.0015 0.70485 0.845648 -0.070019 +Ta 2.70215 2.61155 2.65638 -0.286099 0.325604 -0.074327 +Ta 1.39743 2.61545 0.05847 -1.474313 -0.095142 -0.280113 +Ta 3.97713 2.68268 10.5346 0.156378 -0.098493 0.356179 +Ta 0.03222 1.38317 2.60891 -0.081506 -1.587414 0.159126 +Ta 10.56764 3.92107 2.7266 0.259373 1.331992 -0.73363 +Ta 2.59022 10.55975 1.32456 0.049236 0.371753 0.102809 +Ta 2.70858 0.00916 4.05153 -0.701193 -0.070601 -1.695173 +Ta 5.26413 10.53793 0.03804 0.195324 0.197551 -0.279303 +Ta 7.92699 2.58218 2.67357 -0.196352 0.687631 -0.299411 +Ta 6.56938 2.58335 0.00915 0.481385 0.355506 0.054864 +Ta 9.21553 2.70158 0.00339 1.079668 -0.370583 0.25622 +Ta 5.29644 1.25773 2.66315 0.219113 1.844104 -0.251113 +Ta 5.25049 4.05699 2.72857 0.405022 -1.35655 -0.365109 +Ta 7.95797 0.00795 1.26652 -0.349291 -0.012386 0.95892 +Ta 7.95876 0.0029 3.97425 -0.085176 -0.246415 0.146522 +Ta 0.00111 5.29169 0.0101 0.244936 -0.074089 0.083447 +Ta 2.62824 7.99165 2.57985 0.090964 -0.453594 0.8187 +Ta 1.27056 8.03072 0.02474 0.413629 -0.598829 -0.229027 +Ta 3.95298 7.86756 0.04116 0.152752 0.468204 -0.422925 +Ta 10.52695 6.6817 2.6853 0.300417 -1.266839 -0.375852 +Ta 0.02498 9.27815 2.68712 -0.304899 0.803536 -0.158136 +Ta 2.65962 5.24127 1.35865 -0.043804 0.363366 -0.570782 +Ta 2.68315 5.34774 4.00482 -0.286335 -0.186484 -0.056142 +Ta 10.59249 0.03152 5.33264 0.313027 -0.429223 -0.38406 +Ta 2.58832 2.58393 7.94631 0.844596 0.451826 -0.031232 +Ta 1.37297 2.61641 5.29619 -0.990905 0.328928 -0.096763 +Ta 3.95207 2.62642 5.27401 1.187182 0.414363 0.303667 +Ta 0.01362 1.29568 7.93105 -0.217583 0.454567 0.400647 +Ta 0.06717 3.99538 7.88147 -0.472589 -0.121955 0.480331 +Ta 2.72677 10.57217 6.60708 -0.58854 0.058778 0.860541 +Ta 2.713 10.58575 9.24417 -0.506506 0.039032 0.567002 +Ta 5.30308 5.35945 0.05831 -0.152176 -0.937176 -0.30934 +Ta 7.87019 7.94183 2.57359 1.036899 0.327117 1.33664 +Ta 6.65928 7.9017 0.0785 -1.124811 0.536497 -0.907975 +Ta 9.22504 7.86881 10.58464 0.924083 0.364728 -0.065373 +Ta 5.29923 6.68288 2.66667 -0.266393 -0.338893 0.356213 +Ta 5.34057 9.3156 2.71909 -0.369711 -1.091863 -0.151577 +Ta 7.9974 5.33778 1.31662 -0.337005 -0.510079 -0.103385 +Ta 8.0053 5.25623 3.92597 -0.472408 0.14717 1.386647 +Ta 5.25104 0.03317 5.26596 1.390735 -0.14389 0.946126 +Ta 7.98045 2.60832 7.99115 0.289511 0.923595 -0.088863 +Ta 6.70353 2.60779 5.33602 -1.549564 0.47403 -0.141706 +Ta 9.2746 2.58651 5.33229 0.918837 0.547058 -0.191653 +Ta 5.38008 1.39809 7.98274 -0.530078 -0.860802 -0.130916 +Ta 5.33862 3.99447 7.94033 -0.428322 -0.31397 0.179289 +Ta 7.95961 0.05884 6.68706 -0.114391 -0.600564 -1.150373 +Ta 7.95876 0.02794 9.26141 -0.363392 -0.320188 0.423549 +Ta 0.06343 5.2606 5.22321 -0.328214 0.242764 0.905362 +Ta 2.68463 7.97169 7.9776 -0.420291 -0.285961 -0.011666 +Ta 1.29864 7.91228 5.24043 0.869986 0.358854 0.269282 +Ta 3.95071 8.01668 5.34254 0.539614 -0.279841 -0.051604 +Ta 10.52651 6.66919 7.95196 0.773319 -0.746678 -0.127338 +Ta 10.55688 9.28857 7.96148 0.62099 -0.258731 -0.038343 +Ta 2.70803 5.32339 6.70382 -0.389582 -0.121461 -1.219023 +Ta 2.57492 5.22962 9.24619 0.509556 0.339673 1.192371 +Ta 5.22267 5.3038 5.33156 1.3354 0.250454 0.009213 +Ta 7.98999 7.90061 7.96163 -0.945486 0.84251 -0.352597 +Ta 6.68533 8.02176 5.30974 -0.632817 -0.296567 -0.005138 +Ta 9.34825 7.99677 5.29878 -1.180526 -0.264671 -0.130746 +Ta 5.33163 6.57634 7.98884 -0.009265 1.176676 -0.00019 +Ta 5.29614 9.34403 7.95803 0.264039 -1.003617 -0.12967 +Ta 8.00726 5.27369 6.70227 -0.286454 -0.101025 -2.091338 +Ta 7.97483 5.326 9.24028 -0.084847 -0.42894 1.218267 diff --git a/examples/PACKAGES/pod/Ta/XYZ/Displaced_BCC.xyz b/examples/PACKAGES/pod/Ta/XYZ/Displaced_BCC.xyz new file mode 100644 index 0000000000..f2de497d5e --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/Displaced_BCC.xyz @@ -0,0 +1,504 @@ +54 +Lattice = "9.96000003815 0.0 0.0 0.0 9.96000003815 0.0 0.0 0.0 9.96000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-631.019667 stress="48457.11 -1136.2 -2351.6499999999996 -1136.2 49582.49 -508.49999999999994 -2351.6499999999996 -508.49999999999994 49591.75" +Ta 0.03088 9.94467 0.03567 -0.612376 -0.402684 -1.345349 +Ta 1.76644 1.66184 1.44089 -1.2057 1.054325 2.428563 +Ta 3.15336 9.91786 0.09806 1.832799 -0.872674 -1.263279 +Ta 9.90797 3.4076 9.86152 0.297218 -1.020932 0.904226 +Ta 3.35029 3.41556 0.08196 -0.474781 -0.303924 -0.630438 +Ta 9.87659 0.24016 3.2897 1.017582 -2.732856 0.243285 +Ta 3.19754 9.8139 3.31195 1.086563 0.951134 0.062863 +Ta 0.08403 3.3137 3.13958 -0.885405 -1.158694 1.624432 +Ta 3.39974 3.48704 3.44694 -0.379616 -1.521174 -1.132181 +Ta 5.07318 1.57764 1.57293 -1.924629 1.561628 0.647121 +Ta 6.63264 0.09181 0.15115 -0.072574 -1.323405 -2.650495 +Ta 8.39478 1.48796 1.58174 -0.843688 3.259658 -0.417314 +Ta 6.7258 3.35837 9.78756 -1.038348 -0.281612 2.282876 +Ta 6.62212 0.16031 3.16166 -0.465928 -0.905667 2.675349 +Ta 6.62042 3.31664 3.31262 0.200967 -0.07823 0.521868 +Ta 1.54439 4.91527 1.83097 0.997719 1.072497 -2.393149 +Ta 9.86899 6.74766 0.03204 0.130914 -0.582942 0.03917 +Ta 1.53276 8.30182 1.78092 0.418129 0.388694 -1.393579 +Ta 3.20199 6.66207 0.08252 0.203286 -0.527057 -0.549649 +Ta 9.8179 6.83547 3.1511 0.116081 -1.993238 2.124523 +Ta 3.2641 6.51799 3.20131 0.251868 1.623578 1.121764 +Ta 5.01293 5.01666 1.65694 -0.60696 -1.008076 -0.05693 +Ta 8.3041 4.93065 1.67994 -0.477682 0.619238 -0.426472 +Ta 4.92858 8.36431 1.64619 -0.219331 -0.900422 0.085838 +Ta 6.45171 6.49288 9.86487 2.179344 0.818455 1.969854 +Ta 8.17019 8.46521 1.78178 0.066493 -1.369324 -1.060782 +Ta 6.49459 6.44867 3.32152 1.495401 1.861587 -0.033194 +Ta 1.68005 1.47471 4.81754 0.149108 1.822933 1.469216 +Ta 9.84583 0.19765 6.76751 0.42718 -1.609424 -1.224098 +Ta 1.69522 1.63512 8.38002 0.084742 0.557896 -0.456487 +Ta 3.48664 0.05215 6.57542 -1.934503 -0.752789 1.48785 +Ta 0.12798 3.32081 6.73112 -1.229494 -0.484439 -1.358874 +Ta 3.10095 3.36454 6.48278 1.921122 -0.938531 0.820666 +Ta 4.85343 1.62817 5.0425 1.234126 0.870681 -0.99265 +Ta 8.36737 1.67732 5.00314 -0.975535 1.13482 0.108656 +Ta 4.90899 1.80105 8.38128 -0.039766 -0.878359 -0.651697 +Ta 6.62609 9.89334 6.61756 -0.816596 1.409513 -0.309355 +Ta 8.0983 1.79178 8.16645 1.859748 -1.248881 0.899404 +Ta 6.55346 3.46095 6.83157 0.395776 -0.669972 -2.721461 +Ta 1.66233 5.09512 5.00854 -0.671291 0.362604 -0.539021 +Ta 1.62699 8.17655 5.00487 -0.188259 1.341073 -0.158559 +Ta 1.55751 4.87741 8.21882 1.446618 1.907859 1.214679 +Ta 0.00182 6.68339 6.71874 -0.827626 -0.053836 -0.695514 +Ta 1.55288 8.27814 8.30093 0.682118 0.586247 -0.235491 +Ta 3.53869 6.81025 6.55411 -2.996765 -1.824506 1.97593 +Ta 4.93422 5.11727 5.01126 0.811714 -1.188027 0.493333 +Ta 8.47308 4.97388 4.90308 -0.996458 0.210843 0.346855 +Ta 4.85618 8.3031 5.00957 1.943666 0.394624 -1.649648 +Ta 8.16403 8.34109 4.92427 0.91047 0.263158 0.079445 +Ta 4.93491 4.96157 8.29899 -1.172036 0.51008 -0.179543 +Ta 8.30629 4.96656 8.34881 0.344097 1.095134 -0.874028 +Ta 5.1789 8.11229 8.35024 -3.233148 3.075485 0.666856 +Ta 6.73281 6.78612 6.82621 -0.949494 -3.102187 -3.614177 +Ta 8.11993 8.34071 8.16079 2.733141 0.980114 2.718789 +54 +Lattice = "9.96000003815 0.0 0.0 0.0 9.96000003815 0.0 0.0 0.0 9.96000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-631.719595 stress="44221.5 1652.1999999999998 85.95 1652.1999999999998 46661.8 2659.1800000000003 85.95 2659.1800000000003 45398.76" +Ta 9.88176 9.87945 0.1862 0.078511 0.774502 -3.074145 +Ta 1.72277 1.64067 1.45897 -0.388557 1.148359 1.788807 +Ta 3.29248 9.91934 0.1304 0.320177 -0.192327 -1.925714 +Ta 9.9322 3.28625 9.92067 0.151826 0.305556 0.342341 +Ta 3.39626 3.47237 0.027 -1.172443 -1.196633 -0.381029 +Ta 9.82641 0.17857 3.34651 1.471988 -1.800854 -0.398222 +Ta 3.18421 9.75374 3.20228 1.172612 2.338131 1.461522 +Ta 0.0643 3.32106 3.21026 -0.524353 -0.677178 0.569751 +Ta 3.36095 3.52794 3.46046 0.265224 -1.853189 -1.194265 +Ta 5.05551 1.59902 1.56265 -1.305786 1.821863 0.915691 +Ta 6.55573 0.10614 0.0715 0.473027 -1.331628 -1.56567 +Ta 8.32355 1.55377 1.58678 -0.34357 2.420135 0.231492 +Ta 6.79062 3.46987 9.80057 -2.578904 -2.079435 2.539246 +Ta 6.65472 0.19462 3.23542 -0.854033 -1.11806 1.182547 +Ta 6.68241 3.29629 3.38474 -0.467825 0.142616 -0.130294 +Ta 1.6702 4.89369 1.79281 -0.731988 0.661803 -1.877031 +Ta 9.93781 6.83545 0.11497 -0.079074 -1.393283 -0.700726 +Ta 1.55467 8.44593 1.70683 -0.318713 -2.059723 0.143176 +Ta 3.12799 6.70462 0.09695 0.649317 -0.982046 -0.987759 +Ta 9.87365 6.726 3.29089 0.358887 -0.808113 0.020022 +Ta 3.21735 6.54561 3.18977 1.043621 1.493821 1.154247 +Ta 5.01268 5.00658 1.62783 -0.475689 -0.239773 0.337642 +Ta 8.30126 4.99697 1.66463 -0.164073 0.238569 0.134521 +Ta 4.9138 8.33572 1.62276 0.337469 -0.531079 0.293633 +Ta 6.4397 6.55776 9.88777 1.902994 0.646598 1.055407 +Ta 8.2046 8.46737 1.69724 -0.705785 -1.624672 0.59768 +Ta 6.47327 6.53333 3.348 1.087057 0.860747 -0.071448 +Ta 1.63781 1.56651 4.86513 0.303333 0.759117 0.988318 +Ta 9.7163 0.09312 6.79336 1.972395 -0.68173 -1.740951 +Ta 1.61582 1.57397 8.30893 0.534301 0.691166 0.33332 +Ta 3.49451 0.05066 6.70224 -2.318362 -0.853012 0.193493 +Ta 9.94977 3.38199 6.78886 -0.299979 -1.645948 -1.888923 +Ta 3.18672 3.36165 6.43952 0.586136 -0.962061 1.644513 +Ta 4.89114 1.58583 5.10545 0.895504 0.96948 -1.159718 +Ta 8.35054 1.66148 5.06446 -0.650427 1.385707 -0.230145 +Ta 4.86816 1.73116 8.31179 0.899776 0.423663 0.126451 +Ta 6.68153 9.92387 6.63426 -0.794656 0.815228 0.039522 +Ta 8.19213 1.74268 8.29407 0.709237 -0.766675 0.419655 +Ta 6.68538 3.41569 6.73237 -1.039762 -0.942693 -1.573563 +Ta 1.62301 5.03369 4.94072 -0.479437 0.708177 0.454442 +Ta 1.67811 8.17661 4.94845 -0.43286 1.033108 0.702773 +Ta 1.50449 4.90497 8.12727 2.157996 1.39217 2.121635 +Ta 9.95522 6.68722 6.7223 -1.207088 -1.014513 -2.023602 +Ta 1.45061 8.21644 8.20658 1.867458 1.404377 0.979038 +Ta 3.56471 6.75841 6.62207 -3.094311 -0.309955 1.003355 +Ta 4.86687 5.12412 5.14144 1.869234 -0.95749 -1.296573 +Ta 8.38876 4.88961 4.89775 -0.647449 1.012711 0.567511 +Ta 4.92136 8.45113 5.01625 0.770451 -1.088974 -1.090266 +Ta 8.20783 8.3489 4.81321 0.21963 0.005286 1.165586 +Ta 4.94875 4.9618 8.28572 -0.426832 0.599091 -0.345599 +Ta 8.20464 4.88251 8.34235 2.170673 2.829715 -0.757157 +Ta 5.07191 8.2117 8.40225 -1.362796 1.673933 -0.46401 +Ta 6.76974 6.82114 6.74241 -1.906068 -2.251947 -1.927455 +Ta 8.24859 8.29304 8.12672 0.501988 0.80736 3.296928 +54 +Lattice = "9.96000003815 0.0 0.0 0.0 9.96000003815 0.0 0.0 0.0 9.96000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-631.386255 stress="48618.67 -1616.79 -530.36 -1616.79 47533.82 1218.01 -530.36 1218.01 48883.18" +Ta 9.92016 0.01438 0.03854 0.556788 -0.67783 -1.5106 +Ta 1.82311 1.70936 1.41659 -1.918774 0.138683 2.301326 +Ta 3.28553 9.91893 0.14739 0.748737 -0.469771 -1.769605 +Ta 9.87507 3.32337 9.83154 0.793708 -0.519091 0.991363 +Ta 3.3031 3.46518 0.07875 0.443248 -0.426577 -0.905273 +Ta 9.95947 0.08218 3.34696 0.739427 -0.726997 -0.766983 +Ta 3.1684 9.75979 3.2356 1.642308 1.605642 1.000091 +Ta 0.02998 3.22821 3.21978 0.370247 0.48123 0.316324 +Ta 3.32428 3.45789 3.46471 0.337827 -1.517721 -1.355537 +Ta 5.13331 1.59317 1.61007 -2.537997 2.199599 0.12697 +Ta 6.66564 0.10058 0.15795 -0.170102 -1.253786 -3.131771 +Ta 8.39979 1.53376 1.55197 -0.736293 2.568367 0.959357 +Ta 6.699 3.46643 9.78218 -1.357883 -2.290461 2.801884 +Ta 6.55739 0.19963 3.22195 1.010984 -1.898276 1.569223 +Ta 6.6614 3.19875 3.40136 0.28987 0.883996 -0.281886 +Ta 1.65474 4.95752 1.79601 -0.834231 0.053286 -1.593869 +Ta 9.95302 6.80511 0.03196 -0.079769 -1.229448 0.075092 +Ta 1.56181 8.37445 1.75774 0.103273 -1.036598 -1.620168 +Ta 3.25788 6.58258 9.89943 -0.15681 0.002856 0.109545 +Ta 9.81575 6.84635 3.22839 0.491934 -1.902197 0.607502 +Ta 3.26659 6.5421 3.20775 1.051845 1.685557 0.716388 +Ta 4.961 4.94444 1.67842 0.154733 0.132572 -0.385023 +Ta 8.39914 5.00135 1.64081 -0.85754 -0.046821 0.044073 +Ta 4.981 8.40495 1.52317 -0.154277 -1.618489 1.137429 +Ta 6.59095 6.57229 9.81082 0.516853 -0.031072 2.168022 +Ta 8.23079 8.50453 1.71947 -0.19104 -1.640479 -0.218034 +Ta 6.5189 6.4527 3.26946 1.051143 1.341567 0.195318 +Ta 1.69996 1.52396 4.92178 -0.286649 1.057284 0.327442 +Ta 9.71449 0.20654 6.76983 2.454386 -2.330371 -0.861132 +Ta 1.75395 1.54634 8.40434 -0.369274 0.99695 -0.846145 +Ta 3.36184 9.91466 6.55661 -0.545145 -0.225476 0.969587 +Ta 0.07017 3.38145 6.72746 -0.97093 -1.700112 -1.838196 +Ta 3.188 3.32611 6.41893 0.788188 -0.658484 1.70621 +Ta 4.88158 1.53321 4.98105 0.344727 0.704928 0.157548 +Ta 8.47411 1.59131 4.94665 -1.939704 1.794052 0.479038 +Ta 4.88901 1.78086 8.34967 0.243383 -0.808705 -0.52527 +Ta 6.73425 9.77434 6.70175 -1.485362 1.795728 -1.262133 +Ta 8.06248 1.71241 8.15301 1.263397 0.222212 1.789119 +Ta 6.58956 3.39493 6.70849 -0.327807 -0.793748 -1.979357 +Ta 1.72658 5.14855 4.93998 -1.319359 -0.168591 0.474034 +Ta 1.56142 8.14402 4.97342 0.414502 1.370212 0.309023 +Ta 1.49024 4.85879 8.1549 2.112914 2.183214 1.555991 +Ta 9.89805 6.74264 6.68864 -0.638427 -1.761151 -1.247128 +Ta 1.51881 8.19293 8.20586 1.126883 1.771936 0.731665 +Ta 3.53422 6.78757 6.63995 -2.202411 -1.241629 0.531987 +Ta 4.91797 5.05055 5.07395 0.97697 -0.452695 -0.680973 +Ta 8.37523 4.90856 4.86905 -0.569914 0.544987 0.445982 +Ta 4.96025 8.30839 4.98936 0.640131 -0.024991 -0.918091 +Ta 8.25393 8.41481 4.85824 -0.321351 -0.771339 0.862505 +Ta 4.98338 4.92238 8.25755 -1.037048 0.701643 -0.025492 +Ta 8.20041 4.82836 8.34047 1.93369 2.92161 -1.499861 +Ta 5.14911 8.22565 8.35035 -2.453675 1.564843 0.655552 +Ta 6.67583 6.74955 6.82036 -0.298729 -2.031929 -2.821342 +Ta 8.24568 8.22146 8.24391 1.158405 1.531882 1.928281 +54 +Lattice = "9.96000003815 0.0 0.0 0.0 9.96000003815 0.0 0.0 0.0 9.96000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-632.575826 stress="37007.6 -3335.61 -654.2900000000001 -3335.61 41350.14000000001 729.9499999999999 -654.2900000000001 729.9499999999999 42032.22" +Ta 9.89658 0.05915 0.05605 1.036339 -0.553602 -1.509413 +Ta 1.84029 1.75247 1.5692 -1.142381 -0.38124 0.773395 +Ta 3.2103 9.87745 0.03021 0.881726 0.55755 -0.326543 +Ta 0.02515 3.41269 9.87251 -0.122739 -0.795043 1.221499 +Ta 3.43008 3.44154 0.03351 -1.7763 -1.011632 -0.445853 +Ta 9.87697 0.19214 3.32206 1.584106 -2.293162 0.196284 +Ta 3.22174 9.87812 3.28991 0.769286 0.831055 0.301207 +Ta 0.1052 3.26647 3.18262 -0.190214 0.336725 0.865636 +Ta 3.41777 3.41426 3.37277 -0.455402 -0.720753 -0.151548 +Ta 5.17196 1.58588 1.62527 -2.939961 2.107641 0.562846 +Ta 6.60208 0.22971 0.08742 0.803627 -2.595707 -2.375381 +Ta 8.43127 1.4925 1.61697 -1.259463 3.750632 -0.106891 +Ta 6.76348 3.3785 9.80186 -2.03401 -1.195377 2.585494 +Ta 6.65909 0.1949 3.2601 -0.56741 -1.409525 1.503945 +Ta 6.6316 3.23626 3.37906 0.319 0.938546 -0.113448 +Ta 1.62284 5.00729 1.75386 -0.237159 -0.599216 -1.433498 +Ta 9.93301 6.82006 0.07168 -0.603293 -1.11764 -0.086884 +Ta 1.52042 8.42173 1.76252 0.366653 -0.814026 -0.80013 +Ta 3.21357 6.59587 0.05473 -0.149533 0.25932 -0.610436 +Ta 9.80178 6.73879 3.20649 0.278464 -0.754372 0.931782 +Ta 3.18872 6.5548 3.14659 1.331155 1.227953 1.549942 +Ta 4.90812 4.89326 1.56359 1.415424 1.204801 1.175799 +Ta 8.30391 4.92482 1.63948 -0.141538 0.852068 0.296628 +Ta 4.96767 8.43868 1.50927 -0.390065 -1.085888 1.127117 +Ta 6.58605 6.61068 9.88944 0.61683 -0.473365 1.726223 +Ta 8.16049 8.53247 1.75295 0.195242 -1.799944 -0.538088 +Ta 6.52605 6.5329 3.27653 0.530753 0.627982 -0.045421 +Ta 1.62199 1.50417 4.93639 0.838566 1.316864 0.614038 +Ta 9.80755 0.13028 6.79412 0.867567 -1.141378 -1.30953 +Ta 1.7363 1.62901 8.31191 -0.210323 0.210696 0.384316 +Ta 3.35607 9.88966 6.63602 -0.80484 0.044494 0.395101 +Ta 0.10319 3.2834 6.73662 -1.43873 -0.584218 -1.316375 +Ta 3.23105 3.25793 6.54382 0.621854 0.133901 0.243236 +Ta 4.92957 1.63938 4.99734 0.279261 -0.276038 0.237899 +Ta 8.42481 1.65711 4.95454 -1.326796 1.057458 1.098206 +Ta 4.84069 1.75925 8.38234 0.745716 -0.829046 -0.859739 +Ta 6.64597 9.80629 6.69075 -0.741154 2.128175 -0.430751 +Ta 8.19543 1.78177 8.30388 1.200953 -1.19775 -0.25616 +Ta 6.57343 3.34206 6.80779 0.135786 -0.186078 -2.215599 +Ta 1.6324 5.02772 5.04564 -0.039204 0.36717 -0.650982 +Ta 1.56954 8.11698 4.93801 0.230278 1.550094 0.24251 +Ta 1.44091 4.90529 8.17235 2.716493 1.617542 1.20799 +Ta 9.93346 6.67194 6.71914 -1.022256 -0.17536 -0.867865 +Ta 1.47975 8.31024 8.36713 1.004335 0.238704 -0.734919 +Ta 3.48998 6.76276 6.56515 -1.924801 -0.712464 1.159232 +Ta 4.9581 5.06922 5.0693 0.337345 -0.924942 -0.538749 +Ta 8.40596 4.88849 4.85949 -0.874232 0.467588 0.615094 +Ta 4.91272 8.41158 4.96637 0.732014 -1.112804 -0.699182 +Ta 8.15337 8.43609 4.86865 0.839591 -1.003948 0.68469 +Ta 4.9461 4.9089 8.30806 -0.155864 1.182133 -0.492917 +Ta 8.17416 4.94211 8.40779 2.376142 1.640431 -1.638172 +Ta 5.14706 8.15632 8.46125 -2.44524 1.8416 -0.879395 +Ta 6.73636 6.72505 6.79496 -1.106421 -1.283292 -2.272742 +Ta 8.21344 8.32047 8.22695 1.044823 0.536684 2.006502 +54 +Lattice = "9.96000003815 0.0 0.0 0.0 9.96000003815 0.0 0.0 0.0 9.96000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-630.450212 stress="54872.520000000004 561.84 254.42 561.84 57576.3 3236.46 254.42 3236.46 52454.13" +Ta 9.94993 0.02472 0.14274 0.055475 -0.868863 -2.639446 +Ta 1.73941 1.62931 1.49216 0.133385 0.958345 1.334282 +Ta 3.27456 9.84431 0.06714 0.152037 0.685105 -1.338688 +Ta 9.89722 3.30899 9.8442 0.882932 -0.580173 1.896163 +Ta 3.39949 3.43937 0.07444 -1.252525 -0.603574 -1.126923 +Ta 9.95738 0.18394 3.26338 0.661235 -1.926241 0.911392 +Ta 3.30019 9.78645 3.22208 0.028724 1.660063 1.023838 +Ta 0.13719 3.26818 3.17619 -0.70546 0.166489 0.836621 +Ta 3.35898 3.53996 3.45643 -0.084938 -1.979508 -0.962122 +Ta 5.04991 1.63426 1.4814 -1.341163 1.468593 1.819665 +Ta 6.63167 0.11405 0.21537 -0.12109 -1.761401 -4.075404 +Ta 8.31494 1.42157 1.60574 0.368731 4.528905 0.569883 +Ta 6.74419 3.49221 9.84811 -2.007412 -2.167313 2.65689 +Ta 6.63412 0.20045 3.26587 -0.684628 -1.087473 1.050812 +Ta 6.74149 3.29744 3.34049 -0.536207 0.257368 0.20051 +Ta 1.65629 4.91473 1.70491 -0.099545 0.910351 -0.802777 +Ta 9.8848 6.82698 0.05792 0.376337 -1.495085 -0.415922 +Ta 1.52902 8.3382 1.76782 0.639344 -0.53398 -1.01794 +Ta 3.2842 6.59888 0.05835 -0.561013 0.262988 -0.786249 +Ta 9.8388 6.70884 3.26058 0.554427 -0.634265 0.300656 +Ta 3.29697 6.67135 3.2332 0.752046 -0.215397 0.311965 +Ta 4.97002 4.96577 1.62011 0.05044 0.104913 0.434502 +Ta 8.33172 4.99905 1.67588 -0.034233 0.026594 -0.111203 +Ta 4.97516 8.44565 1.55002 -0.020779 -1.935482 0.889879 +Ta 6.57558 6.51621 9.81153 1.066759 1.429994 2.384917 +Ta 8.25006 8.48199 1.74936 -0.452919 -1.834688 -0.031687 +Ta 6.44899 6.4711 3.23262 1.703195 1.475113 0.740876 +Ta 1.66863 1.57808 4.93069 0.431628 0.338513 0.161788 +Ta 9.72144 0.20932 6.75785 1.958848 -2.154971 -0.993231 +Ta 1.63635 1.60616 8.35046 0.463086 0.37157 -0.091186 +Ta 3.48302 0.00215 6.71334 -1.509435 -0.172883 0.010894 +Ta 9.93596 3.25148 6.70143 0.237451 -0.065117 -1.344746 +Ta 3.08129 3.29628 6.51691 2.160928 -0.13483 0.507974 +Ta 4.96743 1.5573 5.07437 0.055528 1.049799 -0.152912 +Ta 8.45292 1.6707 5.00536 -1.761269 1.037855 -0.291955 +Ta 4.94629 1.85995 8.30452 -0.162188 -1.40003 0.218906 +Ta 6.73739 9.79788 6.73002 -1.360293 2.553733 -1.038778 +Ta 8.13299 1.84164 8.23538 1.255041 -2.346864 1.564886 +Ta 6.66656 3.37782 6.84701 -0.835313 0.379035 -3.422381 +Ta 1.68024 5.12154 4.98734 -0.660796 0.080462 0.142574 +Ta 1.60982 8.10644 4.87313 0.325313 1.774663 1.223699 +Ta 1.43945 4.82885 8.10227 2.085236 1.993105 1.922899 +Ta 9.9461 6.81388 6.73985 -0.837177 -1.923205 -1.883599 +Ta 1.46223 8.29911 8.22847 1.981531 0.926889 0.882329 +Ta 3.56097 6.69411 6.63008 -2.368401 -0.099926 0.349055 +Ta 4.97662 5.05599 5.0457 0.641095 -0.663324 -0.062532 +Ta 8.47313 4.93262 4.89931 -1.205654 0.412649 0.354766 +Ta 4.99461 8.38381 5.00182 0.283353 -0.567275 -0.555014 +Ta 8.15164 8.40758 4.84002 1.070067 -0.7384 0.47295 +Ta 5.02489 5.02411 8.3462 -1.295414 -0.424201 -1.125591 +Ta 8.29233 4.81641 8.42543 1.342299 3.650693 -2.347555 +Ta 5.13768 8.20531 8.35183 -1.942023 1.3521 0.356008 +Ta 6.7424 6.82181 6.74362 -1.121731 -2.790179 -1.913012 +Ta 8.24574 8.2733 8.18525 1.245134 1.248761 2.999274 +54 +Lattice = "9.96000003815 0.0 0.0 0.0 9.96000003815 0.0 0.0 0.0 9.96000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-631.669379 stress="43133.57 -1318.24 471.24 -1318.24 48697.43 3329.94 471.24 3329.94 47363.12" +Ta 9.94799 9.88693 0.10122 -0.263284 1.216688 -1.883794 +Ta 1.86889 1.76555 1.56581 -1.932894 -0.197466 0.799563 +Ta 3.18914 9.88171 0.13041 0.610905 0.517831 -1.648338 +Ta 9.92665 3.38968 9.84955 0.317542 -1.257416 1.688263 +Ta 3.43358 3.54499 0.1688 -1.726787 -2.050304 -2.386849 +Ta 9.82474 0.16394 3.32778 2.216383 -1.538245 -0.264099 +Ta 3.17727 9.89254 3.26737 1.70172 0.460024 0.157384 +Ta 0.07445 3.24025 3.20793 -0.069552 0.434181 0.546568 +Ta 3.36565 3.516 3.35675 0.112956 -1.917705 -0.223914 +Ta 5.16123 1.6239 1.55508 -3.303498 2.564182 1.651578 +Ta 6.55575 0.21191 0.17217 1.231731 -2.686607 -3.911866 +Ta 8.29508 1.55441 1.6632 0.089146 2.52746 -0.701653 +Ta 6.73309 3.48714 9.89848 -2.274779 -2.67868 1.66594 +Ta 6.59035 0.09173 3.21496 -0.0633 -0.576713 2.012973 +Ta 6.64791 3.2176 3.34745 0.160139 1.027979 0.160616 +Ta 1.65171 4.94471 1.7425 -0.713082 0.706387 -1.212205 +Ta 9.93323 6.79042 0.0161 -0.225077 -1.132914 -0.016869 +Ta 1.4431 8.3808 1.76113 1.378961 -0.749711 -0.52572 +Ta 3.21108 6.66508 0.00376 -0.00978 -0.476703 -0.29896 +Ta 9.81714 6.70548 3.17335 0.208961 -0.701521 1.301811 +Ta 3.21572 6.591 3.22023 1.033304 1.008256 0.532303 +Ta 4.91106 4.93792 1.58572 1.678571 2.009249 1.603115 +Ta 8.26464 4.94698 1.60854 0.497683 0.531052 0.869356 +Ta 4.90809 8.44903 1.49243 0.088267 -1.613979 1.633781 +Ta 6.59154 6.59584 9.95944 0.505361 0.227865 0.830287 +Ta 8.21527 8.54264 1.72812 -0.429569 -2.313543 -0.559364 +Ta 6.55385 6.57757 3.26324 0.271827 0.622681 0.181604 +Ta 1.75661 1.52675 4.84155 -0.633945 1.321519 1.006441 +Ta 9.87636 0.21376 6.70268 0.45418 -1.893615 -0.40218 +Ta 1.6521 1.61415 8.35169 0.600238 0.373907 0.119151 +Ta 3.44156 0.04311 6.6096 -1.495661 -0.599002 0.704379 +Ta 0.09339 3.37032 6.65029 -1.099312 -1.412438 -0.819685 +Ta 3.18042 3.28906 6.45515 0.992949 0.211285 1.220556 +Ta 5.00918 1.65807 5.12559 0.127178 -0.0364 -1.088507 +Ta 8.38565 1.61267 4.93819 -1.405672 1.604515 0.911956 +Ta 4.81649 1.82535 8.27026 1.005288 -0.428096 0.38029 +Ta 6.74177 9.88632 6.6854 -1.192978 0.733832 -0.379597 +Ta 8.06265 1.81199 8.23079 2.096046 -1.128412 0.494263 +Ta 6.62079 3.42161 6.7044 -0.241025 -0.422289 -1.432335 +Ta 1.71584 5.10974 5.01063 -0.952074 0.094302 -0.330628 +Ta 1.6423 8.21258 4.88283 -0.325763 0.887706 0.945961 +Ta 1.49636 4.82702 8.22043 2.120092 2.257811 0.840294 +Ta 9.95578 6.72188 6.72066 -0.190571 -0.973108 -1.045394 +Ta 1.57396 8.29892 8.32339 0.49698 0.587894 -0.638339 +Ta 3.53534 6.71052 6.61516 -2.080422 -0.439087 0.577691 +Ta 4.91158 5.00762 4.99897 1.141976 -0.039622 -0.08708 +Ta 8.42976 4.87775 4.88036 -0.952974 0.858021 0.171909 +Ta 4.90384 8.41136 4.98652 0.894637 -0.884584 -0.741048 +Ta 8.2864 8.42598 4.87128 -0.087899 -0.922239 0.910409 +Ta 5.03024 4.97737 8.34689 -1.018587 0.572925 -0.691072 +Ta 8.23151 4.84154 8.4374 1.578619 3.115272 -2.575512 +Ta 5.1302 8.08126 8.35768 -1.750753 2.547363 0.298061 +Ta 6.65325 6.73813 6.7005 0.162071 -1.670992 -1.976694 +Ta 8.2436 8.19187 8.19738 0.665528 1.721207 1.625195 +54 +Lattice = "9.96000003815 0.0 0.0 0.0 9.96000003815 0.0 0.0 0.0 9.96000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-632.431277 stress="39332.07 -484.03000000000003 -591.5 -484.03000000000003 42463.85 -935.67 -591.5 -935.67 44557.78" +Ta 0.01093 0.07201 0.09451 -0.133033 -0.624676 -1.390718 +Ta 1.86279 1.76064 1.51659 -1.592195 -0.069139 1.205785 +Ta 3.2078 9.79995 0.13153 0.540433 1.454104 -1.58264 +Ta 9.85766 3.40762 9.89988 1.024661 -1.342485 0.791698 +Ta 3.38902 3.43935 0.04627 -0.448466 -0.286011 -0.80136 +Ta 9.90188 0.13348 3.29636 1.537302 -1.039386 0.836358 +Ta 3.22408 9.86832 3.24936 1.3552 0.851114 0.539138 +Ta 0.12559 3.29783 3.20677 -1.020326 -0.682337 1.223972 +Ta 3.36531 3.39767 3.43601 0.009962 -0.529326 -1.103499 +Ta 5.15746 1.68746 1.60975 -2.532105 1.453447 0.682011 +Ta 6.67484 0.22558 0.19511 -0.045042 -2.082264 -2.946332 +Ta 8.39432 1.57083 1.68829 -0.326523 2.974804 -0.552053 +Ta 6.7901 3.4905 9.84778 -2.280421 -1.914956 1.902637 +Ta 6.66098 0.16369 3.1821 -0.458515 -1.404543 2.285847 +Ta 6.68975 3.33374 3.35351 -0.189956 -0.055081 0.175264 +Ta 1.51952 4.8757 1.72333 1.250032 1.568243 -1.070974 +Ta 9.93504 6.80931 0.00911 -0.545334 -1.102829 0.05256 +Ta 1.53614 8.31731 1.75831 0.412055 0.075595 -1.050824 +Ta 3.19933 6.67436 9.9199 -0.185239 -1.027413 0.207555 +Ta 9.87719 6.84896 3.30936 0.023055 -2.415004 0.073182 +Ta 3.27549 6.6063 3.18917 0.469425 0.419811 0.76263 +Ta 5.00755 4.96297 1.63652 -0.168999 0.238458 0.154223 +Ta 8.27314 4.95228 1.66284 0.330644 1.338439 0.511823 +Ta 4.91774 8.42919 1.48115 0.474143 -1.326573 1.888404 +Ta 6.55832 6.62377 9.94221 1.26809 -0.236095 1.051695 +Ta 8.27021 8.49129 1.78853 -0.55743 -1.432265 -0.989698 +Ta 6.39844 6.56795 3.35477 1.561076 0.83826 -0.364502 +Ta 1.77582 1.5455 4.9351 -1.060253 0.494227 0.023332 +Ta 9.87126 0.15154 6.74741 0.212135 -1.347122 -0.696834 +Ta 1.74456 1.52234 8.31732 0.085858 1.095537 0.038296 +Ta 3.45815 9.88882 6.55866 -1.684608 0.594275 1.383549 +Ta 0.03304 3.29479 6.73355 -0.261879 -0.877624 -1.394156 +Ta 3.18079 3.30298 6.42253 1.207944 0.171277 1.336295 +Ta 4.9603 1.57723 4.99617 0.634253 0.567922 -0.173103 +Ta 8.3559 1.62409 5.03154 -0.530634 1.162549 -0.066204 +Ta 4.7903 1.73365 8.2792 1.03526 -0.144088 0.183756 +Ta 6.74404 9.77079 6.64995 -1.450453 2.324287 -0.166798 +Ta 8.09234 1.79785 8.24264 1.673615 -1.361805 0.313033 +Ta 6.57421 3.42967 6.77064 0.019605 -0.880931 -1.798564 +Ta 1.57913 5.11576 4.95243 0.306594 -0.25138 -0.080154 +Ta 1.69273 8.20716 4.92075 -0.341052 1.046973 0.557303 +Ta 1.43354 4.91751 8.16401 2.287861 1.338427 1.255018 +Ta 0.01425 6.67723 6.65523 -1.147897 -0.077148 -0.417608 +Ta 1.58291 8.27957 8.26309 0.342823 0.685693 0.016051 +Ta 3.42748 6.83665 6.641 -1.510001 -2.239526 0.838695 +Ta 4.97343 5.04097 5.00585 -0.037888 -0.412025 0.456637 +Ta 8.4039 4.8646 4.9179 -0.583261 0.965744 0.28682 +Ta 4.91928 8.3318 5.11892 1.250045 -0.399127 -2.452135 +Ta 8.20159 8.28199 4.88507 0.813012 0.601139 0.388164 +Ta 5.04212 4.99253 8.32778 -1.424968 0.603147 -0.546645 +Ta 8.29629 4.88656 8.35075 0.628928 2.792969 -1.330955 +Ta 5.08862 8.21773 8.50315 -0.984696 1.400694 -1.476016 +Ta 6.79769 6.74824 6.68609 -1.854116 -2.150746 -0.908504 +Ta 8.1091 8.29833 8.26479 2.601277 0.654768 1.938542 +54 +Lattice = "9.96000003815 0.0 0.0 0.0 9.96000003815 0.0 0.0 0.0 9.96000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-630.960068 stress="47457.030000000006 -1005.83 -232.22 -1005.83 51553.91 452.42 -232.22 452.42 48272.9" +Ta 0.05485 9.94068 0.04882 -0.759723 0.349463 -1.073784 +Ta 1.85805 1.77201 1.5217 -1.724392 -0.312777 1.581767 +Ta 3.16512 9.83319 0.13832 1.061743 0.568667 -1.386846 +Ta 9.93006 3.33808 9.91253 -0.064995 -0.093866 0.630283 +Ta 3.35014 3.4521 0.05567 -0.390836 -0.380588 -0.755337 +Ta 9.83256 0.11516 3.3997 1.419777 -1.102908 -0.922237 +Ta 3.23053 9.80404 3.17024 0.958769 1.69459 1.532703 +Ta 0.01161 3.22748 3.27368 0.022937 0.373478 0.292145 +Ta 3.35601 3.5215 3.45824 0.330549 -1.676711 -0.671565 +Ta 5.17312 1.6729 1.58962 -2.671903 1.121811 0.197691 +Ta 6.67768 0.12311 0.12029 -0.440876 -1.26923 -2.349462 +Ta 8.34051 1.56504 1.62363 0.168904 1.957241 -0.015229 +Ta 6.78008 3.36169 9.8788 -1.638783 -0.833959 1.395422 +Ta 6.60936 0.19924 3.21319 -0.445878 -1.774358 1.382608 +Ta 6.66488 3.23598 3.33678 -0.05205 1.041637 0.440105 +Ta 1.55882 4.89699 1.83484 0.420221 0.664634 -1.787995 +Ta 9.92966 6.74077 0.07931 -0.240379 -0.888703 -0.594008 +Ta 1.46294 8.36123 1.80347 1.383538 -0.598636 -1.619561 +Ta 3.27604 6.65474 9.90339 -0.790555 -1.047873 0.411754 +Ta 9.88531 6.85002 3.21939 -0.582286 -2.052939 1.256318 +Ta 3.29061 6.52643 3.19139 0.073936 1.783087 1.280681 +Ta 4.89996 4.99982 1.70189 1.223371 -0.15804 -0.71227 +Ta 8.31065 5.01116 1.69232 -0.087953 0.030026 -0.109796 +Ta 4.88784 8.33857 1.51732 0.850961 -0.596673 1.090247 +Ta 6.50104 6.53275 9.80774 2.177734 -0.433205 2.899269 +Ta 8.2643 8.49938 1.67302 -0.503687 -1.58688 0.09942 +Ta 6.55463 6.57827 3.32912 0.424308 0.463881 -0.236654 +Ta 1.62393 1.56011 4.84451 0.739422 0.750623 1.039514 +Ta 9.83601 0.23425 6.80872 1.000448 -2.657832 -1.896794 +Ta 1.61133 1.59769 8.41214 1.032998 0.937424 -0.476098 +Ta 3.35598 0.02593 6.56637 -1.123068 -0.410917 1.065083 +Ta 0.09395 3.33379 6.73292 -1.590772 -1.594874 -2.032464 +Ta 3.10315 3.36912 6.45924 1.749889 -0.890546 1.008948 +Ta 4.94948 1.60844 5.13297 0.326327 0.438573 -0.854681 +Ta 8.3112 1.6084 4.98866 -0.787743 1.376575 0.740112 +Ta 4.84637 1.81183 8.24772 0.358933 -1.184604 0.522666 +Ta 6.65846 9.76479 6.73502 -0.922055 2.08298 -0.978385 +Ta 8.20906 1.73062 8.14887 0.457034 -0.533352 2.19381 +Ta 6.58641 3.34768 6.84906 -0.07115 -0.232275 -3.047979 +Ta 1.68643 5.13518 4.9899 -0.983213 0.345899 0.008163 +Ta 1.66974 8.17852 4.94291 -0.25579 1.350395 0.365493 +Ta 1.47384 4.8564 8.10261 2.294153 2.563508 2.527259 +Ta 9.88912 6.80164 6.77309 -0.120678 -1.620395 -1.826051 +Ta 1.55837 8.19547 8.30267 0.878074 1.467856 0.015021 +Ta 3.56356 6.83284 6.56625 -2.486358 -1.682642 1.765681 +Ta 4.99706 5.12232 5.11423 0.43805 -1.159229 -0.988294 +Ta 8.4671 4.91132 4.92219 -1.21811 0.738609 0.182139 +Ta 4.87329 8.34516 4.9908 1.555301 0.282701 -1.632594 +Ta 8.1534 8.37445 4.79401 0.515688 -0.19719 1.530097 +Ta 5.00952 4.94855 8.26218 -1.33193 0.185129 -0.033086 +Ta 8.21481 4.8505 8.29903 1.753267 2.042376 0.013681 +Ta 5.14988 8.12501 8.49478 -2.325196 2.631836 -1.723209 +Ta 6.79841 6.70737 6.74515 -1.373171 -1.292054 -2.073736 +Ta 8.2086 8.27306 8.2346 1.367197 1.020256 2.330032 +54 +Lattice = "9.96000003815 0.0 0.0 0.0 9.96000003815 0.0 0.0 0.0 9.96000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-623.378198 stress="80008.25 -785.4100000000001 1601.25 -785.4100000000001 86520.39 4960.87 1601.25 4960.87 85233.93000000001" +Ta 9.95615 9.94979 0.16514 -0.137356 -0.028883 -3.40463 +Ta 1.87163 1.71307 1.41378 -1.76357 0.590114 2.267852 +Ta 3.17989 9.83685 0.10642 1.277421 0.225697 -1.841016 +Ta 9.90024 3.33884 9.82529 0.735381 -0.941566 1.77777 +Ta 3.4188 3.54303 0.14009 -1.606974 -1.518343 -1.948061 +Ta 9.8553 0.24533 3.33787 2.112303 -3.154318 -0.288821 +Ta 3.17514 9.74142 3.2 1.589191 1.94113 1.194543 +Ta 0.11128 3.26365 3.15053 -0.364264 -0.441607 0.999143 +Ta 3.37385 3.56077 3.43718 -0.10161 -1.946969 -0.790652 +Ta 5.20458 1.63365 1.50672 -4.374578 3.807338 1.826632 +Ta 6.57608 0.24353 0.2053 1.355941 -3.643228 -5.429459 +Ta 8.39734 1.42414 1.60164 -0.6903 5.287807 -0.169411 +Ta 6.79744 3.4915 9.76717 -3.482997 -2.71942 3.817554 +Ta 6.57033 0.23978 3.13517 0.116586 -1.988113 3.629484 +Ta 6.72113 3.22949 3.3633 -0.338679 0.658098 0.181119 +Ta 1.57149 4.94775 1.80091 0.075728 0.493399 -1.98724 +Ta 9.92064 6.87072 0.13795 -0.725063 -1.775537 -0.966934 +Ta 1.41785 8.41983 1.76001 1.411759 -1.132459 -0.69594 +Ta 3.14851 6.64163 0.03349 0.008652 -0.525052 -0.43074 +Ta 9.7788 6.83849 3.18243 0.240296 -2.124804 1.273631 +Ta 3.16533 6.57739 3.14068 1.48579 1.371308 1.35272 +Ta 4.90709 4.92946 1.61468 1.153866 1.203555 0.949633 +Ta 8.33316 4.92031 1.59073 -0.391861 0.974553 0.849438 +Ta 4.9596 8.47655 1.51542 -0.546245 -2.139501 1.15131 +Ta 6.44823 6.51342 9.85247 2.586298 -0.265344 3.052647 +Ta 8.17315 8.54045 1.75264 -0.705353 -2.252394 -0.493293 +Ta 6.39303 6.44322 3.27828 1.523627 1.285888 -0.061445 +Ta 1.70938 1.43709 4.84222 0.306581 1.628448 1.044131 +Ta 9.71238 0.24769 6.81385 1.995125 -2.589965 -0.973181 +Ta 1.68921 1.55889 8.35846 0.351955 0.61258 -0.208928 +Ta 3.47749 9.92814 6.63177 -2.081328 0.048903 1.244886 +Ta 0.07656 3.32278 6.77536 -1.946033 -1.979053 -2.885009 +Ta 3.07793 3.27871 6.40803 1.81774 -0.328617 1.303887 +Ta 4.90115 1.58004 5.10411 0.818241 0.705137 -0.829745 +Ta 8.43888 1.56841 5.00344 -2.225694 2.689319 0.426868 +Ta 4.81957 1.88977 8.30861 0.398342 -1.185455 -0.079158 +Ta 6.73863 9.78981 6.71678 -2.05864 2.854477 -1.371358 +Ta 8.05528 1.82891 8.19103 1.951662 -1.704639 1.321716 +Ta 6.59394 3.44619 6.83462 -0.445378 -0.730496 -3.696673 +Ta 1.65312 5.15331 5.0431 -0.703206 0.151193 -0.646398 +Ta 1.60774 8.12544 4.90328 -0.101304 1.629949 1.006095 +Ta 1.42058 4.79056 8.10344 3.354131 3.342928 2.609888 +Ta 9.92554 6.78882 6.73898 -1.110388 -1.85868 -1.874234 +Ta 1.4639 8.19238 8.28284 1.738894 1.866439 0.339074 +Ta 3.56301 6.81221 6.61544 -3.063945 -1.111905 1.132298 +Ta 4.934 5.10947 5.11506 0.832308 -0.890416 -0.494106 +Ta 8.45728 4.85519 4.78408 -1.053171 0.965832 0.968872 +Ta 4.91173 8.4049 5.06479 1.33012 -0.900003 -2.085329 +Ta 8.16172 8.38305 4.77586 0.217903 -0.195045 1.235079 +Ta 4.96219 4.997 8.25034 -1.340837 0.253721 -0.064669 +Ta 8.22081 4.83811 8.40873 2.589217 4.367823 -2.571794 +Ta 5.19313 8.07977 8.4862 -3.823089 3.630743 -0.94626 +Ta 6.77011 6.85567 6.82197 -2.081899 -4.511915 -4.402203 +Ta 8.12043 8.25909 8.1457 3.888707 1.997353 4.680418 diff --git a/examples/PACKAGES/pod/Ta/XYZ/Displaced_FCC.xyz b/examples/PACKAGES/pod/Ta/XYZ/Displaced_FCC.xyz new file mode 100644 index 0000000000..e1fbb58bbc --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/Displaced_FCC.xyz @@ -0,0 +1,450 @@ +48 +Lattice = "8.39999961853 0.0 0.0 0.0 8.39999961853 0.0 0.0 0.0 12.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-555.899463 stress="44324.590000000004 -88.44 -112.43 -88.44 44600.920000000006 281.49 -112.43 281.49 42648.37" +Ta 8.39872 8.3966 0.05505 0.06463 0.245549 -0.122629 +Ta 2.17054 2.11769 12.51793 -1.187171 -0.130259 0.732895 +Ta 2.0533 8.35895 2.13547 0.233297 0.276883 -0.580405 +Ta 8.38008 2.10628 2.0551 0.08252 -0.095821 -0.260646 +Ta 4.23293 0.07434 0.0467 -0.277801 -0.575764 -0.709591 +Ta 6.2651 2.18178 0.00596 0.79823 -0.246753 -0.159608 +Ta 6.25171 8.32714 2.06 0.878956 0.397963 0.635148 +Ta 4.23709 2.08122 2.04351 -0.562206 0.342387 0.661272 +Ta 0.01795 4.28026 0.03906 0.03593 -0.753743 -0.492226 +Ta 2.17486 6.29122 12.54891 -0.292549 0.564337 0.480079 +Ta 2.07869 4.28118 2.16843 0.802077 -0.587367 -0.741571 +Ta 0.03245 6.22138 2.08055 -0.303096 1.061223 0.205298 +Ta 0.05248 0.05717 4.13572 -0.808599 -0.191264 0.378476 +Ta 2.07678 2.17993 4.13839 0.013435 -0.436677 0.322097 +Ta 2.12704 8.36983 6.31443 -0.47643 0.64169 -0.334506 +Ta 8.3705 2.08925 6.34697 0.005647 -0.087278 -0.862051 +Ta 8.38688 0.07691 8.44598 -0.055963 -0.649155 -0.697661 +Ta 2.01928 2.13994 8.43334 1.328975 0.162973 -0.03981 +Ta 2.04284 0.00054 10.51116 0.153873 0.277763 0.303457 +Ta 8.3396 2.16616 10.45414 0.471147 -0.416926 1.590978 +Ta 4.14844 4.17913 12.54023 0.538274 0.344873 0.560429 +Ta 6.2757 6.28315 12.58489 -0.093969 -0.269964 -0.315362 +Ta 6.31105 4.1801 2.07691 -0.802185 0.349566 -0.345139 +Ta 4.1932 6.35885 2.05181 -0.289199 -0.820619 0.167236 +Ta 4.13608 8.35781 4.16416 0.306789 0.418729 -0.132841 +Ta 6.25772 2.18015 4.23088 0.265817 -1.013408 -0.174927 +Ta 6.21768 8.33441 6.28609 0.203365 0.059608 -0.446274 +Ta 4.21646 2.0257 6.25407 -0.176754 0.397415 0.650479 +Ta 4.11746 0.08256 8.45795 0.186491 -0.410856 0.068111 +Ta 6.30974 2.0663 8.41949 -0.752342 -0.087175 -0.586156 +Ta 6.3525 8.38938 10.49726 -0.44574 0.07188 0.558282 +Ta 4.22552 2.10093 10.54512 -0.02775 -0.023834 -0.918408 +Ta 8.31931 4.18624 4.12268 0.353673 0.002916 1.279805 +Ta 2.07372 6.27335 4.24137 -0.117409 -0.2389 0.08123 +Ta 2.14629 4.16947 6.30781 -0.615193 -0.022235 0.165676 +Ta 8.34652 6.37659 6.30287 0.054827 -0.339782 -0.192988 +Ta 0.03288 4.14327 8.42559 -0.136471 1.054922 -0.681011 +Ta 2.01843 6.3563 8.36368 0.358704 -0.63918 0.366829 +Ta 2.08465 4.24206 10.56487 -0.018445 0.035124 -1.175245 +Ta 8.39771 6.35777 10.52103 -0.075528 -0.463245 -0.015453 +Ta 4.18258 4.14181 4.17443 0.116808 0.364647 -0.254759 +Ta 6.22019 6.23685 4.13448 0.381966 0.454078 0.397164 +Ta 6.28851 4.24961 6.33299 0.186246 0.002802 0.096346 +Ta 4.13463 6.26413 6.29428 0.495766 0.350443 0.359588 +Ta 4.281 4.2574 8.39181 -0.903776 -0.621644 0.379359 +Ta 6.28467 6.34316 8.44502 0.157149 0.143513 -0.095499 +Ta 6.35243 4.1584 10.43469 -0.364583 0.937808 0.436386 +Ta 4.17724 6.33497 10.52826 0.308567 0.162755 -0.541855 +48 +Lattice = "8.39999961853 0.0 0.0 0.0 8.39999961853 0.0 0.0 0.0 12.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-555.922478 stress="44249.71 -651.04 -186.65 -651.04 44112.909999999996 -1023.35 -186.65 -1023.35 43244.3" +Ta 0.06343 8.3606 12.52321 -0.696701 0.940785 0.465297 +Ta 2.13463 2.12169 0.0276 -1.12333 0.576705 -0.026641 +Ta 2.07364 8.36228 2.04043 -0.26239 0.268211 0.488051 +Ta 8.37571 2.16668 2.14254 0.418469 -0.605551 -0.528424 +Ta 4.12651 0.04419 0.00196 0.983012 -0.612252 -0.323205 +Ta 6.25688 2.11357 0.01148 0.864439 -0.555613 0.554016 +Ta 6.35803 0.02339 2.17882 0.004319 -0.071235 -0.60434 +Ta 4.12492 2.02962 2.07119 0.768236 0.704677 0.998809 +Ta 8.32267 4.2038 0.03156 0.384971 -0.156549 -0.15821 +Ta 2.13999 6.25061 0.01163 0.206046 -0.408259 -0.573426 +Ta 2.16033 4.27176 2.10974 -0.144662 -0.316522 0.257436 +Ta 0.07325 6.34677 2.09878 -0.79538 -0.463238 0.011227 +Ta 0.03163 8.35134 4.23884 0.243806 0.858804 0.059427 +Ta 2.09614 2.16903 4.20803 0.184215 -0.612876 -0.414497 +Ta 2.15726 8.37369 6.37727 -0.165489 0.100422 -0.659123 +Ta 0.02483 2.126 6.26528 -0.175983 -0.609909 0.638816 +Ta 8.38466 8.32281 8.34428 0.169266 -0.211404 0.509213 +Ta 2.03906 2.07515 8.33331 0.465788 0.459079 0.436569 +Ta 2.10907 0.07467 10.53386 0.194596 0.006574 -0.731867 +Ta 8.33297 2.17086 10.43991 0.550055 -0.386364 0.529968 +Ta 4.27897 4.1393 0.00645 0.009889 0.528282 0.483017 +Ta 6.32729 6.28968 12.57566 -0.264177 0.642002 0.143135 +Ta 6.36828 4.23582 2.14993 -0.643207 -0.021355 0.110192 +Ta 4.26013 6.31388 2.06529 0.111216 0.212384 0.388281 +Ta 4.14382 0.05221 4.19611 0.133795 -0.272342 0.110067 +Ta 6.35676 2.13277 4.27931 -0.64253 -0.80079 -0.286094 +Ta 6.34512 8.331 6.35294 -0.428755 0.834939 -0.239901 +Ta 4.2156 2.15214 6.2277 0.270035 -0.158319 0.779826 +Ta 4.21566 0.03803 8.38231 0.083944 0.274668 0.537654 +Ta 6.36545 2.10057 8.38811 -0.533646 0.09587 -0.966206 +Ta 6.3135 0.07881 10.48441 -0.274002 -0.668893 0.02457 +Ta 4.26171 2.16526 10.52074 -0.418059 -0.459074 -0.898808 +Ta 8.3812 4.12205 4.26058 0.319127 1.186909 -0.691015 +Ta 2.03751 6.37506 4.22969 0.912322 -0.679112 -0.028629 +Ta 2.10316 4.17066 6.25287 0.262251 0.67613 0.437224 +Ta 0.01168 6.26992 6.26445 0.470148 -0.110432 0.580066 +Ta 0.00065 4.25404 8.40936 0.720462 0.320078 -0.095225 +Ta 2.15141 6.3154 8.39974 -0.210605 -0.239741 0.525179 +Ta 2.10941 4.11716 10.53789 -0.294631 0.328036 -0.2806 +Ta 0.02774 6.34503 10.55194 0.052179 -0.561462 -0.610592 +Ta 4.27746 4.26322 4.25824 -0.303269 -0.080042 -0.881987 +Ta 6.32942 6.36807 4.26719 -0.071872 -0.096612 -0.894702 +Ta 6.34514 4.25616 6.31634 -0.236463 -0.645396 0.127271 +Ta 4.26742 6.30384 6.28532 -1.015367 0.203758 -0.319441 +Ta 4.19566 4.27408 8.40465 -0.669454 -1.290586 -0.449496 +Ta 6.21853 6.2172 8.36939 0.704437 1.092583 0.697829 +Ta 6.30129 4.2155 10.41714 0.33095 0.1172 0.467289 +Ta 4.23757 6.23742 10.53163 -0.447998 0.665832 0.302002 +48 +Lattice = "8.39999961853 0.0 0.0 0.0 8.39999961853 0.0 0.0 0.0 12.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-555.800269 stress="44944.52 20.43 -53.49 20.43 46278.61 29.84 -53.49 29.84 42171.32" +Ta 8.39366 0.03327 12.53757 0.281471 -0.21858 0.714835 +Ta 2.13799 2.17663 0.08107 -0.242623 -0.691544 -0.821606 +Ta 2.1586 0.00804 2.08871 -0.840779 0.227491 0.043738 +Ta 0.07616 2.11667 2.10673 -0.564953 -0.14659 -0.53106 +Ta 4.15103 0.01208 0.04902 0.594481 0.453625 -0.068399 +Ta 6.25134 2.11148 12.51753 0.377615 -0.192108 1.200692 +Ta 6.34616 0.06815 2.1539 0.172975 -0.678259 -0.601449 +Ta 4.25478 2.13099 2.16677 0.103092 -0.008648 -0.297252 +Ta 8.32309 4.25914 0.06259 0.571757 -0.370889 -0.326093 +Ta 2.18289 6.3341 0.04696 -0.829016 -0.174777 -0.58409 +Ta 2.17634 4.18641 2.09151 -0.422429 0.255137 0.485834 +Ta 0.06508 6.22975 2.07834 -0.463567 0.907706 -0.064984 +Ta 0.03316 8.35006 4.12414 -0.730534 -0.238153 0.413363 +Ta 2.082 2.07294 4.20331 0.425673 -0.20545 -0.321985 +Ta 2.12216 0.0105 6.23718 0.020646 -0.010904 0.435072 +Ta 0.03286 2.07054 6.23343 -0.520711 -0.034403 0.247056 +Ta 8.36331 0.02515 8.43591 0.078206 -0.188894 -0.203212 +Ta 2.01725 2.02047 8.37346 0.945609 0.479423 0.375213 +Ta 2.13829 8.32424 10.45876 -0.581344 1.386424 0.908562 +Ta 8.35549 2.12524 10.51529 0.852839 -0.295749 0.265562 +Ta 4.16491 4.22554 0.0009 0.715672 -0.095676 -0.213922 +Ta 6.22371 6.32022 12.53036 0.187246 0.040385 0.908943 +Ta 6.36757 4.22353 2.09189 -0.874971 0.203062 0.00729 +Ta 4.13315 6.3638 2.09505 0.977658 -0.635482 0.37092 +Ta 4.23722 8.33801 4.14924 0.176574 0.229478 0.507526 +Ta 6.35365 2.15131 4.17453 0.12327 -0.302231 0.057467 +Ta 6.24548 0.08185 6.31737 0.13665 -0.415086 -0.30141 +Ta 4.2241 2.07465 6.23581 0.013977 0.192163 0.497879 +Ta 4.19905 8.3678 8.46852 0.198161 0.792819 -0.702669 +Ta 6.2848 2.06186 8.4824 -0.027942 0.482082 -0.848532 +Ta 6.29377 8.32663 10.54116 0.105969 0.400999 0.031916 +Ta 4.27399 2.1012 10.56089 -1.346927 0.176649 -0.650846 +Ta 0.04908 4.20115 4.17826 0.10887 0.65821 0.312297 +Ta 2.06654 6.36455 4.27901 0.165742 -0.555047 -0.271572 +Ta 2.17095 4.16446 6.22477 -0.421266 -0.000369 0.715516 +Ta 8.32881 6.3256 6.36766 0.454331 0.163972 -0.301611 +Ta 0.05742 4.18749 8.33872 0.082852 0.081218 0.003436 +Ta 2.15697 6.37663 8.42585 -0.958747 -0.720851 -0.438235 +Ta 2.03852 4.15529 10.56738 0.183579 0.144348 -0.516283 +Ta 0.0099 6.30552 10.54233 0.385985 -0.309035 -0.170827 +Ta 4.16427 4.18342 4.16227 0.140605 0.544738 -0.035124 +Ta 6.24236 6.2516 4.26779 0.391419 0.304507 -0.502905 +Ta 6.3071 4.18976 6.23024 -0.166338 -0.369336 0.911871 +Ta 4.13743 6.24505 6.36665 0.716072 0.416956 -0.252837 +Ta 4.20011 4.24099 8.46012 -0.222169 -0.850244 0.096683 +Ta 6.34341 6.33047 8.43181 -0.209113 -0.500978 -0.235576 +Ta 6.38029 4.16076 10.48343 -0.380969 0.906191 -0.2817 +Ta 4.17561 6.36228 10.50253 0.115399 -1.2383 0.032512 +48 +Lattice = "8.39999961853 0.0 0.0 0.0 8.39999961853 0.0 0.0 0.0 12.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-556.196151 stress="44094.64 176.91000000000003 257.40000000000003 176.91000000000003 41950.53 439.89 257.40000000000003 439.89 40028.060000000005" +Ta 8.37577 0.07732 12.54307 0.193396 -0.499329 -0.077718 +Ta 2.15528 2.07008 0.06672 -0.32228 0.17168 -0.769823 +Ta 2.17608 0.01156 2.06262 -0.575545 -0.144242 0.553705 +Ta 8.36759 2.03815 2.01865 0.158421 0.357495 0.477149 +Ta 4.25295 8.39299 0.01959 -0.129413 -0.3983 -0.769823 +Ta 6.3041 2.15126 12.55831 -0.100908 -0.537014 0.579287 +Ta 6.31819 8.348 2.11631 -0.47465 0.826061 -0.151195 +Ta 4.12134 2.08818 2.01802 1.198272 0.44388 0.857287 +Ta 0.08271 4.2036 12.59844 -0.118028 0.163914 0.431759 +Ta 2.01753 6.35781 0.0714 0.494708 -0.055352 -1.028673 +Ta 2.08391 4.19281 2.14837 -0.158375 0.168457 0.181091 +Ta 8.38687 6.38119 2.07973 0.392875 -0.502905 0.230173 +Ta 1e-05 8.39354 4.1693 0.107276 0.205353 0.093359 +Ta 2.08062 2.07046 4.21883 0.026291 0.31706 0.006631 +Ta 2.05743 8.3971 6.26987 -0.209663 0.356146 0.194858 +Ta 8.34982 2.15852 6.27812 0.272828 -0.518433 0.131469 +Ta 0.043 0.03735 8.38109 -0.323399 0.174941 0.265006 +Ta 2.1683 2.12031 8.32959 -0.372149 0.123767 0.247418 +Ta 2.03915 0.06596 10.44595 0.608304 -0.370142 0.153462 +Ta 0.0392 2.15708 10.57335 -0.077003 -0.470665 -0.584646 +Ta 4.18371 4.19955 12.55926 -0.371136 0.959833 0.363516 +Ta 6.365 6.38013 0.00232 -0.186193 -0.847087 -0.020211 +Ta 6.34421 4.17285 2.04012 -0.364574 0.228708 0.09004 +Ta 4.18677 6.32858 2.09014 0.198032 -0.567994 -0.060119 +Ta 4.19831 0.06384 4.24991 0.200299 -0.125509 -0.197675 +Ta 6.33101 2.08404 4.1756 -0.576465 0.148029 -0.203471 +Ta 6.36187 8.33375 6.27465 0.032174 0.074865 0.331846 +Ta 4.24224 2.04345 6.36746 0.424152 0.728418 -0.803879 +Ta 4.20469 0.06736 8.35055 -0.071691 -0.324778 0.714795 +Ta 6.36637 2.08974 8.39588 -0.27761 0.003974 0.2077 +Ta 6.31852 8.34416 10.47042 0.145941 0.789314 -0.172407 +Ta 4.26553 2.13504 10.56332 -0.447518 -0.543415 -0.681653 +Ta 8.33751 4.1766 4.23019 0.47446 0.317403 -0.677715 +Ta 2.12185 6.34879 4.19992 -0.160765 -0.306315 -0.189165 +Ta 2.09925 4.22625 6.27971 0.035143 -0.18736 -0.177238 +Ta 0.02185 6.34185 6.33585 -0.259106 -0.451908 -0.098487 +Ta 0.00789 4.15479 8.43241 -0.172733 -0.036282 -0.42258 +Ta 2.06258 6.26646 8.37821 0.360506 0.29163 0.464662 +Ta 2.07183 4.15654 10.44613 0.797909 0.375531 0.441052 +Ta 8.37673 6.24695 10.43381 0.470094 0.350637 0.295661 +Ta 4.1818 4.18462 4.22566 0.403165 -0.221054 0.018898 +Ta 6.30127 6.32098 4.14566 -0.247024 -0.429369 0.397465 +Ta 6.37389 4.25506 6.30113 -0.825718 0.356737 0.021921 +Ta 4.14506 6.37217 6.33119 0.524226 -0.464019 -0.33404 +Ta 4.2507 4.22408 8.38434 -0.07311 -0.474256 -0.097241 +Ta 6.22906 6.29278 8.44824 0.607511 0.08044 -0.657565 +Ta 6.31263 4.16515 10.53822 -0.023348 0.504182 -0.060435 +Ta 4.25683 6.33642 10.47293 -1.207578 -0.04273 0.485548 +48 +Lattice = "8.39999961853 0.0 0.0 0.0 8.39999961853 0.0 0.0 0.0 12.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-555.488929 stress="49282.159999999996 -336.55 1149.4 -336.55 47874.28 103.05 1149.4 103.05 42424.24" +Ta 0.03512 8.32736 0.04735 0.195543 1.082051 -0.703584 +Ta 2.11581 2.13939 0.01641 0.073477 -0.45744 0.514192 +Ta 2.07079 8.37632 2.08792 0.676688 0.377328 0.179098 +Ta 8.35783 2.03849 2.1809 0.908543 1.149934 -0.889987 +Ta 4.1959 8.34696 12.58734 -0.535175 0.46913 0.038878 +Ta 6.26437 2.08135 0.07679 0.299386 0.583712 -0.602461 +Ta 6.37037 0.01366 2.02106 -1.294312 -0.635008 0.710817 +Ta 4.24611 2.17769 2.0911 -0.680948 -0.985152 -0.181143 +Ta 0.07372 4.12817 12.59093 -0.441435 0.019262 0.248804 +Ta 2.06857 6.35351 0.07211 0.019431 -0.602725 -1.010885 +Ta 2.08855 4.27095 2.1785 0.282438 -0.433272 -0.555293 +Ta 8.32144 6.22087 2.0537 0.410783 0.004178 0.562681 +Ta 8.38888 8.37714 4.11943 0.308962 -0.309358 1.164082 +Ta 2.14887 2.13908 4.15126 -0.277118 -0.404867 0.461854 +Ta 2.17928 0.06945 6.33693 -0.935206 0.091758 0.125678 +Ta 8.33101 2.14872 6.25637 0.561863 -0.262483 -0.416106 +Ta 0.04108 0.06912 8.45283 -0.702254 -0.942391 -0.611289 +Ta 2.03186 2.1051 8.47317 0.838748 0.336408 -1.260827 +Ta 2.03098 0.04717 10.43185 0.916049 -0.870293 0.557485 +Ta 0.04291 2.11193 10.50269 -1.3273 0.203866 0.673734 +Ta 4.14453 4.27665 12.57389 -0.213966 -0.473756 0.070353 +Ta 6.32205 6.30175 0.07023 -0.132763 -0.567711 -0.903952 +Ta 6.21861 4.20945 2.09303 0.67931 0.016608 -0.165874 +Ta 4.17333 6.29865 2.04198 0.497926 0.362234 0.845656 +Ta 4.15271 8.31825 4.24383 0.677104 0.920677 -1.089099 +Ta 6.3722 2.05801 4.12152 -0.64023 -0.357381 0.702795 +Ta 6.27712 8.34356 6.37931 0.466257 0.752415 -0.704172 +Ta 4.23102 2.13963 6.26783 -0.008734 -0.194259 0.29676 +Ta 4.24458 8.3949 8.41406 -0.466657 0.049088 0.415361 +Ta 6.27345 2.10269 8.33365 0.108823 0.031661 0.455912 +Ta 6.25209 0.06243 10.5671 0.797058 -0.392281 -0.266682 +Ta 4.2291 2.06722 10.51411 -0.167331 0.154586 0.125317 +Ta 0.08155 4.27803 4.14262 -0.411464 -0.432115 0.501631 +Ta 2.14772 6.356 4.24419 -0.424297 -0.329112 -0.005029 +Ta 2.16225 4.21453 6.37281 -0.085025 -0.301886 -0.275683 +Ta 8.3388 6.27522 6.25427 0.960965 0.503338 0.576671 +Ta 8.34558 4.21909 8.35011 -0.19525 0.229496 0.190219 +Ta 2.1414 6.25722 8.39529 -0.406155 0.495631 -0.072931 +Ta 2.0676 4.16509 10.42654 0.162024 0.547732 0.361796 +Ta 0.02779 6.27183 10.57064 -0.481675 -0.102235 -0.668364 +Ta 4.27167 4.12358 4.18383 -0.624257 0.830488 0.131313 +Ta 6.32831 6.30033 4.23746 -0.368349 0.352357 -1.043225 +Ta 6.26272 4.22118 6.22845 0.153851 -0.400134 0.035347 +Ta 4.22203 6.31398 6.22074 -0.268132 -0.584423 0.698344 +Ta 4.25894 4.24103 8.47645 -0.353687 -0.638133 -0.793996 +Ta 6.25491 6.2908 8.36135 0.799557 0.331093 0.79638 +Ta 6.21723 4.19649 10.48535 1.309309 -0.431997 0.676066 +Ta 4.26927 6.21862 10.51505 -0.662374 1.213381 0.103354 +48 +Lattice = "8.39999961853 0.0 0.0 0.0 8.39999961853 0.0 0.0 0.0 12.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-556.027926 stress="43564.39 -49.54 -99.3 -49.54 45432.35 275.06 -99.3 275.06 40185.14" +Ta 8.34497 8.34551 12.5956 0.712799 0.267536 -0.153036 +Ta 2.0558 2.04577 0.01276 0.261385 -0.290707 -0.127804 +Ta 2.06838 8.37737 2.16659 0.672547 0.395646 -1.312629 +Ta 0.00359 2.05074 2.15226 -0.320824 0.421623 -0.432403 +Ta 4.26826 8.33822 0.02108 -0.755392 0.804853 0.059577 +Ta 6.33489 2.131 12.53088 -0.426566 -0.592698 0.445778 +Ta 6.25404 0.03209 2.05073 0.258429 0.220942 0.825671 +Ta 4.16384 2.13978 2.12517 0.060709 -0.255028 -0.249772 +Ta 8.36731 4.13909 0.0525 0.331667 0.645722 -0.10797 +Ta 2.15375 6.29902 0.04207 -0.223718 0.33025 -0.423847 +Ta 2.11926 4.2113 2.04 0.077389 -0.274763 0.060731 +Ta 0.06324 6.29457 2.13106 -0.639548 -0.256039 -0.611666 +Ta 0.0522 8.3415 4.1171 -0.688958 0.522915 0.942873 +Ta 2.07655 2.17403 4.20011 -0.235656 -0.209697 0.072817 +Ta 2.1497 8.34384 6.3073 -0.390747 0.045154 -0.212304 +Ta 0.02961 2.09814 6.34863 -0.334421 -0.350008 -0.633984 +Ta 0.07703 0.06114 8.42699 -0.48162 -0.529725 -0.105918 +Ta 2.1146 2.08725 8.35955 0.000134 0.091763 0.144876 +Ta 2.17879 0.01668 10.42251 -0.327921 -0.945931 0.74699 +Ta 0.01535 2.14423 10.49771 0.421563 -0.107154 0.042196 +Ta 4.24355 4.14389 12.57727 -0.490707 -0.151469 0.150492 +Ta 6.30703 6.31257 0.03364 0.317513 -0.514173 0.21469 +Ta 6.21957 4.24141 2.11393 0.747501 -0.932063 -0.27685 +Ta 4.27447 6.25375 2.16537 -0.54996 0.359185 -0.634042 +Ta 4.13684 8.3759 4.1221 0.976955 0.422783 0.46928 +Ta 6.31913 2.1596 4.19723 -0.042125 -0.448326 0.0636 +Ta 6.32938 0.03364 6.23358 0.112289 -0.022674 -0.410219 +Ta 4.15414 2.02652 6.21831 0.551165 0.522365 0.208895 +Ta 4.28152 8.39237 8.35103 -0.247267 -0.367146 -0.056108 +Ta 6.31596 2.06768 8.44393 -0.115638 0.184021 -0.398675 +Ta 6.3285 8.32779 10.51057 -0.165051 0.47747 -0.199364 +Ta 4.12563 2.0398 10.42566 0.443476 0.125337 0.61432 +Ta 8.38026 4.1908 4.13874 0.589643 0.264679 0.088241 +Ta 2.17116 6.35301 4.11791 -0.570772 -1.315435 0.985555 +Ta 2.03626 4.1604 6.34457 0.154161 0.572819 -0.628519 +Ta 8.38985 6.30508 6.28594 0.326379 0.413925 -0.417146 +Ta 8.36103 4.20342 8.38265 -0.217143 0.101356 0.728482 +Ta 2.08955 6.26468 8.3173 0.243414 0.178383 0.814981 +Ta 2.15221 4.23276 10.51632 -0.473082 0.143977 0.127608 +Ta 8.36864 6.28423 10.50391 0.518348 -0.281377 0.03593 +Ta 4.17037 4.21177 4.21967 -0.156993 -0.293509 0.422478 +Ta 6.32577 6.23846 4.15284 0.005152 0.74102 0.318444 +Ta 6.34611 4.25945 6.31433 -0.335588 -0.895129 0.197851 +Ta 4.21525 6.23105 6.29066 0.022941 0.346622 -0.028249 +Ta 4.1532 4.14295 8.36799 0.730355 0.232327 -0.123611 +Ta 6.32703 6.37247 8.32622 -0.158654 -0.470012 0.487803 +Ta 6.2491 4.16576 10.55905 0.217972 0.346985 -0.975743 +Ta 4.26539 6.24873 10.54677 -0.405539 0.323408 -0.750301 +48 +Lattice = "8.39999961853 0.0 0.0 0.0 8.39999961853 0.0 0.0 0.0 12.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-555.968399 stress="43047.68 454.90999999999997 -179.26 454.90999999999997 45952.240000000005 326.2 -179.26 326.2 41269.62" +Ta 8.33107 8.3509 0.0015 0.920711 0.047635 0.466085 +Ta 2.15215 2.06155 0.00638 0.013766 0.114377 0.114976 +Ta 2.17243 8.36545 2.15847 -0.432619 0.744561 -0.543999 +Ta 0.00213 2.13268 2.0346 0.046002 -1.061264 0.961179 +Ta 4.23222 0.05817 12.55891 -0.409962 -0.778639 -0.063284 +Ta 6.26764 2.04607 0.0766 -0.214809 0.598564 -0.689581 +Ta 6.24022 8.35975 2.09956 0.446009 0.343529 0.506397 +Ta 4.25858 2.10916 2.17653 -0.950565 0.012664 -0.279387 +Ta 8.36413 4.13793 0.03804 0.227157 0.360461 -0.615113 +Ta 2.07699 6.23218 0.02357 -0.035908 0.836465 0.1878 +Ta 2.04438 4.13335 2.10915 0.215365 0.362086 -0.128602 +Ta 8.34053 6.35158 2.10339 0.192164 -0.413234 -0.37135 +Ta 8.39644 8.33273 4.21315 -0.029012 0.821143 -0.309048 +Ta 2.05049 2.18199 4.27857 -0.15645 -0.41091 -0.813722 +Ta 2.10797 0.00795 6.24152 -0.317156 -0.701413 0.424479 +Ta 0.00876 2.1029 6.29925 -0.221688 -0.231517 -0.287747 +Ta 0.00111 8.39169 8.41011 0.358727 -0.010756 -0.601951 +Ta 2.07824 2.14165 8.32985 0.262314 -0.445469 0.887731 +Ta 2.04556 0.08072 10.52474 0.5264 -0.285219 -0.083721 +Ta 8.37798 2.01756 10.54116 -0.140639 1.218338 -0.186234 +Ta 4.12695 4.2567 0.0353 0.753601 -0.317693 0.037295 +Ta 6.32498 6.30315 0.03712 -0.388071 -0.337876 -0.313802 +Ta 6.30962 4.14127 2.13365 -0.135269 0.601454 0.056099 +Ta 4.23315 6.34774 2.12982 -0.212883 -0.527314 -0.160335 +Ta 4.19249 0.03152 4.23264 -0.076723 -0.943434 0.376392 +Ta 6.23832 2.03393 4.19631 1.15411 0.515942 0.335054 +Ta 6.34797 8.36641 6.29619 -0.34515 0.166198 -0.034551 +Ta 4.17707 2.07642 6.27401 0.591806 0.420296 0.519899 +Ta 4.21362 8.37068 8.38105 -0.080896 0.523146 -0.053202 +Ta 6.36717 2.12038 8.33147 -0.401482 -0.340538 0.569328 +Ta 6.37677 8.37217 10.48208 -0.574779 0.057651 -0.218756 +Ta 4.263 2.08575 10.46917 0.085217 0.16737 -0.392696 +Ta 0.00308 4.25945 4.25831 -0.216132 -0.940307 -0.693366 +Ta 2.02019 6.29183 4.12359 0.782573 -0.22301 0.653063 +Ta 2.13428 4.1517 6.3785 0.043308 1.139429 -0.121789 +Ta 8.35004 6.21881 6.28464 1.158421 0.740718 0.664429 +Ta 8.39923 4.25788 8.41667 0.108854 -0.46318 0.567778 +Ta 2.14057 6.3406 8.46909 -0.263525 0.035096 -0.867844 +Ta 2.1474 4.23778 10.49162 -0.289223 -1.035858 0.015625 +Ta 0.0553 6.25623 10.45097 -0.282479 0.0763 0.811523 +Ta 4.15104 4.23317 4.16596 0.281648 0.167552 0.379349 +Ta 6.33045 6.25832 4.24115 -0.699707 0.07144 -0.17646 +Ta 6.37853 4.15779 6.33602 -1.073636 -0.112077 -0.599552 +Ta 4.1996 6.23651 6.33229 -0.262227 0.289885 -0.585827 +Ta 4.28008 4.27309 8.43274 -0.041823 -0.686192 -0.088247 +Ta 6.33862 6.31947 8.39033 -0.051946 -0.054734 0.085119 +Ta 6.30961 4.25884 10.56206 0.075121 -0.542769 0.057588 +Ta 4.20876 6.32794 10.48641 0.061486 0.431101 0.602978 +48 +Lattice = "8.39999961853 0.0 0.0 0.0 8.39999961853 0.0 0.0 0.0 12.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-556.047132 stress="42983.7 837.4200000000001 145.2 837.4200000000001 43867.59 -1054.67 145.2 -1054.67 42053.840000000004" +Ta 8.35391 0.02768 12.53195 0.2996 0.097159 -0.189691 +Ta 2.09406 2.10567 12.58345 -0.566566 -0.276803 -0.258138 +Ta 2.0736 8.3527 2.13624 0.431138 0.069631 -0.176146 +Ta 0.07104 2.02659 2.16207 -0.798628 0.179308 -0.911212 +Ta 4.24337 0.07189 0.06066 -0.667104 -1.01187 -0.253714 +Ta 6.24014 2.08636 12.54857 0.783637 0.195082 0.154676 +Ta 6.33344 8.39148 2.02558 -0.303788 0.247493 1.015414 +Ta 4.16535 2.06646 2.04504 0.073468 0.186828 0.468777 +Ta 8.32677 4.23996 0.02711 0.81379 -0.478646 0.053713 +Ta 2.08781 6.37504 12.59133 0.032354 -0.135994 0.303608 +Ta 2.06443 4.14688 2.08857 -0.166601 0.775039 -0.532869 +Ta 8.38638 6.37661 2.05779 -0.182172 -0.557039 0.479008 +Ta 8.37411 8.39962 4.27195 0.241148 -0.01589 -0.246337 +Ta 2.10985 2.13127 4.13256 0.516219 -0.39379 1.293154 +Ta 2.14384 0.00652 6.34882 0.125171 0.286979 -0.653648 +Ta 8.34346 2.03521 6.31512 0.018758 0.590464 0.348758 +Ta 0.03525 8.32946 8.41429 -0.219143 0.55592 0.013803 +Ta 2.12988 2.0852 8.36064 -0.099944 0.308003 0.252642 +Ta 2.08083 8.32403 10.45611 0.15963 0.438777 0.611576 +Ta 0.02857 2.10046 10.46488 0.00465 0.06223 -0.163579 +Ta 4.12633 4.25698 12.56375 -0.253803 -0.345212 0.164038 +Ta 6.24339 6.25677 0.07703 0.214297 0.405605 -0.193076 +Ta 6.23523 4.15385 2.04007 0.673655 -0.032667 0.435699 +Ta 4.23419 6.22194 2.15425 -0.259175 0.88278 -0.155619 +Ta 4.19632 0.02098 4.26019 0.256837 0.15204 -0.517119 +Ta 6.2787 2.16315 4.12282 -0.232405 -0.499866 0.253482 +Ta 6.34721 8.31974 6.30085 -0.979334 0.910385 0.303536 +Ta 4.28154 2.17035 6.32716 -0.15794 -0.615192 -0.1244 +Ta 4.18199 8.39045 8.46612 0.325504 0.011668 -0.623247 +Ta 6.26218 2.04661 8.48258 0.1676 0.725305 -0.25923 +Ta 6.23956 8.33727 10.47655 0.418626 0.454527 0.207051 +Ta 4.15476 2.10491 10.56002 -0.313925 0.116788 -0.527027 +Ta 0.01924 4.13985 4.22933 -0.14445 0.528571 -0.009114 +Ta 2.08713 6.26332 4.12939 -0.556542 0.338386 0.377019 +Ta 2.15091 4.23252 6.31161 -0.453388 -0.485864 -0.240866 +Ta 0.01574 6.34253 6.34105 0.560159 -0.626169 -0.553544 +Ta 0.06165 4.27339 8.34091 -0.693509 -0.695001 0.015426 +Ta 2.17693 6.29896 8.40088 -0.096806 0.060357 0.058203 +Ta 2.04233 4.27207 10.49743 -0.170105 0.047304 0.328134 +Ta 8.326 6.32148 10.47975 0.051179 -0.370901 0.321938 +Ta 4.17478 4.27838 4.20752 -0.040763 -0.935827 -0.576582 +Ta 6.33594 6.28787 4.27554 0.307038 0.027247 -1.208419 +Ta 6.22034 4.2468 6.22637 0.65603 -0.422269 1.121308 +Ta 4.16145 6.31917 6.2391 0.094184 0.321459 0.407157 +Ta 4.14417 4.25682 8.46183 0.755121 -0.328996 0.17207 +Ta 6.30692 6.29958 8.38648 -0.576112 -0.600141 0.013593 +Ta 6.30183 4.19292 10.57602 0.207371 0.051704 -0.883456 +Ta 4.25713 6.3237 10.54986 -0.254962 -0.198902 0.083246 +48 +Lattice = "8.39999961853 0.0 0.0 0.0 8.39999961853 0.0 0.0 0.0 12.6000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-555.747848 stress="44613.38 397.28000000000003 -242.23 397.28000000000003 46401.21 -102.86 -242.23 -102.86 43613.280000000006" +Ta 0.02479 8.34418 0.01275 -0.16642 0.336623 -0.17578 +Ta 2.12361 2.14989 0.01237 -0.405458 -0.253401 -0.541818 +Ta 2.15668 0.05545 2.03048 -1.000877 -0.537193 0.264476 +Ta 8.38488 2.15096 2.04122 -0.226412 -0.742284 -0.216619 +Ta 4.26822 0.07709 0.05369 -1.051454 -0.974093 -0.658846 +Ta 6.22169 2.03316 12.57305 1.255557 0.920651 0.507841 +Ta 6.25622 8.38573 2.18037 0.795872 0.410847 -0.509558 +Ta 4.16678 2.07023 2.1321 0.423587 0.619136 0.258117 +Ta 0.05908 4.28115 12.57632 -0.514548 -0.229495 0.223581 +Ta 2.15681 6.25911 12.52611 -0.187265 0.793507 0.590029 +Ta 2.10607 4.20234 2.1649 -0.204517 0.52787 -0.182255 +Ta 8.33964 6.36799 2.06365 0.524674 -0.464522 0.434211 +Ta 8.32432 8.32625 4.27611 0.592658 0.021054 -0.297495 +Ta 2.02168 2.04529 4.16312 0.026264 -0.221166 0.743869 +Ta 2.16588 0.04144 6.35945 -0.460731 -0.235445 -0.58949 +Ta 0.01204 2.05369 6.35048 0.259091 0.326814 -0.495643 +Ta 0.01039 0.00368 8.3336 -0.673018 -0.236784 0.607724 +Ta 2.0362 2.11502 8.41459 0.695682 0.392328 0.347056 +Ta 2.06078 8.33946 10.46227 0.422497 0.624614 0.395156 +Ta 8.39011 2.13863 10.50323 0.037882 -0.407402 0.601189 +Ta 4.20505 4.24743 0.06234 -0.328867 -0.887587 -0.011584 +Ta 6.2258 6.25659 0.00484 0.425855 0.635452 0.199651 +Ta 6.25834 4.14378 2.03463 0.154989 0.155997 0.516394 +Ta 4.15865 6.35101 2.06568 0.13635 -0.562846 0.542472 +Ta 4.24566 0.03553 4.16912 -0.27687 0.238692 0.561637 +Ta 6.36116 2.13477 4.23864 -0.0672 0.263837 -0.212871 +Ta 6.28832 0.03663 6.33587 -0.054626 -0.825117 0.073016 +Ta 4.26921 2.03519 6.33887 -0.525339 0.940356 -0.102505 +Ta 4.20405 0.04164 8.423 0.312009 0.161766 0.440029 +Ta 6.3561 2.16604 8.38015 -0.556637 -0.443675 0.656518 +Ta 6.22231 0.06354 10.57462 0.749122 -0.629719 -0.896467 +Ta 4.23446 2.05368 10.5626 -0.759888 0.841158 -0.975855 +Ta 0.00046 4.14735 4.18932 0.123745 1.012572 -0.167229 +Ta 2.18129 6.36027 4.19805 -0.666359 0.064525 -0.022031 +Ta 2.07916 4.25676 6.35081 0.158957 -0.818787 -0.400517 +Ta 8.3474 6.21802 6.35914 0.325132 0.928801 -0.633002 +Ta 8.32754 4.20214 8.39946 0.837886 0.30854 0.750161 +Ta 2.08917 6.30707 8.37548 -0.142599 -0.403183 0.505543 +Ta 2.09792 4.22452 10.55581 0.108204 -0.342607 -0.998745 +Ta 8.34488 6.35512 10.47699 0.002323 -0.149774 0.008416 +Ta 4.12138 4.12799 4.23746 0.523048 0.17672 0.272443 +Ta 6.23634 6.28138 4.16996 -0.092966 -0.776434 0.306905 +Ta 6.36952 4.2719 6.36773 -1.008562 -0.323291 -1.151597 +Ta 4.13873 6.36014 6.35862 0.771311 -0.156347 -0.591177 +Ta 4.2281 4.26918 8.35417 -0.447945 -1.108738 0.194339 +Ta 6.2637 6.27914 8.44271 -0.036946 0.834555 0.001538 +Ta 6.25795 4.26254 10.56883 0.196157 -0.749479 0.01619 +Ta 4.19511 6.21799 10.50605 -0.003346 0.942955 -0.187417 diff --git a/examples/PACKAGES/pod/Ta/XYZ/Elastic_BCC.xyz b/examples/PACKAGES/pod/Ta/XYZ/Elastic_BCC.xyz new file mode 100644 index 0000000000..ba2d560f43 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/Elastic_BCC.xyz @@ -0,0 +1,400 @@ +2 +Lattice = "3.31180000305 0.0 0.0 0.0131999999285 3.32649993896 0.0 -0.00789999961853 -0.00710000004619 3.30480003357" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689367 stress="4063.55 -2978.6600000000003 1761.76 -2978.6600000000003 -667.64 1596.31 1761.76 1596.31 6346.89" +Ta 0.0 0.0 0.0 -0.00044 3e-06 -2e-06 +Ta 1.6585 1.6597 1.6524 0.00044 -3e-06 2e-06 +2 +Lattice = "3.31170010567 0.0 0.0 -0.00419999985024 3.30890011787 0.0 -0.00920000020415 -0.0154999997467 3.328799963" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689888 stress="1032.59 906.63 2045.1999999999998 906.63 1918.6499999999999 3453.7599999999998 2045.1999999999998 3453.7599999999998 -4437.12" +Ta 0.0 0.0 0.0 -0.000436 -1e-06 -2e-06 +Ta 1.6491 1.6467 1.6644 0.000436 1e-06 2e-06 +2 +Lattice = "3.3111000061 0.0 0.0 0.00810000021011 3.3273999691 0.0 -0.00889999978244 0.00870000012219 3.31040000916" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689996 stress="1447.25 -1793.1 1960.95 -1793.1 -3771.35 -1928.0900000000001 1960.95 -1928.0900000000001 1685.23" +Ta 0.0 0.0 0.0 0.000438 -0.000443 5e-06 +Ta 1.6552 1.668 1.6552 -0.000438 0.000443 -5e-06 +2 +Lattice = "3.32399988174 0.0 0.0 -0.00179999996908 3.32139992714 0.0 -0.00359999993816 -0.00600000005215 3.31699991226" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690957 stress="-9165.53 392.27 787.5 392.27 -8350.429999999998 1310.7 787.5 1310.7 -6953.2" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.6593 1.6577 1.6585 0.0 0.0 0.0 +2 +Lattice = "3.31089997292 0.0 0.0 0.0124000003561 3.32559990883 0.0 -0.001200000057 -0.0124000003561 3.3341999054" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690521 stress="-8949.18 -2681.52 276.69 -2681.52 -13545.81 2724.27 276.69 2724.27 -16201.730000000001" +Ta 0.0 0.0 0.0 -0.000423 3e-06 0.0 +Ta 1.661 1.6566 1.6671 0.000423 -3e-06 0.0 +2 +Lattice = "3.30999994278 0.0 0.0 0.0110999997705 3.33330011368 0.0 0.00200000009499 -0.00749999983236 3.33319997787" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.69038 stress="-11410.16 -2387.02 -421.38 -2387.02 -18621.670000000002 1636.99 -421.38 1636.99 -18577.07" +Ta 0.0 0.0 0.0 0.000419 -3e-06 -1e-06 +Ta 1.6616 1.6629 1.6666 -0.000419 3e-06 1e-06 +2 +Lattice = "3.31480002403 0.0 0.0 -0.00130000000354 3.30679988861 0.0 0.0152000002563 -0.00179999996908 3.31760001183" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689202 stress="4967.67 296.10999999999996 -3428.94 296.10999999999996 7593.91 406.16 -3428.94 406.16 4075.8900000000003" +Ta 0.0 0.0 0.0 0.000444 0.0 -4e-06 +Ta 1.6644 1.6525 1.6588 -0.000444 0.0 4e-06 +2 +Lattice = "3.30529999733 0.0 0.0 -0.00170000002254 3.32520008087 0.0 0.00170000002254 -0.00829999987036 3.32640004158" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690482 stress="-550.9 376.95 -376.77 376.95 -6880.99 1848.91 -376.77 1848.91 -7253.42" +Ta 0.0 0.0 0.0 0.00043 -0.000434 -2e-06 +Ta 1.6527 1.6584 1.6632 -0.00043 0.000434 2e-06 +2 +Lattice = "3.32270002365 0.0 0.0 -0.00240000011399 3.32060003281 0.0 -0.0148999998346 0.00600000005215 3.30489993095" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689902 stress="-1938.73 553.61 3301.04 553.61 -1240.33 -1332.82 3301.04 -1332.82 3793.0" +Ta 0.0 0.0 0.0 -4e-06 2e-06 -0.000435 +Ta 1.6527 1.6633 1.6524 4e-06 -2e-06 0.000435 +2 +Lattice = "3.3232998848 0.0 0.0 0.00380000006407 3.30970001221 0.0 -0.0163000002503 -0.00340000004508 3.33060002327" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690563 stress="-9502.029999999999 -833.58 3604.52 -833.58 -5183.259999999999 750.48 3604.52 750.48 -11765.68" +Ta 0.0 0.0 0.0 -1e-06 0.000427 1e-06 +Ta 1.6554 1.6532 1.6653 1e-06 -0.000427 -1e-06 +2 +Lattice = "3.31620001793 0.0 0.0 0.00319999991916 3.31369996071 0.0 -0.00190000003204 0.00400000018999 3.31730008125" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690207 stress="617.27 -708.54 421.95 -708.54 1415.16 -887.75 421.95 -887.75 266.22" +Ta 0.0 0.0 0.0 -0.000437 -0.000438 0.00044 +Ta 1.6587 1.6588 1.6587 0.000437 0.000438 -0.00044 +2 +Lattice = "3.32719993591 0.0 0.0 0.00240000011399 3.30349993706 0.0 0.00430000014603 -0.0038999998942 3.31030011177" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689285 stress="138.79 -534.2 -967.78 -534.2 7805.76 865.88 -967.78 865.88 5611.4" +Ta 0.0 0.0 0.0 0.000447 -2e-06 -0.000443 +Ta 1.667 1.6498 1.6551 -0.000447 2e-06 0.000443 +2 +Lattice = "3.3218998909 0.0 0.0 0.00930000003427 3.30679988861 0.0 0.0109000001103 0.00510000018403 3.31669998169" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689768 stress="-340.25 -2080.88 -2448.95 -2080.88 4545.72 -1144.55 -2448.95 -1144.55 1351.01" +Ta 0.0 0.0 0.0 -0.000442 -0.000437 0.000444 +Ta 1.671 1.6559 1.6584 0.000442 0.000437 -0.000444 +2 +Lattice = "3.31170010567 0.0 0.0 0.0164999999106 3.3343000412 0.0 -9.99999974738e-05 0.0138999996707 3.30570006371" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.68968 stress="-50.55 -3689.6800000000003 -1.47 -3689.6800000000003 -7274.5199999999995 -3083.4 -1.47 -3083.4 1889.91" +Ta 0.0 0.0 0.0 -0.000435 1e-06 0.000433 +Ta 1.664 1.6741 1.6529 0.000435 -1e-06 -0.000433 +2 +Lattice = "3.32259988785 0.0 0.0 0.0109999999404 3.30929994583 0.0 -0.0142000000924 -0.0140000004321 3.32019996643" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690074 stress="-3803.7000000000003 -2463.9700000000003 3178.14 -2463.9700000000003 463.82 3109.52 3178.14 3109.52 -3014.8100000000004" +Ta 0.0 0.0 0.0 0.000872 0.000428 1.1e-05 +Ta 1.6598 1.6477 1.6601 -0.000872 -0.000428 -1.1e-05 +2 +Lattice = "3.31579995155 0.0 0.0 0.0163000002503 3.31240010262 0.0 0.00620000017807 -0.00879999995232 3.30360007286" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.688108 stress="8273.59 -3695.21 -1386.53 -3695.21 9410.130000000001 1972.81 -1386.53 1972.81 12301.0" +Ta 0.0 0.0 0.0 0.000448 -5e-06 -2e-06 +Ta 1.6692 1.6518 1.6518 -0.000448 5e-06 2e-06 +2 +Lattice = "3.31279993057 0.0 0.0 0.000699999975041 3.3220000267 0.0 -0.00209999992512 0.00410000002012 3.30430006981" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689241 stress="5705.93 -155.59 468.56 -155.59 2710.42 -920.27 468.56 -920.27 8460.77" +Ta 0.0 0.0 0.0 -1e-06 0.000446 -0.000442 +Ta 1.6557 1.6631 1.6521 1e-06 -0.000446 0.000442 +2 +Lattice = "3.31509995461 0.0 0.0 -0.0077999997884 3.31060004234 0.0 0.0136000001803 -0.0110999997705 3.31699991226" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.68952 stress="3143.69 1764.0800000000002 -3057.7000000000003 1764.0800000000002 4618.12 2493.02 -3057.7000000000003 2493.02 2546.3" +Ta 0.0 0.0 0.0 0.000443 0.000443 -1e-06 +Ta 1.6605 1.6498 1.6585 -0.000443 -0.000443 1e-06 +2 +Lattice = "3.30970001221 0.0 0.0 -0.0141000002623 3.30669999123 0.0 -0.00380000006407 -0.0109999999404 3.30399990082" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.686278 stress="15948.689999999999 3229.23 856.13 3229.23 16943.010000000002 2508.75 856.13 2508.75 17860.57" +Ta 0.0 0.0 0.0 -4e-06 -0.000453 -3e-06 +Ta 1.6459 1.6478 1.652 4e-06 0.000453 3e-06 +2 +Lattice = "3.31279993057 0.0 0.0 0.00680000009015 3.33550000191 0.0 -0.00949999969453 -0.00449999980628 3.33489990234" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690097 stress="-15440.51 -1462.0800000000002 2035.5400000000002 -1462.0800000000002 -22399.3 982.8 2035.5400000000002 982.8 -22219.22" +Ta 0.0 0.0 0.0 0.000418 -1e-06 0.000423 +Ta 1.6551 1.6655 1.6675 -0.000418 1e-06 -0.000423 +2 +Lattice = "3.33060002327 0.0 0.0 -0.00740000000224 3.32299995422 0.0 0.00570000009611 0.00219999998808 3.32229995728" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690811 stress="-17578.07 1606.3700000000001 -1235.27 1606.3700000000001 -15218.79 -469.97 -1235.27 -469.97 -14998.810000000001" +Ta 0.0 0.0 0.0 0.000426 2e-06 -0.000424 +Ta 1.6645 1.6626 1.6611 -0.000426 -2e-06 0.000424 +2 +Lattice = "3.30460000038 0.0 0.0 0.00960000045598 3.32699990273 0.0 -0.0129000004381 0.00889999978244 3.33470010757" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690266 stress="-4850.61 -2063.29 2800.95 -2063.29 -11849.39 -1958.39 2800.95 -1958.39 -14262.01" +Ta 0.0 0.0 0.0 0.000423 -0.00043 -0.000426 +Ta 1.6507 1.6679 1.6673 -0.000423 0.00043 0.000426 +2 +Lattice = "3.3166000843 0.0 0.0 0.00989999994636 3.32179999352 0.0 0.00899999961257 0.00829999987036 3.3178999424" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690597 stress="-3926.0299999999997 -2198.55 -1990.1100000000001 -2198.55 -5568.17 -1841.1599999999999 -1990.1100000000001 -1841.1599999999999 -4321.4800000000005" +Ta 0.0 0.0 0.0 0.000428 0.00043 0.000429 +Ta 1.6678 1.6651 1.659 -0.000428 -0.00043 -0.000429 +2 +Lattice = "3.32559990883 0.0 0.0 0.0149999996647 3.32439994812 0.0 -0.0102000003681 -0.00879999995232 3.31529998779" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690673 stress="-11060.560000000001 -3311.08 2234.96 -3311.08 -10663.09 1930.59 2234.96 1930.59 -7793.1" +Ta 0.0 0.0 0.0 3e-06 2e-06 0.000427 +Ta 1.6652 1.6578 1.6577 -3e-06 -2e-06 -0.000427 +2 +Lattice = "3.32710003853 0.0 0.0 0.0142999999225 3.31200003624 0.0 0.00529999984428 -0.00150000001304 3.3180000782" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690551 stress="-7626.490000000001 -3148.54 -1170.5 -3148.54 -2813.94 319.88 -1170.5 319.88 -4708.87" +Ta 0.0 0.0 0.0 -0.000431 -0.000428 1e-06 +Ta 1.6733 1.6552 1.659 0.000431 0.000428 -1e-06 +2 +Lattice = "3.3218998909 0.0 0.0 0.00829999987036 3.31850004196 0.0 0.0119000002742 0.00230000005104 3.31710004807" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690693 stress="-6193.7300000000005 -1837.26 -2623.8700000000003 -1837.26 -5083.38 -517.81 -2623.8700000000003 -517.81 -4646.26" +Ta 0.0 0.0 0.0 -0.00043 3e-06 -0.000429 +Ta 1.671 1.6604 1.6585 0.00043 -3e-06 0.000429 +2 +Lattice = "3.32940006256 0.0 0.0 -0.00769999995828 3.30390000343 0.0 -0.0120000001043 0.0147000001743 3.32710003853" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.69021 stress="-9842.3 1710.3600000000001 2678.2400000000002 1710.3600000000001 -1794.44 -3224.8100000000004 2678.2400000000002 -3224.8100000000004 -9105.6" +Ta 0.0 0.0 0.0 -0.000437 2e-06 -0.000436 +Ta 1.6548 1.6593 1.6635 0.000437 -2e-06 0.000436 +2 +Lattice = "3.30669999123 0.0 0.0 -0.0122999995947 3.31839990616 0.0 0.00789999961853 -0.0104999998584 3.31259989738" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.688943 stress="8333.89 2780.83 -1785.3000000000002 2780.83 4535.25 2375.9700000000003 -1785.3000000000002 2375.9700000000003 6440.179999999999" +Ta 0.0 0.0 0.0 0.000439 -0.000441 -5e-06 +Ta 1.6512 1.6539 1.6563 -0.000439 0.000441 5e-06 +2 +Lattice = "3.33619999886 0.0 0.0 0.00150000001304 3.30669999123 0.0 0.0163000002503 0.0137999998406 3.33039999008" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690136 stress="-18003.329999999998 -360.51 -3576.72 -360.51 -8835.43 -2976.33 -3576.72 -2976.33 -16192.060000000001" +Ta 0.0 0.0 0.0 0.0 0.00042 -4e-06 +Ta 1.677 1.6603 1.6652 0.0 -0.00042 4e-06 +2 +Lattice = "3.30349993706 0.0 0.0 0.0162000004202 3.30900001526 0.0 -0.00700000021607 0.00680000009015 3.31489992142" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.687444 stress="14486.06 -3661.95 1582.35 -3661.95 12701.029999999999 -1541.32 1582.35 -1541.32 10767.84" +Ta 0.0 0.0 0.0 -0.00045 7e-06 -0.000453 +Ta 1.6563 1.6579 1.6574 0.00045 -7e-06 0.000453 +2 +Lattice = "3.31089997292 0.0 0.0 -0.00889999978244 3.31270003319 0.0 0.00829999987036 0.00520000001416 3.32080006599" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689801 stress="3684.26 1974.24 -1852.3799999999999 1974.24 3114.35 -1156.8400000000001 -1852.3799999999999 -1156.8400000000001 502.12999999999994" +Ta 0.0 0.0 0.0 0.000437 -0.000437 -1e-06 +Ta 1.6552 1.6589 1.6604 -0.000437 0.000437 1e-06 +2 +Lattice = "3.31879997253 0.0 0.0 -0.0110999997705 3.31049990654 0.0 -0.0164999999106 -0.00410000002012 3.32960009575" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690408 stress="-5855.900000000001 2413.85 3653.84 2413.85 -3177.2999999999997 882.09 3653.84 882.09 -9230.779999999999" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.6456 1.6532 1.6648 0.0 0.0 0.0 +2 +Lattice = "3.33170008659 0.0 0.0 0.00689999992028 3.3178999424 0.0 -0.0148000000045 0.0147000001743 3.31089997292" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690362 stress="-10662.19 -1488.5900000000001 3240.34 -1488.5900000000001 -6300.3099999999995 -3192.45 3240.34 -3192.45 -4075.9999999999995" +Ta 0.0 0.0 0.0 4e-06 -4e-06 0.000429 +Ta 1.6619 1.6663 1.6555 -4e-06 4e-06 -0.000429 +2 +Lattice = "3.3343000412 0.0 0.0 0.00540000014007 3.32949995995 0.0 -0.0140000004321 -0.00460000010207 3.33520007133" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.688881 stress="-29339.85 -1153.21 2967.17 -1153.21 -27876.05 983.26 2967.17 983.26 -29592.94" +Ta 0.0 0.0 0.0 -0.000413 0.000412 -2e-06 +Ta 1.6628 1.6625 1.6676 0.000413 -0.000412 2e-06 +2 +Lattice = "3.31089997292 0.0 0.0 0.0131999999285 3.32349991798 0.0 -0.00669999979436 -0.00520000001416 3.33629989624" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690515 stress="-8945.37 -2854.2900000000004 1466.4299999999998 -2854.2900000000004 -12870.23 1153.96 1466.4299999999998 1153.96 -16851.88" +Ta 0.0 0.0 0.0 0.000847 -0.000435 -0.000427 +Ta 1.6588 1.6591 1.6681 -0.000847 0.000435 0.000427 +2 +Lattice = "3.33450007439 0.0 0.0 0.0136000001803 3.32259988785 0.0 0.00700000021607 0.00400000018999 3.32060003281" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690551 stress="-19623.16 -2954.7799999999997 -1523.28 -2954.7799999999997 -15920.310000000001 -868.95 -1523.28 -868.95 -15295.98" +Ta 0.0 0.0 0.0 -0.000424 4e-06 2e-06 +Ta 1.6775 1.6633 1.6603 0.000424 -4e-06 -2e-06 +2 +Lattice = "3.30719995499 0.0 0.0 0.00600000005215 3.30640006065 0.0 -0.00870000012219 -0.00480000022799 3.33119988441" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689487 stress="4760.94 -1330.3100000000002 1958.3200000000002 -1330.3100000000002 5030.59 1081.68 1958.3200000000002 1081.68 -2959.67" +Ta 0.0 0.0 0.0 0.000438 -2e-06 2e-06 +Ta 1.6523 1.6508 1.6656 -0.000438 2e-06 -2e-06 +2 +Lattice = "3.32150006294 0.0 0.0 -0.000699999975041 3.30979990959 0.0 0.0129000004381 -0.0104000000283 3.31489992142" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.68986 stress="-609.8 175.89 -2883.99 175.89 3169.7000000000003 2312.35 -2883.99 2312.35 1528.81" +Ta 0.0 0.0 0.0 0.000444 -3e-06 -0.000442 +Ta 1.6669 1.6497 1.6574 -0.000444 3e-06 0.000442 +2 +Lattice = "3.30480003357 0.0 0.0 -0.00669999979436 3.31340003014 0.0 -0.00689999992028 0.0142999999225 3.3234000206" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689288 stress="7065.76 1506.72 1557.04 1506.72 4265.53 -3227.4500000000003 1557.04 -3227.4500000000003 1046.89" +Ta 0.0 0.0 0.0 -0.000881 -0.000446 0.0 +Ta 1.6455 1.6638 1.6617 0.000881 0.000446 0.0 +2 +Lattice = "3.32389998436 0.0 0.0 -0.00850000046194 3.32249999046 0.0 -0.00889999978244 -0.00329999998212 3.33500003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690457 stress="-18069.48 1814.44 1923.43 1814.44 -17623.8 707.29 1923.43 707.29 -21466.73" +Ta 0.0 0.0 0.0 -0.00042 -2e-06 -2e-06 +Ta 1.6532 1.6596 1.6675 0.00042 2e-06 2e-06 +2 +Lattice = "3.33189988136 0.0 0.0 0.0142999999225 3.31990003586 0.0 -0.00710000004619 -0.0148999998346 3.33529996872" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689792 stress="-23150.59 -3063.23 1550.5800000000002 -3063.23 -19490.46 3197.18 1550.5800000000002 3197.18 -24167.48" +Ta 0.0 0.0 0.0 0.000417 -7e-06 -0.000417 +Ta 1.6696 1.6525 1.6676 -0.000417 7e-06 0.000417 +2 +Lattice = "3.33060002327 0.0 0.0 -0.0143999997526 3.32369995117 0.0 -0.00139999995008 -0.0136000001803 3.33200001717" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690006 stress="-22406.35 3075.85 283.12 3075.85 -20306.539999999997 2912.28 283.12 2912.28 -22816.16" +Ta 0.0 0.0 0.0 -4e-06 -0.000417 -3e-06 +Ta 1.6574 1.655 1.666 4e-06 0.000417 3e-06 +2 +Lattice = "3.3259999752 0.0 0.0 -0.00749999983236 3.33489990234 0.0 -0.0097000002861 0.00089999998454 3.31710004807" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690571 stress="-17118.0 1635.28 2081.98 1635.28 -19844.84 -203.19 2081.98 -203.19 -14345.72" +Ta 0.0 0.0 0.0 2e-06 -1e-06 0.00042 +Ta 1.6544 1.6679 1.6586 -2e-06 1e-06 -0.00042 +2 +Lattice = "3.31739997864 0.0 0.0 -0.0156999994069 3.31970000267 0.0 0.00499999988824 0.0146000003442 3.31509995461" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690213 stress="-2208.17 3473.14 -1080.09 3473.14 -2950.43 -3225.5600000000004 -1080.09 -3225.5600000000004 -1446.74" +Ta 0.0 0.0 0.0 -0.000442 -0.000445 0.000441 +Ta 1.6533 1.6671 1.6576 0.000442 0.000445 -0.000441 +2 +Lattice = "3.31410002708 0.0 0.0 0.0126000000164 3.32780003548 0.0 0.00749999983236 -0.00620000017807 3.33170008659" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690617 stress="-11356.33 -2713.87 -1615.29 -2713.87 -15605.029999999999 1345.96 -1615.29 1345.96 -16800.52" +Ta 0.0 0.0 0.0 -2e-06 2e-06 0.000426 +Ta 1.6671 1.6608 1.6659 2e-06 -2e-06 -0.000426 +2 +Lattice = "3.33410000801 0.0 0.0 -0.00949999969453 3.30469989777 0.0 -0.0119000002742 -0.00879999995232 3.31220006943" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689761 stress="-6865.599999999999 2087.9500000000003 2646.9 2087.9500000000003 2545.62 1920.39 2646.9 1920.39 148.10000000000002" +Ta 0.0 0.0 0.0 0.000443 0.000436 6e-06 +Ta 1.6564 1.648 1.6561 -0.000443 -0.000436 -6e-06 +2 +Lattice = "3.32760000229 0.0 0.0 -0.00190000003204 3.31820011139 0.0 0.000500000023749 -0.0155999995768 3.33640003204" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.69027 stress="-19541.46 406.28 -110.74000000000001 406.28 -16673.960000000003 3361.5 -110.74000000000001 3361.5 -22262.14" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.6631 1.6513 1.6682 0.0 0.0 0.0 +2 +Lattice = "3.30819988251 0.0 0.0 0.00719999987632 3.32559990883 0.0 0.00159999995958 0.00719999987632 3.32410001755" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690599 stress="-1982.3500000000001 -1585.1200000000001 -358.04999999999995 -1585.1200000000001 -7502.34 -1599.04 -358.04999999999995 -1599.04 -7019.8099999999995" +Ta 0.0 0.0 0.0 0.0 -2e-06 0.000434 +Ta 1.6585 1.6664 1.6621 0.0 2e-06 -0.000434 +2 +Lattice = "3.31769990921 0.0 0.0 -0.00579999992624 3.31699991226 0.0 0.00889999978244 0.0162000004202 3.3327999115" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.69061 stress="-9577.12 1230.78 -1945.3100000000002 1230.78 -9380.55 -3550.1800000000003 -1945.3100000000002 -3550.1800000000003 -14308.38" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.6604 1.6666 1.6664 0.0 0.0 0.0 +2 +Lattice = "3.31329989433 0.0 0.0 -0.000399999989895 3.31690001488 0.0 0.0135000003502 0.0 3.33590006828" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690603 stress="-7520.4800000000005 87.73 -2963.21 87.73 -8622.48 0.69 -2963.21 0.69 -14592.02" +Ta 0.0 0.0 0.0 -4e-06 -0.000427 0.000432 +Ta 1.6632 1.6584 1.668 4e-06 0.000427 -0.000432 +2 +Lattice = "3.31369996071 0.0 0.0 -0.00350000010803 3.30380010605 0.0 -0.00719999987632 -0.0097000002861 3.31170010567" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.687908 stress="10264.31 780.75 1638.34 780.75 13511.390000000001 2195.65 1638.34 2195.65 10923.89" +Ta 0.0 0.0 0.0 -3e-06 -0.00045 -0.000451 +Ta 1.6515 1.647 1.6558 3e-06 0.00045 0.000451 +2 +Lattice = "3.31100010872 0.0 0.0 0.00730000017211 3.32240009308 0.0 0.00260000000708 0.00310000008903 3.33559989929" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690688 stress="-8159.87 -1578.8500000000001 -569.48 -1578.8500000000001 -11732.89 -685.38 -569.48 -685.38 -15843.04" +Ta 0.0 0.0 0.0 -0.000422 -0.000425 1e-06 +Ta 1.6604 1.6627 1.6678 0.000422 0.000425 -1e-06 +2 +Lattice = "3.32010006905 0.0 0.0 0.0153999999166 3.31189990044 0.0 0.00710000004619 -0.0116999996826 3.3164999485" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689988 stress="-1287.79 -3409.17 -1564.98 -3409.17 1359.31 2585.44 -1564.98 2585.44 -98.57000000000001" +Ta 0.0 0.0 0.0 -2e-06 3e-06 0.000438 +Ta 1.6713 1.6501 1.6583 2e-06 -3e-06 -0.000438 +2 +Lattice = "3.31150007248 0.0 0.0 -0.0038999998942 3.30809998512 0.0 0.0154999997467 -0.0133999995887 3.32680010796" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689613 stress="2542.36 898.2 -3478.91 898.2 3649.25 3002.21 -3478.91 3002.21 -2359.93" +Ta 0.0 0.0 0.0 0.000437 -0.000437 -8e-06 +Ta 1.6616 1.6473 1.6634 -0.000437 0.000437 8e-06 +2 +Lattice = "3.31990003586 0.0 0.0 0.0131000000983 3.32010006905 0.0 -0.00529999984428 0.00910000037402 3.31820011139" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690678 stress="-5888.5 -2879.58 1153.4 -2879.58 -5946.5 -1998.02 1153.4 -1998.02 -5325.56" +Ta 0.0 0.0 0.0 -0.000433 3e-06 -2e-06 +Ta 1.6638 1.6646 1.6591 0.000433 -3e-06 2e-06 +2 +Lattice = "3.3194000721 0.0 0.0 -0.00700000021607 3.3289000988 0.0 0.0137000000104 -0.0137999998406 3.3069999218" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.69017 stress="-4282.71 1592.26 -3010.8799999999997 1592.26 -7298.28 3048.75 -3010.8799999999997 3048.75 -325.23" +Ta 0.0 0.0 0.0 0.000436 0.000439 0.0 +Ta 1.6631 1.6576 1.6535 -0.000436 -0.000439 0.0 +2 +Lattice = "3.30819988251 0.0 0.0 -0.0120000001043 3.30579996109 0.0 -0.00590000022203 -0.0113000003621 3.31590008736" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.687892 stress="11705.5 2699.26 1327.81 2699.26 12498.38 2559.92 1327.81 2559.92 9195.539999999999" +Ta 0.0 0.0 0.0 -0.000453 -0.000454 -0.000455 +Ta 1.6451 1.6472 1.6579 0.000453 0.000454 0.000455 +2 +Lattice = "3.32249999046 0.0 0.0 -0.0121999997646 3.30819988251 0.0 0.0137999998406 -0.00240000011399 3.320499897" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690132 stress="-3343.01 2704.11 -3081.23 2704.11 1270.1899999999998 549.12 -3081.23 549.12 -2672.32" +Ta 0.0 0.0 0.0 -0.000434 -4e-06 -0.000434 +Ta 1.662 1.6529 1.6602 0.000434 4e-06 0.000434 +2 +Lattice = "3.31189990044 0.0 0.0 -0.00439999997616 3.32540011406 0.0 -0.0063000000082 0.00219999998808 3.32909989357" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690843 stress="-7235.45 958.77 1373.71 958.77 -11469.4 -487.27 1373.71 -487.27 -12631.220000000001" +Ta 0.0 0.0 0.0 -1e-06 0.0 -0.00043 +Ta 1.6506 1.6638 1.6645 1e-06 0.0 0.00043 +2 +Lattice = "3.33640003204 0.0 0.0 0.0120000001043 3.31399989128 0.0 0.00639999983832 -0.00499999988824 3.31839990616" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690598 stress="-16030.460000000001 -2615.3 -1399.57 -2615.3 -9011.369999999999 1069.71 -1399.57 1069.71 -10383.800000000001" +Ta 0.0 0.0 0.0 -0.000861 6e-06 3e-06 +Ta 1.6773 1.6545 1.6592 0.000861 -6e-06 -3e-06 +2 +Lattice = "3.31769990921 0.0 0.0 -0.00949999969453 3.32529997826 0.0 0.0105999996886 0.00949999969453 3.33109998703" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690656 stress="-12733.07 2033.6599999999999 -2291.25 2033.6599999999999 -15085.44 -2061.68 -2291.25 -2061.68 -16870.989999999998" +Ta 0.0 0.0 0.0 -3e-06 -2e-06 0.000426 +Ta 1.6594 1.6674 1.6656 3e-06 2e-06 -0.000426 +2 +Lattice = "3.32620000839 0.0 0.0 0.00270000007004 3.30970001221 0.0 0.01600000076 0.0155999995768 3.33610010147" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690254 stress="-14323.800000000001 -620.5899999999999 -3515.58 -620.5899999999999 -9188.58 -3392.86 -3515.58 -3392.86 -17392.0" +Ta 0.0 0.0 0.0 -0.000423 0.000427 -0.000428 +Ta 1.6724 1.6627 1.668 0.000423 -0.000427 0.000428 +2 +Lattice = "3.31920003891 0.0 0.0 -0.00730000017211 3.32259988785 0.0 -0.0133999995887 -0.0131999999285 3.32820010185" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690694 stress="-11276.81 1552.73 2911.96 1552.73 -12332.94 2876.65 2911.96 2876.65 -14073.7" +Ta 0.0 0.0 0.0 0.000425 2e-06 4e-06 +Ta 1.6493 1.6547 1.6641 -0.000425 -2e-06 -4e-06 +2 +Lattice = "3.33060002327 0.0 0.0 0.00170000002254 3.30550003052 0.0 -0.0154999997467 -0.0108000002801 3.31830000877" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690097 stress="-7398.2 -404.2 3456.2400000000002 -404.2 607.84 2374.71 3456.2400000000002 2374.71 -3477.02" +Ta 0.0 0.0 0.0 4e-06 0.000435 0.000438 +Ta 1.6584 1.6474 1.6592 -4e-06 -0.000435 -0.000438 +2 +Lattice = "3.30870008469 0.0 0.0 0.00079999997979 3.3125 0.0 0.0129000004381 -0.0046999999322 3.3111000061" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.688402 stress="10344.23 -170.68 -2918.0299999999997 -170.68 9114.35 1063.15 -2918.0299999999997 1063.15 9572.1" +Ta 0.0 0.0 0.0 4e-06 -1e-06 -0.000447 +Ta 1.6612 1.6539 1.6555 -4e-06 1e-06 0.000447 +2 +Lattice = "3.32299995422 0.0 0.0 -0.00439999997616 3.3085000515 0.0 0.00289999996312 0.0137999998406 3.304500103" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.688669 stress="3910.4 988.25 -648.7 988.25 8614.3 -3085.0 -648.7 -3085.0 9933.490000000002" +Ta 0.0 0.0 0.0 0.000445 -0.000447 0.000446 +Ta 1.6608 1.6611 1.6523 -0.000445 0.000447 -0.000446 +2 +Lattice = "3.31419992447 0.0 0.0 -0.0108000002801 3.31520009041 0.0 0.0114000001922 -0.00249999994412 3.33610010147" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690538 stress="-7515.75 2343.1000000000004 -2512.81 2343.1000000000004 -7800.79 565.26 -2512.81 565.26 -14362.84" +Ta 0.0 0.0 0.0 0.0 0.000428 0.000433 +Ta 1.6574 1.6564 1.6681 0.0 -0.000428 -0.000433 +2 +Lattice = "3.30870008469 0.0 0.0 -0.0105999996886 3.31060004234 0.0 0.00710000004619 -0.0164000000805 3.32909989357" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689722 stress="2494.02 2358.67 -1602.8700000000001 2358.67 1865.98 3675.35 -1602.8700000000001 3675.35 -4043.8799999999997" +Ta 0.0 0.0 0.0 -2e-06 5e-06 0.000442 +Ta 1.6526 1.6471 1.6646 2e-06 -5e-06 -0.000442 +2 +Lattice = "3.33130002022 0.0 0.0 0.0153999999166 3.3259999752 0.0 0.00669999979436 0.00999999977648 3.31539988518" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690581 stress="-16296.82 -3376.3999999999996 -1468.21 -3376.3999999999996 -14640.43 -2166.98 -1468.21 -2166.98 -11322.16" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.6767 1.668 1.6577 0.0 0.0 0.0 +2 +Lattice = "3.30430006981 0.0 0.0 0.0136000001803 3.32470011711 0.0 0.00740000000224 0.00650000013411 3.3083999157" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.688755 stress="9299.8 -3078.46 -1660.51 -3078.46 2679.5 -1477.71 -1660.51 -1477.71 7991.16" +Ta 0.0 0.0 0.0 0.000442 -4e-06 -2e-06 +Ta 1.6627 1.6656 1.6542 -0.000442 4e-06 2e-06 +2 +Lattice = "3.3273999691 0.0 0.0 0.0126999998465 3.33459997177 0.0 -0.00460000010207 0.0146000003442 3.33229994774" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689312 stress="-25105.09 -2688.4 959.13 -2688.4 -27291.81 -3105.23 959.13 -3105.23 -26574.49" +Ta 0.0 0.0 0.0 0.000414 -7e-06 0.000415 +Ta 1.6678 1.6746 1.6662 -0.000414 7e-06 -0.000415 +2 +Lattice = "3.30520009995 0.0 0.0 -0.0137000000104 3.31570005417 0.0 -0.0162000004202 -0.0124000003561 3.30730009079" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.687388 stress="13516.93 3087.18 3651.46 3087.18 10100.35 2802.34 3651.46 2802.34 12865.9" +Ta 0.0 0.0 0.0 -0.000456 -0.000459 -0.000457 +Ta 1.6376 1.6516 1.6536 0.000456 0.000459 0.000457 +2 +Lattice = "3.31599998474 0.0 0.0 0.000699999975041 3.31730008125 0.0 0.000600000028498 -0.0154999997467 3.32500004768" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690664 stress="-4661.23 -151.07000000000002 -130.38 -151.07000000000002 -5113.86 3419.6 -130.38 3419.6 -7531.63" +Ta 0.0 0.0 0.0 -0.000432 0.0 0.0 +Ta 1.6586 1.6509 1.6625 0.000432 0.0 0.0 +2 +Lattice = "3.3273999691 0.0 0.0 -0.0148999998346 3.32949995995 0.0 0.0137000000104 0.0154999997467 3.33450007439" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.68941 stress="-23795.190000000002 3133.63 -2900.7000000000003 3133.63 -24418.25 -3288.91 -2900.7000000000003 -3288.91 -25917.71" +Ta 0.0 0.0 0.0 3e-06 4e-06 -0.000416 +Ta 1.6631 1.6725 1.6672 -3e-06 -4e-06 0.000416 +2 +Lattice = "3.32439994812 0.0 0.0 0.00760000012815 3.31010007858 0.0 0.00590000022203 0.0038999998942 3.31290006638" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690035 stress="-2106.9399999999996 -1695.3400000000001 -1317.1299999999999 -1695.3400000000001 2496.5299999999997 -868.58 -1317.1299999999999 -868.58 1598.99" +Ta 0.0 0.0 0.0 -0.000442 1e-06 0.000439 +Ta 1.6689 1.657 1.6565 0.000442 -1e-06 -0.000439 +2 +Lattice = "3.32430005074 0.0 0.0 0.00910000037402 3.3289000988 0.0 -0.00740000000224 0.01600000076 3.33310008049" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690015 stress="-20472.059999999998 -1926.96 1574.3700000000001 -1926.96 -21891.98 -3433.3999999999996 1574.3700000000001 -3433.3999999999996 -23153.19" +Ta 0.0 0.0 0.0 4e-06 -0.000422 0.000423 +Ta 1.663 1.6724 1.6666 -4e-06 0.000422 -0.000423 +2 +Lattice = "3.32279992104 0.0 0.0 0.0130000002682 3.32789993286 0.0 -0.00899999961257 -0.001200000057 3.32439994812" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690752 stress="-14810.21 -2823.7999999999997 1946.96 -2823.7999999999997 -16361.699999999999 271.0 1946.96 271.0 -15278.02" +Ta 0.0 0.0 0.0 -3e-06 0.000424 0.0 +Ta 1.6634 1.6634 1.6622 3e-06 -0.000424 0.0 +2 +Lattice = "3.30900001526 0.0 0.0 -0.0046999999322 3.33019995689 0.0 -0.00850000046194 0.00170000002254 3.30809998512" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689825 stress="2936.71 1055.66 1878.49 1055.66 -3856.89 -383.2 1878.49 -383.2 3236.96" +Ta 0.0 0.0 0.0 -1e-06 0.000443 -0.000437 +Ta 1.6479 1.666 1.654 1e-06 -0.000443 0.000437 +2 +Lattice = "3.32730007172 0.0 0.0 -0.0148000000045 3.31719994545 0.0 0.00960000045598 -0.0111999996006 3.32929992676" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690562 stress="-15582.82 3214.2400000000002 -2112.58 3214.2400000000002 -12428.97 2441.49 -2112.58 2441.49 -16168.56" +Ta 0.0 0.0 0.0 -0.000428 -1e-06 0.000428 +Ta 1.661 1.653 1.6647 0.000428 1e-06 -0.000428 +2 +Lattice = "3.31780004501 0.0 0.0 -0.0141000002623 3.31990003586 0.0 -0.000199999994948 -0.00460000010207 3.33559989929" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690622 stress="-12368.81 3035.58 36.589999999999996 3035.58 -13009.29 1003.22 36.589999999999996 1003.22 -17869.59" +Ta 0.0 0.0 0.0 0.000419 -0.00042 -1e-06 +Ta 1.6518 1.6576 1.6678 -0.000419 0.00042 1e-06 +2 +Lattice = "3.31019997597 0.0 0.0 0.0127999996766 3.32069993019 0.0 0.0063000000082 -0.00170000002254 3.30509996414" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.688764 stress="8054.89 -2896.21 -1408.45 -2896.21 4644.51 375.59999999999997 -1408.45 375.59999999999997 9733.77" +Ta 0.0 0.0 0.0 -0.000446 4e-06 0.000445 +Ta 1.6646 1.6595 1.6526 0.000446 -4e-06 -0.000445 +2 +Lattice = "3.31080007553 0.0 0.0 -0.00319999991916 3.31229996681 0.0 -0.00240000011399 0.00359999993816 3.32299995422" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690011 stress="2899.77 713.48 536.4100000000001 713.48 2419.23 -804.18 536.4100000000001 -804.18 -1023.68" +Ta 0.0 0.0 0.0 1e-06 0.000438 -1e-06 +Ta 1.6526 1.658 1.6615 -1e-06 -0.000438 1e-06 +2 +Lattice = "3.30539989471 0.0 0.0 0.00359999993816 3.31970000267 0.0 -0.0097000002861 -0.0120000001043 3.30390000343" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.687696 stress="13108.67 -840.56 2187.26 -840.56 8404.43 2733.05 2187.26 2733.05 13609.949999999999" +Ta 0.0 0.0 0.0 0.000444 0.000447 -0.000441 +Ta 1.6497 1.6539 1.6519 -0.000444 -0.000447 0.000441 +2 +Lattice = "3.31929993629 0.0 0.0 0.00240000011399 3.32459998131 0.0 0.00540000014007 0.00109999999404 3.32540011406" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.691019 stress="-10964.99 -525.81 -1177.09 -525.81 -12623.84 -241.71 -1177.09 -241.71 -12870.95" +Ta 0.0 0.0 0.0 0.000426 -0.000428 -1e-06 +Ta 1.6636 1.6628 1.6627 -0.000426 0.000428 1e-06 +2 +Lattice = "3.31080007553 0.0 0.0 0.00350000010803 3.31130003929 0.0 -0.0135000003502 0.00310000008903 3.31500005722" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689025 stress="7287.55 -782.66 3041.1000000000004 -782.66 7135.919999999999 -692.63 3041.1000000000004 -692.63 5936.740000000001" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.6504 1.6572 1.6575 0.0 0.0 0.0 +2 +Lattice = "3.30800008774 0.0 0.0 -0.00200000009499 3.33439993858 0.0 0.0111999996006 0.0130000002682 3.31060004234" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689952 stress="508.71 421.52 -2451.6800000000003 421.52 -7909.360000000001 -2885.62 -2451.6800000000003 -2885.62 -315.85999999999996" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.6586 1.6737 1.6553 0.0 0.0 0.0 +2 +Lattice = "3.3289000988 0.0 0.0 0.00820000004023 3.32640004158 0.0 -0.0105999996886 -0.0156999994069 3.31559991837" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.69061 stress="-14693.78 -1821.97 2311.93 -1821.97 -13931.74 3407.2 2311.93 3407.2 -10544.75" +Ta 0.0 0.0 0.0 0.000429 -0.000429 -1e-06 +Ta 1.6633 1.6553 1.6578 -0.000429 0.000429 1e-06 +2 +Lattice = "3.32290005684 0.0 0.0 0.0154999997467 3.31669998169 0.0 0.00870000012219 0.0142000000924 3.32319998741" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690595 stress="-9023.58 -3411.2599999999998 -1934.4099999999999 -3411.2599999999998 -7071.44 -3121.81 -1934.4099999999999 -3121.81 -9087.630000000001" +Ta 0.0 0.0 0.0 0.000435 -0.000433 2e-06 +Ta 1.6736 1.6654 1.6616 -0.000435 0.000433 -2e-06 +2 +Lattice = "3.3303000927 0.0 0.0 0.0146000003442 3.31329989433 0.0 0.0110999997705 0.00760000012815 3.33520007133" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690231 stress="-18800.98 -3140.71 -2429.11 -3140.71 -13532.06 -1652.97 -2429.11 -1652.97 -20281.1" +Ta 0.0 0.0 0.0 4e-06 -0.000419 2e-06 +Ta 1.678 1.6604 1.6676 -4e-06 0.000419 -2e-06 +2 +Lattice = "3.33489990234 0.0 0.0 0.0162000004202 3.32060003281 0.0 -0.00230000005104 0.01070000045 3.32109999657" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690469 stress="-19225.86 -3508.14 482.12 -3508.14 -14795.67 -2294.36 482.12 -2294.36 -14933.130000000001" +Ta 0.0 0.0 0.0 -5e-06 0.000425 -0.000425 +Ta 1.6744 1.6657 1.6605 5e-06 -0.000425 0.000425 +2 +Lattice = "3.31529998779 0.0 0.0 -0.00449999980628 3.31590008736 0.0 -0.00150000001304 -0.0077999997884 3.32039999962" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690482 stress="-1223.53 989.7099999999999 330.42 989.7099999999999 -1425.84 1726.31 330.42 1726.31 -2854.88" +Ta 0.0 0.0 0.0 0.000437 0.000437 3e-06 +Ta 1.6547 1.6541 1.6602 -0.000437 -0.000437 -3e-06 +2 +Lattice = "3.33599996567 0.0 0.0 0.0127999996766 3.31879997253 0.0 0.0046999999322 0.00219999998808 3.33610010147" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689613 stress="-26129.239999999998 -2719.4500000000003 -1009.22 -2719.4500000000003 -20885.58 -474.41 -1009.22 -474.41 -26139.41" +Ta 0.0 0.0 0.0 0.000416 -4e-06 0.000416 +Ta 1.6768 1.6605 1.6681 -0.000416 4e-06 -0.000416 +2 +Lattice = "3.30529999733 0.0 0.0 -0.0137000000104 3.31130003929 0.0 -0.0113000003621 -0.00879999995232 3.31049990654" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.687426 stress="14036.429999999998 3100.8300000000004 2557.21 3100.8300000000004 12085.73 1993.28 2557.21 1993.28 12358.140000000001" +Ta 0.0 0.0 0.0 0.000442 -0.00045 -0.00045 +Ta 1.6402 1.6512 1.6552 -0.000442 0.00045 0.00045 +2 +Lattice = "3.30550003052 0.0 0.0 -0.00620000017807 3.30990004539 0.0 0.0144999995828 -0.00209999992512 3.33089995384" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689562 stress="4550.63 1373.71 -3248.75 1373.71 3169.0 478.2 -3248.75 478.2 -3584.6" +Ta 0.0 0.0 0.0 4e-06 -1e-06 -0.000443 +Ta 1.6569 1.6539 1.6654 -4e-06 1e-06 0.000443 +2 +Lattice = "3.31920003891 0.0 0.0 0.0109999999404 3.31369996071 0.0 0.0155999995768 0.0151000004262 3.3273999691" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.6904 stress="-6656.91 -2444.4 -3459.77 -2444.4 -4902.92 -3339.7000000000003 -3459.77 -3339.7000000000003 -9220.65" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.6729 1.6644 1.6637 0.0 0.0 0.0 +2 +Lattice = "3.32829999924 0.0 0.0 0.00159999995958 3.32319998741 0.0 0.0164999999106 -0.0138999996707 3.32419991493" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690561 stress="-16787.82 -307.25 -3575.27 -307.25 -15202.7 3000.58 -3575.27 3000.58 -15509.24" +Ta 0.0 0.0 0.0 0.0 0.000423 3e-06 +Ta 1.6732 1.6547 1.6621 0.0 -0.000423 -3e-06 +2 +Lattice = "3.33509993553 0.0 0.0 0.0 3.32529997826 0.0 0.00889999978244 0.0130000002682 3.33629989624" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689107 stress="-28509.83 -17.12 -1893.91 -17.12 -25562.52 -2751.32 -1893.91 -2751.32 -28867.920000000002" +Ta 0.0 0.0 0.0 -2e-06 0.000408 0.00041 +Ta 1.672 1.6692 1.6682 2e-06 -0.000408 -0.00041 +2 +Lattice = "3.33400011063 0.0 0.0 -0.0162000004202 3.30960011482 0.0 -0.0131000000983 -0.0115000000224 3.31579995155" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690145 stress="-10872.289999999999 3539.75 2881.95 3539.75 -3120.2999999999997 2484.82 2881.95 2484.82 -5070.15" +Ta 0.0 0.0 0.0 -0.00044 -0.000434 -7e-06 +Ta 1.6523 1.649 1.6579 0.00044 0.000434 7e-06 +2 +Lattice = "3.32870006561 0.0 0.0 0.00930000003427 3.33170008659 0.0 -0.00400000018999 -0.0147000001743 3.31769990921" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.690482 stress="-17992.4 -2032.8300000000002 873.85 -2032.8300000000002 -18940.809999999998 3171.19 873.85 3171.19 -14593.14" +Ta 0.0 0.0 0.0 1e-06 4e-06 0.00042 +Ta 1.667 1.6585 1.6589 -1e-06 -4e-06 -0.00042 +2 +Lattice = "3.32459998131 0.0 0.0 -0.00170000002254 3.30690002441 0.0 0.0126000000164 0.00930000003427 3.31570005417" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.689864 stress="-2068.5699999999997 357.16999999999996 -2815.44 357.16999999999996 3633.85 -2059.7599999999998 -2815.44 -2059.7599999999998 802.9" +Ta 0.0 0.0 0.0 0.000444 3e-06 -0.000442 +Ta 1.6678 1.6581 1.6578 -0.000444 -3e-06 0.000442 diff --git a/examples/PACKAGES/pod/Ta/XYZ/Elastic_FCC.xyz b/examples/PACKAGES/pod/Ta/XYZ/Elastic_FCC.xyz new file mode 100644 index 0000000000..b0f70e3e0c --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/Elastic_FCC.xyz @@ -0,0 +1,600 @@ +4 +Lattice = "4.20979976654 0.0 0.0 0.00079999997979 4.19229984283 0.0 0.00139999995008 -0.00289999996312 4.20120000839" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.437936 stress="32125.329999999998 -282.22 -267.48 -282.22 28704.550000000003 301.20000000000005 -267.48 301.20000000000005 19406.25" +Ta 2.1056 -0.0014 2.1006 -0.00024 -0.000831 -4.2e-05 +Ta 2.1053 2.0961 0.0 0.00024 0.000831 4.2e-05 +Ta 0.0011 2.0947 2.1006 0.000211 -2.8e-05 -7.8e-05 +Ta 0.0 0.0 0.0 -0.000211 2.8e-05 7.8e-05 +4 +Lattice = "4.21169996262 0.0 0.0 -0.0197000000626 4.18310022354 0.0 0.0122999995947 -0.0172000005841 4.21549987793" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.438504 stress="28580.99 4661.44 -2537.73 4661.44 21736.13 3777.39 -2537.73 3777.39 15422.61" +Ta 2.112 -0.0086 2.1078 -8.5e-05 0.000609 -0.000432 +Ta 2.096 2.0916 0.0 8.5e-05 -0.000609 0.000432 +Ta -0.0037 2.083 2.1078 -7.9e-05 -0.000591 -0.00044 +Ta 0.0 0.0 0.0 7.9e-05 0.000591 0.00044 +4 +Lattice = "4.20760011673 0.0 0.0 0.00839999970049 4.19579982758 0.0 -0.0108000002801 0.00989999994636 4.19500017166" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.436378 stress="32906.770000000004 -1998.4299999999998 2448.51 -1998.4299999999998 31390.95 -2209.73 2448.51 -2209.73 20534.55" +Ta 2.1068 4.2007 2.0975 4.9e-05 0.00037 -0.000158 +Ta 2.108 2.0979 0.0 -4.9e-05 -0.00037 0.000158 +Ta -0.0012 2.1028 2.0975 4.9e-05 0.00037 -0.000158 +Ta 0.0 0.0 0.0 -4.9e-05 -0.00037 0.000158 +4 +Lattice = "4.21610021591 0.0 0.0 -0.0186000000685 4.20079994202 0.0 -0.0110999997705 -0.0149999996647 4.195499897" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.441551 stress="27882.2 4157.13 2708.72 4157.13 24066.9 3156.97 2708.72 3156.97 13737.52" +Ta 2.0839 4.1933 2.0977 6.8e-05 -4.7e-05 0.000367 +Ta 2.0987 2.1004 0.0 0.000703 0.000158 -0.000404 +Ta -0.0148 2.0929 2.0977 -0.000703 -0.000158 0.000404 +Ta 0.0 0.0 0.0 -6.8e-05 4.7e-05 -0.000367 +4 +Lattice = "4.18009996414 0.0 0.0 -0.00079999997979 4.19099998474 0.0 -0.00109999999404 -0.0186000000685 4.19029998779" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.416957 stress="47483.73 251.66 89.96 251.66 51115.740000000005 3817.67 89.96 3817.67 39271.009999999995" +Ta 2.0895 -0.0093 2.0952 -0.000287 7.5e-05 -0.000462 +Ta 2.0896 2.0955 0.0 0.000287 -7.5e-05 0.000462 +Ta 4.1791 2.0862 2.0952 0.00038 6.8e-05 -0.000503 +Ta 0.0 0.0 0.0 -0.00038 -6.8e-05 0.000503 +4 +Lattice = "4.21759986877 0.0 0.0 0.00989999994636 4.20160007477 0.0 -0.0164999999106 0.000600000028498 4.1861000061" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.440495 stress="30412.84 -2230.41 3936.28 -2230.41 27956.19 -314.22 3936.28 -314.22 16511.39" +Ta 2.1006 0.0003 2.093 -0.000512 -1.6e-05 0.000315 +Ta 2.1138 2.1008 0.0 -0.000516 -1.4e-05 -0.000327 +Ta 4.2143 2.1011 2.093 0.000516 1.4e-05 0.000327 +Ta 0.0 0.0 0.0 0.000512 1.6e-05 -0.000315 +4 +Lattice = "4.20800018311 0.0 0.0 -0.00609999988228 4.19269990921 0.0 0.0185000002384 0.00510000018403 4.20429992676" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.437972 stress="30692.39 1017.5300000000001 -3953.9 1017.5300000000001 27371.22 -937.5 -3953.9 -937.5 18526.5" +Ta 2.1071 4.1952 2.1022 0.000867 0.001178 -0.000599 +Ta 2.101 2.0964 0.0 -0.000867 -0.001178 0.000599 +Ta 4.2142 2.0989 2.1022 -3.6e-05 -0.000335 -0.000411 +Ta 0.0 0.0 0.0 3.6e-05 0.000335 0.000411 +4 +Lattice = "4.20389986038 0.0 0.0 0.0109999999404 4.21560001373 0.0 -0.0149999996647 -0.0195000004023 4.21710014343" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.44586 stress="13322.5 -1851.3999999999999 2698.2400000000002 -1851.3999999999999 15084.53 4168.71 2698.2400000000002 4168.71 3183.15" +Ta 2.0944 -0.0097 2.1085 0.000605 -0.001004 0.000354 +Ta 2.1075 2.1078 0.0 -0.000787 0.00036 -0.000493 +Ta 4.2019 2.098 2.1085 0.000145 0.000977 0.000593 +Ta 0.0 0.0 0.0 3.7e-05 -0.000333 -0.000454 +4 +Lattice = "4.20989990234 0.0 0.0 0.0194000005722 4.18979978561 0.0 0.0187999997288 -0.00710000004619 4.1998000145" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.435744 stress="32866.979999999996 -4705.08 -4510.19 -4705.08 27538.81 1684.04 -4510.19 1684.04 19619.25" +Ta 2.1338 4.1862 2.0999 -0.000654 0.000551 -0.000151 +Ta 2.1146 2.0949 0.0 0.000654 -0.000551 0.000151 +Ta 0.0191 2.0913 2.0999 0.000168 0.00073 -0.000338 +Ta 0.0 0.0 0.0 -0.000168 -0.00073 0.000338 +4 +Lattice = "4.20370006561 0.0 0.0 -0.00999999977648 4.18909978867 0.0 0.0038999998942 0.0115999998525 4.21619987488" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.438209 stress="27954.8 2323.13 -793.2399999999999 2323.13 23969.38 -2424.6400000000003 -793.2399999999999 -2424.6400000000003 15680.8" +Ta 2.1038 0.0058 2.1081 0.000328 -0.000478 -1.9e-05 +Ta 2.0969 2.0945 0.0 -0.000328 0.000478 1.9e-05 +Ta -0.003 2.1003 2.1081 -0.000328 0.000478 1.9e-05 +Ta 0.0 0.0 0.0 0.000328 -0.000478 -1.9e-05 +4 +Lattice = "4.19409990311 0.0 0.0 -0.00949999969453 4.18279981613 0.0 -0.00359999993816 0.0146000003442 4.20279979706" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.42629 stress="40994.259999999995 1984.0500000000002 678.41 1984.0500000000002 38515.95 -2950.21 678.41 -2950.21 30369.28" +Ta 2.0953 0.0073 2.1014 -0.000264 2.1e-05 -3e-06 +Ta 2.0923 2.0914 0.0 0.000264 -2.1e-05 3e-06 +Ta -0.0065 2.0987 2.1014 -0.000264 2.1e-05 -3e-06 +Ta 0.0 0.0 0.0 0.000264 -2.1e-05 3e-06 +4 +Lattice = "4.21500015259 0.0 0.0 0.00240000011399 4.2077999115 0.0 0.00559999980032 -0.00430000014603 4.19150018692" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.443301 stress="25318.89 -582.25 -1370.1399999999999 -582.25 24260.940000000002 1009.18 -1370.1399999999999 1009.18 11853.45" +Ta 2.1103 -0.0021 2.0957 2.5e-05 -0.00092 0.000616 +Ta 2.1087 2.1039 0.0 -3.1e-05 0.000243 -0.000622 +Ta 0.004 2.1017 2.0957 4e-05 0.000897 0.000626 +Ta 0.0 0.0 0.0 -3.4e-05 -0.00022 -0.000621 +4 +Lattice = "4.21619987488 0.0 0.0 -0.0207000002265 4.1875 0.0 -0.00230000005104 0.00730000017211 4.20310020447" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.439002 stress="30242.61 4765.59 418.83 4765.59 23708.24 -1576.43 418.83 -1576.43 16414.149999999998" +Ta 2.0863 4.1911 2.1015 -0.00067 0.000288 0.000472 +Ta 2.0977 2.0937 0.0 0.000637 0.000248 -0.000453 +Ta 4.2047 2.0974 2.1015 6.7e-05 -0.00028 0.000455 +Ta 0.0 0.0 0.0 -3.3e-05 -0.000255 -0.000474 +4 +Lattice = "4.21169996262 0.0 0.0 -0.0137999998406 4.18540000916 0.0 0.00350000010803 0.016799999401 4.19210004807" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.432438 stress="38865.54 2976.27 -1187.3700000000001 2976.27 32433.36 -3670.5899999999997 -1187.3700000000001 -3670.5899999999997 24012.71" +Ta 2.0938 4.1938 2.0961 0.000109 1.5e-05 -0.000266 +Ta 2.0989 2.0927 0.0 0.000626 -5.5e-05 0.000181 +Ta -0.0051 2.1011 2.0961 -0.000626 5.5e-05 -0.000181 +Ta 0.0 0.0 0.0 -0.000109 -1.5e-05 0.000266 +4 +Lattice = "4.18310022354 0.0 0.0 -0.00300000002608 4.18790006638 0.0 0.0161000005901 -0.0153999999166 4.18289995193" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.412654 stress="53423.5 705.21 -3760.97 705.21 56329.25 3452.61 -3760.97 3452.61 44823.36" +Ta 2.0996 -0.0077 2.0915 0.000209 0.000715 -0.000359 +Ta 2.09 2.094 0.0 0.000554 -0.000722 0.000333 +Ta 0.0066 2.0863 2.0915 -0.000628 -0.000725 -0.000262 +Ta 0.0 0.0 0.0 -0.000135 0.000731 0.000288 +4 +Lattice = "4.19859981537 0.0 0.0 -0.00520000001416 4.21680021286 0.0 -0.000199999994948 0.00190000003204 4.20230007172" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.443231 stress="21408.78 997.66 2.63 997.66 23951.809999999998 -420.08 2.63 -420.08 10910.34" +Ta 2.094 4.2177 2.1012 -4.8e-05 0.000221 -0.000815 +Ta 2.0967 2.1084 0.0 4.8e-05 -0.000221 0.000815 +Ta 4.1959 2.1093 2.1012 -4.8e-05 0.000221 -0.000815 +Ta 0.0 0.0 0.0 4.8e-05 -0.000221 0.000815 +4 +Lattice = "4.21309995651 0.0 0.0 0.00989999994636 4.17939996719 0.0 -0.0111999996006 -0.0109000001103 4.19469976425" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.431513 stress="38571.840000000004 -2057.94 2001.0400000000002 -2057.94 31128.620000000003 2212.8199999999997 2001.0400000000002 2212.8199999999997 25395.620000000003" +Ta 2.101 -0.0054 2.0973 -0.000812 -0.000699 0.000382 +Ta 2.1115 2.0897 0.0 -5.2e-05 0.000172 -0.000317 +Ta 4.2124 2.0842 2.0973 0.000823 0.000706 0.000273 +Ta 0.0 0.0 0.0 4.1e-05 -0.000179 -0.000337 +4 +Lattice = "4.21220016479 0.0 0.0 0.00730000017211 4.19630002975 0.0 0.00209999992512 -0.0115000000224 4.18480014801" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.435608 stress="35907.1 -1805.28 -643.2900000000001 -1805.28 32898.1 2687.74 -643.2900000000001 2687.74 21620.26" +Ta 2.1144 4.1905 2.0924 0.000371 0.000304 -3e-06 +Ta 2.1097 2.0981 0.0 0.000371 0.000304 -3e-06 +Ta 0.0047 2.0924 2.0924 -0.000371 -0.000304 3e-06 +Ta 0.0 0.0 0.0 -0.000371 -0.000304 3e-06 +4 +Lattice = "4.18069982529 0.0 0.0 -0.0109000001103 4.21169996262 0.0 -0.00529999984428 0.00520000001416 4.21330022812" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.437689 stress="23769.33 2509.14 1235.52 2509.14 31281.32 -1087.23 1235.52 -1087.23 17393.4" +Ta 2.0768 4.2143 2.1067 -0.000106 -0.000368 -0.000493 +Ta 2.0849 2.1058 0.0 0.000106 0.000368 0.000493 +Ta 4.1726 2.1084 2.1067 0.000104 0.000319 -0.000489 +Ta 0.0 0.0 0.0 -0.000104 -0.000319 0.000489 +4 +Lattice = "4.18959999084 0.0 0.0 0.0164999999106 4.20200014114 0.0 0.00899999961257 -0.0188999995589 4.19029998779" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.428447 stress="39131.659999999996 -3973.89 -2296.86 -3973.89 42258.21 4597.84 -2296.86 4597.84 29361.260000000002" +Ta 2.0993 -0.0094 2.0951 0.000613 -0.000529 0.000975 +Ta 2.1031 2.101 0.0 -0.000613 0.000529 -0.000975 +Ta 0.0128 2.0916 2.0951 -0.000208 -0.000185 0.000662 +Ta 0.0 0.0 0.0 0.000208 0.000185 -0.000662 +4 +Lattice = "4.18120002747 0.0 0.0 -0.000399999989895 4.21000003815 0.0 0.00460000010207 0.0187999997288 4.19910001755" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.432255 stress="29757.62 -182.62 -536.07 -182.62 36285.020000000004 -3344.74 -536.07 -3344.74 22592.0" +Ta 2.0929 0.0094 2.0995 -0.00013 1.7e-05 0.000285 +Ta 2.0904 2.105 0.0 0.00013 -1.7e-05 -0.000285 +Ta 0.0021 2.1144 2.0995 -0.00013 1.7e-05 0.000285 +Ta 0.0 0.0 0.0 0.00013 -1.7e-05 -0.000285 +4 +Lattice = "4.21250009537 0.0 0.0 -0.0190999992192 4.2062997818 0.0 0.0172000005841 0.0121999997646 4.1968998909" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.442315 stress="24536.86 4406.19 -4080.28 4406.19 23952.329999999998 -2854.26 -4080.28 -2854.26 11636.13" +Ta 2.1149 0.0061 2.0984 -0.00079 -0.000901 0.000821 +Ta 2.0967 2.1031 0.0 0.00079 0.000901 -0.000821 +Ta -0.0009 2.1092 2.0984 -0.00026 0.000434 0.000757 +Ta 0.0 0.0 0.0 0.00026 -0.000434 -0.000757 +4 +Lattice = "4.18179988861 0.0 0.0 0.0136000001803 4.21280002594 0.0 0.00310000008903 -0.0118000004441 4.20720005035" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.436613 stress="25874.06 -3205.31 -821.0 -3205.31 32985.54 2726.66 -821.0 2726.66 19695.18" +Ta 2.0925 -0.0059 2.1036 -0.000254 -3.3e-05 -7.2e-05 +Ta 2.0977 2.1064 0.0 0.000254 3.3e-05 7.2e-05 +Ta 0.0084 2.1005 2.1036 -0.000254 -3.3e-05 -7.2e-05 +Ta 0.0 0.0 0.0 0.000254 3.3e-05 7.2e-05 +4 +Lattice = "4.20440006256 0.0 0.0 -0.00430000014603 4.18720006943 0.0 0.0116999996826 0.0206000003964 4.19589996338" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.430825 stress="38754.51 1016.0100000000001 -2801.6 1016.0100000000001 34556.35 -4530.67 -2801.6 -4530.67 26227.129999999997" +Ta 2.108 0.0103 2.0979 0.000384 -3.4e-05 0.000554 +Ta 2.1 2.0936 0.0 0.000373 -0.000115 -0.00061 +Ta 0.0037 2.1039 2.0979 -0.000373 0.000115 0.00061 +Ta 0.0 0.0 0.0 -0.000384 3.4e-05 -0.000554 +4 +Lattice = "4.1888999939 0.0 0.0 0.0038999998942 4.20720005035 0.0 -0.0144999995828 0.0156999994069 4.19560003281" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.43312 stress="29781.53 -523.96 3434.8399999999997 -523.96 33821.21 -3382.98 3434.8399999999997 -3382.98 20448.34" +Ta 2.0911 4.215 2.0978 2.8e-05 0.00036 4.3e-05 +Ta 2.0964 2.1036 0.0 -2.8e-05 -0.00036 -4.3e-05 +Ta -0.0053 2.1114 2.0978 2.8e-05 0.00036 4.3e-05 +Ta 0.0 0.0 0.0 -2.8e-05 -0.00036 -4.3e-05 +4 +Lattice = "4.21330022812 0.0 0.0 0.000699999975041 4.1810002327 0.0 0.0054999999702 -0.00949999969453 4.19969987869" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.434347 stress="37957.909999999996 -320.79 -1076.83 -320.79 30562.539999999997 2073.23 -1076.83 2073.23 23518.02" +Ta 2.1094 -0.0047 2.0998 -8.7e-05 -0.000391 0.000502 +Ta 2.107 2.0905 0.0 8.7e-05 0.000391 -0.000502 +Ta 0.0031 2.0858 2.0998 -8.7e-05 -0.000391 0.000502 +Ta 0.0 0.0 0.0 8.7e-05 0.000391 -0.000502 +4 +Lattice = "4.20370006561 0.0 0.0 0.00340000004508 4.18830013275 0.0 -0.00089999998454 0.00980000011623 4.19320011139" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.430573 stress="38159.329999999994 -261.17 350.0 -261.17 35372.36 -2364.75 350.0 -2364.75 25174.510000000002" +Ta 2.1014 0.0049 2.0966 0.000389 -0.00053 2.4e-05 +Ta 2.1036 2.0941 0.0 -0.000389 0.00053 -2.4e-05 +Ta 0.0013 2.099 2.0966 -0.000389 0.00053 -2.4e-05 +Ta 0.0 0.0 0.0 0.000389 -0.00053 2.4e-05 +4 +Lattice = "4.20860004425 0.0 0.0 -0.00989999994636 4.20669984818 0.0 -0.0154999997467 0.00520000001416 4.21969985962" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.445665 stress="14174.23 2425.32 3028.21 2425.32 15030.34 -809.6999999999999 3028.21 -809.6999999999999 2911.0299999999997" +Ta 2.0966 0.0026 2.1098 -0.000412 -0.000614 0.000581 +Ta 2.0994 2.1033 0.0 -0.00059 0.000627 -0.000659 +Ta 4.1959 2.1059 2.1098 0.000541 0.000424 0.000445 +Ta 0.0 0.0 0.0 0.000461 -0.000437 -0.000367 +4 +Lattice = "4.19920015335 0.0 0.0 0.0185000002384 4.19920015335 0.0 -0.0126000000164 0.00540000014007 4.20139980316" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.435898 stress="32203.23 -4272.68 2945.41 -4272.68 31706.99 -1474.9 2945.41 -1474.9 21250.72" +Ta 2.0933 0.0027 2.1007 0.00043 -1.3e-05 0.000192 +Ta 2.1088 2.0996 0.0 0.00122 -8.7e-05 -0.000171 +Ta 0.003 2.1023 2.1007 -0.00122 8.7e-05 0.000171 +Ta 0.0 0.0 0.0 -0.00043 1.3e-05 -0.000192 +4 +Lattice = "4.2108001709 0.0 0.0 0.0163000002503 4.21479988098 0.0 0.01070000045 0.00499999988824 4.18380022049" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.442107 stress="28916.579999999998 -3579.5699999999997 -2277.82 -3579.5699999999997 29458.98 -1392.66 -2277.82 -1392.66 14592.84" +Ta 2.1108 0.0025 2.0919 -0.000298 4e-05 1.5e-05 +Ta 2.1136 2.1074 0.0 -0.000298 4e-05 1.5e-05 +Ta 0.0135 2.1099 2.0919 0.000298 -4e-05 -1.5e-05 +Ta 0.0 0.0 0.0 0.000298 -4e-05 -1.5e-05 +4 +Lattice = "4.19960021973 0.0 0.0 0.00079999997979 4.18790006638 0.0 -0.0054999999702 0.00499999988824 4.21040010452" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.434432 stress="33222.78 -147.47 1254.14 -147.47 29633.84 -1145.8 1254.14 -1145.8 20687.69" +Ta 2.097 0.0025 2.1052 0.00033 -1.2e-05 0.000134 +Ta 2.1002 2.094 0.0 -0.000357 -0.00057 -0.000134 +Ta 4.1972 2.0964 2.1052 0.000357 0.00057 0.000134 +Ta 0.0 0.0 0.0 -0.00033 1.2e-05 -0.000134 +4 +Lattice = "4.18860006332 0.0 0.0 0.00829999987036 4.19880008698 0.0 0.00680000009015 -0.0104999998584 4.21710014343" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.436308 stress="26865.34 -1570.0700000000002 -1633.81 -1570.0700000000002 30088.280000000002 2199.78 -1633.81 2199.78 18762.14" +Ta 2.0977 -0.0052 2.1086 0.000219 -0.000492 -0.000515 +Ta 2.0984 2.0994 0.0 0.000816 0.000404 0.000554 +Ta 0.0076 2.0942 2.1086 -0.000816 -0.000404 -0.000554 +Ta 0.0 0.0 0.0 -0.000219 0.000492 0.000515 +4 +Lattice = "4.1999001503 0.0 0.0 0.01600000076 4.18179988861 0.0 0.0184000004083 0.00219999998808 4.19189977646" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.423938 stress="45156.3 -3736.32 -4044.29 -3736.32 42163.939999999995 -272.71000000000004 -4044.29 -272.71000000000004 33401.829999999994" +Ta 2.1091 0.0011 2.0959 0.00063 0.000124 0.000424 +Ta 2.1079 2.0909 0.0 0.000645 0.000127 -0.000216 +Ta 0.0172 2.092 2.0959 -0.000645 -0.000127 0.000216 +Ta 0.0 0.0 0.0 -0.00063 -0.000124 -0.000424 +4 +Lattice = "4.18540000916 0.0 0.0 0.00910000037402 4.20340013504 0.0 -0.00449999980628 0.0206000003964 4.19199991226" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.428115 stress="33159.950000000004 -2037.96 1037.3300000000002 -2037.96 36902.979999999996 -4264.8 1037.3300000000002 -4264.8 24342.199999999997" +Ta 2.0905 0.0103 2.096 -0.000408 0.000133 9e-06 +Ta 2.0973 2.1017 0.0 -0.000408 0.000133 9e-06 +Ta 0.0023 2.112 2.096 0.000408 -0.000133 -9e-06 +Ta 0.0 0.0 0.0 0.000408 -0.000133 -9e-06 +4 +Lattice = "4.20219993591 0.0 0.0 -0.0137000000104 4.18510007858 0.0 0.0170000009239 0.000399999989895 4.19110012054" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.4269 stress="42344.0 2996.3700000000003 -4106.58 2996.3700000000003 39499.920000000006 161.89000000000001 -4106.58 161.89000000000001 29485.66" +Ta 2.1096 0.0002 2.0955 3.6e-05 -2.9e-05 0.000575 +Ta 2.0943 2.0925 0.0 -0.000498 0.000956 -0.000492 +Ta 0.0017 2.0928 2.0955 5e-06 -0.000949 0.000486 +Ta 0.0 0.0 0.0 0.000457 2.2e-05 -0.000569 +4 +Lattice = "4.18289995193 0.0 0.0 0.00159999995958 4.179500103 0.0 -0.00310000008903 0.0133999995887 4.209400177" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.421142 stress="44099.57 -461.53 789.15 -461.53 41820.810000000005 -2469.31 789.15 -2469.31 34193.81" +Ta 2.0899 0.0067 2.1047 0.000191 0.000394 1e-06 +Ta 2.0922 2.0898 0.0 0.000613 -0.00044 1.7e-05 +Ta -0.0007 2.0965 2.1047 -0.000794 -0.000378 -7e-06 +Ta 0.0 0.0 0.0 -1e-05 0.000423 -1e-05 +4 +Lattice = "4.21260023117 0.0 0.0 0.0207000002265 4.19000005722 0.0 0.00159999995958 -0.00769999995828 4.18440008163" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.432233 stress="39750.03 -4610.75 -478.2 -4610.75 34854.11 1877.37 -478.2 1877.37 25710.550000000003" +Ta 2.1071 -0.0038 2.0922 0.000289 -0.000207 -3e-06 +Ta 2.1167 2.095 0.0 -0.000289 0.000207 3e-06 +Ta 0.0112 2.0912 2.0922 -0.000287 -0.000233 1e-06 +Ta 0.0 0.0 0.0 0.000287 0.000233 -1e-06 +4 +Lattice = "4.19710016251 0.0 0.0 0.017899999395 4.18270015717 0.0 -0.00960000045598 -0.01600000076 4.20739984512" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.429408 stress="37387.92 -3190.48 1878.9499999999998 -3190.48 32357.480000000003 3103.4700000000003 1878.9499999999998 3103.4700000000003 25220.76" +Ta 2.0938 -0.008 2.1037 -0.000335 0.000327 5.2e-05 +Ta 2.1075 2.0914 0.0 0.000335 -0.000327 -5.2e-05 +Ta 0.0042 2.0834 2.1037 -0.000324 -0.000492 4.2e-05 +Ta 0.0 0.0 0.0 0.000324 0.000492 -4.2e-05 +4 +Lattice = "4.21169996262 0.0 0.0 -0.00689999992028 4.20370006561 0.0 0.00150000001304 -0.00920000020415 4.21269989014" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.445145 stress="18335.4 1673.0 -228.65 1673.0 16239.820000000002 2082.03 -228.65 2082.03 6136.77" +Ta 2.0997 4.1991 2.1063 6.7e-05 -0.000114 0.000643 +Ta 2.1024 2.1018 0.0 -9e-05 0.000831 -0.000669 +Ta -0.0027 2.0973 2.1063 9e-05 -0.000831 0.000669 +Ta 0.0 0.0 0.0 -6.7e-05 0.000114 -0.000643 +4 +Lattice = "4.19729995728 0.0 0.0 0.00370000000112 4.20749998093 0.0 0.0143999997526 -0.00310000008903 4.19150018692" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.435868 stress="32126.109999999997 -1008.08 -3338.91 -1008.08 34042.35 685.31 -3338.91 685.31 21906.06" +Ta 2.1095 4.2059 2.0958 0.000735 0.000174 -0.00065 +Ta 2.1005 2.1037 0.0 0.000783 0.000746 0.000651 +Ta 0.0091 2.1022 2.0958 -0.00125 -0.00074 -0.00065 +Ta 0.0 0.0 0.0 -0.000268 -0.00018 0.00065 +4 +Lattice = "4.18669986725 0.0 0.0 0.018200000748 4.22060012817 0.0 0.00449999980628 -0.00139999995008 4.19939994812" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.439663 stress="24909.960000000003 -4206.58 -1004.1899999999999 -4206.58 31036.64 543.86 -1004.1899999999999 543.86 16832.42" +Ta 2.0956 -0.0007 2.0997 0.000559 -2.8e-05 1e-06 +Ta 2.1025 2.1103 0.0 -0.000559 2.8e-05 -1e-06 +Ta 0.0114 2.1096 2.0997 -0.000559 2.8e-05 -1e-06 +Ta 0.0 0.0 0.0 0.000559 -2.8e-05 1e-06 +4 +Lattice = "4.1998000145 0.0 0.0 -0.0163000002503 4.19570016861 0.0 0.01070000045 -0.0124000003561 4.18389987946" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.428287 stress="41731.25 3757.21 -2445.36 3757.21 41051.920000000006 2856.2799999999997 -2445.36 2856.2799999999997 30297.370000000003" +Ta 2.1053 -0.0062 2.092 -0.00054 -0.000412 -0.000306 +Ta 2.0917 2.0978 0.0 0.00054 0.000412 0.000306 +Ta 4.197 2.0916 2.092 2.3e-05 0.0004 -0.000316 +Ta 0.0 0.0 0.0 -2.3e-05 -0.0004 0.000316 +4 +Lattice = "4.1970000267 0.0 0.0 0.0194000005722 4.1888999939 0.0 -0.00179999996908 -0.0136000001803 4.18779993057" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.424584 stress="44875.270000000004 -4458.47 289.83 -4458.47 43234.76 3197.07 289.83 3197.07 33469.479999999996" +Ta 2.0976 -0.0068 2.0939 5.4e-05 -0.000398 -1e-06 +Ta 2.1082 2.0944 0.0 -5.4e-05 0.000398 1e-06 +Ta 0.0088 2.0876 2.0939 -5.4e-05 0.000398 1e-06 +Ta 0.0 0.0 0.0 5.4e-05 -0.000398 -1e-06 +4 +Lattice = "4.18450021744 0.0 0.0 0.0130000002682 4.18849992752 0.0 -0.0195000004023 -0.00370000000112 4.18139982224" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.413045 stress="50367.32 -3261.88 3822.1099999999997 -3261.88 50402.17 705.52 3822.1099999999997 705.52 39882.66" +Ta 2.0825 -0.0018 2.0907 -5.1e-05 -0.000344 -1e-06 +Ta 2.0988 2.0943 0.0 -0.000738 -0.000336 2.6e-05 +Ta 4.1812 2.0924 2.0907 0.000738 0.000336 -2.6e-05 +Ta 0.0 0.0 0.0 5.1e-05 0.000344 1e-06 +4 +Lattice = "4.20609998703 0.0 0.0 0.0121999997646 4.20860004425 0.0 0.0104000000283 0.00490000005811 4.1810002327" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.436994 stress="32291.899999999998 -2490.73 -2201.86 -2490.73 33006.25 -463.13 -2201.86 -463.13 19860.08" +Ta 2.1204 4.211 2.0905 0.000646 0.000444 0.000147 +Ta 2.1092 2.1043 0.0 -0.000646 -0.000444 -0.000147 +Ta 0.0113 2.1067 2.0905 0.000171 0.000448 0.000145 +Ta 0.0 0.0 0.0 -0.000171 -0.000448 -0.000145 +4 +Lattice = "4.1939997673 0.0 0.0 -0.0175999999046 4.21909999847 0.0 -0.00359999993816 0.00300000002608 4.2079000473" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.443604 stress="18084.66 3671.56 781.26 3671.56 24730.91 -432.39 781.26 -432.39 9828.4" +Ta 2.0776 4.2206 2.104 0.000117 0.000438 -0.0005 +Ta 2.0882 2.1096 0.0 -0.000117 -0.000438 0.0005 +Ta -0.0106 2.1111 2.104 -1.1e-05 -0.000248 -0.000419 +Ta 0.0 0.0 0.0 1.1e-05 0.000248 0.000419 +4 +Lattice = "4.19670009613 0.0 0.0 0.0144999995828 4.20499992371 0.0 -0.0154999997467 -0.00319999991916 4.21000003815" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.439718 stress="23536.32 -3142.14 3304.68 -3142.14 26048.2 678.5 3304.68 678.5 13870.050000000001" +Ta 2.0906 -0.0016 2.105 0.0 0.0 0.0 +Ta 2.1056 2.1025 0.0 0.0 0.0 0.0 +Ta -0.0005 2.1009 2.105 0.0 0.0 0.0 +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +4 +Lattice = "4.18400001526 0.0 0.0 -0.00139999995008 4.20389986038 0.0 -0.0186000000685 -0.0144999995828 4.21430015564" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.435527 stress="26601.199999999997 224.89999999999998 3984.39 224.89999999999998 32506.140000000003 3199.5499999999997 3984.39 3199.5499999999997 20323.48" +Ta 2.0813 4.1966 2.1072 -5.7e-05 0.000574 -0.000235 +Ta 2.0913 2.102 0.0 5.7e-05 -0.000574 0.000235 +Ta -0.01 2.0947 2.1072 7.8e-05 -6.3e-05 -0.000195 +Ta 0.0 0.0 0.0 -7.8e-05 6.3e-05 0.000195 +4 +Lattice = "4.1810002327 0.0 0.0 0.00600000005215 4.22009992599 0.0 -0.00669999979436 -0.0204000007361 4.19239997864" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.434787 stress="30521.97 -1467.91 1403.6 -1467.91 38595.36 4398.91 1403.6 4398.91 23894.760000000002" +Ta 2.0872 -0.0102 2.0962 -0.000704 0.000292 6e-05 +Ta 2.0935 2.1101 0.0 -0.000115 -0.000301 -1e-06 +Ta 4.1806 2.0999 2.0962 0.000704 -0.000292 -6e-05 +Ta 0.0 0.0 0.0 0.000115 0.000301 1e-06 +4 +Lattice = "4.2076997757 0.0 0.0 -0.00329999998212 4.18240022659 0.0 0.0197999998927 -0.0142999999225 4.20949983597" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.434929 stress="33106.05 400.43 -4376.98 400.43 26345.52 2747.71 -4376.98 2747.71 20304.05" +Ta 2.1104 4.1752 2.1048 0.000619 0.000224 -0.00034 +Ta 2.1022 2.0912 0.0 0.000185 -0.00027 0.000324 +Ta 0.0083 2.084 2.1048 -0.000828 0.000293 -0.000329 +Ta 0.0 0.0 0.0 2.4e-05 -0.000248 0.000344 +4 +Lattice = "4.18709993362 0.0 0.0 -0.0137000000104 4.19210004807 0.0 -0.0206000003964 -0.00300000002608 4.2013001442" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.426499 stress="39883.59 3131.64 4730.58 3131.64 40703.380000000005 736.94 4730.58 736.94 30183.84" +Ta 2.0695 4.1906 2.1006 0.000281 -0.00046 0.000374 +Ta 2.0867 2.096 0.0 -0.000281 0.00046 -0.000374 +Ta 4.1699 2.0945 2.1006 0.000239 0.000426 0.000333 +Ta 0.0 0.0 0.0 -0.000239 -0.000426 -0.000333 +4 +Lattice = "4.19180011749 0.0 0.0 0.00350000010803 4.20699977875 0.0 0.0201999992132 -0.0141000002623 4.20459985733" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.437025 stress="28895.21 -1353.89 -4533.7300000000005 -1353.89 33286.0 2779.0699999999997 -4533.7300000000005 2779.0699999999997 20380.649999999998" +Ta 2.1095 4.1999 2.1023 0.000444 0.000256 2.5e-05 +Ta 2.0977 2.1035 0.0 -0.000444 -0.000256 -2.5e-05 +Ta 0.0119 2.0964 2.1023 -0.000371 0.000196 3.1e-05 +Ta 0.0 0.0 0.0 0.000371 -0.000196 -3.1e-05 +4 +Lattice = "4.19680023193 0.0 0.0 -0.019999999553 4.19010019302 0.0 0.0148000000045 0.00449999980628 4.19729995728" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.428937 stress="38946.02 4281.84 -3402.34 4281.84 36868.95 -1152.93 -3402.34 -1152.93 27927.85" +Ta 2.0858 4.1923 2.0986 -3.4e-05 0.000667 0.000439 +Ta 2.0884 2.0951 0.0 3.4e-05 -0.000667 -0.000439 +Ta -0.0026 2.0973 2.0986 -7.3e-05 -0.000101 0.000416 +Ta 0.0 0.0 0.0 7.3e-05 0.000101 -0.000416 +4 +Lattice = "4.21390008926 0.0 0.0 -0.0159000009298 4.2077999115 0.0 -0.0115000000224 0.00680000009015 4.19169998169" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.442516 stress="26548.37 3415.7000000000003 2464.46 3415.7000000000003 25895.34 -1426.55 2464.46 -1426.55 12731.93" +Ta 2.1012 0.0034 2.0958 -0.000117 -0.000115 0.000445 +Ta 2.099 2.1039 0.0 0.000117 0.000115 -0.000445 +Ta 4.2002 2.1073 2.0958 -0.000117 -0.000115 0.000445 +Ta 0.0 0.0 0.0 0.000117 0.000115 -0.000445 +4 +Lattice = "4.18620014191 0.0 0.0 0.00319999991916 4.18989992142 0.0 0.00359999993816 0.0201999992132 4.21029996872" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.428736 stress="36533.26 -472.27000000000004 -599.63 -472.27000000000004 38503.49 -4878.59 -599.63 -4878.59 28242.54" +Ta 2.0949 0.0101 2.1051 7.8e-05 0.000472 0.000488 +Ta 2.0947 2.095 0.0 -7.8e-05 -0.000472 -0.000488 +Ta 0.0034 2.1051 2.1051 3e-06 -0.000581 0.000458 +Ta 0.0 0.0 0.0 -3e-06 0.000581 -0.000458 +4 +Lattice = "4.18650007248 0.0 0.0 -0.020300000906 4.20889997482 0.0 0.0177999995649 -0.0108000002801 4.19799995422" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.433359 stress="31456.3 4402.04 -3820.04 4402.04 36583.71000000001 2243.03 -3820.04 2243.03 23228.44" +Ta 2.1021 -0.0054 2.099 0.000683 0.000409 2.2e-05 +Ta 2.0831 2.1045 0.0 0.000136 -0.000401 -3.2e-05 +Ta -0.0012 2.0991 2.099 -0.000683 -0.000409 -2.2e-05 +Ta 0.0 0.0 0.0 -0.000136 0.000401 3.2e-05 +4 +Lattice = "4.18569993973 0.0 0.0 -0.0201999992132 4.21250009537 0.0 0.0132999997586 -0.0038999998942 4.21120023727" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.438799 stress="22841.29 4506.599999999999 -2944.67 4506.599999999999 28994.420000000002 787.89 -2944.67 787.89 15742.92" +Ta 2.0793 4.2105 2.1056 0.00025 0.000338 -9e-06 +Ta 2.0828 2.1062 0.0 -0.000222 0.00033 -1.1e-05 +Ta -0.0034 2.1043 2.1056 -0.00025 -0.000338 9e-06 +Ta 0.0 0.0 0.0 0.000222 -0.00033 1.1e-05 +4 +Lattice = "4.20319986343 0.0 0.0 0.0133999995887 4.21220016479 0.0 0.0153000000864 0.016799999401 4.20030021667" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.441993 stress="22767.3 -2987.04 -3341.07 -2987.04 24394.9 -3697.02 -3341.07 -3697.02 11782.27" +Ta 2.1226 4.2206 2.1002 0.000406 4.3e-05 -0.000851 +Ta 2.1083 2.1061 0.0 -0.000406 -4.3e-05 0.000851 +Ta 4.2175 2.1145 2.1002 0.000406 4.3e-05 -0.000851 +Ta 0.0 0.0 0.0 -0.000406 -4.3e-05 0.000851 +4 +Lattice = "4.20020008087 0.0 0.0 0.0159000009298 4.21250009537 0.0 0.00839999970049 0.00270000007004 4.19059991837" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.439033 stress="31311.34 -2962.04 -2118.77 -2962.04 33332.84 -497.0 -2118.77 -497.0 19397.95" +Ta 2.1043 0.0014 2.0953 -0.000169 -0.000336 2e-06 +Ta 2.108 2.1063 0.0 0.000307 -0.000319 4e-06 +Ta 4.2123 2.1076 2.0953 0.000169 0.000336 -2e-06 +Ta 0.0 0.0 0.0 -0.000307 0.000319 -4e-06 +4 +Lattice = "4.19460010529 0.0 0.0 -0.00380000006407 4.20300006866 0.0 0.00710000004619 0.00289999996312 4.20419979095" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.436967 stress="28199.07 1077.27 -1364.09 1077.27 30335.760000000002 -742.39 -1364.09 -742.39 18938.510000000002" +Ta 2.1009 0.0015 2.1021 -0.000397 -0.000899 -0.000183 +Ta 2.0954 2.1015 0.0 0.000341 0.000174 0.00019 +Ta 0.0017 2.1029 2.1021 -0.000267 0.000862 -0.0002 +Ta 0.0 0.0 0.0 0.000324 -0.000137 0.000193 +4 +Lattice = "4.19649982452 0.0 0.0 0.0170000009239 4.18389987946 0.0 0.000500000023749 0.0197000000626 4.20139980316" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.427245 stress="39200.850000000006 -3187.19 -498.29 -3187.19 36589.530000000006 -4530.76 -498.29 -4530.76 27001.34" +Ta 2.0985 0.0099 2.1007 1e-05 -0.00045 2.8e-05 +Ta 2.1067 2.092 0.0 0.000706 -0.000365 -4.5e-05 +Ta 0.0088 2.1018 2.1007 -0.000706 0.000365 4.5e-05 +Ta 0.0 0.0 0.0 -1e-05 0.00045 -2.8e-05 +4 +Lattice = "4.19409990311 0.0 0.0 -0.0157999992371 4.20200014114 0.0 -0.00249999994412 -0.00449999980628 4.21129989624" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.438046 stress="26136.06 3578.57 621.48 3578.57 27841.36 1030.6 621.48 1030.6 16177.720000000001" +Ta 2.08 4.1997 2.1057 0.000264 0.000278 -0.000459 +Ta 2.0891 2.101 0.0 0.000831 -0.000264 0.000454 +Ta -0.0091 2.0987 2.1057 -0.000831 0.000264 -0.000454 +Ta 0.0 0.0 0.0 -0.000264 -0.000278 0.000459 +4 +Lattice = "4.18219995499 0.0 0.0 -0.0186999998987 4.19169998169 0.0 0.00850000046194 -0.00270000007004 4.19329977036" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.420083 stress="45896.659999999996 4350.44 -1715.56 4350.44 48179.94 571.0699999999999 -1715.56 571.0699999999999 36393.41" +Ta 2.0766 4.1903 2.0967 0.00046 0.001197 -0.000615 +Ta 2.0818 2.0959 0.0 -0.00046 -0.001197 0.000615 +Ta 4.1771 2.0945 2.0967 -0.000243 -0.00048 -0.000746 +Ta 0.0 0.0 0.0 0.000243 0.00048 0.000746 +4 +Lattice = "4.21379995346 0.0 0.0 -0.00889999978244 4.20090007782 0.0 0.00829999987036 -0.0121999997646 4.2157998085" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.445247 stress="17199.95 2060.92 -1868.0 2060.92 14754.65 2656.7 -1868.0 2656.7 4564.79" +Ta 2.111 -0.0061 2.1079 0.000429 -0.000346 -2e-05 +Ta 2.1024 2.1004 0.0 0.000445 0.000491 -1.1e-05 +Ta 4.2135 2.0943 2.1079 -0.000429 0.000346 2e-05 +Ta 0.0 0.0 0.0 -0.000445 -0.000491 1.1e-05 +4 +Lattice = "4.2171998024 0.0 0.0 -0.00249999994412 4.21280002594 0.0 0.0010000000475 -0.0208000000566 4.19570016861" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.446044 stress="19496.41 709.2 -122.84 709.2 18308.6 4583.75 -122.84 4583.75 6100.4" +Ta 2.1091 -0.0104 2.0979 0.000565 1.3e-05 -0.000312 +Ta 2.1074 2.1064 0.0 -0.000565 -1.3e-05 0.000312 +Ta -0.0007 2.096 2.0979 -0.000564 -1.2e-05 -0.000342 +Ta 0.0 0.0 0.0 0.000564 1.2e-05 0.000342 +4 +Lattice = "4.20889997482 0.0 0.0 0.0163000002503 4.17980003357 0.0 -0.00310000008903 -0.017899999395 4.2093000412" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.434472 stress="34887.090000000004 -3559.16 445.12 -3559.16 27517.510000000002 4000.3399999999997 445.12 4000.3399999999997 21214.9" +Ta 2.1029 -0.0089 2.1046 -4.5e-05 -0.000191 0.000367 +Ta 2.1126 2.0899 0.0 4.5e-05 0.000191 -0.000367 +Ta 4.2155 2.081 2.1046 -4.5e-05 -0.000191 0.000367 +Ta 0.0 0.0 0.0 4.5e-05 0.000191 -0.000367 +4 +Lattice = "4.21549987793 0.0 0.0 -0.0132999997586 4.21330022812 0.0 -0.0054999999702 0.0157999992371 4.18979978561" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.44458 stress="23231.31 2911.85 1091.22 2911.85 22696.98 -3466.5499999999997 1091.22 -3466.5499999999997 9663.7" +Ta 2.105 0.0079 2.0949 1.3e-05 0.000487 6e-06 +Ta 2.1011 2.1067 0.0 -1.3e-05 -0.000487 -6e-06 +Ta -0.0094 2.1146 2.0949 -1.3e-05 -0.000487 -6e-06 +Ta 0.0 0.0 0.0 1.3e-05 0.000487 6e-06 +4 +Lattice = "4.20329999924 0.0 0.0 0.0104000000283 4.2093000412 0.0 0.00359999993816 -0.00270000007004 4.20109987259" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.441776 stress="25420.61 -1768.14 -1189.8899999999999 -1768.14 27462.18 568.28 -1189.8899999999999 568.28 14665.82" +Ta 2.1139 4.2079 2.1005 -0.00054 0.0004 0.000307 +Ta 2.1069 2.1046 0.0 -0.000437 0.000188 -0.000353 +Ta 0.007 2.1033 2.1005 0.000437 -0.000188 0.000353 +Ta 0.0 0.0 0.0 0.00054 -0.0004 -0.000307 +4 +Lattice = "4.19390010834 0.0 0.0 -0.0154999997467 4.20030021667 0.0 0.0118000004441 -0.017100000754 4.2093000412" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.436389 stress="28175.18 3461.97 -2554.14 3461.97 29398.74 3490.6600000000003 -2554.14 3490.6600000000003 18104.420000000002" +Ta 2.1028 -0.0085 2.1047 0.000405 -0.000951 -0.000355 +Ta 2.0892 2.1001 0.0 -0.000405 0.000951 0.000355 +Ta 4.192 2.0916 2.1047 0.000387 0.000179 -0.000469 +Ta 0.0 0.0 0.0 -0.000387 -0.000179 0.000469 +4 +Lattice = "4.2079000473 0.0 0.0 -0.0097000002861 4.21920013428 0.0 -0.00490000005811 -0.00999999977648 4.20109987259" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.446416 stress="19209.399999999998 2025.1299999999999 1589.1299999999999 2025.1299999999999 20626.989999999998 2446.81 1589.1299999999999 2446.81 6438.570000000001" +Ta 2.1015 -0.005 2.1006 -2.8e-05 -0.000105 -0.000311 +Ta 2.0991 2.1096 0.0 2.8e-05 0.000105 0.000311 +Ta -0.0073 2.1046 2.1006 -2.8e-05 -0.000105 -0.000311 +Ta 0.0 0.0 0.0 2.8e-05 0.000105 0.000311 +4 +Lattice = "4.21920013428 0.0 0.0 0.00370000000112 4.21530008316 0.0 -0.001200000057 -9.99999974738e-05 4.21350002289" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.449806 stress="9066.92 -618.3199999999999 80.69 -618.3199999999999 8795.18 242.32000000000002 80.69 242.32000000000002 -3831.06" +Ta 2.109 0.0 2.1067 -0.000377 -0.000342 0.00055 +Ta 2.1115 2.1077 0.0 -0.001167 -0.000182 -0.000568 +Ta 4.2204 2.1076 2.1067 0.001167 0.000182 0.000568 +Ta 0.0 0.0 0.0 0.000377 0.000342 -0.00055 +4 +Lattice = "4.20060014725 0.0 0.0 0.00680000009015 4.19710016251 0.0 -0.0146000003442 0.0186000000685 4.17910003662" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.427189 stress="44173.07 -1484.73 3360.38 -1484.73 43201.93 -4284.93 3360.38 -4284.93 31256.18" +Ta 2.0998 4.2064 2.0896 -2.2e-05 -0.000426 -0.000366 +Ta 2.1037 2.0985 0.0 2.2e-05 0.000426 0.000366 +Ta -0.0039 2.1078 2.0896 -2.5e-05 0.000364 -0.000321 +Ta 0.0 0.0 0.0 2.5e-05 -0.000364 0.000321 +4 +Lattice = "4.18919992447 0.0 0.0 0.0135000003502 4.20279979706 0.0 -0.0119000002742 0.00999999977648 4.1875" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.427857 stress="39322.19 -2611.56 2676.7 -2611.56 42055.02 -2182.03 2676.7 -2182.03 28576.71" +Ta 2.1022 4.2078 2.0938 -0.000527 -0.000167 -0.000317 +Ta 2.1014 2.1014 0.0 -0.000703 1.2e-05 0.000454 +Ta 0.0008 2.1064 2.0938 0.000703 -1.2e-05 -0.000454 +Ta 0.0 0.0 0.0 0.000527 0.000167 0.000317 +4 +Lattice = "4.2079000473 0.0 0.0 -0.00980000011623 4.18940019608 0.0 0.0206000003964 0.0189999993891 4.21960020065" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.44004 stress="24518.6 2270.46 -4602.22 2270.46 19823.78 -4164.55 -4602.22 -4164.55 12729.210000000001" +Ta 2.1142 0.0095 2.1098 0.000377 -3.3e-05 1.1e-05 +Ta 2.099 2.0947 0.0 0.000377 -3.3e-05 1.1e-05 +Ta 0.0054 2.1042 2.1098 -0.000377 3.3e-05 -1.1e-05 +Ta 0.0 0.0 0.0 -0.000377 3.3e-05 -1.1e-05 +4 +Lattice = "4.18559980392 0.0 0.0 -0.0141000002623 4.21939992905 0.0 0.00270000007004 -0.0183000005782 4.19519996643" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.437214 stress="27548.75 3217.5699999999997 -517.42 3217.5699999999997 33898.46 4094.8900000000003 -517.42 4094.8900000000003 19872.68" +Ta 2.0941 -0.0091 2.0976 0.00078 -0.000197 -3.2e-05 +Ta 2.0857 2.1097 0.0 0.000496 0.000489 5e-06 +Ta -0.0057 2.1006 2.0976 -0.000496 -0.000489 -5e-06 +Ta 0.0 0.0 0.0 -0.00078 0.000197 3.2e-05 +4 +Lattice = "4.18179988861 0.0 0.0 -0.00949999969453 4.19159984589 0.0 0.0148000000045 0.00139999995008 4.19890022278" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.422628 stress="43385.56 2136.82 -3260.5400000000004 2136.82 46015.15 -518.6500000000001 -3260.5400000000004 -518.6500000000001 33939.47" +Ta 2.0888 4.1923 2.0995 -0.000281 -0.00027 -0.000582 +Ta 2.0861 2.0958 0.0 0.000281 0.00027 0.000582 +Ta 4.1844 2.0965 2.0995 0.000629 0.000286 -0.000561 +Ta 0.0 0.0 0.0 -0.000629 -0.000286 0.000561 +4 +Lattice = "4.20370006561 0.0 0.0 -0.0200999993831 4.21630001068 0.0 -0.0164000000805 -0.0195000004023 4.20209980011" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.443535 stress="20218.039999999997 4818.6900000000005 3580.07 4818.6900000000005 21841.62 4429.02 3580.07 4429.02 8549.369999999999" +Ta 2.0736 4.2065 2.1011 -0.000398 0.000783 -0.000458 +Ta 2.0918 2.1082 0.0 0.000398 -0.000783 0.000458 +Ta -0.0182 2.0984 2.1011 -0.000248 -0.000173 -0.000438 +Ta 0.0 0.0 0.0 0.000248 0.000173 0.000438 +4 +Lattice = "4.20109987259 0.0 0.0 0.00289999996312 4.2077999115 0.0 0.00179999996908 0.00260000000708 4.19890022278" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.439922 stress="27455.690000000002 -990.9599999999999 -176.72 -990.9599999999999 29472.14 -256.46000000000004 -176.72 -256.46000000000004 15890.19" +Ta 2.1015 0.0013 2.0994 -0.000776 -9.4e-05 0.000494 +Ta 2.102 2.1039 0.0 -0.00018 1.1e-05 -0.000461 +Ta 4.2034 2.1052 2.0994 0.000991 9.2e-05 0.000337 +Ta 0.0 0.0 0.0 -3.5e-05 -9e-06 -0.00037 +4 +Lattice = "4.20909976959 0.0 0.0 0.00279999990016 4.19089984894 0.0 0.0129000004381 0.0113000003621 4.20370006561" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.437675 stress="30559.32 -328.34999999999997 -2999.48 -328.34999999999997 26504.989999999998 -2563.55 -2999.48 -2563.55 18218.93" +Ta 2.1138 4.1965 2.1019 0.000516 0.001068 -0.000754 +Ta 2.1059 2.0955 0.0 0.000599 -0.000983 0.000746 +Ta 0.0079 2.1011 2.1019 -0.000833 -0.000415 -0.000718 +Ta 0.0 0.0 0.0 -0.000282 0.000331 0.000726 +4 +Lattice = "4.21960020065 0.0 0.0 -0.0164999999106 4.20809984207 0.0 0.00209999992512 -0.0104999998584 4.19619989395" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.445558 stress="21138.43 3552.79 -295.98 3552.79 19496.949999999997 2230.2599999999998 -295.98 2230.2599999999998 7402.18" +Ta 2.0944 4.2028 2.0981 -0.000489 0.000278 7.1e-05 +Ta 2.1016 2.104 0.0 -0.000489 0.000278 7.1e-05 +Ta -0.0072 2.0988 2.0981 0.000489 -0.000278 -7.1e-05 +Ta 0.0 0.0 0.0 0.000489 -0.000278 -7.1e-05 +4 +Lattice = "4.18620014191 0.0 0.0 0.0142000000924 4.21759986877 0.0 0.00529999984428 0.000699999975041 4.20249986649" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.439106 stress="24311.969999999998 -3207.16 -1065.08 -3207.16 30723.109999999997 -53.699999999999996 -1065.08 -53.699999999999996 16577.88" +Ta 2.11 4.2179 2.1012 -0.000734 0.000343 0.000586 +Ta 2.1002 2.1088 0.0 -0.000395 -0.000327 -0.000614 +Ta 4.1959 2.1091 2.1012 0.000856 0.000318 0.000602 +Ta 0.0 0.0 0.0 0.000273 -0.000334 -0.000574 +4 +Lattice = "4.19910001755 0.0 0.0 -0.0100999996066 4.21040010452 0.0 0.0163000002503 0.0195000004023 4.21479988098" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.443073 stress="21214.73 1620.02 -3139.49 1620.02 23804.07 -3361.12 -3139.49 -3361.12 11182.08" +Ta 2.0976 4.2201 2.1074 1.7e-05 0.000287 -2.2e-05 +Ta 2.0945 2.1052 0.0 -1.7e-05 -0.000287 2.2e-05 +Ta 4.2022 2.1149 2.1074 1.7e-05 0.000287 -2.2e-05 +Ta 0.0 0.0 0.0 -1.7e-05 -0.000287 2.2e-05 +4 +Lattice = "4.20900011063 0.0 0.0 -0.0132999997586 4.19000005722 0.0 -0.00510000018403 0.0116999996826 4.21299982071" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.4397 stress="27256.09 2922.24 1093.0500000000002 2922.24 22439.64 -2593.18 1093.0500000000002 -2593.18 14372.06" +Ta 2.102 0.0059 2.1065 -0.000435 -0.000338 0.0 +Ta 2.0979 2.095 0.0 -0.000572 0.000306 2.7e-05 +Ta -0.0092 2.1009 2.1065 0.000572 -0.000306 -2.7e-05 +Ta 0.0 0.0 0.0 0.000435 0.000338 0.0 +4 +Lattice = "4.18540000916 0.0 0.0 0.00499999988824 4.21269989014 0.0 -0.0170000009239 -0.0157999992371 4.20230007172" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.436374 stress="29413.82 -848.39 3021.03 -848.39 35818.05 3586.5499999999997 3021.03 3586.5499999999997 22359.57" +Ta 2.0892 4.2048 2.1011 0.000247 -0.000509 0.000473 +Ta 2.0952 2.1063 0.0 -0.000247 0.000509 -0.000473 +Ta 4.1794 2.0984 2.1011 0.000198 0.000499 0.000486 +Ta 0.0 0.0 0.0 -0.000198 -0.000499 -0.000486 +4 +Lattice = "4.19089984894 0.0 0.0 0.00889999978244 4.18580007553 0.0 -0.00769999995828 -0.00370000000112 4.20340013504" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.426557 stress="41786.9 -1592.19 1901.3 -1592.19 40672.780000000006 565.31 1901.3 565.31 31476.21" +Ta 2.0916 -0.0018 2.1017 9.5e-05 -0.000938 -7.3e-05 +Ta 2.0999 2.0929 0.0 -9e-06 0.000173 9e-06 +Ta 0.0006 2.091 2.1017 -9.5e-05 0.000938 7.3e-05 +Ta 0.0 0.0 0.0 9e-06 -0.000173 -9e-06 +4 +Lattice = "4.1985001564 0.0 0.0 -0.0179999992251 4.19869995117 0.0 -0.00079999997979 0.0184000004083 4.19780015945" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.434009 stress="33693.26 4132.23 124.97999999999999 4132.23 32953.46 -4050.66 124.97999999999999 -4050.66 22096.65" +Ta 2.0988 0.0092 2.0989 0.000663 0.000517 0.000224 +Ta 2.0903 2.0994 0.0 -0.000663 -0.000517 -0.000224 +Ta -0.0094 2.1086 2.0989 1.4e-05 -0.000453 7.2e-05 +Ta 0.0 0.0 0.0 -1.4e-05 0.000453 -7.2e-05 +4 +Lattice = "4.20100021362 0.0 0.0 -0.00910000037402 4.19759988785 0.0 -0.00689999992028 0.00609999988228 4.20090007782" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.436262 stress="32759.129999999997 2409.49 1583.58 2409.49 32101.69 -912.27 1583.58 -912.27 21073.66" +Ta 2.088 4.2006 2.1005 -0.001062 0.001392 -0.000497 +Ta 2.0959 2.0988 0.0 0.000982 -0.000276 0.000312 +Ta -0.008 2.1019 2.1005 -4.7e-05 -0.001302 -6.7e-05 +Ta 0.0 0.0 0.0 0.000128 0.000186 0.000252 +4 +Lattice = "4.21759986877 0.0 0.0 0.0156999994069 4.18800020218 0.0 0.00659999996424 0.0181000009179 4.18650007248" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.434505 stress="37654.36 -3876.7999999999997 -1440.8799999999999 -3876.7999999999997 32519.67 -4103.17 -1440.8799999999999 -4103.17 23829.38" +Ta 2.1278 4.197 2.0932 -0.000269 0.000298 0.000324 +Ta 2.1166 2.094 0.0 0.000269 -0.000298 -0.000324 +Ta 4.2287 2.103 2.0932 0.000297 0.000285 0.000327 +Ta 0.0 0.0 0.0 -0.000297 -0.000285 -0.000327 +4 +Lattice = "4.19199991226 0.0 0.0 0.01070000045 4.21519994736 0.0 -0.0195000004023 0.0172000005841 4.19929981232" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.438768 stress="27465.83 -1845.49 4487.129999999999 -1845.49 32725.54 -3897.0099999999998 4487.129999999999 -3897.0099999999998 17774.13" +Ta 2.0863 0.0086 2.0996 -0.000554 6.9e-05 0.000378 +Ta 2.1013 2.1076 0.0 0.000554 -6.9e-05 -0.000378 +Ta 4.1876 2.1162 2.0996 -9.3e-05 3.9e-05 0.000372 +Ta 0.0 0.0 0.0 9.3e-05 -3.9e-05 -0.000372 +4 +Lattice = "4.20120000839 0.0 0.0 -0.00980000011623 4.21460008621 0.0 0.0137000000104 -0.0104000000283 4.19080018997" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.440254 stress="26850.75 1979.56 -3070.84 1979.56 30335.71 2128.91 -3070.84 2128.91 16599.23" +Ta 2.1074 -0.0052 2.0954 0.000286 -4.3e-05 -9.2e-05 +Ta 2.0957 2.1073 0.0 -0.000286 4.3e-05 9.2e-05 +Ta 4.2031 2.1021 2.0954 0.000286 -4.3e-05 -9.2e-05 +Ta 0.0 0.0 0.0 -0.000286 4.3e-05 9.2e-05 +4 +Lattice = "4.18440008163 0.0 0.0 -0.0175000000745 4.18079996109 0.0 -0.0194000005722 0.0108000002801 4.21099996567" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.42286 stress="40368.11 3432.0 3719.6699999999996 3432.0 39974.420000000006 -1873.58 3719.6699999999996 -1873.58 31423.030000000002" +Ta 2.0825 0.0054 2.1055 -0.000359 6e-05 5.6e-05 +Ta 2.0834 2.0904 0.0 0.000359 -6e-05 -5.6e-05 +Ta 4.1659 2.0958 2.1055 0.000359 -6e-05 -5.6e-05 +Ta 0.0 0.0 0.0 -0.000359 6e-05 5.6e-05 +4 +Lattice = "4.18879985809 0.0 0.0 -0.0208000000566 4.18480014801 0.0 -0.00730000017211 -0.0186999998987 4.19089984894" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.418078 stress="45790.12 4993.91 1730.1100000000001 4993.91 45930.82 3649.4300000000003 1730.1100000000001 3649.4300000000003 35583.67" +Ta 2.0907 -0.0093 2.0955 0.000623 -0.000961 -0.000332 +Ta 2.084 2.0924 0.0 -0.000626 -0.000189 0.000487 +Ta 4.1747 2.083 2.0955 0.000372 0.001139 -0.000549 +Ta 0.0 0.0 0.0 -0.000369 1e-05 0.000393 +4 +Lattice = "4.19479990005 0.0 0.0 -0.00620000017807 4.21269989014 0.0 -0.01600000076 -0.0153000000864 4.20469999313" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.440513 stress="22841.39 1639.92 3610.02 1639.92 27085.86 3356.16 3610.02 3356.16 13927.91" +Ta 2.0894 -0.0076 2.1024 -0.000112 -0.000351 -0.000518 +Ta 2.0943 2.1064 0.0 0.00016 -0.000267 0.000412 +Ta -0.0111 2.0987 2.1024 -0.00016 0.000267 -0.000412 +Ta 0.0 0.0 0.0 0.000112 0.000351 0.000518 +4 +Lattice = "4.18660020828 0.0 0.0 -0.0172000005841 4.17999982834 0.0 -0.0137000000104 0.0121999997646 4.18389987946" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.409824 stress="54573.9 3803.25 2849.0 3803.25 53362.96 -2844.54 2849.0 -2844.54 43325.58" +Ta 2.0692 4.1861 2.092 0.000705 -1.8e-05 -0.000526 +Ta 2.0847 2.09 0.0 -0.000705 1.8e-05 0.000526 +Ta 4.1711 2.0961 2.092 0.000705 -1.8e-05 -0.000526 +Ta 0.0 0.0 0.0 -0.000705 1.8e-05 0.000526 +4 +Lattice = "4.20060014725 0.0 0.0 0.00219999998808 4.19719982147 0.0 -0.0162000004202 -0.00079999997979 4.21750020981" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.440329 stress="24420.449999999997 -556.41 3615.46 -556.41 22664.89 379.38 3615.46 379.38 13111.85" +Ta 2.0922 -0.0004 2.1088 1.1e-05 9e-05 -0.000468 +Ta 2.1014 2.0986 0.0 -1.1e-05 -9e-05 0.000468 +Ta -0.007 2.0982 2.1088 1.1e-05 9e-05 -0.000468 +Ta 0.0 0.0 0.0 -1.1e-05 -9e-05 0.000468 +4 +Lattice = "4.19640016556 0.0 0.0 0.00889999978244 4.20380020142 0.0 -0.0110999997705 0.0162000004202 4.20480012894" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.43773 stress="26565.65 -1735.6799999999998 2480.6400000000003 -1735.6799999999998 28315.010000000002 -3741.6200000000003 2480.6400000000003 -3741.6200000000003 17263.329999999998" +Ta 2.0927 0.0081 2.1024 -0.00063 -0.000147 2e-05 +Ta 2.1026 2.1019 0.0 0.00063 0.000147 -2e-05 +Ta -0.0011 2.11 2.1024 9.4e-05 3.4e-05 -2e-06 +Ta 0.0 0.0 0.0 -9.4e-05 -3.4e-05 2e-06 +4 +Lattice = "4.18130016327 0.0 0.0 0.0177999995649 4.18319988251 0.0 -0.00340000004508 -0.0187999997288 4.19859981537" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.416525 stress="45103.520000000004 -3012.21 864.34 -3012.21 46101.13 4242.0 864.34 4242.0 36460.39" +Ta 2.089 -0.0094 2.0993 -0.000372 -6.9e-05 -1.6e-05 +Ta 2.0996 2.0916 0.0 -0.000372 -6.9e-05 -1.6e-05 +Ta 0.0072 2.0822 2.0993 0.000372 6.9e-05 1.6e-05 +Ta 0.0 0.0 0.0 0.000372 6.9e-05 1.6e-05 +4 +Lattice = "4.19229984283 0.0 0.0 0.001200000057 4.20900011063 0.0 -0.0151000004262 -0.00659999996424 4.21150016785" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.440293 stress="27393.899999999998 -151.45 2769.0 -151.45 30944.28 1878.31 2769.0 1878.31 18332.49" +Ta 2.0886 -0.0033 2.1058 -0.00024 0.0 -0.000304 +Ta 2.0967 2.1045 0.0 0.00024 0.0 0.000304 +Ta 4.1853 2.1012 2.1058 0.000234 0.0 -0.000306 +Ta 0.0 0.0 0.0 -0.000234 0.0 0.000306 +4 +Lattice = "4.18419981003 0.0 0.0 0.0206000003964 4.209400177 0.0 -0.0109999999404 -0.00480000022799 4.21589994431" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.43839 stress="21338.170000000002 -4162.9 2184.87 -4162.9 28153.19 1038.1 2184.87 1038.1 15498.07" +Ta 2.1072 4.207 2.1079 -1.6e-05 9e-06 0.00028 +Ta 2.1024 2.1047 0.0 1.6e-05 -9e-06 -0.00028 +Ta 4.189 2.1023 2.1079 -1.6e-05 9e-06 0.00028 +Ta 0.0 0.0 0.0 1.6e-05 -9e-06 -0.00028 +4 +Lattice = "4.17980003357 0.0 0.0 0.00789999961853 4.21220016479 0.0 0.0197000000626 -0.00270000007004 4.2185997963" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.438916 stress="20722.52 -1865.4599999999998 -4386.49 -1865.4599999999998 29240.06 779.2900000000001 -4386.49 779.2900000000001 15461.880000000001" +Ta 2.0998 -0.0013 2.1093 -0.00064 -0.000286 9e-05 +Ta 2.0939 2.1061 0.0 -0.000872 0.000312 -7.4e-05 +Ta 4.1936 2.1048 2.1093 0.000872 -0.000312 7.4e-05 +Ta 0.0 0.0 0.0 0.00064 0.000286 -9e-05 diff --git a/examples/PACKAGES/pod/Ta/XYZ/GSF_110.xyz b/examples/PACKAGES/pod/Ta/XYZ/GSF_110.xyz new file mode 100644 index 0000000000..378878ef80 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/GSF_110.xyz @@ -0,0 +1,572 @@ +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.068761 stress="-2699.74 -3225.67 0.0 -3225.67 -11966.73 0.0 0.0 0.0 8811.74" +Ta 2.34759 1.66 0.09121 0.0 0.0 0.002389 +Ta 0.0 0.0 0.09121 0.0 0.0 0.002389 +Ta 0.0 1.66 2.3361 0.0 0.0 -0.010927 +Ta 2.34759 0.0 2.3361 0.0 0.0 -0.010927 +Ta 2.34759 1.66 4.68536 0.0 0.0 -0.004142 +Ta 0.0 0.0 4.68536 0.0 0.0 -0.004142 +Ta 0.0 1.66 7.03392 0.0 0.0 0.078092 +Ta 2.34759 0.0 7.03392 0.0 0.0 0.078092 +Ta 2.34759 1.66 9.38594 0.0 0.0 -0.152903 +Ta 0.0 0.0 9.38594 0.0 0.0 -0.152903 +Ta 0.0 1.66 11.73648 0.0 0.0 -0.861147 +Ta 2.34759 0.0 11.73648 0.0 0.0 -0.861147 +Ta 3.52139 2.49 14.08712 0.0 0.0 0.861147 +Ta 1.1738 0.83 14.08712 0.0 0.0 0.861147 +Ta 1.1738 2.49 16.43764 0.0 0.0 0.152903 +Ta 3.52139 0.83 16.43764 0.0 0.0 0.152903 +Ta 3.52139 2.49 18.78966 0.0 0.0 -0.078092 +Ta 1.1738 0.83 18.78966 0.0 0.0 -0.078092 +Ta 1.1738 2.49 21.13823 0.0 0.0 0.004142 +Ta 3.52139 0.83 21.13823 0.0 0.0 0.004142 +Ta 3.52139 2.49 23.48739 0.0 0.0 0.010927 +Ta 1.1738 0.83 23.48739 0.0 0.0 0.010927 +Ta 1.1738 2.49 25.73229 0.0 0.0 -0.002389 +Ta 3.52139 0.83 25.73229 0.0 0.0 -0.002389 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.784296 stress="-9310.84 -724.11 -1802.3100000000002 -724.11 -7581.28 -1731.35 -1802.3100000000002 -1731.35 -145.04" +Ta 2.34759 1.66 0.09121 -0.000195 -0.00161 0.000812 +Ta 0.0 0.0 0.09121 -0.000195 -0.00161 0.000812 +Ta 0.0 1.66 2.3361 -0.000284 0.000353 -0.002185 +Ta 2.34759 0.0 2.3361 -0.000284 0.000353 -0.002185 +Ta 2.34759 1.66 4.68536 0.008799 -0.00141 -0.002306 +Ta 0.0 0.0 4.68536 0.008799 -0.00141 -0.002306 +Ta 0.0 1.66 7.03392 -0.006695 0.021282 0.017658 +Ta 2.34759 0.0 7.03392 -0.006695 0.021282 0.017658 +Ta 2.34759 1.66 9.38594 -0.014885 -0.089566 0.000145 +Ta 0.0 0.0 9.38594 -0.014885 -0.089566 0.000145 +Ta 0.0 1.66 11.73648 0.220002 0.367425 -0.11205 +Ta 2.34759 0.0 11.73648 0.220002 0.367425 -0.11205 +Ta 2.58235 1.826 14.08712 -0.220002 -0.367425 0.11205 +Ta 0.23476 0.166 14.08712 -0.220002 -0.367425 0.11205 +Ta 0.23476 1.826 16.43764 0.014885 0.089566 -0.000145 +Ta 2.58235 0.166 16.43764 0.014885 0.089566 -0.000145 +Ta 2.58235 1.826 18.78966 0.006695 -0.021282 -0.017658 +Ta 0.23476 0.166 18.78966 0.006695 -0.021282 -0.017658 +Ta 0.23476 1.826 21.13823 -0.008799 0.00141 0.002306 +Ta 2.58235 0.166 21.13823 -0.008799 0.00141 0.002306 +Ta 2.58235 1.826 23.48739 0.000284 -0.000353 0.002185 +Ta 0.23476 0.166 23.48739 0.000284 -0.000353 0.002185 +Ta 0.23476 1.826 25.73229 0.000195 0.00161 -0.000812 +Ta 2.58235 0.166 25.73229 0.000195 0.00161 -0.000812 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.901657 stress="-9711.95 0.0 0.0 0.0 -7971.759999999999 0.0 0.0 0.0 -387.39" +Ta 2.34759 1.66 0.09122 0.0 0.0 -2.1e-05 +Ta 0.0 0.0 0.09122 0.0 0.0 -2.1e-05 +Ta 0.0 1.66 2.33609 0.0 0.0 0.000332 +Ta 2.34759 0.0 2.33609 0.0 0.0 0.000332 +Ta 2.34759 1.66 4.68537 0.0 0.0 0.000393 +Ta 0.0 0.0 4.68537 0.0 0.0 0.000393 +Ta 0.0 1.66 7.03419 0.0 0.0 8.4e-05 +Ta 2.34759 0.0 7.03419 0.0 0.0 8.4e-05 +Ta 2.34759 1.66 9.38555 0.0 0.0 -0.000286 +Ta 0.0 0.0 9.38555 0.0 0.0 -0.000286 +Ta 0.0 1.66 11.73665 0.0 0.0 -0.000509 +Ta 2.34759 0.0 11.73665 0.0 0.0 -0.000509 +Ta 4.69519 0.0 14.08695 0.0 0.0 0.000509 +Ta 2.3476 1.66 14.08695 0.0 0.0 0.000509 +Ta 2.3476 0.0 16.43803 0.0 0.0 0.000286 +Ta 4.69519 1.66 16.43803 0.0 0.0 0.000286 +Ta 4.69519 0.0 18.78939 0.0 0.0 -8.4e-05 +Ta 2.3476 1.66 18.78939 0.0 0.0 -8.4e-05 +Ta 2.3476 0.0 21.13822 0.0 0.0 -0.000393 +Ta 4.69519 1.66 21.13822 0.0 0.0 -0.000393 +Ta 4.69519 0.0 23.4874 0.0 0.0 -0.000332 +Ta 2.3476 1.66 23.4874 0.0 0.0 -0.000332 +Ta 2.3476 0.0 25.73228 0.0 0.0 2.1e-05 +Ta 4.69519 1.66 25.73228 0.0 0.0 2.1e-05 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.584238 stress="-8455.84 -1472.71 2162.92 -1472.71 -8121.589999999999 1800.64 2162.92 1800.64 -338.96" +Ta 2.34759 1.66 0.07452 -0.000101 0.002118 -0.001067 +Ta 0.0 0.0 0.07452 -0.000101 0.002118 -0.001067 +Ta 0.0 1.66 2.31914 0.000559 -0.002302 0.001125 +Ta 2.34759 0.0 2.31914 0.000559 -0.002302 0.001125 +Ta 2.34759 1.66 4.6683 -0.011564 0.001165 -0.001122 +Ta 0.0 0.0 4.6683 -0.011564 0.001165 -0.001122 +Ta 0.0 1.66 7.0214 0.010839 -0.033575 -0.000333 +Ta 2.34759 0.0 7.0214 0.010839 -0.033575 -0.000333 +Ta 2.34759 1.66 9.36328 0.008027 0.132954 0.000561 +Ta 0.0 0.0 9.36328 0.008027 0.132954 0.000561 +Ta 0.0 1.66 11.70268 -0.232266 -0.441609 -0.001106 +Ta 2.34759 0.0 11.70268 -0.232266 -0.441609 -0.001106 +Ta 4.22567 2.988 14.12092 0.232266 0.441609 0.001106 +Ta 1.87808 1.328 14.12092 0.232266 0.441609 0.001106 +Ta 1.87808 2.988 16.4603 -0.008027 -0.132954 -0.000561 +Ta 4.22567 1.328 16.4603 -0.008027 -0.132954 -0.000561 +Ta 4.22567 2.988 18.80218 -0.010839 0.033575 0.000333 +Ta 1.87808 1.328 18.80218 -0.010839 0.033575 0.000333 +Ta 1.87808 2.988 21.15529 0.011564 -0.001165 0.001122 +Ta 4.22567 1.328 21.15529 0.011564 -0.001165 0.001122 +Ta 4.22567 2.988 23.50435 -0.000559 0.002302 -0.001125 +Ta 1.87808 1.328 23.50435 -0.000559 0.002302 -0.001125 +Ta 1.87808 2.988 25.74898 0.000101 -0.002118 0.001067 +Ta 4.22567 1.328 25.74898 0.000101 -0.002118 0.001067 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.784283 stress="-9315.08 -723.62 1802.65 -723.62 -7584.349999999999 1731.7800000000002 1802.65 1731.7800000000002 -137.97" +Ta 2.34759 1.66 0.09121 0.000196 0.00161 0.000943 +Ta 0.0 0.0 0.09121 0.000196 0.00161 0.000943 +Ta 0.0 1.66 2.3361 0.000284 -0.000353 -0.002245 +Ta 2.34759 0.0 2.3361 0.000284 -0.000353 -0.002245 +Ta 2.34759 1.66 4.68536 -0.008799 0.00141 -0.002392 +Ta 0.0 0.0 4.68536 -0.008799 0.00141 -0.002392 +Ta 0.0 1.66 7.03392 0.006694 -0.021282 0.017465 +Ta 2.34759 0.0 7.03392 0.006694 -0.021282 0.017465 +Ta 2.34759 1.66 9.38594 0.014872 0.089556 -4.7e-05 +Ta 0.0 0.0 9.38594 0.014872 0.089556 -4.7e-05 +Ta 0.0 1.66 11.73648 -0.219937 -0.367391 -0.112068 +Ta 2.34759 0.0 11.73648 -0.219937 -0.367391 -0.112068 +Ta 4.46043 3.154 14.08712 0.219937 0.367391 0.112068 +Ta 2.11284 1.494 14.08712 0.219937 0.367391 0.112068 +Ta 2.11284 3.154 16.43764 -0.014872 -0.089556 4.7e-05 +Ta 4.46043 1.494 16.43764 -0.014872 -0.089556 4.7e-05 +Ta 4.46043 3.154 18.78966 -0.006694 0.021282 -0.017465 +Ta 2.11284 1.494 18.78966 -0.006694 0.021282 -0.017465 +Ta 2.11284 3.154 21.13823 0.008799 -0.00141 0.002392 +Ta 4.46043 1.494 21.13823 0.008799 -0.00141 0.002392 +Ta 4.46043 3.154 23.48739 -0.000284 0.000353 0.002245 +Ta 2.11284 1.494 23.48739 -0.000284 0.000353 0.002245 +Ta 2.11284 3.154 25.73229 -0.000196 -0.00161 -0.000943 +Ta 4.46043 1.494 25.73229 -0.000196 -0.00161 -0.000943 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.302158 stress="-5999.0 -2091.5499999999997 -2060.3199999999997 -2091.5499999999997 -8316.509999999998 -1933.87 -2060.3199999999997 -1933.87 4767.089999999999" +Ta 2.34759 1.66 0.09121 0.000338 -0.000764 0.003013 +Ta 0.0 0.0 0.09121 0.000338 -0.000764 0.003013 +Ta 0.0 1.66 2.3361 -0.000192 0.002217 -0.008533 +Ta 2.34759 0.0 2.3361 -0.000192 0.002217 -0.008533 +Ta 2.34759 1.66 4.68536 0.007402 -0.005681 -0.01113 +Ta 0.0 0.0 4.68536 0.007402 -0.005681 -0.01113 +Ta 0.0 1.66 7.03392 -0.010084 0.035505 0.068653 +Ta 2.34759 0.0 7.03392 -0.010084 0.035505 0.068653 +Ta 2.34759 1.66 9.38594 0.009421 -0.162853 -0.055133 +Ta 0.0 0.0 9.38594 0.009421 -0.162853 -0.055133 +Ta 0.0 1.66 11.73648 0.194592 0.543144 -0.645035 +Ta 2.34759 0.0 11.73648 0.194592 0.543144 -0.645035 +Ta 3.05187 2.158 14.08712 -0.194592 -0.543144 0.645035 +Ta 0.70428 0.498 14.08712 -0.194592 -0.543144 0.645035 +Ta 0.70428 2.158 16.43764 -0.009421 0.162853 0.055133 +Ta 3.05187 0.498 16.43764 -0.009421 0.162853 0.055133 +Ta 3.05187 2.158 18.78966 0.010084 -0.035505 -0.068653 +Ta 0.70428 0.498 18.78966 0.010084 -0.035505 -0.068653 +Ta 0.70428 2.158 21.13823 -0.007402 0.005681 0.01113 +Ta 3.05187 0.498 21.13823 -0.007402 0.005681 0.01113 +Ta 3.05187 2.158 23.48739 0.000192 -0.002217 0.008533 +Ta 0.70428 0.498 23.48739 0.000192 -0.002217 0.008533 +Ta 0.70428 2.158 25.73229 -0.000338 0.000764 -0.003013 +Ta 3.05187 0.498 25.73229 -0.000338 0.000764 -0.003013 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.55564 stress="-7951.990000000001 -1470.47 -2323.28 -1470.47 -7087.54 -2242.19 -2323.28 -2242.19 1393.38" +Ta 2.34759 1.66 0.09121 6.8e-05 -0.00218 0.002247 +Ta 0.0 0.0 0.09121 6.8e-05 -0.00218 0.002247 +Ta 0.0 1.66 2.3361 -0.000373 0.001531 -0.005318 +Ta 2.34759 0.0 2.3361 -0.000373 0.001531 -0.005318 +Ta 2.34759 1.66 4.68536 0.011743 -0.002192 -0.00859 +Ta 0.0 0.0 4.68536 0.011743 -0.002192 -0.00859 +Ta 0.0 1.66 7.03392 -0.010535 0.038081 0.052269 +Ta 2.34759 0.0 7.03392 -0.010535 0.038081 0.052269 +Ta 2.34759 1.66 9.38594 -0.00905 -0.147322 -0.015198 +Ta 0.0 0.0 9.38594 -0.00905 -0.147322 -0.015198 +Ta 0.0 1.66 11.73648 0.255618 0.52958 -0.348689 +Ta 2.34759 0.0 11.73648 0.255618 0.52958 -0.348689 +Ta 2.81711 1.992 14.08712 -0.255618 -0.52958 0.348689 +Ta 0.46952 0.332 14.08712 -0.255618 -0.52958 0.348689 +Ta 0.46952 1.992 16.43764 0.00905 0.147322 0.015198 +Ta 2.81711 0.332 16.43764 0.00905 0.147322 0.015198 +Ta 2.81711 1.992 18.78966 0.010535 -0.038081 -0.052269 +Ta 0.46952 0.332 18.78966 0.010535 -0.038081 -0.052269 +Ta 0.46952 1.992 21.13823 -0.011743 0.002192 0.00859 +Ta 2.81711 0.332 21.13823 -0.011743 0.002192 0.00859 +Ta 2.81711 1.992 23.48739 0.000373 -0.001531 0.005318 +Ta 0.46952 0.332 23.48739 0.000373 -0.001531 0.005318 +Ta 0.46952 1.992 25.73229 -6.8e-05 0.00218 -0.002247 +Ta 2.81711 0.332 25.73229 -6.8e-05 0.00218 -0.002247 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.246939 stress="-7247.110000000001 -2088.01 900.26 -2088.01 -12867.95 522.24 900.26 522.24 -343.87" +Ta 2.34759 1.66 0.0313 -0.000299 2.9e-05 0.000555 +Ta 0.0 0.0 0.0313 -0.000299 2.9e-05 0.000555 +Ta 0.0 1.66 2.27588 0.000225 -0.001627 0.00115 +Ta 2.34759 0.0 2.27588 0.000225 -0.001627 0.00115 +Ta 2.34759 1.66 4.62506 -0.002747 0.002713 0.000254 +Ta 0.0 0.0 4.62506 -0.002747 0.002713 0.000254 +Ta 0.0 1.66 6.98061 0.004373 -0.018318 9.6e-05 +Ta 2.34759 0.0 6.98061 0.004373 -0.018318 9.6e-05 +Ta 2.34759 1.66 9.31312 -0.010337 0.080996 -2e-06 +Ta 0.0 0.0 9.31312 -0.010337 0.080996 -2e-06 +Ta 0.0 1.66 11.6666 -0.064509 -0.216178 0.000109 +Ta 2.34759 0.0 11.6666 -0.064509 -0.216178 0.000109 +Ta 3.75615 2.656 14.157 0.064509 0.216178 -0.000109 +Ta 1.40856 0.996 14.157 0.064509 0.216178 -0.000109 +Ta 1.40856 2.656 16.51046 0.010337 -0.080996 2e-06 +Ta 3.75615 0.996 16.51046 0.010337 -0.080996 2e-06 +Ta 3.75615 2.656 18.84297 -0.004373 0.018318 -9.6e-05 +Ta 1.40856 0.996 18.84297 -0.004373 0.018318 -9.6e-05 +Ta 1.40856 2.656 21.19853 0.002747 -0.002713 -0.000254 +Ta 3.75615 0.996 21.19853 0.002747 -0.002713 -0.000254 +Ta 3.75615 2.656 23.54761 -0.000225 0.001627 -0.00115 +Ta 1.40856 0.996 23.54761 -0.000225 0.001627 -0.00115 +Ta 1.40856 2.656 25.7922 0.000299 -2.9e-05 -0.000555 +Ta 3.75615 0.996 25.7922 0.000299 -2.9e-05 -0.000555 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.302157 stress="-5999.4800000000005 -2091.2000000000003 2059.81 -2091.2000000000003 -8317.08 1933.52 2059.81 1933.52 4766.58" +Ta 2.34759 1.66 0.09121 -0.000338 0.000764 0.003027 +Ta 0.0 0.0 0.09121 -0.000338 0.000764 0.003027 +Ta 0.0 1.66 2.3361 0.000192 -0.002217 -0.008526 +Ta 2.34759 0.0 2.3361 0.000192 -0.002217 -0.008526 +Ta 2.34759 1.66 4.68536 -0.007402 0.005681 -0.011124 +Ta 0.0 0.0 4.68536 -0.007402 0.005681 -0.011124 +Ta 0.0 1.66 7.03392 0.010084 -0.035505 0.068661 +Ta 2.34759 0.0 7.03392 0.010084 -0.035505 0.068661 +Ta 2.34759 1.66 9.38594 -0.009421 0.162854 -0.055124 +Ta 0.0 0.0 9.38594 -0.009421 0.162854 -0.055124 +Ta 0.0 1.66 11.73648 -0.194591 -0.543144 -0.645027 +Ta 2.34759 0.0 11.73648 -0.194591 -0.543144 -0.645027 +Ta 3.99091 2.822 14.08712 0.194591 0.543144 0.645027 +Ta 1.64332 1.162 14.08712 0.194591 0.543144 0.645027 +Ta 1.64332 2.822 16.43764 0.009421 -0.162854 0.055124 +Ta 3.99091 1.162 16.43764 0.009421 -0.162854 0.055124 +Ta 3.99091 2.822 18.78966 -0.010084 0.035505 -0.068661 +Ta 1.64332 1.162 18.78966 -0.010084 0.035505 -0.068661 +Ta 1.64332 2.822 21.13823 0.007402 -0.005681 0.011124 +Ta 3.99091 1.162 21.13823 0.007402 -0.005681 0.011124 +Ta 3.99091 2.822 23.48739 -0.000192 0.002217 0.008526 +Ta 1.64332 1.162 23.48739 -0.000192 0.002217 0.008526 +Ta 1.64332 2.822 25.73229 0.000338 -0.000764 -0.003027 +Ta 3.99091 1.162 25.73229 0.000338 -0.000764 -0.003027 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.246935 stress="-7243.7300000000005 -2085.2 -898.75 -2085.2 -12860.99 -521.24 -898.75 -521.24 -339.14" +Ta 2.34759 1.66 0.03138 0.000299 -3.1e-05 0.000674 +Ta 0.0 0.0 0.03138 0.000299 -3.1e-05 0.000674 +Ta 0.0 1.66 2.276 -0.000225 0.001628 -0.00088 +Ta 2.34759 0.0 2.276 -0.000225 0.001628 -0.00088 +Ta 2.34759 1.66 4.62485 0.002741 -0.002715 0.000469 +Ta 0.0 0.0 4.62485 0.002741 -0.002715 0.000469 +Ta 0.0 1.66 6.98003 -0.004361 0.018297 0.002362 +Ta 2.34759 0.0 6.98003 -0.004361 0.018297 0.002362 +Ta 2.34759 1.66 9.31271 0.010328 -0.080927 0.000615 +Ta 0.0 0.0 9.31271 0.010328 -0.080927 0.000615 +Ta 0.0 1.66 11.66645 0.064416 0.215971 0.000489 +Ta 2.34759 0.0 11.66645 0.064416 0.215971 0.000489 +Ta 3.28663 2.324 14.15715 -0.064416 -0.215971 -0.000489 +Ta 0.93904 0.664 14.15715 -0.064416 -0.215971 -0.000489 +Ta 0.93904 2.324 16.51087 -0.010328 0.080927 -0.000615 +Ta 3.28663 0.664 16.51087 -0.010328 0.080927 -0.000615 +Ta 3.28663 2.324 18.84355 0.004361 -0.018297 -0.002362 +Ta 0.93904 0.664 18.84355 0.004361 -0.018297 -0.002362 +Ta 0.93904 2.324 21.19874 -0.002741 0.002715 -0.000469 +Ta 3.28663 0.664 21.19874 -0.002741 0.002715 -0.000469 +Ta 3.28663 2.324 23.54749 0.000225 -0.001628 0.00088 +Ta 0.93904 0.664 23.54749 0.000225 -0.001628 0.00088 +Ta 0.93904 2.324 25.79212 -0.000299 3.1e-05 -0.000674 +Ta 3.28663 0.664 25.79212 -0.000299 3.1e-05 -0.000674 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.896025 stress="-9869.42 0.0 0.0 0.0 -8124.2 0.0 0.0 0.0 -554.5600000000001" +Ta 2.34759 1.66 0.09121 0.0 0.0 0.000102 +Ta 0.0 0.0 0.09121 0.0 0.0 0.000102 +Ta 0.0 1.66 2.3361 0.0 0.0 -0.000104 +Ta 2.34759 0.0 2.3361 0.0 0.0 -0.000104 +Ta 2.34759 1.66 4.68536 0.0 0.0 0.000115 +Ta 0.0 0.0 4.68536 0.0 0.0 0.000115 +Ta 0.0 1.66 7.03392 0.0 0.0 0.002828 +Ta 2.34759 0.0 7.03392 0.0 0.0 0.002828 +Ta 2.34759 1.66 9.38594 0.0 0.0 -0.004132 +Ta 0.0 0.0 9.38594 0.0 0.0 -0.004132 +Ta 0.0 1.66 11.73648 0.0 0.0 0.001736 +Ta 2.34759 0.0 11.73648 0.0 0.0 0.001736 +Ta 2.34759 1.66 14.08712 0.0 0.0 -0.001736 +Ta 0.0 0.0 14.08712 0.0 0.0 -0.001736 +Ta 0.0 1.66 16.43764 0.0 0.0 0.004132 +Ta 2.34759 0.0 16.43764 0.0 0.0 0.004132 +Ta 2.34759 1.66 18.78966 0.0 0.0 -0.002828 +Ta 0.0 0.0 18.78966 0.0 0.0 -0.002828 +Ta 0.0 1.66 21.13823 0.0 0.0 -0.000115 +Ta 2.34759 0.0 21.13823 0.0 0.0 -0.000115 +Ta 2.34759 1.66 23.48739 0.0 0.0 0.000104 +Ta 0.0 0.0 23.48739 0.0 0.0 0.000104 +Ta 0.0 1.66 25.73229 0.0 0.0 -0.000102 +Ta 2.34759 0.0 25.73229 0.0 0.0 -0.000102 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.584237 stress="-8428.63 -1472.9 -2164.32 -1472.9 -8091.21 -1800.0100000000002 -2164.32 -1800.0100000000002 -288.22999999999996" +Ta 2.34759 1.66 0.07506 0.000102 -0.002133 -0.000914 +Ta 0.0 0.0 0.07506 0.000102 -0.002133 -0.000914 +Ta 0.0 1.66 2.31974 -0.000559 0.002291 0.000397 +Ta 2.34759 0.0 2.31974 -0.000559 0.002291 0.000397 +Ta 2.34759 1.66 4.6688 0.011573 -0.001165 -0.000831 +Ta 0.0 0.0 4.6688 0.011573 -0.001165 -0.000831 +Ta 0.0 1.66 7.02184 -0.010852 0.033591 -0.000593 +Ta 2.34759 0.0 7.02184 -0.010852 0.033591 -0.000593 +Ta 2.34759 1.66 9.36366 -0.008031 -0.133014 -0.000394 +Ta 0.0 0.0 9.36366 -0.008031 -0.133014 -0.000394 +Ta 0.0 1.66 11.70273 0.232392 0.441681 -0.000156 +Ta 2.34759 0.0 11.70273 0.232392 0.441681 -0.000156 +Ta 2.81711 1.992 14.12087 -0.232392 -0.441681 0.000156 +Ta 0.46952 0.332 14.12087 -0.232392 -0.441681 0.000156 +Ta 0.46952 1.992 16.45992 0.008031 0.133014 0.000394 +Ta 2.81711 0.332 16.45992 0.008031 0.133014 0.000394 +Ta 2.81711 1.992 18.80174 0.010852 -0.033591 0.000593 +Ta 0.46952 0.332 18.80174 0.010852 -0.033591 0.000593 +Ta 0.46952 1.992 21.15479 -0.011573 0.001165 0.000831 +Ta 2.81711 0.332 21.15479 -0.011573 0.001165 0.000831 +Ta 2.81711 1.992 23.50375 0.000559 -0.002291 -0.000397 +Ta 0.46952 0.332 23.50375 0.000559 -0.002291 -0.000397 +Ta 0.46952 1.992 25.74844 -0.000102 0.002133 0.000914 +Ta 2.81711 0.332 25.74844 -0.000102 0.002133 0.000914 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.124427 stress="-3757.0899999999997 -2887.24 902.0 -2887.24 -10640.1 866.64 902.0 866.64 7774.740000000001" +Ta 2.34759 1.66 0.09121 -0.000483 -0.000237 0.002307 +Ta 0.0 0.0 0.09121 -0.000483 -0.000237 0.002307 +Ta 0.0 1.66 2.3361 8.9e-05 -0.001539 -0.010324 +Ta 2.34759 0.0 2.3361 8.9e-05 -0.001539 -0.010324 +Ta 2.34759 1.66 4.68536 -0.003111 0.003535 -0.007613 +Ta 0.0 0.0 4.68536 -0.003111 0.003535 -0.007613 +Ta 0.0 1.66 7.03392 0.007146 -0.021127 0.073738 +Ta 2.34759 0.0 7.03392 0.007146 -0.021127 0.073738 +Ta 2.34759 1.66 9.38594 -0.013663 0.107342 -0.116996 +Ta 0.0 0.0 9.38594 -0.013663 0.107342 -0.116996 +Ta 0.0 1.66 11.73648 -0.067743 -0.32857 -0.821304 +Ta 2.34759 0.0 11.73648 -0.067743 -0.32857 -0.821304 +Ta 3.75615 2.656 14.08712 0.067743 0.32857 0.821304 +Ta 1.40856 0.996 14.08712 0.067743 0.32857 0.821304 +Ta 1.40856 2.656 16.43764 0.013663 -0.107342 0.116996 +Ta 3.75615 0.996 16.43764 0.013663 -0.107342 0.116996 +Ta 3.75615 2.656 18.78966 -0.007146 0.021127 -0.073738 +Ta 1.40856 0.996 18.78966 -0.007146 0.021127 -0.073738 +Ta 1.40856 2.656 21.13823 0.003111 -0.003535 0.007613 +Ta 3.75615 0.996 21.13823 0.003111 -0.003535 0.007613 +Ta 3.75615 2.656 23.48739 -8.9e-05 0.001539 0.010324 +Ta 1.40856 0.996 23.48739 -8.9e-05 0.001539 0.010324 +Ta 1.40856 2.656 25.73229 0.000483 0.000237 -0.002307 +Ta 3.75615 0.996 25.73229 0.000483 0.000237 -0.002307 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.379366 stress="-7763.09 -1797.51 1889.74 -1797.51 -10164.59 1320.57 1889.74 1320.57 34.12" +Ta 2.34759 1.66 0.05376 -0.000259 0.002166 -0.001263 +Ta 0.0 0.0 0.05376 -0.000259 0.002166 -0.001263 +Ta 0.0 1.66 2.29821 0.000506 -0.00178 0.000245 +Ta 2.34759 0.0 2.29821 0.000506 -0.00178 0.000245 +Ta 2.34759 1.66 4.64698 -0.007327 0.004782 -0.001824 +Ta 0.0 0.0 4.64698 -0.007327 0.004782 -0.001824 +Ta 0.0 1.66 7.00162 0.008163 -0.030937 -0.001313 +Ta 2.34759 0.0 7.00162 0.008163 -0.030937 -0.001313 +Ta 2.34759 1.66 9.33764 -0.007098 0.132381 -0.001661 +Ta 0.0 0.0 9.33764 -0.007098 0.132381 -0.001661 +Ta 0.0 1.66 11.67998 -0.168672 -0.393164 0.000838 +Ta 2.34759 0.0 11.67998 -0.168672 -0.393164 0.000838 +Ta 3.99091 2.822 14.14362 0.168672 0.393164 -0.000838 +Ta 1.64332 1.162 14.14362 0.168672 0.393164 -0.000838 +Ta 1.64332 2.822 16.48594 0.007098 -0.132381 0.001661 +Ta 3.99091 1.162 16.48594 0.007098 -0.132381 0.001661 +Ta 3.99091 2.822 18.82196 -0.008163 0.030937 0.001313 +Ta 1.64332 1.162 18.82196 -0.008163 0.030937 0.001313 +Ta 1.64332 2.822 21.17661 0.007327 -0.004782 0.001824 +Ta 3.99091 1.162 21.17661 0.007327 -0.004782 0.001824 +Ta 3.99091 2.822 23.52528 -0.000506 0.00178 -0.000245 +Ta 1.64332 1.162 23.52528 -0.000506 0.00178 -0.000245 +Ta 1.64332 2.822 25.76974 0.000259 -0.002166 0.001263 +Ta 3.99091 1.162 25.76974 0.000259 -0.002166 0.001263 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.37937 stress="-7778.34 -1797.1200000000001 -1889.07 -1797.1200000000001 -10180.85 -1319.78 -1889.07 -1319.78 5.64" +Ta 2.34759 1.66 0.0535 0.000258 -0.00217 -0.000937 +Ta 0.0 0.0 0.0535 0.000258 -0.00217 -0.000937 +Ta 0.0 1.66 2.29801 -0.000506 0.00178 -2.1e-05 +Ta 2.34759 0.0 2.29801 -0.000506 0.00178 -2.1e-05 +Ta 2.34759 1.66 4.64678 0.007324 -0.004781 -0.001649 +Ta 0.0 0.0 4.64678 0.007324 -0.004781 -0.001649 +Ta 0.0 1.66 7.00147 -0.00816 0.030933 -0.001233 +Ta 2.34759 0.0 7.00147 -0.00816 0.030933 -0.001233 +Ta 2.34759 1.66 9.33754 0.0071 -0.132353 -0.001629 +Ta 0.0 0.0 9.33754 0.0071 -0.132353 -0.001629 +Ta 0.0 1.66 11.67995 0.168627 0.393088 0.00081 +Ta 2.34759 0.0 11.67995 0.168627 0.393088 0.00081 +Ta 3.05187 2.158 14.14365 -0.168627 -0.393088 -0.00081 +Ta 0.70428 0.498 14.14365 -0.168627 -0.393088 -0.00081 +Ta 0.70428 2.158 16.48604 -0.0071 0.132353 0.001629 +Ta 3.05187 0.498 16.48604 -0.0071 0.132353 0.001629 +Ta 3.05187 2.158 18.82211 0.00816 -0.030933 0.001233 +Ta 0.70428 0.498 18.82211 0.00816 -0.030933 0.001233 +Ta 0.70428 2.158 21.17681 -0.007324 0.004781 0.001649 +Ta 3.05187 0.498 21.17681 -0.007324 0.004781 0.001649 +Ta 3.05187 2.158 23.52548 0.000506 -0.00178 2.1e-05 +Ta 0.70428 0.498 23.52548 0.000506 -0.00178 2.1e-05 +Ta 0.70428 2.158 25.77 -0.000258 0.00217 0.000937 +Ta 3.05187 0.498 25.77 -0.000258 0.00217 0.000937 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.124427 stress="-3756.4 -2886.7400000000002 -901.71 -2886.7400000000002 -10639.47 -867.12 -901.71 -867.12 7774.14" +Ta 2.34759 1.66 0.09121 0.000483 0.000237 0.002314 +Ta 0.0 0.0 0.09121 0.000483 0.000237 0.002314 +Ta 0.0 1.66 2.3361 -8.8e-05 0.001538 -0.010267 +Ta 2.34759 0.0 2.3361 -8.8e-05 0.001538 -0.010267 +Ta 2.34759 1.66 4.68536 0.003111 -0.003535 -0.007607 +Ta 0.0 0.0 4.68536 0.003111 -0.003535 -0.007607 +Ta 0.0 1.66 7.03392 -0.007146 0.021127 0.073723 +Ta 2.34759 0.0 7.03392 -0.007146 0.021127 0.073723 +Ta 2.34759 1.66 9.38594 0.013663 -0.10734 -0.116992 +Ta 0.0 0.0 9.38594 0.013663 -0.10734 -0.116992 +Ta 0.0 1.66 11.73648 0.067747 0.328568 -0.821295 +Ta 2.34759 0.0 11.73648 0.067747 0.328568 -0.821295 +Ta 3.28663 2.324 14.08712 -0.067747 -0.328568 0.821295 +Ta 0.93904 0.664 14.08712 -0.067747 -0.328568 0.821295 +Ta 0.93904 2.324 16.43764 -0.013663 0.10734 0.116992 +Ta 3.28663 0.664 16.43764 -0.013663 0.10734 0.116992 +Ta 3.28663 2.324 18.78966 0.007146 -0.021127 -0.073723 +Ta 0.93904 0.664 18.78966 0.007146 -0.021127 -0.073723 +Ta 0.93904 2.324 21.13823 -0.003111 0.003535 0.007607 +Ta 3.28663 0.664 21.13823 -0.003111 0.003535 0.007607 +Ta 3.28663 2.324 23.48739 8.8e-05 -0.001538 0.010267 +Ta 0.93904 0.664 23.48739 8.8e-05 -0.001538 0.010267 +Ta 0.93904 2.324 25.73229 -0.000483 -0.000237 -0.002314 +Ta 3.28663 0.664 25.73229 -0.000483 -0.000237 -0.002314 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.901657 stress="-9712.87 0.0 0.0 0.0 -7972.25 0.0 0.0 0.0 -388.31" +Ta 2.34759 1.66 0.09122 0.0 0.0 -1.6e-05 +Ta 0.0 0.0 0.09122 0.0 0.0 -1.6e-05 +Ta 0.0 1.66 2.33609 0.0 0.0 0.000319 +Ta 2.34759 0.0 2.33609 0.0 0.0 0.000319 +Ta 2.34759 1.66 4.68537 0.0 0.0 0.0004 +Ta 0.0 0.0 4.68537 0.0 0.0 0.0004 +Ta 0.0 1.66 7.03419 0.0 0.0 9.3e-05 +Ta 2.34759 0.0 7.03419 0.0 0.0 9.3e-05 +Ta 2.34759 1.66 9.38555 0.0 0.0 -0.000298 +Ta 0.0 0.0 9.38555 0.0 0.0 -0.000298 +Ta 0.0 1.66 11.73665 0.0 0.0 -0.000507 +Ta 2.34759 0.0 11.73665 0.0 0.0 -0.000507 +Ta 2.34759 1.66 14.08695 0.0 0.0 0.000507 +Ta 0.0 0.0 14.08695 0.0 0.0 0.000507 +Ta 0.0 1.66 16.43803 0.0 0.0 0.000298 +Ta 2.34759 0.0 16.43803 0.0 0.0 0.000298 +Ta 2.34759 1.66 18.78939 0.0 0.0 -9.3e-05 +Ta 0.0 0.0 18.78939 0.0 0.0 -9.3e-05 +Ta 0.0 1.66 21.13822 0.0 0.0 -0.0004 +Ta 2.34759 0.0 21.13822 0.0 0.0 -0.0004 +Ta 2.34759 1.66 23.4874 0.0 0.0 -0.000319 +Ta 0.0 0.0 23.4874 0.0 0.0 -0.000319 +Ta 0.0 1.66 25.73228 0.0 0.0 1.6e-05 +Ta 2.34759 0.0 25.73228 0.0 0.0 1.6e-05 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.79264 stress="-9277.630000000001 -706.52 -1762.12 -706.52 -7720.29 -1609.51 -1762.12 -1609.51 -420.21999999999997" +Ta 2.34759 1.66 0.0871 -0.000184 -0.001656 0.000674 +Ta 0.0 0.0 0.0871 -0.000184 -0.001656 0.000674 +Ta 0.0 1.66 2.332 -0.000294 0.000423 0.000306 +Ta 2.34759 0.0 2.332 -0.000294 0.000423 0.000306 +Ta 2.34759 1.66 4.68156 0.008643 -0.001357 -0.001853 +Ta 0.0 0.0 4.68156 0.008643 -0.001357 -0.001853 +Ta 0.0 1.66 7.03137 -0.006924 0.020397 -0.000275 +Ta 2.34759 0.0 7.03137 -0.006924 0.020397 -0.000275 +Ta 2.34759 1.66 9.38022 -0.01463 -0.087628 0.000622 +Ta 0.0 0.0 9.38022 -0.01463 -0.087628 0.000622 +Ta 0.0 1.66 11.72434 0.214497 0.348769 -0.000686 +Ta 2.34759 0.0 11.72434 0.214497 0.348769 -0.000686 +Ta 2.58235 1.826 14.09926 -0.214497 -0.348769 0.000686 +Ta 0.23476 0.166 14.09926 -0.214497 -0.348769 0.000686 +Ta 0.23476 1.826 16.44336 0.01463 0.087628 -0.000622 +Ta 2.58235 0.166 16.44336 0.01463 0.087628 -0.000622 +Ta 2.58235 1.826 18.79221 0.006924 -0.020397 0.000275 +Ta 0.23476 0.166 18.79221 0.006924 -0.020397 0.000275 +Ta 0.23476 1.826 21.14203 -0.008643 0.001357 0.001853 +Ta 2.58235 0.166 21.14203 -0.008643 0.001357 0.001853 +Ta 2.58235 1.826 23.49149 0.000294 -0.000423 -0.000306 +Ta 0.23476 0.166 23.49149 0.000294 -0.000423 -0.000306 +Ta 0.23476 1.826 25.7364 0.000184 0.001656 -0.000674 +Ta 2.58235 0.166 25.7364 0.000184 0.001656 -0.000674 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.896025 stress="-9868.86 0.0 0.0 0.0 -8124.259999999999 0.0 0.0 0.0 -554.9" +Ta 2.34759 1.66 0.09121 0.0 0.0 0.000107 +Ta 0.0 0.0 0.09121 0.0 0.0 0.000107 +Ta 0.0 1.66 2.3361 0.0 0.0 -9.8e-05 +Ta 2.34759 0.0 2.3361 0.0 0.0 -9.8e-05 +Ta 2.34759 1.66 4.68536 0.0 0.0 0.000111 +Ta 0.0 0.0 4.68536 0.0 0.0 0.000111 +Ta 0.0 1.66 7.03392 0.0 0.0 0.002832 +Ta 2.34759 0.0 7.03392 0.0 0.0 0.002832 +Ta 2.34759 1.66 9.38594 0.0 0.0 -0.004127 +Ta 0.0 0.0 9.38594 0.0 0.0 -0.004127 +Ta 0.0 1.66 11.73648 0.0 0.0 0.001737 +Ta 2.34759 0.0 11.73648 0.0 0.0 0.001737 +Ta 4.69519 0.0 14.08712 0.0 0.0 -0.001737 +Ta 2.3476 1.66 14.08712 0.0 0.0 -0.001737 +Ta 2.3476 0.0 16.43764 0.0 0.0 0.004127 +Ta 4.69519 1.66 16.43764 0.0 0.0 0.004127 +Ta 4.69519 0.0 18.78966 0.0 0.0 -0.002832 +Ta 2.3476 1.66 18.78966 0.0 0.0 -0.002832 +Ta 2.3476 0.0 21.13823 0.0 0.0 -0.000111 +Ta 4.69519 1.66 21.13823 0.0 0.0 -0.000111 +Ta 4.69519 0.0 23.48739 0.0 0.0 9.8e-05 +Ta 2.3476 1.66 23.48739 0.0 0.0 9.8e-05 +Ta 2.3476 0.0 25.73229 0.0 0.0 -0.000107 +Ta 4.69519 1.66 25.73229 0.0 0.0 -0.000107 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.206496 stress="-6761.16 -2211.9399999999996 0.0 -2211.9399999999996 -14026.06 0.0 0.0 0.0 -201.45" +Ta 2.34759 1.66 0.026 0.0 0.0 -0.000166 +Ta 0.0 0.0 0.026 0.0 0.0 -0.000166 +Ta 0.0 1.66 2.2705 0.0 0.0 -0.000442 +Ta 2.34759 0.0 2.2705 0.0 0.0 -0.000442 +Ta 2.34759 1.66 4.61955 0.0 0.0 -0.001018 +Ta 0.0 0.0 4.61955 0.0 0.0 -0.001018 +Ta 0.0 1.66 6.97451 0.0 0.0 0.001141 +Ta 2.34759 0.0 6.97451 0.0 0.0 0.001141 +Ta 2.34759 1.66 9.30496 0.0 0.0 0.000143 +Ta 0.0 0.0 9.30496 0.0 0.0 0.000143 +Ta 0.0 1.66 11.66343 0.0 0.0 0.002124 +Ta 2.34759 0.0 11.66343 0.0 0.0 0.002124 +Ta 3.52139 2.49 14.16017 0.0 0.0 -0.002124 +Ta 1.1738 0.83 14.16017 0.0 0.0 -0.002124 +Ta 1.1738 2.49 16.51862 0.0 0.0 -0.000143 +Ta 3.52139 0.83 16.51862 0.0 0.0 -0.000143 +Ta 3.52139 2.49 18.84907 0.0 0.0 -0.001141 +Ta 1.1738 0.83 18.84907 0.0 0.0 -0.001141 +Ta 1.1738 2.49 21.20404 0.0 0.0 0.001018 +Ta 3.52139 0.83 21.20404 0.0 0.0 0.001018 +Ta 3.52139 2.49 23.55299 0.0 0.0 0.000442 +Ta 1.1738 0.83 23.55299 0.0 0.0 0.000442 +Ta 1.1738 2.49 25.7975 0.0 0.0 0.000166 +Ta 3.52139 0.83 25.7975 0.0 0.0 0.000166 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.55564 stress="-7951.26 -1470.33 2322.88 -1470.33 -7086.45 2241.6200000000003 2322.88 2241.6200000000003 1394.24" +Ta 2.34759 1.66 0.09121 -6.8e-05 0.00218 0.002238 +Ta 0.0 0.0 0.09121 -6.8e-05 0.00218 0.002238 +Ta 0.0 1.66 2.3361 0.000372 -0.001531 -0.005316 +Ta 2.34759 0.0 2.3361 0.000372 -0.001531 -0.005316 +Ta 2.34759 1.66 4.68536 -0.011743 0.002192 -0.008604 +Ta 0.0 0.0 4.68536 -0.011743 0.002192 -0.008604 +Ta 0.0 1.66 7.03392 0.010535 -0.038081 0.05226 +Ta 2.34759 0.0 7.03392 0.010535 -0.038081 0.05226 +Ta 2.34759 1.66 9.38594 0.00905 0.147322 -0.015204 +Ta 0.0 0.0 9.38594 0.00905 0.147322 -0.015204 +Ta 0.0 1.66 11.73648 -0.255617 -0.52958 -0.348696 +Ta 2.34759 0.0 11.73648 -0.255617 -0.52958 -0.348696 +Ta 4.22567 2.988 14.08712 0.255617 0.52958 0.348696 +Ta 1.87808 1.328 14.08712 0.255617 0.52958 0.348696 +Ta 1.87808 2.988 16.43764 -0.00905 -0.147322 0.015204 +Ta 4.22567 1.328 16.43764 -0.00905 -0.147322 0.015204 +Ta 4.22567 2.988 18.78966 -0.010535 0.038081 -0.05226 +Ta 1.87808 1.328 18.78966 -0.010535 0.038081 -0.05226 +Ta 1.87808 2.988 21.13823 0.011743 -0.002192 0.008604 +Ta 4.22567 1.328 21.13823 0.011743 -0.002192 0.008604 +Ta 4.22567 2.988 23.48739 -0.000372 0.001531 0.005316 +Ta 1.87808 1.328 23.48739 -0.000372 0.001531 0.005316 +Ta 1.87808 2.988 25.73229 6.8e-05 -0.00218 -0.002238 +Ta 4.22567 1.328 25.73229 6.8e-05 -0.00218 -0.002238 +24 +Lattice = "4.69519042969 0.0 0.0 0.0 3.31999993324 0.0 0.0 0.0 53.1199989319" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.79264 stress="-9276.56 -705.96 1761.7 -705.96 -7718.9800000000005 1609.3500000000001 1761.7 1609.3500000000001 -417.65000000000003" +Ta 2.34759 1.66 0.08713 0.000184 0.001656 0.000681 +Ta 0.0 0.0 0.08713 0.000184 0.001656 0.000681 +Ta 0.0 1.66 2.33202 0.000294 -0.000424 0.000309 +Ta 2.34759 0.0 2.33202 0.000294 -0.000424 0.000309 +Ta 2.34759 1.66 4.68158 -0.008643 0.001357 -0.001844 +Ta 0.0 0.0 4.68158 -0.008643 0.001357 -0.001844 +Ta 0.0 1.66 7.03138 0.006924 -0.020398 -0.000267 +Ta 2.34759 0.0 7.03138 0.006924 -0.020398 -0.000267 +Ta 2.34759 1.66 9.38023 0.01463 0.087629 0.00063 +Ta 0.0 0.0 9.38023 0.01463 0.087629 0.00063 +Ta 0.0 1.66 11.72434 -0.214496 -0.34877 -0.000676 +Ta 2.34759 0.0 11.72434 -0.214496 -0.34877 -0.000676 +Ta 4.46043 3.154 14.09926 0.214496 0.34877 0.000676 +Ta 2.11284 1.494 14.09926 0.214496 0.34877 0.000676 +Ta 2.11284 3.154 16.44335 -0.01463 -0.087629 -0.00063 +Ta 4.46043 1.494 16.44335 -0.01463 -0.087629 -0.00063 +Ta 4.46043 3.154 18.7922 -0.006924 0.020398 0.000267 +Ta 2.11284 1.494 18.7922 -0.006924 0.020398 0.000267 +Ta 2.11284 3.154 21.14201 0.008643 -0.001357 0.001844 +Ta 4.46043 1.494 21.14201 0.008643 -0.001357 0.001844 +Ta 4.46043 3.154 23.49147 -0.000294 0.000424 -0.000309 +Ta 2.11284 1.494 23.49147 -0.000294 0.000424 -0.000309 +Ta 2.11284 3.154 25.73637 -0.000184 -0.001656 -0.000681 +Ta 4.46043 1.494 25.73637 -0.000184 -0.001656 -0.000681 diff --git a/examples/PACKAGES/pod/Ta/XYZ/GSF_112.xyz b/examples/PACKAGES/pod/Ta/XYZ/GSF_112.xyz new file mode 100644 index 0000000000..71e317e259 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/GSF_112.xyz @@ -0,0 +1,704 @@ +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.175835 stress="-13147.16 0.0 -3780.86 0.0 -8634.359999999999 0.0 -3780.86 0.0 -262.94" +Ta 0.9892 0.0 2.67612 0.024552 0.0 -0.00195 +Ta 0.00727 2.34759 4.02628 0.020645 0.0 9.3e-05 +Ta 2.88247 2.34759 4.02628 0.020645 0.0 9.3e-05 +Ta 0.17997 0.0 0.13381 0.04617 0.0 -0.000386 +Ta 3.05517 0.0 0.13381 0.04617 0.0 -0.000386 +Ta 1.87083 2.34759 1.2728 -0.032821 0.0 -0.001196 +Ta 4.74604 2.34759 1.2728 -0.032821 0.0 -0.001196 +Ta 3.86441 0.0 2.67612 0.024552 0.0 -0.00195 +Ta 0.94648 2.34759 6.72012 0.031811 0.0 0.000572 +Ta 0.00117 0.0 8.09323 0.426675 0.0 0.000202 +Ta 2.87637 0.0 8.09323 0.426675 0.0 0.000202 +Ta 1.91123 0.0 5.35809 -0.1254 0.0 0.000587 +Ta 4.78644 0.0 5.35809 -0.1254 0.0 0.000587 +Ta 3.82169 2.34759 6.72012 0.031811 0.0 0.000572 +Ta 1.9168 2.34759 9.40413 -0.175762 0.0 0.000278 +Ta 4.79201 2.34759 9.40413 -0.175762 0.0 0.000278 +Ta 2.10731 0.0 10.91795 0.187758 0.0 0.000468 +Ta 1.162 2.34759 12.2439 -0.520663 0.0 0.000295 +Ta 4.0372 2.34759 12.2439 -0.520663 0.0 0.000295 +Ta 4.98252 0.0 10.91795 0.187758 0.0 0.000468 +Ta 2.10121 2.34759 14.96595 0.131217 0.0 0.000175 +Ta 1.11928 0.0 16.30656 -0.015432 0.0 6e-06 +Ta 3.99448 0.0 16.30656 -0.015432 0.0 6e-06 +Ta 3.11285 2.34759 17.71541 0.007977 0.0 0.000401 +Ta 0.23765 2.34759 17.71541 0.007977 0.0 0.000401 +Ta 3.07245 0.0 13.62798 0.021452 0.0 0.000107 +Ta 0.19725 0.0 13.62798 0.021452 0.0 0.000107 +Ta 4.97642 2.34759 14.96595 0.131217 0.0 0.000175 +Ta 1.92851 0.0 18.85304 -0.028176 0.0 0.00035 +Ta 4.80372 0.0 18.85304 -0.028176 0.0 0.00035 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-346.361714 stress="-10339.27 0.0 -4235.839999999999 0.0 -10300.0 0.0 -4235.839999999999 0.0 -143.8" +Ta 0.9892 0.0 2.71788 0.039491 0.0 -0.003174 +Ta 0.00727 2.34759 4.0686 -0.006941 0.0 0.000225 +Ta 2.88247 2.34759 4.0686 -0.006941 0.0 0.000225 +Ta 0.17997 0.0 0.18084 0.006017 0.0 -0.000536 +Ta 3.05517 0.0 0.18084 0.006017 0.0 -0.000536 +Ta 1.87083 2.34759 1.32379 -0.009843 0.0 -0.001904 +Ta 4.74604 2.34759 1.32379 -0.009843 0.0 -0.001904 +Ta 3.86441 0.0 2.71788 0.039491 0.0 -0.003174 +Ta 0.94648 2.34759 6.76401 0.031952 0.0 0.001417 +Ta 0.00117 0.0 8.13836 0.170121 0.0 0.00142 +Ta 2.87637 0.0 8.13836 0.170121 0.0 0.00142 +Ta 1.91123 0.0 5.41435 -0.068665 0.0 0.001093 +Ta 4.78644 0.0 5.41435 -0.068665 0.0 0.001093 +Ta 3.82169 2.34759 6.76401 0.031952 0.0 0.001417 +Ta 1.9168 2.34759 9.47269 0.56983 0.0 0.001115 +Ta 4.79201 2.34759 9.47269 0.56983 0.0 0.001115 +Ta 1.24475 0.0 10.85237 -0.591123 0.0 0.000193 +Ta 0.29944 2.34759 12.20261 -0.170693 0.0 -0.00076 +Ta 3.17464 2.34759 12.20261 -0.170693 0.0 -0.00076 +Ta 4.11996 0.0 10.85237 -0.591123 0.0 0.000193 +Ta 1.23865 2.34759 14.90362 0.062003 0.0 -0.000147 +Ta 0.25672 0.0 16.25811 0.014238 0.0 6.7e-05 +Ta 3.13192 0.0 16.25811 0.014238 0.0 6.7e-05 +Ta 2.25029 2.34759 17.65366 -0.022348 0.0 0.000828 +Ta 5.1255 2.34759 17.65366 -0.022348 0.0 0.000828 +Ta 2.20989 0.0 13.56973 -0.01066 0.0 -0.000183 +Ta 5.0851 0.0 13.56973 -0.01066 0.0 -0.000183 +Ta 4.11386 2.34759 14.90362 0.062003 0.0 -0.000147 +Ta 1.06595 0.0 18.79472 -0.01338 0.0 0.000344 +Ta 3.94116 0.0 18.79472 -0.01338 0.0 0.000344 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.795524 stress="-11480.130000000001 0.0 -5932.89 0.0 -5542.72 0.0 -5932.89 0.0 3462.38" +Ta 0.9892 0.0 2.7203 0.054393 0.0 0.051613 +Ta 0.00727 2.34759 4.07239 0.011422 0.0 0.01044 +Ta 2.88247 2.34759 4.07239 0.011422 0.0 0.01044 +Ta 0.17997 0.0 0.18449 0.010146 0.0 -0.022298 +Ta 3.05517 0.0 0.18449 0.010146 0.0 -0.022298 +Ta 1.87083 2.34759 1.32776 -0.011079 0.0 -0.021669 +Ta 4.74604 2.34759 1.32776 -0.011079 0.0 -0.021669 +Ta 3.86441 0.0 2.7203 0.054393 0.0 0.051613 +Ta 0.94648 2.34759 6.77133 0.038911 0.0 -0.069106 +Ta 0.00117 0.0 8.1367 0.287747 0.0 -0.1262 +Ta 2.87637 0.0 8.1367 0.287747 0.0 -0.1262 +Ta 1.91123 0.0 5.41489 -0.141892 0.0 0.03774 +Ta 4.78644 0.0 5.41489 -0.141892 0.0 0.03774 +Ta 3.82169 2.34759 6.77133 0.038911 0.0 -0.069106 +Ta 1.9168 2.34759 9.48769 0.847487 0.0 -0.484094 +Ta 4.79201 2.34759 9.48769 0.847487 0.0 -0.484094 +Ta 1.53227 0.0 10.83871 -0.88891 0.0 0.460491 +Ta 0.58696 2.34759 12.20409 -0.291722 0.0 0.122028 +Ta 3.46216 2.34759 12.20409 -0.291722 0.0 0.122028 +Ta 4.40748 0.0 10.83871 -0.88891 0.0 0.460491 +Ta 1.52617 2.34759 14.90296 0.134409 0.0 -0.060843 +Ta 0.54424 0.0 16.25507 -0.007639 0.0 -0.054033 +Ta 3.41944 0.0 16.25507 -0.007639 0.0 -0.054033 +Ta 2.53781 2.34759 17.64762 -0.034954 0.0 0.011635 +Ta 5.41302 2.34759 17.64762 -0.034954 0.0 0.011635 +Ta 2.49741 0.0 13.56045 -0.007731 0.0 0.131746 +Ta 5.37262 0.0 13.56045 -0.007731 0.0 0.131746 +Ta 4.40138 2.34759 14.90296 0.134409 0.0 -0.060843 +Ta 1.35347 0.0 18.79091 -0.000588 0.0 0.012548 +Ta 4.22868 0.0 18.79091 -0.000588 0.0 0.012548 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.164602 stress="-11863.390000000001 0.0 -2699.1299999999997 0.0 -8952.85 0.0 -2699.1299999999997 0.0 -224.73000000000002" +Ta 0.9892 0.0 2.67528 0.007638 0.0 0.001035 +Ta 0.00727 2.34759 4.02882 0.030305 0.0 -0.001775 +Ta 2.88247 2.34759 4.02882 0.030305 0.0 -0.001775 +Ta 0.17997 0.0 0.13405 0.029187 0.0 -0.000966 +Ta 3.05517 0.0 0.13405 0.029187 0.0 -0.000966 +Ta 1.87083 2.34759 1.27454 -0.02274 0.0 0.00023 +Ta 4.74604 2.34759 1.27454 -0.02274 0.0 0.00023 +Ta 3.86441 0.0 2.67528 0.007638 0.0 0.001035 +Ta 0.94648 2.34759 6.72231 -0.027764 0.0 -0.000181 +Ta 0.00117 0.0 8.09205 0.529066 0.0 -0.000552 +Ta 2.87637 0.0 8.09205 0.529066 0.0 -0.000552 +Ta 1.91123 0.0 5.3597 -0.091215 0.0 -0.000447 +Ta 4.78644 0.0 5.3597 -0.091215 0.0 -0.000447 +Ta 3.82169 2.34759 6.72231 -0.027764 0.0 -0.000181 +Ta 1.9168 2.34759 9.39558 -0.613631 0.0 -0.000278 +Ta 4.79201 2.34759 9.39558 -0.613631 0.0 -0.000278 +Ta 2.39483 0.0 10.92856 0.685544 0.0 -0.000982 +Ta 1.44952 2.34759 12.2419 -0.636467 0.0 0.000459 +Ta 4.32472 2.34759 12.2419 -0.636467 0.0 0.000459 +Ta 5.27004 0.0 10.92856 0.685544 0.0 -0.000982 +Ta 2.38873 2.34759 14.96563 0.083017 0.0 0.000884 +Ta 1.4068 0.0 16.30385 -0.037081 0.0 0.000794 +Ta 4.282 0.0 16.30385 -0.037081 0.0 0.000794 +Ta 3.40038 2.34759 17.71704 0.037388 0.0 0.000623 +Ta 0.52518 2.34759 17.71704 0.037388 0.0 0.000623 +Ta 3.35997 0.0 13.62371 0.068589 0.0 -0.000292 +Ta 0.48477 0.0 13.62371 0.068589 0.0 -0.000292 +Ta 5.26394 2.34759 14.96563 0.083017 0.0 0.000884 +Ta 2.21604 0.0 18.85233 -0.041835 0.0 0.001449 +Ta 5.09124 0.0 18.85233 -0.041835 0.0 0.001449 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-346.593523 stress="-9414.98 0.0 -281.99 0.0 -11857.62 0.0 -281.99 0.0 174.60999999999999" +Ta 0.9892 0.0 2.7203 0.00126 0.0 -0.000952 +Ta 0.00727 2.34759 4.07239 0.002425 0.0 -0.000721 +Ta 2.88247 2.34759 4.07239 0.002425 0.0 -0.000721 +Ta 0.17997 0.0 0.18449 0.003483 0.0 -0.001569 +Ta 3.05517 0.0 0.18449 0.003483 0.0 -0.001569 +Ta 1.87083 2.34759 1.32776 -0.001158 0.0 -0.001292 +Ta 4.74604 2.34759 1.32776 -0.001158 0.0 -0.001292 +Ta 3.86441 0.0 2.7203 0.00126 0.0 -0.000952 +Ta 0.94648 2.34759 6.77133 -0.000275 0.0 -0.000556 +Ta 0.00117 0.0 8.1367 0.001745 0.0 0.000187 +Ta 2.87637 0.0 8.1367 0.001745 0.0 0.000187 +Ta 1.91123 0.0 5.41489 0.00171 0.0 -0.000333 +Ta 4.78644 0.0 5.41489 0.00171 0.0 -0.000333 +Ta 3.82169 2.34759 6.77133 -0.000275 0.0 -0.000556 +Ta 1.9168 2.34759 9.48769 0.0 0.0 0.0 +Ta 4.79201 2.34759 9.48769 0.0 0.0 0.0 +Ta 0.95723 0.0 10.83871 -0.001745 0.0 -0.000187 +Ta 0.01192 2.34759 12.20409 0.000275 0.0 0.000556 +Ta 2.88712 2.34759 12.20409 0.000275 0.0 0.000556 +Ta 3.83244 0.0 10.83871 -0.001745 0.0 -0.000187 +Ta 0.95113 2.34759 14.90296 -0.002425 0.0 0.000721 +Ta 5.71961 0.0 16.25507 -0.00126 0.0 0.000952 +Ta 2.8444 0.0 16.25507 -0.00126 0.0 0.000952 +Ta 1.96277 2.34759 17.64762 0.001158 0.0 0.001292 +Ta 4.83798 2.34759 17.64762 0.001158 0.0 0.001292 +Ta 1.92237 0.0 13.56045 -0.00171 0.0 0.000333 +Ta 4.79758 0.0 13.56045 -0.00171 0.0 0.000333 +Ta 3.82634 2.34759 14.90296 -0.002425 0.0 0.000721 +Ta 0.77843 0.0 18.79091 -0.003483 0.0 0.001569 +Ta 3.65364 0.0 18.79091 -0.003483 0.0 0.001569 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-346.396186 stress="-10475.46 0.0 3307.63 0.0 -12303.68 0.0 3307.63 0.0 -222.97" +Ta 0.9892 0.0 2.7089 -0.03377 0.0 0.000745 +Ta 0.00727 2.34759 4.06352 0.026744 0.0 -0.000861 +Ta 2.88247 2.34759 4.06352 0.026744 0.0 -0.000861 +Ta 0.17997 0.0 0.17306 0.009028 0.0 8.9e-05 +Ta 3.05517 0.0 0.17306 0.009028 0.0 8.9e-05 +Ta 1.87083 2.34759 1.31619 -0.000498 0.0 -6.9e-05 +Ta 4.74604 2.34759 1.31619 -0.000498 0.0 -6.9e-05 +Ta 3.86441 0.0 2.7089 -0.03377 0.0 0.000745 +Ta 0.94648 2.34759 6.76338 -0.065394 0.0 0.000752 +Ta 0.00117 0.0 8.1099 -0.098249 0.0 -0.002005 +Ta 2.87637 0.0 8.1099 -0.098249 0.0 -0.002005 +Ta 1.91123 0.0 5.40302 0.044662 0.0 -0.00054 +Ta 4.78644 0.0 5.40302 0.044662 0.0 -0.00054 +Ta 3.82169 2.34759 6.76338 -0.065394 0.0 0.000752 +Ta 1.9168 2.34759 9.48192 -0.476879 0.0 0.000537 +Ta 4.79201 2.34759 9.48192 -0.476879 0.0 0.000537 +Ta 3.54491 0.0 10.84588 0.484374 0.0 -0.000329 +Ta 2.59961 2.34759 12.23162 0.102585 0.0 0.000934 +Ta 5.47481 2.34759 12.23162 0.102585 0.0 0.000934 +Ta 0.66971 0.0 10.84588 0.484374 0.0 -0.000329 +Ta 3.53881 2.34759 14.91622 -0.038582 0.0 0.000491 +Ta 2.55688 0.0 16.2663 -0.029184 0.0 8.5e-05 +Ta 5.43208 0.0 16.2663 -0.029184 0.0 8.5e-05 +Ta 4.55046 2.34759 17.66134 0.026269 0.0 -0.000704 +Ta 1.67526 2.34759 17.66134 0.026269 0.0 -0.000704 +Ta 4.51005 0.0 13.57023 0.044788 0.0 0.000159 +Ta 1.63485 0.0 13.57023 0.044788 0.0 0.000159 +Ta 0.66361 2.34759 14.91622 -0.038582 0.0 0.000491 +Ta 3.36612 0.0 18.80388 0.004104 0.0 0.000717 +Ta 0.49092 0.0 18.80388 0.004104 0.0 0.000717 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.319406 stress="-11416.52 0.0 -757.17 0.0 -9138.949999999999 0.0 -757.17 0.0 -340.37" +Ta 0.9892 0.0 2.6792 -0.016362 0.0 0.000549 +Ta 0.00727 2.34759 4.0346 0.061621 0.0 0.000282 +Ta 2.88247 2.34759 4.0346 0.061621 0.0 0.000282 +Ta 0.17997 0.0 0.13955 0.017834 0.0 -0.000235 +Ta 3.05517 0.0 0.13955 0.017834 0.0 -0.000235 +Ta 1.87083 2.34759 1.28166 -0.013104 0.0 -5.3e-05 +Ta 4.74604 2.34759 1.28166 -0.013104 0.0 -5.3e-05 +Ta 3.86441 0.0 2.6792 -0.016362 0.0 0.000549 +Ta 0.94648 2.34759 6.7292 -0.109435 0.0 -0.002041 +Ta 0.00117 0.0 8.07884 0.457863 0.0 0.000169 +Ta 2.87637 0.0 8.07884 0.457863 0.0 0.000169 +Ta 1.91123 0.0 5.36942 -0.062934 0.0 -0.000236 +Ta 4.78644 0.0 5.36942 -0.062934 0.0 -0.000236 +Ta 3.82169 2.34759 6.7292 -0.109435 0.0 -0.002041 +Ta 1.9168 2.34759 9.41051 -0.711692 0.0 0.000101 +Ta 4.79201 2.34759 9.41051 -0.711692 0.0 0.000101 +Ta 2.68235 0.0 10.91706 0.761406 0.0 -0.00084 +Ta 1.73705 2.34759 12.25543 -0.48479 0.0 0.001087 +Ta 4.61225 2.34759 12.25543 -0.48479 0.0 0.001087 +Ta 5.55756 0.0 10.91706 0.761406 0.0 -0.00084 +Ta 2.67625 2.34759 14.95587 0.044573 0.0 0.001069 +Ta 1.69432 0.0 16.29727 -0.054726 0.0 0.000221 +Ta 4.56952 0.0 16.29727 -0.054726 0.0 0.000221 +Ta 3.6879 2.34759 17.70919 0.045804 0.0 -0.000493 +Ta 0.8127 2.34759 17.70919 0.045804 0.0 -0.000493 +Ta 3.64749 0.0 13.61175 0.101011 0.0 0.001537 +Ta 0.77229 0.0 13.61175 0.101011 0.0 0.001537 +Ta 5.55146 2.34759 14.95587 0.044573 0.0 0.001069 +Ta 2.50356 0.0 18.84582 -0.037068 0.0 -0.001117 +Ta 5.37876 0.0 18.84582 -0.037068 0.0 -0.001117 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.594794 stress="-11819.76 0.0 1952.92 0.0 -9519.769999999999 0.0 1952.92 0.0 -130.88" +Ta 0.9892 0.0 2.68665 -0.031396 0.0 0.000256 +Ta 0.00727 2.34759 4.04268 0.07751 0.0 -0.000764 +Ta 2.88247 2.34759 4.04268 0.07751 0.0 -0.000764 +Ta 0.17997 0.0 0.14906 0.014641 0.0 -0.00412 +Ta 3.05517 0.0 0.14906 0.014641 0.0 -0.00412 +Ta 1.87083 2.34759 1.29212 -0.010131 0.0 -0.002448 +Ta 4.74604 2.34759 1.29212 -0.010131 0.0 -0.002448 +Ta 3.86441 0.0 2.68665 -0.031396 0.0 0.000256 +Ta 0.94648 2.34759 6.73839 -0.134831 0.0 0.001428 +Ta 0.00117 0.0 8.07155 0.239952 0.0 0.002962 +Ta 2.87637 0.0 8.07155 0.239952 0.0 0.002962 +Ta 1.91123 0.0 5.38052 -0.030029 0.0 -0.000509 +Ta 4.78644 0.0 5.38052 -0.030029 0.0 -0.000509 +Ta 3.82169 2.34759 6.73839 -0.134831 0.0 0.001428 +Ta 1.9168 2.34759 9.43202 -0.708973 0.0 0.000446 +Ta 4.79201 2.34759 9.43202 -0.708973 0.0 0.000446 +Ta 2.96987 0.0 10.89606 0.708813 0.0 0.000528 +Ta 2.02457 2.34759 12.26428 -0.203649 0.0 0.002064 +Ta 4.89977 2.34759 12.26428 -0.203649 0.0 0.002064 +Ta 0.09467 0.0 10.89606 0.708813 0.0 0.000528 +Ta 2.96377 2.34759 14.9433 0.014742 0.0 -0.000587 +Ta 1.98184 0.0 16.28932 -0.077212 0.0 0.001835 +Ta 4.85704 0.0 16.28932 -0.077212 0.0 0.001835 +Ta 3.97542 2.34759 17.69607 0.052551 0.0 -9.3e-05 +Ta 1.10022 2.34759 17.69607 0.052551 0.0 -9.3e-05 +Ta 3.93501 0.0 13.59778 0.097817 0.0 0.000127 +Ta 1.05981 0.0 13.59778 0.097817 0.0 0.000127 +Ta 0.08857 2.34759 14.9433 0.014742 0.0 -0.000587 +Ta 2.79108 0.0 18.83554 -0.009805 0.0 -0.001124 +Ta 5.66629 0.0 18.83554 -0.009805 0.0 -0.001124 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.98566 stress="-11481.859999999999 0.0 3919.02 0.0 -10708.259999999998 0.0 3919.02 0.0 -234.91" +Ta 0.9892 0.0 2.69672 -0.042372 0.0 -0.001938 +Ta 0.00727 2.34759 4.05296 0.05908 0.0 0.000592 +Ta 2.88247 2.34759 4.05296 0.05908 0.0 0.000592 +Ta 0.17997 0.0 0.16008 0.012695 0.0 0.000742 +Ta 3.05517 0.0 0.16008 0.012695 0.0 0.000742 +Ta 1.87083 2.34759 1.30375 -0.006266 0.0 -0.00108 +Ta 4.74604 2.34759 1.30375 -0.006266 0.0 -0.00108 +Ta 3.86441 0.0 2.69672 -0.042372 0.0 -0.001938 +Ta 0.94648 2.34759 6.75108 -0.115544 0.0 0.001071 +Ta 0.00117 0.0 8.08344 0.015442 0.0 7e-06 +Ta 2.87637 0.0 8.08344 0.015442 0.0 7e-06 +Ta 1.91123 0.0 5.39189 0.017023 0.0 -0.000768 +Ta 4.78644 0.0 5.39189 0.017023 0.0 -0.000768 +Ta 3.82169 2.34759 6.75108 -0.115544 0.0 0.001071 +Ta 1.9168 2.34759 9.45911 -0.69384 0.0 0.000691 +Ta 4.79201 2.34759 9.45911 -0.69384 0.0 0.000691 +Ta 3.25739 0.0 10.86943 0.687279 0.0 -0.000892 +Ta 2.31209 2.34759 12.25603 0.025406 0.0 0.001977 +Ta 5.18729 2.34759 12.25603 0.025406 0.0 0.001977 +Ta 0.38219 0.0 10.86943 0.687279 0.0 -0.000892 +Ta 3.25129 2.34759 14.92962 -0.021568 0.0 -0.000155 +Ta 2.26936 0.0 16.27869 -0.069625 0.0 6e-05 +Ta 5.14456 0.0 16.27869 -0.069625 0.0 6e-05 +Ta 4.26294 2.34759 17.67903 0.042589 0.0 -0.000517 +Ta 1.38774 2.34759 17.67903 0.042589 0.0 -0.000517 +Ta 4.22253 0.0 13.58337 0.088627 0.0 -0.000326 +Ta 1.34733 0.0 13.58337 0.088627 0.0 -0.000326 +Ta 0.37609 2.34759 14.92962 -0.021568 0.0 -0.000155 +Ta 3.0786 0.0 18.82016 0.001073 0.0 0.000537 +Ta 0.2034 0.0 18.82016 0.001073 0.0 0.000537 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.383994 stress="-14034.28 0.0 -4327.110000000001 0.0 -7778.13 0.0 -4327.110000000001 0.0 -145.71" +Ta 0.9892 0.0 2.68561 0.041017 0.0 -0.001969 +Ta 0.00727 2.34759 4.03469 0.0126 0.0 -0.000764 +Ta 2.88247 2.34759 4.03469 0.0126 0.0 -0.000764 +Ta 0.17997 0.0 0.14398 0.044685 0.0 -0.000337 +Ta 3.05517 0.0 0.14398 0.044685 0.0 -0.000337 +Ta 1.87083 2.34759 1.28198 -0.034873 0.0 -0.000989 +Ta 4.74604 2.34759 1.28198 -0.034873 0.0 -0.000989 +Ta 3.86441 0.0 2.68561 0.041017 0.0 -0.001969 +Ta 0.94648 2.34759 6.72523 0.015472 0.0 9.3e-05 +Ta 0.00117 0.0 8.09686 0.374311 0.0 -0.000718 +Ta 2.87637 0.0 8.09686 0.374311 0.0 -0.000718 +Ta 1.91123 0.0 5.37077 -0.13875 0.0 0.000234 +Ta 4.78644 0.0 5.37077 -0.13875 0.0 0.000234 +Ta 3.82169 2.34759 6.72523 0.015472 0.0 9.3e-05 +Ta 1.9168 2.34759 9.42312 0.226851 0.0 -0.000505 +Ta 4.79201 2.34759 9.42312 0.226851 0.0 -0.000505 +Ta 1.81979 0.0 10.90137 -0.264136 0.0 0.001111 +Ta 0.87448 2.34759 12.24514 -0.397596 0.0 -1.3e-05 +Ta 3.74968 2.34759 12.24514 -0.397596 0.0 -1.3e-05 +Ta 4.695 0.0 10.90137 -0.264136 0.0 0.001111 +Ta 1.81369 2.34759 14.95092 0.137584 0.0 0.001218 +Ta 0.83176 0.0 16.29656 -0.006289 0.0 -0.001428 +Ta 3.70696 0.0 16.29656 -0.006289 0.0 -0.001428 +Ta 2.82533 2.34759 17.69976 -0.018746 0.0 0.000228 +Ta 5.70054 2.34759 17.69976 -0.018746 0.0 0.000228 +Ta 2.78493 0.0 13.62057 0.025174 0.0 0.001582 +Ta 5.66014 0.0 13.62057 0.025174 0.0 0.001582 +Ta 4.6889 2.34759 14.95092 0.137584 0.0 0.001218 +Ta 1.64099 0.0 18.83881 -0.017303 0.0 0.002258 +Ta 4.5162 0.0 18.83881 -0.017303 0.0 0.002258 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-346.582564 stress="-9591.91 0.0 -296.03000000000003 0.0 -12027.84 0.0 -296.03000000000003 0.0 -17.44" +Ta 0.9892 0.0 2.72001 0.001297 0.0 -0.000868 +Ta 0.00727 2.34759 4.07221 0.002338 0.0 -0.000918 +Ta 2.88247 2.34759 4.07221 0.002338 0.0 -0.000918 +Ta 0.17997 0.0 0.18416 0.004037 0.0 -0.001343 +Ta 3.05517 0.0 0.18416 0.004037 0.0 -0.001343 +Ta 1.87083 2.34759 1.32742 -0.00151 0.0 -0.00104 +Ta 4.74604 2.34759 1.32742 -0.00151 0.0 -0.00104 +Ta 3.86441 0.0 2.72001 0.001297 0.0 -0.000868 +Ta 0.94648 2.34759 6.77122 -0.000493 0.0 -5.2e-05 +Ta 0.00117 0.0 8.13674 0.002006 0.0 -0.000634 +Ta 2.87637 0.0 8.13674 0.002006 0.0 -0.000634 +Ta 1.91123 0.0 5.41485 0.001966 0.0 -0.001189 +Ta 4.78644 0.0 5.41485 0.001966 0.0 -0.001189 +Ta 3.82169 2.34759 6.77122 -0.000493 0.0 -5.2e-05 +Ta 1.9168 2.34759 9.48769 0.0 0.0 0.0 +Ta 4.79201 2.34759 9.48769 0.0 0.0 0.0 +Ta 3.83244 0.0 10.83867 -0.002006 0.0 0.000634 +Ta 2.88713 2.34759 12.2042 0.000493 0.0 5.2e-05 +Ta 0.01192 2.34759 12.2042 0.000493 0.0 5.2e-05 +Ta 0.95723 0.0 10.83867 -0.002006 0.0 0.000634 +Ta 3.82633 2.34759 14.90314 -0.002338 0.0 0.000918 +Ta 2.8444 0.0 16.25536 -0.001297 0.0 0.000868 +Ta 5.7196 0.0 16.25536 -0.001297 0.0 0.000868 +Ta 4.83798 2.34759 17.64796 0.00151 0.0 0.00104 +Ta 1.96278 2.34759 17.64796 0.00151 0.0 0.00104 +Ta 4.79758 0.0 13.56049 -0.001966 0.0 0.001189 +Ta 1.92238 0.0 13.56049 -0.001966 0.0 0.001189 +Ta 0.95113 2.34759 14.90314 -0.002338 0.0 0.000918 +Ta 3.65364 0.0 18.79124 -0.004037 0.0 0.001343 +Ta 0.77844 0.0 18.79124 -0.004037 0.0 0.001343 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.452139 stress="-8486.44 0.0 2195.0699999999997 0.0 -6268.24 0.0 2195.0699999999997 0.0 6817.8099999999995" +Ta 0.9892 0.0 2.7203 -0.023223 0.0 0.001016 +Ta 0.00727 2.34759 4.07239 0.069003 0.0 0.068642 +Ta 2.88247 2.34759 4.07239 0.069003 0.0 0.068642 +Ta 0.17997 0.0 0.18449 0.005805 0.0 -0.024588 +Ta 3.05517 0.0 0.18449 0.005805 0.0 -0.024588 +Ta 1.87083 2.34759 1.32776 -0.003386 0.0 0.004796 +Ta 4.74604 2.34759 1.32776 -0.003386 0.0 0.004796 +Ta 3.86441 0.0 2.7203 -0.023223 0.0 0.001016 +Ta 0.94648 2.34759 6.77133 -0.15941 0.0 0.086585 +Ta 0.00117 0.0 8.1367 0.254346 0.0 -0.687398 +Ta 2.87637 0.0 8.1367 0.254346 0.0 -0.687398 +Ta 1.91123 0.0 5.41489 -0.007273 0.0 0.083064 +Ta 4.78644 0.0 5.41489 -0.007273 0.0 0.083064 +Ta 3.82169 2.34759 6.77133 -0.15941 0.0 0.086585 +Ta 1.9168 2.34759 9.48769 -0.854831 0.0 -0.81341 +Ta 4.79201 2.34759 9.48769 -0.854831 0.0 -0.81341 +Ta 2.96987 0.0 10.83871 0.856404 0.0 0.869919 +Ta 2.02457 2.34759 12.20409 -0.204616 0.0 0.570902 +Ta 4.89977 2.34759 12.20409 -0.204616 0.0 0.570902 +Ta 0.09467 0.0 10.83871 0.856404 0.0 0.869919 +Ta 2.96377 2.34759 14.90296 -0.014831 0.0 -0.080565 +Ta 1.98184 0.0 16.25507 -0.069492 0.0 -0.116436 +Ta 4.85704 0.0 16.25507 -0.069492 0.0 -0.116436 +Ta 3.97542 2.34759 17.64762 0.035331 0.0 0.046498 +Ta 1.10022 2.34759 17.64762 0.035331 0.0 0.046498 +Ta 3.93501 0.0 13.56045 0.105163 0.0 -0.067164 +Ta 1.05981 0.0 13.56045 0.105163 0.0 -0.067164 +Ta 0.08857 2.34759 14.90296 -0.014831 0.0 -0.080565 +Ta 2.79108 0.0 18.79091 0.011012 0.0 0.058138 +Ta 5.66629 0.0 18.79091 0.011012 0.0 0.058138 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-346.593523 stress="-9415.82 0.0 -282.14 0.0 -11858.18 0.0 -282.14 0.0 174.85" +Ta 0.9892 0.0 2.7203 0.00126 0.0 -0.000951 +Ta 0.00727 2.34759 4.07239 0.002425 0.0 -0.000721 +Ta 2.88247 2.34759 4.07239 0.002425 0.0 -0.000721 +Ta 0.17997 0.0 0.18449 0.003483 0.0 -0.001569 +Ta 3.05517 0.0 0.18449 0.003483 0.0 -0.001569 +Ta 1.87083 2.34759 1.32776 -0.001158 0.0 -0.001292 +Ta 4.74604 2.34759 1.32776 -0.001158 0.0 -0.001292 +Ta 3.86441 0.0 2.7203 0.00126 0.0 -0.000951 +Ta 0.94648 2.34759 6.77133 -0.000275 0.0 -0.000556 +Ta 0.00117 0.0 8.1367 0.001745 0.0 0.000187 +Ta 2.87637 0.0 8.1367 0.001745 0.0 0.000187 +Ta 1.91123 0.0 5.41489 0.00171 0.0 -0.000333 +Ta 4.78644 0.0 5.41489 0.00171 0.0 -0.000333 +Ta 3.82169 2.34759 6.77133 -0.000275 0.0 -0.000556 +Ta 1.9168 2.34759 9.48769 0.0 0.0 0.0 +Ta 4.79201 2.34759 9.48769 0.0 0.0 0.0 +Ta 3.83244 0.0 10.83871 -0.001745 0.0 -0.000187 +Ta 2.88713 2.34759 12.20409 0.000275 0.0 0.000556 +Ta 0.01192 2.34759 12.20409 0.000275 0.0 0.000556 +Ta 0.95723 0.0 10.83871 -0.001745 0.0 -0.000187 +Ta 3.82633 2.34759 14.90296 -0.002425 0.0 0.000721 +Ta 2.8444 0.0 16.25507 -0.00126 0.0 0.000951 +Ta 5.7196 0.0 16.25507 -0.00126 0.0 0.000951 +Ta 4.83798 2.34759 17.64762 0.001158 0.0 0.001292 +Ta 1.96278 2.34759 17.64762 0.001158 0.0 0.001292 +Ta 4.79758 0.0 13.56045 -0.00171 0.0 0.000333 +Ta 1.92238 0.0 13.56045 -0.00171 0.0 0.000333 +Ta 0.95113 2.34759 14.90296 -0.002425 0.0 0.000721 +Ta 3.65364 0.0 18.79091 -0.003483 0.0 0.001569 +Ta 0.77844 0.0 18.79091 -0.003483 0.0 0.001569 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.281949 stress="-11560.39 0.0 -4653.08 0.0 -2434.16 0.0 -4653.08 0.0 6566.94" +Ta 0.9892 0.0 2.7203 0.050194 0.0 0.096189 +Ta 0.00727 2.34759 4.07239 0.024666 0.0 0.022454 +Ta 2.88247 2.34759 4.07239 0.024666 0.0 0.022454 +Ta 0.17997 0.0 0.18449 0.022221 0.0 -0.035876 +Ta 3.05517 0.0 0.18449 0.022221 0.0 -0.035876 +Ta 1.87083 2.34759 1.32776 -0.018007 0.0 -0.028654 +Ta 4.74604 2.34759 1.32776 -0.018007 0.0 -0.028654 +Ta 3.86441 0.0 2.7203 0.050194 0.0 0.096189 +Ta 0.94648 2.34759 6.77133 0.035097 0.0 -0.05687 +Ta 0.00117 0.0 8.1367 0.39639 0.0 -0.242712 +Ta 2.87637 0.0 8.1367 0.39639 0.0 -0.242712 +Ta 1.91123 0.0 5.41489 -0.174932 0.0 -0.025096 +Ta 4.78644 0.0 5.41489 -0.174932 0.0 -0.025096 +Ta 3.82169 2.34759 6.77133 0.035097 0.0 -0.05687 +Ta 1.9168 2.34759 9.48769 0.314196 0.0 -0.724221 +Ta 4.79201 2.34759 9.48769 0.314196 0.0 -0.724221 +Ta 1.81979 0.0 10.83871 -0.356224 0.0 0.668088 +Ta 0.87448 2.34759 12.20409 -0.414394 0.0 0.224563 +Ta 3.74968 2.34759 12.20409 -0.414394 0.0 0.224563 +Ta 4.695 0.0 10.83871 -0.356224 0.0 0.668088 +Ta 1.81369 2.34759 14.90296 0.168267 0.0 -0.014012 +Ta 0.83176 0.0 16.25507 -0.017608 0.0 -0.08784 +Ta 3.70696 0.0 16.25507 -0.017608 0.0 -0.08784 +Ta 2.82533 2.34759 17.64762 -0.037555 0.0 0.00518 +Ta 5.70054 2.34759 17.64762 -0.037555 0.0 0.00518 +Ta 2.78493 0.0 13.56045 0.011122 0.0 0.171223 +Ta 5.66014 0.0 13.56045 0.011122 0.0 0.171223 +Ta 4.6889 2.34759 14.90296 0.168267 0.0 -0.014012 +Ta 1.64099 0.0 18.79091 -0.003433 0.0 0.027583 +Ta 4.5162 0.0 18.79091 -0.003433 0.0 0.027583 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.928661 stress="-9145.630000000001 0.0 4495.89 0.0 -8704.09 0.0 4495.89 0.0 4121.84" +Ta 0.9892 0.0 2.7203 -0.037192 0.0 -0.008535 +Ta 0.00727 2.34759 4.07239 0.046799 0.0 0.059571 +Ta 2.88247 2.34759 4.07239 0.046799 0.0 0.059571 +Ta 0.17997 0.0 0.18449 0.009422 0.0 -0.012097 +Ta 3.05517 0.0 0.18449 0.009422 0.0 -0.012097 +Ta 1.87083 2.34759 1.32776 -0.005981 0.0 0.006654 +Ta 4.74604 2.34759 1.32776 -0.005981 0.0 0.006654 +Ta 3.86441 0.0 2.7203 -0.037192 0.0 -0.008535 +Ta 0.94648 2.34759 6.77133 -0.141158 0.0 0.065062 +Ta 0.00117 0.0 8.1367 -0.005041 0.0 -0.535781 +Ta 2.87637 0.0 8.1367 -0.005041 0.0 -0.535781 +Ta 1.91123 0.0 5.41489 0.047966 0.0 0.052967 +Ta 4.78644 0.0 5.41489 0.047966 0.0 0.052967 +Ta 3.82169 2.34759 6.77133 -0.141158 0.0 0.065062 +Ta 1.9168 2.34759 9.48769 -0.807767 0.0 -0.37656 +Ta 4.79201 2.34759 9.48769 -0.807767 0.0 -0.37656 +Ta 3.25739 0.0 10.83871 0.80662 0.0 0.413175 +Ta 2.31209 2.34759 12.20409 0.049763 0.0 0.478936 +Ta 5.18729 2.34759 12.20409 0.049763 0.0 0.478936 +Ta 0.38219 0.0 10.83871 0.80662 0.0 0.413175 +Ta 3.25129 2.34759 14.90296 -0.059966 0.0 -0.070617 +Ta 2.26936 0.0 16.25507 -0.058332 0.0 -0.070148 +Ta 5.14456 0.0 16.25507 -0.058332 0.0 -0.070148 +Ta 4.26294 2.34759 17.64762 0.034688 0.0 0.021628 +Ta 1.38774 2.34759 17.64762 0.034688 0.0 0.021628 +Ta 4.22253 0.0 13.56045 0.107399 0.0 -0.061704 +Ta 1.34733 0.0 13.56045 0.107399 0.0 -0.061704 +Ta 0.37609 2.34759 14.90296 -0.059966 0.0 -0.070617 +Ta 3.0786 0.0 18.79091 0.01278 0.0 0.037448 +Ta 0.2034 0.0 18.79091 0.01278 0.0 0.037448 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.111657 stress="-8100.32 0.0 -1129.41 0.0 -4564.69 0.0 -1129.41 0.0 8777.64" +Ta 0.9892 0.0 2.7203 -0.002999 0.0 0.02667 +Ta 0.00727 2.34759 4.07239 0.054882 0.0 0.061699 +Ta 2.88247 2.34759 4.07239 0.054882 0.0 0.061699 +Ta 0.17997 0.0 0.18449 -0.00101 0.0 -0.031388 +Ta 3.05517 0.0 0.18449 -0.00101 0.0 -0.031388 +Ta 1.87083 2.34759 1.32776 0.002281 0.0 -0.002797 +Ta 4.74604 2.34759 1.32776 0.002281 0.0 -0.002797 +Ta 3.86441 0.0 2.7203 -0.002999 0.0 0.02667 +Ta 0.94648 2.34759 6.77133 -0.115569 0.0 0.063165 +Ta 0.00117 0.0 8.1367 0.538925 0.0 -0.581219 +Ta 2.87637 0.0 8.1367 0.538925 0.0 -0.581219 +Ta 1.91123 0.0 5.41489 -0.062838 0.0 0.038873 +Ta 4.78644 0.0 5.41489 -0.062838 0.0 0.038873 +Ta 3.82169 2.34759 6.77133 -0.115569 0.0 0.063165 +Ta 1.9168 2.34759 9.48769 -0.888421 0.0 -1.156719 +Ta 4.79201 2.34759 9.48769 -0.888421 0.0 -1.156719 +Ta 2.68235 0.0 10.83871 0.933927 0.0 1.205226 +Ta 1.73705 2.34759 12.20409 -0.549392 0.0 0.428428 +Ta 4.61225 2.34759 12.20409 -0.549392 0.0 0.428428 +Ta 5.55756 0.0 10.83871 0.933927 0.0 1.205226 +Ta 2.67625 2.34759 14.90296 0.046884 0.0 -0.018316 +Ta 1.69432 0.0 16.25507 -0.058853 0.0 -0.140323 +Ta 4.56952 0.0 16.25507 -0.058853 0.0 -0.140323 +Ta 3.6879 2.34759 17.64762 0.020235 0.0 0.058633 +Ta 0.8127 2.34759 17.64762 0.020235 0.0 0.058633 +Ta 3.64749 0.0 13.56045 0.091771 0.0 -0.007909 +Ta 0.77229 0.0 13.56045 0.091771 0.0 -0.007909 +Ta 5.55146 2.34759 14.90296 0.046884 0.0 -0.018316 +Ta 2.50356 0.0 18.79091 -0.009823 0.0 0.055977 +Ta 5.37876 0.0 18.79091 -0.009823 0.0 0.055977 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-346.367123 stress="-9925.11 0.0 -4252.58 0.0 -9690.35 0.0 -4252.58 0.0 528.8000000000001" +Ta 0.9892 0.0 2.7203 0.036893 0.0 0.011121 +Ta 0.00727 2.34759 4.07239 0.003739 0.0 -0.008403 +Ta 2.88247 2.34759 4.07239 0.003739 0.0 -0.008403 +Ta 0.17997 0.0 0.18449 0.001677 0.0 -0.008529 +Ta 3.05517 0.0 0.18449 0.001677 0.0 -0.008529 +Ta 1.87083 2.34759 1.32776 -0.006125 0.0 -0.007305 +Ta 4.74604 2.34759 1.32776 -0.006125 0.0 -0.007305 +Ta 3.86441 0.0 2.7203 0.036893 0.0 0.011121 +Ta 0.94648 2.34759 6.77133 0.047105 0.0 -0.045187 +Ta 0.00117 0.0 8.1367 0.149771 0.0 0.043481 +Ta 2.87637 0.0 8.1367 0.149771 0.0 0.043481 +Ta 1.91123 0.0 5.41489 -0.082659 0.0 0.037224 +Ta 4.78644 0.0 5.41489 -0.082659 0.0 0.037224 +Ta 3.82169 2.34759 6.77133 0.047105 0.0 -0.045187 +Ta 1.9168 2.34759 9.48769 0.609504 0.0 -0.160261 +Ta 4.79201 2.34759 9.48769 0.609504 0.0 -0.160261 +Ta 1.24475 0.0 10.83871 -0.628777 0.0 0.151816 +Ta 0.29944 2.34759 12.20409 -0.151337 0.0 -0.040462 +Ta 3.17464 2.34759 12.20409 -0.151337 0.0 -0.040462 +Ta 4.11996 0.0 10.83871 -0.628777 0.0 0.151816 +Ta 1.23865 2.34759 14.90296 0.077509 0.0 -0.040594 +Ta 0.25672 0.0 16.25507 0.005483 0.0 -0.00975 +Ta 3.13192 0.0 16.25507 0.005483 0.0 -0.00975 +Ta 2.25029 2.34759 17.64762 -0.026269 0.0 0.012323 +Ta 5.1255 2.34759 17.64762 -0.026269 0.0 0.012323 +Ta 2.20989 0.0 13.56045 -0.027306 0.0 0.063713 +Ta 5.0851 0.0 13.56045 -0.027306 0.0 0.063713 +Ta 4.11386 2.34759 14.90296 0.077509 0.0 -0.040594 +Ta 1.06595 0.0 18.79091 -0.009208 0.0 0.000812 +Ta 3.94116 0.0 18.79091 -0.009208 0.0 0.000812 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-346.582565 stress="-9596.72 0.0 -296.27 0.0 -12032.57 0.0 -296.27 0.0 -26.450000000000003" +Ta 0.9892 0.0 2.71997 0.001254 0.0 -0.000998 +Ta 0.00727 2.34759 4.07216 0.002375 0.0 -0.000846 +Ta 2.88247 2.34759 4.07216 0.002375 0.0 -0.000846 +Ta 0.17997 0.0 0.18409 0.004062 0.0 -0.001188 +Ta 3.05517 0.0 0.18409 0.004062 0.0 -0.001188 +Ta 1.87083 2.34759 1.32736 -0.001515 0.0 -0.001063 +Ta 4.74604 2.34759 1.32736 -0.001515 0.0 -0.001063 +Ta 3.86441 0.0 2.71997 0.001254 0.0 -0.000998 +Ta 0.94648 2.34759 6.77121 -0.000474 0.0 -0.000276 +Ta 0.00117 0.0 8.13671 0.001992 0.0 -0.000431 +Ta 2.87637 0.0 8.13671 0.001992 0.0 -0.000431 +Ta 1.91123 0.0 5.41479 0.001951 0.0 -0.000915 +Ta 4.78644 0.0 5.41479 0.001951 0.0 -0.000915 +Ta 3.82169 2.34759 6.77121 -0.000474 0.0 -0.000276 +Ta 1.9168 2.34759 9.48769 0.0 0.0 0.0 +Ta 4.79201 2.34759 9.48769 0.0 0.0 0.0 +Ta 0.95723 0.0 10.8387 -0.001992 0.0 0.000431 +Ta 0.01192 2.34759 12.20421 0.000474 0.0 0.000276 +Ta 2.88712 2.34759 12.20421 0.000474 0.0 0.000276 +Ta 3.83244 0.0 10.8387 -0.001992 0.0 0.000431 +Ta 0.95113 2.34759 14.90319 -0.002375 0.0 0.000846 +Ta 5.71961 0.0 16.2554 -0.001254 0.0 0.000998 +Ta 2.8444 0.0 16.2554 -0.001254 0.0 0.000998 +Ta 1.96277 2.34759 17.64802 0.001515 0.0 0.001063 +Ta 4.83798 2.34759 17.64802 0.001515 0.0 0.001063 +Ta 1.92237 0.0 13.56055 -0.001951 0.0 0.000915 +Ta 4.79758 0.0 13.56055 -0.001951 0.0 0.000915 +Ta 3.82634 2.34759 14.90319 -0.002375 0.0 0.000846 +Ta 0.77843 0.0 18.79131 -0.004062 0.0 0.001188 +Ta 3.65364 0.0 18.79131 -0.004062 0.0 0.001188 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-344.91356 stress="-9331.87 0.0 -3483.6 0.0 -3070.65 0.0 -3483.6 0.0 10023.91" +Ta 0.9892 0.0 2.7203 0.020761 0.0 0.069829 +Ta 0.00727 2.34759 4.07239 0.031416 0.0 0.042888 +Ta 2.88247 2.34759 4.07239 0.031416 0.0 0.042888 +Ta 0.17997 0.0 0.18449 0.008231 0.0 -0.040672 +Ta 3.05517 0.0 0.18449 0.008231 0.0 -0.040672 +Ta 1.87083 2.34759 1.32776 -0.006968 0.0 -0.013357 +Ta 4.74604 2.34759 1.32776 -0.006968 0.0 -0.013357 +Ta 3.86441 0.0 2.7203 0.020761 0.0 0.069829 +Ta 0.94648 2.34759 6.77133 -0.012614 0.0 0.0322 +Ta 0.00117 0.0 8.1367 0.6286 0.0 -0.362527 +Ta 2.87637 0.0 8.1367 0.6286 0.0 -0.362527 +Ta 1.91123 0.0 5.41489 -0.117602 0.0 -0.047411 +Ta 4.78644 0.0 5.41489 -0.117602 0.0 -0.047411 +Ta 3.82169 2.34759 6.77133 -0.012614 0.0 0.0322 +Ta 1.9168 2.34759 9.48769 -0.731669 0.0 -1.341165 +Ta 4.79201 2.34759 9.48769 -0.731669 0.0 -1.341165 +Ta 2.39483 0.0 10.83871 0.796655 0.0 1.335154 +Ta 1.44952 2.34759 12.20409 -0.719661 0.0 0.218469 +Ta 4.32472 2.34759 12.20409 -0.719661 0.0 0.218469 +Ta 5.27004 0.0 10.83871 0.796655 0.0 1.335154 +Ta 2.38873 2.34759 14.90296 0.115505 0.0 0.057838 +Ta 1.4068 0.0 16.25507 -0.048364 0.0 -0.136512 +Ta 4.282 0.0 16.25507 -0.048364 0.0 -0.136512 +Ta 3.40038 2.34759 17.64762 0.008342 0.0 0.049918 +Ta 0.52518 2.34759 17.64762 0.008342 0.0 0.049918 +Ta 3.35997 0.0 13.56045 0.043395 0.0 0.085984 +Ta 0.48477 0.0 13.56045 0.043395 0.0 0.085984 +Ta 5.26394 2.34759 14.90296 0.115505 0.0 0.057838 +Ta 2.21604 0.0 18.79091 -0.016029 0.0 0.049364 +Ta 5.09124 0.0 18.79091 -0.016029 0.0 0.049364 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.836703 stress="-13121.27 0.0 -5634.91 0.0 -8850.33 0.0 -5634.91 0.0 -251.82" +Ta 0.9892 0.0 2.69946 0.050014 0.0 0.000282 +Ta 0.00727 2.34759 4.05025 0.000899 0.0 -0.000628 +Ta 2.88247 2.34759 4.05025 0.000899 0.0 -0.000628 +Ta 0.17997 0.0 0.16024 0.025286 0.0 -0.000329 +Ta 3.05517 0.0 0.16024 0.025286 0.0 -0.000329 +Ta 1.87083 2.34759 1.30033 -0.022784 0.0 0.0001 +Ta 4.74604 2.34759 1.30033 -0.022784 0.0 0.0001 +Ta 3.86441 0.0 2.69946 0.050014 0.0 0.000282 +Ta 0.94648 2.34759 6.74132 0.018982 0.0 0.000803 +Ta 0.00117 0.0 8.1136 0.294678 0.0 -7e-05 +Ta 2.87637 0.0 8.1136 0.294678 0.0 -7e-05 +Ta 1.91123 0.0 5.39201 -0.117735 0.0 -0.000184 +Ta 4.78644 0.0 5.39201 -0.117735 0.0 -0.000184 +Ta 3.82169 2.34759 6.74132 0.018982 0.0 0.000803 +Ta 1.9168 2.34759 9.44202 0.717113 0.0 3.7e-05 +Ta 4.79201 2.34759 9.44202 0.717113 0.0 3.7e-05 +Ta 1.53227 0.0 10.88381 -0.754498 0.0 3.7e-05 +Ta 0.58696 2.34759 12.229 -0.304417 0.0 -0.000673 +Ta 3.46216 2.34759 12.229 -0.304417 0.0 -0.000673 +Ta 4.40748 0.0 10.88381 -0.754498 0.0 3.7e-05 +Ta 1.52617 2.34759 14.92821 0.111991 0.0 0.000677 +Ta 0.54424 0.0 16.27854 0.000794 0.0 -0.00097 +Ta 3.41944 0.0 16.27854 0.000794 0.0 -0.00097 +Ta 2.53781 2.34759 17.67931 -0.020042 0.0 -0.001378 +Ta 5.41302 2.34759 17.67931 -0.020042 0.0 -0.001378 +Ta 2.49741 0.0 13.59913 0.010142 0.0 0.001166 +Ta 5.37262 0.0 13.59913 0.010142 0.0 0.001166 +Ta 4.40138 2.34759 14.92821 0.111991 0.0 0.000677 +Ta 1.35347 0.0 18.81813 -0.010421 0.0 0.001129 +Ta 4.22868 0.0 18.81813 -0.010421 0.0 0.001129 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-344.984307 stress="-10564.03 0.0 -4829.4 0.0 -2612.55 0.0 -4829.4 0.0 9464.02" +Ta 0.9892 0.0 2.7203 0.037412 0.0 0.099042 +Ta 0.00727 2.34759 4.07239 0.028536 0.0 0.023468 +Ta 2.88247 2.34759 4.07239 0.028536 0.0 0.023468 +Ta 0.17997 0.0 0.18449 0.023555 0.0 -0.042618 +Ta 3.05517 0.0 0.18449 0.023555 0.0 -0.042618 +Ta 1.87083 2.34759 1.32776 -0.016108 0.0 -0.021017 +Ta 4.74604 2.34759 1.32776 -0.016108 0.0 -0.021017 +Ta 3.86441 0.0 2.7203 0.037412 0.0 0.099042 +Ta 0.94648 2.34759 6.77133 0.046477 0.0 0.002765 +Ta 0.00117 0.0 8.1367 0.514609 0.0 -0.283847 +Ta 2.87637 0.0 8.1367 0.514609 0.0 -0.283847 +Ta 1.91123 0.0 5.41489 -0.163272 0.0 -0.078622 +Ta 4.78644 0.0 5.41489 -0.163272 0.0 -0.078622 +Ta 3.82169 2.34759 6.77133 0.046477 0.0 0.002765 +Ta 1.9168 2.34759 9.48769 -0.094634 0.0 -1.114901 +Ta 4.79201 2.34759 9.48769 -0.094634 0.0 -1.114901 +Ta 2.10731 0.0 10.83871 0.096153 0.0 1.054366 +Ta 1.162 2.34759 12.20409 -0.593943 0.0 0.202897 +Ta 4.0372 2.34759 12.20409 -0.593943 0.0 0.202897 +Ta 4.98252 0.0 10.83871 0.096153 0.0 1.054366 +Ta 2.10121 2.34759 14.90296 0.169155 0.0 0.056551 +Ta 1.11928 0.0 16.25507 -0.031734 0.0 -0.113985 +Ta 3.99448 0.0 16.25507 -0.031734 0.0 -0.113985 +Ta 3.11285 2.34759 17.64762 -0.01565 0.0 0.02811 +Ta 0.23765 2.34759 17.64762 -0.01565 0.0 0.02811 +Ta 3.07245 0.0 13.56045 0.006275 0.0 0.144107 +Ta 0.19725 0.0 13.56045 0.006275 0.0 0.144107 +Ta 4.97642 2.34759 14.90296 0.169155 0.0 0.056551 +Ta 1.92851 0.0 18.79091 -0.00683 0.0 0.043685 +Ta 4.80372 0.0 18.79091 -0.00683 0.0 0.043685 +30 +Lattice = "5.75041007996 0.0 0.0 0.0 4.69518995285 0.0 0.0 0.0 39.8400001526" Properties=species:S:1:pos:R:3:forces:R:3 energy=-346.393931 stress="-9438.37 0.0 3529.1 0.0 -11318.58 0.0 3529.1 0.0 1838.01" +Ta 0.9892 0.0 2.7203 -0.028288 0.0 -0.004272 +Ta 0.00727 2.34759 4.07239 0.01665 0.0 0.029245 +Ta 2.88247 2.34759 4.07239 0.01665 0.0 0.029245 +Ta 0.17997 0.0 0.18449 0.006746 0.0 -0.001633 +Ta 3.05517 0.0 0.18449 0.006746 0.0 -0.001633 +Ta 1.87083 2.34759 1.32776 -0.000473 0.0 -3e-05 +Ta 4.74604 2.34759 1.32776 -0.000473 0.0 -3e-05 +Ta 3.86441 0.0 2.7203 -0.028288 0.0 -0.004272 +Ta 0.94648 2.34759 6.77133 -0.081349 0.0 0.034571 +Ta 0.00117 0.0 8.1367 -0.101274 0.0 -0.252924 +Ta 2.87637 0.0 8.1367 -0.101274 0.0 -0.252924 +Ta 1.91123 0.0 5.41489 0.063888 0.0 0.002877 +Ta 4.78644 0.0 5.41489 0.063888 0.0 0.002877 +Ta 3.82169 2.34759 6.77133 -0.081349 0.0 0.034571 +Ta 1.9168 2.34759 9.48769 -0.523826 0.0 -0.065241 +Ta 4.79201 2.34759 9.48769 -0.523826 0.0 -0.065241 +Ta 3.54491 0.0 10.83871 0.531471 0.0 0.075625 +Ta 2.59961 2.34759 12.20409 0.108678 0.0 0.237898 +Ta 5.47481 2.34759 12.20409 0.108678 0.0 0.237898 +Ta 0.66971 0.0 10.83871 0.531471 0.0 0.075625 +Ta 3.53881 2.34759 14.90296 -0.061771 0.0 -0.016484 +Ta 2.55688 0.0 16.25507 -0.022115 0.0 -0.025346 +Ta 5.43208 0.0 16.25507 -0.022115 0.0 -0.025346 +Ta 4.55046 2.34759 17.64762 0.021554 0.0 0.004745 +Ta 1.67526 2.34759 17.64762 0.021554 0.0 0.004745 +Ta 4.51005 0.0 13.56045 0.060372 0.0 -0.032886 +Ta 1.63485 0.0 13.56045 0.060372 0.0 -0.032886 +Ta 0.66361 2.34759 14.90296 -0.061771 0.0 -0.016484 +Ta 3.36612 0.0 18.79091 0.009737 0.0 0.013855 +Ta 0.49092 0.0 18.79091 0.009737 0.0 0.013855 diff --git a/examples/PACKAGES/pod/Ta/XYZ/Liquid.xyz b/examples/PACKAGES/pod/Ta/XYZ/Liquid.xyz new file mode 100644 index 0000000000..1bf7814567 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/Liquid.xyz @@ -0,0 +1,306 @@ +100 +Lattice = "12.6055002213 0.0 0.0 0.0 12.6055002213 0.0 0.0 0.0 12.6055002213" Properties=species:S:1:pos:R:3:forces:R:3 energy=-1105.601723 stress="41522.36 -10028.6 5843.19 -10028.6 44080.57 10402.62 5843.19 10402.62 34745.600000000006" +Ta 0.43107 3.74888 0.07776 -0.335192 0.399751 2.053897 +Ta 1.60366 2.09108 2.35693 -3.868362 -1.228623 -1.515572 +Ta 4.15329 1.55338 2.45739 1.505017 -0.176525 -0.218711 +Ta 2.64801 1.89114 12.39607 0.25781 1.51672 2.137521 +Ta 7.24215 1.70209 1.79979 -0.11292 -2.198189 -0.337499 +Ta 10.95446 2.67458 1.59213 -0.965217 -1.195646 -0.253554 +Ta 9.27673 0.87789 3.43116 1.643765 0.347467 -1.593945 +Ta 2.03607 6.61594 1.61137 2.535752 0.592029 1.82052 +Ta 5.49317 3.20146 0.58262 -0.862046 0.984883 -1.598913 +Ta 3.04231 4.31908 2.00353 0.620511 -1.092947 -1.508929 +Ta 4.95339 6.14708 0.65118 -1.365205 -2.865106 2.363303 +Ta 7.52643 4.18623 2.31722 0.746021 1.167867 -1.110257 +Ta 12.27295 5.1198 2.52809 0.765074 0.812857 1.098129 +Ta 9.25719 7.32072 1.58199 0.215508 0.987987 1.690552 +Ta 10.53635 5.29937 0.6285 -0.28915 -1.601915 -1.639854 +Ta 1.90384 9.1638 3.00286 0.22302 2.303078 2.48401 +Ta 3.80372 8.76382 0.84403 -1.139535 0.518969 0.980714 +Ta 6.20544 8.3316 1.50988 2.193636 0.909931 -1.013726 +Ta 8.06784 5.83681 12.25104 -1.350407 0.626007 -0.379155 +Ta 0.31897 6.90336 0.10643 -5.3666 -0.250563 -1.141097 +Ta 11.55436 9.51362 3.34931 0.547949 -2.202531 -1.917224 +Ta 10.78092 9.16961 0.43619 2.93789 -2.957858 -2.910142 +Ta 1.24862 9.5832 0.57435 -1.713064 -0.323209 -1.423673 +Ta 5.81406 11.77176 1.54406 1.638754 0.219842 1.61986 +Ta 10.13103 11.22875 1.38321 -1.800705 4.539384 2.649159 +Ta 0.34899 0.35649 6.1042 -1.407332 -2.793672 0.622672 +Ta 2.3232 1.67801 4.77877 -0.05644 2.09227 -0.734316 +Ta 7.49734 2.52339 4.64715 -2.007496 -0.115682 0.14042 +Ta 9.77964 2.17772 5.83529 3.713057 -1.608783 0.411426 +Ta 12.08877 2.91076 4.07847 -1.520526 -1.704707 -0.587973 +Ta 1.76078 4.6877 4.47668 1.413545 -7.499735 -1.858957 +Ta 4.98999 4.11433 3.79876 0.289553 -1.316969 -0.292034 +Ta 6.76353 5.11499 5.45587 -3.138755 0.635253 -4.508867 +Ta 8.18843 6.66761 6.69958 1.823722 2.515733 1.945463 +Ta 9.26522 5.32398 3.90117 2.522311 -2.914637 0.434012 +Ta 11.70087 5.41848 5.49634 -0.91363 0.599933 0.511554 +Ta 1.65165 6.89091 4.56552 -4.64308 7.078545 2.907672 +Ta 3.88906 7.3482 3.69272 4.376913 -1.607122 -3.387251 +Ta 3.78056 9.22669 5.62637 -1.173755 -0.484115 1.473183 +Ta 7.2778 6.86119 3.31305 -1.712746 -0.762926 0.612453 +Ta 8.43315 9.5977 2.96474 -0.068906 0.588767 0.305611 +Ta 8.32391 9.49805 7.04669 1.283119 0.857479 -0.056213 +Ta 9.74646 7.68415 4.88166 1.553537 2.838279 -1.262714 +Ta 0.20242 11.9595 3.59124 0.480807 0.704331 -0.139582 +Ta 0.92234 9.81536 5.6286 -0.676685 -0.718246 -1.353345 +Ta 2.97319 11.83837 4.92159 0.124172 -2.5278 -0.825427 +Ta 4.81042 10.11638 3.25804 -0.00158 0.832634 1.353808 +Ta 5.10938 0.86525 4.93901 1.123663 0.063599 1.236154 +Ta 7.61412 11.73973 4.74754 -0.814736 -0.047356 -0.545511 +Ta 10.33697 11.30643 4.67815 -0.528432 -0.050872 2.228917 +Ta 0.27884 2.84477 6.49144 0.360201 1.903395 2.778998 +Ta 2.01197 0.93667 8.3625 1.378708 0.191326 -1.606266 +Ta 5.95649 1.56866 7.7316 -3.530422 2.114153 0.082888 +Ta 7.99571 0.37668 7.3238 3.086708 -0.94535 -1.566298 +Ta 9.75758 2.05273 9.00324 -1.78926 -0.869367 -0.765594 +Ta 7.0553 1.30554 10.35383 -0.468981 0.451781 -0.424135 +Ta 3.31072 3.02847 6.68212 2.374838 -0.044278 1.652536 +Ta 1.94786 5.25704 7.02637 -4.869392 -0.604143 3.206895 +Ta 5.58301 4.41656 7.69055 -0.012085 -1.275371 2.405145 +Ta 8.49696 4.09995 6.94038 1.731209 -2.887879 -0.17644 +Ta 11.05285 4.3866 7.9546 0.367601 1.162168 1.374681 +Ta 0.98645 7.70557 8.0109 1.110298 0.078167 -0.561606 +Ta 4.08075 5.84992 6.03442 1.908693 2.469334 -1.250813 +Ta 6.48069 8.76967 5.22823 0.114255 -0.523517 -0.733113 +Ta 3.57803 8.81681 8.5928 -0.66732 -1.171187 1.154754 +Ta 7.84056 7.36674 9.41266 2.673183 -2.160921 0.812097 +Ta 5.68236 7.53635 7.81446 0.283447 -0.99061 -1.738751 +Ta 10.93798 7.78281 7.44991 -0.183664 0.008309 0.251959 +Ta 9.9392 9.29803 9.66467 -1.179107 -2.844565 -1.936143 +Ta 3.27502 11.20914 7.71694 -1.605014 0.866048 -1.920371 +Ta 5.80571 11.2039 6.87956 0.570374 -0.917997 -1.21799 +Ta 6.62643 9.54017 9.251 -2.194588 1.730297 1.398058 +Ta 8.37506 11.43578 9.44763 -1.003205 1.254061 1.409533 +Ta 10.64763 11.60302 8.34425 0.22912 1.878017 -4.253745 +Ta 0.62444 10.81341 7.95926 -0.845854 -0.025244 3.548273 +Ta 1.3128 0.0772 10.94202 1.021441 -1.772357 0.971535 +Ta 3.66982 2.58827 9.88588 2.775855 -0.901529 -1.133165 +Ta 4.9029 0.55814 12.14694 0.745195 -0.14623 -0.925343 +Ta 10.71412 0.70352 12.01211 -0.821757 1.855819 -0.172903 +Ta 0.09616 11.95074 0.94667 -0.073589 1.703385 -0.8464 +Ta 12.24445 1.18229 9.52752 -4.911344 -2.238124 -2.990827 +Ta 0.56652 5.73639 10.25403 -1.285215 0.56972 -1.80217 +Ta 1.04406 2.95713 10.2879 0.54537 1.767964 -1.435358 +Ta 2.78879 4.62903 11.50554 1.816283 1.761154 1.997143 +Ta 3.64576 5.81754 9.10448 -0.291727 0.525333 1.415918 +Ta 6.14975 4.49268 10.80918 -3.938361 -1.263146 1.537617 +Ta 8.46844 3.03493 11.91111 -0.260212 -0.549013 1.590318 +Ta 7.95371 4.47804 9.32882 3.486802 -0.184534 -0.465321 +Ta 10.60265 3.91791 10.65025 1.584639 0.666232 1.28596 +Ta 2.41835 7.66344 11.35717 3.582823 -2.530851 -1.921205 +Ta 5.6897 7.16124 11.11328 -0.724382 2.649569 -1.819833 +Ta 8.24854 8.99729 11.81822 -0.58882 -1.012186 0.957519 +Ta 10.50201 6.92143 10.75604 -0.179214 -0.360035 0.514513 +Ta 0.20749 8.75375 10.46189 -1.586508 0.42554 -0.709369 +Ta 2.55072 10.18804 10.88287 1.336488 2.096133 -1.047152 +Ta 4.96405 12.00073 9.46535 1.226786 1.399389 2.14847 +Ta 2.9582 11.89523 1.24555 -0.497007 -1.084677 0.372878 +Ta 5.43899 10.20671 12.04447 0.457816 0.156284 -2.53866 +Ta 7.88861 11.67933 12.19294 -0.209863 1.614617 -0.260277 +Ta 11.22489 11.04751 10.7648 2.246152 1.517056 4.384995 +100 +Lattice = "12.6055002213 0.0 0.0 0.0 12.6055002213 0.0 0.0 0.0 12.6055002213" Properties=species:S:1:pos:R:3:forces:R:3 energy=-1099.673012 stress="64329.38 4705.339999999999 16428.34 4705.339999999999 41963.4 -4448.86 16428.34 -4448.86 54142.01" +Ta 0.38188 4.35838 0.74564 -0.727255 -2.684915 -1.502186 +Ta 1.34891 1.23814 1.97516 -0.901556 -0.105425 1.00657 +Ta 3.91629 1.3428 2.33074 3.786054 2.848263 -0.971111 +Ta 2.50882 2.14034 12.20579 -0.262289 0.109978 0.538412 +Ta 8.20217 1.50457 1.09255 -0.492384 -1.785903 2.601547 +Ta 10.36593 3.31163 1.41537 1.881298 -2.609227 -1.324217 +Ta 10.4022 0.62792 3.78647 -0.90696 3.879838 -1.72804 +Ta 1.89782 6.78766 2.24739 0.610213 0.257066 0.30111 +Ta 5.50184 3.35273 0.83641 -0.560965 -1.138714 0.441504 +Ta 2.32284 3.6359 2.17719 2.602499 1.961671 1.752727 +Ta 5.3072 5.9129 1.35024 -1.807728 1.348974 1.869601 +Ta 7.97916 4.52402 2.2256 -1.448678 0.224978 0.932881 +Ta 12.08411 5.36653 3.17826 1.407869 -0.153369 -2.235907 +Ta 9.93622 6.94867 2.71342 -0.96168 -0.819272 -0.695758 +Ta 9.90617 5.56065 0.39246 1.437756 2.22277 -1.483484 +Ta 2.03145 9.47094 3.47002 -0.365866 -1.501921 0.223241 +Ta 3.89512 9.09235 1.57401 -0.289378 -1.595243 -0.704364 +Ta 6.55755 9.06145 1.13007 1.481441 -1.964278 0.317382 +Ta 7.19441 5.95163 12.15045 5.313352 -0.388306 3.350518 +Ta 0.47731 6.73144 12.49172 -2.324959 2.468907 0.162569 +Ta 11.99106 8.65573 2.136 0.320078 0.329798 0.427882 +Ta 10.46579 8.3526 12.36863 0.469025 0.961865 1.106144 +Ta 1.09582 9.74623 0.42674 -0.367347 0.331195 0.683008 +Ta 6.08716 11.81081 1.97743 -0.347952 0.939564 0.150091 +Ta 10.03534 11.67059 1.4824 1.765295 -0.063423 0.419687 +Ta 0.08024 12.16929 6.35254 3.013201 1.559359 -1.565584 +Ta 2.71663 1.31896 5.17141 1.289295 0.727934 -0.294145 +Ta 7.31848 1.89673 4.23838 -0.731578 2.730215 -0.825462 +Ta 10.8977 1.28949 6.47917 -5.83876 3.773198 -2.47763 +Ta 0.45432 2.51989 4.22159 -3.64939 -0.925817 -2.950598 +Ta 1.70947 4.66775 4.8384 0.462076 1.170048 -2.403113 +Ta 4.57205 3.37193 4.25893 -0.109762 0.615399 0.386449 +Ta 6.6353 4.9693 5.07404 -0.677674 0.753118 -0.691499 +Ta 9.08878 7.33531 5.79768 -1.926322 -3.675185 0.927457 +Ta 9.91121 3.22337 3.84582 -0.878305 0.821935 2.646587 +Ta 11.32221 4.97359 5.54846 -1.015803 -0.259629 1.700732 +Ta 0.53406 7.05513 5.42905 4.213154 0.915513 -0.387097 +Ta 4.46164 6.80136 4.09833 -0.176562 -0.533475 -2.129646 +Ta 3.93041 8.596 5.90044 -2.349383 1.463451 1.214532 +Ta 7.45709 7.32471 3.28984 -1.580622 -0.59473 -0.153408 +Ta 8.73043 9.80728 2.84372 -0.269419 -1.581451 0.380496 +Ta 8.3667 9.63065 6.92756 1.753511 2.485611 1.143484 +Ta 11.10448 8.19971 4.67383 -2.984282 1.041303 -1.700702 +Ta 12.33138 11.59365 3.22318 2.360024 -1.006585 -0.789645 +Ta 12.53349 9.89403 5.63928 3.735451 -1.567194 1.41596 +Ta 3.05157 11.96433 3.46769 -2.586656 -4.605553 1.003837 +Ta 5.53812 9.74587 3.73544 -0.624627 0.711032 0.321477 +Ta 5.17764 0.08755 4.56072 0.792806 1.090161 2.480897 +Ta 7.64882 11.92872 4.33422 1.371203 -2.646937 -1.592811 +Ta 10.26273 11.13472 4.99862 -1.516508 -2.562682 1.139746 +Ta 0.63147 2.19678 6.67724 -1.933442 4.953146 -0.194708 +Ta 2.39775 1.15536 7.89766 1.566886 -5.944045 0.931194 +Ta 5.33276 1.28983 7.19797 -1.126761 0.854886 -2.020746 +Ta 7.89352 0.43228 6.56287 1.13823 0.267818 2.364431 +Ta 8.88305 1.54913 9.09168 1.934009 3.681926 -0.69568 +Ta 6.00124 2.16677 9.5598 8.252345 -1.117748 2.215338 +Ta 2.66739 3.83317 7.06559 2.190193 -4.842621 2.418064 +Ta 0.44413 5.53507 7.53921 0.172202 -0.843263 -0.144565 +Ta 6.07444 4.29758 7.92983 -1.04507 0.569502 -0.853121 +Ta 8.61236 4.26866 6.45192 0.842947 -0.703065 0.93539 +Ta 10.50987 4.11989 8.35507 0.547985 -0.173489 -1.269773 +Ta 2.02897 8.56787 8.24972 -1.223362 -0.887987 -0.332769 +Ta 3.57963 5.79304 6.48017 2.842291 5.01202 -1.423259 +Ta 6.53156 8.37515 5.75214 -0.50131 -0.78674 -2.188556 +Ta 4.51454 9.02305 9.28712 -1.887242 0.583318 -0.321074 +Ta 8.34047 6.94108 8.77392 2.702214 0.628662 0.365051 +Ta 6.01989 7.16828 7.91506 -2.736883 -1.03701 0.87708 +Ta 11.52313 8.08118 8.00297 0.861961 -0.750437 -2.832105 +Ta 9.87066 9.68884 9.34964 -0.418705 -1.344113 0.080437 +Ta 2.69897 11.01376 6.90606 0.624985 0.222953 -0.025436 +Ta 5.56553 10.9604 7.05448 1.478972 -0.881736 -1.62077 +Ta 6.91858 9.87487 9.3601 -0.933279 -1.508382 -2.062547 +Ta 7.56671 12.23671 9.78063 -0.406385 -0.308972 0.183521 +Ta 10.22294 11.87342 7.79903 -1.175658 -1.688479 1.642029 +Ta 0.04509 10.83657 8.74612 1.380926 -0.290325 -0.323702 +Ta 0.94632 0.06721 10.62363 1.061812 0.946373 0.815892 +Ta 3.83384 2.56871 9.64718 -1.450486 1.088741 1.78581 +Ta 4.91898 0.74942 12.23402 2.069575 0.652415 -1.682263 +Ta 10.35682 1.29618 11.60881 -1.007516 -0.380767 -0.681798 +Ta 12.25089 0.25724 0.5674 -1.167993 -0.553636 -1.082113 +Ta 12.05792 1.27062 8.79257 -1.958821 -0.199606 3.512891 +Ta 0.94154 6.36726 9.79464 -0.470327 -1.562595 2.388469 +Ta 1.55131 2.94376 9.49017 -5.482202 3.713318 2.157258 +Ta 2.83736 5.28335 12.23429 0.21999 -0.856343 -0.328898 +Ta 3.28912 5.72925 9.20121 2.590913 0.102617 0.278337 +Ta 5.23966 4.63128 11.01018 -0.510883 -1.107745 -0.843113 +Ta 8.09196 3.41706 12.13822 -0.502547 -2.144772 0.04882 +Ta 8.1563 4.57839 10.05093 0.383882 0.414866 -3.808578 +Ta 10.79442 4.02679 10.93553 1.752466 -1.881501 1.268269 +Ta 2.71931 8.02403 11.22143 2.049893 -0.963189 1.387113 +Ta 5.73731 7.44013 11.32002 -4.676222 3.883048 -2.762461 +Ta 8.16217 8.96831 11.31638 0.374044 -1.476354 1.757164 +Ta 10.92094 6.50569 10.08481 -2.942535 0.663572 0.583517 +Ta 0.13295 8.72748 10.50938 -1.244418 2.69593 0.1167 +Ta 2.76073 10.72733 11.03757 0.159817 -0.598944 -1.675276 +Ta 4.565 12.20225 9.16074 -0.475524 -0.325595 2.074182 +Ta 3.333 11.65103 0.9196 -2.017399 0.539865 -1.533111 +Ta 5.52052 10.58245 11.86999 -0.929433 -0.112136 -1.59182 +Ta 7.97547 11.45742 0.05805 -0.0746 0.038856 -1.899211 +Ta 11.12836 11.17255 11.09073 -0.284488 0.783851 1.570373 +100 +Lattice = "12.6055002213 0.0 0.0 0.0 12.6055002213 0.0 0.0 0.0 12.6055002213" Properties=species:S:1:pos:R:3:forces:R:3 energy=-1121.31506 stress="6315.33 3551.01 1290.84 3551.01 7373.36 -1793.4699999999998 1290.84 -1793.4699999999998 -4190.5599999999995" +Ta 0.64937 3.12625 0.43144 -0.384771 0.95129 0.165479 +Ta 1.36715 0.72175 2.1191 -0.396084 1.361974 -0.172418 +Ta 4.5846 1.15642 2.6142 -0.373595 0.78336 -1.848167 +Ta 3.4656 2.34361 0.38597 -2.224767 -1.381119 -1.370954 +Ta 7.88853 1.1719 1.55114 -0.598212 -0.078923 1.145428 +Ta 10.07282 2.82479 1.63047 1.639511 -1.074148 -1.081096 +Ta 10.53174 0.56802 2.94785 0.257895 1.267816 1.941643 +Ta 2.10362 6.2679 1.6589 0.701345 0.454084 2.496936 +Ta 5.6154 3.59317 1.03035 0.195919 -1.236583 -0.019497 +Ta 3.32731 3.74082 2.62776 -1.283076 0.780111 0.884303 +Ta 4.82978 6.12805 1.02771 1.04951 2.209193 2.462833 +Ta 7.60239 4.46941 2.24663 1.036576 0.558243 2.859549 +Ta 12.48993 4.97942 2.67215 -0.349711 -0.000505 0.40415 +Ta 9.84709 6.20394 2.82647 -0.257749 1.429134 0.922074 +Ta 10.38504 5.10677 0.57401 -0.209053 1.4898 -1.696587 +Ta 2.12734 8.88431 2.41071 -0.896766 0.496609 1.485094 +Ta 4.37717 9.21766 1.21522 -0.870196 -1.493612 0.07125 +Ta 7.07182 9.00281 1.02655 0.183737 -1.129029 -0.559981 +Ta 7.71788 6.33342 0.33272 -0.30082 1.581148 -1.075768 +Ta 12.44465 6.65378 0.30277 0.556355 -0.191302 -1.493292 +Ta 12.09046 8.23945 2.26765 -0.509885 1.361164 -0.650694 +Ta 9.81566 8.34073 0.27729 0.6859 1.115843 0.637478 +Ta 0.91684 11.16462 0.54206 0.073874 -1.819993 0.221407 +Ta 5.69432 11.50075 1.29392 1.279331 1.42035 2.206812 +Ta 10.71239 11.30092 1.18755 -0.759539 -2.842687 -0.44627 +Ta 0.12647 0.57355 5.6744 1.485357 -0.339908 0.72473 +Ta 2.40387 1.53268 4.75274 0.971096 -0.38073 0.869134 +Ta 6.4354 2.09058 4.44464 1.8115 0.323829 -0.954613 +Ta 10.29448 1.87908 6.14933 -0.973544 0.673823 0.524211 +Ta 12.13409 2.64826 3.96133 1.041975 -0.146906 -0.101053 +Ta 1.89139 4.2711 5.14514 -1.126257 1.765095 -1.172303 +Ta 4.29285 3.26764 5.49838 1.359585 0.954058 -0.894642 +Ta 6.22054 4.99782 4.76901 -0.57103 0.193676 0.659475 +Ta 8.73015 5.75307 5.41647 0.977001 1.137808 0.707847 +Ta 9.46292 3.6411 4.00924 0.208171 -0.619736 1.487252 +Ta 11.80799 5.28602 5.31887 -1.14111 -1.708079 1.708749 +Ta 1.42351 7.04153 5.51044 0.442962 1.999421 -1.932131 +Ta 3.99608 6.77694 4.00068 0.020115 -0.082585 -0.562723 +Ta 3.50684 9.23442 5.21977 0.277684 0.652346 0.809939 +Ta 6.82787 7.1376 3.15953 0.461297 -1.023286 -0.200358 +Ta 9.15017 9.16521 3.22539 0.975528 -0.406877 -2.361923 +Ta 9.03229 9.22399 5.76536 -0.96211 0.660671 1.97306 +Ta 11.42908 7.93297 4.71336 -1.075725 2.179405 -1.299081 +Ta 0.05087 11.06881 3.63544 0.18806 -0.894103 -2.497085 +Ta 0.61823 10.14934 5.99785 0.964288 -1.323025 0.615744 +Ta 2.87244 11.55729 3.56061 -0.950735 -1.383789 -0.752604 +Ta 6.21349 9.52465 3.78915 -1.000365 1.509307 0.554842 +Ta 5.15602 12.31549 4.62675 0.565237 -0.704465 1.119632 +Ta 8.08827 11.62648 3.35101 -0.339071 0.461047 0.284645 +Ta 10.68985 11.76775 5.34052 -2.452377 -2.887406 0.054989 +Ta 0.14268 2.96019 7.28952 -1.17741 0.302926 -1.013001 +Ta 1.79625 1.2317 8.73242 1.145361 -3.820996 -0.45811 +Ta 5.07039 1.39926 7.46358 -0.781338 0.724617 -1.541559 +Ta 7.57216 0.49788 6.56353 0.962384 0.05587 -0.04513 +Ta 9.27827 2.61852 8.92732 0.176007 -0.879678 -0.926458 +Ta 6.54771 2.47044 9.38651 2.190569 0.166399 1.077573 +Ta 2.76284 3.40149 7.77645 3.137421 -0.183358 -0.704336 +Ta 1.46964 5.59388 7.81661 -3.887251 -0.228325 -0.342894 +Ta 5.28247 4.64737 8.03918 0.338155 -1.923057 0.116762 +Ta 7.44449 3.18893 6.73322 1.141594 1.207491 -0.292546 +Ta 11.12935 5.21434 8.64857 -1.612825 -2.999306 -1.714386 +Ta 1.54461 8.15093 8.61321 0.347763 2.086893 -0.257285 +Ta 3.74639 6.51293 6.87702 0.959722 -0.501443 -1.452222 +Ta 6.16432 8.04946 6.35417 0.023322 -2.311879 -2.364886 +Ta 4.17774 8.81779 8.33178 -1.45671 1.390508 1.192928 +Ta 8.79674 7.34098 7.76356 0.744674 0.017978 0.615727 +Ta 6.3995 6.81915 8.95492 -2.56268 0.245528 -0.18037 +Ta 11.65865 7.47829 7.15549 -0.141642 0.63044 2.199066 +Ta 10.36878 9.3845 9.0403 -0.66872 0.230975 -0.20666 +Ta 3.44367 12.01539 7.00233 -1.966426 -2.282219 -0.555493 +Ta 6.18022 10.72879 6.38769 -0.159595 0.636574 0.422497 +Ta 6.60979 9.53788 8.62428 1.893523 1.309962 1.811685 +Ta 7.82809 11.91798 9.44419 -1.75495 0.501787 1.526707 +Ta 9.83162 12.15132 7.88212 0.675577 0.0338 -0.256919 +Ta 12.33473 11.37557 8.23941 1.476837 0.086277 1.652827 +Ta 1.26867 0.5664 11.43089 0.552369 0.109749 -1.014297 +Ta 4.11323 2.51574 10.31659 -0.216484 0.602173 -0.337403 +Ta 6.1981 1.3171 12.07577 -0.840924 -1.268238 -1.122831 +Ta 8.93316 0.96241 11.49866 0.200771 0.591493 -0.447815 +Ta 11.51202 0.95161 12.55636 0.023759 0.436473 0.983974 +Ta 11.74771 1.34839 9.48403 -0.672837 0.114932 -0.4313 +Ta 0.37088 6.14613 10.23785 1.469982 0.175809 2.274858 +Ta 1.53343 3.45239 10.16056 -2.401632 0.95373 1.427778 +Ta 2.97984 4.88656 12.27482 -1.163376 -0.933805 -0.832442 +Ta 3.23113 5.88226 9.89191 1.644345 0.515055 -2.001086 +Ta 5.83202 4.76093 11.09154 -1.265112 -0.209543 -0.313576 +Ta 8.18149 3.7694 12.32031 -0.908072 -2.871898 -1.645014 +Ta 8.28389 5.18304 9.86813 1.06209 -0.729605 -0.590042 +Ta 10.60165 3.38032 11.14631 2.294652 0.864636 -1.210164 +Ta 2.16602 8.04842 12.06324 1.617599 0.103075 -0.814791 +Ta 5.19763 7.5131 11.34985 -0.346409 1.752742 -0.487937 +Ta 7.92875 8.24785 10.61624 0.728867 1.077493 1.692555 +Ta 10.42049 6.95313 10.57826 -0.286476 0.160363 0.370268 +Ta 12.38682 9.14199 11.43376 -0.594871 0.767297 -0.960584 +Ta 2.2479 10.73902 9.80504 -0.028268 0.335889 0.421595 +Ta 4.91854 12.45236 9.55661 -0.382663 -1.868957 -0.192626 +Ta 3.60604 12.29562 12.33442 -0.6243 -0.490257 0.799831 +Ta 5.45536 10.4337 11.30531 0.355343 -0.806764 -0.469902 +Ta 8.0691 11.11452 12.46882 0.894574 0.749785 -0.70888 +Ta 10.68626 11.50854 10.77779 0.440455 -1.251201 0.450872 diff --git a/examples/PACKAGES/pod/Ta/XYZ/Surface.xyz b/examples/PACKAGES/pod/Ta/XYZ/Surface.xyz new file mode 100644 index 0000000000..d22d2ee956 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/Surface.xyz @@ -0,0 +1,250 @@ +24 +Lattice = "4.69519013405 0.0 0.0 0.0 3.32 0.0 0.0 0.0 53.12" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.911828 stress="-9651.84 0.0 0.0 0.0 -7622.87 0.0 0.0 0.0 -272.58" +Ta 2.34759 1.66 0.09121 0.0 0.0 0.001057 +Ta 0.0 0.0 0.09121 0.0 0.0 0.001057 +Ta 0.0 1.66 2.3361 0.0 0.0 0.000335 +Ta 2.34759 0.0 2.3361 0.0 0.0 0.000335 +Ta 2.34759 1.66 4.68536 0.0 0.0 0.000274 +Ta 0.0 0.0 4.68536 0.0 0.0 0.000274 +Ta 0.0 1.66 7.03392 0.0 0.0 0.000349 +Ta 2.34759 0.0 7.03392 0.0 0.0 0.000349 +Ta 2.34759 1.66 9.38594 0.0 0.0 -0.000481 +Ta 0.0 0.0 9.38594 0.0 0.0 -0.000481 +Ta 0.0 1.66 11.73648 0.0 0.0 -0.000487 +Ta 2.34759 0.0 11.73648 0.0 0.0 -0.000487 +Ta 2.34759 1.66 14.08712 0.0 0.0 0.000487 +Ta 0.0 0.0 14.08712 0.0 0.0 0.000487 +Ta 0.0 1.66 16.43764 0.0 0.0 0.000481 +Ta 2.34759 0.0 16.43764 0.0 0.0 0.000481 +Ta 2.34759 1.66 18.78966 0.0 0.0 -0.000349 +Ta 0.0 0.0 18.78966 0.0 0.0 -0.000349 +Ta 0.0 1.66 21.13823 0.0 0.0 -0.000274 +Ta 2.34759 0.0 21.13823 0.0 0.0 -0.000274 +Ta 2.34759 1.66 23.48739 0.0 0.0 -0.000335 +Ta 0.0 0.0 23.48739 0.0 0.0 -0.000335 +Ta 0.0 1.66 25.73229 0.0 0.0 -0.001057 +Ta 2.34759 0.0 25.73229 0.0 0.0 -0.001057 +48 +Lattice = "6.64001325846 0.0 0.0 0.0 6.64001325846 0.0 0.0 0.0 39.84" Properties=species:S:1:pos:R:3:forces:R:3 energy=-555.359452 stress="-6438.73 0.0 0.0 0.0 -6438.73 0.0 0.0 0.0 -286.5" +Ta 1.66001 1.66 1.62137 0.0 0.0 -3e-05 +Ta 0.0 0.0 0.17247 0.0 0.0 0.00038 +Ta 1.66001 1.66 4.98756 0.0 0.0 0.000833 +Ta 0.0 0.0 3.27999 0.0 0.0 0.000359 +Ta 1.66001 1.66 8.28844 0.0 0.0 0.00041 +Ta 0.0 0.0 6.62582 0.0 0.0 6.6e-05 +Ta 1.66001 1.66 11.63419 0.0 0.0 -6.6e-05 +Ta 0.0 0.0 9.97156 0.0 0.0 -0.00041 +Ta 1.66001 1.66 14.98001 0.0 0.0 -0.000359 +Ta 0.0 0.0 13.27244 0.0 0.0 -0.000833 +Ta 1.66001 1.66 18.08753 0.0 0.0 -0.00038 +Ta 0.0 0.0 16.63864 0.0 0.0 3e-05 +Ta 1.66001 4.98001 1.62137 0.0 0.0 -3e-05 +Ta 0.0 3.32001 0.17247 0.0 0.0 0.00038 +Ta 1.66001 4.98001 4.98756 0.0 0.0 0.000833 +Ta 0.0 3.32001 3.27999 0.0 0.0 0.000359 +Ta 1.66001 4.98001 8.28844 0.0 0.0 0.00041 +Ta 0.0 3.32001 6.62582 0.0 0.0 6.6e-05 +Ta 1.66001 4.98001 11.63419 0.0 0.0 -6.6e-05 +Ta 0.0 3.32001 9.97156 0.0 0.0 -0.00041 +Ta 1.66001 4.98001 14.98001 0.0 0.0 -0.000359 +Ta 0.0 3.32001 13.27244 0.0 0.0 -0.000833 +Ta 1.66001 4.98001 18.08753 0.0 0.0 -0.00038 +Ta 0.0 3.32001 16.63864 0.0 0.0 3e-05 +Ta 4.98002 1.66 1.62137 0.0 0.0 -3e-05 +Ta 3.32001 0.0 0.17247 0.0 0.0 0.00038 +Ta 4.98002 1.66 4.98756 0.0 0.0 0.000833 +Ta 3.32001 0.0 3.27999 0.0 0.0 0.000359 +Ta 4.98002 1.66 8.28844 0.0 0.0 0.00041 +Ta 3.32001 0.0 6.62582 0.0 0.0 6.6e-05 +Ta 4.98002 1.66 11.63419 0.0 0.0 -6.6e-05 +Ta 3.32001 0.0 9.97156 0.0 0.0 -0.00041 +Ta 4.98002 1.66 14.98001 0.0 0.0 -0.000359 +Ta 3.32001 0.0 13.27244 0.0 0.0 -0.000833 +Ta 4.98002 1.66 18.08753 0.0 0.0 -0.00038 +Ta 3.32001 0.0 16.63864 0.0 0.0 3e-05 +Ta 4.98002 4.98001 1.62137 0.0 0.0 -3e-05 +Ta 3.32001 3.32001 0.17247 0.0 0.0 0.00038 +Ta 4.98002 4.98001 4.98756 0.0 0.0 0.000833 +Ta 3.32001 3.32001 3.27999 0.0 0.0 0.000359 +Ta 4.98002 4.98001 8.28844 0.0 0.0 0.00041 +Ta 3.32001 3.32001 6.62582 0.0 0.0 6.6e-05 +Ta 4.98002 4.98001 11.63419 0.0 0.0 -6.6e-05 +Ta 3.32001 3.32001 9.97156 0.0 0.0 -0.00041 +Ta 4.98002 4.98001 14.98001 0.0 0.0 -0.000359 +Ta 3.32001 3.32001 13.27244 0.0 0.0 -0.000833 +Ta 4.98002 4.98001 18.08753 0.0 0.0 -0.00038 +Ta 3.32001 3.32001 16.63864 0.0 0.0 3e-05 +40 +Lattice = "4.69518993616 0.0 0.0 0.0 8.13231015027 0.0 0.0 0.0 36.52" Properties=species:S:1:pos:R:3:forces:R:3 energy=-459.216162 stress="-27041.87 0.0 0.0 0.0 -26744.41 19.599999999999998 0.0 19.599999999999998 -29530.539999999997" +Ta 2.34759 6.77692 0.9584 0.0 0.00104 0.266836 +Ta 0.0 2.71077 0.9584 0.0 0.00104 0.266836 +Ta 2.34759 4.06615 0.0 0.0 -0.000781 2.01398 +Ta 2.34759 4.06615 2.8752 0.0 0.002127 -0.707743 +Ta 0.0 5.42154 1.9168 0.0 -0.0035 -1.222398 +Ta 2.34759 6.77692 3.83361 0.0 0.000551 -0.353108 +Ta 0.0 0.0 0.0 0.0 -0.000781 2.01398 +Ta 0.0 0.0 2.8752 0.0 0.002127 -0.707743 +Ta 2.34759 1.35538 1.9168 0.0 -0.0035 -1.222398 +Ta 0.0 2.71077 3.83361 0.0 0.000551 -0.353108 +Ta 0.0 5.42154 4.79201 0.0 0.001693 -0.22097 +Ta 2.34759 6.77692 6.70881 0.0 0.000422 -0.070866 +Ta 2.34759 1.35538 4.79201 0.0 0.001693 -0.22097 +Ta 0.0 2.71077 6.70881 0.0 0.000422 -0.070866 +Ta 2.34759 4.06615 5.75041 0.0 -0.000841 0.251247 +Ta 2.34759 4.06615 8.62561 0.0 -0.000554 0.023395 +Ta 0.0 5.42154 7.66721 0.0 -0.000869 -0.03418 +Ta 0.0 0.0 5.75041 0.0 -0.000841 0.251247 +Ta 0.0 0.0 8.62561 0.0 -0.000554 0.023395 +Ta 2.34759 1.35538 7.66721 0.0 -0.000869 -0.03418 +Ta 0.0 5.42154 10.5424 0.0 0.000869 0.03418 +Ta 2.34759 6.77692 9.58401 0.0 0.000554 -0.023395 +Ta 2.34759 6.77692 12.4592 0.0 0.000841 -0.251247 +Ta 2.34759 1.35538 10.5424 0.0 0.000869 0.03418 +Ta 0.0 2.71077 9.58401 0.0 0.000554 -0.023395 +Ta 0.0 2.71077 12.4592 0.0 0.000841 -0.251247 +Ta 2.34759 4.06615 11.5008 0.0 -0.000422 0.070866 +Ta 0.0 5.42154 13.4176 0.0 -0.001693 0.22097 +Ta 0.0 0.0 11.5008 0.0 -0.000422 0.070866 +Ta 2.34759 1.35538 13.4176 0.0 -0.001693 0.22097 +Ta 2.34759 4.06615 14.376 0.0 -0.000551 0.353108 +Ta 0.0 5.42154 16.2928 0.0 0.0035 1.222398 +Ta 2.34759 6.77692 15.3344 0.0 -0.002127 0.707743 +Ta 2.34759 6.77692 18.2096 0.0 0.000781 -2.01398 +Ta 0.0 0.0 14.376 0.0 -0.000551 0.353108 +Ta 2.34759 1.35538 16.2928 0.0 0.0035 1.222398 +Ta 0.0 2.71077 15.3344 0.0 -0.002127 0.707743 +Ta 0.0 2.71077 18.2096 0.0 0.000781 -2.01398 +Ta 2.34759 4.06615 17.2512 0.0 -0.00104 -0.266836 +Ta 0.0 0.0 17.2512 0.0 -0.00104 -0.266836 +40 +Lattice = "4.69518993616 0.0 0.0 0.0 8.13231015027 0.0 0.0 0.0 36.52" Properties=species:S:1:pos:R:3:forces:R:3 energy=-461.144076 stress="-6214.78 0.0 0.0 0.0 -6110.78 11.43 0.0 11.43 -124.44" +Ta 2.34759 6.77677 1.02996 0.0 4.9e-05 0.000956 +Ta 0.0 2.71062 1.02996 0.0 4.9e-05 0.000956 +Ta 2.34759 4.06617 0.30181 0.0 -0.000436 0.000304 +Ta 2.34759 4.0661 2.9333 0.0 0.000405 -0.000621 +Ta 0.0 5.42161 1.81457 0.0 -0.000256 -0.000454 +Ta 2.34759 6.77673 3.82136 0.0 0.000483 0.001188 +Ta 0.0 2e-05 0.30181 0.0 -0.000436 0.000304 +Ta 0.0 8.13226 2.9333 0.0 0.000405 -0.000621 +Ta 2.34759 1.35545 1.81457 0.0 -0.000256 -0.000454 +Ta 0.0 2.71058 3.82136 0.0 0.000483 0.001188 +Ta 0.0 5.42171 4.75865 0.0 -0.000286 3.9e-05 +Ta 2.34759 6.77697 6.68474 0.0 0.000174 0.001115 +Ta 2.34759 1.35555 4.75865 0.0 -0.000286 3.9e-05 +Ta 0.0 2.71082 6.68474 0.0 0.000174 0.001115 +Ta 2.34759 4.06631 5.76725 0.0 0.000154 -0.0006 +Ta 2.34759 4.0661 8.64133 0.0 0.000311 0.000365 +Ta 0.0 5.42175 7.66351 0.0 -0.000264 -0.00059 +Ta 0.0 0.00016 5.76725 0.0 0.000154 -0.0006 +Ta 0.0 -5e-05 8.64133 0.0 0.000311 0.000365 +Ta 2.34759 1.35559 7.66351 0.0 -0.000264 -0.00059 +Ta 0.0 5.42176 10.5454 0.0 -0.000164 0.000261 +Ta 2.34759 6.77681 9.56856 0.0 0.000347 -0.001383 +Ta 2.34759 6.77657 12.44226 0.0 0.000206 0.000791 +Ta 2.34759 1.3556 10.5454 0.0 -0.000164 0.000261 +Ta 0.0 2.71066 9.56856 0.0 0.000347 -0.001383 +Ta 0.0 2.71042 12.44226 0.0 0.000206 0.000791 +Ta 2.34759 4.06598 11.52478 0.0 0.000279 -0.00135 +Ta 0.0 5.42175 13.45118 0.0 -0.000329 -0.001033 +Ta 0.0 8.13214 11.52478 0.0 0.000279 -0.00135 +Ta 2.34759 1.35559 13.45118 0.0 -0.000329 -0.001033 +Ta 2.34759 4.06624 14.38799 0.0 0.000351 -0.000576 +Ta 0.0 5.4218 16.39523 0.0 -0.000453 0.0004 +Ta 2.34759 6.77687 15.2766 0.0 0.000189 0.001532 +Ta 2.34759 6.77657 17.90814 0.0 -0.000603 -0.00011 +Ta 0.0 9e-05 14.38799 0.0 0.000351 -0.000576 +Ta 2.34759 1.35564 16.39523 0.0 -0.000453 0.0004 +Ta 0.0 2.71072 15.2766 0.0 0.000189 0.001532 +Ta 0.0 2.71042 17.90814 0.0 -0.000603 -0.00011 +Ta 2.34759 4.06617 17.17945 0.0 -0.000157 -0.000235 +Ta 0.0 2e-05 17.17945 0.0 -0.000157 -0.000235 +24 +Lattice = "4.69519013405 0.0 0.0 0.0 3.32 0.0 0.0 0.0 53.12" Properties=species:S:1:pos:R:3:forces:R:3 energy=-279.635146 stress="-21250.23 0.0 0.0 0.0 -20345.210000000003 0.0 0.0 0.0 -14676.96" +Ta 2.34759 1.66 0.0 0.0 0.0 0.48507 +Ta 0.0 0.0 0.0 0.0 0.0 0.48507 +Ta 0.0 1.66 2.34759 0.0 0.0 -0.412878 +Ta 2.34759 0.0 2.34759 0.0 0.0 -0.412878 +Ta 2.34759 1.66 4.69519 0.0 0.0 -0.096961 +Ta 0.0 0.0 4.69519 0.0 0.0 -0.096961 +Ta 0.0 1.66 7.04278 0.0 0.0 0.008179 +Ta 2.34759 0.0 7.04278 0.0 0.0 0.008179 +Ta 2.34759 1.66 9.39038 0.0 0.0 -0.003881 +Ta 0.0 0.0 9.39038 0.0 0.0 -0.003881 +Ta 0.0 1.66 11.738 0.0 0.0 0.002591 +Ta 2.34759 0.0 11.738 0.0 0.0 0.002591 +Ta 2.34759 1.66 14.0856 0.0 0.0 -0.002591 +Ta 0.0 0.0 14.0856 0.0 0.0 -0.002591 +Ta 0.0 1.66 16.4332 0.0 0.0 0.003881 +Ta 2.34759 0.0 16.4332 0.0 0.0 0.003881 +Ta 2.34759 1.66 18.7808 0.0 0.0 -0.008179 +Ta 0.0 0.0 18.7808 0.0 0.0 -0.008179 +Ta 0.0 1.66 21.1284 0.0 0.0 0.096961 +Ta 2.34759 0.0 21.1284 0.0 0.0 0.096961 +Ta 2.34759 1.66 23.4759 0.0 0.0 0.412878 +Ta 0.0 0.0 23.4759 0.0 0.0 0.412878 +Ta 0.0 1.66 25.8235 0.0 0.0 -0.48507 +Ta 2.34759 0.0 25.8235 0.0 0.0 -0.48507 +30 +Lattice = "5.75040976524 0.0 0.0 0.0 4.69518993616 0.0 0.0 0.0 39.84" Properties=species:S:1:pos:R:3:forces:R:3 energy=-346.592525 stress="-9399.49 0.0 -208.25 0.0 -11819.32 0.0 -208.25 0.0 132.24" +Ta 0.9892 0.0 2.7203 0.001551 0.0 -0.000488 +Ta 0.00727 2.34759 4.07239 0.001169 0.0 -0.000766 +Ta 2.88247 2.34759 4.07239 0.001169 0.0 -0.000766 +Ta 0.17997 0.0 0.18449 0.002466 0.0 -0.001108 +Ta 3.05517 0.0 0.18449 0.002466 0.0 -0.001108 +Ta 1.87083 2.34759 1.32776 -0.000874 0.0 -0.001517 +Ta 4.74604 2.34759 1.32776 -0.000874 0.0 -0.001517 +Ta 3.86441 0.0 2.7203 0.001551 0.0 -0.000488 +Ta 0.94648 2.34759 6.77133 0.00042 0.0 -0.000294 +Ta 0.00117 0.0 8.1367 0.000452 0.0 9.6e-05 +Ta 2.87637 0.0 8.1367 0.000452 0.0 9.6e-05 +Ta 1.91123 0.0 5.41489 0.001544 0.0 -5.7e-05 +Ta 4.78644 0.0 5.41489 0.001544 0.0 -5.7e-05 +Ta 3.82169 2.34759 6.77133 0.00042 0.0 -0.000294 +Ta 0.95723 0.0 10.83871 -0.000452 0.0 -9.6e-05 +Ta 0.01192 2.34759 12.20409 -0.00042 0.0 0.000294 +Ta 2.88712 2.34759 12.20409 -0.00042 0.0 0.000294 +Ta 1.9168 2.34759 9.48769 0.0 0.0 0.0 +Ta 4.79201 2.34759 9.48769 0.0 0.0 0.0 +Ta 3.83244 0.0 10.83871 -0.000452 0.0 -9.6e-05 +Ta 0.95113 2.34759 14.90296 -0.001169 0.0 0.000766 +Ta 5.71961 0.0 16.25507 -0.001551 0.0 0.000488 +Ta 2.8444 0.0 16.25507 -0.001551 0.0 0.000488 +Ta 1.96277 2.34759 17.64762 0.000874 0.0 0.001517 +Ta 4.83798 2.34759 17.64762 0.000874 0.0 0.001517 +Ta 1.92237 0.0 13.56045 -0.001544 0.0 5.7e-05 +Ta 4.79758 0.0 13.56045 -0.001544 0.0 5.7e-05 +Ta 3.82634 2.34759 14.90296 -0.001169 0.0 0.000766 +Ta 0.77843 0.0 18.79091 -0.002466 0.0 0.001108 +Ta 3.65364 0.0 18.79091 -0.002466 0.0 0.001108 +30 +Lattice = "5.75040976524 0.0 0.0 0.0 4.69518993616 0.0 0.0 0.0 39.84" Properties=species:S:1:pos:R:3:forces:R:3 energy=-345.744506 stress="-26530.08 0.0 -2915.02 0.0 -25603.77 0.0 -2915.02 0.0 -21262.54" +Ta 0.9584 0.0 2.71077 0.048753 0.0 -0.789488 +Ta 0.0 2.34759 4.06615 0.000543 0.0 0.103698 +Ta 2.8752 2.34759 4.06615 0.000543 0.0 0.103698 +Ta 0.0 0.0 0.0 0.302653 0.0 1.1858 +Ta 2.8752 0.0 0.0 0.302653 0.0 1.1858 +Ta 1.9168 2.34759 1.35538 -0.326078 0.0 -0.402735 +Ta 4.79201 2.34759 1.35538 -0.326078 0.0 -0.402735 +Ta 3.83361 0.0 2.71077 0.048753 0.0 -0.789488 +Ta 0.9584 2.34759 6.77692 -0.058605 0.0 -0.050501 +Ta 0.0 0.0 8.13231 0.022525 0.0 0.111412 +Ta 2.8752 0.0 8.13231 0.022525 0.0 0.111412 +Ta 1.9168 0.0 5.42154 0.017191 0.0 -0.139574 +Ta 4.79201 0.0 5.42154 0.017191 0.0 -0.139574 +Ta 3.83361 2.34759 6.77692 -0.058605 0.0 -0.050501 +Ta 0.9584 0.0 10.8431 -0.022525 0.0 -0.111412 +Ta 0.0 2.34759 12.1985 0.058605 0.0 0.050501 +Ta 2.8752 2.34759 12.1985 0.058605 0.0 0.050501 +Ta 1.9168 2.34759 9.48769 0.0 0.0 0.0 +Ta 4.79201 2.34759 9.48769 0.0 0.0 0.0 +Ta 3.83361 0.0 10.8431 -0.022525 0.0 -0.111412 +Ta 0.9584 2.34759 14.9092 -0.000543 0.0 -0.103698 +Ta 0.0 0.0 16.2646 -0.048753 0.0 0.789488 +Ta 2.8752 0.0 16.2646 -0.048753 0.0 0.789488 +Ta 1.9168 2.34759 17.62 0.326078 0.0 0.402735 +Ta 4.79201 2.34759 17.62 0.326078 0.0 0.402735 +Ta 1.9168 0.0 13.5538 -0.017191 0.0 0.139574 +Ta 4.79201 0.0 13.5538 -0.017191 0.0 0.139574 +Ta 3.83361 2.34759 14.9092 -0.000543 0.0 -0.103698 +Ta 0.9584 0.0 18.9754 -0.302653 0.0 -1.1858 +Ta 3.83361 0.0 18.9754 -0.302653 0.0 -1.1858 diff --git a/examples/PACKAGES/pod/Ta/XYZ/Volume_A15.xyz b/examples/PACKAGES/pod/Ta/XYZ/Volume_A15.xyz new file mode 100644 index 0000000000..41e9be5a6d --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/Volume_A15.xyz @@ -0,0 +1,300 @@ +8 +Lattice = "6.7 0.0 0.0 0.0 6.7 0.0 0.0 0.0 6.7" Properties=species:S:1:pos:R:3:forces:R:3 energy=-66.990732 stress="-312387.88 0.0 -0.0 0.0 -312387.88 0.0 -0.0 0.0 -312387.88" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 3.35 3.35 3.35 0.0 0.0 0.0 +Ta 1.675 3.35 0.0 0.0 0.0 0.0 +Ta 5.025 3.35 0.0 0.0 0.0 0.0 +Ta 0.0 1.675 3.35 0.0 0.0 0.0 +Ta 0.0 5.025 3.35 0.0 0.0 0.0 +Ta 3.35 0.0 1.675 0.0 0.0 0.0 +Ta 3.35 0.0 5.025 0.0 0.0 0.0 +8 +Lattice = "4.6 0.0 0.0 0.0 4.6 0.0 0.0 0.0 4.6" Properties=species:S:1:pos:R:3:forces:R:3 energy=-72.957807 stress="1835613.98 0.0 -0.0 0.0 1835613.98 0.0 -0.0 0.0 1835613.98" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.3 2.3 2.3 0.0 0.0 0.0 +Ta 1.15 2.3 0.0 0.0 0.0 0.0 +Ta 3.45 2.3 0.0 0.0 0.0 0.0 +Ta 0.0 1.15 2.3 0.0 0.0 0.0 +Ta 0.0 3.45 2.3 0.0 0.0 0.0 +Ta 2.3 0.0 1.15 0.0 0.0 0.0 +Ta 2.3 0.0 3.45 0.0 0.0 0.0 +8 +Lattice = "5.2 0.0 0.0 0.0 5.2 0.0 0.0 0.0 5.2" Properties=species:S:1:pos:R:3:forces:R:3 energy=-94.145745 stress="145354.31 0.0 0.0 0.0 145354.31 -0.0 0.0 -0.0 145354.31" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.6 2.6 2.6 0.0 0.0 0.0 +Ta 1.3 2.6 0.0 0.0 0.0 0.0 +Ta 3.9 2.6 0.0 0.0 0.0 0.0 +Ta 0.0 1.3 2.6 0.0 0.0 0.0 +Ta 0.0 3.9 2.6 0.0 0.0 0.0 +Ta 2.6 0.0 1.3 0.0 0.0 0.0 +Ta 2.6 0.0 3.9 0.0 0.0 0.0 +8 +Lattice = "5.3 0.0 0.0 0.0 5.3 0.0 0.0 0.0 5.3" Properties=species:S:1:pos:R:3:forces:R:3 energy=-94.554682 stress="18038.98 0.0 -0.0 0.0 18038.98 -0.0 -0.0 -0.0 18038.98" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.65 2.65 2.65 0.0 0.0 0.0 +Ta 1.325 2.65 0.0 0.0 0.0 0.0 +Ta 3.975 2.65 0.0 0.0 0.0 0.0 +Ta 0.0 1.325 2.65 0.0 0.0 0.0 +Ta 0.0 3.975 2.65 0.0 0.0 0.0 +Ta 2.65 0.0 1.325 0.0 0.0 0.0 +Ta 2.65 0.0 3.975 0.0 0.0 0.0 +8 +Lattice = "4.7 0.0 0.0 0.0 4.7 0.0 0.0 0.0 4.7" Properties=species:S:1:pos:R:3:forces:R:3 energy=-79.438363 stress="1385239.49 0.0 0.0 0.0 1385239.49 0.0 0.0 0.0 1385239.49" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.35 2.35 2.35 0.0 0.0 0.0 +Ta 1.175 2.35 0.0 0.0 0.0 0.0 +Ta 3.525 2.35 0.0 0.0 0.0 0.0 +Ta 0.0 1.175 2.35 0.0 0.0 0.0 +Ta 0.0 3.525 2.35 0.0 0.0 0.0 +Ta 2.35 0.0 1.175 0.0 0.0 0.0 +Ta 2.35 0.0 3.525 0.0 0.0 0.0 +8 +Lattice = "6.6 0.0 0.0 0.0 6.6 0.0 0.0 0.0 6.6" Properties=species:S:1:pos:R:3:forces:R:3 energy=-69.627817 stress="-324717.99 0.0 0.0 0.0 -324717.99 0.0 0.0 0.0 -324717.99" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 3.3 3.3 3.3 0.0 0.0 0.0 +Ta 1.65 3.3 0.0 0.0 0.0 0.0 +Ta 4.95 3.3 0.0 0.0 0.0 0.0 +Ta 0.0 1.65 3.3 0.0 0.0 0.0 +Ta 0.0 4.95 3.3 0.0 0.0 0.0 +Ta 3.3 0.0 1.65 0.0 0.0 0.0 +Ta 3.3 0.0 4.95 0.0 0.0 0.0 +8 +Lattice = "6.1 0.0 0.0 0.0 6.1 0.0 0.0 0.0 6.1" Properties=species:S:1:pos:R:3:forces:R:3 energy=-82.604907 stress="-350351.07 0.0 0.0 0.0 -350351.07 0.0 0.0 0.0 -350351.07" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 3.05 3.05 3.05 0.0 0.0 0.0 +Ta 1.525 3.05 0.0 0.0 0.0 0.0 +Ta 4.575 3.05 0.0 0.0 0.0 0.0 +Ta 0.0 1.525 3.05 0.0 0.0 0.0 +Ta 0.0 4.575 3.05 0.0 0.0 0.0 +Ta 3.05 0.0 1.525 0.0 0.0 0.0 +Ta 3.05 0.0 4.575 0.0 0.0 0.0 +8 +Lattice = "4.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 4.0" Properties=species:S:1:pos:R:3:forces:R:3 energy=14.89048 stress="8403695.620000001 0.0 0.0 0.0 8403695.620000001 0.0 0.0 0.0 8403695.620000001" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.0 2.0 2.0 0.0 0.0 0.0 +Ta 1.0 2.0 0.0 0.0 0.0 0.0 +Ta 3.0 2.0 0.0 0.0 0.0 0.0 +Ta 0.0 1.0 2.0 0.0 0.0 0.0 +Ta 0.0 3.0 2.0 0.0 0.0 0.0 +Ta 2.0 0.0 1.0 0.0 0.0 0.0 +Ta 2.0 0.0 3.0 0.0 0.0 0.0 +8 +Lattice = "5.4 0.0 0.0 0.0 5.4 0.0 0.0 0.0 5.4" Properties=species:S:1:pos:R:3:forces:R:3 energy=-94.367599 stress="-83756.66 -0.0 0.0 -0.0 -83756.66 -0.0 0.0 -0.0 -83756.66" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.7 2.7 2.7 0.0 0.0 0.0 +Ta 1.35 2.7 0.0 0.0 0.0 0.0 +Ta 4.05 2.7 0.0 0.0 0.0 0.0 +Ta 0.0 1.35 2.7 0.0 0.0 0.0 +Ta 0.0 4.05 2.7 0.0 0.0 0.0 +Ta 2.7 0.0 1.35 0.0 0.0 0.0 +Ta 2.7 0.0 4.05 0.0 0.0 0.0 +8 +Lattice = "5.8 0.0 0.0 0.0 5.8 0.0 0.0 0.0 5.8" Properties=species:S:1:pos:R:3:forces:R:3 energy=-89.248227 stress="-305522.26 0.0 0.0 0.0 -305522.26 -0.0 0.0 -0.0 -305522.26" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.9 2.9 2.9 0.0 0.0 0.0 +Ta 1.45 2.9 0.0 0.0 0.0 0.0 +Ta 4.35 2.9 0.0 0.0 0.0 0.0 +Ta 0.0 1.45 2.9 0.0 0.0 0.0 +Ta 0.0 4.35 2.9 0.0 0.0 0.0 +Ta 2.9 0.0 1.45 0.0 0.0 0.0 +Ta 2.9 0.0 4.35 0.0 0.0 0.0 +8 +Lattice = "5.9 0.0 0.0 0.0 5.9 0.0 0.0 0.0 5.9" Properties=species:S:1:pos:R:3:forces:R:3 energy=-87.211997 stress="-328516.14999999997 -0.0 0.0 -0.0 -328516.14999999997 0.0 0.0 0.0 -328516.14999999997" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.95 2.95 2.95 0.0 0.0 0.0 +Ta 1.475 2.95 0.0 0.0 0.0 0.0 +Ta 4.425 2.95 0.0 0.0 0.0 0.0 +Ta 0.0 1.475 2.95 0.0 0.0 0.0 +Ta 0.0 4.425 2.95 0.0 0.0 0.0 +Ta 2.95 0.0 1.475 0.0 0.0 0.0 +Ta 2.95 0.0 4.425 0.0 0.0 0.0 +8 +Lattice = "5.5 0.0 0.0 0.0 5.5 0.0 0.0 0.0 5.5" Properties=species:S:1:pos:R:3:forces:R:3 energy=-93.66897 stress="-164011.68000000002 -0.0 0.0 -0.0 -164011.68000000002 0.0 0.0 0.0 -164011.68000000002" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.75 2.75 2.75 0.0 0.0 0.0 +Ta 1.375 2.75 0.0 0.0 0.0 0.0 +Ta 4.125 2.75 0.0 0.0 0.0 0.0 +Ta 0.0 1.375 2.75 0.0 0.0 0.0 +Ta 0.0 4.125 2.75 0.0 0.0 0.0 +Ta 2.75 0.0 1.375 0.0 0.0 0.0 +Ta 2.75 0.0 4.125 0.0 0.0 0.0 +8 +Lattice = "4.1 0.0 0.0 0.0 4.1 0.0 0.0 0.0 4.1" Properties=species:S:1:pos:R:3:forces:R:3 energy=-7.989166 stress="6580211.09 0.0 0.0 0.0 6580211.09 0.0 0.0 0.0 6580211.09" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.05 2.05 2.05 0.0 0.0 0.0 +Ta 1.025 2.05 0.0 0.0 0.0 0.0 +Ta 3.075 2.05 0.0 0.0 0.0 0.0 +Ta 0.0 1.025 2.05 0.0 0.0 0.0 +Ta 0.0 3.075 2.05 0.0 0.0 0.0 +Ta 2.05 0.0 1.025 0.0 0.0 0.0 +Ta 2.05 0.0 3.075 0.0 0.0 0.0 +8 +Lattice = "6.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 6.0" Properties=species:S:1:pos:R:3:forces:R:3 energy=-84.982834 stress="-342905.56 0.0 -0.0 0.0 -342905.56 -0.0 -0.0 -0.0 -342905.56" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 3.0 3.0 3.0 0.0 0.0 0.0 +Ta 1.5 3.0 0.0 0.0 0.0 0.0 +Ta 4.5 3.0 0.0 0.0 0.0 0.0 +Ta 0.0 1.5 3.0 0.0 0.0 0.0 +Ta 0.0 4.5 3.0 0.0 0.0 0.0 +Ta 3.0 0.0 1.5 0.0 0.0 0.0 +Ta 3.0 0.0 4.5 0.0 0.0 0.0 +8 +Lattice = "5.6 0.0 0.0 0.0 5.6 0.0 0.0 0.0 5.6" Properties=species:S:1:pos:R:3:forces:R:3 energy=-92.536373 stress="-225855.3 0.0 -0.0 0.0 -225855.3 0.0 -0.0 0.0 -225855.3" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.8 2.8 2.8 0.0 0.0 0.0 +Ta 1.4 2.8 0.0 0.0 0.0 0.0 +Ta 4.2 2.8 0.0 0.0 0.0 0.0 +Ta 0.0 1.4 2.8 0.0 0.0 0.0 +Ta 0.0 4.2 2.8 0.0 0.0 0.0 +Ta 2.8 0.0 1.4 0.0 0.0 0.0 +Ta 2.8 0.0 4.2 0.0 0.0 0.0 +8 +Lattice = "4.2 0.0 0.0 0.0 4.2 0.0 0.0 0.0 4.2" Properties=species:S:1:pos:R:3:forces:R:3 energy=-26.77612 stress="5138714.33 -0.0 -0.0 -0.0 5138714.33 0.0 -0.0 0.0 5138714.33" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.1 2.1 2.1 0.0 0.0 0.0 +Ta 1.05 2.1 0.0 0.0 0.0 0.0 +Ta 3.15 2.1 0.0 0.0 0.0 0.0 +Ta 0.0 1.05 2.1 0.0 0.0 0.0 +Ta 0.0 3.15 2.1 0.0 0.0 0.0 +Ta 2.1 0.0 1.05 0.0 0.0 0.0 +Ta 2.1 0.0 3.15 0.0 0.0 0.0 +8 +Lattice = "6.3 0.0 0.0 0.0 6.3 0.0 0.0 0.0 6.3" Properties=species:S:1:pos:R:3:forces:R:3 energy=-77.544107 stress="-349968.45 0.0 0.0 0.0 -349968.45 0.0 0.0 0.0 -349968.45" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 3.15 3.15 3.15 0.0 0.0 0.0 +Ta 1.575 3.15 0.0 0.0 0.0 0.0 +Ta 4.725 3.15 0.0 0.0 0.0 0.0 +Ta 0.0 1.575 3.15 0.0 0.0 0.0 +Ta 0.0 4.725 3.15 0.0 0.0 0.0 +Ta 3.15 0.0 1.575 0.0 0.0 0.0 +Ta 3.15 0.0 4.725 0.0 0.0 0.0 +8 +Lattice = "6.2 0.0 0.0 0.0 6.2 0.0 0.0 0.0 6.2" Properties=species:S:1:pos:R:3:forces:R:3 energy=-80.114217 stress="-352410.12 0.0 0.0 0.0 -352410.12 0.0 0.0 0.0 -352410.12" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 3.1 3.1 3.1 0.0 0.0 0.0 +Ta 1.55 3.1 0.0 0.0 0.0 0.0 +Ta 4.65 3.1 0.0 0.0 0.0 0.0 +Ta 0.0 1.55 3.1 0.0 0.0 0.0 +Ta 0.0 4.65 3.1 0.0 0.0 0.0 +Ta 3.1 0.0 1.55 0.0 0.0 0.0 +Ta 3.1 0.0 4.65 0.0 0.0 0.0 +8 +Lattice = "4.3 0.0 0.0 0.0 4.3 0.0 0.0 0.0 4.3" Properties=species:S:1:pos:R:3:forces:R:3 energy=-42.143041 stress="4001608.1 -0.0 -0.0 -0.0 4001608.1 -0.0 -0.0 -0.0 4001608.1" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.15 2.15 2.15 0.0 0.0 0.0 +Ta 1.075 2.15 0.0 0.0 0.0 0.0 +Ta 3.225 2.15 0.0 0.0 0.0 0.0 +Ta 0.0 1.075 2.15 0.0 0.0 0.0 +Ta 0.0 3.225 2.15 0.0 0.0 0.0 +Ta 2.15 0.0 1.075 0.0 0.0 0.0 +Ta 2.15 0.0 3.225 0.0 0.0 0.0 +8 +Lattice = "5.7 0.0 0.0 0.0 5.7 0.0 0.0 0.0 5.7" Properties=species:S:1:pos:R:3:forces:R:3 energy=-91.040671 stress="-272236.58 -0.0 0.0 -0.0 -272236.58 -0.0 0.0 -0.0 -272236.58" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.85 2.85 2.85 0.0 0.0 0.0 +Ta 1.425 2.85 0.0 0.0 0.0 0.0 +Ta 4.275 2.85 0.0 0.0 0.0 0.0 +Ta 0.0 1.425 2.85 0.0 0.0 0.0 +Ta 0.0 4.275 2.85 0.0 0.0 0.0 +Ta 2.85 0.0 1.425 0.0 0.0 0.0 +Ta 2.85 0.0 4.275 0.0 0.0 0.0 +8 +Lattice = "4.8 0.0 0.0 0.0 4.8 0.0 0.0 0.0 4.8" Properties=species:S:1:pos:R:3:forces:R:3 energy=-84.499231 stress="1025744.96 -0.0 -0.0 -0.0 1025744.96 -0.0 -0.0 -0.0 1025744.96" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.4 2.4 2.4 0.0 0.0 0.0 +Ta 1.2 2.4 0.0 0.0 0.0 0.0 +Ta 3.6 2.4 0.0 0.0 0.0 0.0 +Ta 0.0 1.2 2.4 0.0 0.0 0.0 +Ta 0.0 3.6 2.4 0.0 0.0 0.0 +Ta 2.4 0.0 1.2 0.0 0.0 0.0 +Ta 2.4 0.0 3.6 0.0 0.0 0.0 +8 +Lattice = "6.9 0.0 0.0 0.0 6.9 0.0 0.0 0.0 6.9" Properties=species:S:1:pos:R:3:forces:R:3 energy=-61.825173 stress="-284789.87 -0.0 -0.0 -0.0 -284789.87 -0.0 -0.0 -0.0 -284789.87" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 3.45 3.45 3.45 0.0 0.0 0.0 +Ta 1.725 3.45 0.0 0.0 0.0 0.0 +Ta 5.175 3.45 0.0 0.0 0.0 0.0 +Ta 0.0 1.725 3.45 0.0 0.0 0.0 +Ta 0.0 5.175 3.45 0.0 0.0 0.0 +Ta 3.45 0.0 1.725 0.0 0.0 0.0 +Ta 3.45 0.0 5.175 0.0 0.0 0.0 +8 +Lattice = "5.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 5.0" Properties=species:S:1:pos:R:3:forces:R:3 energy=-91.156873 stress="496748.23 -0.0 0.0 -0.0 496748.23 0.0 0.0 0.0 496748.23" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.5 2.5 2.5 0.0 0.0 0.0 +Ta 1.25 2.5 0.0 0.0 0.0 0.0 +Ta 3.75 2.5 0.0 0.0 0.0 0.0 +Ta 0.0 1.25 2.5 0.0 0.0 0.0 +Ta 0.0 3.75 2.5 0.0 0.0 0.0 +Ta 2.5 0.0 1.25 0.0 0.0 0.0 +Ta 2.5 0.0 3.75 0.0 0.0 0.0 +8 +Lattice = "4.4 0.0 0.0 0.0 4.4 0.0 0.0 0.0 4.4" Properties=species:S:1:pos:R:3:forces:R:3 energy=-54.658744 stress="3103602.33 0.0 -0.0 0.0 3103602.33 -0.0 -0.0 -0.0 3103602.33" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.2 2.2 2.2 0.0 0.0 0.0 +Ta 1.1 2.2 0.0 0.0 0.0 0.0 +Ta 3.3 2.2 0.0 0.0 0.0 0.0 +Ta 0.0 1.1 2.2 0.0 0.0 0.0 +Ta 0.0 3.3 2.2 0.0 0.0 0.0 +Ta 2.2 0.0 1.1 0.0 0.0 0.0 +Ta 2.2 0.0 3.3 0.0 0.0 0.0 +8 +Lattice = "6.5 0.0 0.0 0.0 6.5 0.0 0.0 0.0 6.5" Properties=species:S:1:pos:R:3:forces:R:3 energy=-72.277255 stress="-335267.83999999997 -0.0 -0.0 -0.0 -335267.83999999997 -0.0 -0.0 -0.0 -335267.83999999997" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 3.25 3.25 3.25 0.0 0.0 0.0 +Ta 1.625 3.25 0.0 0.0 0.0 0.0 +Ta 4.875 3.25 0.0 0.0 0.0 0.0 +Ta 0.0 1.625 3.25 0.0 0.0 0.0 +Ta 0.0 4.875 3.25 0.0 0.0 0.0 +Ta 3.25 0.0 1.625 0.0 0.0 0.0 +Ta 3.25 0.0 4.875 0.0 0.0 0.0 +8 +Lattice = "6.4 0.0 0.0 0.0 6.4 0.0 0.0 0.0 6.4" Properties=species:S:1:pos:R:3:forces:R:3 energy=-74.923334 stress="-344004.72000000003 -0.0 -0.0 -0.0 -344004.72000000003 -0.0 -0.0 -0.0 -344004.72000000003" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 3.2 3.2 3.2 0.0 0.0 0.0 +Ta 1.6 3.2 0.0 0.0 0.0 0.0 +Ta 4.8 3.2 0.0 0.0 0.0 0.0 +Ta 0.0 1.6 3.2 0.0 0.0 0.0 +Ta 0.0 4.8 3.2 0.0 0.0 0.0 +Ta 3.2 0.0 1.6 0.0 0.0 0.0 +Ta 3.2 0.0 4.8 0.0 0.0 0.0 +8 +Lattice = "4.5 0.0 0.0 0.0 4.5 0.0 0.0 0.0 4.5" Properties=species:S:1:pos:R:3:forces:R:3 energy=-64.798066 stress="2398125.0500000003 0.0 0.0 0.0 2398125.0500000003 0.0 0.0 0.0 2398125.0500000003" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.25 2.25 2.25 0.0 0.0 0.0 +Ta 1.125 2.25 0.0 0.0 0.0 0.0 +Ta 3.375 2.25 0.0 0.0 0.0 0.0 +Ta 0.0 1.125 2.25 0.0 0.0 0.0 +Ta 0.0 3.375 2.25 0.0 0.0 0.0 +Ta 2.25 0.0 1.125 0.0 0.0 0.0 +Ta 2.25 0.0 3.375 0.0 0.0 0.0 +8 +Lattice = "5.1 0.0 0.0 0.0 5.1 0.0 0.0 0.0 5.1" Properties=species:S:1:pos:R:3:forces:R:3 energy=-93.048342 stress="302698.75 0.0 -0.0 0.0 302698.75 -0.0 -0.0 -0.0 302698.75" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.55 2.55 2.55 0.0 0.0 0.0 +Ta 1.275 2.55 0.0 0.0 0.0 0.0 +Ta 3.825 2.55 0.0 0.0 0.0 0.0 +Ta 0.0 1.275 2.55 0.0 0.0 0.0 +Ta 0.0 3.825 2.55 0.0 0.0 0.0 +Ta 2.55 0.0 1.275 0.0 0.0 0.0 +Ta 2.55 0.0 3.825 0.0 0.0 0.0 +8 +Lattice = "6.8 0.0 0.0 0.0 6.8 0.0 0.0 0.0 6.8" Properties=species:S:1:pos:R:3:forces:R:3 energy=-64.38702 stress="-298814.67 0.0 0.0 0.0 -298814.67 0.0 0.0 0.0 -298814.67" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 3.4 3.4 3.4 0.0 0.0 0.0 +Ta 1.7 3.4 0.0 0.0 0.0 0.0 +Ta 5.1 3.4 0.0 0.0 0.0 0.0 +Ta 0.0 1.7 3.4 0.0 0.0 0.0 +Ta 0.0 5.1 3.4 0.0 0.0 0.0 +Ta 3.4 0.0 1.7 0.0 0.0 0.0 +Ta 3.4 0.0 5.1 0.0 0.0 0.0 +8 +Lattice = "4.9 0.0 0.0 0.0 4.9 0.0 0.0 0.0 4.9" Properties=species:S:1:pos:R:3:forces:R:3 energy=-88.352871 stress="734688.7400000001 0.0 0.0 0.0 734688.7400000001 -0.0 0.0 -0.0 734688.7400000001" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.45 2.45 2.45 0.0 0.0 0.0 +Ta 1.225 2.45 0.0 0.0 0.0 0.0 +Ta 3.675 2.45 0.0 0.0 0.0 0.0 +Ta 0.0 1.225 2.45 0.0 0.0 0.0 +Ta 0.0 3.675 2.45 0.0 0.0 0.0 +Ta 2.45 0.0 1.225 0.0 0.0 0.0 +Ta 2.45 0.0 3.675 0.0 0.0 0.0 diff --git a/examples/PACKAGES/pod/Ta/XYZ/Volume_BCC.xyz b/examples/PACKAGES/pod/Ta/XYZ/Volume_BCC.xyz new file mode 100644 index 0000000000..1a43270892 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/Volume_BCC.xyz @@ -0,0 +1,84 @@ +2 +Lattice = "4.2 0.0 0.0 0.0 4.2 0.0 0.0 0.0 4.2" Properties=species:S:1:pos:R:3:forces:R:3 energy=-16.763625 stress="-315811.75 0.0 0.0 0.0 -315811.75 0.0 0.0 0.0 -315811.75" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.1 2.1 2.1 0.0 0.0 0.0 +2 +Lattice = "2.4 0.0 0.0 0.0 2.4 0.0 0.0 0.0 2.4" Properties=species:S:1:pos:R:3:forces:R:3 energy=16.314145 stress="13221145.45 0.0 -0.0 0.0 13221145.45 0.0 -0.0 0.0 13221145.45" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.2 1.2 1.2 0.0 0.0 0.0 +2 +Lattice = "3.0 0.0 0.0 0.0 3.0 0.0 0.0 0.0 3.0" Properties=species:S:1:pos:R:3:forces:R:3 energy=-21.209071 stress="1054433.87 -0.0 0.0 -0.0 1054433.87 -0.0 0.0 -0.0 1054433.87" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.5 1.5 1.5 0.0 0.0 0.0 +2 +Lattice = "2.8 0.0 0.0 0.0 2.8 0.0 0.0 0.0 2.8" Properties=species:S:1:pos:R:3:forces:R:3 energy=-15.780524 stress="2609201.0100000002 0.0 -0.0 0.0 2609201.0100000002 0.0 -0.0 0.0 2609201.0100000002" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.4 1.4 1.4 0.0 0.0 0.0 +2 +Lattice = "2.9 0.0 0.0 0.0 2.9 0.0 0.0 0.0 2.9" Properties=species:S:1:pos:R:3:forces:R:3 energy=-19.002205 stress="1696212.8900000001 0.0 0.0 0.0 1696212.8900000001 0.0 0.0 0.0 1696212.8900000001" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.45 1.45 1.45 0.0 0.0 0.0 +2 +Lattice = "3.1 0.0 0.0 0.0 3.1 0.0 0.0 0.0 3.1" Properties=species:S:1:pos:R:3:forces:R:3 energy=-22.620568 stress="596204.8200000001 0.0 0.0 0.0 596204.8200000001 0.0 0.0 0.0 596204.8200000001" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.55 1.55 1.55 0.0 0.0 0.0 +2 +Lattice = "2.5 0.0 0.0 0.0 2.5 0.0 0.0 0.0 2.5" Properties=species:S:1:pos:R:3:forces:R:3 energy=4.096885 stress="8866538.459999999 0.0 0.0 0.0 8866538.459999999 -0.0 0.0 -0.0 8866538.459999999" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.25 1.25 1.25 0.0 0.0 0.0 +2 +Lattice = "2.2 0.0 0.0 0.0 2.2 0.0 0.0 0.0 2.2" Properties=species:S:1:pos:R:3:forces:R:3 energy=56.26276 stress="29925857.27 -0.0 -0.0 -0.0 29925857.27 -0.0 -0.0 -0.0 29925857.27" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.1 1.1 1.1 0.0 0.0 0.0 +2 +Lattice = "3.6 0.0 0.0 0.0 3.6 0.0 0.0 0.0 3.6" Properties=species:S:1:pos:R:3:forces:R:3 energy=-22.585113 stress="-294769.07 0.0 0.0 0.0 -294769.07 0.0 0.0 0.0 -294769.07" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.8 1.8 1.8 0.0 0.0 0.0 +2 +Lattice = "3.7 0.0 0.0 0.0 3.7 0.0 0.0 0.0 3.7" Properties=species:S:1:pos:R:3:forces:R:3 energy=-21.795501 stress="-334343.07 0.0 0.0 0.0 -334343.07 -0.0 0.0 -0.0 -334343.07" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.85 1.85 1.85 0.0 0.0 0.0 +2 +Lattice = "2.3 0.0 0.0 0.0 2.3 0.0 0.0 0.0 2.3" Properties=species:S:1:pos:R:3:forces:R:3 energy=33.110078 stress="19804876.43 0.0 0.0 0.0 19804876.43 -0.0 0.0 -0.0 19804876.43" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.15 1.15 1.15 0.0 0.0 0.0 +2 +Lattice = "3.8 0.0 0.0 0.0 3.8 0.0 0.0 0.0 3.8" Properties=species:S:1:pos:R:3:forces:R:3 energy=-20.885998 stress="-353363.87 -0.0 0.0 -0.0 -353363.87 -0.0 0.0 -0.0 -353363.87" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.9 1.9 1.9 0.0 0.0 0.0 +2 +Lattice = "3.4 0.0 0.0 0.0 3.4 0.0 0.0 0.0 3.4" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.601336 stress="-119086.12999999999 0.0 -0.0 0.0 -119086.12999999999 0.0 -0.0 0.0 -119086.12999999999" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.7 1.7 1.7 0.0 0.0 0.0 +2 +Lattice = "3.5 0.0 0.0 0.0 3.5 0.0 0.0 0.0 3.5" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.207313 stress="-226389.97 0.0 -0.0 0.0 -226389.97 0.0 -0.0 0.0 -226389.97" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.75 1.75 1.75 0.0 0.0 0.0 +2 +Lattice = "3.9 0.0 0.0 0.0 3.9 0.0 0.0 0.0 3.9" Properties=species:S:1:pos:R:3:forces:R:3 energy=-19.898089 stress="-356527.42 0.0 -0.0 0.0 -356527.42 0.0 -0.0 0.0 -356527.42" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.95 1.95 1.95 0.0 0.0 0.0 +2 +Lattice = "3.2 0.0 0.0 0.0 3.2 0.0 0.0 0.0 3.2" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.405474 stress="270245.51 -0.0 0.0 -0.0 270245.51 -0.0 0.0 -0.0 270245.51" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.6 1.6 1.6 0.0 0.0 0.0 +2 +Lattice = "2.6 0.0 0.0 0.0 2.6 0.0 0.0 0.0 2.6" Properties=species:S:1:pos:R:3:forces:R:3 energy=-4.781324 stress="5944705.43 -0.0 0.0 -0.0 5944705.43 -0.0 0.0 -0.0 5944705.43" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.3 1.3 1.3 0.0 0.0 0.0 +2 +Lattice = "4.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 4.0" Properties=species:S:1:pos:R:3:forces:R:3 energy=-18.864936 stress="-349512.61 -0.0 -0.0 -0.0 -349512.61 0.0 -0.0 0.0 -349512.61" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.0 2.0 2.0 0.0 0.0 0.0 +2 +Lattice = "4.1 0.0 0.0 0.0 4.1 0.0 0.0 0.0 4.1" Properties=species:S:1:pos:R:3:forces:R:3 energy=-17.813086 stress="-334971.81 0.0 0.0 0.0 -334971.81 0.0 0.0 0.0 -334971.81" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.05 2.05 2.05 0.0 0.0 0.0 +2 +Lattice = "2.7 0.0 0.0 0.0 2.7 0.0 0.0 0.0 2.7" Properties=species:S:1:pos:R:3:forces:R:3 energy=-11.197201 stress="3964027.36 0.0 0.0 0.0 3964027.36 0.0 0.0 0.0 3964027.36" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.35 1.35 1.35 0.0 0.0 0.0 +2 +Lattice = "3.3 0.0 0.0 0.0 3.3 0.0 0.0 0.0 3.3" Properties=species:S:1:pos:R:3:forces:R:3 energy=-23.696705 stress="39945.84 -0.0 -0.0 -0.0 39945.84 0.0 -0.0 0.0 39945.84" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.65 1.65 1.65 0.0 0.0 0.0 diff --git a/examples/PACKAGES/pod/Ta/XYZ/Volume_FCC.xyz b/examples/PACKAGES/pod/Ta/XYZ/Volume_FCC.xyz new file mode 100644 index 0000000000..48c577b507 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/XYZ/Volume_FCC.xyz @@ -0,0 +1,186 @@ +4 +Lattice = "3.4 0.0 0.0 0.0 3.4 0.0 0.0 0.0 3.4" Properties=species:S:1:pos:R:3:forces:R:3 energy=-19.075994 stress="4059178.91 0.0 -0.0 0.0 4059178.91 0.0 -0.0 0.0 4059178.91" +Ta 0.0 0.0 0.0 0 0 0 +Ta 1.7 1.7 0.0 0 0 0 +Ta 1.7 0.0 1.7 0 0 0 +Ta 0.0 1.7 1.7 0 0 0 +4 +Lattice = "5.2 0.0 0.0 0.0 5.2 0.0 0.0 0.0 5.2" Properties=species:S:1:pos:R:3:forces:R:3 energy=-34.873619 stress="-326647.94999999995 0.0 0.0 0.0 -326647.94999999995 -0.0 0.0 -0.0 -326647.94999999995" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.6 2.6 0.0 0.0 0.0 0.0 +Ta 2.6 0.0 2.6 0.0 0.0 0.0 +Ta 0.0 2.6 2.6 0.0 0.0 0.0 +4 +Lattice = "4.6 0.0 0.0 0.0 4.6 0.0 0.0 0.0 4.6" Properties=species:S:1:pos:R:3:forces:R:3 energy=-43.950003 stress="-296256.79000000004 -0.0 -0.0 -0.0 -296256.79000000004 0.0 -0.0 0.0 -296256.79000000004" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.3 2.3 0.0 0.0 0.0 0.0 +Ta 2.3 0.0 2.3 0.0 0.0 0.0 +Ta 0.0 2.3 2.3 0.0 0.0 0.0 +4 +Lattice = "3.8 0.0 0.0 0.0 3.8 0.0 0.0 0.0 3.8" Properties=species:S:1:pos:R:3:forces:R:3 energy=-40.991909 stress="1079302.71 0.0 0.0 0.0 1079302.71 0.0 0.0 0.0 1079302.71" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.9 1.9 0.0 0.0 0.0 0.0 +Ta 1.9 0.0 1.9 0.0 0.0 0.0 +Ta 0.0 1.9 1.9 0.0 0.0 0.0 +4 +Lattice = "3.9 0.0 0.0 0.0 3.9 0.0 0.0 0.0 3.9" Properties=species:S:1:pos:R:3:forces:R:3 energy=-43.453929 stress="713769.5499999999 0.0 0.0 0.0 713769.5499999999 -0.0 0.0 -0.0 713769.5499999999" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.95 1.95 0.0 0.0 0.0 0.0 +Ta 1.95 0.0 1.95 0.0 0.0 0.0 +Ta 0.0 1.95 1.95 0.0 0.0 0.0 +4 +Lattice = "4.7 0.0 0.0 0.0 4.7 0.0 0.0 0.0 4.7" Properties=species:S:1:pos:R:3:forces:R:3 energy=-42.686077 stress="-325547.88 0.0 0.0 0.0 -325547.88 0.0 0.0 0.0 -325547.88" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.35 2.35 0.0 0.0 0.0 0.0 +Ta 2.35 0.0 2.35 0.0 0.0 0.0 +Ta 0.0 2.35 2.35 0.0 0.0 0.0 +4 +Lattice = "5.3 0.0 0.0 0.0 5.3 0.0 0.0 0.0 5.3" Properties=species:S:1:pos:R:3:forces:R:3 energy=-33.224653 stress="-312088.68 0.0 0.0 0.0 -312088.68 0.0 0.0 0.0 -312088.68" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.65 2.65 0.0 0.0 0.0 0.0 +Ta 2.65 0.0 2.65 0.0 0.0 0.0 +Ta 0.0 2.65 2.65 0.0 0.0 0.0 +4 +Lattice = "3.5 0.0 0.0 0.0 3.5 0.0 0.0 0.0 3.5" Properties=species:S:1:pos:R:3:forces:R:3 energy=-26.862709 stress="2990127.38 0.0 0.0 0.0 2990127.38 -0.0 0.0 -0.0 2990127.38" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.75 1.75 0.0 0.0 0.0 0.0 +Ta 1.75 0.0 1.75 0.0 0.0 0.0 +Ta 0.0 1.75 1.75 0.0 0.0 0.0 +4 +Lattice = "5.8 0.0 0.0 0.0 5.8 0.0 0.0 0.0 5.8" Properties=species:S:1:pos:R:3:forces:R:3 energy=-25.519883 stress="-222839.06 0.0 -0.0 0.0 -222839.06 -0.0 -0.0 -0.0 -222839.06" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.9 2.9 0.0 0.0 0.0 0.0 +Ta 2.9 0.0 2.9 0.0 0.0 0.0 +Ta 0.0 2.9 2.9 0.0 0.0 0.0 +4 +Lattice = "3.2 0.0 0.0 0.0 3.2 0.0 0.0 0.0 3.2" Properties=species:S:1:pos:R:3:forces:R:3 energy=3.463071 stress="7429287.470000001 0.0 -0.0 0.0 7429287.470000001 -0.0 -0.0 -0.0 7429287.470000001" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.6 1.6 0.0 0.0 0.0 0.0 +Ta 1.6 0.0 1.6 0.0 0.0 0.0 +Ta 0.0 1.6 1.6 0.0 0.0 0.0 +4 +Lattice = "5.4 0.0 0.0 0.0 5.4 0.0 0.0 0.0 5.4" Properties=species:S:1:pos:R:3:forces:R:3 energy=-31.59595 stress="-295489.55 0.0 0.0 0.0 -295489.55 -0.0 0.0 -0.0 -295489.55" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.7 2.7 0.0 0.0 0.0 0.0 +Ta 2.7 0.0 2.7 0.0 0.0 0.0 +Ta 0.0 2.7 2.7 0.0 0.0 0.0 +4 +Lattice = "4.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 4.0" Properties=species:S:1:pos:R:3:forces:R:3 energy=-45.100466 stress="426831.86 0.0 -0.0 0.0 426831.86 0.0 -0.0 0.0 426831.86" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.0 2.0 0.0 0.0 0.0 0.0 +Ta 2.0 0.0 2.0 0.0 0.0 0.0 +Ta 0.0 2.0 2.0 0.0 0.0 0.0 +4 +Lattice = "4.1 0.0 0.0 0.0 4.1 0.0 0.0 0.0 4.1" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.052258 stress="204707.15999999997 -0.0 0.0 -0.0 204707.15999999997 -0.0 0.0 -0.0 204707.15999999997" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.05 2.05 0.0 0.0 0.0 0.0 +Ta 2.05 0.0 2.05 0.0 0.0 0.0 +Ta 0.0 2.05 2.05 0.0 0.0 0.0 +4 +Lattice = "5.5 0.0 0.0 0.0 5.5 0.0 0.0 0.0 5.5" Properties=species:S:1:pos:R:3:forces:R:3 energy=-30.001189 stress="-277646.68 0.0 0.0 0.0 -277646.68 -0.0 0.0 -0.0 -277646.68" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.75 2.75 0.0 0.0 0.0 0.0 +Ta 2.75 0.0 2.75 0.0 0.0 0.0 +Ta 0.0 2.75 2.75 0.0 0.0 0.0 +4 +Lattice = "6.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 6.0" Properties=species:S:1:pos:R:3:forces:R:3 energy=-22.8504 stress="-187574.33000000002 -0.0 -0.0 -0.0 -187574.33000000002 0.0 -0.0 0.0 -187574.33000000002" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 3.0 3.0 0.0 0.0 0.0 0.0 +Ta 3.0 0.0 3.0 0.0 0.0 0.0 +Ta 0.0 3.0 3.0 0.0 0.0 0.0 +4 +Lattice = "3.3 0.0 0.0 0.0 3.3 0.0 0.0 0.0 3.3" Properties=species:S:1:pos:R:3:forces:R:3 energy=-9.164691 stress="5458905.82 0.0 -0.0 0.0 5458905.82 0.0 -0.0 0.0 5458905.82" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.65 1.65 0.0 0.0 0.0 0.0 +Ta 1.65 0.0 1.65 0.0 0.0 0.0 +Ta 0.0 1.65 1.65 0.0 0.0 0.0 +4 +Lattice = "5.9 0.0 0.0 0.0 5.9 0.0 0.0 0.0 5.9" Properties=species:S:1:pos:R:3:forces:R:3 energy=-24.150343 stress="-204945.0 0.0 -0.0 0.0 -204945.0 0.0 -0.0 0.0 -204945.0" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.95 2.95 0.0 0.0 0.0 0.0 +Ta 2.95 0.0 2.95 0.0 0.0 0.0 +Ta 0.0 2.95 2.95 0.0 0.0 0.0 +4 +Lattice = "4.2 0.0 0.0 0.0 4.2 0.0 0.0 0.0 4.2" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.426795 stress="36447.14 -0.0 0.0 -0.0 36447.14 -0.0 0.0 -0.0 36447.14" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.1 2.1 0.0 0.0 0.0 0.0 +Ta 2.1 0.0 2.1 0.0 0.0 0.0 +Ta 0.0 2.1 2.1 0.0 0.0 0.0 +4 +Lattice = "5.6 0.0 0.0 0.0 5.6 0.0 0.0 0.0 5.6" Properties=species:S:1:pos:R:3:forces:R:3 energy=-28.451145 stress="-259709.67 0.0 0.0 0.0 -259709.67 -0.0 0.0 -0.0 -259709.67" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.8 2.8 0.0 0.0 0.0 0.0 +Ta 2.8 0.0 2.8 0.0 0.0 0.0 +Ta 0.0 2.8 2.8 0.0 0.0 0.0 +4 +Lattice = "3.0 0.0 0.0 0.0 3.0 0.0 0.0 0.0 3.0" Properties=species:S:1:pos:R:3:forces:R:3 energy=40.341566 stress="13905054.1 0.0 0.0 0.0 13905054.1 0.0 0.0 0.0 13905054.1" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.5 1.5 0.0 0.0 0.0 0.0 +Ta 1.5 0.0 1.5 0.0 0.0 0.0 +Ta 0.0 1.5 1.5 0.0 0.0 0.0 +4 +Lattice = "3.1 0.0 0.0 0.0 3.1 0.0 0.0 0.0 3.1" Properties=species:S:1:pos:R:3:forces:R:3 energy=19.617912 stress="10138102.870000001 -0.0 0.0 -0.0 10138102.870000001 -0.0 0.0 -0.0 10138102.870000001" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.55 1.55 0.0 0.0 0.0 0.0 +Ta 1.55 0.0 1.55 0.0 0.0 0.0 +Ta 0.0 1.55 1.55 0.0 0.0 0.0 +4 +Lattice = "5.7 0.0 0.0 0.0 5.7 0.0 0.0 0.0 5.7" Properties=species:S:1:pos:R:3:forces:R:3 energy=-26.954384 stress="-241322.06 0.0 -0.0 0.0 -241322.06 0.0 -0.0 0.0 -241322.06" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.85 2.85 0.0 0.0 0.0 0.0 +Ta 2.85 0.0 2.85 0.0 0.0 0.0 +Ta 0.0 2.85 2.85 0.0 0.0 0.0 +4 +Lattice = "4.3 0.0 0.0 0.0 4.3 0.0 0.0 0.0 4.3" Properties=species:S:1:pos:R:3:forces:R:3 energy=-46.323696 stress="-90447.06999999999 0.0 0.0 0.0 -90447.06999999999 -0.0 0.0 -0.0 -90447.06999999999" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.15 2.15 0.0 0.0 0.0 0.0 +Ta 2.15 0.0 2.15 0.0 0.0 0.0 +Ta 0.0 2.15 2.15 0.0 0.0 0.0 +4 +Lattice = "4.4 0.0 0.0 0.0 4.4 0.0 0.0 0.0 4.4" Properties=species:S:1:pos:R:3:forces:R:3 energy=-45.828947 stress="-183778.61 0.0 0.0 0.0 -183778.61 0.0 0.0 0.0 -183778.61" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.2 2.2 0.0 0.0 0.0 0.0 +Ta 2.2 0.0 2.2 0.0 0.0 0.0 +Ta 0.0 2.2 2.2 0.0 0.0 0.0 +4 +Lattice = "5.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 5.0" Properties=species:S:1:pos:R:3:forces:R:3 energy=-38.16029 stress="-345892.4 -0.0 -0.0 -0.0 -345892.4 0.0 -0.0 0.0 -345892.4" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.5 2.5 0.0 0.0 0.0 0.0 +Ta 2.5 0.0 2.5 0.0 0.0 0.0 +Ta 0.0 2.5 2.5 0.0 0.0 0.0 +4 +Lattice = "3.6 0.0 0.0 0.0 3.6 0.0 0.0 0.0 3.6" Properties=species:S:1:pos:R:3:forces:R:3 energy=-32.919741 stress="2180370.41 0.0 0.0 0.0 2180370.41 -0.0 0.0 -0.0 2180370.41" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.8 1.8 0.0 0.0 0.0 0.0 +Ta 1.8 0.0 1.8 0.0 0.0 0.0 +Ta 0.0 1.8 1.8 0.0 0.0 0.0 +4 +Lattice = "4.8 0.0 0.0 0.0 4.8 0.0 0.0 0.0 4.8" Properties=species:S:1:pos:R:3:forces:R:3 energy=-41.272675 stress="-341505.95 0.0 0.0 0.0 -341505.95 -0.0 0.0 -0.0 -341505.95" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.4 2.4 0.0 0.0 0.0 0.0 +Ta 2.4 0.0 2.4 0.0 0.0 0.0 +Ta 0.0 2.4 2.4 0.0 0.0 0.0 +4 +Lattice = "4.9 0.0 0.0 0.0 4.9 0.0 0.0 0.0 4.9" Properties=species:S:1:pos:R:3:forces:R:3 energy=-39.753322 stress="-347458.42 0.0 -0.0 0.0 -347458.42 0.0 -0.0 0.0 -347458.42" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.45 2.45 0.0 0.0 0.0 0.0 +Ta 2.45 0.0 2.45 0.0 0.0 0.0 +Ta 0.0 2.45 2.45 0.0 0.0 0.0 +4 +Lattice = "3.7 0.0 0.0 0.0 3.7 0.0 0.0 0.0 3.7" Properties=species:S:1:pos:R:3:forces:R:3 energy=-37.547435 stress="1562535.85 0.0 0.0 0.0 1562535.85 -0.0 0.0 -0.0 1562535.85" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 1.85 1.85 0.0 0.0 0.0 0.0 +Ta 1.85 0.0 1.85 0.0 0.0 0.0 +Ta 0.0 1.85 1.85 0.0 0.0 0.0 +4 +Lattice = "5.1 0.0 0.0 0.0 5.1 0.0 0.0 0.0 5.1" Properties=species:S:1:pos:R:3:forces:R:3 energy=-36.52595 stress="-338327.71 -0.0 -0.0 -0.0 -338327.71 0.0 -0.0 0.0 -338327.71" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.55 2.55 0.0 0.0 0.0 0.0 +Ta 2.55 0.0 2.55 0.0 0.0 0.0 +Ta 0.0 2.55 2.55 0.0 0.0 0.0 +4 +Lattice = "4.5 0.0 0.0 0.0 4.5 0.0 0.0 0.0 4.5" Properties=species:S:1:pos:R:3:forces:R:3 energy=-45.016087 stress="-250456.02 -0.0 -0.0 -0.0 -250456.02 0.0 -0.0 0.0 -250456.02" +Ta 0.0 0.0 0.0 0.0 0.0 0.0 +Ta 2.25 2.25 0.0 0.0 0.0 0.0 +Ta 2.25 0.0 2.25 0.0 0.0 0.0 +Ta 0.0 2.25 2.25 0.0 0.0 0.0 diff --git a/examples/PACKAGES/pod/Ta/in.fitpod b/examples/PACKAGES/pod/Ta/in.fitpod new file mode 100644 index 0000000000..7b932558ea --- /dev/null +++ b/examples/PACKAGES/pod/Ta/in.fitpod @@ -0,0 +1,5 @@ +# Demonstrate fitpod for POD potential + +units metal +fitpod Ta_param.pod Ta_data.pod + diff --git a/examples/PACKAGES/pod/Ta/in.pod b/examples/PACKAGES/pod/Ta/in.pod new file mode 100644 index 0000000000..866ee40549 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/in.pod @@ -0,0 +1,47 @@ +# Demonstrate POD Ta potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable ny equal ${nrep} +variable nz equal ${nrep} + +boundary p p p + +lattice bcc $a +region box block 0 ${nx} 0 ${ny} 0 ${nz} +create_box 1 box +create_atoms 1 box + +mass 1 180.88 + + +# POD potential +pair_style pod +pair_coeff * * Ta_param.pod Ta_coeff.pod Ta + +# Setup output + +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve +run ${nsteps} + + diff --git a/examples/PACKAGES/pod/Ta/log.1Dec22.fitpod.g++.1 b/examples/PACKAGES/pod/Ta/log.1Dec22.fitpod.g++.1 new file mode 100644 index 0000000000..92bf7ede2d --- /dev/null +++ b/examples/PACKAGES/pod/Ta/log.1Dec22.fitpod.g++.1 @@ -0,0 +1,114 @@ +LAMMPS (3 Nov 2022) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate fitpod for POD potential + +units metal +fitpod Ta_param.pod Ta_data.pod +Reading potential file Ta_param.pod with DATE: 2022-11-30 +**************** Begin of POD Potentials **************** +species: Ta +periodic boundary conditions: 1 1 1 +inner cut-off radius: 1 +outer cut-off radius: 5 +bessel polynomial degree: 3 +inverse polynomial degree: 6 +one-body potential: 1 +two-body potential: 3 6 6 +three-body potential: 3 6 5 5 +four-body SNAP potential: 0 0 +quadratic POD potential: 0 +number of basis functions for one-body potential: 1 +number of basis functions for two-body potential: 6 +number of basis functions for three-body potential: 25 +number of basis functions for four-body potential: 0 +number of descriptors for one-body potential: 1 +number of descriptors for two-body potential: 6 +number of descriptors for three-body potential: 25 +number of descriptors for four-body potential: 0 +number of descriptors for quadratic POD potential: 0 +total number of descriptors for all potentials: 32 +**************** End of POD Potentials **************** + +**************** Begin of Data File **************** +file format: extxyz +file extension: xyz +path to training data set: XYZ +path to test data set: XYZ +training fraction: 1 +test fraction: 1 +randomize training data set: 1 +randomize test data set: 1 +error analysis for training data set: 1 +error analysis for test data set: 0 +energy/force calculation for training data set: 0 +energy/force calculation for test data set: 0 +fitting weight for energy: 100 +fitting weight for force: 1 +fitting weight for stress: 0 +**************** End of Data File **************** +**************** Begin of Training Data Set **************** +--------------------------------------------------------------- + data file | number of configurations | number of atoms +--------------------------------------------------------------- + Displaced_A15.xyz | 9 | 576 + Displaced_BCC.xyz | 9 | 486 + Displaced_FCC.xyz | 9 | 432 + Elastic_BCC.xyz | 100 | 200 + Elastic_FCC.xyz | 100 | 400 + GSF_110.xyz | 22 | 528 + GSF_112.xyz | 22 | 660 + Liquid.xyz | 3 | 300 + Surface.xyz | 7 | 236 + Volume_A15.xyz | 30 | 240 + Volume_BCC.xyz | 21 | 42 + Volume_FCC.xyz | 31 | 124 +--------------------------------------------------------------- +number of files: 12 +number of configurations in all files: 363 +number of atoms in all files: 4224 +minimum number of atoms: 2 +maximum number of atoms: 100 +**************** End of Training Data Set **************** +**************** Begin of Memory Allocation **************** +maximum number of atoms in periodic domain: 100 +maximum number of atoms in extended domain: 2700 +maximum number of neighbors in extended domain: 270000 +size of double memory: 223201 +size of int memory: 14709 +size of descriptor matrix: 32 x 32 +**************** End of Memory Allocation **************** +**************** Begin of Least-Squares Fitting **************** +Configuration: # 1 +Configuration: # 101 +Configuration: # 201 +Configuration: # 301 +**************** End of Least-Squares Fitting **************** +**************** Begin of Error Calculation **************** +Configuration: # 1 +Configuration: # 101 +Configuration: # 201 +Configuration: # 301 +**************** End of Error Calculation **************** +**************** Begin of Error Analysis for the Training Data Set **************** +--------------------------------------------------------------------------------------------------- + File | # configs | # atoms | MAE energy | RMSE energy | MAE force | RMSE force +--------------------------------------------------------------------------------------------------- +Displaced_A15.xyz 9 576 0.011286 0.011334 0.113353 0.141650 +Displaced_BCC.xyz 9 486 0.012178 0.014005 0.240613 0.312191 +Displaced_FCC.xyz 9 432 0.001445 0.001591 0.082688 0.103800 +Elastic_BCC.xyz 100 200 0.004452 0.004783 0.000010 0.000013 +Elastic_FCC.xyz 100 400 0.002865 0.002923 0.000146 0.000207 +GSF_110.xyz 22 528 0.005804 0.006853 0.047276 0.097819 +GSF_112.xyz 22 660 0.010588 0.011555 0.123342 0.191090 +Liquid.xyz 3 300 0.013161 0.015355 0.567536 0.757847 +Surface.xyz 7 236 0.025400 0.037555 0.096121 0.295623 +Volume_A15.xyz 30 240 0.039281 0.048678 0.000000 0.000000 +Volume_BCC.xyz 21 42 0.049766 0.067554 0.000000 0.000000 +Volume_FCC.xyz 31 124 0.030056 0.041738 0.000000 0.000000 +--------------------------------------------------------------------------------------------------- +All files 363 4224 0.012917 0.025797 0.122473 0.260052 +--------------------------------------------------------------------------------------------------- +**************** End of Error Analysis for the Training Data Set **************** + +Total wall time: 0:00:01 diff --git a/examples/PACKAGES/pod/Ta/log.1Dec22.fitpod.g++.4 b/examples/PACKAGES/pod/Ta/log.1Dec22.fitpod.g++.4 new file mode 100644 index 0000000000..698636c4ba --- /dev/null +++ b/examples/PACKAGES/pod/Ta/log.1Dec22.fitpod.g++.4 @@ -0,0 +1,114 @@ +LAMMPS (3 Nov 2022) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate fitpod for POD potential + +units metal +fitpod Ta_param.pod Ta_data.pod +Reading potential file Ta_param.pod with DATE: 2022-11-30 +**************** Begin of POD Potentials **************** +species: Ta +periodic boundary conditions: 1 1 1 +inner cut-off radius: 1 +outer cut-off radius: 5 +bessel polynomial degree: 3 +inverse polynomial degree: 6 +one-body potential: 1 +two-body potential: 3 6 6 +three-body potential: 3 6 5 5 +four-body SNAP potential: 0 0 +quadratic POD potential: 0 +number of basis functions for one-body potential: 1 +number of basis functions for two-body potential: 6 +number of basis functions for three-body potential: 25 +number of basis functions for four-body potential: 0 +number of descriptors for one-body potential: 1 +number of descriptors for two-body potential: 6 +number of descriptors for three-body potential: 25 +number of descriptors for four-body potential: 0 +number of descriptors for quadratic POD potential: 0 +total number of descriptors for all potentials: 32 +**************** End of POD Potentials **************** + +**************** Begin of Data File **************** +file format: extxyz +file extension: xyz +path to training data set: XYZ +path to test data set: XYZ +training fraction: 1 +test fraction: 1 +randomize training data set: 1 +randomize test data set: 1 +error analysis for training data set: 1 +error analysis for test data set: 0 +energy/force calculation for training data set: 0 +energy/force calculation for test data set: 0 +fitting weight for energy: 100 +fitting weight for force: 1 +fitting weight for stress: 0 +**************** End of Data File **************** +**************** Begin of Training Data Set **************** +--------------------------------------------------------------- + data file | number of configurations | number of atoms +--------------------------------------------------------------- + Displaced_A15.xyz | 9 | 576 + Displaced_BCC.xyz | 9 | 486 + Displaced_FCC.xyz | 9 | 432 + Elastic_BCC.xyz | 100 | 200 + Elastic_FCC.xyz | 100 | 400 + GSF_110.xyz | 22 | 528 + GSF_112.xyz | 22 | 660 + Liquid.xyz | 3 | 300 + Surface.xyz | 7 | 236 + Volume_A15.xyz | 30 | 240 + Volume_BCC.xyz | 21 | 42 + Volume_FCC.xyz | 31 | 124 +--------------------------------------------------------------- +number of files: 12 +number of configurations in all files: 363 +number of atoms in all files: 4224 +minimum number of atoms: 2 +maximum number of atoms: 100 +**************** End of Training Data Set **************** +**************** Begin of Memory Allocation **************** +maximum number of atoms in periodic domain: 100 +maximum number of atoms in extended domain: 2700 +maximum number of neighbors in extended domain: 270000 +size of double memory: 223201 +size of int memory: 14709 +size of descriptor matrix: 32 x 32 +**************** End of Memory Allocation **************** +**************** Begin of Least-Squares Fitting **************** +Configuration: # 1 +Configuration: # 101 +Configuration: # 201 +Configuration: # 301 +**************** End of Least-Squares Fitting **************** +**************** Begin of Error Calculation **************** +Configuration: # 1 +Configuration: # 101 +Configuration: # 201 +Configuration: # 301 +**************** End of Error Calculation **************** +**************** Begin of Error Analysis for the Training Data Set **************** +--------------------------------------------------------------------------------------------------- + File | # configs | # atoms | MAE energy | RMSE energy | MAE force | RMSE force +--------------------------------------------------------------------------------------------------- +Displaced_A15.xyz 9 576 0.011286 0.011334 0.113353 0.141650 +Displaced_BCC.xyz 9 486 0.012178 0.014005 0.240613 0.312191 +Displaced_FCC.xyz 9 432 0.001445 0.001591 0.082688 0.103800 +Elastic_BCC.xyz 100 200 0.004452 0.004783 0.000010 0.000013 +Elastic_FCC.xyz 100 400 0.002865 0.002923 0.000146 0.000207 +GSF_110.xyz 22 528 0.005804 0.006853 0.047276 0.097819 +GSF_112.xyz 22 660 0.010588 0.011555 0.123342 0.191090 +Liquid.xyz 3 300 0.013161 0.015355 0.567536 0.757847 +Surface.xyz 7 236 0.025400 0.037555 0.096121 0.295623 +Volume_A15.xyz 30 240 0.039281 0.048678 0.000000 0.000000 +Volume_BCC.xyz 21 42 0.049766 0.067554 0.000000 0.000000 +Volume_FCC.xyz 31 124 0.030056 0.041738 0.000000 0.000000 +--------------------------------------------------------------------------------------------------- +All files 363 4224 0.012917 0.025797 0.122473 0.260052 +--------------------------------------------------------------------------------------------------- +**************** End of Error Analysis for the Training Data Set **************** + +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/pod/Ta/log.1Dec22.pod.g++.1 b/examples/PACKAGES/pod/Ta/log.1Dec22.pod.g++.1 new file mode 100644 index 0000000000..eceb9f5dec --- /dev/null +++ b/examples/PACKAGES/pod/Ta/log.1Dec22.pod.g++.1 @@ -0,0 +1,143 @@ +LAMMPS (3 Nov 2022) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate POD Ta potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable nx equal 4 +variable ny equal ${nrep} +variable ny equal 4 +variable nz equal ${nrep} +variable nz equal 4 + +boundary p p p + +lattice bcc $a +lattice bcc 3.316 +Lattice spacing in x,y,z = 3.316 3.316 3.316 +region box block 0 ${nx} 0 ${ny} 0 ${nz} +region box block 0 4 0 ${ny} 0 ${nz} +region box block 0 4 0 4 0 ${nz} +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0 0 0) to (13.264 13.264 13.264) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 128 atoms + using lattice units in orthogonal box = (0 0 0) to (13.264 13.264 13.264) + create_atoms CPU = 0.000 seconds + +mass 1 180.88 + + +# POD potential +pair_style pod +pair_coeff * * Ta_param.pod Ta_coeff.pod Ta +Reading potential file Ta_param.pod with DATE: 2022-11-30 +**************** Begin of POD Potentials **************** +species: Ta +periodic boundary conditions: 1 1 1 +inner cut-off radius: 1 +outer cut-off radius: 5 +bessel polynomial degree: 3 +inverse polynomial degree: 6 +one-body potential: 1 +two-body potential: 3 6 6 +three-body potential: 3 6 5 5 +four-body SNAP potential: 0 0 +quadratic POD potential: 0 +number of basis functions for one-body potential: 1 +number of basis functions for two-body potential: 6 +number of basis functions for three-body potential: 25 +number of basis functions for four-body potential: 0 +number of descriptors for one-body potential: 1 +number of descriptors for two-body potential: 6 +number of descriptors for three-body potential: 25 +number of descriptors for four-body potential: 0 +number of descriptors for quadratic POD potential: 0 +total number of descriptors for all potentials: 32 +**************** End of POD Potentials **************** + + +# Setup output + +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve +run ${nsteps} +run 100 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6 + ghost atom cutoff = 6 + binsize = 3, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair pod, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.082 | 3.082 | 3.082 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 300 -11.841512 0 -11.803037 -15933.622 + 10 296.91721 -11.841117 0 -11.803037 -15691.904 + 20 287.83555 -11.839952 0 -11.803037 -14982.977 + 30 273.25574 -11.838082 0 -11.803037 -13853.44 + 40 253.98821 -11.835611 0 -11.803037 -12375.459 + 50 231.10664 -11.832676 0 -11.803037 -10639.774 + 60 205.8844 -11.829441 0 -11.803037 -8747.2222 + 70 179.71599 -11.826085 0 -11.803037 -6799.8371 + 80 154.02711 -11.822791 0 -11.803037 -4892.7805 + 90 130.17821 -11.819732 0 -11.803036 -3108.1226 + 100 109.36842 -11.817063 0 -11.803036 -1510.9592 +Loop time of 2.21355 on 1 procs for 100 steps with 128 atoms + +Performance: 1.952 ns/day, 12.298 hours/ns, 45.176 timesteps/s, 5.783 katom-step/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.2126 | 2.2126 | 2.2126 | 0.0 | 99.96 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.00039011 | 0.00039011 | 0.00039011 | 0.0 | 0.02 +Output | 0.00018205 | 0.00018205 | 0.00018205 | 0.0 | 0.01 +Modify | 0.00014707 | 0.00014707 | 0.00014707 | 0.0 | 0.01 +Other | | 0.0002439 | | | 0.01 + +Nlocal: 128 ave 128 max 128 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 727 ave 727 max 727 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 7424 ave 7424 max 7424 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 7424 +Ave neighs/atom = 58 +Neighbor list builds = 0 +Dangerous builds = 0 + + +Total wall time: 0:00:02 diff --git a/examples/PACKAGES/pod/Ta/log.1Dec22.pod.g++.4 b/examples/PACKAGES/pod/Ta/log.1Dec22.pod.g++.4 new file mode 100644 index 0000000000..ace3943c12 --- /dev/null +++ b/examples/PACKAGES/pod/Ta/log.1Dec22.pod.g++.4 @@ -0,0 +1,143 @@ +LAMMPS (3 Nov 2022) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate POD Ta potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable nx equal 4 +variable ny equal ${nrep} +variable ny equal 4 +variable nz equal ${nrep} +variable nz equal 4 + +boundary p p p + +lattice bcc $a +lattice bcc 3.316 +Lattice spacing in x,y,z = 3.316 3.316 3.316 +region box block 0 ${nx} 0 ${ny} 0 ${nz} +region box block 0 4 0 ${ny} 0 ${nz} +region box block 0 4 0 4 0 ${nz} +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0 0 0) to (13.264 13.264 13.264) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 128 atoms + using lattice units in orthogonal box = (0 0 0) to (13.264 13.264 13.264) + create_atoms CPU = 0.000 seconds + +mass 1 180.88 + + +# POD potential +pair_style pod +pair_coeff * * Ta_param.pod Ta_coeff.pod Ta +Reading potential file Ta_param.pod with DATE: 2022-11-30 +**************** Begin of POD Potentials **************** +species: Ta +periodic boundary conditions: 1 1 1 +inner cut-off radius: 1 +outer cut-off radius: 5 +bessel polynomial degree: 3 +inverse polynomial degree: 6 +one-body potential: 1 +two-body potential: 3 6 6 +three-body potential: 3 6 5 5 +four-body SNAP potential: 0 0 +quadratic POD potential: 0 +number of basis functions for one-body potential: 1 +number of basis functions for two-body potential: 6 +number of basis functions for three-body potential: 25 +number of basis functions for four-body potential: 0 +number of descriptors for one-body potential: 1 +number of descriptors for two-body potential: 6 +number of descriptors for three-body potential: 25 +number of descriptors for four-body potential: 0 +number of descriptors for quadratic POD potential: 0 +total number of descriptors for all potentials: 32 +**************** End of POD Potentials **************** + + +# Setup output + +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve +run ${nsteps} +run 100 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6 + ghost atom cutoff = 6 + binsize = 3, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair pod, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.062 | 3.062 | 3.062 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 300 -11.841512 0 -11.803037 -15933.622 + 10 296.91721 -11.841117 0 -11.803037 -15691.904 + 20 287.83555 -11.839952 0 -11.803037 -14982.977 + 30 273.25574 -11.838082 0 -11.803037 -13853.44 + 40 253.98821 -11.835611 0 -11.803037 -12375.459 + 50 231.10664 -11.832676 0 -11.803037 -10639.774 + 60 205.8844 -11.829441 0 -11.803037 -8747.2222 + 70 179.71599 -11.826085 0 -11.803037 -6799.8371 + 80 154.02711 -11.822791 0 -11.803037 -4892.7805 + 90 130.17821 -11.819732 0 -11.803036 -3108.1226 + 100 109.36842 -11.817063 0 -11.803036 -1510.9592 +Loop time of 0.638221 on 4 procs for 100 steps with 128 atoms + +Performance: 6.769 ns/day, 3.546 hours/ns, 156.686 timesteps/s, 20.056 katom-step/s +99.4% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.59009 | 0.60345 | 0.61657 | 1.3 | 94.55 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.020708 | 0.033858 | 0.047324 | 5.5 | 5.31 +Output | 0.00021209 | 0.00022669 | 0.00026379 | 0.0 | 0.04 +Modify | 0.00012321 | 0.00012709 | 0.00013646 | 0.0 | 0.02 +Other | | 0.00056 | | | 0.09 + +Nlocal: 32 ave 32 max 32 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 431 ave 431 max 431 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 1856 ave 1856 max 1856 min +Histogram: 4 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 7424 +Ave neighs/atom = 58 +Neighbor list builds = 0 +Dangerous builds = 0 + + +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/pod/Ta_Quadratic/Ta_coefficients.pod b/examples/PACKAGES/pod/Ta_Quadratic/Ta_coefficients.pod new file mode 100644 index 0000000000..19a1263bff --- /dev/null +++ b/examples/PACKAGES/pod/Ta_Quadratic/Ta_coefficients.pod @@ -0,0 +1,183 @@ +POD_coefficients: 182 +-4.35181 +3.57833 +-2.25499 +-4.84612 +2.06319 +-1.17070 +0.23842 +9.17159 +36.02380 +16.65293 +-141.18389 +37.17631 +0.46029 +-9.76145 +-0.03678 +15.64520 +2.29801 +0.02143 +2.69734 +-0.35337 +0.51108 +-2.36290 +0.18617 +-0.13079 +1.02665 +0.21514 +0.08076 +-0.28347 +-0.45059 +-0.24762 +-1.13671 +-0.30577 +0.60504 +-0.31285 +0.10638 +0.06958 +0.21962 +0.10426 +0.80241 +11.41434 +10.26118 +0.03871 +-18.86071 +4.47376 +-1.76865 +0.92507 +-0.42650 +-0.35847 +0.56613 +0.79353 +5.65244 +-8.75326 +6.22216 +4.34659 +10.19995 +-6.53345 +7.16628 +-2.19246 +-5.90780 +-3.52168 +7.97278 +-0.21108 +-0.01016 +-0.01023 +-0.03088 +-0.10222 +0.05366 +0.08037 +-3.17607 +3.45670 +0.79279 +2.38325 +-0.69796 +1.44779 +-0.03351 +0.05645 +-0.01901 +0.01923 +0.05401 +0.02095 +1.45657 +-1.58808 +-1.41187 +-2.18121 +3.04892 +-1.09293 +3.03780 +-1.07247 +-0.50261 +-0.81151 +0.35996 +-0.64601 +-0.04245 +-0.00112 +0.02894 +-0.04382 +-0.06556 +-0.00052 +4.67527 +-0.11816 +-1.52428 +0.17075 +0.20231 +-0.36857 +0.61745 +-0.20190 +0.00816 +-0.16194 +-0.12948 +0.02136 +-2.19267 +-0.62508 +-0.20029 +0.27620 +-0.58116 +0.21791 +-1.82301 +0.32164 +0.64550 +0.11580 +-0.02438 +0.08056 +0.19537 +-0.04119 +-0.00323 +-0.06530 +-0.02547 +0.01404 +0.22333 +0.48190 +0.10715 +0.25684 +-0.65069 +0.31428 +-0.06946 +-0.11924 +-0.05467 +-0.12105 +-0.03980 +0.00295 +-2.14415 +-0.82347 +-0.23084 +0.24926 +-0.36679 +0.16710 +1.20411 +0.47757 +0.11104 +-0.09587 +0.03722 +-0.00309 +-0.29879 +0.06463 +0.10236 +0.02276 +-0.06012 +0.02985 +12.06878 +3.39996 +-0.85590 +0.77481 +-1.13392 +0.40511 +-0.08006 +0.07161 +0.05978 +0.02407 +-0.06031 +0.02307 +-10.24102 +-2.49354 +1.14053 +-0.70454 +0.99990 +-0.33863 +2.43470 +1.16557 +0.23708 +-0.03482 +-0.05280 +0.02735 diff --git a/examples/PACKAGES/pod/Ta_Quadratic/Ta_data.pod b/examples/PACKAGES/pod/Ta_Quadratic/Ta_data.pod new file mode 100644 index 0000000000..2aed5d60dd --- /dev/null +++ b/examples/PACKAGES/pod/Ta_Quadratic/Ta_data.pod @@ -0,0 +1,20 @@ +file_format extxyz +file_extension xyz + +path_to_training_data_set "../Ta/XYZ" +path_to_test_data_set "../Ta/XYZ" + +fitting_weight_energy 100.0 +fitting_weight_force 1.0 +fitting_regularization_parameter 1e-10 + +error_analysis_for_training_data_set 1 +error_analysis_for_test_data_set 0 + +# Add the following basename to the name of output files +basename_for_output_files Ta + +# number of digits after the decimal point for pod coefficients +precision_for_pod_coefficients 5 + + diff --git a/examples/PACKAGES/pod/Ta_Quadratic/Ta_param.pod b/examples/PACKAGES/pod/Ta_Quadratic/Ta_param.pod new file mode 100644 index 0000000000..adfe772d10 --- /dev/null +++ b/examples/PACKAGES/pod/Ta_Quadratic/Ta_param.pod @@ -0,0 +1,33 @@ +# DATE: 2022-11-30 UNITS: metal CONTRIBUTOR: Ngoc Cuong Nguyen, exapde@gmail.com CITATION: https://arxiv.org/abs/2209.02362 +# chemical element symbols +species Ta + +# periodic boundary conditions +pbc 1 1 1 + +# inner cut-off radius +rin 1.0 + +# outer cut-off radius +rcut 5.0 + +# polynomial degrees for radial basis functions +bessel_polynomial_degree 3 +inverse_polynomial_degree 6 + +# one-body potential +onebody 1 + +# two-body linear POD potential +twobody_number_radial_basis_functions 6 + +# three-body linear POD potential +threebody_number_radial_basis_functions 5 +threebody_number_angular_basis_functions 5 + +# four-body linear SNAP potential +fourbody_snap_twojmax 0 + +# quadratic POD potential +quadratic_pod_potential 1 + diff --git a/examples/PACKAGES/pod/Ta_Quadratic/Ta_training_analysis.pod b/examples/PACKAGES/pod/Ta_Quadratic/Ta_training_analysis.pod new file mode 100644 index 0000000000..f7f3910f93 --- /dev/null +++ b/examples/PACKAGES/pod/Ta_Quadratic/Ta_training_analysis.pod @@ -0,0 +1,387 @@ +# Displaced_A15.xyz + config # atoms energy DFT energy energy error force DFT force force error + 1 64 -754.2481469 -754.220443 0.0004328736542 8.011514932 8.398670477 0.06376626471 + 2 64 -753.8045627 -753.865255 0.0009483170919 9.036675474 9.134430545 0.07283331622 + 3 64 -754.1013213 -754.0221 0.001237833587 8.637024563 9.017261102 0.06364803016 + 4 64 -754.2847415 -754.279613 8.013259279e-05 8.107730847 8.381725092 0.0651017527 + 5 64 -753.8382044 -753.777209 0.0009530524751 9.104259346 9.478314477 0.07200166218 + 6 64 -754.0793448 -754.048643 0.0004797149516 8.152199121 8.465317938 0.06707944664 + 7 64 -754.3310528 -754.317603 0.0002101527451 7.944092757 8.127690491 0.05987173847 + 8 64 -754.0070856 -753.969161 0.0005925723559 9.179444115 9.425464952 0.06695321977 + 9 64 -754.1450603 -754.141988 4.800421744e-05 8.574171053 8.821346913 0.06628509806 +# Displaced_BCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 10 54 -630.8081936 -631.019667 0.003916173668 15.97497492 16.625876 0.1021118884 + 11 54 -631.4580137 -631.719595 0.004844098796 15.24068909 15.58666626 0.1043856899 + 12 54 -631.1667565 -631.386255 0.004064786135 15.46091763 15.92378883 0.1062824237 + 13 54 -632.3004944 -632.575826 0.005098733889 14.42619736 14.55977162 0.09839143245 + 14 54 -630.0894752 -630.450212 0.006680311898 16.78432817 16.96340726 0.108510231 + 15 54 -631.3402507 -631.669379 0.006094968579 15.82894198 16.05757315 0.1000888506 + 16 54 -632.0447348 -632.431277 0.007158188469 14.73098392 14.69810718 0.09621570623 + 17 54 -630.7186534 -630.960068 0.004470640569 15.62236513 15.99073148 0.1063789504 + 18 54 -623.3884972 -623.378198 0.0001907256206 23.97393076 24.67640432 0.1519105242 +# Displaced_FCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 19 48 -556.0112402 -555.899463 0.002328692595 5.300795182 6.084617063 0.07215984282 + 20 48 -555.9884375 -555.922478 0.001374155755 5.509767105 6.297071211 0.08438733778 + 21 48 -555.8765557 -555.800269 0.001589305952 5.420812181 6.021098636 0.07404420713 + 22 48 -556.2511473 -556.196151 0.00114575707 4.54185517 5.127955094 0.06609457327 + 23 48 -555.6590667 -555.488929 0.003544534966 6.087062872 7.050223459 0.09107544933 + 24 48 -556.1020654 -556.027926 0.001544570012 5.048523316 5.611881174 0.06751585758 + 25 48 -556.0607473 -555.968399 0.001923922354 5.20975666 5.979217189 0.08024051191 + 26 48 -556.0598013 -556.047132 0.0002639447837 4.995519809 5.544452585 0.07745365182 + 27 48 -555.8256423 -555.747848 0.001620713741 5.762702449 6.47892568 0.08480579641 +# Elastic_BCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 28 2 -23.69025375 -23.689367 0.0004433760298 0.0006229109944 0.0006222748589 9.850145246e-07 + 29 2 -23.690768 -23.689888 0.000440000226 0.000618183093 0.0006166052222 1.005028422e-06 + 30 2 -23.69082186 -23.689996 0.0004129297806 0.0008798074771 0.0008810425642 1.74843114e-06 + 31 2 -23.69166748 -23.690957 0.0003552393384 1.000599337e-06 0 4.011213572e-07 + 32 2 -23.69137648 -23.690521 0.0004277400529 0.0005992883433 0.0005982273815 7.219128625e-07 + 33 2 -23.69120607 -23.69038 0.0004130356748 0.0005947953498 0.0005925723585 9.949545518e-07 + 34 2 -23.6900782 -23.689202 0.0004381010976 0.000626333442 0.0006279363025 1.11150918e-06 + 35 2 -23.69121642 -23.690482 0.0003672088756 0.0008635087452 0.0008640138888 1.400552377e-06 + 36 2 -23.69074792 -23.689902 0.0004229607524 0.0006176587851 0.0006152154094 9.894653378e-07 + 37 2 -23.6914111 -23.690563 0.0004240511901 0.00060523674 0.0006038725031 4.148446495e-07 + 38 2 -23.69095105 -23.690207 0.0003720260028 0.001071999141 0.00107369735 7.195432847e-07 + 39 2 -23.69007856 -23.689285 0.0003967815187 0.0008875288751 0.000890013483 1.187800698e-06 + 40 2 -23.69061639 -23.689768 0.0004241948328 0.001078744596 0.001080249045 1.098539288e-06 + 41 2 -23.69064479 -23.68968 0.0004823961198 0.0008702112502 0.0008680034562 8.482029159e-07 + 42 2 -23.6910243 -23.690074 0.0004751500988 0.00136892629 0.001373818765 2.351923075e-06 + 43 2 -23.68910107 -23.688108 0.0004965356565 0.0006334703054 0.0006336134468 5.99047899e-07 + 44 2 -23.69003986 -23.689241 0.0003994297476 0.0008886652258 0.0008880101351 1.319383612e-06 + 45 2 -23.69042994 -23.68952 0.0004549687915 0.0008868886746 0.0008860011287 4.687853177e-07 + 46 2 -23.68738487 -23.686278 0.0005534349406 0.0006426679338 0.0006406777661 9.71847259e-07 + 47 2 -23.69095089 -23.690097 0.000426944902 0.0008409063968 0.0008410160522 1.331156612e-06 + 48 2 -23.6915816 -23.690811 0.0003853023262 0.0008464479016 0.0008500070588 1.611941107e-06 + 49 2 -23.69114597 -23.690266 0.0004399833623 0.001039354426 0.001044322747 3.354790597e-06 + 50 2 -23.69142231 -23.690597 0.0004126527557 0.001045528808 0.001050833003 2.164976718e-06 + 51 2 -23.69157045 -23.690673 0.0004487231875 0.000604541849 0.0006038907186 7.137781043e-07 + 52 2 -23.69135377 -23.690551 0.0004013839772 0.0008554940241 0.0008590064028 1.199877126e-06 + 53 2 -23.6914855 -23.690693 0.0003962483174 0.0008561039044 0.0008590110593 1.062367199e-06 + 54 2 -23.69110782 -23.69021 0.0004489099543 0.0008699574153 0.0008730051546 1.100986285e-06 + 55 2 -23.68987142 -23.688943 0.0004642118095 0.0008789739049 0.0008800306813 8.920178193e-07 + 56 2 -23.69108099 -23.690136 0.0004724929669 0.000597100569 0.000593996633 9.80915639e-07 + 57 2 -23.6884849 -23.687444 0.0005204507995 0.0009046496679 0.000903059245 1.159810957e-06 + 58 2 -23.69061659 -23.689801 0.0004077972116 0.0008734820883 0.0008740011442 2.826546206e-07 + 59 2 -23.69129673 -23.690408 0.0004443660476 8.294236971e-07 0 3.094976021e-07 + 60 2 -23.69128183 -23.690362 0.0004599146498 0.0006083805154 0.0006067503605 7.610258412e-07 + 61 2 -23.68992957 -23.688881 0.0005242861565 0.0008210298141 0.0008250054545 1.716902102e-06 + 62 2 -23.6913441 -23.690515 0.0004145511761 0.001475621115 0.001475779794 2.846782756e-06 + 63 2 -23.69141171 -23.690551 0.0004303554398 0.0005957864934 0.0005996599036 1.205169041e-06 + 64 2 -23.69029628 -23.689487 0.0004046409478 0.0006212224483 0.0006194384554 9.873569794e-07 + 65 2 -23.69072139 -23.68986 0.0004306953753 0.0008858826742 0.0008860124153 5.860307089e-07 + 66 2 -23.69018379 -23.689288 0.0004478958682 0.001400962673 0.001396479144 1.244220213e-06 + 67 2 -23.69129611 -23.690457 0.0004195533333 0.0005914018694 0.0005939831647 1.147206273e-06 + 68 2 -23.6908455 -23.689792 0.0005267514192 0.0008274901181 0.0008340587509 2.92351135e-06 + 69 2 -23.69101454 -23.690006 0.000504270969 0.0005874525941 0.0005897694465 1.183929198e-06 + 70 2 -23.69137638 -23.690571 0.0004026908865 0.000593505398 0.0005939781141 8.885138938e-07 + 71 2 -23.69114123 -23.690213 0.0004641149057 0.001085936923 0.001084315452 6.622719884e-07 + 72 2 -23.69146017 -23.690617 0.0004215861743 0.0005980164348 0.0006024682564 1.268431385e-06 + 73 2 -23.69063494 -23.689761 0.000436969988 0.0008787869884 0.0008790688255 2.274049903e-06 + 74 2 -23.69116059 -23.69027 0.0004452945331 6.913231892e-07 0 2.06028124e-07 + 75 2 -23.69134793 -23.690599 0.0003744660856 0.0006108389518 0.0006137752031 6.965603905e-07 + 76 2 -23.69149586 -23.69061 0.0004429280005 9.198411365e-07 0 3.754400665e-07 + 77 2 -23.69139951 -23.690603 0.000398256099 0.0008543318552 0.0008590331775 1.578689348e-06 + 78 2 -23.68884519 -23.687908 0.0004685950581 0.0009053954566 0.0009010105438 1.65775018e-06 + 79 2 -23.6914255 -23.690688 0.0003687521098 0.0008461958108 0.0008470064935 1.24650271e-06 + 80 2 -23.69088798 -23.689988 0.0004499890418 0.0006191456007 0.0006194465272 7.975009516e-07 + 81 2 -23.69054504 -23.689613 0.000466018941 0.0008740606753 0.0008740732235 7.595178952e-07 + 82 2 -23.69150291 -23.690678 0.0004124549265 0.000610815433 0.0006123757017 8.072128622e-07 + 83 2 -23.69107508 -23.69017 0.0004525408662 0.0008712162343 0.0008750051428 1.392028307e-06 + 84 2 -23.68888775 -23.687892 0.0004978736601 0.001115255007 0.001112070142 1.300142654e-06 + 85 2 -23.69100617 -23.690132 0.0004370859053 0.0008623538074 0.000868018433 1.989858339e-06 + 86 2 -23.6915696 -23.690843 0.0003633021835 0.0006034842936 0.0006081134763 1.367591325e-06 + 87 2 -23.6914135 -23.690598 0.0004077489269 0.001205622222 0.001217674833 4.139631643e-06 + 88 2 -23.69152569 -23.690656 0.0004348445802 0.00059822098 0.0006024765556 1.339932217e-06 + 89 2 -23.69122964 -23.690254 0.0004878211992 0.001039614315 0.001043496047 2.818924297e-06 + 90 2 -23.69160573 -23.690694 0.0004558637161 0.0006005236901 0.0006010740387 4.468420123e-07 + 91 2 -23.69097667 -23.690097 0.0004398330703 0.0008742194238 0.0008730234819 9.401050256e-07 + 92 2 -23.68931979 -23.688402 0.0004588927364 0.0006323490707 0.000632180354 2.788475676e-07 + 93 2 -23.68957637 -23.688669 0.0004536826549 0.00109306805 0.001092474256 1.597364093e-06 + 94 2 -23.69136079 -23.690538 0.0004113947461 0.0008559690445 0.0008610145179 1.717539372e-06 + 95 2 -23.69064046 -23.689722 0.0004592303219 0.0006203234131 0.0006251287867 1.466461168e-06 + 96 2 -23.69148676 -23.690581 0.0004528821164 7.127209296e-07 0 2.255862749e-07 + 97 2 -23.68967251 -23.688755 0.0004587573049 0.0006269090495 0.0006251143895 8.455647387e-07 + 98 2 -23.69038245 -23.689312 0.0005352239912 0.000826073741 0.0008290597083 1.434612139e-06 + 99 2 -23.6885155 -23.687388 0.0005637521677 0.001127067737 0.001120237475 2.789972117e-06 + 100 2 -23.69147138 -23.690664 0.0004036885172 0.0006101342417 0.0006109402589 2.333615197e-07 + 101 2 -23.69059185 -23.68941 0.0005909249423 0.0005851627123 0.0005883553348 1.578374866e-06 + 102 2 -23.69082355 -23.690035 0.0003942736357 0.0008795917739 0.0008810062429 8.322936553e-07 + 103 2 -23.69101815 -23.690015 0.0005015752118 0.0008420115266 0.0008450195264 1.339974338e-06 + 104 2 -23.6915919 -23.690752 0.0004199489474 0.0005974769534 0.0005996415596 9.70832204e-07 + 105 2 -23.69060481 -23.689825 0.0003899071047 0.0008774615458 0.0008800215906 1.681763497e-06 + 106 2 -23.69149833 -23.690562 0.0004681669348 0.0008527073264 0.0008560011682 1.112325585e-06 + 107 2 -23.69145561 -23.690622 0.0004168042562 0.0008363622912 0.0008390017878 8.931080404e-07 + 108 2 -23.68965306 -23.688764 0.0004445309599 0.0008936261428 0.0008910185183 1.309260409e-06 + 109 2 -23.69077552 -23.690011 0.0003822599475 0.000620379228 0.0006194287691 3.13320397e-07 + 110 2 -23.68867102 -23.687696 0.000487511551 0.00108606805 0.001087589996 1.326985668e-06 + 111 2 -23.69172933 -23.691019 0.0003551640965 0.000852012982 0.0008540035129 9.847228238e-07 + 112 2 -23.68991099 -23.689025 0.0004429972401 6.462272267e-07 0 2.557212251e-07 + 113 2 -23.69080506 -23.689952 0.0004265320817 7.01277621e-07 0 2.758977153e-07 + 114 2 -23.69152793 -23.69061 0.0004589649051 0.0008542964546 0.0008580011655 1.338538453e-06 + 115 2 -23.69153556 -23.690595 0.0004702784057 0.0008679746125 0.0008680069124 6.687400365e-07 + 116 2 -23.69117399 -23.690231 0.0004714925881 0.0005924022792 0.0005925892338 1.259966552e-07 + 117 2 -23.69139497 -23.690469 0.0004629847699 0.0008486905112 0.0008500294113 6.345373178e-07 + 118 2 -23.69122801 -23.690482 0.0003730074478 0.0008734799561 0.0008740102974 2.172848871e-07 + 119 2 -23.69055118 -23.689613 0.0004690900383 0.0008237357642 0.0008320192305 2.927979209e-06 + 120 2 -23.68847553 -23.687426 0.0005247674818 0.00109373942 0.00109577735 8.309003636e-07 + 121 2 -23.69041353 -23.689562 0.0004257635066 0.0006210722843 0.0006265237426 1.574787587e-06 + 122 2 -23.69137916 -23.6904 0.0004895816263 3.712921572e-07 0 1.509058152e-07 + 123 2 -23.69152028 -23.690561 0.0004796420104 0.0005964910689 0.0005982273815 1.201534101e-06 + 124 2 -23.69012376 -23.689107 0.0005083815771 0.0008124995056 0.0008180073349 1.978492784e-06 + 125 2 -23.69112303 -23.690145 0.0004890142327 0.0008742243294 0.0008740766557 1.981009549e-06 + 126 2 -23.6913827 -23.690482 0.0004503495661 0.0005944562314 0.0005939983165 2.226897955e-07 + 127 2 -23.69071568 -23.689864 0.0004258395345 0.0008855409145 0.0008860124153 7.974979118e-07 +# Elastic_FCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 128 4 -46.43709855 -46.437936 0.0002093612883 0.0008950060736 0.001265949446 0.000146452977 + 129 4 -46.4407039 -46.438504 0.0005499748573 0.000997595139 0.001492549497 0.0001384061782 + 130 4 -46.43497365 -46.436378 0.0003510862834 0.0005521282519 0.000810592376 9.989142068e-05 + 131 4 -46.44077415 -46.441551 0.0001942119059 0.001132198228 0.001283675193 6.296962032e-05 + 132 4 -46.41517164 -46.416957 0.0004463405792 0.0009179900208 0.001186145859 8.226328068e-05 + 133 4 -46.43849879 -46.440495 0.0004990525813 0.001000780392 0.001212440514 6.935589607e-05 + 134 4 -46.43777706 -46.437972 4.873549652e-05 0.001389269894 0.002358226452 0.0002414826841 + 135 4 -46.44772061 -46.44586 0.0004651531137 0.001363793596 0.002033949852 0.0001874007898 + 136 4 -46.43566097 -46.435744 2.075817254e-05 0.000953167535 0.001690849491 0.0002499304679 + 137 4 -46.4397151 -46.438209 0.00037652527 0.0008871613375 0.001160049999 6.827988406e-05 + 138 4 -46.42609455 -46.42629 4.886318637e-05 0.0005556350354 0.0005297018029 1.216514421e-05 + 139 4 -46.44149051 -46.443301 0.000452621879 0.001132511065 0.001818421568 0.0001734412183 + 140 4 -46.43896893 -46.439002 8.267057767e-06 0.00117987933 0.001416973535 6.937475084e-05 + 141 4 -46.43123556 -46.432438 0.0003006109725 0.001147766863 0.001010469198 6.008541597e-05 + 142 4 -46.41017485 -46.412654 0.0006197881873 0.001371501038 0.001801959766 0.0001610014005 + 143 4 -46.44246774 -46.443231 0.0001908139315 0.0008879090598 0.001691590967 0.0001867981606 + 144 4 -46.43057135 -46.431513 0.0002354125917 0.001455115673 0.001680544852 7.970584941e-05 + 145 4 -46.43314849 -46.435608 0.0006148762889 0.000895665118 0.0009593039143 1.661567686e-05 + 146 4 -46.43895751 -46.437689 0.0003171274211 0.001001645194 0.001217708504 8.864742137e-05 + 147 4 -46.42711221 -46.428447 0.0003336986888 0.001053852558 0.002060081552 0.0002791878112 + 148 4 -46.43182739 -46.432255 0.0001069024683 0.0007125257042 0.0006274201144 7.371629444e-05 + 149 4 -46.44177162 -46.442315 0.0001358457811 0.001140464208 0.002424436842 0.0003371036569 + 150 4 -46.43717254 -46.436613 0.0001398846117 0.0005515470177 0.0005321240457 4.259807028e-05 + 151 4 -46.43004027 -46.430825 0.0001961820031 0.001008903044 0.001399987143 0.0001075255526 + 152 4 -46.43208405 -46.43312 0.0002589878074 0.0005518527942 0.0007272771136 5.274203403e-05 + 153 4 -46.43371444 -46.434347 0.0001581399218 0.0008969170063 0.001284451634 0.0001164513128 + 154 4 -46.42879982 -46.430573 0.0004432945175 0.0009069765603 0.001315746176 0.0001014266169 + 155 4 -46.447298 -46.445665 0.0004082491075 0.001210138531 0.00180789159 0.0001638463617 + 156 4 -46.43544342 -46.435898 0.0001136443164 0.0008978232764 0.001869300939 0.0002335504189 + 157 4 -46.44021163 -46.442107 0.0004738420888 0.0007064273171 0.0006020930161 3.471659428e-05 + 158 4 -46.43498956 -46.434432 0.0001393900254 0.0009533481634 0.001092982159 7.242855195e-05 + 159 4 -46.43803609 -46.436308 0.0004320214507 0.001263659401 0.001839150891 0.0001727461182 + 160 4 -46.42268734 -46.423938 0.0003126639814 0.001014412723 0.001463463016 0.0001717552705 + 161 4 -46.42662921 -46.428115 0.0003714479779 0.0007136207343 0.0008584497656 6.405723356e-05 + 162 4 -46.42531434 -46.4269 0.0003964157023 0.001206355291 0.001845719914 0.0002046485935 + 163 4 -46.42224822 -46.421142 0.0002765553485 0.001156356337 0.001309150106 4.994080216e-05 + 164 4 -46.4302643 -46.432233 0.0004921740977 0.0007882965793 0.0007253109678 2.466489667e-05 + 165 4 -46.43017474 -46.429408 0.0001916838665 0.0008990219519 0.001068327665 6.20865224e-05 + 166 4 -46.44541887 -46.445145 6.846696931e-05 0.001028604655 0.001776038288 0.0001975508878 + 167 4 -46.43410132 -46.435868 0.0004416694333 0.00126629656 0.002376074704 0.000327900749 + 168 4 -46.43919494 -46.439663 0.000117015505 0.0005441673063 0.001119403413 0.0001039537782 + 169 4 -46.42584101 -46.428287 0.0006114965752 0.001286554786 0.001277000392 3.606394767e-05 + 170 4 -46.42254993 -46.424584 0.0005085169742 0.0007166928162 0.0008032957114 3.058247108e-05 + 171 4 -46.41053526 -46.413045 0.0006274343113 0.001077488513 0.001248322074 4.395077903e-05 + 172 4 -46.43440112 -46.436994 0.0006482188049 0.0009567631791 0.001331939188 0.0001491134555 + 173 4 -46.44377744 -46.443604 4.335960636e-05 0.0009956177543 0.001177046303 8.761451233e-05 + 174 4 -46.44028269 -46.439718 0.0001411721588 9.067047531e-07 0 2.475505668e-07 + 175 4 -46.43723548 -46.435527 0.0004271210489 0.001133620592 0.0009338393866 8.014318869e-05 + 176 4 -46.43396161 -46.434787 0.0002063463028 0.001150111497 0.00117329195 4.934566521e-05 + 177 4 -46.43612253 -46.434929 0.0002983827305 0.001267527163 0.001349491756 5.093505267e-05 + 178 4 -46.42638491 -46.426499 2.852212041e-05 0.001164859731 0.001248937949 4.347948673e-05 + 179 4 -46.43717201 -46.437025 3.675291261e-05 0.0007725497049 0.000938418883 6.831038145e-05 + 180 4 -46.4281895 -46.428937 0.0001868753733 0.001151244017 0.001286352984 4.994280583e-05 + 181 4 -46.44116364 -46.442516 0.0003380888012 0.0007032389703 0.00094855469 0.000108860383 + 182 4 -46.42978258 -46.428736 0.000261644323 0.001009630039 0.001424321593 0.0001089615374 + 183 4 -46.43305551 -46.433359 7.587324757e-05 0.001156683005 0.001276381604 4.128762871e-05 + 184 4 -46.44006475 -46.438799 0.0003164387002 0.0007752996484 0.0008186940821 3.548756759e-05 + 185 4 -46.44169053 -46.441993 7.561811334e-05 0.0008970971352 0.001887735151 0.000222339744 + 186 4 -46.43727222 -46.439033 0.0004401950631 0.0007708721421 0.000821568013 4.107006528e-05 + 187 4 -46.43632517 -46.436967 0.0001604569693 0.001052390429 0.001482323514 0.0001388091175 + 188 4 -46.42718259 -46.427245 1.560321473e-05 0.001072419719 0.001293885621 7.709436807e-05 + 189 4 -46.43874841 -46.438046 0.0001756028841 0.001260671466 0.001627288542 0.0001002073731 + 190 4 -46.41877429 -46.420083 0.0003271766028 0.001421603027 0.002395244873 0.0003233098337 + 191 4 -46.44621445 -46.445247 0.0002418621169 0.0009904379233 0.001219330964 5.687300364e-05 + 192 4 -46.44511464 -46.446044 0.0002323405647 0.0008790841215 0.001305329077 0.0001107509546 + 193 4 -46.43564394 -46.434472 0.0002929855068 0.0008903788205 0.0008323340675 4.743676385e-05 + 194 4 -46.44317175 -46.44458 0.0003520614781 0.0007034017538 0.0009744208536 5.172011109e-05 + 195 4 -46.44087095 -46.441776 0.0002262619087 0.001139223456 0.001339231869 8.765048343e-05 + 196 4 -46.43719327 -46.436389 0.0002010663787 0.001277509155 0.001786741168 0.0001303767139 + 197 4 -46.44563996 -46.446416 0.0001940092562 0.000700739078 0.0006588778339 5.645492682e-05 + 198 4 -46.44980864 -46.449806 6.612381167e-07 0.001232827144 0.002135055034 0.000238485636 + 199 4 -46.42466674 -46.427189 0.000630565232 0.001011828268 0.001050788276 2.797047063e-05 + 200 4 -46.42588994 -46.427857 0.0004917661001 0.00101091552 0.001487666629 0.0001398462851 + 201 4 -46.44273693 -46.44004 0.0006742322248 0.0007050797939 0.000757202747 2.506453736e-05 + 202 4 -46.43659247 -46.437214 0.0001553826468 0.0008924047139 0.001505586265 0.0001475570783 + 203 4 -46.42189527 -46.422628 0.0001831832406 0.0009120248401 0.001601713458 0.000220735026 + 204 4 -46.44387014 -46.443535 8.378488419e-05 0.001253187877 0.001590304373 0.0001006146179 + 205 4 -46.4386991 -46.439922 0.0003057250066 0.001138308596 0.001530493385 0.0001018467448 + 206 4 -46.4373267 -46.437675 8.707593122e-05 0.001448336679 0.002440246094 0.0003149340449 + 207 4 -46.44459348 -46.445558 0.0002411298298 0.0008716896548 0.00113392416 7.56133778e-05 + 208 4 -46.43888137 -46.439106 5.615857123e-05 0.001259801506 0.001830731002 0.0001709221809 + 209 4 -46.44452218 -46.443073 0.0003622950507 0.0005355234286 0.0005766870902 1.79131694e-05 + 210 4 -46.44072829 -46.4397 0.0002570731957 0.0008912596243 0.001204174406 7.190944969e-05 + 211 4 -46.43632905 -46.436374 1.123662554e-05 0.001004541694 0.001461656594 0.0001640759015 + 212 4 -46.42622449 -46.426557 8.312803221e-05 0.0009090508284 0.001359624213 9.61864457e-05 + 213 4 -46.43334095 -46.434009 0.0001670113496 0.001064727188 0.001391131194 0.0001118380498 + 214 4 -46.43528491 -46.436262 0.0002442731151 0.001381671346 0.002503347159 0.0002862586044 + 215 4 -46.43302209 -46.434505 0.0003707284248 0.001050895839 0.001041637173 1.89496147e-05 + 216 4 -46.43866543 -46.438768 2.564310569e-05 0.001038218766 0.001098285027 4.514347826e-05 + 217 4 -46.43867092 -46.440254 0.0003957707004 0.0005510961941 0.0006069892915 4.783704875e-05 + 218 4 -46.42481604 -46.42286 0.0004890088296 0.0005673661233 0.0007365242698 6.506186378e-05 + 219 4 -46.41707211 -46.418078 0.0002514713405 0.001292943112 0.002028412187 0.0002017017778 + 220 4 -46.44058128 -46.440513 1.707010597e-05 0.0008917164568 0.001158189967 9.459267259e-05 + 221 4 -46.40786735 -46.409824 0.0004891615343 0.0009159953828 0.001759573812 0.0002027400844 + 222 4 -46.44176165 -46.440329 0.0003581620037 0.0007050786772 0.0009534044263 7.330941275e-05 + 223 4 -46.43764613 -46.43773 2.096713934e-05 0.0007747180798 0.000926180328 6.358620118e-05 + 224 4 -46.41646676 -46.416525 1.456051792e-05 0.0007183861299 0.0007573664899 3.367542767e-05 + 225 4 -46.44086814 -46.440293 0.0001437847792 0.0008909027165 0.0007725386722 2.803789995e-05 + 226 4 -46.44027214 -46.43839 0.0004705341364 0.000707862255 0.0005612022808 3.305825174e-05 + 227 4 -46.44117428 -46.438916 0.0005645709574 0.0008843760681 0.001650878554 0.0001728225821 +# GSF_110.xyz + config # atoms energy DFT energy energy error force DFT force force error + 228 24 -278.9717069 -279.068761 0.00404392159 1.716820058 1.756353161 0.02195806777 + 229 24 -279.8354387 -279.784296 0.002130947259 0.8360146768 0.9057668891 0.02306494032 + 230 24 -279.920921 -279.901657 0.0008026665456 0.2958425102 0.001565946359 0.01411644012 + 231 24 -279.6113309 -279.584238 0.001128868858 1.136927341 1.035572248 0.02681094686 + 232 24 -279.8354404 -279.784283 0.002131557037 0.8360110766 0.9056396189 0.0230536352 + 233 24 -279.3024349 -279.302158 1.153693867e-05 1.736732164 1.771965137 0.0337612822 + 234 24 -279.5958842 -279.55564 0.001676842348 1.457718728 1.405626506 0.02601747541 + 235 24 -279.1575825 -279.246939 0.003723188855 0.7701800349 0.4813964151 0.04047321686 + 236 24 -279.3024374 -279.302157 1.168449864e-05 1.736735452 1.771953347 0.03376037562 + 237 24 -279.1575945 -279.246935 0.003722519724 0.7692674812 0.4809484798 0.04044518496 + 238 24 -279.9208868 -279.896025 0.001035908286 0.2963183655 0.01060549839 0.01410249268 + 239 24 -279.6115694 -279.584237 0.001138851225 1.137705592 1.035836121 0.02686761868 + 240 24 -279.0645289 -279.124427 0.002495753535 1.763755884 1.809545887 0.03536481445 + 241 24 -279.3562358 -279.379366 0.0009637580399 1.070359709 0.8982692706 0.03586364626 + 242 24 -279.3561336 -279.37937 0.0009681812755 1.070186817 0.898081355 0.03582333417 + 243 24 -279.0645273 -279.124427 0.002495821471 1.76375235 1.809523374 0.03536506787 + 244 24 -279.920921 -279.901657 0.0008026665457 0.2958425115 0.001570374478 0.01411414901 + 245 24 -279.835369 -279.79264 0.001780376458 0.7694167211 0.8392614852 0.02365582641 + 246 24 -279.9208868 -279.896025 0.001035908286 0.2963183642 0.01060243293 0.01410272845 + 247 24 -279.0819585 -279.206496 0.005189062307 0.5487881184 0.005326518563 0.03225762846 + 248 24 -279.5958869 -279.55564 0.001676953548 1.457718908 1.4056319 0.0260184492 + 249 24 -279.8353874 -279.79264 0.00178114169 0.7694019544 0.8392625708 0.02365755724 +# GSF_112.xyz + config # atoms energy DFT energy energy error force DFT force force error + 250 30 -345.1958147 -345.175835 0.0006659891847 1.417828523 1.057395322 0.04924265533 + 251 30 -346.4091655 -346.361714 0.00158171544 1.014644749 1.220284939 0.04659092137 + 252 30 -345.9623041 -345.795524 0.00555933642 1.67846042 2.112860875 0.06265038152 + 253 30 -345.1047773 -345.164602 0.001994155137 1.81758407 1.765832199 0.05258058282 + 254 30 -346.5687926 -346.593523 0.0008243469243 0.5266157132 0.01148867129 0.03755503081 + 255 30 -346.4165138 -346.396186 0.000677592277 1.101956155 0.9954683928 0.04399110273 + 256 30 -345.2521555 -345.319406 0.002241683384 2.024012114 1.772040852 0.05936121329 + 257 30 -345.5898529 -345.594794 0.0001647017128 2.048144748 1.516014157 0.06040124074 + 258 30 -346.0297766 -345.98566 0.001470553801 1.767327567 1.406252265 0.0524370388 + 259 30 -345.5053827 -345.383994 0.004046291647 1.336428827 0.963574308 0.05104898331 + 260 30 -346.5686343 -346.582564 0.0004643235194 0.5264211967 0.0126740587 0.03760970063 + 261 30 -345.4208874 -345.452139 0.001041721437 3.011664984 2.787719406 0.06345649604 + 262 30 -346.5687923 -346.593523 0.0008243564189 0.5266290267 0.01148834 0.03755658657 + 263 30 -345.4303119 -345.281949 0.004945431293 1.947208693 1.873142686 0.05337068276 + 264 30 -345.9593201 -345.928661 0.001021971125 2.36272379 2.100874472 0.0500210761 + 265 30 -345.0137679 -345.111657 0.003262969466 3.193781636 3.358068319 0.0653642582 + 266 30 -346.4078757 -346.367123 0.00135842305 1.085591177 1.335797131 0.04639233515 + 267 30 -346.5685865 -346.582565 0.000465950677 0.5264876602 0.01254743735 0.03760888491 + 268 30 -344.8663405 -344.91356 0.00157398253 2.930409434 3.441834403 0.06926997464 + 269 30 -345.9709087 -345.836703 0.00447352268 1.391835322 1.608769148 0.05570538969 + 270 30 -345.0229889 -344.984307 0.001289396737 2.372017585 2.542628782 0.05571754983 + 271 30 -346.4089446 -346.393931 0.0005004538568 1.297845709 1.211680725 0.04319349627 +# Liquid.xyz + config # atoms energy DFT energy energy error force DFT force force error + 272 100 -1105.559726 -1105.601723 0.0004199685213 30.70196318 31.39853886 0.2273901981 + 273 100 -1099.629534 -1099.673012 0.0004347839505 31.9864667 32.03167218 0.2226202822 + 274 100 -1121.431681 -1121.31506 0.001166208152 21.23863487 20.81076453 0.2037539182 +# Surface.xyz + config # atoms energy DFT energy energy error force DFT force force error + 275 24 -279.9208871 -279.911828 0.0003774638802 0.296319206 0.002753093533 0.01433131366 + 276 48 -554.2414777 -555.359452 0.02329113138 1.363109763 0.003020630398 0.05738251122 + 277 40 -459.5808396 -459.216162 0.009116939427 3.331498127 5.0461364 0.07877996732 + 278 40 -460.5932468 -461.144076 0.01377073069 0.885446861 0.005582740008 0.03813346389 + 279 24 -279.8214987 -279.635146 0.007764695863 0.9820115882 1.288799837 0.01857542284 + 280 30 -346.5687934 -346.592525 0.000791054458 0.5266151802 0.008446203407 0.03726635334 + 281 30 -346.0051972 -345.744506 0.008689705343 2.2667395 3.124961367 0.06591070418 +# Volume_A15.xyz + config # atoms energy DFT energy energy error force DFT force force error + 282 8 -67.00264006 -66.990732 0.001488507429 1.215939804e-14 0 2.243358855e-15 + 283 8 -72.95775649 -72.957807 6.314313802e-06 8.336427488e-14 0 1.123457519e-14 + 284 8 -94.15079086 -94.145745 0.0006307320297 1.643238761e-14 0 2.292400473e-15 + 285 8 -94.55576973 -94.554682 0.0001359665592 8.781810015e-15 0 1.347934763e-15 + 286 8 -79.41651001 -79.438363 0.002731624081 2.791146139e-14 0 4.283068402e-15 + 287 8 -69.63190551 -69.627817 0.0005110639107 2.797159709e-15 0 4.945407509e-16 + 288 8 -82.61402421 -82.604907 0.001139651578 5.50518588e-15 0 8.533393899e-16 + 289 8 14.88715331 14.89048 0.0004158363277 2.277623074e-13 0 3.606918366e-14 + 290 8 -94.356027 -94.367599 0.001446500568 1.370656518e-14 0 1.897531383e-15 + 291 8 -89.24943611 -89.248227 0.0001511386032 1.664774127e-14 0 2.375992921e-15 + 292 8 -87.22359359 -87.211997 0.001449574005 7.983033839e-15 0 1.375635716e-15 + 293 8 -93.64917628 -93.66897 0.002474215442 2.161830962e-15 0 3.67529118e-16 + 294 8 -7.974970933 -7.989166 0.001774383436 5.099416125e-13 0 6.946546112e-14 + 295 8 -84.99735699 -84.982834 0.001815374179 2.170443421e-15 0 3.781697178e-16 + 296 8 -92.51696438 -92.536373 0.002426077641 3.718860295e-14 0 5.973231169e-15 + 297 8 -26.79883513 -26.77612 0.002839390901 2.233715834e-13 0 3.517493235e-14 + 298 8 -77.53738471 -77.544107 0.0008402860664 4.491324709e-15 0 6.054184931e-16 + 299 8 -80.11476756 -80.114217 6.882047834e-05 5.913998758e-15 0 9.669637776e-16 + 300 8 -42.12903277 -42.143041 0.00175102843 2.422750345e-13 0 3.585193613e-14 + 301 8 -91.02990945 -91.040671 0.001345193709 6.975614512e-15 0 1.271552308e-15 + 302 8 -84.50933128 -84.499231 0.001262535287 7.403156156e-14 0 1.406889651e-14 + 303 8 -61.79844785 -61.825173 0.00334064406 6.607450367e-15 0 1.159662644e-15 + 304 8 -91.13057634 -91.156873 0.003287081921 4.951266629e-15 0 8.926959288e-16 + 305 8 -54.64916673 -54.658744 0.001197159343 1.762087937e-13 0 2.65881147e-14 + 306 8 -72.27319254 -72.277255 0.000507807722 1.012753197e-15 0 1.548963504e-16 + 307 8 -74.91471828 -74.923334 0.001076965039 5.031158658e-15 0 8.218252467e-16 + 308 8 -64.81833234 -64.798066 0.002533292377 2.413198886e-14 0 3.886792508e-15 + 309 8 -93.03489737 -93.048342 0.001680578381 1.933770811e-14 0 2.823007783e-15 + 310 8 -64.39098016 -64.38702 0.0004950203573 5.491439235e-15 0 7.035387897e-16 + 311 8 -88.36401111 -88.352871 0.001392513469 2.448818319e-14 0 4.111150078e-15 +# Volume_BCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 312 2 -16.76594324 -16.763625 0.001159120926 6.976263305e-16 0 2.428612866e-16 + 313 2 16.313727 16.314145 0.0002090019872 8.554299543e-13 0 3.258747439e-13 + 314 2 -21.21034404 -21.209071 0.0006365184639 6.640073969e-15 0 2.236638531e-15 + 315 2 -15.78459679 -15.780524 0.002036394156 5.203101774e-14 0 1.833927975e-14 + 316 2 -18.99841037 -19.002205 0.001897313323 1.54524867e-14 0 5.273488075e-15 + 317 2 -22.62451928 -22.620568 0.001975641435 2.616505909e-15 0 8.627358087e-16 + 318 2 4.098164524 4.096885 0.0006397621932 1.343238339e-13 0 4.308474873e-14 + 319 2 56.26275599 56.26276 2.005140033e-06 4.519068948e-12 0 1.619606237e-12 + 320 2 -22.58944013 -22.585113 0.002163564374 5.342497709e-16 0 1.665334537e-16 + 321 2 -21.79724015 -21.795501 0.0008695727187 1.356336346e-15 0 5.088522196e-16 + 322 2 33.11015633 33.110078 3.916319966e-05 9.447550921e-13 0 3.146094496e-13 + 323 2 -20.88315873 -20.885998 0.001419633105 7.79136136e-16 0 2.683038976e-16 + 324 2 -23.59568896 -23.601336 0.002823519876 1.786193989e-15 0 4.786425072e-16 + 325 2 -23.20858072 -23.207313 0.0006338593044 1.587616402e-15 0 5.168500994e-16 + 326 2 -19.89310508 -19.898089 0.002491959911 5.484204741e-15 0 2.212350673e-15 + 327 2 -23.40543383 -23.405474 2.008348612e-05 1.53358588e-15 0 5.31475905e-16 + 328 2 -4.78389031 -4.781324 0.001283154883 1.032154003e-13 0 2.824014171e-14 + 329 2 -18.86311291 -18.864936 0.0009115426575 7.879846534e-16 0 3.053113318e-16 + 330 2 -17.81642586 -17.813086 0.001669928234 3.605555037e-16 0 9.945747929e-17 + 331 2 -11.19369732 -11.197201 0.001751838472 4.930421981e-14 0 1.82568081e-14 + 332 2 -23.68308621 -23.696705 0.00680939721 1.854348399e-15 0 6.493648212e-16 +# Volume_FCC.xyz + config # atoms energy DFT energy energy error force DFT force force error + 333 4 -19.07363593 -19.075994 0.0005895165228 4.539228243e-14 0 9.571047658e-15 + 334 4 -34.87911159 -34.873619 0.001373146366 4.198460887e-16 0 9.425330886e-17 + 335 4 -43.95312211 -43.950003 0.0007797776247 2.024630393e-15 0 4.763261544e-16 + 336 4 -40.99484531 -40.991909 0.0007340787492 7.390350347e-15 0 1.496325488e-15 + 337 4 -43.44688588 -43.453929 0.001760780713 4.008514517e-15 0 1.003087756e-15 + 338 4 -42.69057262 -42.686077 0.00112390473 2.201304978e-15 0 5.507566336e-16 + 339 4 -33.2256766 -33.224653 0.0002559009775 2.053725049e-16 0 5.088522196e-17 + 340 4 -26.86518979 -26.862709 0.0006201985978 3.140235603e-14 0 7.073764388e-15 + 341 4 -25.52095379 -25.519883 0.000267698747 6.385007894e-16 0 1.350193105e-16 + 342 4 3.462101351 3.463071 0.0002424122902 9.859120235e-14 0 2.313607928e-14 + 343 4 -31.59322682 -31.59595 0.0006807955537 2.683163594e-16 0 6.85215773e-17 + 344 4 -45.10086835 -45.100466 0.0001005869681 1.851345213e-15 0 4.233676619e-16 + 345 4 -46.05341345 -46.052258 0.0002888617397 5.706396539e-16 0 1.230208065e-16 + 346 4 -29.99832747 -30.001189 0.000715381888 4.217055326e-16 0 9.772275581e-17 + 347 4 -22.85257323 -22.8504 0.0005433065144 5.289057803e-16 0 1.249000903e-16 + 348 4 -9.165925355 -9.164691 0.0003085886251 6.994099953e-14 0 1.740903428e-14 + 349 4 -24.14844551 -24.150343 0.0004743734227 3.331030455e-16 0 7.459310947e-17 + 350 4 -46.43546878 -46.426795 0.002168446119 3.110946892e-15 0 8.45388574e-16 + 351 4 -28.4512672 -28.451145 3.054899355e-05 7.027034849e-15 0 2.024133176e-15 + 352 4 40.34134283 40.341566 5.579222461e-05 4.132267104e-13 0 1.032726433e-13 + 353 4 19.61887601 19.617912 0.0002410019119 1.957059783e-13 0 4.973561211e-14 + 354 4 -26.95747285 -26.954384 0.0007722115981 4.151755412e-16 0 1.006139616e-16 + 355 4 -46.33491981 -46.323696 0.002805952031 2.472781231e-15 0 6.375108774e-16 + 356 4 -45.83316789 -45.828947 0.001055221357 1.149213664e-14 0 3.283108739e-15 + 357 4 -38.16058672 -38.16029 7.417901943e-05 5.394515869e-16 0 1.214306433e-16 + 358 4 -32.91257361 -32.919741 0.001791847013 3.667266479e-14 0 9.583190722e-15 + 359 4 -41.2675262 -41.272675 0.001287200608 1.447869656e-14 0 4.164533482e-15 + 360 4 -39.74460491 -39.753322 0.002179272067 5.980937198e-16 0 1.292283933e-16 + 361 4 -37.55548161 -37.547435 0.002011651484 1.56813803e-14 0 3.793478841e-15 + 362 4 -36.53186907 -36.52595 0.00147976637 2.125160163e-16 0 4.741577501e-17 + 363 4 -45.01550152 -45.016087 0.0001463706371 1.97327102e-15 0 4.891920202e-16 diff --git a/examples/PACKAGES/pod/Ta_Quadratic/Ta_training_errors.pod b/examples/PACKAGES/pod/Ta_Quadratic/Ta_training_errors.pod new file mode 100644 index 0000000000..78f600d5cb --- /dev/null +++ b/examples/PACKAGES/pod/Ta_Quadratic/Ta_training_errors.pod @@ -0,0 +1,20 @@ +**************** Begin of Error Analysis for the Training Data Set **************** +--------------------------------------------------------------------------------------------------- + File | # configs | # atoms | MAE energy | RMSE energy | MAE force | RMSE force +--------------------------------------------------------------------------------------------------- +Displaced_A15.xyz 9 576 0.000554 0.000680 0.066393 0.083014 +Displaced_BCC.xyz 9 486 0.004724 0.005103 0.108253 0.139461 +Displaced_FCC.xyz 9 432 0.001704 0.001900 0.077531 0.097471 +Elastic_BCC.xyz 100 200 0.000444 0.000446 0.000001 0.000002 +Elastic_FCC.xyz 100 400 0.000273 0.000327 0.000110 0.000163 +GSF_110.xyz 22 528 0.001852 0.002260 0.027302 0.044765 +GSF_112.xyz 22 660 0.001839 0.002404 0.051415 0.080350 +Liquid.xyz 3 300 0.000674 0.000758 0.217921 0.276109 +Surface.xyz 7 236 0.009115 0.011661 0.047949 0.105123 +Volume_A15.xyz 30 240 0.001407 0.001693 0.000000 0.000000 +Volume_BCC.xyz 21 42 0.001497 0.002077 0.000000 0.000000 +Volume_FCC.xyz 31 124 0.000870 0.001139 0.000000 0.000000 +--------------------------------------------------------------------------------------------------- +All files 363 4224 0.001053 0.002171 0.059051 0.106960 +--------------------------------------------------------------------------------------------------- +**************** End of Error Analysis for the Training Data Set **************** diff --git a/examples/PACKAGES/pod/Ta_Quadratic/in.fitpod b/examples/PACKAGES/pod/Ta_Quadratic/in.fitpod new file mode 100644 index 0000000000..7b932558ea --- /dev/null +++ b/examples/PACKAGES/pod/Ta_Quadratic/in.fitpod @@ -0,0 +1,5 @@ +# Demonstrate fitpod for POD potential + +units metal +fitpod Ta_param.pod Ta_data.pod + diff --git a/examples/PACKAGES/pod/Ta_Quadratic/in.pod b/examples/PACKAGES/pod/Ta_Quadratic/in.pod new file mode 100644 index 0000000000..bde2df00a1 --- /dev/null +++ b/examples/PACKAGES/pod/Ta_Quadratic/in.pod @@ -0,0 +1,47 @@ +# Demonstrate POD Ta potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable ny equal ${nrep} +variable nz equal ${nrep} + +boundary p p p + +lattice bcc $a +region box block 0 ${nx} 0 ${ny} 0 ${nz} +create_box 1 box +create_atoms 1 box + +mass 1 180.88 + + +# POD potential +pair_style pod +pair_coeff * * Ta_param.pod Ta_coefficients.pod Ta + +# Setup output + +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve +run ${nsteps} + + diff --git a/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.fitpod.g++.1 b/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.fitpod.g++.1 new file mode 100644 index 0000000000..6e5e4cd78b --- /dev/null +++ b/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.fitpod.g++.1 @@ -0,0 +1,114 @@ +LAMMPS (3 Nov 2022) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate fitpod for POD potential + +units metal +fitpod Ta_param.pod Ta_data.pod +Reading potential file Ta_param.pod with DATE: 2022-11-30 +**************** Begin of POD Potentials **************** +species: Ta +periodic boundary conditions: 1 1 1 +inner cut-off radius: 1 +outer cut-off radius: 5 +bessel polynomial degree: 3 +inverse polynomial degree: 6 +one-body potential: 1 +two-body potential: 3 6 6 +three-body potential: 3 6 5 5 +four-body SNAP potential: 0 0 +quadratic POD potential: 1 +number of basis functions for one-body potential: 1 +number of basis functions for two-body potential: 6 +number of basis functions for three-body potential: 25 +number of basis functions for four-body potential: 0 +number of descriptors for one-body potential: 1 +number of descriptors for two-body potential: 6 +number of descriptors for three-body potential: 25 +number of descriptors for four-body potential: 0 +number of descriptors for quadratic POD potential: 150 +total number of descriptors for all potentials: 182 +**************** End of POD Potentials **************** + +**************** Begin of Data File **************** +file format: extxyz +file extension: xyz +path to training data set: ../Ta/XYZ +path to test data set: ../Ta/XYZ +training fraction: 1 +test fraction: 1 +randomize training data set: 1 +randomize test data set: 1 +error analysis for training data set: 1 +error analysis for test data set: 0 +energy/force calculation for training data set: 0 +energy/force calculation for test data set: 0 +fitting weight for energy: 100 +fitting weight for force: 1 +fitting weight for stress: 0 +**************** End of Data File **************** +**************** Begin of Training Data Set **************** +--------------------------------------------------------------- + data file | number of configurations | number of atoms +--------------------------------------------------------------- + Displaced_A15.xyz | 9 | 576 + Displaced_BCC.xyz | 9 | 486 + Displaced_FCC.xyz | 9 | 432 + Elastic_BCC.xyz | 100 | 200 + Elastic_FCC.xyz | 100 | 400 + GSF_110.xyz | 22 | 528 + GSF_112.xyz | 22 | 660 + Liquid.xyz | 3 | 300 + Surface.xyz | 7 | 236 + Volume_A15.xyz | 30 | 240 + Volume_BCC.xyz | 21 | 42 + Volume_FCC.xyz | 31 | 124 +--------------------------------------------------------------- +number of files: 12 +number of configurations in all files: 363 +number of atoms in all files: 4224 +minimum number of atoms: 2 +maximum number of atoms: 100 +**************** End of Training Data Set **************** +**************** Begin of Memory Allocation **************** +maximum number of atoms in periodic domain: 100 +maximum number of atoms in extended domain: 2700 +maximum number of neighbors in extended domain: 270000 +size of double memory: 223201 +size of int memory: 14709 +size of descriptor matrix: 182 x 182 +**************** End of Memory Allocation **************** +**************** Begin of Least-Squares Fitting **************** +Configuration: # 1 +Configuration: # 101 +Configuration: # 201 +Configuration: # 301 +**************** End of Least-Squares Fitting **************** +**************** Begin of Error Calculation **************** +Configuration: # 1 +Configuration: # 101 +Configuration: # 201 +Configuration: # 301 +**************** End of Error Calculation **************** +**************** Begin of Error Analysis for the Training Data Set **************** +--------------------------------------------------------------------------------------------------- + File | # configs | # atoms | MAE energy | RMSE energy | MAE force | RMSE force +--------------------------------------------------------------------------------------------------- +Displaced_A15.xyz 9 576 0.000554 0.000680 0.066393 0.083014 +Displaced_BCC.xyz 9 486 0.004724 0.005103 0.108253 0.139461 +Displaced_FCC.xyz 9 432 0.001704 0.001900 0.077531 0.097471 +Elastic_BCC.xyz 100 200 0.000444 0.000446 0.000001 0.000002 +Elastic_FCC.xyz 100 400 0.000273 0.000327 0.000110 0.000163 +GSF_110.xyz 22 528 0.001852 0.002260 0.027302 0.044765 +GSF_112.xyz 22 660 0.001839 0.002404 0.051415 0.080350 +Liquid.xyz 3 300 0.000674 0.000758 0.217921 0.276109 +Surface.xyz 7 236 0.009115 0.011661 0.047949 0.105123 +Volume_A15.xyz 30 240 0.001407 0.001693 0.000000 0.000000 +Volume_BCC.xyz 21 42 0.001497 0.002077 0.000000 0.000000 +Volume_FCC.xyz 31 124 0.000870 0.001139 0.000000 0.000000 +--------------------------------------------------------------------------------------------------- +All files 363 4224 0.001053 0.002171 0.059051 0.106960 +--------------------------------------------------------------------------------------------------- +**************** End of Error Analysis for the Training Data Set **************** + +Total wall time: 0:00:01 diff --git a/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.fitpod.g++.4 b/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.fitpod.g++.4 new file mode 100644 index 0000000000..ddc559c6c0 --- /dev/null +++ b/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.fitpod.g++.4 @@ -0,0 +1,114 @@ +LAMMPS (3 Nov 2022) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate fitpod for POD potential + +units metal +fitpod Ta_param.pod Ta_data.pod +Reading potential file Ta_param.pod with DATE: 2022-11-30 +**************** Begin of POD Potentials **************** +species: Ta +periodic boundary conditions: 1 1 1 +inner cut-off radius: 1 +outer cut-off radius: 5 +bessel polynomial degree: 3 +inverse polynomial degree: 6 +one-body potential: 1 +two-body potential: 3 6 6 +three-body potential: 3 6 5 5 +four-body SNAP potential: 0 0 +quadratic POD potential: 1 +number of basis functions for one-body potential: 1 +number of basis functions for two-body potential: 6 +number of basis functions for three-body potential: 25 +number of basis functions for four-body potential: 0 +number of descriptors for one-body potential: 1 +number of descriptors for two-body potential: 6 +number of descriptors for three-body potential: 25 +number of descriptors for four-body potential: 0 +number of descriptors for quadratic POD potential: 150 +total number of descriptors for all potentials: 182 +**************** End of POD Potentials **************** + +**************** Begin of Data File **************** +file format: extxyz +file extension: xyz +path to training data set: ../Ta/XYZ +path to test data set: ../Ta/XYZ +training fraction: 1 +test fraction: 1 +randomize training data set: 1 +randomize test data set: 1 +error analysis for training data set: 1 +error analysis for test data set: 0 +energy/force calculation for training data set: 0 +energy/force calculation for test data set: 0 +fitting weight for energy: 100 +fitting weight for force: 1 +fitting weight for stress: 0 +**************** End of Data File **************** +**************** Begin of Training Data Set **************** +--------------------------------------------------------------- + data file | number of configurations | number of atoms +--------------------------------------------------------------- + Displaced_A15.xyz | 9 | 576 + Displaced_BCC.xyz | 9 | 486 + Displaced_FCC.xyz | 9 | 432 + Elastic_BCC.xyz | 100 | 200 + Elastic_FCC.xyz | 100 | 400 + GSF_110.xyz | 22 | 528 + GSF_112.xyz | 22 | 660 + Liquid.xyz | 3 | 300 + Surface.xyz | 7 | 236 + Volume_A15.xyz | 30 | 240 + Volume_BCC.xyz | 21 | 42 + Volume_FCC.xyz | 31 | 124 +--------------------------------------------------------------- +number of files: 12 +number of configurations in all files: 363 +number of atoms in all files: 4224 +minimum number of atoms: 2 +maximum number of atoms: 100 +**************** End of Training Data Set **************** +**************** Begin of Memory Allocation **************** +maximum number of atoms in periodic domain: 100 +maximum number of atoms in extended domain: 2700 +maximum number of neighbors in extended domain: 270000 +size of double memory: 223201 +size of int memory: 14709 +size of descriptor matrix: 182 x 182 +**************** End of Memory Allocation **************** +**************** Begin of Least-Squares Fitting **************** +Configuration: # 1 +Configuration: # 101 +Configuration: # 201 +Configuration: # 301 +**************** End of Least-Squares Fitting **************** +**************** Begin of Error Calculation **************** +Configuration: # 1 +Configuration: # 101 +Configuration: # 201 +Configuration: # 301 +**************** End of Error Calculation **************** +**************** Begin of Error Analysis for the Training Data Set **************** +--------------------------------------------------------------------------------------------------- + File | # configs | # atoms | MAE energy | RMSE energy | MAE force | RMSE force +--------------------------------------------------------------------------------------------------- +Displaced_A15.xyz 9 576 0.000554 0.000680 0.066393 0.083014 +Displaced_BCC.xyz 9 486 0.004724 0.005103 0.108253 0.139461 +Displaced_FCC.xyz 9 432 0.001704 0.001900 0.077531 0.097471 +Elastic_BCC.xyz 100 200 0.000444 0.000446 0.000001 0.000002 +Elastic_FCC.xyz 100 400 0.000273 0.000327 0.000110 0.000163 +GSF_110.xyz 22 528 0.001852 0.002260 0.027302 0.044765 +GSF_112.xyz 22 660 0.001839 0.002404 0.051415 0.080350 +Liquid.xyz 3 300 0.000674 0.000758 0.217921 0.276109 +Surface.xyz 7 236 0.009115 0.011661 0.047949 0.105123 +Volume_A15.xyz 30 240 0.001407 0.001693 0.000000 0.000000 +Volume_BCC.xyz 21 42 0.001497 0.002077 0.000000 0.000000 +Volume_FCC.xyz 31 124 0.000870 0.001139 0.000000 0.000000 +--------------------------------------------------------------------------------------------------- +All files 363 4224 0.001053 0.002171 0.059051 0.106960 +--------------------------------------------------------------------------------------------------- +**************** End of Error Analysis for the Training Data Set **************** + +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.pod.g++.1 b/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.pod.g++.1 new file mode 100644 index 0000000000..1635479223 --- /dev/null +++ b/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.pod.g++.1 @@ -0,0 +1,143 @@ +LAMMPS (3 Nov 2022) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate POD Ta potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable nx equal 4 +variable ny equal ${nrep} +variable ny equal 4 +variable nz equal ${nrep} +variable nz equal 4 + +boundary p p p + +lattice bcc $a +lattice bcc 3.316 +Lattice spacing in x,y,z = 3.316 3.316 3.316 +region box block 0 ${nx} 0 ${ny} 0 ${nz} +region box block 0 4 0 ${ny} 0 ${nz} +region box block 0 4 0 4 0 ${nz} +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0 0 0) to (13.264 13.264 13.264) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 128 atoms + using lattice units in orthogonal box = (0 0 0) to (13.264 13.264 13.264) + create_atoms CPU = 0.000 seconds + +mass 1 180.88 + + +# POD potential +pair_style pod +pair_coeff * * Ta_param.pod Ta_coefficients.pod Ta +Reading potential file Ta_param.pod with DATE: 2022-11-30 +**************** Begin of POD Potentials **************** +species: Ta +periodic boundary conditions: 1 1 1 +inner cut-off radius: 1 +outer cut-off radius: 5 +bessel polynomial degree: 3 +inverse polynomial degree: 6 +one-body potential: 1 +two-body potential: 3 6 6 +three-body potential: 3 6 5 5 +four-body SNAP potential: 0 0 +quadratic POD potential: 1 +number of basis functions for one-body potential: 1 +number of basis functions for two-body potential: 6 +number of basis functions for three-body potential: 25 +number of basis functions for four-body potential: 0 +number of descriptors for one-body potential: 1 +number of descriptors for two-body potential: 6 +number of descriptors for three-body potential: 25 +number of descriptors for four-body potential: 0 +number of descriptors for quadratic POD potential: 150 +total number of descriptors for all potentials: 182 +**************** End of POD Potentials **************** + + +# Setup output + +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve +run ${nsteps} +run 100 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6 + ghost atom cutoff = 6 + binsize = 3, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair pod, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.082 | 3.082 | 3.082 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 300 -11.84932 0 -11.810845 12965.331 + 10 296.47479 -11.848868 0 -11.810845 12992.863 + 20 286.0912 -11.847536 0 -11.810845 13077.505 + 30 269.42142 -11.845399 0 -11.810845 13223.909 + 40 247.39188 -11.842573 0 -11.810845 13436.937 + 50 221.23616 -11.839219 0 -11.810845 13718.879 + 60 192.42749 -11.835524 0 -11.810845 14066.912 + 70 162.5922 -11.831697 0 -11.810845 14471.57 + 80 133.40727 -11.827954 0 -11.810845 14916.653 + 90 106.48844 -11.824502 0 -11.810844 15380.602 + 100 83.277725 -11.821525 0 -11.810844 15838.941 +Loop time of 2.21094 on 1 procs for 100 steps with 128 atoms + +Performance: 1.954 ns/day, 12.283 hours/ns, 45.230 timesteps/s, 5.789 katom-step/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.21 | 2.21 | 2.21 | 0.0 | 99.96 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.00036776 | 0.00036776 | 0.00036776 | 0.0 | 0.02 +Output | 0.00019486 | 0.00019486 | 0.00019486 | 0.0 | 0.01 +Modify | 0.00016419 | 0.00016419 | 0.00016419 | 0.0 | 0.01 +Other | | 0.0002416 | | | 0.01 + +Nlocal: 128 ave 128 max 128 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 727 ave 727 max 727 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 7424 ave 7424 max 7424 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 7424 +Ave neighs/atom = 58 +Neighbor list builds = 0 +Dangerous builds = 0 + + +Total wall time: 0:00:02 diff --git a/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.pod.g++.4 b/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.pod.g++.4 new file mode 100644 index 0000000000..0a9472c23e --- /dev/null +++ b/examples/PACKAGES/pod/Ta_Quadratic/log.1Dec22.pod.g++.4 @@ -0,0 +1,143 @@ +LAMMPS (3 Nov 2022) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate POD Ta potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable nx equal 4 +variable ny equal ${nrep} +variable ny equal 4 +variable nz equal ${nrep} +variable nz equal 4 + +boundary p p p + +lattice bcc $a +lattice bcc 3.316 +Lattice spacing in x,y,z = 3.316 3.316 3.316 +region box block 0 ${nx} 0 ${ny} 0 ${nz} +region box block 0 4 0 ${ny} 0 ${nz} +region box block 0 4 0 4 0 ${nz} +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0 0 0) to (13.264 13.264 13.264) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 128 atoms + using lattice units in orthogonal box = (0 0 0) to (13.264 13.264 13.264) + create_atoms CPU = 0.000 seconds + +mass 1 180.88 + + +# POD potential +pair_style pod +pair_coeff * * Ta_param.pod Ta_coefficients.pod Ta +Reading potential file Ta_param.pod with DATE: 2022-11-30 +**************** Begin of POD Potentials **************** +species: Ta +periodic boundary conditions: 1 1 1 +inner cut-off radius: 1 +outer cut-off radius: 5 +bessel polynomial degree: 3 +inverse polynomial degree: 6 +one-body potential: 1 +two-body potential: 3 6 6 +three-body potential: 3 6 5 5 +four-body SNAP potential: 0 0 +quadratic POD potential: 1 +number of basis functions for one-body potential: 1 +number of basis functions for two-body potential: 6 +number of basis functions for three-body potential: 25 +number of basis functions for four-body potential: 0 +number of descriptors for one-body potential: 1 +number of descriptors for two-body potential: 6 +number of descriptors for three-body potential: 25 +number of descriptors for four-body potential: 0 +number of descriptors for quadratic POD potential: 150 +total number of descriptors for all potentials: 182 +**************** End of POD Potentials **************** + + +# Setup output + +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve +run ${nsteps} +run 100 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6 + ghost atom cutoff = 6 + binsize = 3, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair pod, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.062 | 3.062 | 3.062 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 300 -11.84932 0 -11.810845 12965.331 + 10 296.47479 -11.848868 0 -11.810845 12992.863 + 20 286.0912 -11.847536 0 -11.810845 13077.505 + 30 269.42142 -11.845399 0 -11.810845 13223.909 + 40 247.39188 -11.842573 0 -11.810845 13436.937 + 50 221.23616 -11.839219 0 -11.810845 13718.879 + 60 192.42749 -11.835524 0 -11.810845 14066.912 + 70 162.5922 -11.831697 0 -11.810845 14471.57 + 80 133.40727 -11.827954 0 -11.810845 14916.653 + 90 106.48844 -11.824502 0 -11.810844 15380.602 + 100 83.277725 -11.821525 0 -11.810844 15838.941 +Loop time of 0.680827 on 4 procs for 100 steps with 128 atoms + +Performance: 6.345 ns/day, 3.782 hours/ns, 146.880 timesteps/s, 18.801 katom-step/s +99.3% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.66292 | 0.66527 | 0.66845 | 0.3 | 97.72 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.011041 | 0.014313 | 0.01666 | 1.9 | 2.10 +Output | 0.00023806 | 0.00027584 | 0.00038453 | 0.0 | 0.04 +Modify | 0.00015182 | 0.00015927 | 0.00016433 | 0.0 | 0.02 +Other | | 0.0008078 | | | 0.12 + +Nlocal: 32 ave 32 max 32 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 431 ave 431 max 431 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 1856 ave 1856 max 1856 min +Histogram: 4 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 7424 +Ave neighs/atom = 58 +Neighbor list builds = 0 +Dangerous builds = 0 + + +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/sph/shock_tube/shock2d.lmp b/examples/PACKAGES/sph/shock_tube/shock2d.lmp index 32cfd8067b..c63b537bc7 100644 --- a/examples/PACKAGES/sph/shock_tube/shock2d.lmp +++ b/examples/PACKAGES/sph/shock_tube/shock2d.lmp @@ -22,7 +22,7 @@ pair_style hybrid/overlay sph/rhosum 1 sph/idealgas pair_coeff * * sph/rhosum 4.0 pair_coeff * * sph/idealgas 0.75 4.0 -compute rhoatom all shp/rho/atom +compute rhoatom all sph/rho/atom compute ieatom all sph/e/atom compute esph all reduce sum c_ieatom # total internal energy compute ke all ke diff --git a/examples/plugins/LAMMPSInterfaceCXX.cmake b/examples/plugins/LAMMPSInterfaceCXX.cmake index a3313215d6..7eef5bd6e4 100644 --- a/examples/plugins/LAMMPSInterfaceCXX.cmake +++ b/examples/plugins/LAMMPSInterfaceCXX.cmake @@ -45,45 +45,80 @@ if(BUILD_MPI) set(MPI_CXX_SKIP_MPICXX TRUE) # We use a non-standard procedure to cross-compile with MPI on Windows if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING) - # Download and configure custom MPICH files for Windows - message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows") - set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball") - set(MPICH2_WIN32_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win32-devel.tar.gz" CACHE STRING "URL for MPICH2 (win32) tarball") - set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball") - set(MPICH2_WIN32_DEVEL_MD5 "a61d153500dce44e21b755ee7257e031" CACHE STRING "MD5 checksum of MPICH2 (win32) tarball") - mark_as_advanced(MPICH2_WIN64_DEVEL_URL) - mark_as_advanced(MPICH2_WIN32_DEVEL_URL) - mark_as_advanced(MPICH2_WIN64_DEVEL_MD5) - mark_as_advanced(MPICH2_WIN32_DEVEL_MD5) + # Download and configure MinGW compatible MPICH development files for Windows + option(USE_MSMPI "Use Microsoft's MS-MPI SDK instead of MPICH2-1.4.1" OFF) + if(USE_MSMPI) + message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation") + set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball") + set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball") + mark_as_advanced(MPICH2_WIN64_DEVEL_URL) + mark_as_advanced(MPICH2_WIN64_DEVEL_MD5) - include(ExternalProject) - if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") - ExternalProject_Add(mpi4win_build - URL ${MPICH2_WIN64_DEVEL_URL} - URL_MD5 ${MPICH2_WIN64_DEVEL_MD5} - CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - BUILD_BYPRODUCTS /lib/libmpi.a) + include(ExternalProject) + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + ExternalProject_Add(mpi4win_build + URL ${MPICH2_WIN64_DEVEL_URL} + URL_MD5 ${MPICH2_WIN64_DEVEL_MD5} + CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" + BUILD_BYPRODUCTS /lib/libmsmpi.a) + else() + message(FATAL_ERROR "Only x86 64-bit builds are supported with MS-MPI") + endif() + + ExternalProject_get_property(mpi4win_build SOURCE_DIR) + file(MAKE_DIRECTORY "${SOURCE_DIR}/include") + add_library(MPI::MPI_CXX UNKNOWN IMPORTED) + set_target_properties(MPI::MPI_CXX PROPERTIES + IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a" + INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" + INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + add_dependencies(MPI::MPI_CXX mpi4win_build) + + # set variables for status reporting at the end of CMake run + set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include") + set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a") else() - ExternalProject_Add(mpi4win_build - URL ${MPICH2_WIN32_DEVEL_URL} - URL_MD5 ${MPICH2_WIN32_DEVEL_MD5} - CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - BUILD_BYPRODUCTS /lib/libmpi.a) + # Download and configure custom MPICH files for Windows + message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows") + set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball") + set(MPICH2_WIN32_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win32-devel.tar.gz" CACHE STRING "URL for MPICH2 (win32) tarball") + set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball") + set(MPICH2_WIN32_DEVEL_MD5 "a61d153500dce44e21b755ee7257e031" CACHE STRING "MD5 checksum of MPICH2 (win32) tarball") + mark_as_advanced(MPICH2_WIN64_DEVEL_URL) + mark_as_advanced(MPICH2_WIN32_DEVEL_URL) + mark_as_advanced(MPICH2_WIN64_DEVEL_MD5) + mark_as_advanced(MPICH2_WIN32_DEVEL_MD5) + + include(ExternalProject) + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + ExternalProject_Add(mpi4win_build + URL ${MPICH2_WIN64_DEVEL_URL} + URL_MD5 ${MPICH2_WIN64_DEVEL_MD5} + CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" + BUILD_BYPRODUCTS /lib/libmpi.a) + else() + ExternalProject_Add(mpi4win_build + URL ${MPICH2_WIN32_DEVEL_URL} + URL_MD5 ${MPICH2_WIN32_DEVEL_MD5} + CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" + BUILD_BYPRODUCTS /lib/libmpi.a) + endif() + + ExternalProject_get_property(mpi4win_build SOURCE_DIR) + file(MAKE_DIRECTORY "${SOURCE_DIR}/include") + add_library(MPI::MPI_CXX UNKNOWN IMPORTED) + set_target_properties(MPI::MPI_CXX PROPERTIES + IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a" + INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" + INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + add_dependencies(MPI::MPI_CXX mpi4win_build) + + # set variables for status reporting at the end of CMake run + set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include") + set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") + set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") endif() - - ExternalProject_get_property(mpi4win_build SOURCE_DIR) - file(MAKE_DIRECTORY "${SOURCE_DIR}/include") - add_library(MPI::MPI_CXX UNKNOWN IMPORTED) - set_target_properties(MPI::MPI_CXX PROPERTIES - IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a" - INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" - INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") - add_dependencies(MPI::MPI_CXX mpi4win_build) - - # set variables for status reporting at the end of CMake run - set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include") - set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") - set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") else() find_package(MPI REQUIRED) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) diff --git a/examples/plugins/angle_zero2.cpp b/examples/plugins/angle_zero2.cpp index bc2f6869dc..2db7645245 100644 --- a/examples/plugins/angle_zero2.cpp +++ b/examples/plugins/angle_zero2.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/angle_zero2.h b/examples/plugins/angle_zero2.h index e9a5df3ae4..1bdda7472d 100644 --- a/examples/plugins/angle_zero2.h +++ b/examples/plugins/angle_zero2.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/bond_zero2.cpp b/examples/plugins/bond_zero2.cpp index 768f176c63..7ca904b31d 100644 --- a/examples/plugins/bond_zero2.cpp +++ b/examples/plugins/bond_zero2.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/bond_zero2.h b/examples/plugins/bond_zero2.h index e01ec8c1fc..52b919567a 100644 --- a/examples/plugins/bond_zero2.h +++ b/examples/plugins/bond_zero2.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/dihedral_zero2.cpp b/examples/plugins/dihedral_zero2.cpp index a597d7a48e..df4e873993 100644 --- a/examples/plugins/dihedral_zero2.cpp +++ b/examples/plugins/dihedral_zero2.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/dihedral_zero2.h b/examples/plugins/dihedral_zero2.h index ca0e49b21a..2e28d6e943 100644 --- a/examples/plugins/dihedral_zero2.h +++ b/examples/plugins/dihedral_zero2.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/fix_nve2.cpp b/examples/plugins/fix_nve2.cpp index 498cb40d21..321dd802b6 100644 --- a/examples/plugins/fix_nve2.cpp +++ b/examples/plugins/fix_nve2.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/fix_nve2.h b/examples/plugins/fix_nve2.h index 3be0131d28..83c334c658 100644 --- a/examples/plugins/fix_nve2.h +++ b/examples/plugins/fix_nve2.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/improper_zero2.cpp b/examples/plugins/improper_zero2.cpp index 9b0335df8b..c2b9203832 100644 --- a/examples/plugins/improper_zero2.cpp +++ b/examples/plugins/improper_zero2.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/improper_zero2.h b/examples/plugins/improper_zero2.h index f561a4ae19..8ce2f2d001 100644 --- a/examples/plugins/improper_zero2.h +++ b/examples/plugins/improper_zero2.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/pair_morse2.cpp b/examples/plugins/pair_morse2.cpp index 738fd53e87..f09be36585 100644 --- a/examples/plugins/pair_morse2.cpp +++ b/examples/plugins/pair_morse2.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/pair_morse2.h b/examples/plugins/pair_morse2.h index c796cd1164..149a518908 100644 --- a/examples/plugins/pair_morse2.h +++ b/examples/plugins/pair_morse2.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/pair_morse2_omp.cpp b/examples/plugins/pair_morse2_omp.cpp index 9c81bad970..71313bd5f3 100644 --- a/examples/plugins/pair_morse2_omp.cpp +++ b/examples/plugins/pair_morse2_omp.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org This software is distributed under the GNU General Public License. diff --git a/examples/plugins/pair_morse2_omp.h b/examples/plugins/pair_morse2_omp.h index ec8f28e074..79f729efde 100644 --- a/examples/plugins/pair_morse2_omp.h +++ b/examples/plugins/pair_morse2_omp.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/pair_zero2.cpp b/examples/plugins/pair_zero2.cpp index c5197a67a6..ed264aa00b 100644 --- a/examples/plugins/pair_zero2.cpp +++ b/examples/plugins/pair_zero2.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/examples/plugins/pair_zero2.h b/examples/plugins/pair_zero2.h index 8c8ed6f59e..6be0c5b0f1 100644 --- a/examples/plugins/pair_zero2.h +++ b/examples/plugins/pair_zero2.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/fortran/README b/fortran/README index 57d163e197..6a19cd7dc2 100644 --- a/fortran/README +++ b/fortran/README @@ -1,9 +1,9 @@ -This directory contains Fortran code which interface LAMMPS as a library -and allows the LAMMPS library interface to be invoked from Fortran codes. -It requires a Fortran compiler that supports the Fortran 2003 standard. +This directory contains Fortran code that acts as an interface to LAMMPS as a +library and allows the LAMMPS library interface to be invoked from Fortran +code. It requires a Fortran compiler that supports the Fortran 2003 standard. This interface is based on and supersedes the previous Fortran interfaces -in the examples/COUPLE/fortran* folders, but is fully supported by the +in the examples/COUPLE/fortran* folders, but it is fully supported by the LAMMPS developers and included in the documentation and unit testing. Details on this Fortran interface and how to build programs using it diff --git a/fortran/lammps.f90 b/fortran/lammps.f90 index 98378c833a..3ab7a26d25 100644 --- a/fortran/lammps.f90 +++ b/fortran/lammps.f90 @@ -1,7 +1,7 @@ ! ------------------------------------------------------------------------- ! LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator ! https://www.lammps.org/ Sandia National Laboratories -! Steve Plimpton, sjplimp@sandia.gov +! LAMMPS Development team: developers@lammps.org ! ! Copyright (2003) Sandia Corporation. Under the terms of Contract ! DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -19,8 +19,12 @@ ! Karl D. Hammond ! University of Missouri, 2012-2020 ! +! Contributing authors: +! - Axel Kohlmeyer , Temple University, 2020-2022 +! - Karl D. Hammond , University of Missouri, 2022 +! ! The Fortran module tries to follow the API of the C library interface -! closely, but like the Python wrapper it employs an object-oriented +! closely, but like the Python wrapper, it employs an object-oriented ! approach. To accommodate the object-oriented approach, all exported ! subroutines and functions have to be implemented in Fortran and ! call the interfaced C-style functions with adapted calling conventions @@ -29,9 +33,9 @@ ! MODULE LIBLAMMPS - USE, INTRINSIC :: ISO_C_BINDING, ONLY: c_ptr, c_null_ptr, c_loc, & - c_int, c_int64_t, c_char, c_null_char, c_double, c_size_t, c_f_pointer - USE, INTRINSIC :: ISO_FORTRAN_ENV, ONLY : ERROR_UNIT + USE, INTRINSIC :: ISO_C_BINDING, ONLY: c_ptr, c_null_ptr, C_ASSOCIATED, & + C_LOC, c_int, c_int64_t, c_char, c_null_char, c_double, c_size_t, & + C_F_POINTER IMPLICIT NONE PRIVATE @@ -40,37 +44,139 @@ MODULE LIBLAMMPS ! Data type constants for extracting data from global, atom, compute, and fix ! ! Must be kept in sync with the equivalent declarations in - ! src/library.h and python/lammps/constants.py + ! src/library.h, python/lammps/constants.py, tools/swig/lammps.i, + ! and examples/COUPLE/plugin/liblammpsplugin.h ! - ! NOT part of the API (the part the user sees) - INTEGER (c_int), PARAMETER :: & - LAMMPS_INT = 0, & ! 32-bit integer (array) - LAMMPS_INT_2D = 1, & ! two-dimensional 32-bit integer array - LAMMPS_DOUBLE = 2, & ! 64-bit double (array) - LAMMPS_DOUBLE_2D = 3, & ! two-dimensional 64-bit double array - LAMMPS_INT64 = 4, & ! 64-bit integer (array) - LAMMPS_INT64_2D = 5, & ! two-dimensional 64-bit integer array - LAMMPS_STRING = 6 ! C-String + ! These are NOT part of the API (the part the user sees) + INTEGER(c_int), PARAMETER :: & + LAMMPS_INT = 0, & ! 32-bit integer (or array) + LAMMPS_INT_2D = 1, & ! two-dimensional 32-bit integer array + LAMMPS_DOUBLE = 2, & ! 64-bit double (or array) + LAMMPS_DOUBLE_2D = 3, & ! two-dimensional 64-bit double array + LAMMPS_INT64 = 4, & ! 64-bit integer (or array) + LAMMPS_INT64_2D = 5, & ! two-dimensional 64-bit integer array + LAMMPS_STRING = 6, & ! C-String + LMP_STYLE_GLOBAL = 0, & ! request global compute/fix/etc. data + LMP_STYLE_ATOM = 1, & ! request per-atom compute/fix/etc. data + LMP_STYLE_LOCAL = 2, & ! request local compute/fix/etc. data + LMP_TYPE_SCALAR = 0, & ! request scalar + LMP_TYPE_VECTOR = 1, & ! request vector + LMP_TYPE_ARRAY = 2, & ! request array + LMP_SIZE_VECTOR = 3, & ! request size of vector + LMP_SIZE_ROWS = 4, & ! request rows (actually columns) + LMP_SIZE_COLS = 5, & ! request colums (actually rows) + LMP_ERROR_WARNING = 0, & ! call Error::warning() + LMP_ERROR_ONE = 1, & ! call Error::one() (from this MPI rank) + LMP_ERROR_ALL = 2, & ! call Error::all() (from all MPI ranks) + LMP_ERROR_WORLD = 4, & ! error on comm->world + LMP_ERROR_UNIVERSE = 8, & ! error on comm->universe + LMP_VAR_EQUAL = 0, & ! equal-style variables (and compatible) + LMP_VAR_ATOM = 1, & ! atom-style variables + LMP_VAR_VECTOR = 2, & ! vector variables + LMP_VAR_STRING = 3 ! string variables (everything else) + + ! "Constants" to use with extract_compute and friends + TYPE lammps_style + INTEGER(c_int) :: global, atom, local + END TYPE lammps_style + + TYPE lammps_type + INTEGER(c_int) :: scalar, vector, array + END TYPE lammps_type TYPE lammps - TYPE(c_ptr) :: handle - CONTAINS - PROCEDURE :: close => lmp_close - PROCEDURE :: error => lmp_error - PROCEDURE :: file => lmp_file - PROCEDURE :: command => lmp_command - PROCEDURE :: commands_list => lmp_commands_list - PROCEDURE :: commands_string => lmp_commands_string - PROCEDURE :: get_natoms => lmp_get_natoms - PROCEDURE :: get_thermo => lmp_get_thermo - PROCEDURE :: extract_box => lmp_extract_box - PROCEDURE :: reset_box => lmp_reset_box - PROCEDURE :: memory_usage => lmp_memory_usage - PROCEDURE :: get_mpi_comm => lmp_get_mpi_comm - PROCEDURE :: extract_setting => lmp_extract_setting - PROCEDURE :: extract_global => lmp_extract_global - PROCEDURE :: version => lmp_version - PROCEDURE :: is_running => lmp_is_running + TYPE(c_ptr) :: handle = c_null_ptr + TYPE(lammps_style) :: style + TYPE(lammps_type) :: type + CONTAINS + PROCEDURE :: close => lmp_close + PROCEDURE :: error => lmp_error + PROCEDURE :: file => lmp_file + PROCEDURE :: command => lmp_command + PROCEDURE :: commands_list => lmp_commands_list + PROCEDURE :: commands_string => lmp_commands_string + PROCEDURE :: get_natoms => lmp_get_natoms + PROCEDURE :: get_thermo => lmp_get_thermo + PROCEDURE :: extract_box => lmp_extract_box + PROCEDURE :: reset_box => lmp_reset_box + PROCEDURE :: memory_usage => lmp_memory_usage + PROCEDURE :: get_mpi_comm => lmp_get_mpi_comm + PROCEDURE :: extract_setting => lmp_extract_setting + PROCEDURE :: extract_global => lmp_extract_global + PROCEDURE :: extract_atom => lmp_extract_atom + PROCEDURE :: extract_compute => lmp_extract_compute + PROCEDURE :: extract_fix => lmp_extract_fix + PROCEDURE :: extract_variable => lmp_extract_variable + PROCEDURE :: set_variable => lmp_set_variable + PROCEDURE, PRIVATE :: lmp_gather_atoms_int + PROCEDURE, PRIVATE :: lmp_gather_atoms_double + GENERIC :: gather_atoms => lmp_gather_atoms_int, & + lmp_gather_atoms_double + PROCEDURE, PRIVATE :: lmp_gather_atoms_concat_int + PROCEDURE, PRIVATE :: lmp_gather_atoms_concat_double + GENERIC :: gather_atoms_concat => lmp_gather_atoms_concat_int, & + lmp_gather_atoms_concat_double + PROCEDURE, PRIVATE :: lmp_gather_atoms_subset_int + PROCEDURE, PRIVATE :: lmp_gather_atoms_subset_double + GENERIC :: gather_atoms_subset => lmp_gather_atoms_subset_int, & + lmp_gather_atoms_subset_double + PROCEDURE, PRIVATE :: lmp_scatter_atoms_int + PROCEDURE, PRIVATE :: lmp_scatter_atoms_double + GENERIC :: scatter_atoms => lmp_scatter_atoms_int, & + lmp_scatter_atoms_double + PROCEDURE, PRIVATE :: lmp_scatter_atoms_subset_int + PROCEDURE, PRIVATE :: lmp_scatter_atoms_subset_double + GENERIC :: scatter_atoms_subset => lmp_scatter_atoms_subset_int, & + lmp_scatter_atoms_subset_double + PROCEDURE, PRIVATE :: lmp_gather_bonds_small + PROCEDURE, PRIVATE :: lmp_gather_bonds_big + GENERIC :: gather_bonds => lmp_gather_bonds_small, & + lmp_gather_bonds_big +! + PROCEDURE, PRIVATE :: lmp_create_atoms_int + PROCEDURE, PRIVATE :: lmp_create_atoms_bigbig + GENERIC :: create_atoms => lmp_create_atoms_int, & + lmp_create_atoms_bigbig + PROCEDURE :: find_pair_neighlist => lmp_find_pair_neighlist + PROCEDURE :: find_fix_neighlist => lmp_find_fix_neighlist + PROCEDURE :: find_compute_neighlist => lmp_find_compute_neighlist + PROCEDURE :: neighlist_num_elements => lmp_neighlist_num_elements + PROCEDURE :: neighlist_element_neighbors => lmp_neighlist_element_neighbors + PROCEDURE :: version => lmp_version + PROCEDURE, NOPASS :: get_os_info => lmp_get_os_info + PROCEDURE, NOPASS :: config_has_mpi_support => lmp_config_has_mpi_support + PROCEDURE, NOPASS :: config_has_gzip_support => lmp_config_has_gzip_support + PROCEDURE, NOPASS :: config_has_png_support => lmp_config_has_png_support + PROCEDURE, NOPASS :: config_has_jpeg_support => lmp_config_has_jpeg_support + PROCEDURE, NOPASS :: config_has_ffmpeg_support & + => lmp_config_has_ffmpeg_support + PROCEDURE, NOPASS :: config_has_exceptions => lmp_config_has_exceptions + PROCEDURE, NOPASS :: config_has_package => lmp_config_has_package + PROCEDURE, NOPASS :: config_package_count => lammps_config_package_count + PROCEDURE :: config_package_name => lmp_config_package_name + PROCEDURE :: installed_packages => lmp_installed_packages + PROCEDURE, NOPASS :: config_accelerator => lmp_config_accelerator + PROCEDURE, NOPASS :: has_gpu_device => lmp_has_gpu_device + PROCEDURE, NOPASS :: get_gpu_device_info => lmp_get_gpu_device_info + PROCEDURE :: has_style => lmp_has_style + PROCEDURE :: style_count => lmp_style_count + PROCEDURE :: style_name => lmp_style_name + PROCEDURE :: has_id => lmp_has_id + PROCEDURE :: id_count => lmp_id_count + PROCEDURE :: id_name => lmp_id_name + PROCEDURE, NOPASS :: plugin_count => lammps_plugin_count + PROCEDURE :: plugin_name => lmp_plugin_name + PROCEDURE :: encode_image_flags => lmp_encode_image_flags + PROCEDURE, PRIVATE :: lmp_decode_image_flags + PROCEDURE, PRIVATE :: lmp_decode_image_flags_bigbig + GENERIC :: decode_image_flags => lmp_decode_image_flags, & + lmp_decode_image_flags_bigbig +! + PROCEDURE :: flush_buffers => lmp_flush_buffers + PROCEDURE :: is_running => lmp_is_running + PROCEDURE :: force_timeout => lmp_force_timeout + PROCEDURE :: has_error => lmp_has_error + PROCEDURE :: get_last_error_message => lmp_get_last_error_message END TYPE lammps INTERFACE lammps @@ -85,30 +191,74 @@ MODULE LIBLAMMPS ENUMERATOR :: DATA_STRING END ENUM + ! Base class for receiving LAMMPS data (to reduce code duplication) + TYPE lammps_data_baseclass + INTEGER(c_int) :: datatype = -1_c_int + ! in case we need to call the Error class in an assignment + CLASS(lammps), POINTER, PRIVATE :: lammps_instance => NULL() + END TYPE lammps_data_baseclass + ! Derived type for receiving LAMMPS data (in lieu of the ability to type cast - ! pointers) - TYPE lammps_data - INTEGER(c_int) :: datatype - INTEGER(c_int), POINTER :: i32 - INTEGER(c_int), DIMENSION(:), POINTER :: i32_vec - INTEGER(c_int64_t), POINTER :: i64 - INTEGER(c_int64_t), DIMENSION(:), POINTER :: i64_vec - REAL(c_double), POINTER :: r64 - REAL(c_double), DIMENSION(:), POINTER :: r64_vec + ! pointers). Used for extract_compute, extract_atom + TYPE, EXTENDS(lammps_data_baseclass) :: lammps_data + INTEGER(c_int), POINTER :: i32 => NULL() + INTEGER(c_int), DIMENSION(:), POINTER :: i32_vec => NULL() + INTEGER(c_int64_t), POINTER :: i64 => NULL() + INTEGER(c_int64_t), DIMENSION(:), POINTER :: i64_vec => NULL() + REAL(c_double), POINTER :: r64 => NULL() + REAL(c_double), DIMENSION(:), POINTER :: r64_vec => NULL() + REAL(c_double), DIMENSION(:,:), POINTER :: r64_mat => NULL() CHARACTER(LEN=:), ALLOCATABLE :: str END TYPE lammps_data + ! Derived type for holding LAMMPS fix data + ! Done this way because fix global data are not pointers, but computed + ! on-the-fly, whereas per-atom and local data are pointers to the actual + ! array. Doing it this way saves the user from having to explicitly + ! deallocate all of the pointers. + TYPE, EXTENDS(lammps_data_baseclass) :: lammps_fix_data + REAL(c_double) :: r64 + REAL(c_double), DIMENSION(:), POINTER :: r64_vec => NULL() + REAL(c_double), DIMENSION(:,:), POINTER :: r64_mat => NULL() + END TYPE lammps_fix_data + + ! Derived type for holding LAMMPS variable data + ! Done this way because extract_variable calculates variable values, it does + ! not return pointers to LAMMPS data. + TYPE, EXTENDS(lammps_data_baseclass) :: lammps_variable_data + REAL(c_double) :: r64 + REAL(c_double), DIMENSION(:), ALLOCATABLE :: r64_vec + CHARACTER(LEN=:), ALLOCATABLE :: str + END TYPE lammps_variable_data + + TYPE, EXTENDS(lammps_data_baseclass) :: lammps_image_data + INTEGER(c_int) :: i32 + INTEGER(c_int64_t) :: i64 + END TYPE lammps_image_data + ! This overloads the assignment operator (=) so that assignments of the ! form ! nlocal = extract_global('nlocal') ! which are of the form "pointer to double = type(lammps_data)" result in ! re-associating the pointer on the left with the appropriate piece of - ! LAMMPS data (after checking type-compatibility) + ! LAMMPS data (after checking type-kind-rank compatibility) INTERFACE ASSIGNMENT(=) MODULE PROCEDURE assign_int_to_lammps_data, assign_int64_to_lammps_data, & - assign_intvec_to_lammps_data, & + assign_intvec_to_lammps_data, assign_int64vec_to_lammps_data, & assign_double_to_lammps_data, assign_doublevec_to_lammps_data, & + assign_doublemat_to_lammps_data, & assign_string_to_lammps_data + ! We handle fix data (slightly) differently + MODULE PROCEDURE assign_double_to_lammps_fix_data, & + assign_doublevec_to_lammps_fix_data, & + assign_doublemat_to_lammps_fix_data + ! Variables, too + MODULE PROCEDURE assign_double_to_lammps_variable_data, & + assign_doublevec_to_lammps_variable_data, & + assign_string_to_lammps_variable_data + ! Image data, too + MODULE PROCEDURE assign_int_to_lammps_image_data, & + assign_int64_to_lammps_image_data END INTERFACE ! interface definitions for calling functions in library.cpp @@ -163,29 +313,29 @@ MODULE LIBLAMMPS SUBROUTINE lammps_command(handle, cmd) BIND(C) IMPORT :: c_ptr IMPLICIT NONE - TYPE(c_ptr), VALUE :: handle - TYPE(c_ptr), VALUE :: cmd + TYPE(c_ptr), INTENT(IN), VALUE :: handle + TYPE(c_ptr), INTENT(IN), VALUE :: cmd END SUBROUTINE lammps_command SUBROUTINE lammps_commands_list(handle, ncmd, cmds) BIND(C) IMPORT :: c_ptr, c_int IMPLICIT NONE - TYPE(c_ptr), VALUE :: handle - INTEGER(c_int), VALUE, INTENT(IN) :: ncmd + TYPE(c_ptr), INTENT(IN), VALUE :: handle + INTEGER(c_int), INTENT(IN), VALUE :: ncmd TYPE(c_ptr), DIMENSION(*), INTENT(IN) :: cmds END SUBROUTINE lammps_commands_list SUBROUTINE lammps_commands_string(handle, str) BIND(C) IMPORT :: c_ptr IMPLICIT NONE - TYPE(c_ptr), VALUE :: handle - TYPE(c_ptr), VALUE :: str + TYPE(c_ptr), INTENT(IN), VALUE :: handle + TYPE(c_ptr), INTENT(IN), VALUE :: str END SUBROUTINE lammps_commands_string FUNCTION lammps_get_natoms(handle) BIND(C) IMPORT :: c_ptr, c_double IMPLICIT NONE - TYPE(c_ptr), VALUE :: handle + TYPE(c_ptr), INTENT(IN), VALUE :: handle REAL(c_double) :: lammps_get_natoms END FUNCTION lammps_get_natoms @@ -193,91 +343,155 @@ MODULE LIBLAMMPS IMPORT :: c_ptr, c_double IMPLICIT NONE REAL(c_double) :: lammps_get_thermo - TYPE(c_ptr), VALUE :: handle - TYPE(c_ptr), VALUE :: name + TYPE(c_ptr), INTENT(IN), VALUE :: handle + TYPE(c_ptr), INTENT(IN), VALUE :: name END FUNCTION lammps_get_thermo SUBROUTINE lammps_extract_box(handle,boxlo,boxhi,xy,yz,xz,pflags, & boxflag) BIND(C) IMPORT :: c_ptr, c_double, c_int IMPLICIT NONE - TYPE(c_ptr), VALUE :: handle, boxlo, boxhi, xy, yz, xz, pflags, & - boxflag + TYPE(c_ptr), INTENT(IN), VALUE :: handle, boxlo, boxhi, xy, yz, xz, & + pflags, boxflag END SUBROUTINE lammps_extract_box SUBROUTINE lammps_reset_box(handle,boxlo,boxhi,xy,yz,xz) BIND(C) IMPORT :: c_ptr, c_double IMPLICIT NONE - TYPE(c_ptr), VALUE :: handle - REAL(c_double), DIMENSION(3) :: boxlo, boxhi - REAL(c_double), VALUE :: xy, yz, xz + TYPE(c_ptr), INTENT(IN), VALUE :: handle + REAL(c_double), DIMENSION(3), INTENT(IN) :: boxlo, boxhi + REAL(c_double), INTENT(IN), VALUE :: xy, yz, xz END SUBROUTINE lammps_reset_box SUBROUTINE lammps_memory_usage(handle,meminfo) BIND(C) IMPORT :: c_ptr, c_double IMPLICIT NONE - TYPE(c_ptr), VALUE :: handle - REAL(c_double), DIMENSION(*) :: meminfo + TYPE(c_ptr), INTENT(IN), VALUE :: handle + REAL(c_double), DIMENSION(*), INTENT(OUT) :: meminfo END SUBROUTINE lammps_memory_usage FUNCTION lammps_get_mpi_comm(handle) BIND(C) IMPORT :: c_ptr, c_int IMPLICIT NONE - TYPE(c_ptr), VALUE :: handle + TYPE(c_ptr), INTENT(IN), VALUE :: handle INTEGER(c_int) :: lammps_get_mpi_comm END FUNCTION lammps_get_mpi_comm FUNCTION lammps_extract_setting(handle,keyword) BIND(C) IMPORT :: c_ptr, c_int IMPLICIT NONE - TYPE(c_ptr), VALUE :: handle, keyword + TYPE(c_ptr), INTENT(IN), VALUE :: handle, keyword INTEGER(c_int) :: lammps_extract_setting END FUNCTION lammps_extract_setting FUNCTION lammps_extract_global_datatype(handle,name) BIND(C) IMPORT :: c_ptr, c_int IMPLICIT NONE - TYPE(c_ptr), VALUE :: handle, name + TYPE(c_ptr), INTENT(IN), VALUE :: handle, name INTEGER(c_int) :: lammps_extract_global_datatype END FUNCTION lammps_extract_global_datatype - FUNCTION c_strlen (str) BIND(C,name='strlen') - IMPORT :: c_ptr, c_size_t - IMPLICIT NONE - TYPE(c_ptr), VALUE :: str - INTEGER(c_size_t) :: c_strlen - END FUNCTION c_strlen - FUNCTION lammps_extract_global(handle, name) BIND(C) IMPORT :: c_ptr IMPLICIT NONE - TYPE(c_ptr), VALUE :: handle, name + TYPE(c_ptr), INTENT(IN), VALUE :: handle, name TYPE(c_ptr) :: lammps_extract_global END FUNCTION lammps_extract_global - !INTEGER (c_int) FUNCTION lammps_extract_atom_datatype + FUNCTION lammps_extract_atom_datatype(handle, name) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), INTENT(IN), VALUE :: handle, name + INTEGER(c_int) :: lammps_extract_atom_datatype + END FUNCTION lammps_extract_atom_datatype - !(generic) lammps_extract_atom + FUNCTION lammps_extract_atom(handle, name) BIND(C) + IMPORT :: c_ptr + IMPLICIT NONE + TYPE(c_ptr), INTENT(IN), VALUE :: handle, name + TYPE(c_ptr) :: lammps_extract_atom + END FUNCTION lammps_extract_atom - !(generic) lammps_extract_compute + FUNCTION lammps_extract_compute(handle, id, style, type) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), INTENT(IN), VALUE :: handle, id + INTEGER(c_int), INTENT(IN), VALUE :: style, type + TYPE(c_ptr) :: lammps_extract_compute + END FUNCTION lammps_extract_compute - !(generic) lammps_extract_fix + FUNCTION lammps_extract_fix(handle, id, style, type, nrow, ncol) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), INTENT(IN), VALUE :: handle, id + INTEGER(c_int), INTENT(IN), VALUE :: style, type, nrow, ncol + TYPE(c_ptr) :: lammps_extract_fix + END FUNCTION lammps_extract_fix - !(generic) lammps_extract_variable + FUNCTION lammps_extract_variable_datatype(handle,name) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), INTENT(IN), VALUE :: handle, name + INTEGER(c_int) :: lammps_extract_variable_datatype + END FUNCTION lammps_extract_variable_datatype - !INTEGER (c_int) lammps_set_variable + FUNCTION lammps_extract_variable(handle, name, group) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), INTENT(IN), VALUE :: handle, name, group + TYPE(c_ptr) :: lammps_extract_variable + END FUNCTION lammps_extract_variable - !SUBROUTINE lammps_gather_atoms + FUNCTION lammps_set_variable(handle, name, str) BIND(C) + IMPORT :: c_int, c_ptr + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, name, str + INTEGER(c_int) :: lammps_set_variable + END FUNCTION lammps_set_variable - !SUBROUTINE lammps_gather_atoms_concat + SUBROUTINE lammps_gather_atoms(handle, name, type, count, data) BIND(C) + IMPORT :: c_int, c_ptr + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, name, data + INTEGER(c_int), VALUE :: type, count + END SUBROUTINE lammps_gather_atoms - !SUBROUTINE lammps_gather_atoms_subset + SUBROUTINE lammps_gather_atoms_concat(handle, name, type, count, data) & + BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, name, data + INTEGER(c_int), VALUE :: type, count + END SUBROUTINE lammps_gather_atoms_concat - !SUBROUTINE lammps_scatter_atoms + SUBROUTINE lammps_gather_atoms_subset(handle, name, type, count, ndata, & + ids, data) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, name, ids, data + INTEGER(c_int), VALUE :: type, count, ndata + END SUBROUTINE lammps_gather_atoms_subset - !SUBROUTINE lammps_scatter_atoms_subset + SUBROUTINE lammps_scatter_atoms(handle, name, type, count, data) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, name, data + INTEGER(c_int), VALUE :: type, count + END SUBROUTINE lammps_scatter_atoms - !SUBROUTINE lammps_gather_bonds + SUBROUTINE lammps_scatter_atoms_subset(handle, name, type, count, & + ndata, ids, data) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, name, ids, data + INTEGER(c_int), VALUE :: count, ndata, type + END SUBROUTINE lammps_scatter_atoms_subset + + SUBROUTINE lammps_gather_bonds(handle, data) BIND(C) + IMPORT :: c_ptr + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, data + END SUBROUTINE lammps_gather_bonds !SUBROUTINE lammps_gather @@ -287,18 +501,55 @@ MODULE LIBLAMMPS !SUBROUTINE lammps_scatter_subset - !(generic / id, type, and image are special) / requires LAMMPS_BIGBIG - !INTEGER (C_int) FUNCTION lammps_create_atoms + FUNCTION lammps_create_atoms(handle, n, id, type, x, v, image, bexpand) & + BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, id, type, x, v, image + INTEGER(c_int), VALUE :: n, bexpand + INTEGER(c_int) :: lammps_create_atoms + END FUNCTION lammps_create_atoms - !INTEGER (C_int) FUNCTION lammps_find_pair_neighlist + FUNCTION lammps_find_pair_neighlist(handle, style, exact, nsub, reqid) & + BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, style + INTEGER(c_int), VALUE :: exact, nsub, reqid + INTEGER(c_int) :: lammps_find_pair_neighlist + END FUNCTION lammps_find_pair_neighlist - !INTEGER (C_int) FUNCTION lammps_find_fix_neighlist + FUNCTION lammps_find_fix_neighlist(handle, id, reqid) BIND(C) + IMPORT :: c_int, c_ptr + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, id + INTEGER(c_int), VALUE :: reqid + INTEGER(c_int) :: lammps_find_fix_neighlist + END FUNCTION lammps_find_fix_neighlist - !INTEGER (C_int) FUNCTION lammps_find_compute_neighlist + FUNCTION lammps_find_compute_neighlist(handle, id, reqid) BIND(C) + IMPORT :: c_int, c_ptr + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, id + INTEGER(c_int), VALUE :: reqid + INTEGER(c_int) :: lammps_find_compute_neighlist + END FUNCTION lammps_find_compute_neighlist - !INTEGER (C_int) FUNCTION lammps_neighlist_num_elements + FUNCTION lammps_neighlist_num_elements(handle, idx) BIND(C) + IMPORT :: c_ptr, c_int + TYPE(c_ptr), VALUE :: handle + INTEGER(c_int), VALUE :: idx + INTEGER(c_int) :: lammps_neighlist_num_elements + END FUNCTION lammps_neighlist_num_elements - !SUBROUTINE lammps_neighlist_element_neighbors + SUBROUTINE lammps_neighlist_element_neighbors(handle, idx, element, & + iatom, numneigh, neighbors) BIND(C) + IMPORT :: c_ptr, c_int + TYPE(c_ptr), VALUE :: handle + INTEGER(c_int), VALUE :: idx, element + INTEGER(c_int) :: iatom, numneigh + TYPE(c_ptr) :: neighbors + END SUBROUTINE lammps_neighlist_element_neighbors FUNCTION lammps_version(handle) BIND(C) IMPORT :: c_ptr, c_int @@ -307,35 +558,155 @@ MODULE LIBLAMMPS INTEGER(c_int) :: lammps_version END FUNCTION lammps_version - !SUBROUTINE lammps_get_os_info + SUBROUTINE lammps_get_os_info(buffer, buf_size) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: buffer + INTEGER(c_int), VALUE :: buf_size + END SUBROUTINE lammps_get_os_info - !LOGICAL FUNCTION lammps_config_has_mpi_support - !LOGICAL FUNCTION lammps_config_has_gzip_support - !LOGICAL FUNCTION lammps_config_has_png_support - !LOGICAL FUNCTION lammps_config_has_jpeg_support - !LOGICAL FUNCTION lammps_config_has_ffmpeg_support - !LOGICAL FUNCTION lammps_config_has_exceptions - !LOGICAL FUNCTION lammps_config_has_package - !INTEGER (C_int) FUNCTION lammps_config_package_count - !SUBROUTINE lammps_config_package_name + FUNCTION lammps_config_has_mpi_support() BIND(C) + IMPORT :: c_int + IMPLICIT NONE + INTEGER(c_int) :: lammps_config_has_mpi_support + END FUNCTION lammps_config_has_mpi_support - !LOGICAL FUNCTION lammps_config_accelerator - !LOGICAL FUNCTION lammps_has_gpu_device - !SUBROUTINE lammps_get_gpu_device + FUNCTION lammps_config_has_gzip_support() BIND(C) + IMPORT :: c_int + IMPLICIT NONE + INTEGER(c_int) :: lammps_config_has_gzip_support + END FUNCTION lammps_config_has_gzip_support - !LOGICAL FUNCTION lammps_has_id - !INTEGER (C_int) FUNCTION lammps_id_count - !SUBROUTINE lammps_id_name + FUNCTION lammps_config_has_png_support() BIND(C) + IMPORT :: c_int + IMPLICIT NONE + INTEGER(c_int) :: lammps_config_has_png_support + END FUNCTION lammps_config_has_png_support - !INTEGER (C_int) FUNCTION lammps_plugin_count - !SUBROUTINE lammps_plugin_name + FUNCTION lammps_config_has_jpeg_support() BIND(C) + IMPORT :: c_int + IMPLICIT NONE + INTEGER(c_int) :: lammps_config_has_jpeg_support + END FUNCTION lammps_config_has_jpeg_support - !Both of these use LAMMPS_BIGBIG - !INTEGER (LAMMPS_imageint) FUNCTION lammps_encode_image_flags - !SUBROUTINE lammps_decode_image_flags + FUNCTION lammps_config_has_ffmpeg_support() BIND(C) + IMPORT :: c_int + IMPLICIT NONE + INTEGER(c_int) :: lammps_config_has_ffmpeg_support + END FUNCTION lammps_config_has_ffmpeg_support + + FUNCTION lammps_config_has_exceptions() BIND(C) + IMPORT :: c_int + IMPLICIT NONE + INTEGER(c_int) :: lammps_config_has_exceptions + END FUNCTION lammps_config_has_exceptions + + FUNCTION lammps_config_has_package(name) BIND(C) + IMPORT :: c_int, c_ptr + IMPLICIT NONE + TYPE(c_ptr), VALUE :: name + INTEGER(c_int) :: lammps_config_has_package + END FUNCTION lammps_config_has_package + + FUNCTION lammps_config_package_count() BIND(C) + IMPORT :: c_int + IMPLICIT NONE + INTEGER(c_int) :: lammps_config_package_count + END FUNCTION lammps_config_package_count + + FUNCTION lammps_config_package_name(idx, buffer, buf_size) BIND(C) + IMPORT :: c_int, c_ptr + IMPLICIT NONE + INTEGER(c_int) :: lammps_config_package_name + INTEGER(c_int), VALUE :: idx, buf_size + TYPE(c_ptr), VALUE :: buffer + END FUNCTION lammps_config_package_name + + FUNCTION lammps_config_accelerator(package, category, setting) BIND(C) + IMPORT :: c_int, c_ptr + IMPLICIT NONE + TYPE(c_ptr), VALUE :: package, category, setting + INTEGER(c_int) :: lammps_config_accelerator + END FUNCTION lammps_config_accelerator + + FUNCTION lammps_has_gpu_device() BIND(C) + IMPORT :: c_int + IMPLICIT NONE + INTEGER(c_int) :: lammps_has_gpu_device + END FUNCTION lammps_has_gpu_device + + SUBROUTINE lammps_get_gpu_device_info(buffer, buf_size) BIND(C) + IMPORT :: c_int, c_ptr + IMPLICIT NONE + TYPE(c_ptr), VALUE :: buffer + INTEGER(c_int), VALUE :: buf_size + END SUBROUTINE lammps_get_gpu_device_info + + FUNCTION lammps_has_style(handle, category, name) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, category, name + INTEGER(c_int) :: lammps_has_style + END FUNCTION lammps_has_style + + FUNCTION lammps_style_count(handle, category) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, category + INTEGER(c_int) :: lammps_style_count + END FUNCTION lammps_style_count + + FUNCTION lammps_style_name(handle, category, idx, buffer, buf_size) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, category, buffer + INTEGER(c_int), VALUE :: idx, buf_size + INTEGER(c_int) :: lammps_style_name + END FUNCTION lammps_style_name + + FUNCTION lammps_has_id(handle, category, name) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, category, name + INTEGER(c_int) :: lammps_has_id + END FUNCTION lammps_has_id + + FUNCTION lammps_id_count(handle, category) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, category + INTEGER(c_int) :: lammps_id_count + END FUNCTION lammps_id_count + + FUNCTION lammps_id_name(handle, category, idx, buffer, buf_size) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, category, buffer + INTEGER(c_int), VALUE :: idx, buf_size + INTEGER(c_int) :: lammps_id_name + END FUNCTION lammps_id_name + + FUNCTION lammps_plugin_count() BIND(C) + IMPORT :: c_int + IMPLICIT NONE + INTEGER(c_int) :: lammps_plugin_count + END FUNCTION lammps_plugin_count + + FUNCTION lammps_plugin_name(idx, stylebuf, namebuf, buf_size) BIND(C) + IMPORT :: c_int, c_ptr + IMPLICIT NONE + INTEGER(c_int), VALUE :: idx, buf_size + TYPE(c_ptr), VALUE :: stylebuf, namebuf + INTEGER(c_int) :: lammps_plugin_name + END FUNCTION lammps_plugin_name + + ! We don't call lammps_encode_image_flags because its interface is + ! ambiguous: we don't know sizeof(imageint) prior to compile time. + ! It is re-written in Fortran below. It was easier to do the same for + ! lammps_decode_image_flags's equivalent. !SUBROUTINE lammps_set_fix_external_callback ! may have trouble.... - !FUNCTION lammps_fix_external_get_force() ! returns real(c_double) (:) + !FUNCTION lammps_fix_external_get_force() ! returns real(c_double)(:) !SUBROUTINE lammps_fix_external_set_energy_global !SUBROUTINE lammps_fix_external_set_energy_peratom @@ -344,14 +715,11 @@ MODULE LIBLAMMPS !SUBROUTINE lammps_fix_external_set_vector_length !SUBROUTINE lammps_fix_external_set_vector - !SUBROUTINE lammps_flush_buffers - - FUNCTION lammps_malloc(size) BIND(C, name='malloc') - IMPORT :: c_ptr, c_size_t + SUBROUTINE lammps_flush_buffers(handle) BIND(C) + IMPORT :: c_ptr IMPLICIT NONE - INTEGER(c_size_t), VALUE :: size - TYPE(c_ptr) :: lammps_malloc - END FUNCTION lammps_malloc + TYPE(c_ptr), VALUE :: handle + END SUBROUTINE lammps_flush_buffers SUBROUTINE lammps_free(ptr) BIND(C) IMPORT :: c_ptr @@ -365,11 +733,42 @@ MODULE LIBLAMMPS TYPE(c_ptr), VALUE :: handle END FUNCTION lammps_is_running - !SUBROUTINE lammps_force_timeout + SUBROUTINE lammps_force_timeout(handle) BIND(C) + IMPORT :: c_ptr + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle + END SUBROUTINE lammps_force_timeout - !LOGICAL FUNCTION lammps_has_error + INTEGER(c_int) FUNCTION lammps_has_error(handle) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle + END FUNCTION lammps_has_error - !INTEGER (c_int) FUNCTION lammps_get_last_error_message + INTEGER(c_int) FUNCTION lammps_get_last_error_message & + (handle, buffer, buf_size) BIND(C) + IMPORT :: c_ptr, c_int, c_char + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, buffer + INTEGER(c_int), VALUE :: buf_size + END FUNCTION lammps_get_last_error_message + + !--------------------------------------------------------------------- + ! Utility functions imported for convenience (not in library.h) + !--------------------------------------------------------------------- + FUNCTION lammps_malloc(size) BIND(C, name='malloc') + IMPORT :: c_ptr, c_size_t + IMPLICIT NONE + INTEGER(c_size_t), VALUE :: size + TYPE(c_ptr) :: lammps_malloc + END FUNCTION lammps_malloc + + FUNCTION c_strlen(str) BIND(C, name='strlen') + IMPORT :: c_ptr, c_size_t + IMPLICIT NONE + TYPE(c_ptr), INTENT(IN), VALUE :: str + INTEGER(c_size_t) :: c_strlen + END FUNCTION c_strlen END INTERFACE @@ -409,11 +808,19 @@ CONTAINS CALL lammps_free(argv(i)) END DO DEALLOCATE(argv) + + ! Assign style and type members so lmp_open%style%global and such work + lmp_open%style%global = LMP_STYLE_GLOBAL + lmp_open%style%atom = LMP_STYLE_ATOM + lmp_open%style%local = LMP_STYLE_LOCAL + lmp_open%type%scalar = LMP_TYPE_SCALAR + lmp_open%type%vector = LMP_TYPE_VECTOR + lmp_open%type%array = LMP_TYPE_ARRAY END FUNCTION lmp_open ! Combined Fortran wrapper around lammps_close() and lammps_mpi_finalize() SUBROUTINE lmp_close(self, finalize) - CLASS(lammps) :: self + CLASS(lammps), INTENT(IN) :: self LOGICAL, INTENT(IN), OPTIONAL :: finalize CALL lammps_close(self%handle) @@ -429,7 +836,7 @@ CONTAINS ! equivalent function to lammps_error() SUBROUTINE lmp_error(self, error_type, error_text) CLASS(lammps) :: self - INTEGER :: error_type + INTEGER(c_int) :: error_type CHARACTER(len=*) :: error_text TYPE(c_ptr) :: str @@ -440,7 +847,7 @@ CONTAINS ! equivalent function to lammps_file() SUBROUTINE lmp_file(self, filename) - CLASS(lammps) :: self + CLASS(lammps), INTENT(IN) :: self CHARACTER(len=*) :: filename TYPE(c_ptr) :: str @@ -451,7 +858,7 @@ CONTAINS ! equivalent function to lammps_command() SUBROUTINE lmp_command(self, cmd) - CLASS(lammps) :: self + CLASS(lammps), INTENT(IN) :: self CHARACTER(len=*) :: cmd TYPE(c_ptr) :: str @@ -462,7 +869,7 @@ CONTAINS ! equivalent function to lammps_commands_list() SUBROUTINE lmp_commands_list(self, cmds) - CLASS(lammps) :: self + CLASS(lammps), INTENT(IN) :: self CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: cmds(:) TYPE(c_ptr), ALLOCATABLE :: cmdv(:) INTEGER :: i, ncmd @@ -485,7 +892,7 @@ CONTAINS ! equivalent function to lammps_commands_string() SUBROUTINE lmp_commands_string(self, str) - CLASS(lammps) :: self + CLASS(lammps), INTENT(IN) :: self CHARACTER(len=*) :: str TYPE(c_ptr) :: tmp @@ -495,17 +902,17 @@ CONTAINS END SUBROUTINE lmp_commands_string ! equivalent function to lammps_get_natoms - DOUBLE PRECISION FUNCTION lmp_get_natoms(self) + REAL(c_double) FUNCTION lmp_get_natoms(self) CLASS(lammps) :: self lmp_get_natoms = lammps_get_natoms(self%handle) END FUNCTION lmp_get_natoms ! equivalent function to lammps_get_thermo - REAL (C_double) FUNCTION lmp_get_thermo(self,name) + REAL(c_double) FUNCTION lmp_get_thermo(self,name) CLASS(lammps), INTENT(IN) :: self CHARACTER(LEN=*) :: name - TYPE(C_ptr) :: Cname + TYPE(c_ptr) :: Cname Cname = f2c_string(name) lmp_get_thermo = lammps_get_thermo(self%handle, Cname) @@ -518,27 +925,27 @@ CONTAINS REAL(c_double), INTENT(OUT), TARGET, OPTIONAL :: boxlo(3), boxhi(3) REAL(c_double), INTENT(OUT), TARGET, OPTIONAL :: xy, yz, xz LOGICAL, INTENT(OUT), OPTIONAL :: pflags(3), boxflag - INTEGER(c_int), TARGET :: C_pflags(3), C_boxflag - TYPE (c_ptr) :: ptr(7) + INTEGER(c_int), TARGET :: c_pflags(3), c_boxflag + TYPE(c_ptr) :: ptr(7) ptr = c_null_ptr - IF ( PRESENT(boxlo) ) ptr(1) = C_LOC(boxlo(1)) - IF ( PRESENT(boxhi) ) ptr(2) = C_LOC(boxhi(1)) - IF ( PRESENT(xy) ) ptr(3) = C_LOC(xy) - IF ( PRESENT(yz) ) ptr(4) = C_LOC(yz) - IF ( PRESENT(xz) ) ptr(5) = C_LOC(xz) - IF ( PRESENT(pflags) ) ptr(6) = C_LOC(C_pflags(1)) - IF ( PRESENT(boxflag) ) ptr(7) = C_LOC(C_boxflag) + IF (PRESENT(boxlo)) ptr(1) = C_LOC(boxlo(1)) + IF (PRESENT(boxhi)) ptr(2) = C_LOC(boxhi(1)) + IF (PRESENT(xy)) ptr(3) = C_LOC(xy) + IF (PRESENT(yz)) ptr(4) = C_LOC(yz) + IF (PRESENT(xz)) ptr(5) = C_LOC(xz) + IF (PRESENT(pflags)) ptr(6) = C_LOC(c_pflags(1)) + IF (PRESENT(boxflag)) ptr(7) = C_LOC(c_boxflag) CALL lammps_extract_box(self%handle, ptr(1), ptr(2), ptr(3), ptr(4), & ptr(5), ptr(6), ptr(7)) - IF ( PRESENT(pflags) ) pflags = ( C_pflags /= 0_C_int ) - IF ( PRESENT(boxflag) ) boxflag = ( C_boxflag /= 0_C_int ) + IF (PRESENT(pflags)) pflags = (c_pflags /= 0_c_int) + IF (PRESENT(boxflag)) boxflag = (c_boxflag /= 0_c_int) END SUBROUTINE lmp_extract_box ! equivalent function to lammps_reset_box SUBROUTINE lmp_reset_box(self, boxlo, boxhi, xy, yz, xz) CLASS(lammps), INTENT(IN) :: self - REAL(C_double), INTENT(IN) :: boxlo(3), boxhi(3), xy, yz, xz + REAL(c_double), INTENT(IN) :: boxlo(3), boxhi(3), xy, yz, xz CALL lammps_reset_box(self%handle, boxlo, boxhi, xy, yz, xz) END SUBROUTINE lmp_reset_box @@ -547,7 +954,7 @@ CONTAINS SUBROUTINE lmp_memory_usage(self,meminfo) CLASS(lammps), INTENT(IN) :: self INTEGER, PARAMETER :: MEMINFO_ELEM = 3 - REAL (c_double), DIMENSION(MEMINFO_ELEM), INTENT(OUT) :: meminfo + REAL(c_double), DIMENSION(MEMINFO_ELEM), INTENT(OUT) :: meminfo CALL lammps_memory_usage(self%handle,meminfo) END SUBROUTINE lmp_memory_usage @@ -560,7 +967,7 @@ CONTAINS END FUNCTION lmp_get_mpi_comm ! equivalent function to lammps_extract_setting - INTEGER (c_int) FUNCTION lmp_extract_setting(self, keyword) + INTEGER(c_int) FUNCTION lmp_extract_setting(self, keyword) CLASS(lammps), INTENT(IN) :: self CHARACTER(LEN=*), INTENT(IN) :: keyword TYPE(c_ptr) :: Ckeyword @@ -573,15 +980,13 @@ CONTAINS ! equivalent function to lammps_extract_global ! the assignment is actually overloaded so as to bind the pointers to ! lammps data based on the information available from LAMMPS - FUNCTION lmp_extract_global(self, name) RESULT (global_data) - CLASS(lammps), INTENT(IN) :: self + FUNCTION lmp_extract_global(self, name) RESULT(global_data) + CLASS(lammps), INTENT(IN), TARGET :: self CHARACTER(LEN=*), INTENT(IN) :: name TYPE(lammps_data) :: global_data - INTEGER(c_int) :: datatype TYPE(c_ptr) :: Cname, Cptr - INTEGER(c_size_t) :: length, i - CHARACTER(KIND=c_char, LEN=1), DIMENSION(:), POINTER :: Fptr + INTEGER(c_size_t) :: length ! Determine vector length ! FIXME Is there a way to get the length of the vector from C rather @@ -592,7 +997,7 @@ CONTAINS length = 3 CASE DEFAULT length = 1 - ! string cases are overridden later + ! string cases doesn't use "length" END SELECT Cname = f2c_string(name) @@ -601,9 +1006,10 @@ CONTAINS Cptr = lammps_extract_global(self%handle, Cname) CALL lammps_free(Cname) + global_data%lammps_instance => self SELECT CASE (datatype) CASE (LAMMPS_INT) - IF ( length == 1 ) THEN + IF (length == 1) THEN global_data%datatype = DATA_INT CALL C_F_POINTER(Cptr, global_data%i32) ELSE @@ -611,7 +1017,7 @@ CONTAINS CALL C_F_POINTER(Cptr, global_data%i32_vec, [length]) END IF CASE (LAMMPS_INT64) - IF ( length == 1 ) THEN + IF (length == 1) THEN global_data%datatype = DATA_INT64 CALL C_F_POINTER(Cptr, global_data%i64) ELSE @@ -619,7 +1025,7 @@ CONTAINS CALL C_F_POINTER(Cptr, global_data%i64_vec, [length]) END IF CASE (LAMMPS_DOUBLE) - IF ( length == 1 ) THEN + IF (length == 1) THEN global_data%datatype = DATA_DOUBLE CALL C_F_POINTER(Cptr, global_data%r64) ELSE @@ -628,131 +1034,1584 @@ CONTAINS END IF CASE (LAMMPS_STRING) global_data%datatype = DATA_STRING - length = c_strlen(Cptr) - CALL C_F_POINTER(Cptr, Fptr, [length]) - ALLOCATE ( CHARACTER(LEN=length) :: global_data%str ) - FORALL ( I=1:length ) - global_data%str(i:i) = Fptr(i) - END FORALL - CASE DEFAULT - ! FIXME convert to use symbolic constants later - CALL lmp_error(self, 6, 'Unknown pointer type in extract_global') + global_data%str = c2f_string(Cptr) + CASE DEFAULT + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'Unknown pointer type in extract_global') END SELECT END FUNCTION - ! equivalent function to lammps_version() + ! equivalent function to lammps_extract_atom + ! the assignment is actually overloaded so as to bind the pointers to + ! lammps data based on the information available from LAMMPS + FUNCTION lmp_extract_atom(self, name) RESULT(peratom_data) + CLASS(lammps), INTENT(IN), TARGET :: self + CHARACTER(LEN=*), INTENT(IN) :: name + TYPE(lammps_data) :: peratom_data + + INTEGER(c_int) :: datatype + TYPE(c_ptr) :: Cname, Cptr + INTEGER(c_int) :: ntypes, nmax + INTEGER :: nrows, ncols + REAL(c_double), DIMENSION(:), POINTER :: dummy + TYPE(c_ptr), DIMENSION(:), POINTER :: Catomptr + CHARACTER(LEN=:), ALLOCATABLE :: error_msg + + nmax = lmp_extract_setting(self, 'nmax') + ntypes = lmp_extract_setting(self, 'ntypes') + Cname = f2c_string(name) + datatype = lammps_extract_atom_datatype(self%handle, Cname) + Cptr = lammps_extract_atom(self%handle, Cname) + CALL lammps_free(Cname) + + SELECT CASE (name) + CASE ('mass') + ncols = ntypes + 1 + nrows = 1 + CASE ('x','v','f','mu','omega','torque','angmom') + ncols = nmax + nrows = 3 + CASE DEFAULT + ncols = nmax + nrows = 1 + END SELECT + + peratom_data%lammps_instance => self + SELECT CASE (datatype) + CASE (LAMMPS_INT) + peratom_data%datatype = DATA_INT_1D + CALL C_F_POINTER(Cptr, peratom_data%i32_vec, [ncols]) + CASE (LAMMPS_INT64) + peratom_data%datatype = DATA_INT64_1D + CALL C_F_POINTER(Cptr, peratom_data%i64_vec, [ncols]) + CASE (LAMMPS_DOUBLE) + peratom_data%datatype = DATA_DOUBLE_1D + IF (name == 'mass') THEN + CALL C_F_POINTER(Cptr, dummy, [ncols]) + peratom_data%r64_vec(0:) => dummy + ELSE + CALL C_F_POINTER(Cptr, peratom_data%r64_vec, [ncols]) + END IF + CASE (LAMMPS_DOUBLE_2D) + peratom_data%datatype = DATA_DOUBLE_2D + ! First, we dereference the void** pointer to point to the void* + CALL C_F_POINTER(Cptr, Catomptr, [ncols]) + ! Catomptr(1) now points to the first element of the array + CALL C_F_POINTER(Catomptr(1), peratom_data%r64_mat, [nrows,ncols]) + CASE (-1) + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'per-atom property ' // name // 'not found in extract_setting') + CASE DEFAULT + error_msg = '' + WRITE(error_msg,'(A,I0,A)') 'return value ', datatype, & + ' from lammps_extract_atom_datatype not known [Fortran/extract_atom]' + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, error_msg) + END SELECT + END FUNCTION lmp_extract_atom + + ! equivalent function to lammps_extract_compute + ! the assignment operator is overloaded so as to bind the pointers to + ! lammps data based on the information available from LAMMPS + FUNCTION lmp_extract_compute(self, id, style, type) RESULT(compute_data) + CLASS(lammps), INTENT(IN), TARGET :: self + CHARACTER(LEN=*), INTENT(IN) :: id + INTEGER(c_int), INTENT(IN) :: style, type + TYPE(lammps_data) :: compute_data + + TYPE(c_ptr) :: Cid, Cptr, Ctemp + INTEGER :: nrows, ncols, length + INTEGER(c_int), POINTER :: temp + TYPE(c_ptr), DIMENSION(:), POINTER :: Ccomputeptr + + Cid = f2c_string(id) + Cptr = lammps_extract_compute(self%handle, Cid, style, type) + + IF (.NOT. C_ASSOCIATED(Cptr)) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'Pointer from LAMMPS is NULL [Fortran/extract_compute]') + END IF + + ! Remember that rows and columns in C are transposed in Fortran! + compute_data%lammps_instance => self + SELECT CASE (type) + CASE (LMP_TYPE_SCALAR) + compute_data%datatype = DATA_DOUBLE + length = 1 + nrows = 1 + ncols = 1 + CALL C_F_POINTER(Cptr, compute_data%r64) + CASE (LMP_TYPE_VECTOR) + compute_data%datatype = DATA_DOUBLE_1D + IF (style == LMP_STYLE_ATOM) THEN + length = self%extract_setting('nmax') + ELSE + Ctemp = lammps_extract_compute(self%handle,Cid,style,LMP_SIZE_VECTOR) + CALL C_F_POINTER(Ctemp, temp) + length = temp + END IF + CALL C_F_POINTER(Cptr, compute_data%r64_vec, [length]) + CASE (LMP_TYPE_ARRAY) + compute_data%datatype = DATA_DOUBLE_2D + IF (style == LMP_STYLE_ATOM) THEN + ncols = self%extract_setting('nmax') + Ctemp = lammps_extract_compute(self%handle,Cid,style,LMP_SIZE_COLS) + CALL C_F_POINTER(Ctemp, temp) + nrows = temp + ELSE + Ctemp = lammps_extract_compute(self%handle,Cid,style,LMP_SIZE_ROWS) + CALL C_F_POINTER(Ctemp, temp) + ncols = temp + Ctemp = lammps_extract_compute(self%handle,Cid,style,LMP_SIZE_COLS) + CALL C_F_POINTER(Ctemp, temp) + nrows = temp + END IF + ! First, we dereference the void** pointer to point to a void* pointer + CALL C_F_POINTER(Cptr, Ccomputeptr, [ncols]) + ! Ccomputeptr(1) now points to the first element of the array + CALL C_F_POINTER(Ccomputeptr(1), compute_data%r64_mat, [nrows, ncols]) + CASE DEFAULT + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'unknown type value passed to extract_compute [Fortran API]') + END SELECT + CALL lammps_free(Cid) + END FUNCTION lmp_extract_compute + + FUNCTION lmp_extract_fix(self, id, style, type, nrow, ncol) RESULT(fix_data) + CLASS(lammps), INTENT(IN), TARGET :: self + CHARACTER(LEN=*), INTENT(IN) :: id + INTEGER(c_int), INTENT(IN) :: style, type + INTEGER(c_int), INTENT(IN), OPTIONAL :: nrow, ncol + TYPE(lammps_fix_data) :: fix_data + + TYPE(c_ptr) :: Cid, Cptr, Ctemp + TYPE(c_ptr), DIMENSION(:), POINTER :: Cfixptr + INTEGER(c_int) :: Cnrow, Cncol + REAL(c_double), POINTER :: Fptr + INTEGER :: nrows, ncols + INTEGER(c_int), POINTER :: temp + + ! We transpose ncol and nrow so the array appears to be transposed for + ! global data, as it would be if we could access the C++ array directly + Cnrow = -1 + Cncol = -1 + IF (PRESENT(nrow)) THEN + IF (.NOT. PRESENT(ncol)) THEN + ! Presumably the argument that's there is the vector length + Cnrow = nrow - 1_c_int + Cncol = -1_c_int + ELSE + ! Otherwise, the array is transposed, so...reverse the indices + Cncol = nrow - 1_c_int + END IF + END IF + + IF (PRESENT(ncol)) Cnrow = ncol - 1_c_int + + Cid = f2c_string(id) + Cptr = lammps_extract_fix(self%handle, Cid, style, type, Cnrow, Cncol) + IF (.NOT. C_ASSOCIATED(Cptr)) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'Pointer from LAMMPS is NULL for fix id "' // id & + // '" [Fortran/extract_fix]') + END IF + + fix_data%lammps_instance => self + SELECT CASE (style) + CASE (LMP_STYLE_GLOBAL) + fix_data%datatype = DATA_DOUBLE + CALL C_F_POINTER(Cptr, Fptr) + fix_data%r64 = Fptr + CALL lammps_free(Cptr) + CASE (LMP_STYLE_ATOM, LMP_STYLE_LOCAL) + SELECT CASE (type) + CASE (LMP_TYPE_SCALAR) + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'There is no such thing as a per-atom or local scalar& + & [Fortran/extract_fix]') + CASE (LMP_TYPE_VECTOR) + fix_data%datatype = DATA_DOUBLE_1D + IF (STYLE == LMP_STYLE_ATOM) THEN + nrows = self%extract_setting('nmax') + ELSE + Ctemp = lammps_extract_fix(self%handle, Cid, style, & + LMP_SIZE_VECTOR, 0_c_int,0_c_int) + CALL C_F_POINTER(Ctemp, temp) + nrows = temp + END IF + CALL C_F_POINTER(Cptr, fix_data%r64_vec, [nrows]) + CASE (LMP_TYPE_ARRAY) + fix_data%datatype = DATA_DOUBLE_2D + IF (STYLE == LMP_STYLE_ATOM) THEN + ! Fortran array is transposed relative to C + ncols = self%extract_setting('nmax') + Ctemp = lammps_extract_fix(self%handle, Cid, style, & + LMP_SIZE_COLS, 0_c_int,0_c_int) + CALL C_F_POINTER(Ctemp, temp) + nrows = temp + ELSE + ! Fortran array is transposed relative to C + Ctemp = lammps_extract_fix(self%handle, Cid, style, & + LMP_SIZE_COLS, 0_c_int,0_c_int) + CALL C_F_POINTER(Ctemp, temp) + nrows = temp + Ctemp = lammps_extract_fix(self%handle, Cid, style, & + LMP_SIZE_ROWS, 0_c_int,0_c_int) + CALL C_F_POINTER(Ctemp, temp) + ncols = temp + END IF + ! First, we dereference the void** to point to a void* pointer + CALL C_F_POINTER(Cptr, Cfixptr, [ncols]) + ! Cfixptr(1) now points to the first element of the array + CALL C_F_POINTER(Cfixptr(1), fix_data%r64_mat, [nrows, ncols]) + CASE DEFAULT + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'unknown type value passed to extract_fix [Fortran API]') + END SELECT + CASE DEFAULT + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'unknown style value passed to extract_fix [Fortran API]') + END SELECT + CALL lammps_free(Cid) + END FUNCTION lmp_extract_fix + + ! equivalent function to lammps_extract_variable + FUNCTION lmp_extract_variable(self, name, group) RESULT(variable_data) + CLASS(lammps), INTENT(IN), TARGET :: self + CHARACTER(LEN=*), INTENT(IN) :: name + CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: group + TYPE(lammps_variable_data) :: variable_data + + TYPE(c_ptr) :: Cptr, Cname, Cgroup, Cveclength + INTEGER(c_size_t) :: length + INTEGER(c_int) :: datatype + REAL(c_double), POINTER :: double => NULL() + REAL(c_double), DIMENSION(:), POINTER :: double_vec => NULL() + INTEGER(c_int), POINTER :: Clength => NULL() + + Cname = f2c_string(name) + IF (PRESENT(group)) THEN + Cgroup = f2c_string(group) + ELSE + Cgroup = c_null_ptr + END IF + datatype = lammps_extract_variable_datatype(self%handle, Cname) + Cptr = lammps_extract_variable(self%handle, Cname, Cgroup) + CALL lammps_free(Cname) + CALL lammps_free(Cgroup) + + variable_data%lammps_instance => self + SELECT CASE (datatype) + CASE (LMP_VAR_EQUAL) + variable_data%datatype = DATA_DOUBLE + CALL C_F_POINTER(Cptr, double) + variable_data%r64 = double + CALL lammps_free(Cptr) + CASE (LMP_VAR_ATOM) + variable_data%datatype = DATA_DOUBLE_1D + length = lmp_extract_setting(self, 'nlocal') + CALL C_F_POINTER(Cptr, double_vec, [length]) + IF (ALLOCATED(variable_data%r64_vec)) DEALLOCATE(variable_data%r64_vec) + ALLOCATE(variable_data%r64_vec(length)) + variable_data%r64_vec = double_vec + CALL lammps_free(Cptr) + CASE (LMP_VAR_VECTOR) + variable_data%datatype = DATA_DOUBLE_1D + Cgroup = f2c_string('LMP_SIZE_VECTOR') ! must match library.cpp + Cname = f2c_string(name) + Cveclength = lammps_extract_variable(self%handle, Cname, Cgroup) + CALL C_F_POINTER(Cveclength, Clength) + length = Clength + CALL lammps_free(Cgroup) + CALL lammps_free(Cname) + CALL lammps_free(Cveclength) + CALL C_F_POINTER(Cptr, double_vec, [length]) + IF (ALLOCATED(variable_data%r64_vec)) & + DEALLOCATE(variable_data%r64_vec) + ALLOCATE(variable_data%r64_vec(length)) + variable_data%r64_vec = double_vec + ! DO NOT deallocate the C pointer + CASE (LMP_VAR_STRING) + variable_data%datatype = DATA_STRING + length = c_strlen(Cptr) + ALLOCATE(CHARACTER(LEN=length) :: variable_data%str) + variable_data%str = c2f_string(Cptr) + ! DO NOT deallocate the C pointer + CASE (-1) + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'Variable "' // TRIM(name) // & + '" not found [Fortran/extract_variable]') + CASE DEFAULT + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'Unknown variable type returned from & + &lammps_extract_variable_datatype [Fortran/extract_variable]') + END SELECT + END FUNCTION lmp_extract_variable + + ! equivalent function to lammps_set_variable + SUBROUTINE lmp_set_variable(self, name, str) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name, str + INTEGER :: err + TYPE(c_ptr) :: Cstr, Cname + + Cstr = f2c_string(str) + Cname = f2c_string(name) + err = lammps_set_variable(self%handle, Cname, Cstr) + CALL lammps_free(Cname) + CALL lammps_free(Cstr) + IF (err /= 0) THEN + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'WARNING: unable to set string variable "' // name & + // '" [Fortran/set_variable]') + END IF + END SUBROUTINE lmp_set_variable + + ! equivalent function to lammps_gather_atoms (for integers) + SUBROUTINE lmp_gather_atoms_int(self, name, count, data) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(c_int), INTENT(IN) :: count + INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data + TYPE(c_ptr) :: Cdata, Cname + INTEGER(c_int) :: natoms + INTEGER(c_int), PARAMETER :: Ctype = 0_c_int + REAL(c_double) :: dnatoms + CHARACTER(LEN=100) :: error_msg + + IF (count /= 1 .AND. count /= 3) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, 'gather_atoms& + & requires "count" to be 1 or 3 [Fortran/gather_atoms]') + END IF + + dnatoms = lmp_get_natoms(self) + IF (dnatoms > HUGE(1_c_int)) THEN + WRITE(error_msg,'(A,1X,I0,1X,A)') & + 'Cannot use library function gather_atoms with more than', & + HUGE(0_c_int), 'atoms [Fortran/gather_atoms]' + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, error_msg) + END IF + natoms = NINT(dnatoms, c_int) + + Cname = f2c_string(name) + IF (ALLOCATED(data)) DEALLOCATE(data) + ALLOCATE(data(natoms*count)) + Cdata = C_LOC(data(1)) + CALL lammps_gather_atoms(self%handle, Cname, Ctype, count, Cdata) + CALL lammps_free(Cname) + END SUBROUTINE lmp_gather_atoms_int + + ! equivalent function to lammps_gather_atoms (for doubles) + SUBROUTINE lmp_gather_atoms_double(self, name, count, data) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(c_int), INTENT(IN) :: count + REAL(c_double), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data + TYPE(c_ptr) :: Cdata, Cname + INTEGER(c_int) :: natoms + INTEGER(c_int), PARAMETER :: Ctype = 1_c_int + REAL(c_double) :: dnatoms + CHARACTER(LEN=100) :: error_msg + + IF (count /= 1 .AND. count /= 3) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, 'gather_atoms& + & requires "count" to be 1 or 3 [Fortran/gather_atoms]') + END IF + + dnatoms = lmp_get_natoms(self) + IF (dnatoms > HUGE(1_c_int)) THEN + WRITE(error_msg,'(A,1X,I0,1X,A)') & + 'Cannot use library function gather_atoms with more than', & + HUGE(0_c_int), 'atoms [Fortran/gather_atoms]' + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, error_msg) + END IF + natoms = NINT(dnatoms, c_int) + + Cname = f2c_string(name) + IF (ALLOCATED(data)) DEALLOCATE(data) + ALLOCATE(data(natoms*count)) + Cdata = C_LOC(data(1)) + CALL lammps_gather_atoms(self%handle, Cname, Ctype, count, Cdata) + CALL lammps_free(Cname) + END SUBROUTINE lmp_gather_atoms_double + + ! equivalent function to lammps_gather_atoms_concat (for integers) + SUBROUTINE lmp_gather_atoms_concat_int(self, name, count, data) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(c_int), INTENT(IN) :: count + INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data + TYPE(c_ptr) :: Cdata, Cname + INTEGER(c_int) :: natoms + INTEGER(c_int), PARAMETER :: Ctype = 0_c_int + REAL(c_double) :: dnatoms + CHARACTER(LEN=100) :: error_msg + + IF (count /= 1 .AND. count /= 3) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'gather_atoms_concat requires "count" to be 1 or 3 & + &[Fortran/gather_atoms_concat]') + END IF + + dnatoms = lmp_get_natoms(self) + IF (dnatoms > HUGE(1_c_int)) THEN + WRITE(error_msg,'(A,1X,I0,1X,A)') & + 'Cannot use library function gather_atoms_concat with more than', & + HUGE(0_c_int), 'atoms [Fortran/gather_atoms_concat]' + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, error_msg) + END IF + natoms = NINT(dnatoms, c_int) + + Cname = f2c_string(name) + IF (ALLOCATED(data)) DEALLOCATE(data) + ALLOCATE(data(natoms*count)) + Cdata = C_LOC(data(1)) + CALL lammps_gather_atoms_concat(self%handle, Cname, Ctype, count, Cdata) + CALL lammps_free(Cname) + END SUBROUTINE lmp_gather_atoms_concat_int + + ! equivalent function to lammps_gather_atoms_concat (for doubles) + SUBROUTINE lmp_gather_atoms_concat_double(self, name, count, data) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(c_int), INTENT(IN) :: count + REAL(c_double), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data + TYPE(c_ptr) :: Cdata, Cname + INTEGER(c_int) :: natoms + INTEGER(c_int), PARAMETER :: Ctype = 1_c_int + REAL(c_double) :: dnatoms + CHARACTER(LEN=100) :: error_msg + + IF (count /= 1 .AND. count /= 3) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'gather_atoms_concat requires "count" to be 1 or 3 & + &[Fortran/gather_atoms_concat]') + END IF + + dnatoms = lmp_get_natoms(self) + IF (dnatoms > HUGE(1_c_int)) THEN + WRITE(error_msg,'(A,1X,I0,1X,A)') & + 'Cannot use library function gather_atoms_concat with more than', & + HUGE(0_c_int), 'atoms [Fortran/gather_atoms_concat]' + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, error_msg) + END IF + natoms = NINT(dnatoms, c_int) + + Cname = f2c_string(name) + IF (ALLOCATED(data)) DEALLOCATE(data) + ALLOCATE(data(natoms*count)) + Cdata = C_LOC(data(1)) + CALL lammps_gather_atoms_concat(self%handle, Cname, Ctype, count, Cdata) + CALL lammps_free(Cname) + END SUBROUTINE lmp_gather_atoms_concat_double + + ! equivalent function to lammps_gather_atoms_subset (for integers) + SUBROUTINE lmp_gather_atoms_subset_int(self, name, count, ids, data) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(c_int), INTENT(IN) :: count + INTEGER(c_int), DIMENSION(:), TARGET, INTENT(IN) :: ids + INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data + INTEGER(c_int) :: ndata + TYPE(c_ptr) :: Cdata, Cname, Cids + INTEGER(c_int), PARAMETER :: Ctype = 0_c_int + + IF (count /= 1 .AND. count /= 3) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'gather_atoms_subset requires "count" to be 1 or 3 & + &[Fortran/gather_atoms]') + END IF + + ndata = SIZE(ids, KIND=c_int) + + Cname = f2c_string(name) + IF (ALLOCATED(data)) DEALLOCATE(data) + ALLOCATE(data(ndata*count)) + data = -1_c_int + Cdata = C_LOC(data(1)) + Cids = C_LOC(ids(1)) + CALL lammps_gather_atoms_subset(self%handle, Cname, Ctype, count, & + ndata, Cids, Cdata) + CALL lammps_free(Cname) + END SUBROUTINE lmp_gather_atoms_subset_int + + ! equivalent function to lammps_gather_atoms_subset (for doubles) + SUBROUTINE lmp_gather_atoms_subset_double(self, name, count, ids, data) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(c_int), INTENT(IN) :: count + INTEGER(c_int), DIMENSION(:), TARGET, INTENT(IN) :: ids + REAL(c_double), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data + INTEGER(c_int) :: ndata + TYPE(c_ptr) :: Cdata, Cname, Cids + INTEGER(c_int), PARAMETER :: Ctype = 1_c_int + + IF (count /= 1 .AND. count /= 3) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'gather_atoms_subset requires "count" to be 1 or 3 & + &[Fortran/gather_atoms]') + END IF + + ndata = SIZE(ids, KIND=c_int) + + Cname = f2c_string(name) + IF (ALLOCATED(data)) DEALLOCATE(data) + ALLOCATE(data(ndata*count)) + Cdata = C_LOC(data(1)) + Cids = C_LOC(ids(1)) + CALL lammps_gather_atoms_subset(self%handle, Cname, Ctype, count, & + ndata, Cids, Cdata) + CALL lammps_free(Cname) + END SUBROUTINE lmp_gather_atoms_subset_double + + ! equivalent function to lammps_scatter_atoms (for integers) + SUBROUTINE lmp_scatter_atoms_int(self, name, data) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(c_int), DIMENSION(:), TARGET :: data + INTEGER(c_int) :: natoms, Ccount + INTEGER(c_int), PARAMETER :: Ctype = 0_c_int + TYPE(c_ptr) :: Cname, Cdata + REAL(c_double) :: dnatoms + CHARACTER(LEN=100) :: error_msg + + dnatoms = lmp_get_natoms(self) + IF (dnatoms > HUGE(1_c_int)) THEN + WRITE(error_msg,'(A,1X,I0,1X,A)') & + 'Cannot use library function scatter_atoms with more than', & + HUGE(0_c_int), 'atoms [Fortran/scatter_atoms]' + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, error_msg) + END IF + natoms = NINT(dnatoms, c_int) + + Cname = f2c_string(name) + Cdata = C_LOC(data(1)) + Ccount = SIZE(data) / natoms + + IF (Ccount /= 1 .AND. Ccount /= 3) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'lammps_scatter_atoms requires either 1 or 3 data per atom') + END IF + CALL lammps_scatter_atoms(self%handle, Cname, Ctype, Ccount, Cdata) + CALL lammps_free(Cname) + END SUBROUTINE lmp_scatter_atoms_int + + ! equivalent function to lammps_scatter_atoms (for doubles) + SUBROUTINE lmp_scatter_atoms_double(self, name, data) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name + REAL(c_double), DIMENSION(:), TARGET :: data + INTEGER(c_int) :: natoms, Ccount + INTEGER(c_int), PARAMETER :: Ctype = 1_c_int + TYPE(c_ptr) :: Cname, Cdata + REAL(c_double) :: dnatoms + CHARACTER(LEN=100) :: error_msg + + dnatoms = lmp_get_natoms(self) + IF (dnatoms > HUGE(1_c_int)) THEN + WRITE(error_msg,'(A,1X,I0,1X,A)') & + 'Cannot use library function scatter_atoms with more than', & + HUGE(0_c_int), 'atoms [Fortran/scatter_atoms]' + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, error_msg) + END IF + natoms = NINT(dnatoms, c_int) + + Cname = f2c_string(name) + Cdata = C_LOC(data(1)) + Ccount = SIZE(data) / natoms + + IF (Ccount /= 1 .AND. Ccount /= 3) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'scatter_atoms requires either 1 or 3 data per atom & + &[Fortran/scatter_atoms]') + END IF + CALL lammps_scatter_atoms(self%handle, Cname, Ctype, Ccount, Cdata) + CALL lammps_free(Cname) + END SUBROUTINE lmp_scatter_atoms_double + + ! equivalent function to lammps_scatter_atoms_subset (for integers) + SUBROUTINE lmp_scatter_atoms_subset_int(self, name, ids, data) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(c_int), DIMENSION(:), TARGET :: ids + INTEGER(c_int), DIMENSION(:), TARGET :: data + INTEGER(c_int), PARAMETER :: Ctype = 0_c_int + INTEGER(c_int) :: Cndata, Ccount + TYPE(c_ptr) :: Cdata, Cname, Cids + + Cndata = SIZE(ids, KIND=c_int) + Ccount = SIZE(data, KIND=c_int) / Cndata + IF (Ccount /= 1 .AND. Ccount /= 3) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'scatter_atoms_subset requires either 1 or 3 data per atom') + END IF + + Cname = f2c_string(name) + Cdata = C_LOC(data(1)) + Cids = C_LOC(ids(1)) + CALL lammps_scatter_atoms_subset(self%handle, Cname, Ctype, Ccount, & + Cndata, Cids, Cdata) + CALL lammps_free(Cname) + END SUBROUTINE lmp_scatter_atoms_subset_int + + ! equivalent function to lammps_scatter_atoms_subset (for doubles) + SUBROUTINE lmp_scatter_atoms_subset_double(self, name, ids, data) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(c_int), DIMENSION(:), TARGET :: ids + REAL(c_double), DIMENSION(:), TARGET :: data + INTEGER(c_int), PARAMETER :: Ctype = 1_c_int + INTEGER(c_int) :: Cndata, Ccount + TYPE(c_ptr) :: Cdata, Cname, Cids + + Cndata = SIZE(ids, KIND=c_int) + Ccount = SIZE(data, KIND=c_int) / Cndata + IF (Ccount /= 1 .AND. Ccount /= 3) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'scatter_atoms_subset requires either 1 or 3 data per atom') + END IF + + Cname = f2c_string(name) + Cdata = C_LOC(data(1)) + Cids = C_LOC(ids(1)) + CALL lammps_scatter_atoms_subset(self%handle, Cname, Ctype, Ccount, & + Cndata, Cids, Cdata) + CALL lammps_free(Cname) + END SUBROUTINE lmp_scatter_atoms_subset_double + + ! equivalent function to lammps_gather_bonds (LAMMPS_SMALLSMALL or SMALLBIG) + SUBROUTINE lmp_gather_bonds_small(self, data) + CLASS(lammps), INTENT(IN) :: self + INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data + INTEGER(c_int) :: size_tagint, size_bigint + INTEGER(c_int), POINTER :: nbonds_small + INTEGER(c_int64_t), POINTER :: nbonds_big + TYPE(c_ptr) :: Cdata + + size_tagint = lmp_extract_setting(self, 'tagint') + IF (size_tagint /= 4_c_int) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'Incompatible integer kind in gather_bonds [Fortran API]') + END IF + IF (ALLOCATED(data)) DEALLOCATE(data) + size_bigint = lmp_extract_setting(self, 'bigint') + IF (size_bigint == 4_c_int) THEN + nbonds_small = lmp_extract_global(self, 'nbonds') + ALLOCATE(data(3*nbonds_small)) + ELSE + nbonds_big = lmp_extract_global(self, 'nbonds') + ALLOCATE(data(3*nbonds_big)) + END IF + Cdata = C_LOC(data(1)) + CALL lammps_gather_bonds(self%handle, Cdata) + END SUBROUTINE lmp_gather_bonds_small + + ! equivalent function to lammps_gather_bonds (LAMMPS_BIGBIG) + SUBROUTINE lmp_gather_bonds_big(self, data) + CLASS(lammps), INTENT(IN) :: self + INTEGER(c_int64_t), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data + INTEGER(c_int) :: size_tagint + INTEGER(c_int64_t), POINTER :: nbonds + TYPE(c_ptr) :: Cdata + + size_tagint = lmp_extract_setting(self, 'tagint') + IF (size_tagint /= 8_c_int) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'Incompatible integer kind in gather_bonds [Fortran API]') + END IF + nbonds = lmp_extract_global(self, 'nbonds') + IF (ALLOCATED(data)) DEALLOCATE(data) + ALLOCATE(data(3*nbonds)) + Cdata = C_LOC(data(1)) + CALL lammps_gather_bonds(self%handle, Cdata) + END SUBROUTINE lmp_gather_bonds_big + + ! equivalent function to lammps_create_atoms (int ids or id absent) + SUBROUTINE lmp_create_atoms_int(self, id, type, x, v, image, bexpand) + CLASS(lammps), INTENT(IN) :: self + INTEGER(c_int), DIMENSION(:), TARGET, OPTIONAL :: id, image + INTEGER(c_int), DIMENSION(:), TARGET, OPTIONAL :: type + REAL(c_double), DIMENSION(:), TARGET, OPTIONAL :: x, v + LOGICAL, OPTIONAL :: bexpand + INTEGER(c_int) :: n, Cbexpand + TYPE(c_ptr) :: Cid, Ctype, Cx, Cv, Cimage + INTEGER(c_int) :: tagint_size, atoms_created + + ! type is actually NOT optional, but we can't make id optional without it, + ! so we check at run-time + IF (.NOT. PRESENT(type)) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'the "type" argument to create_atoms is required& + & [Fortran/create_atoms]') + END IF + + tagint_size = lmp_extract_setting(self, 'tagint') + IF (tagint_size /= 4_c_int .AND. (PRESENT(id) .OR. PRESENT(image))) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'Unable to create_atoms; your id/image array types are incompatible& + & with LAMMPS_SMALLBIG and LAMMPS_SMALLSMALL [Fortran/create_atoms]') + END IF + n = SIZE(type, KIND=c_int) + IF (PRESENT(bexpand)) THEN + IF (bexpand) THEN + Cbexpand = 1_c_int + ELSE + Cbexpand = 0_c_int + END IF + ELSE + Cbexpand = 0_c_int + END IF + IF (PRESENT(id)) THEN + Cid = C_LOC(id(1)) + ELSE + Cid = c_null_ptr + END IF + IF (PRESENT(type)) THEN + Ctype = C_LOC(type(1)) + END IF + IF (PRESENT(image)) THEN + Cimage = C_LOC(image(1)) + ELSE + Cimage = c_null_ptr + END IF + IF (PRESENT(x)) THEN + Cx = C_LOC(x(1)) + ELSE + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'the argument "x" to create_atoms is required') + END IF + IF (PRESENT(v)) THEN + Cv = C_LOC(v(1)) + ELSE + Cv = c_null_ptr + END IF + atoms_created = lammps_create_atoms(self%handle, n, Cid, Ctype, Cx, Cv, & + Cimage, Cbexpand) + IF ( atoms_created < 0_c_int ) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'error when trying to create atoms [Fortran/create_atoms]') + ELSE IF ( atoms_created /= n ) THEN + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'atoms created /= atoms asked to create [Fortran/create_atoms]') + END IF + END SUBROUTINE lmp_create_atoms_int + + ! equivalent function to lammps_create_atoms (long int ids and images) + SUBROUTINE lmp_create_atoms_bigbig(self, id, type, x, v, image, bexpand) + CLASS(lammps), INTENT(IN) :: self + INTEGER(c_int64_t), DIMENSION(:), TARGET :: id + INTEGER(c_int), DIMENSION(:), TARGET :: type + REAL(c_double), DIMENSION(:), TARGET :: x + REAL(c_double), DIMENSION(:), OPTIONAL, TARGET :: v + INTEGER(c_int64_t), DIMENSION(:), OPTIONAL, TARGET :: image + LOGICAL, OPTIONAL :: bexpand + INTEGER(c_int) :: n, Cbexpand + TYPE(c_ptr) :: Cid, Ctype, Cx, Cv, Cimage + INTEGER(c_int) :: tagint_size, atoms_created + + tagint_size = lmp_extract_setting(self, 'tagint') + IF ( tagint_size /= 8_c_int ) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'Unable to create_atoms; your id/image array types are incompatible& + & with LAMMPS_BIGBIG') + END IF + n = SIZE(type, KIND=c_int) + IF (PRESENT(bexpand)) THEN + IF (bexpand) THEN + Cbexpand = 1_c_int + ELSE + Cbexpand = 0_c_int + END IF + ELSE + Cbexpand = 0_c_int + END IF + Cid = C_LOC(id(1)) + Ctype = C_LOC(type(1)) + IF (PRESENT(image)) THEN + Cimage = C_LOC(image(1)) + ELSE + Cimage = c_null_ptr + END IF + Cx = C_LOC(x(1)) + IF (PRESENT(v)) THEN + Cv = C_LOC(v(1)) + ELSE + Cv = c_null_ptr + END IF + atoms_created = lammps_create_atoms(self%handle, n, Cid, Ctype, Cx, Cv, & + Cimage, Cbexpand) + IF ( atoms_created < 0_c_int ) THEN + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'error when trying to create atoms [Fortran/create_atoms]') + ELSE IF ( atoms_created /= n ) THEN + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'atoms created /= atoms asked to create [Fortran/create_atoms]') + END IF + END SUBROUTINE lmp_create_atoms_bigbig + + ! equivalent function to lammps_find_pair_neighlist + INTEGER(c_int) FUNCTION lmp_find_pair_neighlist(self, style, exact, nsub, & + reqid) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: style + LOGICAL, INTENT(IN), OPTIONAL :: exact + INTEGER(c_int), INTENT(IN), OPTIONAL :: nsub, reqid + TYPE(c_ptr) :: Cstyle + INTEGER(c_int) :: Cexact, Cnsub, Creqid + + Cexact = 0_c_int + IF (PRESENT(exact)) THEN + IF (exact) THEN + Cexact = 1_c_int + END IF + END IF + IF (PRESENT(nsub)) THEN + Cnsub = nsub + ELSE + Cnsub = 0_c_int + END IF + IF (PRESENT(reqid)) THEN + Creqid = reqid + ELSE + Creqid = 0_c_int + END IF + Cstyle = f2c_string(style) + lmp_find_pair_neighlist = lammps_find_pair_neighlist(self%handle, Cstyle, & + Cexact, Cnsub, Creqid) + IF (lmp_find_pair_neighlist < 0) THEN + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'unable to find pair neighbor list [Fortran/find_pair_neighlist]') + END IF + CALL lammps_free(Cstyle) + END FUNCTION lmp_find_pair_neighlist + + ! equivalent function to lammps_find_fix_neighlist + INTEGER(c_int) FUNCTION lmp_find_fix_neighlist(self, id, reqid) RESULT(idx) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: id + INTEGER(c_int), INTENT(IN), OPTIONAL :: reqid + TYPE(c_ptr) :: Cid + INTEGER(c_int) :: Creqid + + IF (PRESENT(reqid)) THEN + Creqid = reqid + ELSE + Creqid = 0_c_int + END IF + Cid = f2c_string(id) + idx = lammps_find_fix_neighlist(self%handle, Cid, Creqid) + IF (idx < 0) THEN + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'neighbor list not found [Fortran/find_fix_neighlist]') + END IF + CALL lammps_free(Cid) + END FUNCTION lmp_find_fix_neighlist + + ! equivalent function to lammps_find_compute_neighlist + INTEGER(c_int) FUNCTION lmp_find_compute_neighlist(self, id, reqid) & + RESULT(idx) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: id + INTEGER(c_int), INTENT(IN), OPTIONAL :: reqid + TYPE(c_ptr) :: Cid + INTEGER(c_int) :: Creqid + + IF (PRESENT(reqid)) THEN + Creqid = reqid + ELSE + Creqid = 0_c_int + END IF + Cid = f2c_string(id) + idx = lammps_find_compute_neighlist(self%handle, Cid, Creqid) + IF (idx < 0) THEN + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'neighbor list not found [Fortran/find_compute_neighlist]') + END IF + CALL lammps_free(Cid) + END FUNCTION lmp_find_compute_neighlist + + INTEGER(c_int) FUNCTION lmp_neighlist_num_elements(self, idx) RESULT(inum) + CLASS(lammps), INTENT(IN) :: self + INTEGER(c_int), INTENT(IN) :: idx + + inum = lammps_neighlist_num_elements(self%handle, idx) + IF (inum < 0) THEN + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'neighbor list not found [Fortran/neighlist_num_elements]') + END IF + END FUNCTION lmp_neighlist_num_elements + + SUBROUTINE lmp_neighlist_element_neighbors(self, idx, element, iatom, & + neighbors) + CLASS(lammps), INTENT(IN) :: self + INTEGER(c_int), INTENT(IN) :: idx, element + INTEGER(c_int), INTENT(OUT) :: iatom + INTEGER(c_int), DIMENSION(:), POINTER, INTENT(OUT) :: neighbors + INTEGER(c_int) :: numneigh + TYPE(c_ptr) :: Cneighbors + + CALL lammps_neighlist_element_neighbors(self%handle, idx, element, iatom, & + numneigh, Cneighbors) + CALL C_F_POINTER(Cneighbors, neighbors, [numneigh]) + END SUBROUTINE lmp_neighlist_element_neighbors + + ! equivalent function to lammps_version INTEGER FUNCTION lmp_version(self) - CLASS(lammps) :: self + CLASS(lammps), INTENT(IN) :: self lmp_version = lammps_version(self%handle) END FUNCTION lmp_version + ! equivalent function to lammps_get_os_info + SUBROUTINE lmp_get_os_info(buffer) + CHARACTER(LEN=*) :: buffer + INTEGER(c_int) :: buf_size + CHARACTER(LEN=1, KIND=c_char), DIMENSION(LEN(buffer)+1), TARGET :: Cbuffer + TYPE(c_ptr) :: ptr + + buffer = '' + buf_size = LEN(buffer, KIND=c_int) + 1_c_int + ptr = C_LOC(Cbuffer(1)) + CALL lammps_get_os_info(ptr, INT(buf_size, KIND=c_int)) + buffer = array2string(Cbuffer) + END SUBROUTINE lmp_get_os_info + + ! equivalent function to lammps_config_has_mpi_support + LOGICAL FUNCTION lmp_config_has_mpi_support() + INTEGER(c_int) :: has_mpi_support + + has_mpi_support = lammps_config_has_mpi_support() + lmp_config_has_mpi_support = (has_mpi_support /= 0_c_int) + END FUNCTION lmp_config_has_mpi_support + + ! equivalent function to lammps_config_has_gzip_support + LOGICAL FUNCTION lmp_config_has_gzip_support() + INTEGER(c_int) :: has_gzip_support + + has_gzip_support = lammps_config_has_gzip_support() + lmp_config_has_gzip_support = (has_gzip_support /= 0_c_int) + END FUNCTION lmp_config_has_gzip_support + + ! equivalent function to lammps_config_has_png_support + LOGICAL FUNCTION lmp_config_has_png_support() + INTEGER(c_int) :: has_png_support + + has_png_support = lammps_config_has_png_support() + lmp_config_has_png_support = (has_png_support /= 0_c_int) + END FUNCTION lmp_config_has_png_support + + ! equivalent function to lammps_config_has_jpeg_support + LOGICAL FUNCTION lmp_config_has_jpeg_support() + INTEGER(c_int) :: has_jpeg_support + + has_jpeg_support = lammps_config_has_jpeg_support() + lmp_config_has_jpeg_support = (has_jpeg_support /= 0_c_int) + END FUNCTION lmp_config_has_jpeg_support + + ! equivalent function to lammps_config_has_ffmpeg_support + LOGICAL FUNCTION lmp_config_has_ffmpeg_support() + INTEGER(c_int) :: has_ffmpeg_support + + has_ffmpeg_support = lammps_config_has_ffmpeg_support() + lmp_config_has_ffmpeg_support = (has_ffmpeg_support /= 0_c_int) + END FUNCTION lmp_config_has_ffmpeg_support + + ! equivalent function to lammps_config_has_exceptions + LOGICAL FUNCTION lmp_config_has_exceptions() + INTEGER(c_int) :: has_exceptions + + has_exceptions = lammps_config_has_exceptions() + lmp_config_has_exceptions = (has_exceptions /= 0_c_int) + END FUNCTION lmp_config_has_exceptions + + ! equivalent function to lammps_config_has_package + LOGICAL FUNCTION lmp_config_has_package(name) + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(c_int) :: has_package + TYPE(c_ptr) :: Cname + + Cname = f2c_string(name) + has_package = lammps_config_has_package(Cname) + lmp_config_has_package = (has_package /= 0_c_int) + CALL lammps_free(Cname) + END FUNCTION lmp_config_has_package + + ! equivalent subroutine to lammps_config_package_name + SUBROUTINE lmp_config_package_name(self, idx, buffer) + CLASS(lammps), INTENT(IN) :: self + INTEGER, INTENT(IN) :: idx + CHARACTER(LEN=*), INTENT(OUT) :: buffer + CHARACTER(LEN=1, KIND=c_char), DIMENSION(LEN(buffer)+1), TARGET :: Cbuffer + INTEGER(c_int) :: Cidx, Csuccess + TYPE(c_ptr) :: Cptr + + Cidx = idx - 1 + Cptr = C_LOC(Cbuffer(1)) + Csuccess = lammps_config_package_name(Cidx, Cptr, LEN(buffer)+1) + buffer = '' + IF (Csuccess /= 0_c_int) THEN + buffer = array2string(Cbuffer) + ELSE + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'failure of lammps_config_package_name [Fortran/config_package_name]') + END IF + END SUBROUTINE lmp_config_package_name + + ! equivalent function to Python routine lammps.installed_packages() + SUBROUTINE lmp_installed_packages(self, package, length) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=:), DIMENSION(:), ALLOCATABLE, INTENT(OUT) :: package + INTEGER, INTENT(IN), OPTIONAL :: length + INTEGER, PARAMETER :: MAX_BUFFER_LENGTH = 31 + INTEGER :: i, npackage, buf_length + + IF (PRESENT(length)) THEN + buf_length = length + ELSE + buf_length = MAX_BUFFER_LENGTH + END IF + + IF (ALLOCATED(package)) DEALLOCATE(package) + npackage = lammps_config_package_count() + ALLOCATE(CHARACTER(LEN=MAX_BUFFER_LENGTH) :: package(npackage)) + DO i=1, npackage + CALL lmp_config_package_name(self, i, package(i)) + END DO + END SUBROUTINE lmp_installed_packages + + ! equivalent function to lammps_config_accelerator + LOGICAL FUNCTION lmp_config_accelerator(package, category, setting) + CHARACTER(LEN=*), INTENT(IN) :: package, category, setting + TYPE(c_ptr) :: Cpackage, Ccategory, Csetting + INTEGER(c_int) :: is_configured + + Cpackage = f2c_string(package) + Ccategory = f2c_string(category) + Csetting = f2c_string(setting) + is_configured = lammps_config_accelerator(Cpackage, Ccategory, Csetting) + CALL lammps_free(Cpackage) + CALL lammps_free(Ccategory) + CALL lammps_free(Csetting) + lmp_config_accelerator = (is_configured /= 0_c_int) + END FUNCTION lmp_config_accelerator + + ! equivalent function to lammps_has_gpu_device + LOGICAL FUNCTION lmp_has_gpu_device() + lmp_has_gpu_device = (lammps_has_gpu_device() /= 0_c_int) + END FUNCTION lmp_has_gpu_device + + ! equivalent subroutine to lammps_get_gpu_device_info + SUBROUTINE lmp_get_gpu_device_info(buffer) + CHARACTER(LEN=*), INTENT(OUT) :: buffer + INTEGER(c_int) :: buf_size + CHARACTER(LEN=1, KIND=c_char), DIMENSION(LEN(buffer)+1), TARGET :: Cbuffer + TYPE(c_ptr) :: Cptr + + buffer = '' + buf_size = LEN(buffer) + 1 + Cptr = C_LOC(Cbuffer) + CALL lammps_get_gpu_device_info(Cptr, buf_size) + buffer = array2string(Cbuffer) + END SUBROUTINE lmp_get_gpu_device_info + + ! equivalent function to lammps_has_style + LOGICAL FUNCTION lmp_has_style(self, category, name) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: category, name + TYPE(c_ptr) :: Ccategory, Cname + INTEGER(c_int) :: has_style + + Ccategory = f2c_string(category) + Cname = f2c_string(name) + has_style = lammps_has_style(self%handle, Ccategory, Cname) + CALL lammps_free(Ccategory) + CALL lammps_free(Cname) + lmp_has_style = (has_style /= 0_c_int) + END FUNCTION + + ! equivalent function to lammps_style_count + INTEGER(c_int) FUNCTION lmp_style_count(self, category) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: category + TYPE(c_ptr) :: Ccategory + + Ccategory = f2c_string(category) + lmp_style_count = lammps_style_count(self%handle, Ccategory) + CALL lammps_free(Ccategory) + END FUNCTION lmp_style_count + + ! equivalent function to lammps_style_name + SUBROUTINE lmp_style_name(self, category, idx, buffer) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: category + INTEGER(c_int), INTENT(IN) :: idx + CHARACTER(LEN=*), INTENT(OUT) :: buffer + INTEGER(c_int) :: buf_size, success + CHARACTER(LEN=1, KIND=c_char), DIMENSION(LEN(buffer)+1), TARGET :: Cbuffer + TYPE(c_ptr) :: Ccategory, Cptr + + buffer = '' + buf_size = LEN(buffer, KIND=c_int) + 1_c_int + Ccategory = f2c_string(category) + Cptr = C_LOC(Cbuffer) + success = lammps_style_name(self%handle, Ccategory, idx - 1, Cptr, buf_size) + IF (success == 1_c_int) THEN + buffer = array2string(Cbuffer) + ELSE + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'idx value not in range [Fortran/style_name]') + END IF + CALL lammps_free(Ccategory) + END SUBROUTINE lmp_style_name + + ! equivalent function to lammps_has_id + LOGICAL FUNCTION lmp_has_id(self, category, name) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: category, name + TYPE(c_ptr) :: Ccategory, Cname + INTEGER(c_int) :: has_id + + Ccategory = f2c_string(category) + Cname = f2c_string(name) + has_id = lammps_has_id(self%handle, Ccategory, Cname) + CALL lammps_free(Ccategory) + CALL lammps_free(Cname) + lmp_has_id = (has_id /= 0_c_int) + END FUNCTION lmp_has_id + + ! equivalent function to lammps_id_count + INTEGER(c_int) FUNCTION lmp_id_count(self, category) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: category + TYPE(c_ptr) :: Ccategory + + Ccategory = f2c_string(category) + lmp_id_count = lammps_id_count(self%handle, Ccategory) + CALL lammps_free(Ccategory) + END FUNCTION lmp_id_count + + ! equivalent function to lammps_id_name + SUBROUTINE lmp_id_name(self, category, idx, buffer) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: category + INTEGER(c_int), INTENT(IN) :: idx + CHARACTER(LEN=*), INTENT(OUT) :: buffer + INTEGER(c_int) :: success + INTEGER(c_int) :: buf_size + TYPE(c_ptr) :: Ccategory, Cptr + CHARACTER(LEN=1, KIND=c_char), DIMENSION(LEN(buffer)+1), TARGET :: Cbuffer + + buffer = '' + Ccategory = f2c_string(category) + buf_size = LEN(buffer, KIND=c_int) + Cptr = C_LOC(Cbuffer(1)) + success = lammps_id_name(self%handle, Ccategory, idx - 1, Cptr, buf_size) + IF (success /= 0) THEN + buffer = array2string(Cbuffer) + ELSE + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'lammps_id_name failed [Fortran/id_name]') + END IF + CALL lammps_free(Ccategory) + END SUBROUTINE lmp_id_name + + ! equivalent function to lammps_plugin_name + SUBROUTINE lmp_plugin_name(self, idx, stylebuf, namebuf) + CLASS(lammps), INTENT(IN) :: self + INTEGER(c_int), INTENT(IN) :: idx + CHARACTER(LEN=*), INTENT(OUT) :: stylebuf, namebuf + INTEGER(c_int) :: buf_size, success + TYPE(c_ptr) :: Cstylebuf, Cnamebuf + + buf_size = MIN(LEN(stylebuf, KIND=c_int), LEN(namebuf, KIND=c_int)) + Cstylebuf = lammps_malloc(INT(buf_size, KIND=c_size_t)) + Cnamebuf = lammps_malloc(INT(buf_size, KIND=c_size_t)) + success = lammps_plugin_name(idx - 1, Cstylebuf, Cnamebuf, buf_size) + IF (success /= 0_c_int) THEN + stylebuf = c2f_string(Cstylebuf) + namebuf = c2f_string(Cnamebuf) + ELSE + stylebuf = '' + namebuf = '' + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'call to lammps_plugin_name failed [Fortran/plugin_name]') + END IF + CALL lammps_free(Cstylebuf) + CALL lammps_free(Cnamebuf) + END SUBROUTINE lmp_plugin_name + + ! equivalent function to lammps_encode_image_flags + FUNCTION lmp_encode_image_flags(self, ix, iy, iz) RESULT (image) + CLASS(lammps), INTENT(IN), TARGET :: self + INTEGER(c_int), INTENT(IN) :: ix, iy, iz + TYPE(lammps_image_data) :: image + INTEGER(c_int) :: imageint_size + INTEGER(c_int) :: IMGMAX, IMGMASK, IMGBITS, IMG2BITS + INTEGER(c_int64_t) :: ibx, iby, ibz, BIMGMAX, BIMGMASK, BIMGBITS, BIMG2BITS + + image%lammps_instance => self + IMGMASK = lmp_extract_setting(self, 'IMGMASK') + IMGMAX = lmp_extract_setting(self, 'IMGMAX') + IMGBITS = lmp_extract_setting(self, 'IMGBITS') + IMG2BITS = lmp_extract_setting(self, 'IMG2BITS') + imageint_size = lmp_extract_setting(self, 'imageint') + IF (imageint_size == 4_c_int) THEN + image%datatype = DATA_INT + image%i32 = IOR( IOR(IAND(ix + IMGMAX, IMGMASK), & + ISHFT(IAND(iy + IMGMAX, IMGMASK), IMGBITS)), & + ISHFT(IAND(iz + IMGMAX, IMGMASK), IMG2BITS) ) + ELSE + image%datatype = DATA_INT64 + ibx = ix + iby = iy + ibz = iz + BIMGMAX = IMGMAX + BIMGMASK = IMGMASK + BIMGBITS = IMGBITS + BIMG2BITS = IMG2BITS + image%i64 = IOR( IOR(IAND(ibx + BIMGMAX, BIMGMASK), & + ISHFT(IAND(iby + BIMGMAX, BIMGMASK), BIMGBITS)), & + ISHFT(IAND(ibz + BIMGMAX, BIMGMASK), BIMG2BITS) ) + END IF + END FUNCTION lmp_encode_image_flags + + ! equivalent function to lammps_decode_image_flags + SUBROUTINE lmp_decode_image_flags(self, image, flags) + CLASS(lammps), INTENT(IN) :: self + INTEGER(c_int), INTENT(IN) :: image + INTEGER(c_int), DIMENSION(3), TARGET, INTENT(OUT) :: flags + INTEGER(c_int) :: size_imageint + INTEGER(c_int) :: IMGMASK, IMGMAX, IMGBITS, IMG2BITS + + size_imageint = lmp_extract_setting(self, 'imageint') + IF (size_imageint == 4_c_int) THEN + IMGMASK = lmp_extract_setting(self, 'IMGMASK') + IMGMAX = lmp_extract_setting(self, 'IMGMAX') + IMGBITS = lmp_extract_setting(self, 'IMGBITS') + IMG2BITS = lmp_extract_setting(self, 'IMG2BITS') + flags(1) = IAND(image, IMGMASK) - IMGMAX + flags(2) = IAND(ISHFT(image, -IMGBITS), IMGMASK) - IMGMAX + flags(3) = ISHFT(image, -IMG2BITS) - IMGMAX + ELSE + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, 'Incorrect& + & integer kind passed as "image" [Fortran/decode_image_flags]') + END IF + END SUBROUTINE lmp_decode_image_flags + + ! equivalent function to lammps_decode_image_flags if -DLAMMPS_BIGBIG is used + SUBROUTINE lmp_decode_image_flags_bigbig(self, image, flags) + CLASS(lammps), INTENT(IN) :: self + INTEGER(c_int64_t), INTENT(IN) :: image + INTEGER(c_int), DIMENSION(3), TARGET, INTENT(OUT) :: flags + INTEGER(c_int) :: size_imageint + INTEGER(c_int) :: IMGMASK, IMGMAX, IMGBITS, IMG2BITS + INTEGER(c_int64_t) :: BIMGMASK, BIMGMAX, BIMGBITS, BIMG2BITS + + size_imageint = lmp_extract_setting(self, 'imageint') + IF (size_imageint == 8_c_int) THEN + IMGMASK = lmp_extract_setting(self, 'IMGMASK') + IMGMAX = lmp_extract_setting(self, 'IMGMAX') + IMGBITS = lmp_extract_setting(self, 'IMGBITS') + IMG2BITS = lmp_extract_setting(self, 'IMG2BITS') + BIMGMASK = IMGMASK + BIMGMAX = IMGMAX + BIMGBITS = IMGBITS + BIMG2BITS = IMG2BITS + flags(1) = INT(IAND(image, BIMGMASK) - BIMGMAX, KIND=c_int) + flags(2) = INT(IAND(ISHFT(image, -BIMGBITS), BIMGMASK) - BIMGMAX, & + KIND=c_int) + flags(3) = INT(ISHFT(image, -BIMG2BITS) - BIMGMAX, KIND=c_int) + ELSE + CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, 'Incorrect& + & integer kind passed as "image" [Fortran/decode_image_flags]') + END IF + END SUBROUTINE lmp_decode_image_flags_bigbig + + ! equivalent function to lammps_flush_buffers + SUBROUTINE lmp_flush_buffers(self) + CLASS(lammps), INTENT(IN) :: self + + CALL lammps_flush_buffers(self%handle) + END SUBROUTINE lmp_flush_buffers + ! equivalent function to lammps_is_running LOGICAL FUNCTION lmp_is_running(self) - CLASS(lammps) :: self + CLASS(lammps), INTENT(IN) :: self - lmp_is_running = ( lammps_is_running(self%handle) /= 0_C_int ) + lmp_is_running = (lammps_is_running(self%handle) /= 0_c_int) END FUNCTION lmp_is_running + ! equivalent function to lammps_force_timeout + SUBROUTINE lmp_force_timeout(self) + CLASS(lammps), INTENT(IN) :: self + + CALL lammps_force_timeout(self%handle) + END SUBROUTINE + + ! equivalent function to lammps_has_error + LOGICAL FUNCTION lmp_has_error(self) + CLASS(lammps), INTENT(IN) :: self + INTEGER(c_int) :: has_error + + has_error = lammps_has_error(self%handle) + lmp_has_error = (has_error /= 0_c_int) + END FUNCTION lmp_has_error + + ! equivalent function to lammps_get_last_error_message + SUBROUTINE lmp_get_last_error_message(self, buffer, status) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(OUT) :: buffer + INTEGER, INTENT(OUT), OPTIONAL :: status + INTEGER(c_int) :: buflen, Cstatus + CHARACTER(LEN=1, KIND=c_char), DIMENSION(LEN(buffer)+1), TARGET :: Cbuffer + TYPE(c_ptr) :: Cptr + + buffer = '' + IF (lmp_has_error(self)) THEN + buflen = LEN(buffer, KIND=c_int) + 1_c_int + Cptr = C_LOC(Cbuffer(1)) + Cstatus = lammps_get_last_error_message(self%handle, Cptr, buflen) + buffer = array2string(Cbuffer) + IF (PRESENT(status)) THEN + status = Cstatus + END IF + ELSE + buffer = '' + IF (PRESENT(status)) THEN + status = 0 + END IF + END IF + END SUBROUTINE lmp_get_last_error_message + ! ---------------------------------------------------------------------- ! functions to assign user-space pointers to LAMMPS data ! ---------------------------------------------------------------------- - SUBROUTINE assign_int_to_lammps_data (lhs, rhs) + SUBROUTINE assign_int_to_lammps_data(lhs, rhs) INTEGER(c_int), INTENT(OUT), POINTER :: lhs CLASS(lammps_data), INTENT(IN) :: rhs - IF ( rhs%datatype == DATA_INT ) THEN + IF (rhs%datatype == DATA_INT) THEN lhs => rhs%i32 ELSE - CALL assignment_error(rhs%datatype, 'scalar int') + CALL assignment_error(rhs, 'scalar int') END IF END SUBROUTINE assign_int_to_lammps_data - SUBROUTINE assign_int64_to_lammps_data (lhs, rhs) + SUBROUTINE assign_int64_to_lammps_data(lhs, rhs) INTEGER(c_int64_t), INTENT(OUT), POINTER :: lhs CLASS(lammps_data), INTENT(IN) :: rhs - IF ( rhs%datatype == DATA_INT64 ) THEN + IF (rhs%datatype == DATA_INT64) THEN lhs => rhs%i64 ELSE - CALL assignment_error(rhs%datatype, 'scalar long int') + CALL assignment_error(rhs, 'scalar long int') END IF END SUBROUTINE assign_int64_to_lammps_data - SUBROUTINE assign_intvec_to_lammps_data (lhs, rhs) + SUBROUTINE assign_intvec_to_lammps_data(lhs, rhs) INTEGER(c_int), DIMENSION(:), INTENT(OUT), POINTER :: lhs CLASS(lammps_data), INTENT(IN) :: rhs - IF ( rhs%datatype == DATA_INT_1D ) THEN + IF (rhs%datatype == DATA_INT_1D) THEN lhs => rhs%i32_vec ELSE - CALL assignment_error(rhs%datatype, 'vector of ints') + CALL assignment_error(rhs, 'vector of ints') END IF END SUBROUTINE assign_intvec_to_lammps_data - SUBROUTINE assign_double_to_lammps_data (lhs, rhs) + SUBROUTINE assign_int64vec_to_lammps_data(lhs, rhs) + INTEGER(c_int64_t), DIMENSION(:), INTENT(OUT), POINTER :: lhs + CLASS(lammps_data), INTENT(IN) :: rhs + + IF (rhs%datatype == DATA_INT64_1D) THEN + lhs => rhs%i64_vec + ELSE + CALL assignment_error(rhs, 'vector of long ints') + END IF + END SUBROUTINE assign_int64vec_to_lammps_data + + SUBROUTINE assign_double_to_lammps_data(lhs, rhs) REAL(c_double), INTENT(OUT), POINTER :: lhs CLASS(lammps_data), INTENT(IN) :: rhs - IF ( rhs%datatype == DATA_DOUBLE ) THEN + IF (rhs%datatype == DATA_DOUBLE) THEN lhs => rhs%r64 ELSE - CALL assignment_error(rhs%datatype, 'scalar double') + CALL assignment_error(rhs, 'scalar double') END IF END SUBROUTINE assign_double_to_lammps_data - SUBROUTINE assign_doublevec_to_lammps_data (lhs, rhs) + SUBROUTINE assign_doublevec_to_lammps_data(lhs, rhs) REAL(c_double), DIMENSION(:), INTENT(OUT), POINTER :: lhs CLASS(lammps_data), INTENT(IN) :: rhs - IF ( rhs%datatype == DATA_DOUBLE_1D ) THEN + IF (rhs%datatype == DATA_DOUBLE_1D) THEN lhs => rhs%r64_vec ELSE - CALL assignment_error(rhs%datatype, 'vector of doubles') + CALL assignment_error(rhs, 'vector of doubles') END IF END SUBROUTINE assign_doublevec_to_lammps_data - SUBROUTINE assign_string_to_lammps_data (lhs, rhs) + SUBROUTINE assign_doublemat_to_lammps_data(lhs, rhs) + REAL(c_double), DIMENSION(:,:), INTENT(OUT), POINTER :: lhs + CLASS(lammps_data), INTENT(IN) :: rhs + + IF (rhs%datatype == DATA_DOUBLE_2D) THEN + lhs => rhs%r64_mat + ELSE + CALL assignment_error(rhs, 'matrix of doubles') + END IF + END SUBROUTINE assign_doublemat_to_lammps_data + + SUBROUTINE assign_string_to_lammps_data(lhs, rhs) CHARACTER(LEN=*), INTENT(OUT) :: lhs CLASS(lammps_data), INTENT(IN) :: rhs - IF ( rhs%datatype == DATA_STRING ) THEN + IF (rhs%datatype == DATA_STRING) THEN lhs = rhs%str + IF (LEN_TRIM(rhs%str) > LEN(lhs)) THEN + CALL lmp_error(rhs%lammps_instance, LMP_ERROR_WARNING, & + 'String provided by user required truncation [Fortran API]') + END IF ELSE - CALL assignment_error(rhs%datatype, 'string') + CALL assignment_error(rhs, 'string') END IF END SUBROUTINE assign_string_to_lammps_data - SUBROUTINE assignment_error (type1, type2) - INTEGER (c_int) :: type1 - CHARACTER (LEN=*) :: type2 - INTEGER, PARAMETER :: ERROR_CODE = 1 - CHARACTER (LEN=:), ALLOCATABLE :: str1 + ! ---------------------------------------------------------------------- + ! functions to assign user-space pointers to LAMMPS *fix* data + ! ---------------------------------------------------------------------- + SUBROUTINE assign_double_to_lammps_fix_data(lhs, rhs) + REAL(c_double), INTENT(OUT) :: lhs + CLASS(lammps_fix_data), INTENT(IN) :: rhs - SELECT CASE (type1) - CASE (DATA_INT) + IF (rhs%datatype == DATA_DOUBLE) THEN + lhs = rhs%r64 + ELSE + CALL assignment_error(rhs, 'scalar double') + END IF + END SUBROUTINE assign_double_to_lammps_fix_data + + SUBROUTINE assign_doublevec_to_lammps_fix_data(lhs, rhs) + REAL(c_double), DIMENSION(:), INTENT(OUT), POINTER :: lhs + CLASS(lammps_fix_data), INTENT(IN) :: rhs + + IF (rhs%datatype == DATA_DOUBLE_1D) THEN + lhs => rhs%r64_vec + ELSE + CALL assignment_error(rhs, 'vector of doubles') + END IF + END SUBROUTINE assign_doublevec_to_lammps_fix_data + + SUBROUTINE assign_doublemat_to_lammps_fix_data(lhs, rhs) + REAL(c_double), DIMENSION(:,:), INTENT(OUT), POINTER :: lhs + CLASS(lammps_fix_data), INTENT(IN) :: rhs + + IF (rhs%datatype == DATA_DOUBLE_2D) THEN + lhs => rhs%r64_mat + ELSE + CALL assignment_error(rhs, 'matrix of doubles') + END IF + END SUBROUTINE assign_doublemat_to_lammps_fix_data + + ! ---------------------------------------------------------------------- + ! functions to assign user-space pointers to LAMMPS *variable* data + ! ---------------------------------------------------------------------- + SUBROUTINE assign_double_to_lammps_variable_data(lhs, rhs) + REAL(c_double), INTENT(OUT) :: lhs + CLASS(lammps_variable_data), INTENT(IN) :: rhs + + IF (rhs%datatype == DATA_DOUBLE) THEN + lhs = rhs%r64 + ELSE + CALL assignment_error(rhs, 'scalar double') + END IF + END SUBROUTINE assign_double_to_lammps_variable_data + + SUBROUTINE assign_doublevec_to_lammps_variable_data(lhs, rhs) + REAL(c_double), DIMENSION(:), ALLOCATABLE, INTENT(OUT) :: lhs + CLASS(lammps_variable_data), INTENT(IN) :: rhs + + IF (rhs%datatype == DATA_DOUBLE_1D) THEN + IF (ALLOCATED(lhs)) DEALLOCATE(lhs) + ALLOCATE(lhs(SIZE(rhs%r64_vec))) + lhs = rhs%r64_vec + ELSE + CALL assignment_error(rhs, 'vector of doubles') + END IF + END SUBROUTINE assign_doublevec_to_lammps_variable_data + + SUBROUTINE assign_string_to_lammps_variable_data(lhs, rhs) + CHARACTER(LEN=*), INTENT(OUT) :: lhs + CLASS(lammps_variable_data), INTENT(IN) :: rhs + + IF (rhs%datatype == DATA_STRING) THEN + lhs = rhs%str + IF (LEN_TRIM(rhs%str) > LEN(lhs)) THEN + CALL lmp_error(rhs%lammps_instance, LMP_ERROR_WARNING, & + 'String provided by user required truncation [Fortran API]') + END IF + ELSE + CALL assignment_error(rhs, 'string') + END IF + END SUBROUTINE assign_string_to_lammps_variable_data + + SUBROUTINE assign_int_to_lammps_image_data(lhs, rhs) + INTEGER(c_int), INTENT(OUT) :: lhs + CLASS(lammps_image_data), INTENT(IN) :: rhs + + IF (rhs%datatype == DATA_INT) THEN + lhs = rhs%i32 + ELSE + CALL assignment_error(rhs, 'scalar int') + END IF + END SUBROUTINE assign_int_to_lammps_image_data + + SUBROUTINE assign_int64_to_lammps_image_data(lhs, rhs) + INTEGER(c_int64_t), INTENT(OUT) :: lhs + CLASS(lammps_image_data), INTENT(IN) :: rhs + + IF (rhs%datatype == DATA_INT64) THEN + lhs = rhs%i64 + ELSE + CALL assignment_error(rhs, 'scalar long int') + END IF + END SUBROUTINE assign_int64_to_lammps_image_data + + ! ---------------------------------------------------------------------- + ! Generic function to catch all errors in assignments of LAMMPS data to + ! user-space variables/pointers + ! ---------------------------------------------------------------------- + SUBROUTINE assignment_error(type1, str2) + CLASS(lammps_data_baseclass), INTENT(IN) :: type1 + CHARACTER(LEN=*), INTENT(IN) :: str2 + CHARACTER(LEN=:), ALLOCATABLE :: str1 + + SELECT CASE(type1%datatype) + CASE(DATA_INT) str1 = 'scalar int' - CASE (DATA_INT_1D) + CASE(DATA_INT_1D) str1 = 'vector of ints' - CASE (DATA_INT_2D) + CASE(DATA_INT_2D) str1 = 'matrix of ints' - CASE (DATA_INT64) + CASE(DATA_INT64) str1 = 'scalar long int' - CASE (DATA_INT64_1D) + CASE(DATA_INT64_1D) str1 = 'vector of long ints' - CASE (DATA_INT64_2D) + CASE(DATA_INT64_2D) str1 = 'matrix of long ints' - CASE (DATA_DOUBLE) + CASE(DATA_DOUBLE) str1 = 'scalar double' - CASE (DATA_DOUBLE_1D) + CASE(DATA_DOUBLE_1D) str1 = 'vector of doubles' - CASE (DATA_DOUBLE_2D) + CASE(DATA_DOUBLE_2D) str1 = 'matrix of doubles' + CASE(DATA_STRING) + str1 = 'string' CASE DEFAULT str1 = 'that type' END SELECT - WRITE (ERROR_UNIT,'(A)') 'Cannot associate ' // str1 // ' with ' // type2 - STOP ERROR_CODE + CALL lmp_error(type1%lammps_instance, LMP_ERROR_ALL + LMP_ERROR_WORLD, & + 'cannot associate ' // str1 // ' with ' // str2 // ' [Fortran API]') END SUBROUTINE assignment_error ! ---------------------------------------------------------------------- @@ -773,6 +2632,46 @@ CONTAINS END DO c_string(n+1) = c_null_char END FUNCTION f2c_string + + ! copy null-terminated C string to fortran string + FUNCTION c2f_string(ptr) RESULT(f_string) + TYPE(c_ptr), INTENT(IN) :: ptr + CHARACTER(LEN=:), ALLOCATABLE :: f_string + CHARACTER(LEN=1, KIND=c_char), DIMENSION(:), POINTER :: c_string + INTEGER :: n + + IF (.NOT. C_ASSOCIATED(ptr)) THEN + f_string = '' + ELSE + n = INT(c_strlen(ptr), KIND=KIND(n)) + CALL C_F_POINTER(ptr, c_string, [n+1]) + f_string = array2string(c_string, n) + END IF + END FUNCTION c2f_string + + ! Copy a known-length or null-terminated array of C characters into a string + FUNCTION array2string(array, length) RESULT(string) + CHARACTER(LEN=1, KIND=c_char), DIMENSION(:) :: array +! NOTE: giving "length" the VALUE attribute reveals a bug in gfortran 12.2.1 +! https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107441 + INTEGER, INTENT(IN), OPTIONAL :: length + CHARACTER(LEN=:), ALLOCATABLE :: string + INTEGER :: n, i + + IF (PRESENT(length)) THEN + n = length + ELSE + n = 1 + DO WHILE (n < SIZE(array) .AND. array(n+1) /= c_null_char) + n = n + 1 + END DO + END IF + ALLOCATE(CHARACTER(LEN=n) :: string) + DO i = 1, n + string(i:i) = array(i) + END DO + END FUNCTION array2string + END MODULE LIBLAMMPS ! vim: ts=2 sts=2 sw=2 et diff --git a/lib/electrode/Makefile.serial b/lib/electrode/Makefile.serial index 8bdd02bae3..0bcc22a58a 100644 --- a/lib/electrode/Makefile.serial +++ b/lib/electrode/Makefile.serial @@ -11,7 +11,7 @@ OBJ = $(SRC:.cpp=.o) # ------ SETTINGS ------ -# include any MPI settings needed for the ATC library to build with +# include any MPI settings needed for the electrode library to build with # the same MPI library that LAMMPS is built with CC = g++ diff --git a/lib/gpu/Makefile.oneapi b/lib/gpu/Makefile.oneapi index 015ab47057..d0ed78d0c4 100644 --- a/lib/gpu/Makefile.oneapi +++ b/lib/gpu/Makefile.oneapi @@ -1,5 +1,5 @@ -# /* ---------------------------------------------------------------------- -# Generic Linux Makefile for OpenCL +# /* ---------------------------------------------------------------------- +# Linux Makefile for Intel oneAPI - Mixed precision # ------------------------------------------------------------------------- */ # which file will be copied to Makefile.lammps @@ -11,11 +11,14 @@ EXTRAMAKE = Makefile.lammps.opencl LMP_INC = -DLAMMPS_SMALLBIG -OCL_INC = -OCL_CPP = mpiicpc -std=c++11 -xHost -O2 -qopenmp -qopenmp-simd -DMPICH_IGNORE_CXX_SEEK $(LMP_INC) $(OCL_INC) -OCL_LINK = -lOpenCL +OCL_INC = -I$(ONEAPI_ROOT)/compiler/latest/linux/include/sycl/ +CPP_OPT = -xHost -O2 -qopenmp -qopenmp-simd -fp-model fast=2 -no-prec-div \ + -qoverride-limits +OCL_CPP = mpiicpc -std=c++11 -diag-disable=10441 -DMPICH_IGNORE_CXX_SEEK \ + $(LMP_INC) $(OCL_INC) $(CPP_OPT) +OCL_LINK = -L$(ONEAPI_ROOT)/compiler/latest/linux/lib -lOpenCL OCL_PREC = -D_SINGLE_DOUBLE -OCL_TUNE = -DMPI_GERYON -DGERYON_NUMA_FISSION -DUCL_NO_EXIT -fp-model fast=2 -no-prec-div +OCL_TUNE = -DMPI_GERYON -DCUDA_PROXY -DGERYON_NUMA_FISSION -DUCL_NO_EXIT BIN_DIR = ./ OBJ_DIR = ./ diff --git a/lib/gpu/README b/lib/gpu/README index 100179feca..79397a7066 100644 --- a/lib/gpu/README +++ b/lib/gpu/README @@ -264,6 +264,20 @@ GERYON_KERNEL_DUMP Dump all compiled OpenCL programs with compiler flags and build logs GPU_CAST Casting performed on GPU, untested recently THREE_CONCURRENT Concurrent 3-body calcs in separate queues, untested +LAL_SERIALIZE_INIT Force serialization of initialization and compilation + for multiple MPI tasks sharing the same accelerator. + Some accelerator API implementations have had issues + with temporary file conflicts in the past. +GERYON_FORCE_SHARED_MAIN_MEM_ON Should only be used for builds where the + accelerator is guaranteed to share physical + main memory with the host (e.g. integrated + GPU or CPU device). Default behavior is to + auto-detect. Impacts OpenCL only. +GERYON_FORCE_SHARED_MAIN_MEM_OFF Should only be used for builds where the + accelerator is guaranteed to have discrete + physical main memory vs the host (discrete + GPU card). Default behavior is to + auto-detect. Impacts OpenCL only. ------------------------------------------------------------------------------ diff --git a/lib/gpu/geryon/ocl_device.h b/lib/gpu/geryon/ocl_device.h index 506ee1fe91..4163d40881 100644 --- a/lib/gpu/geryon/ocl_device.h +++ b/lib/gpu/geryon/ocl_device.h @@ -126,10 +126,13 @@ class UCL_Device { /// Return the number of devices that support OpenCL inline int num_devices() { return _num_devices; } - /// Specify whether profiling (device timers) will be used for the device (yes=true) + /// Specify whether profiling (device timers) will be used (yes=true) /** No-op for CUDA and HIP **/ - inline void configure_profiling(const bool profiling_on) - { _cq_profiling = profiling_on; } + inline void configure_profiling(const bool profiling_on) { + #ifndef GERYON_NO_OCL_MARKERS + _cq_profiling = profiling_on; + #endif + } /// Set the OpenCL device to the specified device number /** A context and default command queue will be created for the device * @@ -176,19 +179,19 @@ class UCL_Device { #ifdef CL_VERSION_2_0 if (_cq_profiling) { - cl_queue_properties props[] = {CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, - 0}; + cl_queue_properties props[] = {CL_QUEUE_PROPERTIES, + CL_QUEUE_PROFILING_ENABLE, 0}; _cq.back()=clCreateCommandQueueWithProperties(_context, _cl_device, props, &errorv); } else { - cl_queue_properties props[] = {CL_QUEUE_PROPERTIES, 0}; + cl_queue_properties props[] = {0}; _cq.back()=clCreateCommandQueueWithProperties(_context, _cl_device, props, &errorv); } #else if (_cq_profiling) - _cq.back()=clCreateCommandQueue(_context, _cl_device, CL_QUEUE_PROFILING_ENABLE, - &errorv); + _cq.back()=clCreateCommandQueue(_context, _cl_device, + CL_QUEUE_PROFILING_ENABLE, &errorv); else _cq.back()=clCreateCommandQueue(_context, _cl_device, 0, &errorv); #endif @@ -403,7 +406,11 @@ class UCL_Device { // Grabs the properties for all devices UCL_Device::UCL_Device() { _device=-1; + #ifndef GERYON_NO_OCL_MARKERS _cq_profiling=true; + #else + _cq_profiling=false; + #endif // --- Get Number of Platforms cl_uint nplatforms; @@ -482,6 +489,7 @@ int UCL_Device::set_platform(int pid) { _num_devices = 0; for (int i=0; i 1) { - cl_device_id *subdevice_list = new cl_device_id[num_subdevices]; - CL_SAFE_CALL(clCreateSubDevices(device_list[i], props, num_subdevices, - subdevice_list, &num_subdevices)); - for (cl_uint j=0; j 1) { + subdevice_list = new cl_device_id[num_subdevices]; + err = clCreateSubDevices(device_list[i], props, num_subdevices, + subdevice_list, &num_subdevices); + if (err != CL_SUCCESS) { + delete[] subdevice_list; + num_subdevices = 1; + subdevice_list = device_list + i; } - delete[] subdevice_list; - } else { - _cl_devices.push_back(device_list[i]); - add_properties(device_list[i]); - _num_devices++; } #endif + + for (cl_uint j=0; j 1) delete[] subdevice_list; } // for i #endif @@ -524,9 +536,9 @@ int UCL_Device::create_context() { cl_int errorv; cl_context_properties props[3]; props[0]=CL_CONTEXT_PLATFORM; - props[1]=_platform; + props[1]=(cl_context_properties)_cl_platform; props[2]=0; - _context=clCreateContext(0,1,&_cl_device,nullptr,nullptr,&errorv); + _context=clCreateContext(props,1,&_cl_device,nullptr,nullptr,&errorv); if (errorv!=CL_SUCCESS) { #ifndef UCL_NO_EXIT std::cerr << "UCL Error: Could not access accelerator number " << _device @@ -686,10 +698,10 @@ void UCL_Device::add_properties(cl_device_id device_list) { double arch = static_cast(minor)/10+major; if (arch >= 3.0) op.has_shuffle_support=true; - op.shared_main_memory=_shared_mem_device(device_list); } delete[] buffer2; #endif + op.shared_main_memory=_shared_mem_device(device_list); _properties.push_back(op); } diff --git a/lib/gpu/geryon/ocl_texture.h b/lib/gpu/geryon/ocl_texture.h index 43de4b258c..8ddde5b2a3 100644 --- a/lib/gpu/geryon/ocl_texture.h +++ b/lib/gpu/geryon/ocl_texture.h @@ -76,7 +76,7 @@ class UCL_Const { /// Copy from array on host to const memory template inline void update_device(UCL_H_Vec &src, const int numel) { - const int bytes=numel*sizeof(numtyp); + const size_t bytes=numel*sizeof(numtyp); if (_global_bytes < bytes) { if (_global_bytes) CL_SAFE_CALL(clReleaseMemObject(_global)); cl_int e; @@ -84,7 +84,7 @@ class UCL_Const { CL_SAFE_CALL(e); } CL_SAFE_CALL(clEnqueueWriteBuffer(_cq, _global, CL_FALSE, 0, bytes, - (void *)src.begin(), 0, NULL, NULL)); + (void *)src.begin(), 0, NULL, NULL)); } /// Get device ptr associated with object inline const cl_mem * begin() const { return &_global; } diff --git a/lib/gpu/geryon/ocl_timer.h b/lib/gpu/geryon/ocl_timer.h index bd77170ed9..189871e631 100644 --- a/lib/gpu/geryon/ocl_timer.h +++ b/lib/gpu/geryon/ocl_timer.h @@ -27,11 +27,15 @@ #include "ocl_macros.h" #include "ocl_device.h" +#ifndef GERYON_NO_OCL_MARKERS #ifdef CL_VERSION_1_2 #define UCL_OCL_MARKER(cq,event) clEnqueueMarkerWithWaitList(cq,0,nullptr,event) #else #define UCL_OCL_MARKER clEnqueueMarker #endif +#else +#define UCL_OCL_MARKER(cq,event) +#endif namespace ucl_opencl { @@ -51,8 +55,10 @@ class UCL_Timer { inline void clear() { if (_initialized) { if (has_measured_time) { + #ifndef GERYON_NO_OCL_MARKERS clReleaseEvent(start_event); clReleaseEvent(stop_event); + #endif has_measured_time = false; } CL_DESTRUCT_CALL(clReleaseCommandQueue(_cq)); @@ -76,8 +82,10 @@ class UCL_Timer { /// Start timing on default command queue inline void start() { if (has_measured_time) { + #ifndef GERYON_NO_OCL_MARKERS clReleaseEvent(start_event); clReleaseEvent(stop_event); + #endif has_measured_time = false; } UCL_OCL_MARKER(_cq,&start_event); @@ -91,17 +99,26 @@ class UCL_Timer { /// Block until the start event has been reached on device inline void sync_start() { + #ifndef GERYON_NO_OCL_MARKERS + CL_SAFE_CALL(clWaitForEvents(1,&start_event)); if (has_measured_time) { clReleaseEvent(start_event); clReleaseEvent(stop_event); has_measured_time = false; } - CL_SAFE_CALL(clWaitForEvents(1,&start_event)); + #else + CL_SAFE_CALL(clFinish(_cq)); + has_measured_time = false; + #endif } /// Block until the stop event has been reached on device inline void sync_stop() { + #ifndef GERYON_NO_OCL_MARKERS CL_SAFE_CALL(clWaitForEvents(1,&stop_event)); + #else + CL_SAFE_CALL(clFinish(_cq)); + #endif has_measured_time = true; } @@ -126,6 +143,7 @@ class UCL_Timer { /// Return the time (ms) of last start to stop - Forces synchronization inline double time() { if(!has_measured_time) return 0.0; + #ifndef GERYON_NO_OCL_MARKERS cl_ulong tstart,tend; CL_SAFE_CALL(clWaitForEvents(1,&stop_event)); CL_SAFE_CALL(clGetEventProfilingInfo(stop_event, @@ -138,6 +156,11 @@ class UCL_Timer { clReleaseEvent(stop_event); has_measured_time = false; return (tend-tstart)*1e-6; + #else + CL_SAFE_CALL(clFinish(_cq)); + has_measured_time = false; + return 0.0; + #endif } /// Return the time (s) of last start to stop - Forces synchronization diff --git a/lib/gpu/geryon/ucl_d_vec.h b/lib/gpu/geryon/ucl_d_vec.h index 6c10568f86..9158e145b3 100644 --- a/lib/gpu/geryon/ucl_d_vec.h +++ b/lib/gpu/geryon/ucl_d_vec.h @@ -375,7 +375,7 @@ class UCL_D_Vec : public UCL_BaseMat { /// Resize (only if bigger) the allocation to contain cols elements /** \note Cannot be used on views **/ inline int resize_ib(const int cols) - { if (cols>_cols) return resize(cols); else return UCL_SUCCESS; } + { if (cols > (int)_cols) return resize(cols); else return UCL_SUCCESS; } /// Set each element to zero asynchronously in the default command_queue inline void zero() { zero(_cq); } diff --git a/lib/gpu/lal_base_atomic.cpp b/lib/gpu/lal_base_atomic.cpp index 36114dabf6..0cfc084fa4 100644 --- a/lib/gpu/lal_base_atomic.cpp +++ b/lib/gpu/lal_base_atomic.cpp @@ -342,8 +342,7 @@ void BaseAtomicT::compile_kernels(UCL_Device &dev, const void *pair_str, #if defined(LAL_OCL_EV_JIT) mx_subgroup_sz = std::min(mx_subgroup_sz, k_pair_noev.max_subgroup_size(_block_size)); #endif - if (_threads_per_atom > mx_subgroup_sz) - _threads_per_atom = mx_subgroup_sz; + if (_threads_per_atom > (int)mx_subgroup_sz) _threads_per_atom = mx_subgroup_sz; device->set_simd_size(mx_subgroup_sz); } #endif diff --git a/lib/gpu/lal_base_charge.cpp b/lib/gpu/lal_base_charge.cpp index 5c0fbd0ec1..3cd6c6030a 100644 --- a/lib/gpu/lal_base_charge.cpp +++ b/lib/gpu/lal_base_charge.cpp @@ -361,8 +361,7 @@ void BaseChargeT::compile_kernels(UCL_Device &dev, const void *pair_str, #if defined(LAL_OCL_EV_JIT) mx_subgroup_sz = std::min(mx_subgroup_sz, k_pair_noev.max_subgroup_size(_block_size)); #endif - if (_threads_per_atom > mx_subgroup_sz) - _threads_per_atom = mx_subgroup_sz; + if (_threads_per_atom > (int)mx_subgroup_sz) _threads_per_atom = mx_subgroup_sz; device->set_simd_size(mx_subgroup_sz); } #endif diff --git a/lib/gpu/lal_base_dipole.cpp b/lib/gpu/lal_base_dipole.cpp index 71650ebf7e..6ef1c40ca7 100644 --- a/lib/gpu/lal_base_dipole.cpp +++ b/lib/gpu/lal_base_dipole.cpp @@ -363,8 +363,7 @@ void BaseDipoleT::compile_kernels(UCL_Device &dev, const void *pair_str, #if defined(LAL_OCL_EV_JIT) mx_subgroup_sz = std::min(mx_subgroup_sz, k_pair_noev.max_subgroup_size(_block_size)); #endif - if (_threads_per_atom > mx_subgroup_sz) - _threads_per_atom = mx_subgroup_sz; + if (_threads_per_atom > (int)mx_subgroup_sz) _threads_per_atom = mx_subgroup_sz; device->set_simd_size(mx_subgroup_sz); } #endif diff --git a/lib/gpu/lal_base_dpd.cpp b/lib/gpu/lal_base_dpd.cpp index 07c11caf8f..c084c02ff0 100644 --- a/lib/gpu/lal_base_dpd.cpp +++ b/lib/gpu/lal_base_dpd.cpp @@ -364,8 +364,7 @@ void BaseDPDT::compile_kernels(UCL_Device &dev, const void *pair_str, #if defined(LAL_OCL_EV_JIT) mx_subgroup_sz = std::min(mx_subgroup_sz, k_pair_noev.max_subgroup_size(_block_size)); #endif - if (_threads_per_atom > mx_subgroup_sz) - _threads_per_atom = mx_subgroup_sz; + if (_threads_per_atom > (int)mx_subgroup_sz) _threads_per_atom = mx_subgroup_sz; device->set_simd_size(mx_subgroup_sz); } #endif diff --git a/lib/gpu/lal_base_ellipsoid.cpp b/lib/gpu/lal_base_ellipsoid.cpp index ca7dc645bc..0bc20615a1 100644 --- a/lib/gpu/lal_base_ellipsoid.cpp +++ b/lib/gpu/lal_base_ellipsoid.cpp @@ -569,8 +569,7 @@ void BaseEllipsoidT::compile_kernels(UCL_Device &dev, if (e_s) mx_subgroup_sz = std::min(mx_subgroup_sz, k_ellipsoid_sphere_noev.max_subgroup_size(_block_size)); #endif - if (_threads_per_atom > mx_subgroup_sz) - _threads_per_atom = mx_subgroup_sz; + if (_threads_per_atom > (int)mx_subgroup_sz) _threads_per_atom = mx_subgroup_sz; device->set_simd_size(mx_subgroup_sz); } #endif diff --git a/lib/gpu/lal_base_three.cpp b/lib/gpu/lal_base_three.cpp index de429862f2..bfadfebf66 100644 --- a/lib/gpu/lal_base_three.cpp +++ b/lib/gpu/lal_base_three.cpp @@ -473,8 +473,7 @@ void BaseThreeT::compile_kernels(UCL_Device &dev, const void *pair_str, mx_subgroup_sz = std::min(mx_subgroup_sz, k_three_center_noev.max_subgroup_size(_block_size)); mx_subgroup_sz = std::min(mx_subgroup_sz, k_three_end_noev.max_subgroup_size(_block_size)); #endif - if (_threads_per_atom > mx_subgroup_sz) - _threads_per_atom = mx_subgroup_sz; + if (_threads_per_atom > (int)mx_subgroup_sz) _threads_per_atom = mx_subgroup_sz; device->set_simd_size(mx_subgroup_sz); } #endif diff --git a/lib/gpu/lal_beck_ext.cpp b/lib/gpu/lal_beck_ext.cpp index ab65237e27..d4be986ff5 100644 --- a/lib/gpu/lal_beck_ext.cpp +++ b/lib/gpu/lal_beck_ext.cpp @@ -76,7 +76,7 @@ int beck_gpu_init(const int ntypes, double **cutsq, double **aa, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - BLMF.device->gpu_barrier(); + BLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_born_coul_long_cs_ext.cpp b/lib/gpu/lal_born_coul_long_cs_ext.cpp index fc6b89692f..3d6383acca 100644 --- a/lib/gpu/lal_born_coul_long_cs_ext.cpp +++ b/lib/gpu/lal_born_coul_long_cs_ext.cpp @@ -84,7 +84,7 @@ int bornclcs_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); - BCLCSMF.device->gpu_barrier(); + BCLCSMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_born_coul_long_ext.cpp b/lib/gpu/lal_born_coul_long_ext.cpp index 9d17f2fa7d..6975f5237e 100644 --- a/lib/gpu/lal_born_coul_long_ext.cpp +++ b/lib/gpu/lal_born_coul_long_ext.cpp @@ -84,7 +84,7 @@ int borncl_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); - BORNCLMF.device->gpu_barrier(); + BORNCLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_born_coul_wolf_cs_ext.cpp b/lib/gpu/lal_born_coul_wolf_cs_ext.cpp index ae162a7c52..be07504727 100644 --- a/lib/gpu/lal_born_coul_wolf_cs_ext.cpp +++ b/lib/gpu/lal_born_coul_wolf_cs_ext.cpp @@ -86,7 +86,7 @@ int borncwcs_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, host_cut_coulsq, host_special_coul, qqrd2e, alf, e_shift, f_shift); - BornCWCST.device->gpu_barrier(); + BornCWCST.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_born_coul_wolf_ext.cpp b/lib/gpu/lal_born_coul_wolf_ext.cpp index bc38db1b9c..a3e8fd44f2 100644 --- a/lib/gpu/lal_born_coul_wolf_ext.cpp +++ b/lib/gpu/lal_born_coul_wolf_ext.cpp @@ -86,7 +86,7 @@ int borncw_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, host_cut_coulsq, host_special_coul, qqrd2e, alf, e_shift, f_shift); - BORNCWMF.device->gpu_barrier(); + BORNCWMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_born_ext.cpp b/lib/gpu/lal_born_ext.cpp index 2321a1264d..ca2b79865a 100644 --- a/lib/gpu/lal_born_ext.cpp +++ b/lib/gpu/lal_born_ext.cpp @@ -80,7 +80,7 @@ int born_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - BORNMF.device->gpu_barrier(); + BORNMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -114,7 +114,7 @@ void born_gpu_reinit(const int ntypes, double **host_rhoinv, BORNMF.reinit(ntypes, host_rhoinv, host_born1, host_born2, host_born3, host_a, host_c, host_d, offset); - BORNMF.device->gpu_barrier(); + BORNMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_buck_coul_ext.cpp b/lib/gpu/lal_buck_coul_ext.cpp index 9cf8f9b00e..cb07daecc4 100644 --- a/lib/gpu/lal_buck_coul_ext.cpp +++ b/lib/gpu/lal_buck_coul_ext.cpp @@ -83,7 +83,7 @@ int buckc_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e); - BUCKCMF.device->gpu_barrier(); + BUCKCMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_buck_coul_long_ext.cpp b/lib/gpu/lal_buck_coul_long_ext.cpp index 393ccc3feb..3307b8f5bc 100644 --- a/lib/gpu/lal_buck_coul_long_ext.cpp +++ b/lib/gpu/lal_buck_coul_long_ext.cpp @@ -82,7 +82,7 @@ int buckcl_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, maxspecial, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); - BUCKCLMF.device->gpu_barrier(); + BUCKCLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_buck_ext.cpp b/lib/gpu/lal_buck_ext.cpp index 738b33337d..70915cb227 100644 --- a/lib/gpu/lal_buck_ext.cpp +++ b/lib/gpu/lal_buck_ext.cpp @@ -77,7 +77,7 @@ int buck_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, host_a, host_c, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - BUCKMF.device->gpu_barrier(); + BUCKMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -110,7 +110,7 @@ void buck_gpu_reinit(const int ntypes, double **cutsq, double **host_rhoinv, BUCKMF.reinit(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, host_a, host_c, offset); - BUCKMF.device->gpu_barrier(); + BUCKMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_charmm_ext.cpp b/lib/gpu/lal_charmm_ext.cpp index bed2f21933..471599b1b1 100644 --- a/lib/gpu/lal_charmm_ext.cpp +++ b/lib/gpu/lal_charmm_ext.cpp @@ -88,7 +88,7 @@ int crm_gpu_init(const int ntypes, double cut_bothsq, double **host_lj1, qqrd2e, cut_lj_innersq, cut_coul_innersq, denom_lj, denom_coul, epsilon, sigma, mix_arithmetic); - CRMMF.device->gpu_barrier(); + CRMMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_charmm_long_ext.cpp b/lib/gpu/lal_charmm_long_ext.cpp index 13565f5682..dfe3d99383 100644 --- a/lib/gpu/lal_charmm_long_ext.cpp +++ b/lib/gpu/lal_charmm_long_ext.cpp @@ -86,7 +86,7 @@ int crml_gpu_init(const int ntypes, double cut_bothsq, double **host_lj1, qqrd2e, g_ewald, cut_lj_innersq, denom_lj, epsilon, sigma, mix_arithmetic); - CRMLMF.device->gpu_barrier(); + CRMLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_colloid_ext.cpp b/lib/gpu/lal_colloid_ext.cpp index dcfd1a6d34..cfd050e486 100644 --- a/lib/gpu/lal_colloid_ext.cpp +++ b/lib/gpu/lal_colloid_ext.cpp @@ -83,7 +83,7 @@ int colloid_gpu_init(const int ntypes, double **cutsq, double **host_lj1, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - COLLMF.device->gpu_barrier(); + COLLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_coul_debye_ext.cpp b/lib/gpu/lal_coul_debye_ext.cpp index 516dca5df8..fbe319d499 100644 --- a/lib/gpu/lal_coul_debye_ext.cpp +++ b/lib/gpu/lal_coul_debye_ext.cpp @@ -74,7 +74,7 @@ int cdebye_gpu_init(const int ntypes, double **host_scale, double **cutsq, init_ok=CDEMF.init(ntypes, host_scale, cutsq, host_special_coul, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen, qqrd2e, kappa); - CDEMF.device->gpu_barrier(); + CDEMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -103,7 +103,7 @@ void cdebye_gpu_reinit(const int ntypes, double **host_scale) { if (gpu_rank==i && world_me!=0) CDEMF.reinit(ntypes, host_scale); - CDEMF.device->gpu_barrier(); + CDEMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_coul_dsf_ext.cpp b/lib/gpu/lal_coul_dsf_ext.cpp index e21c70ae4b..9654d1e1a3 100644 --- a/lib/gpu/lal_coul_dsf_ext.cpp +++ b/lib/gpu/lal_coul_dsf_ext.cpp @@ -77,7 +77,7 @@ int cdsf_gpu_init(const int ntypes, const int inum, const int nall, gpu_split, screen, host_cut_coulsq, host_special_coul, qqrd2e, e_shift, f_shift, alpha); - CDMF.device->gpu_barrier(); + CDMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_coul_ext.cpp b/lib/gpu/lal_coul_ext.cpp index 370c186123..91d4433e9a 100644 --- a/lib/gpu/lal_coul_ext.cpp +++ b/lib/gpu/lal_coul_ext.cpp @@ -74,7 +74,7 @@ int coul_gpu_init(const int ntypes, double **host_scale, init_ok=COULMF.init(ntypes, host_scale, cutsq, special_coul, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen, qqrd2e); - COULMF.device->gpu_barrier(); + COULMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -103,7 +103,7 @@ void coul_gpu_reinit(const int ntypes, double **host_scale) { if (gpu_rank==i && world_me!=0) COULMF.reinit(ntypes, host_scale); - COULMF.device->gpu_barrier(); + COULMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_coul_long_cs_ext.cpp b/lib/gpu/lal_coul_long_cs_ext.cpp index df92619f2f..be4630516c 100644 --- a/lib/gpu/lal_coul_long_cs_ext.cpp +++ b/lib/gpu/lal_coul_long_cs_ext.cpp @@ -76,7 +76,7 @@ int clcs_gpu_init(const int ntypes, double **host_scale, cell_size, gpu_split, screen, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); - CLCSMF.device->gpu_barrier(); + CLCSMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -105,7 +105,7 @@ void clcs_gpu_reinit(const int ntypes, double **host_scale) { if (gpu_rank==i && world_me!=0) CLCSMF.reinit(ntypes, host_scale); - CLCSMF.device->gpu_barrier(); + CLCSMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_coul_long_ext.cpp b/lib/gpu/lal_coul_long_ext.cpp index 1d9dcfdeca..034d23f507 100644 --- a/lib/gpu/lal_coul_long_ext.cpp +++ b/lib/gpu/lal_coul_long_ext.cpp @@ -76,7 +76,7 @@ int cl_gpu_init(const int ntypes, double **host_scale, cell_size, gpu_split, screen, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); - CLMF.device->gpu_barrier(); + CLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -105,7 +105,7 @@ void cl_gpu_reinit(const int ntypes, double **host_scale) { if (gpu_rank==i && world_me!=0) CLMF.reinit(ntypes, host_scale); - CLMF.device->gpu_barrier(); + CLMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_device.cpp b/lib/gpu/lal_device.cpp index 039970a0d3..cdac6dfc97 100644 --- a/lib/gpu/lal_device.cpp +++ b/lib/gpu/lal_device.cpp @@ -86,7 +86,7 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int ngpu, #ifdef LAL_OCL_EXTRA_ARGS extra_args+=":" LAL_PRE_STRINGIFY(LAL_OCL_EXTRA_ARGS); #endif - for (int i=0; iplatform_name(); - for (int i=0; i='a') pname[i]=toupper(pname[i]); if (pname.find("NVIDIA")!=std::string::npos) @@ -328,7 +328,7 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int ngpu, for (int i=0; i<_procs_per_gpu; i++) { if (_gpu_rank==i) flag=compile_kernels(); - gpu_barrier(); + serialize_init(); } // check if double precision support is available @@ -614,6 +614,10 @@ void DeviceT::init_message(FILE *screen, const char *name, int last=last_gpu+1; if (last>gpu->num_devices()) last=gpu->num_devices(); + if (gpu->num_platforms()>1) { + std::string pname=gpu->platform_name(); + fprintf(screen,"Platform: %s\n",pname.c_str()); + } for (int i=first_gpu; isync(); if (_data_in_estimate>0) { delete [] host_data_in; @@ -794,6 +799,7 @@ void DeviceT::output_times(UCL_Timer &time_pair, Answer &ans, #ifdef USE_OPENCL // Workaround for timing issue on Intel OpenCL if (times[0] > 80e6) times[0]=0.0; + if (times[1] > 80e6) times[1]=0.0; if (times[3] > 80e6) times[3]=0.0; if (times[5] > 80e6) times[5]=0.0; #endif @@ -807,9 +813,8 @@ void DeviceT::output_times(UCL_Timer &time_pair, Answer &ans, fprintf(screen,"--------------------------------\n"); if (time_device() && (times[3] > 0.0)) { - if (times[0] > 0.0) - fprintf(screen,"Data Transfer: %.4f s.\n",times[0]/_replica_size); - fprintf(screen,"Neighbor copy: %.4f s.\n",times[1]/_replica_size); + if (times[0] > 0.0) fprintf(screen,"Data Transfer: %.4f s.\n",times[0]/_replica_size); + if (times[1] > 0.0) fprintf(screen,"Neighbor copy: %.4f s.\n",times[1]/_replica_size); if (nbor.gpu_nbor() > 0.0) fprintf(screen,"Neighbor build: %.4f s.\n",times[2]/_replica_size); else @@ -863,32 +868,34 @@ void DeviceT::output_kspace_times(UCL_Timer &time_in, double max_mb=mpi_max_bytes/(1024.0*1024.0); #ifdef USE_OPENCL // Workaround for timing issue on Intel OpenCL + if (times[0] > 80e6) times[0]=0.0; + if (times[1] > 80e6) times[1]=0.0; if (times[3] > 80e6) times[3]=0.0; + if (times[5] > 80e6) times[5]=0.0; #endif if (replica_me()==0) - if (screen && times[6]>0.0) { + if (screen && (times[6] > 0.0)) { fprintf(screen,"\n\n-------------------------------------"); fprintf(screen,"--------------------------------\n"); fprintf(screen," Device Time Info (average) for kspace: "); fprintf(screen,"\n-------------------------------------"); fprintf(screen,"--------------------------------\n"); - if (time_device() && times[3]>0) { - fprintf(screen,"Data Out: %.4f s.\n",times[0]/_replica_size); - fprintf(screen,"Data In: %.4f s.\n",times[1]/_replica_size); + if (time_device() && (times[3] > 0.0)) { + if (times[0] > 0.0) fprintf(screen,"Data Out: %.4f s.\n",times[0]/_replica_size); + if (times[1] > 0.0) fprintf(screen,"Data In: %.4f s.\n",times[1]/_replica_size); fprintf(screen,"Kernel (map): %.4f s.\n",times[2]/_replica_size); fprintf(screen,"Kernel (rho): %.4f s.\n",times[3]/_replica_size); fprintf(screen,"Force interp: %.4f s.\n",times[4]/_replica_size); - fprintf(screen,"Total rho: %.4f s.\n", - (times[0]+times[2]+times[3])/_replica_size); - fprintf(screen,"Total interp: %.4f s.\n", - (times[1]+times[4])/_replica_size); - fprintf(screen,"Force copy: %.4f s.\n",times[5]/_replica_size); + if (times[0] > 0.0) + fprintf(screen,"Total rho: %.4f s.\n", (times[0]+times[2]+times[3])/_replica_size); + if (times[1] > 0.0) + fprintf(screen,"Total interp: %.4f s.\n", (times[1]+times[4])/_replica_size); + if (times[5] > 0.0) fprintf(screen,"Force copy: %.4f s.\n",times[5]/_replica_size); fprintf(screen,"Total: %.4f s.\n", - (times[0]+times[1]+times[2]+times[3]+times[4]+times[5])/ - _replica_size); + (times[0]+times[1]+times[2]+times[3]+times[4]+times[5])/_replica_size); } fprintf(screen,"CPU Poisson: %.4f s.\n",times[6]/_replica_size); fprintf(screen,"CPU Data Cast: %.4f s.\n",times[8]/_replica_size); diff --git a/lib/gpu/lal_device.h b/lib/gpu/lal_device.h index 74f802a096..3b27223007 100644 --- a/lib/gpu/lal_device.h +++ b/lib/gpu/lal_device.h @@ -218,6 +218,12 @@ class Device { inline int gpu_rank() const { return _gpu_rank; } /// MPI Barrier for gpu inline void gpu_barrier() { MPI_Barrier(_comm_gpu); } + /// Serialize GPU initialization and JIT for unsafe platforms + inline void serialize_init() { + #ifdef LAL_SERIALIZE_INIT + gpu_barrier(); + #endif + } /// Return the 'mode' for acceleration: GPU_FORCE, GPU_NEIGH or GPU_HYB_NEIGH inline int gpu_mode() const { return _gpu_mode; } /// Index of first device used by a node diff --git a/lib/gpu/lal_dipole_lj_ext.cpp b/lib/gpu/lal_dipole_lj_ext.cpp index 90c9935913..4252264280 100644 --- a/lib/gpu/lal_dipole_lj_ext.cpp +++ b/lib/gpu/lal_dipole_lj_ext.cpp @@ -80,7 +80,7 @@ int dpl_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e); - DPLMF.device->gpu_barrier(); + DPLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_dipole_lj_sf_ext.cpp b/lib/gpu/lal_dipole_lj_sf_ext.cpp index 0879702887..69469630b1 100644 --- a/lib/gpu/lal_dipole_lj_sf_ext.cpp +++ b/lib/gpu/lal_dipole_lj_sf_ext.cpp @@ -80,7 +80,7 @@ int dplsf_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e); - DPLSFMF.device->gpu_barrier(); + DPLSFMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_dipole_long_lj_ext.cpp b/lib/gpu/lal_dipole_long_lj_ext.cpp index fd61706ba9..9ba5f3ccf3 100644 --- a/lib/gpu/lal_dipole_long_lj_ext.cpp +++ b/lib/gpu/lal_dipole_long_lj_ext.cpp @@ -81,7 +81,7 @@ int dplj_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); - DPLJMF.device->gpu_barrier(); + DPLJMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_dpd_ext.cpp b/lib/gpu/lal_dpd_ext.cpp index 7637ff03c0..2f7ef3e7e2 100644 --- a/lib/gpu/lal_dpd_ext.cpp +++ b/lib/gpu/lal_dpd_ext.cpp @@ -76,7 +76,7 @@ int dpd_gpu_init(const int ntypes, double **cutsq, double **host_a0, host_cut, special_lj, false, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - DPDMF.device->gpu_barrier(); + DPDMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_dpd_tstat_ext.cpp b/lib/gpu/lal_dpd_tstat_ext.cpp index 0e60e3fccc..2b63bf62e7 100644 --- a/lib/gpu/lal_dpd_tstat_ext.cpp +++ b/lib/gpu/lal_dpd_tstat_ext.cpp @@ -76,7 +76,7 @@ int dpd_tstat_gpu_init(const int ntypes, double **cutsq, double **host_a0, host_cut, special_lj, true, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); - DPDTMF.device->gpu_barrier(); + DPDTMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_eam_alloy_ext.cpp b/lib/gpu/lal_eam_alloy_ext.cpp index 5a3dfb9d6d..488692bd2f 100644 --- a/lib/gpu/lal_eam_alloy_ext.cpp +++ b/lib/gpu/lal_eam_alloy_ext.cpp @@ -90,7 +90,7 @@ int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, nz2r, nfrho, nr, nlocal, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - EAMALMF.device->gpu_barrier(); + EAMALMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_eam_ext.cpp b/lib/gpu/lal_eam_ext.cpp index a884335bd9..f3e16a9589 100644 --- a/lib/gpu/lal_eam_ext.cpp +++ b/lib/gpu/lal_eam_ext.cpp @@ -90,7 +90,7 @@ int eam_gpu_init(const int ntypes, double host_cutforcesq, nz2r, nfrho, nr, nlocal, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - EAMMF.device->gpu_barrier(); + EAMMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_eam_fs_ext.cpp b/lib/gpu/lal_eam_fs_ext.cpp index 5aad871237..72bf439a4d 100644 --- a/lib/gpu/lal_eam_fs_ext.cpp +++ b/lib/gpu/lal_eam_fs_ext.cpp @@ -90,7 +90,7 @@ int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, nz2r, nfrho, nr, nlocal, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - EAMFSMF.device->gpu_barrier(); + EAMFSMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_gauss_ext.cpp b/lib/gpu/lal_gauss_ext.cpp index afec2e86f2..2e00223ac9 100644 --- a/lib/gpu/lal_gauss_ext.cpp +++ b/lib/gpu/lal_gauss_ext.cpp @@ -76,7 +76,7 @@ int gauss_gpu_init(const int ntypes, double **cutsq, double **host_a, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - GLMF.device->gpu_barrier(); + GLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -106,7 +106,7 @@ void gauss_gpu_reinit(const int ntypes, double **cutsq, double **host_a, if (gpu_rank==i && world_me!=0) GLMF.reinit(ntypes, cutsq, host_a, host_b, offset); - GLMF.device->gpu_barrier(); + GLMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_gayberne_ext.cpp b/lib/gpu/lal_gayberne_ext.cpp index 56aad61632..864da8e7ad 100644 --- a/lib/gpu/lal_gayberne_ext.cpp +++ b/lib/gpu/lal_gayberne_ext.cpp @@ -83,7 +83,7 @@ int gb_gpu_init(const int ntypes, const double gamma, host_lj3, host_lj4, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - GBMF.device->gpu_barrier(); + GBMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_lj96_ext.cpp b/lib/gpu/lal_lj96_ext.cpp index be7ffc5a09..b8d191d31e 100644 --- a/lib/gpu/lal_lj96_ext.cpp +++ b/lib/gpu/lal_lj96_ext.cpp @@ -76,7 +76,7 @@ int lj96_gpu_init(const int ntypes, double **cutsq, double **host_lj1, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - LJ96MF.device->gpu_barrier(); + LJ96MF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_lj_class2_long_ext.cpp b/lib/gpu/lal_lj_class2_long_ext.cpp index 311b027536..66eda209c1 100644 --- a/lib/gpu/lal_lj_class2_long_ext.cpp +++ b/lib/gpu/lal_lj_class2_long_ext.cpp @@ -81,7 +81,7 @@ int c2cl_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); - C2CLMF.device->gpu_barrier(); + C2CLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_lj_coul_debye_ext.cpp b/lib/gpu/lal_lj_coul_debye_ext.cpp index 4f81b01457..c6c9baef0f 100644 --- a/lib/gpu/lal_lj_coul_debye_ext.cpp +++ b/lib/gpu/lal_lj_coul_debye_ext.cpp @@ -81,7 +81,7 @@ int ljcd_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, kappa); - LJCDMF.device->gpu_barrier(); + LJCDMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_lj_coul_ext.cpp b/lib/gpu/lal_lj_coul_ext.cpp index 5b7f97e630..4011f4bb8c 100644 --- a/lib/gpu/lal_lj_coul_ext.cpp +++ b/lib/gpu/lal_lj_coul_ext.cpp @@ -80,7 +80,7 @@ int ljc_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e); - LJCMF.device->gpu_barrier(); + LJCMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_lj_coul_long_ext.cpp b/lib/gpu/lal_lj_coul_long_ext.cpp index 6a027bdc7e..578e38e4a0 100644 --- a/lib/gpu/lal_lj_coul_long_ext.cpp +++ b/lib/gpu/lal_lj_coul_long_ext.cpp @@ -81,7 +81,7 @@ int ljcl_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); - LJCLMF.device->gpu_barrier(); + LJCLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -112,7 +112,7 @@ void ljcl_gpu_reinit(const int ntypes, double **cutsq, double **host_lj1, if (gpu_rank==i && world_me!=0) LJCLMF.reinit(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, offset, host_cut_ljsq); - LJCLMF.device->gpu_barrier(); + LJCLMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_lj_coul_msm_ext.cpp b/lib/gpu/lal_lj_coul_msm_ext.cpp index 2d9d77fe77..05b1991ff9 100644 --- a/lib/gpu/lal_lj_coul_msm_ext.cpp +++ b/lib/gpu/lal_lj_coul_msm_ext.cpp @@ -83,7 +83,7 @@ int ljcm_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, order, qqrd2e); - LJCMLMF.device->gpu_barrier(); + LJCMLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_lj_cubic_ext.cpp b/lib/gpu/lal_lj_cubic_ext.cpp index 2f8ebac37b..d11199cee9 100644 --- a/lib/gpu/lal_lj_cubic_ext.cpp +++ b/lib/gpu/lal_lj_cubic_ext.cpp @@ -80,7 +80,7 @@ int ljcb_gpu_init(const int ntypes, double **cutsq, double **cut_inner_sq, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - LJCubicLMF.device->gpu_barrier(); + LJCubicLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_lj_dsf_ext.cpp b/lib/gpu/lal_lj_dsf_ext.cpp index e70059261c..c1e5b2de38 100644 --- a/lib/gpu/lal_lj_dsf_ext.cpp +++ b/lib/gpu/lal_lj_dsf_ext.cpp @@ -84,7 +84,7 @@ int ljd_gpu_init(const int ntypes, double **cutsq, double **host_lj1, host_cut_coulsq, host_special_coul, qqrd2e, e_shift, f_shift, alpha); - LJDMF.device->gpu_barrier(); + LJDMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_lj_expand_coul_long_ext.cpp b/lib/gpu/lal_lj_expand_coul_long_ext.cpp index e5506dd7aa..a6a04d7cc8 100644 --- a/lib/gpu/lal_lj_expand_coul_long_ext.cpp +++ b/lib/gpu/lal_lj_expand_coul_long_ext.cpp @@ -81,7 +81,7 @@ int ljecl_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); - LJECLMF.device->gpu_barrier(); + LJECLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -112,7 +112,7 @@ void ljecl_gpu_reinit(const int ntypes, double **cutsq, double **host_lj1, if (gpu_rank==i && world_me!=0) LJECLMF.reinit(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, offset, shift, host_cut_ljsq); - LJECLMF.device->gpu_barrier(); + LJECLMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_lj_expand_ext.cpp b/lib/gpu/lal_lj_expand_ext.cpp index 02decf2712..7d2e0fd306 100644 --- a/lib/gpu/lal_lj_expand_ext.cpp +++ b/lib/gpu/lal_lj_expand_ext.cpp @@ -108,7 +108,7 @@ void lje_gpu_reinit(const int ntypes, double **cutsq, double **host_lj1, if (gpu_rank==i && world_me!=0) LJEMF.reinit(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, offset, shift); - LJEMF.device->gpu_barrier(); + LJEMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_lj_ext.cpp b/lib/gpu/lal_lj_ext.cpp index fa00fc4f64..9a1d03780d 100644 --- a/lib/gpu/lal_lj_ext.cpp +++ b/lib/gpu/lal_lj_ext.cpp @@ -76,7 +76,7 @@ int ljl_gpu_init(const int ntypes, double **cutsq, double **host_lj1, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - LJLMF.device->gpu_barrier(); + LJLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -105,7 +105,7 @@ void ljl_gpu_reinit(const int ntypes, double **cutsq, double **host_lj1, for (int i=0; igpu_barrier(); + LJLMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_lj_gromacs_ext.cpp b/lib/gpu/lal_lj_gromacs_ext.cpp index 19d1d12513..289b6a30a3 100644 --- a/lib/gpu/lal_lj_gromacs_ext.cpp +++ b/lib/gpu/lal_lj_gromacs_ext.cpp @@ -81,7 +81,7 @@ int ljgrm_gpu_init(const int ntypes, double **cutsq, double **host_lj1, gpu_split, screen, host_ljsw1, host_ljsw2, host_ljsw3, host_ljsw4, host_ljsw5, cut_inner, cut_inner_sq); - LJGRMMF.device->gpu_barrier(); + LJGRMMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_lj_smooth_ext.cpp b/lib/gpu/lal_lj_smooth_ext.cpp index 48dad74071..5d392d163f 100644 --- a/lib/gpu/lal_lj_smooth_ext.cpp +++ b/lib/gpu/lal_lj_smooth_ext.cpp @@ -80,7 +80,7 @@ int ljsmt_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split, screen, host_ljsw0, host_ljsw1, host_ljsw2, host_ljsw3, host_ljsw4, cut_inner, cut_inner_sq); - LJSMTMF.device->gpu_barrier(); + LJSMTMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -110,7 +110,7 @@ void ljsmt_gpu_reinit(const int ntypes, double **cutsq, double **host_lj1, for (int i=0; igpu_barrier(); + LJSMTMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_lj_spica_ext.cpp b/lib/gpu/lal_lj_spica_ext.cpp index 1467c1806a..119e40ee33 100644 --- a/lib/gpu/lal_lj_spica_ext.cpp +++ b/lib/gpu/lal_lj_spica_ext.cpp @@ -77,7 +77,7 @@ int spica_gpu_init(const int ntypes, double **cutsq, int **cg_types, host_lj4, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - CMMMF.device->gpu_barrier(); + CMMMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_lj_spica_long_ext.cpp b/lib/gpu/lal_lj_spica_long_ext.cpp index 293801391f..298fde2fd5 100644 --- a/lib/gpu/lal_lj_spica_long_ext.cpp +++ b/lib/gpu/lal_lj_spica_long_ext.cpp @@ -81,7 +81,7 @@ int spical_gpu_init(const int ntypes, double **cutsq, int **cg_type, maxspecial, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); - CMMLMF.device->gpu_barrier(); + CMMLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_lj_tip4p_long.cu b/lib/gpu/lal_lj_tip4p_long.cu index 07a7ae7913..063daf7256 100644 --- a/lib/gpu/lal_lj_tip4p_long.cu +++ b/lib/gpu/lal_lj_tip4p_long.cu @@ -257,7 +257,7 @@ __kernel void k_lj_tip4p_reneigh( } if (igpu_barrier(); + LJTIP4PLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_mie_ext.cpp b/lib/gpu/lal_mie_ext.cpp index 5cbb9c29d2..a7b549139a 100644 --- a/lib/gpu/lal_mie_ext.cpp +++ b/lib/gpu/lal_mie_ext.cpp @@ -80,7 +80,7 @@ int mie_gpu_init(const int ntypes, double **cutsq, double **host_mie1, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - MLMF.device->gpu_barrier(); + MLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_morse_ext.cpp b/lib/gpu/lal_morse_ext.cpp index f43676a1b5..41c1076f7d 100644 --- a/lib/gpu/lal_morse_ext.cpp +++ b/lib/gpu/lal_morse_ext.cpp @@ -77,7 +77,7 @@ int mor_gpu_init(const int ntypes, double **cutsq, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - MORMF.device->gpu_barrier(); + MORMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_neighbor.cpp b/lib/gpu/lal_neighbor.cpp index 0876137352..983cea307a 100644 --- a/lib/gpu/lal_neighbor.cpp +++ b/lib/gpu/lal_neighbor.cpp @@ -637,7 +637,7 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, subgroup_count += cell_subgroup_counts[i]; cell_subgroup_counts[i] += cell_subgroup_counts[i-1]; } - if (subgroup_count > subgroup2cell.numel()) { + if (subgroup_count > (int)subgroup2cell.numel()) { subgroup2cell.clear(); success = success && (subgroup2cell.alloc(1.1*subgroup_count,*dev, UCL_READ_WRITE,UCL_READ_ONLY) == UCL_SUCCESS); @@ -708,7 +708,7 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, _old_ncellz = ncellz; const int bin_stencil_stride = cells_in_cutoff * 2 + 1; const int bin_stencil_size = bin_stencil_stride * bin_stencil_stride; - if (bin_stencil_size > _host_bin_stencil.numel()) + if (bin_stencil_size > (int)_host_bin_stencil.numel()) _host_bin_stencil.alloc(bin_stencil_size,*dev); for (int s = 0; sgpu_barrier(); + pppm.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_re_squared_ext.cpp b/lib/gpu/lal_re_squared_ext.cpp index e1eb8a45b0..17c508f1f1 100644 --- a/lib/gpu/lal_re_squared_ext.cpp +++ b/lib/gpu/lal_re_squared_ext.cpp @@ -80,7 +80,7 @@ int re_gpu_init(const int ntypes, double **shape, double **well, double **cutsq, host_lj4, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - REMF.device->gpu_barrier(); + REMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_soft_ext.cpp b/lib/gpu/lal_soft_ext.cpp index a32a5e5a00..879150ddd9 100644 --- a/lib/gpu/lal_soft_ext.cpp +++ b/lib/gpu/lal_soft_ext.cpp @@ -76,7 +76,7 @@ int soft_gpu_init(const int ntypes, double **cutsq, double **host_prefactor, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - SLMF.device->gpu_barrier(); + SLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -106,7 +106,7 @@ void soft_gpu_reinit(const int ntypes, double **cutsq, double **host_prefactor, if (gpu_rank==i && world_me!=0) SLMF.reinit(ntypes, cutsq, host_prefactor, host_cut); - SLMF.device->gpu_barrier(); + SLMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_sw_ext.cpp b/lib/gpu/lal_sw_ext.cpp index 5158f135a3..5aa3af8757 100644 --- a/lib/gpu/lal_sw_ext.cpp +++ b/lib/gpu/lal_sw_ext.cpp @@ -84,7 +84,7 @@ int sw_gpu_init(const int ntypes, const int inum, const int nall, sigma_gamma, c1, c2, c3, c4, c5, c6, lambda_epsilon, costheta, map, e2param); - SWMF.device->gpu_barrier(); + SWMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_table_ext.cpp b/lib/gpu/lal_table_ext.cpp index 6237c4d7cd..8fc118c770 100644 --- a/lib/gpu/lal_table_ext.cpp +++ b/lib/gpu/lal_table_ext.cpp @@ -76,7 +76,7 @@ int table_gpu_init(const int ntypes, double **cutsq, double ***table_coeffs, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen, tabstyle, ntables, tablength); - TBMF.device->gpu_barrier(); + TBMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_tersoff.cpp b/lib/gpu/lal_tersoff.cpp index ac5e5bc600..044d691f31 100644 --- a/lib/gpu/lal_tersoff.cpp +++ b/lib/gpu/lal_tersoff.cpp @@ -260,7 +260,7 @@ int TersoffT::loop(const int eflag, const int vflag, const int evatom, // re-allocate zetaij if necessary int nall = this->_nall; - if (nall*this->nbor->max_nbors() > _zetaij.cols()) { + if (nall*this->nbor->max_nbors() > (int)_zetaij.cols()) { int _nmax=static_cast(static_cast(nall)*1.10); _zetaij.clear(); _zetaij_eng.clear(); diff --git a/lib/gpu/lal_tersoff_ext.cpp b/lib/gpu/lal_tersoff_ext.cpp index ac700d014a..5092809344 100644 --- a/lib/gpu/lal_tersoff_ext.cpp +++ b/lib/gpu/lal_tersoff_ext.cpp @@ -91,7 +91,7 @@ int tersoff_gpu_init(const int ntypes, const int inum, const int nall, const int ts_c1, ts_c2, ts_c3, ts_c4, ts_c, ts_d, ts_h, ts_gamma, ts_beta, ts_powern, ts_cutsq); - TSMF.device->gpu_barrier(); + TSMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_tersoff_mod.cpp b/lib/gpu/lal_tersoff_mod.cpp index 7f050c8eee..4c5e60f737 100644 --- a/lib/gpu/lal_tersoff_mod.cpp +++ b/lib/gpu/lal_tersoff_mod.cpp @@ -252,7 +252,7 @@ int TersoffMT::loop(const int eflag, const int vflag, const int evatom, // re-allocate zetaij if necessary int nall = this->_nall; - if (nall*this->nbor->max_nbors() > _zetaij.cols()) { + if (nall*this->nbor->max_nbors() > (int)_zetaij.cols()) { int _nmax=static_cast(static_cast(nall)*1.10); _zetaij.clear(); success = success && (_zetaij.alloc(this->nbor->max_nbors()*_nmax, diff --git a/lib/gpu/lal_tersoff_mod_ext.cpp b/lib/gpu/lal_tersoff_mod_ext.cpp index cac284fb70..7310191a5d 100644 --- a/lib/gpu/lal_tersoff_mod_ext.cpp +++ b/lib/gpu/lal_tersoff_mod_ext.cpp @@ -91,7 +91,7 @@ int tersoff_mod_gpu_init(const int ntypes, const int inum, const int nall, ts_c3, ts_c4, ts_c5, ts_h, ts_beta, ts_powern, ts_powern_del, ts_ca1, ts_cutsq); - TSMMF.device->gpu_barrier(); + TSMMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_tersoff_zbl.cpp b/lib/gpu/lal_tersoff_zbl.cpp index b3d7df9a3e..1499416b66 100644 --- a/lib/gpu/lal_tersoff_zbl.cpp +++ b/lib/gpu/lal_tersoff_zbl.cpp @@ -276,7 +276,7 @@ int TersoffZT::loop(const int eflag, const int vflag, const int evatom, // re-allocate zetaij if necessary int nall = this->_nall; - if (nall*this->nbor->max_nbors() > _zetaij.cols()) { + if (nall*this->nbor->max_nbors() > (int)_zetaij.cols()) { int _nmax=static_cast(static_cast(nall)*1.10); _zetaij.clear(); success = success && (_zetaij.alloc(this->nbor->max_nbors()*_nmax, diff --git a/lib/gpu/lal_tersoff_zbl_ext.cpp b/lib/gpu/lal_tersoff_zbl_ext.cpp index 518b535627..ad3538b464 100644 --- a/lib/gpu/lal_tersoff_zbl_ext.cpp +++ b/lib/gpu/lal_tersoff_zbl_ext.cpp @@ -102,7 +102,7 @@ int tersoff_zbl_gpu_init(const int ntypes, const int inum, const int nall, ts_ZBLcut, ts_ZBLexpscale, global_e, global_a_0, global_epsilon_0, ts_cutsq); - TSZMF.device->gpu_barrier(); + TSZMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_ufm_ext.cpp b/lib/gpu/lal_ufm_ext.cpp index 432cbb2e63..3f6740f934 100644 --- a/lib/gpu/lal_ufm_ext.cpp +++ b/lib/gpu/lal_ufm_ext.cpp @@ -78,7 +78,7 @@ int ufml_gpu_init(const int ntypes, double **cutsq, double **host_uf1, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - UFMLMF.device->gpu_barrier(); + UFMLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } @@ -106,7 +106,7 @@ void ufml_gpu_reinit(const int ntypes, double **cutsq, double **host_uf1, for (int i=0; igpu_barrier(); + UFMLMF.device->serialize_init(); } } diff --git a/lib/gpu/lal_vashishta_ext.cpp b/lib/gpu/lal_vashishta_ext.cpp index ecbdefed19..2567688a74 100644 --- a/lib/gpu/lal_vashishta_ext.cpp +++ b/lib/gpu/lal_vashishta_ext.cpp @@ -89,7 +89,7 @@ int vashishta_gpu_init(const int ntypes, const int inum, const int nall, const i lam4inv, zizj, mbigd, dvrc, big6w, heta, bigh, bigw, c0, costheta, bigb, big2b, bigc); - VashishtaMF.device->gpu_barrier(); + VashishtaMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_yukawa_colloid_ext.cpp b/lib/gpu/lal_yukawa_colloid_ext.cpp index db86f91689..990a208c3c 100644 --- a/lib/gpu/lal_yukawa_colloid_ext.cpp +++ b/lib/gpu/lal_yukawa_colloid_ext.cpp @@ -76,7 +76,7 @@ int ykcolloid_gpu_init(const int ntypes, double **cutsq, double **host_a, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen, kappa); - YKCOLLMF.device->gpu_barrier(); + YKCOLLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_yukawa_ext.cpp b/lib/gpu/lal_yukawa_ext.cpp index cf2bf89e3d..062bf8d101 100644 --- a/lib/gpu/lal_yukawa_ext.cpp +++ b/lib/gpu/lal_yukawa_ext.cpp @@ -76,7 +76,7 @@ int yukawa_gpu_init(const int ntypes, double **cutsq, double kappa, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - YKMF.device->gpu_barrier(); + YKMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/gpu/lal_zbl_ext.cpp b/lib/gpu/lal_zbl_ext.cpp index ee7794af2d..e052380546 100644 --- a/lib/gpu/lal_zbl_ext.cpp +++ b/lib/gpu/lal_zbl_ext.cpp @@ -79,7 +79,7 @@ int zbl_gpu_init(const int ntypes, double **cutsq, double **host_sw1, cut_globalsq, cut_innersq, cut_inner, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); - ZBLMF.device->gpu_barrier(); + ZBLMF.device->serialize_init(); if (message) fprintf(screen,"Done.\n"); } diff --git a/lib/kokkos/BUILD.md b/lib/kokkos/BUILD.md index 114baf99f1..a8985ef1fd 100644 --- a/lib/kokkos/BUILD.md +++ b/lib/kokkos/BUILD.md @@ -27,7 +27,7 @@ When configuring your project just set: -DKokkos_ROOT=${kokkos_install_prefix} \ -DCMAKE_CXX_COMPILER=${compiler_used_to_build_kokkos} ```` -Note: You may need the following if using some versions of CMake (e.g. 3.12): +Note: You may need the following if your project requires a minimum CMake version older than 3.12: ````cmake cmake_policy(SET CMP0074 NEW) ```` @@ -171,6 +171,9 @@ Options can be enabled by specifying `-DKokkos_ENABLE_X`. * Kokkos_ENABLE_HPX_ASYNC_DISPATCH * Whether HPX supports asynchronous dispatch * BOOL Default: OFF +* Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC + * Whether to enable CudaMallocAsync (requires CUDA Toolkit 11.2). This is an experimental performance feature and currently has issue when using with UCX. See https://github.com/kokkos/kokkos/issues/4228 for more details. + * BOOL Default: OFF * Kokkos_ENABLE_LARGE_MEM_TESTS * Whether to perform extra large memory tests * BOOL_Default: OFF @@ -235,6 +238,9 @@ The following options control `find_package` paths for CMake-based TPLs: ## Architecture Keywords Architecture-specific optimizations can be enabled by specifying `-DKokkos_ARCH_X`. +* Kokkos_ARCH_NATIVE + * Whether to optimize for the the local CPU architecture + * BOOL Default: OFF * Kokkos_ARCH_AMDAVX * Whether to optimize for the AMDAVX architecture * BOOL Default: OFF @@ -310,12 +316,24 @@ Architecture-specific optimizations can be enabled by specifying `-DKokkos_ARCH_ * Kokkos_ARCH_POWER9 * Whether to optimize for the POWER9 architecture * BOOL Default: OFF +* Kokkos_ARCH_ICL + * Whether to optimize for the ICL architecture + * BOOL Default: OFF +* Kokkos_ARCH_ICX + * Whether to optimize for the ICX architecture + * BOOL Default: OFF +* Kokkos_ARCH_SKL + * Whether to optimize for the SKL architecture + * BOOL Default: OFF * Kokkos_ARCH_SKX * Whether to optimize for the SKX architecture * BOOL Default: OFF * Kokkos_ARCH_SNB * Whether to optimize for the SNB architecture * BOOL Default: OFF +* Kokkos_ARCH_SPR + * Whether to optimize for the SPR architecture + * BOOL Default: OFF * Kokkos_ARCH_TURING75 * Whether to optimize for the TURING75 architecture * BOOL Default: OFF diff --git a/lib/kokkos/CHANGELOG.md b/lib/kokkos/CHANGELOG.md index a908507704..e81f294451 100644 --- a/lib/kokkos/CHANGELOG.md +++ b/lib/kokkos/CHANGELOG.md @@ -1,5 +1,157 @@ # Change Log +## [3.7.00](https://github.com/kokkos/kokkos/tree/3.7.00) (2022-08-22) +[Full Changelog](https://github.com/kokkos/kokkos/compare/3.6.01...3.7.00) + +### Features: +- Use non-volatile `join()` member functions and `operator+=` in `parallel_reduce/scan` [\#4931](https://github.com/kokkos/kokkos/pull/4931) [\#4954](https://github.com/kokkos/kokkos/pull/4954) [\#4951](https://github.com/kokkos/kokkos/pull/4951) +- Add `SIMD` sub package (requires C++17) [\#5016](https://github.com/kokkos/kokkos/pull/5016) +- Add `is_finalized()` [\#5247](https://github.com/kokkos/kokkos/pull/5247) +- Promote mathematical functions from `namespace Kokkos::Experimental` to `namespace Kokkos` [\#4791](https://github.com/kokkos/kokkos/pull/4791) +- Promote `min`, `max`, `clamp`, `minmax` functions from `namespace Kokkos::Experimental` to `namespace Kokkos` [\#5170](https://github.com/kokkos/kokkos/pull/5170) +- Add `round`, `logb`, `nextafter`, `copysign`, and `signbit` math functions [\#4768](https://github.com/kokkos/kokkos/pull/4768) +- Add `HIPManagedSpace`, similar to `CudaUVMSpace` [\#5112](https://github.com/kokkos/kokkos/pull/5112) +- Accept view construction allocation properties in `create_mirror[_view,_view_and_copy]` and `resize/realloc` [\#5125](https://github.com/kokkos/kokkos/pull/5125) [\#5095](https://github.com/kokkos/kokkos/pull/5095) [\#5035](https://github.com/kokkos/kokkos/pull/5035) [\#4805](https://github.com/kokkos/kokkos/pull/4805) [\#4844](https://github.com/kokkos/kokkos/pull/4844) +- Allow `MemorySpace::allocate()` to be called with execution space [\#4826](https://github.com/kokkos/kokkos/pull/4826) +- Experimental: Compile time view subscriber [\#4197](https://github.com/kokkos/kokkos/pull/4197) + +### Backends and Archs Enhancements: +- Add support for Sapphire Rapids Intel architecture [\#5015](https://github.com/kokkos/kokkos/pull/5015) +- Add support for ICX, SKL and ICL Intel architectures [\#5013](https://github.com/kokkos/kokkos/pull/5013) [\#4929](https://github.com/kokkos/kokkos/pull/4929) +- Add arch flags for Intel GPU Ponte Vecchio [\#4932](https://github.com/kokkos/kokkos/pull/4932) +- SYCL: require GPU if GPU architecture was set at configuration time (i.e. do not allow fallback to CPU device) [\#5264](https://github.com/kokkos/kokkos/pull/5264) [\#5222](https://github.com/kokkos/kokkos/pull/5222) +- SYCL: Add `SYCL::sycl_queue()` for interoperability [\#5241](https://github.com/kokkos/kokkos/pull/5241) +- SYCL: Loosen restriction for using built-in `sycl::group_broadcast` [\#4552](https://github.com/kokkos/kokkos/pull/4552) +- SYCL: preserve address space [\#4396](https://github.com/kokkos/kokkos/pull/4396) +- OpenMPTarget: Adding a workaound for team scan [\#5219](https://github.com/kokkos/kokkos/pull/5219) +- OpenMPTarget: Adding logic to skip the kernel launch if `league_size=0` [\#5067](https://github.com/kokkos/kokkos/pull/5067) +- OpenMPTarget: Make sure `Kokkos::abort()` causes abnormal program termination when called on the host-side [\#4808](https://github.com/kokkos/kokkos/pull/4808) +- HIP: Make HIPHostPinnedSpace coarse-grained [\#5152](https://github.com/kokkos/kokkos/pull/5152) +- Refactor OpenMP `parallel_for` implementation to use more native OpenMP constructs [\#4664](https://github.com/kokkos/kokkos/pull/4664) +- Add option to optimize for local CPU architecture `Kokkos_ARCH_NATIVE` [\#4930](https://github.com/kokkos/kokkos/pull/4930) + + +### Implemented enhancements +- Add command line argument/environment variable to print the configuration [\#5233](https://github.com/kokkos/kokkos/pull/5233) +- Improve error message in view memory access violations [\#4950](https://github.com/kokkos/kokkos/pull/4950) +- Remove unnecessary fences in View initialization [\#4823](https://github.com/kokkos/kokkos/pull/4823) +- Make `View::shmem_size()` device-callable [\#4936](https://github.com/kokkos/kokkos/pull/4936) +- Update numerics support for `__float128` [\#5081](https://github.com/kokkos/kokkos/pull/5081) +- Add `log10` overload for `Kokkos::complex` [\#5009](https://github.com/kokkos/kokkos/pull/5009) +- Add `[[nodiscard]]` to `ScopeGuard` [\#5224](https://github.com/kokkos/kokkos/pull/5224) +- Add structured binding support for `Kokkos::Array` [\#4962](https://github.com/kokkos/kokkos/pull/4962) +- Enable accessing `Kokkos::Array` elements in constant expressions [\#4916](https://github.com/kokkos/kokkos/pull/4916) +- Mark `as_view_of_rank_n` as KOKKOS_FUNCTION [\#5248](https://github.com/kokkos/kokkos/pull/5248) +- Cleanup/rework fence overloads [\#5148](https://github.com/kokkos/kokkos/pull/5148) +- Assert that `Layout` construction from extents is valid in functions taking integer extents [\#5209](https://github.com/kokkos/kokkos/pull/5209) +- Add `fill_random` overload that takes an execution space as first argument [\#5181](https://github.com/kokkos/kokkos/pull/5181) +- Avoid some unnecessary fences in `parallel_reduce/scan` [\#5154](https://github.com/kokkos/kokkos/pull/5154) +- Include `KOKKOS_ENABLE_LIBDL` in options when printing configuration [\#5086](https://github.com/kokkos/kokkos/pull/5086) +- DynRankView: make `layout()` return the same as a corresponding static View [\#5026](https://github.com/kokkos/kokkos/pull/5026) +- Use `_mm_malloc` for icpx [\#5012](https://github.com/kokkos/kokkos/pull/5012) +- Avoid forcing matching execution spaces in `BinSort` constructor and `sort()` [\#4919](https://github.com/kokkos/kokkos/pull/4919) +- Check number of bins in `BinSort` [\#4890](https://github.com/kokkos/kokkos/pull/4890) +- Improve performance in parallel STL-like algorithms [\#4887](https://github.com/kokkos/kokkos/pull/4887) [\#4886](https://github.com/kokkos/kokkos/pull/4886) +- Disable `memset` on A64FX and launch `parallel_for` instead (performance) [\#4884](https://github.com/kokkos/kokkos/pull/4884) +- Allow non-power-of-two team sizes for team reductions and scans [\#4809](https://github.com/kokkos/kokkos/pull/4809) + +#### Harmonization of Kokkos execution environment initialization: +- Warn when unable to detect local MPI rank and user explicitly asked for it [\#5263](https://github.com/kokkos/kokkos/pull/5263) +- Refactor parsing of command line arguments and environment variables [\#5221](https://github.com/kokkos/kokkos/pull/5221) +- Refactor device selection at initialization [\#5211](https://github.com/kokkos/kokkos/pull/5211) +- Rename tools settings for consistency [\#5201](https://github.com/kokkos/kokkos/pull/5201) +- Print help only once [\#5128](https://github.com/kokkos/kokkos/pull/5128) +- Update precedence rule in initialization [\#5130](https://github.com/kokkos/kokkos/pull/5130) +- Warn instead of just ignoring user settings when kokkos-tools is disabled [\#5088](https://github.com/kokkos/kokkos/pull/5088) +- Drop numa args in threads backend initialization [\#5127](https://github.com/kokkos/kokkos/pull/5127) +- Warn users when a flag prefixed with -[-]kokkos is not recognized and do not remove it [\#5256](https://github.com/kokkos/kokkos/pull/5256) +- Give back to Core what belongs to Core (aka moving tune_internals option from Tools back to Core) [\#5202](https://github.com/kokkos/kokkos/pull/5202) + +#### Build system updates: +- `nvcc_wrapper`: filter out -pedantic-errors from nvcc options [\#5235](https://github.com/kokkos/kokkos/pull/5235) +- `nvcc_wrapper`: add known nvcc option --source-in-ptx [\#5052](https://github.com/kokkos/kokkos/pull/5052) +- Link libdl as interface library [\#5179](https://github.com/kokkos/kokkos/pull/5179) +- Only show GPU architectures with enabled corresponding backend [\#5119](https://github.com/kokkos/kokkos/pull/5119) +- Enable optional external desul build [\#5021](https://github.com/kokkos/kokkos/pull/5021) [\#5132](https://github.com/kokkos/kokkos/pull/5132) +- Export `Kokkos_CXX_STANDARD` variable with CMake [\#5068](https://github.com/kokkos/kokkos/pull/5068) +- Suppress warnings with nvc++ [\#5031](https://github.com/kokkos/kokkos/pull/5031) +- Disallow multiple host architectures in CMake [\#4996](https://github.com/kokkos/kokkos/pull/4996) +- Do not include compiler warning flags in the compile option of the cmake target [\#4989](https://github.com/kokkos/kokkos/pull/4989) +- AOT flags for OpenMPTarget targeting Intel GPUs [\#4915](https://github.com/kokkos/kokkos/pull/4915) +- Repurpose `Kokkos_ARCH_INTEL_GEN` for SYCL to mean JIT to be conforming with OMPT [\#4894](https://github.com/kokkos/kokkos/pull/4894) +- Replace amdgpu-target with offload-arch [\#4874](https://github.com/kokkos/kokkos/pull/4874) +- Do not enable `kokkos_launch_compiler` when `CMAKE_CXX_COMPILER_LAUNCHER` is set [\#4870](https://github.com/kokkos/kokkos/pull/4870) +- Move CMake version check up [\#4797](https://github.com/kokkos/kokkos/pull/4797) + +### Incompatibilities: +- Remove `KOKKOS_THREAD_LOCAL` [\#5064](https://github.com/kokkos/kokkos/pull/5064) +- Remove `KOKKOS_ENABLE_POSIX_MEMALIGN` [\#5011](https://github.com/kokkos/kokkos/pull/5011) +- Remove unused `KOKKOS_ENABLE_TM` [\#4995](https://github.com/kokkos/kokkos/pull/4995) +- Remove unused cmakedefine `KOKKOS_ENABLE_COMPILER_WARNINGS` [\#4883](https://github.com/kokkos/kokkos/pull/4883) +- Remove unused `KOKKOS_ENABLE_DUALVIEW_MODIFY_CHECK` [\#4882](https://github.com/kokkos/kokkos/pull/4882) +- Drop Instruction Set Architecture (ISA) macros [\#4981](https://github.com/kokkos/kokkos/pull/4981) +- Warn in `ScopeGuard` about illegal usage [\#5250](https://github.com/kokkos/kokkos/pull/5250) + +### Deprecations: +- Guard against non-public header inclusion [\#5178](https://github.com/kokkos/kokkos/pull/5178) +- Raise deprecation warnings if non empty WorkTag class is used [\#5230](https://github.com/kokkos/kokkos/pull/5230) +- Deprecate `parallel_*` overloads taking the label as trailing argument [\#5141](https://github.com/kokkos/kokkos/pull/5141) +- Deprecate nested types in functional [\#5185](https://github.com/kokkos/kokkos/pull/5185) +- Deprecate `InitArguments` struct and replace it with `InitializationSettings` [\#5135](https://github.com/kokkos/kokkos/pull/5135) +- Deprecate `finalize_all()` [\#5134](https://github.com/kokkos/kokkos/pull/5134) +- Deprecate command line arguments (other than `--help`) that are not prefixed with `kokkos-*` [\#5120](https://github.com/kokkos/kokkos/pull/5120) +- Deprecate `--[kokkos-]numa` cmdline arg and `KOKKOS_NUMA` env var [\#5117](https://github.com/kokkos/kokkos/pull/5117) +- Deprecate `--[kokkos-]threads` command line argument in favor of `--[kokkos-]num-threads` [\#5111](https://github.com/kokkos/kokkos/pull/5111) +- Deprecate `Kokkos::common_view_alloc_prop` [\#5059](https://github.com/kokkos/kokkos/pull/5059) +- Deprecate `Kokkos::is_reducer_type` [\#4957](https://github.com/kokkos/kokkos/pull/4957) +- Deprecate `OffsetView` constructors taking `index_list_type` [\#4810](https://github.com/kokkos/kokkos/pull/4810) +- Deprecate overloads of `Kokkos::sort` taking a parameter `bool always_use_kokkos_sort` [\#5382](https://github.com/kokkos/kokkos/issues/5382) +- Warn about `parallel_reduce` cases that call `join()` with volatile-qualified arguments [\#5215](https://github.com/kokkos/kokkos/pull/5215) + +### Bug Fixes: +- CUDA Reductions: Fix data races reported by Nvidia `compute-sanitizer` [\#4855](https://github.com/kokkos/kokkos/pull/4855) +- Work around Intel compiler bug [\#5301](https://github.com/kokkos/kokkos/pull/5301) +- Avoid allocating memory for UniqueToken [\#5300](https://github.com/kokkos/kokkos/pull/5300) +- DynamicView: Properly resize mirror instances after construction [\#5276](https://github.com/kokkos/kokkos/pull/5276) +- Remove Kokkos::Rank limit of 6 ranks [\#5271](https://github.com/kokkos/kokkos/pull/5271) +- Do not forget to set last element to nullptr when removing a flag in `Kokkos::initialize` [\#5272](https://github.com/kokkos/kokkos/pull/5272) +- Fix CUDA+MSVC build issue [\#5261](https://github.com/kokkos/kokkos/pull/5261) +- Fix `DynamicView::resize_serial` [\#5220](https://github.com/kokkos/kokkos/pull/5220) +- Fix cmake default compiler flags for unknown compiler [\#5217](https://github.com/kokkos/kokkos/pull/5217) +- Fix `move_backward` [\#5191](https://github.com/kokkos/kokkos/pull/5191) +- Fixing issue 5196 - missing symbol with intel compiler [\#5207](https://github.com/kokkos/kokkos/pull/5207) +- Preserve `KOKKOS_INVALID_INDEX` in ViewDimension and ArrayLayout construction [\#5188](https://github.com/kokkos/kokkos/pull/5188) +- Finalize `deep_copy_space` early avoiding printing to `std::cerr` for Cuda [\#5151](https://github.com/kokkos/kokkos/pull/5151) +- Use correct policy in Threads MDRange `parallel_reduce` [\#5123](https://github.com/kokkos/kokkos/pull/5123) +- Fix building with NVCC as the CXX compiler while the CUDA backend is not enabled [\#5115](https://github.com/kokkos/kokkos/pull/5115) +- OpenMPTarget Index range fix for MDRange. [\#5089](https://github.com/kokkos/kokkos/pull/5089) +- Fix bug with CUDA's team reduction for empty ranges [\#5079](https://github.com/kokkos/kokkos/pull/5079) +- Fix using `ZeroMemset` for Serial [\#5077](https://github.com/kokkos/kokkos/pull/5077) +- Fix `Kokkos::Vector::push_back` for default execution space [\#5047](https://github.com/kokkos/kokkos/pull/5047) +- ScatterView: Fix ScatterMin/ScatterMax to use proper atomics [\#5045](https://github.com/kokkos/kokkos/pull/5045) +- Fix calling `ZeroMemset` in `deep_copy` [\#5040](https://github.com/kokkos/kokkos/pull/5040) +- Make View self-assignment not produce double-free [\#5024](https://github.com/kokkos/kokkos/pull/5024) +- Guard against unrecognized pragma with intel compilers [\#5019](https://github.com/kokkos/kokkos/pull/5019) +- Fix racing condition in `HIPParallelLaunch` [\#5008](https://github.com/kokkos/kokkos/pull/5008) +- KokkosP: Fix `device_id` in profiling [\#4997](https://github.com/kokkos/kokkos/pull/4997) +- Fix for `Kokkos::vector::insert` into empty vector with begin and end iterators [\#4988](https://github.com/kokkos/kokkos/pull/4988) +- Fix Core header files installation [\#4984](https://github.com/kokkos/kokkos/pull/4984) +- Fix bounds errors with `Kokkos::sort` [\#4980](https://github.com/kokkos/kokkos/pull/4980) +- Fixup let `RangePolicy::set_chunk_size` return a reference to self [\#4918](https://github.com/kokkos/kokkos/pull/4918) +- Fix allocating large Views [\#4907](https://github.com/kokkos/kokkos/pull/4907) +- Fix combined reductions with `Kokkos::View` [\#4896](https://github.com/kokkos/kokkos/pull/4896) +- Fixed `_CUDA_ARCH__` to `__CUDA_ARCH__` for CUDA LDG [\#4893](https://github.com/kokkos/kokkos/pull/4893) +- Fixup `View::access()` truncate parameter pack [\#4876](https://github.com/kokkos/kokkos/pull/4876) +- Fix `abort` with HIP backend for ROCm 5.0.2 and beyond [\#4873](https://github.com/kokkos/kokkos/pull/4873) +- Fix HIP version when printing the configuration [\#4872](https://github.com/kokkos/kokkos/pull/4872) +- Fix scratch lock array when using scratch level 1 [\#4871](https://github.com/kokkos/kokkos/pull/4871) +- Fix Makefile.kokkos to work with fujitsu compiler [\#4867](https://github.com/kokkos/kokkos/pull/4867) +- cmake: Correct link THREADS link option [\#4854](https://github.com/kokkos/kokkos/pull/4854) +- UniqueToken `impl_acquire` function should be device only [\#4819](https://github.com/kokkos/kokkos/pull/4819) +- Fix example calls to non existing static `print_configuration` [\#4806](https://github.com/kokkos/kokkos/pull/4806) +- Fix requests for large team scratch sizes [\#4728](https://github.com/kokkos/kokkos/pull/4728) + + ## [3.6.01](https://github.com/kokkos/kokkos/tree/3.6.01) (2022-05-23) [Full Changelog](https://github.com/kokkos/kokkos/compare/3.6.00...3.6.01) diff --git a/lib/kokkos/CMakeLists.txt b/lib/kokkos/CMakeLists.txt index b0a54118a0..a05bfcdb94 100644 --- a/lib/kokkos/CMakeLists.txt +++ b/lib/kokkos/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required(VERSION 3.16 FATAL_ERROR) # Disable in-source builds to prevent source tree corruption. if( "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}" ) @@ -28,11 +29,6 @@ SET(KOKKOS_SRC_PATH ${Kokkos_SOURCE_DIR}) SET(KOKKOS_PATH ${Kokkos_SOURCE_DIR}) SET(KOKKOS_TOP_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}) -# Needed to simplify syntax of if statements -CMAKE_POLICY(SET CMP0054 NEW) -# Needed to make IN_LIST a valid operator -CMAKE_POLICY(SET CMP0057 NEW) - # Is this a build as part of Trilinos? IF(COMMAND TRIBITS_PACKAGE_DECL) SET(KOKKOS_HAS_TRILINOS ON) @@ -72,7 +68,6 @@ ENDFUNCTION() LIST(APPEND CMAKE_MODULE_PATH cmake/Modules) IF(NOT KOKKOS_HAS_TRILINOS) - cmake_minimum_required(VERSION 3.16 FATAL_ERROR) set(CMAKE_DISABLE_SOURCE_CHANGES ON) set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) @@ -80,7 +75,7 @@ IF(NOT KOKKOS_HAS_TRILINOS) # downstream dependencies need to match this! SET(KOKKOS_COMPILE_LANGUAGE CXX) # use lower case here since we didn't parse options yet - IF (Kokkos_ENABLE_COMPILE_AS_CMAKE_LANGUAGE) + IF (Kokkos_ENABLE_COMPILE_AS_CMAKE_LANGUAGE AND Kokkos_ENABLE_CUDA) # Without this as a language for the package we would get a C++ compiler enabled. # but we still need a C++ compiler even if we build all our cpp files as CUDA only @@ -90,9 +85,7 @@ IF(NOT KOKKOS_HAS_TRILINOS) # days. SET(KOKKOS_INTERNAL_EXTRA_COMPILE_LANGUAGE CXX) - IF (Kokkos_ENABLE_CUDA) - SET(KOKKOS_COMPILE_LANGUAGE CUDA) - ENDIF() + SET(KOKKOS_COMPILE_LANGUAGE CUDA) ENDIF() IF (Spack_WORKAROUND) @@ -135,14 +128,11 @@ ENDIF() set(Kokkos_VERSION_MAJOR 3) -set(Kokkos_VERSION_MINOR 6) -set(Kokkos_VERSION_PATCH 01) +set(Kokkos_VERSION_MINOR 7) +set(Kokkos_VERSION_PATCH 00) set(Kokkos_VERSION "${Kokkos_VERSION_MAJOR}.${Kokkos_VERSION_MINOR}.${Kokkos_VERSION_PATCH}") math(EXPR KOKKOS_VERSION "${Kokkos_VERSION_MAJOR} * 10000 + ${Kokkos_VERSION_MINOR} * 100 + ${Kokkos_VERSION_PATCH}") -MESSAGE(STATUS "Setting policy CMP0074 to use _ROOT variables") -CMAKE_POLICY(SET CMP0074 NEW) - # Load either the real TriBITS or a TriBITS wrapper # for certain utility functions that are universal (like GLOBAL_SET) INCLUDE(${KOKKOS_SRC_PATH}/cmake/fake_tribits.cmake) @@ -204,11 +194,16 @@ KOKKOS_SETUP_BUILD_ENVIRONMENT() OPTION(BUILD_SHARED_LIBS "Build shared libraries" OFF) SET(KOKKOS_EXT_LIBRARIES Kokkos::kokkos Kokkos::kokkoscore Kokkos::kokkoscontainers Kokkos::kokkosalgorithms) -SET(KOKKOS_INT_LIBRARIES kokkos kokkoscore kokkoscontainers kokkosalgorithms) +SET(KOKKOS_SUB_LIBRARIES kokkoscore kokkoscontainers kokkosalgorithms) +IF (KOKKOS_CXX_STANDARD GREATER_EQUAL 17) + LIST(APPEND KOKKOS_EXT_LIBRARIES Kokkos::kokkossimd) + LIST(APPEND KOKKOS_SUB_LIBRARIES kokkossimd) +ENDIF() +SET(KOKKOS_INT_LIBRARIES kokkos ${KOKKOS_SUB_LIBRARIES}) SET_PROPERTY(GLOBAL PROPERTY KOKKOS_INT_LIBRARIES ${KOKKOS_INT_LIBRARIES}) IF (KOKKOS_HAS_TRILINOS) - SET(TRILINOS_INCDIR ${CMAKE_INSTALL_PREFIX}/${${PROJECT_NAME}_INSTALL_INCLUDE_DIR}) + SET(TRILINOS_INCDIR ${${PROJECT_NAME}_INSTALL_INCLUDE_DIR}) SET(KOKKOS_HEADER_DIR ${TRILINOS_INCDIR}) SET(KOKKOS_IS_SUBDIRECTORY TRUE) ELSEIF(HAS_PARENT) @@ -296,7 +291,7 @@ IF (NOT KOKKOS_HAS_TRILINOS AND NOT Kokkos_INSTALL_TESTING) #Make sure in-tree projects can reference this as Kokkos:: #to match the installed target names ADD_LIBRARY(Kokkos::kokkos ALIAS kokkos) - TARGET_LINK_LIBRARIES(kokkos INTERFACE kokkoscore kokkoscontainers kokkosalgorithms) + TARGET_LINK_LIBRARIES(kokkos INTERFACE ${KOKKOS_SUB_LIBRARIES}) KOKKOS_INTERNAL_ADD_LIBRARY_INSTALL(kokkos) ENDIF() INCLUDE(${KOKKOS_SRC_PATH}/cmake/kokkos_install.cmake) diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index 755831452b..7aa04aad7d 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -11,21 +11,21 @@ CXXFLAGS += $(SHFLAGS) endif KOKKOS_VERSION_MAJOR = 3 -KOKKOS_VERSION_MINOR = 6 -KOKKOS_VERSION_PATCH = 01 +KOKKOS_VERSION_MINOR = 7 +KOKKOS_VERSION_PATCH = 00 KOKKOS_VERSION = $(shell echo $(KOKKOS_VERSION_MAJOR)*10000+$(KOKKOS_VERSION_MINOR)*100+$(KOKKOS_VERSION_PATCH) | bc) # Options: Cuda,HIP,SYCL,OpenMPTarget,OpenMP,Threads,Serial KOKKOS_DEVICES ?= "OpenMP" #KOKKOS_DEVICES ?= "Threads" # Options: -# Intel: KNC,KNL,SNB,HSW,BDW,SKX +# Intel: KNC,KNL,SNB,HSW,BDW,SKL,SKX,ICL,ICX,SPR # NVIDIA: Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal60,Pascal61,Volta70,Volta72,Turing75,Ampere80,Ampere86 # ARM: ARMv80,ARMv81,ARMv8-ThunderX,ARMv8-TX2,A64FX # IBM: BGQ,Power7,Power8,Power9 # AMD-GPUS: Vega900,Vega906,Vega908,Vega90A # AMD-CPUS: AMDAVX,Zen,Zen2,Zen3 -# Intel-GPUs: Gen9,Gen11,Gen12LP,DG1,XeHP +# Intel-GPUs: Gen9,Gen11,Gen12LP,DG1,XeHP,PVC KOKKOS_ARCH ?= "" # Options: yes,no KOKKOS_DEBUG ?= "no" @@ -193,6 +193,8 @@ KOKKOS_INTERNAL_COMPILER_INTEL_CLANG := $(call kokkos_has_string,$(KOKKOS_CXX_VE KOKKOS_INTERNAL_COMPILER_APPLE_CLANG := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),Apple clang) KOKKOS_INTERNAL_COMPILER_HCC := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),HCC) KOKKOS_INTERNAL_COMPILER_GCC := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),GCC) +# TODO fujitsu can emulate gcc or clang. Only clang mode works at the moment. +KOKKOS_INTERNAL_COMPILER_FUJITSU := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),FUJITSU) # Check Host Compiler if using NVCC through nvcc_wrapper ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) @@ -221,8 +223,23 @@ endif ifeq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) KOKKOS_INTENAL_COMPILER_CLANG = 0 endif +# Fujitsu passes also as clang and gcc respectively +ifeq ($(KOKKOS_INTERNAL_COMPILER_FUJITSU), 1) + ifeq ($(KOKKOS_INTERNAL_COMPILER_GCC), 1) + # TODO handle gcc flags and workaround for bug? + # fujitsu (gcc mode) is bugged, see https://github.com/kokkos/kokkos/issues/4730 + $(warning Warning: ${CXX} in Trad Mode '-Nnoclang' (default) is not recommended. Use 'CXX = ${CXX} -Nclang' instead.) + # HACK since fujitsu only accepts some gcc flags, disable gcc here? + # KOKKOS_INTERNAL_COMPILER_GCC = 0 + endif + # TODO handle clang flags + # warnings: works fine as is + # openmp: handled + #KOKKOS_INTERNAL_COMPILER_CLANG = 0 +endif ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) + # TODO empty variable if fujitsu (clang mode) passes as clang KOKKOS_INTERNAL_COMPILER_CLANG_VERSION := $(shell $(CXX) --version | grep version | cut -d ' ' -f3 | tr -d '.') ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) @@ -272,7 +289,12 @@ else ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY_CLANG), 1) KOKKOS_INTERNAL_OPENMP_FLAG := -fopenmp else - KOKKOS_INTERNAL_OPENMP_FLAG := -fopenmp=libomp + ifeq ($(KOKKOS_INTERNAL_COMPILER_FUJITSU), 1) + # fujitsu (clang mode) fails with `=libomp` + KOKKOS_INTERNAL_OPENMP_FLAG := -fopenmp + else + KOKKOS_INTERNAL_OPENMP_FLAG := -fopenmp=libomp + endif endif else ifeq ($(KOKKOS_INTERNAL_COMPILER_APPLE_CLANG), 1) @@ -300,11 +322,15 @@ ifeq ($(KOKKOS_INTERNAL_COMPILER_XL), 1) else ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) #KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -DKOKKOS_BUG_WORKAROUND_IBM_CLANG_OMP45_VIEW_INIT -fopenmp-implicit-declare-target -fopenmp-targets=nvptx64-nvidia-cuda -fopenmp -fopenmp=libomp - KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -DKOKKOS_WORKAROUND_OPENMPTARGET_CLANG -fopenmp -fopenmp=libomp + KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -DKOKKOS_WORKAROUND_OPENMPTARGET_CLANG -fopenmp -fopenmp=libomp -Wno-openmp-mapping KOKKOS_INTERNAL_OPENMPTARGET_LIB := -lomptarget else - #Assume GCC - KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -fopenmp -foffload=nvptx-none + ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL_CLANG), 1) + KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -fiopenmp -Wno-openmp-mapping + else + #Assume GCC + KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -fopenmp -foffload=nvptx-none + endif endif endif @@ -344,8 +370,12 @@ KOKKOS_INTERNAL_USE_ARCH_WSM := $(call kokkos_has_string,$(KOKKOS_ARCH),WSM) KOKKOS_INTERNAL_USE_ARCH_SNB := $(call kokkos_has_string,$(KOKKOS_ARCH),SNB) KOKKOS_INTERNAL_USE_ARCH_HSW := $(call kokkos_has_string,$(KOKKOS_ARCH),HSW) KOKKOS_INTERNAL_USE_ARCH_BDW := $(call kokkos_has_string,$(KOKKOS_ARCH),BDW) +KOKKOS_INTERNAL_USE_ARCH_SKL := $(call kokkos_has_string,$(KOKKOS_ARCH),SKL) KOKKOS_INTERNAL_USE_ARCH_SKX := $(call kokkos_has_string,$(KOKKOS_ARCH),SKX) KOKKOS_INTERNAL_USE_ARCH_KNL := $(call kokkos_has_string,$(KOKKOS_ARCH),KNL) +KOKKOS_INTERNAL_USE_ARCH_ICL := $(call kokkos_has_string,$(KOKKOS_ARCH),ICL) +KOKKOS_INTERNAL_USE_ARCH_ICX := $(call kokkos_has_string,$(KOKKOS_ARCH),ICX) +KOKKOS_INTERNAL_USE_ARCH_SPR := $(call kokkos_has_string,$(KOKKOS_ARCH),SPR) KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN := $(call kokkos_has_string,$(KOKKOS_ARCH),IntelGen) KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN9 := $(call kokkos_has_string,$(KOKKOS_ARCH),IntelGen9) @@ -353,6 +383,7 @@ KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN11 := $(call kokkos_has_string,$(KOKKOS_ARCH), KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN12LP := $(call kokkos_has_string,$(KOKKOS_ARCH),IntelGen12LP) KOKKOS_INTERNAL_USE_ARCH_INTEL_DG1 := $(call kokkos_has_string,$(KOKKOS_ARCH),IntelDG1) KOKKOS_INTERNAL_USE_ARCH_INTEL_XEHP := $(call kokkos_has_string,$(KOKKOS_ARCH),IntelXeHP) +KOKKOS_INTERNAL_USE_ARCH_INTEL_PVC := $(call kokkos_has_string,$(KOKKOS_ARCH),PVC) # NVIDIA based. NVCC_WRAPPER := $(KOKKOS_PATH)/bin/nvcc_wrapper @@ -436,19 +467,9 @@ KOKKOS_INTERNAL_USE_ARCH_SSE42 := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_W KOKKOS_INTERNAL_USE_ARCH_AVX := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_SNB) + $(KOKKOS_INTERNAL_USE_ARCH_AMDAVX)) KOKKOS_INTERNAL_USE_ARCH_AVX2 := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_HSW) + $(KOKKOS_INTERNAL_USE_ARCH_BDW) + $(KOKKOS_INTERNAL_USE_ARCH_ZEN) + $(KOKKOS_INTERNAL_USE_ARCH_ZEN2) + $(KOKKOS_INTERNAL_USE_ARCH_ZEN3)) KOKKOS_INTERNAL_USE_ARCH_AVX512MIC := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_KNL)) -KOKKOS_INTERNAL_USE_ARCH_AVX512XEON := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_SKX)) - -# Decide what ISA level we are able to support. -KOKKOS_INTERNAL_USE_ISA_X86_64 := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_WSM) + $(KOKKOS_INTERNAL_USE_ARCH_SNB) + $(KOKKOS_INTERNAL_USE_ARCH_HSW) + $(KOKKOS_INTERNAL_USE_ARCH_BDW) + $(KOKKOS_INTERNAL_USE_ARCH_KNL) + $(KOKKOS_INTERNAL_USE_ARCH_SKX) + $(KOKKOS_INTERNAL_USE_ARCH_ZEN) + $(KOKKOS_INTERNAL_USE_ARCH_ZEN2) + $(KOKKOS_INTERNAL_USE_ARCH_ZEN3)) -KOKKOS_INTERNAL_USE_ISA_KNC := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_KNC)) -KOKKOS_INTERNAL_USE_ISA_POWERPCLE := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_POWER8) + $(KOKKOS_INTERNAL_USE_ARCH_POWER9)) -KOKKOS_INTERNAL_USE_ISA_POWERPCBE := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_POWER7)) - -# Decide whether we can support transactional memory -KOKKOS_INTERNAL_USE_TM := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_BDW) + $(KOKKOS_INTERNAL_USE_ARCH_SKX)) # Incompatible flags? -KOKKOS_INTERNAL_USE_ARCH_MULTIHOST := $(strip $(shell echo "$(KOKKOS_INTERNAL_USE_ARCH_SSE42)+$(KOKKOS_INTERNAL_USE_ARCH_AVX)+$(KOKKOS_INTERNAL_USE_ARCH_AVX2)+$(KOKKOS_INTERNAL_USE_ARCH_AVX512MIC)+$(KOKKOS_INTERNAL_USE_ARCH_AVX512XEON)+$(KOKKOS_INTERNAL_USE_ARCH_KNC)+$(KOKKOS_INTERNAL_USE_ARCH_IBM)+$(KOKKOS_INTERNAL_USE_ARCH_ARM)>1") | bc) +KOKKOS_INTERNAL_USE_ARCH_MULTIHOST := $(strip $(shell echo "$(KOKKOS_INTERNAL_USE_ARCH_SSE42)+$(KOKKOS_INTERNAL_USE_ARCH_AVX)+$(KOKKOS_INTERNAL_USE_ARCH_AVX2)+$(KOKKOS_INTERNAL_USE_ARCH_AVX512MIC)+$(KOKKOS_INTERNAL_USE_ARCH_SKL)+$(KOKKOS_INTERNAL_USE_ARCH_SKX)+$(KOKKOS_INTERNAL_USE_ARCH_ICL)+$(KOKKOS_INTERNAL_USE_ARCH_ICX)+$(KOKKOS_INTERNAL_USE_ARCH_SPR)+$(KOKKOS_INTERNAL_USE_ARCH_KNC)+$(KOKKOS_INTERNAL_USE_ARCH_IBM)+$(KOKKOS_INTERNAL_USE_ARCH_ARM)>1") | bc) KOKKOS_INTERNAL_USE_ARCH_MULTIGPU := $(strip $(shell echo "$(KOKKOS_INTERNAL_USE_ARCH_NVIDIA)>1") | bc) ifeq ($(KOKKOS_INTERNAL_USE_ARCH_MULTIHOST), 1) @@ -551,36 +572,6 @@ ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ENABLE_SERIAL") endif -ifeq ($(KOKKOS_INTERNAL_USE_TM), 1) - tmp := $(call kokkos_append_header,"$H""ifndef __CUDA_ARCH__") - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ENABLE_TM") - tmp := $(call kokkos_append_header,"$H""endif") -endif - -ifeq ($(KOKKOS_INTERNAL_USE_ISA_X86_64), 1) - tmp := $(call kokkos_append_header,"$H""ifndef __CUDA_ARCH__") - tmp := $(call kokkos_append_header,"$H""define KOKKOS_USE_ISA_X86_64") - tmp := $(call kokkos_append_header,"$H""endif") -endif - -ifeq ($(KOKKOS_INTERNAL_USE_ISA_KNC), 1) - tmp := $(call kokkos_append_header,"$H""ifndef __CUDA_ARCH__") - tmp := $(call kokkos_append_header,"$H""define KOKKOS_USE_ISA_KNC") - tmp := $(call kokkos_append_header,"$H""endif") -endif - -ifeq ($(KOKKOS_INTERNAL_USE_ISA_POWERPCLE), 1) - tmp := $(call kokkos_append_header,"$H""ifndef __CUDA_ARCH__") - tmp := $(call kokkos_append_header,"$H""define KOKKOS_USE_ISA_POWERPCLE") - tmp := $(call kokkos_append_header,"$H""endif") -endif - -ifeq ($(KOKKOS_INTERNAL_USE_ISA_POWERPCBE), 1) - tmp := $(call kokkos_append_header,"$H""ifndef __CUDA_ARCH__") - tmp := $(call kokkos_append_header,"$H""define KOKKOS_USE_ISA_POWERPCBE") - tmp := $(call kokkos_append_header,"$H""endif") -endif - #only add the c++ standard flags if this is not CMake tmp := $(call kokkos_append_header,"/* General Settings */") ifneq ($(KOKKOS_INTERNAL_DISABLE_DEPRECATED_CODE), 1) @@ -1041,7 +1032,28 @@ ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AVX512MIC), 1) endif endif -ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AVX512XEON), 1) +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_SKL), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AVX512XEON") + + ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL), 1) + KOKKOS_CXXFLAGS += -xSKYLAKE + KOKKOS_LDFLAGS += -xSKYLAKE + else + ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1) + + else + ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1) + + else + # Nothing here yet. + KOKKOS_CXXFLAGS += -march=skylake + KOKKOS_LDFLAGS += -march=skylake + endif + endif + endif +endif + +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_SKX), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AVX512XEON") ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL), 1) @@ -1055,13 +1067,31 @@ ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AVX512XEON), 1) else # Nothing here yet. - KOKKOS_CXXFLAGS += -march=skylake-avx512 -mtune=skylake-avx512 -mrtm - KOKKOS_LDFLAGS += -march=skylake-avx512 -mtune=skylake-avx512 -mrtm + KOKKOS_CXXFLAGS += -march=skylake-avx512 -mtune=skylake-avx512 + KOKKOS_LDFLAGS += -march=skylake-avx512 -mtune=skylake-avx512 endif endif endif endif +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_ICL), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AVX512XEON") + KOKKOS_CXXFLAGS += -march=icelake-client -mtune=icelake-client + KOKKOS_LDFLAGS += -march=icelake-client -mtune=icelake-client +endif + +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_ICX), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AVX512XEON") + KOKKOS_CXXFLAGS += -march=icelake-server -mtune=icelake-server + KOKKOS_LDFLAGS += -march=icelake-server -mtune=icelake-server +endif + +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_SPR), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AVX512XEON") + KOKKOS_CXXFLAGS += -march=sapphirerapids -mtune=sapphirerapids + KOKKOS_LDFLAGS += -march=sapphirerapids -mtune=sapphirerapids +endif + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KNC), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_KNC") KOKKOS_CXXFLAGS += -mmic @@ -1091,7 +1121,7 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - KOKKOS_INTERNAL_CUDA_ARCH_FLAG=-fopenmp-targets=nvptx64-nvidia-cuda -Xopenmp-target -march + KOKKOS_INTERNAL_CUDA_ARCH_FLAG=-fopenmp-targets=nvptx64 -Xopenmp-target -march endif KOKKOS_INTERNAL_USE_CUDA_ARCH = 1 endif @@ -1192,29 +1222,29 @@ ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA900), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_VEGA900") tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_VEGA") - KOKKOS_INTERNAL_HIP_ARCH_FLAG := --amdgpu-target=gfx900 + KOKKOS_INTERNAL_HIP_ARCH_FLAG := --offload-arch=gfx900 endif ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA906), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_VEGA906") tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_VEGA") - KOKKOS_INTERNAL_HIP_ARCH_FLAG := --amdgpu-target=gfx906 + KOKKOS_INTERNAL_HIP_ARCH_FLAG := --offload-arch=gfx906 endif ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA908), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_VEGA908") tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_VEGA") - KOKKOS_INTERNAL_HIP_ARCH_FLAG := --amdgpu-target=gfx908 + KOKKOS_INTERNAL_HIP_ARCH_FLAG := --offload-arch=gfx908 endif ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA90A), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_VEGA90A") tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_VEGA") - KOKKOS_INTERNAL_HIP_ARCH_FLAG := --amdgpu-target=gfx90a + KOKKOS_INTERNAL_HIP_ARCH_FLAG := --offload-arch=gfx90a endif KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/HIP/*.cpp) KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/HIP/*.hpp) ifeq ($(KOKKOS_INTERNAL_DISABLE_DESUL_ATOMICS), 0) - KOKKOS_SRC += $(KOKKOS_PATH)/core/src/desul/src/Lock_Array_HIP.cpp + KOKKOS_SRC += $(KOKKOS_PATH)/tpls/desul/src/Lock_Array_HIP.cpp endif KOKKOS_CXXFLAGS+=$(KOKKOS_INTERNAL_HIP_ARCH_FLAG) @@ -1230,51 +1260,67 @@ ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) endif endif -# Figure out the architecture flag for SYCL. +# Figure out Intel architecture flags. ifeq ($(KOKKOS_INTERNAL_USE_SYCL), 1) - # Lets start with adding architecture defines - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN), 1) - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GEN") - KOKKOS_INTERNAL_SYCL_ARCH_FLAG := -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device gen9-" - endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN9), 1) - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GEN9") - KOKKOS_INTERNAL_SYCL_ARCH_FLAG := -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device gen9" - endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN11), 1) - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GEN11") - KOKKOS_INTERNAL_SYCL_ARCH_FLAG := -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device gen11" - endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN12LP), 1) - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GEN12LP") - KOKKOS_INTERNAL_SYCL_ARCH_FLAG := -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device gen12lp" - endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_DG1), 1) - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_DG1") - KOKKOS_INTERNAL_SYCL_ARCH_FLAG := -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device dg1" - endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_XEHP), 1) - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_XEHP") - KOKKOS_INTERNAL_SYCL_ARCH_FLAG := -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device xehp" - endif + KOKKOS_INTERNAL_LC_BACKEND := sycl +endif +ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) + KOKKOS_INTERNAL_LC_BACKEND := openmp +endif +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GEN") + KOKKOS_INTERNAL_INTEL_ARCH_FLAG := -f${KOKKOS_INTERNAL_LC_BACKEND}-targets=spir64 +endif +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN9), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GEN9") + KOKKOS_INTERNAL_INTEL_ARCH_FLAG := -f${KOKKOS_INTERNAL_LC_BACKEND}-targets=spir64_gen -X${KOKKOS_INTERNAL_LC_BACKEND}-target-backend "-device gen9" +endif +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN11), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GEN11") + KOKKOS_INTERNAL_INTEL_ARCH_FLAG := -f${KOKKOS_INTERNAL_LC_BACKEND}-targets=spir64_gen -X${KOKKOS_INTERNAL_LC_BACKEND}-target-backend "-device gen11" +endif +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_GEN12LP), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GEN12LP") + KOKKOS_INTERNAL_INTEL_ARCH_FLAG := -f${KOKKOS_INTERNAL_LC_BACKEND}-targets=spir64_gen -X${KOKKOS_INTERNAL_LC_BACKEND}-target-backend "-device gen12lp" +endif +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_DG1), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_DG1") + KOKKOS_INTERNAL_INTEL_ARCH_FLAG := -f${KOKKOS_INTERNAL_LC_BACKEND}-targets=spir64_gen -X${KOKKOS_INTERNAL_LC_BACKEND}-target-backend "-device dg1" +endif +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_XEHP), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_XEHP") + KOKKOS_INTERNAL_INTEL_ARCH_FLAG := -f${KOKKOS_INTERNAL_LC_BACKEND}-targets=spir64_gen -X${KOKKOS_INTERNAL_LC_BACKEND}-target-backend "-device xehp" +endif +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_INTEL_PVC), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_GPU") + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_INTEL_PVC") + KOKKOS_INTERNAL_INTEL_ARCH_FLAG := -f${KOKKOS_INTERNAL_LC_BACKEND}-targets=spir64_gen -X${KOKKOS_INTERNAL_LC_BACKEND}-target-backend "-device 12.4.0" +endif +ifeq ($(KOKKOS_INTERNAL_USE_SYCL), 1) KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/SYCL/*.cpp) KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/SYCL/*.hpp) - KOKKOS_CXXFLAGS+=-fsycl -fno-sycl-id-queries-fit-in-int -fsycl-unnamed-lambda - KOKKOS_CXXFLAGS+=$(KOKKOS_INTERNAL_SYCL_ARCH_FLAG) + KOKKOS_CXXFLAGS+=-fsycl -fno-sycl-id-queries-fit-in-int -fsycl-unnamed-lambda -fsycl-dead-args-optimization + KOKKOS_CXXFLAGS+=$(KOKKOS_INTERNAL_INTEL_ARCH_FLAG) KOKKOS_LDFLAGS+=-fsycl - KOKKOS_LDFLAGS+=$(KOKKOS_INTERNAL_SYCL_ARCH_FLAG) + KOKKOS_LDFLAGS+=$(KOKKOS_INTERNAL_INTEL_ARCH_FLAG) +endif + +ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) + KOKKOS_CXXFLAGS+=$(KOKKOS_INTERNAL_INTEL_ARCH_FLAG) -D__STRICT_ANSI__ + KOKKOS_LDFLAGS+=$(KOKKOS_INTERNAL_INTEL_ARCH_FLAG) endif ifeq ($(KOKKOS_INTERNAL_DISABLE_DESUL_ATOMICS), 0) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ENABLE_IMPL_DESUL_ATOMICS") + KOKKOS_CPPFLAGS+=-I$(KOKKOS_PATH)/tpls/desul/include else ifeq ($(KOKKOS_INTERNAL_ENABLE_DESUL_ATOMICS), 1) $(error Contradictory Desul atomics options: KOKKOS_OPTIONS=$(KOKKOS_OPTIONS) ) @@ -1359,7 +1405,7 @@ KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/containers/src/impl/*.cpp) ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Cuda/*.cpp) ifeq ($(KOKKOS_INTERNAL_DISABLE_DESUL_ATOMICS), 0) - KOKKOS_SRC += $(KOKKOS_PATH)/core/src/desul/src/Lock_Array_CUDA.cpp + KOKKOS_SRC += $(KOKKOS_PATH)/tpls/desul/src/Lock_Array_CUDA.cpp endif KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Cuda/*.hpp) ifneq ($(CUDA_PATH),) @@ -1417,6 +1463,11 @@ ifeq ($(KOKKOS_INTERNAL_USE_THREADS), 1) KOKKOS_TPL_LIBRARY_NAMES += pthread endif +ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) + KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Serial/*.cpp) + KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Serial/*.hpp) +endif + ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/HPX/*.cpp) KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/HPX/*.hpp) @@ -1449,15 +1500,6 @@ ifneq ($(KOKKOS_INTERNAL_USE_MEMKIND), 1) KOKKOS_SRC := $(filter-out $(KOKKOS_PATH)/core/src/impl/Kokkos_HBWSpace.cpp,$(KOKKOS_SRC)) endif -# Don't include Kokkos_Serial.cpp or Kokkos_Serial_Task.cpp if not using Serial -# device to avoid a link warning. -ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) -endif -ifneq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) - KOKKOS_SRC := $(filter-out $(KOKKOS_PATH)/core/src/impl/Kokkos_Serial.cpp,$(KOKKOS_SRC)) - KOKKOS_SRC := $(filter-out $(KOKKOS_PATH)/core/src/impl/Kokkos_Serial_Task.cpp,$(KOKKOS_SRC)) -endif - # With Cygwin functions such as fdopen and fileno are not defined # when strict ansi is enabled. strict ansi gets enabled with -std=c++14 # though. So we hard undefine it here. Not sure if that has any bad side effects diff --git a/lib/kokkos/Makefile.targets b/lib/kokkos/Makefile.targets index a9cb12e1b4..876726e947 100644 --- a/lib/kokkos/Makefile.targets +++ b/lib/kokkos/Makefile.targets @@ -16,10 +16,6 @@ Kokkos_HostSpace.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_Ho $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_HostSpace.cpp Kokkos_hwloc.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_hwloc.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_hwloc.cpp -Kokkos_Serial.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_Serial.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_Serial.cpp -Kokkos_Serial_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_Serial_Task.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_Serial_Task.cpp Kokkos_TaskQueue.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_TaskQueue.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_TaskQueue.cpp Kokkos_HostThreadTeam.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_HostThreadTeam.cpp @@ -41,6 +37,13 @@ Kokkos_HostSpace_deepcopy.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/ Kokkos_NumericTraits.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_NumericTraits.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_NumericTraits.cpp +ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) +Kokkos_Serial.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Serial/Kokkos_Serial.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Serial/Kokkos_Serial.cpp +Kokkos_Serial_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Serial/Kokkos_Serial_Task.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Serial/Kokkos_Serial_Task.cpp +endif + ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) Kokkos_Cuda_Instance.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Instance.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Instance.cpp @@ -50,8 +53,8 @@ Kokkos_Cuda_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cu $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Task.cpp Kokkos_Cuda_Locks.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Locks.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Locks.cpp -Lock_Array_CUDA.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/desul/src/Lock_Array_CUDA.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/desul/src/Lock_Array_CUDA.cpp +Lock_Array_CUDA.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/tpls/desul/src/Lock_Array_CUDA.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/tpls/desul/src/Lock_Array_CUDA.cpp endif ifeq ($(KOKKOS_INTERNAL_USE_SYCL), 1) @@ -70,20 +73,18 @@ Kokkos_HIP_Instance.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HIP/Kokkos_ $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Instance.cpp Kokkos_HIP_Locks.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Locks.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Locks.cpp -Lock_Array_HIP.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/desul/src/Lock_Array_HIP.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/desul/src/Lock_Array_HIP.cpp +Lock_Array_HIP.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/tpls/desul/src/Lock_Array_HIP.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/tpls/desul/src/Lock_Array_HIP.cpp endif ifeq ($(KOKKOS_INTERNAL_USE_THREADS), 1) -Kokkos_ThreadsExec_base.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec_base.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec_base.cpp Kokkos_ThreadsExec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec.cpp endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) -Kokkos_OpenMP_Exec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp +Kokkos_OpenMP_Instance.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Instance.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Instance.cpp Kokkos_OpenMP_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Task.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Task.cpp endif diff --git a/lib/kokkos/README.md b/lib/kokkos/README.md index f6c500cc1a..033346e956 100644 --- a/lib/kokkos/README.md +++ b/lib/kokkos/README.md @@ -10,270 +10,48 @@ hierarchies and multiple types of execution resources. It currently can use CUDA, HIP, SYCL, HPX, OpenMP and C++ threads as backend programming models with several other backends in development. -Kokkos Core is part of the Kokkos C++ Performance Portability Programming EcoSystem, -which also provides math kernels (https://github.com/kokkos/kokkos-kernels), as well as -profiling and debugging tools (https://github.com/kokkos/kokkos-tools). +**Kokkos Core is part of the Kokkos C++ Performance Portability Programming EcoSystem.** + +For the complete documentation, click below: + +# [kokkos.github.io/kokkos-core-wiki](https://kokkos.github.io/kokkos-core-wiki) # Learning about Kokkos -The best way to start learning about Kokkos is going through the Kokkos Lectures. -They are online available at https://kokkos.link/the-lectures and contain a mix -of lecture videos and hands-on exercises covering all the important Kokkos Ecosystem -capabilities. +To start learning about Kokkos: -A programming guide and API reference can be found on the Wiki -(https://github.com/kokkos/kokkos/wiki). +- [Kokkos Lectures](https://kokkos.github.io/kokkos-core-wiki/videolectures.html): they contain a mix of lecture videos and hands-on exercises covering all the important Kokkos Ecosystem capabilities. + +- [Programming guide](https://kokkos.github.io/kokkos-core-wiki/programmingguide.html): contains in "narrative" form a technical description of the programming model, machine model, and the main building blocks like the Views and parallel dispatch. + +- [API reference](https://kokkos.github.io/kokkos-core-wiki/): organized by category, i.e., [core](https://kokkos.github.io/kokkos-core-wiki/API/core-index.html), [algorithms](https://kokkos.github.io/kokkos-core-wiki/API/algorithms-index.html) and [containers](https://kokkos.github.io/kokkos-core-wiki/API/containers-index.html) or, if you prefer, in [alphabetical order](https://kokkos.github.io/kokkos-core-wiki/API/alphabetical.html). + +- [Use cases and Examples](https://kokkos.github.io/kokkos-core-wiki/usecases.html): a series of examples ranging from how to use Kokkos with MPI to Fortran interoperability. For questions find us on Slack: https://kokkosteam.slack.com or open a github issue. -For non-public questions send an email to -crtrott(at)sandia.gov +For non-public questions send an email to: *crtrott(at)sandia.gov* # Contributing to Kokkos -We are open and try to encourage contributions from external developers. -To do so please first open an issue describing the contribution and then issue -a pull request against the develop branch. For larger features it may be good -to get guidance from the core development team first through the github issue. +Please see [this page](https://kokkos.github.io/kokkos-core-wiki/contributing.html) for details on how to contribute. -Note that Kokkos Core is licensed under standard 3-clause BSD terms of use. -Which means contributing to Kokkos allows anyone else to use your contributions -not just for public purposes but also for closed source commercial projects. -For specifics see the LICENSE file contained in the repository or distribution. +# Requirements, Building and Installing -# Requirements - -### Minimum Compiler Versions - -Generally Kokkos should work with all compiler versions newer than the minimum. -However as in all sufficiently complex enough code, we have to work around compiler -bugs with almost all compilers. So compiler versions we don't test may have issues -we are unaware of. - -* GCC: 5.3.0 -* Clang: 4.0.0 -* Intel: 17.0.1 -* NVCC: 9.2.88 -* NVC++: 21.5 -* ROCm: 4.3 -* MSVC: 19.29 -* IBM XL: 16.1.1 -* Fujitsu: 4.5.0 -* ARM/Clang 20.1 - -### Primary Tested Compilers - -* GCC: 5.3.0, 6.1.0, 7.3.0, 8.3, 9.2, 10.0 -* NVCC: 9.2.88, 10.1, 11.0 -* Clang: 8.0.0, 9.0.0, 10.0.0, 12.0.0 -* Intel 17.4, 18.1, 19.5 -* MSVC: 19.29 -* ARM/Clang: 20.1 -* IBM XL: 16.1.1 -* ROCm: 4.3.0 - -### Build system: - -* CMake >= 3.16: required -* CMake >= 3.18: Fortran linkage. This does not affect most mixed Fortran/Kokkos builds. See [build issues](BUILD.md#KnownIssues). -* CMake >= 3.21.1 for NVC++ - -Primary tested compiler are passing in release mode -with warnings as errors. They also are tested with a comprehensive set of -backend combinations (i.e. OpenMP, Threads, Serial, OpenMP+Serial, ...). -We are using the following set of flags: -* GCC: - ```` - -Wall -Wunused-parameter -Wshadow -pedantic - -Werror -Wsign-compare -Wtype-limits - -Wignored-qualifiers -Wempty-body - -Wclobbered -Wuninitialized - ```` -* Intel: - ```` - -Wall -Wunused-parameter -Wshadow -pedantic - -Werror -Wsign-compare -Wtype-limits - -Wuninitialized - ```` -* Clang: - ```` - -Wall -Wunused-parameter -Wshadow -pedantic - -Werror -Wsign-compare -Wtype-limits - -Wuninitialized - ```` - -* NVCC: - ```` - -Wall -Wunused-parameter -Wshadow -pedantic - -Werror -Wsign-compare -Wtype-limits - -Wuninitialized - ```` - -Other compilers are tested occasionally, in particular when pushing from develop to -master branch. These are tested less rigorously without `-Werror` and only for a select set of backends. - -# Building and Installing Kokkos -Kokkos provide a CMake build system and a raw Makefile build system. -The CMake build system is strongly encouraged and will be the most rigorously supported in future releases. -Full details are given in the [build instructions](BUILD.md). Basic setups are shown here: - -## CMake - -The best way to install Kokkos is using the CMake build system. Assuming Kokkos lives in `$srcdir`: -````bash -cmake $srcdir \ - -DCMAKE_CXX_COMPILER=$path_to_compiler \ - -DCMAKE_INSTALL_PREFIX=$path_to_install \ - -DKokkos_ENABLE_OPENMP=On \ - -DKokkos_ARCH_HSW=On \ - -DKokkos_HWLOC_DIR=$path_to_hwloc -```` -then simply type `make install`. The Kokkos CMake package will then be installed in `$path_to_install` to be used by downstream packages. - -To validate the Kokkos build, configure with -```` - -DKokkos_ENABLE_TESTS=On -```` -and run `make test` after completing the build. - -For your CMake project using Kokkos, code such as the following: - -````cmake -find_package(Kokkos) -... -target_link_libraries(myTarget Kokkos::kokkos) -```` -should be added to your CMakeLists.txt. Your configure should additionally include -```` --DKokkos_DIR=$path_to_install/cmake/lib/Kokkos -```` -or -```` --DKokkos_ROOT=$path_to_install -```` -for the install location given above. - -## Spack -An alternative to manually building with the CMake is to use the Spack package manager. -To get started, download the Spack [repo](https://github.com/spack/spack). -```` -A basic installation would be done as: -````bash -> spack install kokkos -```` -Spack allows options and and compilers to be tuned in the install command. -````bash -> spack install kokkos@3.0 %gcc@7.3.0 +openmp -```` -This example illustrates the three most common parameters to Spack: -* Variants: specified with, e.g. `+openmp`, this activates (or deactivates with, e.g. `~openmp`) certain options. -* Version: immediately following `kokkos` the `@version` can specify a particular Kokkos to build -* Compiler: a default compiler will be chosen if not specified, but an exact compiler version can be given with the `%`option. - -For a complete list of Kokkos options, run: -````bash -> spack info kokkos -```` -Spack currently installs packages to a location determined by a unique hash. This hash name is not really "human readable". -Generally, Spack usage should never really require you to reference the computer-generated unique install folder. -More details are given in the [build instructions](BUILD.md). If you must know, you can locate Spack Kokkos installations with: -````bash -> spack find -p kokkos ... -```` -where `...` is the unique spec identifying the particular Kokkos configuration and version. -Some more details can found in the Kokkos spack [documentation](Spack.md) or the Spack [website](https://spack.readthedocs.io/en/latest). - -## Raw Makefile - -Raw Makefiles are only supported via inline builds. See below. - -## Inline Builds vs. Installed Package -For individual projects, it may be preferable to build Kokkos inline rather than link to an installed package. -The main reason is that you may otherwise need many different -configurations of Kokkos installed depending on the required compile time -features an application needs. For example there is only one default -execution space, which means you need different installations to have OpenMP -or C++ threads as the default space. Also for the CUDA backend there are certain -choices, such as allowing relocatable device code, which must be made at -installation time. Building Kokkos inline uses largely the same process -as compiling an application against an installed Kokkos library. - -For CMake, this means copying over the Kokkos source code into your project and adding `add_subdirectory(kokkos)` to your CMakeLists.txt. - -For raw Makefiles, see the example benchmarks/bytes_and_flops/Makefile which can be used with an installed library and or an inline build. - -# Kokkos and CUDA UVM - -Kokkos does support UVM as a specific memory space called CudaUVMSpace. -Allocations made with that space are accessible from host and device. -You can tell Kokkos to use that as the default space for Cuda allocations. -In either case UVM comes with a number of restrictions: -* You can't access allocations on the host while a kernel is potentially -running. This will lead to segfaults. To avoid that you either need to -call Kokkos::Cuda::fence() (or just Kokkos::fence()), after kernels, or -you can set the environment variable CUDA_LAUNCH_BLOCKING=1. -* In multi socket multi GPU machines without NVLINK, UVM defaults -to using zero copy allocations for technical reasons related to using multiple -GPUs from the same process. If an executable doesn't do that (e.g. each -MPI rank of an application uses a single GPU [can be the same GPU for -multiple MPI ranks]) you can set CUDA_MANAGED_FORCE_DEVICE_ALLOC=1. -This will enforce proper UVM allocations, but can lead to errors if -more than a single GPU is used by a single process. +All requirements including minimum and primary tested compiler versions can be found [here](https://kokkos.github.io/kokkos-core-wiki/requirements.html). +Building and installation instructions are described [here](https://kokkos.github.io/kokkos-core-wiki/building.html). # Citing Kokkos -If you publish work which mentions Kokkos, please cite the following paper: +Please see the [following page](https://kokkos.github.io/kokkos-core-wiki/citation.html). -````BibTex -@ARTICLE{9485033, - author={Trott, Christian R. and Lebrun-Grandié, Damien and Arndt, Daniel and Ciesko, Jan and Dang, Vinh and Ellingwood, Nathan and Gayatri, Rahulkumar and Harvey, Evan and Hollman, Daisy S. and Ibanez, Dan and Liber, Nevin and Madsen, Jonathan and Miles, Jeff and Poliakoff, David and Powell, Amy and Rajamanickam, Sivasankaran and Simberg, Mikael and Sunderland, Dan and Turcksin, Bruno and Wilke, Jeremiah}, - journal={IEEE Transactions on Parallel and Distributed Systems}, - title={Kokkos 3: Programming Model Extensions for the Exascale Era}, - year={2022}, - volume={33}, - number={4}, - pages={805-817}, - doi={10.1109/TPDS.2021.3097283}} -```` - -If you use more than one Kokkos EcoSystem package, please also cite: - -````BibTex -@ARTICLE{9502936, - author={Trott, Christian and Berger-Vergiat, Luc and Poliakoff, David and Rajamanickam, Sivasankaran and Lebrun-Grandie, Damien and Madsen, Jonathan and Al Awar, Nader and Gligoric, Milos and Shipman, Galen and Womeldorff, Geoff}, - journal={Computing in Science Engineering}, - title={The Kokkos EcoSystem: Comprehensive Performance Portability for High Performance Computing}, - year={2021}, - volume={23}, - number={5}, - pages={10-18}, - doi={10.1109/MCSE.2021.3098509}} -```` - - -And if you feel generous: feel free to cite the original Kokkos paper which describes most of the basic Kokkos concepts: - -````BibTeX -@article{CarterEdwards20143202, - title = "Kokkos: Enabling manycore performance portability through polymorphic memory access patterns ", - journal = "Journal of Parallel and Distributed Computing ", - volume = "74", - number = "12", - pages = "3202 - 3216", - year = "2014", - note = "Domain-Specific Languages and High-Level Frameworks for High-Performance Computing ", - issn = "0743-7315", - doi = "https://doi.org/10.1016/j.jpdc.2014.07.003", - url = "http://www.sciencedirect.com/science/article/pii/S0743731514001257", - author = "H. Carter Edwards and Christian R. Trott and Daniel Sunderland" -} -```` - -##### [LICENSE](https://github.com/kokkos/kokkos/blob/master/LICENSE) +# License [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) Under the terms of Contract DE-NA0003525 with NTESS, the U.S. Government retains certain rights in this software. +The full license statement used in all headers is available [here](https://kokkos.github.io/kokkos-core-wiki/license.html) or +[here](https://github.com/kokkos/kokkos/blob/master/LICENSE). diff --git a/lib/kokkos/algorithms/src/CMakeLists.txt b/lib/kokkos/algorithms/src/CMakeLists.txt index 4b60d887f7..597626b111 100644 --- a/lib/kokkos/algorithms/src/CMakeLists.txt +++ b/lib/kokkos/algorithms/src/CMakeLists.txt @@ -11,6 +11,7 @@ FILE(GLOB ALGO_HEADERS *.hpp) FILE(GLOB ALGO_SOURCES *.cpp) LIST(APPEND ALGO_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}_config.h) APPEND_GLOB(ALGO_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/std_algorithms/*.hpp) +APPEND_GLOB(ALGO_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/std_algorithms/impl/*.hpp) INSTALL ( DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" diff --git a/lib/kokkos/algorithms/src/Kokkos_Random.hpp b/lib/kokkos/algorithms/src/Kokkos_Random.hpp index 59c11afd9a..1d85ffdfb9 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Random.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Random.hpp @@ -44,6 +44,10 @@ #ifndef KOKKOS_RANDOM_HPP #define KOKKOS_RANDOM_HPP +#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE +#define KOKKOS_IMPL_PUBLIC_INCLUDE +#define KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_RANDOM +#endif #include #include @@ -648,63 +652,44 @@ struct Random_UniqueIndex { } }; -#ifdef KOKKOS_ENABLE_CUDA -template -struct Random_UniqueIndex> { - using locks_view_type = - View>; - KOKKOS_FUNCTION - static int get_state_idx(const locks_view_type& locks_) { -#ifdef __CUDA_ARCH__ - const int i_offset = - (threadIdx.x * blockDim.y + threadIdx.y) * blockDim.z + threadIdx.z; - int i = (((blockIdx.x * gridDim.y + blockIdx.y) * gridDim.z + blockIdx.z) * - blockDim.x * blockDim.y * blockDim.z + - i_offset) % - locks_.extent(0); - while (Kokkos::atomic_compare_exchange(&locks_(i, 0), 0, 1)) { - i += blockDim.x * blockDim.y * blockDim.z; - if (i >= static_cast(locks_.extent(0))) { - i = i_offset; - } - } - return i; -#else - (void)locks_; - return 0; -#endif - } -}; +#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_HIP) + +#if defined(KOKKOS_ENABLE_CUDA) +#define KOKKOS_IMPL_EXECUTION_SPACE_CUDA_OR_HIP Kokkos::Cuda +#elif defined(KOKKOS_ENABLE_HIP) +#define KOKKOS_IMPL_EXECUTION_SPACE_CUDA_OR_HIP Kokkos::Experimental::HIP #endif -#ifdef KOKKOS_ENABLE_HIP template struct Random_UniqueIndex< - Kokkos::Device> { + Kokkos::Device> { using locks_view_type = - View>; + View>; KOKKOS_FUNCTION static int get_state_idx(const locks_view_type& locks_) { -#ifdef __HIP_DEVICE_COMPILE__ - const int i_offset = - (threadIdx.x * blockDim.y + threadIdx.y) * blockDim.z + threadIdx.z; - int i = (((blockIdx.x * gridDim.y + blockIdx.y) * gridDim.z + blockIdx.z) * + KOKKOS_IF_ON_DEVICE(( + const int i_offset = + (threadIdx.x * blockDim.y + threadIdx.y) * blockDim.z + threadIdx.z; + int i = + (((blockIdx.x * gridDim.y + blockIdx.y) * gridDim.z + blockIdx.z) * blockDim.x * blockDim.y * blockDim.z + i_offset) % locks_.extent(0); - while (Kokkos::atomic_compare_exchange(&locks_(i, 0), 0, 1)) { - i += blockDim.x * blockDim.y * blockDim.z; - if (i >= static_cast(locks_.extent(0))) { - i = i_offset; - } - } - return i; -#else - (void)locks_; - return 0; -#endif + while (Kokkos::atomic_compare_exchange(&locks_(i, 0), 0, 1)) { + i += blockDim.x * blockDim.y * blockDim.z; + if (i >= static_cast(locks_.extent(0))) { + i = i_offset; + } + } + + return i;)) + KOKKOS_IF_ON_HOST(((void)locks_; return 0;)) } }; + +#undef KOKKOS_IMPL_EXECUTION_SPACE_CUDA_OR_HIP + #endif #ifdef KOKKOS_ENABLE_SYCL @@ -1279,7 +1264,6 @@ struct fill_random_functor_begin_end; template struct fill_random_functor_begin_end { - using execution_space = typename ViewType::execution_space; ViewType a; RandomPool rand_pool; typename ViewType::const_value_type begin, end; @@ -1303,7 +1287,6 @@ struct fill_random_functor_begin_end struct fill_random_functor_begin_end { - using execution_space = typename ViewType::execution_space; ViewType a; RandomPool rand_pool; typename ViewType::const_value_type begin, end; @@ -1331,7 +1314,6 @@ struct fill_random_functor_begin_end struct fill_random_functor_begin_end { - using execution_space = typename ViewType::execution_space; ViewType a; RandomPool rand_pool; typename ViewType::const_value_type begin, end; @@ -1361,7 +1343,6 @@ struct fill_random_functor_begin_end struct fill_random_functor_begin_end { - using execution_space = typename ViewType::execution_space; ViewType a; RandomPool rand_pool; typename ViewType::const_value_type begin, end; @@ -1392,7 +1373,6 @@ struct fill_random_functor_begin_end struct fill_random_functor_begin_end { - using execution_space = typename ViewType::execution_space; ViewType a; RandomPool rand_pool; typename ViewType::const_value_type begin, end; @@ -1424,7 +1404,6 @@ struct fill_random_functor_begin_end struct fill_random_functor_begin_end { - using execution_space = typename ViewType::execution_space; ViewType a; RandomPool rand_pool; typename ViewType::const_value_type begin, end; @@ -1458,7 +1437,6 @@ struct fill_random_functor_begin_end struct fill_random_functor_begin_end { - using execution_space = typename ViewType::execution_space; ViewType a; RandomPool rand_pool; typename ViewType::const_value_type begin, end; @@ -1494,7 +1472,6 @@ struct fill_random_functor_begin_end struct fill_random_functor_begin_end { - using execution_space = typename ViewType::execution_space; ViewType a; RandomPool rand_pool; typename ViewType::const_value_type begin, end; @@ -1532,7 +1509,6 @@ struct fill_random_functor_begin_end struct fill_random_functor_begin_end { - using execution_space = typename ViewType::execution_space; ViewType a; RandomPool rand_pool; typename ViewType::const_value_type begin, end; @@ -1569,34 +1545,57 @@ struct fill_random_functor_begin_end -void fill_random(ViewType a, RandomPool g, +template +void fill_random(const ExecutionSpace& exec, ViewType a, RandomPool g, typename ViewType::const_value_type begin, typename ViewType::const_value_type end) { int64_t LDA = a.extent(0); if (LDA > 0) - parallel_for("Kokkos::fill_random", (LDA + 127) / 128, - Impl::fill_random_functor_begin_end( - a, g, begin, end)); + parallel_for( + "Kokkos::fill_random", + Kokkos::RangePolicy(exec, 0, (LDA + 127) / 128), + Impl::fill_random_functor_begin_end( + a, g, begin, end)); } } // namespace Impl +template +void fill_random(const ExecutionSpace& exec, ViewType a, RandomPool g, + typename ViewType::const_value_type begin, + typename ViewType::const_value_type end) { + Impl::apply_to_view_of_static_rank( + [&](auto dst) { Kokkos::Impl::fill_random(exec, dst, g, begin, end); }, + a); +} + +template +void fill_random(const ExecutionSpace& exec, ViewType a, RandomPool g, + typename ViewType::const_value_type range) { + fill_random(exec, a, g, 0, range); +} + template void fill_random(ViewType a, RandomPool g, typename ViewType::const_value_type begin, typename ViewType::const_value_type end) { - Impl::apply_to_view_of_static_rank( - [&](auto dst) { Kokkos::Impl::fill_random(dst, g, begin, end); }, a); + fill_random(typename ViewType::execution_space{}, a, g, begin, end); } template void fill_random(ViewType a, RandomPool g, typename ViewType::const_value_type range) { - fill_random(a, g, 0, range); + fill_random(typename ViewType::execution_space{}, a, g, 0, range); } } // namespace Kokkos +#ifdef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_RANDOM +#undef KOKKOS_IMPL_PUBLIC_INCLUDE +#undef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_RANDOM +#endif #endif diff --git a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp index ce97de9b7d..ad0c2d47b6 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp @@ -44,6 +44,10 @@ #ifndef KOKKOS_SORT_HPP_ #define KOKKOS_SORT_HPP_ +#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE +#define KOKKOS_IMPL_PUBLIC_INCLUDE +#define KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_SORT +#endif #include @@ -120,13 +124,13 @@ class BinSort { // If a Kokkos::View then can generate constant random access // otherwise can only use the constant type. - using src_view_type = typename std::conditional< + using src_view_type = std::conditional_t< Kokkos::is_view::value, Kokkos::View >, - typename SrcViewType::const_type>::type; + typename SrcViewType::const_type>; using perm_view_type = typename PermuteViewType::const_type; @@ -151,8 +155,11 @@ class BinSort { } }; - using execution_space = typename Space::execution_space; - using bin_op_type = BinSortOp; + // Naming this alias "execution_space" would be problematic since it would be + // considered as execution space for the various functors which might use + // another execution space through sort() or create_permute_vector(). + using exec_space = typename Space::execution_space; + using bin_op_type = BinSortOp; struct bin_count_tag {}; struct bin_offset_tag {}; @@ -171,13 +178,13 @@ class BinSort { // If a Kokkos::View then can generate constant random access // otherwise can only use the constant type. - using const_rnd_key_view_type = typename std::conditional< + using const_rnd_key_view_type = std::conditional_t< Kokkos::is_view::value, Kokkos::View >, - const_key_view_type>::type; + const_key_view_type>; using non_const_key_scalar = typename KeyViewType::non_const_value_type; using const_key_scalar = typename KeyViewType::const_value_type; @@ -220,6 +227,14 @@ class BinSort { range_begin(range_begin_), range_end(range_end_), sort_within_bins(sort_within_bins_) { + static_assert( + Kokkos::SpaceAccessibility::accessible, + "The provided execution space must be able to access the memory space " + "BinSort was initialized with!"); + if (bin_op.max_bins() <= 0) + Kokkos::abort( + "The number of bins in the BinSortOp object must be greater than 0!"); bin_count_atomic = Kokkos::View( "Kokkos::SortImpl::BinSortFunctor::bin_count", bin_op.max_bins()); bin_count_const = bin_count_atomic; @@ -235,7 +250,7 @@ class BinSort { BinSort(const_key_view_type keys_, int range_begin_, int range_end_, BinSortOp bin_op_, bool sort_within_bins_ = false) - : BinSort(execution_space{}, keys_, range_begin_, range_end_, bin_op_, + : BinSort(exec_space{}, keys_, range_begin_, range_end_, bin_op_, sort_within_bins_) {} template @@ -245,13 +260,19 @@ class BinSort { BinSort(const_key_view_type keys_, BinSortOp bin_op_, bool sort_within_bins_ = false) - : BinSort(execution_space{}, keys_, bin_op_, sort_within_bins_) {} + : BinSort(exec_space{}, keys_, bin_op_, sort_within_bins_) {} //---------------------------------------- // Create the permutation vector, the bin_offset array and the bin_count // array. Can be called again if keys changed - template - void create_permute_vector(const ExecutionSpace& exec = execution_space{}) { + template + void create_permute_vector(const ExecutionSpace& exec = exec_space{}) { + static_assert( + Kokkos::SpaceAccessibility::accessible, + "The provided execution space must be able to access the memory space " + "BinSort was initialized with!"); + const size_t len = range_end - range_begin; Kokkos::parallel_for( "Kokkos::Sort::BinCount", @@ -281,6 +302,17 @@ class BinSort { template void sort(const ExecutionSpace& exec, ValuesViewType const& values, int values_range_begin, int values_range_end) const { + static_assert( + Kokkos::SpaceAccessibility::accessible, + "The provided execution space must be able to access the memory space " + "BinSort was initialized with!"); + static_assert( + Kokkos::SpaceAccessibility< + ExecutionSpace, typename ValuesViewType::memory_space>::accessible, + "The provided execution space must be able to access the memory space " + "of the View argument!"); + using scratch_view_type = Kokkos::View void sort(ValuesViewType const& values, int values_range_begin, int values_range_end) const { - execution_space exec; + exec_space exec; sort(exec, values, values_range_begin, values_range_end); exec.fence("Kokkos::Sort: fence after sorting"); } @@ -428,7 +460,7 @@ struct BinOp1D { BinOp1D() = default; - // Construct BinOp with number of bins, minimum value and maxuimum value + // Construct BinOp with number of bins, minimum value and maximum value BinOp1D(int max_bins__, typename KeyViewType::const_value_type min, typename KeyViewType::const_value_type max) : max_bins_(max_bins__ + 1), @@ -554,11 +586,7 @@ struct min_max_functor { template std::enable_if_t::value> sort( - const ExecutionSpace& exec, ViewType const& view, - bool const always_use_kokkos_sort = false) { - if (!always_use_kokkos_sort) { - if (Impl::try_std_sort(view, exec)) return; - } + const ExecutionSpace& exec, ViewType const& view) { using CompType = BinOp1D; Kokkos::MinMaxScalar result; @@ -596,12 +624,38 @@ std::enable_if_t::value> sort( bin_sort.sort(exec, view); } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 +template +KOKKOS_DEPRECATED_WITH_COMMENT( + "Use the overload not taking bool always_use_kokkos_sort") +std::enable_if_t::value> sort( + const ExecutionSpace& exec, ViewType const& view, + bool const always_use_kokkos_sort) { + if (!always_use_kokkos_sort && Impl::try_std_sort(view, exec)) { + return; + } else { + sort(exec, view); + } +} +#endif + template -void sort(ViewType const& view, bool const always_use_kokkos_sort = false) { +void sort(ViewType const& view) { + typename ViewType::execution_space exec; + sort(exec, view); + exec.fence("Kokkos::Sort: fence after sorting"); +} + +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 +template +KOKKOS_DEPRECATED_WITH_COMMENT( + "Use the overload not taking bool always_use_kokkos_sort") +void sort(ViewType const& view, bool const always_use_kokkos_sort) { typename ViewType::execution_space exec; sort(exec, view, always_use_kokkos_sort); exec.fence("Kokkos::Sort: fence after sorting"); } +#endif template std::enable_if_t::value> sort( @@ -635,4 +689,8 @@ void sort(ViewType view, size_t const begin, size_t const end) { } // namespace Kokkos +#ifdef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_SORT +#undef KOKKOS_IMPL_PUBLIC_INCLUDE +#undef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_SORT +#endif #endif diff --git a/lib/kokkos/algorithms/src/Kokkos_StdAlgorithms.hpp b/lib/kokkos/algorithms/src/Kokkos_StdAlgorithms.hpp index 2e3babbcf0..3e0f731cf0 100644 --- a/lib/kokkos/algorithms/src/Kokkos_StdAlgorithms.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_StdAlgorithms.hpp @@ -44,59 +44,103 @@ #ifndef KOKKOS_STD_ALGORITHMS_HPP #define KOKKOS_STD_ALGORITHMS_HPP +#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE +#define KOKKOS_IMPL_PUBLIC_INCLUDE +#define KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_STD_ALGORITHMS +#endif /// \file Kokkos_StdAlgorithms.hpp /// \brief Kokkos counterparts for Standard C++ Library algorithms -#include -#include -#include +#include "std_algorithms/impl/Kokkos_Constraints.hpp" +#include "std_algorithms/impl/Kokkos_RandomAccessIterator.hpp" +#include "std_algorithms/Kokkos_BeginEnd.hpp" // distance -#include +#include "std_algorithms/Kokkos_Distance.hpp" -// move, swap, iter_swap -#include "std_algorithms/Kokkos_ModifyingOperations.hpp" +// note that we categorize below the headers +// following the std classification. -// find, find_if, find_if_not -// for_each, for_each_n -// mismatch -// equal -// count_if, count -// all_of, any_of, none_of -// adjacent_find -// lexicographical_compare -// search, search_n -// find_first_of, find_end -#include +// modifying ops +#include "std_algorithms/Kokkos_Swap.hpp" +#include "std_algorithms/Kokkos_IterSwap.hpp" -// replace, replace_copy_if, replace_copy, replace_if -// copy, copy_n, copy_backward, copy_if -// fill, fill_n -// transform -// generate, generate_n -// reverse, reverse_copy -// move, move_backward -// swap_ranges -// unique, unique_copy -// rotate, rotate_copy -// remove, remove_if, remove_copy, remove_copy_if -// shift_left, shift_right -#include +// non-modifying sequence +#include "std_algorithms/Kokkos_AdjacentFind.hpp" +#include "std_algorithms/Kokkos_Count.hpp" +#include "std_algorithms/Kokkos_CountIf.hpp" +#include "std_algorithms/Kokkos_AllOf.hpp" +#include "std_algorithms/Kokkos_AnyOf.hpp" +#include "std_algorithms/Kokkos_NoneOf.hpp" +#include "std_algorithms/Kokkos_Equal.hpp" +#include "std_algorithms/Kokkos_Find.hpp" +#include "std_algorithms/Kokkos_FindIf.hpp" +#include "std_algorithms/Kokkos_FindIfNot.hpp" +#include "std_algorithms/Kokkos_FindEnd.hpp" +#include "std_algorithms/Kokkos_FindFirstOf.hpp" +#include "std_algorithms/Kokkos_ForEach.hpp" +#include "std_algorithms/Kokkos_ForEachN.hpp" +#include "std_algorithms/Kokkos_LexicographicalCompare.hpp" +#include "std_algorithms/Kokkos_Mismatch.hpp" +#include "std_algorithms/Kokkos_Search.hpp" +#include "std_algorithms/Kokkos_SearchN.hpp" -// is_sorted_until, is_sorted -#include +// modifying sequence +#include "std_algorithms/Kokkos_Fill.hpp" +#include "std_algorithms/Kokkos_FillN.hpp" +#include "std_algorithms/Kokkos_Replace.hpp" +#include "std_algorithms/Kokkos_ReplaceIf.hpp" +#include "std_algorithms/Kokkos_ReplaceCopyIf.hpp" +#include "std_algorithms/Kokkos_ReplaceCopy.hpp" +#include "std_algorithms/Kokkos_Copy.hpp" +#include "std_algorithms/Kokkos_CopyN.hpp" +#include "std_algorithms/Kokkos_CopyBackward.hpp" +#include "std_algorithms/Kokkos_CopyIf.hpp" +#include "std_algorithms/Kokkos_Transform.hpp" +#include "std_algorithms/Kokkos_Generate.hpp" +#include "std_algorithms/Kokkos_GenerateN.hpp" +#include "std_algorithms/Kokkos_Reverse.hpp" +#include "std_algorithms/Kokkos_ReverseCopy.hpp" +#include "std_algorithms/Kokkos_Move.hpp" +#include "std_algorithms/Kokkos_MoveBackward.hpp" +#include "std_algorithms/Kokkos_SwapRanges.hpp" +#include "std_algorithms/Kokkos_Unique.hpp" +#include "std_algorithms/Kokkos_UniqueCopy.hpp" +#include "std_algorithms/Kokkos_Rotate.hpp" +#include "std_algorithms/Kokkos_RotateCopy.hpp" +#include "std_algorithms/Kokkos_Remove.hpp" +#include "std_algorithms/Kokkos_RemoveIf.hpp" +#include "std_algorithms/Kokkos_RemoveCopy.hpp" +#include "std_algorithms/Kokkos_RemoveCopyIf.hpp" +#include "std_algorithms/Kokkos_ShiftLeft.hpp" +#include "std_algorithms/Kokkos_ShiftRight.hpp" -// min_element, max_element, minmax_element -#include +// sorting +#include "std_algorithms/Kokkos_IsSortedUntil.hpp" +#include "std_algorithms/Kokkos_IsSorted.hpp" -// is_partitioned, partition_copy, partition_point -#include +// min/max element +#include "std_algorithms/Kokkos_MinElement.hpp" +#include "std_algorithms/Kokkos_MaxElement.hpp" +#include "std_algorithms/Kokkos_MinMaxElement.hpp" -// adjacent_difference -// reduce, transform_reduce -// exclusive_scan, transform_exclusive_scan -// inclusive_scan, transform_inclusive_scan -#include +// partitioning +#include "std_algorithms/Kokkos_IsPartitioned.hpp" +#include "std_algorithms/Kokkos_PartitionCopy.hpp" +#include "std_algorithms/Kokkos_PartitionPoint.hpp" +// numeric +#include "std_algorithms/Kokkos_AdjacentDifference.hpp" +#include "std_algorithms/Kokkos_Reduce.hpp" +#include "std_algorithms/Kokkos_TransformReduce.hpp" +#include "std_algorithms/Kokkos_ExclusiveScan.hpp" +#include "std_algorithms/Kokkos_TransformExclusiveScan.hpp" +#include "std_algorithms/Kokkos_InclusiveScan.hpp" +#include "std_algorithms/Kokkos_TransformInclusiveScan.hpp" + +#ifdef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_STD_ALGORITHMS +#undef KOKKOS_IMPL_PUBLIC_INCLUDE +#undef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_STD_ALGORITHMS +#endif #endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/numeric/Kokkos_AdjacentDifference.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_AdjacentDifference.hpp similarity index 72% rename from lib/kokkos/algorithms/src/std_algorithms/numeric/Kokkos_AdjacentDifference.hpp rename to lib/kokkos/algorithms/src/std_algorithms/Kokkos_AdjacentDifference.hpp index 03e5fd6aeb..0a7cf06f5b 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/numeric/Kokkos_AdjacentDifference.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_AdjacentDifference.hpp @@ -42,106 +42,15 @@ //@HEADER */ -#ifndef KOKKOS_STD_NUMERICS_ADJACENT_DIFFERENCE_HPP -#define KOKKOS_STD_NUMERICS_ADJACENT_DIFFERENCE_HPP +#ifndef KOKKOS_STD_ALGORITHMS_ADJACENT_DIFFERENCE_HPP +#define KOKKOS_STD_ALGORITHMS_ADJACENT_DIFFERENCE_HPP -#include -#include "../Kokkos_BeginEnd.hpp" -#include "../Kokkos_Constraints.hpp" -#include "../Kokkos_Distance.hpp" +#include "impl/Kokkos_AdjacentDifference.hpp" +#include "Kokkos_BeginEnd.hpp" namespace Kokkos { namespace Experimental { -namespace Impl { -// ------------------------ -// -// functors -// -// ------------------------ -template -struct StdAdjacentDifferenceDefaultBinaryOpFunctor { - KOKKOS_FUNCTION - constexpr RetType operator()(const ValueType1& a, const ValueType2& b) const { - return a - b; - } -}; - -template -struct StdAdjacentDiffFunctor { - using index_type = typename InputIteratorType::difference_type; - - const InputIteratorType m_first_from; - const OutputIteratorType m_first_dest; - BinaryOperator m_op; - - KOKKOS_FUNCTION - void operator()(const index_type i) const { - const auto& my_value = m_first_from[i]; - if (i == 0) { - m_first_dest[i] = my_value; - } else { - const auto& left_value = m_first_from[i - 1]; - m_first_dest[i] = m_op(my_value, left_value); - } - } - - KOKKOS_FUNCTION - StdAdjacentDiffFunctor(InputIteratorType first_from, - OutputIteratorType first_dest, BinaryOperator op) - : m_first_from(std::move(first_from)), - m_first_dest(std::move(first_dest)), - m_op(std::move(op)) {} -}; - -// ------------------------------------------ -// adjacent_difference_impl -// ------------------------------------------ -template -OutputIteratorType adjacent_difference_impl(const std::string& label, - const ExecutionSpace& ex, - InputIteratorType first_from, - InputIteratorType last_from, - OutputIteratorType first_dest, - BinaryOp bin_op) { - // checks - Impl::static_assert_random_access_and_accessible(ex, first_from, first_dest); - Impl::static_assert_iterators_have_matching_difference_type(first_from, - first_dest); - Impl::expect_valid_range(first_from, last_from); - - if (first_from == last_from) { - return first_dest; - } - - // aliases - using value_type = typename OutputIteratorType::value_type; - using aux_view_type = ::Kokkos::View; - using functor_t = - StdAdjacentDiffFunctor; - - // run - const auto num_elements = - Kokkos::Experimental::distance(first_from, last_from); - aux_view_type aux_view("aux_view", num_elements); - ::Kokkos::parallel_for(label, - RangePolicy(ex, 0, num_elements), - functor_t(first_from, first_dest, bin_op)); - ex.fence("Kokkos::adjacent_difference: fence after operation"); - - // return - return first_dest + num_elements; -} - -} // end namespace Impl - -// ------------------------ -// -// public API -// -// ------------------------ template std::enable_if_t::value, diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_AdjacentFind.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_AdjacentFind.hpp new file mode 100644 index 0000000000..332f9dd369 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_AdjacentFind.hpp @@ -0,0 +1,124 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_ADJACENT_FIND_HPP +#define KOKKOS_STD_ALGORITHMS_ADJACENT_FIND_HPP + +#include "impl/Kokkos_AdjacentFind.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +// overload set1 +template +IteratorType adjacent_find(const ExecutionSpace& ex, IteratorType first, + IteratorType last) { + return Impl::adjacent_find_impl("Kokkos::adjacent_find_iterator_api_default", + ex, first, last); +} + +template +IteratorType adjacent_find(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last) { + return Impl::adjacent_find_impl(label, ex, first, last); +} + +template +auto adjacent_find(const ExecutionSpace& ex, + const ::Kokkos::View& v) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + namespace KE = ::Kokkos::Experimental; + return Impl::adjacent_find_impl("Kokkos::adjacent_find_view_api_default", ex, + KE::begin(v), KE::end(v)); +} + +template +auto adjacent_find(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + namespace KE = ::Kokkos::Experimental; + return Impl::adjacent_find_impl(label, ex, KE::begin(v), KE::end(v)); +} + +// overload set2 +template +IteratorType adjacent_find(const ExecutionSpace& ex, IteratorType first, + IteratorType last, BinaryPredicateType pred) { + return Impl::adjacent_find_impl("Kokkos::adjacent_find_iterator_api_default", + ex, first, last, pred); +} + +template +IteratorType adjacent_find(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, + BinaryPredicateType pred) { + return Impl::adjacent_find_impl(label, ex, first, last, pred); +} + +template +auto adjacent_find(const ExecutionSpace& ex, + const ::Kokkos::View& v, + BinaryPredicateType pred) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + namespace KE = ::Kokkos::Experimental; + return Impl::adjacent_find_impl("Kokkos::adjacent_find_view_api_default", ex, + KE::begin(v), KE::end(v), pred); +} + +template +auto adjacent_find(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, + BinaryPredicateType pred) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + namespace KE = ::Kokkos::Experimental; + return Impl::adjacent_find_impl(label, ex, KE::begin(v), KE::end(v), pred); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_AllOf.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_AllOf.hpp new file mode 100644 index 0000000000..66a49541f3 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_AllOf.hpp @@ -0,0 +1,94 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_ALL_OF_HPP +#define KOKKOS_STD_ALGORITHMS_ALL_OF_HPP + +#include "impl/Kokkos_AllOfAnyOfNoneOf.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +bool all_of(const ExecutionSpace& ex, InputIterator first, InputIterator last, + Predicate predicate) { + return Impl::all_of_impl("Kokkos::all_of_iterator_api_default", ex, first, + last, predicate); +} + +template +bool all_of(const std::string& label, const ExecutionSpace& ex, + InputIterator first, InputIterator last, Predicate predicate) { + return Impl::all_of_impl(label, ex, first, last, predicate); +} + +template +bool all_of(const ExecutionSpace& ex, + const ::Kokkos::View& v, + Predicate predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::all_of_impl("Kokkos::all_of_view_api_default", ex, KE::cbegin(v), + KE::cend(v), std::move(predicate)); +} + +template +bool all_of(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, + Predicate predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::all_of_impl(label, ex, KE::cbegin(v), KE::cend(v), + std::move(predicate)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_AnyOf.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_AnyOf.hpp new file mode 100644 index 0000000000..e50e90f6da --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_AnyOf.hpp @@ -0,0 +1,94 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_ANY_OF_HPP +#define KOKKOS_STD_ALGORITHMS_ANY_OF_HPP + +#include "impl/Kokkos_AllOfAnyOfNoneOf.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +bool any_of(const ExecutionSpace& ex, InputIterator first, InputIterator last, + Predicate predicate) { + return Impl::any_of_impl("Kokkos::any_of_view_api_default", ex, first, last, + predicate); +} + +template +bool any_of(const std::string& label, const ExecutionSpace& ex, + InputIterator first, InputIterator last, Predicate predicate) { + return Impl::any_of_impl(label, ex, first, last, predicate); +} + +template +bool any_of(const ExecutionSpace& ex, + const ::Kokkos::View& v, + Predicate predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::any_of_impl("Kokkos::any_of_view_api_default", ex, KE::cbegin(v), + KE::cend(v), std::move(predicate)); +} + +template +bool any_of(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, + Predicate predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::any_of_impl(label, ex, KE::cbegin(v), KE::cend(v), + std::move(predicate)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_BeginEnd.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_BeginEnd.hpp index beb53fdd70..5449196192 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_BeginEnd.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_BeginEnd.hpp @@ -46,8 +46,8 @@ #define KOKKOS_BEGIN_END_HPP #include -#include "Kokkos_RandomAccessIterator.hpp" -#include "Kokkos_Constraints.hpp" +#include "impl/Kokkos_RandomAccessIterator.hpp" +#include "impl/Kokkos_Constraints.hpp" /// \file Kokkos_BeginEnd.hpp /// \brief Kokkos begin, end, cbegin, cend diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Copy.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Copy.hpp new file mode 100644 index 0000000000..b3237041b7 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Copy.hpp @@ -0,0 +1,97 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_COPY_HPP +#define KOKKOS_STD_ALGORITHMS_COPY_HPP + +#include "impl/Kokkos_CopyCopyN.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +OutputIterator copy(const ExecutionSpace& ex, InputIterator first, + InputIterator last, OutputIterator d_first) { + return Impl::copy_impl("Kokkos::copy_iterator_api_default", ex, first, last, + d_first); +} + +template +OutputIterator copy(const std::string& label, const ExecutionSpace& ex, + InputIterator first, InputIterator last, + OutputIterator d_first) { + return Impl::copy_impl(label, ex, first, last, d_first); +} + +template +auto copy(const ExecutionSpace& ex, + const ::Kokkos::View& source, + ::Kokkos::View& dest) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); + + namespace KE = ::Kokkos::Experimental; + return Impl::copy_impl("Kokkos::copy_view_api_default", ex, + KE::cbegin(source), KE::cend(source), KE::begin(dest)); +} + +template +auto copy(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& source, + ::Kokkos::View& dest) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); + + namespace KE = ::Kokkos::Experimental; + return Impl::copy_impl(label, ex, KE::cbegin(source), KE::cend(source), + KE::begin(dest)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyBackward.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyBackward.hpp new file mode 100644 index 0000000000..83efd96672 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyBackward.hpp @@ -0,0 +1,95 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_COPY_BACKWARD_HPP +#define KOKKOS_STD_ALGORITHMS_COPY_BACKWARD_HPP + +#include "impl/Kokkos_CopyBackward.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +IteratorType2 copy_backward(const ExecutionSpace& ex, IteratorType1 first, + IteratorType1 last, IteratorType2 d_last) { + return Impl::copy_backward_impl("Kokkos::copy_backward_iterator_api_default", + ex, first, last, d_last); +} + +template +IteratorType2 copy_backward(const std::string& label, const ExecutionSpace& ex, + IteratorType1 first, IteratorType1 last, + IteratorType2 d_last) { + return Impl::copy_backward_impl(label, ex, first, last, d_last); +} + +template +auto copy_backward(const ExecutionSpace& ex, + const ::Kokkos::View& source, + ::Kokkos::View& dest) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); + + return Impl::copy_backward_impl("Kokkos::copy_backward_view_api_default", ex, + cbegin(source), cend(source), end(dest)); +} + +template +auto copy_backward(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& source, + ::Kokkos::View& dest) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); + + return Impl::copy_backward_impl(label, ex, cbegin(source), cend(source), + end(dest)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyIf.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyIf.hpp new file mode 100644 index 0000000000..c83cc29886 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyIf.hpp @@ -0,0 +1,99 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_COPY_IF_HPP +#define KOKKOS_STD_ALGORITHMS_COPY_IF_HPP + +#include "impl/Kokkos_CopyIf.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +OutputIterator copy_if(const ExecutionSpace& ex, InputIterator first, + InputIterator last, OutputIterator d_first, + Predicate pred) { + return Impl::copy_if_impl("Kokkos::copy_if_iterator_api_default", ex, first, + last, d_first, std::move(pred)); +} + +template +OutputIterator copy_if(const std::string& label, const ExecutionSpace& ex, + InputIterator first, InputIterator last, + OutputIterator d_first, Predicate pred) { + return Impl::copy_if_impl(label, ex, first, last, d_first, std::move(pred)); +} + +template +auto copy_if(const ExecutionSpace& ex, + const ::Kokkos::View& source, + ::Kokkos::View& dest, Predicate pred) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); + + return Impl::copy_if_impl("Kokkos::copy_if_view_api_default", ex, + cbegin(source), cend(source), begin(dest), + std::move(pred)); +} + +template +auto copy_if(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& source, + ::Kokkos::View& dest, Predicate pred) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); + + return Impl::copy_if_impl(label, ex, cbegin(source), cend(source), + begin(dest), std::move(pred)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyN.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyN.hpp new file mode 100644 index 0000000000..7f3b9374c7 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyN.hpp @@ -0,0 +1,98 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_COPY_N_HPP +#define KOKKOS_STD_ALGORITHMS_COPY_N_HPP + +#include "impl/Kokkos_CopyCopyN.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +OutputIterator copy_n(const ExecutionSpace& ex, InputIterator first, Size count, + OutputIterator result) { + return Impl::copy_n_impl("Kokkos::copy_n_iterator_api_default", ex, first, + count, result); +} + +template +OutputIterator copy_n(const std::string& label, const ExecutionSpace& ex, + InputIterator first, Size count, OutputIterator result) { + return Impl::copy_n_impl(label, ex, first, count, result); +} + +template +auto copy_n(const ExecutionSpace& ex, + const ::Kokkos::View& source, Size count, + ::Kokkos::View& dest) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); + + namespace KE = ::Kokkos::Experimental; + return Impl::copy_n_impl("Kokkos::copy_n_view_api_default", ex, + KE::cbegin(source), count, KE::begin(dest)); +} + +template +auto copy_n(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& source, Size count, + ::Kokkos::View& dest) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); + + namespace KE = ::Kokkos::Experimental; + return Impl::copy_n_impl(label, ex, KE::cbegin(source), count, + KE::begin(dest)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Count.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Count.hpp new file mode 100644 index 0000000000..a885ee4ad2 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Count.hpp @@ -0,0 +1,94 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_COUNT_HPP +#define KOKKOS_STD_ALGORITHMS_COUNT_HPP + +#include "impl/Kokkos_CountCountIf.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +typename IteratorType::difference_type count(const ExecutionSpace& ex, + IteratorType first, + IteratorType last, + const T& value) { + return Impl::count_impl("Kokkos::count_iterator_api_default", ex, first, last, + value); +} + +template +typename IteratorType::difference_type count(const std::string& label, + const ExecutionSpace& ex, + IteratorType first, + IteratorType last, + const T& value) { + return Impl::count_impl(label, ex, first, last, value); +} + +template +auto count(const ExecutionSpace& ex, + const ::Kokkos::View& v, const T& value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::count_impl("Kokkos::count_view_api_default", ex, KE::cbegin(v), + KE::cend(v), value); +} + +template +auto count(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, const T& value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::count_impl(label, ex, KE::cbegin(v), KE::cend(v), value); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CountIf.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CountIf.hpp new file mode 100644 index 0000000000..98b9d74c4c --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CountIf.hpp @@ -0,0 +1,99 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_COUNT_IF_HPP +#define KOKKOS_STD_ALGORITHMS_COUNT_IF_HPP + +#include "impl/Kokkos_CountCountIf.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +typename IteratorType::difference_type count_if(const ExecutionSpace& ex, + IteratorType first, + IteratorType last, + Predicate predicate) { + return Impl::count_if_impl("Kokkos::count_if_iterator_api_default", ex, first, + last, std::move(predicate)); +} + +template +typename IteratorType::difference_type count_if(const std::string& label, + const ExecutionSpace& ex, + IteratorType first, + IteratorType last, + Predicate predicate) { + return Impl::count_if_impl(label, ex, first, last, std::move(predicate)); +} + +template +auto count_if(const ExecutionSpace& ex, + const ::Kokkos::View& v, + Predicate predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::count_if_impl("Kokkos::count_if_view_api_default", ex, + KE::cbegin(v), KE::cend(v), std::move(predicate)); +} + +template +auto count_if(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, + Predicate predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::count_if_impl(label, ex, KE::cbegin(v), KE::cend(v), + std::move(predicate)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Distance.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Distance.hpp index ced4370472..4e148642b1 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Distance.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Distance.hpp @@ -45,8 +45,8 @@ #ifndef KOKKOS_STD_ALGORITHMS_DISTANCE_HPP #define KOKKOS_STD_ALGORITHMS_DISTANCE_HPP -#include "Kokkos_Constraints.hpp" -#include "Kokkos_RandomAccessIterator.hpp" +#include "impl/Kokkos_Constraints.hpp" +#include "impl/Kokkos_RandomAccessIterator.hpp" namespace Kokkos { namespace Experimental { diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Equal.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Equal.hpp new file mode 100644 index 0000000000..8634019fad --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Equal.hpp @@ -0,0 +1,198 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_EQUAL_HPP +#define KOKKOS_STD_ALGORITHMS_EQUAL_HPP + +#include "impl/Kokkos_Equal.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +std::enable_if_t< ::Kokkos::Experimental::Impl::are_iterators< + IteratorType1, IteratorType2>::value, + bool> +equal(const ExecutionSpace& ex, IteratorType1 first1, IteratorType1 last1, + IteratorType2 first2) { + return Impl::equal_impl("Kokkos::equal_iterator_api_default", ex, first1, + last1, first2); +} + +template +std::enable_if_t< ::Kokkos::Experimental::Impl::are_iterators< + IteratorType1, IteratorType2>::value, + bool> +equal(const std::string& label, const ExecutionSpace& ex, IteratorType1 first1, + IteratorType1 last1, IteratorType2 first2) { + return Impl::equal_impl(label, ex, first1, last1, first2); +} + +template +std::enable_if_t< ::Kokkos::Experimental::Impl::are_iterators< + IteratorType1, IteratorType2>::value, + bool> +equal(const ExecutionSpace& ex, IteratorType1 first1, IteratorType1 last1, + IteratorType2 first2, BinaryPredicateType predicate) { + return Impl::equal_impl("Kokkos::equal_iterator_api_default", ex, first1, + last1, first2, std::move(predicate)); +} + +template +std::enable_if_t< ::Kokkos::Experimental::Impl::are_iterators< + IteratorType1, IteratorType2>::value, + bool> +equal(const std::string& label, const ExecutionSpace& ex, IteratorType1 first1, + IteratorType1 last1, IteratorType2 first2, + BinaryPredicateType predicate) { + return Impl::equal_impl(label, ex, first1, last1, first2, + std::move(predicate)); +} + +template +bool equal(const ExecutionSpace& ex, + const ::Kokkos::View& view1, + ::Kokkos::View& view2) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); + + namespace KE = ::Kokkos::Experimental; + return Impl::equal_impl("Kokkos::equal_view_api_default", ex, + KE::cbegin(view1), KE::cend(view1), + KE::cbegin(view2)); +} + +template +bool equal(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view1, + ::Kokkos::View& view2) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); + + namespace KE = ::Kokkos::Experimental; + return Impl::equal_impl(label, ex, KE::cbegin(view1), KE::cend(view1), + KE::cbegin(view2)); +} + +template +bool equal(const ExecutionSpace& ex, + const ::Kokkos::View& view1, + ::Kokkos::View& view2, + BinaryPredicateType predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); + + namespace KE = ::Kokkos::Experimental; + return Impl::equal_impl("Kokkos::equal_view_api_default", ex, + KE::cbegin(view1), KE::cend(view1), KE::cbegin(view2), + std::move(predicate)); +} + +template +bool equal(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view1, + ::Kokkos::View& view2, + BinaryPredicateType predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); + + namespace KE = ::Kokkos::Experimental; + return Impl::equal_impl(label, ex, KE::cbegin(view1), KE::cend(view1), + KE::cbegin(view2), std::move(predicate)); +} + +template +std::enable_if_t< ::Kokkos::Experimental::Impl::are_iterators< + IteratorType1, IteratorType2>::value, + bool> +equal(const ExecutionSpace& ex, IteratorType1 first1, IteratorType1 last1, + IteratorType2 first2, IteratorType2 last2) { + return Impl::equal_impl("Kokkos::equal_iterator_api_default", ex, first1, + last1, first2, last2); +} + +template +std::enable_if_t< ::Kokkos::Experimental::Impl::are_iterators< + IteratorType1, IteratorType2>::value, + bool> +equal(const std::string& label, const ExecutionSpace& ex, IteratorType1 first1, + IteratorType1 last1, IteratorType2 first2, IteratorType2 last2) { + return Impl::equal_impl(label, ex, first1, last1, first2, last2); +} + +template +std::enable_if_t< ::Kokkos::Experimental::Impl::are_iterators< + IteratorType1, IteratorType2>::value, + bool> +equal(const ExecutionSpace& ex, IteratorType1 first1, IteratorType1 last1, + IteratorType2 first2, IteratorType2 last2, + BinaryPredicateType predicate) { + return Impl::equal_impl("Kokkos::equal_iterator_api_default", ex, first1, + last1, first2, last2, std::move(predicate)); +} + +template +std::enable_if_t< ::Kokkos::Experimental::Impl::are_iterators< + IteratorType1, IteratorType2>::value, + bool> +equal(const std::string& label, const ExecutionSpace& ex, IteratorType1 first1, + IteratorType1 last1, IteratorType2 first2, IteratorType2 last2, + BinaryPredicateType predicate) { + return Impl::equal_impl(label, ex, first1, last1, first2, last2, + std::move(predicate)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ExclusiveScan.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ExclusiveScan.hpp new file mode 100644 index 0000000000..b97710f24f --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ExclusiveScan.hpp @@ -0,0 +1,190 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_EXCLUSIVE_SCAN_HPP +#define KOKKOS_STD_ALGORITHMS_EXCLUSIVE_SCAN_HPP + +#include "impl/Kokkos_ExclusiveScan.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +// overload set 1 +template +std::enable_if_t<::Kokkos::Experimental::Impl::are_iterators< + InputIteratorType, OutputIteratorType>::value, + OutputIteratorType> +exclusive_scan(const ExecutionSpace& ex, InputIteratorType first, + InputIteratorType last, OutputIteratorType first_dest, + ValueType init_value) { + static_assert(std::is_move_constructible::value, + "ValueType must be move constructible."); + return Impl::exclusive_scan_default_op_impl( + "Kokkos::exclusive_scan_default_functors_iterator_api", ex, first, last, + first_dest, init_value); +} + +template +std::enable_if_t<::Kokkos::Experimental::Impl::are_iterators< + InputIteratorType, OutputIteratorType>::value, + OutputIteratorType> +exclusive_scan(const std::string& label, const ExecutionSpace& ex, + InputIteratorType first, InputIteratorType last, + OutputIteratorType first_dest, ValueType init_value) { + static_assert(std::is_move_constructible::value, + "ValueType must be move constructible."); + return Impl::exclusive_scan_default_op_impl(label, ex, first, last, + first_dest, init_value); +} + +template +auto exclusive_scan(const ExecutionSpace& ex, + const ::Kokkos::View& view_from, + const ::Kokkos::View& view_dest, + ValueType init_value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_from); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_dest); + static_assert(std::is_move_constructible::value, + "ValueType must be move constructible."); + namespace KE = ::Kokkos::Experimental; + return Impl::exclusive_scan_default_op_impl( + "Kokkos::exclusive_scan_default_functors_view_api", ex, + KE::cbegin(view_from), KE::cend(view_from), KE::begin(view_dest), + init_value); +} + +template +auto exclusive_scan(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view_from, + const ::Kokkos::View& view_dest, + ValueType init_value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_from); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_dest); + static_assert(std::is_move_constructible::value, + "ValueType must be move constructible."); + namespace KE = ::Kokkos::Experimental; + return Impl::exclusive_scan_default_op_impl(label, ex, KE::cbegin(view_from), + KE::cend(view_from), + KE::begin(view_dest), init_value); +} + +// overload set 2 +template +std::enable_if_t<::Kokkos::Experimental::Impl::are_iterators< + InputIteratorType, OutputIteratorType>::value, + OutputIteratorType> +exclusive_scan(const ExecutionSpace& ex, InputIteratorType first, + InputIteratorType last, OutputIteratorType first_dest, + ValueType init_value, BinaryOpType bop) { + Impl::static_assert_is_not_openmptarget(ex); + static_assert(std::is_move_constructible::value, + "ValueType must be move constructible."); + return Impl::exclusive_scan_custom_op_impl( + "Kokkos::exclusive_scan_custom_functors_iterator_api", ex, first, last, + first_dest, init_value, bop); +} + +template +std::enable_if_t<::Kokkos::Experimental::Impl::are_iterators< + InputIteratorType, OutputIteratorType>::value, + OutputIteratorType> +exclusive_scan(const std::string& label, const ExecutionSpace& ex, + InputIteratorType first, InputIteratorType last, + OutputIteratorType first_dest, ValueType init_value, + BinaryOpType bop) { + Impl::static_assert_is_not_openmptarget(ex); + static_assert(std::is_move_constructible::value, + "ValueType must be move constructible."); + return Impl::exclusive_scan_custom_op_impl(label, ex, first, last, first_dest, + init_value, bop); +} + +template +auto exclusive_scan(const ExecutionSpace& ex, + const ::Kokkos::View& view_from, + const ::Kokkos::View& view_dest, + ValueType init_value, BinaryOpType bop) { + Impl::static_assert_is_not_openmptarget(ex); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_from); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_dest); + static_assert(std::is_move_constructible::value, + "ValueType must be move constructible."); + namespace KE = ::Kokkos::Experimental; + return Impl::exclusive_scan_custom_op_impl( + "Kokkos::exclusive_scan_custom_functors_view_api", ex, + KE::cbegin(view_from), KE::cend(view_from), KE::begin(view_dest), + init_value, bop); +} + +template +auto exclusive_scan(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view_from, + const ::Kokkos::View& view_dest, + ValueType init_value, BinaryOpType bop) { + Impl::static_assert_is_not_openmptarget(ex); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_from); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_dest); + static_assert(std::is_move_constructible::value, + "ValueType must be move constructible."); + namespace KE = ::Kokkos::Experimental; + return Impl::exclusive_scan_custom_op_impl( + label, ex, KE::cbegin(view_from), KE::cend(view_from), + KE::begin(view_dest), init_value, bop); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Fill.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Fill.hpp new file mode 100644 index 0000000000..200e03b9dc --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Fill.hpp @@ -0,0 +1,86 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_FILL_HPP +#define KOKKOS_STD_ALGORITHMS_FILL_HPP + +#include "impl/Kokkos_FillFillN.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +void fill(const ExecutionSpace& ex, IteratorType first, IteratorType last, + const T& value) { + Impl::fill_impl("Kokkos::fill_iterator_api_default", ex, first, last, value); +} + +template +void fill(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, const T& value) { + Impl::fill_impl(label, ex, first, last, value); +} + +template +void fill(const ExecutionSpace& ex, + const ::Kokkos::View& view, const T& value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + Impl::fill_impl("Kokkos::fill_view_api_default", ex, begin(view), end(view), + value); +} + +template +void fill(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view, const T& value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + Impl::fill_impl(label, ex, begin(view), end(view), value); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FillN.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FillN.hpp new file mode 100644 index 0000000000..2e814dc55f --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FillN.hpp @@ -0,0 +1,91 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_FILL_N_HPP +#define KOKKOS_STD_ALGORITHMS_FILL_N_HPP + +#include "impl/Kokkos_FillFillN.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +IteratorType fill_n(const ExecutionSpace& ex, IteratorType first, SizeType n, + const T& value) { + return Impl::fill_n_impl("Kokkos::fill_n_iterator_api_default", ex, first, n, + value); +} + +template +IteratorType fill_n(const std::string& label, const ExecutionSpace& ex, + IteratorType first, SizeType n, const T& value) { + return Impl::fill_n_impl(label, ex, first, n, value); +} + +template +auto fill_n(const ExecutionSpace& ex, + const ::Kokkos::View& view, SizeType n, + const T& value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + return Impl::fill_n_impl("Kokkos::fill_n_view_api_default", ex, begin(view), + n, value); +} + +template +auto fill_n(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view, SizeType n, + const T& value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + return Impl::fill_n_impl(label, ex, begin(view), n, value); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Find.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Find.hpp new file mode 100644 index 0000000000..6758f00ce4 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Find.hpp @@ -0,0 +1,89 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_FIND_HPP +#define KOKKOS_STD_ALGORITHMS_FIND_HPP + +#include "impl/Kokkos_FindIfOrNot.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +InputIterator find(const ExecutionSpace& ex, InputIterator first, + InputIterator last, const T& value) { + return Impl::find_impl("Kokkos::find_iterator_api_default", ex, first, last, + value); +} + +template +InputIterator find(const std::string& label, const ExecutionSpace& ex, + InputIterator first, InputIterator last, const T& value) { + return Impl::find_impl(label, ex, first, last, value); +} + +template +auto find(const ExecutionSpace& ex, + const ::Kokkos::View& view, const T& value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_impl("Kokkos::find_view_api_default", ex, KE::begin(view), + KE::end(view), value); +} + +template +auto find(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view, const T& value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_impl(label, ex, KE::begin(view), KE::end(view), value); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindEnd.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindEnd.hpp new file mode 100644 index 0000000000..61b54c8225 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindEnd.hpp @@ -0,0 +1,149 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_FIND_END_HPP +#define KOKKOS_STD_ALGORITHMS_FIND_END_HPP + +#include "impl/Kokkos_FindEnd.hpp" +#include "Kokkos_Equal.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +// overload set 1: no binary predicate passed +template +IteratorType1 find_end(const ExecutionSpace& ex, IteratorType1 first, + IteratorType1 last, IteratorType2 s_first, + IteratorType2 s_last) { + return Impl::find_end_impl("Kokkos::find_end_iterator_api_default", ex, first, + last, s_first, s_last); +} + +template +IteratorType1 find_end(const std::string& label, const ExecutionSpace& ex, + IteratorType1 first, IteratorType1 last, + IteratorType2 s_first, IteratorType2 s_last) { + return Impl::find_end_impl(label, ex, first, last, s_first, s_last); +} + +template +auto find_end(const ExecutionSpace& ex, + const ::Kokkos::View& view, + const ::Kokkos::View& s_view) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(s_view); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_end_impl("Kokkos::find_end_view_api_default", ex, + KE::begin(view), KE::end(view), KE::begin(s_view), + KE::end(s_view)); +} + +template +auto find_end(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view, + const ::Kokkos::View& s_view) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(s_view); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_end_impl(label, ex, KE::begin(view), KE::end(view), + KE::begin(s_view), KE::end(s_view)); +} + +// overload set 2: binary predicate passed +template +IteratorType1 find_end(const ExecutionSpace& ex, IteratorType1 first, + IteratorType1 last, IteratorType2 s_first, + IteratorType2 s_last, const BinaryPredicateType& pred) { + return Impl::find_end_impl("Kokkos::find_end_iterator_api_default", ex, first, + last, s_first, s_last, pred); +} + +template +IteratorType1 find_end(const std::string& label, const ExecutionSpace& ex, + IteratorType1 first, IteratorType1 last, + IteratorType2 s_first, IteratorType2 s_last, + const BinaryPredicateType& pred) { + return Impl::find_end_impl(label, ex, first, last, s_first, s_last, pred); +} + +template +auto find_end(const ExecutionSpace& ex, + const ::Kokkos::View& view, + const ::Kokkos::View& s_view, + const BinaryPredicateType& pred) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(s_view); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_end_impl("Kokkos::find_end_view_api_default", ex, + KE::begin(view), KE::end(view), KE::begin(s_view), + KE::end(s_view), pred); +} + +template +auto find_end(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view, + const ::Kokkos::View& s_view, + const BinaryPredicateType& pred) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(s_view); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_end_impl(label, ex, KE::begin(view), KE::end(view), + KE::begin(s_view), KE::end(s_view), pred); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindFirstOf.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindFirstOf.hpp new file mode 100644 index 0000000000..b8c27cb272 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindFirstOf.hpp @@ -0,0 +1,150 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_FIND_FIRST_OF_HPP +#define KOKKOS_STD_ALGORITHMS_FIND_FIRST_OF_HPP + +#include "impl/Kokkos_FindFirstOf.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +// overload set 1: no binary predicate passed +template +IteratorType1 find_first_of(const ExecutionSpace& ex, IteratorType1 first, + IteratorType1 last, IteratorType2 s_first, + IteratorType2 s_last) { + return Impl::find_first_of_impl("Kokkos::find_first_of_iterator_api_default", + ex, first, last, s_first, s_last); +} + +template +IteratorType1 find_first_of(const std::string& label, const ExecutionSpace& ex, + IteratorType1 first, IteratorType1 last, + IteratorType2 s_first, IteratorType2 s_last) { + return Impl::find_first_of_impl(label, ex, first, last, s_first, s_last); +} + +template +auto find_first_of(const ExecutionSpace& ex, + const ::Kokkos::View& view, + const ::Kokkos::View& s_view) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(s_view); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_first_of_impl("Kokkos::find_first_of_view_api_default", ex, + KE::begin(view), KE::end(view), + KE::begin(s_view), KE::end(s_view)); +} + +template +auto find_first_of(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view, + const ::Kokkos::View& s_view) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(s_view); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_first_of_impl(label, ex, KE::begin(view), KE::end(view), + KE::begin(s_view), KE::end(s_view)); +} + +// overload set 2: binary predicate passed +template +IteratorType1 find_first_of(const ExecutionSpace& ex, IteratorType1 first, + IteratorType1 last, IteratorType2 s_first, + IteratorType2 s_last, + const BinaryPredicateType& pred) { + return Impl::find_first_of_impl("Kokkos::find_first_of_iterator_api_default", + ex, first, last, s_first, s_last, pred); +} + +template +IteratorType1 find_first_of(const std::string& label, const ExecutionSpace& ex, + IteratorType1 first, IteratorType1 last, + IteratorType2 s_first, IteratorType2 s_last, + const BinaryPredicateType& pred) { + return Impl::find_first_of_impl(label, ex, first, last, s_first, s_last, + pred); +} + +template +auto find_first_of(const ExecutionSpace& ex, + const ::Kokkos::View& view, + const ::Kokkos::View& s_view, + const BinaryPredicateType& pred) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(s_view); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_first_of_impl("Kokkos::find_first_of_view_api_default", ex, + KE::begin(view), KE::end(view), + KE::begin(s_view), KE::end(s_view), pred); +} + +template +auto find_first_of(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view, + const ::Kokkos::View& s_view, + const BinaryPredicateType& pred) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(s_view); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_first_of_impl(label, ex, KE::begin(view), KE::end(view), + KE::begin(s_view), KE::end(s_view), pred); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindIf.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindIf.hpp new file mode 100644 index 0000000000..54896da117 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindIf.hpp @@ -0,0 +1,95 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_FIND_IF_HPP +#define KOKKOS_STD_ALGORITHMS_FIND_IF_HPP + +#include "impl/Kokkos_FindIfOrNot.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +IteratorType find_if(const ExecutionSpace& ex, IteratorType first, + IteratorType last, PredicateType predicate) { + return Impl::find_if_or_not_impl("Kokkos::find_if_iterator_api_default", + ex, first, last, std::move(predicate)); +} + +template +IteratorType find_if(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, + PredicateType predicate) { + return Impl::find_if_or_not_impl(label, ex, first, last, + std::move(predicate)); +} + +template +auto find_if(const ExecutionSpace& ex, + const ::Kokkos::View& v, + Predicate predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + namespace KE = ::Kokkos::Experimental; + return Impl::find_if_or_not_impl("Kokkos::find_if_view_api_default", ex, + KE::begin(v), KE::end(v), + std::move(predicate)); +} + +template +auto find_if(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, + Predicate predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + namespace KE = ::Kokkos::Experimental; + return Impl::find_if_or_not_impl(label, ex, KE::begin(v), KE::end(v), + std::move(predicate)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindIfNot.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindIfNot.hpp new file mode 100644 index 0000000000..cfe6bb84d8 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_FindIfNot.hpp @@ -0,0 +1,98 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_FIND_IF_NOT_HPP +#define KOKKOS_STD_ALGORITHMS_FIND_IF_NOT_HPP + +#include "impl/Kokkos_FindIfOrNot.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +IteratorType find_if_not(const ExecutionSpace& ex, IteratorType first, + IteratorType last, Predicate predicate) { + return Impl::find_if_or_not_impl( + "Kokkos::find_if_not_iterator_api_default", ex, first, last, + std::move(predicate)); +} + +template +IteratorType find_if_not(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, + Predicate predicate) { + return Impl::find_if_or_not_impl(label, ex, first, last, + std::move(predicate)); +} + +template +auto find_if_not(const ExecutionSpace& ex, + const ::Kokkos::View& v, + Predicate predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_if_or_not_impl( + "Kokkos::find_if_not_view_api_default", ex, KE::begin(v), KE::end(v), + std::move(predicate)); +} + +template +auto find_if_not(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, + Predicate predicate) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::find_if_or_not_impl(label, ex, KE::begin(v), KE::end(v), + std::move(predicate)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ForEach.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ForEach.hpp new file mode 100644 index 0000000000..8a2f90e82b --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ForEach.hpp @@ -0,0 +1,95 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_FOR_EACH_HPP +#define KOKKOS_STD_ALGORITHMS_FOR_EACH_HPP + +#include "impl/Kokkos_ForEachForEachN.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +UnaryFunctorType for_each(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, + UnaryFunctorType functor) { + return Impl::for_each_impl(label, ex, first, last, std::move(functor)); +} + +template +UnaryFunctorType for_each(const ExecutionSpace& ex, IteratorType first, + IteratorType last, UnaryFunctorType functor) { + return Impl::for_each_impl("Kokkos::for_each_iterator_api_default", ex, first, + last, std::move(functor)); +} + +template +UnaryFunctorType for_each(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, + UnaryFunctorType functor) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::for_each_impl(label, ex, KE::begin(v), KE::end(v), + std::move(functor)); +} + +template +UnaryFunctorType for_each(const ExecutionSpace& ex, + const ::Kokkos::View& v, + UnaryFunctorType functor) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::for_each_impl("Kokkos::for_each_view_api_default", ex, + KE::begin(v), KE::end(v), std::move(functor)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ForEachN.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ForEachN.hpp new file mode 100644 index 0000000000..dd917a33e8 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ForEachN.hpp @@ -0,0 +1,96 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_FOR_EACH_N_HPP +#define KOKKOS_STD_ALGORITHMS_FOR_EACH_N_HPP + +#include "impl/Kokkos_ForEachForEachN.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +IteratorType for_each_n(const std::string& label, const ExecutionSpace& ex, + IteratorType first, SizeType n, + UnaryFunctorType functor) { + return Impl::for_each_n_impl(label, ex, first, n, std::move(functor)); +} + +template +IteratorType for_each_n(const ExecutionSpace& ex, IteratorType first, + SizeType n, UnaryFunctorType functor) { + return Impl::for_each_n_impl("Kokkos::for_each_n_iterator_api_default", ex, + first, n, std::move(functor)); +} + +template +auto for_each_n(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, SizeType n, + UnaryFunctorType functor) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::for_each_n_impl(label, ex, KE::begin(v), n, std::move(functor)); +} + +template +auto for_each_n(const ExecutionSpace& ex, + const ::Kokkos::View& v, SizeType n, + UnaryFunctorType functor) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + namespace KE = ::Kokkos::Experimental; + return Impl::for_each_n_impl("Kokkos::for_each_n_view_api_default", ex, + KE::begin(v), n, std::move(functor)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Generate.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Generate.hpp new file mode 100644 index 0000000000..955cb42d4b --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Generate.hpp @@ -0,0 +1,91 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_GENERATE_HPP +#define KOKKOS_STD_ALGORITHMS_GENERATE_HPP + +#include "impl/Kokkos_GenerateGenerateN.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +void generate(const ExecutionSpace& ex, IteratorType first, IteratorType last, + Generator g) { + Impl::generate_impl("Kokkos::generate_iterator_api_default", ex, first, last, + std::move(g)); +} + +template +void generate(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, Generator g) { + Impl::generate_impl(label, ex, first, last, std::move(g)); +} + +template +void generate(const ExecutionSpace& ex, + const ::Kokkos::View& view, + Generator g) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + Impl::generate_impl("Kokkos::generate_view_api_default", ex, begin(view), + end(view), std::move(g)); +} + +template +void generate(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view, + Generator g) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + Impl::generate_impl(label, ex, begin(view), end(view), std::move(g)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_GenerateN.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_GenerateN.hpp new file mode 100644 index 0000000000..470edb1596 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_GenerateN.hpp @@ -0,0 +1,93 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_GENERATE_N_HPP +#define KOKKOS_STD_ALGORITHMS_GENERATE_N_HPP + +#include "impl/Kokkos_GenerateGenerateN.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +IteratorType generate_n(const ExecutionSpace& ex, IteratorType first, + Size count, Generator g) { + Impl::generate_n_impl("Kokkos::generate_n_iterator_api_default", ex, first, + count, std::move(g)); + return first + count; +} + +template +IteratorType generate_n(const std::string& label, const ExecutionSpace& ex, + IteratorType first, Size count, Generator g) { + Impl::generate_n_impl(label, ex, first, count, std::move(g)); + return first + count; +} + +template +auto generate_n(const ExecutionSpace& ex, + const ::Kokkos::View& view, Size count, + Generator g) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + return Impl::generate_n_impl("Kokkos::generate_n_view_api_default", ex, + begin(view), count, std::move(g)); +} + +template +auto generate_n(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view, Size count, + Generator g) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + return Impl::generate_n_impl(label, ex, begin(view), count, std::move(g)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_InclusiveScan.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_InclusiveScan.hpp new file mode 100644 index 0000000000..c34b5f43c9 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_InclusiveScan.hpp @@ -0,0 +1,223 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_INCLUSIVE_SCAN_HPP +#define KOKKOS_STD_ALGORITHMS_INCLUSIVE_SCAN_HPP + +#include "impl/Kokkos_InclusiveScan.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +// overload set 1 +template +std::enable_if_t<::Kokkos::Experimental::Impl::are_iterators< + InputIteratorType, OutputIteratorType>::value, + OutputIteratorType> +inclusive_scan(const ExecutionSpace& ex, InputIteratorType first, + InputIteratorType last, OutputIteratorType first_dest) { + return Impl::inclusive_scan_default_op_impl( + "Kokkos::inclusive_scan_default_functors_iterator_api", ex, first, last, + first_dest); +} + +template +std::enable_if_t<::Kokkos::Experimental::Impl::are_iterators< + InputIteratorType, OutputIteratorType>::value, + OutputIteratorType> +inclusive_scan(const std::string& label, const ExecutionSpace& ex, + InputIteratorType first, InputIteratorType last, + OutputIteratorType first_dest) { + return Impl::inclusive_scan_default_op_impl(label, ex, first, last, + first_dest); +} + +template +auto inclusive_scan( + const ExecutionSpace& ex, + const ::Kokkos::View& view_from, + const ::Kokkos::View& view_dest) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_from); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_dest); + namespace KE = ::Kokkos::Experimental; + return Impl::inclusive_scan_default_op_impl( + "Kokkos::inclusive_scan_default_functors_view_api", ex, + KE::cbegin(view_from), KE::cend(view_from), KE::begin(view_dest)); +} + +template +auto inclusive_scan( + const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view_from, + const ::Kokkos::View& view_dest) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_from); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_dest); + namespace KE = ::Kokkos::Experimental; + return Impl::inclusive_scan_default_op_impl(label, ex, KE::cbegin(view_from), + KE::cend(view_from), + KE::begin(view_dest)); +} + +// overload set 2 (accepting custom binary op) +template +std::enable_if_t<::Kokkos::Experimental::Impl::are_iterators< + InputIteratorType, OutputIteratorType>::value, + OutputIteratorType> +inclusive_scan(const ExecutionSpace& ex, InputIteratorType first, + InputIteratorType last, OutputIteratorType first_dest, + BinaryOp binary_op) { + return Impl::inclusive_scan_custom_binary_op_impl( + "Kokkos::inclusive_scan_custom_functors_iterator_api", ex, first, last, + first_dest, binary_op); +} + +template +std::enable_if_t<::Kokkos::Experimental::Impl::are_iterators< + InputIteratorType, OutputIteratorType>::value, + OutputIteratorType> +inclusive_scan(const std::string& label, const ExecutionSpace& ex, + InputIteratorType first, InputIteratorType last, + OutputIteratorType first_dest, BinaryOp binary_op) { + return Impl::inclusive_scan_custom_binary_op_impl(label, ex, first, last, + first_dest, binary_op); +} + +template +auto inclusive_scan(const ExecutionSpace& ex, + const ::Kokkos::View& view_from, + const ::Kokkos::View& view_dest, + BinaryOp binary_op) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_from); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_dest); + namespace KE = ::Kokkos::Experimental; + return Impl::inclusive_scan_custom_binary_op_impl( + "Kokkos::inclusive_scan_custom_functors_view_api", ex, + KE::cbegin(view_from), KE::cend(view_from), KE::begin(view_dest), + binary_op); +} + +template +auto inclusive_scan(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view_from, + const ::Kokkos::View& view_dest, + BinaryOp binary_op) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_from); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_dest); + namespace KE = ::Kokkos::Experimental; + return Impl::inclusive_scan_custom_binary_op_impl( + label, ex, KE::cbegin(view_from), KE::cend(view_from), + KE::begin(view_dest), binary_op); +} + +// overload set 3 +template +std::enable_if_t<::Kokkos::Experimental::Impl::are_iterators< + InputIteratorType, OutputIteratorType>::value, + OutputIteratorType> +inclusive_scan(const ExecutionSpace& ex, InputIteratorType first, + InputIteratorType last, OutputIteratorType first_dest, + BinaryOp binary_op, ValueType init_value) { + return Impl::inclusive_scan_custom_binary_op_impl( + "Kokkos::inclusive_scan_custom_functors_iterator_api", ex, first, last, + first_dest, binary_op, init_value); +} + +template +std::enable_if_t<::Kokkos::Experimental::Impl::are_iterators< + InputIteratorType, OutputIteratorType>::value, + OutputIteratorType> +inclusive_scan(const std::string& label, const ExecutionSpace& ex, + InputIteratorType first, InputIteratorType last, + OutputIteratorType first_dest, BinaryOp binary_op, + ValueType init_value) { + return Impl::inclusive_scan_custom_binary_op_impl( + label, ex, first, last, first_dest, binary_op, init_value); +} + +template +auto inclusive_scan(const ExecutionSpace& ex, + const ::Kokkos::View& view_from, + const ::Kokkos::View& view_dest, + BinaryOp binary_op, ValueType init_value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_from); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_dest); + namespace KE = ::Kokkos::Experimental; + return Impl::inclusive_scan_custom_binary_op_impl( + "Kokkos::inclusive_scan_custom_functors_view_api", ex, + KE::cbegin(view_from), KE::cend(view_from), KE::begin(view_dest), + binary_op, init_value); +} + +template +auto inclusive_scan(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view_from, + const ::Kokkos::View& view_dest, + BinaryOp binary_op, ValueType init_value) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_from); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view_dest); + namespace KE = ::Kokkos::Experimental; + return Impl::inclusive_scan_custom_binary_op_impl( + label, ex, KE::cbegin(view_from), KE::cend(view_from), + KE::begin(view_dest), binary_op, init_value); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IsPartitioned.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IsPartitioned.hpp new file mode 100644 index 0000000000..8a2ca207ae --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IsPartitioned.hpp @@ -0,0 +1,92 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_IS_PARTITIONED_HPP +#define KOKKOS_STD_ALGORITHMS_IS_PARTITIONED_HPP + +#include "impl/Kokkos_IsPartitioned.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +bool is_partitioned(const ExecutionSpace& ex, IteratorType first, + IteratorType last, PredicateType p) { + return Impl::is_partitioned_impl( + "Kokkos::is_partitioned_iterator_api_default", ex, first, last, + std::move(p)); +} + +template +bool is_partitioned(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, PredicateType p) { + return Impl::is_partitioned_impl(label, ex, first, last, std::move(p)); +} + +template +bool is_partitioned(const ExecutionSpace& ex, + const ::Kokkos::View& v, + PredicateType p) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + return Impl::is_partitioned_impl("Kokkos::is_partitioned_view_api_default", + ex, cbegin(v), cend(v), std::move(p)); +} + +template +bool is_partitioned(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, + PredicateType p) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + return Impl::is_partitioned_impl(label, ex, cbegin(v), cend(v), std::move(p)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IsSorted.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IsSorted.hpp new file mode 100644 index 0000000000..0ab466f338 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IsSorted.hpp @@ -0,0 +1,131 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_IS_SORTED_HPP +#define KOKKOS_STD_ALGORITHMS_IS_SORTED_HPP + +#include "impl/Kokkos_IsSorted.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +bool is_sorted(const ExecutionSpace& ex, IteratorType first, + IteratorType last) { + return Impl::is_sorted_impl("Kokkos::is_sorted_iterator_api_default", ex, + first, last); +} + +template +bool is_sorted(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last) { + return Impl::is_sorted_impl(label, ex, first, last); +} + +template +bool is_sorted(const ExecutionSpace& ex, + const ::Kokkos::View& view) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + namespace KE = ::Kokkos::Experimental; + return Impl::is_sorted_impl("Kokkos::is_sorted_view_api_default", ex, + KE::cbegin(view), KE::cend(view)); +} + +template +bool is_sorted(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + namespace KE = ::Kokkos::Experimental; + return Impl::is_sorted_impl(label, ex, KE::cbegin(view), KE::cend(view)); +} + +template +bool is_sorted(const ExecutionSpace& ex, IteratorType first, IteratorType last, + ComparatorType comp) { + Impl::static_assert_is_not_openmptarget(ex); + return Impl::is_sorted_impl("Kokkos::is_sorted_iterator_api_default", ex, + first, last, std::move(comp)); +} + +template +bool is_sorted(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, ComparatorType comp) { + Impl::static_assert_is_not_openmptarget(ex); + return Impl::is_sorted_impl(label, ex, first, last, std::move(comp)); +} + +template +bool is_sorted(const ExecutionSpace& ex, + const ::Kokkos::View& view, + ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_not_openmptarget(ex); + + namespace KE = ::Kokkos::Experimental; + return Impl::is_sorted_impl("Kokkos::is_sorted_view_api_default", ex, + KE::cbegin(view), KE::cend(view), + std::move(comp)); +} + +template +bool is_sorted(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view, + ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_not_openmptarget(ex); + + namespace KE = ::Kokkos::Experimental; + return Impl::is_sorted_impl(label, ex, KE::cbegin(view), KE::cend(view), + std::move(comp)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IsSortedUntil.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IsSortedUntil.hpp new file mode 100644 index 0000000000..c480d9ee5a --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IsSortedUntil.hpp @@ -0,0 +1,134 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_IS_SORTED_UNTIL_HPP +#define KOKKOS_STD_ALGORITHMS_IS_SORTED_UNTIL_HPP + +#include "impl/Kokkos_IsSortedUntil.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +IteratorType is_sorted_until(const ExecutionSpace& ex, IteratorType first, + IteratorType last) { + return Impl::is_sorted_until_impl( + "Kokkos::is_sorted_until_iterator_api_default", ex, first, last); +} + +template +IteratorType is_sorted_until(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last) { + return Impl::is_sorted_until_impl(label, ex, first, last); +} + +template +auto is_sorted_until(const ExecutionSpace& ex, + const ::Kokkos::View& view) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + namespace KE = ::Kokkos::Experimental; + return Impl::is_sorted_until_impl("Kokkos::is_sorted_until_view_api_default", + ex, KE::begin(view), KE::end(view)); +} + +template +auto is_sorted_until(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + + namespace KE = ::Kokkos::Experimental; + return Impl::is_sorted_until_impl(label, ex, KE::begin(view), KE::end(view)); +} + +template +IteratorType is_sorted_until(const ExecutionSpace& ex, IteratorType first, + IteratorType last, ComparatorType comp) { + Impl::static_assert_is_not_openmptarget(ex); + return Impl::is_sorted_until_impl( + "Kokkos::is_sorted_until_iterator_api_default", ex, first, last, + std::move(comp)); +} + +template +IteratorType is_sorted_until(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, + ComparatorType comp) { + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::is_sorted_until_impl(label, ex, first, last, std::move(comp)); +} + +template +auto is_sorted_until(const ExecutionSpace& ex, + const ::Kokkos::View& view, + ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_not_openmptarget(ex); + + namespace KE = ::Kokkos::Experimental; + return Impl::is_sorted_until_impl("Kokkos::is_sorted_until_view_api_default", + ex, KE::begin(view), KE::end(view), + std::move(comp)); +} + +template +auto is_sorted_until(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view, + ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view); + Impl::static_assert_is_not_openmptarget(ex); + + namespace KE = ::Kokkos::Experimental; + return Impl::is_sorted_until_impl(label, ex, KE::begin(view), KE::end(view), + std::move(comp)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ModifyingOperations.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IterSwap.hpp similarity index 79% rename from lib/kokkos/algorithms/src/std_algorithms/Kokkos_ModifyingOperations.hpp rename to lib/kokkos/algorithms/src/std_algorithms/Kokkos_IterSwap.hpp index f8ca3456e5..1174740a5b 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ModifyingOperations.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IterSwap.hpp @@ -42,38 +42,17 @@ //@HEADER */ -#ifndef KOKKOS_MODIFYING_OPERATIONS_HPP -#define KOKKOS_MODIFYING_OPERATIONS_HPP +#ifndef KOKKOS_STD_ALGORITHMS_ITER_SWAP_HPP +#define KOKKOS_STD_ALGORITHMS_ITER_SWAP_HPP #include -#include "Kokkos_BeginEnd.hpp" -#include "Kokkos_Constraints.hpp" +#include "impl/Kokkos_Constraints.hpp" +#include "Kokkos_Swap.hpp" namespace Kokkos { namespace Experimental { - -// move -template -KOKKOS_INLINE_FUNCTION std::remove_reference_t&& move(T&& t) { - return static_cast&&>(t); -} - -// swap -template -KOKKOS_INLINE_FUNCTION void swap(T& a, T& b) noexcept { - static_assert( - std::is_move_assignable::value && std::is_move_constructible::value, - "Kokkos::Experimental::swap arguments must be move assignable " - "and move constructible"); - - T tmp = std::move(a); - a = std::move(b); - b = std::move(tmp); -} - -//---------------------------------------------------------------------------- -// this is here because we use the swap function above namespace Impl { + template struct StdIterSwapFunctor { IteratorType1 m_a; diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_LexicographicalCompare.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_LexicographicalCompare.hpp new file mode 100644 index 0000000000..4704a9ec56 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_LexicographicalCompare.hpp @@ -0,0 +1,154 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_LEXICOGRAPHICAL_COMPARE_HPP +#define KOKKOS_STD_ALGORITHMS_LEXICOGRAPHICAL_COMPARE_HPP + +#include "impl/Kokkos_LexicographicalCompare.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +bool lexicographical_compare(const ExecutionSpace& ex, IteratorType1 first1, + IteratorType1 last1, IteratorType2 first2, + IteratorType2 last2) { + return Impl::lexicographical_compare_impl( + "Kokkos::lexicographical_compare_iterator_api_default", ex, first1, last1, + first2, last2); +} + +template +bool lexicographical_compare(const std::string& label, const ExecutionSpace& ex, + IteratorType1 first1, IteratorType1 last1, + IteratorType2 first2, IteratorType2 last2) { + return Impl::lexicographical_compare_impl(label, ex, first1, last1, first2, + last2); +} + +template +bool lexicographical_compare( + const ExecutionSpace& ex, + const ::Kokkos::View& view1, + ::Kokkos::View& view2) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); + + namespace KE = ::Kokkos::Experimental; + return Impl::lexicographical_compare_impl( + "Kokkos::lexicographical_compare_view_api_default", ex, KE::cbegin(view1), + KE::cend(view1), KE::cbegin(view2), KE::cend(view2)); +} + +template +bool lexicographical_compare( + const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view1, + ::Kokkos::View& view2) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); + + namespace KE = ::Kokkos::Experimental; + return Impl::lexicographical_compare_impl(label, ex, KE::cbegin(view1), + KE::cend(view1), KE::cbegin(view2), + KE::cend(view2)); +} + +template +bool lexicographical_compare(const ExecutionSpace& ex, IteratorType1 first1, + IteratorType1 last1, IteratorType2 first2, + IteratorType2 last2, ComparatorType comp) { + return Impl::lexicographical_compare_impl( + "Kokkos::lexicographical_compare_iterator_api_default", ex, first1, last1, + first2, last2, comp); +} + +template +bool lexicographical_compare(const std::string& label, const ExecutionSpace& ex, + IteratorType1 first1, IteratorType1 last1, + IteratorType2 first2, IteratorType2 last2, + ComparatorType comp) { + return Impl::lexicographical_compare_impl(label, ex, first1, last1, first2, + last2, comp); +} + +template +bool lexicographical_compare( + const ExecutionSpace& ex, + const ::Kokkos::View& view1, + ::Kokkos::View& view2, ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); + + namespace KE = ::Kokkos::Experimental; + return Impl::lexicographical_compare_impl( + "Kokkos::lexicographical_compare_view_api_default", ex, KE::cbegin(view1), + KE::cend(view1), KE::cbegin(view2), KE::cend(view2), comp); +} + +template +bool lexicographical_compare( + const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& view1, + ::Kokkos::View& view2, ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); + + namespace KE = ::Kokkos::Experimental; + return Impl::lexicographical_compare_impl(label, ex, KE::cbegin(view1), + KE::cend(view1), KE::cbegin(view2), + KE::cend(view2), comp); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MaxElement.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MaxElement.hpp new file mode 100644 index 0000000000..5f6e5cbf62 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MaxElement.hpp @@ -0,0 +1,132 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_MAX_ELEMENT_HPP +#define KOKKOS_STD_ALGORITHMS_MAX_ELEMENT_HPP + +#include "impl/Kokkos_MinMaxMinmaxElement.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +auto max_element(const ExecutionSpace& ex, IteratorType first, + IteratorType last) { + return Impl::min_or_max_element_impl( + "Kokkos::max_element_iterator_api_default", ex, first, last); +} + +template +auto max_element(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last) { + return Impl::min_or_max_element_impl(label, ex, first, last); +} + +template +auto max_element(const ExecutionSpace& ex, IteratorType first, + IteratorType last, ComparatorType comp) { + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::min_or_max_element_impl( + "Kokkos::max_element_iterator_api_default", ex, first, last, + std::move(comp)); +} + +template +auto max_element(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, ComparatorType comp) { + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::min_or_max_element_impl( + label, ex, first, last, std::move(comp)); +} + +template +auto max_element(const ExecutionSpace& ex, + const ::Kokkos::View& v) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + return Impl::min_or_max_element_impl( + "Kokkos::max_element_view_api_default", ex, begin(v), end(v)); +} + +template +auto max_element(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + return Impl::min_or_max_element_impl(label, ex, begin(v), + end(v)); +} + +template +auto max_element(const ExecutionSpace& ex, + const ::Kokkos::View& v, + ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::min_or_max_element_impl( + "Kokkos::max_element_view_api_default", ex, begin(v), end(v), + std::move(comp)); +} + +template +auto max_element(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, + ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::min_or_max_element_impl( + label, ex, begin(v), end(v), std::move(comp)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MinElement.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MinElement.hpp new file mode 100644 index 0000000000..63cc548960 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MinElement.hpp @@ -0,0 +1,132 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_MIN_ELEMENT_HPP +#define KOKKOS_STD_ALGORITHMS_MIN_ELEMENT_HPP + +#include "impl/Kokkos_MinMaxMinmaxElement.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +auto min_element(const ExecutionSpace& ex, IteratorType first, + IteratorType last) { + return Impl::min_or_max_element_impl( + "Kokkos::min_element_iterator_api_default", ex, first, last); +} + +template +auto min_element(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last) { + return Impl::min_or_max_element_impl(label, ex, first, last); +} + +template +auto min_element(const ExecutionSpace& ex, IteratorType first, + IteratorType last, ComparatorType comp) { + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::min_or_max_element_impl( + "Kokkos::min_element_iterator_api_default", ex, first, last, + std::move(comp)); +} + +template +auto min_element(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, ComparatorType comp) { + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::min_or_max_element_impl( + label, ex, first, last, std::move(comp)); +} + +template +auto min_element(const ExecutionSpace& ex, + const ::Kokkos::View& v) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + return Impl::min_or_max_element_impl( + "Kokkos::min_element_view_api_default", ex, begin(v), end(v)); +} + +template +auto min_element(const ExecutionSpace& ex, + const ::Kokkos::View& v, + ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::min_or_max_element_impl( + "Kokkos::min_element_view_api_default", ex, begin(v), end(v), + std::move(comp)); +} + +template +auto min_element(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + return Impl::min_or_max_element_impl(label, ex, begin(v), + end(v)); +} + +template +auto min_element(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, + ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::min_or_max_element_impl( + label, ex, begin(v), end(v), std::move(comp)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MinMaxElement.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MinMaxElement.hpp new file mode 100644 index 0000000000..07cdefcc05 --- /dev/null +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MinMaxElement.hpp @@ -0,0 +1,133 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_STD_ALGORITHMS_MINMAX_ELEMENT_HPP +#define KOKKOS_STD_ALGORITHMS_MINMAX_ELEMENT_HPP + +#include "impl/Kokkos_MinMaxMinmaxElement.hpp" +#include "Kokkos_BeginEnd.hpp" + +namespace Kokkos { +namespace Experimental { + +template +auto minmax_element(const ExecutionSpace& ex, IteratorType first, + IteratorType last) { + return Impl::minmax_element_impl( + "Kokkos::minmax_element_iterator_api_default", ex, first, last); +} + +template +auto minmax_element(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last) { + return Impl::minmax_element_impl(label, ex, first, last); +} + +template +auto minmax_element(const ExecutionSpace& ex, IteratorType first, + IteratorType last, ComparatorType comp) { + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::minmax_element_impl( + "Kokkos::minmax_element_iterator_api_default", ex, first, last, + std::move(comp)); +} + +template +auto minmax_element(const std::string& label, const ExecutionSpace& ex, + IteratorType first, IteratorType last, + ComparatorType comp) { + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::minmax_element_impl( + label, ex, first, last, std::move(comp)); +} + +template +auto minmax_element(const ExecutionSpace& ex, + const ::Kokkos::View& v) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + return Impl::minmax_element_impl( + "Kokkos::minmax_element_view_api_default", ex, begin(v), end(v)); +} + +template +auto minmax_element(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + + return Impl::minmax_element_impl(label, ex, begin(v), + end(v)); +} + +template +auto minmax_element(const ExecutionSpace& ex, + const ::Kokkos::View& v, + ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::minmax_element_impl( + "Kokkos::minmax_element_view_api_default", ex, begin(v), end(v), + std::move(comp)); +} + +template +auto minmax_element(const std::string& label, const ExecutionSpace& ex, + const ::Kokkos::View& v, + ComparatorType comp) { + Impl::static_assert_is_admissible_to_kokkos_std_algorithms(v); + Impl::static_assert_is_not_openmptarget(ex); + + return Impl::minmax_element_impl( + label, ex, begin(v), end(v), std::move(comp)); +} + +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MinMaxElementOperations.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MinMaxElementOperations.hpp deleted file mode 100644 index aa8f5ba376..0000000000 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MinMaxElementOperations.hpp +++ /dev/null @@ -1,409 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#ifndef KOKKOS_STD_MIN_MAX_ELEMENT_OPERATIONS_HPP -#define KOKKOS_STD_MIN_MAX_ELEMENT_OPERATIONS_HPP - -#include -#include "Kokkos_BeginEnd.hpp" -#include "Kokkos_Constraints.hpp" -#include "Kokkos_Distance.hpp" -#include "Kokkos_ModifyingOperations.hpp" - -namespace Kokkos { -namespace Experimental { -namespace Impl { - -template -struct StdMinOrMaxElemFunctor { - using index_type = typename IteratorType::difference_type; - using red_value_type = typename ReducerType::value_type; - - IteratorType m_first; - ReducerType m_reducer; - - KOKKOS_FUNCTION - void operator()(const index_type i, red_value_type& red_value) const { - m_reducer.join(red_value, red_value_type{m_first[i], i}); - } - - KOKKOS_FUNCTION - StdMinOrMaxElemFunctor(IteratorType first, ReducerType reducer) - : m_first(std::move(first)), m_reducer(std::move(reducer)) {} -}; - -template -struct StdMinMaxElemFunctor { - using index_type = typename IteratorType::difference_type; - using red_value_type = typename ReducerType::value_type; - IteratorType m_first; - ReducerType m_reducer; - - KOKKOS_FUNCTION - void operator()(const index_type i, red_value_type& red_value) const { - const auto& my_value = m_first[i]; - m_reducer.join(red_value, red_value_type{my_value, my_value, i, i}); - } - - KOKKOS_FUNCTION - StdMinMaxElemFunctor(IteratorType first, ReducerType reducer) - : m_first(std::move(first)), m_reducer(std::move(reducer)) {} -}; - -// ------------------------------------------ -// min_or_max_element_impl -// ------------------------------------------ -template