diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 87f3dd1f22..c18ac045c0 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -115,6 +115,10 @@ src/min* @sjplimp @stanmoore1 # tools tools/msi2lmp/* @akohlmey tools/emacs/* @HaoZeke +tools/singularity/* @akohlmey @rbberger + +# tests +unittest/* @akohlmey @rbberger # cmake cmake/* @junghans @rbberger diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index c1b3927b0f..de65e85516 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -3,16 +3,24 @@ # This file is part of LAMMPS # Created by Christoph Junghans and Richard Berger cmake_minimum_required(VERSION 3.10) +# set policy to silence warnings about ignoring _ROOT but use it +if(POLICY CMP0074) + cmake_policy(SET CMP0074 NEW) +endif() +######################################## project(lammps CXX) set(SOVERSION 0) -get_filename_component(LAMMPS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../src ABSOLUTE) -get_filename_component(LAMMPS_LIB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../lib ABSOLUTE) + +get_filename_component(LAMMPS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/.. ABSOLUTE) get_filename_component(LAMMPS_LIB_BINARY_DIR ${CMAKE_BINARY_DIR}/lib ABSOLUTE) -get_filename_component(LAMMPS_DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../doc ABSOLUTE) -get_filename_component(LAMMPS_TOOLS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../tools ABSOLUTE) -get_filename_component(LAMMPS_PYTHON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../python ABSOLUTE) -get_filename_component(LAMMPS_POTENTIALS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../potentials ABSOLUTE) + +set(LAMMPS_SOURCE_DIR ${LAMMPS_DIR}/src) +set(LAMMPS_LIB_SOURCE_DIR ${LAMMPS_DIR}/lib) +set(LAMMPS_DOC_DIR ${LAMMPS_DIR}/doc) +set(LAMMPS_TOOLS_DIR ${LAMMPS_DIR}/tools) +set(LAMMPS_PYTHON_DIR ${LAMMPS_DIR}/python) +set(LAMMPS_POTENTIALS_DIR ${LAMMPS_DIR}/potentials) find_package(Git) @@ -24,6 +32,12 @@ endif() # Cmake modules/macros are in a subdirectory to keep this file cleaner set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules) +# make sure LIBRARY_PATH is set if environment variable is set +if (DEFINED ENV{LIBRARY_PATH}) + list(APPEND CMAKE_LIBRARY_PATH "$ENV{LIBRARY_PATH}") + message(STATUS "Appending $ENV{LIBRARY_PATH} to CMAKE_LIBRARY_PATH: ${CMAKE_LIBRARY_PATH}") +endif() + include(LAMMPSUtils) get_lammps_version(${LAMMPS_SOURCE_DIR}/version.h PROJECT_VERSION) @@ -57,11 +71,11 @@ if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel") endif() if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") - set(CMAKE_TUNE_DEFAULT "-ffast-math -march=native") + set(CMAKE_TUNE_DEFAULT "-march=native") endif() if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") - set(CMAKE_TUNE_DEFAULT "-ffast-math -march=native") + set(CMAKE_TUNE_DEFAULT "-march=native") endif() # we require C++11 without extensions @@ -491,7 +505,7 @@ execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HE # Generate lmpgitversion.h ###################################### add_custom_target(gitversion COMMAND ${CMAKE_COMMAND} - -DCMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" + -DLAMMPS_DIR="${LAMMPS_DIR}" -DGIT_EXECUTABLE="${GIT_EXECUTABLE}" -DGIT_FOUND="${GIT_FOUND}" -DLAMMPS_STYLE_HEADERS_DIR="${LAMMPS_STYLE_HEADERS_DIR}" @@ -538,8 +552,6 @@ if(BUILD_SHARED_LIBS) configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) - file(GLOB MODULE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Modules/Find*.cmake) - install(FILES ${MODULE_FILES} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) include(CMakePackageConfigHelpers) configure_file(LAMMPSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake @ONLY) write_basic_package_version_file("LAMMPSConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY ExactVersion) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index 48c262c664..0dacfc2089 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -1,11 +1,5 @@ -list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) include(CMakeFindDependencyMacro) if(@BUILD_MPI@) find_dependency(MPI REQUIRED CXX) endif() -if(@PKG_KSPACE@) - if(@FFT@ STREQUAL "FFTW3") - find_dependency(@FFTW@ REQUIRED MODULE) - endif() -endif() include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake") diff --git a/cmake/Modules/CodeCoverage.cmake b/cmake/Modules/CodeCoverage.cmake index d018db43d9..3b323e37ff 100644 --- a/cmake/Modules/CodeCoverage.cmake +++ b/cmake/Modules/CodeCoverage.cmake @@ -15,14 +15,35 @@ if(ENABLE_COVERAGE) gen_coverage_xml COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMENT "Generating XML Coverage Report..." + COMMENT "Generating XML coverage report..." ) + set(COVERAGE_HTML_DIR ${CMAKE_BINARY_DIR}/coverage_html) + + add_custom_target(coverage_html_folder + COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_HTML_DIR}) + add_custom_target( gen_coverage_html - COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.html + COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o ${COVERAGE_HTML_DIR}/index.html WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMENT "Generating HTML Coverage Report..." + COMMENT "Generating HTML coverage report..." ) + add_dependencies(gen_coverage_html coverage_html_folder) + + add_custom_target(clean_coverage_html + ${CMAKE_COMMAND} -E remove_directory ${COVERAGE_HTML_DIR} + COMMENT "Deleting HTML coverage report..." + ) + + add_custom_target(reset_coverage + ${CMAKE_COMMAND} -E remove -f */*.gcda */*/*.gcda */*/*/*.gcda + */*/*/*/*.gcda */*/*/*/*/*.gcda */*/*/*/*/*/*.gcda + */*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*.gcda + */*/*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*/*/*.gcda + WORKIND_DIRECTORY ${CMAKE_BINARY_DIR} + COMMENT "Deleting coverage data files..." + ) + add_dependencies(reset_coverage clean_coverage_html) endif() endif() diff --git a/cmake/Modules/FindLATTE.cmake b/cmake/Modules/FindLATTE.cmake deleted file mode 100644 index ac5c639b79..0000000000 --- a/cmake/Modules/FindLATTE.cmake +++ /dev/null @@ -1,27 +0,0 @@ -# - Find latte -# Find the native LATTE libraries. -# -# LATTE_LIBRARIES - List of libraries when using latte. -# LATTE_FOUND - True if latte found. -# - -find_library(LATTE_LIBRARY NAMES latte) - -include(FindPackageHandleStandardArgs) -# handle the QUIETLY and REQUIRED arguments and set LATTE_FOUND to TRUE -# if all listed variables are TRUE - -find_package_handle_standard_args(LATTE DEFAULT_MSG LATTE_LIBRARY) - -# Copy the results to the output variables and target. -if(LATTE_FOUND) - set(LATTE_LIBRARIES ${LATTE_LIBRARY}) - - if(NOT TARGET LATTE::latte) - add_library(LATTE::latte UNKNOWN IMPORTED) - set_target_properties(LATTE::latte PROPERTIES - IMPORTED_LOCATION "${LATTE_LIBRARY}") - endif() -endif() - -mark_as_advanced(LATTE_LIBRARY) diff --git a/cmake/Modules/FindTBB_MALLOC.cmake b/cmake/Modules/FindTBB_MALLOC.cmake index 776c2c4749..d34b946ad3 100644 --- a/cmake/Modules/FindTBB_MALLOC.cmake +++ b/cmake/Modules/FindTBB_MALLOC.cmake @@ -6,7 +6,6 @@ # TBB_MALLOC_FOUND - True if tbb found. # - ######################################################## # TBB Malloc diff --git a/cmake/Modules/FindYAML.cmake b/cmake/Modules/FindYAML.cmake new file mode 100644 index 0000000000..e5b76de4e1 --- /dev/null +++ b/cmake/Modules/FindYAML.cmake @@ -0,0 +1,30 @@ +# - Find libyaml +# Find the native Yaml headers and libraries. +# +# YAML_INCLUDE_DIRS - where to find yaml.h +# YAML_LIBRARIES - List of libraries when using libyaml +# YAML_FOUND - True if libyaml is found. +# + +find_path(YAML_INCLUDE_DIR yaml.h PATH_SUFFIXES yaml) +find_library(YAML_LIBRARY NAMES yaml) + +# handle the QUIET and REQUIRED arguments and +# set YAML_FOUND to TRUE if all variables are non-zero +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(YAML DEFAULT_MSG YAML_LIBRARY YAML_INCLUDE_DIR) + +# Copy the results to the output variables and target. +if(YAML_FOUND) + set(YAML_LIBRARIES ${YAML_LIBRARY}) + set(YAML_INCLUDE_DIRS ${YAML_INCLUDE_DIR}) + + if(NOT TARGET Yaml::Yaml) + add_library(Yaml::Yaml UNKNOWN IMPORTED) + set_target_properties(Yaml::Yaml PROPERTIES + IMPORTED_LOCATION "${YAML_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${YAML_INCLUDE_DIR}") + endif() +endif() + +mark_as_advanced(YAML_INCLUDE_DIR YAML_LIBRARY) diff --git a/cmake/Modules/GTest.cmake b/cmake/Modules/GTest.cmake new file mode 100644 index 0000000000..36aafee10c --- /dev/null +++ b/cmake/Modules/GTest.cmake @@ -0,0 +1,77 @@ +message(STATUS "Downloading and building Google Test library") + +if(CMAKE_BUILD_TYPE STREQUAL Debug) + set(GTEST_LIB_POSTFIX d) +else() + set(GTEST_LIB_POSTFIX) +endif() + +include(ExternalProject) +ExternalProject_Add(googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG release-1.10.0 + SOURCE_DIR "${CMAKE_BINARY_DIR}/gtest-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/gtest-build" + CMAKE_ARGS ${CMAKE_REQUEST_PIC} ${CMAKE_EXTRA_GTEST_OPTS} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_INSTALL_PREFIX= + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + BUILD_BYPRODUCTS /lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest${GTEST_LIB_POSTFIX}.a + /lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock${GTEST_LIB_POSTFIX}.a + /lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main${GTEST_LIB_POSTFIX}.a + /lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock_main${GTEST_LIB_POSTFIX}.a + LOG_DOWNLOAD ON + LOG_CONFIGURE ON + LOG_BUILD ON + INSTALL_COMMAND "" + TEST_COMMAND "") + +ExternalProject_Get_Property(googletest SOURCE_DIR) +set(GTEST_INCLUDE_DIR ${SOURCE_DIR}/googletest/include) +set(GMOCK_INCLUDE_DIR ${SOURCE_DIR}/googlemock/include) + +# workaround for CMake 3.10 on ubuntu 18.04 +file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR}) +file(MAKE_DIRECTORY ${GMOCK_INCLUDE_DIR}) + +ExternalProject_Get_Property(googletest BINARY_DIR) +set(GTEST_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest${GTEST_LIB_POSTFIX}.a) +set(GMOCK_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock${GTEST_LIB_POSTFIX}.a) +set(GTEST_MAIN_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main${GTEST_LIB_POSTFIX}.a) +set(GMOCK_MAIN_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock_main${GTEST_LIB_POSTFIX}.a) + +# Prevent GoogleTest from overriding our compiler/linker options +# when building with Visual Studio +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + +find_package(Threads QUIET) + +add_library(GTest::GTest UNKNOWN IMPORTED) +set_target_properties(GTest::GTest PROPERTIES + IMPORTED_LOCATION ${GTEST_LIBRARY_PATH} + INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR} + IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) +add_dependencies(GTest::GTest googletest) + +add_library(GTest::GMock UNKNOWN IMPORTED) +set_target_properties(GTest::GMock PROPERTIES + IMPORTED_LOCATION ${GMOCK_LIBRARY_PATH} + INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR} + IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) +add_dependencies(GTest::GMock googletest) + +add_library(GTest::GTestMain UNKNOWN IMPORTED) +set_target_properties(GTest::GTestMain PROPERTIES + IMPORTED_LOCATION ${GTEST_MAIN_LIBRARY_PATH} + INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR} + IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) +add_dependencies(GTest::GTestMain googletest) + +add_library(GTest::GMockMain UNKNOWN IMPORTED) +set_target_properties(GTest::GMockMain PROPERTIES + IMPORTED_LOCATION ${GMOCK_MAIN_LIBRARY_PATH} + INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR} + IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) +add_dependencies(GTest::GMockMain googletest) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 5033c1f0f1..9e7d7ca37a 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -40,6 +40,17 @@ if(GPU_API STREQUAL "CUDA") set(GPU_ARCH "sm_50" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)") + # ensure that no *cubin.h files exist from a compile in the lib/gpu folder + file(GLOB GPU_LIB_OLD_CUBIN_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/*_cubin.h) + if (GPU_LIB_OLD_CUBIN_HEADERS) + message(FATAL_ERROR "########################################################################\n" + "Found file(s) generated by the make-based build system in lib/gpu\n" + "Please run\n" + " make -C ${LAMMPS_LIB_SOURCE_DIR}/gpu -f Makefile.serial clean\n" + "to remove\n" + "########################################################################") + endif() + file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) @@ -79,7 +90,7 @@ if(GPU_API STREQUAL "CUDA") string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ") endif() - cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS + cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS ${CUDA_REQUEST_PIC} -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC} diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index df100f63f8..620f1c65c6 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -35,8 +35,8 @@ if(DOWNLOAD_KOKKOS) list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") include(ExternalProject) ExternalProject_Add(kokkos_build - URL https://github.com/kokkos/kokkos/archive/3.1.00.tar.gz - URL_MD5 f638a6c786f748a602b26faa0e96ebab + URL https://github.com/kokkos/kokkos/archive/3.1.01.tar.gz + URL_MD5 3ccb2100f7fc316891e7dad3bc33fa37 CMAKE_ARGS ${KOKKOS_LIB_BUILD_ARGS} BUILD_BYPRODUCTS /lib/libkokkoscore.a ) @@ -50,10 +50,7 @@ if(DOWNLOAD_KOKKOS) target_link_libraries(lammps PRIVATE LAMMPS::KOKKOS) add_dependencies(LAMMPS::KOKKOS kokkos_build) elseif(EXTERNAL_KOKKOS) - find_package(Kokkos 3.1) - if(NOT Kokkos_FOUND) - message(FATAL_ERROR "KOKKOS library version 3.1 or later not found, help CMake to find it by setting KOKKOS_LIBRARY, or set DOWNLOAD_KOKKOS=ON to download it") - endif() + find_package(Kokkos 3.1.01 REQUIRED CONFIG) target_link_libraries(lammps PRIVATE Kokkos::kokkos) else() set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos) diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index dce0c15ef6..5e79813ac0 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -2,7 +2,7 @@ option(FFT_SINGLE "Use single precision FFTs instead of double precision FFTs" O set(FFTW "FFTW3") if(FFT_SINGLE) set(FFTW "FFTW3F") - target_compile_definitions(lammps PUBLIC -DFFT_SINGLE) + target_compile_definitions(lammps PRIVATE -DFFT_SINGLE) endif() find_package(${FFTW} QUIET) if(${FFTW}_FOUND) @@ -17,8 +17,8 @@ string(TOUPPER ${FFT} FFT) if(FFT STREQUAL "FFTW3") find_package(${FFTW} REQUIRED) - target_compile_definitions(lammps PUBLIC -DFFT_FFTW3) - target_link_libraries(lammps PUBLIC ${FFTW}::${FFTW}) + target_compile_definitions(lammps PRIVATE -DFFT_FFTW3) + target_link_libraries(lammps PRIVATE ${FFTW}::${FFTW}) if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) option(FFT_FFTW_THREADS "Use threaded FFTW library" ON) else() diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index ce46569a3f..e66f83fa43 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -6,7 +6,7 @@ if(TARGET LATTE::latte) return() endif() -find_package(LATTE) +find_package(LATTE 1.2.2 CONFIG) if(LATTE_FOUND) set(DOWNLOAD_LATTE_DEFAULT OFF) else() @@ -17,8 +17,8 @@ if(DOWNLOAD_LATTE) message(STATUS "LATTE download requested - we will build our own") include(ExternalProject) ExternalProject_Add(latte_build - URL https://github.com/lanl/LATTE/archive/v1.2.1.tar.gz - URL_MD5 85ac414fdada2d04619c8f936344df14 + URL https://github.com/lanl/LATTE/archive/v1.2.2.tar.gz + URL_MD5 820e73a457ced178c08c71389a385de7 SOURCE_SUBDIR cmake CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} -DCMAKE_INSTALL_LIBDIR=lib -DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES} @@ -35,10 +35,6 @@ if(DOWNLOAD_LATTE) target_link_libraries(lammps PRIVATE LAMMPS::LATTE) add_dependencies(LAMMPS::LATTE latte_build) else() - find_package(LATTE) - if(NOT LATTE_FOUND) - message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it") - endif() - # latte needs lapack - target_link_libraries(lammps PRIVATE LATTE::latte ${LAPACK_LIBRARIES}) + find_package(LATTE 1.2.2 REQUIRED CONFIG) + target_link_libraries(lammps PRIVATE LATTE::latte) endif() diff --git a/cmake/Modules/Packages/USER-H5MD.cmake b/cmake/Modules/Packages/USER-H5MD.cmake index 6e8e425673..4fcae93027 100644 --- a/cmake/Modules/Packages/USER-H5MD.cmake +++ b/cmake/Modules/Packages/USER-H5MD.cmake @@ -1,8 +1,5 @@ enable_language(C) -if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12) - cmake_policy(SET CMP0074 NEW) -endif() find_package(HDF5 REQUIRED) target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES}) target_include_directories(h5md PUBLIC ${HDF5_INCLUDE_DIRS}) diff --git a/cmake/Modules/Packages/USER-NETCDF.cmake b/cmake/Modules/Packages/USER-NETCDF.cmake index 1bcbcadc35..d63e9773c3 100644 --- a/cmake/Modules/Packages/USER-NETCDF.cmake +++ b/cmake/Modules/Packages/USER-NETCDF.cmake @@ -1,8 +1,7 @@ # USER-NETCDF can use NetCDF, Parallel NetCDF (PNetCDF), or both. At least one necessary. # NetCDF library enables dump style "netcdf", while PNetCDF enables dump style "netcdf/mpiio" -if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12) - cmake_policy(SET CMP0074 NEW) -endif() + +# may use NetCDF or PNetCDF with MPI, but must have NetCDF without if(NOT BUILD_MPI) find_package(NetCDF REQUIRED) else() diff --git a/cmake/Modules/Testing.cmake b/cmake/Modules/Testing.cmake index f0a5f4519d..a9f9a2ac21 100644 --- a/cmake/Modules/Testing.cmake +++ b/cmake/Modules/Testing.cmake @@ -4,48 +4,7 @@ option(ENABLE_TESTING "Enable testing" OFF) if(ENABLE_TESTING) enable_testing() - option(LAMMPS_TESTING_SOURCE_DIR "Location of lammps-testing source directory" "") - option(LAMMPS_TESTING_GIT_TAG "Git tag of lammps-testing" "master") - mark_as_advanced(LAMMPS_TESTING_SOURCE_DIR LAMMPS_TESTING_GIT_TAG) - - if (CMAKE_VERSION VERSION_GREATER "3.10.3" AND NOT LAMMPS_TESTING_SOURCE_DIR) - include(FetchContent) - - FetchContent_Declare(lammps-testing - GIT_REPOSITORY https://github.com/lammps/lammps-testing.git - GIT_TAG ${LAMMPS_TESTING_GIT_TAG} - ) - - FetchContent_GetProperties(lammps-testing) - if(NOT lammps-testing_POPULATED) - message(STATUS "Downloading tests...") - FetchContent_Populate(lammps-testing) - endif() - - set(LAMMPS_TESTING_SOURCE_DIR ${lammps-testing_SOURCE_DIR}) - elseif(NOT LAMMPS_TESTING_SOURCE_DIR) - message(WARNING "Full test-suite requires CMake >= 3.11 or copy of\n" - "https://github.com/lammps/lammps-testing in LAMMPS_TESTING_SOURCE_DIR") - endif() - - add_test(NAME ShowHelp COMMAND $ -help) - - if(EXISTS ${LAMMPS_TESTING_SOURCE_DIR}) - message(STATUS "Running test discovery...") - - file(GLOB_RECURSE TEST_SCRIPTS ${LAMMPS_TESTING_SOURCE_DIR}/tests/core/*/in.*) - foreach(script_path ${TEST_SCRIPTS}) - get_filename_component(TEST_NAME ${script_path} EXT) - get_filename_component(SCRIPT_NAME ${script_path} NAME) - get_filename_component(PARENT_DIR ${script_path} DIRECTORY) - string(SUBSTRING ${TEST_NAME} 1 -1 TEST_NAME) - string(REPLACE "-" "_" TEST_NAME ${TEST_NAME}) - string(REPLACE "+" "_" TEST_NAME ${TEST_NAME}) - set(TEST_NAME "test_core_${TEST_NAME}_serial") - add_test(NAME ${TEST_NAME} COMMAND $ -in ${SCRIPT_NAME} WORKING_DIRECTORY ${PARENT_DIR}) - endforeach() - list(LENGTH TEST_SCRIPTS NUM_TESTS) - - message(STATUS "Found ${NUM_TESTS} tests.") - endif() + get_filename_component(LAMMPS_UNITTEST_DIR ${LAMMPS_SOURCE_DIR}/../unittest ABSOLUTE) + get_filename_component(LAMMPS_UNITTEST_BIN ${CMAKE_BINARY_DIR}/unittest ABSOLUTE) + add_subdirectory(${LAMMPS_UNITTEST_DIR} ${LAMMPS_UNITTEST_BIN}) endif() diff --git a/cmake/Modules/generate_lmpgitversion.cmake b/cmake/Modules/generate_lmpgitversion.cmake index a4aa59b262..afd4447867 100644 --- a/cmake/Modules/generate_lmpgitversion.cmake +++ b/cmake/Modules/generate_lmpgitversion.cmake @@ -3,17 +3,19 @@ set(temp_git_commit "(unknown)") set(temp_git_branch "(unknown)") set(temp_git_describe "(unknown)") set(temp_git_info "false") -if(GIT_FOUND AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.git) + +message(STATUS "Git Directory: ${LAMMPS_DIR}/.git") +if(GIT_FOUND AND EXISTS ${LAMMPS_DIR}/.git) set(temp_git_info "true") - execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. rev-parse HEAD + execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} rev-parse HEAD OUTPUT_VARIABLE temp_git_commit ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. rev-parse --abbrev-ref HEAD + execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} rev-parse --abbrev-ref HEAD OUTPUT_VARIABLE temp_git_branch ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. describe --dirty=-modified + execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} describe --dirty=-modified OUTPUT_VARIABLE temp_git_describe ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) diff --git a/doc/lammps.1 b/doc/lammps.1 index 80d07cbf0a..d9af339e0a 100644 --- a/doc/lammps.1 +++ b/doc/lammps.1 @@ -1,4 +1,4 @@ -.TH LAMMPS "5 May 2020" "2020-05-5" +.TH LAMMPS "2 June 2020" "2020-06-02" .SH NAME .B LAMMPS \- Molecular Dynamics Simulator. diff --git a/doc/src/Build_cmake.rst b/doc/src/Build_cmake.rst index 3473d83143..52a240176f 100644 --- a/doc/src/Build_cmake.rst +++ b/doc/src/Build_cmake.rst @@ -107,7 +107,7 @@ re-compile and relink the LAMMPS executable with ``cmake --build .`` (or ``cmake .`` and then compile again. The included dependency tracking should make certain that only the necessary subset of files are re-compiled. You can also delete compiled objects, libraries and -executables with ``cmake --build . clean`` (or ``make clean``). +executables with ``cmake --build . --target clean`` (or ``make clean``). After compilation, you may optionally install the LAMMPS executable into your system with: diff --git a/doc/src/Build_development.rst b/doc/src/Build_development.rst index 474e1fb833..94b78a4a9c 100644 --- a/doc/src/Build_development.rst +++ b/doc/src/Build_development.rst @@ -57,53 +57,252 @@ variable during configuration. Examples: .. _testing: -Code Coverage and Testing ---------------------------------------- +Code Coverage and Unit Testing +------------------------------ -We do extensive regression testing of the LAMMPS code base on a continuous -basis. Some of the logic to do this has been added to the CMake build so -developers can run the tests directly on their workstation. +The LAMMPS code is subject to multiple levels of automated testing +during development: integration testing (i.e. whether the code compiles +on various platforms and with a variety of settings), unit testing +(i.e. whether certain individual parts of the code produce the expected +results for given inputs), run testing (whether selected complete input +decks run without crashing for multiple configurations), and regression +testing (i.e. whether selected input examples reproduce the same +results over a given number of steps and operations within a given +error margin). The status of this automated testing can be viewed on +`https://ci.lammps.org `_. + +The unit testing facility is integrated into the CMake build process +of the LAMMPS source code distribution itself. It can be enabled by +setting ``-D ENABLE_TESTING=on`` during the CMake configuration step. +It requires the `YAML `_ library and development +headers to compile and will download and compile a recent version of the +`Googletest `_ C++ test framework +for implementing the tests. + +After compilation is complete, the unit testing is started in the build +folder using the ``ctest`` command, which is part of the CMake software. +The output of this command will be looking something like this:: + + [...]$ ctest + Test project /home/akohlmey/compile/lammps/build-testing + Start 1: MolPairStyle:hybrid-overlay + 1/26 Test #1: MolPairStyle:hybrid-overlay ......... Passed 0.02 sec + Start 2: MolPairStyle:hybrid + 2/26 Test #2: MolPairStyle:hybrid ................. Passed 0.01 sec + Start 3: MolPairStyle:lj_class2 + [...] + Start 25: AngleStyle:harmonic + 25/26 Test #25: AngleStyle:harmonic ................. Passed 0.01 sec + Start 26: AngleStyle:zero + 26/26 Test #26: AngleStyle:zero ..................... Passed 0.01 sec + + 100% tests passed, 0 tests failed out of 26 + + Total Test time (real) = 0.27 sec + + +The ``ctest`` command has many options, the most important ones are: + +.. list-table:: + + * - Option + - Function + * - -V + - verbose output: display output of individual test runs + * - -j + - parallel run: run tests in parallel + * - -R + - run subset of tests matching the regular expression + * - -E + - exclude subset of tests matching the regular expression + * - -N + - dry-run: display list of tests without running them + +In its full implementation, the unit test framework will consist of multiple +kinds of tests implemented in different programming languages (C++, C, Python, +Fortran) and testing different aspects of the LAMMPS software and its features. +At the moment only tests for "force styles" are implemented. More on those +in the next section. .. note:: - this is incomplete and only represents a small subset of tests that we run + This unit test framework is new and still under development. + The coverage is only minimal and will be expanded over time. + Tests styles of the same kind of style (e.g. pair styles or + bond styles) are performed with the same executable using + different input files in YAML format. So to add a test for + another pair style can be done by copying the YAML file and + editing the style settings and then running the individual test + program with a flag to update the computed reference data. + Detailed documentation about how to add new test program and + the contents of the YAML files for existing test programs + will be provided in time as well. + +Unit tests for force styles +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +A large part of LAMMPS are different "styles" for computing non-bonded +and bonded interactions selected through the :doc:`pair_style`, +:doc:`bond_style`, :doc:`angle_style`, :doc:`dihedral_style`, +:doc:`improper_style`, and :doc:`kspace_style`. Since these all share +common interfaces, it is possible to write generic test programs that +will call those common interfaces for small test systems with less than +100 atoms and compare the results with pre-recorded reference results. +A test run is then a a collection multiple individual test runs each +with many comparisons to reference results based on template input +files, individual command settings, relative error margins, and +reference data stored in a YAML format file with ``.yaml`` +suffix. Currently the programs ``pair_style``, ``bond_style``, and +``angle_style`` are implemented. They will compare forces, energies and +(global) stress for all atoms after a ``run 0`` calculation and after a +few steps of MD with :doc:`fix nve `, each in multiple variants +with different settings and also for multiple accelerated styles. If a +prerequisite style or package is missing, the individual tests are +skipped. All tests will be executed on a single MPI process, so using +the CMake option ``-D BUILD_MPI=off`` can significantly speed up testing, +since this will skip the MPI initialization for each test run. +Below is an example command and output: + +.. parsed-literal:: + + [tests]$ pair_style mol-pair-lj_cut.yaml + [==========] Running 6 tests from 1 test suite. + [----------] Global test environment set-up. + [----------] 6 tests from PairStyle + [ RUN ] PairStyle.plain + [ OK ] PairStyle.plain (24 ms) + [ RUN ] PairStyle.omp + [ OK ] PairStyle.omp (18 ms) + [ RUN ] PairStyle.intel + [ OK ] PairStyle.intel (6 ms) + [ RUN ] PairStyle.opt + [ SKIPPED ] PairStyle.opt (0 ms) + [ RUN ] PairStyle.single + [ OK ] PairStyle.single (7 ms) + [ RUN ] PairStyle.extract + [ OK ] PairStyle.extract (6 ms) + [----------] 6 tests from PairStyle (62 ms total) + + [----------] Global test environment tear-down + [==========] 6 tests from 1 test suite ran. (63 ms total) + [ PASSED ] 5 tests. + [ SKIPPED ] 1 test, listed below: + [ SKIPPED ] PairStyle.opt + +In this particular case, 5 out of 6 sets of tests were conducted, the +tests for the ``lj/cut/opt`` pair style was skipped, since the tests +executable did not include it. To learn what individual tests are performed, +you (currently) need to read the source code. You can use code coverage +recording (see next section) to confirm how well the tests cover the individual +source files. + +The force style test programs have a common set of options: + +.. list-table:: + + * - Option + - Function + * - -g + - regenerate reference data in new YAML file + * - -u + - update reference data in the original YAML file + * - -s + - print error statistics for each group of comparisons + * - -v + - verbose output: also print the executed LAMMPS commands + +To add a test for a style that is not yet covered, it is usually best +to copy a YAML file for a similar style to a new file, edit the details +of the style (how to call it, how to set its coefficients) and then +run test command with either the *-g* and the replace the initial +test file with the regenerated one or the *-u* option. The *-u* option +will destroy the original file, if the generation run does not complete, +so using *-g* is recommended unless the YAML file is fully tested +and working. + +.. admonition:: Recommendations and notes for YAML files + :class: note + + - The reference results should be recorded without any code + optimization or related compiler flags enabled. + - The ``epsilon`` parameter defines the relative precision with which + the reference results must be met. The test geometries often have + high and low energy parts and thus a significant impact from + floating-point math truncation errors is to be expected. Some + functional forms and potentials are more noisy than others, so this + parameter needs to be adjusted. Typically a value around 1.0e-13 + can be used, but it may need to be as large as 1.0e-8 in some + cases. + - The tests for pair styles from OPT, USER-OMP and USER-INTEL are + performed with automatically rescaled epsilon to account for + additional loss of precision from code optimizations and different + summation orders. + - When compiling with aggressive compiler optimization, some tests + are likely to fail. It is recommended to inspect the individual + tests in detail to decide whether the specific error for a specific + property is acceptable (it often is), or this may be an indication + of mis-compiled code (or undesired large of precision due to + reordering of operations). + +Collect and visualize code coverage metrics +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +You can also collect code coverage metrics while running LAMMPS or the +tests by enabling code coverage support during the CMake configuration: .. code-block:: bash - -D ENABLE_TESTING=value # enable simple run tests of LAMMPS, value = no (default) or yes - -D LAMMPS_TESTING_SOURCE_DIR=path # path to lammps-testing repository (option if in custom location) - -D LAMMPS_TESTING_GIT_TAG=value # version of lammps-testing repository that should be used, value = master (default) or custom git commit or tag + -D ENABLE_COVERAGE=on # enable coverage measurements (off by default) -If you enable testing in the CMake build it will create an additional -target called "test". You can run them with: +This will instrument all object files to write information about which +lines of code were accessed during execution in files next to the +corresponding object files. These can be post-processed to visually +show the degree of coverage and which code paths are accessed and which +are not taken. When working on unit tests (see above), this can be +extremely helpful to determine which parts of the code are not executed +and thus what kind of tests are still missing. The coverage data is +cumulative, i.e. new data is added with each new run. + +Enabling code coverage will also add the following build targets to +generate coverage reports after running the LAMMPS executable or the +unit tests: .. code-block:: bash - cmake --build . test + make gen_coverage_html # generate coverage report in HTML format + make gen_coverage_xml # generate coverage report in XML format + make clean_coverage_html # delete folder with HTML format coverage report + make reset_coverage # delete all collected coverage data and HTML output -The test cases used come from the lammps-testing repository. They are -derivatives of the examples folder with some modifications to make the -run faster. - -You can also collect code coverage metrics while running the tests by -enabling coverage support during building. - -.. code-block:: bash - - -D ENABLE_COVERAGE=value # enable coverage measurements, value = no (default) or yes - -This will also add the following targets to generate coverage reports -after running the LAMMPS executable: - -.. code-block:: bash - - make test # run tests first! - make gen_coverage_html # generate coverage report in HTML format - make gen_coverage_xml # generate coverage report in XML format - -These reports require GCOVR to be installed. The easiest way to do this -to install it via pip: +These reports require `GCOVR `_ to be installed. The easiest way +to do this to install it via pip: .. code-block:: bash pip install git+https://github.com/gcovr/gcovr.git + +After post-processing with ``gen_coverage_html`` the results are in +a folder ``coverage_html`` and can be viewed with a web browser. +The images below illustrate how the data is presented. + +.. list-table:: + + * - .. figure:: JPG/coverage-overview-top.png + :target: JPG/coverage-overview-top.png + + Top of the overview page + + - .. figure:: JPG/coverage-overview-manybody.png + :target: JPG/coverage-overview-manybody.png + + Styles with good coverage + + - .. figure:: JPG/coverage-file-top.png + :target: JPG/coverage-file-top.png + + Top of individual source page + + - .. figure:: JPG/coverage-file-branches.png + :target: JPG/coverage-file-branches.png + + Source page with branches diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 5d6f2c65a7..fe974278eb 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -132,6 +132,10 @@ Thus the GPU_ARCH setting is merely an optimization, to have code for the preferred GPU architecture directly included rather than having to wait for the JIT compiler of the CUDA driver to translate it. +When building with CMake, you **must NOT** build the GPU library in ``lib/gpu`` +using the traditional build procedure. CMake will detect files generated by that +process and will terminate with an error and a suggestion for how to remove them. + If you are compiling with HIP, note that before running CMake you will have to set appropriate environment variables. Some variables such as :code:`HCC_AMDGPU_TARGET` or :code:`CUDA_PATH` are necessary for :code:`hipcc` @@ -320,12 +324,13 @@ to have an executable that will run on this and newer architectures. .. note:: - If you run Kokkos on a newer GPU architecture than what LAMMPS was - compiled with, there will be a delay during device initialization - since the just-in-time compiler has to recompile all GPU kernels - for the new hardware. This is, however, not possible when compiled - for NVIDIA GPUs with CC 3.x (Kepler) for GPUs with CC 5.0 (Maxwell) - and newer as they are not compatible. + If you run Kokkos on a different GPU architecture than what LAMMPS + was compiled with, there will be a delay during device initialization + while the just-in-time compiler is recompiling all GPU kernels for + the new hardware. This is, however, only supported for GPUs of the + **same** major hardware version and different minor hardware versions, + e.g. 5.0 and 5.2 but not 5.2 and 6.0. LAMMPS will abort with an + error message indicating a mismatch, if that happens. The settings discussed below have been tested with LAMMPS and are confirmed to work. Kokkos is an active project with ongoing improvements @@ -580,9 +585,14 @@ recommended when developing a Kokkos-enabled style in LAMMPS. The CMake option ``-DKokkos_ENABLE_CUDA_UVM=on`` or the makefile setting ``KOKKOS_CUDA_OPTIONS=enable_lambda,force_uvm`` enables the -use of CUDA "Unified Virtual Memory" in Kokkos. Please note, that -the LAMMPS KOKKOS package must **always** be compiled with the -*enable_lambda* option when using GPUs. +use of CUDA "Unified Virtual Memory" (UVM) in Kokkos. UVM allows to +transparently use RAM on the host to supplement the memory used on the +GPU (with some performance penalty) and thus enables running larger +problems that would otherwise not fit into the RAM on the GPU. + +Please note, that the LAMMPS KOKKOS package must **always** be compiled +with the *enable_lambda* option when using GPUs. The CMake configuration +will thus always enable it. ---------- diff --git a/doc/src/Commands_all.rst b/doc/src/Commands_all.rst index 92c0ba107a..458238cca6 100644 --- a/doc/src/Commands_all.rst +++ b/doc/src/Commands_all.rst @@ -94,6 +94,7 @@ An alphabetic list of all general LAMMPS commands. * :doc:`package ` * :doc:`pair_coeff ` * :doc:`pair_modify ` + * :doc:`pair_style ` * :doc:`pair_write ` * :doc:`partition ` * :doc:`prd ` diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index 937979a1f7..c4b51319d9 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -79,9 +79,6 @@ KOKKOS, o = USER-OMP, t = OPT. * :doc:`ke/atom/eff ` * :doc:`ke/eff ` * :doc:`ke/rigid ` - * :doc:`meso/e/atom ` - * :doc:`meso/rho/atom ` - * :doc:`meso/t/atom ` * :doc:`momentum ` * :doc:`msd ` * :doc:`msd/chunk ` @@ -133,6 +130,9 @@ KOKKOS, o = USER-OMP, t = OPT. * :doc:`sna/atom ` * :doc:`snad/atom ` * :doc:`snav/atom ` + * :doc:`sph/e/atom ` + * :doc:`sph/rho/atom ` + * :doc:`sph/t/atom ` * :doc:`spin ` * :doc:`stress/atom ` * :doc:`stress/mop ` diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index 67696912a8..1f42d3530d 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -95,9 +95,7 @@ OPT. * :doc:`lb/viscous ` * :doc:`lineforce ` * :doc:`manifoldforce ` - * :doc:`meso ` * :doc:`meso/move ` - * :doc:`meso/stationary ` * :doc:`momentum (k) ` * :doc:`move ` * :doc:`mscg ` @@ -149,6 +147,7 @@ OPT. * :doc:`oneway ` * :doc:`orient/bcc ` * :doc:`orient/fcc ` + * :doc:`orient/eco ` * :doc:`phonon ` * :doc:`pimd ` * :doc:`planeforce ` @@ -202,6 +201,8 @@ OPT. * :doc:`smd/move_tri_surf ` * :doc:`smd/setvel ` * :doc:`smd/wall_surface ` + * :doc:`sph ` + * :doc:`sph/stationary ` * :doc:`spring ` * :doc:`spring/chunk ` * :doc:`spring/rg ` diff --git a/doc/src/Commands_pair.rst b/doc/src/Commands_pair.rst index b176e22a85..eac38af668 100644 --- a/doc/src/Commands_pair.rst +++ b/doc/src/Commands_pair.rst @@ -92,8 +92,8 @@ OPT. * :doc:`drip ` * :doc:`eam (gikot) ` * :doc:`eam/alloy (gikot) ` - * :doc:`eam/cd (o) ` - * :doc:`eam/cd/old (o) ` + * :doc:`eam/cd ` + * :doc:`eam/cd/old ` * :doc:`eam/fs (gikot) ` * :doc:`edip (o) ` * :doc:`edip/multi ` diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index fa6038efb5..9028893ddb 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -415,8 +415,10 @@ This is particularly convenient, if you have set a custom build command via the ``CMAKE_MAKE_PROGRAM`` variable. When calling the build program, you can also select which "target" is to -be build through appending the name of the target to the build command. -Example: ``cmake --build . all``. The following abstract targets are available: +be build through appending the ``--target`` flag and the name of the target +to the build command. When using ``make`` as build tool, you can just append +the target name to the command. Example: ``cmake --build . --target all`` or +``make all``. The following abstract targets are available: .. list-table:: :header-rows: 1 @@ -432,7 +434,7 @@ Example: ``cmake --build . all``. The following abstract targets are available: * - ``install`` - install all target files into folders in ``CMAKE_INSTALL_PREFIX`` * - ``test`` - - run some simple tests (if configured with ``-D ENABLE_TESTING=on``) + - run some tests (if configured with ``-D ENABLE_TESTING=on``) * - ``clean`` - remove all generated files diff --git a/doc/src/JPG/coverage-file-branches.png b/doc/src/JPG/coverage-file-branches.png new file mode 100644 index 0000000000..8bf3b6eefd Binary files /dev/null and b/doc/src/JPG/coverage-file-branches.png differ diff --git a/doc/src/JPG/coverage-file-top.png b/doc/src/JPG/coverage-file-top.png new file mode 100644 index 0000000000..cc834be27f Binary files /dev/null and b/doc/src/JPG/coverage-file-top.png differ diff --git a/doc/src/JPG/coverage-overview-manybody.png b/doc/src/JPG/coverage-overview-manybody.png new file mode 100644 index 0000000000..85fad27f74 Binary files /dev/null and b/doc/src/JPG/coverage-overview-manybody.png differ diff --git a/doc/src/JPG/coverage-overview-top.png b/doc/src/JPG/coverage-overview-top.png new file mode 100644 index 0000000000..e57486a293 Binary files /dev/null and b/doc/src/JPG/coverage-overview-top.png differ diff --git a/doc/src/Modify_atom.rst b/doc/src/Modify_atom.rst index f863da3157..34a529020a 100644 --- a/doc/src/Modify_atom.rst +++ b/doc/src/Modify_atom.rst @@ -3,115 +3,169 @@ Atom styles Classes that define an :doc:`atom style ` are derived from the AtomVec class and managed by the Atom class. The atom style -determines what attributes are associated with an atom. A new atom -style can be created if one of the existing atom styles does not -define all the attributes you need to store and communicate with -atoms. +determines what attributes are associated with an atom and +communicated when it is a ghost atom or migrates to a new processor. +A new atom style can be created if one of the existing atom styles +does not define all the attributes you need to store and communicate +with atoms. -Atom_vec_atomic.cpp is a simple example of an atom style. +Atom_vec_atomic.cpp is the simplest example of an atom style. +Examining the code for others will make these instructions more clear. -Here is a brief description of methods you define in your new derived -class. See atom_vec.h for details. +Note that the :doc:`atom style hybrid ` command can be +used to define atoms or particles which have the union of properties +of individual styles. Also the :doc:`fix property/atom ` +command can be used to add a single property (e.g. charge +or a molecule ID) to a style that does not have it. It can also be +used to add custom properties to an atom, with options to communicate +them with ghost atoms or read them from a data file. Other LAMMPS +commands can access these custom properties, as can new pair, fix, +compute styles that are written to work with these properties. For +example, the :doc:`set ` command can be used to set the values of +custom per-atom properties from an input script. All of these methods +are less work than writing code for a new atom style. -+-------------------------+--------------------------------------------------------------------------------+ -| init | one time setup (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| grow | re-allocate atom arrays to longer lengths (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| grow_reset | make array pointers in Atom and AtomVec classes consistent (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| copy | copy info for one atom to another atom's array locations (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack_comm | store an atom's info in a buffer communicated every timestep (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack_comm_vel | add velocity info to communication buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack_comm_hybrid | store extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack_comm | retrieve an atom's info from the buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack_comm_vel | also retrieve velocity info (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack_comm_hybrid | retrieve extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack_reverse | store an atom's info in a buffer communicating partial forces (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack_reverse_hybrid | store extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack_reverse | retrieve an atom's info from the buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack_reverse_hybrid | retrieve extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack_border | store an atom's info in a buffer communicated on neighbor re-builds (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack_border_vel | add velocity info to buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack_border_hybrid | store extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack_border | retrieve an atom's info from the buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack_border_vel | also retrieve velocity info (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack_border_hybrid | retrieve extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack_exchange | store all an atom's info to migrate to another processor (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack_exchange | retrieve an atom's info from the buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| size_restart | number of restart quantities associated with proc's atoms (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack_restart | pack atom quantities into a buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack_restart | unpack atom quantities from a buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| create_atom | create an individual atom of this style (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| data_atom | parse an atom line from the data file (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| data_atom_hybrid | parse additional atom info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| data_vel | parse one line of velocity information from data file (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| data_vel_hybrid | parse additional velocity data unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| memory_usage | tally memory allocated by atom arrays (required) | -+-------------------------+--------------------------------------------------------------------------------+ +If you follow these directions your new style will automatically work +in tandem with others via the :doc:`atom_style hybrid ` +command. -The constructor of the derived class sets values for several variables -that you must set when defining a new atom style, which are documented -in atom_vec.h. New atom arrays are defined in atom.cpp. Search for -the word "customize" and you will find locations you will need to -modify. +The first step is to define a set of strings in the constructor of the +new derived class. Each string will have zero or more space-separated +variable names which are identical to those used in the atom.h header +file for per-atom properties. Note that some represent per-atom +vectors (q, molecule) while other are per-atom arrays (x,v). For all +but the last 2 strings you do not need to specify any of +(id,type,x,v,f). Those are included automatically as needed in the +other strings. -.. note:: +.. list-table:: - It is possible to add some attributes, such as a molecule ID, to - atom styles that do not have them via the :doc:`fix property/atom ` command. This command also - allows new custom attributes consisting of extra integer or - floating-point values to be added to atoms. See the :doc:`fix property/atom ` doc page for examples of cases - where this is useful and details on how to initialize, access, and - output the custom values. + * - fields_grow + - full list of properties which is allocated and stored + * - fields_copy + - list of properties to copy atoms are rearranged on-processor + * - fields_comm + - list of properties communicated to ghost atoms every step + * - fields_comm_vel + - additional properties communicated if :doc:`comm_modify vel ` is used + * - fields_reverse + - list of properties summed from ghost atoms every step + * - fields_border + - list of properties communicated with ghost atoms every reneighboring step + * - fields_border_vel + - additional properties communicated if :doc:`comm_modify vel ` is used + * - fields_exchange + - list of properties communicated when an atom migrates to another processor + * - fields_restart + - list of properties written/read to/from a restart file + * - fields_create + - list of properties defined when an atom is created by :doc:`create_atoms ` + * - fields_data_atom + - list of properties (in order) in the Atoms section of a data file, as read by :doc:`read_data ` + * - fields_data_vel + - list of properties (in order) in the Velocities section of a data file, as read by :doc:`read_data ` -New :doc:`pair styles `, :doc:`fixes `, or -:doc:`computes ` can be added to LAMMPS, as discussed below. -The code for these classes can use the per-atom properties defined by -fix property/atom. The Atom class has a find_custom() method that is -useful in this context: +In these strings you can list variable names which LAMMPS already +defines (in some other atom style), or you can create new variable +names. You should not re-use a LAMMPS variable for something with +different meaning in your atom style. If the meaning is related, but +interpreted differently by your atom style, then using the same +variable name means a user should not use your style and the other +style together in a :doc:`atom_style hybrid ` command. +Because there will only be one value of the variable and different +parts of LAMMPS will then likely use it differently. LAMMPS has +no way of checking for this. -.. code-block:: c++ +If you are defining new variable names then make them descriptive and +unique to your new atom style. For example choosing "e" for energy is +a bad choice; it is too generic. A better choice would be "e_foo", +where "foo" is specific to your style. - int index = atom->find_custom(char *name, int &flag); +If any of the variable names in your new atom style do not exist in +LAMMPS, you need to add them to the src/atom.h and atom.cpp files. -The "name" of a custom attribute, as specified in the :doc:`fix property/atom ` command, is checked to verify -that it exists and its index is returned. The method also sets flag = -0/1 depending on whether it is an integer or floating-point attribute. -The vector of values associated with the attribute can then be -accessed using the returned index as +Search for the word "customize" or "customization" in these 2 files to +see where to add your variable. Adding a flag to the 2nd +customization section in atom.h is only necessary if your code (e.g. a +pair style) needs to check that a per-atom property is defined. These +flags should also be set in the constructor of the atom style child +class. -.. code-block:: c++ +In atom.cpp, aside from the constructor and destructor, there are 3 +methods that a new variable name or flag needs to be added to. - int *ivector = atom->ivector[index]; - double *dvector = atom->dvector[index]; +In Atom::peratom_create() when using the add_peratom() method, a +final length argument of 0 is for per-atom vectors, a length > 1 is +for per-atom arrays. Note the use of an extra per-thread flag and the +add_peratom_vary() method when last dimension of the array is +variable-length. -Ivector or dvector are vectors of length Nlocal = # of owned atoms, -which store the attributes of individual atoms. +Adding the variable name to Atom::extract() enable the per-atom data +to be accessed through the :doc:`LAMMPS library interface +` by a calling code, including from :doc:`Python +`. + +The constructor of the new atom style will also typically set a few +flags which are defined at the top of atom_vec.h. If these are +unclear, see how other atom styles use them. + +The grow_pointers() method is also required to make +a copy of peratom data pointers, as explained in the code. + +There are a number of other optional methods which your atom style can +implement. These are only needed if you need to do something +out-of-the-ordinary which the default operation of the AtomVec parent +class does not take care of. The best way to figure out why they are +sometimes useful is to look at how other atom styles use them. + +* process_args = use if the atom style has arguments +* init = called before each run +* force_clear = called before force computations each timestep + +A few atom styles define "bonus" data associated with some or all of +their particles, such as :doc:`atom_style ellipsoid or tri +`. These methods work with that data: + +* copy_bonus +* clear_bonus +* pack_comm_bonus +* unpack_comm_bonus +* pack_border_bonus +* unpack_border_bonus +* pack_exchange_bonus +* unpack_exchange_bonus +* size_restart_bonus +* pack_restart_bonus +* unpack_restart_bonus +* data_atom_bonus +* memory_usage_bonus + +The :doc:`atom_style body ` command can define a particle +geometry with an arbitrary number of values. This method reads it +from a data file: + +* data_body + +These methods are called before or after operations handled by the +parent AtomVec class. They allow an atom style to do customized +operations on the per-atom values. For example :doc:`atom_style +sphere ` reads a diameter and density of each particle +from a data file. But these need to be converted internally to a +radius and mass. That operation is done in the data_atom_post() +method. + +* pack_restart_pre +* pack_restart_post +* unpack_restart_init +* create_atom_post +* data_atom_post +* pack_data_pre +* pack_data_post + +These methods enable the :doc:`compute property/atom ` +command to access per-atom variables it does not +already define as arguments, so that they can be written to a dump +file or used by other LAMMPS commands. + +* property_atom +* pack_property_atom diff --git a/doc/src/Modify_contribute.rst b/doc/src/Modify_contribute.rst index ed2ef783f4..8bc320a9b0 100644 --- a/doc/src/Modify_contribute.rst +++ b/doc/src/Modify_contribute.rst @@ -1,37 +1,51 @@ Submitting new features for inclusion in LAMMPS =============================================== -We encourage users to submit new features or modifications for LAMMPS -to `the core developers `_ so they -can be added to the LAMMPS distribution. The preferred way to manage -and coordinate this is as of Fall 2016 via the LAMMPS project on -`GitHub `_. An alternative is to -contact the LAMMPS developers or the indicated developer of a package -or feature directly and send in your contribution via e-mail. +We encourage users to submit new features or modifications for LAMMPS to +`the core developers `_ so they +can be added to the LAMMPS distribution. The preferred way to manage and +coordinate this is via the LAMMPS project on `GitHub +`_. Please see the :doc:`GitHub +Tutorial ` for a demonstration on how to do that. An +alternative is to contact the LAMMPS developers or the indicated +developer of a package or feature directly and send in your contribution +via e-mail, but that can add a significant delay on getting your +contribution included, depending on how busy the developer is you +contact, how complex a task it would be to integrate that code, and how +many - if any - changes are required before the code can be included. -For any larger modifications or programming project, you are -encouraged to contact the LAMMPS developers ahead of time, in order to -discuss implementation strategies and coding guidelines, that will -make it easier to integrate your contribution and result in less work -for everybody involved. You are also encouraged to search through the -list of `open issues on GitHub `_ and submit a new issue -for a planned feature, so you would not duplicate the work of others -(and possibly get scooped by them) or have your work duplicated by -others. +For any larger modifications or programming project, you are encouraged +to contact the LAMMPS developers ahead of time, in order to discuss +implementation strategies and coding guidelines, that will make it +easier to integrate your contribution and result in less work for +everybody involved. You are also encouraged to search through the list +of `open issues on GitHub `_ +and submit a new issue for a planned feature, so you would not duplicate +the work of others (and possibly get scooped by them) or have your work +duplicated by others. -How quickly your contribution will be integrated depends largely on -how much effort it will cause to integrate and test it, how much it -requires changes to the core codebase, and of how much interest it is -to the larger LAMMPS community. Please see below for a checklist of -typical requirements. Once you have prepared everything, see the -:doc:`Using GitHub with LAMMPS Howto ` doc page for instructions on how to -submit your changes or new files through a GitHub pull request. If you -prefer to submit patches or full files, you should first make certain, -that your code works correctly with the latest patch-level version of -LAMMPS and contains all bug fixes from it. Then create a gzipped tar -file of all changed or added files or a corresponding patch file using -'diff -u' or 'diff -c' and compress it with gzip. Please only use gzip -compression, as this works well on all platforms. +For informal communication with (some of) the LAMMPS developers you may +ask to join the `LAMMPS developers on Slack `_. +This slack work space is by invitation only. Thus for access, please +send an e-mail to ``slack@lammps.org`` explaining what part of LAMMPS +you are working on. Only discussions related to LAMMPS development are +tolerated, so this is **NOT** for people that look for help with compiling, +installing, or using LAMMPS. Please contact the `lammps-users mailing +list `_ for those purposes instead. + +How quickly your contribution will be integrated depends largely on how +much effort it will cause to integrate and test it, how much it requires +changes to the core codebase, and of how much interest it is to the +larger LAMMPS community. Please see below for a checklist of typical +requirements. Once you have prepared everything, see the :doc:`Using +GitHub with LAMMPS Howto ` doc page for instructions on +how to submit your changes or new files through a GitHub pull +request. If you prefer to submit patches or full files, you should first +make certain, that your code works correctly with the latest patch-level +version of LAMMPS and contains all bug fixes from it. Then create a +gzipped tar file of all changed or added files or a corresponding patch +file using 'diff -u' or 'diff -c' and compress it with gzip. Please only +use gzip compression, as this works well on all platforms. If the new features/files are broadly useful we may add them as core files to LAMMPS or as part of a :doc:`standard package `. Else we will add them as a diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index 8251c5301e..2353df777f 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -2064,7 +2064,7 @@ molecules, and chiral-sensitive reactions. * examples/USER/reaction * `2017 LAMMPS Workshop `_ * `2019 LAMMPS Workshop `_ -* disarmmd.org +* reacter.org ---------- diff --git a/doc/src/atom_style.rst b/doc/src/atom_style.rst index df00c65f01..2f4f7412e2 100644 --- a/doc/src/atom_style.rst +++ b/doc/src/atom_style.rst @@ -10,7 +10,7 @@ Syntax atom_style style args -* style = *angle* or *atomic* or *body* or *bond* or *charge* or *dipole* or *dpd* or *edpd* or *mdpd* or *tdpd* or *electron* or *ellipsoid* or *full* or *line* or *meso* or *molecular* or *peri* or *smd* or *sphere* or *spin* or *tri* or *template* or *hybrid* +* style = *angle* or *atomic* or *body* or *bond* or *charge* or *dipole* or *dpd* or *edpd* or *electron* or *ellipsoid* or *full* or *line* or *mdpd* or *molecular* or *peri* or *smd* or *sph* or *sphere* or *spin* or *tdpd* or *tri* or *template* or *hybrid* .. parsed-literal:: @@ -18,7 +18,9 @@ Syntax *body* args = bstyle bstyle-args bstyle = style of body particles bstyle-args = additional arguments specific to the bstyle - see the :doc:`Howto body ` doc page for details + see the :doc:`Howto body ` doc + page for details + *sphere* arg = 0/1 (optional) for static/dynamic particle radii *tdpd* arg = Nspecies Nspecies = # of chemical species *template* arg = template-ID @@ -91,10 +93,6 @@ quantities. +--------------+-----------------------------------------------------+--------------------------------------+ | *edpd* | temperature and heat capacity | eDPD particles | +--------------+-----------------------------------------------------+--------------------------------------+ -| *mdpd* | density | mDPD particles | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *tdpd* | chemical concentration | tDPD particles | -+--------------+-----------------------------------------------------+--------------------------------------+ | *electron* | charge and spin and eradius | electronic force field | +--------------+-----------------------------------------------------+--------------------------------------+ | *ellipsoid* | shape, quaternion, angular momentum | aspherical particles | @@ -103,7 +101,7 @@ quantities. +--------------+-----------------------------------------------------+--------------------------------------+ | *line* | end points, angular velocity | rigid bodies | +--------------+-----------------------------------------------------+--------------------------------------+ -| *meso* | rho, e, cv | SPH particles | +| *mdpd* | density | mDPD particles | +--------------+-----------------------------------------------------+--------------------------------------+ | *molecular* | bonds, angles, dihedrals, impropers | uncharged molecules | +--------------+-----------------------------------------------------+--------------------------------------+ @@ -111,10 +109,14 @@ quantities. +--------------+-----------------------------------------------------+--------------------------------------+ | *smd* | volume, kernel diameter, contact radius, mass | solid and fluid SPH particles | +--------------+-----------------------------------------------------+--------------------------------------+ +| *sph* | rho, esph, cv | SPH particles | ++--------------+-----------------------------------------------------+--------------------------------------+ | *sphere* | diameter, mass, angular velocity | granular models | +--------------+-----------------------------------------------------+--------------------------------------+ | *spin* | magnetic moment | system with magnetic particles | +--------------+-----------------------------------------------------+--------------------------------------+ +| *tdpd* | chemical concentration | tDPD particles | ++--------------+-----------------------------------------------------+--------------------------------------+ | *template* | template index, template atom | small molecules with fixed topology | +--------------+-----------------------------------------------------+--------------------------------------+ | *tri* | corner points, angular momentum | rigid bodies | @@ -144,9 +146,16 @@ basis. For the *sphere* style, the particles are spheres and each stores a per-particle diameter and mass. If the diameter > 0.0, the particle is a finite-size sphere. If the diameter = 0.0, it is a point -particle. Note that by use of the *disc* keyword with the :doc:`fix nve/sphere `, :doc:`fix nvt/sphere `, -:doc:`fix nph/sphere `, :doc:`fix npt/sphere ` commands, spheres can be effectively -treated as 2d discs for a 2d simulation if desired. See also the :doc:`set density/disc ` command. +particle. Note that by use of the *disc* keyword with the :doc:`fix +nve/sphere `, :doc:`fix nvt/sphere `, +:doc:`fix nph/sphere `, :doc:`fix npt/sphere +` commands, spheres can be effectively treated as 2d +discs for a 2d simulation if desired. See also the :doc:`set +density/disc ` command. The *sphere* style takes an optional 0 +or 1 argument. A value of 0 means the radius of each sphere is +constant for the duration of the simulation. A value of 1 means the +radii may vary dynamically during the simulation, e.g. due to use of +the :doc:`fix adapt ` command. For the *ellipsoid* style, the particles are ellipsoids and each stores a flag which indicates whether it is a finite-size ellipsoid or @@ -189,8 +198,8 @@ particles which store a set of chemical concentration. An integer "cc_species" is required to specify the number of chemical species involved in a tDPD system. -The *meso* style is for smoothed particle hydrodynamics (SPH) -particles which store a density (rho), energy (e), and heat capacity +The *sph* style is for smoothed particle hydrodynamics (SPH) +particles which store a density (rho), energy (esph), and heat capacity (cv). The *smd* style is for a general formulation of Smooth Particle @@ -335,7 +344,7 @@ for energy-conserving dissipative particle dynamics (eDPD), many-body dissipative particle dynamics (mDPD), and transport dissipative particle dynamics (tDPD), respectively. -The *meso* style is part of the USER-SPH package for smoothed particle +The *sph* style is part of the USER-SPH package for smoothed particle hydrodynamics (SPH). See `this PDF guide `_ to using SPH in LAMMPS. The *spin* style is part of the SPIN package. @@ -351,7 +360,8 @@ Related commands Default """"""" -atom_style atomic +The default atom style is atomic. If atom_style sphere is used its +default argument is 0. ---------- diff --git a/doc/src/compute.rst b/doc/src/compute.rst index c09ba7fbeb..8efc5ddabb 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -225,9 +225,6 @@ The individual style names on the :doc:`Commands compute ` doc * :doc:`ke/atom/eff ` - per-atom translational and radial kinetic energy in the electron force field model * :doc:`ke/eff ` - kinetic energy of a group of nuclei and electrons in the electron force field model * :doc:`ke/rigid ` - translational kinetic energy of rigid bodies -* :doc:`meso/e/atom ` - per-atom internal energy of Smooth-Particle Hydrodynamics atoms -* :doc:`meso/rho/atom ` - per-atom mesoscopic density of Smooth-Particle Hydrodynamics atoms -* :doc:`meso/t/atom ` - per-atom internal temperature of Smooth-Particle Hydrodynamics atoms * :doc:`momentum ` - translational momentum * :doc:`msd ` - mean-squared displacement of group of atoms * :doc:`msd/chunk ` - mean-squared displacement for each chunk @@ -279,6 +276,9 @@ The individual style names on the :doc:`Commands compute ` doc * :doc:`sna/atom ` - bispectrum components for each atom * :doc:`snad/atom ` - derivative of bispectrum components for each atom * :doc:`snav/atom ` - virial contribution from bispectrum components for each atom +* :doc:`sph/e/atom ` - per-atom internal energy of Smooth-Particle Hydrodynamics atoms +* :doc:`sph/rho/atom ` - per-atom density of Smooth-Particle Hydrodynamics atoms +* :doc:`sph/t/atom ` - per-atom internal temperature of Smooth-Particle Hydrodynamics atoms * :doc:`spin ` - magnetic quantities for a system of atoms having spins * :doc:`stress/atom ` - stress tensor for each atom * :doc:`stress/mop ` - normal components of the local stress tensor using the method of planes diff --git a/doc/src/compute_gyration_shape_chunk.rst b/doc/src/compute_gyration_shape_chunk.rst index 50dd4822ce..94904f757d 100644 --- a/doc/src/compute_gyration_shape_chunk.rst +++ b/doc/src/compute_gyration_shape_chunk.rst @@ -37,7 +37,7 @@ and the relative shape anisotropy, k: b = & l_y - l_x \\ k = & \frac{3}{2} \frac{l_x^2+l_y^2+l_z^2}{(l_x+l_y+l_z)^2} - \frac{1}{2} -where :math:`l_x` <= :math:`l_y` <= :math`l_z` are the three eigenvalues of the gyration tensor. A general description +where :math:`l_x` <= :math:`l_y` <= :math:`l_z` are the three eigenvalues of the gyration tensor. A general description of these parameters is provided in :ref:`(Mattice) ` while an application to polymer systems can be found in :ref:`(Theodorou) `. The asphericity is always non-negative and zero only when the three principal moments are equal. This zero condition is met when the distribution diff --git a/doc/src/compute_property_atom.rst b/doc/src/compute_property_atom.rst index 1643be8699..48b63ac860 100644 --- a/doc/src/compute_property_atom.rst +++ b/doc/src/compute_property_atom.rst @@ -67,8 +67,8 @@ Syntax .. parsed-literal:: PERI package per-atom properties: - vfrac = ??? - s0 = ??? + vfrac = volume fraction + s0 = max stretch of any bond a particle is part of .. parsed-literal:: @@ -81,11 +81,11 @@ Syntax .. parsed-literal:: USER-SPH package per-atom properties: - rho = ??? - drho = ??? - e = ??? - de = ??? - cv = ??? + rho = density of SPH particles + drho = change in density + e = energy + de = change in thermal energy + cv = heat capacity .. parsed-literal:: @@ -108,13 +108,17 @@ Description Define a computation that simply stores atom attributes for each atom in the group. This is useful so that the values can be used by other -:doc:`output commands ` that take computes as inputs. See -for example, the :doc:`compute reduce `, :doc:`fix ave/atom `, :doc:`fix ave/histo `, :doc:`fix ave/chunk `, and :doc:`atom-style variable ` -commands. +:doc:`output commands ` that take computes as inputs. +See for example, the :doc:`compute reduce `, :doc:`fix +ave/atom `, :doc:`fix ave/histo `, +:doc:`fix ave/chunk `, and :doc:`atom-style variable +` commands. -The list of possible attributes is the same as that used by the :doc:`dump custom ` command, which describes their meaning, with some -additional quantities that are only defined for certain :doc:`atom styles `. Basically, this augmented list gives an -input script access to any per-atom quantity stored by LAMMPS. +The list of possible attributes is the same as that used by the +:doc:`dump custom ` command, which describes their meaning, with +some additional quantities that are only defined for certain +:doc:`atom styles `. Basically, this augmented list gives +an input script access to any per-atom quantity stored by LAMMPS. The values are stored in a per-atom vector or array as discussed below. Zeroes are stored for atoms not in the specified group or for @@ -132,8 +136,9 @@ particles and body particles and store the 4-vector quaternion representing the orientation of each particle. See the :doc:`set ` command for an explanation of the quaternion vector. -*End1x*\ , *end1y*\ , *end1z*\ , *end2x*\ , *end2y*\ , *end2z*\ , are defined for -line segment particles and define the end points of each line segment. +*End1x*\ , *end1y*\ , *end1z*\ , *end2x*\ , *end2y*\ , *end2z*\ , are +defined for line segment particles and define the end points of each +line segment. *Corner1x*\ , *corner1y*\ , *corner1z*\ , *corner2x*\ , *corner2y*\ , *corner2z*\ , *corner3x*\ , *corner3y*\ , *corner3z*\ , are defined for @@ -144,14 +149,14 @@ number of explicit bonds assigned to an atom. Note that if the :doc:`newton bond ` command is set to *on*\ , which is the default, then every bond in the system is assigned to only one of the two atoms in the bond. Thus a bond between atoms I,J may be tallied -for either atom I or atom J. If :doc:`newton bond off ` is set, -it will be tallied with both atom I and atom J. +for either atom I or atom J. If :doc:`newton bond off ` is +set, it will be tallied with both atom I and atom J. The *i_name* and *d_name* attributes refer to custom integer and floating-point properties that have been added to each atom via the -:doc:`fix property/atom ` command. When that command -is used specific names are given to each attribute which are what is -specified as the "name" portion of *i_name* or *d_name*. +:doc:`fix property/atom ` command. When that +command is used specific names are given to each attribute which are +what is specified as the "name" portion of *i_name* or *d_name*. **Output info:** @@ -160,8 +165,8 @@ on the number of input values. If a single input is specified, a per-atom vector is produced. If two or more inputs are specified, a per-atom array is produced where the number of columns = the number of inputs. The vector or array can be accessed by any command that uses -per-atom values from a compute as input. See the :doc:`Howto output ` doc page for an overview of LAMMPS output -options. +per-atom values from a compute as input. See the :doc:`Howto output +` doc page for an overview of LAMMPS output options. The vector or array values will be in whatever :doc:`units ` the corresponding attribute is in, e.g. velocity units for vx, charge @@ -178,7 +183,8 @@ Restrictions Related commands """""""""""""""" -:doc:`dump custom `, :doc:`compute reduce `, :doc:`fix ave/atom `, :doc:`fix ave/chunk `, -:doc:`fix property/atom ` +:doc:`dump custom `, :doc:`compute reduce `, +:doc::doc:`fix ave/atom `, :doc:`fix ave/chunk +:doc:`, `fix property/atom ` **Default:** none diff --git a/doc/src/compute_meso_e_atom.rst b/doc/src/compute_sph_e_atom.rst similarity index 81% rename from doc/src/compute_meso_e_atom.rst rename to doc/src/compute_sph_e_atom.rst index ad8e46cafb..f35976ed10 100644 --- a/doc/src/compute_meso_e_atom.rst +++ b/doc/src/compute_sph_e_atom.rst @@ -1,6 +1,6 @@ -.. index:: compute meso/e/atom +.. index:: compute sph/e/atom -compute meso/e/atom command +compute sph/e/atom command =========================== Syntax @@ -8,17 +8,17 @@ Syntax .. parsed-literal:: - compute ID group-ID meso/e/atom + compute ID group-ID sph/e/atom * ID, group-ID are documented in :doc:`compute ` command -* meso/e/atom = style name of this compute command +* sph/e/atom = style name of this compute command Examples """""""" .. code-block:: LAMMPS - compute 1 all meso/e/atom + compute 1 all sph/e/atom Description """"""""""" @@ -27,8 +27,8 @@ Define a computation that calculates the per-atom internal energy for each atom in a group. The internal energy is the energy associated with the internal degrees -of freedom of a mesoscopic particles, e.g. a Smooth-Particle -Hydrodynamics particle. +of freedom of an SPH particle, i.e. a Smooth-Particle Hydrodynamics +particle. See `this PDF guide `_ to using SPH in LAMMPS. diff --git a/doc/src/compute_meso_rho_atom.rst b/doc/src/compute_sph_rho_atom.rst similarity index 64% rename from doc/src/compute_meso_rho_atom.rst rename to doc/src/compute_sph_rho_atom.rst index d4611c5cb7..4237bf0bf5 100644 --- a/doc/src/compute_meso_rho_atom.rst +++ b/doc/src/compute_sph_rho_atom.rst @@ -1,6 +1,6 @@ -.. index:: compute meso/rho/atom +.. index:: compute sph/rho/atom -compute meso/rho/atom command +compute sph/rho/atom command ============================= Syntax @@ -8,32 +8,31 @@ Syntax .. parsed-literal:: - compute ID group-ID meso/rho/atom + compute ID group-ID sph/rho/atom * ID, group-ID are documented in :doc:`compute ` command -* meso/rho/atom = style name of this compute command +* sph/rho/atom = style name of this compute command Examples """""""" .. code-block:: LAMMPS - compute 1 all meso/rho/atom + compute 1 all sph/rho/atom Description """"""""""" -Define a computation that calculates the per-atom mesoscopic density -for each atom in a group. +Define a computation that calculates the per-atom SPH density for each +atom in a group, i.e. a Smooth-Particle Hydrodynamics density. -The mesoscopic density is the mass density of a mesoscopic particle, -calculated by kernel function interpolation using "pair style -sph/rhosum". +The SPH density is the mass density of an SPH particle, calculated by +kernel function interpolation using "pair style sph/rhosum". See `this PDF guide `_ to using SPH in LAMMPS. -The value of the mesoscopic density will be 0.0 for atoms not in the +The value of the SPH density will be 0.0 for atoms not in the specified compute group. **Output info:** diff --git a/doc/src/compute_meso_t_atom.rst b/doc/src/compute_sph_t_atom.rst similarity index 79% rename from doc/src/compute_meso_t_atom.rst rename to doc/src/compute_sph_t_atom.rst index e44425a65c..1766e1d712 100644 --- a/doc/src/compute_meso_t_atom.rst +++ b/doc/src/compute_sph_t_atom.rst @@ -1,6 +1,6 @@ -.. index:: compute meso/t/atom +.. index:: compute sph/t/atom -compute meso/t/atom command +compute sph/t/atom command =========================== Syntax @@ -8,17 +8,17 @@ Syntax .. parsed-literal:: - compute ID group-ID meso/t/atom + compute ID group-ID sph/t/atom * ID, group-ID are documented in :doc:`compute ` command -* meso/t/atom = style name of this compute command +* sph/t/atom = style name of this compute command Examples """""""" .. code-block:: LAMMPS - compute 1 all meso/t/atom + compute 1 all sph/t/atom Description """"""""""" @@ -27,8 +27,8 @@ Define a computation that calculates the per-atom internal temperature for each atom in a group. The internal temperature is the ratio of internal energy over the heat -capacity associated with the internal degrees of freedom of a mesoscopic -particles, e.g. a Smooth-Particle Hydrodynamics particle. +capacity associated with the internal degrees of freedom of an SPH +particles, i.e. a Smooth-Particle Hydrodynamics particle. .. math:: diff --git a/doc/src/dump_modify.rst b/doc/src/dump_modify.rst index 75fff9d444..ce0ade4789 100644 --- a/doc/src/dump_modify.rst +++ b/doc/src/dump_modify.rst @@ -552,9 +552,9 @@ 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. I.e. for *real* units, LAMMPS defines *sfactor* = 0.1 and *tfactor* = 0.001, since the -Angstroms and fmsec used by *real* units are 0.1 nm and 0.001 psec +Angstroms and fs used by *real* units are 0.1 nm and 0.001 ps respectively. If you are using a units system with distance and time -units far from nm and psec, you may wish to write XTC files with +units far from nm and ps, you may wish to write XTC files with different units, since the compression algorithm used in XTC files is most effective when the typical magnitude of position data is between 10.0 and 0.1. diff --git a/doc/src/fix.rst b/doc/src/fix.rst index cb2e4bb5b1..2b7720716d 100644 --- a/doc/src/fix.rst +++ b/doc/src/fix.rst @@ -238,9 +238,7 @@ accelerated styles exist. * :doc:`lb/viscous ` - * :doc:`lineforce ` - constrain atoms to move in a line * :doc:`manifoldforce ` - restrain atoms to a manifold during minimization -* :doc:`meso ` - time integration for SPH/DPDE particles * :doc:`meso/move ` - move mesoscopic SPH/SDPD particles in a prescribed fashion -* :doc:`meso/stationary ` - * :doc:`momentum ` - zero the linear and/or angular momentum of a group of atoms * :doc:`move ` - move atoms in a prescribed fashion * :doc:`mscg ` - apply MSCG method for force-matching to generate coarse grain models @@ -292,6 +290,7 @@ accelerated styles exist. * :doc:`oneway ` - constrain particles on move in one direction * :doc:`orient/bcc ` - add grain boundary migration force for BCC * :doc:`orient/fcc ` - add grain boundary migration force for FCC +* :doc:`orient/eco ` - add generalized grain boundary migration force * :doc:`phonon ` - calculate dynamical matrix from MD simulations * :doc:`pimd ` - Feynman path integral molecular dynamics * :doc:`planeforce ` - constrain atoms to move in a plane @@ -345,6 +344,8 @@ accelerated styles exist. * :doc:`smd/move_tri_surf ` - * :doc:`smd/setvel ` - * :doc:`smd/wall_surface ` - +* :doc:`sph ` - time integration for SPH/DPDE particles +* :doc:`sph/stationary ` - * :doc:`spring ` - apply harmonic spring force to group of atoms * :doc:`spring/chunk ` - apply harmonic spring force to each chunk of atoms * :doc:`spring/rg ` - spring on radius of gyration of group of atoms diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst old mode 100755 new mode 100644 index fc260de324..d5f917bfdb --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -300,7 +300,8 @@ either 'none' or 'charges.' Further details are provided in the discussion of the 'update_edges' keyword. The fifth optional section begins with the keyword 'Constraints' and lists additional criteria that must be satisfied in order for the reaction to occur. Currently, -there are four types of constraints available, as discussed below. +there are four types of constraints available, as discussed below: +'distance', 'angle', 'dihedral', and 'arrhenius'. A sample map file is given below: @@ -353,8 +354,9 @@ has syntax as follows: distance *ID1* *ID2* *rmin* *rmax* where 'distance' is the required keyword, *ID1* and *ID2* are -pre-reaction atom IDs, and these two atoms must be separated by a -distance between *rmin* and *rmax* for the reaction to occur. +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: @@ -363,11 +365,11 @@ The constraint of type 'angle' has the following syntax: angle *ID1* *ID2* *ID3* *amin* *amax* where 'angle' is the required keyword, *ID1*\ , *ID2* and *ID3* are -pre-reaction atom IDs, 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. +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: @@ -376,15 +378,23 @@ The constraint of type 'dihedral' has the following syntax: dihedral *ID1* *ID2* *ID3* *ID4* *amin* *amax* *amin2* *amax2* where 'dihedral' is the required keyword, and *ID1*\ , *ID2*\ , *ID3* -and *ID4* are pre-reaction atom IDs. Dihedral angles are calculated in -the interval (-180,180]. 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 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. +and *ID4* are pre-reaction atom IDs (or molecule-fragment IDs, see +below). Dihedral angles are calculated in the interval (-180,180]. +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 +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. + +For the 'distance', 'angle', and 'dihedral' constraints (explained +above), atom IDs can be replaced by pre-reaction molecule-fragment +IDs. The molecule-fragment ID must begin with a letter. The location +of the ID is the geometric center of all atom positions in the +fragment. The molecule fragment must have been defined in the +:doc:`molecule ` command for the pre-reaction template. The constraint of type 'arrhenius' imposes an additional reaction probability according to the temperature-dependent Arrhenius equation: diff --git a/doc/src/fix_deform.rst b/doc/src/fix_deform.rst index 75fc6cc5c9..f5511be692 100644 --- a/doc/src/fix_deform.rst +++ b/doc/src/fix_deform.rst @@ -154,8 +154,8 @@ specified in units of distance/time. This is effectively a "constant engineering strain rate", where rate = V/L0 and L0 is the initial box length. The distance can be in lattice or box distance units. See the discussion of the units keyword below. For example, if the -initial box length is 100 Angstroms, and V is 10 Angstroms/psec, then -after 10 psec, the box length will have doubled. After 20 psec, it +initial box length is 100 Angstroms, and V is 10 Angstroms/ps, then +after 10 ps, the box length will have doubled. After 20 ps, it will have tripled. The *erate* style changes a dimension of the box at a "constant @@ -174,7 +174,7 @@ function of time will change as where dt is the elapsed time (in time units). Thus if *erate* R is specified as 0.1 and time units are picoseconds, this means the box length will increase by 10% of its original length every picosecond. -I.e. strain after 1 psec = 0.1, strain after 2 psec = 0.2, etc. R = +I.e. strain after 1 ps = 0.1, strain after 2 ps = 0.2, etc. R = -0.01 means the box length will shrink by 1% of its original length every picosecond. Note that for an "engineering" rate the change is based on the original box length, so running with R = 1 for 10 @@ -201,7 +201,7 @@ The box length L as a function of time will change as where dt is the elapsed time (in time units). Thus if *trate* R is specified as ln(1.1) and time units are picoseconds, this means the box length will increase by 10% of its current (not original) length -every picosecond. I.e. strain after 1 psec = 0.1, strain after 2 psec +every picosecond. I.e. strain after 1 ps = 0.1, strain after 2 ps = 0.21, etc. R = ln(2) or ln(3) means the box length will double or triple every picosecond. R = ln(0.99) means the box length will shrink by 1% of its current length every picosecond. Note that for a @@ -317,8 +317,8 @@ specified in units of distance/time. This is effectively an initial box length perpendicular to the direction of shear. The distance can be in lattice or box distance units. See the discussion of the units keyword below. For example, if the initial tilt factor -is 5 Angstroms, and the V is 10 Angstroms/psec, then after 1 psec, the -tilt factor will be 15 Angstroms. After 2 psec, it will be 25 +is 5 Angstroms, and the V is 10 Angstroms/ps, then after 1 ps, the +tilt factor will be 15 Angstroms. After 2 ps, it will be 25 Angstroms. The *erate* style changes a tilt factor at a "constant engineering @@ -342,9 +342,9 @@ box perpendicular to the shear direction (e.g. y box length for xy deformation), and dt is the elapsed time (in time units). Thus if *erate* R is specified as 0.1 and time units are picoseconds, this means the shear strain will increase by 0.1 every picosecond. I.e. if -the xy shear strain was initially 0.0, then strain after 1 psec = 0.1, -strain after 2 psec = 0.2, etc. Thus the tilt factor would be 0.0 at -time 0, 0.1\*ybox at 1 psec, 0.2\*ybox at 2 psec, etc, where ybox is the +the xy shear strain was initially 0.0, then strain after 1 ps = 0.1, +strain after 2 ps = 0.2, etc. Thus the tilt factor would be 0.0 at +time 0, 0.1\*ybox at 1 ps, 0.2\*ybox at 2 ps, etc, where ybox is the original y box length. R = 1 or 2 means the tilt factor will increase by 1 or 2 every picosecond. R = -0.01 means a decrease in shear strain by 0.01 every picosecond. @@ -373,7 +373,7 @@ where T0 is the initial tilt factor and dt is the elapsed time (in time units). Thus if *trate* R is specified as ln(1.1) and time units are picoseconds, this means the shear strain or tilt factor will increase by 10% every picosecond. I.e. if the xy shear strain was -initially 0.1, then strain after 1 psec = 0.11, strain after 2 psec = +initially 0.1, then strain after 1 ps = 0.11, strain after 2 ps = 0.121, etc. R = ln(2) or ln(3) means the tilt factor will double or triple every picosecond. R = ln(0.99) means the tilt factor will shrink by 1% every picosecond. Note that the change is continuous, so diff --git a/doc/src/fix_heat.rst b/doc/src/fix_heat.rst index 5bb6402d46..03596febd8 100644 --- a/doc/src/fix_heat.rst +++ b/doc/src/fix_heat.rst @@ -57,7 +57,7 @@ its current value(s) used to determine the flux. If *eflux* is a numeric constant or equal-style variable which evaluates to a scalar value, then *eflux* determines the change in aggregate energy -of the entire group of atoms per unit time, e.g. in eV/psec for +of the entire group of atoms per unit time, e.g. in eV/ps for :doc:`metal units `. In this case it is an "extensive" quantity, meaning its magnitude should be scaled with the number of atoms in the group. Note that since *eflux* also has per-time units (i.e. it is a diff --git a/doc/src/fix_langevin_drude.rst b/doc/src/fix_langevin_drude.rst index f361a88736..249c297c98 100644 --- a/doc/src/fix_langevin_drude.rst +++ b/doc/src/fix_langevin_drude.rst @@ -188,7 +188,7 @@ particles. *damp_com* is the characteristic time for reaching thermal equilibrium of the centers of mass. For example, a value of 100.0 means to relax the temperature of the centers of mass in a timespan of (roughly) 100 -time units (tau or fmsec or psec - see the :doc:`units ` +time units (tau or fs or ps - see the :doc:`units ` command). *damp_drude* is the characteristic time for reaching thermal equilibrium of the dipoles. It is typically a few timesteps. diff --git a/doc/src/fix_meso_move.rst b/doc/src/fix_meso_move.rst index a976c2de34..b1ea27e872 100644 --- a/doc/src/fix_meso_move.rst +++ b/doc/src/fix_meso_move.rst @@ -60,17 +60,19 @@ internal energy and extrapolated velocity are also updated. .. note:: - The particles affected by this fix should not be time integrated - by other fixes (e.g. :doc:`fix meso `, :doc:`fix meso/stationary `), since that will change their + The particles affected by this fix should not be time integrated by + other fixes (e.g. :doc:`fix sph `, :doc:`fix + sph/stationary `), since that will change their positions and velocities twice. .. note:: As particles move due to this fix, they will pass through periodic boundaries and be remapped to the other side of the simulation box, - just as they would during normal time integration (e.g. via the :doc:`fix meso ` command). It is up to you to decide whether periodic - boundaries are appropriate with the kind of particle motion you are - prescribing with this fix. + just as they would during normal time integration (e.g. via the + :doc:`fix sph ` command). It is up to you to decide + whether periodic boundaries are appropriate with the kind of + particle motion you are prescribing with this fix. .. note:: @@ -100,7 +102,7 @@ specified, *V* is the specified velocity vector with components specified. This style also sets the velocity of each particle to V = (Vx,Vy,Vz). If any of the velocity components is specified as NULL, then the position and velocity of that component is time integrated -the same as the :doc:`fix meso ` command would perform, using +the same as the :doc:`fix sph ` command would perform, using the corresponding force component on the particle. Note that the *linear* style is identical to using the *variable* @@ -128,7 +130,7 @@ elapsed since the fix was specified. This style also sets the velocity of each particle to the time derivative of this expression. If any of the amplitude components is specified as NULL, then the position and velocity of that component is time integrated the same as -the :doc:`fix meso ` command would perform, using the +the :doc:`fix sph ` command would perform, using the corresponding force component on the particle. Note that the *wiggle* style is identical to using the *variable* @@ -180,21 +182,21 @@ particle. Any of the 6 variables can be specified as NULL. If both the displacement and velocity variables for a particular x,y,z component are specified as NULL, then the position and velocity of that -component is time integrated the same as the :doc:`fix meso ` +component is time integrated the same as the :doc:`fix sph ` command would perform, using the corresponding force component on the -particle. If only the velocity variable for a component is specified as -NULL, then the displacement variable will be used to set the position -of the particle, and its velocity component will not be changed. If only -the displacement variable for a component is specified as NULL, then -the velocity variable will be used to set the velocity of the particle, -and the position of the particle will be time integrated using that -velocity. +particle. If only the velocity variable for a component is specified +as NULL, then the displacement variable will be used to set the +position of the particle, and its velocity component will not be +changed. If only the displacement variable for a component is +specified as NULL, then the velocity variable will be used to set the +velocity of the particle, and the position of the particle will be +time integrated using that velocity. The *units* keyword determines the meaning of the distance units used to define the *linear* velocity and *wiggle* amplitude and *rotate* origin. This setting is ignored for the *variable* style. A *box* value selects standard units as defined by the :doc:`units ` -command, e.g. velocity in Angstroms/fmsec and amplitude and position +command, e.g. velocity in Angstroms/fs and amplitude and position in Angstroms for units = real. A *lattice* value means the velocity units are in lattice spacings per time and the amplitude and position are in lattice spacings. The :doc:`lattice ` command must have @@ -236,17 +238,18 @@ Restrictions """""""""""" This fix is part of the USER-SDPD package. It is only enabled if -LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info. +LAMMPS was built with that package. See the :doc:`Build package +` doc page for more info. This fix requires that atoms store density and internal energy as -defined by the :doc:`atom_style meso ` command. +defined by the :doc:`atom_style sph ` command. All particles in the group must be mesoscopic SPH/SDPD particles. Related commands """""""""""""""" -:doc:`fix move `, :doc:`fix meso `, +:doc:`fix move `, :doc:`fix sph `, :doc:`displace_atoms ` Default diff --git a/doc/src/fix_move.rst b/doc/src/fix_move.rst index e9ebbd726b..84f7dbe965 100644 --- a/doc/src/fix_move.rst +++ b/doc/src/fix_move.rst @@ -193,7 +193,7 @@ The *units* keyword determines the meaning of the distance units used to define the *linear* velocity and *wiggle* amplitude and *rotate* origin. This setting is ignored for the *variable* style. A *box* value selects standard units as defined by the :doc:`units ` -command, e.g. velocity in Angstroms/fmsec and amplitude and position +command, e.g. velocity in Angstroms/fs and amplitude and position in Angstroms for units = real. A *lattice* value means the velocity units are in lattice spacings per time and the amplitude and position are in lattice spacings. The :doc:`lattice ` command must have diff --git a/doc/src/fix_nh.rst b/doc/src/fix_nh.rst old mode 100644 new mode 100755 index 6927b47fcb..9b73a8b4ed --- a/doc/src/fix_nh.rst +++ b/doc/src/fix_nh.rst @@ -46,7 +46,7 @@ Syntax .. parsed-literal:: - keyword = *temp* or *iso* or *aniso* or *tri* or *x* or *y* or *z* or *xy* or *yz* or *xz* or *couple* or *tchain* or *pchain* or *mtk* or *tloop* or *ploop* or *nreset* or *drag* or *dilate* or *scalexy* or *scaleyz* or *scalexz* or *flip* or *fixedpoint* or *update* + keyword = *temp* or *iso* or *aniso* or *tri* or *x* or *y* or *z* or *xy* or *yz* or *xz* or *couple* or *tchain* or *pchain* or *mtk* or *tloop* or *ploop* or *nreset* or *drag* or *ptemp* or *dilate* or *scalexy* or *scaleyz* or *scalexz* or *flip* or *fixedpoint* or *update* *temp* values = Tstart Tstop Tdamp Tstart,Tstop = external temperature at start/end of run Tdamp = temperature damping parameter (time units) @@ -69,6 +69,8 @@ Syntax *nreset* value = reset reference cell every this many timesteps *drag* value = Df Df = drag factor added to barostat/thermostat (0.0 = no drag) + *ptemp* value = Ttarget + Ttarget = target temperature for barostat *dilate* value = dilate-group-ID dilate-group-ID = only dilate atoms in this group due to barostat volume changes *scalexy* value = *yes* or *no* = scale xy with ly @@ -137,8 +139,8 @@ description below. The desired temperature at each timestep is a ramped value during the run from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in time units and determines how rapidly the temperature is relaxed. For example, a value of 10.0 means to relax -the temperature in a timespan of (roughly) 10 time units (e.g. tau or -fmsec or psec - see the :doc:`units ` command). The atoms in the +the temperature in a timespan of (roughly) 10 time units (e.g. :math:`\tau` +or fs or ps - see the :doc:`units ` command). The atoms in the fix group are the only ones whose velocities and positions are updated by the velocity/position update portion of the integration. @@ -195,8 +197,8 @@ simulation box must be triclinic, even if its initial tilt factors are For all barostat keywords, the *Pdamp* parameter operates like the *Tdamp* parameter, determining the time scale on which pressure is relaxed. For example, a value of 10.0 means to relax the pressure in -a timespan of (roughly) 10 time units (e.g. tau or fmsec or psec - see -the :doc:`units ` command). +a timespan of (roughly) 10 time units (e.g. :math:`\tau` or fs or ps +- see the :doc:`units ` command). .. note:: @@ -208,6 +210,28 @@ the :doc:`units ` command). time units, and that timesteps are NOT the same as time units for most :doc:`units ` settings. +The relaxation rate of the barostat is set by its inertia :math:`W`: + +.. math:: + + W = (N + 1) k T_{\rm target} P_{\rm damp}^2 + +where :math:`N` is the number of atoms, :math:`k` is the Boltzmann constant, +and :math:`T_{\rm target}` is the target temperature of the barostat :ref:`(Martyna) `. +If a thermostat is defined, :math:`T_{\rm target}` is the target temperature +of the thermostat. If a thermostat is not defined, :math:`T_{\rm target}` +is set to the current temperature of the system when the barostat is initialized. +If this temperature is too low the simulation will quit with an error. +Note: in previous versions of LAMMPS, :math:`T_{\rm target}` would default to +a value of 1.0 for *lj* units and 300.0 otherwise if the system had a temperature +of exactly zero. + +If a thermostat is not specified by this fix, :math:`T_{\rm target}` can be +manually specified using the *Ptemp* parameter. This may be useful if the +barostat is initialized when the current temperature does not reflect the +steady state temperature of the system. This keyword may also be useful in +athermal simulations where the temperature is not well defined. + Regardless of what atoms are in the fix group (the only atoms which are time integrated), a global pressure or stress tensor is computed for all atoms. Similarly, when the size of the simulation box is diff --git a/doc/src/fix_npt_cauchy.rst b/doc/src/fix_npt_cauchy.rst index 5e0188c574..14ad1e7715 100644 --- a/doc/src/fix_npt_cauchy.rst +++ b/doc/src/fix_npt_cauchy.rst @@ -103,8 +103,8 @@ description below. The desired temperature at each timestep is a ramped value during the run from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in time units and determines how rapidly the temperature is relaxed. For example, a value of 10.0 means to relax -the temperature in a timespan of (roughly) 10 time units (e.g. tau or -fmsec or psec - see the :doc:`units ` command). The atoms in the +the temperature in a timespan of (roughly) 10 time units (e.g. :math:`\tau` +or fs or ps - see the :doc:`units ` command). The atoms in the fix group are the only ones whose velocities and positions are updated by the velocity/position update portion of the integration. @@ -154,8 +154,8 @@ simulation box must be triclinic, even if its initial tilt factors are For all barostat keywords, the *Pdamp* parameter operates like the *Tdamp* parameter, determining the time scale on which pressure is relaxed. For example, a value of 10.0 means to relax the pressure in -a timespan of (roughly) 10 time units (e.g. tau or fmsec or psec - see -the :doc:`units ` command). +a timespan of (roughly) 10 time units (e.g. :math:`\tau` or fs or ps +- see the :doc:`units ` command). .. note:: diff --git a/doc/src/fix_nve_dotc_langevin.rst b/doc/src/fix_nve_dotc_langevin.rst index 88d15b9e17..5322d5bbb3 100644 --- a/doc/src/fix_nve_dotc_langevin.rst +++ b/doc/src/fix_nve_dotc_langevin.rst @@ -94,7 +94,7 @@ corresponds to T = 300 K. The *damp* parameter is specified in time units and determines how rapidly the temperature is relaxed. For example, a value of 0.03 means to relax the temperature in a timespan of (roughly) 0.03 time -units tau (see the :doc:`units ` command). +units :math:`\tau` (see the :doc:`units ` command). The damp factor can be thought of as inversely related to the viscosity of the solvent, i.e. a small relaxation time implies a high-viscosity solvent and vice versa. See the discussion about gamma diff --git a/doc/src/fix_orient.rst b/doc/src/fix_orient.rst index 8fdcc79ace..ca5ba83108 100644 --- a/doc/src/fix_orient.rst +++ b/doc/src/fix_orient.rst @@ -6,6 +6,9 @@ fix orient/fcc command fix orient/bcc command ====================== +Syntax +"""""" + .. parsed-literal:: fix ID group-ID orient/fcc nstats dir alat dE cutlo cuthi file0 file1 diff --git a/doc/src/fix_orient_eco.rst b/doc/src/fix_orient_eco.rst new file mode 100644 index 0000000000..ac324adf78 --- /dev/null +++ b/doc/src/fix_orient_eco.rst @@ -0,0 +1,154 @@ +.. index:: fix orient/eco + +fix orient/eco command +====================== + + +.. parsed-literal:: + + fix ID group-ID orient/eco u0 eta cutoff orientationsFile + + +* ID, group-ID are documented in fix command +* u0 = energy added to each atom (energy units) +* eta = cutoff value (usually 0.25) +* cutoff = cutoff radius for orientation parameter calculation +* orientationsFile = file that specifies orientation of each grain + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix gb all orient/eco 0.08 0.25 3.524 sigma5.ori + + +Description +""""""""""" + +The fix applies a synthetic driving force to a grain boundary which can +be used for the investigation of grain boundary motion. The affiliation +of atoms to either of the two grains forming the grain boundary is +determined from an orientation-dependent order parameter as described +in :ref:`(Ulomek) `. The potential energy of atoms is either increased by an amount +of 0.5*\ *u0* or -0.5*\ *u0* according to the orientation of the surrounding +crystal. This creates a potential energy gradient which pushes atoms near +the grain boundary to orient according to the energetically favorable +grain orientation. This fix is designed for applications in bicrystal system +with one grain boundary and open ends, or two opposite grain boundaries in +a periodic system. In either case, the entire system can experience a +displacement during the simulation which needs to be accounted for in the +evaluation of the grain boundary velocity. While the basic method is +described in :ref:`(Ulomek) `, the implementation follows the efficient +implementation from :ref:`(Schratt & Mohles) `. The synthetic potential energy added to an +atom j is given by the following formulas + +.. math:: + + w(|\vec{r}_{jk}|) = w_{jk} & = \left\{\begin{array}{lc} \frac{|\vec{r}_{jk}|^{4}}{r_{\mathrm{cut}}^{4}} + -2\frac{|\vec{r}_{jk}|^{2}}{r_{\mathrm{cut}}^{2}}+1, & |\vec{r}_{jk}|` +and :ref:`(Schratt & Mohles) `. + +The force on each atom is the negative gradient of the synthetic potential energy. It +depends on the surrounding of this atom. An atom far from the grain boundary does not +experience a synthetic force as its surrounding is that of an oriented single crystal +and thermal fluctuations are masked by the parameter *eta*\ . Near the grain boundary +however, the gradient is nonzero and synthetic force terms are computed. +The orientationsFile specifies the perfect oriented crystal basis vectors for the +two adjoining crystals. The first three lines (line=row vector) for the energetically penalized and the +last three lines for the energetically favored grain assuming *u0* is positive. For +negative *u0*, this is reversed. With the *cutoff* parameter, the size of the region around +each atom which is used in the order parameter computation is defined. The cutoff must be +smaller than the interaction range of the MD potential. It should at +least include the nearest neighbor shell. For high temperatures or low angle +grain boundaries, it might be beneficial to increase the cutoff in order to get a more +precise identification of the atoms surrounding. However, computation time will +increase as more atoms are considered in the order parameter and force computation. +It is also worth noting that the cutoff radius must not exceed the communication +distance for ghost atoms in LAMMPS. With orientationsFile, the +6 oriented crystal basis vectors is specified. Each line of the input file +contains the three components of a primitive lattice vector oriented according to +the grain orientation in the simulation box. The first (last) three lines correspond +to the primitive lattice vectors of the first (second) grain. An example for +a :math:`\Sigma\langle001\rangle` mis-orientation is given at the end. + +If no synthetic energy difference between the grains is created, :math:`u0=0`, the +force computation is omitted. In this case, still, the order parameter of the +driving force is computed and can be used to track the grain boundary motion throughout the +simulation. + + + +**Restart, fix_modify, output, run start/stop, minimize info:** + +No information about this fix is written to :doc: `binary restart files `. + +The :doc:`fix_modify ` *energy* option is supported by this fix to +add the potential energy of atom interactions with the grain boundary +driving force to the system's potential energy as part of thermodynamic output. +The total sum of added synthetic potential energy is computed and can be accessed +by various output options. The order parameter as well as the thermally masked +output parameter are stored in per-atom arrays and can also be accessed by various +:doc:`output commands `. + +No parameter of this fix can be used with the start/stop keywords of the run command. This fix is +not invoked during energy minimization. + + + +Restrictions +"""""""""""" + +This fix is part of the USER-MISC package. It is only enabled if LAMMPS was +built with that package. See the :doc:`Build package ` doc page for more info. + + + +Related commands +"""""""""""""""" + +:doc:`fix_modify ` + +:doc:`fix_orient ` + +**Default:** none + +---------- + +.. _Ulomek: + +**(Ulomek)** Ulomek, Brien, Foiles, Mohles, Modelling Simul. Mater. Sci. Eng. 23 (2015) 025007 + +.. _Schratt: + +**(Schratt & Mohles)** Schratt, Mohles. Comp. Mat. Sci. 182 (2020) 109774 + +---------- + + +For illustration purposes, here is an example file that specifies a +:math:`\Sigma=5 \langle 001 \rangle` tilt grain boundary. This is for a lattice constant of 3.52 Angstrom: + +.. parsed-literal:: + + sigma5.ori: + + 1.671685 0.557228 1.76212 + 0.557228 -1.671685 1.76212 + 2.228913 -1.114456 0.00000 + 0.557228 1.671685 1.76212 + 1.671685 -0.557228 1.76212 + 2.228913 1.114456 0.00000 + + diff --git a/doc/src/fix_poems.rst b/doc/src/fix_poems.rst index 1be7a90419..f9a0e72b3d 100644 --- a/doc/src/fix_poems.rst +++ b/doc/src/fix_poems.rst @@ -3,7 +3,8 @@ fix poems command ================= -Syntax: +Syntax +"""""" .. parsed-literal:: diff --git a/doc/src/fix_press_berendsen.rst b/doc/src/fix_press_berendsen.rst index 215ef81b02..f1366e0449 100644 --- a/doc/src/fix_press_berendsen.rst +++ b/doc/src/fix_press_berendsen.rst @@ -90,7 +90,7 @@ although you have the option to change that dimension via the :doc:`fix deform < For all barostat keywords, the *Pdamp* parameter determines the time scale on which pressure is relaxed. For example, a value of 10.0 means to relax the pressure in a timespan of (roughly) 10 time units -(tau or fmsec or psec - see the :doc:`units ` command). +(tau or fs or ps - see the :doc:`units ` command). .. note:: diff --git a/doc/src/fix_rhok.rst b/doc/src/fix_rhok.rst index 089c96dd50..be4780c7d8 100644 --- a/doc/src/fix_rhok.rst +++ b/doc/src/fix_rhok.rst @@ -3,6 +3,9 @@ fix rhok command ================ +Syntax +"""""" + .. parsed-literal:: fix ID group-ID rhok nx ny nz K a diff --git a/doc/src/fix_rigid.rst b/doc/src/fix_rigid.rst index 72ed56bab1..6fbd692f6a 100644 --- a/doc/src/fix_rigid.rst +++ b/doc/src/fix_rigid.rst @@ -429,8 +429,8 @@ that dimension via the :doc:`fix deform ` command. For all barostat keywords, the *Pdamp* parameter operates like the *Tdamp* parameter, determining the time scale on which pressure is relaxed. For example, a value of 10.0 means to relax the pressure in -a timespan of (roughly) 10 time units (e.g. tau or fmsec or psec - see -the :doc:`units ` command). +a timespan of (roughly) 10 time units (e.g. :math:`\tau` or fs or ps +- see the :doc:`units ` command). Regardless of what atoms are in the fix group (the only atoms which are time integrated), a global pressure or stress tensor is computed @@ -514,7 +514,7 @@ desired temperature at each timestep is a ramped value during the run from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in time units and determines how rapidly the temperature is relaxed. For example, a value of 100.0 means to relax the temperature in a timespan -of (roughly) 100 time units (tau or fmsec or psec - see the +of (roughly) 100 time units (:math:`\tau` or fs or ps - see the :doc:`units ` command). The random # *seed* must be a positive integer. @@ -539,7 +539,7 @@ timestep is a ramped value during the run from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in time units and determines how rapidly the temperature is relaxed. For example, a value of 100.0 means to relax the temperature in a timespan of (roughly) 100 time -units (tau or fmsec or psec - see the :doc:`units ` command). +units (tau or fs or ps - see the :doc:`units ` command). Nose/Hoover chains are used in conjunction with this thermostat. The *tparam* keyword can optionally be used to change the chain settings diff --git a/doc/src/fix_rigid_meso.rst b/doc/src/fix_rigid_meso.rst index c9a709175f..9961a871dc 100644 --- a/doc/src/fix_rigid_meso.rst +++ b/doc/src/fix_rigid_meso.rst @@ -75,19 +75,21 @@ internal energy and extrapolated velocity are also updated. .. note:: You should not update the particles in rigid bodies via other - time-integration fixes (e.g. :doc:`fix meso `, - :doc:`fix meso/stationary `), or you will have conflicting - updates to positions and velocities resulting in unphysical behavior in most - cases. When performing a hybrid simulation with some atoms in rigid bodies, - and some not, a separate time integration fix like :doc:`fix meso ` - should be used for the non-rigid particles. + time-integration fixes (e.g. :doc:`fix sph `, :doc:`fix + sph/stationary `), or you will have conflicting + updates to positions and velocities resulting in unphysical + behavior in most cases. When performing a hybrid simulation with + some atoms in rigid bodies, and some not, a separate time + integration fix like :doc:`fix sph ` should be used for + the non-rigid particles. .. note:: - These fixes are overkill if you simply want to hold a collection - of particles stationary or have them move with a constant velocity. To - hold particles stationary use :doc:`fix meso/stationary ` instead. If you would like to - move particles with a constant velocity use :doc:`fix meso/move `. + These fixes are overkill if you simply want to hold a collection of + particles stationary or have them move with a constant velocity. To + hold particles stationary use :doc:`fix sph/stationary + ` instead. If you would like to move particles + with a constant velocity use :doc:`fix meso/move `. .. warning:: @@ -346,7 +348,7 @@ package. It is only enabled if LAMMPS was built with both packages. See the :doc:`Build package ` doc page for more info. This fix requires that atoms store density and internal energy as -defined by the :doc:`atom_style meso ` command. +defined by the :doc:`atom_style sph ` command. All particles in the group must be mesoscopic SPH/SDPD particles. diff --git a/doc/src/fix_meso.rst b/doc/src/fix_sph.rst similarity index 78% rename from doc/src/fix_meso.rst rename to doc/src/fix_sph.rst index dc9f1cb991..7e9159cac4 100644 --- a/doc/src/fix_meso.rst +++ b/doc/src/fix_sph.rst @@ -1,6 +1,6 @@ -.. index:: fix meso +.. index:: fix sph -fix meso command +fix sph command ================ Syntax @@ -8,25 +8,26 @@ Syntax .. parsed-literal:: - fix ID group-ID meso + fix ID group-ID sph * ID, group-ID are documented in :doc:`fix ` command -* meso = style name of this fix command +* sph = style name of this fix command Examples """""""" .. code-block:: LAMMPS - fix 1 all meso + fix 1 all sph Description """"""""""" Perform time integration to update position, velocity, internal energy and local density for atoms in the group each timestep. This fix is -needed to time-integrate mesoscopic systems where particles carry -internal variables such as SPH or DPDE. +needed to time-integrate SPH systems where particles carry internal +variables such as internal energy. SPH stands for Smoothed Particle +Hydrodynamics. See `this PDF guide `_ to using SPH in LAMMPS. @@ -48,6 +49,6 @@ LAMMPS was built with that package. See the :doc:`Build package Related commands """""""""""""""" -"fix meso/stationary" +:doc:`fix sph/stationary ` **Default:** none diff --git a/doc/src/fix_meso_stationary.rst b/doc/src/fix_sph_stationary.rst similarity index 84% rename from doc/src/fix_meso_stationary.rst rename to doc/src/fix_sph_stationary.rst index 89c30ece14..cd0d3e4d73 100644 --- a/doc/src/fix_meso_stationary.rst +++ b/doc/src/fix_sph_stationary.rst @@ -1,6 +1,6 @@ -.. index:: fix meso/stationary +.. index:: fix sph/stationary -fix meso/stationary command +fix sph/stationary command =========================== Syntax @@ -8,17 +8,17 @@ Syntax .. parsed-literal:: - fix ID group-ID meso/stationary + fix ID group-ID sph/stationary * ID, group-ID are documented in :doc:`fix ` command -* meso = style name of this fix command +* sph = style name of this fix command Examples """""""" .. code-block:: LAMMPS - fix 1 boundary meso/stationary + fix 1 boundary sph/stationary Description """"""""""" @@ -27,7 +27,7 @@ Perform time integration to update internal energy and local density, but not position or velocity for atoms in the group each timestep. This fix is needed for SPH simulations to correctly time-integrate fixed boundary particles which constrain a fluid to a given region in -space. +space. SPH stands for Smoothed Particle Hydrodynamics. See `this PDF guide `_ to using SPH in LAMMPS. @@ -49,6 +49,6 @@ LAMMPS was built with that package. See the :doc:`Build package Related commands """""""""""""""" -"fix meso" +:doc:`fix sph ` **Default:** none diff --git a/doc/src/fix_temp_berendsen.rst b/doc/src/fix_temp_berendsen.rst index 4913efdf53..2774075827 100644 --- a/doc/src/fix_temp_berendsen.rst +++ b/doc/src/fix_temp_berendsen.rst @@ -45,7 +45,7 @@ The desired temperature at each timestep is a ramped value during the run from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in time units and determines how rapidly the temperature is relaxed. For example, a value of 100.0 means to relax the temperature in a timespan -of (roughly) 100 time units (tau or fmsec or psec - see the +of (roughly) 100 time units (tau or fs or ps - see the :doc:`units ` command). *Tstart* can be specified as an equal-style :doc:`variable `. diff --git a/doc/src/fix_temp_csvr.rst b/doc/src/fix_temp_csvr.rst index cd4e5dc88f..d8a8d3135a 100644 --- a/doc/src/fix_temp_csvr.rst +++ b/doc/src/fix_temp_csvr.rst @@ -59,7 +59,7 @@ The desired temperature at each timestep is a ramped value during the run from *Tstart* to *Tstop*\ . The *Tdamp* parameter is specified in time units and determines how rapidly the temperature is relaxed. For example, a value of 100.0 means to relax the temperature in a timespan -of (roughly) 100 time units (tau or fmsec or psec - see the +of (roughly) 100 time units (tau or fs or ps - see the :doc:`units ` command). *Tstart* can be specified as an equal-style :doc:`variable `. diff --git a/doc/src/fix_ti_spring.rst b/doc/src/fix_ti_spring.rst index 8bf5439e0d..258e380842 100644 --- a/doc/src/fix_ti_spring.rst +++ b/doc/src/fix_ti_spring.rst @@ -88,7 +88,7 @@ time: \lambda(\tau) = \tau -where tau is the scaled time variable *t/t_s*. The option *2* performs +where :math:`\tau` is the scaled time variable *t/t_s*. The option *2* performs the lambda switching at a rate defined by the following switching function diff --git a/doc/src/fix_wall_gran.rst b/doc/src/fix_wall_gran.rst index daf3152c34..fb986fb73e 100644 --- a/doc/src/fix_wall_gran.rst +++ b/doc/src/fix_wall_gran.rst @@ -45,7 +45,7 @@ Syntax radius = cylinder radius (distance units) * zero or more keyword/value pairs may be appended to args -* keyword = *wiggle* or *shear* +* keyword = *wiggle* or *shear* or *contacts* .. parsed-literal:: @@ -56,6 +56,9 @@ Syntax *shear* values = dim vshear dim = *x* or *y* or *z* vshear = magnitude of shear velocity (velocity units) + *contacts* value = none + generate contact information for each particle + Examples """""""" @@ -68,6 +71,7 @@ Examples fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping velocity region myBox fix 4 all wall/gran/region granular jkr 1e5 1500.0 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone fix 5 all wall/gran/region granular dmt 1e5 0.2 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall damping tsuji region myCone + fix 6 all wall/gran hooke 200000.0 NULL 50.0 NULL 0.5 0 xplane -10.0 10.0 contacts Description """"""""""" @@ -171,6 +175,7 @@ the clockwise direction for *vshear* > 0 or counter-clockwise for *vshear* < 0. In this case, *vshear* is the tangential velocity of the wall at whatever *radius* has been defined. + **Restart, fix_modify, output, run start/stop, minimize info:** This fix writes the shear friction state of atoms interacting with the @@ -181,11 +186,37 @@ info on how to re-specify a fix in an input script that reads a restart file, so that the operation of the fix continues in an uninterrupted fashion. -None of the :doc:`fix_modify ` options are relevant to this -fix. 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 `. +If the :code:`contacts` option is used, this fix generates a per-atom array +with 8 columns as output, containing the contact information for owned +particles (nlocal on each processor). All columns in this per-atom array will +be zero if no contact has occurred. The values of these columns are listed in +the following table: + ++-------+----------------------------------------------------+----------------+ +| Index | Value | Units | ++=======+====================================================+================+ +| 1 | 1.0 if particle is in contact with wall, | | +| | 0.0 otherwise | | ++-------+----------------------------------------------------+----------------+ +| 2 | Force :math:`f_x` exerted on the wall | force units | ++-------+----------------------------------------------------+----------------+ +| 3 | Force :math:`f_y` exerted on the wall | force units | ++-------+----------------------------------------------------+----------------+ +| 4 | Force :math:`f_z` exerted on the wall | force units | ++-------+----------------------------------------------------+----------------+ +| 5 | :math:`\Delta x` between wall surface and particle | distance units | ++-------+----------------------------------------------------+----------------+ +| 6 | :math:`\Delta y` between wall surface and particle | distance units | ++-------+----------------------------------------------------+----------------+ +| 7 | :math:`\Delta z` between wall surface and particle | distance units | ++-------+----------------------------------------------------+----------------+ +| 8 | Radius :math:`r` of atom | distance units | ++-------+----------------------------------------------------+----------------+ + +None of the :doc:`fix_modify ` options are relevant to this fix. +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 `. Restrictions """""""""""" diff --git a/doc/src/fix_wall_gran_region.rst b/doc/src/fix_wall_gran_region.rst index 620baa0942..ecf850f11e 100644 --- a/doc/src/fix_wall_gran_region.rst +++ b/doc/src/fix_wall_gran_region.rst @@ -8,7 +8,7 @@ Syntax .. parsed-literal:: - fix ID group-ID wall/gran/region fstyle fstyle_params wallstyle regionID + fix ID group-ID wall/gran/region fstyle fstyle_params wallstyle regionID keyword values ... * ID, group-ID are documented in :doc:`fix ` command * wall/region = style name of this fix command @@ -36,6 +36,12 @@ Syntax * wallstyle = region (see :doc:`fix wall/gran ` for options for other kinds of walls) * region-ID = region whose boundary will act as wall +* keyword = *contacts* + + .. parsed-literal:: + + *contacts* value = none + generate contact information for each particle Examples """""""" @@ -46,6 +52,7 @@ Examples fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping velocity region myBox fix 4 all wall/gran/region granular jkr 1e5 1500.0 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone fix 5 all wall/gran/region granular dmt 1e5 0.2 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall damping tsuji region myCone + fix wall all wall/gran/region hooke/history 1000.0 200.0 200.0 100.0 0.5 1 region myCone contacts Description """"""""""" @@ -215,11 +222,37 @@ uninterrupted fashion. use the same fix ID for fix wall/gran/region, but assign it a region with a different region ID. -None of the :doc:`fix_modify ` options are relevant to this -fix. 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 `. +If the :code:`contacts` option is used, this fix generates a per-atom array +with 8 columns as output, containing the contact information for owned +particles (nlocal on each processor). All columns in this per-atom array will +be zero if no contact has occurred. The values of these columns are listed in +the following table: + ++-------+----------------------------------------------------+----------------+ +| Index | Value | Units | ++=======+====================================================+================+ +| 1 | 1.0 if particle is in contact with wall, | | +| | 0.0 otherwise | | ++-------+----------------------------------------------------+----------------+ +| 2 | Force :math:`f_x` exerted on the wall | force units | ++-------+----------------------------------------------------+----------------+ +| 3 | Force :math:`f_y` exerted on the wall | force units | ++-------+----------------------------------------------------+----------------+ +| 4 | Force :math:`f_z` exerted on the wall | force units | ++-------+----------------------------------------------------+----------------+ +| 5 | :math:`\Delta x` between wall surface and particle | distance units | ++-------+----------------------------------------------------+----------------+ +| 6 | :math:`\Delta y` between wall surface and particle | distance units | ++-------+----------------------------------------------------+----------------+ +| 7 | :math:`\Delta z` between wall surface and particle | distance units | ++-------+----------------------------------------------------+----------------+ +| 8 | Radius :math:`r` of atom | distance units | ++-------+----------------------------------------------------+----------------+ + +None of the :doc:`fix_modify ` options are relevant to this fix. +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 `. Restrictions """""""""""" diff --git a/doc/src/kspace_modify.rst b/doc/src/kspace_modify.rst index afbe1b0043..afe3a8c381 100644 --- a/doc/src/kspace_modify.rst +++ b/doc/src/kspace_modify.rst @@ -145,16 +145,16 @@ parameters, see the :doc:`How-To ` discussion. The *fftbench* keyword applies only to PPPM. It is off by default. If this option is turned on, LAMMPS will perform a short FFT benchmark -computation and report its timings, and will thus finish a some seconds +computation and report its timings, and will thus finish some seconds later than it would if this option were off. ---------- The *force/disp/real* and *force/disp/kspace* keywords set the force -accuracy for the real and space computations for the dispersion part -of pppm/disp. As shown in :ref:`(Isele-Holder) `, optimal -performance and accuracy in the results is obtained when these values -are different. +accuracy for the real and reciprocal space computations for the dispersion +part of pppm/disp. As shown in :ref:`(Isele-Holder) `, +optimal performance and accuracy in the results is obtained when these +values are different. ---------- @@ -413,10 +413,10 @@ slab correction has also been extended to point dipole interactions ---------- The *force/disp/real* and *force/disp/kspace* keywords set the force -accuracy for the real and space computations for the dispersion part -of pppm/disp. As shown in :ref:`(Isele-Holder) `, optimal -performance and accuracy in the results is obtained when these values -are different. +accuracy for the real and reciprocal space computations for the dispersion +part of pppm/disp. As shown in :ref:`(Isele-Holder) `, +optimal performance and accuracy in the results is obtained when these +values are different. The *disp/auto* option controls whether the pppm/disp is allowed to generate PPPM parameters automatically. If set to *no*\ , parameters diff --git a/doc/src/pair_eam.rst b/doc/src/pair_eam.rst index 7384a4d54c..c93c694833 100644 --- a/doc/src/pair_eam.rst +++ b/doc/src/pair_eam.rst @@ -39,15 +39,9 @@ pair_style eam/alloy/opt command pair_style eam/cd command ========================= -pair_style eam/cd/omp command -============================= - pair_style eam/cd/old command ============================= -pair_style eam/cd/old/omp command -================================= - pair_style eam/fs command ========================= diff --git a/doc/src/pair_lubricate.rst b/doc/src/pair_lubricate.rst index 563b88920e..1d1d7fb94a 100644 --- a/doc/src/pair_lubricate.rst +++ b/doc/src/pair_lubricate.rst @@ -28,7 +28,9 @@ Syntax * flagHI (optional) = 0/1 to exclude/include 1/r hydrodynamic interactions * flagVF (optional) = 0/1 to exclude/include volume fraction corrections in the long-range isotropic terms -**Examples:** (all assume radius = 1) +Examples +"""""""" +(all assume radius = 1) .. code-block:: LAMMPS diff --git a/doc/src/pair_lubricateU.rst b/doc/src/pair_lubricateU.rst index 5b485746c8..0bb124b91e 100644 --- a/doc/src/pair_lubricateU.rst +++ b/doc/src/pair_lubricateU.rst @@ -22,7 +22,9 @@ Syntax * flagHI (optional) = 0/1 to exclude/include 1/r hydrodynamic interactions * flagVF (optional) = 0/1 to exclude/include volume fraction corrections in the long-range isotropic terms -**Examples:** (all assume radius = 1) +Examples +"""""""" +(all assume radius = 1) .. code-block:: LAMMPS diff --git a/doc/src/read_data.rst b/doc/src/read_data.rst index 642f930b9d..79f0e08fcb 100644 --- a/doc/src/read_data.rst +++ b/doc/src/read_data.rst @@ -107,11 +107,11 @@ command, after the third read_data command is used. The *add*\ , *offset*\ , *shift*\ , *extra*\ , and *group* keywords are useful in this context. -If a simulation box does not yet exist, the *add* keyword -cannot be used; the read_data command is being used for the first -time. If a simulation box does exist, due to using the -:doc:`create_box ` command, or a previous read_data command, -then the *add* keyword must be used. +If a simulation box does not yet exist, the *add* keyword cannot be +used; the read_data command is being used for the first time. If a +simulation box does exist, due to using the :doc:`create_box +` command, or a previous read_data command, then the *add* +keyword must be used. .. note:: @@ -571,68 +571,69 @@ appended to it, which indicate which image of a periodic simulation box the atom is in. These may be important to include for some kinds of analysis. -+------------+---------------------------------------------------------------------------+ -| angle | atom-ID molecule-ID atom-type x y z | -+------------+---------------------------------------------------------------------------+ -| atomic | atom-ID atom-type x y z | -+------------+---------------------------------------------------------------------------+ -| body | atom-ID atom-type bodyflag mass x y z | -+------------+---------------------------------------------------------------------------+ -| bond | atom-ID molecule-ID atom-type x y z | -+------------+---------------------------------------------------------------------------+ -| charge | atom-ID atom-type q x y z | -+------------+---------------------------------------------------------------------------+ -| dipole | atom-ID atom-type q x y z mux muy muz | -+------------+---------------------------------------------------------------------------+ -| dpd | atom-ID atom-type theta x y z | -+------------+---------------------------------------------------------------------------+ -| edpd | atom-ID atom-type edpd_temp edpd_cv x y z | -+------------+---------------------------------------------------------------------------+ -| mdpd | atom-ID atom-type rho x y z | -+------------+---------------------------------------------------------------------------+ -| tdpd | atom-ID atom-type x y z cc1 cc2 ... ccNspecies | -+------------+---------------------------------------------------------------------------+ -| electron | atom-ID atom-type q spin eradius x y z | -+------------+---------------------------------------------------------------------------+ -| ellipsoid | atom-ID atom-type ellipsoidflag density x y z | -+------------+---------------------------------------------------------------------------+ -| full | atom-ID molecule-ID atom-type q x y z | -+------------+---------------------------------------------------------------------------+ -| line | atom-ID molecule-ID atom-type lineflag density x y z | -+------------+---------------------------------------------------------------------------+ -| meso | atom-ID atom-type rho e cv x y z | -+------------+---------------------------------------------------------------------------+ -| molecular | atom-ID molecule-ID atom-type x y z | -+------------+---------------------------------------------------------------------------+ -| peri | atom-ID atom-type volume density x y z | -+------------+---------------------------------------------------------------------------+ -| smd | atom-ID atom-type molecule volume mass kernel-radius contact-radius x y z | -+------------+---------------------------------------------------------------------------+ -| sphere | atom-ID atom-type diameter density x y z | -+------------+---------------------------------------------------------------------------+ -| spin | atom-ID atom-type sp x y z spx spy spz | -+------------+---------------------------------------------------------------------------+ -| template | atom-ID molecule-ID template-index template-atom atom-type x y z | -+------------+---------------------------------------------------------------------------+ -| tri | atom-ID molecule-ID atom-type triangleflag density x y z | -+------------+---------------------------------------------------------------------------+ -| wavepacket | atom-ID atom-type charge spin eradius etag cs_re cs_im x y z | -+------------+---------------------------------------------------------------------------+ -| hybrid | atom-ID atom-type x y z sub-style1 sub-style2 ... | -+------------+---------------------------------------------------------------------------+ +.. list-table:: + + * - angle + - atom-ID molecule-ID atom-type x y z + * - atomic + - atom-ID atom-type x y z + * - body + - atom-ID atom-type bodyflag mass x y z + * - bond + - atom-ID molecule-ID atom-type x y z + * - charge + - atom-type q x y z + * - dipole + - atom-ID atom-type q x y z mux muy muz + * - dpd + - atom-ID atom-type theta x y z + * - edpd + - atom-ID atom-type edpd_temp edpd_cv x y z + * - electron + - atom-ID atom-type q spin eradius x y z + * - ellipsoid + - atom-ID atom-type ellipsoidflag density x y z + * - full + - atom-ID molecule-ID atom-type q x y z + * - line + - atom-ID molecule-ID atom-type lineflag density x y z + * - mdpd + - atom-ID atom-type rho x y z + * - molecular + - atom-ID molecule-ID atom-type x y z + * - peri + - atom-ID atom-type volume density x y z + * - smd + - atom-ID atom-type molecule volume mass kernel-radius contact-radius x0 y0 z0 x y z + * - sph + - atom-ID atom-type rho esph cv x y z + * - sphere + - atom-ID atom-type diameter density x y z + * - spin + - atom-ID atom-type x y z spx spy spz sp + * - tdpd + - atom-ID atom-type x y z cc1 cc2 ... ccNspecies + * - template + - atom-ID molecule-ID template-index template-atom atom-type x y z + * - tri + - atom-ID molecule-ID atom-type triangleflag density x y z + * - wavepacket + - atom-ID atom-type charge spin eradius etag cs_re cs_im x y z + * - hybrid + - atom-ID atom-type x y z sub-style1 sub-style2 ... The per-atom values have these meanings and units, listed alphabetically: * atom-ID = integer ID of atom * atom-type = type of atom (1-Ntype) * bodyflag = 1 for body particles, 0 for point particles -* cc = chemical concentration for tDPD particles for each species (mole/volume units) +* ccN = chemical concentration for tDPD particles for each species (mole/volume units) * contact-radius = ??? (distance units) * cs_re,cs_im = real/imaginary parts of wave packet coefficients * cv = heat capacity (need units) for SPH particles * density = density of particle (mass/distance\^3 or mass/distance\^2 or mass/distance units, depending on dimensionality of particle) * diameter = diameter of spherical atom (distance units) -* e = energy (need units) for SPH particles +* esph = energy (need units) for SPH particles * edpd_temp = temperature for eDPD particles (temperature units) * edpd_cv = volumetric heat capacity for eDPD particles (energy/temperature/volume units) * ellipsoidflag = 1 for ellipsoidal particles, 0 for point particles @@ -646,14 +647,15 @@ The per-atom values have these meanings and units, listed alphabetically: * q = charge on atom (charge units) * rho = density (need units) for SPH particles * spin = electron spin (+1/-1), 0 = nuclei, 2 = fixed-core, 3 = pseudo-cores (i.e. ECP) -* sp = norm of magnetic spin of atom (in number of Bohr magnetons) -* spx,spy,spz = components of magnetic spin of atom (adim normalized vector) +* sp = magnitude of magnetic spin of atom (Bohr magnetons) +* spx,spy,spz = components of magnetic spin of atom (unit vector) * template-atom = which atom within a template molecule the atom is * template-index = which molecule within the molecule template the atom is part of * theta = internal temperature of a DPD particle * triangleflag = 1 for triangular particles, 0 for point or spherical particles * volume = volume of Peridynamic particle (distance\^3 units) * x,y,z = coordinates of atom (distance units) +* x0,y0,z0 = original (strain-free) coordinates of atom (distance units) The units for these quantities depend on the unit style; see the :doc:`units ` command for details. @@ -715,17 +717,18 @@ as spheres when converting density to mass. However, they can also be modeled as 2d discs (circles) if the :doc:`set density/disc ` command is used to reset their mass after the read_data command is used. A *disc* keyword can also be used with time integration fixes, -such as :doc:`fix nve/sphere ` and :doc:`fix nvt/sphere ` to time integrate their motion as 2d +such as :doc:`fix nve/sphere ` and :doc:`fix +nvt/sphere ` to time integrate their motion as 2d discs (not 3d spheres), by changing their moment of inertia. -For atom_style hybrid, following the 5 initial values (ID,type,x,y,z), -specific values for each sub-style must be listed. The order of the -sub-styles is the same as they were listed in the -:doc:`atom_style ` command. The sub-style specific values -are those that are not the 5 standard ones (ID,type,x,y,z). For -example, for the "charge" sub-style, a "q" value would appear. For -the "full" sub-style, a "molecule-ID" and "q" would appear. These are -listed in the same order they appear as listed above. Thus if +For atom\_style hybrid, following the 5 initial values +(ID,type,x,y,z), specific values for each sub-style must be listed. +The order of the sub-styles is the same as they were listed in the +:doc:`atom_style ` command. The specific values for each +sub-style are those that are not the 5 standard ones (ID,type,x,y,z). +For example, for the "charge" sub-style, a "q" value would appear. +For the "full" sub-style, a "molecule-ID" and "q" would appear. These +are listed in the same order they appear as listed above. Thus if .. parsed-literal:: @@ -738,12 +741,14 @@ were used in the input script, each atom line would have these fields: atom-ID atom-type x y z q diameter density Note that if a non-standard value is defined by multiple sub-styles, -it must appear multiple times in the atom line. E.g. the atom line -for atom_style hybrid dipole full would list "q" twice: +it only appears once in the atom line. E.g. the atom line for +atom_style hybrid dipole full would list "q" only once, with the +dipole sub-style fields; "q" does not appear with the full sub-style +fields. .. parsed-literal:: - atom-ID atom-type x y z q mux muy myz molecule-ID q + atom-ID atom-type x y z q mux muy myz molecule-ID Atom lines specify the (x,y,z) coordinates of atoms. These can be inside or outside the simulation box. When the data file is read, @@ -1176,9 +1181,9 @@ pair style. See the :doc:`pair_style ` and :doc:`pair_coeff ` commands for details. Since pair coefficients for types I != J are not specified, these will be generated automatically by the pair style's mixing rule. See the -individual pair_style doc pages and the :doc:`pair_modify mix ` command for details. Pair coefficients can also -be set via the :doc:`pair_coeff ` command in the input -script. +individual pair_style doc pages and the :doc:`pair_modify mix +` command for details. Pair coefficients can also be set +via the :doc:`pair_coeff ` command in the input script. ---------- @@ -1200,15 +1205,15 @@ script. 3 3 0.022 2.35197 0.022 2.35197 3 5 0.022 2.35197 0.022 2.35197 -This section must have N\*(N+1)/2 lines where N = # of atom types. The -number and meaning of the coefficients are specific to the defined +This section must have N\*(N+1)/2 lines where N = # of atom types. +The number and meaning of the coefficients are specific to the defined pair style. See the :doc:`pair_style ` and :doc:`pair_coeff ` commands for details. Since pair coefficients for types I != J are all specified, these values will turn off the default mixing rule defined by the pair style. See the -individual pair_style doc pages and the :doc:`pair_modify mix ` command for details. Pair coefficients can also -be set via the :doc:`pair_coeff ` command in the input -script. +individual pair_style doc pages and the :doc:`pair_modify mix +` command for details. Pair coefficients can also be set +via the :doc:`pair_coeff ` command in the input script. ---------- diff --git a/doc/src/run_style.rst b/doc/src/run_style.rst index 474eab2b85..7bddb0efcd 100644 --- a/doc/src/run_style.rst +++ b/doc/src/run_style.rst @@ -150,8 +150,8 @@ timestep, angle interactions computed 4x, pair interactions computed The :doc:`timestep ` command sets the large timestep for the outermost rRESPA level. Thus if the 3 loop factors are "2 2 2" for -4-level rRESPA, and the outer timestep is set to 4.0 fmsec, then the -inner timestep would be 8x smaller or 0.5 fmsec. All other LAMMPS +4-level rRESPA, and the outer timestep is set to 4.0 fs, then the +inner timestep would be 8x smaller or 0.5 fs. All other LAMMPS commands that specify number of timesteps (e.g. :doc:`thermo ` for thermo output every N steps, :doc:`neigh_modify delay/every ` parameters, :doc:`dump ` every N steps, etc) refer to the outermost timesteps. @@ -213,10 +213,10 @@ With that caveat, a few rules-of-thumb may be useful in selecting simulations using the CHARMM or a similar all-atom force field, but the concepts are adaptable to other problems. Without SHAKE, bonds involving hydrogen atoms exhibit high-frequency vibrations and require -a timestep on the order of 0.5 fmsec in order to conserve energy. The +a timestep on the order of 0.5 fs in order to conserve energy. The relatively inexpensive force computations for the bonds, angles, -impropers, and dihedrals can be computed on this innermost 0.5 fmsec -step. The outermost timestep cannot be greater than 4.0 fmsec without +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 @@ -230,14 +230,14 @@ simulations: run_style respa 4 2 2 2 inner 2 4.5 6.0 middle 3 8.0 10.0 outer 4 With these settings, users can expect good energy conservation and -roughly a 2.5 fold speedup over the *verlet* style with a 0.5 fmsec +roughly a 2.5 fold speedup over the *verlet* style with a 0.5 fs timestep. If SHAKE is used with the *respa* style, time reversibility is lost, but substantially longer time steps can be achieved. For biomolecular simulations using the CHARMM or similar all-atom force field, bonds involving hydrogen atoms exhibit high frequency vibrations and require -a time step on the order of 0.5 fmsec in order to conserve energy. +a time step on the order of 0.5 fs in order to conserve energy. These high frequency modes also limit the outer time step sizes since the modes are coupled. It is therefore desirable to use SHAKE with respa in order to freeze out these high frequency motions and increase @@ -253,7 +253,7 @@ rRESPA: With these settings, users can expect good energy conservation and roughly a 1.5 fold speedup over the *verlet* style with SHAKE and a -2.0 fmsec timestep. +2.0 fs timestep. For non-biomolecular simulations, the *respa* style can be advantageous if there is a clear separation of time scales - fast and diff --git a/doc/src/set.rst b/doc/src/set.rst index 84792d1a58..b986e4b26f 100644 --- a/doc/src/set.rst +++ b/doc/src/set.rst @@ -13,7 +13,7 @@ Syntax * style = *atom* or *type* or *mol* or *group* or *region* * ID = atom ID range or type range or mol ID range or group ID or region ID * one or more keyword/value pairs may be appended -* keyword = *type* or *type/fraction* or *type/ratio* or *type/subset* or *mol* or *x* or *y* or *z* or *charge* or *dipole* or *dipole/random* or *quat* or *spin* or *spin/random* or *quat* or *quat/random* or *diameter* or *shape* or *length* or *tri* or *theta* or *theta/random* or *angmom* or *omega* or *mass* or *density* or *density/disc* or *volume* or *image* or *bond* or *angle* or *dihedral* or *improper* or *meso/e* or *meso/cv* or *meso/rho* or *smd/contact/radius* or *smd/mass/density* or *dpd/theta* or *edpd/temp* or *edpd/cv* or *cc* or *i_name* or *d_name* +* keyword = *type* or *type/fraction* or *type/ratio* or *type/subset* or *mol* or *x* or *y* or *z* or *charge* or *dipole* or *dipole/random* or *quat* or *spin* or *spin/random* or *quat* or *quat/random* or *diameter* or *shape* or *length* or *tri* or *theta* or *theta/random* or *angmom* or *omega* or *mass* or *density* or *density/disc* or *volume* or *image* or *bond* or *angle* or *dihedral* or *improper* or *sph/e* or *sph/cv* or *sph/rho* or *smd/contact/radius* or *smd/mass/density* or *dpd/theta* or *edpd/temp* or *edpd/cv* or *cc* or *i_name* or *d_name* .. parsed-literal:: @@ -94,11 +94,11 @@ Syntax *angle* value = angle type for all angles between selected atoms *dihedral* value = dihedral type for all dihedrals between selected atoms *improper* value = improper type for all impropers between selected atoms - *meso/e* value = energy of SPH particles (need units) + *sph/e* value = energy of SPH particles (need units) value can be an atom-style variable (see below) - *meso/cv* value = heat capacity of SPH particles (need units) + *sph/cv* value = heat capacity of SPH particles (need units) value can be an atom-style variable (see below) - *meso/rho* value = density of SPH particles (need units) + *sph/rho* value = density of SPH particles (need units) value can be an atom-style variable (see below) *smd/contact/radius* = radius for short range interactions, i.e. contact and friction value can be an atom-style variable (see below) @@ -299,29 +299,31 @@ for each particle set by this command. This keyword does not allow use of an atom-style variable. Keyword *diameter* sets the size of the selected atoms. The particles -must be finite-size spheres as defined by the :doc:`atom_style sphere ` command. The diameter of a particle can be -set to 0.0, which means they will be treated as point particles. Note -that this command does not adjust the particle mass, even if it was -defined with a density, e.g. via the :doc:`read_data ` -command. +must be finite-size spheres as defined by the :doc:`atom_style sphere +` command. The diameter of a particle can be set to 0.0, +which means they will be treated as point particles. Note that this +command does not adjust the particle mass, even if it was defined with +a density, e.g. via the :doc:`read_data ` command. Keyword *shape* sets the size and shape of the selected atoms. The -particles must be ellipsoids as defined by the :doc:`atom_style ellipsoid ` command. The *Sx*\ , *Sy*\ , *Sz* settings are -the 3 diameters of the ellipsoid in each direction. All 3 can be set -to the same value, which means the ellipsoid is effectively a sphere. -They can also all be set to 0.0 which means the particle will be -treated as a point particle. Note that this command does not adjust -the particle mass, even if it was defined with a density, e.g. via the -:doc:`read_data ` command. +particles must be ellipsoids as defined by the :doc:`atom_style +ellipsoid ` command. The *Sx*\ , *Sy*\ , *Sz* settings +are the 3 diameters of the ellipsoid in each direction. All 3 can be +set to the same value, which means the ellipsoid is effectively a +sphere. They can also all be set to 0.0 which means the particle will +be treated as a point particle. Note that this command does not +adjust the particle mass, even if it was defined with a density, +e.g. via the :doc:`read_data ` command. Keyword *length* sets the length of selected atoms. The particles -must be line segments as defined by the :doc:`atom_style line ` command. If the specified value is non-zero the -line segment is (re)set to a length = the specified value, centered -around the particle position, with an orientation along the x-axis. -If the specified value is 0.0, the particle will become a point -particle. Note that this command does not adjust the particle mass, -even if it was defined with a density, e.g. via the -:doc:`read_data ` command. +must be line segments as defined by the :doc:`atom_style line +` command. If the specified value is non-zero the line +segment is (re)set to a length = the specified value, centered around +the particle position, with an orientation along the x-axis. If the +specified value is 0.0, the particle will become a point particle. +Note that this command does not adjust the particle mass, even if it +was defined with a density, e.g. via the :doc:`read_data ` +command. Keyword *tri* sets the size of selected atoms. The particles must be triangles as defined by the :doc:`atom_style tri ` command. @@ -335,7 +337,8 @@ does not adjust the particle mass, even if it was defined with a density, e.g. via the :doc:`read_data ` command. Keyword *theta* sets the orientation of selected atoms. The particles -must be line segments as defined by the :doc:`atom_style line ` command. The specified value is used to set the +must be line segments as defined by the :doc:`atom_style line +` command. The specified value is used to set the orientation angle of the line segments with respect to the x axis. Keyword *theta/random* randomizes the orientation of theta for the @@ -346,44 +349,47 @@ regardless of how many processors are being used. This keyword does not allow use of an atom-style variable. Keyword *angmom* sets the angular momentum of selected atoms. The -particles must be ellipsoids as defined by the :doc:`atom_style ellipsoid ` command or triangles as defined by the -:doc:`atom_style tri ` command. The angular momentum vector -of the particles is set to the 3 specified components. +particles must be ellipsoids as defined by the :doc:`atom_style +ellipsoid ` command or triangles as defined by the +:doc:`atom_style tri ` command. The angular momentum +vector of the particles is set to the 3 specified components. Keyword *omega* sets the angular velocity of selected atoms. The -particles must be spheres as defined by the -:doc:`atom_style sphere ` command. The angular velocity -vector of the particles is set to the 3 specified components. +particles must be spheres as defined by the :doc:`atom_style sphere +` command. The angular velocity vector of the particles +is set to the 3 specified components. Keyword *mass* sets the mass of all selected particles. The particles must have a per-atom mass attribute, as defined by the -:doc:`atom_style ` command. See the "mass" command for how -to set mass values on a per-type basis. +:doc:`atom_style ` command. See the "mass" command for +how to set mass values on a per-type basis. Keyword *density* or *density/disc* also sets the mass of all selected particles, but in a different way. The particles must have a per-atom mass attribute, as defined by the :doc:`atom_style ` -command. If the atom has a radius attribute (see :doc:`atom_style sphere `) and its radius is non-zero, its mass is set -from the density and particle volume for 3d systems (the input density -is assumed to be in mass/distance\^3 units). For 2d, the default is -for LAMMPS to model particles with a radius attribute as spheres. +command. If the atom has a radius attribute (see :doc:`atom_style +sphere `) and its radius is non-zero, its mass is set from +the density and particle volume for 3d systems (the input density is +assumed to be in mass/distance\^3 units). For 2d, the default is for +LAMMPS to model particles with a radius attribute as spheres. However, if the *density/disc* keyword is used, then they can be modeled as 2d discs (circles). Their mass is set from the density and particle area (the input density is assumed to be in mass/distance\^2 units). -If the atom has a shape attribute (see :doc:`atom_style ellipsoid `) and its 3 shape parameters are non-zero, -then its mass is set from the density and particle volume (the input -density is assumed to be in mass/distance\^3 units). The -*density/disc* keyword has no effect; it does not (yet) treat 3d -ellipsoids as 2d ellipses. +If the atom has a shape attribute (see :doc:`atom_style ellipsoid +`) and its 3 shape parameters are non-zero, then its mass +is set from the density and particle volume (the input density is +assumed to be in mass/distance\^3 units). The *density/disc* keyword +has no effect; it does not (yet) treat 3d ellipsoids as 2d ellipses. -If the atom has a length attribute (see :doc:`atom_style line `) and its length is non-zero, then its mass is -set from the density and line segment length (the input density is -assumed to be in mass/distance units). If the atom has an area -attribute (see :doc:`atom_style tri `) and its area is -non-zero, then its mass is set from the density and triangle area (the -input density is assumed to be in mass/distance\^2 units). +If the atom has a length attribute (see :doc:`atom_style line +`) and its length is non-zero, then its mass is set from +the density and line segment length (the input density is assumed to +be in mass/distance units). If the atom has an area attribute (see +:doc:`atom_style tri `) and its area is non-zero, then its +mass is set from the density and triangle area (the input density is +assumed to be in mass/distance\^2 units). If none of these cases are valid, then the mass is set to the density value directly (the input density is assumed to be in mass units). @@ -399,14 +405,15 @@ defined. A value of 2 means add 2 box lengths to get the true value. A value of -1 means subtract 1 box length to get the true value. LAMMPS updates these flags as atoms cross periodic boundaries during the simulation. The flags can be output with atom snapshots via the -:doc:`dump ` command. If a value of NULL is specified for any of -nx,ny,nz, then the current image value for that dimension is unchanged. -For non-periodic dimensions only a value of 0 can be specified. -This command can be useful after a system has been equilibrated and -atoms have diffused one or more box lengths in various directions. -This command can then reset the image values for atoms so that they -are effectively inside the simulation box, e.g if a diffusion -coefficient is about to be measured via the :doc:`compute msd ` command. Care should be taken not to reset the +:doc:`dump ` command. If a value of NULL is specified for any +of nx,ny,nz, then the current image value for that dimension is +unchanged. For non-periodic dimensions only a value of 0 can be +specified. This command can be useful after a system has been +equilibrated and atoms have diffused one or more box lengths in +various directions. This command can then reset the image values for +atoms so that they are effectively inside the simulation box, e.g if a +diffusion coefficient is about to be measured via the :doc:`compute +msd ` command. Care should be taken not to reset the image flags of two atoms in a bond to the same value if the bond straddles a periodic boundary (rather they should be different by +/- 1). This will not affect the dynamics of a simulation, but may mess @@ -423,10 +430,10 @@ etc) was set by the *bond types* (\ *angle types*\ , etc) field in the header of the data file read by the :doc:`read_data ` command. These keywords do not allow use of an atom-style variable. -Keywords *meso/e*\ , *meso/cv*\ , and *meso/rho* set the energy, heat +Keywords *sph/e*\ , *sph/cv*\ , and *sph/rho* set the energy, heat capacity, and density of smoothed particle hydrodynamics (SPH) -particles. See `this PDF guide `_ to -using SPH in LAMMPS. +particles. See `this PDF guide `_ +to using SPH in LAMMPS. Keyword *smd/mass/density* sets the mass of all selected particles, but it is only applicable to the Smooth Mach Dynamics package diff --git a/doc/src/special_bonds.rst b/doc/src/special_bonds.rst index d00467b3e8..35b870442b 100644 --- a/doc/src/special_bonds.rst +++ b/doc/src/special_bonds.rst @@ -28,7 +28,8 @@ Syntax *angle* value = *yes* or *no* *dihedral* value = *yes* or *no* -Examples: +Examples +"""""""" .. code-block:: LAMMPS diff --git a/doc/src/timestep.rst b/doc/src/timestep.rst index 7ee090740a..e512eed1b2 100644 --- a/doc/src/timestep.rst +++ b/doc/src/timestep.rst @@ -46,22 +46,22 @@ Related commands Default """"""" -+--------------------------------+------------+-----------------------+ -| choice of :doc:`units ` | time units | default timestep size | -+--------------------------------+------------+-----------------------+ -| lj | tau | 0.005 tau | -+--------------------------------+------------+-----------------------+ -| real | fmsec | 1.0 fmsec | -+--------------------------------+------------+-----------------------+ -| metal | psec | 0.001 psec | -+--------------------------------+------------+-----------------------+ -| si | sec | 1.0e-8 sec (10 nsec) | -+--------------------------------+------------+-----------------------+ -| cgs | sec | 1.0e-8 sec (10 nsec) | -+--------------------------------+------------+-----------------------+ -| electron | fmsec | 0.001 fmsec | -+--------------------------------+------------+-----------------------+ -| micro | usec | 2.0 usec | -+--------------------------------+------------+-----------------------+ -| nano | nsec | 0.00045 nsec | -+--------------------------------+------------+-----------------------+ ++--------------------------------+---------------+-----------------------+ +| choice of :doc:`units ` | time units | default timestep size | ++--------------------------------+---------------+-----------------------+ +| lj | :math:`\tau` | 0.005 :math:`\tau` | ++--------------------------------+---------------+-----------------------+ +| real | fs | 1.0 fs | ++--------------------------------+---------------+-----------------------+ +| metal | ps | 0.001 ps | ++--------------------------------+---------------+-----------------------+ +| si | s | 1.0e-8 s (10 ns) | ++--------------------------------+---------------+-----------------------+ +| cgs | s | 1.0e-8 s (10 ns) | ++--------------------------------+---------------+-----------------------+ +| electron | fs | 0.001 fs | ++--------------------------------+---------------+-----------------------+ +| micro | :math:`\mu`\ s| 2.0 :math:`\mu`\ s | ++--------------------------------+---------------+-----------------------+ +| nano | ns | 0.00045 ns | ++--------------------------------+---------------+-----------------------+ diff --git a/doc/src/units.rst b/doc/src/units.rst index 95792f7edf..65638b541a 100644 --- a/doc/src/units.rst +++ b/doc/src/units.rst @@ -203,7 +203,7 @@ For style *nano*\ , these are the units: The units command also sets the timestep size and neighbor skin distance to default values for each style: -* For style *lj* these are dt = 0.005 tau and skin = 0.3 sigma. +* For style *lj* these are dt = 0.005 :math:`\tau` and skin = 0.3 :math:`\sigma`. * For style *real* these are dt = 1.0 femtoseconds and skin = 2.0 Angstroms. * For style *metal* these are dt = 0.001 picoseconds and skin = 2.0 Angstroms. * For style *si* these are dt = 1.0e-8 seconds and skin = 0.001 meters. diff --git a/doc/src/velocity.rst b/doc/src/velocity.rst index 59ce0a19f6..d8823d6b7e 100644 --- a/doc/src/velocity.rst +++ b/doc/src/velocity.rst @@ -225,8 +225,8 @@ body defined by the fix, as described above. The *units* keyword is used by *set* and *ramp*\ . If units = box, the velocities and coordinates specified in the velocity command are in the standard units described by the :doc:`units ` command -(e.g. Angstroms/fmsec for real units). If units = lattice, velocities -are in units of lattice spacings per time (e.g. spacings/fmsec) and +(e.g. Angstroms/fs for real units). If units = lattice, velocities +are in units of lattice spacings per time (e.g. spacings/fs) and coordinates are in lattice spacings. The :doc:`lattice ` command must have been previously used to define the lattice spacing. diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index ae8eee9b2a..a517ce290d 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -135,6 +135,7 @@ atan atc AtC ATC +athermal athomps atm atomeye @@ -223,6 +224,7 @@ Bfrac bgq Bh Bialke +bicrystal Biersack bigbig bigint @@ -284,6 +286,7 @@ br Branduardi Branicio brennan +Brien Brilliantov Broadwell Broglie @@ -327,6 +330,7 @@ ccache ccachepiecewise ccl ccmake +ccN ccNspecies CCu cd @@ -593,6 +597,7 @@ Derjaguin Derlet Deserno Destree +destructor detils Devanathan devel @@ -627,7 +632,6 @@ dipolar dir Direc dirname -disarmmd discoverable discretization discretized @@ -719,6 +723,7 @@ ebook ebt ec Ec +eco ecoul ecp Ecut @@ -833,6 +838,7 @@ Espanol Eshelby eshelby eskm +esph esu esub esw @@ -940,7 +946,6 @@ fmackay fmag fmass fmm -fmsec fmx fmy fmz @@ -1821,6 +1826,7 @@ Modine mofff MOFFF Mohd +Mohles mol Mol molfile @@ -1983,6 +1989,7 @@ Neumann Nevent nevery Nevery +newfile Newns newtype Neyts @@ -2075,9 +2082,9 @@ Nroff nrun Ns Nsample -nsec Nskip Nspecies +ns nsq Nstart nstats @@ -2161,6 +2168,7 @@ optimizations orangered organometallic orientational +orientationsFile orientorder Orlikowski ornl @@ -2350,7 +2358,6 @@ ps Ps pscreen pscrozi -psec pseudodynamics pseudopotential Pstart @@ -2455,6 +2462,7 @@ rdc rdf RDideal rdx +reacter README realtime reamin @@ -2626,6 +2634,7 @@ Schimansky Schiotz Schlitter Schmid +Schratt Schoen Schotte Schulten @@ -3038,6 +3047,7 @@ ul ulb Uleft uloop +Ulomek ulsph uMech umin diff --git a/examples/ASPHERE/line/in.line b/examples/ASPHERE/line/in.line index cd7fed1639..815eacfa35 100644 --- a/examples/ASPHERE/line/in.line +++ b/examples/ASPHERE/line/in.line @@ -10,7 +10,7 @@ velocity all create 1.44 320984 loop geom neighbor 0.3 bin neigh_modify delay 0 every 1 check yes -neigh_modify exclude molecule all +neigh_modify exclude molecule/intra all pair_style line/lj 2.5 pair_coeff * * 1.0 1.0 1.0 0.25 2.5 @@ -33,8 +33,10 @@ compute 2 all ke compute 3 all pe variable toteng equal (c_1+c_2+c_3)/atoms +compute_modify thermo_temp extra/dof -350 + thermo 1000 -thermo_style custom step temp f_2 pe ke c_1 c_2 c_3 v_toteng +thermo_style custom step f_2 pe ke c_1 c_2 c_3 v_toteng run 10000 diff --git a/examples/ASPHERE/line/in.line.srd b/examples/ASPHERE/line/in.line.srd index 4b89b14b4b..6ec1998d31 100644 --- a/examples/ASPHERE/line/in.line.srd +++ b/examples/ASPHERE/line/in.line.srd @@ -36,7 +36,7 @@ velocity small create 1.44 87287 loop geom neighbor 0.3 bin neigh_modify delay 0 every 1 check yes -neigh_modify exclude molecule big include big +neigh_modify exclude molecule/intra big include big comm_modify mode multi group big vel yes neigh_modify include big @@ -68,13 +68,15 @@ compute tbig big temp variable pebig equal pe*atoms/count(big) variable ebig equal etotal*atoms/count(big) +compute_modify tbig extra/dof -350 + compute 1 big erotate/asphere compute 2 all ke compute 3 all pe variable toteng equal (c_1+c_2+c_3)/atoms thermo 1000 -thermo_style custom step temp c_tsmall f_2[9] c_1 etotal & +thermo_style custom step c_tsmall f_2[9] c_1 etotal & v_pebig v_ebig press thermo_modify temp tbig diff --git a/examples/ASPHERE/tri/in.tri.srd b/examples/ASPHERE/tri/in.tri.srd index caff7f60dd..e7ef6ef59a 100644 --- a/examples/ASPHERE/tri/in.tri.srd +++ b/examples/ASPHERE/tri/in.tri.srd @@ -35,7 +35,7 @@ velocity small create 1.44 87287 loop geom neighbor 0.3 bin neigh_modify delay 0 every 1 check yes -neigh_modify exclude molecule big include big +neigh_modify exclude molecule/intra big include big comm_modify mode multi group big vel yes neigh_modify include big @@ -66,6 +66,8 @@ compute tbig big temp variable pebig equal pe*atoms/count(big) variable ebig equal etotal*atoms/count(big) +compute_modify tbig extra/dof -4500 + compute 1 big erotate/asphere compute 2 all ke compute 3 all pe diff --git a/examples/USER/dpd/dpd-shardlow/in.dpd-shardlow b/examples/USER/dpd/dpd-shardlow/in.dpd-shardlow index e6e46bc38c..6251623374 100644 --- a/examples/USER/dpd/dpd-shardlow/in.dpd-shardlow +++ b/examples/USER/dpd/dpd-shardlow/in.dpd-shardlow @@ -1,5 +1,5 @@ # Input File for DPD fluid under isothermal conditions using the VV-SSA integration scheme -log log.dpd-shardlow + boundary p p p units metal diff --git a/examples/USER/dpd/dpd-vv/in.dpd-vv b/examples/USER/dpd/dpd-vv/in.dpd-vv index 5360ca2431..6890c881d4 100644 --- a/examples/USER/dpd/dpd-vv/in.dpd-vv +++ b/examples/USER/dpd/dpd-vv/in.dpd-vv @@ -1,6 +1,5 @@ # INPUT FILE FOR DPD_Fluid -log log.dpd-vv boundary p p p units metal # ev, ps diff --git a/examples/USER/dpd/dpde-shardlow/in.dpde-shardlow b/examples/USER/dpd/dpde-shardlow/in.dpde-shardlow index 68361adfa5..c639bef9f2 100644 --- a/examples/USER/dpd/dpde-shardlow/in.dpde-shardlow +++ b/examples/USER/dpd/dpde-shardlow/in.dpde-shardlow @@ -1,5 +1,5 @@ # Input File for DPD fluid under isoenergetic conditions using the VV-SSA integration scheme -log log.dpde-shardlow + boundary p p p units metal # ev, ps diff --git a/examples/USER/dpd/dpde-vv/in.dpde-vv b/examples/USER/dpd/dpde-vv/in.dpde-vv index 3ffcf0ec07..52309682c3 100644 --- a/examples/USER/dpd/dpde-vv/in.dpde-vv +++ b/examples/USER/dpd/dpde-vv/in.dpde-vv @@ -1,6 +1,5 @@ # INPUT FILE FOR DPD_Fluid -log log.dpde-vv boundary p p p units metal # ev, ps diff --git a/examples/USER/dpd/dpdh-shardlow/in.dpdh-shardlow b/examples/USER/dpd/dpdh-shardlow/in.dpdh-shardlow index e403175e7a..5353085359 100644 --- a/examples/USER/dpd/dpdh-shardlow/in.dpdh-shardlow +++ b/examples/USER/dpd/dpdh-shardlow/in.dpdh-shardlow @@ -1,5 +1,5 @@ # Input File for DPD fluid under isoenthalpic conditions using the VV-SSA integration scheme -log log.dpdh-shardlow + boundary p p p units metal # ev, ps diff --git a/examples/USER/dpd/dpdp-shardlow/in.dpdp-shardlow b/examples/USER/dpd/dpdp-shardlow/in.dpdp-shardlow index 1d5eb5dd7d..93f26bd946 100644 --- a/examples/USER/dpd/dpdp-shardlow/in.dpdp-shardlow +++ b/examples/USER/dpd/dpdp-shardlow/in.dpdp-shardlow @@ -1,5 +1,5 @@ # Input File for DPD fluid under isobaric conditions using the VV-SSA integration scheme -log log.dpdp-shardlow + boundary p p p units metal diff --git a/examples/USER/dpd/dpdrx-shardlow/in.dpdrx-shardlow b/examples/USER/dpd/dpdrx-shardlow/in.dpdrx-shardlow index 815c974741..f93b316e14 100755 --- a/examples/USER/dpd/dpdrx-shardlow/in.dpdrx-shardlow +++ b/examples/USER/dpd/dpdrx-shardlow/in.dpdrx-shardlow @@ -1,6 +1,5 @@ # Example for running DPD-RX -log log.dpdrx-shardlow boundary p p p units metal # ev, ps atom_style dpd diff --git a/examples/USER/dpd/multi-lucy/in.multi-lucy b/examples/USER/dpd/multi-lucy/in.multi-lucy index 26d21f66ea..bb223e0a25 100644 --- a/examples/USER/dpd/multi-lucy/in.multi-lucy +++ b/examples/USER/dpd/multi-lucy/in.multi-lucy @@ -1,5 +1,5 @@ # RDX coarse-grain model -log log.multi-lucy + units metal # ev, ps atom_style dpd atom_modify map array diff --git a/examples/USER/eff/Auger-Adamantane/in.adamantane_ionized.nve b/examples/USER/eff/Auger-Adamantane/in.adamantane_ionized.nve index 77c7b0d465..edbe76beef 100644 --- a/examples/USER/eff/Auger-Adamantane/in.adamantane_ionized.nve +++ b/examples/USER/eff/Auger-Adamantane/in.adamantane_ionized.nve @@ -1,5 +1,4 @@ variable sname index adamantane_ionized -log ${sname}.nve.log units electron newton on diff --git a/examples/USER/eff/Be-solid/in.Be-solid.spe b/examples/USER/eff/Be-solid/in.Be-solid.spe index e7245cabbc..ce61a21f8c 100644 --- a/examples/USER/eff/Be-solid/in.Be-solid.spe +++ b/examples/USER/eff/Be-solid/in.Be-solid.spe @@ -1,5 +1,4 @@ variable sname index Be-solid -log ${sname}.spe.log units electron newton on diff --git a/examples/USER/eff/CH4/in.ch4.dynamics b/examples/USER/eff/CH4/in.ch4.dynamics index 2536fa8f48..cb06a1c8cf 100644 --- a/examples/USER/eff/CH4/in.ch4.dynamics +++ b/examples/USER/eff/CH4/in.ch4.dynamics @@ -1,5 +1,4 @@ variable sname index ch4 -log ${sname}.nve.log units electron newton on diff --git a/examples/USER/eff/CH4/in.ch4.min b/examples/USER/eff/CH4/in.ch4.min index 69b7c15bd4..df052c728e 100644 --- a/examples/USER/eff/CH4/in.ch4.min +++ b/examples/USER/eff/CH4/in.ch4.min @@ -1,5 +1,4 @@ variable sname index ch4 -log ${sname}.nve.log units electron newton on diff --git a/examples/USER/eff/CH4/in.ch4_ionized.dynamics b/examples/USER/eff/CH4/in.ch4_ionized.dynamics index 14f214296f..51ca071fc6 100644 --- a/examples/USER/eff/CH4/in.ch4_ionized.dynamics +++ b/examples/USER/eff/CH4/in.ch4_ionized.dynamics @@ -1,5 +1,4 @@ variable sname index ch4_ionized -log ${sname}.nvt.log units electron newton on @@ -15,6 +14,7 @@ pair_coeff * * comm_modify vel yes # minimize + min_style cg min_modify line quadratic minimize 0 1.0e-6 10000 100000 diff --git a/examples/USER/eff/H/in.h_atom.spe.ang b/examples/USER/eff/H/in.h_atom.spe.ang index 2493e273c4..85bedf5b59 100644 --- a/examples/USER/eff/H/in.h_atom.spe.ang +++ b/examples/USER/eff/H/in.h_atom.spe.ang @@ -1,5 +1,4 @@ variable sname index h_atom.ang -log ${sname}.spe.log units real newton on diff --git a/examples/USER/eff/H/in.h_atom.spe.bohr b/examples/USER/eff/H/in.h_atom.spe.bohr index 2f18ee4e43..91b39a70db 100644 --- a/examples/USER/eff/H/in.h_atom.spe.bohr +++ b/examples/USER/eff/H/in.h_atom.spe.bohr @@ -1,5 +1,4 @@ variable sname index h_atom.bohr -log ${sname}.spe.log units electron newton on diff --git a/examples/USER/eff/H2/in.h2 b/examples/USER/eff/H2/in.h2 index 8f4a63cc84..0c9dd620a3 100644 --- a/examples/USER/eff/H2/in.h2 +++ b/examples/USER/eff/H2/in.h2 @@ -1,5 +1,4 @@ variable sname index h2 -log ${sname}.spe.log units electron newton on @@ -47,4 +46,4 @@ unfix 3 #fix 1 all nve/eff -run 100000 +run 10000 diff --git a/examples/USER/eff/H_plasma/in.h2bulk.npt b/examples/USER/eff/H_plasma/in.h2bulk.npt index 6d9fc5d55f..55c3d9b16f 100644 --- a/examples/USER/eff/H_plasma/in.h2bulk.npt +++ b/examples/USER/eff/H_plasma/in.h2bulk.npt @@ -1,5 +1,4 @@ variable sname index h2bulk -log ${sname}.npt.log units electron newton on @@ -41,7 +40,8 @@ dump 2 all xyz 10000 ${sname}.npt.xyz compute 1 all property/atom spin eradius dump 3 all custom 10000 ${sname}.npt.lammpstrj id type x y z c_1[1] c_1[2] -run 10000000 +thermo 1 +run 10 unfix 1 undump 2 diff --git a/examples/USER/eff/H_plasma/in.h2bulk.nve b/examples/USER/eff/H_plasma/in.h2bulk.nve index 9786ff476f..32b724c539 100644 --- a/examples/USER/eff/H_plasma/in.h2bulk.nve +++ b/examples/USER/eff/H_plasma/in.h2bulk.nve @@ -1,5 +1,4 @@ variable sname index h2bulk -log ${sname}.nve.log units electron newton on @@ -18,13 +17,13 @@ comm_modify vel yes compute effTemp all temp/eff -thermo 1000 +thermo 10 thermo_style custom step pe temp press thermo_modify temp effTemp # structure minimization min_style cg -minimize 0 1.0e-4 1000 10000 +minimize 0 1.0e-4 10 10 timestep 0.001 @@ -41,7 +40,7 @@ dump 2 all xyz 1000 ${sname}.nve.xyz compute 1 all property/atom spin eradius dump 3 all custom 1000 ${sname}.nve.lammpstrj id type x y z c_1[1] c_1[2] c_peatom c_keatom -run 100000 +run 10 unfix 1 #unfix 2 diff --git a/examples/USER/eff/H_plasma/in.h2bulk.nve.ang b/examples/USER/eff/H_plasma/in.h2bulk.nve.ang index 4935e39be3..3377d63580 100644 --- a/examples/USER/eff/H_plasma/in.h2bulk.nve.ang +++ b/examples/USER/eff/H_plasma/in.h2bulk.nve.ang @@ -1,5 +1,4 @@ variable sname index h2bulk.ang -log ${sname}.nve.log units real newton on @@ -29,13 +28,13 @@ variable epauli equal c_energies[2] variable ecoul equal c_energies[3] variable erres equal c_energies[4] -thermo 100 +thermo 10 thermo_style custom step etotal pe ke v_eke v_epauli v_ecoul v_erres press v_press temp thermo_modify temp effTemp press effPress flush yes # structure minimization min_style cg -minimize 0 1.0e-4 1000 10000 +minimize 0 1.0e-4 10 10 timestep 0.001 @@ -52,7 +51,7 @@ dump 2 all xyz 1000 ${sname}.nve.xyz compute 1 all property/atom spin eradius dump 3 all custom 1000 ${sname}.nve.lammpstrj id type x y z c_1[1] c_1[2] c_peatom c_keatom -run 100000 +run 10 unfix 1 #unfix 2 diff --git a/examples/USER/eff/Li-dendritic/in.Li-dendritic.min b/examples/USER/eff/Li-dendritic/in.Li-dendritic.min index f791544e44..5dfa85e52c 100644 --- a/examples/USER/eff/Li-dendritic/in.Li-dendritic.min +++ b/examples/USER/eff/Li-dendritic/in.Li-dendritic.min @@ -1,5 +1,4 @@ variable sname index Li-dendritic -log ${sname}.min.log units electron newton on @@ -7,8 +6,8 @@ boundary p p p atom_style electron -#read_data data.${sname} -read_restart ${sname}.min.restart2 +read_data data.${sname} +#read_restart ${sname}.min.restart2 pair_style eff/cut 50.112 pair_coeff * * diff --git a/examples/USER/eff/Li-dendritic/in.Li-dendritic.nvt b/examples/USER/eff/Li-dendritic/in.Li-dendritic.nvt index 143e23cbc1..4203b50dde 100644 --- a/examples/USER/eff/Li-dendritic/in.Li-dendritic.nvt +++ b/examples/USER/eff/Li-dendritic/in.Li-dendritic.nvt @@ -1,5 +1,4 @@ variable sname index Li-dendritic -log ${sname}.min.log units electron newton on @@ -29,7 +28,7 @@ compute 1 all property/atom spin eradius #dump 1 all custom 100 ${sname}.min.lammpstrj id type x y z q c_1[1] c_1[2] #dump 2 all xyz 100 ${sname}.min.xyz min_modify line quadratic dmax 0.05 -minimize 0 1.0e-7 1000 2000 +minimize 0 1.0e-7 100 100 write_restart ${sname}.min.restart @@ -46,7 +45,7 @@ dump 1 all custom 100 ${sname}.nvt.lammpstrj id type x y z c_1[1] c_1 dump 2 all xyz 100 ${sname}.nvt.xyz restart 100 ${sname}.nvt.restart1 ${sname}.nvt.restart2 -run 10000 +run 100 undump 1 undump 2 diff --git a/examples/USER/eff/Li-solid/in.Li.ang b/examples/USER/eff/Li-solid/in.Li.ang index c9a726b88c..e4f5614c56 100644 --- a/examples/USER/eff/Li-solid/in.Li.ang +++ b/examples/USER/eff/Li-solid/in.Li.ang @@ -1,5 +1,4 @@ variable sname index Li.ang -log ${sname}.spe.log units real newton on @@ -46,13 +45,13 @@ fix 0 all temp/rescale/eff 1 10.0 3000.0 0.05 1.0 #fix 0 all langevin/eff 3000.0 3000.0 10.0 699483 fix 1 all nve/eff -run 1000 +run 200 unfix 0 unfix 1 fix 1 all nvt/eff temp 3000.0 3000.0 100.0 compute 1 all property/atom spin eradius ervel -dump 1 all custom 1000 ${sname}.nvt.lammpstrj id type q c_1[1] c_1[2] x y z vx vy vz c_1[3] +dump 1 all custom 500 ${sname}.nvt.lammpstrj id type q c_1[1] c_1[2] x y z vx vy vz c_1[3] -run 100000 +run 500 diff --git a/examples/USER/eff/Li-solid/in.Li.bohr b/examples/USER/eff/Li-solid/in.Li.bohr index 2843d3ca6a..2ff8b661d5 100644 --- a/examples/USER/eff/Li-solid/in.Li.bohr +++ b/examples/USER/eff/Li-solid/in.Li.bohr @@ -1,5 +1,4 @@ variable sname index Li.bohr -log ${sname}.spe.log units electron newton off @@ -35,15 +34,15 @@ thermo_style custom step etotal pe ke v_eke v_epauli v_estatics v_errestrain thermo_modify temp effTemp press effPress min_style cg -minimize 0 1e-6 100 2000 +minimize 0 1e-6 100 200 fix 0 all temp/rescale/eff 1 0.0 3000.0 0.02 0.5 fix 1 all npt/eff temp 3000.0 3000.0 0.1 iso 1e7 1e7 1.0 compute 1 all property/atom spin eradius -dump 1 all custom 1 ${sname}.spe.lammpstrj & +dump 1 all custom 100 ${sname}.spe.lammpstrj & id type q c_1[1] c_1[2] x y z -run 1000 +run 100 diff --git a/examples/USER/misc/orient_eco/Ni_u3.eam b/examples/USER/misc/orient_eco/Ni_u3.eam new file mode 120000 index 0000000000..0abe5fb328 --- /dev/null +++ b/examples/USER/misc/orient_eco/Ni_u3.eam @@ -0,0 +1 @@ +../../../../potentials/Ni_u3.eam \ No newline at end of file diff --git a/examples/USER/misc/orient_eco/data.sigma5 b/examples/USER/misc/orient_eco/data.sigma5 new file mode 100644 index 0000000000..2aa304ac31 --- /dev/null +++ b/examples/USER/misc/orient_eco/data.sigma5 @@ -0,0 +1,25615 @@ +LAMMPS data file via write_data, version 11 Aug 2017, timestep = 170 + +25600 atoms +1 atom types + +-9.0272007528377443e+01 9.0272007528377443e+01 xlo xhi +-4.4271887242357309e-07 8.8543774484714618e+01 ylo yhi +0.0000000000000000e+00 1.7500000000000000e+01 zlo zhi + +Masses + +1 58.6934 + +Atoms # atomic + +5 1 -8.8549511398478870e+01 3.6531717132860331e-01 1.7499998732846487e+00 0 0 0 +19 1 -8.7168423354721128e+01 2.5171135710013175e+00 1.7499999773840493e+00 0 0 0 +23 1 -8.4964194988220811e+01 1.4605520382760588e+00 1.7500000598226511e+00 0 0 0 +661 1 -8.6710922179900294e+01 9.1126210014280240e-01 3.4999999079331667e+00 0 0 0 +21 1 -8.6710922059184384e+01 9.1126227290462869e-01 5.6151978281463594e-08 0 0 0 +53 1 -8.2732309180707887e+01 3.7064027184641068e-01 1.7500000640808768e+00 0 0 0 +54 1 -8.1612971762044140e+01 2.5930093047709533e+00 1.7500000742808890e+00 0 0 0 +692 1 -8.1049144728475781e+01 9.3391028825038580e-01 3.5000000003264562e+00 0 0 0 +52 1 -8.1049144788282092e+01 9.3391029381095569e-01 1.0231549645769841e-07 0 0 0 +96 1 -7.9367523104372694e+01 1.4961522849280193e+00 1.7500000137980902e+00 0 0 0 +99 1 -7.7122771303279478e+01 3.9995317503395983e-01 1.7500000135692684e+00 0 0 0 +148 1 -7.6000494026816497e+01 2.6188841740767228e+00 1.7499999792002157e+00 0 0 0 +790 1 -7.5439350197023956e+01 9.6142332222415716e-01 3.5000000043231636e+00 0 0 0 +150 1 -7.5439350291330157e+01 9.6142328215235062e-01 1.7499999994192134e+01 0 0 -1 +152 1 -7.3755788962545566e+01 1.5228707988495349e+00 1.7499999893051552e+00 0 0 0 +204 1 -7.1511092651212422e+01 4.2684613145952965e-01 1.7499999892128653e+00 0 0 0 +205 1 -7.0388741924522975e+01 2.6458248366510180e+00 1.7499999863537039e+00 0 0 0 +256 1 -6.8144055451553641e+01 1.5497989159518299e+00 1.7499999527660659e+00 0 0 0 +843 1 -6.9827571216474581e+01 9.8832146192181469e-01 3.5000000153283928e+00 0 0 0 +203 1 -6.9827571285221396e+01 9.8832141397637840e-01 1.7499999941306502e+01 0 0 -1 +259 1 -6.5899367919271356e+01 4.5377269372510703e-01 1.7499999793103265e+00 0 0 0 +308 1 -6.4777023960241962e+01 2.6727522539014772e+00 1.7499999818630607e+00 0 0 0 +312 1 -6.2532335952063036e+01 1.5767256199514417e+00 1.7500000369562121e+00 0 0 0 +362 1 -6.0848819696442106e+01 2.1382020126929659e+00 8.3050963071751438e-08 0 0 0 +364 1 -6.0287647863643706e+01 4.8069893816252574e-01 1.7500000593170306e+00 0 0 0 +365 1 -5.9165303640979943e+01 2.6996783612487030e+00 1.7500000705451468e+00 0 0 0 +1002 1 -6.0848819696138101e+01 2.1382019951584446e+00 3.4999999922840139e+00 0 0 0 +416 1 -5.6920615493774321e+01 1.6036514712882981e+00 1.7500000351383167e+00 0 0 0 +1055 1 -5.5237099526608070e+01 2.1651278449610891e+00 3.5000000237331559e+00 0 0 0 +415 1 -5.5237099624674357e+01 2.1651278477739186e+00 1.1295657208213067e-08 0 0 0 +419 1 -5.4675927403889553e+01 5.0762459252938885e-01 1.7500000058295972e+00 0 0 0 +468 1 -5.3553583565239364e+01 2.7266039878954405e+00 1.7499999940419111e+00 0 0 0 +472 1 -5.1308895549693993e+01 1.6305772198277659e+00 1.7499999719017918e+00 0 0 0 +522 1 -4.9625379532419998e+01 2.1920534650261341e+00 1.7499999971082907e+01 0 0 -1 +524 1 -4.9064207451502519e+01 5.3455035079408508e-01 1.7499999869227165e+00 0 0 0 +523 1 -4.7380691467388687e+01 1.0960267992936328e+00 2.8432025085520858e-08 0 0 0 +525 1 -4.7941863555606659e+01 2.7535299033604499e+00 1.7500000216116050e+00 0 0 0 +574 1 -4.5697175495858993e+01 1.6575030832671696e+00 1.7500000488223775e+00 0 0 0 +3 1 -8.9214901869135701e+01 3.5993754460324028e+00 1.7499998930182252e+00 0 0 0 +15 1 -8.8549511240660252e+01 5.8993032258611304e+00 1.7499999845861662e+00 0 0 0 +20 1 -8.6132427537733932e+01 4.8013199943717488e+00 1.7500000423641313e+00 0 0 0 +49 1 -8.3862485839197248e+01 3.6926628700936561e+00 1.7500000841579255e+00 0 0 0 +658 1 -8.5523444824982406e+01 3.1251652205057803e+00 3.4999999422799468e+00 0 0 0 +687 1 -8.4431592165575225e+01 5.3473321763728272e+00 3.4999999745421486e+00 0 0 0 +18 1 -8.5523444795466560e+01 3.1251653520697400e+00 1.4225841142923533e-07 0 0 0 +47 1 -8.4431592194472088e+01 5.3473323050221717e+00 1.9249780666685839e-07 0 0 0 +50 1 -8.2732309238131734e+01 5.9046260067021290e+00 1.7500000949456240e+00 0 0 0 +92 1 -8.0489604645429509e+01 4.8104684717677992e+00 1.7500000358972021e+00 0 0 0 +97 1 -7.8245182007280647e+01 3.7148331136589601e+00 1.7499999947642169e+00 0 0 0 +731 1 -7.8805836178499703e+01 5.3722423862468442e+00 3.5000000085699092e+00 0 0 0 +734 1 -7.9929644935840045e+01 3.1537828026548875e+00 3.5000000005487943e+00 0 0 0 +91 1 -7.8805836339564195e+01 5.3722423866753903e+00 1.7499999984334529e+01 0 0 -1 +94 1 -7.9929645074252193e+01 3.1537828003527193e+00 6.9749213732296435e-08 0 0 0 +144 1 -7.7122771366901134e+01 5.9339386636343594e+00 1.7499999404231545e+00 0 0 0 +149 1 -7.4878100529707453e+01 4.8378812162046421e+00 1.7499999751535071e+00 0 0 0 +787 1 -7.4316921339791165e+01 3.1803597014116121e+00 3.5000000040991988e+00 0 0 0 +147 1 -7.4316921448571108e+01 3.1803596584696754e+00 1.7499999958787303e+01 0 0 -1 +200 1 -7.2633424865174334e+01 3.7418509410773764e+00 1.7499999681848284e+00 0 0 0 +201 1 -7.1511092492478923e+01 5.9608314881704816e+00 1.7499999764763641e+00 0 0 0 +838 1 -7.3194616898042483e+01 5.3993616074246038e+00 3.4999999769675663e+00 0 0 0 +198 1 -7.3194617023567886e+01 5.3993615679970945e+00 1.7499999980295982e+01 0 0 -1 +252 1 -6.9266401402799531e+01 4.8648051459174493e+00 1.7499999611034223e+00 0 0 0 +894 1 -6.8705228514073113e+01 3.2073023740689686e+00 3.4999999918053777e+00 0 0 0 +254 1 -6.8705228552496365e+01 3.2073023475380276e+00 1.7499999942244141e+01 0 0 -1 +257 1 -6.7021712332531607e+01 3.7687787768069883e+00 1.7499999706941545e+00 0 0 0 +304 1 -6.5899367497818133e+01 5.9877581122905070e+00 1.7499999683864755e+00 0 0 0 +306 1 -6.5338195854231671e+01 4.3302551901180681e+00 1.7499999964308209e+01 0 0 -1 +946 1 -6.5338195885663112e+01 4.3302551528317608e+00 3.5000000010324239e+00 0 0 0 +891 1 -6.7582883769335780e+01 5.4262812951933919e+00 3.4999999968158089e+00 0 0 0 +251 1 -6.7582883793371821e+01 5.4262813217253267e+00 1.7499999932438076e+01 0 0 -1 +309 1 -6.3654679606739123e+01 4.8917316289336723e+00 1.7500000172951733e+00 0 0 0 +360 1 -6.1409991616574182e+01 3.7957050785407938e+00 1.7500000466875123e+00 0 0 0 +359 1 -5.9726475537106836e+01 4.3571814625945473e+00 8.2334218242984726e-08 0 0 0 +361 1 -6.0287647450624370e+01 6.0146844684305485e+00 1.7500000746936535e+00 0 0 0 +412 1 -5.8042959399038331e+01 4.9186577932871742e+00 1.7500000638145188e+00 0 0 0 +999 1 -5.9726475498208650e+01 4.3571814460807508e+00 3.4999999939621107e+00 0 0 0 +417 1 -5.5798271474010093e+01 3.8226309118708786e+00 1.7500000201698185e+00 0 0 0 +464 1 -5.4675927250312391e+01 6.0416102394576585e+00 1.7499999924410741e+00 0 0 0 +466 1 -5.4114755504477401e+01 4.3841071627587986e+00 1.7499999975284684e+01 0 0 -1 +469 1 -5.2431239426286481e+01 4.9455833880456330e+00 1.7499999860670867e+00 0 0 0 +1106 1 -5.4114755403940180e+01 4.3841071786330490e+00 3.5000000326345297e+00 0 0 0 +520 1 -5.0186551573622516e+01 3.8495566102251639e+00 1.7499999937962532e+00 0 0 0 +521 1 -4.9064207627350285e+01 6.0685360784684574e+00 1.7499999871729317e+00 0 0 0 +519 1 -4.8503035637518551e+01 4.4110330471791839e+00 1.4210527286313401e-08 0 0 0 +571 1 -4.6819519699299626e+01 4.9725093627270907e+00 1.7500000237604894e+00 0 0 0 +573 1 -4.6258347633605524e+01 3.3150062058102514e+00 5.3112527538154891e-08 0 0 0 +11 1 -8.9214901379849024e+01 9.1333616043277139e+00 1.7500001243590906e+00 0 0 0 +16 1 -8.7168423475020546e+01 8.0510998611686020e+00 1.7500001246272225e+00 0 0 0 +653 1 -8.9045576419117836e+01 7.4987161098116353e+00 3.4999998775418404e+00 0 0 0 +13 1 -8.9045576369214828e+01 7.4987163467941320e+00 1.7639162684632221e-07 0 0 0 +45 1 -8.4964194862416178e+01 6.9945379267970935e+00 1.7500001114220551e+00 0 0 0 +46 1 -8.3862485678323907e+01 9.2266488131687137e+00 1.7500001343546923e+00 0 0 0 +88 1 -8.1612971740573840e+01 8.1269950549359908e+00 1.7500000627718706e+00 0 0 0 +684 1 -8.3289037723854690e+01 7.5633519269478349e+00 3.4999999981690761e+00 0 0 0 +44 1 -8.3289037878770912e+01 7.5633520099574119e+00 2.0593755337679529e-07 0 0 0 +93 1 -7.9367523095911196e+01 7.0301378670501844e+00 1.7500000038079442e+00 0 0 0 +140 1 -7.8245181860987216e+01 9.2488186325664028e+00 1.7499999667805393e+00 0 0 0 +782 1 -7.7684225800610591e+01 7.5915083086345421e+00 3.4999999992712314e+00 0 0 0 +142 1 -7.7684225961076436e+01 7.5915082894560308e+00 1.7499999962643372e+01 0 0 -1 +145 1 -7.6000493947921015e+01 8.1528696521644743e+00 1.7499999545667437e+00 0 0 0 +196 1 -7.3755788878224152e+01 7.0568562056738333e+00 1.7499999602605198e+00 0 0 0 +197 1 -7.2633424581567837e+01 9.2758362499404470e+00 1.7499999738785708e+00 0 0 0 +835 1 -7.2072254513728566e+01 7.6183300478839726e+00 3.4999999742337979e+00 0 0 0 +195 1 -7.2072254591349051e+01 7.6183300126529865e+00 1.7499999964132890e+01 0 0 -1 +248 1 -7.0388741549881601e+01 8.1798100920623735e+00 1.7499999543010962e+00 0 0 0 +253 1 -6.8144055077124818e+01 7.0837842266063502e+00 1.7499999685173699e+00 0 0 0 +300 1 -6.7021711781827690e+01 9.3027640684543282e+00 1.7499999839578617e+00 0 0 0 +305 1 -6.4777023466655152e+01 8.2067376430158578e+00 1.7500000238780276e+00 0 0 0 +942 1 -6.6460539678802462e+01 7.6452610905319887e+00 3.4999999932063051e+00 0 0 0 +302 1 -6.6460539713562852e+01 7.6452610779232417e+00 1.7499999971913343e+01 0 0 -1 +303 1 -6.4215851546117193e+01 6.5492347012865748e+00 2.0129453271061267e-09 0 0 0 +354 1 -6.3093507153092780e+01 8.7682141399022040e+00 8.7148677152423858e-09 0 0 0 +356 1 -6.2532335445520907e+01 7.1107111248285682e+00 1.7500000444935218e+00 0 0 0 +357 1 -6.1409991056496509e+01 9.3296904706481705e+00 1.7500000524274202e+00 0 0 0 +943 1 -6.4215851555981416e+01 6.5492346734292370e+00 3.4999999944443587e+00 0 0 0 +994 1 -6.3093507150361198e+01 8.7682140781294837e+00 3.5000000261523132e+00 0 0 0 +408 1 -5.9165303201330943e+01 8.2336639259481945e+00 1.7500000462229037e+00 0 0 0 +410 1 -5.8604131436808849e+01 6.5761608518684307e+00 6.1451793772107354e-08 0 0 0 +1050 1 -5.8604131364990963e+01 6.5761608444561777e+00 3.5000000142421004e+00 0 0 0 +413 1 -5.6920615190066705e+01 7.1376370646128580e+00 1.7500000452819544e+00 0 0 0 +460 1 -5.5798271110728408e+01 9.3566164383098158e+00 1.7500000079849287e+00 0 0 0 +1047 1 -5.7481787019014092e+01 8.7951401609939559e+00 3.4999999958733508e+00 0 0 0 +407 1 -5.7481787121936144e+01 8.7951401539674077e+00 3.1749353579258303e-08 0 0 0 +465 1 -5.3553583394364566e+01 8.2605895465370001e+00 1.7499999703108098e+00 0 0 0 +1103 1 -5.2992411380494197e+01 6.6030864689408482e+00 3.5000000216296843e+00 0 0 0 +1154 1 -5.1870067439573127e+01 8.8220658912466234e+00 3.5000000107272009e+00 0 0 0 +463 1 -5.2992411450983980e+01 6.6030864510644740e+00 1.7499999955349836e+01 0 0 -1 +514 1 -5.1870067482785672e+01 8.8220658528465492e+00 1.7499999946690941e+01 0 0 -1 +516 1 -5.1308895534252933e+01 7.1645628233774303e+00 1.7499999666916535e+00 0 0 0 +517 1 -5.0186551589012268e+01 9.3835422065076983e+00 1.7499999774066868e+00 0 0 0 +568 1 -4.7941863716491696e+01 8.2875155487186181e+00 1.7499999883131030e+00 0 0 0 +570 1 -4.7380691710937732e+01 6.6300125317022287e+00 4.2976287052862513e-09 0 0 0 +572 1 -4.5697175802998210e+01 7.1914888798753545e+00 1.7500000100835693e+00 0 0 0 +1207 1 -4.6258347859218837e+01 8.8489919354397966e+00 3.4999999881874153e+00 0 0 0 +567 1 -4.6258347882315597e+01 8.8489919400451953e+00 5.5378282958044832e-09 0 0 0 +12 1 -8.8549511169925054e+01 1.1433289305261740e+01 1.7500002149055189e+00 0 0 0 +650 1 -8.7753274284549988e+01 9.7762790061373490e+00 3.4999998551460161e+00 0 0 0 +10 1 -8.7753274374050378e+01 9.7762791476307367e+00 3.6387040860981675e-07 0 0 0 +41 1 -8.6132427416570778e+01 1.0335306075725519e+01 1.7500002019264320e+00 0 0 0 +679 1 -8.6710921847663684e+01 1.1979234253778118e+01 3.5000000004015868e+00 0 0 0 +39 1 -8.6710921927167959e+01 1.1979234417847431e+01 3.1388300806925729e-07 0 0 0 +84 1 -8.2732308987281556e+01 1.1438611912987803e+01 1.7500001161908307e+00 0 0 0 +723 1 -8.1049144402759154e+01 1.2001881697602890e+01 3.5000000548982411e+00 0 0 0 +726 1 -8.2176994692694862e+01 9.7844867764119119e+00 3.5000000438169190e+00 0 0 0 +83 1 -8.1049144622558018e+01 1.2001881706734853e+01 5.4975305368041132e-08 0 0 0 +86 1 -8.2176994898746500e+01 9.7844868194714874e+00 1.4340008784563124e-07 0 0 0 +89 1 -8.0489604492535349e+01 1.0344454205369525e+01 1.7500000413963568e+00 0 0 0 +141 1 -7.7122771058176596e+01 1.1467924153477302e+01 1.7499999502209422e+00 0 0 0 +192 1 -7.4878100254464783e+01 1.0371866576369284e+01 1.7499999375944510e+00 0 0 0 +779 1 -7.6561517142299451e+01 9.8103317099986018e+00 3.4999999704789366e+00 0 0 0 +830 1 -7.5439349776115932e+01 1.2029394140788009e+01 3.4999999763685339e+00 0 0 0 +139 1 -7.6561517277505502e+01 9.8103317122785345e+00 1.7499999940504161e+01 0 0 -1 +190 1 -7.5439349901389903e+01 1.2029394141428687e+01 1.7499999952572740e+01 0 0 -1 +244 1 -7.1511092037136734e+01 1.1494816742803595e+01 1.7499999678133842e+00 0 0 0 +886 1 -7.0949918228997547e+01 9.8373152270897144e+00 3.4999999994741122e+00 0 0 0 +246 1 -7.0949918328519033e+01 9.8373152185982402e+00 1.7499999961164900e+01 0 0 -1 +249 1 -6.9266400865556790e+01 1.0398790364717655e+01 1.7499999775509882e+00 0 0 0 +883 1 -6.9827570430226288e+01 1.2056291985637678e+01 3.4999999871563086e+00 0 0 0 +243 1 -6.9827570501026287e+01 1.2056291965941236e+01 1.7499999992926917e+01 0 0 -1 +301 1 -6.5899366929743394e+01 1.1521743361690818e+01 1.7499999949378078e+00 0 0 0 +351 1 -6.1971162958482914e+01 1.0987193503495092e+01 2.0284445828670852e-08 0 0 0 +352 1 -6.3654679038605046e+01 1.0425716988019975e+01 1.7500000011586985e+00 0 0 0 +991 1 -6.1971162916614148e+01 1.0987193487481246e+01 3.4999999923692724e+00 0 0 0 +404 1 -6.0287646877555034e+01 1.1548669928109236e+01 1.7500000196531666e+00 0 0 0 +409 1 -5.8042958949620427e+01 1.0452643267426701e+01 1.7500000235795838e+00 0 0 0 +1098 1 -5.6359442912759533e+01 1.1014119529687616e+01 3.5000000006522609e+00 0 0 0 +458 1 -5.6359443001953046e+01 1.1014119485040673e+01 1.7499999988139571e+01 0 0 -1 +461 1 -5.4675926913966613e+01 1.1575595720341020e+01 1.7499999790796128e+00 0 0 0 +512 1 -5.2431239275125748e+01 1.0479568968750188e+01 1.7499999723816930e+00 0 0 0 +564 1 -4.9064207667883615e+01 1.1602521692879570e+01 1.7499999966497575e+00 0 0 0 +1151 1 -5.0747723436947830e+01 1.1041045311632255e+01 3.5000000136626590e+00 0 0 0 +511 1 -5.0747723455228154e+01 1.1041045287403749e+01 1.7499999964168232e+01 0 0 -1 +569 1 -4.6819519882954530e+01 1.0506495067918570e+01 1.7499999855745585e+00 0 0 0 +1203 1 -4.7380691870997417e+01 1.2163998229904751e+01 3.5000000149508548e+00 0 0 0 +8 1 -8.9214901824772497e+01 1.4667347676851389e+01 1.7500002577716312e+00 0 0 0 +37 1 -8.7168423020254735e+01 1.3585085766847502e+01 1.7500002318180894e+00 0 0 0 +42 1 -8.4964194666851583e+01 1.2528524055033147e+01 1.7500002007549831e+00 0 0 0 +80 1 -8.3862485250256483e+01 1.4760634800652339e+01 1.7500001439021866e+00 0 0 0 +676 1 -8.5523444220681412e+01 1.4193137367799253e+01 3.5000000386563754e+00 0 0 0 +36 1 -8.5523444419910064e+01 1.4193137362386313e+01 2.7204806235569790e-07 0 0 0 +85 1 -8.1612971301991948e+01 1.3660980876110790e+01 1.7500000546844119e+00 0 0 0 +136 1 -7.9367522772192842e+01 1.2564123506472894e+01 1.7499999751097448e+00 0 0 0 +137 1 -7.8245181379277383e+01 1.4782804231842748e+01 1.7499999465506308e+00 0 0 0 +774 1 -7.9929644355110412e+01 1.4221754148128213e+01 3.5000000148314130e+00 0 0 0 +134 1 -7.9929644582925874e+01 1.4221754131710641e+01 1.7499999994139763e+01 0 0 -1 +188 1 -7.6000493442245087e+01 1.3686855042957152e+01 1.7499999280866587e+00 0 0 0 +827 1 -7.4316920616250783e+01 1.4248330399299780e+01 3.4999999756994074e+00 0 0 0 +187 1 -7.4316920701885593e+01 1.4248330406307245e+01 1.7499999955820115e+01 0 0 -1 +193 1 -7.3755788409804708e+01 1.2590841502564430e+01 1.7499999591628661e+00 0 0 0 +240 1 -7.2633423995923707e+01 1.4809821527286415e+01 1.7499999776660455e+00 0 0 0 +245 1 -7.0388741029959093e+01 1.3713795312512181e+01 1.7500000046045787e+00 0 0 0 +296 1 -6.8144054515828159e+01 1.2617769435327522e+01 1.7499999728638085e+00 0 0 0 +934 1 -6.8705227472538098e+01 1.4275272811405239e+01 3.4999999968770088e+00 0 0 0 +294 1 -6.8705227541038610e+01 1.4275272815808918e+01 1.7499999985180185e+01 0 0 -1 +297 1 -6.7021711209801168e+01 1.4836749271930199e+01 1.7499999978864471e+00 0 0 0 +346 1 -6.5338194709851066e+01 1.5398225736024896e+01 1.7499999990675139e+01 0 0 -1 +348 1 -6.4777022812640112e+01 1.3740722906663629e+01 1.7499999974410259e+00 0 0 0 +986 1 -6.5338194652513664e+01 1.5398225725290798e+01 3.5000000167643348e+00 0 0 0 +353 1 -6.2532334849813502e+01 1.2644696470230913e+01 1.7500000140098559e+00 0 0 0 +400 1 -6.1409990473890765e+01 1.4863675890343455e+01 1.7500000057103111e+00 0 0 0 +405 1 -5.9165302643269030e+01 1.3767649314015221e+01 1.7500000060375962e+00 0 0 0 +1039 1 -5.9726474413929488e+01 1.5425152355380844e+01 3.4999999546560443e+00 0 0 0 +1042 1 -6.0848818594603451e+01 1.3206172899387022e+01 3.4999999705591751e+00 0 0 0 +399 1 -5.9726474470793576e+01 1.5425152363732888e+01 1.5231492936289895e-08 0 0 0 +402 1 -6.0848818639492102e+01 1.3206172895458524e+01 2.1599923132831363e-08 0 0 0 +456 1 -5.6920614723348017e+01 1.2671622523510507e+01 1.7499999934491335e+00 0 0 0 +457 1 -5.5798270755188810e+01 1.4890601984353959e+01 1.7499999717576933e+00 0 0 0 +1095 1 -5.5237098939149476e+01 1.3233098958720602e+01 3.4999999932568628e+00 0 0 0 +455 1 -5.5237098993426990e+01 1.3233098924123331e+01 1.7499999968407216e+01 0 0 -1 +508 1 -5.3553583152399824e+01 1.3794575152417591e+01 1.7499999743223669e+00 0 0 0 +1146 1 -5.4114754919670325e+01 1.5452078344216524e+01 3.5000000032854190e+00 0 0 0 +506 1 -5.4114754968651759e+01 1.5452078317912894e+01 1.7499999953218353e+01 0 0 -1 +513 1 -5.1308895462445243e+01 1.2698548449476565e+01 1.7499999782018520e+00 0 0 0 +560 1 -5.0186551575967655e+01 1.4917527886874476e+01 1.7500000035095908e+00 0 0 0 +1199 1 -4.8503035805238852e+01 1.5479004366114427e+01 3.5000000129077931e+00 0 0 0 +1202 1 -4.9625379637150587e+01 1.3260024756107795e+01 3.5000000328274687e+00 0 0 0 +562 1 -4.9625379662559034e+01 1.3260024727941252e+01 1.7499999975833457e+01 0 0 -1 +565 1 -4.7941863836811642e+01 1.3821501260095783e+01 1.7500000242805482e+00 0 0 0 +609 1 -4.5697176021429975e+01 1.2725474618253017e+01 1.7499999988588635e+00 0 0 0 +1248 1 -4.6258348044212042e+01 1.4382977664213012e+01 3.4999999947502412e+00 0 0 0 +31 1 -8.9045576195331265e+01 1.8566688262246441e+01 3.6820341709462923e-07 0 0 0 +33 1 -8.8549510753421387e+01 1.6967275368016292e+01 1.7500002276218918e+00 0 0 0 +671 1 -8.9045576168486193e+01 1.8566688405845714e+01 3.5000000693531925e+00 0 0 0 +38 1 -8.6132426955056886e+01 1.5869292158447745e+01 1.7500001535411953e+00 0 0 0 +76 1 -8.4964194103348959e+01 1.8062510045327141e+01 1.7500001198542723e+00 0 0 0 +718 1 -8.4431591388668778e+01 1.6415304295473621e+01 3.5000000237526061e+00 0 0 0 +78 1 -8.4431591604337328e+01 1.6415304245692283e+01 1.8974495501512338e-07 0 0 0 +75 1 -8.3289036949377120e+01 1.8631323839568360e+01 1.0134669407465909e-07 0 0 0 +81 1 -8.2732308420582072e+01 1.6972597824377772e+01 1.7500000629273491e+00 0 0 0 +715 1 -8.3289036738312149e+01 1.8631323892881554e+01 3.4999999920205713e+00 0 0 0 +132 1 -8.0489603912567361e+01 1.5878439928863013e+01 1.7499999884697846e+00 0 0 0 +131 1 -7.8805835493242256e+01 1.6440213605191609e+01 1.7499999919123660e+01 0 0 -1 +133 1 -7.9367522077994593e+01 1.8098109180297769e+01 1.7499999348975637e+00 0 0 0 +182 1 -7.7684224808045968e+01 1.8659479386705367e+01 1.7499999924565294e+01 0 0 -1 +771 1 -7.8805835339844904e+01 1.6440213605482302e+01 3.4999999924990433e+00 0 0 0 +822 1 -7.7684224727112692e+01 1.8659479390758698e+01 3.4999999742648016e+00 0 0 0 +184 1 -7.7122770436595786e+01 1.7001909671080728e+01 1.7499999137069646e+00 0 0 0 +189 1 -7.4878099641928756e+01 1.5905851969310524e+01 1.7499999565751105e+00 0 0 0 +235 1 -7.2072253402639717e+01 1.8686300573708756e+01 1.5568255891168958e-08 0 0 0 +236 1 -7.3755787763057825e+01 1.8124826852544874e+01 1.7499999566322872e+00 0 0 0 +241 1 -7.1511091423390297e+01 1.7028801981327319e+01 1.7499999971733187e+00 0 0 0 +875 1 -7.2072253391639592e+01 1.8686300567519250e+01 3.4999999900706302e+00 0 0 0 +878 1 -7.3194615926390881e+01 1.6467332178543256e+01 3.4999999540212854e+00 0 0 0 +238 1 -7.3194615971876857e+01 1.6467332217537702e+01 2.7551018204416412e-09 0 0 0 +292 1 -6.9266400310770081e+01 1.5932775562555571e+01 1.7499999973403175e+00 0 0 0 +293 1 -6.8144053910095877e+01 1.8151754648995922e+01 1.7500000138228815e+00 0 0 0 +291 1 -6.7582882649840229e+01 1.6494251737227454e+01 1.4663323827219454e-09 0 0 0 +342 1 -6.6460538562055049e+01 1.8713231558238228e+01 6.9458321792392796e-09 0 0 0 +344 1 -6.5899366324459308e+01 1.7055728614500349e+01 1.7500000030301317e+00 0 0 0 +931 1 -6.7582882600810365e+01 1.6494251730510399e+01 3.5000000233579898e+00 0 0 0 +982 1 -6.6460538503579230e+01 1.8713231569885494e+01 3.5000000217433742e+00 0 0 0 +349 1 -6.3654678417547714e+01 1.5959702304539743e+01 1.7500000107396623e+00 0 0 0 +396 1 -6.2532334292557557e+01 1.8178681918364667e+01 1.7500000057589362e+00 0 0 0 +983 1 -6.4215850331710186e+01 1.7617205292357387e+01 3.5000000028296010e+00 0 0 0 +343 1 -6.4215850373373300e+01 1.7617205316917545e+01 8.4020639612609766e-09 0 0 0 +401 1 -6.0287646338258568e+01 1.7082655404201457e+01 1.7499999996710665e+00 0 0 0 +452 1 -5.8042958467994666e+01 1.5986628799946214e+01 1.7499999745548291e+00 0 0 0 +1090 1 -5.8604130387401888e+01 1.7644131880830230e+01 3.4999999450898347e+00 0 0 0 +450 1 -5.8604130449125527e+01 1.7644131886575956e+01 1.9327646199112054e-08 0 0 0 +453 1 -5.6920614382822592e+01 1.8205608198533390e+01 1.7499999710418341e+00 0 0 0 +504 1 -5.4675926675233001e+01 1.7109581412480910e+01 1.7499999653886575e+00 0 0 0 +509 1 -5.2431239107270500e+01 1.6013554627379211e+01 1.7499999765271488e+00 0 0 0 +1143 1 -5.2992411007958125e+01 1.7671057746098683e+01 3.5000000206139235e+00 0 0 0 +503 1 -5.2992411038176527e+01 1.7671057725470497e+01 1.7499999938980320e+01 0 0 -1 +556 1 -5.1308895322256930e+01 1.8232534156435122e+01 1.7499999884742712e+00 0 0 0 +561 1 -4.9064207701013018e+01 1.7136507413895284e+01 1.7499999997288593e+00 0 0 0 +1195 1 -4.9625379562008007e+01 1.8794010478071066e+01 3.5000000222801337e+00 0 0 0 +1198 1 -5.0747723389147438e+01 1.6575031012503345e+01 3.5000000101586788e+00 0 0 0 +606 1 -4.6819519989384673e+01 1.6040480750335007e+01 1.7500000204644774e+00 0 0 0 +607 1 -4.5697176037938846e+01 1.8259460298631300e+01 1.7499999830631920e+00 0 0 0 +1245 1 -4.7380691873138154e+01 1.7697983915773406e+01 3.5000000216326663e+00 0 0 0 +28 1 -8.7753273747527857e+01 2.0844251050662777e+01 2.4609016085597343e-07 0 0 0 +29 1 -8.9214901397903219e+01 2.0201333747259969e+01 1.7500002545423330e+00 0 0 0 +34 1 -8.7168422799271028e+01 1.9119071972176616e+01 1.7500001929908882e+00 0 0 0 +668 1 -8.7753273548046252e+01 2.0844251224489572e+01 3.5000000097505048e+00 0 0 0 +72 1 -8.6132426463855523e+01 2.1403278147271337e+01 1.7500001118289759e+00 0 0 0 +77 1 -8.3862484639237806e+01 2.0294620796677460e+01 1.7500000398810376e+00 0 0 0 +126 1 -8.2176993679252334e+01 2.0852458538712298e+01 1.9614630174162211e-08 0 0 0 +128 1 -8.1612970638474749e+01 1.9194966736674967e+01 1.7499999763430103e+00 0 0 0 +766 1 -8.2176993514639022e+01 2.0852458599524304e+01 3.4999999964279547e+00 0 0 0 +129 1 -8.0489603201208453e+01 2.1412425739837381e+01 1.7499999679114833e+00 0 0 0 +180 1 -7.8245180624628432e+01 2.0316789831045380e+01 1.7499999399106403e+00 0 0 0 +179 1 -7.6561515932558891e+01 2.0878302715442533e+01 1.7499999966269701e+01 0 0 -1 +185 1 -7.6000492783580128e+01 1.9220840555457023e+01 1.7499999507861363e+00 0 0 0 +232 1 -7.4878098979505339e+01 2.1439837408571581e+01 1.7499999851830228e+00 0 0 0 +819 1 -7.6561515931090042e+01 2.0878302703098203e+01 3.4999999728298010e+00 0 0 0 +237 1 -7.2633423366013389e+01 2.0343806865015456e+01 1.7500000085019731e+00 0 0 0 +286 1 -7.0949917126379120e+01 2.0905285743594519e+01 1.5707238084019930e-08 0 0 0 +926 1 -7.0949917086031562e+01 2.0905285737121339e+01 3.5000000126965949e+00 0 0 0 +288 1 -7.0388740406719180e+01 1.9247780547426217e+01 1.7500000066740857e+00 0 0 0 +289 1 -6.9266399762408085e+01 2.1466760846604057e+01 1.7500000407881402e+00 0 0 0 +340 1 -6.7021710678720467e+01 2.0370734556250852e+01 1.7500000297887948e+00 0 0 0 +345 1 -6.4777022301579393e+01 1.9274708266727874e+01 1.7500000347178659e+00 0 0 0 +392 1 -6.3654678022016576e+01 2.1493687803560949e+01 1.7500000111566785e+00 0 0 0 +397 1 -6.1409990034320579e+01 2.0397661473943231e+01 1.7500000097646964e+00 0 0 0 +1034 1 -6.3093506008816497e+01 1.9836184904427473e+01 3.5000000079364426e+00 0 0 0 +1031 1 -6.1971161961214520e+01 2.2055164527552478e+01 3.4999999835325037e+00 0 0 0 +394 1 -6.3093506059955111e+01 1.9836184918377938e+01 1.9122878202870674e-08 0 0 0 +391 1 -6.1971162007489966e+01 2.2055164530922287e+01 1.0114640793086986e-08 0 0 0 +448 1 -5.9165302220867773e+01 1.9301634992043002e+01 1.7499999929503458e+00 0 0 0 +449 1 -5.8042958154987375e+01 2.1520614612636084e+01 1.7499999761350120e+00 0 0 0 +500 1 -5.5798270473468442e+01 2.0424587771761594e+01 1.7499999708247838e+00 0 0 0 +1087 1 -5.7481786211364820e+01 1.9863111364330788e+01 3.4999999646693940e+00 0 0 0 +1138 1 -5.6359442300805597e+01 2.2082090962436457e+01 3.4999999779010564e+00 0 0 0 +447 1 -5.7481786274939957e+01 1.9863111372444994e+01 1.7499999987188794e+01 0 0 -1 +498 1 -5.6359442360937983e+01 2.2082090946057225e+01 1.7499999971659399e+01 0 0 -1 +505 1 -5.3553582924268554e+01 1.9328560885322322e+01 1.7499999684280121e+00 0 0 0 +552 1 -5.2431238954868604e+01 2.1547540449263632e+01 1.7499999837586417e+00 0 0 0 +1194 1 -5.1870067161245267e+01 1.9890037280812287e+01 3.5000000232463275e+00 0 0 0 +557 1 -5.0186551451934655e+01 2.0451513620723826e+01 1.7499999893516975e+00 0 0 0 +1241 1 -4.8503035720452431e+01 2.1012990123031074e+01 3.4999999972617140e+00 0 0 0 +1191 1 -5.0747723256036743e+01 2.2109016825907371e+01 3.5000000327614975e+00 0 0 0 +603 1 -4.7941863810087305e+01 1.9355486940194709e+01 1.7499999919461617e+00 0 0 0 +604 1 -4.6819519938767144e+01 2.1574466500959367e+01 1.7499999644290150e+00 0 0 0 +1242 1 -4.6258347992153688e+01 1.9916963368338028e+01 3.4999999818330476e+00 0 0 0 +30 1 -8.8549510415912721e+01 2.2501261331886106e+01 1.7500001655515995e+00 0 0 0 +68 1 -8.7168422393107420e+01 2.4653057908763657e+01 1.7500000663201711e+00 0 0 0 +70 1 -8.6710921039407850e+01 2.3047206309671715e+01 1.4795011563344776e-07 0 0 0 +73 1 -8.4964193531859507e+01 2.3596496030791538e+01 1.7500000380076137e+00 0 0 0 +710 1 -8.6710920866507209e+01 2.3047206466289328e+01 3.5000000130029059e+00 0 0 0 +123 1 -8.1049143169955400e+01 2.3069853332361248e+01 1.7499999979132831e+01 0 0 -1 +124 1 -8.2732307757013714e+01 2.2506583773836873e+01 1.7499999989556927e+00 0 0 0 +125 1 -8.1612969962289100e+01 2.4728952603713928e+01 1.7500000037939156e+00 0 0 0 +763 1 -8.1049143113905316e+01 2.3069853356256722e+01 3.5000000345084845e+00 0 0 0 +176 1 -7.9367521385150908e+01 2.3632094921487869e+01 1.7499999748981239e+00 0 0 0 +181 1 -7.7122769737373289e+01 2.2535895251881879e+01 1.7499999819736864e+00 0 0 0 +228 1 -7.6000492158844864e+01 2.4754826115689113e+01 1.7500000093971733e+00 0 0 0 +230 1 -7.5439348542970350e+01 2.3097365074586023e+01 6.9638126382590805e-09 0 0 0 +870 1 -7.5439348522907636e+01 2.3097365071728259e+01 3.5000000133947640e+00 0 0 0 +233 1 -7.3755787164189812e+01 2.3658812321864300e+01 1.7500000250805308e+00 0 0 0 +284 1 -7.1511090866269342e+01 2.2562787367609182e+01 1.7500000172089349e+00 0 0 0 +283 1 -6.9827569412923808e+01 2.3124262572683090e+01 2.4932545658941254e-08 0 0 0 +285 1 -7.0388740054173212e+01 2.4781766030658400e+01 1.7500000160976623e+00 0 0 0 +336 1 -6.8144053546998578e+01 2.3685740063808431e+01 1.7500000084526537e+00 0 0 0 +923 1 -6.9827569380998085e+01 2.3124262550891554e+01 3.5000000170781003e+00 0 0 0 +341 1 -6.5899365960671744e+01 2.2589714026372597e+01 1.7500000031961382e+00 0 0 0 +388 1 -6.4777022103880512e+01 2.4808693849104987e+01 1.7499999946501719e+00 0 0 0 +393 1 -6.2532334035415509e+01 2.3712667586338565e+01 1.7499999957872119e+00 0 0 0 +444 1 -6.0287646041618778e+01 2.2616641196647777e+01 1.7499999820935304e+00 0 0 0 +445 1 -5.9165302062046514e+01 2.4835620875790063e+01 1.7499999943341766e+00 0 0 0 +1082 1 -6.0848817881820125e+01 2.4274144264492978e+01 3.4999999450964321e+00 0 0 0 +442 1 -6.0848817929711672e+01 2.4274144218407173e+01 7.1946711698822020e-09 0 0 0 +496 1 -5.6920614165588283e+01 2.3739594083259455e+01 1.7499999724323183e+00 0 0 0 +1135 1 -5.5237098523659476e+01 2.4301070615548497e+01 3.5000000018251507e+00 0 0 0 +495 1 -5.5237098533891434e+01 2.4301070611616499e+01 1.7499999944978470e+01 0 0 -1 +501 1 -5.4675926437515770e+01 2.2643567248270308e+01 1.7499999783244604e+00 0 0 0 +548 1 -5.3553582844940770e+01 2.4862546901203885e+01 1.7499999837115336e+00 0 0 0 +1190 1 -5.2992410856861397e+01 2.3205043623554459e+01 3.5000000100135309e+00 0 0 0 +553 1 -5.1308895250767783e+01 2.3766520082375290e+01 1.7499999897929892e+00 0 0 0 +599 1 -4.9064207587442084e+01 2.2670493212298691e+01 1.7499999848072734e+00 0 0 0 +1237 1 -4.9625379523551466e+01 2.4327996388429487e+01 3.5000000227656587e+00 0 0 0 +600 1 -4.7941863782565555e+01 2.4889472876013471e+01 1.7499999755488016e+00 0 0 0 +631 1 -4.5697176003602983e+01 2.3793446142160935e+01 1.7499999496601899e+00 0 0 0 +1238 1 -4.7380691839895022e+01 2.3231969746607334e+01 3.4999999832880504e+00 0 0 0 +26 1 -8.9214901314983180e+01 2.5735319681980911e+01 1.7500000777760449e+00 0 0 0 +64 1 -8.8549509931186876e+01 2.8035247224669099e+01 1.7499999990727657e+00 0 0 0 +67 1 -8.5523443268445149e+01 2.5261109269928873e+01 4.4900600161993600e-08 0 0 0 +69 1 -8.6132425999866072e+01 2.6937264063808740e+01 1.7500000175283550e+00 0 0 0 +120 1 -8.3862484014502144e+01 2.5828606701371378e+01 1.7500000079732783e+00 0 0 0 +707 1 -8.5523443149423258e+01 2.5261109418080654e+01 3.5000000184440831e+00 0 0 0 +758 1 -8.4431590323496224e+01 2.7483276243131652e+01 3.5000000395983046e+00 0 0 0 +118 1 -8.4431590411428004e+01 2.7483276152715305e+01 7.4214653998450230e-09 0 0 0 +121 1 -8.2732307228795221e+01 2.8040569658570483e+01 1.7500000056866016e+00 0 0 0 +172 1 -8.0489602635731217e+01 2.6946411581200781e+01 1.7500000072318482e+00 0 0 0 +171 1 -7.8805834156283211e+01 2.7508185076093032e+01 1.7499999984222438e+01 0 0 -1 +174 1 -7.9929643101109050e+01 2.5289725653691850e+01 1.7499999989578026e+01 0 0 -1 +177 1 -7.8245180064817774e+01 2.5850775569792532e+01 1.7500000059275012e+00 0 0 0 +811 1 -7.8805834137127903e+01 2.7508185065894452e+01 3.5000000509430067e+00 0 0 0 +814 1 -7.9929643064757215e+01 2.5289725680239030e+01 3.5000000584296926e+00 0 0 0 +224 1 -7.7122769309182374e+01 2.8069880977973245e+01 1.7499999824375927e+00 0 0 0 +227 1 -7.4316919446427519e+01 2.5316301366945936e+01 2.1313703932479880e-08 0 0 0 +229 1 -7.4878098543214833e+01 2.6973823038209837e+01 1.7500000072226825e+00 0 0 0 +867 1 -7.4316919435494015e+01 2.5316301350895927e+01 3.5000000063193402e+00 0 0 0 +278 1 -7.3194614993697769e+01 2.7535303238953574e+01 4.0359069890088442e-08 0 0 0 +280 1 -7.2633422929262267e+01 2.5877792410912328e+01 1.7500000164750826e+00 0 0 0 +281 1 -7.1511090665188405e+01 2.8096773028883174e+01 1.7500000063956012e+00 0 0 0 +918 1 -7.3194614973935046e+01 2.7535303225815255e+01 3.4999999662112340e+00 0 0 0 +332 1 -6.9266399632473551e+01 2.7000746473185949e+01 1.7499999981910463e+00 0 0 0 +334 1 -6.8705226704233496e+01 2.5343243559475134e+01 1.7805818858810168e-08 0 0 0 +974 1 -6.8705226653152707e+01 2.5343243552057022e+01 3.5000000051991775e+00 0 0 0 +331 1 -6.7582882132662391e+01 2.7562222752404185e+01 1.7499999998028020e+01 0 0 -1 +337 1 -6.7021710527796628e+01 2.5904720109700229e+01 1.7500000172404173e+00 0 0 0 +384 1 -6.5899365982508016e+01 2.8123699769040591e+01 1.7499999980404348e+00 0 0 0 +971 1 -6.7582882113678579e+01 2.7562222736203719e+01 3.5000000081204412e+00 0 0 0 +1026 1 -6.5338194142134682e+01 2.6466196763076940e+01 3.4999999935272723e+00 0 0 0 +386 1 -6.5338194166429886e+01 2.6466196754937144e+01 1.7499999992413656e+01 0 0 -1 +389 1 -6.3654678012085661e+01 2.7027673564017718e+01 1.7499999997133977e+00 0 0 0 +440 1 -6.1409989945735646e+01 2.5931647302184029e+01 1.7499999866293798e+00 0 0 0 +441 1 -6.0287646122483480e+01 2.8150627148833809e+01 1.7499999563465722e+00 0 0 0 +492 1 -5.8042958143164107e+01 2.7054600630788752e+01 1.7499999464739304e+00 0 0 0 +1079 1 -5.9726473993519676e+01 2.6493123998654536e+01 3.4999999483290729e+00 0 0 0 +439 1 -5.9726474031617222e+01 2.6493124007945379e+01 1.7499999984715974e+01 0 0 -1 +497 1 -5.5798270418047998e+01 2.5958573820998815e+01 1.7499999556609529e+00 0 0 0 +544 1 -5.4675926569961476e+01 2.8177553475318341e+01 1.7499999703135447e+00 0 0 0 +549 1 -5.2431238971541084e+01 2.7081526555749981e+01 1.7499999836292823e+00 0 0 0 +1187 1 -5.1870067134923723e+01 2.5424023296425709e+01 3.5000000032475902e+00 0 0 0 +1186 1 -5.4114754700553220e+01 2.6520050244895845e+01 3.4999999980582448e+00 0 0 0 +595 1 -5.0186551467966055e+01 2.5985499670743380e+01 1.7499999926342920e+00 0 0 0 +596 1 -4.9064207667301552e+01 2.8204479349368899e+01 1.7499999902879426e+00 0 0 0 +1233 1 -5.0747723324443918e+01 2.7643002948755679e+01 3.4999999844138903e+00 0 0 0 +1234 1 -4.8503035746696995e+01 2.6546976132233606e+01 3.4999999703927043e+00 0 0 0 +628 1 -4.6819519936841239e+01 2.7108452478584049e+01 1.7499999651682869e+00 0 0 0 +1270 1 -4.6258347981223615e+01 2.5450949255684577e+01 3.4999999366948797e+00 0 0 0 +7069 1 -4.5136004040574157e+01 2.7669928953181355e+01 3.4999999837876996e+00 0 0 0 +60 1 -8.9214901335348628e+01 3.1269305727768657e+01 1.7499999977762295e+00 0 0 0 +65 1 -8.7168422091075740e+01 3.0187043862530679e+01 1.7499999981355792e+00 0 0 0 +702 1 -8.9045575810865643e+01 2.9634660363864285e+01 3.4999999528456009e+00 0 0 0 +62 1 -8.9045575864847294e+01 2.9634660244868261e+01 6.5913521389541162e-08 0 0 0 +116 1 -8.4964193159478455e+01 2.9130481994736073e+01 1.7499999982990413e+00 0 0 0 +117 1 -8.3862483748675231e+01 3.1362592685197747e+01 1.7500000081206704e+00 0 0 0 +168 1 -8.1612969586698128e+01 3.0262938526284024e+01 1.7499999868978873e+00 0 0 0 +755 1 -8.3289035751978176e+01 2.9699295769301063e+01 3.5000000429046074e+00 0 0 0 +115 1 -8.3289035813512356e+01 2.9699295704574268e+01 1.7499999989318351e+01 0 0 -1 +173 1 -7.9367520960656989e+01 2.9166080757380534e+01 1.7499999883264314e+00 0 0 0 +220 1 -7.8245179753862729e+01 3.1384761461336311e+01 1.7499999583993404e+00 0 0 0 +222 1 -7.7684223739398107e+01 2.9727450845935859e+01 1.7499999978759917e+01 0 0 -1 +862 1 -7.7684223727753206e+01 2.9727450844445940e+01 3.5000000069192772e+00 0 0 0 +225 1 -7.6000491919548878e+01 3.0288811955561478e+01 1.7499999662055079e+00 0 0 0 +275 1 -7.2072252777737475e+01 2.9754271803674460e+01 1.9944760029050885e-08 0 0 0 +276 1 -7.3755786957438943e+01 2.9192798068209488e+01 1.7499999738515346e+00 0 0 0 +277 1 -7.2633422924378408e+01 3.1411778280265480e+01 1.7499999885610027e+00 0 0 0 +915 1 -7.2072252780280465e+01 2.9754271823783899e+01 3.4999999600253240e+00 0 0 0 +328 1 -7.0388740057434006e+01 3.0315751834161119e+01 1.7499999990470243e+00 0 0 0 +333 1 -6.8144053600004227e+01 2.9219725835555476e+01 1.7500000013325425e+00 0 0 0 +380 1 -6.7021710758869204e+01 3.1438706036304055e+01 1.7500000263219544e+00 0 0 0 +382 1 -6.6460538413993447e+01 2.9781202876183162e+01 2.3882530674996008e-08 0 0 0 +385 1 -6.4777022334370400e+01 3.0342679715747277e+01 1.7500000266581437e+00 0 0 0 +1022 1 -6.6460538401160491e+01 2.9781202882260732e+01 3.5000000067569355e+00 0 0 0 +436 1 -6.2532334208165381e+01 2.9246653496378855e+01 1.7499999833755155e+00 0 0 0 +437 1 -6.1409990274136916e+01 3.1465633383734325e+01 1.7500000011294699e+00 0 0 0 +1023 1 -6.4215850170461792e+01 2.8685176656449169e+01 3.4999999760359684e+00 0 0 0 +1074 1 -6.3093506180072410e+01 3.0904156603050506e+01 3.5000000124324191e+00 0 0 0 +383 1 -6.4215850161844941e+01 2.8685176673805429e+01 1.8646271562093758e-08 0 0 0 +434 1 -6.3093506196049098e+01 3.0904156595941767e+01 5.2605738663626290e-09 0 0 0 +488 1 -5.9165302288216445e+01 3.0369607034384575e+01 1.7499999859747513e+00 0 0 0 +1130 1 -5.8604130251871240e+01 2.8712103856062836e+01 3.4999999440150691e+00 0 0 0 +490 1 -5.8604130299872047e+01 2.8712103822732423e+01 1.7499999981386704e+01 0 0 -1 +493 1 -5.6920614352164982e+01 2.9273580296830922e+01 1.7499999685589531e+00 0 0 0 +540 1 -5.5798270671152302e+01 3.1492560108942182e+01 1.7499999566367002e+00 0 0 0 +1182 1 -5.5237098712953049e+01 2.9835056859871990e+01 3.4999999681442993e+00 0 0 0 +1127 1 -5.7481786391364594e+01 3.0931083576643264e+01 3.4999999607963752e+00 0 0 0 +487 1 -5.7481786409622764e+01 3.0931083590089457e+01 1.7499999964854592e+01 0 0 -1 +545 1 -5.3553583014275631e+01 3.0396533172635831e+01 1.7499999751294304e+00 0 0 0 +1183 1 -5.2992410983518113e+01 2.8739029845342863e+01 3.5000000185427962e+00 0 0 0 +1229 1 -5.1870067280192082e+01 3.0958009568359998e+01 3.5000000042809534e+00 0 0 0 +591 1 -5.1308895322495871e+01 2.9300506295462903e+01 1.7499999996355733e+00 0 0 0 +592 1 -5.0186551562608919e+01 3.1519485931900501e+01 1.7499999969067253e+00 0 0 0 +1230 1 -4.9625379605481221e+01 2.9861982574143745e+01 3.4999999936912998e+00 0 0 0 +625 1 -4.7941863831541440e+01 3.0423459026687240e+01 1.7499999647346181e+00 0 0 0 +629 1 -4.5697175963971354e+01 2.9327432145092665e+01 1.7499999588723938e+00 0 0 0 +1264 1 -4.6258347988754863e+01 3.0984935355756594e+01 3.4999999611827040e+00 0 0 0 +1267 1 -4.7380691847304966e+01 2.8765955777325804e+01 3.4999999882144839e+00 0 0 0 +61 1 -8.8549509773810200e+01 3.3569233263142507e+01 1.7499999967138906e+00 0 0 0 +699 1 -8.7753272990252583e+01 3.1912223071747306e+01 3.5000000491676269e+00 0 0 0 +59 1 -8.7753273019702888e+01 3.1912223013272072e+01 2.9066398386160774e-08 0 0 0 +112 1 -8.6132425714321258e+01 3.2471250053707422e+01 1.7499999993363955e+00 0 0 0 +750 1 -8.6710920282152344e+01 3.4115178403290408e+01 3.5000000435979772e+00 0 0 0 +110 1 -8.6710920346203764e+01 3.4115178332421010e+01 2.9594450943999451e-08 0 0 0 +164 1 -8.2732307050873331e+01 3.3574555705236442e+01 1.7499999898304388e+00 0 0 0 +803 1 -8.1049142462668627e+01 3.4137825288835089e+01 3.5000000205952433e+00 0 0 0 +806 1 -8.2176992662089461e+01 3.1920430447177132e+01 3.5000000342893385e+00 0 0 0 +163 1 -8.1049142473274955e+01 3.4137825268097920e+01 1.7499999985155437e+01 0 0 -1 +166 1 -8.2176992713247543e+01 3.1920430429890722e+01 1.7499999982902789e+01 0 0 -1 +169 1 -8.0489602374365901e+01 3.2480397560920615e+01 1.7499999686994321e+00 0 0 0 +219 1 -7.6561515183482214e+01 3.1946274265484057e+01 9.3652502821301742e-09 0 0 0 +221 1 -7.7122769162511858e+01 3.3603866982943721e+01 1.7499999762212828e+00 0 0 0 +270 1 -7.5439348134273075e+01 3.4165336823429811e+01 1.0592681395232881e-08 0 0 0 +272 1 -7.4878098462712060e+01 3.2507808971247826e+01 1.7499999717170320e+00 0 0 0 +859 1 -7.6561515206245119e+01 3.1946274268008864e+01 3.4999999399022386e+00 0 0 0 +910 1 -7.5439348167309120e+01 3.4165336804018040e+01 3.4999999772507313e+00 0 0 0 +324 1 -7.1511090804260164e+01 3.3630759089902057e+01 1.7500000046973163e+00 0 0 0 +326 1 -7.0949916902796005e+01 3.1973257229508597e+01 1.3759875642764800e-08 0 0 0 +966 1 -7.0949916892728510e+01 3.1973257258707836e+01 3.4999999887083382e+00 0 0 0 +323 1 -6.9827569612219932e+01 3.4192234365223079e+01 2.4661517129926431e-08 0 0 0 +329 1 -6.9266399810527631e+01 3.2534732441513050e+01 1.7500000338843984e+00 0 0 0 +963 1 -6.9827569593463920e+01 3.4192234378376689e+01 3.5000000125653536e+00 0 0 0 +381 1 -6.5899366408282233e+01 3.3657685804475413e+01 1.7500000089397405e+00 0 0 0 +432 1 -6.3654678396914804e+01 3.2561659613160707e+01 1.7500000272170726e+00 0 0 0 +1071 1 -6.1971162452941215e+01 3.3123136529283251e+01 3.4999999918445996e+00 0 0 0 +431 1 -6.1971162470946155e+01 3.3123136513817258e+01 2.4970272458439717e-08 0 0 0 +484 1 -6.0287646588886503e+01 3.3684613353864023e+01 1.7499999882229926e+00 0 0 0 +489 1 -5.8042958538596316e+01 3.2588586903223849e+01 1.7499999656107346e+00 0 0 0 +1178 1 -5.6359442704175571e+01 3.3150063401618020e+01 3.4999999822069046e+00 0 0 0 +541 1 -5.4675926805259564e+01 3.3711539782218544e+01 1.7499999934888484e+00 0 0 0 +587 1 -5.2431239181225195e+01 3.2615512912352735e+01 1.7499999887186957e+00 0 0 0 +1179 1 -5.4114754913184150e+01 3.2054036569452158e+01 3.4999999764643577e+00 0 0 0 +1225 1 -5.2992411214444644e+01 3.4273016198398039e+01 3.4999999918031559e+00 0 0 0 +621 1 -4.9064207746985979e+01 3.3738465641405632e+01 1.7500000102295283e+00 0 0 0 +1263 1 -4.8503035832114534e+01 3.2080962368208326e+01 3.4999999886277462e+00 0 0 0 +1226 1 -5.0747723451078151e+01 3.3176989266977479e+01 3.5000000340362600e+00 0 0 0 +626 1 -4.6819519996473005e+01 3.2642438676315422e+01 1.7499999707016596e+00 0 0 0 +1260 1 -4.7380691971991411e+01 3.4299942062917133e+01 3.4999999786370699e+00 0 0 0 +7103 1 -4.5136004073451971e+01 3.3203915074812272e+01 3.4999999739444219e+00 0 0 0 +57 1 -8.9214901216094290e+01 3.6803291737572849e+01 1.7499999960956083e+00 0 0 0 +108 1 -8.7168422022530052e+01 3.5721029936319766e+01 1.7500000057392391e+00 0 0 0 +113 1 -8.4964192980032323e+01 3.4664468018437475e+01 1.7500000061865137e+00 0 0 0 +160 1 -8.3862483627662371e+01 3.6896578822879356e+01 1.7500000047065036e+00 0 0 0 +747 1 -8.5523442756269773e+01 3.6329081443857213e+01 3.5000000617934077e+00 0 0 0 +107 1 -8.5523442785161592e+01 3.6329081403433150e+01 1.6206651701594305e-09 0 0 0 +165 1 -8.1612969470261831e+01 3.5796924661112335e+01 1.7500000024321229e+00 0 0 0 +214 1 -7.9929642637570780e+01 3.6357697738504285e+01 5.6795287821532976e-09 0 0 0 +216 1 -7.9367520818436958e+01 3.4700066845569822e+01 1.7499999663417110e+00 0 0 0 +217 1 -7.8245179798374906e+01 3.6918747681795303e+01 1.7500000046043520e+00 0 0 0 +854 1 -7.9929642683096844e+01 3.6357697749413305e+01 3.5000000013905836e+00 0 0 0 +267 1 -7.4316919437287794e+01 3.6384273366073835e+01 3.5391587728878377e-08 0 0 0 +268 1 -7.6000491923541617e+01 3.5822798070564673e+01 1.7500000115829539e+00 0 0 0 +907 1 -7.4316919457427574e+01 3.6384273356912118e+01 3.5000000086453267e+00 0 0 0 +273 1 -7.3755787019328110e+01 3.4726784146426951e+01 1.7500000074288620e+00 0 0 0 +320 1 -7.2633423191301887e+01 3.6945764521945151e+01 1.7500000411956376e+00 0 0 0 +325 1 -7.0388740418307165e+01 3.5849738042227926e+01 1.7500000180867108e+00 0 0 0 +374 1 -6.8705227289215230e+01 3.6411215642147546e+01 1.1357693239101419e-08 0 0 0 +376 1 -6.8144053973945859e+01 3.4753711949721605e+01 1.7500000300454868e+00 0 0 0 +1014 1 -6.8705227240691741e+01 3.6411215673137043e+01 3.5000000116330199e+00 0 0 0 +377 1 -6.7021711312115315e+01 3.6972692244807462e+01 1.7500000160763447e+00 0 0 0 +428 1 -6.4777022898545297e+01 3.5876665889271479e+01 1.7500000054458378e+00 0 0 0 +1066 1 -6.5338195104676132e+01 3.7534168957397291e+01 3.4999999870474401e+00 0 0 0 +426 1 -6.5338195088039896e+01 3.7534168925686728e+01 1.7499999982179542e+01 0 0 -1 +433 1 -6.2532334747360494e+01 3.4780639632589065e+01 1.7500000244363705e+00 0 0 0 +480 1 -6.1409990892068052e+01 3.6999619578230387e+01 1.7500000006176442e+00 0 0 0 +485 1 -5.9165302830431600e+01 3.5903593270061116e+01 1.7499999877514931e+00 0 0 0 +1119 1 -5.9726474956229453e+01 3.7561096407626529e+01 3.4999999599270297e+00 0 0 0 +1122 1 -6.0848818667249304e+01 3.5342116480547652e+01 3.4999999617496123e+00 0 0 0 +479 1 -5.9726474953063502e+01 3.7561096400380571e+01 4.8030848897933099e-09 0 0 0 +482 1 -6.0848818652960681e+01 3.5342116467208371e+01 3.8020535613027444e-09 0 0 0 +536 1 -5.6920614750465738e+01 3.4807566586082672e+01 1.7499999811040825e+00 0 0 0 +537 1 -5.5798271115669841e+01 3.7026546454015602e+01 1.7499999732658653e+00 0 0 0 +1174 1 -5.7481786871888268e+01 3.6465069862958039e+01 3.4999999584033641e+00 0 0 0 +1175 1 -5.5237099053071134e+01 3.5369043202230188e+01 3.4999999977774858e+00 0 0 0 +583 1 -5.3553583317635798e+01 3.5930519546357885e+01 1.7500000069791475e+00 0 0 0 +1222 1 -5.1870067538632441e+01 3.6491995956981434e+01 3.4999999993285407e+00 0 0 0 +1221 1 -5.4114755278315165e+01 3.7588022924721329e+01 3.5000000072288469e+00 0 0 0 +588 1 -5.1308895566917116e+01 3.4834492686472238e+01 1.7499999909034074e+00 0 0 0 +617 1 -5.0186551797798749e+01 3.7053472328294141e+01 1.7499999811859852e+00 0 0 0 +1256 1 -4.8503035955165785e+01 3.7614948740981674e+01 3.4999999915022015e+00 0 0 0 +1259 1 -4.9625379766199480e+01 3.5395968926009367e+01 3.5000000263074300e+00 0 0 0 +622 1 -4.7941863949277696e+01 3.5957445375806479e+01 1.7499999711961280e+00 0 0 0 +640 1 -4.5697176045890146e+01 3.4861418404832769e+01 1.7499999688108387e+00 0 0 0 +1279 1 -4.6258348053079153e+01 3.6518921648104332e+01 3.4999999532429675e+00 0 0 0 +102 1 -8.9045575750811139e+01 4.0702632557043287e+01 1.7499999973211423e+01 0 0 -1 +104 1 -8.8549509784491732e+01 3.9103219358013760e+01 1.7499999940512214e+00 0 0 0 +742 1 -8.9045575757381158e+01 4.0702632505678061e+01 3.4999999824639358e+00 0 0 0 +109 1 -8.6132425735589322e+01 3.8005236209660048e+01 1.7500000147034247e+00 0 0 0 +156 1 -8.4964193056271682e+01 4.0198454306735194e+01 1.7499999847234631e+00 0 0 0 +158 1 -8.4431590113586580e+01 3.8551248409940044e+01 1.7499999993257671e+01 0 0 -1 +798 1 -8.4431590115436379e+01 3.8551248424975604e+01 3.5000000339182216e+00 0 0 0 +155 1 -8.3289035715004161e+01 4.0767268150724419e+01 1.7499999986049627e+01 0 0 -1 +161 1 -8.2732307058671026e+01 3.9108541964344447e+01 1.7499999926789047e+00 0 0 0 +795 1 -8.3289035745234003e+01 4.0767268174387773e+01 3.5000000238181999e+00 0 0 0 +212 1 -8.0489602391049289e+01 3.8014383810326350e+01 1.7500000176474022e+00 0 0 0 +211 1 -7.8805834012551188e+01 3.8576157356433654e+01 6.4594253017205059e-09 0 0 0 +213 1 -7.9367521018717170e+01 4.0234053237137886e+01 1.7500000164610134e+00 0 0 0 +262 1 -7.7684223919351510e+01 4.0795423369886706e+01 1.9101975501261032e-08 0 0 0 +851 1 -7.8805834080615995e+01 3.8576157347767129e+01 3.5000000382998731e+00 0 0 0 +902 1 -7.7684223989749768e+01 4.0795423384825625e+01 3.5000000342716100e+00 0 0 0 +264 1 -7.7122769385353863e+01 3.9137853328707315e+01 1.7500000218271385e+00 0 0 0 +269 1 -7.4878098681331039e+01 3.8041795253087507e+01 1.7500000459090592e+00 0 0 0 +315 1 -7.2072253500689584e+01 4.0822244404494583e+01 3.3368340587205763e-08 0 0 0 +316 1 -7.3755787468252237e+01 4.0260770568308168e+01 1.7500000316703004e+00 0 0 0 +318 1 -7.3194615376241416e+01 3.8603275554813024e+01 5.7923970451440046e-08 0 0 0 +321 1 -7.1511091277930390e+01 3.9164745448953205e+01 1.7500000181157438e+00 0 0 0 +955 1 -7.2072253474947971e+01 4.0822244417925923e+01 3.5000000041705026e+00 0 0 0 +958 1 -7.3194615369407103e+01 3.8603275534351084e+01 3.5000000177301227e+00 0 0 0 +372 1 -6.9266400349242915e+01 3.8068718760789238e+01 1.7499999933920134e+00 0 0 0 +373 1 -6.8144054593431875e+01 4.0287698323598164e+01 1.7499999680716807e+00 0 0 0 +371 1 -6.7582883067702795e+01 3.8630195060739013e+01 1.7499999979993241e+01 0 0 -1 +422 1 -6.6460539520070895e+01 4.0849175342390531e+01 1.7499999972844464e+01 0 0 -1 +424 1 -6.5899367039367576e+01 3.9191672075792120e+01 1.7499999851465438e+00 0 0 0 +1011 1 -6.7582883021502084e+01 3.8630195081578748e+01 3.5000000046967963e+00 0 0 0 +1062 1 -6.6460539501344428e+01 4.0849175369545740e+01 3.4999999701032918e+00 0 0 0 +429 1 -6.3654679054032037e+01 3.8095645791717111e+01 1.7499999760884071e+00 0 0 0 +476 1 -6.2532335399630682e+01 4.0314625835720697e+01 1.7499999738686056e+00 0 0 0 +1063 1 -6.4215851330963687e+01 3.9753149002819903e+01 3.4999999630553980e+00 0 0 0 +423 1 -6.4215851302310313e+01 3.9753148960173398e+01 1.7499999990510833e+01 0 0 -1 +481 1 -6.0287647207838447e+01 3.9218599544081087e+01 1.7499999788099003e+00 0 0 0 +532 1 -5.8042959036277516e+01 3.8122573141057401e+01 1.7499999882589519e+00 0 0 0 +1170 1 -5.8604131271996970e+01 3.9780076333032731e+01 3.4999999467826668e+00 0 0 0 +530 1 -5.8604131295664281e+01 3.9780076345237255e+01 1.3993907147740399e-09 0 0 0 +533 1 -5.6920615278321023e+01 4.0341552879988171e+01 1.7500000010427297e+00 0 0 0 +1171 1 -5.6359443182966487e+01 3.8684049705805720e+01 3.4999999458463598e+00 0 0 0 +1217 1 -5.5237099492643480e+01 4.0903029513150145e+01 3.4999999767144212e+00 0 0 0 +579 1 -5.4675927302765771e+01 3.9245526172627521e+01 1.7499999913258313e+00 0 0 0 +584 1 -5.2431239460257018e+01 3.8149499276914064e+01 1.7499999967597366e+00 0 0 0 +1218 1 -5.2992411526760286e+01 3.9807002551502656e+01 3.5000000283322068e+00 0 0 0 +613 1 -5.1308895755214273e+01 4.0368479016785393e+01 1.7500000036815762e+00 0 0 0 +618 1 -4.9064207915587573e+01 3.9272452050996357e+01 1.7499999887526936e+00 0 0 0 +1252 1 -4.9625379855862228e+01 4.0929955285330124e+01 3.4999999725869055e+00 0 0 0 +1255 1 -5.0747723696498376e+01 3.8710975673171419e+01 3.4999999707393541e+00 0 0 0 +7100 1 -4.5136003983536973e+01 3.8737901321009552e+01 3.4999999964288788e+00 0 0 0 +637 1 -4.6819520015403462e+01 3.8176425004401857e+01 1.7499999907720185e+00 0 0 0 +638 1 -4.5697175887912010e+01 4.0395404633023993e+01 1.7499999946069884e+00 0 0 0 +1276 1 -4.7380691948089563e+01 3.9833928390135718e+01 3.4999999971735440e+00 0 0 0 +100 1 -8.7753273026646880e+01 4.2980195462682730e+01 1.7499999948359072e+01 0 0 -1 +101 1 -8.9214901341298628e+01 4.2337277995352146e+01 1.7499999750738544e+00 0 0 0 +105 1 -8.7168422022463830e+01 4.1255016117748198e+01 1.7499999757321085e+00 0 0 0 +740 1 -8.7753273024999331e+01 4.2980195435559544e+01 3.5000000441696852e+00 0 0 0 +153 1 -8.6132425825668378e+01 4.3539222546036079e+01 1.7499999958362265e+00 0 0 0 +157 1 -8.3862483834143305e+01 4.2430565215051459e+01 1.7499999878985595e+00 0 0 0 +206 1 -8.2176992837570936e+01 4.2988403089610209e+01 1.7499999967966712e+01 0 0 -1 +208 1 -8.1612969650536343e+01 4.1330911050347048e+01 1.7499999908168822e+00 0 0 0 +846 1 -8.2176992867533627e+01 4.2988403110041659e+01 3.5000000281067800e+00 0 0 0 +209 1 -8.0489602668080224e+01 4.3548370334956722e+01 1.7499999834546376e+00 0 0 0 +261 1 -7.8245180103053428e+01 4.2452734152093861e+01 1.7500000234710900e+00 0 0 0 +260 1 -7.6561515663457783e+01 4.3014247031822414e+01 2.7715525753916791e-08 0 0 0 +265 1 -7.6000492340449654e+01 4.1356784548848658e+01 1.7500000255955142e+00 0 0 0 +313 1 -7.4878099122343244e+01 4.3575781831089408e+01 1.7500000056687965e+00 0 0 0 +900 1 -7.6561515716933712e+01 4.3014247040707886e+01 3.5000000039074410e+00 0 0 0 +317 1 -7.2633423674991491e+01 4.2479751040127105e+01 1.7500000106558073e+00 0 0 0 +366 1 -7.0949917787531092e+01 4.3041230063954238e+01 1.0534994457864685e-08 0 0 0 +1006 1 -7.0949917776499191e+01 4.3041230084288088e+01 3.4999999906019759e+00 0 0 0 +368 1 -7.0388740933290620e+01 4.1383724485392726e+01 1.7499999991491630e+00 0 0 0 +369 1 -6.9266400789718432e+01 4.3602705274533875e+01 1.7499999936171133e+00 0 0 0 +421 1 -6.7021711860041947e+01 4.2506678649674271e+01 1.7499999768623729e+00 0 0 0 +425 1 -6.4777023526722814e+01 4.1410652121173207e+01 1.7499999831569557e+00 0 0 0 +473 1 -6.3654679584967091e+01 4.3629632034128164e+01 1.7500000057192380e+00 0 0 0 +477 1 -6.1409991461763113e+01 4.2533605734064480e+01 1.7499999991738060e+00 0 0 0 +474 1 -6.3093507388810643e+01 4.1972128958063720e+01 1.7499999977549386e+01 0 0 -1 +1114 1 -6.3093507409345889e+01 4.1972128989356449e+01 3.4999999751304611e+00 0 0 0 +4151 1 -6.1971163625546055e+01 4.4191108877764158e+01 3.4999999875563081e+00 0 0 0 +3511 1 -6.1971163623477750e+01 4.4191108878696795e+01 1.7499999996007023e+01 0 0 -1 +528 1 -5.9165303388729171e+01 4.1437579495714253e+01 1.7500000065096810e+00 0 0 0 +529 1 -5.8042959545200254e+01 4.3656559363276607e+01 1.7499999854621919e+00 0 0 0 +576 1 -5.5798271506191917e+01 4.2560532714256809e+01 1.7500000042397605e+00 0 0 0 +527 1 -5.7481787397725405e+01 4.1999056135615575e+01 1.7499999994518152e+01 0 0 -1 +1167 1 -5.7481787374270681e+01 4.1999056087296466e+01 3.4999999900310410e+00 0 0 0 +4258 1 -5.6359443531758615e+01 4.4218035882537606e+01 3.5000000045838182e+00 0 0 0 +580 1 -5.3553583679094274e+01 4.1464505888785311e+01 1.7499999841434157e+00 0 0 0 +610 1 -5.2431239681021047e+01 4.3683485547697302e+01 1.7499999996880233e+00 0 0 0 +1215 1 -5.4114755570237030e+01 4.3122009195243137e+01 3.4999999695176260e+00 0 0 0 +1251 1 -5.1870067719813598e+01 4.2025982276914021e+01 3.4999999888047988e+00 0 0 0 +614 1 -5.0186551841419103e+01 4.2587458613018555e+01 1.7499999938760242e+00 0 0 0 +1272 1 -4.8503035893079655e+01 4.3148935020953047e+01 3.4999999771077994e+00 0 0 0 +4311 1 -5.0747723695643018e+01 4.4244961901793417e+01 3.5000000173939378e+00 0 0 0 +634 1 -4.7941863924958902e+01 4.1491431663871772e+01 1.7499999822948831e+00 0 0 0 +635 1 -4.6819519859183544e+01 4.3710411254439727e+01 1.7499999993964934e+00 0 0 0 +1273 1 -4.6258347901726054e+01 4.2052907919020292e+01 3.4999999977562442e+00 0 0 0 +642 1 -8.9045576456860871e+01 1.9647300231358580e+00 3.4999998993562156e+00 0 0 0 +645 1 -8.8549511364675553e+01 3.6531702540181393e-01 5.2499999633669887e+00 0 0 0 +659 1 -8.7168423513905253e+01 2.5171135736357142e+00 5.2499998625358870e+00 0 0 0 +1282 1 -8.9045576407049381e+01 1.9647300682764470e+00 6.9999999587477344e+00 0 0 0 +663 1 -8.4964195011323028e+01 1.4605519722546241e+00 5.2499998747256535e+00 0 0 0 +691 1 -8.3289037845130380e+01 2.0293661127478586e+00 3.5000000026279667e+00 0 0 0 +693 1 -8.2732309247893738e+01 3.7064024931939027e-01 5.2499998887934485e+00 0 0 0 +694 1 -8.1612971853484041e+01 2.5930092982463555e+00 5.2499999546070892e+00 0 0 0 +1331 1 -8.3289037978415720e+01 2.0293661320835947e+00 6.9999998156356469e+00 0 0 0 +735 1 -7.7684225835972157e+01 2.0575227949386616e+00 3.5000000111509539e+00 0 0 0 +736 1 -7.9367523115846041e+01 1.4961523087884270e+00 5.2499999796953087e+00 0 0 0 +1375 1 -7.7684225945973068e+01 2.0575228154047771e+00 6.9999999901747501e+00 0 0 0 +739 1 -7.7122771320584079e+01 3.9995321207477608e-01 5.2500000175473991e+00 0 0 0 +788 1 -7.6000493997267682e+01 2.6188842314402581e+00 5.2500000045617776e+00 0 0 0 +842 1 -7.2072254730055391e+01 2.0843447209621018e+00 3.5000000023865616e+00 0 0 0 +792 1 -7.3755788961835123e+01 1.5228708371020847e+00 5.2500000136350762e+00 0 0 0 +844 1 -7.1511092599933804e+01 4.2684613805582600e-01 5.2500000312159889e+00 0 0 0 +1482 1 -7.2072254776378529e+01 2.0843446953709113e+00 7.0000000459638310e+00 0 0 0 +845 1 -7.0388741902204202e+01 2.6458247826292629e+00 5.2500000517918144e+00 0 0 0 +896 1 -6.8144055459796789e+01 1.5497988861868732e+00 5.2500000634133075e+00 0 0 0 +895 1 -6.6460540166847963e+01 2.1112757785339706e+00 3.4999999813209781e+00 0 0 0 +899 1 -6.5899367910391348e+01 4.5377264829960667e-01 5.2500000497999109e+00 0 0 0 +948 1 -6.4777024017582661e+01 2.6727522686396052e+00 5.2499999775945811e+00 0 0 0 +1535 1 -6.6460540196684732e+01 2.1112757358842846e+00 7.0000000648028511e+00 0 0 0 +950 1 -6.4215852031634640e+01 1.0152492204211911e+00 3.4999999806269528e+00 0 0 0 +952 1 -6.2532335974913707e+01 1.5767256344705136e+00 5.2499999624610725e+00 0 0 0 +1590 1 -6.4215852034880456e+01 1.0152492149898764e+00 7.0000000117919567e+00 0 0 0 +1003 1 -5.8604131739973823e+01 1.0421752884570925e+00 3.5000000171318084e+00 0 0 0 +1004 1 -6.0287647890971684e+01 4.8069892641993406e-01 5.2499999416494720e+00 0 0 0 +1005 1 -5.9165303667261519e+01 2.6996783894404706e+00 5.2499999565532809e+00 0 0 0 +1643 1 -5.8604131848095690e+01 1.0421753189747893e+00 6.9999999200040071e+00 0 0 0 +1056 1 -5.6920615544606562e+01 1.6036514978936660e+00 5.2499999811283065e+00 0 0 0 +1059 1 -5.4675927425016106e+01 5.0762462353792781e-01 5.2500000299658591e+00 0 0 0 +1108 1 -5.3553583576548967e+01 2.7266039865920595e+00 5.2500000510560154e+00 0 0 0 +1110 1 -5.2992411486219822e+01 1.0691008379453466e+00 3.5000000130844779e+00 0 0 0 +1750 1 -5.2992411539379916e+01 1.0691008499313743e+00 7.0000000768754829e+00 0 0 0 +1162 1 -4.9625379539270320e+01 2.1920534460808696e+00 3.5000000257975672e+00 0 0 0 +1112 1 -5.1308895551886110e+01 1.6305772101618055e+00 5.2500000323883649e+00 0 0 0 +1164 1 -4.9064207448410841e+01 5.3455036291995095e-01 5.2499999900488703e+00 0 0 0 +1163 1 -4.7380691476826463e+01 1.0960267721511134e+00 3.5000000243777656e+00 0 0 0 +1165 1 -4.7941863563174500e+01 2.7535298233279883e+00 5.2499999922773544e+00 0 0 0 +1214 1 -4.5697175504056979e+01 1.6575030223726956e+00 5.2499999669123554e+00 0 0 0 +657 1 -8.7753274476586228e+01 4.2422929058830796e+00 3.4999999569378928e+00 0 0 0 +643 1 -8.9214901642220099e+01 3.5993753673167106e+00 5.2499998726749268e+00 0 0 0 +655 1 -8.8549511392413180e+01 5.8993031311772564e+00 5.2499998283379092e+00 0 0 0 +1297 1 -8.7753274538288437e+01 4.2422929230019397e+00 6.9999997961195719e+00 0 0 0 +660 1 -8.6132427664162222e+01 4.8013199284056709e+00 5.2499998295941124e+00 0 0 0 +689 1 -8.3862485916499267e+01 3.6926628150399408e+00 5.2499998704177413e+00 0 0 0 +688 1 -8.2176994895062506e+01 4.2505009405036409e+00 3.5000000041676302e+00 0 0 0 +690 1 -8.2732309244052857e+01 5.9046259514385717e+00 5.2499999104234272e+00 0 0 0 +1328 1 -8.2176995055925957e+01 4.2505009482920553e+00 6.9999998661797305e+00 0 0 0 +732 1 -8.0489604665343904e+01 4.8104684898459071e+00 5.2499999858769888e+00 0 0 0 +737 1 -7.8245181951287819e+01 3.7148331109787560e+00 5.2500000186657880e+00 0 0 0 +786 1 -7.6561517330884371e+01 4.2763462599642139e+00 3.5000000268689218e+00 0 0 0 +784 1 -7.7122771324980022e+01 5.9339386695076364e+00 5.2500000211795603e+00 0 0 0 +789 1 -7.4878100505811275e+01 4.8378812153727022e+00 5.2500000194406011e+00 0 0 0 +1426 1 -7.6561517399481744e+01 4.2763462770326299e+00 7.0000000235260318e+00 0 0 0 +839 1 -7.0949918657808510e+01 4.3033299864089187e+00 3.4999999510045048e+00 0 0 0 +840 1 -7.2633424873073281e+01 3.7418509502943551e+00 5.2500000031829259e+00 0 0 0 +841 1 -7.1511092499857384e+01 5.9608315300532455e+00 5.2499999979438314e+00 0 0 0 +1479 1 -7.0949918737793880e+01 4.3033299632283484e+00 7.0000000579990473e+00 0 0 0 +892 1 -6.9266401379521781e+01 4.8648051540777244e+00 5.2500000141521994e+00 0 0 0 +897 1 -6.7021712326080078e+01 3.7687787844116096e+00 5.2500000233349455e+00 0 0 0 +944 1 -6.5899367549226753e+01 5.9877580771921837e+00 5.2500000299938954e+00 0 0 0 +947 1 -6.3093507722034467e+01 3.2342286848938793e+00 3.4999999732965028e+00 0 0 0 +949 1 -6.3654679649379162e+01 4.8917316016973249e+00 5.2500000101170006e+00 0 0 0 +998 1 -6.1971163509847663e+01 5.4532080720858609e+00 3.4999999841003655e+00 0 0 0 +1000 1 -6.1409991641045522e+01 3.7957050029884045e+00 5.2499999584320642e+00 0 0 0 +1587 1 -6.3093507730872453e+01 3.2342287344702365e+00 6.9999999632258172e+00 0 0 0 +1638 1 -6.1971163569205288e+01 5.4532080743706342e+00 6.9999999403561706e+00 0 0 0 +1001 1 -6.0287647463158009e+01 6.0146845000641358e+00 5.2499999644189144e+00 0 0 0 +1052 1 -5.8042959431021352e+01 4.9186578058957346e+00 5.2499999752861699e+00 0 0 0 +1051 1 -5.6359443316814705e+01 5.4801340333830133e+00 3.5000000070195423e+00 0 0 0 +1054 1 -5.7481787436685508e+01 3.2611546341320570e+00 3.5000000123949628e+00 0 0 0 +1057 1 -5.5798271456099208e+01 3.8226309130839748e+00 5.2500000171226642e+00 0 0 0 +1691 1 -5.6359443429694380e+01 5.4801339952256507e+00 6.9999999878932542e+00 0 0 0 +1694 1 -5.7481787549458197e+01 3.2611546305001942e+00 6.9999999486381137e+00 0 0 0 +1107 1 -5.1870067544229862e+01 3.2880802916216298e+00 3.5000000259582316e+00 0 0 0 +1104 1 -5.4675927232728434e+01 6.0416102182000646e+00 5.2500000272727974e+00 0 0 0 +1109 1 -5.2431239454867089e+01 4.9455833972638068e+00 5.2500000420864215e+00 0 0 0 +1747 1 -5.1870067581740216e+01 3.2880802567079286e+00 7.0000000739479189e+00 0 0 0 +1158 1 -5.0747723498607712e+01 5.5070597183544638e+00 3.5000000114240191e+00 0 0 0 +1159 1 -4.8503035646906511e+01 4.4110330190555720e+00 3.5000000008342989e+00 0 0 0 +1160 1 -5.0186551586458151e+01 3.8495565690886884e+00 5.2500000465354475e+00 0 0 0 +1161 1 -4.9064207606770672e+01 6.0685360764408625e+00 5.2500000102518811e+00 0 0 0 +1798 1 -5.0747723485745766e+01 5.5070596722950045e+00 7.0000000661180168e+00 0 0 0 +1211 1 -4.6819519684447869e+01 4.9725093462265670e+00 5.2499999903057377e+00 0 0 0 +1213 1 -4.6258347638893270e+01 3.3150061925850691e+00 3.5000000058200285e+00 0 0 0 +651 1 -8.9214902041910804e+01 9.1333614125033495e+00 5.2499998537843497e+00 0 0 0 +656 1 -8.7168423213708394e+01 8.0510994740325703e+00 5.2499998247719830e+00 0 0 0 +654 1 -8.6710922102861829e+01 6.4452481162524382e+00 3.4999999917397666e+00 0 0 0 +683 1 -8.5523444619527709e+01 8.6591512445070880e+00 3.5000000227923280e+00 0 0 0 +685 1 -8.4964194995144496e+01 6.9945378998368817e+00 5.2499998411295854e+00 0 0 0 +686 1 -8.3862485699552963e+01 9.2266487381463271e+00 5.2499999013683158e+00 0 0 0 +1294 1 -8.6710922178741953e+01 6.4452481575067209e+00 6.9999997216101812e+00 0 0 0 +1323 1 -8.5523444758857565e+01 8.6591511889646302e+00 6.9999997300317771e+00 0 0 0 +730 1 -8.1049144711816666e+01 6.4678959224175916e+00 3.5000000314008841e+00 0 0 0 +728 1 -8.1612971685838943e+01 8.1269949815874885e+00 5.2499999673258166e+00 0 0 0 +1370 1 -8.1049144866016547e+01 6.4678959014894604e+00 6.9999999374981554e+00 0 0 0 +727 1 -7.9929644831602815e+01 8.6877684467201330e+00 3.5000000342042790e+00 0 0 0 +733 1 -7.9367523083778863e+01 7.0301378590335295e+00 5.2500000411758654e+00 0 0 0 +780 1 -7.8245181843040712e+01 9.2488186756233439e+00 5.2500000466387018e+00 0 0 0 +1367 1 -7.9929644973547823e+01 8.6877684085259510e+00 7.0000000038686387e+00 0 0 0 +783 1 -7.5439350181609285e+01 6.4954087509151730e+00 3.4999999752360611e+00 0 0 0 +834 1 -7.4316921152132295e+01 8.7143450775919042e+00 3.4999999568182592e+00 0 0 0 +785 1 -7.6000493890177836e+01 8.1528696362807906e+00 5.2500000299474125e+00 0 0 0 +1423 1 -7.5439350233723303e+01 6.4954087546064114e+00 7.0000000268966200e+00 0 0 0 +1474 1 -7.4316921190782935e+01 8.7143450840020744e+00 7.0000000348508076e+00 0 0 0 +836 1 -7.3755788852166518e+01 7.0568562075871171e+00 5.2499999955231118e+00 0 0 0 +837 1 -7.2633424540892278e+01 9.2758362573167368e+00 5.2499999916777256e+00 0 0 0 +887 1 -6.8705228053811808e+01 8.7412876367809407e+00 3.4999999862999718e+00 0 0 0 +890 1 -6.9827570962519431e+01 6.5223067902847323e+00 3.4999999899130620e+00 0 0 0 +888 1 -7.0388741584054912e+01 8.1798101150314046e+00 5.2499999859132425e+00 0 0 0 +893 1 -6.8144055088523757e+01 7.0837842130632493e+00 5.2500000427401154e+00 0 0 0 +1527 1 -6.8705228126869343e+01 8.7412876169286893e+00 7.0000000467696069e+00 0 0 0 +1530 1 -6.9827571034446834e+01 6.5223067656996276e+00 7.0000000269842664e+00 0 0 0 +940 1 -6.7021711805944619e+01 9.3027640587741942e+00 5.2500000191543981e+00 0 0 0 +945 1 -6.4777023434519677e+01 8.2067376017718079e+00 5.2500000169617671e+00 0 0 0 +996 1 -6.2532335468054754e+01 7.1107111103818381e+00 5.2499999715651455e+00 0 0 0 +997 1 -6.1409991087965494e+01 9.3296904818516850e+00 5.2499999898140226e+00 0 0 0 +995 1 -6.0848819212733588e+01 7.6721875113166105e+00 3.5000000106371996e+00 0 0 0 +1048 1 -5.9165303186450998e+01 8.2336638829928344e+00 5.2499999773215462e+00 0 0 0 +1635 1 -6.0848819236987552e+01 7.6721874968799924e+00 6.9999999270950344e+00 0 0 0 +1102 1 -5.5237099276474062e+01 7.6991134331782423e+00 3.5000000092557051e+00 0 0 0 +1053 1 -5.6920615192827348e+01 7.1376370287628044e+00 5.2499999922244340e+00 0 0 0 +1100 1 -5.5798271115309227e+01 9.3566164569908352e+00 5.2500000075196178e+00 0 0 0 +1742 1 -5.5237099353712992e+01 7.6991134059687312e+00 7.0000000231081208e+00 0 0 0 +1105 1 -5.3553583378383806e+01 8.2605895756460459e+00 5.2500000227080337e+00 0 0 0 +1155 1 -4.9625379609614548e+01 7.7260390917407182e+00 3.5000000081020732e+00 0 0 0 +1156 1 -5.1308895532168009e+01 7.1645628336073983e+00 5.2500000286907831e+00 0 0 0 +1157 1 -5.0186551583888615e+01 9.3835422088879188e+00 5.2500000163065703e+00 0 0 0 +1795 1 -4.9625379608664858e+01 7.7260390896473243e+00 7.0000000354779148e+00 0 0 0 +1210 1 -4.7380691703271374e+01 6.6300125320820467e+00 3.5000000029891702e+00 0 0 0 +1208 1 -4.7941863720423036e+01 8.2875155469972270e+00 5.2499999975904661e+00 0 0 0 +1212 1 -4.5697175790414917e+01 7.1914888617995354e+00 5.2499999651580804e+00 0 0 0 +652 1 -8.8549511107800541e+01 1.1433289212797627e+01 5.2499998656961697e+00 0 0 0 +680 1 -8.4431591906088755e+01 1.0881318223235306e+01 3.5000000528904174e+00 0 0 0 +681 1 -8.6132427337210075e+01 1.0335305982146830e+01 5.2499998813201332e+00 0 0 0 +1320 1 -8.4431592055578392e+01 1.0881318154708891e+01 6.9999997677126009e+00 0 0 0 +724 1 -8.2732308992328839e+01 1.1438611859706940e+01 5.2499999570571871e+00 0 0 0 +778 1 -7.8805835948609698e+01 1.0906227980955194e+01 3.5000000392287465e+00 0 0 0 +729 1 -8.0489604436310913e+01 1.0344454179910985e+01 5.2500000218593899e+00 0 0 0 +1418 1 -7.8805836041107383e+01 1.0906227979391705e+01 7.0000000627923971e+00 0 0 0 +781 1 -7.7122771005127589e+01 1.1467924148942416e+01 5.2500000794199240e+00 0 0 0 +832 1 -7.4878100181802850e+01 1.0371866605616958e+01 5.2500000019943656e+00 0 0 0 +831 1 -7.3194616502054657e+01 1.0933346884414897e+01 3.4999999641897639e+00 0 0 0 +884 1 -7.1511091979172519e+01 1.1494816747041686e+01 5.2499999771035366e+00 0 0 0 +1471 1 -7.3194616554064808e+01 1.0933346905306829e+01 6.9999999992416919e+00 0 0 0 +889 1 -6.9266400899628181e+01 1.0398790357954043e+01 5.2500000075511482e+00 0 0 0 +938 1 -6.7582883184277819e+01 1.0960266507637551e+01 3.4999999979733696e+00 0 0 0 +939 1 -6.5338195293186700e+01 9.8642404732040063e+00 3.4999999952618808e+00 0 0 0 +941 1 -6.5899366929483719e+01 1.1521743349171180e+01 5.2500000336368755e+00 0 0 0 +1578 1 -6.7582883245675077e+01 1.0960266529323411e+01 7.0000000401242790e+00 0 0 0 +1579 1 -6.5338195325777988e+01 9.8642404865201865e+00 7.0000000368408033e+00 0 0 0 +990 1 -6.4215850936233053e+01 1.2083219974800203e+01 3.4999999984310981e+00 0 0 0 +992 1 -6.3654679023138470e+01 1.0425716983844895e+01 5.2500000096615214e+00 0 0 0 +1630 1 -6.4215850942948407e+01 1.2083219977788465e+01 7.0000000030190908e+00 0 0 0 +1043 1 -5.8604130833081669e+01 1.2110146298319378e+01 3.4999999791908905e+00 0 0 0 +1046 1 -5.9726474974803487e+01 9.8911669034821639e+00 3.4999999874583270e+00 0 0 0 +1044 1 -6.0287646882262109e+01 1.1548669913940214e+01 5.2499999574237766e+00 0 0 0 +1049 1 -5.8042958913980549e+01 1.0452643271408935e+01 5.2499999757857490e+00 0 0 0 +1683 1 -5.8604130891506856e+01 1.2110146315424892e+01 6.9999999466688996e+00 0 0 0 +1686 1 -5.9726475024516148e+01 9.8911668932507091e+00 6.9999999408326001e+00 0 0 0 +1099 1 -5.4114755148911868e+01 9.9180927347420376e+00 3.4999999955107559e+00 0 0 0 +1150 1 -5.2992411184214561e+01 1.2137072035243623e+01 3.5000000002595533e+00 0 0 0 +1101 1 -5.4675926924113277e+01 1.1575595769905819e+01 5.2500000242290508e+00 0 0 0 +1152 1 -5.2431239254432413e+01 1.0479568947390016e+01 5.2500000439251462e+00 0 0 0 +1739 1 -5.4114755209869749e+01 9.9180927071452878e+00 7.0000000541606164e+00 0 0 0 +1790 1 -5.2992411230311482e+01 1.2137072020256227e+01 7.0000000622629290e+00 0 0 0 +1206 1 -4.8503035749475039e+01 9.9450186860996492e+00 3.4999999932246917e+00 0 0 0 +1204 1 -4.9064207663698376e+01 1.1602521732709121e+01 5.2499999955270713e+00 0 0 0 +1846 1 -4.8503035739151812e+01 9.9450186786903672e+00 6.9999999985901731e+00 0 0 0 +1209 1 -4.6819519889158308e+01 1.0506495069172523e+01 5.2499999830382889e+00 0 0 0 +1843 1 -4.7380691848913131e+01 1.2163998185910547e+01 6.9999999842868617e+00 0 0 0 +647 1 -8.9045576339297696e+01 1.3032702262219074e+01 3.5000001180354516e+00 0 0 0 +675 1 -8.7753273982619973e+01 1.5310265163543061e+01 3.5000001868375441e+00 0 0 0 +648 1 -8.9214901243251617e+01 1.4667347682950844e+01 5.2499998510339401e+00 0 0 0 +677 1 -8.7168423306131899e+01 1.3585085929598261e+01 5.2499998581657614e+00 0 0 0 +1287 1 -8.9045576347774386e+01 1.3032702190430761e+01 6.9999996346357705e+00 0 0 0 +1315 1 -8.7753274063083779e+01 1.5310265109126567e+01 6.9999995216302429e+00 0 0 0 +682 1 -8.4964194568334278e+01 1.2528523929459311e+01 5.2499998989157808e+00 0 0 0 +720 1 -8.3862485230665428e+01 1.4760634772118326e+01 5.2499999345205604e+00 0 0 0 +719 1 -8.2176994189268015e+01 1.5318472681008208e+01 3.5000000289769568e+00 0 0 0 +722 1 -8.3289037368663557e+01 1.3097337919642563e+01 3.5000000774629516e+00 0 0 0 +725 1 -8.1612971300499225e+01 1.3660980856317103e+01 5.2500000299655474e+00 0 0 0 +1359 1 -8.2176994358623489e+01 1.5318472638968874e+01 6.9999999341072554e+00 0 0 0 +1362 1 -8.3289037542982570e+01 1.3097337871480047e+01 6.9999998298143220e+00 0 0 0 +775 1 -7.7684225372608893e+01 1.3125493825876989e+01 3.5000000085645633e+00 0 0 0 +776 1 -7.9367522704671956e+01 1.2564123491913156e+01 5.2500000679111505e+00 0 0 0 +777 1 -7.8245181259778150e+01 1.4782804223827950e+01 5.2500000603778885e+00 0 0 0 +1415 1 -7.7684225432804226e+01 1.3125493824514018e+01 7.0000000716250046e+00 0 0 0 +826 1 -7.6561516576101084e+01 1.5344317180835731e+01 3.5000000099510138e+00 0 0 0 +828 1 -7.6000493387341862e+01 1.3686855077165804e+01 5.2500000223798802e+00 0 0 0 +1466 1 -7.6561516583507583e+01 1.5344317202775768e+01 7.0000000424498214e+00 0 0 0 +879 1 -7.0949917674592029e+01 1.5371300428719872e+01 3.4999999517397926e+00 0 0 0 +882 1 -7.2072253980901294e+01 1.3152315282504267e+01 3.4999999659997094e+00 0 0 0 +833 1 -7.3755788359299487e+01 1.2590841503169164e+01 5.2499999915516122e+00 0 0 0 +880 1 -7.2633424004323160e+01 1.4809821500964322e+01 5.2499999619275748e+00 0 0 0 +1519 1 -7.0949917754502252e+01 1.5371300425572006e+01 7.0000000002705658e+00 0 0 0 +1522 1 -7.2072254013856181e+01 1.3152315261848061e+01 6.9999999888745092e+00 0 0 0 +885 1 -7.0388741006731820e+01 1.3713795274039390e+01 5.2500000022572486e+00 0 0 0 +936 1 -6.8144054494380725e+01 1.2617769423539210e+01 5.2500000215776943e+00 0 0 0 +935 1 -6.6460539076395307e+01 1.3179246324579115e+01 3.5000000050120943e+00 0 0 0 +937 1 -6.7021711176257142e+01 1.4836749276147932e+01 5.2500000140346588e+00 0 0 0 +988 1 -6.4777022841563138e+01 1.3740722934212386e+01 5.2499999837023932e+00 0 0 0 +1575 1 -6.6460539126006665e+01 1.3179246314158840e+01 7.0000000258768527e+00 0 0 0 +987 1 -6.3093506519526372e+01 1.4302199434525184e+01 3.4999999687939001e+00 0 0 0 +993 1 -6.2532334822960046e+01 1.2644696473103522e+01 5.2499999783646496e+00 0 0 0 +1040 1 -6.1409990434523095e+01 1.4863675865048044e+01 5.2499999445990904e+00 0 0 0 +1627 1 -6.3093506510917017e+01 1.4302199469462929e+01 6.9999999790436940e+00 0 0 0 +1045 1 -5.9165302625239875e+01 1.3767649350698314e+01 5.2499999500242263e+00 0 0 0 +1094 1 -5.7481786561742958e+01 1.4329125638500297e+01 3.4999999640183681e+00 0 0 0 +1096 1 -5.6920614744094415e+01 1.2671622530949154e+01 5.2499999780425224e+00 0 0 0 +1097 1 -5.5798270758542209e+01 1.4890601976847876e+01 5.2499999913485889e+00 0 0 0 +1734 1 -5.7481786633145859e+01 1.4329125631375687e+01 6.9999999657490415e+00 0 0 0 +1147 1 -5.1870067329780753e+01 1.4356051538979518e+01 3.5000000204949937e+00 0 0 0 +1148 1 -5.3553583162781038e+01 1.3794575137930812e+01 5.2500000447565123e+00 0 0 0 +1787 1 -5.1870067374042193e+01 1.4356051475914152e+01 7.0000000625312104e+00 0 0 0 +1153 1 -5.1308895436902020e+01 1.2698548453537352e+01 5.2500000304215861e+00 0 0 0 +1200 1 -5.0186551576198681e+01 1.4917527865234083e+01 5.2500000464068473e+00 0 0 0 +1842 1 -4.9625379631460596e+01 1.3260024736287940e+01 7.0000000132546019e+00 0 0 0 +1839 1 -4.8503035806850036e+01 1.5479004335100480e+01 7.0000000198030117e+00 0 0 0 +1205 1 -4.7941863844180077e+01 1.3821501215838477e+01 5.2499999972655971e+00 0 0 0 +1249 1 -4.5697175998881391e+01 1.2725474595845929e+01 5.2500000028798937e+00 0 0 0 +1888 1 -4.6258348019395463e+01 1.4382977633427966e+01 7.0000000018266482e+00 0 0 0 +673 1 -8.8549510772710988e+01 1.6967275333020464e+01 5.2499998765585598e+00 0 0 0 +672 1 -8.6710921376427621e+01 1.7513220433592863e+01 3.5000000633195545e+00 0 0 0 +678 1 -8.6132426996819973e+01 1.5869292122497173e+01 5.2499998797226919e+00 0 0 0 +716 1 -8.4964194100405010e+01 1.8062510085824250e+01 5.2499998948375657e+00 0 0 0 +1312 1 -8.6710921478796692e+01 1.7513220367564095e+01 6.9999997347122793e+00 0 0 0 +721 1 -8.2732308383552819e+01 1.6972597833282759e+01 5.2499999633109278e+00 0 0 0 +770 1 -8.1049143767070703e+01 1.7535867522469495e+01 3.5000000089716234e+00 0 0 0 +1410 1 -8.1049143895859387e+01 1.7535867490648936e+01 7.0000000061609784e+00 0 0 0 +772 1 -8.0489603874341370e+01 1.5878439954384456e+01 5.2500000389175456e+00 0 0 0 +773 1 -7.9367522069007308e+01 1.8098109198615184e+01 5.2500000494911543e+00 0 0 0 +823 1 -7.5439349184233450e+01 1.7563379547148667e+01 3.4999999663168451e+00 0 0 0 +824 1 -7.7122770381835736e+01 1.7001909655545440e+01 5.2500000204238715e+00 0 0 0 +829 1 -7.4878099616678057e+01 1.5905851947562956e+01 5.2500000011458186e+00 0 0 0 +1463 1 -7.5439349188582952e+01 1.7563379577184122e+01 7.0000000032618575e+00 0 0 0 +876 1 -7.3755787769282776e+01 1.8124826856752779e+01 5.2499999711144634e+00 0 0 0 +881 1 -7.1511091433157574e+01 1.7028802004044408e+01 5.2499999778940776e+00 0 0 0 +930 1 -6.9827569848759211e+01 1.7590277196887527e+01 3.5000000127412556e+00 0 0 0 +932 1 -6.9266400308114996e+01 1.5932775571126772e+01 5.2499999935890935e+00 0 0 0 +933 1 -6.8144053937342335e+01 1.8151754613981407e+01 5.2500000252594425e+00 0 0 0 +1570 1 -6.9827569918130507e+01 1.7590277167887646e+01 6.9999999616081761e+00 0 0 0 +984 1 -6.5899366326593253e+01 1.7055728596052212e+01 5.2500000264702740e+00 0 0 0 +1038 1 -6.1971162309026141e+01 1.6521178870950457e+01 3.4999999640846742e+00 0 0 0 +989 1 -6.3654678403276392e+01 1.5959702311266888e+01 5.2499999869797849e+00 0 0 0 +1036 1 -6.2532334258622626e+01 1.8178681906396672e+01 5.2499999691669279e+00 0 0 0 +1678 1 -6.1971162317653636e+01 1.6521178893741034e+01 6.9999999414637299e+00 0 0 0 +1035 1 -6.0848818080927693e+01 1.8740158461061061e+01 3.4999999656988501e+00 0 0 0 +1041 1 -6.0287646312025913e+01 1.7082655410004591e+01 5.2499999367527996e+00 0 0 0 +1092 1 -5.8042958463220430e+01 1.5986628789798914e+01 5.2499999618830726e+00 0 0 0 +1675 1 -6.0848818085291640e+01 1.8740158421801148e+01 6.9999999345219086e+00 0 0 0 +1091 1 -5.6359442550844022e+01 1.6548105112327232e+01 3.4999999533549682e+00 0 0 0 +1142 1 -5.5237098665594743e+01 1.8767084656053491e+01 3.4999999837358526e+00 0 0 0 +1093 1 -5.6920614369415475e+01 1.8205608153091173e+01 5.2499999723874486e+00 0 0 0 +1731 1 -5.6359442645497339e+01 1.6548105080124891e+01 6.9999999991648281e+00 0 0 0 +1782 1 -5.5237098729294928e+01 1.8767084614856287e+01 7.0000000253105705e+00 0 0 0 +1144 1 -5.4675926653500738e+01 1.7109581382281796e+01 5.2500000144738337e+00 0 0 0 +1149 1 -5.2431239142951362e+01 1.6013554622156274e+01 5.2500000384319394e+00 0 0 0 +1196 1 -5.1308895331736117e+01 1.8232534172757429e+01 5.2500000455793625e+00 0 0 0 +1201 1 -4.9064207629740089e+01 1.7136507426120058e+01 5.2500000340623352e+00 0 0 0 +1835 1 -4.9625379539469066e+01 1.8794010462708556e+01 7.0000000478102509e+00 0 0 0 +1838 1 -5.0747723369808448e+01 1.6575030977474732e+01 7.0000000598814092e+00 0 0 0 +1246 1 -4.6819519970720052e+01 1.6040480775664903e+01 5.2500000034908858e+00 0 0 0 +1247 1 -4.5697176013485560e+01 1.8259460334385377e+01 5.2499999907970016e+00 0 0 0 +1885 1 -4.7380691862292657e+01 1.7697983924893748e+01 6.9999999818162211e+00 0 0 0 +669 1 -8.9214901603263826e+01 2.0201333775643803e+01 5.2499999370543229e+00 0 0 0 +674 1 -8.7168422655758917e+01 1.9119071896009295e+01 5.2499998837325652e+00 0 0 0 +712 1 -8.6132426381207523e+01 2.1403278169149207e+01 5.2499999268943176e+00 0 0 0 +714 1 -8.5523443660756740e+01 1.9727123444506105e+01 3.5000000016936514e+00 0 0 0 +717 1 -8.3862484582919024e+01 2.0294620782458455e+01 5.2499999434034086e+00 0 0 0 +1354 1 -8.5523443767187970e+01 1.9727123345022591e+01 6.9999998278837925e+00 0 0 0 +711 1 -8.4431590792361959e+01 2.1949290316567517e+01 3.4999999784627134e+00 0 0 0 +1351 1 -8.4431590921528013e+01 2.1949290213128510e+01 6.9999999368095649e+00 0 0 0 +768 1 -8.1612970607347336e+01 1.9194966709949387e+01 5.2499999931974495e+00 0 0 0 +818 1 -7.8805834676202565e+01 2.1974199290028732e+01 3.5000000323487970e+00 0 0 0 +769 1 -8.0489603223113562e+01 2.1412425754677539e+01 5.2500000311238955e+00 0 0 0 +767 1 -7.9929643691322781e+01 1.9755739889743179e+01 3.5000000052262581e+00 0 0 0 +820 1 -7.8245180674504610e+01 2.0316789870599735e+01 5.2500000391978201e+00 0 0 0 +1407 1 -7.9929643803759092e+01 1.9755739864490479e+01 7.0000000533640243e+00 0 0 0 +1458 1 -7.8805834739125757e+01 2.1974199308214885e+01 7.0000000845861408e+00 0 0 0 +825 1 -7.6000492764370847e+01 1.9220840531891572e+01 5.2500000136671483e+00 0 0 0 +872 1 -7.4878098974033037e+01 2.1439837434707762e+01 5.2499999867263201e+00 0 0 0 +874 1 -7.4316919987350403e+01 1.9782315809884238e+01 3.4999999709882861e+00 0 0 0 +1514 1 -7.4316920011812940e+01 1.9782315829500430e+01 6.9999999761993337e+00 0 0 0 +877 1 -7.2633423384996860e+01 2.0343806854643642e+01 5.2499999623724261e+00 0 0 0 +871 1 -7.3194615311330850e+01 2.2001317583524202e+01 3.4999999875008871e+00 0 0 0 +1511 1 -7.3194615323849263e+01 2.2001317620170592e+01 6.9999999543723055e+00 0 0 0 +927 1 -6.8705226932429326e+01 1.9809258053885230e+01 3.5000000063157759e+00 0 0 0 +928 1 -7.0388740455788763e+01 1.9247780546673120e+01 5.2499999681393650e+00 0 0 0 +929 1 -6.9266399801939784e+01 2.1466760848219270e+01 5.2500000031015457e+00 0 0 0 +1567 1 -6.8705226988102581e+01 1.9809258038875015e+01 7.0000000240669937e+00 0 0 0 +979 1 -6.5338194191988890e+01 2.0932211097993552e+01 3.5000000231720323e+00 0 0 0 +980 1 -6.7021710663646971e+01 2.0370734553417154e+01 5.2500000345801050e+00 0 0 0 +985 1 -6.4777022253902601e+01 1.9274708246943884e+01 5.2500000132201770e+00 0 0 0 +978 1 -6.7582882153431015e+01 2.2028237048464035e+01 3.5000000254997898e+00 0 0 0 +1619 1 -6.5338194208312331e+01 2.0932211094912457e+01 7.0000000224777343e+00 0 0 0 +1618 1 -6.7582882180473902e+01 2.2028237041001056e+01 7.0000000215180611e+00 0 0 0 +1032 1 -6.3654677977912804e+01 2.1493687823538263e+01 5.2499999948146030e+00 0 0 0 +1037 1 -6.1409989983734278e+01 2.0397661481119780e+01 5.2499999555855004e+00 0 0 0 +1086 1 -5.9726474028274652e+01 2.0959138063217292e+01 3.4999999668353152e+00 0 0 0 +1088 1 -5.9165302193804187e+01 1.9301634971794972e+01 5.2499999296891362e+00 0 0 0 +1089 1 -5.8042958117981016e+01 2.1520614564456022e+01 5.2499999626535017e+00 0 0 0 +1726 1 -5.9726474039980850e+01 2.0959138051942332e+01 6.9999999220141689e+00 0 0 0 +1140 1 -5.5798270500081642e+01 2.0424587738524053e+01 5.2500000058434617e+00 0 0 0 +1139 1 -5.4114754681157891e+01 2.0986064142520842e+01 3.4999999887056168e+00 0 0 0 +1145 1 -5.3553582935034470e+01 1.9328560878577097e+01 5.2500000260713504e+00 0 0 0 +1192 1 -5.2431238928515874e+01 2.1547540418330950e+01 5.2500000632045030e+00 0 0 0 +1834 1 -5.1870067169094177e+01 1.9890037262656698e+01 7.0000000501347124e+00 0 0 0 +1779 1 -5.4114754738231696e+01 2.0986064113371114e+01 7.0000000599012884e+00 0 0 0 +1197 1 -5.0186551438001992e+01 2.0451513649581415e+01 5.2500000338582895e+00 0 0 0 +1831 1 -5.0747723241694864e+01 2.2109016834140654e+01 7.0000000331536700e+00 0 0 0 +1881 1 -4.8503035685917325e+01 2.1012990162537115e+01 7.0000000260192685e+00 0 0 0 +1243 1 -4.7941863770836100e+01 1.9355486948295848e+01 5.2500000179212352e+00 0 0 0 +1244 1 -4.6819519896968913e+01 2.1574466555832906e+01 5.2499999887262216e+00 0 0 0 +1882 1 -4.6258347957383180e+01 1.9916963402686381e+01 7.0000000045221640e+00 0 0 0 +665 1 -8.9045575975246948e+01 2.4100674402808000e+01 3.5000000336258328e+00 0 0 0 +670 1 -8.8549510223210106e+01 2.2501261359853697e+01 5.2499999321284507e+00 0 0 0 +708 1 -8.7168422311726019e+01 2.4653057939649848e+01 5.2499999159607418e+00 0 0 0 +1305 1 -8.9045575986151789e+01 2.4100674310902605e+01 6.9999998039086000e+00 0 0 0 +713 1 -8.4964193553527679e+01 2.3596496076946266e+01 5.2499999493625049e+00 0 0 0 +762 1 -8.3289036147077397e+01 2.4165309834041480e+01 3.5000000090025014e+00 0 0 0 +764 1 -8.2732307761286236e+01 2.2506583751016560e+01 5.2499999860448145e+00 0 0 0 +765 1 -8.1612970014235742e+01 2.4728952598476099e+01 5.2500000736365244e+00 0 0 0 +1402 1 -8.3289036298120550e+01 2.4165309791563701e+01 7.0000000190506135e+00 0 0 0 +815 1 -7.7684224086981672e+01 2.4193465046460936e+01 3.5000000549360379e+00 0 0 0 +816 1 -7.9367521423297873e+01 2.3632094925171902e+01 5.2500000859215179e+00 0 0 0 +1455 1 -7.7684224105727893e+01 2.4193465053114302e+01 7.0000000726450349e+00 0 0 0 +821 1 -7.7122769756279553e+01 2.2535895263822944e+01 5.2500000616890956e+00 0 0 0 +868 1 -7.6000492148869327e+01 2.4754826139984441e+01 5.2500000208247100e+00 0 0 0 +873 1 -7.3755787159001855e+01 2.3658812341034537e+01 5.2499999793609211e+00 0 0 0 +922 1 -7.2072252883570030e+01 2.4220286028736872e+01 3.4999999829878483e+00 0 0 0 +924 1 -7.1511090846976742e+01 2.2562787355050009e+01 5.2499999685079555e+00 0 0 0 +1562 1 -7.2072252862316802e+01 2.4220286011117697e+01 6.9999999519905414e+00 0 0 0 +925 1 -7.0388740010739738e+01 2.4781765983006089e+01 5.2499999794600472e+00 0 0 0 +976 1 -6.8144053560814910e+01 2.3685740027649405e+01 5.2500000060306347e+00 0 0 0 +975 1 -6.6460538253435658e+01 2.4247217074005864e+01 3.5000000027595486e+00 0 0 0 +981 1 -6.5899365925581293e+01 2.2589714016844905e+01 5.2500000405849683e+00 0 0 0 +1028 1 -6.4777022097313818e+01 2.4808693846439436e+01 5.2499999846688983e+00 0 0 0 +1615 1 -6.6460538261455042e+01 2.4247217031974035e+01 7.0000000101609769e+00 0 0 0 +1030 1 -6.4215850034462022e+01 2.3151190843353977e+01 3.5000000309338453e+00 0 0 0 +1033 1 -6.2532334019390461e+01 2.3712667591392442e+01 5.2499999697092017e+00 0 0 0 +1670 1 -6.4215850010872586e+01 2.3151190833475372e+01 6.9999999862310824e+00 0 0 0 +1083 1 -5.8604130115596625e+01 2.3178117745145215e+01 3.4999999564451572e+00 0 0 0 +1084 1 -6.0287646018695014e+01 2.2616641149045250e+01 5.2499999532593931e+00 0 0 0 +1085 1 -5.9165302021188843e+01 2.4835620904176693e+01 5.2499999368347421e+00 0 0 0 +1723 1 -5.8604130161362697e+01 2.3178117708510630e+01 6.9999999582327312e+00 0 0 0 +1136 1 -5.6920614183331047e+01 2.3739594101665016e+01 5.2499999666884634e+00 0 0 0 +1775 1 -5.5237098566675584e+01 2.4301070604584325e+01 7.0000000133200677e+00 0 0 0 +1141 1 -5.4675926458619806e+01 2.2643567294290353e+01 5.2500000307172927e+00 0 0 0 +1188 1 -5.3553582878826305e+01 2.4862546862206770e+01 5.2500000480830424e+00 0 0 0 +1830 1 -5.2992410879561476e+01 2.3205043617309148e+01 7.0000000666103892e+00 0 0 0 +1193 1 -5.1308895204320422e+01 2.3766520072676741e+01 5.2500000272018230e+00 0 0 0 +1239 1 -4.9064207575137011e+01 2.2670493280480038e+01 5.2500000135556570e+00 0 0 0 +1877 1 -4.9625379489229502e+01 2.4327996402364725e+01 6.9999999963197688e+00 0 0 0 +1240 1 -4.7941863773898696e+01 2.4889472853779104e+01 5.2499999717082506e+00 0 0 0 +1271 1 -4.5697175973481265e+01 2.3793446147209110e+01 5.2499999626993885e+00 0 0 0 +1878 1 -4.7380691805531335e+01 2.3231969737851781e+01 7.0000000029112286e+00 0 0 0 +706 1 -8.7753273163205264e+01 2.6378237147152593e+01 3.4999999301882045e+00 0 0 0 +666 1 -8.9214901434026800e+01 2.5735319773733732e+01 5.2499998957655514e+00 0 0 0 +704 1 -8.8549509933515168e+01 2.8035247296888937e+01 5.2499998897516376e+00 0 0 0 +1346 1 -8.7753273271936024e+01 2.6378237073106991e+01 6.9999999147364091e+00 0 0 0 +709 1 -8.6132425947823478e+01 2.6937264105724704e+01 5.2499999318650934e+00 0 0 0 +760 1 -8.3862484074193816e+01 2.5828606735417438e+01 5.2500000164228888e+00 0 0 0 +759 1 -8.2176992957300456e+01 2.6386444488822995e+01 3.5000000356282808e+00 0 0 0 +761 1 -8.2732307271620854e+01 2.8040569699004173e+01 5.2500000577038222e+00 0 0 0 +1399 1 -8.2176993074159213e+01 2.6386444444585667e+01 7.0000000987724498e+00 0 0 0 +812 1 -8.0489602631365671e+01 2.6946411587399144e+01 5.2500000923002474e+00 0 0 0 +817 1 -7.8245180008913394e+01 2.5850775574509790e+01 5.2500000713727220e+00 0 0 0 +864 1 -7.7122769243735917e+01 2.8069880995484251e+01 5.2500000151117279e+00 0 0 0 +866 1 -7.6561515378069700e+01 2.6412288362605601e+01 3.5000000583586242e+00 0 0 0 +869 1 -7.4878098484185188e+01 2.6973823066890215e+01 5.2499999796682841e+00 0 0 0 +1506 1 -7.6561515313036011e+01 2.6412288398943577e+01 7.0000000287899269e+00 0 0 0 +919 1 -7.0949916800642654e+01 2.6439271309726266e+01 3.4999999408154259e+00 0 0 0 +920 1 -7.2633422941400354e+01 2.5877792397164548e+01 5.2499999442950633e+00 0 0 0 +921 1 -7.1511090668119948e+01 2.8096773059096943e+01 5.2499999418814030e+00 0 0 0 +1559 1 -7.0949916815561181e+01 2.6439271301685036e+01 6.9999999472867946e+00 0 0 0 +972 1 -6.9266399615830778e+01 2.7000746448361159e+01 5.2499999570789431e+00 0 0 0 +977 1 -6.7021710520845915e+01 2.5904720118405187e+01 5.2499999901893366e+00 0 0 0 +1024 1 -6.5899366022672794e+01 2.8123699738863689e+01 5.2499999802819453e+00 0 0 0 +1027 1 -6.3093505890785252e+01 2.5370170628809312e+01 3.4999999747928010e+00 0 0 0 +1078 1 -6.1971162010562388e+01 2.7589150382092988e+01 3.4999999749268382e+00 0 0 0 +1029 1 -6.3654678003777256e+01 2.7027673560372229e+01 5.2499999670315134e+00 0 0 0 +1080 1 -6.1409989918981857e+01 2.5931647311277061e+01 5.2499999271522375e+00 0 0 0 +1667 1 -6.3093505893298861e+01 2.5370170617087847e+01 6.9999999683343193e+00 0 0 0 +1718 1 -6.1971162000392141e+01 2.7589150412848845e+01 6.9999999435549469e+00 0 0 0 +1081 1 -6.0287646107232838e+01 2.8150627165059777e+01 5.2499999479758825e+00 0 0 0 +1132 1 -5.8042958151775842e+01 2.7054600644076437e+01 5.2499999880047516e+00 0 0 0 +1131 1 -5.6359442354322582e+01 2.7616077096590050e+01 3.4999999399908170e+00 0 0 0 +1134 1 -5.7481786111088681e+01 2.5397097337189162e+01 3.4999999677081388e+00 0 0 0 +1137 1 -5.5798270436788364e+01 2.5958573788196354e+01 5.2500000040271964e+00 0 0 0 +1771 1 -5.6359442434952449e+01 2.7616077065722244e+01 7.0000000151398787e+00 0 0 0 +1774 1 -5.7481786143388220e+01 2.5397097364182507e+01 6.9999999701195650e+00 0 0 0 +1184 1 -5.4675926533013190e+01 2.8177553457379915e+01 5.2499999910184609e+00 0 0 0 +1189 1 -5.2431239016159218e+01 2.7081526564828618e+01 5.2500000194146557e+00 0 0 0 +1826 1 -5.4114754716815845e+01 2.6520050201809632e+01 7.0000000217008349e+00 0 0 0 +1827 1 -5.1870067171028815e+01 2.5424023282164022e+01 7.0000000467961332e+00 0 0 0 +1235 1 -5.0186551468230597e+01 2.5985499654816479e+01 5.2500000184227513e+00 0 0 0 +1236 1 -4.9064207604432660e+01 2.8204479346018218e+01 5.2499999906500534e+00 0 0 0 +1874 1 -4.8503035740621300e+01 2.6546976132141403e+01 7.0000000000210516e+00 0 0 0 +1873 1 -5.0747723316150839e+01 2.7643002939448099e+01 7.0000000183917530e+00 0 0 0 +1268 1 -4.6819519914786639e+01 2.7108452515084807e+01 5.2499999644687625e+00 0 0 0 +1910 1 -4.6258347954720989e+01 2.5450949295918548e+01 6.9999999902194991e+00 0 0 0 +7714 1 -4.5136004036641971e+01 2.7669928961205045e+01 6.9999999899405587e+00 0 0 0 +700 1 -8.9214901081963816e+01 3.1269305644297663e+01 5.2499999373334605e+00 0 0 0 +705 1 -8.7168422147982724e+01 3.0187043961892012e+01 5.2499999664306873e+00 0 0 0 +703 1 -8.6710920461648485e+01 2.8581192382388188e+01 3.4999999462502447e+00 0 0 0 +754 1 -8.5523442810844358e+01 3.0795095376481250e+01 3.4999999771080494e+00 0 0 0 +756 1 -8.4964193106149153e+01 2.9130481989981149e+01 5.2500000026564244e+00 0 0 0 +757 1 -8.3862483664777727e+01 3.1362592695066994e+01 5.2500000224656977e+00 0 0 0 +1343 1 -8.6710920540968587e+01 2.8581192338697651e+01 6.9999999926490037e+00 0 0 0 +1394 1 -8.5523442875522505e+01 3.0795095295911469e+01 7.0000000583343560e+00 0 0 0 +810 1 -8.1049142627828004e+01 2.8603839239161328e+01 3.5000000488077259e+00 0 0 0 +808 1 -8.1612969571153329e+01 3.0262938534140122e+01 5.2500000431860077e+00 0 0 0 +1450 1 -8.1049142658836544e+01 2.8603839223210823e+01 7.0000001017190296e+00 0 0 0 +807 1 -7.9929642726109449e+01 3.0823711573608147e+01 3.5000000255182182e+00 0 0 0 +813 1 -7.9367520926662735e+01 2.9166080793968604e+01 5.2500000624330472e+00 0 0 0 +860 1 -7.8245179764828762e+01 3.1384761488761772e+01 5.2500000025629827e+00 0 0 0 +1447 1 -7.9929642694534067e+01 3.0823711587110644e+01 7.0000000621096268e+00 0 0 0 +863 1 -7.5439348181397463e+01 2.8631350781698561e+01 3.4999999869979472e+00 0 0 0 +865 1 -7.6000491868708451e+01 3.0288811938154375e+01 5.2499999703794851e+00 0 0 0 +914 1 -7.4316919301714790e+01 3.0850287202160342e+01 3.4999999441970253e+00 0 0 0 +1554 1 -7.4316919262281687e+01 3.0850287214305133e+01 6.9999999456999156e+00 0 0 0 +1503 1 -7.5439348098575238e+01 2.8631350817324034e+01 6.9999999677092228e+00 0 0 0 +916 1 -7.3755786908091096e+01 2.9192798076110613e+01 5.2499999328657605e+00 0 0 0 +917 1 -7.2633422914326076e+01 3.1411778312168007e+01 5.2499999101932691e+00 0 0 0 +967 1 -6.8705226815994138e+01 3.0877229451966532e+01 3.4999999801346218e+00 0 0 0 +968 1 -7.0388740078296067e+01 3.0315751859242209e+01 5.2499999195439653e+00 0 0 0 +970 1 -6.9827569341947267e+01 2.8658248307092919e+01 3.4999999653134397e+00 0 0 0 +973 1 -6.8144053627561448e+01 2.9219725786615999e+01 5.2499999702819862e+00 0 0 0 +1607 1 -6.8705226843206589e+01 3.0877229420265500e+01 6.9999999719885722e+00 0 0 0 +1610 1 -6.9827569361138970e+01 2.8658248267386078e+01 6.9999999334912069e+00 0 0 0 +1020 1 -6.7021710751851131e+01 3.1438706025446752e+01 5.2500000065237726e+00 0 0 0 +1025 1 -6.4777022328455928e+01 3.0342679721651098e+01 5.2499999908123476e+00 0 0 0 +1662 1 -6.6460538424606966e+01 2.9781202879681480e+01 6.9999999979305381e+00 0 0 0 +1076 1 -6.2532334187322775e+01 2.9246653498900056e+01 5.2499999688782637e+00 0 0 0 +1077 1 -6.1409990253397353e+01 3.1465633370861841e+01 5.2499999660096313e+00 0 0 0 +1075 1 -6.0848818093875977e+01 2.9808130297962826e+01 3.4999999705769764e+00 0 0 0 +1128 1 -5.9165302297706880e+01 3.0369607021743882e+01 5.2499999299951572e+00 0 0 0 +1715 1 -6.0848818102101610e+01 2.9808130260145578e+01 6.9999999414979284e+00 0 0 0 +1133 1 -5.6920614345684413e+01 2.9273580287032278e+01 5.2499999722539084e+00 0 0 0 +1180 1 -5.5798270720998580e+01 3.1492560101733300e+01 5.2499999994584838e+00 0 0 0 +1767 1 -5.7481786392351694e+01 3.0931083572750747e+01 6.9999999766951380e+00 0 0 0 +1822 1 -5.5237098749299079e+01 2.9835056866164248e+01 7.0000000050409783e+00 0 0 0 +1185 1 -5.3553583030551344e+01 3.0396533155517520e+01 5.2500000049786779e+00 0 0 0 +1823 1 -5.2992410991001925e+01 2.8739029819067433e+01 7.0000000058306879e+00 0 0 0 +1869 1 -5.1870067282295352e+01 3.0958009572991969e+01 7.0000000062070544e+00 0 0 0 +1231 1 -5.1308895364203252e+01 2.9300506301673572e+01 5.2499999994727125e+00 0 0 0 +1232 1 -5.0186551569997967e+01 3.1519485926025272e+01 5.2500000070385537e+00 0 0 0 +1870 1 -4.9625379584802324e+01 2.9861982585758465e+01 7.0000000124078250e+00 0 0 0 +1265 1 -4.7941863812781584e+01 3.0423458991451355e+01 5.2500000018072450e+00 0 0 0 +1269 1 -4.5697175981073237e+01 2.9327432152506741e+01 5.2499999662448467e+00 0 0 0 +1904 1 -4.6258347980716948e+01 3.0984935384444459e+01 6.9999999893688658e+00 0 0 0 +1907 1 -4.7380691862447463e+01 2.8765955822229632e+01 6.9999999627421889e+00 0 0 0 +701 1 -8.8549509724979202e+01 3.3569233150579400e+01 5.2500000109286526e+00 0 0 0 +751 1 -8.4431590086714095e+01 3.3017262220449041e+01 3.4999999809714337e+00 0 0 0 +752 1 -8.6132425757806345e+01 3.2471250056617585e+01 5.2500000244340805e+00 0 0 0 +1391 1 -8.4431590098574048e+01 3.3017262207462366e+01 7.0000000789827705e+00 0 0 0 +804 1 -8.2732306977111733e+01 3.3574555706764599e+01 5.2500000203225969e+00 0 0 0 +809 1 -8.0489602363605044e+01 3.2480397589653734e+01 5.2500000199753147e+00 0 0 0 +858 1 -7.8805833952987797e+01 3.3042171053697814e+01 3.4999999914360962e+00 0 0 0 +1498 1 -7.8805833910040562e+01 3.3042171082115779e+01 7.0000000251835850e+00 0 0 0 +861 1 -7.7122769175021304e+01 3.3603866999705204e+01 5.2499999842008798e+00 0 0 0 +912 1 -7.4878098433603725e+01 3.2507808998314459e+01 5.2499999297333879e+00 0 0 0 +911 1 -7.3194615023011423e+01 3.3069289203683859e+01 3.4999999728811551e+00 0 0 0 +964 1 -7.1511090808218384e+01 3.3630759069405670e+01 5.2499999563926671e+00 0 0 0 +1551 1 -7.3194614997380882e+01 3.3069289226391049e+01 6.9999999276430085e+00 0 0 0 +969 1 -6.9266399842325015e+01 3.2534732443651322e+01 5.2499999763927763e+00 0 0 0 +1019 1 -6.5338194455726637e+01 3.2000182734153796e+01 3.5000000327287357e+00 0 0 0 +1018 1 -6.7582882436270538e+01 3.3096208757693049e+01 3.5000000172985080e+00 0 0 0 +1021 1 -6.5899366388530794e+01 3.3657685802765734e+01 5.2500000356415946e+00 0 0 0 +1658 1 -6.7582882455641766e+01 3.3096208733090414e+01 6.9999999971214066e+00 0 0 0 +1659 1 -6.5338194478119121e+01 3.2000182703764956e+01 6.9999999941336162e+00 0 0 0 +1070 1 -6.4215850635996532e+01 3.4219162775119401e+01 3.5000000296508151e+00 0 0 0 +1072 1 -6.3654678381867456e+01 3.2561659588766908e+01 5.2499999939808335e+00 0 0 0 +1710 1 -6.4215850633065600e+01 3.4219162735181172e+01 6.9999999859150952e+00 0 0 0 +1123 1 -5.8604130706359733e+01 3.4246090096487769e+01 3.4999999646145850e+00 0 0 0 +1126 1 -5.9726474356775903e+01 3.2027110180149556e+01 3.4999999587910207e+00 0 0 0 +1124 1 -6.0287646573816211e+01 3.3684613333477841e+01 5.2499999658253813e+00 0 0 0 +1129 1 -5.8042958495275137e+01 3.2588586881807075e+01 5.2499999659535144e+00 0 0 0 +1763 1 -5.8604130734449392e+01 3.4246090069662529e+01 6.9999999484994850e+00 0 0 0 +1766 1 -5.9726474359709719e+01 3.2027110194648010e+01 6.9999999507130664e+00 0 0 0 +1818 1 -5.6359442721396334e+01 3.3150063364793844e+01 6.9999999726497713e+00 0 0 0 +1181 1 -5.4675926858761308e+01 3.3711539834186368e+01 5.2499999992639514e+00 0 0 0 +1227 1 -5.2431239150537252e+01 3.2615512877356878e+01 5.2500000306164045e+00 0 0 0 +1819 1 -5.4114754963643286e+01 3.2054036553563179e+01 7.0000000285721455e+00 0 0 0 +1865 1 -5.2992411213329369e+01 3.4273016204329210e+01 7.0000000399291737e+00 0 0 0 +1261 1 -4.9064207774767944e+01 3.3738465671232134e+01 5.2499999933816799e+00 0 0 0 +1866 1 -5.0747723475712583e+01 3.3176989277492233e+01 6.9999999940859832e+00 0 0 0 +1903 1 -4.8503035807634724e+01 3.2080962369520527e+01 7.0000000179564266e+00 0 0 0 +1266 1 -4.6819519964059239e+01 3.2642438695621593e+01 5.2499999838167373e+00 0 0 0 +7748 1 -4.5136004062007316e+01 3.3203915082258796e+01 6.9999999856462072e+00 0 0 0 +1900 1 -4.7380691923439826e+01 3.4299942056306328e+01 7.0000000178148634e+00 0 0 0 +696 1 -8.9045575746868536e+01 3.5168646322146962e+01 3.4999999800929760e+00 0 0 0 +697 1 -8.9214901437729452e+01 3.6803291648455676e+01 5.2500000270384177e+00 0 0 0 +746 1 -8.7753272922044118e+01 3.7446209146734603e+01 3.4999999479952741e+00 0 0 0 +748 1 -8.7168421862935872e+01 3.5721029820955245e+01 5.2500000175143491e+00 0 0 0 +1336 1 -8.9045575761725402e+01 3.5168646179923677e+01 7.0000000487022280e+00 0 0 0 +1386 1 -8.7753272981523324e+01 3.7446209024149418e+01 7.0000001388106776e+00 0 0 0 +753 1 -8.4964193000305016e+01 3.4664468091889994e+01 5.2500000345019684e+00 0 0 0 +800 1 -8.3862483669843854e+01 3.6896578840567180e+01 5.2500000111220633e+00 0 0 0 +799 1 -8.2176992646691133e+01 3.7454416642912847e+01 3.4999999900035630e+00 0 0 0 +802 1 -8.3289035601845555e+01 3.5233281847210556e+01 3.5000000096989203e+00 0 0 0 +805 1 -8.1612969480634973e+01 3.5796924660557650e+01 5.2500000134381253e+00 0 0 0 +1439 1 -8.2176992655775308e+01 3.7454416679365828e+01 7.0000000578922581e+00 0 0 0 +1442 1 -8.3289035618439101e+01 3.5233281850989947e+01 7.0000000552069430e+00 0 0 0 +855 1 -7.7684223691845503e+01 3.5261436941204082e+01 3.5000000135893101e+00 0 0 0 +856 1 -7.9367520832893689e+01 3.4700066864780553e+01 5.2500000005265548e+00 0 0 0 +857 1 -7.8245179802229814e+01 3.6918747668988331e+01 5.2500000117655681e+00 0 0 0 +1495 1 -7.7684223665623279e+01 3.5261436955415938e+01 7.0000000056540781e+00 0 0 0 +906 1 -7.6561515331805182e+01 3.7480260498485478e+01 3.5000000538088143e+00 0 0 0 +908 1 -7.6000491959045007e+01 3.5822798066202068e+01 5.2499999928760355e+00 0 0 0 +1546 1 -7.6561515300235882e+01 3.7480260499880970e+01 6.9999999908858790e+00 0 0 0 +913 1 -7.3755787027035652e+01 3.4726784156316718e+01 5.2499999577089325e+00 0 0 0 +959 1 -7.0949917301995526e+01 3.7507243535417231e+01 3.4999999929217638e+00 0 0 0 +960 1 -7.2633423179685082e+01 3.6945764504813859e+01 5.2499999716969485e+00 0 0 0 +962 1 -7.2072252997187931e+01 3.5288257963064872e+01 3.4999999904229240e+00 0 0 0 +1599 1 -7.0949917261261191e+01 3.7507243523238799e+01 6.9999999768258894e+00 0 0 0 +1602 1 -7.2072252961878533e+01 3.5288257928388589e+01 6.9999999603530760e+00 0 0 0 +965 1 -7.0388740364456922e+01 3.5849738019534747e+01 5.2499999900418413e+00 0 0 0 +1016 1 -6.8144053990529784e+01 3.4753711925611185e+01 5.2500000099245394e+00 0 0 0 +1015 1 -6.6460538895014750e+01 3.5315189068480265e+01 3.5000000248783913e+00 0 0 0 +1017 1 -6.7021711284788381e+01 3.6972692279761326e+01 5.2500000014359003e+00 0 0 0 +1068 1 -6.4777022883938869e+01 3.5876665888631550e+01 5.2499999999353291e+00 0 0 0 +1655 1 -6.6460538879873511e+01 3.5315188995961279e+01 7.0000000118486261e+00 0 0 0 +1067 1 -6.3093506797778176e+01 3.6438142775265867e+01 3.4999999907071393e+00 0 0 0 +1073 1 -6.2532334730976785e+01 3.4780639645340180e+01 5.2499999754553857e+00 0 0 0 +1120 1 -6.1409990871655118e+01 3.6999619569421071e+01 5.2499999520224101e+00 0 0 0 +1707 1 -6.3093506781178519e+01 3.6438142774524451e+01 6.9999999793521503e+00 0 0 0 +1125 1 -5.9165302818937320e+01 3.5903593272916673e+01 5.2499999470766792e+00 0 0 0 +1762 1 -6.0848818649691978e+01 3.5342116479145709e+01 6.9999999522743526e+00 0 0 0 +1759 1 -5.9726474936361278e+01 3.7561096404995901e+01 6.9999999167725058e+00 0 0 0 +1176 1 -5.6920614763724672e+01 3.4807566595821626e+01 5.2499999591478916e+00 0 0 0 +1177 1 -5.5798271104783602e+01 3.7026546419822402e+01 5.2499999863118640e+00 0 0 0 +1815 1 -5.5237099070535486e+01 3.5369043226623475e+01 6.9999999846852639e+00 0 0 0 +1814 1 -5.7481786877063499e+01 3.6465069882390047e+01 6.9999999566269269e+00 0 0 0 +1223 1 -5.3553583337996777e+01 3.5930519528267375e+01 5.2500000150160355e+00 0 0 0 +1861 1 -5.4114755279347392e+01 3.7588022909088302e+01 6.9999999819077345e+00 0 0 0 +1862 1 -5.1870067521640742e+01 3.6491995966495878e+01 7.0000000328860414e+00 0 0 0 +1228 1 -5.1308895500303350e+01 3.4834492635209571e+01 5.2500000180189605e+00 0 0 0 +1257 1 -5.0186551751658413e+01 3.7053472310766132e+01 5.2500000286617210e+00 0 0 0 +1896 1 -4.8503035928737610e+01 3.7614948726480137e+01 7.0000000024322819e+00 0 0 0 +1899 1 -4.9625379742216843e+01 3.5395968954225211e+01 6.9999999997692282e+00 0 0 0 +1262 1 -4.7941863952917018e+01 3.5957445342391658e+01 5.2499999928590668e+00 0 0 0 +1280 1 -4.5697176019741143e+01 3.4861418345973227e+01 5.2499999810451978e+00 0 0 0 +1919 1 -4.6258348027864500e+01 3.6518921651755775e+01 6.9999999970097990e+00 0 0 0 +744 1 -8.8549509828237404e+01 3.9103219289007185e+01 5.2499999906899752e+00 0 0 0 +743 1 -8.6710920341979417e+01 3.9649164525321289e+01 3.4999999827662083e+00 0 0 0 +749 1 -8.6132425679050385e+01 3.8005236165267561e+01 5.2499999809046223e+00 0 0 0 +796 1 -8.4964193021359861e+01 4.0198454259120702e+01 5.2499999965808879e+00 0 0 0 +1383 1 -8.6710920351041977e+01 3.9649164492059583e+01 7.0000000176413275e+00 0 0 0 +801 1 -8.2732307106379508e+01 3.9108542011991297e+01 5.2500000180490511e+00 0 0 0 +850 1 -8.1049142571500312e+01 3.9671811633019601e+01 3.5000000166262533e+00 0 0 0 +1490 1 -8.1049142589595903e+01 3.9671811629412666e+01 7.0000000396886382e+00 0 0 0 +852 1 -8.0489602407191384e+01 3.8014383833904404e+01 5.2500000300214928e+00 0 0 0 +853 1 -7.9367521034598667e+01 4.0234053263529944e+01 5.2500000256642467e+00 0 0 0 +903 1 -7.5439348490757041e+01 3.9699323172273075e+01 3.5000000540780580e+00 0 0 0 +904 1 -7.7122769383032292e+01 3.9137853323330560e+01 5.2500000136148266e+00 0 0 0 +909 1 -7.4878098694356609e+01 3.8041795262601923e+01 5.2500000030049181e+00 0 0 0 +1543 1 -7.5439348412471603e+01 3.9699323186993276e+01 6.9999999793413377e+00 0 0 0 +956 1 -7.3755787407278532e+01 4.0260770565585169e+01 5.2499999952622654e+00 0 0 0 +961 1 -7.1511091247435175e+01 3.9164745475922807e+01 5.2499999863351903e+00 0 0 0 +1010 1 -6.9827570136222718e+01 3.9726220808234096e+01 3.4999999843478040e+00 0 0 0 +1012 1 -6.9266400288496826e+01 3.8068718770514948e+01 5.2499999826215458e+00 0 0 0 +1013 1 -6.8144054563402790e+01 4.0287698328594608e+01 5.2499999766926964e+00 0 0 0 +1650 1 -6.9827570105946833e+01 3.9726220783843132e+01 6.9999999685447998e+00 0 0 0 +1064 1 -6.5899367033863626e+01 3.9191672094728354e+01 5.2499999994990132e+00 0 0 0 +1702 1 -6.6460539480413189e+01 4.0849175372692642e+01 7.0000000088741086e+00 0 0 0 +1118 1 -6.1971163112004021e+01 3.8657122698163974e+01 3.4999999580266201e+00 0 0 0 +1069 1 -6.3654679045554268e+01 3.8095645798601097e+01 5.2499999855891497e+00 0 0 0 +1116 1 -6.2532335375268154e+01 4.0314625830458489e+01 5.2499999734513088e+00 0 0 0 +1758 1 -6.1971163088872679e+01 3.8657122705872077e+01 6.9999999413770437e+00 0 0 0 +1115 1 -6.0848819278574858e+01 4.0876102679287321e+01 3.4999999581826877e+00 0 0 0 +1121 1 -6.0287647195743133e+01 3.9218599533040347e+01 5.2499999430720630e+00 0 0 0 +1172 1 -5.8042959063574635e+01 3.8122573158434335e+01 5.2499999706303209e+00 0 0 0 +1810 1 -5.8604131264703959e+01 3.9780076274274499e+01 6.9999999484587176e+00 0 0 0 +1755 1 -6.0848819246873994e+01 4.0876102630831703e+01 6.9999999361626628e+00 0 0 0 +1173 1 -5.6920615244474945e+01 4.0341552857453010e+01 5.2499999455069100e+00 0 0 0 +1811 1 -5.6359443199347446e+01 3.8684049673856464e+01 6.9999999742134840e+00 0 0 0 +1857 1 -5.5237099467005734e+01 4.0903029496054991e+01 6.9999999579011121e+00 0 0 0 +1219 1 -5.4675927198105668e+01 3.9245526134262853e+01 5.2499999785355378e+00 0 0 0 +1224 1 -5.2431239481139841e+01 3.8149499290783005e+01 5.2499999916669982e+00 0 0 0 +1858 1 -5.2992411497560724e+01 3.9807002553905448e+01 6.9999999708516958e+00 0 0 0 +1253 1 -5.1308895750175374e+01 4.0368479044241354e+01 5.2499999807479520e+00 0 0 0 +1258 1 -4.9064207827062774e+01 3.9272452025210967e+01 5.2499999853420354e+00 0 0 0 +1892 1 -4.9625379795595819e+01 4.0929955321586249e+01 7.0000000115641976e+00 0 0 0 +1895 1 -5.0747723644644587e+01 3.8710975671432301e+01 7.0000000159174052e+00 0 0 0 +7745 1 -4.5136003984405363e+01 3.8737901343906138e+01 6.9999999842567595e+00 0 0 0 +1277 1 -4.6819520004671546e+01 3.8176425013009577e+01 5.2499999781158317e+00 0 0 0 +1278 1 -4.5697175920594219e+01 4.0395404648643975e+01 5.2499999825686592e+00 0 0 0 +1916 1 -4.7380691921599329e+01 3.9833928448216334e+01 6.9999999680413501e+00 0 0 0 +741 1 -8.9214901170948920e+01 4.2337277896511182e+01 5.2499999773254400e+00 0 0 0 +745 1 -8.7168422085218211e+01 4.1255016110391587e+01 5.2499999909459341e+00 0 0 0 +794 1 -8.5523442873596053e+01 4.1863067740690020e+01 3.4999999810701921e+00 0 0 0 +793 1 -8.6132425877596191e+01 4.3539222514032005e+01 5.2499999959310566e+00 0 0 0 +797 1 -8.3862483795687439e+01 4.2430565211705023e+01 5.2499999964172721e+00 0 0 0 +1434 1 -8.5523442889621222e+01 4.1863067692324208e+01 7.0000000269760099e+00 0 0 0 +3862 1 -8.4431590295237285e+01 4.4085234829107385e+01 3.4999999942495665e+00 0 0 0 +4502 1 -8.4431590284237274e+01 4.4085234846126390e+01 7.0000000347676314e+00 0 0 0 +848 1 -8.1612969670308729e+01 4.1330911075175884e+01 5.2500000021484263e+00 0 0 0 +849 1 -8.0489602665404959e+01 4.3548370380423236e+01 5.2500000240346631e+00 0 0 0 +847 1 -7.9929642942518953e+01 4.1891684201652645e+01 3.5000000309442632e+00 0 0 0 +901 1 -7.8245180128826902e+01 4.2452734206951405e+01 5.2500000244118388e+00 0 0 0 +1487 1 -7.9929642900581030e+01 4.1891684233036351e+01 7.0000000267417155e+00 0 0 0 +3938 1 -7.8805834376442107e+01 4.4110143933528619e+01 3.5000000233083490e+00 0 0 0 +4578 1 -7.8805834313378227e+01 4.4110143961340412e+01 7.0000000206077200e+00 0 0 0 +905 1 -7.6000492297169941e+01 4.1356784535211553e+01 5.2500000200593515e+00 0 0 0 +953 1 -7.4878099053948418e+01 4.3575781826957936e+01 5.2499999744771078e+00 0 0 0 +954 1 -7.4316919895413477e+01 4.1918259869189406e+01 3.5000000093135823e+00 0 0 0 +1594 1 -7.4316919811297893e+01 4.1918259871622311e+01 6.9999999708713636e+00 0 0 0 +957 1 -7.2633423639135799e+01 4.2479751078693390e+01 5.2499999507550408e+00 0 0 0 +3991 1 -7.3194615772488561e+01 4.4137262114308136e+01 3.4999999936106501e+00 0 0 0 +4631 1 -7.3194615706736485e+01 4.4137262115944324e+01 6.9999999416048562e+00 0 0 0 +1007 1 -6.8705227817193318e+01 4.1945202134505180e+01 3.4999999732228271e+00 0 0 0 +1008 1 -7.0388740892731022e+01 4.1383724524999607e+01 5.2499999540949327e+00 0 0 0 +1009 1 -6.9266400791842216e+01 4.3602705273516250e+01 5.2499999618949369e+00 0 0 0 +1647 1 -6.8705227770524388e+01 4.1945202122814457e+01 6.9999999832181921e+00 0 0 0 +1060 1 -6.5338195650894349e+01 4.3068155263295580e+01 3.4999999951797478e+00 0 0 0 +1061 1 -6.7021711837061446e+01 4.2506678659351451e+01 5.2499999878271568e+00 0 0 0 +1065 1 -6.4777023499736572e+01 4.1410652152341335e+01 5.2499999861992466e+00 0 0 0 +1700 1 -6.5338195599952300e+01 4.3068155258750537e+01 6.9999999823395758e+00 0 0 0 +4098 1 -6.7582883491687284e+01 4.4164181497509631e+01 3.4999999775212745e+00 0 0 0 +4738 1 -6.7582883481323663e+01 4.4164181509518677e+01 6.9999999897927623e+00 0 0 0 +1113 1 -6.3654679556912569e+01 4.3629632019657350e+01 5.2499999883755111e+00 0 0 0 +1117 1 -6.1409991435457222e+01 4.2533605730332184e+01 5.2499999531067028e+00 0 0 0 +1166 1 -5.9726475481934109e+01 4.3095082565833223e+01 3.4999999616663797e+00 0 0 0 +1168 1 -5.9165303378643841e+01 4.1437579467882841e+01 5.2499999438233989e+00 0 0 0 +1169 1 -5.8042959479483805e+01 4.3656559274903309e+01 5.2499999654567295e+00 0 0 0 +1806 1 -5.9726475443283753e+01 4.3095082547712487e+01 6.9999999306887029e+00 0 0 0 +1216 1 -5.5798271520149441e+01 4.2560532659435331e+01 5.2499999788186598e+00 0 0 0 +1807 1 -5.7481787332495387e+01 4.1999056052273417e+01 6.9999999387564102e+00 0 0 0 +4898 1 -5.6359443506393447e+01 4.4218035813919023e+01 6.9999999533992545e+00 0 0 0 +1220 1 -5.3553583610323081e+01 4.1464505838099626e+01 5.2499999703826932e+00 0 0 0 +1250 1 -5.2431239571774540e+01 4.3683485520289338e+01 5.2499999798896635e+00 0 0 0 +1891 1 -5.1870067664840008e+01 4.2025982288768255e+01 6.9999999666970050e+00 0 0 0 +1855 1 -5.4114755551860277e+01 4.3122009156046175e+01 6.9999999928377603e+00 0 0 0 +1254 1 -5.0186551801726225e+01 4.2587458641238307e+01 5.2499999751815851e+00 0 0 0 +1912 1 -4.8503035848508937e+01 4.3148935054556453e+01 6.9999999852761112e+00 0 0 0 +4951 1 -5.0747723669497169e+01 4.4244961923589130e+01 6.9999999486593545e+00 0 0 0 +1274 1 -4.7941863869754393e+01 4.1491431658512909e+01 5.2499999924993324e+00 0 0 0 +1275 1 -4.6819519829222898e+01 4.3710411294694680e+01 5.2499999732095315e+00 0 0 0 +1913 1 -4.6258347871685352e+01 4.2052907958106033e+01 6.9999999664822177e+00 0 0 0 +1285 1 -8.8549511161102316e+01 3.6531724684121913e-01 8.7500000702087082e+00 0 0 0 +1299 1 -8.7168423372979603e+01 2.5171136624461172e+00 8.7499999108695388e+00 0 0 0 +1301 1 -8.6710922124963645e+01 9.1126211557007886e-01 6.9999998936710464e+00 0 0 0 +1303 1 -8.4964195053445607e+01 1.4605520667439407e+00 8.7499998435170614e+00 0 0 0 +1941 1 -8.6710921987533311e+01 9.1126234940041984e-01 1.0500000014336422e+01 0 0 0 +1332 1 -8.1049144864437608e+01 9.3391031215706599e-01 6.9999998935904513e+00 0 0 0 +1333 1 -8.2732309366697208e+01 3.7064032566577443e-01 8.7499998620047439e+00 0 0 0 +1334 1 -8.1612972052159108e+01 2.5930093464984183e+00 8.7499998907061851e+00 0 0 0 +1972 1 -8.1049145020213061e+01 9.3391032225087989e-01 1.0499999936744555e+01 0 0 0 +1376 1 -7.9367523327793293e+01 1.4961523545057744e+00 8.7499999517950524e+00 0 0 0 +1430 1 -7.5439350285036127e+01 9.6142331728587416e-01 7.0000000078985050e+00 0 0 0 +1379 1 -7.7122771488225411e+01 3.9995324032883445e-01 8.7499999891441878e+00 0 0 0 +1428 1 -7.6000494154427741e+01 2.6188842421233018e+00 8.7500000293611571e+00 0 0 0 +2070 1 -7.5439350418958668e+01 9.6142328564499979e-01 1.0499999995820211e+01 0 0 0 +1432 1 -7.3755789083147263e+01 1.5228708080266502e+00 8.7500000309474792e+00 0 0 0 +1484 1 -7.1511092752067398e+01 4.2684608632891807e-01 8.7500000613956264e+00 0 0 0 +1483 1 -6.9827571277043916e+01 9.8832143511295301e-01 7.0000000635088080e+00 0 0 0 +1485 1 -7.0388742026054146e+01 2.6458247574761842e+00 8.7500000468693369e+00 0 0 0 +1536 1 -6.8144055515306164e+01 1.5497988579804880e+00 8.7500000969252536e+00 0 0 0 +2123 1 -6.9827571391175780e+01 9.8832134793803617e-01 1.0500000072385149e+01 0 0 0 +1539 1 -6.5899367886210868e+01 4.5377267450498626e-01 8.7500000809898300e+00 0 0 0 +1588 1 -6.4777024011463993e+01 2.6727522415121014e+00 8.7500000652522445e+00 0 0 0 +1592 1 -6.2532335967348914e+01 1.5767256575523028e+00 8.7499999692917552e+00 0 0 0 +1642 1 -6.0848819756325774e+01 2.1382020433848763e+00 6.9999999042732828e+00 0 0 0 +1644 1 -6.0287647978437697e+01 4.8069895461071482e-01 8.7499999300523097e+00 0 0 0 +1645 1 -5.9165303795278483e+01 2.6996784158533842e+00 8.7499999226355278e+00 0 0 0 +2282 1 -6.0848819798589993e+01 2.1382020623066231e+00 1.0499999967145428e+01 0 0 0 +1695 1 -5.5237099631201922e+01 2.1651278468578656e+00 7.0000000265981699e+00 0 0 0 +1696 1 -5.6920615702937887e+01 1.6036514830707254e+00 8.7499999828547104e+00 0 0 0 +2335 1 -5.5237099826626149e+01 2.1651278315035523e+00 1.0500000007856970e+01 0 0 0 +1699 1 -5.4675927572025600e+01 5.0762462547433340e-01 8.7500000283315060e+00 0 0 0 +1748 1 -5.3553583689885869e+01 2.7266039780360090e+00 8.7500000380582392e+00 0 0 0 +1802 1 -4.9625379533172683e+01 2.1920534245194454e+00 7.0000000150560888e+00 0 0 0 +1752 1 -5.1308895583617868e+01 1.6305772054706524e+00 8.7500000549036354e+00 0 0 0 +1804 1 -4.9064207441699374e+01 5.3455035082562807e-01 8.7500000187493292e+00 0 0 0 +1803 1 -4.7380691460777932e+01 1.0960267195694979e+00 6.9999999446533412e+00 0 0 0 +1805 1 -4.7941863546443528e+01 2.7535298345871579e+00 8.7499999636446706e+00 0 0 0 +1854 1 -4.5697175496382883e+01 1.6575029876653602e+00 8.7499999161900508e+00 0 0 0 +1283 1 -8.9214901783066693e+01 3.5993754716851636e+00 8.7499999653039602e+00 0 0 0 +1295 1 -8.8549511284724701e+01 5.8993032411471606e+00 8.7499998785000859e+00 0 0 0 +1298 1 -8.5523444889168616e+01 3.1251652490225519e+00 6.9999997996724943e+00 0 0 0 +1327 1 -8.4431592296961568e+01 5.3473321835536547e+00 6.9999997914238090e+00 0 0 0 +1300 1 -8.6132427702489181e+01 4.8013200286654216e+00 8.7499998632121905e+00 0 0 0 +1329 1 -8.3862486068757676e+01 3.6926629171278096e+00 8.7499998252825826e+00 0 0 0 +1938 1 -8.5523444916008302e+01 3.1251654208121691e+00 1.0499999932487849e+01 0 0 0 +1967 1 -8.4431592431177521e+01 5.3473323009111429e+00 1.0499999878798205e+01 0 0 0 +1330 1 -8.2732309503765336e+01 5.9046259796673759e+00 8.7499998412639997e+00 0 0 0 +1371 1 -7.8805836300144065e+01 5.3722424059795708e+00 7.0000000288147604e+00 0 0 0 +1374 1 -7.9929645093535598e+01 3.1537828069813081e+00 6.9999999724092028e+00 0 0 0 +1372 1 -8.0489604924842965e+01 4.8104685056585570e+00 8.7499999371918893e+00 0 0 0 +1377 1 -7.8245182194623169e+01 3.7148331510706663e+00 8.7500000117585390e+00 0 0 0 +2011 1 -7.8805836517851418e+01 5.3722424019804800e+00 1.0500000003523315e+01 0 0 0 +2014 1 -7.9929645317665560e+01 3.1537828218045640e+00 1.0499999944360003e+01 0 0 0 +1427 1 -7.4316921388049622e+01 3.1803597150557703e+00 7.0000000041836810e+00 0 0 0 +1424 1 -7.7122771508079495e+01 5.9339386968680206e+00 8.7500000672673117e+00 0 0 0 +1429 1 -7.4878100645760398e+01 4.8378812158010467e+00 8.7500000299011536e+00 0 0 0 +2067 1 -7.4316921543505316e+01 3.1803596701221535e+00 1.0500000016050990e+01 0 0 0 +1478 1 -7.3194616956559940e+01 5.3993615819315144e+00 7.0000000126098652e+00 0 0 0 +1480 1 -7.2633424978385989e+01 3.7418509101074182e+00 8.7500000227141594e+00 0 0 0 +1481 1 -7.1511092610774270e+01 5.9608314594975926e+00 8.7500000289629405e+00 0 0 0 +2118 1 -7.3194617104842891e+01 5.3993615265117461e+00 1.0500000029116123e+01 0 0 0 +1534 1 -6.8705228588142788e+01 3.2073023432472936e+00 7.0000000830416340e+00 0 0 0 +1532 1 -6.9266401519423212e+01 4.8648050980928277e+00 8.7500000659028281e+00 0 0 0 +2174 1 -6.8705228641403295e+01 3.2073023158939105e+00 1.0500000060576825e+01 0 0 0 +1531 1 -6.7582883832171689e+01 5.4262813044590255e+00 7.0000000406408684e+00 0 0 0 +1537 1 -6.7021712391221399e+01 3.7687787414485774e+00 8.7500000939414395e+00 0 0 0 +1584 1 -6.5899367583504358e+01 5.9877581040869625e+00 8.7500000385155055e+00 0 0 0 +1586 1 -6.5338195919126093e+01 4.3302551980793504e+00 7.0000000146864556e+00 0 0 0 +2226 1 -6.5338195930543733e+01 4.3302552103860794e+00 1.0500000046097080e+01 0 0 0 +2171 1 -6.7582883910486146e+01 5.4262812986174538e+00 1.0500000074435510e+01 0 0 0 +1589 1 -6.3654679641793869e+01 4.8917316576125423e+00 8.7499999818155576e+00 0 0 0 +1640 1 -6.1409991688140209e+01 3.7957050730875452e+00 8.7499999264625590e+00 0 0 0 +1639 1 -5.9726475591313090e+01 4.3571814311524797e+00 6.9999999164418920e+00 0 0 0 +1641 1 -6.0287647542002148e+01 6.0146844781704187e+00 8.7499999305907448e+00 0 0 0 +1692 1 -5.8042959583246279e+01 4.9186577672773897e+00 8.7499999377527971e+00 0 0 0 +2279 1 -5.9726475683642363e+01 4.3571814650124265e+00 1.0499999940318162e+01 0 0 0 +1697 1 -5.5798271641651425e+01 3.8226309074865563e+00 8.7499999936836836e+00 0 0 0 +1746 1 -5.4114755496339470e+01 4.3841071721226132e+00 7.0000000373337041e+00 0 0 0 +1744 1 -5.4675927401333453e+01 6.0416101658308232e+00 8.7500000264125326e+00 0 0 0 +1749 1 -5.2431239511481458e+01 4.9455833493480519e+00 8.7500000518677403e+00 0 0 0 +1799 1 -4.8503035643823722e+01 4.4110329843747076e+00 7.0000000166811711e+00 0 0 0 +1800 1 -5.0186551595635279e+01 3.8495565672494259e+00 8.7500000164271601e+00 0 0 0 +1801 1 -4.9064207606677876e+01 6.0685360505076433e+00 8.7499999933142192e+00 0 0 0 +1851 1 -4.6819519690451884e+01 4.9725092992033648e+00 8.7499999500894372e+00 0 0 0 +1853 1 -4.6258347633771756e+01 3.3150061517053704e+00 6.9999999574014193e+00 0 0 0 +1293 1 -8.9045576432183609e+01 7.4987160939327273e+00 6.9999998387065592e+00 0 0 0 +1291 1 -8.9214901655173392e+01 9.1333615286586287e+00 8.7499997983067352e+00 0 0 0 +1296 1 -8.7168423397406528e+01 8.0510996911545956e+00 8.7499997478176290e+00 0 0 0 +1933 1 -8.9045576381246207e+01 7.4987163077159602e+00 1.0499999890828473e+01 0 0 0 +1325 1 -8.4964195085120622e+01 6.9945379078759888e+00 8.7499997846577138e+00 0 0 0 +1326 1 -8.3862485925929505e+01 9.2266487281152276e+00 8.7499998074032561e+00 0 0 0 +1324 1 -8.3289037883255602e+01 7.5633518919713083e+00 6.9999998349765216e+00 0 0 0 +1368 1 -8.1612972020201425e+01 8.1269950180688824e+00 8.7499999279175462e+00 0 0 0 +1964 1 -8.3289038130827862e+01 7.5633519528565811e+00 1.0499999872263450e+01 0 0 0 +1422 1 -7.7684225890422212e+01 7.5915083005698154e+00 7.0000000610474640e+00 0 0 0 +1373 1 -7.9367523324770545e+01 7.0301378692108614e+00 8.7500000168530487e+00 0 0 0 +1420 1 -7.8245182036860740e+01 9.2488186843882758e+00 8.7500000827828899e+00 0 0 0 +2062 1 -7.7684226102397403e+01 7.5915082802143568e+00 1.0500000033929588e+01 0 0 0 +1425 1 -7.6000494043184048e+01 8.1528696921472523e+00 8.7500000704304526e+00 0 0 0 +1475 1 -7.2072254597459420e+01 7.6183300629322250e+00 6.9999999903117658e+00 0 0 0 +1476 1 -7.3755788976286425e+01 7.0568562348385484e+00 8.7500000262133142e+00 0 0 0 +1477 1 -7.2633424678162029e+01 9.2758362476932135e+00 8.7500000281979382e+00 0 0 0 +2115 1 -7.2072254694644670e+01 7.6183300174966417e+00 1.0500000041353593e+01 0 0 0 +1528 1 -7.0388741697322359e+01 8.1798100762299377e+00 8.7500000514612424e+00 0 0 0 +1533 1 -6.8144055184992368e+01 7.0837841993467148e+00 8.7500000534640385e+00 0 0 0 +1582 1 -6.6460539746768504e+01 7.6452610917183836e+00 7.0000000580361705e+00 0 0 0 +1580 1 -6.7021711886319110e+01 9.3027640334601127e+00 8.7500000418374011e+00 0 0 0 +1585 1 -6.4777023497348523e+01 8.2067376283703712e+00 8.7500000080681595e+00 0 0 0 +2222 1 -6.6460539794775315e+01 7.6452611147717580e+00 1.0500000012238928e+01 0 0 0 +1634 1 -6.3093507166305180e+01 8.7682141259832793e+00 6.9999999631667666e+00 0 0 0 +1583 1 -6.4215851598462862e+01 6.5492346680597917e+00 6.9999999989730783e+00 0 0 0 +1636 1 -6.2532335513793647e+01 7.1107111014739566e+00 8.7499999721239128e+00 0 0 0 +1637 1 -6.1409991091290550e+01 9.3296904892139967e+00 8.7499999380480240e+00 0 0 0 +2223 1 -6.4215851588940993e+01 6.5492347141054834e+00 1.0499999987341399e+01 0 0 0 +2274 1 -6.3093507189843564e+01 8.7682141681975114e+00 1.0499999966498082e+01 0 0 0 +1690 1 -5.8604131437414480e+01 6.5761608436016319e+00 6.9999999272955105e+00 0 0 0 +1688 1 -5.9165303312490586e+01 8.2336638656361565e+00 8.7499999287272150e+00 0 0 0 +2330 1 -5.8604131572574012e+01 6.5761608279716857e+00 1.0499999938621107e+01 0 0 0 +1687 1 -5.7481787121962675e+01 8.7951401263170741e+00 6.9999999561704458e+00 0 0 0 +1693 1 -5.6920615351507955e+01 7.1376370177977728e+00 8.7499999592724560e+00 0 0 0 +1740 1 -5.5798271243886340e+01 9.3566163890171978e+00 8.7500000101216351e+00 0 0 0 +2327 1 -5.7481787263073464e+01 8.7951400978181802e+00 1.0499999967134947e+01 0 0 0 +1743 1 -5.2992411448084660e+01 6.6030864222669869e+00 7.0000000461758640e+00 0 0 0 +1794 1 -5.1870067457274864e+01 8.8220658706113078e+00 7.0000000524158361e+00 0 0 0 +1745 1 -5.3553583481006434e+01 8.2605895384468884e+00 8.7500000515264098e+00 0 0 0 +1796 1 -5.1308895569329223e+01 7.1645628143748610e+00 8.7500000572867283e+00 0 0 0 +1797 1 -5.0186551586772524e+01 9.3835421911509833e+00 8.7500000274374159e+00 0 0 0 +1847 1 -4.6258347869178053e+01 8.8489919236280077e+00 6.9999999884791961e+00 0 0 0 +1850 1 -4.7380691697173866e+01 6.6300125301623751e+00 6.9999999770537329e+00 0 0 0 +1848 1 -4.7941863700221461e+01 8.2875155436188184e+00 8.7499999874942755e+00 0 0 0 +1852 1 -4.5697175812987680e+01 7.1914888568067825e+00 8.7499999666088328e+00 0 0 0 +2487 1 -4.6258347886346499e+01 8.8489919260749232e+00 1.0499999977413188e+01 0 0 0 +1290 1 -8.7753274279340403e+01 9.7762789672585466e+00 6.9999998387113127e+00 0 0 0 +1292 1 -8.8549511139443084e+01 1.1433289226674331e+01 8.7499996914562121e+00 0 0 0 +1930 1 -8.7753274371563180e+01 9.7762791054958793e+00 1.0499999716227736e+01 0 0 0 +1319 1 -8.6710921905651801e+01 1.1979234175433220e+01 6.9999997702539050e+00 0 0 0 +1321 1 -8.6132427571349112e+01 1.0335306008255065e+01 8.7499997098044275e+00 0 0 0 +1959 1 -8.6710922036735226e+01 1.1979234294964005e+01 1.0499999739628914e+01 0 0 0 +1363 1 -8.1049144569119690e+01 1.2001881685062298e+01 6.9999999914664892e+00 0 0 0 +1366 1 -8.2176994887136331e+01 9.7844867175970407e+00 6.9999999122028758e+00 0 0 0 +1364 1 -8.2732309268555710e+01 1.1438611831594040e+01 8.7499998782184392e+00 0 0 0 +2003 1 -8.1049144903156929e+01 1.2001881641212774e+01 1.0499999958176026e+01 0 0 0 +2006 1 -8.2176995187551753e+01 9.7844867305293004e+00 1.0499999892717339e+01 0 0 0 +1369 1 -8.0489604751251804e+01 1.0344454165002862e+01 8.7500000078038571e+00 0 0 0 +1419 1 -7.6561517193098354e+01 9.8103317524756868e+00 7.0000000895678793e+00 0 0 0 +1470 1 -7.5439349815784183e+01 1.2029394133605651e+01 7.0000000406921625e+00 0 0 0 +1421 1 -7.7122771160937091e+01 1.1467924192585905e+01 8.7500000775670834e+00 0 0 0 +1472 1 -7.4878100310366960e+01 1.0371866632442313e+01 8.7500000486282374e+00 0 0 0 +2059 1 -7.6561517376657889e+01 9.8103317500968856e+00 1.0500000057142060e+01 0 0 0 +2110 1 -7.5439349925134294e+01 1.2029394161648215e+01 1.0500000049489872e+01 0 0 0 +1526 1 -7.0949918293060392e+01 9.8373152015294103e+00 6.9999999922366944e+00 0 0 0 +1524 1 -7.1511092110417025e+01 1.1494816753074346e+01 8.7500000300771639e+00 0 0 0 +2166 1 -7.0949918433372801e+01 9.8373152017101688e+00 1.0500000035808320e+01 0 0 0 +1523 1 -6.9827570497847645e+01 1.2056291987115269e+01 6.9999999987030357e+00 0 0 0 +1529 1 -6.9266400982845141e+01 1.0398790324176977e+01 8.7500000390189818e+00 0 0 0 +2163 1 -6.9827570627581110e+01 1.2056291948451120e+01 1.0500000037755139e+01 0 0 0 +1581 1 -6.5899366961927143e+01 1.1521743354260042e+01 8.7500000394802750e+00 0 0 0 +1631 1 -6.1971162953370431e+01 1.0987193478368260e+01 6.9999999357630056e+00 0 0 0 +1632 1 -6.3654679065700606e+01 1.0425716995716583e+01 8.7499999810137155e+00 0 0 0 +2271 1 -6.1971162972426001e+01 1.0987193527773968e+01 1.0499999964539201e+01 0 0 0 +1684 1 -6.0287646943157050e+01 1.1548669916480899e+01 8.7499999602516834e+00 0 0 0 +1689 1 -5.8042959059913997e+01 1.0452643269160058e+01 8.7499999676776277e+00 0 0 0 +1738 1 -5.6359442983771238e+01 1.1014119504999741e+01 6.9999999849166450e+00 0 0 0 +2378 1 -5.6359443119429351e+01 1.1014119464659672e+01 1.0499999998540149e+01 0 0 0 +1741 1 -5.4675927040803835e+01 1.1575595702471002e+01 8.7500000264477240e+00 0 0 0 +1792 1 -5.2431239335375288e+01 1.0479568924955023e+01 8.7500000541713376e+00 0 0 0 +1791 1 -5.0747723450138800e+01 1.1041045293501520e+01 7.0000000477245035e+00 0 0 0 +1844 1 -4.9064207664697030e+01 1.1602521690061771e+01 8.7500000165681708e+00 0 0 0 +2431 1 -5.0747723465689468e+01 1.1041045238987097e+01 1.0500000038251573e+01 0 0 0 +1849 1 -4.6819519882658930e+01 1.0506495039232355e+01 8.7499999751381683e+00 0 0 0 +2483 1 -4.7380691877517272e+01 1.2163998174314791e+01 1.0499999988848202e+01 0 0 0 +1288 1 -8.9214901985457473e+01 1.4667347511577843e+01 8.7499996196538792e+00 0 0 0 +1317 1 -8.7168423027024218e+01 1.3585085602963899e+01 8.7499996775281605e+00 0 0 0 +1316 1 -8.5523444364252200e+01 1.4193137306677363e+01 6.9999997721445606e+00 0 0 0 +1322 1 -8.4964194909692040e+01 1.2528523959272805e+01 8.7499997287329556e+00 0 0 0 +1360 1 -8.3862485565226550e+01 1.4760634747892333e+01 8.7499998213260017e+00 0 0 0 +1956 1 -8.5523444646832559e+01 1.4193137294235205e+01 1.0499999771975887e+01 0 0 0 +1365 1 -8.1612971594270334e+01 1.3660980832902055e+01 8.7499999478809070e+00 0 0 0 +1414 1 -7.9929644491593137e+01 1.4221754119080272e+01 7.0000000624932825e+00 0 0 0 +1416 1 -7.9367522960300889e+01 1.2564123536702622e+01 8.7500000530914264e+00 0 0 0 +1417 1 -7.8245181468490856e+01 1.4782804271649388e+01 8.7500000910400164e+00 0 0 0 +2054 1 -7.9929644782154824e+01 1.4221754109789345e+01 1.0499999979053044e+01 0 0 0 +1467 1 -7.4316920627571847e+01 1.4248330434313536e+01 7.0000000045134785e+00 0 0 0 +1468 1 -7.6000493471977137e+01 1.3686855143288115e+01 8.7500000897887364e+00 0 0 0 +2107 1 -7.4316920725565765e+01 1.4248330442510829e+01 1.0500000021160483e+01 0 0 0 +1473 1 -7.3755788436800103e+01 1.2590841542485126e+01 8.7500000491624164e+00 0 0 0 +1520 1 -7.2633424055883694e+01 1.4809821529629669e+01 8.7499999802094273e+00 0 0 0 +1574 1 -6.8705227557136553e+01 1.4275272792060296e+01 7.0000000313187902e+00 0 0 0 +1525 1 -7.0388741125726511e+01 1.3713795266760744e+01 8.7499999967442257e+00 0 0 0 +1576 1 -6.8144054606137303e+01 1.2617769415496637e+01 8.7500000377048419e+00 0 0 0 +2214 1 -6.8705227652572816e+01 1.4275272782269511e+01 1.0500000004443411e+01 0 0 0 +1626 1 -6.5338194706102342e+01 1.5398225754867884e+01 6.9999999930432253e+00 0 0 0 +1577 1 -6.7021711287101752e+01 1.4836749221195902e+01 8.7500000209252775e+00 0 0 0 +1628 1 -6.4777022864448256e+01 1.3740722904157263e+01 8.7500000289243243e+00 0 0 0 +2266 1 -6.5338194764557770e+01 1.5398225758922083e+01 1.0500000020234740e+01 0 0 0 +1633 1 -6.2532334867825114e+01 1.2644696498790845e+01 8.7499999628451643e+00 0 0 0 +1680 1 -6.1409990496202418e+01 1.4863675909868066e+01 8.7499999446581889e+00 0 0 0 +1679 1 -5.9726474448434608e+01 1.5425152352753177e+01 6.9999999247642668e+00 0 0 0 +1682 1 -6.0848818621690015e+01 1.3206172943632078e+01 6.9999999254988658e+00 0 0 0 +1685 1 -5.9165302715192155e+01 1.3767649346789739e+01 8.7499999510962319e+00 0 0 0 +2319 1 -5.9726474545782516e+01 1.5425152365494046e+01 1.0499999979020753e+01 0 0 0 +2322 1 -6.0848818678461178e+01 1.3206172942173840e+01 1.0499999971527828e+01 0 0 0 +1735 1 -5.5237098999060954e+01 1.3233098925149791e+01 7.0000000278408763e+00 0 0 0 +1736 1 -5.6920614869289402e+01 1.2671622497974132e+01 8.7500000080341049e+00 0 0 0 +1737 1 -5.5798270885982269e+01 1.4890601965323508e+01 8.7500000287387376e+00 0 0 0 +2375 1 -5.5237099138983197e+01 1.3233098872491329e+01 1.0500000035456189e+01 0 0 0 +1786 1 -5.4114754959683680e+01 1.5452078302598844e+01 7.0000000381265366e+00 0 0 0 +1788 1 -5.3553583227717041e+01 1.3794575101839973e+01 8.7500000377909224e+00 0 0 0 +2426 1 -5.4114755055149480e+01 1.5452078246148698e+01 1.0500000034820184e+01 0 0 0 +2427 1 -5.1870067384610074e+01 1.4356051417784084e+01 1.0500000026800153e+01 0 0 0 +1793 1 -5.1308895484461353e+01 1.2698548413681561e+01 8.7500000488527743e+00 0 0 0 +1840 1 -5.0186551578995605e+01 1.4917527825514902e+01 8.7500000244763392e+00 0 0 0 +2479 1 -4.8503035797431806e+01 1.5479004292235148e+01 1.0499999972686508e+01 0 0 0 +2482 1 -4.9625379646725087e+01 1.3260024677781249e+01 1.0500000000210512e+01 0 0 0 +1845 1 -4.7941863830671309e+01 1.3821501202308106e+01 8.7499999828747423e+00 0 0 0 +1889 1 -4.5697176012921389e+01 1.2725474592842239e+01 8.7499999693787451e+00 0 0 0 +2528 1 -4.6258348045277081e+01 1.4382977600935170e+01 1.0499999967277983e+01 0 0 0 +1311 1 -8.9045576178587282e+01 1.8566688273212261e+01 6.9999997705182206e+00 0 0 0 +1313 1 -8.8549510862165505e+01 1.6967275227552729e+01 8.7499996906668152e+00 0 0 0 +1951 1 -8.9045576226419414e+01 1.8566688073255538e+01 1.0499999700841110e+01 0 0 0 +1358 1 -8.4431591536585671e+01 1.6415304229987328e+01 6.9999998328831605e+00 0 0 0 +1318 1 -8.6132427135979327e+01 1.5869292067048354e+01 8.7499997799627707e+00 0 0 0 +1356 1 -8.4964194306733503e+01 1.8062509911117715e+01 8.7499998320754280e+00 0 0 0 +1998 1 -8.4431591855544440e+01 1.6415304133448995e+01 1.0499999850079009e+01 0 0 0 +1355 1 -8.3289036878853949e+01 1.8631323833406064e+01 6.9999999148931948e+00 0 0 0 +1361 1 -8.2732308683889968e+01 1.6972597758154411e+01 8.7499999127205417e+00 0 0 0 +1995 1 -8.3289037185618838e+01 1.8631323734806696e+01 1.0499999957498943e+01 0 0 0 +1462 1 -7.7684224784817729e+01 1.8659479411510883e+01 7.0000000689923407e+00 0 0 0 +1412 1 -8.0489604148127995e+01 1.5878439929202083e+01 8.7500000170062826e+00 0 0 0 +1411 1 -7.8805835418075574e+01 1.6440213627460505e+01 7.0000000815836980e+00 0 0 0 +1413 1 -7.9367522248532566e+01 1.8098109203313097e+01 8.7500000716719377e+00 0 0 0 +2051 1 -7.8805835610106129e+01 1.6440213620553997e+01 1.0500000041515557e+01 0 0 0 +2102 1 -7.7684224883348961e+01 1.8659479421440718e+01 1.0500000032734068e+01 0 0 0 +1464 1 -7.7122770505428846e+01 1.7001909728449430e+01 8.7500000747368070e+00 0 0 0 +1469 1 -7.4878099672416766e+01 1.5905852001124074e+01 8.7500000199521288e+00 0 0 0 +1515 1 -7.2072253471441925e+01 1.8686300579453786e+01 6.9999999370993633e+00 0 0 0 +1518 1 -7.3194615948751789e+01 1.6467332179386212e+01 6.9999999767165431e+00 0 0 0 +1516 1 -7.3755787826080379e+01 1.8124826921207838e+01 8.7499999853390520e+00 0 0 0 +1521 1 -7.1511091521882250e+01 1.7028801957102448e+01 8.7499999681663443e+00 0 0 0 +2155 1 -7.2072253495160169e+01 1.8686300599423351e+01 1.0499999992002524e+01 0 0 0 +2158 1 -7.3194616028137560e+01 1.6467332203807871e+01 1.0499999999921375e+01 0 0 0 +1572 1 -6.9266400423082402e+01 1.5932775519134934e+01 8.7500000094289572e+00 0 0 0 +1573 1 -6.8144054013702046e+01 1.8151754622164475e+01 8.7500000140461474e+00 0 0 0 +1571 1 -6.7582882673413337e+01 1.6494251713194661e+01 6.9999999999248770e+00 0 0 0 +1622 1 -6.6460538537943862e+01 1.8713231579544676e+01 7.0000000481986397e+00 0 0 0 +1624 1 -6.5899366362086695e+01 1.7055728617248519e+01 8.7500000090225090e+00 0 0 0 +2211 1 -6.7582882777127864e+01 1.6494251728729619e+01 1.0500000029517970e+01 0 0 0 +2262 1 -6.6460538627753110e+01 1.8713231564960097e+01 1.0499999973829279e+01 0 0 0 +1623 1 -6.4215850350277719e+01 1.7617205311848291e+01 6.9999999941345390e+00 0 0 0 +1629 1 -6.3654678404270804e+01 1.5959702326009754e+01 8.7499999825966128e+00 0 0 0 +1676 1 -6.2532334280190881e+01 1.8178681885760550e+01 8.7499999626409739e+00 0 0 0 +2263 1 -6.4215850381039530e+01 1.7617205312494466e+01 1.0499999978968749e+01 0 0 0 +1730 1 -5.8604130404333304e+01 1.7644131847712195e+01 6.9999999401481086e+00 0 0 0 +1681 1 -6.0287646370626675e+01 1.7082655404643663e+01 8.7499999424279533e+00 0 0 0 +1732 1 -5.8042958556774686e+01 1.5986628757008011e+01 8.7499999700249020e+00 0 0 0 +2370 1 -5.8604130510049622e+01 1.7644131849440612e+01 1.0499999983287550e+01 0 0 0 +1733 1 -5.6920614479511897e+01 1.8205608124577395e+01 8.7499999825525450e+00 0 0 0 +2422 1 -5.5237098790787151e+01 1.8767084566342078e+01 1.0500000027601253e+01 0 0 0 +1783 1 -5.2992411046696169e+01 1.7671057678220393e+01 7.0000000478218771e+00 0 0 0 +1784 1 -5.4675926793129300e+01 1.7109581328269378e+01 8.7500000556059074e+00 0 0 0 +1789 1 -5.2431239173449697e+01 1.6013554557773176e+01 8.7500000541459038e+00 0 0 0 +2423 1 -5.2992411105494654e+01 1.7671057646754321e+01 1.0500000043963530e+01 0 0 0 +1836 1 -5.1308895342482465e+01 1.8232534129668359e+01 8.7500000433281606e+00 0 0 0 +1841 1 -4.9064207659675581e+01 1.7136507382045316e+01 8.7499999903993153e+00 0 0 0 +2478 1 -5.0747723409003790e+01 1.6575030933188536e+01 1.0500000010779443e+01 0 0 0 +2475 1 -4.9625379570852246e+01 1.8794010412140988e+01 1.0499999997102401e+01 0 0 0 +1886 1 -4.6819519971626384e+01 1.6040480718988206e+01 8.7499999820693333e+00 0 0 0 +1887 1 -4.5697175992814216e+01 1.8259460344574283e+01 8.7500000139916008e+00 0 0 0 +2525 1 -4.7380691846822835e+01 1.7697983884077651e+01 1.0499999995297769e+01 0 0 0 +1308 1 -8.7753273527356882e+01 2.0844251111631340e+01 6.9999998493763362e+00 0 0 0 +1309 1 -8.9214901481223478e+01 2.0201333537689028e+01 8.7499997355020280e+00 0 0 0 +1314 1 -8.7168422814158617e+01 1.9119071748868656e+01 8.7499997492235178e+00 0 0 0 +1948 1 -8.7753273735317890e+01 2.0844250907589469e+01 1.0499999769284937e+01 0 0 0 +1352 1 -8.6132426592010006e+01 2.1403277971951653e+01 8.7499998516595046e+00 0 0 0 +1357 1 -8.3862484835752340e+01 2.0294620661841176e+01 8.7499999479708457e+00 0 0 0 +1406 1 -8.2176993678159064e+01 2.0852458527531748e+01 7.0000000104641051e+00 0 0 0 +1408 1 -8.1612970896308639e+01 1.9194966677442643e+01 8.7500000261409188e+00 0 0 0 +2046 1 -8.2176993920314587e+01 2.0852458446617952e+01 1.0500000030037624e+01 0 0 0 +1409 1 -8.0489603431399914e+01 2.1412425713726833e+01 8.7500000912409206e+00 0 0 0 +1460 1 -7.8245180759026084e+01 2.0316789895126004e+01 8.7500000836911944e+00 0 0 0 +1459 1 -7.6561515954973729e+01 2.0878302754887383e+01 7.0000000644886837e+00 0 0 0 +1465 1 -7.6000492837827309e+01 1.9220840629704448e+01 8.7500000333157626e+00 0 0 0 +1512 1 -7.4878099010380296e+01 2.1439837500307512e+01 8.7499999885250350e+00 0 0 0 +2099 1 -7.6561515981665778e+01 2.0878302788780186e+01 1.0500000028258023e+01 0 0 0 +1566 1 -7.0949917141937789e+01 2.0905285727460019e+01 6.9999999652645242e+00 0 0 0 +1517 1 -7.2633423442746647e+01 2.0343806880893879e+01 8.7499999663936165e+00 0 0 0 +2206 1 -7.0949917203724468e+01 2.0905285745267683e+01 1.0499999985982127e+01 0 0 0 +1568 1 -7.0388740537068969e+01 1.9247780545634004e+01 8.7499999942286486e+00 0 0 0 +1569 1 -6.9266399859365038e+01 2.1466760808805795e+01 8.7499999769539016e+00 0 0 0 +1620 1 -6.7021710740371304e+01 2.0370734492527397e+01 8.7499999958828845e+00 0 0 0 +1625 1 -6.4777022292314669e+01 1.9274708222203287e+01 8.7499999700310642e+00 0 0 0 +1674 1 -6.3093505993082950e+01 1.9836184896958962e+01 6.9999999718658623e+00 0 0 0 +1671 1 -6.1971161946385124e+01 2.2055164518654585e+01 6.9999999388115199e+00 0 0 0 +1672 1 -6.3654677983512968e+01 2.1493687780416671e+01 8.7499999748398043e+00 0 0 0 +1677 1 -6.1409989989230169e+01 2.0397661441116131e+01 8.7499999459967466e+00 0 0 0 +2314 1 -6.3093506037885078e+01 1.9836184929224583e+01 1.0499999969044850e+01 0 0 0 +2311 1 -6.1971161994286469e+01 2.2055164502285066e+01 1.0499999959465462e+01 0 0 0 +1728 1 -5.9165302265754733e+01 1.9301634925727342e+01 8.7499999519122031e+00 0 0 0 +1729 1 -5.8042958215707678e+01 2.1520614563960354e+01 8.7499999688779688e+00 0 0 0 +1727 1 -5.7481786267293359e+01 1.9863111319872161e+01 6.9999999588505926e+00 0 0 0 +1778 1 -5.6359442351384530e+01 2.2082090912512069e+01 6.9999999897470113e+00 0 0 0 +1780 1 -5.5798270558736974e+01 2.0424587702723034e+01 8.7500000191929264e+00 0 0 0 +2418 1 -5.6359442434971385e+01 2.2082090908647189e+01 1.0499999997364505e+01 0 0 0 +2367 1 -5.7481786377316617e+01 1.9863111291003001e+01 1.0499999997204601e+01 0 0 0 +1785 1 -5.3553583013303495e+01 1.9328560859492679e+01 8.7500000591166653e+00 0 0 0 +1832 1 -5.2431238991881422e+01 2.1547540432393600e+01 8.7500000536887814e+00 0 0 0 +2419 1 -5.4114754798413145e+01 2.0986064072155802e+01 1.0500000009881298e+01 0 0 0 +2474 1 -5.1870067194112508e+01 1.9890037233781324e+01 1.0500000024925797e+01 0 0 0 +1837 1 -5.0186551423006144e+01 2.0451513640467361e+01 8.7500000348026781e+00 0 0 0 +2471 1 -5.0747723232168724e+01 2.2109016798317374e+01 1.0500000013627071e+01 0 0 0 +2521 1 -4.8503035693894404e+01 2.1012990123214976e+01 1.0499999989903301e+01 0 0 0 +1883 1 -4.7941863754803748e+01 1.9355486975297790e+01 8.7500000097514850e+00 0 0 0 +1884 1 -4.6819519892427451e+01 2.1574466541311590e+01 8.7499999879353325e+00 0 0 0 +2522 1 -4.6258347986932499e+01 1.9916963364094684e+01 1.0499999987087469e+01 0 0 0 +1310 1 -8.8549510329360942e+01 2.2501261142052748e+01 8.7499997945813721e+00 0 0 0 +1348 1 -8.7168422422286071e+01 2.4653057743701641e+01 8.7499999010086551e+00 0 0 0 +1350 1 -8.6710920892871911e+01 2.3047206353187434e+01 6.9999998552440079e+00 0 0 0 +1353 1 -8.4964193736158947e+01 2.3596495911631312e+01 8.7499999555730970e+00 0 0 0 +1990 1 -8.6710921126281391e+01 2.3047206158159483e+01 1.0499999947087055e+01 0 0 0 +1403 1 -8.1049143251526758e+01 2.3069853338661670e+01 7.0000000767088757e+00 0 0 0 +1404 1 -8.2732307995454690e+01 2.2506583654714934e+01 8.7500000473701505e+00 0 0 0 +1405 1 -8.1612970170600263e+01 2.4728952559418996e+01 8.7500000743187982e+00 0 0 0 +2043 1 -8.1049143408421855e+01 2.3069853261023173e+01 1.0500000074623721e+01 0 0 0 +1456 1 -7.9367521525687494e+01 2.3632094956836923e+01 8.7500000902324686e+00 0 0 0 +1510 1 -7.5439348514852455e+01 2.3097365109933556e+01 7.0000000088648333e+00 0 0 0 +1461 1 -7.7122769785510840e+01 2.2535895323178803e+01 8.7500000390135995e+00 0 0 0 +1508 1 -7.6000492103614960e+01 2.4754826204006950e+01 8.7500000118361694e+00 0 0 0 +2150 1 -7.5439348502786828e+01 2.3097365134717446e+01 1.0499999996087531e+01 0 0 0 +1513 1 -7.3755787143191384e+01 2.3658812391141431e+01 8.7499999697068276e+00 0 0 0 +1564 1 -7.1511090912217412e+01 2.2562787375066769e+01 8.7499999602415972e+00 0 0 0 +1563 1 -6.9827569429832806e+01 2.3124262543566125e+01 6.9999999636784649e+00 0 0 0 +1565 1 -7.0388740085155149e+01 2.4781765974205857e+01 8.7499999623228106e+00 0 0 0 +1616 1 -6.8144053601484089e+01 2.3685739993259620e+01 8.7500000031247627e+00 0 0 0 +2203 1 -6.9827569488469706e+01 2.3124262536840430e+01 1.0499999990575461e+01 0 0 0 +1621 1 -6.5899365954563635e+01 2.2589713990154259e+01 8.7500000210761311e+00 0 0 0 +1668 1 -6.4777022112260241e+01 2.4808693810926258e+01 8.7499999925027314e+00 0 0 0 +2255 1 -6.6460538295504151e+01 2.4247217040245243e+01 1.0499999999726736e+01 0 0 0 +1673 1 -6.2532334013761648e+01 2.3712667562582944e+01 8.7499999400293369e+00 0 0 0 +1722 1 -6.0848817892729521e+01 2.4274144260925613e+01 6.9999999506415955e+00 0 0 0 +1724 1 -6.0287646050041438e+01 2.2616641152591026e+01 8.7499999415379932e+00 0 0 0 +1725 1 -5.9165302094862874e+01 2.4835620862887051e+01 8.7499999561706101e+00 0 0 0 +2362 1 -6.0848817928244969e+01 2.4274144242780913e+01 1.0499999954460119e+01 0 0 0 +2363 1 -5.8604130226365278e+01 2.3178117695061626e+01 1.0499999955956042e+01 0 0 0 +1776 1 -5.6920614270791212e+01 2.3739594055009736e+01 8.7500000170773653e+00 0 0 0 +2415 1 -5.5237098647517335e+01 2.4301070572816318e+01 1.0500000022935010e+01 0 0 0 +1781 1 -5.4675926529399433e+01 2.2643567225966898e+01 8.7500000287176221e+00 0 0 0 +1828 1 -5.3553582880119968e+01 2.4862546883998604e+01 8.7500000246791014e+00 0 0 0 +2470 1 -5.2992410893749707e+01 2.3205043596054683e+01 1.0500000019460137e+01 0 0 0 +1833 1 -5.1308895247777166e+01 2.3766520099328154e+01 8.7500000306163681e+00 0 0 0 +1879 1 -4.9064207547306637e+01 2.2670493255434430e+01 8.7500000118304211e+00 0 0 0 +2517 1 -4.9625379501968233e+01 2.4327996385155210e+01 1.0500000003416408e+01 0 0 0 +1880 1 -4.7941863743267277e+01 2.4889472890781494e+01 8.7500000013401777e+00 0 0 0 +1911 1 -4.5697175990880325e+01 2.3793446187855736e+01 8.7500000054135363e+00 0 0 0 +2518 1 -4.7380691822151277e+01 2.3231969779260655e+01 1.0500000006290472e+01 0 0 0 +1306 1 -8.9214901364169336e+01 2.5735319499053301e+01 8.7499998079202559e+00 0 0 0 +1344 1 -8.8549510077589318e+01 2.8035247053983039e+01 8.7499999186480988e+00 0 0 0 +1347 1 -8.5523443250925936e+01 2.5261109324150368e+01 6.9999999372656907e+00 0 0 0 +1398 1 -8.4431590403617520e+01 2.7483276182638559e+01 6.9999999972876896e+00 0 0 0 +1349 1 -8.6132426166707333e+01 2.6937263966887674e+01 8.7499999960915051e+00 0 0 0 +1400 1 -8.3862484236237208e+01 2.5828606626118397e+01 8.7500000288640845e+00 0 0 0 +1987 1 -8.5523443460685115e+01 2.5261109167393943e+01 1.0500000017335688e+01 0 0 0 +2038 1 -8.4431590577058415e+01 2.7483276047435812e+01 1.0500000042438860e+01 0 0 0 +1401 1 -8.2732307342123860e+01 2.8040569616376064e+01 8.7500000547588321e+00 0 0 0 +1451 1 -7.8805834126001258e+01 2.7508185086570098e+01 7.0000000848691650e+00 0 0 0 +1454 1 -7.9929643140736715e+01 2.5289725656776142e+01 7.0000001254008204e+00 0 0 0 +1452 1 -8.0489602724383118e+01 2.6946411572119970e+01 8.7500000731050083e+00 0 0 0 +1457 1 -7.8245180040345218e+01 2.5850775619082768e+01 8.7500000732380538e+00 0 0 0 +2091 1 -7.8805834131680569e+01 2.7508185084612304e+01 1.0500000036734960e+01 0 0 0 +2094 1 -7.9929643206205498e+01 2.5289725646883486e+01 1.0500000041002805e+01 0 0 0 +1507 1 -7.4316919394488238e+01 2.5316301380673764e+01 6.9999999706778100e+00 0 0 0 +1504 1 -7.7122769201038054e+01 2.8069881043228239e+01 8.7500000286439068e+00 0 0 0 +1509 1 -7.4878098428956321e+01 2.6973823103877798e+01 8.7499999668706643e+00 0 0 0 +2147 1 -7.4316919375058703e+01 2.5316301413103769e+01 1.0499999970437523e+01 0 0 0 +1558 1 -7.3194614923444135e+01 2.7535303247079582e+01 6.9999999273970239e+00 0 0 0 +1560 1 -7.2633422912859345e+01 2.5877792406777402e+01 8.7499999329583389e+00 0 0 0 +1561 1 -7.1511090654129220e+01 2.8096773028493349e+01 8.7499999183752433e+00 0 0 0 +2199 1 -7.0949916828121133e+01 2.6439271275077804e+01 1.0499999985586445e+01 0 0 0 +1614 1 -6.8705226688803123e+01 2.5343243533104211e+01 6.9999999840145426e+00 0 0 0 +1612 1 -6.9266399669238680e+01 2.7000746416119679e+01 8.7499999594541507e+00 0 0 0 +1611 1 -6.7582882159412762e+01 2.7562222683581300e+01 6.9999999638480039e+00 0 0 0 +1617 1 -6.7021710556257148e+01 2.5904720053990868e+01 8.7499999752464763e+00 0 0 0 +1664 1 -6.5899366019807843e+01 2.8123699711766385e+01 8.7499999700914248e+00 0 0 0 +1666 1 -6.5338194156884427e+01 2.6466196760142896e+01 6.9999999903981172e+00 0 0 0 +2306 1 -6.5338194171597351e+01 2.6466196745044122e+01 1.0499999992227636e+01 0 0 0 +1669 1 -6.3654678011574319e+01 2.7027673553586155e+01 8.7499999673035145e+00 0 0 0 +1720 1 -6.1409989950666805e+01 2.5931647301371079e+01 8.7499999443506162e+00 0 0 0 +2307 1 -6.3093505934356521e+01 2.5370170615501525e+01 1.0499999973221994e+01 0 0 0 +2358 1 -6.1971162050178599e+01 2.7589150409929964e+01 1.0499999960041412e+01 0 0 0 +1719 1 -5.9726474007282896e+01 2.6493124025222087e+01 6.9999999309492420e+00 0 0 0 +1721 1 -6.0287646131189248e+01 2.8150627156716300e+01 8.7499999467547092e+00 0 0 0 +1772 1 -5.8042958200144781e+01 2.7054600627463177e+01 8.7499999672902824e+00 0 0 0 +2359 1 -5.9726474088533003e+01 2.6493123995041504e+01 1.0499999972344643e+01 0 0 0 +1777 1 -5.5798270496795318e+01 2.5958573820235117e+01 8.7500000228387886e+00 0 0 0 +2414 1 -5.7481786210383376e+01 2.5397097299931275e+01 1.0499999994423620e+01 0 0 0 +2411 1 -5.6359442437458149e+01 2.7616077051783257e+01 1.0499999996837103e+01 0 0 0 +1824 1 -5.4675926644192600e+01 2.8177553433257323e+01 8.7500000547679946e+00 0 0 0 +1829 1 -5.2431238996204044e+01 2.7081526537697101e+01 8.7500000291123410e+00 0 0 0 +2466 1 -5.4114754757663746e+01 2.6520050211960733e+01 1.0500000007960100e+01 0 0 0 +2467 1 -5.1870067139600430e+01 2.5424023275236525e+01 1.0500000001236868e+01 0 0 0 +1875 1 -5.0186551454271523e+01 2.5985499667744708e+01 8.7500000110900622e+00 0 0 0 +1876 1 -4.9064207636831568e+01 2.8204479369251906e+01 8.7499999785052580e+00 0 0 0 +2513 1 -5.0747723302931114e+01 2.7643002953653841e+01 1.0499999996225540e+01 0 0 0 +2514 1 -4.8503035730422226e+01 2.6546976145220953e+01 1.0499999998105274e+01 0 0 0 +1908 1 -4.6819519930766866e+01 2.7108452509181966e+01 8.7499999872799012e+00 0 0 0 +2550 1 -4.6258348002803956e+01 2.5450949268913327e+01 1.0499999996729647e+01 0 0 0 +8359 1 -4.5136004043890715e+01 2.7669929014649746e+01 1.0500000023240542e+01 0 0 0 +1342 1 -8.9045575837689782e+01 2.9634660195680457e+01 6.9999998849199763e+00 0 0 0 +1340 1 -8.9214901539166448e+01 3.1269305446096915e+01 8.7499999969530684e+00 0 0 0 +1345 1 -8.7168422005163862e+01 3.0187043619149286e+01 8.7499999793990888e+00 0 0 0 +1982 1 -8.9045575897599448e+01 2.9634659983888021e+01 1.0500000006629218e+01 0 0 0 +1396 1 -8.4964193282893575e+01 2.9130481923933402e+01 8.7500000365705581e+00 0 0 0 +1397 1 -8.3862483787547930e+01 3.1362592652543832e+01 8.7500000613165643e+00 0 0 0 +1983 1 -8.6710920654592599e+01 2.8581192098868755e+01 1.0499999974487219e+01 0 0 0 +2034 1 -8.5523442948759552e+01 3.0795095155856028e+01 1.0499999998299344e+01 0 0 0 +1395 1 -8.3289035780980257e+01 2.9699295727341337e+01 7.0000000476154893e+00 0 0 0 +1448 1 -8.1612969604652619e+01 3.0262938521940253e+01 8.7500000724078379e+00 0 0 0 +2090 1 -8.1049142728919421e+01 2.8603839209353151e+01 1.0500000036135724e+01 0 0 0 +1453 1 -7.9367520929028814e+01 2.9166080819727728e+01 8.7500000606268458e+00 0 0 0 +1500 1 -7.8245179699731651e+01 3.1384761528188555e+01 8.7500000325183560e+00 0 0 0 +1502 1 -7.7684223673907724e+01 2.9727450878543845e+01 7.0000000348258649e+00 0 0 0 +2087 1 -7.9929642725949094e+01 3.0823711614055139e+01 1.0500000036219472e+01 0 0 0 +1505 1 -7.6000491812912458e+01 3.0288812016528261e+01 8.7499999875659498e+00 0 0 0 +2143 1 -7.5439348085427966e+01 2.8631350840635335e+01 1.0499999986603649e+01 0 0 0 +2194 1 -7.4316919209094749e+01 3.0850287237778204e+01 1.0499999968882120e+01 0 0 0 +1555 1 -7.2072252801157305e+01 2.9754271814592531e+01 6.9999999066492720e+00 0 0 0 +1556 1 -7.3755786879830865e+01 2.9192798123709508e+01 8.7499999313104269e+00 0 0 0 +1557 1 -7.2633422906187363e+01 3.1411778298121249e+01 8.7499999450452606e+00 0 0 0 +1608 1 -7.0388740100604394e+01 3.0315751812915725e+01 8.7499999577446008e+00 0 0 0 +1613 1 -6.8144053664494336e+01 2.9219725777610307e+01 8.7499999798739569e+00 0 0 0 +2247 1 -6.8705226874384905e+01 3.0877229360210315e+01 1.0499999971150359e+01 0 0 0 +2250 1 -6.9827569372088277e+01 2.8658248265679102e+01 1.0499999973445226e+01 0 0 0 +1660 1 -6.7021710804181765e+01 3.1438705953389626e+01 8.7499999582539125e+00 0 0 0 +1665 1 -6.4777022335268910e+01 3.0342679672074361e+01 8.7499999327653590e+00 0 0 0 +1663 1 -6.4215850180670017e+01 2.8685176658895756e+01 6.9999999730556350e+00 0 0 0 +1714 1 -6.3093506170535157e+01 3.0904156571520772e+01 6.9999999630261467e+00 0 0 0 +1716 1 -6.2532334217472062e+01 2.9246653465638047e+01 8.7499999450854240e+00 0 0 0 +1717 1 -6.1409990242171212e+01 3.1465633353971736e+01 8.7499999547851619e+00 0 0 0 +1770 1 -5.8604130266410358e+01 2.8712103808899769e+01 6.9999999669310258e+00 0 0 0 +1768 1 -5.9165302320219929e+01 3.0369606996158879e+01 8.7499999769557917e+00 0 0 0 +2410 1 -5.8604130325518533e+01 2.8712103830981160e+01 1.0499999979037307e+01 0 0 0 +2355 1 -6.0848818131463105e+01 2.9808130279586759e+01 1.0499999974267578e+01 0 0 0 +1773 1 -5.6920614396859321e+01 2.9273580261909313e+01 8.7499999997133688e+00 0 0 0 +1820 1 -5.5798270722356172e+01 3.1492560098051957e+01 8.7500000053476299e+00 0 0 0 +2407 1 -5.7481786474015443e+01 3.0931083551492694e+01 1.0500000009668934e+01 0 0 0 +2462 1 -5.5237098746117198e+01 2.9835056832320827e+01 1.0500000027714968e+01 0 0 0 +1825 1 -5.3553583066124297e+01 3.0396533182582704e+01 8.7500000416326582e+00 0 0 0 +2463 1 -5.2992411025310865e+01 2.8739029831580453e+01 1.0500000038535076e+01 0 0 0 +2509 1 -5.1870067288254894e+01 3.0958009580573759e+01 1.0500000008184532e+01 0 0 0 +1871 1 -5.1308895338361751e+01 2.9300506296858369e+01 8.7500000011639170e+00 0 0 0 +1872 1 -5.0186551560943606e+01 3.1519485937624971e+01 8.7500000075680102e+00 0 0 0 +2510 1 -4.9625379616485660e+01 2.9861982588446768e+01 1.0499999987456325e+01 0 0 0 +1905 1 -4.7941863819340412e+01 3.0423459059282195e+01 8.7500000001681588e+00 0 0 0 +1909 1 -4.5697175953682539e+01 2.9327432199916402e+01 8.7500000218982805e+00 0 0 0 +2544 1 -4.6258347994155265e+01 3.0984935398741129e+01 1.0500000010041841e+01 0 0 0 +2547 1 -4.7380691836486470e+01 2.8765955840306283e+01 1.0500000022953840e+01 0 0 0 +1339 1 -8.7753272984658508e+01 3.1912222968608653e+01 6.9999998767582978e+00 0 0 0 +1341 1 -8.8549509813288438e+01 3.3569233044522001e+01 8.7500000444351738e+00 0 0 0 +1390 1 -8.6710920272507778e+01 3.4115178293646721e+01 6.9999999976796214e+00 0 0 0 +1392 1 -8.6132425723101676e+01 3.2471249936813749e+01 8.7500000146652734e+00 0 0 0 +2031 1 -8.4431590150032619e+01 3.3017262128152936e+01 1.0500000032993180e+01 0 0 0 +1443 1 -8.1049142455551362e+01 3.4137825309106304e+01 7.0000000316069926e+00 0 0 0 +1444 1 -8.2732307063371891e+01 3.3574555717797800e+01 8.7500000718051254e+00 0 0 0 +1446 1 -8.2176992663300567e+01 3.1920430455798730e+01 7.0000000452157796e+00 0 0 0 +1449 1 -8.0489602358112762e+01 3.2480397592607105e+01 8.7500000728531795e+00 0 0 0 +2138 1 -7.8805833917776980e+01 3.3042171118895617e+01 1.0500000026973902e+01 0 0 0 +1499 1 -7.6561515159629920e+01 3.1946274298922148e+01 6.9999999996090487e+00 0 0 0 +1501 1 -7.7122769131209424e+01 3.3603867043974418e+01 8.7499999918775924e+00 0 0 0 +1550 1 -7.5439348129736317e+01 3.4165336839772891e+01 6.9999999703028521e+00 0 0 0 +1552 1 -7.4878098391629450e+01 3.2507809026228919e+01 8.7499999610046864e+00 0 0 0 +1604 1 -7.1511090813525527e+01 3.3630759059344165e+01 8.7499999425851591e+00 0 0 0 +1606 1 -7.0949916915252842e+01 3.1973257259563724e+01 6.9999999283474557e+00 0 0 0 +2191 1 -7.3194614962295930e+01 3.3069289211949204e+01 1.0499999964745141e+01 0 0 0 +1603 1 -6.9827569607468064e+01 3.4192234358487326e+01 6.9999999680391785e+00 0 0 0 +1609 1 -6.9266399853226076e+01 3.2534732395645740e+01 8.7499999455585868e+00 0 0 0 +1661 1 -6.5899366391171668e+01 3.3657685750382484e+01 8.7500000022923992e+00 0 0 0 +2298 1 -6.7582882448296999e+01 3.3096208671140403e+01 1.0499999979211605e+01 0 0 0 +2299 1 -6.5338194499351218e+01 3.2000182699825821e+01 1.0499999982245695e+01 0 0 0 +1711 1 -6.1971162433138993e+01 3.3123136492834902e+01 6.9999999564060840e+00 0 0 0 +1712 1 -6.3654678379606423e+01 3.2561659546134308e+01 8.7499999538155091e+00 0 0 0 +2350 1 -6.4215850659031616e+01 3.4219162739300316e+01 1.0499999970378136e+01 0 0 0 +1764 1 -6.0287646574632525e+01 3.3684613315980386e+01 8.7499999429275732e+00 0 0 0 +1769 1 -5.8042958548836360e+01 3.2588586884315063e+01 8.7499999970496969e+00 0 0 0 +2403 1 -5.8604130723427218e+01 3.4246090073669357e+01 1.0499999974967881e+01 0 0 0 +2406 1 -5.9726474379582207e+01 3.2027110133574169e+01 1.0499999968209227e+01 0 0 0 +2458 1 -5.6359442772103669e+01 3.3150063408494006e+01 1.0500000003378686e+01 0 0 0 +1821 1 -5.4675926865334475e+01 3.3711539797194682e+01 8.7500000061251892e+00 0 0 0 +1867 1 -5.2431239207666415e+01 3.2615512915108233e+01 8.7500000200501251e+00 0 0 0 +2505 1 -5.2992411216439621e+01 3.4273016216740629e+01 1.0500000005763740e+01 0 0 0 +2459 1 -5.4114754957698246e+01 3.2054036546924607e+01 1.0499999989197530e+01 0 0 0 +1901 1 -4.9064207715934451e+01 3.3738465674869374e+01 8.7500000163488743e+00 0 0 0 +2543 1 -4.8503035809256218e+01 3.2080962403553116e+01 1.0499999996106153e+01 0 0 0 +2506 1 -5.0747723436356019e+01 3.3176989297609701e+01 1.0500000010820793e+01 0 0 0 +1906 1 -4.6819519962049348e+01 3.2642438706819576e+01 8.7499999972281977e+00 0 0 0 +2540 1 -4.7380691923648271e+01 3.4299942143412821e+01 1.0500000002664638e+01 0 0 0 +8393 1 -4.5136004042357776e+01 3.3203915156345204e+01 1.0500000023165912e+01 0 0 0 +1337 1 -8.9214901025711171e+01 3.6803291489226588e+01 8.7500000305441024e+00 0 0 0 +1388 1 -8.7168422080008682e+01 3.5721029837843133e+01 8.7500000619452400e+00 0 0 0 +1976 1 -8.9045575779784869e+01 3.5168646080403143e+01 1.0500000049638311e+01 0 0 0 +2026 1 -8.7753272934943453e+01 3.7446208986134337e+01 1.0499999945330723e+01 0 0 0 +1387 1 -8.5523442743650762e+01 3.6329081375121106e+01 6.9999999969072970e+00 0 0 0 +1393 1 -8.4964192946085817e+01 3.4664467943404361e+01 8.7500000438252190e+00 0 0 0 +1440 1 -8.3862483625121513e+01 3.6896578814960279e+01 8.7500000481178066e+00 0 0 0 +1445 1 -8.1612969496288812e+01 3.5796924693308902e+01 8.7500000486706604e+00 0 0 0 +2079 1 -8.2176992658599204e+01 3.7454416635143069e+01 1.0500000020261616e+01 0 0 0 +2082 1 -8.3289035643374930e+01 3.5233281805840221e+01 1.0500000042329219e+01 0 0 0 +1494 1 -7.9929642688498703e+01 3.6357697774747514e+01 7.0000000356257219e+00 0 0 0 +1496 1 -7.9367520803160929e+01 3.4700066907811845e+01 8.7500000448775310e+00 0 0 0 +1497 1 -7.8245179766494701e+01 3.6918747707586114e+01 8.7500000174868138e+00 0 0 0 +2135 1 -7.7684223623702565e+01 3.5261437007075358e+01 1.0499999993774169e+01 0 0 0 +1547 1 -7.4316919423845562e+01 3.6384273350982191e+01 6.9999999676519442e+00 0 0 0 +1548 1 -7.6000491890127208e+01 3.5822798092158152e+01 8.7499999701365905e+00 0 0 0 +2186 1 -7.6561515232094251e+01 3.7480260541143537e+01 1.0499999955080369e+01 0 0 0 +1553 1 -7.3755786991126001e+01 3.4726784160635020e+01 8.7499999555139372e+00 0 0 0 +1600 1 -7.2633423152358588e+01 3.6945764491297446e+01 8.7499999466280940e+00 0 0 0 +2239 1 -7.0949917249486333e+01 3.7507243483261561e+01 1.0499999980281777e+01 0 0 0 +2242 1 -7.2072252980256167e+01 3.5288257909095897e+01 1.0499999950620188e+01 0 0 0 +1605 1 -7.0388740385338195e+01 3.5849737988591556e+01 8.7499999709073357e+00 0 0 0 +1654 1 -6.8705227239146382e+01 3.6411215648918308e+01 7.0000000001756781e+00 0 0 0 +1656 1 -6.8144053993701107e+01 3.4753711872081787e+01 8.7499999785927596e+00 0 0 0 +1706 1 -6.5338195065357468e+01 3.7534168973988486e+01 7.0000000023849713e+00 0 0 0 +1657 1 -6.7021711280157547e+01 3.6972692216381638e+01 8.7500000197348875e+00 0 0 0 +1708 1 -6.4777022865331830e+01 3.5876665835105882e+01 8.7500000113377538e+00 0 0 0 +2295 1 -6.6460538868612403e+01 3.5315188967013228e+01 1.0499999994236754e+01 0 0 0 +2346 1 -6.5338195062267204e+01 3.7534168903244932e+01 1.0500000011737102e+01 0 0 0 +1713 1 -6.2532334702237080e+01 3.4780639615519227e+01 8.7499999590070043e+00 0 0 0 +1760 1 -6.1409990865873205e+01 3.6999619537337900e+01 8.7499999550971044e+00 0 0 0 +2347 1 -6.3093506774601451e+01 3.6438142727030773e+01 1.0499999974511949e+01 0 0 0 +1765 1 -5.9165302826499847e+01 3.5903593257404026e+01 8.7499999581120900e+00 0 0 0 +2399 1 -5.9726474957038860e+01 3.7561096386075263e+01 1.0499999972958481e+01 0 0 0 +1816 1 -5.6920614799181621e+01 3.4807566586426084e+01 8.7500000060757159e+00 0 0 0 +1817 1 -5.5798271127807681e+01 3.7026546459044582e+01 8.7499999794128875e+00 0 0 0 +2454 1 -5.7481786888730639e+01 3.6465069855377386e+01 1.0499999994428700e+01 0 0 0 +2455 1 -5.5237099122843162e+01 3.5369043224930465e+01 1.0500000002467146e+01 0 0 0 +1863 1 -5.3553583328686933e+01 3.5930519572308974e+01 8.7499999903490870e+00 0 0 0 +2502 1 -5.1870067519890902e+01 3.6491995988056672e+01 1.0499999979326930e+01 0 0 0 +2501 1 -5.4114755306559267e+01 3.7588022953326018e+01 1.0499999981138089e+01 0 0 0 +1868 1 -5.1308895543178096e+01 3.4834492706941482e+01 8.7500000113846870e+00 0 0 0 +1897 1 -5.0186551747762877e+01 3.7053472341311888e+01 8.7500000087303587e+00 0 0 0 +2536 1 -4.8503035911673749e+01 3.7614948793496531e+01 1.0500000017247586e+01 0 0 0 +2539 1 -4.9625379737516255e+01 3.5395968966084396e+01 1.0500000009062212e+01 0 0 0 +1902 1 -4.7941863893020980e+01 3.5957445362209270e+01 8.7500000142626693e+00 0 0 0 +1920 1 -4.5697176010764700e+01 3.4861418406073369e+01 8.7500000042312180e+00 0 0 0 +2559 1 -4.6258348009772803e+01 3.6518921676747873e+01 1.0500000004343079e+01 0 0 0 +1382 1 -8.9045575769183500e+01 4.0702632382084964e+01 6.9999999694668462e+00 0 0 0 +1384 1 -8.8549509826478783e+01 3.9103219136507946e+01 8.7500000093746770e+00 0 0 0 +1389 1 -8.6132425776177072e+01 3.8005236093317450e+01 8.7500000678614036e+00 0 0 0 +1436 1 -8.4964193045679608e+01 4.0198454255728947e+01 8.7500000287037700e+00 0 0 0 +1438 1 -8.4431590096460511e+01 3.8551248415373244e+01 6.9999999998126130e+00 0 0 0 +2023 1 -8.6710920321996753e+01 3.9649164418017094e+01 1.0500000002635376e+01 0 0 0 +1435 1 -8.3289035743734416e+01 4.0767268157765059e+01 7.0000000036739802e+00 0 0 0 +1441 1 -8.2732307061269040e+01 3.9108541958610481e+01 8.7500000126092594e+00 0 0 0 +2130 1 -8.1049142550466698e+01 3.9671811644537861e+01 1.0500000001590188e+01 0 0 0 +1492 1 -8.0489602416734428e+01 3.8014383852060689e+01 8.7500000114677636e+00 0 0 0 +1491 1 -7.8805834063157178e+01 3.8576157359518106e+01 7.0000000215247331e+00 0 0 0 +1493 1 -7.9367520986347870e+01 4.0234053277458464e+01 8.7500000184276434e+00 0 0 0 +1542 1 -7.7684223935910495e+01 4.0795423406203781e+01 7.0000000130471616e+00 0 0 0 +1544 1 -7.7122769315060054e+01 3.9137853345754777e+01 8.7500000032645602e+00 0 0 0 +1549 1 -7.4878098605420050e+01 3.8041795265817171e+01 8.7499999652606064e+00 0 0 0 +2183 1 -7.5439348365331909e+01 3.9699323205951544e+01 1.0499999954592242e+01 0 0 0 +1595 1 -7.2072253423630229e+01 4.0822244395368344e+01 6.9999999565013509e+00 0 0 0 +1596 1 -7.3755787330459668e+01 4.0260770581368590e+01 8.7499999415303016e+00 0 0 0 +1598 1 -7.3194615303748336e+01 3.8603275537451871e+01 6.9999999708732670e+00 0 0 0 +1601 1 -7.1511091206905675e+01 3.9164745453885693e+01 8.7499999638308665e+00 0 0 0 +1652 1 -6.9266400294364189e+01 3.8068718717899976e+01 8.7500000024177673e+00 0 0 0 +1653 1 -6.8144054526726393e+01 4.0287698312919048e+01 8.7500000218413891e+00 0 0 0 +2290 1 -6.9827570085172255e+01 3.9726220748719413e+01 1.0500000012082761e+01 0 0 0 +1651 1 -6.7582882982801934e+01 3.8630195053189169e+01 7.0000000034740557e+00 0 0 0 +1704 1 -6.5899367004256135e+01 3.9191672061925786e+01 8.7499999924667993e+00 0 0 0 +1703 1 -6.4215851303344635e+01 3.9753149005355858e+01 6.9999999796575985e+00 0 0 0 +1709 1 -6.3654679006826015e+01 3.8095645775198484e+01 8.7499999878191641e+00 0 0 0 +1756 1 -6.2532335336340530e+01 4.0314625809599626e+01 8.7499999693822978e+00 0 0 0 +2398 1 -6.1971163078947157e+01 3.8657122685833208e+01 1.0499999989052931e+01 0 0 0 +1761 1 -6.0287647152718819e+01 3.9218599540601168e+01 8.7499999428317672e+00 0 0 0 +1812 1 -5.8042959044978538e+01 3.8122573141803571e+01 8.7499999351014406e+00 0 0 0 +2395 1 -6.0848819222042067e+01 4.0876102633414355e+01 1.0499999946795041e+01 0 0 0 +2450 1 -5.8604131272197691e+01 3.9780076310631898e+01 1.0499999940557311e+01 0 0 0 +1813 1 -5.6920615258316353e+01 4.0341552809931407e+01 8.7499999485407614e+00 0 0 0 +2497 1 -5.5237099470994565e+01 4.0903029478674092e+01 1.0499999986433350e+01 0 0 0 +2451 1 -5.6359443180808782e+01 3.8684049689285310e+01 1.0499999960501537e+01 0 0 0 +1859 1 -5.4675927267698420e+01 3.9245526143704993e+01 8.7499999969705833e+00 0 0 0 +1864 1 -5.2431239440421955e+01 3.8149499285401404e+01 8.7500000011608048e+00 0 0 0 +2498 1 -5.2992411546210924e+01 3.9807002585042760e+01 1.0499999999669969e+01 0 0 0 +1893 1 -5.1308895691669051e+01 4.0368479056532919e+01 8.7499999791684253e+00 0 0 0 +1898 1 -4.9064207841553262e+01 3.9272452089052329e+01 8.7499999947405787e+00 0 0 0 +2532 1 -4.9625379822883197e+01 4.0929955337961218e+01 1.0499999993380252e+01 0 0 0 +2535 1 -5.0747723637032067e+01 3.8710975722136446e+01 1.0499999998470395e+01 0 0 0 +8390 1 -4.5136003944650859e+01 3.8737901387812371e+01 1.0500000003484555e+01 0 0 0 +1917 1 -4.6819519964901957e+01 3.8176425037104579e+01 8.7499999970623694e+00 0 0 0 +1918 1 -4.5697175868152812e+01 4.0395404690213638e+01 8.7499999952278600e+00 0 0 0 +2556 1 -4.7380691883403443e+01 3.9833928473809308e+01 1.0500000018733601e+01 0 0 0 +1380 1 -8.7753273016097296e+01 4.2980195359164959e+01 6.9999999650450109e+00 0 0 0 +1381 1 -8.9214901251040715e+01 4.2337277832442886e+01 8.7499999999720401e+00 0 0 0 +1385 1 -8.7168422022122741e+01 4.1255016013139944e+01 8.7499999889840314e+00 0 0 0 +1433 1 -8.6132425818873926e+01 4.3539222495558057e+01 8.7499999803934614e+00 0 0 0 +1437 1 -8.3862483803174541e+01 4.2430565211842286e+01 8.7500000286263813e+00 0 0 0 +2074 1 -8.5523442829076075e+01 4.1863067661562198e+01 1.0499999985024886e+01 0 0 0 +5142 1 -8.4431590213390891e+01 4.4085234824078732e+01 1.0499999990517072e+01 0 0 0 +1486 1 -8.2176992844702184e+01 4.2988403140635441e+01 7.0000000171748260e+00 0 0 0 +1488 1 -8.1612969622782657e+01 4.1330911085375433e+01 8.7500000292163094e+00 0 0 0 +1489 1 -8.0489602601679536e+01 4.3548370383647054e+01 8.7500000367846891e+00 0 0 0 +1541 1 -7.8245180005075795e+01 4.2452734234021108e+01 8.7499999920769245e+00 0 0 0 +2127 1 -7.9929642857073119e+01 4.1891684242134410e+01 1.0499999996727780e+01 0 0 0 +5218 1 -7.8805834249071196e+01 4.4110143974589093e+01 1.0499999992120616e+01 0 0 0 +1540 1 -7.6561515628634069e+01 4.3014247054116410e+01 7.0000000213706262e+00 0 0 0 +1545 1 -7.6000492204269904e+01 4.1356784584042451e+01 8.7499999806593962e+00 0 0 0 +1593 1 -7.4878098955497848e+01 4.3575781846296948e+01 8.7499999800910793e+00 0 0 0 +2234 1 -7.4316919748200689e+01 4.1918259887103716e+01 1.0499999962268143e+01 0 0 0 +1597 1 -7.2633423571120730e+01 4.2479751055526791e+01 8.7499999787693330e+00 0 0 0 +1646 1 -7.0949917720352346e+01 4.3041230065927635e+01 6.9999999540415780e+00 0 0 0 +5271 1 -7.3194615639131058e+01 4.4137262104785229e+01 1.0499999982539181e+01 0 0 0 +1648 1 -7.0388740868651666e+01 4.1383724503209514e+01 8.7499999921609302e+00 0 0 0 +1649 1 -6.9266400756606885e+01 4.3602705253383810e+01 8.7499999791309193e+00 0 0 0 +2287 1 -6.8705227759391420e+01 4.1945202078771210e+01 1.0500000006778414e+01 0 0 0 +1701 1 -6.7021711818655021e+01 4.2506678623853922e+01 8.7500000027806504e+00 0 0 0 +1705 1 -6.4777023459130433e+01 4.1410652123456153e+01 8.7499999763264729e+00 0 0 0 +2340 1 -6.5338195580628195e+01 4.3068155246052740e+01 1.0499999983070982e+01 0 0 0 +5378 1 -6.7582883413486471e+01 4.4164181452665552e+01 1.0499999997395323e+01 0 0 0 +1754 1 -6.3093507374711287e+01 4.1972128955656103e+01 6.9999999562083550e+00 0 0 0 +1753 1 -6.3654679509168204e+01 4.3629631984695671e+01 8.7499999575371898e+00 0 0 0 +1757 1 -6.1409991390048837e+01 4.2533605685896475e+01 8.7499999441728082e+00 0 0 0 +4791 1 -6.1971163566260550e+01 4.4191108851435452e+01 6.9999999534656139e+00 0 0 0 +1808 1 -5.9165303344730759e+01 4.1437579387008434e+01 8.7499999492474103e+00 0 0 0 +1809 1 -5.8042959468151807e+01 4.3656559261639366e+01 8.7499999557167403e+00 0 0 0 +2446 1 -5.9726475415835679e+01 4.3095082490439403e+01 1.0499999961948978e+01 0 0 0 +1856 1 -5.5798271480207525e+01 4.2560532640364009e+01 8.7499999388908059e+00 0 0 0 +2447 1 -5.7481787376905217e+01 4.1999056038274418e+01 1.0499999963340519e+01 0 0 0 +5538 1 -5.6359443551908633e+01 4.4218035839136931e+01 1.0499999962998686e+01 0 0 0 +1860 1 -5.3553583620980461e+01 4.1464505859167630e+01 8.7499999871623473e+00 0 0 0 +1890 1 -5.2431239593211906e+01 4.3683485547095174e+01 8.7499999762853786e+00 0 0 0 +2495 1 -5.4114755541632185e+01 4.3122009144282458e+01 1.0499999968016615e+01 0 0 0 +2531 1 -5.1870067703240800e+01 4.2025982313448338e+01 1.0499999991449897e+01 0 0 0 +1894 1 -5.0186551774642268e+01 4.2587458658569197e+01 8.7499999886825179e+00 0 0 0 +2552 1 -4.8503035831826551e+01 4.3148935095906353e+01 1.0500000005502926e+01 0 0 0 +5591 1 -5.0747723649743698e+01 4.4244961940807777e+01 1.0499999998157550e+01 0 0 0 +1914 1 -4.7941863868415886e+01 4.1491431735600926e+01 8.7499999901943077e+00 0 0 0 +1915 1 -4.6819519819664379e+01 4.3710411333449784e+01 8.7499999785193925e+00 0 0 0 +2553 1 -4.6258347868210244e+01 4.2052907998001309e+01 1.0499999993743245e+01 0 0 0 +1922 1 -8.9045576336279936e+01 1.9647302816467849e+00 1.0500000102562041e+01 0 0 0 +1925 1 -8.8549510924907025e+01 3.6531733990782811e-01 1.2250000082222543e+01 0 0 0 +1939 1 -8.7168423212768118e+01 2.5171137738214799e+00 1.2250000076309947e+01 0 0 0 +1943 1 -8.4964195025074716e+01 1.4605522070186301e+00 1.2250000039651429e+01 0 0 0 +2581 1 -8.6710921901273892e+01 9.1126239452923474e-01 1.4000000076457358e+01 0 0 0 +1971 1 -8.3289038063840962e+01 2.0293662116996205e+00 1.0499999901032869e+01 0 0 0 +1973 1 -8.2732309355867997e+01 3.7064035352343755e-01 1.2250000007723335e+01 0 0 0 +1974 1 -8.1612972135319310e+01 2.5930093800871084e+00 1.2249999981821858e+01 0 0 0 +2612 1 -8.1049144975835745e+01 9.3391033522129152e-01 1.4000000053425335e+01 0 0 0 +2015 1 -7.7684226144059878e+01 2.0575228002562631e+00 1.0499999987040097e+01 0 0 0 +2016 1 -7.9367523436444657e+01 1.4961523475417347e+00 1.2249999981426589e+01 0 0 0 +2019 1 -7.7122771583462452e+01 3.9995323464422339e-01 1.2249999982855487e+01 0 0 0 +2068 1 -7.6000494290185685e+01 2.6188842098572254e+00 1.2249999993860088e+01 0 0 0 +2710 1 -7.5439350472997432e+01 9.6142327381304671e-01 1.3999999978981911e+01 0 0 0 +2122 1 -7.2072254946501332e+01 2.0843446297908024e+00 1.0500000006813126e+01 0 0 0 +2072 1 -7.3755789200144946e+01 1.5228707714830436e+00 1.2249999979011221e+01 0 0 0 +2124 1 -7.1511092825339361e+01 4.2684604617292810e-01 1.2250000004248720e+01 0 0 0 +2125 1 -7.0388742098814632e+01 2.6458247194776345e+00 1.2250000040051990e+01 0 0 0 +2176 1 -6.8144055556429947e+01 1.5497988345068503e+00 1.2250000041023871e+01 0 0 0 +2763 1 -6.9827571389916812e+01 9.8832138051651597e-01 1.3999999988037349e+01 0 0 0 +2175 1 -6.6460540198359922e+01 2.1112757944486913e+00 1.0500000059451059e+01 0 0 0 +2179 1 -6.5899367891888787e+01 4.5377266913204339e-01 1.2250000036778642e+01 0 0 0 +2228 1 -6.4777023970514563e+01 2.6727523011138290e+00 1.2250000039575431e+01 0 0 0 +2230 1 -6.4215852015888132e+01 1.0152493001706762e+00 1.0500000027940363e+01 0 0 0 +2232 1 -6.2532335933533226e+01 1.5767256954847262e+00 1.2250000026298533e+01 0 0 0 +2283 1 -5.8604131955455593e+01 1.0421753108400220e+00 1.0499999975223947e+01 0 0 0 +2284 1 -6.0287647978253261e+01 4.8069896348211799e-01 1.2250000037531125e+01 0 0 0 +2285 1 -5.9165303836631360e+01 2.6996783937150428e+00 1.2250000027419171e+01 0 0 0 +2922 1 -6.0848819743856154e+01 2.1382020608924459e+00 1.4000000074735636e+01 0 0 0 +2336 1 -5.6920615801426521e+01 1.6036514713880103e+00 1.2249999996228052e+01 0 0 0 +2975 1 -5.5237099772761873e+01 2.1651278180245175e+00 1.3999999995319767e+01 0 0 0 +2390 1 -5.2992411610959095e+01 1.0691008389890853e+00 1.0500000042889406e+01 0 0 0 +2339 1 -5.4675927645497623e+01 5.0762460921208929e-01 1.2250000018387352e+01 0 0 0 +2388 1 -5.3553583756599053e+01 2.7266039660193262e+00 1.2250000000054909e+01 0 0 0 +2392 1 -5.1308895598832869e+01 1.6305772288808662e+00 1.2249999993337314e+01 0 0 0 +2442 1 -4.9625379519958301e+01 2.1920534328291605e+00 1.0499999991280738e+01 0 0 0 +2444 1 -4.9064207409825229e+01 5.3455038424876267e-01 1.2249999973045595e+01 0 0 0 +2443 1 -4.7380691469284585e+01 1.0960267314403374e+00 1.0499999971720685e+01 0 0 0 +2445 1 -4.7941863527864250e+01 2.7535298457259869e+00 1.2249999968493343e+01 0 0 0 +2494 1 -4.5697175517288116e+01 1.6575029968969399e+00 1.2249999968854967e+01 0 0 0 +1937 1 -8.7753274367596589e+01 4.2422931361122869e+00 1.0499999919788300e+01 0 0 0 +1923 1 -8.9214901959607587e+01 3.5993757524370333e+00 1.2250000122538662e+01 0 0 0 +1935 1 -8.8549511150660805e+01 5.8993034889488287e+00 1.2250000041692552e+01 0 0 0 +1940 1 -8.6132427631014082e+01 4.8013202200248433e+00 1.2250000001145011e+01 0 0 0 +1969 1 -8.3862486092841735e+01 3.6926629963200468e+00 1.2250000014543435e+01 0 0 0 +2578 1 -8.5523444806408904e+01 3.1251654523147478e+00 1.4000000138217256e+01 0 0 0 +2607 1 -8.4431592342649765e+01 5.3473323647988167e+00 1.4000000125296252e+01 0 0 0 +1968 1 -8.2176995263760347e+01 4.2505009806787593e+00 1.0499999909758886e+01 0 0 0 +1970 1 -8.2732309621248831e+01 5.9046260483743787e+00 1.2249999992950816e+01 0 0 0 +2012 1 -8.0489605088794889e+01 4.8104685347145448e+00 1.2250000003305964e+01 0 0 0 +2017 1 -7.8245182340995285e+01 3.7148331446613789e+00 1.2249999972377601e+01 0 0 0 +2651 1 -7.8805836578929515e+01 5.3722423782292719e+00 1.3999999972542367e+01 0 0 0 +2654 1 -7.9929645299581622e+01 3.1537828129404684e+00 1.3999999995817140e+01 0 0 0 +2066 1 -7.6561517587887650e+01 4.2763462530073415e+00 1.0500000008806387e+01 0 0 0 +2064 1 -7.7122771660259531e+01 5.9339387023609653e+00 1.2249999988001115e+01 0 0 0 +2069 1 -7.4878100761917835e+01 4.8378812155451998e+00 1.2249999997157452e+01 0 0 0 +2707 1 -7.4316921582071942e+01 3.1803596358606003e+00 1.4000000002606667e+01 0 0 0 +2119 1 -7.0949918846704108e+01 4.3033299162905818e+00 1.0500000029533618e+01 0 0 0 +2120 1 -7.2633425099716575e+01 3.7418508802439399e+00 1.2250000031099717e+01 0 0 0 +2121 1 -7.1511092693548107e+01 5.9608314532435429e+00 1.2250000021605477e+01 0 0 0 +2758 1 -7.3194617128486811e+01 5.3993615421421390e+00 1.3999999997993408e+01 0 0 0 +2172 1 -6.9266401560624686e+01 4.8648050805704193e+00 1.2250000035413183e+01 0 0 0 +2814 1 -6.8705228671233925e+01 3.2073023268074698e+00 1.3999999982986287e+01 0 0 0 +2177 1 -6.7021712391868803e+01 3.7687787796375627e+00 1.2250000010784676e+01 0 0 0 +2224 1 -6.5899367590083500e+01 5.9877581030884803e+00 1.2250000019711905e+01 0 0 0 +2866 1 -6.5338195891649733e+01 4.3302552297952781e+00 1.3999999995481613e+01 0 0 0 +2811 1 -6.7582883881607543e+01 5.4262812913976637e+00 1.3999999986813803e+01 0 0 0 +2278 1 -6.1971163577166635e+01 5.4532081635605678e+00 1.0499999949430888e+01 0 0 0 +2227 1 -6.3093507735330974e+01 3.2342287471968101e+00 1.0500000013095951e+01 0 0 0 +2229 1 -6.3654679622490477e+01 4.8917316765523555e+00 1.2250000016118566e+01 0 0 0 +2280 1 -6.1409991686641014e+01 3.7957050854436720e+00 1.2250000038190107e+01 0 0 0 +2281 1 -6.0287647576172809e+01 6.0146845044115684e+00 1.2249999989217770e+01 0 0 0 +2332 1 -5.8042959658794459e+01 4.9186577689981874e+00 1.2250000012313187e+01 0 0 0 +2919 1 -5.9726475636476145e+01 4.3571814657709442e+00 1.4000000059609850e+01 0 0 0 +2331 1 -5.6359443593316037e+01 5.4801339672308966e+00 1.0499999989452313e+01 0 0 0 +2334 1 -5.7481787699132433e+01 3.2611546119534238e+00 1.0499999971188913e+01 0 0 0 +2337 1 -5.5798271750421890e+01 3.8226308674134937e+00 1.2250000001218515e+01 0 0 0 +2384 1 -5.4675927481757142e+01 6.0416101628869505e+00 1.2249999987574787e+01 0 0 0 +2386 1 -5.4114755625077493e+01 4.3841071241822860e+00 1.0500000013566403e+01 0 0 0 +2387 1 -5.1870067629498941e+01 3.2880802485451048e+00 1.0500000027805944e+01 0 0 0 +2389 1 -5.2431239567125900e+01 4.9455833563476981e+00 1.2249999982648188e+01 0 0 0 +3026 1 -5.4114755619372815e+01 4.3841071377562386e+00 1.3999999988252027e+01 0 0 0 +2438 1 -5.0747723543805421e+01 5.5070596948409083e+00 1.0500000027933604e+01 0 0 0 +2439 1 -4.8503035617208809e+01 4.4110329800309840e+00 1.0499999968927597e+01 0 0 0 +2440 1 -5.0186551594429517e+01 3.8495565852778237e+00 1.2249999972203051e+01 0 0 0 +2441 1 -4.9064207608800253e+01 6.0685360605343615e+00 1.2249999984009332e+01 0 0 0 +2493 1 -4.6258347621403885e+01 3.3150061015628465e+00 1.0499999945742159e+01 0 0 0 +2491 1 -4.6819519689973298e+01 4.9725093172776393e+00 1.2249999964576064e+01 0 0 0 +1931 1 -8.9214902008537607e+01 9.1333616855258306e+00 1.2249999936721105e+01 0 0 0 +1936 1 -8.7168423224566993e+01 8.0510997379759157e+00 1.2249999991507774e+01 0 0 0 +2573 1 -8.9045576362668541e+01 7.4987164480025674e+00 1.4000000104485208e+01 0 0 0 +1934 1 -8.6710922141585982e+01 6.4452482933144646e+00 1.0499999911460469e+01 0 0 0 +1963 1 -8.5523444876909423e+01 8.6591512901574248e+00 1.0499999838031082e+01 0 0 0 +1965 1 -8.4964195188930518e+01 6.9945380715500045e+00 1.2249999996940158e+01 0 0 0 +1966 1 -8.3862486113879498e+01 9.2266488346078894e+00 1.2249999969893087e+01 0 0 0 +2010 1 -8.1049145167977827e+01 6.4678959271039185e+00 1.0499999948029524e+01 0 0 0 +2008 1 -8.1612972202905283e+01 8.1269950532756958e+00 1.2249999985427735e+01 0 0 0 +2604 1 -8.3289038110815270e+01 7.5633520284756823e+00 1.4000000107835833e+01 0 0 0 +2007 1 -7.9929645267626512e+01 8.6877684212100501e+00 1.0499999998682663e+01 0 0 0 +2013 1 -7.9367523521306069e+01 7.0301378967707917e+00 1.2249999980687914e+01 0 0 0 +2060 1 -7.8245182232873461e+01 9.2488187007440938e+00 1.2250000015000074e+01 0 0 0 +2702 1 -7.7684226161720304e+01 7.5915083074332896e+00 1.3999999970107057e+01 0 0 0 +2063 1 -7.5439350418620364e+01 6.4954087451522780e+00 1.0500000048119634e+01 0 0 0 +2114 1 -7.4316921315896366e+01 8.7143450737145898e+00 1.0500000033394008e+01 0 0 0 +2065 1 -7.6000494180238718e+01 8.1528696902137892e+00 1.2250000020435301e+01 0 0 0 +2116 1 -7.3755789076295372e+01 7.0568561900945923e+00 1.2250000052336413e+01 0 0 0 +2117 1 -7.2633424761909851e+01 9.2758362504664991e+00 1.2250000026553623e+01 0 0 0 +2755 1 -7.2072254738041067e+01 7.6183299927827193e+00 1.4000000038578603e+01 0 0 0 +2170 1 -6.9827571172689915e+01 6.5223067469362439e+00 1.0500000038813592e+01 0 0 0 +2167 1 -6.8705228260197529e+01 8.7412876135268185e+00 1.0500000036471169e+01 0 0 0 +2168 1 -7.0388741779486111e+01 8.1798100465201369e+00 1.2250000018397454e+01 0 0 0 +2173 1 -6.8144055234089151e+01 7.0837841735287386e+00 1.2250000010140530e+01 0 0 0 +2220 1 -6.7021711927766887e+01 9.3027640557919646e+00 1.2250000023939867e+01 0 0 0 +2225 1 -6.4777023498242812e+01 8.2067376618156000e+00 1.2250000001894387e+01 0 0 0 +2862 1 -6.6460539783578071e+01 7.6452611463517268e+00 1.3999999978569511e+01 0 0 0 +2276 1 -6.2532335499071259e+01 7.1107111676619645e+00 1.2249999990388435e+01 0 0 0 +2277 1 -6.1409991146059262e+01 9.3296905043168223e+00 1.2249999977949114e+01 0 0 0 +2863 1 -6.4215851582134206e+01 6.5492347672069631e+00 1.3999999997310329e+01 0 0 0 +2914 1 -6.3093507183187832e+01 8.7682141741946413e+00 1.3999999977553690e+01 0 0 0 +2275 1 -6.0848819304828247e+01 7.6721875343543262e+00 1.0499999939824722e+01 0 0 0 +2328 1 -5.9165303372368960e+01 8.2336638756596390e+00 1.2249999998716099e+01 0 0 0 +2970 1 -5.8604131556313284e+01 6.5761608432024738e+00 1.4000000025351683e+01 0 0 0 +2382 1 -5.5237099488214355e+01 7.6991133332137061e+00 1.0500000007366532e+01 0 0 0 +2333 1 -5.6920615454860837e+01 7.1376369899003898e+00 1.2250000010164573e+01 0 0 0 +2380 1 -5.5798271353330634e+01 9.3566163661405408e+00 1.2250000008296769e+01 0 0 0 +2967 1 -5.7481787260901193e+01 8.7951401002340841e+00 1.4000000006952224e+01 0 0 0 +2383 1 -5.2992411538895475e+01 6.6030863957896182e+00 1.0500000039123295e+01 0 0 0 +2385 1 -5.3553583556554983e+01 8.2605894826769894e+00 1.2249999996464489e+01 0 0 0 +2434 1 -5.1870067517148122e+01 8.8220658330615258e+00 1.0500000038173804e+01 0 0 0 +3074 1 -5.1870067523542197e+01 8.8220658067779674e+00 1.3999999993090542e+01 0 0 0 +3023 1 -5.2992411542027931e+01 6.6030863986161092e+00 1.3999999966684024e+01 0 0 0 +2435 1 -4.9625379622843987e+01 7.7260390387219475e+00 1.0500000015062545e+01 0 0 0 +2436 1 -5.1308895600183725e+01 7.1645627859369734e+00 1.2249999987310044e+01 0 0 0 +2437 1 -5.0186551609040301e+01 9.3835421760850188e+00 1.2250000009440280e+01 0 0 0 +2488 1 -4.7941863708631679e+01 8.2875155359406723e+00 1.2249999989078981e+01 0 0 0 +2490 1 -4.7380691682965995e+01 6.6300124859592140e+00 1.0499999974036360e+01 0 0 0 +2492 1 -4.5697175810376258e+01 7.1914888253898752e+00 1.2249999984182399e+01 0 0 0 +1932 1 -8.8549511110627350e+01 1.1433289388562482e+01 1.2249999952570096e+01 0 0 0 +2570 1 -8.7753274298060688e+01 9.7762792260117681e+00 1.4000000175809989e+01 0 0 0 +1960 1 -8.4431592266752972e+01 1.0881318193346203e+01 1.0499999849327571e+01 0 0 0 +1961 1 -8.6132427591620157e+01 1.0335306141005868e+01 1.2250000005186584e+01 0 0 0 +2599 1 -8.6710922002230660e+01 1.1979234326296483e+01 1.4000000164241129e+01 0 0 0 +2004 1 -8.2732309493811044e+01 1.1438611874736814e+01 1.2249999954776312e+01 0 0 0 +2643 1 -8.1049144932756775e+01 1.2001881682735863e+01 1.3999999998477461e+01 0 0 0 +2646 1 -8.2176995196725542e+01 9.7844867834709977e+00 1.4000000061039749e+01 0 0 0 +2058 1 -7.8805836315936830e+01 1.0906227978317956e+01 1.0500000034121271e+01 0 0 0 +2009 1 -8.0489604962201128e+01 1.0344454205834632e+01 1.2249999955724306e+01 0 0 0 +2061 1 -7.7122771321487889e+01 1.1467924231241415e+01 1.2250000005773504e+01 0 0 0 +2112 1 -7.4878100421439527e+01 1.0371866654145219e+01 1.2250000048350458e+01 0 0 0 +2699 1 -7.6561517412537796e+01 9.8103317191536217e+00 1.3999999974426181e+01 0 0 0 +2750 1 -7.5439350022070201e+01 1.2029394165594272e+01 1.3999999974201932e+01 0 0 0 +2111 1 -7.3194616672886696e+01 1.0933346901656648e+01 1.0500000048279549e+01 0 0 0 +2164 1 -7.1511092188332483e+01 1.1494816736587994e+01 1.2250000028725733e+01 0 0 0 +2806 1 -7.0949918443647306e+01 9.8373151784943609e+00 1.4000000022400675e+01 0 0 0 +2169 1 -6.9266401061366665e+01 1.0398790321680881e+01 1.2250000016943506e+01 0 0 0 +2803 1 -6.9827570639152839e+01 1.2056291971148614e+01 1.4000000017053447e+01 0 0 0 +2219 1 -6.5338195385129254e+01 9.8642405239854334e+00 1.0500000011972611e+01 0 0 0 +2218 1 -6.7582883360423565e+01 1.0960266505435465e+01 1.0500000029817878e+01 0 0 0 +2221 1 -6.5899367020536971e+01 1.1521743347481092e+01 1.2249999990038065e+01 0 0 0 +2270 1 -6.4215851012632100e+01 1.2083220049091041e+01 1.0499999979782205e+01 0 0 0 +2272 1 -6.3654679071476792e+01 1.0425717010701483e+01 1.2249999998281783e+01 0 0 0 +2911 1 -6.1971163005500983e+01 1.0987193536265188e+01 1.3999999999946345e+01 0 0 0 +2323 1 -5.8604131003629597e+01 1.2110146280128076e+01 1.0499999962958771e+01 0 0 0 +2326 1 -5.9726475116549103e+01 9.8911669006601333e+00 1.0499999937580188e+01 0 0 0 +2324 1 -6.0287647008095099e+01 1.1548669918994678e+01 1.2249999997283044e+01 0 0 0 +2329 1 -5.8042959139631442e+01 1.0452643231535326e+01 1.2249999984636050e+01 0 0 0 +3018 1 -5.6359443123036513e+01 1.1014119430535709e+01 1.4000000006274345e+01 0 0 0 +2379 1 -5.4114755331772677e+01 9.9180926405535565e+00 1.0500000027350916e+01 0 0 0 +2430 1 -5.2992411272817222e+01 1.2137071951627755e+01 1.0500000042390267e+01 0 0 0 +2381 1 -5.4675927111132154e+01 1.1575595669937034e+01 1.2250000019444641e+01 0 0 0 +2432 1 -5.2431239364969628e+01 1.0479568895767839e+01 1.2250000006827948e+01 0 0 0 +2486 1 -4.8503035718356450e+01 9.9450186689568678e+00 1.0500000010337997e+01 0 0 0 +2484 1 -4.9064207666478538e+01 1.1602521672858888e+01 1.2249999978679783e+01 0 0 0 +3071 1 -5.0747723478164190e+01 1.1041045241206289e+01 1.3999999974554992e+01 0 0 0 +2489 1 -4.6819519889047918e+01 1.0506495040911261e+01 1.2249999987366314e+01 0 0 0 +3123 1 -4.7380691861542942e+01 1.2163998174488649e+01 1.3999999989204145e+01 0 0 0 +1927 1 -8.9045576337316078e+01 1.3032702193857162e+01 1.0499999776705600e+01 0 0 0 +1955 1 -8.7753274124811398e+01 1.5310265023212258e+01 1.0499999854257677e+01 0 0 0 +1928 1 -8.9214901639650975e+01 1.4667347455985096e+01 1.2249999962246957e+01 0 0 0 +1957 1 -8.7168423214006637e+01 1.3585085738428514e+01 1.2249999944642969e+01 0 0 0 +1962 1 -8.4964194966473300e+01 1.2528523948991639e+01 1.2249999952274477e+01 0 0 0 +2000 1 -8.3862485748763888e+01 1.4760634706276976e+01 1.2249999967469394e+01 0 0 0 +2596 1 -8.5523444609324756e+01 1.4193137294460012e+01 1.4000000150281661e+01 0 0 0 +1999 1 -8.2176994688828444e+01 1.5318472576177848e+01 1.0499999931379675e+01 0 0 0 +2002 1 -8.3289037854679592e+01 1.3097337826748674e+01 1.0499999871454595e+01 0 0 0 +2005 1 -8.1612971853127164e+01 1.3660980833426189e+01 1.2249999954516820e+01 0 0 0 +2055 1 -7.7684225636023314e+01 1.3125493858086745e+01 1.0500000049139171e+01 0 0 0 +2056 1 -7.9367523174880603e+01 1.2564123539679466e+01 1.2249999980148166e+01 0 0 0 +2057 1 -7.8245181655384087e+01 1.4782804285119761e+01 1.2249999963290376e+01 0 0 0 +2694 1 -7.9929644831076004e+01 1.4221754099504539e+01 1.3999999938106926e+01 0 0 0 +2106 1 -7.6561516723599283e+01 1.5344317212526057e+01 1.0500000024963711e+01 0 0 0 +2108 1 -7.6000493621753634e+01 1.3686855159012511e+01 1.2250000003383594e+01 0 0 0 +2747 1 -7.4316920754740138e+01 1.4248330448092210e+01 1.4000000013969780e+01 0 0 0 +2113 1 -7.3755788550264754e+01 1.2590841556453226e+01 1.2250000007007502e+01 0 0 0 +2159 1 -7.0949917830300890e+01 1.5371300431637453e+01 1.0500000004259055e+01 0 0 0 +2160 1 -7.2633424140564657e+01 1.4809821550339953e+01 1.2250000043359879e+01 0 0 0 +2162 1 -7.2072254153618090e+01 1.3152315264035391e+01 1.0499999996805395e+01 0 0 0 +2165 1 -7.0388741205187713e+01 1.3713795257489192e+01 1.2250000036976298e+01 0 0 0 +2216 1 -6.8144054675404632e+01 1.2617769380247191e+01 1.2250000021018897e+01 0 0 0 +2854 1 -6.8705227674385483e+01 1.4275272803128258e+01 1.4000000000416382e+01 0 0 0 +2215 1 -6.6460539203278074e+01 1.3179246359328369e+01 1.0500000022177087e+01 0 0 0 +2217 1 -6.7021711312072441e+01 1.4836749243289592e+01 1.2249999986108307e+01 0 0 0 +2268 1 -6.4777022900725001e+01 1.3740722929904704e+01 1.2249999997610855e+01 0 0 0 +2906 1 -6.5338194789039150e+01 1.5398225770678330e+01 1.3999999972240719e+01 0 0 0 +2267 1 -6.3093506585559787e+01 1.4302199491622082e+01 1.0499999985842472e+01 0 0 0 +2273 1 -6.2532334886406346e+01 1.2644696502070801e+01 1.2249999994383884e+01 0 0 0 +2320 1 -6.1409990522875837e+01 1.4863675893119341e+01 1.2250000026337407e+01 0 0 0 +2325 1 -5.9165302804370242e+01 1.3767649331436848e+01 1.2250000013477118e+01 0 0 0 +2962 1 -6.0848818701041374e+01 1.3206172940489227e+01 1.4000000010364957e+01 0 0 0 +2959 1 -5.9726474555096850e+01 1.5425152365344807e+01 1.4000000027148207e+01 0 0 0 +2374 1 -5.7481786735287457e+01 1.4329125598439891e+01 1.0499999990545502e+01 0 0 0 +2376 1 -5.6920614939792323e+01 1.2671622468813492e+01 1.2250000003806964e+01 0 0 0 +2377 1 -5.5798270948345966e+01 1.4890601924036572e+01 1.2250000017315802e+01 0 0 0 +3015 1 -5.5237099098688631e+01 1.3233098862884042e+01 1.3999999979216978e+01 0 0 0 +2428 1 -5.3553583285240485e+01 1.3794575069535158e+01 1.2250000017952724e+01 0 0 0 +3066 1 -5.4114755028789027e+01 1.5452078257339712e+01 1.3999999984073884e+01 0 0 0 +2433 1 -5.1308895500421144e+01 1.2698548373399758e+01 1.2249999991020355e+01 0 0 0 +2480 1 -5.0186551594700504e+01 1.4917527810039266e+01 1.2249999974113566e+01 0 0 0 +3119 1 -4.8503035830080712e+01 1.5479004302626700e+01 1.3999999967075800e+01 0 0 0 +3122 1 -4.9625379640440556e+01 1.3260024692945565e+01 1.3999999990783987e+01 0 0 0 +2485 1 -4.7941863839297838e+01 1.3821501180935030e+01 1.2249999986789174e+01 0 0 0 +2529 1 -4.5697176038411712e+01 1.2725474564188145e+01 1.2249999980806585e+01 0 0 0 +3168 1 -4.6258348066868670e+01 1.4382977632779633e+01 1.3999999996777923e+01 0 0 0 +1953 1 -8.8549510968617710e+01 1.6967275130732787e+01 1.2249999918862173e+01 0 0 0 +2591 1 -8.9045576237036386e+01 1.8566688070884442e+01 1.4000000110909296e+01 0 0 0 +1952 1 -8.6710921649156163e+01 1.7513220186689860e+01 1.0499999838939713e+01 0 0 0 +1958 1 -8.6132427387425025e+01 1.5869292022266379e+01 1.2249999924862433e+01 0 0 0 +1996 1 -8.4964194535610275e+01 1.8062509876725162e+01 1.2249999980406731e+01 0 0 0 +2638 1 -8.4431591857358214e+01 1.6415304135941231e+01 1.4000000107059929e+01 0 0 0 +2001 1 -8.2732308881851054e+01 1.6972597704754822e+01 1.2249999985176506e+01 0 0 0 +2050 1 -8.1049144198267697e+01 1.7535867447106156e+01 1.0500000000928940e+01 0 0 0 +2635 1 -8.3289037215425495e+01 1.8631323735747070e+01 1.4000000085390122e+01 0 0 0 +2052 1 -8.0489604368768028e+01 1.5878439934905273e+01 1.2249999984839805e+01 0 0 0 +2053 1 -7.9367522404383777e+01 1.8098109210972947e+01 1.2249999988146921e+01 0 0 0 +2742 1 -7.7684224919686542e+01 1.8659479427496446e+01 1.3999999945203763e+01 0 0 0 +2691 1 -7.8805835683149084e+01 1.6440213604962416e+01 1.3999999940300794e+01 0 0 0 +2103 1 -7.5439349262115556e+01 1.7563379626984574e+01 1.0500000029081187e+01 0 0 0 +2104 1 -7.7122770599758852e+01 1.7001909772017981e+01 1.2249999981385072e+01 0 0 0 +2109 1 -7.4878099755536553e+01 1.5905852062775551e+01 1.2250000002099188e+01 0 0 0 +2156 1 -7.3755787838878859e+01 1.8124826941511163e+01 1.2250000028537206e+01 0 0 0 +2161 1 -7.1511091556384144e+01 1.7028802005579603e+01 1.2250000001967736e+01 0 0 0 +2795 1 -7.2072253472636305e+01 1.8686300589469628e+01 1.4000000041263258e+01 0 0 0 +2798 1 -7.3194616028171382e+01 1.6467332226262801e+01 1.4000000001733097e+01 0 0 0 +2210 1 -6.9827570025565151e+01 1.7590277175157279e+01 1.0500000000970980e+01 0 0 0 +2212 1 -6.9266400467016283e+01 1.5932775536375562e+01 1.2250000010914558e+01 0 0 0 +2213 1 -6.8144054076618019e+01 1.8151754566836441e+01 1.2249999985487985e+01 0 0 0 +2264 1 -6.5899366414469540e+01 1.7055728565060889e+01 1.2250000005786330e+01 0 0 0 +2902 1 -6.6460538618768723e+01 1.8713231588399879e+01 1.3999999987016491e+01 0 0 0 +2851 1 -6.7582882753711203e+01 1.6494251720566645e+01 1.3999999991966256e+01 0 0 0 +2318 1 -6.1971162383676031e+01 1.6521178936976028e+01 1.0499999955670793e+01 0 0 0 +2269 1 -6.3654678465920483e+01 1.5959702315480055e+01 1.2249999983987150e+01 0 0 0 +2316 1 -6.2532334329477521e+01 1.8178681913210859e+01 1.2249999986812822e+01 0 0 0 +2903 1 -6.4215850433462265e+01 1.7617205364045606e+01 1.4000000005157206e+01 0 0 0 +2315 1 -6.0848818150625199e+01 1.8740158460839055e+01 1.0499999963073346e+01 0 0 0 +2321 1 -6.0287646429089662e+01 1.7082655404156665e+01 1.2250000010610020e+01 0 0 0 +2372 1 -5.8042958634909070e+01 1.5986628774378742e+01 1.2250000028990094e+01 0 0 0 +3010 1 -5.8604130534964447e+01 1.7644131867767783e+01 1.4000000012330485e+01 0 0 0 +2371 1 -5.6359442729266625e+01 1.6548105036095421e+01 1.0500000012737726e+01 0 0 0 +2373 1 -5.6920614565474544e+01 1.8205608134548161e+01 1.2250000027715680e+01 0 0 0 +2424 1 -5.4675926809812374e+01 1.7109581339406148e+01 1.2250000005165433e+01 0 0 0 +2429 1 -5.2431239218363508e+01 1.6013554547379542e+01 1.2250000001835895e+01 0 0 0 +3063 1 -5.2992411080567983e+01 1.7671057656744800e+01 1.3999999962164187e+01 0 0 0 +2476 1 -5.1308895366459886e+01 1.8232534119445194e+01 1.2249999983663974e+01 0 0 0 +2481 1 -4.9064207680052121e+01 1.7136507356886622e+01 1.2249999984257130e+01 0 0 0 +3115 1 -4.9625379572190802e+01 1.8794010411054877e+01 1.3999999951258960e+01 0 0 0 +3118 1 -5.0747723402668477e+01 1.6575030926308948e+01 1.3999999957216833e+01 0 0 0 +2526 1 -4.6819519995236639e+01 1.6040480723814554e+01 1.2249999971634114e+01 0 0 0 +2527 1 -4.5697176048864094e+01 1.8259460286052459e+01 1.2249999965696762e+01 0 0 0 +3165 1 -4.7380691926388621e+01 1.7697983851807596e+01 1.3999999970682730e+01 0 0 0 +1949 1 -8.9214901822865798e+01 2.0201333311772824e+01 1.2249999853762572e+01 0 0 0 +1954 1 -8.7168422770101657e+01 1.9119071488498960e+01 1.2249999966464166e+01 0 0 0 +2588 1 -8.7753273809981508e+01 2.0844250867110837e+01 1.4000000187459708e+01 0 0 0 +1992 1 -8.6132426772745305e+01 2.1403277885257605e+01 1.2250000045047118e+01 0 0 0 +1994 1 -8.5523444010089278e+01 1.9727123173289584e+01 1.0499999918890246e+01 0 0 0 +1997 1 -8.3862485071646446e+01 2.0294620601493641e+01 1.2250000037187478e+01 0 0 0 +1991 1 -8.4431591147161299e+01 2.1949290060839605e+01 1.0500000014518113e+01 0 0 0 +2048 1 -8.1612971067628521e+01 1.9194966636166345e+01 1.2250000015969498e+01 0 0 0 +2686 1 -8.2176993916020365e+01 2.0852458455221072e+01 1.4000000060903400e+01 0 0 0 +2098 1 -7.8805834848706127e+01 2.1974199305686003e+01 1.0500000063169205e+01 0 0 0 +2049 1 -8.0489603510431806e+01 2.1412425714949300e+01 1.2250000012110503e+01 0 0 0 +2047 1 -7.9929643999035164e+01 1.9755739844260543e+01 1.0500000054723650e+01 0 0 0 +2100 1 -7.8245180833367073e+01 2.0316789919478992e+01 1.2250000013420763e+01 0 0 0 +2154 1 -7.4316919998567869e+01 1.9782315877149010e+01 1.0499999986613760e+01 0 0 0 +2105 1 -7.6000492862963242e+01 1.9220840651659973e+01 1.2249999988614148e+01 0 0 0 +2152 1 -7.4878098996546896e+01 2.1439837536110378e+01 1.2249999997275962e+01 0 0 0 +2739 1 -7.6561515964872683e+01 2.0878302758930804e+01 1.3999999970816273e+01 0 0 0 +2151 1 -7.3194615331859964e+01 2.2001317638771170e+01 1.0499999989924538e+01 0 0 0 +2157 1 -7.2633423453382889e+01 2.0343806923117260e+01 1.2249999988389339e+01 0 0 0 +2846 1 -7.0949917182316412e+01 2.0905285737977671e+01 1.4000000024711362e+01 0 0 0 +2207 1 -6.8705227087070824e+01 1.9809258023620963e+01 1.0499999993658944e+01 0 0 0 +2208 1 -7.0388740564536533e+01 1.9247780523601882e+01 1.2249999997674978e+01 0 0 0 +2209 1 -6.9266399896584701e+01 2.1466760808353825e+01 1.2250000003404159e+01 0 0 0 +2258 1 -6.7582882234987338e+01 2.2028237018509074e+01 1.0499999995701984e+01 0 0 0 +2259 1 -6.5338194267327694e+01 2.0932211112029943e+01 1.0499999998504013e+01 0 0 0 +2260 1 -6.7021710772339759e+01 2.0370734512849115e+01 1.2249999991353720e+01 0 0 0 +2265 1 -6.4777022331570180e+01 1.9274708231647146e+01 1.2249999996449484e+01 0 0 0 +2312 1 -6.3654678018141638e+01 2.1493687766329540e+01 1.2249999984203637e+01 0 0 0 +2317 1 -6.1409990072716823e+01 2.0397661443003134e+01 1.2249999964644140e+01 0 0 0 +2954 1 -6.3093506101249346e+01 1.9836184917263637e+01 1.3999999973569082e+01 0 0 0 +2951 1 -6.1971162045628830e+01 2.2055164529472766e+01 1.3999999999980462e+01 0 0 0 +2366 1 -5.9726474124922753e+01 2.0959138009541956e+01 1.0499999958610314e+01 0 0 0 +2368 1 -5.9165302322068619e+01 1.9301634944473342e+01 1.2250000008907179e+01 0 0 0 +2369 1 -5.8042958281101917e+01 2.1520614534080636e+01 1.2249999987019692e+01 0 0 0 +2420 1 -5.5798270625670099e+01 2.0424587716999881e+01 1.2250000011213936e+01 0 0 0 +3007 1 -5.7481786369433706e+01 1.9863111321054422e+01 1.3999999997705938e+01 0 0 0 +3058 1 -5.6359442421265506e+01 2.2082090892224432e+01 1.3999999987531158e+01 0 0 0 +2425 1 -5.3553583038894359e+01 1.9328560830447504e+01 1.2249999988904746e+01 0 0 0 +2472 1 -5.2431238985272792e+01 2.1547540422464330e+01 1.2249999983280967e+01 0 0 0 +3059 1 -5.4114754772542206e+01 2.0986064092677637e+01 1.3999999972604243e+01 0 0 0 +3114 1 -5.1870067212545621e+01 1.9890037206678155e+01 1.3999999957782833e+01 0 0 0 +2477 1 -5.0186551467244684e+01 2.0451513610532782e+01 1.2249999974125780e+01 0 0 0 +3161 1 -4.8503035741707649e+01 2.1012990073667467e+01 1.3999999970445096e+01 0 0 0 +3111 1 -5.0747723262524623e+01 2.2109016807473303e+01 1.3999999946456004e+01 0 0 0 +2523 1 -4.7941863782696835e+01 1.9355486911751306e+01 1.2249999967270080e+01 0 0 0 +2524 1 -4.6819519922210517e+01 2.1574466515916189e+01 1.2250000005372119e+01 0 0 0 +3162 1 -4.6258348010869156e+01 1.9916963343966845e+01 1.3999999975226723e+01 0 0 0 +1945 1 -8.9045576033868599e+01 2.4100674012858313e+01 1.0499999862732185e+01 0 0 0 +1950 1 -8.8549510594851469e+01 2.2501261000163638e+01 1.2249999953858657e+01 0 0 0 +1988 1 -8.7168422459917608e+01 2.4653057493984150e+01 1.2250000037025657e+01 0 0 0 +1993 1 -8.4964193859254920e+01 2.3596495787585376e+01 1.2250000071833403e+01 0 0 0 +2630 1 -8.6710921185079528e+01 2.3047206071031532e+01 1.4000000123632814e+01 0 0 0 +2042 1 -8.3289036471578598e+01 2.4165309648281916e+01 1.0500000057300246e+01 0 0 0 +2044 1 -8.2732308097661004e+01 2.2506583610236614e+01 1.2250000049462953e+01 0 0 0 +2045 1 -8.1612970245222840e+01 2.4728952514557935e+01 1.2250000030073705e+01 0 0 0 +2683 1 -8.1049143362605960e+01 2.3069853267262697e+01 1.4000000007663704e+01 0 0 0 +2095 1 -7.7684224121521822e+01 2.4193465082941461e+01 1.0500000025179892e+01 0 0 0 +2096 1 -7.9367521553928242e+01 2.3632094935451011e+01 1.2249999999978321e+01 0 0 0 +2101 1 -7.7122769791941280e+01 2.2535895347643855e+01 1.2249999987883418e+01 0 0 0 +2148 1 -7.6000492129087988e+01 2.4754826218641877e+01 1.2249999979126915e+01 0 0 0 +2790 1 -7.5439348521862726e+01 2.3097365136479148e+01 1.3999999983765159e+01 0 0 0 +2202 1 -7.2072252905612089e+01 2.4220286038702646e+01 1.0499999949103248e+01 0 0 0 +2153 1 -7.3755787162448968e+01 2.3658812402692242e+01 1.2249999984468293e+01 0 0 0 +2204 1 -7.1511090929784828e+01 2.2562787367510996e+01 1.2250000005401747e+01 0 0 0 +2205 1 -7.0388740109354345e+01 2.4781765993116128e+01 1.2250000002971749e+01 0 0 0 +2256 1 -6.8144053643378228e+01 2.3685739987016195e+01 1.2250000002497799e+01 0 0 0 +2843 1 -6.9827569483711372e+01 2.3124262547135253e+01 1.4000000031431874e+01 0 0 0 +2261 1 -6.5899366001969270e+01 2.2589713963586654e+01 1.2249999957235870e+01 0 0 0 +2308 1 -6.4777022132845559e+01 2.4808693800575099e+01 1.2249999965147811e+01 0 0 0 +2310 1 -6.4215850072234616e+01 2.3151190856458896e+01 1.0499999971910265e+01 0 0 0 +2313 1 -6.2532334062646115e+01 2.3712667534836250e+01 1.2249999977766008e+01 0 0 0 +2364 1 -6.0287646115848091e+01 2.2616641127469240e+01 1.2249999993187608e+01 0 0 0 +2365 1 -5.9165302150633423e+01 2.4835620856636222e+01 1.2249999980806832e+01 0 0 0 +3002 1 -6.0848817976873725e+01 2.4274144240073827e+01 1.3999999992853084e+01 0 0 0 +2416 1 -5.6920614291280188e+01 2.3739594060462778e+01 1.2249999979224292e+01 0 0 0 +3055 1 -5.5237098586465294e+01 2.4301070582596850e+01 1.3999999952798309e+01 0 0 0 +2421 1 -5.4675926569592569e+01 2.2643567250687536e+01 1.2249999998693138e+01 0 0 0 +2468 1 -5.3553582904715945e+01 2.4862546879551701e+01 1.2250000001723308e+01 0 0 0 +3110 1 -5.2992410893179240e+01 2.3205043589053208e+01 1.3999999949481399e+01 0 0 0 +2473 1 -5.1308895233749766e+01 2.3766520080017308e+01 1.2249999975853653e+01 0 0 0 +2519 1 -4.9064207579181776e+01 2.2670493252369710e+01 1.2249999966775492e+01 0 0 0 +3157 1 -4.9625379519110695e+01 2.4327996379590946e+01 1.3999999971560012e+01 0 0 0 +2520 1 -4.7941863779595749e+01 2.4889472881511217e+01 1.2249999993234306e+01 0 0 0 +2551 1 -4.5697175998917380e+01 2.3793446148640271e+01 1.2250000001317431e+01 0 0 0 +3158 1 -4.7380691845899499e+01 2.3231969705794242e+01 1.3999999978673861e+01 0 0 0 +1986 1 -8.7753273349497590e+01 2.6378236833252586e+01 1.0499999918390051e+01 0 0 0 +1946 1 -8.9214901525606138e+01 2.5735319257684939e+01 1.2250000035898051e+01 0 0 0 +1984 1 -8.8549510167738305e+01 2.8035246904818880e+01 1.2250000052805955e+01 0 0 0 +1989 1 -8.6132426232322317e+01 2.6937263810275013e+01 1.2250000016171050e+01 0 0 0 +2040 1 -8.3862484327970876e+01 2.5828606535668953e+01 1.2250000046189321e+01 0 0 0 +2627 1 -8.5523443427959734e+01 2.5261109087045309e+01 1.4000000092817407e+01 0 0 0 +2678 1 -8.4431590542370770e+01 2.7483276017857037e+01 1.4000000033301802e+01 0 0 0 +2039 1 -8.2176993191795916e+01 2.6386444361906957e+01 1.0500000043569436e+01 0 0 0 +2041 1 -8.2732307433339386e+01 2.8040569582403432e+01 1.2250000027393648e+01 0 0 0 +2092 1 -8.0489602742211432e+01 2.6946411568546672e+01 1.2250000009477438e+01 0 0 0 +2097 1 -7.8245180070441151e+01 2.5850775635835817e+01 1.2249999975146698e+01 0 0 0 +2731 1 -7.8805834174057694e+01 2.7508185083064205e+01 1.3999999948364218e+01 0 0 0 +2734 1 -7.9929643192057043e+01 2.5289725645453832e+01 1.3999999969724188e+01 0 0 0 +2146 1 -7.6561515299505601e+01 2.6412288419227142e+01 1.0499999990154171e+01 0 0 0 +2144 1 -7.7122769226740530e+01 2.8069881058941938e+01 1.2249999971042866e+01 0 0 0 +2149 1 -7.4878098450121527e+01 2.6973823120766802e+01 1.2249999985164196e+01 0 0 0 +2787 1 -7.4316919407143018e+01 2.5316301395818233e+01 1.4000000025980057e+01 0 0 0 +2198 1 -7.3194614929404324e+01 2.7535303246265428e+01 1.0499999978893234e+01 0 0 0 +2200 1 -7.2633422937869966e+01 2.5877792439108060e+01 1.2250000009562925e+01 0 0 0 +2201 1 -7.1511090687006089e+01 2.8096773026977207e+01 1.2250000018224672e+01 0 0 0 +2838 1 -7.3194614954340324e+01 2.7535303251475732e+01 1.4000000020610642e+01 0 0 0 +2252 1 -6.9266399678637711e+01 2.7000746405774169e+01 1.2250000014539607e+01 0 0 0 +2254 1 -6.8705226738509268e+01 2.5343243499291891e+01 1.0499999998851411e+01 0 0 0 +2894 1 -6.8705226735022364e+01 2.5343243554327348e+01 1.4000000005323621e+01 0 0 0 +2251 1 -6.7582882205266515e+01 2.7562222706151744e+01 1.0499999994716752e+01 0 0 0 +2257 1 -6.7021710577536183e+01 2.5904720050988836e+01 1.2249999987790568e+01 0 0 0 +2304 1 -6.5899366026687616e+01 2.8123699708930527e+01 1.2250000001244912e+01 0 0 0 +2891 1 -6.7582882163260535e+01 2.7562222695833494e+01 1.4000000015472565e+01 0 0 0 +2946 1 -6.5338194200432042e+01 2.6466196766991299e+01 1.3999999991935818e+01 0 0 0 +2309 1 -6.3654678026759505e+01 2.7027673534072896e+01 1.2249999963443676e+01 0 0 0 +2360 1 -6.1409989971785016e+01 2.5931647284410747e+01 1.2249999998196262e+01 0 0 0 +2361 1 -6.0287646178431253e+01 2.8150627130574193e+01 1.2249999981113550e+01 0 0 0 +2412 1 -5.8042958246641611e+01 2.7054600610513013e+01 1.2250000018820067e+01 0 0 0 +2999 1 -5.9726474084305806e+01 2.6493123979951861e+01 1.3999999992086996e+01 0 0 0 +2417 1 -5.5798270525142982e+01 2.5958573784538693e+01 1.2249999996111084e+01 0 0 0 +3051 1 -5.6359442452024396e+01 2.7616077067101632e+01 1.3999999990507218e+01 0 0 0 +2464 1 -5.4675926608090229e+01 2.8177553465411616e+01 1.2249999989924479e+01 0 0 0 +2469 1 -5.2431239014593892e+01 2.7081526574257349e+01 1.2250000009928037e+01 0 0 0 +3107 1 -5.1870067153390103e+01 2.5424023292730617e+01 1.3999999979256163e+01 0 0 0 +3106 1 -5.4114754720860304e+01 2.6520050206158682e+01 1.3999999978561057e+01 0 0 0 +2515 1 -5.0186551449907249e+01 2.5985499685011739e+01 1.2249999977622364e+01 0 0 0 +2516 1 -4.9064207638342531e+01 2.8204479371030171e+01 1.2250000012089544e+01 0 0 0 +3153 1 -5.0747723301557784e+01 2.7643002965001472e+01 1.3999999984083072e+01 0 0 0 +3154 1 -4.8503035754835885e+01 2.6546976151583419e+01 1.3999999983401588e+01 0 0 0 +9004 1 -4.5136004073015705e+01 2.7669928987827443e+01 1.3999999993209178e+01 0 0 0 +2548 1 -4.6819519961225105e+01 2.7108452537673802e+01 1.2250000008138469e+01 0 0 0 +3190 1 -4.6258348008904221e+01 2.5450949301909461e+01 1.4000000010419418e+01 0 0 0 +1980 1 -8.9214901135422039e+01 3.1269305342796692e+01 1.2250000019616678e+01 0 0 0 +1985 1 -8.7168422263786667e+01 3.0187043630762595e+01 1.2250000046321079e+01 0 0 0 +2622 1 -8.9045575893983610e+01 2.9634660000353822e+01 1.4000000060992319e+01 0 0 0 +2036 1 -8.4964193283715076e+01 2.9130481775416218e+01 1.2250000020906263e+01 0 0 0 +2037 1 -8.3862483829957583e+01 3.1362592566499938e+01 1.2250000037874536e+01 0 0 0 +2035 1 -8.3289035879413092e+01 2.9699295652529749e+01 1.0500000060779458e+01 0 0 0 +2088 1 -8.1612969681995438e+01 3.0262938500793727e+01 1.2250000011634732e+01 0 0 0 +2675 1 -8.3289035897634307e+01 2.9699295641926703e+01 1.3999999993731045e+01 0 0 0 +2093 1 -7.9367520962593844e+01 2.9166080808122231e+01 1.2250000004420674e+01 0 0 0 +2140 1 -7.8245179700405146e+01 3.1384761536229352e+01 1.2250000030127529e+01 0 0 0 +2142 1 -7.7684223631251697e+01 2.9727450899865183e+01 1.0500000016617319e+01 0 0 0 +2782 1 -7.7684223706382056e+01 2.9727450905419268e+01 1.3999999980020863e+01 0 0 0 +2145 1 -7.6000491823543200e+01 3.0288812017318133e+01 1.2249999995804201e+01 0 0 0 +2195 1 -7.2072252770507887e+01 2.9754271820590063e+01 1.0499999971698800e+01 0 0 0 +2196 1 -7.3755786870433397e+01 2.9192798103688723e+01 1.2250000026347605e+01 0 0 0 +2197 1 -7.2633422887072911e+01 3.1411778288291398e+01 1.2249999999617435e+01 0 0 0 +2835 1 -7.2072252772208458e+01 2.9754271780866091e+01 1.4000000043473101e+01 0 0 0 +2248 1 -7.0388740101156259e+01 3.0315751795212257e+01 1.2249999993682044e+01 0 0 0 +2253 1 -6.8144053658330691e+01 2.9219725748767623e+01 1.2249999975528748e+01 0 0 0 +2300 1 -6.7021710792521944e+01 3.1438705948460527e+01 1.2249999980538913e+01 0 0 0 +2302 1 -6.6460538468368426e+01 2.9781202842358290e+01 1.0499999973628141e+01 0 0 0 +2305 1 -6.4777022345305454e+01 3.0342679679851887e+01 1.2249999984397570e+01 0 0 0 +2942 1 -6.6460538419099564e+01 2.9781202859311328e+01 1.3999999986291421e+01 0 0 0 +2303 1 -6.4215850181927138e+01 2.8685176620494346e+01 1.0499999963344905e+01 0 0 0 +2354 1 -6.3093506185439637e+01 3.0904156593550482e+01 1.0499999965294588e+01 0 0 0 +2356 1 -6.2532334234076153e+01 2.9246653470531630e+01 1.2249999961168429e+01 0 0 0 +2357 1 -6.1409990279485932e+01 3.1465633346107559e+01 1.2249999965323829e+01 0 0 0 +2943 1 -6.4215850214036934e+01 2.8685176687899290e+01 1.3999999995472027e+01 0 0 0 +2994 1 -6.3093506229352222e+01 3.0904156580068928e+01 1.3999999980169351e+01 0 0 0 +2408 1 -5.9165302349399880e+01 3.0369607003595810e+01 1.2249999984926559e+01 0 0 0 +3050 1 -5.8604130328947903e+01 2.8712103815311803e+01 1.3999999983724473e+01 0 0 0 +2413 1 -5.6920614430864504e+01 2.9273580280799532e+01 1.2250000025731707e+01 0 0 0 +2460 1 -5.5798270748690094e+01 3.1492560095538874e+01 1.2250000025508873e+01 0 0 0 +3102 1 -5.5237098770997378e+01 2.9835056863729076e+01 1.3999999989830723e+01 0 0 0 +3047 1 -5.7481786452119508e+01 3.0931083551956668e+01 1.3999999991320028e+01 0 0 0 +2465 1 -5.3553583053278722e+01 3.0396533167322051e+01 1.2249999987547943e+01 0 0 0 +3103 1 -5.2992410960691480e+01 2.8739029827324618e+01 1.3999999980172280e+01 0 0 0 +3149 1 -5.1870067269673001e+01 3.0958009582390503e+01 1.3999999996103119e+01 0 0 0 +2511 1 -5.1308895340700822e+01 2.9300506322179164e+01 1.2250000002167912e+01 0 0 0 +2512 1 -5.0186551563370813e+01 3.1519485974578746e+01 1.2249999992559937e+01 0 0 0 +3150 1 -4.9625379589117415e+01 2.9861982600747066e+01 1.3999999991380241e+01 0 0 0 +2545 1 -4.7941863814619126e+01 3.0423459055966781e+01 1.2249999992501179e+01 0 0 0 +2549 1 -4.5697175989502817e+01 2.9327432201425616e+01 1.2249999984325845e+01 0 0 0 +3184 1 -4.6258347988109435e+01 3.0984935430590767e+01 1.3999999993278717e+01 0 0 0 +3187 1 -4.7380691894254234e+01 2.8765955817127303e+01 1.3999999999654449e+01 0 0 0 +1979 1 -8.7753273082667405e+01 3.1912222829276757e+01 1.0500000140266835e+01 0 0 0 +1981 1 -8.8549509871969349e+01 3.3569232949541970e+01 1.2250000054238527e+01 0 0 0 +2619 1 -8.7753273058665442e+01 3.1912222838920357e+01 1.3999999990662269e+01 0 0 0 +2030 1 -8.6710920373226315e+01 3.4115178221151034e+01 1.0500000084587720e+01 0 0 0 +2032 1 -8.6132425880098282e+01 3.2471249861410378e+01 1.2250000069989500e+01 0 0 0 +2670 1 -8.6710920381242531e+01 3.4115178221381825e+01 1.4000000022187974e+01 0 0 0 +2083 1 -8.1049142451431024e+01 3.4137825307196792e+01 1.0500000065054580e+01 0 0 0 +2086 1 -8.2176992717319763e+01 3.1920430422594723e+01 1.0500000062159783e+01 0 0 0 +2084 1 -8.2732307060519958e+01 3.3574555667420384e+01 1.2250000057312976e+01 0 0 0 +2723 1 -8.1049142488287785e+01 3.4137825284534664e+01 1.4000000004730564e+01 0 0 0 +2726 1 -8.2176992755346134e+01 3.1920430417720727e+01 1.4000000007254433e+01 0 0 0 +2089 1 -8.0489602402649084e+01 3.2480397615589027e+01 1.2250000019016696e+01 0 0 0 +2139 1 -7.6561515095188469e+01 3.1946274320955894e+01 1.0500000001681981e+01 0 0 0 +2141 1 -7.7122769076163351e+01 3.3603867064626598e+01 1.2250000031263991e+01 0 0 0 +2190 1 -7.5439348063296450e+01 3.4165336847803459e+01 1.0499999984288063e+01 0 0 0 +2192 1 -7.4878098377868355e+01 3.2507809034399678e+01 1.2250000005708207e+01 0 0 0 +2779 1 -7.6561515136538134e+01 3.1946274311584915e+01 1.3999999980394913e+01 0 0 0 +2830 1 -7.5439348086733716e+01 3.4165336848506236e+01 1.3999999993397484e+01 0 0 0 +2244 1 -7.1511090812272741e+01 3.3630759023670151e+01 1.2249999991882094e+01 0 0 0 +2246 1 -7.0949916927703100e+01 3.1973257217589428e+01 1.0499999974163847e+01 0 0 0 +2886 1 -7.0949916897201476e+01 3.1973257192588317e+01 1.4000000022994319e+01 0 0 0 +2243 1 -6.9827569628361303e+01 3.4192234307407752e+01 1.0499999979821279e+01 0 0 0 +2249 1 -6.9266399856681261e+01 3.2534732367063228e+01 1.2250000000528233e+01 0 0 0 +2883 1 -6.9827569608408666e+01 3.4192234301856395e+01 1.4000000010707861e+01 0 0 0 +2301 1 -6.5899366409015684e+01 3.3657685721871943e+01 1.2249999945932519e+01 0 0 0 +2351 1 -6.1971162455992364e+01 3.3123136463949358e+01 1.0499999960197657e+01 0 0 0 +2352 1 -6.3654678392481436e+01 3.2561659534554252e+01 1.2249999964369618e+01 0 0 0 +2991 1 -6.1971162479818872e+01 3.3123136503629681e+01 1.4000000001223265e+01 0 0 0 +2404 1 -6.0287646600705330e+01 3.3684613305310016e+01 1.2250000003801359e+01 0 0 0 +2409 1 -5.8042958566181625e+01 3.2588586872343917e+01 1.2249999993658239e+01 0 0 0 +3098 1 -5.6359442724789034e+01 3.3150063378917011e+01 1.4000000007736320e+01 0 0 0 +2461 1 -5.4675926881322219e+01 3.3711539828990887e+01 1.2250000013636598e+01 0 0 0 +2507 1 -5.2431239184818132e+01 3.2615512933697254e+01 1.2249999994664677e+01 0 0 0 +3099 1 -5.4114754956116087e+01 3.2054036567506031e+01 1.3999999989677674e+01 0 0 0 +3145 1 -5.2992411221942362e+01 3.4273016228387235e+01 1.3999999962230348e+01 0 0 0 +2541 1 -4.9064207751185002e+01 3.3738465705590443e+01 1.2249999978840766e+01 0 0 0 +3183 1 -4.8503035825019168e+01 3.2080962406406258e+01 1.3999999982052893e+01 0 0 0 +3146 1 -5.0747723449657698e+01 3.3176989315634536e+01 1.3999999975829823e+01 0 0 0 +2546 1 -4.6819519962712256e+01 3.2642438735192066e+01 1.2250000024642208e+01 0 0 0 +3180 1 -4.7380691938476602e+01 3.4299942114486178e+01 1.3999999995220431e+01 0 0 0 +9038 1 -4.5136004054988135e+01 3.3203915123329303e+01 1.4000000007814624e+01 0 0 0 +1977 1 -8.9214901455340865e+01 3.6803291546005461e+01 1.2250000098737424e+01 0 0 0 +2028 1 -8.7168421931468487e+01 3.5721029665880245e+01 1.2250000067205558e+01 0 0 0 +2027 1 -8.5523442799693299e+01 3.6329081351478557e+01 1.0500000084390651e+01 0 0 0 +2033 1 -8.4964193076859630e+01 3.4664467956052384e+01 1.2250000072907326e+01 0 0 0 +2080 1 -8.3862483685229435e+01 3.6896578784410863e+01 1.2250000059905195e+01 0 0 0 +2667 1 -8.5523442785793037e+01 3.6329081312143984e+01 1.4000000030621068e+01 0 0 0 +2085 1 -8.1612969474938609e+01 3.5796924656951234e+01 1.2250000055901893e+01 0 0 0 +2134 1 -7.9929642638756675e+01 3.6357697775694895e+01 1.0500000032536803e+01 0 0 0 +2136 1 -7.9367520796263136e+01 3.4700066914388316e+01 1.2250000020713721e+01 0 0 0 +2137 1 -7.8245179722020893e+01 3.6918747734813458e+01 1.2249999982914165e+01 0 0 0 +2774 1 -7.9929642648263609e+01 3.6357697781628467e+01 1.3999999995108340e+01 0 0 0 +2187 1 -7.4316919360557463e+01 3.6384273360163363e+01 1.0499999944776183e+01 0 0 0 +2188 1 -7.6000491845936395e+01 3.5822798110441887e+01 1.2249999991897363e+01 0 0 0 +2827 1 -7.4316919380715419e+01 3.6384273397090539e+01 1.4000000006341454e+01 0 0 0 +2193 1 -7.3755786963828896e+01 3.4726784161253953e+01 1.2249999974653171e+01 0 0 0 +2240 1 -7.2633423148734366e+01 3.6945764504427729e+01 1.2249999997366416e+01 0 0 0 +2245 1 -7.0388740401592315e+01 3.5849737966666090e+01 1.2250000008656231e+01 0 0 0 +2294 1 -6.8705227262225350e+01 3.6411215585381676e+01 1.0499999993115818e+01 0 0 0 +2296 1 -6.8144054014215030e+01 3.4753711833457288e+01 1.2249999996450098e+01 0 0 0 +2934 1 -6.8705227268265205e+01 3.6411215596386384e+01 1.4000000009241445e+01 0 0 0 +2297 1 -6.7021711286067941e+01 3.6972692173606575e+01 1.2250000017408075e+01 0 0 0 +2348 1 -6.4777022879566275e+01 3.5876665809173119e+01 1.2249999966753682e+01 0 0 0 +2986 1 -6.5338195092943764e+01 3.7534168906317518e+01 1.3999999992823929e+01 0 0 0 +2353 1 -6.2532334720445995e+01 3.4780639581770487e+01 1.2249999992727103e+01 0 0 0 +2400 1 -6.1409990839997754e+01 3.6999619534875045e+01 1.2250000000042444e+01 0 0 0 +2402 1 -6.0848818639436963e+01 3.5342116461209002e+01 1.0499999967247359e+01 0 0 0 +2405 1 -5.9165302826905815e+01 3.5903593257120846e+01 1.2249999995542447e+01 0 0 0 +3039 1 -5.9726474933839540e+01 3.7561096383971268e+01 1.4000000011150695e+01 0 0 0 +3042 1 -6.0848818678572151e+01 3.5342116470076220e+01 1.4000000009979907e+01 0 0 0 +2456 1 -5.6920614796951021e+01 3.4807566594040992e+01 1.2249999979299959e+01 0 0 0 +2457 1 -5.5798271151512516e+01 3.7026546455522841e+01 1.2249999987904664e+01 0 0 0 +3094 1 -5.7481786909586106e+01 3.6465069877012205e+01 1.3999999998118250e+01 0 0 0 +3095 1 -5.5237099073339863e+01 3.5369043226141265e+01 1.3999999987179473e+01 0 0 0 +2503 1 -5.3553583343432805e+01 3.5930519576987543e+01 1.2250000000649573e+01 0 0 0 +3141 1 -5.4114755309752624e+01 3.7588022945527499e+01 1.4000000004203152e+01 0 0 0 +3142 1 -5.1870067558283864e+01 3.6491996022455652e+01 1.3999999976538900e+01 0 0 0 +2508 1 -5.1308895539246258e+01 3.4834492707277668e+01 1.2249999971203261e+01 0 0 0 +2537 1 -5.0186551746574132e+01 3.7053472389815866e+01 1.2249999986060569e+01 0 0 0 +3179 1 -4.9625379754670391e+01 3.5395968991000572e+01 1.3999999986997599e+01 0 0 0 +3176 1 -4.8503035931504712e+01 3.7614948805018450e+01 1.3999999984800516e+01 0 0 0 +2542 1 -4.7941863918460761e+01 3.5957445425298971e+01 1.2250000004547093e+01 0 0 0 +2560 1 -4.5697175980098727e+01 3.4861418441671518e+01 1.2250000006377311e+01 0 0 0 +3199 1 -4.6258348014454597e+01 3.6518921744931120e+01 1.4000000016204636e+01 0 0 0 +2022 1 -8.9045575775954191e+01 4.0702632355499041e+01 1.0500000002977282e+01 0 0 0 +2024 1 -8.8549509794680660e+01 3.9103219225601407e+01 1.2250000036619168e+01 0 0 0 +2662 1 -8.9045575750276384e+01 4.0702632436145784e+01 1.3999999987302528e+01 0 0 0 +2078 1 -8.4431590145279515e+01 3.8551248369158152e+01 1.0500000043359069e+01 0 0 0 +2029 1 -8.6132425698636922e+01 3.8005236097774315e+01 1.2250000019266059e+01 0 0 0 +2076 1 -8.4964193020403926e+01 4.0198454228437789e+01 1.2250000015312493e+01 0 0 0 +2718 1 -8.4431590094642758e+01 3.8551248364670379e+01 1.4000000017776513e+01 0 0 0 +2075 1 -8.3289035721898458e+01 4.0767268154565848e+01 1.0500000019796120e+01 0 0 0 +2081 1 -8.2732307062704052e+01 3.9108541959223963e+01 1.2250000051810645e+01 0 0 0 +2715 1 -8.3289035702481186e+01 4.0767268127412038e+01 1.3999999986488394e+01 0 0 0 +2182 1 -7.7684223839032512e+01 4.0795423384348453e+01 1.0499999972847483e+01 0 0 0 +2132 1 -8.0489602352709781e+01 3.8014383842218443e+01 1.2250000045784258e+01 0 0 0 +2131 1 -7.8805833978776761e+01 3.8576157382527242e+01 1.0499999993690000e+01 0 0 0 +2133 1 -7.9367520925676672e+01 4.0234053267843500e+01 1.2249999999513140e+01 0 0 0 +2771 1 -7.8805833986566697e+01 3.8576157380993287e+01 1.3999999974774733e+01 0 0 0 +2822 1 -7.7684223862368839e+01 4.0795423419995480e+01 1.3999999960503260e+01 0 0 0 +2184 1 -7.7122769255867794e+01 3.9137853373034339e+01 1.2249999949989942e+01 0 0 0 +2189 1 -7.4878098578113750e+01 3.8041795299546443e+01 1.2249999982485537e+01 0 0 0 +2235 1 -7.2072253379363474e+01 4.0822244406719641e+01 1.0499999969903792e+01 0 0 0 +2238 1 -7.3194615277248730e+01 3.8603275522512412e+01 1.0499999952435109e+01 0 0 0 +2236 1 -7.3755787341078218e+01 4.0260770578656420e+01 1.2250000003349497e+01 0 0 0 +2241 1 -7.1511091225598577e+01 3.9164745418155277e+01 1.2250000027731774e+01 0 0 0 +2875 1 -7.2072253443153883e+01 4.0822244386474864e+01 1.4000000041814744e+01 0 0 0 +2878 1 -7.3194615321907662e+01 3.8603275530586416e+01 1.4000000002136165e+01 0 0 0 +2292 1 -6.9266400333505871e+01 3.8068718695913233e+01 1.2250000010323451e+01 0 0 0 +2293 1 -6.8144054557922246e+01 4.0287698266538520e+01 1.2250000012053768e+01 0 0 0 +2342 1 -6.6460539477350054e+01 4.0849175346158177e+01 1.0500000010416608e+01 0 0 0 +2291 1 -6.7582883012257824e+01 3.8630195029740790e+01 1.0500000016729151e+01 0 0 0 +2344 1 -6.5899367000155777e+01 3.9191672018147969e+01 1.2250000036501657e+01 0 0 0 +2931 1 -6.7582883001434354e+01 3.8630194982792659e+01 1.4000000017270080e+01 0 0 0 +2982 1 -6.6460539462848089e+01 4.0849175305410661e+01 1.3999999997579815e+01 0 0 0 +2983 1 -6.4215851302717738e+01 3.9753148974316495e+01 1.3999999978500936e+01 0 0 0 +2343 1 -6.4215851235798212e+01 3.9753148939034894e+01 1.0499999994155091e+01 0 0 0 +2349 1 -6.3654679001505230e+01 3.8095645751527073e+01 1.2249999983531087e+01 0 0 0 +2396 1 -6.2532335338728856e+01 4.0314625771849222e+01 1.2249999971881012e+01 0 0 0 +3090 1 -5.8604131274502002e+01 3.9780076306992513e+01 1.4000000013645987e+01 0 0 0 +2401 1 -6.0287647175540009e+01 3.9218599500172246e+01 1.2249999984841718e+01 0 0 0 +2452 1 -5.8042959052906596e+01 3.8122573121925697e+01 1.2250000019059891e+01 0 0 0 +3137 1 -5.5237099548306468e+01 4.0903029549034322e+01 1.3999999999812420e+01 0 0 0 +2453 1 -5.6920615269964919e+01 4.0341552858392646e+01 1.2250000000737368e+01 0 0 0 +3091 1 -5.6359443228191260e+01 3.8684049721454485e+01 1.3999999994861925e+01 0 0 0 +3138 1 -5.2992411546746183e+01 3.9807002585651681e+01 1.4000000002441878e+01 0 0 0 +2499 1 -5.4675927286153971e+01 3.9245526174675810e+01 1.2249999958835664e+01 0 0 0 +2504 1 -5.2431239485369737e+01 3.8149499331988231e+01 1.2249999999519323e+01 0 0 0 +3175 1 -5.0747723693717042e+01 3.8710975725534595e+01 1.3999999987442564e+01 0 0 0 +2533 1 -5.1308895745579960e+01 4.0368479080111477e+01 1.2250000003488001e+01 0 0 0 +2538 1 -4.9064207852911565e+01 3.9272452098617620e+01 1.2250000014812866e+01 0 0 0 +3172 1 -4.9625379855872204e+01 4.0929955333873089e+01 1.4000000000495143e+01 0 0 0 +9035 1 -4.5136003956103181e+01 3.8737901389307602e+01 1.4000000024563940e+01 0 0 0 +2557 1 -4.6819519982471348e+01 3.8176425082164116e+01 1.2250000016019705e+01 0 0 0 +2558 1 -4.5697175875952439e+01 4.0395404716635234e+01 1.2249999997330089e+01 0 0 0 +3196 1 -4.7380691933905567e+01 3.9833928477442612e+01 1.4000000012092498e+01 0 0 0 +2020 1 -8.7753273033020832e+01 4.2980195357915939e+01 1.0499999959954701e+01 0 0 0 +2021 1 -8.9214901277765577e+01 4.2337277849327542e+01 1.2249999948897228e+01 0 0 0 +2025 1 -8.7168422011393233e+01 4.1255016031300237e+01 1.2250000014022909e+01 0 0 0 +2660 1 -8.7753272955101977e+01 4.2980195412585658e+01 1.3999999987802211e+01 0 0 0 +2073 1 -8.6132425797286444e+01 4.3539222490711680e+01 1.2250000028043782e+01 0 0 0 +2077 1 -8.3862483778016014e+01 4.2430565186812117e+01 1.2249999998313477e+01 0 0 0 +2126 1 -8.2176992819534917e+01 4.2988403121239628e+01 1.0500000006689659e+01 0 0 0 +2128 1 -8.1612969609936442e+01 4.1330911064687413e+01 1.2250000004668491e+01 0 0 0 +2766 1 -8.2176992806230047e+01 4.2988403095716265e+01 1.3999999976798033e+01 0 0 0 +2129 1 -8.0489602579785739e+01 4.3548370366115591e+01 1.2249999995123288e+01 0 0 0 +2181 1 -7.8245179968253368e+01 4.2452734209942264e+01 1.2250000006724395e+01 0 0 0 +2180 1 -7.6561515514698058e+01 4.3014247072815493e+01 1.0499999963942681e+01 0 0 0 +2185 1 -7.6000492165248929e+01 4.1356784567022999e+01 1.2249999972012699e+01 0 0 0 +2233 1 -7.4878098927148088e+01 4.3575781848158144e+01 1.2249999994737589e+01 0 0 0 +2820 1 -7.6561515587113576e+01 4.3014247057973790e+01 1.3999999972666439e+01 0 0 0 +2286 1 -7.0949917720911799e+01 4.3041230048458807e+01 1.0499999989965886e+01 0 0 0 +2237 1 -7.2633423562850737e+01 4.2479751046577391e+01 1.2250000001422906e+01 0 0 0 +2926 1 -7.0949917714885373e+01 4.3041230037152552e+01 1.4000000045130266e+01 0 0 0 +2288 1 -7.0388740876039492e+01 4.1383724468301800e+01 1.2250000021956996e+01 0 0 0 +2289 1 -6.9266400732608730e+01 4.3602705221766037e+01 1.2250000040751342e+01 0 0 0 +2341 1 -6.7021711811548940e+01 4.2506678602790423e+01 1.2249999997841231e+01 0 0 0 +2345 1 -6.4777023451154307e+01 4.1410652093348325e+01 1.2250000009557573e+01 0 0 0 +3034 1 -6.3093507372258657e+01 4.1972128942063691e+01 1.3999999988179761e+01 0 0 0 +2393 1 -6.3654679511423609e+01 4.3629631974396418e+01 1.2249999964545040e+01 0 0 0 +2394 1 -6.3093507328997411e+01 4.1972128953070161e+01 1.0499999962658816e+01 0 0 0 +2397 1 -6.1409991381632096e+01 4.2533605696890682e+01 1.2249999965902509e+01 0 0 0 +5431 1 -6.1971163535064150e+01 4.4191108824031794e+01 1.0499999945319269e+01 0 0 0 +6071 1 -6.1971163578699525e+01 4.4191108840871102e+01 1.3999999982854137e+01 0 0 0 +2448 1 -5.9165303358507686e+01 4.1437579431049038e+01 1.2249999960646482e+01 0 0 0 +2449 1 -5.8042959503211719e+01 4.3656559278876458e+01 1.2249999958076211e+01 0 0 0 +3087 1 -5.7481787381800991e+01 4.1999056072715355e+01 1.4000000000921142e+01 0 0 0 +2496 1 -5.5798271522016073e+01 4.2560532650777041e+01 1.2249999990184362e+01 0 0 0 +6178 1 -5.6359443529320103e+01 4.4218035861009966e+01 1.4000000017993854e+01 0 0 0 +3171 1 -5.1870067729172966e+01 4.2025982312922743e+01 1.4000000021350978e+01 0 0 0 +3135 1 -5.4114755631082247e+01 4.3122009192280245e+01 1.3999999998351843e+01 0 0 0 +2500 1 -5.3553583660924055e+01 4.1464505879271186e+01 1.2249999974705439e+01 0 0 0 +2530 1 -5.2431239625721069e+01 4.3683485557315713e+01 1.2249999996574852e+01 0 0 0 +3192 1 -4.8503035871381790e+01 4.3148935066526128e+01 1.4000000014570924e+01 0 0 0 +2534 1 -5.0186551805112728e+01 4.2587458680932976e+01 1.2250000019831736e+01 0 0 0 +6231 1 -5.0747723709864054e+01 4.4244961925074620e+01 1.4000000026904916e+01 0 0 0 +3193 1 -4.6258347872958105e+01 4.2052907982206165e+01 1.4000000011493691e+01 0 0 0 +2554 1 -4.7941863858723131e+01 4.1491431744499174e+01 1.2250000010307893e+01 0 0 0 +2555 1 -4.6819519817683208e+01 4.3710411337894193e+01 1.2250000017525572e+01 0 0 0 +2 1 -8.9045576406387198e+01 1.9647302094211225e+00 1.7499999869703945e+01 0 0 -1 +2562 1 -8.9045576334141558e+01 1.9647303905863285e+00 1.4000000067961858e+01 0 0 0 +2565 1 -8.8549511066866259e+01 3.6531729854658040e-01 1.5749999938725505e+01 0 0 0 +2579 1 -8.7168423312057399e+01 2.5171138184348525e+00 1.5750000101908956e+01 0 0 0 +2583 1 -8.4964194940813954e+01 1.4605521543948303e+00 1.5750000145542684e+01 0 0 0 +51 1 -8.3289037855434941e+01 2.0293661652512491e+00 1.4534204595406663e-07 0 0 0 +2611 1 -8.3289037998003508e+01 2.0293662442317846e+00 1.4000000118498678e+01 0 0 0 +2613 1 -8.2732309253307506e+01 3.7064033211705649e-01 1.5750000149555609e+01 0 0 0 +2614 1 -8.1612971982297296e+01 2.5930093583044584e+00 1.5750000078914423e+01 0 0 0 +95 1 -7.7684225964938477e+01 2.0575227639302809e+00 1.7499999990255692e+01 0 0 -1 +2655 1 -7.7684226139765187e+01 2.0575227694782305e+00 1.3999999985179297e+01 0 0 0 +2656 1 -7.9367523281972936e+01 1.4961522959743123e+00 1.5750000022518892e+01 0 0 0 +2659 1 -7.7122771475835378e+01 3.9995318914168310e-01 1.5749999978820750e+01 0 0 0 +2708 1 -7.6000494200425337e+01 2.6188841934039577e+00 1.5749999963865159e+01 0 0 0 +202 1 -7.2072254839267600e+01 2.0843446853250724e+00 1.7499999990356091e+01 0 0 -1 +2762 1 -7.2072254943036896e+01 2.0843446254482361e+00 1.3999999978234325e+01 0 0 0 +2712 1 -7.3755789136914274e+01 1.5228707898763449e+00 1.5749999989906703e+01 0 0 0 +2764 1 -7.1511092758200093e+01 4.2684606729107366e-01 1.5749999992401250e+01 0 0 0 +2765 1 -7.0388742042719997e+01 2.6458247511133850e+00 1.5749999952734360e+01 0 0 0 +2816 1 -6.8144055515463705e+01 1.5497988807448777e+00 1.5749999938192428e+01 0 0 0 +255 1 -6.6460540171600783e+01 2.1112757965994624e+00 1.7499999935262128e+01 0 0 -1 +2815 1 -6.6460540186504801e+01 2.1112757660576409e+00 1.4000000006245362e+01 0 0 0 +2819 1 -6.5899367896395191e+01 4.5377268957048134e-01 1.5749999969397303e+01 0 0 0 +2868 1 -6.4777023964094340e+01 2.6727523045123243e+00 1.5750000026273973e+01 0 0 0 +310 1 -6.4215851999018540e+01 1.0152492459329678e+00 1.7499999995717459e+01 0 0 -1 +2870 1 -6.4215851969135613e+01 1.0152492639454540e+00 1.4000000037626533e+01 0 0 0 +2872 1 -6.2532335928828083e+01 1.5767256564214798e+00 1.5750000075768341e+01 0 0 0 +363 1 -5.8604131791605852e+01 1.0421752787801450e+00 8.2877384954826994e-08 0 0 0 +2923 1 -5.8604131945695315e+01 1.0421753194728169e+00 1.4000000072300757e+01 0 0 0 +2924 1 -6.0287647898507906e+01 4.8069894812255709e-01 1.5750000116949282e+01 0 0 0 +2925 1 -5.9165303745807194e+01 2.6996783690523927e+00 1.5750000100520817e+01 0 0 0 +2976 1 -5.6920615682613835e+01 1.6036514616192279e+00 1.5750000073118041e+01 0 0 0 +470 1 -5.2992411538916407e+01 1.0691008372351305e+00 1.7499999977077884e+01 0 0 -1 +2979 1 -5.4675927565799135e+01 5.0762459648500502e-01 1.5749999980877083e+01 0 0 0 +3028 1 -5.3553583679753601e+01 2.7266039809600695e+00 1.5749999944066598e+01 0 0 0 +3030 1 -5.2992411634867985e+01 1.0691008481124380e+00 1.3999999968906396e+01 0 0 0 +3082 1 -4.9625379516562411e+01 2.1920534717824496e+00 1.3999999980930822e+01 0 0 0 +3032 1 -5.1308895571305385e+01 1.6305772401924565e+00 1.5749999948819848e+01 0 0 0 +3084 1 -4.9064207419744086e+01 5.3455041544631587e-01 1.5750000002870264e+01 0 0 0 +3083 1 -4.7380691422677522e+01 1.0960267665428283e+00 1.4000000010804307e+01 0 0 0 +3085 1 -4.7941863554690634e+01 2.7535298788254612e+00 1.5750000002791982e+01 0 0 0 +3134 1 -4.5697175507997351e+01 1.6575030398892738e+00 1.5750000030260802e+01 0 0 0 +17 1 -8.7753274337613362e+01 4.2422930969345956e+00 4.6055820490664701e-08 0 0 0 +2577 1 -8.7753274336904340e+01 4.2422932791708527e+00 1.4000000160648128e+01 0 0 0 +2563 1 -8.9214901767267051e+01 3.5993757551552235e+00 1.5750000002064647e+01 0 0 0 +2575 1 -8.8549511154024060e+01 5.8993034679773393e+00 1.5750000142011272e+01 0 0 0 +2580 1 -8.6132427563755513e+01 4.8013201794578331e+00 1.5750000186537257e+01 0 0 0 +2609 1 -8.3862485941617535e+01 3.6926629570432823e+00 1.5750000151356472e+01 0 0 0 +48 1 -8.2176994998863762e+01 4.2505009797254170e+00 1.3216260441595296e-07 0 0 0 +2608 1 -8.2176995226878859e+01 4.2505010218260653e+00 1.4000000074924783e+01 0 0 0 +2610 1 -8.2732309459306279e+01 5.9046260712771836e+00 1.5750000137602926e+01 0 0 0 +2652 1 -8.0489604922496028e+01 4.8104685118568113e+00 1.5750000023602054e+01 0 0 0 +2657 1 -7.8245182196312683e+01 3.7148331202170795e+00 1.5749999957997002e+01 0 0 0 +146 1 -7.6561517481673860e+01 4.2763462483359058e+00 1.7499999937037675e+01 0 0 -1 +2706 1 -7.6561517633332386e+01 4.2763462408858732e+00 1.3999999971523808e+01 0 0 0 +2704 1 -7.7122771581715512e+01 5.9339386645408050e+00 1.5749999957546017e+01 0 0 0 +2709 1 -7.4878100699839337e+01 4.8378811960045001e+00 1.5749999975863604e+01 0 0 0 +199 1 -7.0949918734810453e+01 4.3033299372922853e+00 1.7499999983573996e+01 0 0 -1 +2759 1 -7.0949918867052091e+01 4.3033298906433375e+00 1.3999999985274220e+01 0 0 0 +2760 1 -7.2633425034909322e+01 3.7418508935352643e+00 1.5749999978206844e+01 0 0 0 +2761 1 -7.1511092623394148e+01 5.9608314901295545e+00 1.5749999980358304e+01 0 0 0 +2812 1 -6.9266401471241778e+01 4.8648051077362231e+00 1.5749999968596560e+01 0 0 0 +2817 1 -6.7021712363081861e+01 3.7687787797452534e+00 1.5749999969859340e+01 0 0 0 +2864 1 -6.5899367537662727e+01 5.9877581246277227e+00 1.5749999979013827e+01 0 0 0 +307 1 -6.3093507675058049e+01 3.2342287396432101e+00 3.6071501341439216e-08 0 0 0 +358 1 -6.1971163511980379e+01 5.4532081056128581e+00 7.4836290053781340e-08 0 0 0 +2867 1 -6.3093507672779964e+01 3.2342288026898882e+00 1.4000000034257614e+01 0 0 0 +2869 1 -6.3654679604210003e+01 4.8917316674272051e+00 1.5750000039968944e+01 0 0 0 +2918 1 -6.1971163542935969e+01 5.4532081426583936e+00 1.4000000036526476e+01 0 0 0 +2920 1 -6.1409991615099557e+01 3.7957050678418733e+00 1.5750000097366859e+01 0 0 0 +2921 1 -6.0287647523889881e+01 6.0146845112910574e+00 1.5750000085456747e+01 0 0 0 +2972 1 -5.8042959558977742e+01 4.9186578121003945e+00 1.5750000065263182e+01 0 0 0 +411 1 -5.6359443413855004e+01 5.4801340230389179e+00 3.9429661313761244e-08 0 0 0 +2971 1 -5.6359443598671675e+01 5.4801339778489799e+00 1.4000000020227130e+01 0 0 0 +414 1 -5.7481787517552114e+01 3.2611545988038388e+00 7.8101042078060345e-08 0 0 0 +2974 1 -5.7481787701987862e+01 3.2611546101287918e+00 1.4000000039473154e+01 0 0 0 +2977 1 -5.5798271617296251e+01 3.8226308641905997e+00 1.5750000025626413e+01 0 0 0 +467 1 -5.1870067558064783e+01 3.2880803037917423e+00 1.7499999957905569e+01 0 0 -1 +3027 1 -5.1870067638059865e+01 3.2880802772965563e+00 1.3999999967991998e+01 0 0 0 +3024 1 -5.4675927380001347e+01 6.0416101811040104e+00 1.5749999988315512e+01 0 0 0 +3029 1 -5.2431239534721222e+01 4.9455833726374623e+00 1.5749999950974640e+01 0 0 0 +518 1 -5.0747723523085668e+01 5.5070597183975671e+00 1.7499999975952591e+01 0 0 -1 +3078 1 -5.0747723518985573e+01 5.5070596706775961e+00 1.3999999954980987e+01 0 0 0 +3079 1 -4.8503035637799421e+01 4.4110330184757318e+00 1.3999999964432153e+01 0 0 0 +3080 1 -5.0186551586819810e+01 3.8495566003877326e+00 1.5749999935797346e+01 0 0 0 +3081 1 -4.9064207606989633e+01 6.0685360914591975e+00 1.5749999965556851e+01 0 0 0 +3131 1 -4.6819519687064385e+01 4.9725093561824778e+00 1.5750000004465392e+01 0 0 0 +3133 1 -4.6258347643830298e+01 3.3150061676431353e+00 1.3999999996394893e+01 0 0 0 +2571 1 -8.9214901816487881e+01 9.1333617163469274e+00 1.5750000210142638e+01 0 0 0 +2576 1 -8.7168423279958148e+01 8.0510998511742269e+00 1.5750000229786817e+01 0 0 0 +14 1 -8.6710922037666776e+01 6.4452482667933317e+00 1.6018814363860656e-07 0 0 0 +43 1 -8.5523444684370958e+01 8.6591513804183062e+00 2.5643906553796114e-07 0 0 0 +2574 1 -8.6710922104686816e+01 6.4452484628940736e+00 1.4000000143911290e+01 0 0 0 +2603 1 -8.5523444895759013e+01 8.6591514276132369e+00 1.4000000130626766e+01 0 0 0 +2605 1 -8.4964195056634864e+01 6.9945380839458515e+00 1.5750000242630671e+01 0 0 0 +2606 1 -8.3862485939909376e+01 9.2266488911620641e+00 1.5750000200788268e+01 0 0 0 +90 1 -8.1049144882248157e+01 6.4678959527217952e+00 7.9023664056876441e-08 0 0 0 +2650 1 -8.1049145167723424e+01 6.4678959437478314e+00 1.4000000023612568e+01 0 0 0 +2648 1 -8.1612972019940656e+01 8.1269950803726836e+00 1.5750000069805893e+01 0 0 0 +87 1 -7.9929645038651529e+01 8.6877684451683557e+00 2.8285072062317340e-09 0 0 0 +2647 1 -7.9929645297118086e+01 8.6877684299365363e+00 1.4000000007984182e+01 0 0 0 +2653 1 -7.9367523380020202e+01 7.0301379078847974e+00 1.5749999975635124e+01 0 0 0 +2700 1 -7.8245182134754444e+01 9.2488186867037427e+00 1.5749999926415327e+01 0 0 0 +143 1 -7.5439350318149778e+01 6.4954087035245811e+00 1.7499999946508261e+01 0 0 -1 +194 1 -7.4316921247048114e+01 8.7143450827805271e+00 1.7499999965783783e+01 0 0 -1 +2703 1 -7.5439350429167845e+01 6.4954087042146034e+00 1.3999999985080297e+01 0 0 0 +2754 1 -7.4316921374184673e+01 8.7143450649079206e+00 1.4000000008670728e+01 0 0 0 +2705 1 -7.6000494104639728e+01 8.1528696737000352e+00 1.5749999927396260e+01 0 0 0 +2756 1 -7.3755789011575644e+01 7.0568561811672863e+00 1.5749999964931341e+01 0 0 0 +2757 1 -7.2633424690526823e+01 9.2758362401613752e+00 1.5750000009270346e+01 0 0 0 +247 1 -6.8705228136948605e+01 8.7412876063824552e+00 1.7499999954794166e+01 0 0 -1 +250 1 -6.9827571036486901e+01 6.5223067808079591e+00 1.7499999967477322e+01 0 0 -1 +2807 1 -6.8705228223989380e+01 8.7412876139019779e+00 1.3999999990377638e+01 0 0 0 +2810 1 -6.9827571155700809e+01 6.5223067205498442e+00 1.3999999993238664e+01 0 0 0 +2808 1 -7.0388741705098766e+01 8.1798100640798115e+00 1.5750000005995789e+01 0 0 0 +2813 1 -6.8144055151484778e+01 7.0837842187880424e+00 1.5749999969713752e+01 0 0 0 +2860 1 -6.7021711869519336e+01 9.3027640416422539e+00 1.5749999951004682e+01 0 0 0 +2865 1 -6.4777023467559900e+01 8.2067376461846457e+00 1.5749999974690345e+01 0 0 0 +2916 1 -6.2532335460580185e+01 7.1107111704763888e+00 1.5750000049162241e+01 0 0 0 +2917 1 -6.1409991128371381e+01 9.3296905059033381e+00 1.5750000057451647e+01 0 0 0 +355 1 -6.0848819225493180e+01 7.6721875571747811e+00 6.0588540407024993e-08 0 0 0 +2915 1 -6.0848819297195895e+01 7.6721875593935671e+00 1.4000000019461924e+01 0 0 0 +2968 1 -5.9165303302774959e+01 8.2336639117409849e+00 1.5750000067038059e+01 0 0 0 +462 1 -5.5237099355148395e+01 7.6991133977127406e+00 3.8162752957759949e-09 0 0 0 +2973 1 -5.6920615366695429e+01 7.1376369848763392e+00 1.5750000037953956e+01 0 0 0 +3020 1 -5.5798271262426425e+01 9.3566164144395056e+00 1.5749999996146915e+01 0 0 0 +3022 1 -5.5237099523825620e+01 7.6991133533390634e+00 1.3999999987674732e+01 0 0 0 +3025 1 -5.3553583493808084e+01 8.2605895294096978e+00 1.5749999967813947e+01 0 0 0 +515 1 -4.9625379619217419e+01 7.7260390739160441e+00 1.7499999966496603e+01 0 0 -1 +3075 1 -4.9625379618046168e+01 7.7260390803185750e+00 1.3999999979621389e+01 0 0 0 +3076 1 -5.1308895581222423e+01 7.1645628255743610e+00 1.5749999949313786e+01 0 0 0 +3077 1 -5.0186551607556318e+01 9.3835421638957293e+00 1.5749999953208894e+01 0 0 0 +3130 1 -4.7380691708828380e+01 6.6300125184187335e+00 1.4000000001144837e+01 0 0 0 +3127 1 -4.6258347864529021e+01 8.8489918904101152e+00 1.4000000009457597e+01 0 0 0 +3128 1 -4.7941863719112504e+01 8.2875155227570314e+00 1.5749999987105832e+01 0 0 0 +3132 1 -4.5697175814587190e+01 7.1914888482999810e+00 1.5749999999093173e+01 0 0 0 +2572 1 -8.8549511136227309e+01 1.1433289410203779e+01 1.5750000235649926e+01 0 0 0 +40 1 -8.4431592031446073e+01 1.0881318293792457e+01 2.4589889235926421e-07 0 0 0 +2600 1 -8.4431592298335062e+01 1.0881318268389318e+01 1.4000000108266448e+01 0 0 0 +2601 1 -8.6132427523686587e+01 1.0335306195773786e+01 1.5750000188344691e+01 0 0 0 +2644 1 -8.2732309286476763e+01 1.1438611904990497e+01 1.5750000139804540e+01 0 0 0 +138 1 -7.8805836131060005e+01 1.0906228008656905e+01 1.7499999945163680e+01 0 0 -1 +2698 1 -7.8805836352211259e+01 1.0906227980129437e+01 1.3999999959118680e+01 0 0 0 +2649 1 -8.0489604811295223e+01 1.0344454222097339e+01 1.5750000004283613e+01 0 0 0 +2701 1 -7.7122771276481927e+01 1.1467924194212200e+01 1.5749999909478724e+01 0 0 0 +2752 1 -7.4878100388204885e+01 1.0371866596453213e+01 1.5749999973802232e+01 0 0 0 +191 1 -7.3194616596202295e+01 1.0933346861699913e+01 1.7499999971427851e+01 0 0 -1 +2751 1 -7.3194616707724919e+01 1.0933346874533244e+01 1.4000000019818632e+01 0 0 0 +2804 1 -7.1511092136255897e+01 1.1494816723073891e+01 1.5750000009851862e+01 0 0 0 +2809 1 -6.9266401024531248e+01 1.0398790336905531e+01 1.5749999980306987e+01 0 0 0 +298 1 -6.7582883258643847e+01 1.0960266520500340e+01 1.7499999976587809e+01 0 0 -1 +2858 1 -6.7582883376176710e+01 1.0960266533789493e+01 1.3999999955884093e+01 0 0 0 +299 1 -6.5338195329830199e+01 9.8642405290509210e+00 1.7499999980711308e+01 0 0 -1 +2859 1 -6.5338195382422157e+01 9.8642405279678780e+00 1.3999999972309963e+01 0 0 0 +2861 1 -6.5899366982222404e+01 1.1521743361148491e+01 1.5749999970913295e+01 0 0 0 +350 1 -6.4215850962991368e+01 1.2083219983966380e+01 1.7499999986717977e+01 0 0 -1 +2910 1 -6.4215851002475404e+01 1.2083220019156398e+01 1.3999999996109171e+01 0 0 0 +2912 1 -6.3654679052786804e+01 1.0425717037679867e+01 1.5750000002051776e+01 0 0 0 +403 1 -5.8604130905698320e+01 1.2110146284084662e+01 1.0930556015864568e-08 0 0 0 +406 1 -5.9726475039846086e+01 9.8911669003351772e+00 5.4244615910192806e-08 0 0 0 +2963 1 -5.8604131011244206e+01 1.2110146286609867e+01 1.4000000026529172e+01 0 0 0 +2964 1 -6.0287646946829362e+01 1.1548669915868450e+01 1.5750000053282150e+01 0 0 0 +2966 1 -5.9726475118232614e+01 9.8911669035155114e+00 1.4000000011530988e+01 0 0 0 +2969 1 -5.8042959063541673e+01 1.0452643227996871e+01 1.5750000037721696e+01 0 0 0 +459 1 -5.4114755218574714e+01 9.9180926892877626e+00 1.7499999967855640e+01 0 0 -1 +510 1 -5.2992411227072388e+01 1.2137071985985536e+01 1.7499999971822348e+01 0 0 -1 +3019 1 -5.4114755323047909e+01 9.9180926429742211e+00 1.3999999994224146e+01 0 0 0 +3070 1 -5.2992411297029683e+01 1.2137071933527357e+01 1.3999999965604552e+01 0 0 0 +3021 1 -5.4675927049775588e+01 1.1575595675581251e+01 1.5749999970346552e+01 0 0 0 +3072 1 -5.2431239331292602e+01 1.0479568882145511e+01 1.5749999942159668e+01 0 0 0 +566 1 -4.8503035738295054e+01 9.9450186579088875e+00 1.7499999995594262e+01 0 0 -1 +3124 1 -4.9064207672822135e+01 1.1602521700890478e+01 1.5749999990207805e+01 0 0 0 +3126 1 -4.8503035752111956e+01 9.9450186407011447e+00 1.4000000005655943e+01 0 0 0 +563 1 -4.7380691853899705e+01 1.2163998211007643e+01 1.2374879787557802e-08 0 0 0 +3129 1 -4.6819519882446031e+01 1.0506495043272892e+01 1.5750000024210225e+01 0 0 0 +7 1 -8.9045576356289885e+01 1.3032702311507375e+01 3.0446059184896512e-07 0 0 0 +35 1 -8.7753274010185862e+01 1.5310265157505617e+01 3.1660385602094721e-07 0 0 0 +2567 1 -8.9045576334487095e+01 1.3032702284841939e+01 1.4000000131998164e+01 0 0 0 +2568 1 -8.9214901827530795e+01 1.4667347596151362e+01 1.5750000276286045e+01 0 0 0 +2595 1 -8.7753274210819782e+01 1.5310265055240890e+01 1.4000000095664550e+01 0 0 0 +2597 1 -8.7168423084106564e+01 1.3585085748093446e+01 1.5750000285190964e+01 0 0 0 +2602 1 -8.4964194876293135e+01 1.2528524043131865e+01 1.5750000209301493e+01 0 0 0 +2640 1 -8.3862485585186221e+01 1.4760634746431698e+01 1.5750000131342482e+01 0 0 0 +79 1 -8.2176994404265244e+01 1.5318472637635104e+01 9.4733838551519511e-08 0 0 0 +82 1 -8.3289037557255057e+01 1.3097337919954148e+01 1.8094929288281492e-07 0 0 0 +2639 1 -8.2176994729069847e+01 1.5318472593840697e+01 1.4000000014630812e+01 0 0 0 +2642 1 -8.3289037881859670e+01 1.3097337887734923e+01 1.4000000057973720e+01 0 0 0 +2645 1 -8.1612971670835591e+01 1.3660980854537241e+01 1.5750000012697990e+01 0 0 0 +135 1 -7.7684225541984702e+01 1.3125493819591689e+01 1.7499999917872184e+01 0 0 -1 +2695 1 -7.7684225700990893e+01 1.3125493830539742e+01 1.3999999951957953e+01 0 0 0 +2696 1 -7.9367523049525275e+01 1.2564123519470451e+01 1.5749999928544403e+01 0 0 0 +2697 1 -7.8245181565909448e+01 1.4782804266446560e+01 1.5749999886375726e+01 0 0 0 +186 1 -7.6561516696971680e+01 1.5344317204050267e+01 1.7499999886647156e+01 0 0 -1 +2746 1 -7.6561516778111667e+01 1.5344317248207087e+01 1.3999999955655428e+01 0 0 0 +2748 1 -7.6000493603589646e+01 1.3686855127441770e+01 1.5749999924865591e+01 0 0 0 +239 1 -7.0949917728394240e+01 1.5371300444857363e+01 1.5384099327775402e-08 0 0 0 +242 1 -7.2072254091452180e+01 1.3152315293464873e+01 2.9037963145128742e-09 0 0 0 +2799 1 -7.0949917844949539e+01 1.5371300422775249e+01 1.4000000024022155e+01 0 0 0 +2802 1 -7.2072254155265981e+01 1.3152315293905785e+01 1.4000000016093123e+01 0 0 0 +2753 1 -7.3755788528333625e+01 1.2590841558954473e+01 1.5749999987810078e+01 0 0 0 +2800 1 -7.2633424115933977e+01 1.4809821535782923e+01 1.5750000001298865e+01 0 0 0 +2805 1 -7.0388741143074085e+01 1.3713795289238979e+01 1.5749999989050945e+01 0 0 0 +2856 1 -6.8144054602926133e+01 1.2617769422582219e+01 1.5749999971673244e+01 0 0 0 +295 1 -6.6460539139383044e+01 1.3179246353021751e+01 1.7499999958475762e+01 0 0 -1 +2855 1 -6.6460539215428824e+01 1.3179246340016237e+01 1.3999999998317730e+01 0 0 0 +2857 1 -6.7021711283923395e+01 1.4836749243087709e+01 1.5749999992161712e+01 0 0 0 +2908 1 -6.4777022883413764e+01 1.3740722913052050e+01 1.5750000005538418e+01 0 0 0 +347 1 -6.3093506552006893e+01 1.4302199460005333e+01 1.3101104201496128e-08 0 0 0 +2907 1 -6.3093506575925012e+01 1.4302199505440246e+01 1.4000000001850132e+01 0 0 0 +2913 1 -6.2532334895702164e+01 1.2644696475341558e+01 1.5750000018438385e+01 0 0 0 +2960 1 -6.1409990510108820e+01 1.4863675881673711e+01 1.5750000039678151e+01 0 0 0 +2965 1 -5.9165302731812041e+01 1.3767649309075532e+01 1.5750000040248576e+01 0 0 0 +454 1 -5.7481786641427050e+01 1.4329125611134142e+01 1.7499999993154482e+01 0 0 -1 +3014 1 -5.7481786753198762e+01 1.4329125590357270e+01 1.4000000026071655e+01 0 0 0 +3016 1 -5.6920614879768344e+01 1.2671622486396828e+01 1.5750000018694088e+01 0 0 0 +3017 1 -5.5798270868312045e+01 1.4890601941214429e+01 1.5749999984687193e+01 0 0 0 +507 1 -5.1870067339146452e+01 1.4356051503621465e+01 1.7499999962201802e+01 0 0 -1 +3067 1 -5.1870067410494123e+01 1.4356051434492411e+01 1.3999999981676762e+01 0 0 0 +3068 1 -5.3553583224435442e+01 1.3794575110892563e+01 1.5749999946804403e+01 0 0 0 +559 1 -4.8503035836542296e+01 1.5479004363207853e+01 5.8911098221869906e-09 0 0 0 +3073 1 -5.1308895478673598e+01 1.2698548407916830e+01 1.5749999970198386e+01 0 0 0 +3120 1 -5.0186551596551404e+01 1.4917527841960435e+01 1.5749999961193810e+01 0 0 0 +608 1 -4.6258348041301304e+01 1.4382977641962734e+01 2.0701271807865851e-08 0 0 0 +3125 1 -4.7941863864664732e+01 1.3821501204977421e+01 1.5749999987236711e+01 0 0 0 +3169 1 -4.5697176017676476e+01 1.2725474605074998e+01 1.5750000005635025e+01 0 0 0 +2593 1 -8.8549510934515808e+01 1.6967275267582231e+01 1.5750000270696091e+01 0 0 0 +2592 1 -8.6710921716036793e+01 1.7513220231608351e+01 1.4000000100753253e+01 0 0 0 +32 1 -8.6710921507671202e+01 1.7513220293021444e+01 2.8003091401274105e-07 0 0 0 +2598 1 -8.6132427215133475e+01 1.5869292075560724e+01 1.5750000262973826e+01 0 0 0 +2636 1 -8.4964194357606331e+01 1.8062509920724541e+01 1.5750000186952374e+01 0 0 0 +130 1 -8.1049143965084340e+01 1.7535867499684802e+01 1.7499999990250529e+01 0 0 -1 +2641 1 -8.2732308743706213e+01 1.6972597765750212e+01 1.5750000053714526e+01 0 0 0 +2690 1 -8.1049144239511648e+01 1.7535867427554944e+01 1.3999999975257653e+01 0 0 0 +2692 1 -8.0489604222986443e+01 1.5878439928254657e+01 1.5749999936599096e+01 0 0 0 +2693 1 -7.9367522304621119e+01 1.8098109210061438e+01 1.5749999907756857e+01 0 0 0 +183 1 -7.5439349230324396e+01 1.7563379558791166e+01 1.7499999940167154e+01 0 0 -1 +2743 1 -7.5439349258523237e+01 1.7563379599357830e+01 1.3999999984651648e+01 0 0 0 +2744 1 -7.7122770555775318e+01 1.7001909707328259e+01 1.5749999910027412e+01 0 0 0 +2749 1 -7.4878099754066810e+01 1.5905852028268130e+01 1.5749999955211749e+01 0 0 0 +2796 1 -7.3755787805526992e+01 1.8124826914278110e+01 1.5749999990326325e+01 0 0 0 +2801 1 -7.1511091488791479e+01 1.7028802021071364e+01 1.5750000018564249e+01 0 0 0 +290 1 -6.9827569896540311e+01 1.7590277211788315e+01 1.6800367319547149e-08 0 0 0 +2850 1 -6.9827569999067364e+01 1.7590277180380479e+01 1.4000000013198683e+01 0 0 0 +2852 1 -6.9266400398636208e+01 1.5932775541563553e+01 1.5750000015846185e+01 0 0 0 +2853 1 -6.8144054002413498e+01 1.8151754630637473e+01 1.5750000003251426e+01 0 0 0 +2904 1 -6.5899366378001460e+01 1.7055728604516457e+01 1.5749999988097201e+01 0 0 0 +398 1 -6.1971162373537119e+01 1.6521178899447087e+01 2.4415534483068768e-08 0 0 0 +2958 1 -6.1971162402998132e+01 1.6521178910498151e+01 1.4000000033948940e+01 0 0 0 +2909 1 -6.3654678447768283e+01 1.5959702320311690e+01 1.5750000017596605e+01 0 0 0 +2956 1 -6.2532334332592718e+01 1.8178681905012070e+01 1.5750000034183330e+01 0 0 0 +395 1 -6.0848818151875392e+01 1.8740158482946445e+01 2.0019481183908283e-08 0 0 0 +2955 1 -6.0848818189633512e+01 1.8740158464061526e+01 1.4000000025747829e+01 0 0 0 +2961 1 -6.0287646439321605e+01 1.7082655419357039e+01 1.5750000040161588e+01 0 0 0 +3012 1 -5.8042958567286320e+01 1.5986628795668725e+01 1.5750000018543782e+01 0 0 0 +451 1 -5.6359442621263568e+01 1.6548105111037668e+01 1.7499999984184647e+01 0 0 -1 +502 1 -5.5237098707164130e+01 1.8767084651877749e+01 1.7499999956468596e+01 0 0 -1 +3011 1 -5.6359442734386221e+01 1.6548105060259459e+01 1.4000000018152145e+01 0 0 0 +3062 1 -5.5237098812442532e+01 1.8767084604353073e+01 1.3999999997998643e+01 0 0 0 +3013 1 -5.6920614490284528e+01 1.8205608149808658e+01 1.5750000005570930e+01 0 0 0 +3064 1 -5.4675926735587808e+01 1.7109581390286209e+01 1.5749999971848657e+01 0 0 0 +3069 1 -5.2431239189217436e+01 1.6013554580944263e+01 1.5749999951308277e+01 0 0 0 +555 1 -4.9625379589549148e+01 1.8794010434194540e+01 1.7499999971396146e+01 0 0 -1 +558 1 -5.0747723404511731e+01 1.6575030981743886e+01 1.7499999983757757e+01 0 0 -1 +3116 1 -5.1308895362017694e+01 1.8232534148907199e+01 1.5749999948723648e+01 0 0 0 +3121 1 -4.9064207683492370e+01 1.7136507378240982e+01 1.5749999962804148e+01 0 0 0 +605 1 -4.7380691913412115e+01 1.7697983878091833e+01 1.7499999972480783e+01 0 0 -1 +3166 1 -4.6819520014772557e+01 1.6040480725103912e+01 1.5749999980274817e+01 0 0 0 +3167 1 -4.5697176065822084e+01 1.8259460287407354e+01 1.5749999986179160e+01 0 0 0 +2589 1 -8.9214901470406829e+01 2.0201333398083616e+01 1.5750000268106799e+01 0 0 0 +2594 1 -8.7168422894474674e+01 1.9119071731940569e+01 1.5750000235454134e+01 0 0 0 +74 1 -8.5523443844892086e+01 1.9727123351887283e+01 2.0859307170439934e-07 0 0 0 +2632 1 -8.6132426748559709e+01 2.1403277979016586e+01 1.5750000127527221e+01 0 0 0 +2634 1 -8.5523444114999222e+01 1.9727123193373775e+01 1.4000000096906467e+01 0 0 0 +2637 1 -8.3862484906416896e+01 2.0294620684720439e+01 1.5750000113839675e+01 0 0 0 +71 1 -8.4431590953333952e+01 2.1949290205826802e+01 1.1275366418317390e-07 0 0 0 +2631 1 -8.4431591206530371e+01 2.1949290046446464e+01 1.4000000092526173e+01 0 0 0 +2688 1 -8.1612970903671965e+01 1.9194966683187694e+01 1.5749999996057223e+01 0 0 0 +127 1 -7.9929643812498412e+01 1.9755739856069361e+01 1.7499999935423066e+01 0 0 -1 +2689 1 -8.0489603378016795e+01 2.1412425713123660e+01 1.5749999955218343e+01 0 0 0 +2687 1 -7.9929643988071945e+01 1.9755739832989462e+01 1.3999999991146789e+01 0 0 0 +2740 1 -7.8245180754739039e+01 2.0316789888878642e+01 1.5749999908381387e+01 0 0 0 +178 1 -7.8805834713206210e+01 2.1974199292814028e+01 1.7499999943193433e+01 0 0 -1 +2738 1 -7.8805834804812605e+01 2.1974199282595414e+01 1.3999999963152032e+01 0 0 0 +234 1 -7.4316919977332816e+01 1.9782315833401842e+01 1.7499999994471107e+01 0 0 -1 +2745 1 -7.6000492821351301e+01 1.9220840605100062e+01 1.5749999924947916e+01 0 0 0 +2792 1 -7.4878098965472105e+01 2.1439837463905270e+01 1.5749999993238767e+01 0 0 0 +2794 1 -7.4316920012164772e+01 1.9782315867679433e+01 1.4000000008442331e+01 0 0 0 +2797 1 -7.2633423399595856e+01 2.0343806893518213e+01 1.5750000040923327e+01 0 0 0 +231 1 -7.3194615299607250e+01 2.2001317587868694e+01 2.9581055827065939e-08 0 0 0 +2791 1 -7.3194615323181267e+01 2.2001317631486547e+01 1.4000000021644079e+01 0 0 0 +287 1 -6.8705226971564599e+01 1.9809258032219265e+01 1.1317712989011852e-08 0 0 0 +2847 1 -6.8705227045178361e+01 1.9809258055056649e+01 1.4000000012056683e+01 0 0 0 +2848 1 -7.0388740495637080e+01 1.9247780541069829e+01 1.5750000039698747e+01 0 0 0 +2849 1 -6.9266399857602394e+01 2.1466760831571783e+01 1.5750000006760283e+01 0 0 0 +339 1 -6.5338194252449640e+01 2.0932211135223035e+01 5.6998388231477293e-09 0 0 0 +2899 1 -6.5338194281043258e+01 2.0932211096750184e+01 1.3999999971975065e+01 0 0 0 +2900 1 -6.7021710742683766e+01 2.0370734504080374e+01 1.5749999983145402e+01 0 0 0 +2905 1 -6.4777022350154823e+01 1.9274708216933160e+01 1.5749999982053817e+01 0 0 0 +338 1 -6.7582882194130278e+01 2.2028237053534902e+01 2.0789482135796788e-08 0 0 0 +2898 1 -6.7582882294964506e+01 2.2028237037469410e+01 1.3999999971406519e+01 0 0 0 +2952 1 -6.3654678039039268e+01 2.1493687824535943e+01 1.5750000000504398e+01 0 0 0 +2957 1 -6.1409990084158423e+01 2.0397661482261775e+01 1.5750000038016715e+01 0 0 0 +446 1 -5.9726474113759330e+01 2.0959138074409008e+01 1.1540159050582588e-08 0 0 0 +3006 1 -5.9726474158884791e+01 2.0959138060996676e+01 1.4000000027143900e+01 0 0 0 +3008 1 -5.9165302311132230e+01 1.9301635006117131e+01 1.5750000043775254e+01 0 0 0 +3009 1 -5.8042958244568979e+01 2.1520614560956279e+01 1.5750000007415936e+01 0 0 0 +3060 1 -5.5798270560006230e+01 2.0424587762600538e+01 1.5749999970779120e+01 0 0 0 +499 1 -5.4114754701824140e+01 2.0986064130390034e+01 1.7499999964355652e+01 0 0 -1 +554 1 -5.1870067189300450e+01 1.9890037245028605e+01 1.7499999944890838e+01 0 0 -1 +3065 1 -5.3553582998054090e+01 1.9328560868978894e+01 1.5749999955399787e+01 0 0 0 +3112 1 -5.2431238962154275e+01 2.1547540410018428e+01 1.5749999925203047e+01 0 0 0 +601 1 -4.8503035754019180e+01 2.1012990073333054e+01 1.7499999972639145e+01 0 0 -1 +3117 1 -5.0186551476438865e+01 2.0451513593453335e+01 1.5749999944503072e+01 0 0 0 +551 1 -5.0747723256253487e+01 2.2109016811445841e+01 1.7499999950605300e+01 0 0 -1 +602 1 -4.6258348036070402e+01 1.9916963328208855e+01 1.7499999967458848e+01 0 0 -1 +3163 1 -4.7941863823231039e+01 1.9355486881194658e+01 1.5749999960330907e+01 0 0 0 +3164 1 -4.6819519960449412e+01 2.1574466483232996e+01 1.5749999961460141e+01 0 0 0 +25 1 -8.9045576031862510e+01 2.4100674185879544e+01 1.8226796427711633e-07 0 0 0 +2585 1 -8.9045576088456912e+01 2.4100673938431743e+01 1.4000000106186837e+01 0 0 0 +2590 1 -8.8549510601734085e+01 2.2501261043578442e+01 1.5750000182198189e+01 0 0 0 +2628 1 -8.7168422420295286e+01 2.4653057605031290e+01 1.5750000143012917e+01 0 0 0 +2633 1 -8.4964193761748788e+01 2.3596495888233886e+01 1.5750000099802861e+01 0 0 0 +122 1 -8.3289036229565284e+01 2.4165309756206003e+01 3.9519843397783916e-08 0 0 0 +2682 1 -8.3289036437755342e+01 2.4165309660738764e+01 1.4000000058104304e+01 0 0 0 +2684 1 -8.2732307936588242e+01 2.2506583654865331e+01 1.5750000045057334e+01 0 0 0 +2685 1 -8.1612970105821788e+01 2.4728952546210426e+01 1.5749999981546630e+01 0 0 0 +175 1 -7.7684224095949673e+01 2.4193465035945376e+01 1.7499999972230608e+01 0 0 -1 +2735 1 -7.7684224109278361e+01 2.4193465065193106e+01 1.3999999970326231e+01 0 0 0 +2736 1 -7.9367521469418378e+01 2.3632094933023083e+01 1.5749999940772488e+01 0 0 0 +2741 1 -7.7122769773570695e+01 2.2535895303149463e+01 1.5749999945915377e+01 0 0 0 +2788 1 -7.6000492167626078e+01 2.4754826169226057e+01 1.5749999977585730e+01 0 0 0 +282 1 -7.2072252914718106e+01 2.4220286043187375e+01 5.8957290605121671e-08 0 0 0 +2793 1 -7.3755787180206823e+01 2.3658812394837263e+01 1.5750000022282482e+01 0 0 0 +2842 1 -7.2072252904120560e+01 2.4220286039119660e+01 1.4000000033990279e+01 0 0 0 +2844 1 -7.1511090881372681e+01 2.2562787376532718e+01 1.5750000042610072e+01 0 0 0 +2845 1 -7.0388740090591810e+01 2.4781765991847816e+01 1.5750000038493248e+01 0 0 0 +2896 1 -6.8144053614002843e+01 2.3685740026482019e+01 1.5750000001639018e+01 0 0 0 +335 1 -6.6460538274129433e+01 2.4247217073784729e+01 1.7499999994964732e+01 0 0 -1 +2895 1 -6.6460538323668175e+01 2.4247217053702887e+01 1.3999999991542403e+01 0 0 0 +2901 1 -6.5899365988424123e+01 2.2589713992314309e+01 1.5749999989442276e+01 0 0 0 +2948 1 -6.4777022124349287e+01 2.4808693828114393e+01 1.5750000008551973e+01 0 0 0 +390 1 -6.4215850084368171e+01 2.3151190846778782e+01 1.7499999994693724e+01 0 0 -1 +2950 1 -6.4215850080896445e+01 2.3151190826366850e+01 1.3999999988138043e+01 0 0 0 +2953 1 -6.2532334100483020e+01 2.3712667543577265e+01 1.5749999997644320e+01 0 0 0 +443 1 -5.8604130169860568e+01 2.3178117716959896e+01 1.7499999990049300e+01 0 0 -1 +3003 1 -5.8604130247061853e+01 2.3178117691399425e+01 1.4000000009100978e+01 0 0 0 +3004 1 -6.0287646094802838e+01 2.2616641136668679e+01 1.5750000022572095e+01 0 0 0 +3005 1 -5.9165302113850998e+01 2.4835620849910665e+01 1.5750000000814214e+01 0 0 0 +3056 1 -5.6920614258239851e+01 2.3739594076870208e+01 1.5749999996702609e+01 0 0 0 +550 1 -5.2992410872542742e+01 2.3205043601479659e+01 1.7499999967245852e+01 0 0 -1 +3061 1 -5.4675926519845461e+01 2.2643567263499211e+01 1.5749999953902135e+01 0 0 0 +3108 1 -5.3553582870688793e+01 2.4862546896891168e+01 1.5749999942866067e+01 0 0 0 +597 1 -4.9625379544247672e+01 2.4327996374831727e+01 1.7499999962756991e+01 0 0 -1 +3113 1 -5.1308895239397351e+01 2.3766520078057592e+01 1.5749999957052573e+01 0 0 0 +3159 1 -4.9064207601393996e+01 2.2670493231689978e+01 1.5749999966320217e+01 0 0 0 +598 1 -4.7380691858978075e+01 2.3231969733356735e+01 1.7499999961936602e+01 0 0 -1 +3160 1 -4.7941863806056631e+01 2.4889472849785530e+01 1.5749999981871213e+01 0 0 0 +3191 1 -4.5697176016425189e+01 2.3793446142920153e+01 1.5749999979188400e+01 0 0 0 +66 1 -8.7753273249461969e+01 2.6378236968260602e+01 1.2793912773645388e-07 0 0 0 +2586 1 -8.9214901486310296e+01 2.5735319416409542e+01 1.5750000123370016e+01 0 0 0 +2624 1 -8.8549510108731880e+01 2.8035247028197585e+01 1.5750000081810196e+01 0 0 0 +2626 1 -8.7753273379041133e+01 2.6378236795730498e+01 1.4000000091473714e+01 0 0 0 +2629 1 -8.6132426129089893e+01 2.6937263878224751e+01 1.5750000075323795e+01 0 0 0 +2680 1 -8.3862484199143424e+01 2.5828606582372608e+01 1.5750000021360012e+01 0 0 0 +119 1 -8.2176993010822741e+01 2.6386444430451657e+01 1.0545949891138662e-08 0 0 0 +2679 1 -8.2176993153898195e+01 2.6386444370557893e+01 1.3999999995951697e+01 0 0 0 +2681 1 -8.2732307367499715e+01 2.8040569608819712e+01 1.5749999982644198e+01 0 0 0 +2732 1 -8.0489602698227586e+01 2.6946411556008083e+01 1.5749999929637834e+01 0 0 0 +2737 1 -7.8245180057860139e+01 2.5850775583923625e+01 1.5749999945136507e+01 0 0 0 +226 1 -7.6561515391373561e+01 2.6412288378220701e+01 1.7499999982223109e+01 0 0 -1 +2784 1 -7.7122769273809126e+01 2.8069881019073343e+01 1.5749999980482807e+01 0 0 0 +2786 1 -7.6561515350801912e+01 2.6412288408337211e+01 1.3999999974533337e+01 0 0 0 +2789 1 -7.4878098532233949e+01 2.6973823087925286e+01 1.5750000017204325e+01 0 0 0 +279 1 -7.0949916816922880e+01 2.6439271312124170e+01 5.1839432302358546e-08 0 0 0 +2839 1 -7.0949916851692393e+01 2.6439271310440731e+01 1.4000000027336128e+01 0 0 0 +2840 1 -7.2633422975385784e+01 2.5877792409352764e+01 1.5750000047764781e+01 0 0 0 +2841 1 -7.1511090678830215e+01 2.8096773051453273e+01 1.5750000036181833e+01 0 0 0 +2892 1 -6.9266399641161485e+01 2.7000746465836809e+01 1.5750000044780975e+01 0 0 0 +2897 1 -6.7021710554583137e+01 2.5904720099964365e+01 1.5749999996199303e+01 0 0 0 +2944 1 -6.5899366016099123e+01 2.8123699739005804e+01 1.5749999980509736e+01 0 0 0 +387 1 -6.3093505933313672e+01 2.5370170616241104e+01 1.7499999993384140e+01 0 0 -1 +438 1 -6.1971162048750948e+01 2.7589150391877801e+01 8.4864169025422598e-09 0 0 0 +2947 1 -6.3093505932443335e+01 2.5370170624173671e+01 1.3999999992612938e+01 0 0 0 +2998 1 -6.1971162067262497e+01 2.7589150371386829e+01 1.3999999999320762e+01 0 0 0 +2949 1 -6.3654678019693591e+01 2.7027673536780519e+01 1.5749999997596673e+01 0 0 0 +3000 1 -6.1409989965588586e+01 2.5931647273572395e+01 1.5749999999229688e+01 0 0 0 +3001 1 -6.0287646182936484e+01 2.8150627143905243e+01 1.5750000004627658e+01 0 0 0 +3052 1 -5.8042958200853917e+01 2.7054600620478109e+01 1.5749999972704883e+01 0 0 0 +491 1 -5.6359442382189641e+01 2.7616077065772298e+01 1.7499999971895626e+01 0 0 -1 +494 1 -5.7481786145965152e+01 2.5397097329396594e+01 1.7499999965164996e+01 0 0 -1 +3054 1 -5.7481786227981374e+01 2.5397097310729023e+01 1.3999999992098232e+01 0 0 0 +3057 1 -5.5798270471557494e+01 2.5958573796566881e+01 1.5749999966425895e+01 0 0 0 +547 1 -5.1870067126342668e+01 2.5424023302963366e+01 1.7499999972004506e+01 0 0 -1 +546 1 -5.4114754710244924e+01 2.6520050238589914e+01 1.7499999958109083e+01 0 0 -1 +3104 1 -5.4675926557344951e+01 2.8177553474450221e+01 1.5749999978177048e+01 0 0 0 +3109 1 -5.2431239007126656e+01 2.7081526575260970e+01 1.5749999970902442e+01 0 0 0 +593 1 -5.0747723316336035e+01 2.7643002957132335e+01 5.7910902739877201e-09 0 0 0 +594 1 -4.8503035769902745e+01 2.6546976143266782e+01 1.7499999997857365e+01 0 0 -1 +3155 1 -5.0186551468430480e+01 2.5985499687901477e+01 1.5749999966300702e+01 0 0 0 +3156 1 -4.9064207637611204e+01 2.8204479368412343e+01 1.5749999985334876e+01 0 0 0 +630 1 -4.6258347999657389e+01 2.5450949252880257e+01 1.7499999975870178e+01 0 0 -1 +6424 1 -4.5136004042488665e+01 2.7669928957537355e+01 1.7499999936467752e+01 0 0 -1 +3188 1 -4.6819519940365367e+01 2.7108452512896374e+01 1.5749999970571993e+01 0 0 0 +2620 1 -8.9214901391472623e+01 3.1269305496190302e+01 1.5750000082933710e+01 0 0 0 +2625 1 -8.7168422148396758e+01 3.0187043655435915e+01 1.5750000047378844e+01 0 0 0 +63 1 -8.6710920552549240e+01 2.8581192269029668e+01 4.2275328127061584e-08 0 0 0 +114 1 -8.5523442914065996e+01 3.0795095269159017e+01 2.8568237553372455e-08 0 0 0 +2623 1 -8.6710920690620327e+01 2.8581192087851726e+01 1.4000000074268442e+01 0 0 0 +2674 1 -8.5523443005868202e+01 3.0795095164943469e+01 1.4000000026775760e+01 0 0 0 +2676 1 -8.4964193268605200e+01 2.9130481844985098e+01 1.5750000027833483e+01 0 0 0 +2677 1 -8.3862483808953513e+01 3.1362592609436607e+01 1.5749999999023352e+01 0 0 0 +170 1 -8.1049142678897923e+01 2.8603839233248170e+01 1.7499999986979727e+01 0 0 -1 +2728 1 -8.1612969640716983e+01 3.0262938498633400e+01 1.5749999976532214e+01 0 0 0 +2730 1 -8.1049142731926409e+01 2.8603839190999736e+01 1.3999999961206042e+01 0 0 0 +167 1 -7.9929642758886686e+01 3.0823711582956694e+01 1.7499999945735546e+01 0 0 -1 +2727 1 -7.9929642740646671e+01 3.0823711579930404e+01 1.4000000001162526e+01 0 0 0 +2733 1 -7.9367520991381184e+01 2.9166080806627935e+01 1.5749999945319333e+01 0 0 0 +2780 1 -7.8245179776171057e+01 3.1384761508769767e+01 1.5749999957934239e+01 0 0 0 +223 1 -7.5439348189583001e+01 2.8631350779010582e+01 1.7499999983085033e+01 0 0 -1 +274 1 -7.4316919291081533e+01 3.0850287188096353e+01 7.7501631778886804e-09 0 0 0 +2783 1 -7.5439348101579938e+01 2.8631350815266980e+01 1.4000000012874708e+01 0 0 0 +2785 1 -7.6000491873823336e+01 3.0288811939939301e+01 1.5749999987639841e+01 0 0 0 +2834 1 -7.4316919240065872e+01 3.0850287198704088e+01 1.4000000020934165e+01 0 0 0 +2836 1 -7.3755786930257841e+01 2.9192798075537585e+01 1.5750000029483402e+01 0 0 0 +2837 1 -7.2633422905548514e+01 3.1411778280341647e+01 1.5750000059296832e+01 0 0 0 +327 1 -6.8705226800297680e+01 3.0877229416905340e+01 2.1553812956653928e-08 0 0 0 +330 1 -6.9827569333893791e+01 2.8658248297275151e+01 2.1184462184464792e-08 0 0 0 +2887 1 -6.8705226828515052e+01 3.0877229409012692e+01 1.4000000015205488e+01 0 0 0 +2888 1 -7.0388740070724708e+01 3.0315751809538089e+01 1.5750000046658945e+01 0 0 0 +2890 1 -6.9827569385404857e+01 2.8658248255103732e+01 1.4000000047075199e+01 0 0 0 +2893 1 -6.8144053636320052e+01 2.9219725778109797e+01 1.5750000031519663e+01 0 0 0 +2940 1 -6.7021710759143062e+01 3.1438705992600152e+01 1.5750000005103358e+01 0 0 0 +2945 1 -6.4777022342706246e+01 3.0342679696976575e+01 1.5749999980265262e+01 0 0 0 +2996 1 -6.2532334228140961e+01 2.9246653483077466e+01 1.5750000012467074e+01 0 0 0 +2997 1 -6.1409990300410080e+01 3.1465633368788072e+01 1.5750000011944243e+01 0 0 0 +435 1 -6.0848818146820904e+01 2.9808130291176592e+01 1.7499999985161704e+01 0 0 -1 +2995 1 -6.0848818159379839e+01 2.9808130283149552e+01 1.4000000005797178e+01 0 0 0 +3048 1 -5.9165302347933064e+01 3.0369607029950835e+01 1.5750000005935140e+01 0 0 0 +542 1 -5.5237098707466075e+01 2.9835056886379036e+01 1.7499999959177657e+01 0 0 -1 +3053 1 -5.6920614402929573e+01 2.9273580275872622e+01 1.5749999970329357e+01 0 0 0 +3100 1 -5.5798270712984205e+01 3.1492560125212609e+01 1.5749999974036346e+01 0 0 0 +543 1 -5.2992410970928788e+01 2.8739029856525388e+01 1.7499999952194415e+01 0 0 -1 +589 1 -5.1870067279999937e+01 3.0958009580864978e+01 1.7499999976115912e+01 0 0 -1 +3105 1 -5.3553583026683384e+01 3.0396533185073253e+01 1.5749999998160876e+01 0 0 0 +590 1 -4.9625379590226174e+01 2.9861982596446300e+01 1.7499999992933812e+01 0 0 -1 +3151 1 -5.1308895338305341e+01 2.9300506343088582e+01 1.5749999984507600e+01 0 0 0 +3152 1 -5.0186551565680013e+01 3.1519485940100513e+01 1.5749999981070999e+01 0 0 0 +624 1 -4.6258348014431320e+01 3.0984935365033277e+01 1.7499999978941229e+01 0 0 -1 +627 1 -4.7380691871793317e+01 2.8765955800246566e+01 1.7499999955118238e+01 0 0 -1 +3185 1 -4.7941863841284096e+01 3.0423459016743678e+01 1.5749999989699061e+01 0 0 0 +3189 1 -4.5697175993529960e+01 2.9327432172945230e+01 1.5749999991005250e+01 0 0 0 +2621 1 -8.8549509839193433e+01 3.3569233110198880e+01 1.5750000049548580e+01 0 0 0 +111 1 -8.4431590161738882e+01 3.3017262175645534e+01 1.9894311975576784e-08 0 0 0 +2671 1 -8.4431590226334791e+01 3.3017262108188177e+01 1.4000000045536998e+01 0 0 0 +2672 1 -8.6132425824317437e+01 3.2471249947753385e+01 1.5750000021188022e+01 0 0 0 +2724 1 -8.2732307077056134e+01 3.3574555660825496e+01 1.5750000019982348e+01 0 0 0 +2778 1 -7.8805833895601538e+01 3.3042171099592792e+01 1.4000000003909351e+01 0 0 0 +218 1 -7.8805833957448613e+01 3.3042171067211193e+01 1.7499999969115965e+01 0 0 -1 +2729 1 -8.0489602392736856e+01 3.2480397566337629e+01 1.5749999991568318e+01 0 0 0 +2781 1 -7.7122769126302188e+01 3.3603867042183474e+01 1.5749999985132217e+01 0 0 0 +2832 1 -7.4878098382560879e+01 3.2507808995187368e+01 1.5750000014719351e+01 0 0 0 +271 1 -7.3194614983160150e+01 3.3069289195759211e+01 7.3715185067158018e-09 0 0 0 +2831 1 -7.3194614963547224e+01 3.3069289196168846e+01 1.4000000021318517e+01 0 0 0 +2884 1 -7.1511090812148453e+01 3.3630759040130798e+01 1.5750000055747059e+01 0 0 0 +2889 1 -6.9266399834356008e+01 3.2534732391870442e+01 1.5750000009184140e+01 0 0 0 +379 1 -6.5338194480410195e+01 3.2000182760024977e+01 9.9810009146494849e-09 0 0 0 +2939 1 -6.5338194481653602e+01 3.2000182686212270e+01 1.3999999978453689e+01 0 0 0 +378 1 -6.7582882421351101e+01 3.3096208723616677e+01 2.4451782820733570e-08 0 0 0 +2938 1 -6.7582882489340676e+01 3.3096208680662279e+01 1.3999999982622469e+01 0 0 0 +2941 1 -6.5899366405329076e+01 3.3657685760429366e+01 1.5750000011129575e+01 0 0 0 +430 1 -6.4215850677481541e+01 3.4219162759308851e+01 8.5790858861400920e-09 0 0 0 +2990 1 -6.4215850632350978e+01 3.4219162709291275e+01 1.3999999989845035e+01 0 0 0 +2992 1 -6.3654678397621382e+01 3.2561659593260543e+01 1.5749999997902920e+01 0 0 0 +483 1 -5.8604130718442789e+01 3.4246090091994951e+01 1.7499999997115417e+01 0 0 -1 +486 1 -5.9726474402687451e+01 3.2027110192429930e+01 8.2508258003599622e-09 0 0 0 +3043 1 -5.8604130751219472e+01 3.4246090064142138e+01 1.4000000019381869e+01 0 0 0 +3046 1 -5.9726474422865273e+01 3.2027110198278073e+01 1.4000000009543108e+01 0 0 0 +3044 1 -6.0287646595757728e+01 3.3684613331032551e+01 1.5750000004578585e+01 0 0 0 +3049 1 -5.8042958547000751e+01 3.2588586877924094e+01 1.5750000002686482e+01 0 0 0 +538 1 -5.6359442737438712e+01 3.3150063403908931e+01 1.7499999963710593e+01 0 0 -1 +539 1 -5.4114754899521571e+01 3.2054036555823522e+01 3.5079494864476146e-11 0 0 0 +585 1 -5.2992411202051009e+01 3.4273016198446946e+01 1.7499999998557261e+01 0 0 -1 +3101 1 -5.4675926873440012e+01 3.3711539831707761e+01 1.5749999968534507e+01 0 0 0 +3147 1 -5.2431239154442743e+01 3.2615512899241949e+01 1.5749999973917982e+01 0 0 0 +623 1 -4.8503035832961267e+01 3.2080962353718498e+01 1.7499999991135791e+01 0 0 -1 +586 1 -5.0747723459411354e+01 3.3176989296792634e+01 1.7499999975989638e+01 0 0 -1 +3181 1 -4.9064207769584520e+01 3.3738465715793936e+01 1.5749999978539098e+01 0 0 0 +620 1 -4.7380691955009141e+01 3.4299942129068960e+01 1.7499999966342838e+01 0 0 -1 +3186 1 -4.6819519989916522e+01 3.2642438741613198e+01 1.5749999967847840e+01 0 0 0 +6458 1 -4.5136004063780447e+01 3.3203915131187657e+01 1.7499999966563671e+01 0 0 -1 +56 1 -8.9045575752781474e+01 3.5168646313399307e+01 1.7964183030017011e-08 0 0 0 +106 1 -8.7753272928874097e+01 3.7446209141632771e+01 1.3838171497582152e-08 0 0 0 +2616 1 -8.9045575800984778e+01 3.5168646180817227e+01 1.4000000090717281e+01 0 0 0 +2666 1 -8.7753272953000888e+01 3.7446209073420071e+01 1.4000000091607006e+01 0 0 0 +2617 1 -8.9214901213711741e+01 3.6803291693672563e+01 1.5750000013618299e+01 0 0 0 +2668 1 -8.7168422049124743e+01 3.5721029864470687e+01 1.5750000050510998e+01 0 0 0 +2673 1 -8.4964193039170794e+01 3.4664467958510521e+01 1.5750000027813101e+01 0 0 0 +2720 1 -8.3862483664000592e+01 3.6896578782421479e+01 1.5750000027061997e+01 0 0 0 +162 1 -8.3289035635609395e+01 3.5233281803017960e+01 6.9079533204785548e-09 0 0 0 +2719 1 -8.2176992633776720e+01 3.7454416635878523e+01 1.4000000020174616e+01 0 0 0 +2722 1 -8.3289035668594167e+01 3.5233281793718703e+01 1.4000000041648786e+01 0 0 0 +159 1 -8.2176992644862423e+01 3.7454416614411237e+01 1.8707840609977211e-08 0 0 0 +2725 1 -8.1612969484234441e+01 3.5796924645669321e+01 1.5750000013709716e+01 0 0 0 +215 1 -7.7684223652928182e+01 3.5261436966649590e+01 1.7499999983683395e+01 0 0 -1 +2775 1 -7.7684223580160051e+01 3.5261436990231459e+01 1.3999999996912663e+01 0 0 0 +2776 1 -7.9367520782811738e+01 3.4700066875419822e+01 1.5750000004698109e+01 0 0 0 +2777 1 -7.8245179698127330e+01 3.6918747713326653e+01 1.5750000009934581e+01 0 0 0 +266 1 -7.6561515291797065e+01 3.7480260522383190e+01 1.3215597505222831e-09 0 0 0 +2826 1 -7.6561515214853088e+01 3.7480260532966028e+01 1.3999999987280237e+01 0 0 0 +2828 1 -7.6000491884601004e+01 3.5822798111301452e+01 1.5750000007836345e+01 0 0 0 +319 1 -7.0949917314309957e+01 3.7507243523166693e+01 5.4815409100683610e-08 0 0 0 +322 1 -7.2072253001500641e+01 3.5288257929140407e+01 4.8171763467053097e-08 0 0 0 +2833 1 -7.3755786981274326e+01 3.4726784165285942e+01 1.5750000040076944e+01 0 0 0 +2879 1 -7.0949917314410328e+01 3.7507243497610929e+01 1.4000000009828927e+01 0 0 0 +2880 1 -7.2633423195843065e+01 3.6945764507819618e+01 1.5750000032120273e+01 0 0 0 +2882 1 -7.2072252966975896e+01 3.5288257912805022e+01 1.4000000007731710e+01 0 0 0 +2885 1 -7.0388740406201705e+01 3.5849737983572645e+01 1.5750000039885993e+01 0 0 0 +2936 1 -6.8144054016392829e+01 3.4753711880927696e+01 1.5750000000176431e+01 0 0 0 +375 1 -6.6460538886955291e+01 3.5315189016362574e+01 1.1017505130439531e-08 0 0 0 +2935 1 -6.6460538913632561e+01 3.5315188975237568e+01 1.3999999987749611e+01 0 0 0 +2937 1 -6.7021711324595330e+01 3.6972692206125302e+01 1.5749999979881771e+01 0 0 0 +2988 1 -6.4777022889304320e+01 3.5876665847004610e+01 1.5750000007350444e+01 0 0 0 +427 1 -6.3093506807996057e+01 3.6438142769603644e+01 1.7499999997951242e+01 0 0 -1 +2987 1 -6.3093506772577328e+01 3.6438142726877366e+01 1.4000000005211195e+01 0 0 0 +2993 1 -6.2532334754442104e+01 3.4780639603778312e+01 1.5749999991281914e+01 0 0 0 +3040 1 -6.1409990863287938e+01 3.6999619524789637e+01 1.5750000017762634e+01 0 0 0 +3045 1 -5.9165302832696206e+01 3.5903593242553548e+01 1.5750000025940825e+01 0 0 0 +534 1 -5.7481786873158534e+01 3.6465069867935085e+01 3.0516673632519087e-09 0 0 0 +535 1 -5.5237099070066520e+01 3.5369043223419943e+01 1.7499999975516957e+01 0 0 -1 +3096 1 -5.6920614774536759e+01 3.4807566584017643e+01 1.5750000026143191e+01 0 0 0 +3097 1 -5.5798271121025941e+01 3.7026546457046251e+01 1.5750000000283165e+01 0 0 0 +581 1 -5.4114755321613558e+01 3.7588022956328018e+01 1.7499999983592907e+01 0 0 -1 +582 1 -5.1870067534782528e+01 3.6491995977233636e+01 1.7499999998725887e+01 0 0 -1 +3143 1 -5.3553583342283019e+01 3.5930519566398878e+01 1.5749999968750732e+01 0 0 0 +616 1 -4.8503035983084395e+01 3.7614948771251818e+01 1.7499999989634592e+01 0 0 -1 +619 1 -4.9625379793157407e+01 3.5395968981688746e+01 1.7499999957845031e+01 0 0 -1 +3148 1 -5.1308895522688708e+01 3.4834492704633135e+01 1.5749999983940219e+01 0 0 0 +3177 1 -5.0186551790349426e+01 3.7053472367876424e+01 1.5749999977431155e+01 0 0 0 +639 1 -4.6258348052148428e+01 3.6518921672360335e+01 6.6195973147387122e-09 0 0 0 +3182 1 -4.7941863950398911e+01 3.5957445405430668e+01 1.5749999988330151e+01 0 0 0 +3200 1 -4.5697176014755911e+01 3.4861418430457434e+01 1.5750000011196782e+01 0 0 0 +2664 1 -8.8549509762172747e+01 3.9103219325255324e+01 1.5750000004656309e+01 0 0 0 +103 1 -8.6710920311991387e+01 3.9649164543262245e+01 1.9710672205519586e-08 0 0 0 +2663 1 -8.6710920325003784e+01 3.9649164496660511e+01 1.4000000004262374e+01 0 0 0 +2669 1 -8.6132425712206299e+01 3.8005236143958420e+01 1.5750000047298249e+01 0 0 0 +2716 1 -8.4964193026499956e+01 4.0198454248960076e+01 1.5750000018486165e+01 0 0 0 +210 1 -8.1049142541775169e+01 3.9671811619607553e+01 2.0342234563486272e-09 0 0 0 +2721 1 -8.2732307069923451e+01 3.9108541960493845e+01 1.5750000000642752e+01 0 0 0 +2770 1 -8.1049142518898378e+01 3.9671811596806137e+01 1.3999999978397833e+01 0 0 0 +2772 1 -8.0489602349504622e+01 3.8014383813444546e+01 1.5749999989776345e+01 0 0 0 +2773 1 -7.9367520958613724e+01 4.0234053259231587e+01 1.5749999981375908e+01 0 0 0 +2829 1 -7.4878098628767887e+01 3.8041795284669334e+01 1.5750000015235321e+01 0 0 0 +2824 1 -7.7122769300498604e+01 3.9137853341260659e+01 1.5750000021445274e+01 0 0 0 +263 1 -7.5439348467956478e+01 3.9699323199722421e+01 3.6512844303615566e-08 0 0 0 +2823 1 -7.5439348350287688e+01 3.9699323211017749e+01 1.3999999974890459e+01 0 0 0 +2881 1 -7.1511091280098213e+01 3.9164745440284037e+01 1.5750000035453171e+01 0 0 0 +2876 1 -7.3755787402237502e+01 4.0260770572389177e+01 1.5750000032063282e+01 0 0 0 +2933 1 -6.8144054577718606e+01 4.0287698257303191e+01 1.5750000026743356e+01 0 0 0 +2932 1 -6.9266400342112973e+01 3.8068718723983785e+01 1.5750000042218383e+01 0 0 0 +2930 1 -6.9827570163943804e+01 3.9726220736686315e+01 1.4000000025904273e+01 0 0 0 +370 1 -6.9827570148011006e+01 3.9726220762276597e+01 1.9605284506951648e-08 0 0 0 +2984 1 -6.5899367039183431e+01 3.9191672034248022e+01 1.5749999965010556e+01 0 0 0 +478 1 -6.1971163116623721e+01 3.8657122681379562e+01 1.7499999995565048e+01 0 0 -1 +3036 1 -6.2532335359109162e+01 4.0314625803193493e+01 1.5750000004628598e+01 0 0 0 +2989 1 -6.3654679038656973e+01 3.8095645730033297e+01 1.5750000005514105e+01 0 0 0 +3038 1 -6.1971163073657905e+01 3.8657122660855791e+01 1.3999999995046350e+01 0 0 0 +475 1 -6.0848819287063272e+01 4.0876102674412600e+01 1.7499999990126124e+01 0 0 -1 +3092 1 -5.8042959065984491e+01 3.8122573168084216e+01 1.5749999994130103e+01 0 0 0 +3041 1 -6.0287647186450620e+01 3.9218599535836034e+01 1.5750000014157543e+01 0 0 0 +3035 1 -6.0848819239817665e+01 4.0876102643730562e+01 1.4000000000115389e+01 0 0 0 +531 1 -5.6359443186920430e+01 3.8684049705361033e+01 2.2575392222279334e-08 0 0 0 +3093 1 -5.6920615303636048e+01 4.0341552888997647e+01 1.5750000002896506e+01 0 0 0 +577 1 -5.5237099514610776e+01 4.0903029548342552e+01 1.6679596370750005e-08 0 0 0 +3144 1 -5.2431239536922170e+01 3.8149499333389826e+01 1.5749999975300115e+01 0 0 0 +3139 1 -5.4675927260811456e+01 3.9245526161927003e+01 1.5750000018814623e+01 0 0 0 +578 1 -5.2992411588261653e+01 3.9807002594773536e+01 1.7499999969563081e+01 0 0 -1 +3178 1 -4.9064207878118324e+01 3.9272452073879890e+01 1.5749999995367626e+01 0 0 0 +3173 1 -5.1308895802195138e+01 4.0368479078763094e+01 1.5749999992751327e+01 0 0 0 +612 1 -4.9625379872793438e+01 4.0929955299052530e+01 1.1537320432353226e-08 0 0 0 +615 1 -5.0747723707733321e+01 3.8710975693911045e+01 1.1905907371101421e-08 0 0 0 +6455 1 -4.5136003970921045e+01 3.8737901360855680e+01 1.7499999992505654e+01 0 0 -1 +3198 1 -4.5697175891325074e+01 4.0395404679967015e+01 1.5750000028424365e+01 0 0 0 +3197 1 -4.6819519998459249e+01 3.8176425078869933e+01 1.5749999989119299e+01 0 0 0 +636 1 -4.7380691946619415e+01 3.9833928427608924e+01 1.7499999970870967e+01 0 0 -1 +2665 1 -8.7168422040659934e+01 4.1255016133078634e+01 1.5749999974648620e+01 0 0 0 +2661 1 -8.9214901227964575e+01 4.2337277946054677e+01 1.5749999981161958e+01 0 0 0 +2717 1 -8.3862483775917937e+01 4.2430565196894946e+01 1.5749999989974532e+01 0 0 0 +2714 1 -8.5523442858720244e+01 4.1863067713985387e+01 1.3999999961006626e+01 0 0 0 +2713 1 -8.6132425840285890e+01 4.3539222543730887e+01 1.5749999958923736e+01 0 0 0 +154 1 -8.5523442853140082e+01 4.1863067728864728e+01 3.4224356681988866e-09 0 0 0 +3222 1 -8.4431590276018341e+01 4.4085234820044263e+01 2.5554065530286607e-09 0 0 0 +5782 1 -8.4431590263010605e+01 4.4085234821468269e+01 1.3999999971743637e+01 0 0 0 +2768 1 -8.1612969613059946e+01 4.1330911036897930e+01 1.5750000002317144e+01 0 0 0 +2821 1 -7.8245180052344011e+01 4.2452734193595937e+01 1.5749999973648466e+01 0 0 0 +2767 1 -7.9929642829075348e+01 4.1891684197898115e+01 1.3999999981915781e+01 0 0 0 +2769 1 -8.0489602617919061e+01 4.3548370332147293e+01 1.5749999986513746e+01 0 0 0 +207 1 -7.9929642908506750e+01 4.1891684198912643e+01 1.7499999973859239e+01 0 0 -1 +3298 1 -7.8805834352862988e+01 4.4110143916877547e+01 1.7499999973872864e+01 0 0 -1 +5858 1 -7.8805834239605403e+01 4.4110143926128529e+01 1.3999999974459790e+01 0 0 0 +2874 1 -7.4316919783876671e+01 4.1918259855823564e+01 1.4000000003258380e+01 0 0 0 +2873 1 -7.4878099019975011e+01 4.3575781817387963e+01 1.5750000038503726e+01 0 0 0 +2825 1 -7.6000492242138804e+01 4.1356784535514961e+01 1.5750000014243618e+01 0 0 0 +314 1 -7.4316919885444676e+01 4.1918259869930331e+01 3.0767086656169340e-08 0 0 0 +2877 1 -7.2633423627371926e+01 4.2479751023712204e+01 1.5750000059096312e+01 0 0 0 +3351 1 -7.3194615751668053e+01 4.4137262120575109e+01 2.5254273339214706e-08 0 0 0 +5911 1 -7.3194615674933658e+01 4.4137262124935653e+01 1.4000000018913331e+01 0 0 0 +2929 1 -6.9266400775094993e+01 4.3602705226557475e+01 1.5749999997338026e+01 0 0 0 +2928 1 -7.0388740935194420e+01 4.1383724489899699e+01 1.5750000036850865e+01 0 0 0 +2927 1 -6.8705227782916850e+01 4.1945202092034187e+01 1.4000000013375423e+01 0 0 0 +367 1 -6.8705227813183939e+01 4.1945202088451595e+01 1.7499999999426542e+01 0 0 -1 +420 1 -6.5338195655786862e+01 4.3068155269795319e+01 1.7499999974440367e+01 0 0 -1 +2981 1 -6.7021711829391833e+01 4.2506678598629165e+01 1.5749999988428122e+01 0 0 0 +2985 1 -6.4777023494518531e+01 4.1410652097792898e+01 1.5749999954717074e+01 0 0 0 +2980 1 -6.5338195579741026e+01 4.3068155218683764e+01 1.3999999970693663e+01 0 0 0 +3458 1 -6.7582883448593194e+01 4.4164181488868920e+01 5.7494347061037843e-09 0 0 0 +6018 1 -6.7582883456776287e+01 4.4164181477718472e+01 1.3999999983990651e+01 0 0 0 +3033 1 -6.3654679541709541e+01 4.3629632000597432e+01 1.5749999971094065e+01 0 0 0 +3037 1 -6.1409991454815056e+01 4.2533605735418192e+01 1.5749999998222220e+01 0 0 0 +526 1 -5.9726475485349148e+01 4.3095082593627389e+01 1.9932372197217774e-08 0 0 0 +3088 1 -5.9165303395461201e+01 4.1437579471765815e+01 1.5750000013423548e+01 0 0 0 +3089 1 -5.8042959503211904e+01 4.3656559321366259e+01 1.5750000035208144e+01 0 0 0 +3086 1 -5.9726475475749702e+01 4.3095082566725061e+01 1.3999999988129643e+01 0 0 0 +3136 1 -5.5798271573033723e+01 4.2560532721241053e+01 1.5750000003851609e+01 0 0 0 +3618 1 -5.6359443594493818e+01 4.4218035908641525e+01 2.4559945188684651e-09 0 0 0 +3140 1 -5.3553583686542964e+01 4.1464505889557422e+01 1.5750000036302451e+01 0 0 0 +575 1 -5.4114755598644031e+01 4.3122009192179753e+01 5.0609127555389932e-08 0 0 0 +3170 1 -5.2431239640888528e+01 4.3683485536437686e+01 1.5750000019559527e+01 0 0 0 +611 1 -5.1870067785337888e+01 4.2025982291468345e+01 2.2118520348612947e-09 0 0 0 +3174 1 -5.0186551858040531e+01 4.2587458648821496e+01 1.5750000004809806e+01 0 0 0 +632 1 -4.8503035908315240e+01 4.3148935007595512e+01 8.3195850208994671e-09 0 0 0 +3671 1 -5.0747723739964819e+01 4.4244961915993926e+01 1.7499999991515281e+01 0 0 -1 +633 1 -4.6258347894277769e+01 4.2052907922064520e+01 1.4638839473946064e-08 0 0 0 +3194 1 -4.7941863900615914e+01 4.1491431687623340e+01 1.5750000007940679e+01 0 0 0 +3195 1 -4.6819519839673283e+01 4.3710411304241731e+01 1.5750000009023305e+01 0 0 0 +6401 1 -4.5136003795557379e+01 5.5339857329868920e+00 1.7600865950171940e-08 0 0 0 +7054 1 -4.5136004004955751e+01 1.1067971525195903e+01 3.4999999904971468e+00 0 0 0 +7051 1 -4.5136004129431889e+01 1.6601957245841994e+01 3.5000000229995369e+00 0 0 0 +7072 1 -4.5136004059551247e+01 2.2135943028011358e+01 3.4999999542395286e+00 0 0 0 +7046 1 -4.5136003778412885e+01 5.5339857659713276e+00 3.5000000298194496e+00 0 0 0 +7699 1 -4.5136004045544439e+01 1.1067971511941161e+01 6.9999999703039215e+00 0 0 0 +7696 1 -4.5136004102413388e+01 1.6601957243892098e+01 7.0000000005551328e+00 0 0 0 +7717 1 -4.5136004059891178e+01 2.2135943040020962e+01 6.9999999805417970e+00 0 0 0 +7691 1 -4.5136003782931084e+01 5.5339857091493716e+00 6.9999999593498741e+00 0 0 0 +8344 1 -4.5136004057379743e+01 1.1067971496090109e+01 1.0499999994414896e+01 0 0 0 +8341 1 -4.5136004125196479e+01 1.6601957238105133e+01 1.0499999993310484e+01 0 0 0 +8362 1 -4.5136004065198414e+01 2.2135943057732604e+01 1.0500000027956581e+01 0 0 0 +8336 1 -4.5136003801830903e+01 5.5339856842032944e+00 1.0499999958987688e+01 0 0 0 +8989 1 -4.5136004048519688e+01 1.1067971500193330e+01 1.3999999993925593e+01 0 0 0 +8986 1 -4.5136004169142737e+01 1.6601957214175734e+01 1.3999999955751937e+01 0 0 0 +9007 1 -4.5136004111837075e+01 2.2135943002002652e+01 1.3999999988702760e+01 0 0 0 +8981 1 -4.5136003821221138e+01 5.5339856976039519e+00 1.3999999984365548e+01 0 0 0 +6409 1 -4.5136004052614787e+01 1.1067971525614734e+01 1.3240761376209775e-08 0 0 0 +6406 1 -4.5136004144858070e+01 1.6601957228504684e+01 1.7499999987794485e+01 0 0 -1 +6427 1 -4.5136004094692019e+01 2.2135943007763711e+01 1.7499999962440725e+01 0 0 -1 +1 1 -9.0272007528377358e+01 5.1149971869141382e+00 4.4953497982452004e-08 0 0 0 +6 1 -9.0272007528377429e+01 1.6182969097849426e+01 3.4094761829802582e-07 0 0 0 +24 1 -9.0272007528376818e+01 2.7250941071061966e+01 7.9570090958301193e-08 0 0 0 +55 1 -9.0272007528377401e+01 3.8318913313405609e+01 4.1479832106234671e-09 0 0 0 +5764 1 -9.0272007528377273e+01 4.3852899466903786e+01 1.3999999928578360e+01 0 0 0 +695 1 -9.0272007528377301e+01 3.8318913211438719e+01 3.5000000309341783e+00 0 0 0 +649 1 -9.0272007528376989e+01 1.0648983065496484e+01 3.5000001225856279e+00 0 0 0 +667 1 -9.0272007528376975e+01 2.1716955350808412e+01 3.5000001461930950e+00 0 0 0 +698 1 -9.0272007528377259e+01 3.2784927261475353e+01 3.4999999905631838e+00 0 0 0 +1338 1 -9.0272007528377429e+01 3.2784927023034314e+01 7.0000000396866939e+00 0 0 0 +3844 1 -9.0272007528377259e+01 4.3852899520068718e+01 3.4999999881732378e+00 0 0 0 +1281 1 -9.0272007528377287e+01 5.1149969066538841e+00 6.9999999043260512e+00 0 0 0 +1921 1 -9.0272007528377387e+01 5.1149971193613037e+00 1.0500000011913022e+01 0 0 0 +1926 1 -9.0272007528377245e+01 1.6182968816651321e+01 1.0499999716468880e+01 0 0 0 +1944 1 -9.0272007528377046e+01 2.7250940748322055e+01 1.0499999963522473e+01 0 0 0 +1335 1 -9.0272007528377173e+01 3.8318913054201921e+01 7.0000000098706563e+00 0 0 0 +2561 1 -9.0272007528377287e+01 5.1149973705917589e+00 1.4000000069146921e+01 0 0 0 +1975 1 -9.0272007528376790e+01 3.8318913010293535e+01 1.0500000085118078e+01 0 0 0 +2618 1 -9.0272007528376776e+01 3.2784926924735551e+01 1.4000000045286743e+01 0 0 0 +58 1 -9.0272007528377429e+01 3.2784927154700412e+01 1.1376826591913414e-08 0 0 0 +3205 1 -8.8549509920814430e+01 4.4637205714872152e+01 1.7499999824250549e+00 0 0 0 +3219 1 -8.7168422177198934e+01 4.6789002534336454e+01 1.7500000097997956e+00 0 0 0 +3221 1 -8.6710920468229986e+01 4.5183150947648791e+01 1.7499999977613783e+01 0 0 -1 +3223 1 -8.4964193194530466e+01 4.5732440705994151e+01 1.7500000021749309e+00 0 0 0 +3861 1 -8.6710920474685764e+01 4.5183150913963267e+01 3.5000000084935263e+00 0 0 0 +3252 1 -8.1049142794850155e+01 4.5205798153598437e+01 1.7499999977053932e+01 0 0 -1 +3253 1 -8.2732307303300061e+01 4.4642528456518242e+01 1.7499999847904648e+00 0 0 0 +3254 1 -8.1612969840083863e+01 4.6864897630554296e+01 1.7499999937638069e+00 0 0 0 +3892 1 -8.1049142815983274e+01 4.5205798186600006e+01 3.5000000370705782e+00 0 0 0 +3296 1 -7.9367521288991625e+01 4.5768039834378037e+01 1.7499999908294053e+00 0 0 0 +3299 1 -7.7122769711720736e+01 4.4671839927533085e+01 1.7500000075758517e+00 0 0 0 +3348 1 -7.6000492554882825e+01 4.6890771173759454e+01 1.7500000008311298e+00 0 0 0 +3350 1 -7.5439348772425248e+01 4.5233309799364108e+01 2.4476821947590433e-08 0 0 0 +3990 1 -7.5439348824568995e+01 4.5233309798442633e+01 3.4999999793260810e+00 0 0 0 +3352 1 -7.3755787758427715e+01 4.5794757182763512e+01 1.7499999921921647e+00 0 0 0 +3404 1 -7.1511091657941748e+01 4.4698732060846510e+01 1.7499999912599884e+00 0 0 0 +3403 1 -6.9827570500059196e+01 4.5260207358435977e+01 1.6143872971326404e-08 0 0 0 +3405 1 -7.0388741203383333e+01 4.6917711099330489e+01 1.7499999881923605e+00 0 0 0 +3456 1 -6.8144054925447250e+01 4.5821684816464575e+01 1.7499999950342968e+00 0 0 0 +4043 1 -6.9827570525256036e+01 4.5260207327374204e+01 3.4999999688978169e+00 0 0 0 +3459 1 -6.5899367503942244e+01 4.4725658412384071e+01 1.7499999786577893e+00 0 0 0 +3508 1 -6.4777023843861343e+01 4.6944638422140379e+01 1.7500000146005539e+00 0 0 0 +3512 1 -6.2532335809561332e+01 4.5848611982608382e+01 1.7500000166047798e+00 0 0 0 +3564 1 -6.0287647663864732e+01 4.4752585701211387e+01 1.7500000085684237e+00 0 0 0 +3565 1 -5.9165303685604961e+01 4.6971565533805382e+01 1.7500000228681847e+00 0 0 0 +4202 1 -6.0848819646906442e+01 4.6410088769472040e+01 3.4999999793530390e+00 0 0 0 +3562 1 -6.0848819635187205e+01 4.6410088742510169e+01 1.8350549222033933e-08 0 0 0 +3616 1 -5.6920615574639655e+01 4.5875538991186303e+01 1.7500000143470578e+00 0 0 0 +4255 1 -5.5237099668742012e+01 4.6437015626198473e+01 3.5000000287598958e+00 0 0 0 +3619 1 -5.4675927477072364e+01 4.4779512323599235e+01 1.7500000234376070e+00 0 0 0 +3668 1 -5.3553583728020740e+01 4.6998491984795955e+01 1.7500000279072525e+00 0 0 0 +4310 1 -5.2992411664079150e+01 4.5340988738710315e+01 3.4999999827835411e+00 0 0 0 +3672 1 -5.1308895804284134e+01 4.5902465239301549e+01 1.7499999885568298e+00 0 0 0 +3724 1 -4.9064207786345278e+01 4.4806438232868302e+01 1.7500000033755916e+00 0 0 0 +4362 1 -4.9625379770569204e+01 4.6463941458752217e+01 3.4999999903220123e+00 0 0 0 +3725 1 -4.7941863729976696e+01 4.7025417839885144e+01 1.7499999914283357e+00 0 0 0 +3774 1 -4.5697175700226701e+01 4.5929390878494011e+01 1.7500000006528789e+00 0 0 0 +4363 1 -4.7380691783594870e+01 4.5367914628008251e+01 3.4999999695881479e+00 0 0 0 +10247 1 -4.5136003771807324e+01 4.4271887570539207e+01 3.4999999956301773e+00 0 0 0 +3203 1 -8.9214901259795411e+01 4.7871264385307839e+01 1.7500000384935328e+00 0 0 0 +3215 1 -8.8549510008256732e+01 5.0171192132310694e+01 1.7500000482784877e+00 0 0 0 +3218 1 -8.5523443035235132e+01 4.7397054185420174e+01 1.7499999992034731e+01 0 0 -1 +3220 1 -8.6132426000477651e+01 4.9073209017524071e+01 1.7500000037426036e+00 0 0 0 +3247 1 -8.4431590441707939e+01 4.9619221323023986e+01 7.7622179526330212e-09 0 0 0 +3249 1 -8.3862483967078376e+01 4.7964551715562237e+01 1.7500000146145442e+00 0 0 0 +3858 1 -8.5523443019804986e+01 4.7397054173913148e+01 3.5000000586115614e+00 0 0 0 +3887 1 -8.4431590428480177e+01 4.9619221341264229e+01 3.5000000212305102e+00 0 0 0 +3250 1 -8.2732307420222710e+01 5.0176515011200841e+01 1.7499999991452753e+00 0 0 0 +3292 1 -8.0489602802666710e+01 4.9082356958746992e+01 1.7499999948314773e+00 0 0 0 +3291 1 -7.8805834445193653e+01 4.9644130574909205e+01 1.7499999985470676e+01 0 0 -1 +3294 1 -7.9929643083192573e+01 4.7425670815194756e+01 1.7499999997452868e+01 0 0 -1 +3297 1 -7.8245180312404642e+01 4.7986720856655197e+01 1.7499999868702696e+00 0 0 0 +3931 1 -7.8805834502581348e+01 4.9644130591552539e+01 3.4999999992072626e+00 0 0 0 +3934 1 -7.9929643129315323e+01 4.7425670842019606e+01 3.5000000043403738e+00 0 0 0 +3344 1 -7.7122769810766130e+01 5.0205826604629742e+01 1.7499999900924201e+00 0 0 0 +3347 1 -7.4316920067829329e+01 4.7452246516240017e+01 5.7812568692870963e-09 0 0 0 +3349 1 -7.4878099202574745e+01 4.9109768486501565e+01 1.7499999962733848e+00 0 0 0 +3987 1 -7.4316920116476979e+01 4.7452246505795230e+01 3.4999999711062055e+00 0 0 0 +3398 1 -7.3194615843412663e+01 4.9671248785529144e+01 1.2857317308195028e-08 0 0 0 +3400 1 -7.2633423863569490e+01 4.8013737707989712e+01 1.7499999960332806e+00 0 0 0 +3401 1 -7.1511091743496436e+01 5.0232718659163588e+01 1.7499999899085006e+00 0 0 0 +4038 1 -7.3194615915573493e+01 4.9671248757487440e+01 3.4999999678917706e+00 0 0 0 +3452 1 -6.9266400974321272e+01 4.9136691832909285e+01 1.7499999937611961e+00 0 0 0 +3454 1 -6.8705228045280563e+01 4.7479188640483287e+01 1.7499999999354937e+01 0 0 -1 +4094 1 -6.8705228070350984e+01 4.7479188641457043e+01 3.4999999940569362e+00 0 0 0 +3451 1 -6.7582883628834978e+01 4.9698167975881198e+01 1.0668906279513422e-08 0 0 0 +3457 1 -6.7021712100733566e+01 4.8040665070031537e+01 1.7500000161233735e+00 0 0 0 +3504 1 -6.5899367632520296e+01 5.0259644729804592e+01 1.7500000144374630e+00 0 0 0 +4091 1 -6.7582883661668788e+01 4.9698167953972138e+01 3.5000000035965826e+00 0 0 0 +4146 1 -6.5338195898839047e+01 4.8602141538639849e+01 3.4999999955416246e+00 0 0 0 +3506 1 -6.5338195837375864e+01 4.8602141541189155e+01 1.6717168872133224e-08 0 0 0 +3509 1 -6.3654679784911480e+01 4.9163618173214772e+01 1.7500000024950444e+00 0 0 0 +3560 1 -6.1409991735634947e+01 4.8067591828817605e+01 1.7500000196126804e+00 0 0 0 +3561 1 -6.0287647759947198e+01 5.0286571669954988e+01 1.7500000078342073e+00 0 0 0 +3612 1 -5.8042959610173284e+01 4.9190545322438489e+01 1.7500000281680954e+00 0 0 0 +4199 1 -5.9726475691797042e+01 4.8629068613588522e+01 3.5000000047387738e+00 0 0 0 +3559 1 -5.9726475682101771e+01 4.8629068589484753e+01 2.3556845816545350e-08 0 0 0 +3617 1 -5.5798271645256889e+01 4.8094518757134395e+01 1.7500000029480258e+00 0 0 0 +3664 1 -5.4675927515165966e+01 5.0313498349084824e+01 1.7500000198146410e+00 0 0 0 +3669 1 -5.2431239576235519e+01 4.9217471565541061e+01 1.7500000207500701e+00 0 0 0 +4306 1 -5.4114755617964633e+01 4.8655995224837731e+01 3.5000000340765838e+00 0 0 0 +4307 1 -5.1870067724444631e+01 4.7559968383421761e+01 3.4999999883227582e+00 0 0 0 +3720 1 -5.0186551754940808e+01 4.8121444716262623e+01 1.7499999975699028e+00 0 0 0 +3721 1 -4.9064207617465030e+01 5.0340424312536030e+01 1.7499999985716492e+00 0 0 0 +4358 1 -5.0747723613652056e+01 4.9778947940833625e+01 3.4999999739787526e+00 0 0 0 +4359 1 -4.8503035709500836e+01 4.8682921120198003e+01 3.4999999769752881e+00 0 0 0 +3771 1 -4.6819519590007040e+01 4.9244397380441953e+01 1.7499999858003403e+00 0 0 0 +4413 1 -4.6258347665522642e+01 4.7586894108187749e+01 3.4999999514233280e+00 0 0 0 +6395 1 -4.6819519370381450e+01 8.7982298472402917e+01 1.5750000066398558e+01 0 0 0 +3211 1 -8.9214901391077944e+01 5.3405250750724306e+01 1.7500000491472099e+00 0 0 0 +3213 1 -8.9045575842450475e+01 5.1770605300020762e+01 4.6186545190828945e-08 0 0 0 +3216 1 -8.7168422233248833e+01 5.2322988956880913e+01 1.7500000272751712e+00 0 0 0 +3853 1 -8.9045575849121207e+01 5.1770605306292083e+01 3.5000000470363064e+00 0 0 0 +3245 1 -8.4964193348961743e+01 5.1266427212175401e+01 1.7500000051677058e+00 0 0 0 +3246 1 -8.3862484102048967e+01 5.3498538209175535e+01 1.7499999560809638e+00 0 0 0 +3244 1 -8.3289036034217560e+01 5.1835241210845503e+01 1.0562638443302975e-09 0 0 0 +3288 1 -8.1612969962894809e+01 5.2398884203076157e+01 1.7499999613420565e+00 0 0 0 +3884 1 -8.3289036048489336e+01 5.1835241197631717e+01 3.4999999778501114e+00 0 0 0 +3293 1 -7.9367521351608318e+01 5.1302026486634560e+01 1.7499999708795710e+00 0 0 0 +3340 1 -7.8245180276574942e+01 5.3520707440366792e+01 1.7499999776538011e+00 0 0 0 +3342 1 -7.7684224216348497e+01 5.1863396655627568e+01 1.7499999975575481e+01 0 0 -1 +3982 1 -7.7684224283737336e+01 5.1863396677193379e+01 3.4999999900097256e+00 0 0 0 +3345 1 -7.6000492567802794e+01 5.2424757842162734e+01 1.7499999885665207e+00 0 0 0 +3395 1 -7.2072253751943961e+01 5.1890217632451225e+01 8.5445127307037730e-09 0 0 0 +3396 1 -7.3755787810323952e+01 5.1328743843152274e+01 1.7499999969320799e+00 0 0 0 +3397 1 -7.2633423810476401e+01 5.3547724263400980e+01 1.7500000058683169e+00 0 0 0 +4035 1 -7.2072253814000021e+01 5.1890217627527008e+01 3.4999999950174381e+00 0 0 0 +3448 1 -7.0388741190563934e+01 5.2451697630400275e+01 1.7500000124445874e+00 0 0 0 +3453 1 -6.8144054998382700e+01 5.1355671273822423e+01 1.7500000057107801e+00 0 0 0 +3500 1 -6.7021712032152024e+01 5.3574651441908060e+01 1.7500000217563465e+00 0 0 0 +3502 1 -6.6460539855537363e+01 5.1917148101213691e+01 1.8172762673571314e-08 0 0 0 +3505 1 -6.4777023854562444e+01 5.2478624614917166e+01 1.7500000242439160e+00 0 0 0 +4142 1 -6.6460539908633038e+01 5.1917148099788903e+01 3.5000000094403938e+00 0 0 0 +3556 1 -6.2532335862206935e+01 5.1382598057360170e+01 1.7500000202691604e+00 0 0 0 +3557 1 -6.1409991620491823e+01 5.3601577797766708e+01 1.7500000097911881e+00 0 0 0 +4143 1 -6.4215851867412880e+01 5.0821121450672962e+01 3.4999999925421053e+00 0 0 0 +4194 1 -6.3093507679562656e+01 5.3040101241013517e+01 3.4999999981157046e+00 0 0 0 +3503 1 -6.4215851823499762e+01 5.0821121391053921e+01 3.4459927878191801e-08 0 0 0 +3554 1 -6.3093507629649444e+01 5.3040101212194436e+01 3.7029135639057123e-08 0 0 0 +3608 1 -5.9165303623621206e+01 5.2505551497188748e+01 1.7500000068884682e+00 0 0 0 +4250 1 -5.8604131703529958e+01 5.0848048427925576e+01 3.4999999935418495e+00 0 0 0 +3610 1 -5.8604131690229146e+01 5.0848048400161517e+01 2.4477468610325711e-08 0 0 0 +3613 1 -5.6920615525374330e+01 5.1409524928218403e+01 1.7500000228925268e+00 0 0 0 +3660 1 -5.5798271479998348e+01 5.3628504646514394e+01 1.7500000125220863e+00 0 0 0 +4247 1 -5.7481787504296243e+01 5.3067028066827852e+01 3.5000000240217317e+00 0 0 0 +4302 1 -5.5237099628479598e+01 5.1971001565711333e+01 3.5000000215460902e+00 0 0 0 +3607 1 -5.7481787464604679e+01 5.3067028067118819e+01 3.5457585928707916e-09 0 0 0 +3665 1 -5.3553583613646509e+01 5.2532477897742922e+01 1.7500000207085062e+00 0 0 0 +4354 1 -5.1870067578462233e+01 5.3093954271440566e+01 3.5000000201287973e+00 0 0 0 +4303 1 -5.2992411598464571e+01 5.0874974705974246e+01 3.5000000518017562e+00 0 0 0 +3716 1 -5.1308895609754664e+01 5.1436451156362772e+01 1.7500000252832864e+00 0 0 0 +3717 1 -5.0186551546241652e+01 5.3655430598112311e+01 1.7500000233480482e+00 0 0 0 +4355 1 -4.9625379565378168e+01 5.1997927400611701e+01 3.4999999879707042e+00 0 0 0 +3768 1 -4.7941863485706570e+01 5.2559403767938100e+01 1.7500000126104556e+00 0 0 0 +3772 1 -4.5697175353049602e+01 5.1463376874781652e+01 1.7499999804022139e+00 0 0 0 +4407 1 -4.6258347395537882e+01 5.3120880044331400e+01 3.4999999729219233e+00 0 0 0 +4410 1 -4.7380691525381351e+01 5.0901900660863760e+01 3.4999999607974535e+00 0 0 0 +3210 1 -8.7753273264467680e+01 5.4048168259891540e+01 1.7499999961661821e+01 0 0 -1 +3212 1 -8.8549510114615089e+01 5.5705178442796615e+01 1.7500000148818351e+00 0 0 0 +3850 1 -8.7753273205358212e+01 5.4048168276040876e+01 3.5000000429000195e+00 0 0 0 +3241 1 -8.6132426079734131e+01 5.4607195420204498e+01 1.7499999831430109e+00 0 0 0 +3879 1 -8.6710920648166805e+01 5.6251123701139086e+01 3.4999999774194399e+00 0 0 0 +3239 1 -8.6710920693823383e+01 5.6251123694443393e+01 1.7499999985307209e+01 0 0 -1 +3283 1 -8.1049142890405705e+01 5.6273771256621494e+01 1.7499999961035801e+01 0 0 -1 +3284 1 -8.2732307469456799e+01 5.5710501467515535e+01 1.7499999436917399e+00 0 0 0 +3286 1 -8.2176993071014664e+01 5.4056376185487025e+01 1.7499999964100418e+01 0 0 -1 +3923 1 -8.1049142915556885e+01 5.6273771235978032e+01 3.4999999562081472e+00 0 0 0 +3926 1 -8.2176993080901354e+01 5.4056376195730351e+01 3.4999999500109831e+00 0 0 0 +3289 1 -8.0489602818613065e+01 5.4616343502691187e+01 1.7499999509536917e+00 0 0 0 +3339 1 -7.6561515764875182e+01 5.4082220303904627e+01 1.7499999993151775e+01 0 0 -1 +3341 1 -7.7122769711518615e+01 5.5739813121977029e+01 1.7499999749866844e+00 0 0 0 +3390 1 -7.5439348692786965e+01 5.6301282972265795e+01 1.7499999987959939e+01 0 0 -1 +3392 1 -7.4878099151932531e+01 5.4643755060100695e+01 1.7499999932352837e+00 0 0 0 +3979 1 -7.6561515831436921e+01 5.4082220308412097e+01 3.4999999753545477e+00 0 0 0 +4030 1 -7.5439348739618339e+01 5.6301282990342749e+01 3.4999999937361124e+00 0 0 0 +3444 1 -7.1511091595784265e+01 5.5766705162892052e+01 1.7500000154008724e+00 0 0 0 +3446 1 -7.0949917829775629e+01 5.4109203231478347e+01 1.7499999995134711e+01 0 0 -1 +4086 1 -7.0949917893196115e+01 5.4109203207963667e+01 3.5000000255876667e+00 0 0 0 +3443 1 -6.9827570347758268e+01 5.6328180354539654e+01 2.6550031413938780e-08 0 0 0 +3449 1 -6.9266400823619790e+01 5.4670678294951706e+01 1.7500000207297637e+00 0 0 0 +4083 1 -6.9827570413850395e+01 5.6328180330548257e+01 3.5000000269378146e+00 0 0 0 +3501 1 -6.5899367436493918e+01 5.5793630998139342e+01 1.7500000307414372e+00 0 0 0 +3552 1 -6.3654679646397241e+01 5.4697604300887974e+01 1.7500000287169117e+00 0 0 0 +4191 1 -6.1971163617803668e+01 5.5259080961403320e+01 3.4999999914289894e+00 0 0 0 +3551 1 -6.1971163590803009e+01 5.5259080947499463e+01 3.3669383340795932e-08 0 0 0 +3604 1 -6.0287647560763830e+01 5.5820557632100957e+01 1.7500000002813973e+00 0 0 0 +3609 1 -5.8042959488479077e+01 5.4724531248352498e+01 1.7499999798930646e+00 0 0 0 +3658 1 -5.6359443415692738e+01 5.5286007735695023e+01 1.7499999979714428e+01 0 0 -1 +4298 1 -5.6359443441621572e+01 5.5286007758734875e+01 3.5000000223553744e+00 0 0 0 +3661 1 -5.4675927287120984e+01 5.5847484147866659e+01 1.7500000182003745e+00 0 0 0 +3712 1 -5.2431239447919367e+01 5.4751457423890919e+01 1.7500000431158156e+00 0 0 0 +4299 1 -5.4114755485272340e+01 5.4189981105018731e+01 3.5000000177251875e+00 0 0 0 +4350 1 -5.2992411448511994e+01 5.6408960526495235e+01 3.5000000302462886e+00 0 0 0 +3764 1 -4.9064207429795871e+01 5.5874410075473691e+01 1.7500000279730594e+00 0 0 0 +4351 1 -5.0747723436067119e+01 5.5312933753156123e+01 3.5000000492110876e+00 0 0 0 +4406 1 -4.8503035492887072e+01 5.4216906971521894e+01 3.4999999998716138e+00 0 0 0 +3769 1 -4.6819519393839578e+01 5.4778383227387515e+01 1.7499999991903883e+00 0 0 0 +4403 1 -4.7380691365690872e+01 5.6435886453817460e+01 3.4999999865630258e+00 0 0 0 +3208 1 -8.9214901383211554e+01 5.8939236755520170e+01 1.7500000250428018e+00 0 0 0 +3237 1 -8.7168422266345885e+01 5.7856975171793025e+01 1.7499999902350452e+00 0 0 0 +3242 1 -8.4964193365172108e+01 5.6800413537906756e+01 1.7499999606466670e+00 0 0 0 +3280 1 -8.3862484057419707e+01 5.9032524472746246e+01 1.7499999779707807e+00 0 0 0 +3876 1 -8.5523443145145080e+01 5.8465026874486760e+01 3.4999999973939020e+00 0 0 0 +3236 1 -8.5523443193213410e+01 5.8465026892823033e+01 1.7499999963915045e+01 0 0 -1 +3285 1 -8.1612969893958478e+01 5.7932870566201231e+01 1.7499999651183686e+00 0 0 0 +3334 1 -7.9929643048444206e+01 5.8493643816328849e+01 1.7499999990809918e+01 0 0 -1 +3336 1 -7.9367521292130661e+01 5.6836012942030450e+01 1.7499999605024847e+00 0 0 0 +3337 1 -7.8245180165765689e+01 5.9054693809976790e+01 1.7499999897677543e+00 0 0 0 +3974 1 -7.9929643075077365e+01 5.8493643788998334e+01 3.4999999608675512e+00 0 0 0 +3387 1 -7.4316919838303122e+01 5.8520219546540531e+01 1.7499999984437000e+01 0 0 -1 +3388 1 -7.6000492389343592e+01 5.7958744251678802e+01 1.7499999984633501e+00 0 0 0 +4027 1 -7.4316919872599300e+01 5.8520219555706277e+01 3.5000000032452947e+00 0 0 0 +3393 1 -7.3755787609906889e+01 5.6862730299946833e+01 1.7500000073267294e+00 0 0 0 +3440 1 -7.2633423546668240e+01 5.9081710674237506e+01 1.7500000094744943e+00 0 0 0 +3445 1 -7.0388740951363602e+01 5.7985684070743496e+01 1.7500000183202469e+00 0 0 0 +3494 1 -6.8705227722577504e+01 5.8547161465836545e+01 1.5724401639986944e-08 0 0 0 +3496 1 -6.8144054761502588e+01 5.6889657643120778e+01 1.7500000379616094e+00 0 0 0 +4134 1 -6.8705227774275940e+01 5.8547161467410120e+01 3.5000000414302690e+00 0 0 0 +3497 1 -6.7021711763299635e+01 5.9108637722455967e+01 1.7500000478763302e+00 0 0 0 +3548 1 -6.4777023579323512e+01 5.8012610782943760e+01 1.7500000406053380e+00 0 0 0 +4186 1 -6.5338195531200938e+01 5.9670113967329620e+01 3.5000000247484890e+00 0 0 0 +3546 1 -6.5338195474241715e+01 5.9670113976609372e+01 4.9095828130065155e-08 0 0 0 +3553 1 -6.2532335638924373e+01 5.6916584100588892e+01 1.7500000228373986e+00 0 0 0 +3600 1 -6.1409991441150353e+01 5.9135563816708405e+01 1.7500000041033272e+00 0 0 0 +3605 1 -5.9165303428949215e+01 5.8039537387076855e+01 1.7499999857076785e+00 0 0 0 +4239 1 -5.9726475369719907e+01 5.9697040494968618e+01 3.4999999903968511e+00 0 0 0 +4242 1 -6.0848819435733994e+01 5.7478060714115344e+01 3.4999999771064050e+00 0 0 0 +3599 1 -5.9726475388852528e+01 5.9697040463156789e+01 6.9164163991642706e-09 0 0 0 +3602 1 -6.0848819416401859e+01 5.7478060693115580e+01 2.5967039896044152e-08 0 0 0 +3655 1 -5.5237099433839909e+01 5.7504987386698922e+01 1.7499999985459265e+01 0 0 -1 +3656 1 -5.6920615344617381e+01 5.6943510801122436e+01 1.7499999842637199e+00 0 0 0 +3657 1 -5.5798271376227682e+01 5.9162490496775675e+01 1.7499999786871387e+00 0 0 0 +4295 1 -5.5237099454868620e+01 5.7504987415530152e+01 3.5000000381556631e+00 0 0 0 +3706 1 -5.4114755357782578e+01 5.9723966899021320e+01 1.7499999970062291e+01 0 0 -1 +3708 1 -5.3553583479610523e+01 5.8066463709494364e+01 1.7500000298828808e+00 0 0 0 +4346 1 -5.4114755358392600e+01 5.9723966927968398e+01 3.5000000502598185e+00 0 0 0 +4347 1 -5.1870067467022849e+01 5.8627940048980719e+01 3.5000000334200481e+00 0 0 0 +3713 1 -5.1308895510400518e+01 5.6970436964858933e+01 1.7500000337376520e+00 0 0 0 +3760 1 -5.0186551473587542e+01 5.9189416324205396e+01 1.7500000464897656e+00 0 0 0 +4399 1 -4.8503035432189520e+01 5.9750892703422508e+01 3.5000000004857235e+00 0 0 0 +4402 1 -4.9625379461438307e+01 5.7531913166816977e+01 3.5000000226296986e+00 0 0 0 +3765 1 -4.7941863401395722e+01 5.8093389532069835e+01 1.7500000215424107e+00 0 0 0 +3809 1 -4.5697175272402028e+01 5.6997362725373158e+01 1.7500000086870058e+00 0 0 0 +4448 1 -4.6258347307521340e+01 5.8654865799281346e+01 3.4999999681724936e+00 0 0 0 +3233 1 -8.8549510161283621e+01 6.1239164364306014e+01 1.7500000123546000e+00 0 0 0 +3871 1 -8.9045575936440258e+01 6.2838577280014647e+01 3.5000000052434976e+00 0 0 0 +3231 1 -8.9045575947663110e+01 6.2838577260367472e+01 1.7499999990233849e+01 0 0 -1 +3238 1 -8.6132426135844625e+01 6.0141181518910557e+01 1.7500000008989516e+00 0 0 0 +3276 1 -8.4964193369246928e+01 6.2334399513926755e+01 1.7500000150721688e+00 0 0 0 +3918 1 -8.4431590477327688e+01 6.0687193866823378e+01 3.4999999937877844e+00 0 0 0 +3278 1 -8.4431590510101444e+01 6.0687193897748401e+01 5.3888867178294659e-09 0 0 0 +3281 1 -8.2732307403975568e+01 6.1244487590989941e+01 1.7500000104590507e+00 0 0 0 +3915 1 -8.3289036021425773e+01 6.2903213553501352e+01 3.5000000065502781e+00 0 0 0 +3275 1 -8.3289036021310778e+01 6.2903213577189241e+01 2.2734519972204922e-08 0 0 0 +3332 1 -8.0489602732844006e+01 6.0150329763112303e+01 1.7499999984372827e+00 0 0 0 +3331 1 -7.8805834299308529e+01 6.0712103404254385e+01 1.7499999998503714e+01 0 0 -1 +3333 1 -7.9367521195627489e+01 6.2369999110263016e+01 1.7500000071013611e+00 0 0 0 +3382 1 -7.7684224009814542e+01 6.2931369310823897e+01 1.0357324765673794e-08 0 0 0 +3971 1 -7.8805834323236596e+01 6.0712103379296387e+01 3.4999999829490749e+00 0 0 0 +4022 1 -7.7684224018977602e+01 6.2931369305088289e+01 3.4999999857648363e+00 0 0 0 +3384 1 -7.7122769549876494e+01 6.1273799397661911e+01 1.7499999921143157e+00 0 0 0 +3389 1 -7.4878098910128656e+01 6.0177741416928804e+01 1.7499999943817282e+00 0 0 0 +3435 1 -7.2072253385010029e+01 6.2958190355701042e+01 1.7499999993762582e+01 0 0 -1 +3436 1 -7.3755787429666327e+01 6.2396716628548674e+01 1.7499999956723409e+00 0 0 0 +3438 1 -7.3194615509262718e+01 6.0739221649329316e+01 4.9653094013265441e-09 0 0 0 +3441 1 -7.1511091344122462e+01 6.1300691491200112e+01 1.7500000100594515e+00 0 0 0 +4075 1 -7.2072253386368061e+01 6.2958190398986360e+01 3.5000000023130382e+00 0 0 0 +4078 1 -7.3194615533645532e+01 6.0739221670744435e+01 3.5000000000614584e+00 0 0 0 +3492 1 -6.9266400574250994e+01 6.0204664629259526e+01 1.7500000201027397e+00 0 0 0 +3493 1 -6.8144054565345058e+01 6.2423643923669985e+01 1.7500000204126251e+00 0 0 0 +3491 1 -6.7582883215347849e+01 6.0766140611826103e+01 4.0925683369578071e-08 0 0 0 +3542 1 -6.6460539455803243e+01 6.2985120614578371e+01 2.0136855628506305e-08 0 0 0 +3544 1 -6.5899367219956375e+01 6.1327617203943689e+01 1.7500000381495331e+00 0 0 0 +4131 1 -6.7582883231089298e+01 6.0766140617597074e+01 3.5000000259461772e+00 0 0 0 +4182 1 -6.6460539468041361e+01 6.2985120625186852e+01 3.5000000310151802e+00 0 0 0 +3549 1 -6.3654679418445141e+01 6.0231590388657033e+01 1.7500000236087445e+00 0 0 0 +3596 1 -6.2532335487432015e+01 6.2450570191854951e+01 1.7500000371037079e+00 0 0 0 +4183 1 -6.4215851452353860e+01 6.1889093737708073e+01 3.5000000192304861e+00 0 0 0 +3543 1 -6.4215851431327124e+01 6.1889093688695446e+01 4.0948680240109186e-08 0 0 0 +3601 1 -6.0287647436294691e+01 6.1354543588110637e+01 1.7500000030072378e+00 0 0 0 +3650 1 -5.8604131415858959e+01 6.1916020239126567e+01 1.7499999996691557e+01 0 0 -1 +3652 1 -5.8042959312209391e+01 6.0258517130744487e+01 1.7500000013921575e+00 0 0 0 +4290 1 -5.8604131388901934e+01 6.1916020254074830e+01 3.5000000054348694e+00 0 0 0 +3653 1 -5.6920615249336691e+01 6.2477496713887206e+01 1.7500000013640753e+00 0 0 0 +3703 1 -5.2992411333441119e+01 6.1942946339475810e+01 1.7499999969619203e+01 0 0 -1 +3704 1 -5.4675927243813888e+01 6.1381470036397928e+01 1.7499999951003620e+00 0 0 0 +3709 1 -5.2431239337559695e+01 6.0285443178694926e+01 1.7500000320872218e+00 0 0 0 +4343 1 -5.2992411357329381e+01 6.1942946324097832e+01 3.5000000503361228e+00 0 0 0 +3756 1 -5.1308895413179805e+01 6.2504422716202527e+01 1.7500000081932998e+00 0 0 0 +3761 1 -4.9064207389103956e+01 6.1408395840195112e+01 1.7500000184109088e+00 0 0 0 +4395 1 -4.9625379393849876e+01 6.3065898916356467e+01 3.4999999862754145e+00 0 0 0 +4398 1 -5.0747723367572426e+01 6.0846919497257893e+01 3.5000000159594538e+00 0 0 0 +3806 1 -4.6819519326649853e+01 6.0312368970225897e+01 1.7499999980826384e+00 0 0 0 +3807 1 -4.5697175189523115e+01 6.2531348400315721e+01 1.7500000172503150e+00 0 0 0 +4445 1 -4.7380691326016844e+01 6.1969872177792432e+01 3.4999999687775296e+00 0 0 0 +3229 1 -8.9214901342677976e+01 6.4473222480974400e+01 1.7499999726879889e+00 0 0 0 +3234 1 -8.7168422353827211e+01 6.3390961040289199e+01 1.7500000128652795e+00 0 0 0 +3868 1 -8.7753273374627639e+01 6.5116139970706755e+01 3.5000000213631672e+00 0 0 0 +3228 1 -8.7753273350222017e+01 6.5116139944479755e+01 1.7499999984085846e+01 0 0 -1 +3272 1 -8.6132426182065629e+01 6.5675167167090024e+01 1.7500000121941637e+00 0 0 0 +3277 1 -8.3862484102297230e+01 6.4566510298000651e+01 1.7500000217386709e+00 0 0 0 +3326 1 -8.2176993025181247e+01 6.5124348352461126e+01 1.9222934608965462e-08 0 0 0 +3328 1 -8.1612969881476602e+01 6.3466856596200266e+01 1.7500000133255746e+00 0 0 0 +3966 1 -8.2176993038413684e+01 6.5124348348484133e+01 3.4999999930539540e+00 0 0 0 +3329 1 -8.0489602740853854e+01 6.5684315726130166e+01 1.7500000003541927e+00 0 0 0 +3380 1 -7.8245180078456670e+01 6.4588679918025591e+01 1.7500000015364421e+00 0 0 0 +3379 1 -7.6561515561233534e+01 6.5150192808337877e+01 3.6469759171444055e-08 0 0 0 +3385 1 -7.6000492259459193e+01 6.3492730496479439e+01 1.7499999971293663e+00 0 0 0 +3432 1 -7.4878098872264346e+01 6.5711727591986886e+01 1.7499999993456379e+00 0 0 0 +4019 1 -7.6561515564968332e+01 6.5150192800618569e+01 3.4999999474969981e+00 0 0 0 +3437 1 -7.2633423462057948e+01 6.4615696939072109e+01 1.7500000094193622e+00 0 0 0 +3486 1 -7.0949917521954561e+01 6.5177175869393409e+01 1.7499999983456878e+01 0 0 -1 +4126 1 -7.0949917511799669e+01 6.5177175861463923e+01 3.5000000443910597e+00 0 0 0 +3488 1 -7.0388740763919216e+01 6.3519670348690880e+01 1.7500000158906073e+00 0 0 0 +3489 1 -6.9266400500921563e+01 6.5738650930839654e+01 1.7499999990203883e+00 0 0 0 +3540 1 -6.7021711641986300e+01 6.4642624003801501e+01 1.7500000062209589e+00 0 0 0 +3545 1 -6.4777023469639587e+01 6.3546597012032755e+01 1.7500000341643989e+00 0 0 0 +3592 1 -6.3654679383747613e+01 6.5765576594802056e+01 1.7500000289606059e+00 0 0 0 +3597 1 -6.1409991336129579e+01 6.4669549854249126e+01 1.7500000260383342e+00 0 0 0 +4231 1 -6.1971163401960268e+01 6.6327053107395670e+01 3.5000000012078498e+00 0 0 0 +4234 1 -6.3093507330591763e+01 6.4108073432886272e+01 3.5000000093922168e+00 0 0 0 +3594 1 -6.3093507317848392e+01 6.4108073431334290e+01 4.7416203588062710e-08 0 0 0 +3591 1 -6.1971163395313582e+01 6.6327053123186673e+01 4.2743175202452528e-08 0 0 0 +3648 1 -5.9165303353691705e+01 6.3573523382998424e+01 1.7499999976573550e+00 0 0 0 +3649 1 -5.8042959301568622e+01 6.5792503106205388e+01 1.7500000074128677e+00 0 0 0 +3647 1 -5.7481787247765709e+01 6.4134999880695290e+01 1.7499999987629600e+01 0 0 -1 +3700 1 -5.5798271294232251e+01 6.4696476377740495e+01 1.7500000031499370e+00 0 0 0 +4287 1 -5.7481787233234407e+01 6.4134999890890569e+01 3.5000000147333821e+00 0 0 0 +3698 1 -5.6359443291810287e+01 6.6353979552943755e+01 1.7499999966468337e+01 0 0 -1 +4338 1 -5.6359443288941030e+01 6.6353979550558506e+01 3.5000000301474365e+00 0 0 0 +3705 1 -5.3553583397482456e+01 6.3600449524393035e+01 1.7499999947300939e+00 0 0 0 +3752 1 -5.2431239335369312e+01 6.5819429039257912e+01 1.7500000031159106e+00 0 0 0 +3754 1 -5.1870067383411552e+01 6.4161925830216830e+01 1.7499999998089478e+01 0 0 -1 +4394 1 -5.1870067412834381e+01 6.4161925855696623e+01 3.5000000047910822e+00 0 0 0 +3757 1 -5.0186551427699250e+01 6.4723402102204815e+01 1.7500000123137989e+00 0 0 0 +3751 1 -5.0747723314979829e+01 6.6380905299349152e+01 1.7499999969981747e+01 0 0 -1 +4391 1 -5.0747723372956813e+01 6.6380905333789386e+01 3.5000000205402415e+00 0 0 0 +4441 1 -4.8503035441287331e+01 6.5284878446532062e+01 3.5000000004101715e+00 0 0 0 +3803 1 -4.7941863361420779e+01 6.3627375226088155e+01 1.7500000303645600e+00 0 0 0 +3804 1 -4.6819519356072121e+01 6.5846354692557540e+01 1.7500000022815116e+00 0 0 0 +4442 1 -4.6258347313135502e+01 6.4188851513632883e+01 3.4999999843472152e+00 0 0 0 +3230 1 -8.8549510156061416e+01 6.6773149918334397e+01 1.7499999802605575e+00 0 0 0 +3268 1 -8.7168422366741368e+01 6.8924946424751951e+01 1.7499999605074004e+00 0 0 0 +3270 1 -8.6710920738114211e+01 6.7319095199614409e+01 1.7499999958699675e+01 0 0 -1 +3273 1 -8.4964193490592223e+01 6.7868385089977025e+01 1.7499999955599703e+00 0 0 0 +3910 1 -8.6710920796667480e+01 6.7319095207624954e+01 3.5000000153540718e+00 0 0 0 +3323 1 -8.1049142895729446e+01 6.7341743236702257e+01 3.1062783762290952e-08 0 0 0 +3324 1 -8.2732307487530676e+01 6.6778473362665991e+01 1.7499999938351054e+00 0 0 0 +3325 1 -8.1612970000080423e+01 6.9000842300625564e+01 1.7499999848546903e+00 0 0 0 +3963 1 -8.1049142915767661e+01 6.7341743218909997e+01 3.4999999540603608e+00 0 0 0 +3376 1 -7.9367521257540503e+01 6.7903985013194927e+01 1.7499999789375964e+00 0 0 0 +3381 1 -7.7122769555772265e+01 6.6807785465282080e+01 1.7500000006592067e+00 0 0 0 +3428 1 -7.6000492344883853e+01 6.9026716500917473e+01 1.7500000266323676e+00 0 0 0 +3430 1 -7.5439348554616302e+01 6.7369255376190239e+01 3.5814304977443572e-08 0 0 0 +4070 1 -7.5439348582782969e+01 6.7369255363056666e+01 3.4999999978128105e+00 0 0 0 +3433 1 -7.3755787465083017e+01 6.7930702757343923e+01 1.7500000166859975e+00 0 0 0 +3484 1 -7.1511091354934209e+01 6.6834677737521744e+01 1.7500000014734411e+00 0 0 0 +3483 1 -6.9827570198351864e+01 6.7396152904368492e+01 1.7499999990893595e+01 0 0 -1 +3485 1 -7.0388740886702763e+01 6.9053656626447221e+01 1.7500000423924089e+00 0 0 0 +3536 1 -6.8144054597452438e+01 6.7957630226204401e+01 1.7500000204506039e+00 0 0 0 +4123 1 -6.9827570159336290e+01 6.7396152935505512e+01 3.5000000326829728e+00 0 0 0 +3541 1 -6.5899367206246453e+01 6.6861603489842750e+01 1.7500000195362067e+00 0 0 0 +3588 1 -6.4777023523423722e+01 6.9080583255971490e+01 1.7499999994322430e+00 0 0 0 +3593 1 -6.2532335521855984e+01 6.7984556358272741e+01 1.7500000305224015e+00 0 0 0 +3642 1 -6.0848819391805421e+01 6.8546032847836159e+01 5.6280129716231714e-08 0 0 0 +3644 1 -6.0287647428598888e+01 6.6888529679055850e+01 1.7500000317949427e+00 0 0 0 +3645 1 -5.9165303458567280e+01 6.9107509416807773e+01 1.7500000251309904e+00 0 0 0 +4282 1 -6.0848819396397779e+01 6.8546032846169084e+01 3.4999999907628854e+00 0 0 0 +3695 1 -5.5237099412345508e+01 6.8572959208414360e+01 1.7499999976239881e+01 0 0 -1 +3696 1 -5.6920615271256132e+01 6.8011482664403175e+01 1.7500000017516089e+00 0 0 0 +4335 1 -5.5237099414660790e+01 6.8572959259315596e+01 3.5000000059789671e+00 0 0 0 +3701 1 -5.4675927182656203e+01 6.6915455903320463e+01 1.7499999948002964e+00 0 0 0 +3748 1 -5.3553583479730271e+01 6.9134435476174858e+01 1.7499999838034916e+00 0 0 0 +3753 1 -5.1308895460930259e+01 6.8038408586993128e+01 1.7499999899856653e+00 0 0 0 +3797 1 -4.9625379420784370e+01 6.8599884720761679e+01 1.7499999986300683e+01 0 0 -1 +3799 1 -4.9064207396774385e+01 6.6942381598911069e+01 1.7499999854247001e+00 0 0 0 +4437 1 -4.9625379487491877e+01 6.8599884765884724e+01 3.4999999996479234e+00 0 0 0 +3800 1 -4.7941863424141062e+01 6.9161361066539655e+01 1.7499999957824250e+00 0 0 0 +3831 1 -4.5697175281861547e+01 6.8065334176595712e+01 1.7500000167234944e+00 0 0 0 +4438 1 -4.7380691388838940e+01 6.7503857946890662e+01 3.4999999841215579e+00 0 0 0 +3226 1 -8.9214901497053859e+01 7.0007207759186713e+01 1.7499999434434499e+00 0 0 0 +3264 1 -8.8549510366886523e+01 7.2307135209477494e+01 1.7499999240564370e+00 0 0 0 +3267 1 -8.5523443332337465e+01 6.9532998157763430e+01 1.7499999961370484e+01 0 0 -1 +3269 1 -8.6132426397254491e+01 7.1209152540221538e+01 1.7499999438467413e+00 0 0 0 +3318 1 -8.4431590718821212e+01 7.1755164992468963e+01 7.6780119885682596e-09 0 0 0 +3320 1 -8.3862484280517961e+01 7.0100495804620550e+01 1.7499999770563992e+00 0 0 0 +3907 1 -8.5523443364346591e+01 6.9532998153045824e+01 3.4999999943954485e+00 0 0 0 +3958 1 -8.4431590784492670e+01 7.1755164962948186e+01 3.4999999484358399e+00 0 0 0 +3321 1 -8.2732307722837845e+01 7.2312458840026011e+01 1.7499999825576615e+00 0 0 0 +3372 1 -8.0489602920833150e+01 7.1218301400570169e+01 1.7499999950202496e+00 0 0 0 +3374 1 -7.9929643104920174e+01 6.9561615684231370e+01 5.4943472420216615e-08 0 0 0 +3377 1 -7.8245180225217467e+01 7.0122665824909888e+01 1.7500000067076118e+00 0 0 0 +4014 1 -7.9929643159321003e+01 6.9561615669550790e+01 3.4999999283606398e+00 0 0 0 +4011 1 -7.8805834571644525e+01 7.1780075181372652e+01 3.4999999522580487e+00 0 0 0 +3371 1 -7.8805834466113893e+01 7.1780075218410929e+01 8.8507572756513352e-08 0 0 0 +3424 1 -7.7122769796687763e+01 7.2341771329763105e+01 1.7500000277619963e+00 0 0 0 +3427 1 -7.4316919862749572e+01 6.9588191861973996e+01 2.6943214464341331e-08 0 0 0 +3429 1 -7.4878099076873497e+01 7.1245713615787423e+01 1.7500000590756146e+00 0 0 0 +4067 1 -7.4316919893945197e+01 6.9588191863126397e+01 3.5000000450779436e+00 0 0 0 +3480 1 -7.2633423609285629e+01 7.0149683059570961e+01 1.7500000481047286e+00 0 0 0 +3481 1 -7.1511091647364907e+01 7.2368663814231894e+01 1.7500000509844920e+00 0 0 0 +4118 1 -7.3194615777721481e+01 7.1807193941721252e+01 3.5000000790872567e+00 0 0 0 +3478 1 -7.3194615772186182e+01 7.1807193922099330e+01 4.6523792388869603e-08 0 0 0 +3532 1 -6.9266400740676119e+01 7.1272637106519824e+01 1.7500000115460654e+00 0 0 0 +4174 1 -6.8705227748112478e+01 6.9615134013711611e+01 3.5000000364355262e+00 0 0 0 +3534 1 -6.8705227751488508e+01 6.9615134022892136e+01 1.7499999996145469e+01 0 0 -1 +3537 1 -6.7021711806597736e+01 7.0176610251860566e+01 1.7500000037043064e+00 0 0 0 +3584 1 -6.5899367415992259e+01 7.2395589757774331e+01 1.7500000197156949e+00 0 0 0 +3586 1 -6.5338195587846585e+01 7.0738086482428145e+01 1.7985836289161858e-08 0 0 0 +4226 1 -6.5338195592204769e+01 7.0738086500030420e+01 3.4999999983424219e+00 0 0 0 +4171 1 -6.7582883397926949e+01 7.1834113157131355e+01 3.5000000248028451e+00 0 0 0 +3531 1 -6.7582883428951988e+01 7.1834113132655958e+01 1.7499999991894327e+01 0 0 -1 +3589 1 -6.3654679551442548e+01 7.1299562831134338e+01 1.7500000302586252e+00 0 0 0 +3640 1 -6.1409991505318239e+01 7.0203536061582184e+01 1.7500000424574464e+00 0 0 0 +3639 1 -5.9726475517253071e+01 7.0765012625958988e+01 5.2418812553851955e-08 0 0 0 +3641 1 -6.0287647650731294e+01 7.2422515820232277e+01 1.7500000374334774e+00 0 0 0 +3692 1 -5.8042959463300804e+01 7.1326489171723168e+01 1.7500000192974898e+00 0 0 0 +4279 1 -5.9726475496666104e+01 7.0765012632976010e+01 3.5000000044693045e+00 0 0 0 +3697 1 -5.5798271421869828e+01 7.0230462369176266e+01 1.7499999911430468e+00 0 0 0 +3744 1 -5.4675927334560427e+01 7.2449441954093174e+01 1.7499999580249186e+00 0 0 0 +3746 1 -5.4114755413654663e+01 7.0791938754383949e+01 1.7499999932956818e+01 0 0 -1 +3749 1 -5.2431239382198918e+01 7.1353415001648230e+01 1.7499999491579599e+00 0 0 0 +4386 1 -5.4114755415810443e+01 7.0791938779049758e+01 3.5000000109400800e+00 0 0 0 +3794 1 -4.8503035414602053e+01 7.0818864345184465e+01 1.7499999997995683e+01 0 0 -1 +3795 1 -5.0186551469122392e+01 7.0257387994376884e+01 1.7499999922501288e+00 0 0 0 +3796 1 -4.9064207389588155e+01 7.2476367532383279e+01 1.7499999895131175e+00 0 0 0 +4434 1 -4.8503035476124630e+01 7.0818864332923170e+01 3.4999999845205148e+00 0 0 0 +3828 1 -4.6819519365753045e+01 7.1380340542228325e+01 1.7499999950495322e+00 0 0 0 +4470 1 -4.6258347360695375e+01 6.9722837295197749e+01 3.4999999721883932e+00 0 0 0 +3260 1 -8.9214901453380151e+01 7.5541193077246277e+01 1.7499998585110843e+00 0 0 0 +3265 1 -8.7168422665772297e+01 7.4458931746990558e+01 1.7499999301162701e+00 0 0 0 +3902 1 -8.9045576073990915e+01 7.3906548016224221e+01 3.4999999558660599e+00 0 0 0 +3262 1 -8.9045576051889086e+01 7.3906547914882424e+01 1.7499999881964648e+01 0 0 -1 +3316 1 -8.4964193728304267e+01 7.3402370396405729e+01 1.7499999589412172e+00 0 0 0 +3317 1 -8.3862484650584037e+01 7.5634481142184995e+01 1.7500000042033108e+00 0 0 0 +3368 1 -8.1612970363444006e+01 7.4534827787186998e+01 1.7500000166642014e+00 0 0 0 +3955 1 -8.3289036505771321e+01 7.3971184575730433e+01 3.4999999280809257e+00 0 0 0 +3315 1 -8.3289036383225906e+01 7.3971184606456930e+01 6.6291619070406944e-08 0 0 0 +3373 1 -7.9367521542947102e+01 7.3437970721414658e+01 1.7500000353715202e+00 0 0 0 +3420 1 -7.8245180603533527e+01 7.5656651519527955e+01 1.7500000599176571e+00 0 0 0 +4062 1 -7.7684224464198195e+01 7.3999341106982513e+01 3.5000000182183082e+00 0 0 0 +3422 1 -7.7684224373172412e+01 7.3999341110546666e+01 7.8778791435749141e-08 0 0 0 +3425 1 -7.6000492727866956e+01 7.4560702425112623e+01 1.7500000664830444e+00 0 0 0 +3476 1 -7.3755787834759587e+01 7.3464688760795809e+01 1.7500000737614210e+00 0 0 0 +3477 1 -7.2633424072837968e+01 7.5683669019362839e+01 1.7500000512004030e+00 0 0 0 +4115 1 -7.2072253836589510e+01 7.4026162605607709e+01 3.5000000822376371e+00 0 0 0 +3475 1 -7.2072253865143409e+01 7.4026162562106009e+01 9.6013596384916222e-09 0 0 0 +3528 1 -7.0388741237990530e+01 7.4587642644120749e+01 1.7500000301431593e+00 0 0 0 +3533 1 -6.8144054900751556e+01 7.3491616401164052e+01 1.7500000170175796e+00 0 0 0 +3580 1 -6.7021712121350077e+01 7.5710596452198430e+01 1.7499999839474929e+00 0 0 0 +3585 1 -6.4777023826571252e+01 7.4614569537706046e+01 1.7500000182944664e+00 0 0 0 +4222 1 -6.6460539806547786e+01 7.4053093141341961e+01 3.4999999912572255e+00 0 0 0 +3582 1 -6.6460539804849276e+01 7.4053093141075337e+01 5.8667950540574372e-10 0 0 0 +3583 1 -6.4215851675869089e+01 7.2957066236126707e+01 3.4514268602763654e-08 0 0 0 +3634 1 -6.3093507705513552e+01 7.5176045931046801e+01 5.0743538442017810e-08 0 0 0 +3636 1 -6.2532335773826752e+01 7.3518542634434780e+01 1.7500000328505432e+00 0 0 0 +3637 1 -6.1409991740941102e+01 7.5737522265280475e+01 1.7500000518246972e+00 0 0 0 +4223 1 -6.4215851713090743e+01 7.2957066230992737e+01 3.4999999953283263e+00 0 0 0 +4274 1 -6.3093507722745066e+01 7.5176045923691845e+01 3.5000000121481283e+00 0 0 0 +3688 1 -5.9165303699482820e+01 7.4641495599070097e+01 1.7500000320066755e+00 0 0 0 +3690 1 -5.8604131681054376e+01 7.2983992375979497e+01 3.5544224084889181e-08 0 0 0 +4330 1 -5.8604131640694668e+01 7.2983992388514693e+01 3.4999999946344778e+00 0 0 0 +3687 1 -5.7481787591260250e+01 7.5202972010578975e+01 5.4474079678365444e-09 0 0 0 +3693 1 -5.6920615484995238e+01 7.3545468757555625e+01 1.7499999865691320e+00 0 0 0 +3740 1 -5.5798271565607983e+01 7.5764448417954966e+01 1.7499999706675018e+00 0 0 0 +4327 1 -5.7481787540011837e+01 7.5202971989871415e+01 3.4999999906999224e+00 0 0 0 +3745 1 -5.3553583539006340e+01 7.4668421459642346e+01 1.7499999405519022e+00 0 0 0 +3789 1 -5.1870067461850113e+01 7.5229897776529555e+01 1.7499999941979066e+01 0 0 -1 +4383 1 -5.2992411451826968e+01 7.3010918215953254e+01 3.4999999893399294e+00 0 0 0 +4429 1 -5.1870067510872524e+01 7.5229897749644763e+01 3.4999999767376524e+00 0 0 0 +3743 1 -5.2992411418838309e+01 7.3010918223093469e+01 1.7499999927137996e+01 0 0 -1 +3791 1 -5.1308895479491241e+01 7.3572394554264989e+01 1.7499999565184077e+00 0 0 0 +3792 1 -5.0186551460902606e+01 7.5791374000733455e+01 1.7499999797291679e+00 0 0 0 +3825 1 -4.7941863334283454e+01 7.4695346996748398e+01 1.7500000287216244e+00 0 0 0 +3827 1 -4.7380691298356645e+01 7.3037843799635183e+01 3.5864963295143325e-08 0 0 0 +3829 1 -4.5697175184336295e+01 7.3599320023536279e+01 1.7500000394619686e+00 0 0 0 +4464 1 -4.6258347276584786e+01 7.5256823202791892e+01 3.5000000002368452e+00 0 0 0 +4467 1 -4.7380691351132363e+01 7.3037843822822822e+01 3.4999999825926200e+00 0 0 0 +3824 1 -4.6258347229537605e+01 7.5256823226816365e+01 6.5039585059784203e-08 0 0 0 +3261 1 -8.8549510685047110e+01 7.7841120567865971e+01 1.7499998572510160e+00 0 0 0 +3899 1 -8.7753273843876855e+01 7.6184110618613289e+01 3.4999999456650626e+00 0 0 0 +3259 1 -8.7753273738248112e+01 7.6184110543682934e+01 1.7499999873393833e+01 0 0 -1 +3312 1 -8.6132426730409236e+01 7.6743137816857413e+01 1.7499999657562131e+00 0 0 0 +3950 1 -8.6710921454189972e+01 7.8387065790832239e+01 3.4999999632293246e+00 0 0 0 +3310 1 -8.6710921253076265e+01 7.8387065785484708e+01 1.7499999912534765e+01 0 0 -1 +3364 1 -8.2732308189992850e+01 7.7846444205053686e+01 1.7500000269141782e+00 0 0 0 +4003 1 -8.1049143750803680e+01 7.8409714236457276e+01 3.4999999879604373e+00 0 0 0 +4006 1 -8.2176993710593507e+01 7.6192319328985690e+01 3.4999999655079765e+00 0 0 0 +3363 1 -8.1049143645075674e+01 7.8409714259347410e+01 1.1596879954514134e-07 0 0 0 +3366 1 -8.2176993553709835e+01 7.6192319376135529e+01 9.7583662243072463e-08 0 0 0 +3369 1 -8.0489603393126941e+01 7.6752286943187386e+01 1.7500000450654973e+00 0 0 0 +3421 1 -7.7122770292951060e+01 7.7875757061268928e+01 1.7500000619460880e+00 0 0 0 +3472 1 -7.4878099558361114e+01 7.6779699457617085e+01 1.7500000465252965e+00 0 0 0 +4059 1 -7.6561516207419132e+01 7.6218164567159775e+01 3.5000000171158132e+00 0 0 0 +4110 1 -7.5439349375556489e+01 7.8437227107227201e+01 3.5000000414350567e+00 0 0 0 +3419 1 -7.6561516172648254e+01 7.6218164572105607e+01 9.6191639924666885e-08 0 0 0 +3470 1 -7.5439349392156188e+01 7.8437227098982603e+01 3.7177222079227585e-08 0 0 0 +3524 1 -7.1511092109777664e+01 7.7902649767296154e+01 1.7500000048849869e+00 0 0 0 +4166 1 -7.0949918110802386e+01 7.6245148042816794e+01 3.5000000523008064e+00 0 0 0 +3526 1 -7.0949918179703587e+01 7.6245148019475266e+01 1.7499999987003271e+01 0 0 -1 +3529 1 -6.9266401099060261e+01 7.6806623174481231e+01 1.7499999937546598e+00 0 0 0 +4163 1 -6.9827570869445026e+01 7.8464125064838498e+01 3.5000000031326230e+00 0 0 0 +3523 1 -6.9827570923389359e+01 7.8464125039619802e+01 1.7499999980279753e+01 0 0 -1 +3581 1 -6.5899367741535158e+01 7.7929575972160791e+01 1.7499999963835422e+00 0 0 0 +3631 1 -6.1971163870219833e+01 7.7395025608539328e+01 6.5289904195336472e-08 0 0 0 +3632 1 -6.3654679848532716e+01 7.6833549123114935e+01 1.7500000279690380e+00 0 0 0 +4271 1 -6.1971163894603329e+01 7.7395025552875452e+01 3.5000000116523822e+00 0 0 0 +3684 1 -6.0287647897400610e+01 7.7956502043067374e+01 1.7500000441773291e+00 0 0 0 +3689 1 -5.8042959692332950e+01 7.6860475291790976e+01 1.7500000059334231e+00 0 0 0 +3738 1 -5.6359443655835804e+01 7.7421951647739050e+01 1.7499999974161334e+01 0 0 -1 +4378 1 -5.6359443603422086e+01 7.7421951622028431e+01 3.4999999996528897e+00 0 0 0 +3741 1 -5.4675927454248864e+01 7.7983427915448075e+01 1.7499999716999746e+00 0 0 0 +3787 1 -5.2431239445690821e+01 7.6887400996755900e+01 1.7499999456030269e+00 0 0 0 +3821 1 -4.9064207375370195e+01 7.8010353505842957e+01 1.7500000058523579e+00 0 0 0 +4426 1 -5.0747723426710820e+01 7.7448877251848330e+01 3.5000000055149392e+00 0 0 0 +3786 1 -5.0747723362497709e+01 7.7448877255957569e+01 1.7499999951241662e+01 0 0 -1 +3820 1 -4.7380691284863772e+01 7.8571829811225371e+01 5.6599763567654619e-08 0 0 0 +3826 1 -4.6819519292312513e+01 7.6914326481780492e+01 1.7500000460044520e+00 0 0 0 +3257 1 -8.9214901532138796e+01 8.1075178449339191e+01 1.7499997369921869e+00 0 0 0 +3308 1 -8.7168422917078047e+01 7.9992917060378389e+01 1.7499998707936131e+00 0 0 0 +3313 1 -8.4964194166968184e+01 7.8936355742700783e+01 1.7499999897802445e+00 0 0 0 +3360 1 -8.3862485144651515e+01 8.1168466498328343e+01 1.7500000223996077e+00 0 0 0 +3947 1 -8.5523444222253360e+01 8.0600968804079741e+01 3.4999999542080626e+00 0 0 0 +3307 1 -8.5523444032564100e+01 8.0600968797731639e+01 1.7499999978878467e+01 0 0 -1 +3365 1 -8.1612970877181994e+01 8.0068813177502633e+01 1.7500000746132045e+00 0 0 0 +3416 1 -7.9367522091109876e+01 7.8971956237742077e+01 1.7500000550280330e+00 0 0 0 +3417 1 -7.8245181217398837e+01 8.1190637056211159e+01 1.7500000424897584e+00 0 0 0 +4054 1 -7.9929644122462264e+01 8.0629586703525149e+01 3.4999999889330966e+00 0 0 0 +3414 1 -7.9929644084443012e+01 8.0629586734147310e+01 1.1519018303890290e-07 0 0 0 +3468 1 -7.6000493258413670e+01 8.0094688075834995e+01 1.7500000312576396e+00 0 0 0 +4107 1 -7.4316920791531047e+01 8.0656163574890840e+01 3.5000000312536366e+00 0 0 0 +3467 1 -7.4316920836949620e+01 8.0656163548516886e+01 7.7144980495795437e-09 0 0 0 +3473 1 -7.3755788296114190e+01 7.8998674583741234e+01 1.7500000278312435e+00 0 0 0 +3520 1 -7.2633424515577929e+01 8.1217654848789778e+01 1.7500000142855947e+00 0 0 0 +3525 1 -7.0388741675590083e+01 8.0121628628344538e+01 1.7500000025385765e+00 0 0 0 +3576 1 -6.8144055259799188e+01 7.9025602495338930e+01 1.7499999855710999e+00 0 0 0 +4214 1 -6.8705228472069052e+01 8.0683106136082472e+01 3.5000000075312880e+00 0 0 0 +3574 1 -6.8705228473040492e+01 8.0683106120740206e+01 1.7499999988440596e+01 0 0 -1 +3577 1 -6.7021712445354979e+01 8.1244582486516677e+01 1.7500000059893455e+00 0 0 0 +3626 1 -6.5338196136294684e+01 8.1806058814827011e+01 1.2138198337199150e-08 0 0 0 +3628 1 -6.4777024082761343e+01 8.0148555684728947e+01 1.7500000112001528e+00 0 0 0 +4266 1 -6.5338196180522218e+01 8.1806058802592887e+01 3.5000000232933788e+00 0 0 0 +3633 1 -6.2532336054068395e+01 7.9052528824379536e+01 1.7500000552330950e+00 0 0 0 +3680 1 -6.1409991981943122e+01 8.1271508446181130e+01 1.7500000654980414e+00 0 0 0 +3679 1 -5.9726475951311031e+01 8.1832984893056462e+01 8.5653102543592108e-08 0 0 0 +3682 1 -6.0848819897991959e+01 7.9614005242113137e+01 8.8606848253920200e-08 0 0 0 +3685 1 -5.9165303913443786e+01 8.0175481667918405e+01 1.7500000667100104e+00 0 0 0 +4319 1 -5.9726475912975040e+01 8.1832984854153551e+01 3.5000000437444787e+00 0 0 0 +4322 1 -6.0848819881203895e+01 7.9614005229308063e+01 3.5000000274951018e+00 0 0 0 +3736 1 -5.6920615653527719e+01 7.9079454763378948e+01 1.7500000013848511e+00 0 0 0 +3737 1 -5.5798271717621454e+01 8.1298434400165348e+01 1.7499999878471246e+00 0 0 0 +4375 1 -5.5237099684419618e+01 7.9640931232043854e+01 3.5000000112118057e+00 0 0 0 +3735 1 -5.5237099732735608e+01 7.9640931260105745e+01 1.7499999955728054e+01 0 0 -1 +3781 1 -5.4114755652893777e+01 8.1859910714413161e+01 1.7499999946173382e+01 0 0 -1 +3783 1 -5.3553583673072900e+01 8.0202407445596180e+01 1.7499999773364834e+00 0 0 0 +4421 1 -5.4114755594006134e+01 8.1859910687962042e+01 3.5000000141041214e+00 0 0 0 +3788 1 -5.1308895536526563e+01 7.9106380539025807e+01 1.7499999642732706e+00 0 0 0 +3817 1 -5.0186551466452897e+01 8.1325359965897377e+01 1.7499999776796133e+00 0 0 0 +3819 1 -4.9625379410378017e+01 7.9667856696421453e+01 1.7499999976138838e+01 0 0 -1 +4459 1 -4.9625379460678680e+01 7.9667856705801995e+01 3.5000000157544959e+00 0 0 0 +3816 1 -4.8503035365979258e+01 8.1886836311740652e+01 1.3146897605390914e-08 0 0 0 +3822 1 -4.7941863335066692e+01 8.0229333023285747e+01 1.7500000301363732e+00 0 0 0 +3840 1 -4.5697175160419256e+01 7.9133306031514167e+01 1.7500000695318509e+00 0 0 0 +3839 1 -4.6258347233007420e+01 8.0790809231091075e+01 8.2052853505597086e-08 0 0 0 +3302 1 -8.9045576280684472e+01 8.4974519079640942e+01 1.7499999765967424e+01 0 0 -1 +3304 1 -8.8549511016971778e+01 8.3375106114727103e+01 1.7499997510533438e+00 0 0 0 +3942 1 -8.9045576336030450e+01 8.4974519025673629e+01 3.4999998153029321e+00 0 0 0 +3309 1 -8.6132427165389785e+01 8.2277123263332456e+01 1.7499999225223337e+00 0 0 0 +3356 1 -8.4964194603709842e+01 8.4470341184873931e+01 1.7499999838989615e+00 0 0 0 +3358 1 -8.4431591576019812e+01 8.2823135720297756e+01 7.3420915312813042e-08 0 0 0 +3998 1 -8.4431591734852233e+01 8.2823135667007975e+01 3.4999999506757185e+00 0 0 0 +3355 1 -8.3289037444917327e+01 8.5039155415012544e+01 1.3431467969083919e-07 0 0 0 +3361 1 -8.2732308722131620e+01 8.3380429593355146e+01 1.7500000469055219e+00 0 0 0 +3995 1 -8.3289037512382336e+01 8.5039155382897576e+01 3.4999999448070893e+00 0 0 0 +3412 1 -8.0489603955242089e+01 8.2286272300986539e+01 1.7500000558651445e+00 0 0 0 +3413 1 -7.9367522683113648e+01 8.4505941701785233e+01 1.7500000536839511e+00 0 0 0 +4051 1 -7.8805835610765172e+01 8.2848046289274407e+01 3.4999999999461164e+00 0 0 0 +4102 1 -7.7684225563600705e+01 8.5067312240046220e+01 3.5000000003960570e+00 0 0 0 +3411 1 -7.8805835620662776e+01 8.2848046295494882e+01 6.9387859123549791e-08 0 0 0 +3462 1 -7.7684225588471136e+01 8.5067312234087623e+01 4.8299069252021127e-08 0 0 0 +3464 1 -7.7122770884674892e+01 8.3409742618389984e+01 1.7500000095077404e+00 0 0 0 +3469 1 -7.4878100075454853e+01 8.2313685183288229e+01 1.7500000223295558e+00 0 0 0 +3516 1 -7.3755788795404229e+01 8.4532660287559693e+01 1.7500000134234523e+00 0 0 0 +3521 1 -7.1511092486892366e+01 8.3436635532915290e+01 1.7500000239209093e+00 0 0 0 +4155 1 -7.2072254653632413e+01 8.5094134203359900e+01 3.5000000432229919e+00 0 0 0 +4158 1 -7.3194616699910739e+01 8.2875165595359803e+01 3.5000000242272868e+00 0 0 0 +3515 1 -7.2072254701656760e+01 8.5094134138734546e+01 1.7499999989399235e+01 0 0 -1 +3518 1 -7.3194616749809910e+01 8.2875165570751761e+01 2.2641664646422608e-08 0 0 0 +3572 1 -6.9266401490086125e+01 8.2340609087486968e+01 1.7499999922720422e+00 0 0 0 +3573 1 -6.8144055510282868e+01 8.4559588292906028e+01 1.7500000070911617e+00 0 0 0 +3624 1 -6.5899367950252227e+01 8.3463561935818490e+01 1.7500000105512761e+00 0 0 0 +4211 1 -6.7582884057664970e+01 8.2902085209508130e+01 3.5000000393071575e+00 0 0 0 +4262 1 -6.6460540290787563e+01 8.5121065126612748e+01 3.5000000363793839e+00 0 0 0 +3571 1 -6.7582884054163429e+01 8.2902085215890992e+01 1.7499999970159124e+01 0 0 -1 +3622 1 -6.6460540283428969e+01 8.5121065111510418e+01 1.7499999971853416e+01 0 0 -1 +3623 1 -6.4215852123688379e+01 8.4025038456473766e+01 3.2061259496853551e-08 0 0 0 +3629 1 -6.3654680047786854e+01 8.2367535198062669e+01 1.7500000489146403e+00 0 0 0 +3676 1 -6.2532336143997441e+01 8.4586514836793327e+01 1.7500000641290840e+00 0 0 0 +4263 1 -6.4215852159138379e+01 8.4025038437662914e+01 3.5000000292785649e+00 0 0 0 +3681 1 -6.0287648024437807e+01 8.3490488038916496e+01 1.7500000814773033e+00 0 0 0 +3730 1 -5.8604131993624073e+01 8.4051964457056300e+01 9.4069072704435073e-08 0 0 0 +3732 1 -5.8042959806699173e+01 8.2394461290974732e+01 1.7500000550772703e+00 0 0 0 +4370 1 -5.8604131917079073e+01 8.4051964462317258e+01 3.5000000298452232e+00 0 0 0 +3733 1 -5.6920615699393629e+01 8.4613440704544942e+01 1.7500000455837832e+00 0 0 0 +3779 1 -5.4675927519931392e+01 8.3517413840102833e+01 1.7499999785369442e+00 0 0 0 +3784 1 -5.2431239490012409e+01 8.2421386910302360e+01 1.7499999582267320e+00 0 0 0 +4418 1 -5.2992411527342782e+01 8.4078890054662253e+01 3.5000000031857481e+00 0 0 0 +3778 1 -5.2992411566871873e+01 8.4078890086867304e+01 1.7499999928139257e+01 0 0 -1 +3812 1 -4.9625379381762791e+01 8.5201842608199001e+01 1.7499999962223718e+01 0 0 -1 +3813 1 -5.1308895510895510e+01 8.4640366399088364e+01 1.7499999504650454e+00 0 0 0 +3818 1 -4.9064207366283121e+01 8.3544339458387824e+01 1.7499999713367309e+00 0 0 0 +3836 1 -4.7380691270111896e+01 8.4105815785114316e+01 1.0825913248000291e-08 0 0 0 +3837 1 -4.6819519280729345e+01 8.2448312480070157e+01 1.7500000136931724e+00 0 0 0 +3838 1 -4.5697175198280661e+01 8.4667292025556563e+01 1.7500000278616203e+00 0 0 0 +3300 1 -8.7753274316122315e+01 8.7252081930674592e+01 1.7499999933936749e+01 0 0 -1 +3301 1 -8.9214901640321543e+01 8.6609164318443348e+01 1.7499997654901820e+00 0 0 0 +3305 1 -8.7168423259660912e+01 8.5526902659157471e+01 1.7499998806162886e+00 0 0 0 +3940 1 -8.7753274466840935e+01 8.7252081790016831e+01 3.4999998998412702e+00 0 0 0 +3353 1 -8.6132427517306382e+01 8.7811108983346315e+01 1.7499999718159023e+00 0 0 0 +3357 1 -8.3862485646885148e+01 8.6702452054468878e+01 1.7500000467929697e+00 0 0 0 +3408 1 -8.1612971475885004e+01 8.5602798641352422e+01 1.7500000502531643e+00 0 0 0 +4046 1 -8.2176994753823465e+01 8.7260290226642226e+01 3.4999999879509414e+00 0 0 0 +3406 1 -8.2176994732056400e+01 8.7260290270432364e+01 1.4594337334960502e-07 0 0 0 +3409 1 -8.0489604525848279e+01 8.7820257838107267e+01 1.7500000506549627e+00 0 0 0 +3461 1 -7.8245181765037657e+01 8.6724622533143048e+01 1.7500000172141037e+00 0 0 0 +3465 1 -7.6000493810523366e+01 8.5628673671771168e+01 1.7500000149453054e+00 0 0 0 +3513 1 -7.4878100468603165e+01 8.7847670701330784e+01 1.7499999939471986e+00 0 0 0 +3460 1 -7.6561517290340191e+01 8.7286135707235019e+01 2.8181871778685487e-08 0 0 0 +4100 1 -7.6561517227584858e+01 8.7286135741625074e+01 3.4999999826946535e+00 0 0 0 +3517 1 -7.2633424862410976e+01 8.6751640445365112e+01 1.7500000240073548e+00 0 0 0 +4206 1 -7.0949918731231008e+01 8.7313119501516013e+01 3.5000000600103927e+00 0 0 0 +3566 1 -7.0949918796422352e+01 8.7313119478234853e+01 1.7499999961636121e+01 0 0 -1 +3568 1 -7.0388741904410708e+01 8.5655614275394854e+01 1.7500000042556609e+00 0 0 0 +3569 1 -6.9266401548271247e+01 8.7874594666244647e+01 1.7499999814192604e+00 0 0 0 +3621 1 -6.7021712527838545e+01 8.6778568240905940e+01 1.7499999874009049e+00 0 0 0 +3625 1 -6.4777024212226578e+01 8.5682541594068013e+01 1.7500000243574525e+00 0 0 0 +3673 1 -6.3654680012516614e+01 8.7901521019201709e+01 1.7500000133573861e+00 0 0 0 +3674 1 -6.3093507969473173e+01 8.6244018010258827e+01 4.4727095699612383e-08 0 0 0 +3677 1 -6.1409991934436839e+01 8.6805494303213393e+01 1.7500000653782772e+00 0 0 0 +4314 1 -6.3093507999758835e+01 8.6244017978651542e+01 3.5000000286197355e+00 0 0 0 +311 1 -6.1971163920679594e+01 8.8462997491326334e+01 7.1610306897906781e-08 0 -1 0 +951 1 -6.1971163941461214e+01 8.8462997467088883e+01 3.4999999837747713e+00 0 -1 0 +3728 1 -5.9165303895634537e+01 8.5709467627137414e+01 1.7500000715679962e+00 0 0 0 +3729 1 -5.8042959713676332e+01 8.7928447093743571e+01 1.7500000561482814e+00 0 0 0 +3776 1 -5.5798271625601515e+01 8.6832420200088265e+01 1.7500000189050695e+00 0 0 0 +4367 1 -5.7481787658991358e+01 8.6270943884182884e+01 3.5000000143232657e+00 0 0 0 +3727 1 -5.7481787751892860e+01 8.6270943897528383e+01 7.2404049012600869e-08 0 0 0 +418 1 -5.6359443657741942e+01 8.8489923327572356e+01 3.7104727969196396e-08 0 -1 0 +1058 1 -5.6359443553649413e+01 8.8489923338332900e+01 3.5000000180310495e+00 0 -1 0 +3780 1 -5.3553583621001998e+01 8.5736393229615786e+01 1.7499999571149865e+00 0 0 0 +3810 1 -5.2431239453981973e+01 8.7955372670228968e+01 1.7499999597156091e+00 0 0 0 +3811 1 -5.1870067534509175e+01 8.6297869558309387e+01 1.7499999928603231e+01 0 0 -1 +4451 1 -5.1870067516252426e+01 8.6297869509265425e+01 3.4999999868291556e+00 0 0 0 +3832 1 -4.8503035414440447e+01 8.7420822197616758e+01 1.1149327561193789e-08 0 0 0 +3814 1 -5.0186551455947729e+01 8.6859345816216447e+01 1.7499999507521478e+00 0 0 0 +1111 1 -5.0747723416608096e+01 8.8516848948168558e+01 3.4999999978335117e+00 0 -1 0 +471 1 -5.0747723414250302e+01 8.8516848972486414e+01 1.7499999951330366e+01 0 -1 -1 +3833 1 -4.6258347303315730e+01 8.6324795220983503e+01 5.5636155664194549e-08 0 0 0 +3834 1 -4.7941863321957385e+01 8.5763318944986224e+01 1.7499999935680934e+00 0 0 0 +3835 1 -4.6819519413303219e+01 8.7982298442683629e+01 1.7500000097573101e+00 0 0 0 +3842 1 -8.9045575798573495e+01 4.6236618881818728e+01 3.4999999950448673e+00 0 0 0 +3845 1 -8.8549509910219484e+01 4.4637205615405392e+01 5.2499999878252979e+00 0 0 0 +3859 1 -8.7168422139471701e+01 4.6789002508268354e+01 5.2500000099665236e+00 0 0 0 +4482 1 -8.9045575807664662e+01 4.6236618783348796e+01 6.9999999947412466e+00 0 0 0 +3863 1 -8.4964193188829867e+01 4.5732440738017260e+01 5.2500000235903936e+00 0 0 0 +3891 1 -8.3289035925696808e+01 4.6301254676119399e+01 3.5000000290428570e+00 0 0 0 +3893 1 -8.2732307263997725e+01 4.4642528475105202e+01 5.2500000129581483e+00 0 0 0 +3894 1 -8.1612969848953654e+01 4.6864897671250553e+01 5.2500000208752056e+00 0 0 0 +4531 1 -8.3289035889287121e+01 4.6301254721569364e+01 7.0000000265162852e+00 0 0 0 +3935 1 -7.7684224234063137e+01 4.6329410008428219e+01 3.5000000117403944e+00 0 0 0 +3936 1 -7.9367521262682672e+01 4.5768039879517673e+01 5.2500000137185943e+00 0 0 0 +4575 1 -7.7684224146455449e+01 4.6329410043036837e+01 7.0000000074634317e+00 0 0 0 +3939 1 -7.7122769700475288e+01 4.4671839953992560e+01 5.2500000026202445e+00 0 0 0 +3988 1 -7.6000492559379992e+01 4.6890771194761257e+01 5.2499999969754292e+00 0 0 0 +3992 1 -7.3755787740202109e+01 4.5794757196606930e+01 5.2499999529492678e+00 0 0 0 +4042 1 -7.2072253783765973e+01 4.6356231024145032e+01 3.4999999543288127e+00 0 0 0 +4044 1 -7.1511091654810897e+01 4.4698732025359682e+01 5.2499999460270761e+00 0 0 0 +4682 1 -7.2072253735617849e+01 4.6356230979879037e+01 6.9999999599683429e+00 0 0 0 +4045 1 -7.0388741194520932e+01 4.6917711071189068e+01 5.2499999661459640e+00 0 0 0 +4096 1 -6.8144054940879272e+01 4.5821684803312500e+01 5.2500000025430191e+00 0 0 0 +4095 1 -6.6460539870069880e+01 4.6383161782142786e+01 3.5000000102509232e+00 0 0 0 +4099 1 -6.5899367474559682e+01 4.4725658422939127e+01 5.2500000008790826e+00 0 0 0 +4148 1 -6.4777023841813588e+01 4.6944638424746472e+01 5.2499999817808281e+00 0 0 0 +4735 1 -6.6460539836870907e+01 4.6383161740076261e+01 6.9999999903332046e+00 0 0 0 +4150 1 -6.4215851748167736e+01 4.5287135248516606e+01 3.5000000006410539e+00 0 0 0 +4152 1 -6.2532335785082282e+01 4.5848611980130883e+01 5.2499999822263161e+00 0 0 0 +4790 1 -6.4215851702119750e+01 4.5287135215945241e+01 6.9999999672513127e+00 0 0 0 +4203 1 -5.8604131665642029e+01 4.5314062467403396e+01 3.4999999930674193e+00 0 0 0 +4204 1 -6.0287647629238869e+01 4.4752585658281369e+01 5.2499999795095480e+00 0 0 0 +4205 1 -5.9165303674251895e+01 4.6971565521549998e+01 5.2499999703705331e+00 0 0 0 +4843 1 -5.8604131655371695e+01 4.5314062388027509e+01 6.9999999580964509e+00 0 0 0 +4256 1 -5.6920615533685776e+01 4.5875538969249824e+01 5.2499999752479454e+00 0 0 0 +4895 1 -5.5237099648806357e+01 4.6437015600096629e+01 6.9999999741241874e+00 0 0 0 +4259 1 -5.4675927494467402e+01 4.4779512343256918e+01 5.2499999771152286e+00 0 0 0 +4308 1 -5.3553583727084451e+01 4.6998491941572858e+01 5.2500000015909887e+00 0 0 0 +4950 1 -5.2992411613917604e+01 4.5340988725994002e+01 6.9999999990778239e+00 0 0 0 +4312 1 -5.1308895715297538e+01 4.5902465177581377e+01 5.2499999710500314e+00 0 0 0 +4364 1 -4.9064207800946825e+01 4.4806438281945482e+01 5.2499999624532583e+00 0 0 0 +5002 1 -4.9625379728939322e+01 4.6463941475273629e+01 6.9999999552034762e+00 0 0 0 +6394 1 -4.7941863307015382e+01 8.5763318944923938e+01 1.5750000016811940e+01 0 0 0 +4365 1 -4.7941863737674026e+01 4.7025417857964761e+01 5.2499999519554805e+00 0 0 0 +4414 1 -4.5697175668667434e+01 4.5929390858274708e+01 5.2499999705162255e+00 0 0 0 +5003 1 -4.7380691739543828e+01 4.5367914654231434e+01 6.9999999785354632e+00 0 0 0 +3857 1 -8.7753273118099386e+01 4.8514181862044950e+01 3.5000000175297803e+00 0 0 0 +3843 1 -8.9214901262212365e+01 4.7871264318880023e+01 5.2500000101345599e+00 0 0 0 +3855 1 -8.8549510040914697e+01 5.0171192063101657e+01 5.2500000284903905e+00 0 0 0 +4497 1 -8.7753273125848153e+01 4.8514181828058305e+01 6.9999999749345925e+00 0 0 0 +3860 1 -8.6132425970807304e+01 4.9073208987623602e+01 5.2500000141750052e+00 0 0 0 +3889 1 -8.3862483975813959e+01 4.7964551731945249e+01 5.2500000245418397e+00 0 0 0 +3888 1 -8.2176993023742796e+01 4.8522389683223167e+01 3.5000000069083441e+00 0 0 0 +3890 1 -8.2732307419446997e+01 5.0176515065060784e+01 5.2499999952733338e+00 0 0 0 +4528 1 -8.2176992978062586e+01 4.8522389748132895e+01 7.0000000425281073e+00 0 0 0 +3932 1 -8.0489602810275528e+01 4.9082357005532870e+01 5.2500000243529108e+00 0 0 0 +3937 1 -7.8245180277991167e+01 4.7986720861005246e+01 5.2500000090442027e+00 0 0 0 +3984 1 -7.7122769818139275e+01 5.0205826614122905e+01 5.2499999838173714e+00 0 0 0 +3986 1 -7.6561515868572116e+01 4.8548233721290011e+01 3.5000000124387571e+00 0 0 0 +3989 1 -7.4878099255179748e+01 4.9109768491770524e+01 5.2499999734592855e+00 0 0 0 +4626 1 -7.6561515815791608e+01 4.8548233717395917e+01 6.9999999889485158e+00 0 0 0 +4039 1 -7.0949917968211722e+01 4.8575216671720902e+01 3.4999999715565111e+00 0 0 0 +4040 1 -7.2633423874220085e+01 4.8013737664760498e+01 5.2499999529020744e+00 0 0 0 +4041 1 -7.1511091792509518e+01 5.0232718619849990e+01 5.2499999801033770e+00 0 0 0 +4679 1 -7.0949917958130612e+01 4.8575216626798237e+01 6.9999999656162997e+00 0 0 0 +4092 1 -6.9266400980095924e+01 4.9136691792010687e+01 5.2499999657850616e+00 0 0 0 +4097 1 -6.7021712112761307e+01 4.8040665054074069e+01 5.2499999917103439e+00 0 0 0 +4144 1 -6.5899367631381438e+01 5.0259644763062298e+01 5.2500000143011265e+00 0 0 0 +4147 1 -6.3093507730516464e+01 4.7506115153663465e+01 3.4999999993104058e+00 0 0 0 +4198 1 -6.1971163790570124e+01 4.9725094945108104e+01 3.4999999861241879e+00 0 0 0 +4149 1 -6.3654679778038336e+01 4.9163618198795639e+01 5.2499999901466508e+00 0 0 0 +4200 1 -6.1409991705346428e+01 4.8067591829798879e+01 5.2499999703175328e+00 0 0 0 +4787 1 -6.3093507664031016e+01 4.7506115167743658e+01 6.9999999734491754e+00 0 0 0 +4838 1 -6.1971163755906808e+01 4.9725094963630461e+01 6.9999999569196936e+00 0 0 0 +4201 1 -6.0287647762761097e+01 5.0286571687093144e+01 5.2499999718688546e+00 0 0 0 +4252 1 -5.8042959664725252e+01 4.9190545336098822e+01 5.2500000070044104e+00 0 0 0 +4251 1 -5.6359443615851767e+01 4.9752021886168471e+01 3.5000000044537201e+00 0 0 0 +4254 1 -5.7481787597769355e+01 4.7533042134729996e+01 3.5000000059727925e+00 0 0 0 +4257 1 -5.5798271640952684e+01 4.8094518693264945e+01 5.2500000012049695e+00 0 0 0 +4891 1 -5.6359443635559245e+01 4.9752021834604918e+01 7.0000000124399033e+00 0 0 0 +4894 1 -5.7481787581923548e+01 4.7533042119151929e+01 6.9999999872301357e+00 0 0 0 +4304 1 -5.4675927475585112e+01 5.0313498274544862e+01 5.2500000127364173e+00 0 0 0 +4309 1 -5.2431239627221323e+01 4.9217471556705291e+01 5.2499999800280852e+00 0 0 0 +4946 1 -5.4114755618486960e+01 4.8655995158717310e+01 6.9999999905330510e+00 0 0 0 +4947 1 -5.1870067681507891e+01 4.7559968360480639e+01 6.9999999906545023e+00 0 0 0 +4360 1 -5.0186551717369099e+01 4.8121444722191235e+01 5.2499999820603360e+00 0 0 0 +4361 1 -4.9064207586387326e+01 5.0340424274549534e+01 5.2499999575177991e+00 0 0 0 +4999 1 -4.8503035684922352e+01 4.8682921123249450e+01 6.9999999527687597e+00 0 0 0 +4998 1 -5.0747723583152691e+01 4.9778947903287715e+01 6.9999999767709316e+00 0 0 0 +4411 1 -4.6819519598394066e+01 4.9244397395204984e+01 5.2499999430011419e+00 0 0 0 +5053 1 -4.6258347659687367e+01 4.7586894142653179e+01 6.9999999507918478e+00 0 0 0 +6393 1 -4.6258347297524949e+01 8.6324795170780504e+01 1.4000000044783162e+01 0 0 0 +3851 1 -8.9214901326560096e+01 5.3405250714729526e+01 5.2500000290192412e+00 0 0 0 +3856 1 -8.7168422211622271e+01 5.2322988930290713e+01 5.2499999968680324e+00 0 0 0 +3854 1 -8.6710920600088954e+01 5.0717137376460734e+01 3.5000000237249695e+00 0 0 0 +3883 1 -8.5523443142999056e+01 5.2931040634102210e+01 3.4999999735506875e+00 0 0 0 +3885 1 -8.4964193311336061e+01 5.1266427214477815e+01 5.2499999793896297e+00 0 0 0 +3886 1 -8.3862484057079030e+01 5.3498538224363372e+01 5.2499999658176515e+00 0 0 0 +4494 1 -8.6710920576617895e+01 5.0717137344283557e+01 7.0000000008342456e+00 0 0 0 +4523 1 -8.5523443096346398e+01 5.2931040652782407e+01 6.9999999966659319e+00 0 0 0 +3928 1 -8.1612969949873388e+01 5.2398884238294990e+01 5.2499999681520135e+00 0 0 0 +3930 1 -8.1049142940527275e+01 5.0739784794877409e+01 3.4999999904309815e+00 0 0 0 +4570 1 -8.1049142904541227e+01 5.0739784861278721e+01 7.0000000247388092e+00 0 0 0 +3927 1 -7.9929643183513036e+01 5.2959657454325253e+01 3.4999999869367793e+00 0 0 0 +3933 1 -7.9367521373662754e+01 5.1302026544509175e+01 5.2500000023347368e+00 0 0 0 +3980 1 -7.8245180340121777e+01 5.3520707484441004e+01 5.2499999915371349e+00 0 0 0 +4567 1 -7.9929643169166539e+01 5.2959657490325675e+01 6.9999999965711668e+00 0 0 0 +3983 1 -7.5439348904071679e+01 5.0767296451308525e+01 3.5000000027698688e+00 0 0 0 +3985 1 -7.6000492592886104e+01 5.2424757833055509e+01 5.2500000051049369e+00 0 0 0 +4034 1 -7.4316920110099048e+01 5.2986233137398180e+01 3.4999999852361512e+00 0 0 0 +4623 1 -7.5439348848403071e+01 5.0767296462246968e+01 6.9999999814179850e+00 0 0 0 +4674 1 -7.4316920077514482e+01 5.2986233106979128e+01 6.9999999889749756e+00 0 0 0 +4036 1 -7.3755787829240205e+01 5.1328743806730010e+01 5.2499999900815233e+00 0 0 0 +4037 1 -7.2633423833648379e+01 5.3547724247957220e+01 5.2499999807603821e+00 0 0 0 +4087 1 -6.8705228060462659e+01 5.3013175106866278e+01 3.5000000125333877e+00 0 0 0 +4088 1 -7.0388741232872576e+01 5.2451697625572422e+01 5.2499999843358758e+00 0 0 0 +4090 1 -6.9827570616161040e+01 5.0794193883506736e+01 3.4999999818207805e+00 0 0 0 +4093 1 -6.8144055018144215e+01 5.1355671257476260e+01 5.2499999965316544e+00 0 0 0 +4727 1 -6.8705228026103654e+01 5.3013175068833654e+01 6.9999999961484392e+00 0 0 0 +4730 1 -6.9827570602523849e+01 5.0794193857975650e+01 6.9999999824517207e+00 0 0 0 +4140 1 -6.7021712065282216e+01 5.3574651405789631e+01 5.2500000007279812e+00 0 0 0 +4145 1 -6.4777023853739990e+01 5.2478624628394719e+01 5.2499999890915383e+00 0 0 0 +4196 1 -6.2532335864325063e+01 5.1382598083430466e+01 5.2499999671955058e+00 0 0 0 +4197 1 -6.1409991642782352e+01 5.3601577839554615e+01 5.2499999442011038e+00 0 0 0 +4195 1 -6.0848819662250946e+01 5.1944074792243306e+01 3.4999999851006445e+00 0 0 0 +4248 1 -5.9165303663427188e+01 5.2505551503454519e+01 5.2499999718815014e+00 0 0 0 +4835 1 -6.0848819641586218e+01 5.1944074776052013e+01 6.9999999610702677e+00 0 0 0 +4253 1 -5.6920615563155600e+01 5.1409524911349180e+01 5.2499999878388000e+00 0 0 0 +4300 1 -5.5798271568026038e+01 5.3628504619645874e+01 5.2500000194709369e+00 0 0 0 +4942 1 -5.5237099657099115e+01 5.1971001509559692e+01 7.0000000034557086e+00 0 0 0 +4305 1 -5.3553583644493735e+01 5.2532477852731319e+01 5.2500000032309009e+00 0 0 0 +4943 1 -5.2992411584296470e+01 5.0874974645061044e+01 6.9999999842652372e+00 0 0 0 +4994 1 -5.1870067554367289e+01 5.3093954236809182e+01 6.9999999762382767e+00 0 0 0 +4356 1 -5.1308895651250246e+01 5.1436451163120594e+01 5.2499999926406336e+00 0 0 0 +4357 1 -5.0186551544624038e+01 5.3655430590370372e+01 5.2499999913150512e+00 0 0 0 +4995 1 -4.9625379558920741e+01 5.1997927393846361e+01 6.9999999741651378e+00 0 0 0 +4408 1 -4.7941863473925103e+01 5.2559403776785253e+01 5.2499999553914920e+00 0 0 0 +4412 1 -4.5697175395800343e+01 5.1463376923978856e+01 5.2499999443883452e+00 0 0 0 +5047 1 -4.6258347388583715e+01 5.3120880056820361e+01 6.9999999385566412e+00 0 0 0 +5050 1 -4.7380691527833832e+01 5.0901900693773960e+01 6.9999999200270420e+00 0 0 0 +3852 1 -8.8549510008303287e+01 5.5705178377515836e+01 5.2500000137141472e+00 0 0 0 +3880 1 -8.4431590490080865e+01 5.5153207754880725e+01 3.4999999351315778e+00 0 0 0 +3881 1 -8.6132426039681732e+01 5.4607195397618611e+01 5.2499999733138658e+00 0 0 0 +4520 1 -8.4431590457519661e+01 5.5153207767708381e+01 6.9999999781212674e+00 0 0 0 +3924 1 -8.2732307421874140e+01 5.5710501472640665e+01 5.2499999269171527e+00 0 0 0 +3929 1 -8.0489602844280455e+01 5.4616343540629863e+01 5.2499999530541235e+00 0 0 0 +3978 1 -7.8805834466401961e+01 5.5178117128701906e+01 3.4999999777522008e+00 0 0 0 +4618 1 -7.8805834451657603e+01 5.5178117196371566e+01 7.0000000053114482e+00 0 0 0 +3981 1 -7.7122769736050103e+01 5.5739813159303580e+01 5.2500000031224117e+00 0 0 0 +4032 1 -7.4878099160527512e+01 5.4643755060883834e+01 5.2499999929139713e+00 0 0 0 +4031 1 -7.3194615778967844e+01 5.5205235302219826e+01 3.5000000052478417e+00 0 0 0 +4084 1 -7.1511091624461741e+01 5.5766705124982785e+01 5.2499999920375391e+00 0 0 0 +4671 1 -7.3194615770227173e+01 5.5205235273093407e+01 6.9999999880235437e+00 0 0 0 +4089 1 -6.9266400873139219e+01 5.4670678246495484e+01 5.2500000042001735e+00 0 0 0 +4139 1 -6.5338195803732987e+01 5.4136127796155030e+01 3.5000000189959817e+00 0 0 0 +4138 1 -6.7582883499086677e+01 5.5232154314110808e+01 3.5000000213462097e+00 0 0 0 +4141 1 -6.5899367441227611e+01 5.5793630987457696e+01 5.2500000027368765e+00 0 0 0 +4778 1 -6.7582883488300482e+01 5.5232154289223686e+01 7.0000000020865309e+00 0 0 0 +4779 1 -6.5338195733310982e+01 5.4136127792110408e+01 6.9999999760068636e+00 0 0 0 +4190 1 -6.4215851652985108e+01 5.6355107566165827e+01 3.5000000108905338e+00 0 0 0 +4192 1 -6.3654679649221002e+01 5.4697604303256824e+01 5.2499999765903222e+00 0 0 0 +4830 1 -6.4215851599097917e+01 5.6355107533969502e+01 6.9999999549660146e+00 0 0 0 +4243 1 -5.8604131516159974e+01 5.6382034337480633e+01 3.4999999843560108e+00 0 0 0 +4246 1 -5.9726475567847402e+01 5.4163054548700416e+01 3.4999999690880998e+00 0 0 0 +4244 1 -6.0287647577006084e+01 5.5820557629959708e+01 5.2499999540236919e+00 0 0 0 +4249 1 -5.8042959498427628e+01 5.4724531206914897e+01 5.2499999859107715e+00 0 0 0 +4883 1 -5.8604131559058537e+01 5.6382034298298549e+01 6.9999999832306452e+00 0 0 0 +4886 1 -5.9726475580666531e+01 5.4163054541722644e+01 6.9999999512776903e+00 0 0 0 +4301 1 -5.4675927381844197e+01 5.5847484179798371e+01 5.2500000311080264e+00 0 0 0 +4352 1 -5.2431239426007409e+01 5.4751457398623273e+01 5.2500000265631712e+00 0 0 0 +4939 1 -5.4114755524615177e+01 5.4189981045953232e+01 7.0000000340506592e+00 0 0 0 +4990 1 -5.2992411440106316e+01 5.6408960521632793e+01 7.0000000423477227e+00 0 0 0 +4404 1 -4.9064207439742944e+01 5.5874410089946743e+01 5.2499999988937089e+00 0 0 0 +4991 1 -5.0747723415018854e+01 5.5312933739181915e+01 6.9999999642899668e+00 0 0 0 +5046 1 -4.8503035493423276e+01 5.4216906987341169e+01 6.9999999551780911e+00 0 0 0 +4409 1 -4.6819519380891613e+01 5.4778383262281260e+01 5.2499999478892825e+00 0 0 0 +5043 1 -4.7380691332911290e+01 5.6435886454959281e+01 6.9999999642390067e+00 0 0 0 +3847 1 -8.9045575888773016e+01 5.7304591453521134e+01 3.5000000111039746e+00 0 0 0 +3848 1 -8.9214901426474526e+01 5.8939236753357754e+01 5.2500000086892804e+00 0 0 0 +3875 1 -8.7753273245163058e+01 5.9582154321330528e+01 3.4999999904839023e+00 0 0 0 +3877 1 -8.7168422191793709e+01 5.7856975154742649e+01 5.2499999707649367e+00 0 0 0 +4487 1 -8.9045575862615649e+01 5.7304591379992402e+01 6.9999999728158864e+00 0 0 0 +4515 1 -8.7753273239419713e+01 5.9582154276257221e+01 7.0000000223009105e+00 0 0 0 +3882 1 -8.4964193326404015e+01 5.6800413569641520e+01 5.2499999479694077e+00 0 0 0 +3920 1 -8.3862484035820984e+01 5.9032524449641919e+01 5.2499999621063269e+00 0 0 0 +3919 1 -8.2176993020105996e+01 5.9590362435805588e+01 3.4999999615180748e+00 0 0 0 +3922 1 -8.3289036035215659e+01 5.7369227548780707e+01 3.4999999556537080e+00 0 0 0 +3925 1 -8.1612969902390702e+01 5.7932870579781095e+01 5.2499999628319420e+00 0 0 0 +4559 1 -8.2176992977464465e+01 5.9590362490040320e+01 6.9999999882330197e+00 0 0 0 +4562 1 -8.3289036005326167e+01 5.7369227609915072e+01 6.9999999732170552e+00 0 0 0 +3975 1 -7.7684224151092579e+01 5.7397383122463637e+01 3.4999999866738682e+00 0 0 0 +3976 1 -7.9367521290037018e+01 5.6836012977260140e+01 5.2499999725025468e+00 0 0 0 +3977 1 -7.8245180142232044e+01 5.9054693817209014e+01 5.2499999771310932e+00 0 0 0 +4615 1 -7.7684224122214729e+01 5.7397383158669015e+01 6.9999999973732843e+00 0 0 0 +4026 1 -7.6561515634675331e+01 5.9616206673999301e+01 3.5000000054724776e+00 0 0 0 +4028 1 -7.6000492398693851e+01 5.7958744294057290e+01 5.2499999937366475e+00 0 0 0 +4666 1 -7.6561515612298777e+01 5.9616206693187863e+01 6.9999999898709859e+00 0 0 0 +4033 1 -7.3755787643729946e+01 5.6862730331838833e+01 5.2499999878782750e+00 0 0 0 +4079 1 -7.0949917615713474e+01 5.9643189601864677e+01 3.5000000018433517e+00 0 0 0 +4080 1 -7.2633423588506417e+01 5.9081710686259662e+01 5.2499999854755783e+00 0 0 0 +4082 1 -7.2072253590329296e+01 5.7424204094496538e+01 3.4999999935357002e+00 0 0 0 +4719 1 -7.0949917630924560e+01 5.9643189558331905e+01 7.0000000228862955e+00 0 0 0 +4722 1 -7.2072253580722034e+01 5.7424204034427561e+01 7.0000000044075934e+00 0 0 0 +4085 1 -7.0388740958447045e+01 5.7985684025051043e+01 5.2500000194425178e+00 0 0 0 +4136 1 -6.8144054795206031e+01 5.6889657615786689e+01 5.2500000278215246e+00 0 0 0 +4135 1 -6.6460539654128667e+01 5.7451134385407862e+01 3.5000000459794558e+00 0 0 0 +4137 1 -6.7021711775104791e+01 5.9108637692018526e+01 5.2500000192008036e+00 0 0 0 +4188 1 -6.4777023591416651e+01 5.8012610786019394e+01 5.2499999766485601e+00 0 0 0 +4775 1 -6.6460539627315356e+01 5.7451134328266669e+01 7.0000000004934693e+00 0 0 0 +4187 1 -6.3093507437521836e+01 5.8574087301209673e+01 3.4999999869256238e+00 0 0 0 +4193 1 -6.2532335636759917e+01 5.6916584094439372e+01 5.2499999591785125e+00 0 0 0 +4240 1 -6.1409991398008565e+01 5.9135563806630621e+01 5.2499999637820176e+00 0 0 0 +4827 1 -6.3093507379319824e+01 5.8574087310423700e+01 6.9999999498351810e+00 0 0 0 +4245 1 -5.9165303449263483e+01 5.8039537403094137e+01 5.2499999704293199e+00 0 0 0 +4294 1 -5.7481787329632908e+01 5.8601013958352269e+01 3.4999999950957590e+00 0 0 0 +4296 1 -5.6920615373664141e+01 5.6943510823068770e+01 5.2500000009867618e+00 0 0 0 +4297 1 -5.5798271375356208e+01 5.9162490483444508e+01 5.2500000431676810e+00 0 0 0 +4934 1 -5.7481787353159113e+01 5.8601013950873579e+01 7.0000000294863254e+00 0 0 0 +4348 1 -5.3553583497755845e+01 5.8066463693160209e+01 5.2500000620320124e+00 0 0 0 +4987 1 -5.1870067428224303e+01 5.8627940033716847e+01 7.0000000333693402e+00 0 0 0 +4353 1 -5.1308895483434490e+01 5.6970436928989422e+01 5.2500000190796987e+00 0 0 0 +4400 1 -5.0186551428310231e+01 5.9189416351233078e+01 5.2500000105044826e+00 0 0 0 +5039 1 -4.8503035367050501e+01 5.9750892702200353e+01 6.9999999648707094e+00 0 0 0 +5042 1 -4.9625379398665764e+01 5.7531913147192014e+01 6.9999999766517247e+00 0 0 0 +4405 1 -4.7941863370296460e+01 5.8093389536473616e+01 5.2499999752991631e+00 0 0 0 +4449 1 -4.5697175232491645e+01 5.6997362709603806e+01 5.2499999562409361e+00 0 0 0 +5088 1 -4.6258347296642597e+01 5.8654865834045651e+01 6.9999999601284602e+00 0 0 0 +3873 1 -8.8549510122382458e+01 6.1239164337894621e+01 5.2499999980897822e+00 0 0 0 +3872 1 -8.6710920701106417e+01 6.1785109642254191e+01 3.5000000140642329e+00 0 0 0 +3878 1 -8.6132426045861948e+01 6.0141181492011711e+01 5.2499999592155007e+00 0 0 0 +3916 1 -8.4964193319290871e+01 6.2334399544655348e+01 5.2499999877006323e+00 0 0 0 +4512 1 -8.6710920624669143e+01 6.1785109652425348e+01 7.0000000036817074e+00 0 0 0 +3921 1 -8.2732307369507353e+01 6.1244487624791645e+01 5.2499999748601773e+00 0 0 0 +3970 1 -8.1049142836778287e+01 6.1807757384550683e+01 3.4999999864654696e+00 0 0 0 +4610 1 -8.1049142781889969e+01 6.1807757447118462e+01 6.9999999844102367e+00 0 0 0 +3972 1 -8.0489602712285205e+01 6.0150329780196834e+01 5.2499999723436046e+00 0 0 0 +3973 1 -7.9367521171507889e+01 6.2369999144249569e+01 5.2499999617181077e+00 0 0 0 +4023 1 -7.5439348564708339e+01 6.1835269264551641e+01 3.4999999890135882e+00 0 0 0 +4024 1 -7.7122769543597443e+01 6.1273799436895978e+01 5.2499999472308048e+00 0 0 0 +4029 1 -7.4878098942766258e+01 6.0177741448850419e+01 5.2499999808984059e+00 0 0 0 +4663 1 -7.5439348534590337e+01 6.1835269298754952e+01 6.9999999725387818e+00 0 0 0 +4076 1 -7.3755787432813449e+01 6.2396716619402781e+01 5.2499999918324018e+00 0 0 0 +4081 1 -7.1511091387588905e+01 6.1300691497926621e+01 5.2500000136330378e+00 0 0 0 +4130 1 -6.9827570174169281e+01 6.1862166673040733e+01 3.5000000084670426e+00 0 0 0 +4132 1 -6.9266400577882962e+01 6.0204664606148690e+01 5.2500000196688905e+00 0 0 0 +4133 1 -6.8144054547085929e+01 6.2423643936692351e+01 5.2500000440925181e+00 0 0 0 +4770 1 -6.9827570157691511e+01 6.1862166627999954e+01 7.0000000436495746e+00 0 0 0 +4184 1 -6.5899367193217600e+01 6.1327617241472225e+01 5.2500000281438810e+00 0 0 0 +4238 1 -6.1971163420302034e+01 6.0793066994127273e+01 3.4999999917048776e+00 0 0 0 +4189 1 -6.3654679399940193e+01 6.0231590413108236e+01 5.2499999961154691e+00 0 0 0 +4236 1 -6.2532335482519336e+01 6.2450570179395982e+01 5.2499999637295840e+00 0 0 0 +4878 1 -6.1971163396249146e+01 6.0793066987800842e+01 6.9999999665125614e+00 0 0 0 +4235 1 -6.0848819332063606e+01 6.3012046742229586e+01 3.4999999916546369e+00 0 0 0 +4241 1 -6.0287647412240673e+01 6.1354543623467571e+01 5.2499999789525260e+00 0 0 0 +4292 1 -5.8042959362408020e+01 6.0258517174453736e+01 5.2500000079816775e+00 0 0 0 +4875 1 -6.0848819301539365e+01 6.3012046770883202e+01 6.9999999756795361e+00 0 0 0 +4291 1 -5.6359443325920218e+01 6.0819993637366117e+01 3.5000000048083182e+00 0 0 0 +4293 1 -5.6920615260291861e+01 6.2477496688498107e+01 5.2500000330795968e+00 0 0 0 +4342 1 -5.5237099366470709e+01 6.3038973280906475e+01 3.5000000242199318e+00 0 0 0 +4931 1 -5.6359443334378653e+01 6.0819993625253176e+01 7.0000000624824663e+00 0 0 0 +4982 1 -5.5237099367445275e+01 6.3038973268907860e+01 7.0000000668440290e+00 0 0 0 +4344 1 -5.4675927205889593e+01 6.1381469992123087e+01 5.2500000495627779e+00 0 0 0 +4349 1 -5.2431239357927574e+01 6.0285443212611568e+01 5.2500000293356850e+00 0 0 0 +4396 1 -5.1308895431873829e+01 6.2504422718559141e+01 5.2500000235622117e+00 0 0 0 +4401 1 -4.9064207351987953e+01 6.1408395796677418e+01 5.2499999871204208e+00 0 0 0 +5035 1 -4.9625379374350757e+01 6.3065898890260506e+01 6.9999999873091232e+00 0 0 0 +5038 1 -5.0747723290688768e+01 6.0846919481241251e+01 7.0000000098134239e+00 0 0 0 +4446 1 -4.6819519309093998e+01 6.0312368968095043e+01 5.2499999601970346e+00 0 0 0 +4447 1 -4.5697175232821515e+01 6.2531348452257333e+01 5.2499999444520293e+00 0 0 0 +5085 1 -4.7380691318056378e+01 6.1969872194993208e+01 6.9999999303841998e+00 0 0 0 +3869 1 -8.9214901391907048e+01 6.4473222422739411e+01 5.2500000373022662e+00 0 0 0 +3874 1 -8.7168422266428792e+01 6.3390960998341434e+01 5.2500000250975614e+00 0 0 0 +3914 1 -8.5523443184247057e+01 6.3999012698163583e+01 3.5000000247439416e+00 0 0 0 +3911 1 -8.4431590551209339e+01 6.6221179568582883e+01 3.5000000000459499e+00 0 0 0 +3912 1 -8.6132426163052457e+01 6.5675167181764209e+01 5.2500000327349436e+00 0 0 0 +3917 1 -8.3862484043869159e+01 6.4566510335120711e+01 5.2499999872612149e+00 0 0 0 +4554 1 -8.5523443113158422e+01 6.3999012724903245e+01 7.0000000171104011e+00 0 0 0 +4551 1 -8.4431590452073465e+01 6.6221179631566713e+01 6.9999999962179968e+00 0 0 0 +3968 1 -8.1612969833831556e+01 6.3466856620273653e+01 5.2499999586269173e+00 0 0 0 +3969 1 -8.0489602715755495e+01 6.5684315763161990e+01 5.2499999246099449e+00 0 0 0 +3967 1 -7.9929643023954881e+01 6.4027629861177886e+01 3.4999999835083013e+00 0 0 0 +4020 1 -7.8245180101129478e+01 6.4588679936290262e+01 5.2499999331969809e+00 0 0 0 +4607 1 -7.9929642970270734e+01 6.4027629926446494e+01 6.9999999481544473e+00 0 0 0 +4018 1 -7.8805834333854591e+01 6.6246089397269927e+01 3.4999999480091821e+00 0 0 0 +4658 1 -7.8805834285376292e+01 6.6246089468523707e+01 6.9999999305275953e+00 0 0 0 +4025 1 -7.6000492271189316e+01 6.3492730489788677e+01 5.2499999668091206e+00 0 0 0 +4072 1 -7.4878098886220513e+01 6.5711727581468566e+01 5.2499999430740933e+00 0 0 0 +4074 1 -7.4316919744982329e+01 6.4054205814000611e+01 3.4999999752474280e+00 0 0 0 +4714 1 -7.4316919759245479e+01 6.4054205763741550e+01 6.9999999960139192e+00 0 0 0 +4077 1 -7.2633423449411339e+01 6.4615696928174884e+01 5.2499999894647429e+00 0 0 0 +4071 1 -7.3194615497932801e+01 6.6273207849996027e+01 3.5000000054387099e+00 0 0 0 +4711 1 -7.3194615517112581e+01 6.6273207832021043e+01 6.9999999955383432e+00 0 0 0 +4127 1 -6.8705227636606608e+01 6.4081147757035382e+01 3.5000000254735819e+00 0 0 0 +4128 1 -7.0388740780264158e+01 6.3519670368599606e+01 5.2500000029301281e+00 0 0 0 +4129 1 -6.9266400497768828e+01 6.5738650878944270e+01 5.2500000458004212e+00 0 0 0 +4767 1 -6.8705227580205346e+01 6.4081147723277240e+01 7.0000000357469343e+00 0 0 0 +4179 1 -6.5338195451608101e+01 6.5204100230701414e+01 3.4999999963314643e+00 0 0 0 +4180 1 -6.7021711652399304e+01 6.4642623961437764e+01 5.2500000255976289e+00 0 0 0 +4185 1 -6.4777023435735842e+01 6.3546596970547292e+01 5.2500000067148083e+00 0 0 0 +4178 1 -6.7582883178705885e+01 6.6300126912586308e+01 3.5000000118124723e+00 0 0 0 +4818 1 -6.7582883165651069e+01 6.6300126859613940e+01 7.0000000527826636e+00 0 0 0 +4819 1 -6.5338195382512325e+01 6.5204100199744104e+01 7.0000000093955750e+00 0 0 0 +4232 1 -6.3654679351606774e+01 6.5765576592190769e+01 5.2499999930351544e+00 0 0 0 +4237 1 -6.1409991356918617e+01 6.4669549897284639e+01 5.2499999860976061e+00 0 0 0 +4286 1 -5.9726475332798238e+01 6.5231026501154801e+01 3.5000000015139761e+00 0 0 0 +4288 1 -5.9165303369908401e+01 6.3573523376476807e+01 5.2500000131474511e+00 0 0 0 +4289 1 -5.8042959308678370e+01 6.5792503095582305e+01 5.2500000259787800e+00 0 0 0 +4926 1 -5.9726475353340916e+01 6.5231026501720166e+01 6.9999999922716123e+00 0 0 0 +4340 1 -5.5798271323502952e+01 6.4696476410571620e+01 5.2500000414623997e+00 0 0 0 +4339 1 -5.4114755305954510e+01 6.5257952806108250e+01 3.5000000181969768e+00 0 0 0 +4345 1 -5.3553583412281441e+01 6.3600449536166948e+01 5.2500000536765690e+00 0 0 0 +4392 1 -5.2431239317686291e+01 6.5819429049517709e+01 5.2500000371918842e+00 0 0 0 +4979 1 -5.4114755334869706e+01 6.5257952782037947e+01 7.0000000682082320e+00 0 0 0 +5034 1 -5.1870067381466662e+01 6.4161925842426797e+01 7.0000000182418525e+00 0 0 0 +4397 1 -5.0186551430475788e+01 6.4723402125894708e+01 5.2499999911263302e+00 0 0 0 +5081 1 -4.8503035444727089e+01 6.5284878471134633e+01 6.9999999579670646e+00 0 0 0 +5031 1 -5.0747723381258240e+01 6.6380905348645285e+01 7.0000000064222316e+00 0 0 0 +4443 1 -4.7941863359101795e+01 6.3627375259174485e+01 5.2499999482303510e+00 0 0 0 +4444 1 -4.6819519380177454e+01 6.5846354714197304e+01 5.2499999411533276e+00 0 0 0 +5082 1 -4.6258347319118634e+01 6.4188851506253030e+01 6.9999999306999587e+00 0 0 0 +3865 1 -8.9045575987792787e+01 6.8372562694977816e+01 3.5000000134632523e+00 0 0 0 +3870 1 -8.8549510193299241e+01 6.6773149882762880e+01 5.2500000488873981e+00 0 0 0 +3908 1 -8.7168422398958654e+01 6.8924946486196333e+01 5.2500000198068619e+00 0 0 0 +4505 1 -8.9045575981697354e+01 6.8372562632323095e+01 7.0000000397746458e+00 0 0 0 +3913 1 -8.4964193426545862e+01 6.7868385145836584e+01 5.2499999872711305e+00 0 0 0 +3962 1 -8.3289036160212589e+01 6.8437199196629962e+01 3.4999999754907059e+00 0 0 0 +3964 1 -8.2732307413885039e+01 6.6778473402427920e+01 5.2499999356629896e+00 0 0 0 +3965 1 -8.1612969982656026e+01 6.9000842347612334e+01 5.2499999133187458e+00 0 0 0 +4602 1 -8.3289036044779607e+01 6.8437199299228070e+01 6.9999999385017437e+00 0 0 0 +4015 1 -7.7684224096473969e+01 6.8465355277105886e+01 3.4999999626164877e+00 0 0 0 +4016 1 -7.9367521246008820e+01 6.7903985057989416e+01 5.2499999004731421e+00 0 0 0 +4655 1 -7.7684224099222391e+01 6.8465355301663834e+01 6.9999999154472965e+00 0 0 0 +4021 1 -7.7122769564770181e+01 6.6807785476053510e+01 5.2499999397407606e+00 0 0 0 +4068 1 -7.6000492396238258e+01 6.9026716502027341e+01 5.2499999487648221e+00 0 0 0 +4073 1 -7.3755787510673727e+01 6.7930702749755511e+01 5.2499999977295806e+00 0 0 0 +4122 1 -7.2072253467881367e+01 6.8492176587728139e+01 3.5000000443051156e+00 0 0 0 +4124 1 -7.1511091343877538e+01 6.6834677701773757e+01 5.2500000243549696e+00 0 0 0 +4762 1 -7.2072253487262088e+01 6.8492176502407673e+01 7.0000000379180669e+00 0 0 0 +4125 1 -7.0388740874689148e+01 6.9053656541106875e+01 5.2500000558490179e+00 0 0 0 +4176 1 -6.8144054581089065e+01 6.7957630187369290e+01 5.2500000385683609e+00 0 0 0 +4175 1 -6.6460539531145685e+01 6.8519106901551268e+01 3.5000000141898338e+00 0 0 0 +4181 1 -6.5899367183496707e+01 6.6861603479026940e+01 5.2500000117953372e+00 0 0 0 +4228 1 -6.4777023543154797e+01 6.9080583238491286e+01 5.2499999844710343e+00 0 0 0 +4815 1 -6.6460539506883407e+01 6.8519106848479367e+01 7.0000000197492680e+00 0 0 0 +4230 1 -6.4215851474599717e+01 6.7423079935309289e+01 3.5000000030250114e+00 0 0 0 +4233 1 -6.2532335543796599e+01 6.7984556333664898e+01 5.2499999865800984e+00 0 0 0 +4870 1 -6.4215851424744145e+01 6.7423079912391984e+01 6.9999999788313936e+00 0 0 0 +4283 1 -5.8604131429670446e+01 6.7450006274080792e+01 3.5000000173584596e+00 0 0 0 +4284 1 -6.0287647440731845e+01 6.6888529665238465e+01 5.2499999798318857e+00 0 0 0 +4285 1 -5.9165303476082904e+01 6.9107509455512044e+01 5.2500000018321806e+00 0 0 0 +4923 1 -5.8604131484940439e+01 6.7450006297301101e+01 7.0000000021888535e+00 0 0 0 +4336 1 -5.6920615332056286e+01 6.8011482725457640e+01 5.2500000296027709e+00 0 0 0 +4341 1 -5.4675927264843743e+01 6.6915455951380878e+01 5.2500000528618820e+00 0 0 0 +4388 1 -5.3553583495675994e+01 6.9134435505891958e+01 5.2500000655232828e+00 0 0 0 +4390 1 -5.2992411382457718e+01 6.7476932233291606e+01 3.5000000089505559e+00 0 0 0 +5030 1 -5.2992411404766500e+01 6.7476932273957758e+01 7.0000000830917273e+00 0 0 0 +4393 1 -5.1308895491313798e+01 6.8038408603478217e+01 5.2500000280295520e+00 0 0 0 +4439 1 -4.9064207448880403e+01 6.6942381618948929e+01 5.2499999946151341e+00 0 0 0 +5077 1 -4.9625379464469695e+01 6.8599884752592516e+01 7.0000000075171815e+00 0 0 0 +4440 1 -4.7941863431283224e+01 6.9161361067327732e+01 5.2499999885751825e+00 0 0 0 +4471 1 -4.5697175283556426e+01 6.8065334149428494e+01 5.2499999501689825e+00 0 0 0 +5078 1 -4.7380691380097218e+01 6.7503857931088092e+01 6.9999999521113336e+00 0 0 0 +3866 1 -8.9214901395320609e+01 7.0007207806049493e+01 5.2500000456187674e+00 0 0 0 +3904 1 -8.8549510361499301e+01 7.2307135226770114e+01 5.2500000152293378e+00 0 0 0 +3906 1 -8.7753273533350139e+01 7.0650125318500130e+01 3.5000000061989160e+00 0 0 0 +4546 1 -8.7753273455575723e+01 7.0650125315903082e+01 6.9999999945851457e+00 0 0 0 +3909 1 -8.6132426358500396e+01 7.1209152548683022e+01 5.2499999768898791e+00 0 0 0 +3960 1 -8.3862484234618393e+01 7.0100495832070351e+01 5.2499999327985796e+00 0 0 0 +3959 1 -8.2176993241896369e+01 7.0658333911977394e+01 3.4999999285653924e+00 0 0 0 +3961 1 -8.2732307710599926e+01 7.2312458867856975e+01 5.2499998966010466e+00 0 0 0 +4599 1 -8.2176993134182439e+01 7.0658334012369664e+01 6.9999999144992628e+00 0 0 0 +4012 1 -8.0489602940314114e+01 7.1218301425135806e+01 5.2499998806163974e+00 0 0 0 +4017 1 -7.8245180254256212e+01 7.0122665795719087e+01 5.2499999062930840e+00 0 0 0 +4066 1 -7.6561515754267504e+01 7.0684178756888613e+01 3.5000000198921026e+00 0 0 0 +4064 1 -7.7122769873999559e+01 7.2341771362431331e+01 5.2499999462743947e+00 0 0 0 +4069 1 -7.4878099165071788e+01 7.1245713609581486e+01 5.2500000065367178e+00 0 0 0 +4706 1 -7.6561515826964381e+01 7.0684178753744519e+01 6.9999999305950418e+00 0 0 0 +4119 1 -7.0949917705950810e+01 7.0711162028551357e+01 3.5000000399941102e+00 0 0 0 +4120 1 -7.2633423653930876e+01 7.0149683033447147e+01 5.2500000401815230e+00 0 0 0 +4121 1 -7.1511091656922062e+01 7.2368663847709968e+01 5.2500000761349011e+00 0 0 0 +4759 1 -7.0949917746446104e+01 7.0711161999374397e+01 7.0000000671168516e+00 0 0 0 +4172 1 -6.9266400692319493e+01 7.1272637116879039e+01 5.2500000588859104e+00 0 0 0 +4177 1 -6.7021711787704589e+01 7.0176610243343347e+01 5.2500000383846368e+00 0 0 0 +4224 1 -6.5899367413425338e+01 7.2395589769961177e+01 5.2500000098491979e+00 0 0 0 +4227 1 -6.3093507437505131e+01 6.9642059668331854e+01 3.4999999779343001e+00 0 0 0 +4229 1 -6.3654679553593127e+01 7.1299562849960424e+01 5.2499999925074441e+00 0 0 0 +4278 1 -6.1971163609281838e+01 7.1861039318262513e+01 3.4999999980027674e+00 0 0 0 +4280 1 -6.1409991492082035e+01 7.0203536061704810e+01 5.2499999762738030e+00 0 0 0 +4867 1 -6.3093507440457770e+01 6.9642059667724212e+01 6.9999999784721485e+00 0 0 0 +4918 1 -6.1971163636632127e+01 7.1861039354563147e+01 6.9999999650548839e+00 0 0 0 +4281 1 -6.0287647676157874e+01 7.2422515859390614e+01 5.2499999902925971e+00 0 0 0 +4332 1 -5.8042959516894257e+01 7.1326489227633800e+01 5.2500000136603768e+00 0 0 0 +4331 1 -5.6359443445002483e+01 7.1887965605661947e+01 3.4999999898109930e+00 0 0 0 +4334 1 -5.7481787356364251e+01 6.9668985919033972e+01 3.5000000069380834e+00 0 0 0 +4337 1 -5.5798271437208889e+01 7.0230462423862406e+01 5.2500000414474446e+00 0 0 0 +4971 1 -5.6359443525289159e+01 7.1887965641973622e+01 7.0000000477501745e+00 0 0 0 +4974 1 -5.7481787433334048e+01 6.9668985959892225e+01 7.0000000326548610e+00 0 0 0 +4384 1 -5.4675927347754936e+01 7.2449441930723523e+01 5.2500000310960848e+00 0 0 0 +4387 1 -5.1870067474836922e+01 6.9695911773668001e+01 3.5000000183153128e+00 0 0 0 +4389 1 -5.2431239427641003e+01 7.1353415017724515e+01 5.2500000499646742e+00 0 0 0 +5027 1 -5.1870067502059172e+01 6.9695911808292919e+01 7.0000000583746536e+00 0 0 0 +4433 1 -5.0747723404703557e+01 7.1914891263203799e+01 3.4999999940125934e+00 0 0 0 +4435 1 -5.0186551501211532e+01 7.0257388024902923e+01 5.2500000211379270e+00 0 0 0 +4436 1 -4.9064207409119852e+01 7.2476367507212387e+01 5.2499999948254725e+00 0 0 0 +5073 1 -5.0747723381542819e+01 7.1914891259517432e+01 7.0000000615762357e+00 0 0 0 +5074 1 -4.8503035439133711e+01 7.0818864292947950e+01 6.9999999979027061e+00 0 0 0 +4468 1 -4.6819519351867150e+01 7.1380340513661153e+01 5.2499999613722208e+00 0 0 0 +5110 1 -4.6258347358858714e+01 6.9722837285365202e+01 6.9999999516486833e+00 0 0 0 +3900 1 -8.9214901545489397e+01 7.5541193084212622e+01 5.2500000767306334e+00 0 0 0 +3905 1 -8.7168422588017407e+01 7.4458931712135055e+01 5.2500000085287937e+00 0 0 0 +3903 1 -8.6710921047727382e+01 7.2853080481558763e+01 3.4999999721977297e+00 0 0 0 +3954 1 -8.5523443728659998e+01 7.5066983453333719e+01 3.4999999587961050e+00 0 0 0 +3956 1 -8.4964193731652230e+01 7.3402370451499337e+01 5.2499999376339144e+00 0 0 0 +3957 1 -8.3862484695356670e+01 7.5634481166703594e+01 5.2499999163914319e+00 0 0 0 +4543 1 -8.6710920906377325e+01 7.2853080524877072e+01 7.0000000174861121e+00 0 0 0 +4594 1 -8.5523443609538162e+01 7.5066983469916622e+01 6.9999999956830292e+00 0 0 0 +4010 1 -8.1049143205314323e+01 7.2875728807698721e+01 3.4999999364869523e+00 0 0 0 +4008 1 -8.1612970391700543e+01 7.4534827800824957e+01 5.2499998846698714e+00 0 0 0 +4650 1 -8.1049143177807210e+01 7.2875728862235164e+01 6.9999998972728994e+00 0 0 0 +4007 1 -7.9929643576355176e+01 7.5095601256198378e+01 3.4999999914499202e+00 0 0 0 +4013 1 -7.9367521629347536e+01 7.3437970756809577e+01 5.2499999015417345e+00 0 0 0 +4060 1 -7.8245180770889135e+01 7.5656651530249789e+01 5.2499999417451839e+00 0 0 0 +4647 1 -7.9929643636491775e+01 7.5095601309632414e+01 6.9999998769289382e+00 0 0 0 +4063 1 -7.5439348898489385e+01 7.2903241321425426e+01 3.5000000619633020e+00 0 0 0 +4114 1 -7.4316920306133881e+01 7.5122177815038512e+01 3.5000000536604521e+00 0 0 0 +4065 1 -7.6000492833823628e+01 7.4560702395012910e+01 5.2500000084812868e+00 0 0 0 +4703 1 -7.5439349005847987e+01 7.2903241307420473e+01 6.9999999627409606e+00 0 0 0 +4754 1 -7.4316920410203764e+01 7.5122177782993958e+01 7.0000000103803046e+00 0 0 0 +4116 1 -7.3755787872968085e+01 7.3464688742891880e+01 5.2500000479623363e+00 0 0 0 +4117 1 -7.2633424062934935e+01 7.5683669027038007e+01 5.2500000561350175e+00 0 0 0 +4167 1 -6.8705228091755714e+01 7.5149120152755785e+01 3.5000000026774591e+00 0 0 0 +4170 1 -6.9827570474908228e+01 7.2930139089543559e+01 3.5000000556005433e+00 0 0 0 +4168 1 -7.0388741246914122e+01 7.4587642667071705e+01 5.2500000388783858e+00 0 0 0 +4173 1 -6.8144054864708053e+01 7.3491616417353981e+01 5.2500000588518567e+00 0 0 0 +4807 1 -6.8705228072273044e+01 7.5149120130903839e+01 7.0000000457489868e+00 0 0 0 +4810 1 -6.9827570478728333e+01 7.2930139052747847e+01 7.0000000571776582e+00 0 0 0 +4220 1 -6.7021712117217760e+01 7.5710596452729717e+01 5.2500000152444395e+00 0 0 0 +4225 1 -6.4777023803791892e+01 7.4614569505997522e+01 5.2500000013474057e+00 0 0 0 +4276 1 -6.2532335795725729e+01 7.3518542610194558e+01 5.2499999771038626e+00 0 0 0 +4277 1 -6.1409991787438948e+01 7.5737522295743048e+01 5.2499999796461738e+00 0 0 0 +4275 1 -6.0848819644774530e+01 7.4080019087680100e+01 3.4999999997974522e+00 0 0 0 +4328 1 -5.9165303707376829e+01 7.4641495589809196e+01 5.2499999840282694e+00 0 0 0 +4915 1 -6.0848819694185686e+01 7.4080019087893135e+01 6.9999999651359195e+00 0 0 0 +4333 1 -5.6920615488583842e+01 7.3545468743249302e+01 5.2500000141683483e+00 0 0 0 +4380 1 -5.5798271580815680e+01 7.5764448416029026e+01 5.2500000266302802e+00 0 0 0 +4382 1 -5.5237099545002188e+01 7.4106945255800895e+01 3.4999999845557239e+00 0 0 0 +5022 1 -5.5237099588076184e+01 7.4106945283255143e+01 7.0000000692796043e+00 0 0 0 +4385 1 -5.3553583569266877e+01 7.4668421473472478e+01 5.2500000355878234e+00 0 0 0 +4430 1 -4.9625379431459280e+01 7.4133870699054341e+01 3.4999999942558713e+00 0 0 0 +4431 1 -5.1308895500990836e+01 7.3572394562075914e+01 5.2500000352256304e+00 0 0 0 +4432 1 -5.0186551469047338e+01 7.5791373978849862e+01 5.2500000157063100e+00 0 0 0 +5070 1 -4.9625379413176965e+01 7.4133870693367939e+01 7.0000000151679762e+00 0 0 0 +4465 1 -4.7941863368841709e+01 7.4695346988696130e+01 5.2499999732832912e+00 0 0 0 +4469 1 -4.5697175209847437e+01 7.3599320012379735e+01 5.2499999437906695e+00 0 0 0 +3901 1 -8.8549510705823906e+01 7.7841120593311203e+01 5.2500000569860967e+00 0 0 0 +3951 1 -8.4431591256620678e+01 7.7289150265888409e+01 3.4999999539747582e+00 0 0 0 +3952 1 -8.6132426772368433e+01 7.6743137856886889e+01 5.2499999858729876e+00 0 0 0 +4591 1 -8.4431591185253893e+01 7.7289150330868210e+01 6.9999999230916696e+00 0 0 0 +4004 1 -8.2732308278605871e+01 7.7846444209529949e+01 5.2499998981611578e+00 0 0 0 +4058 1 -7.8805835071985015e+01 7.7314060817225069e+01 3.5000000140233976e+00 0 0 0 +4009 1 -8.0489603495439468e+01 7.6752286940902550e+01 5.2499999115450491e+00 0 0 0 +4698 1 -7.8805835159413022e+01 7.7314060861082140e+01 6.9999999121954115e+00 0 0 0 +4061 1 -7.7122770381416302e+01 7.7875757086602647e+01 5.2500000036482843e+00 0 0 0 +4112 1 -7.4878099599563129e+01 7.6779699471142649e+01 5.2500000044466839e+00 0 0 0 +4111 1 -7.3194616219070426e+01 7.7341179826952526e+01 3.5000000391528117e+00 0 0 0 +4164 1 -7.1511092076523624e+01 7.7902649756217357e+01 5.2500000260064841e+00 0 0 0 +4751 1 -7.3194616283434726e+01 7.7341179801466495e+01 7.0000000067659975e+00 0 0 0 +4169 1 -6.9266401107310372e+01 7.6806623188713147e+01 5.2500000217279039e+00 0 0 0 +4218 1 -6.7582883769157306e+01 7.7368099283688792e+01 3.4999999900311729e+00 0 0 0 +4219 1 -6.5338195902647570e+01 7.6272072748523300e+01 3.4999999853964510e+00 0 0 0 +4221 1 -6.5899367758531383e+01 7.7929575934222598e+01 5.2500000100748307e+00 0 0 0 +4859 1 -6.5338195912190116e+01 7.6272072733715376e+01 6.9999999985701669e+00 0 0 0 +4858 1 -6.7582883766799668e+01 7.7368099278444959e+01 7.0000000377812608e+00 0 0 0 +4270 1 -6.4215852001311418e+01 7.8491052426292114e+01 3.5000000010841874e+00 0 0 0 +4272 1 -6.3654679848039656e+01 7.6833549098268080e+01 5.2499999790157057e+00 0 0 0 +4910 1 -6.4215852016588485e+01 7.8491052422170213e+01 6.9999999859801898e+00 0 0 0 +4323 1 -5.8604131848004407e+01 7.8517978481275577e+01 3.5000000189403280e+00 0 0 0 +4324 1 -6.0287647908015039e+01 7.7956501984051854e+01 5.2499999864342577e+00 0 0 0 +4326 1 -5.9726475745975812e+01 7.6298998774276200e+01 3.5000000050942970e+00 0 0 0 +4329 1 -5.8042959683612203e+01 7.6860475250944859e+01 5.2500000041139083e+00 0 0 0 +4963 1 -5.8604131904848600e+01 7.8517978472328195e+01 6.9999999893290070e+00 0 0 0 +4966 1 -5.9726475790053669e+01 7.6298998791987572e+01 6.9999999784252500e+00 0 0 0 +4379 1 -5.4114755507242243e+01 7.6325924767831296e+01 3.4999999751709141e+00 0 0 0 +4381 1 -5.4675927497303128e+01 7.7983427925642133e+01 5.2500000289781710e+00 0 0 0 +4425 1 -5.2992411557649035e+01 7.8544904189851437e+01 3.4999999952279395e+00 0 0 0 +4427 1 -5.2431239461627541e+01 7.6887400982520290e+01 5.2500000426341797e+00 0 0 0 +5019 1 -5.4114755546999469e+01 7.6325924741714232e+01 7.0000000806761991e+00 0 0 0 +5065 1 -5.2992411563603504e+01 7.8544904215087044e+01 7.0000000888069005e+00 0 0 0 +4461 1 -4.9064207413967267e+01 7.8010353534966058e+01 5.2499999983653867e+00 0 0 0 +4463 1 -4.8503035422256147e+01 7.6352850292021785e+01 3.5000000093111123e+00 0 0 0 +4460 1 -4.7380691316600071e+01 7.8571829828426971e+01 3.5000000296704141e+00 0 0 0 +4466 1 -4.6819519305282775e+01 7.6914326515791075e+01 5.2499999595835707e+00 0 0 0 +3896 1 -8.9045576205130146e+01 7.9440533372273961e+01 3.4999999193510836e+00 0 0 0 +3897 1 -8.9214901763258425e+01 8.1075178573391156e+01 5.2500000196090681e+00 0 0 0 +3946 1 -8.7753274180215655e+01 8.1718096104861644e+01 3.4999998140137656e+00 0 0 0 +3948 1 -8.7168422925914896e+01 7.9992917038390587e+01 5.2499999769177750e+00 0 0 0 +4586 1 -8.7753274140131197e+01 8.1718096180563364e+01 7.0000000869480123e+00 0 0 0 +4536 1 -8.9045576175301179e+01 7.9440533403677847e+01 7.0000001384760262e+00 0 0 0 +3953 1 -8.4964194281537559e+01 7.8936355778467629e+01 5.2499999339355146e+00 0 0 0 +4000 1 -8.3862485278669283e+01 8.1168466523811816e+01 5.2499998862644564e+00 0 0 0 +3999 1 -8.2176994242737933e+01 8.1726304685700967e+01 3.4999999685758874e+00 0 0 0 +4002 1 -8.3289037048755802e+01 7.9505169939413918e+01 3.4999999773879233e+00 0 0 0 +4005 1 -8.1612971014793771e+01 8.0068813200863858e+01 5.2499999258351933e+00 0 0 0 +4639 1 -8.2176994279641576e+01 8.1726304767117952e+01 6.9999998473575165e+00 0 0 0 +4642 1 -8.3289037066153170e+01 7.9505170009868451e+01 6.9999998663357301e+00 0 0 0 +4055 1 -7.7684224971253499e+01 7.9533326701353303e+01 3.5000000241358080e+00 0 0 0 +4056 1 -7.9367522171746018e+01 7.8971956263367332e+01 5.2499999337978975e+00 0 0 0 +4057 1 -7.8245181236081436e+01 8.1190637048618967e+01 5.2499999668445447e+00 0 0 0 +4695 1 -7.7684225059085890e+01 7.9533326734710201e+01 6.9999999301696150e+00 0 0 0 +4106 1 -7.6561516733566592e+01 8.1752150201214988e+01 3.5000000477306936e+00 0 0 0 +4108 1 -7.6000493302496693e+01 8.0094688102813052e+01 5.2499999961739086e+00 0 0 0 +4746 1 -7.6561516818321110e+01 8.1752150203260513e+01 6.9999999514118318e+00 0 0 0 +4159 1 -7.0949918558232952e+01 8.1779133908202851e+01 3.4999999856920918e+00 0 0 0 +4162 1 -7.2072254305612120e+01 7.9560148497676124e+01 3.5000000103977329e+00 0 0 0 +4113 1 -7.3755788345063863e+01 7.8998674592502823e+01 5.2500000089108827e+00 0 0 0 +4160 1 -7.2633424563352150e+01 8.1217654831013022e+01 5.2500000021429027e+00 0 0 0 +4799 1 -7.0949918621717643e+01 8.1779133851815828e+01 7.0000000515295735e+00 0 0 0 +4802 1 -7.2072254325398134e+01 7.9560148437409708e+01 7.0000000252746641e+00 0 0 0 +4165 1 -7.0388741684963449e+01 8.0121628557665673e+01 5.2500000350412099e+00 0 0 0 +4216 1 -6.8144055285613945e+01 7.9025602454074019e+01 5.2500000141900749e+00 0 0 0 +4215 1 -6.6460540157981413e+01 7.9587079279617541e+01 3.4999999890370335e+00 0 0 0 +4217 1 -6.7021712475062770e+01 8.1244582477439067e+01 5.2500000247659271e+00 0 0 0 +4268 1 -6.4777024139011658e+01 8.0148555668266383e+01 5.2499999889761959e+00 0 0 0 +4855 1 -6.6460540165180007e+01 7.9587079214310634e+01 7.0000000272766769e+00 0 0 0 +4267 1 -6.3093507969732549e+01 8.0710032069252421e+01 3.5000000193601477e+00 0 0 0 +4273 1 -6.2532336060198546e+01 7.9052528799893452e+01 5.2499999862395699e+00 0 0 0 +4320 1 -6.1409991965825384e+01 8.1271508388188892e+01 5.2499999729031215e+00 0 0 0 +4907 1 -6.3093507967922811e+01 8.0710032085859737e+01 6.9999999849516179e+00 0 0 0 +4325 1 -5.9165303899258483e+01 8.0175481684828668e+01 5.2499999846044609e+00 0 0 0 +4374 1 -5.7481787727086044e+01 8.0736958010111664e+01 3.5000000354080658e+00 0 0 0 +4376 1 -5.6920615674146546e+01 7.9079454788257138e+01 5.2500000041389647e+00 0 0 0 +4377 1 -5.5798271714709529e+01 8.1298434382996788e+01 5.2500000421007798e+00 0 0 0 +5014 1 -5.7481787779837575e+01 8.0736958032698041e+01 6.9999999998899618e+00 0 0 0 +4422 1 -5.1870067579139658e+01 8.0763883719293901e+01 3.5000000147811421e+00 0 0 0 +4423 1 -5.3553583681694242e+01 8.0202407427456421e+01 5.2500000563672371e+00 0 0 0 +5062 1 -5.1870067593547937e+01 8.0763883741871268e+01 7.0000000697827955e+00 0 0 0 +4428 1 -5.1308895569893991e+01 7.9106380551277212e+01 5.2500000421005950e+00 0 0 0 +4456 1 -4.8503035399575417e+01 8.1886836292378703e+01 3.4999999723296518e+00 0 0 0 +4457 1 -5.0186551500759052e+01 8.1325359962324171e+01 5.2500000423443245e+00 0 0 0 +4462 1 -4.7941863356182338e+01 8.0229333003075780e+01 5.2499999958776833e+00 0 0 0 +4479 1 -4.6258347248409748e+01 8.0790809219856470e+01 3.4999999836092579e+00 0 0 0 +4480 1 -4.5697175176143546e+01 7.9133306000710093e+01 5.2499999705611673e+00 0 0 0 +3944 1 -8.8549511178461586e+01 8.3375106240262753e+01 5.2499999427306401e+00 0 0 0 +3943 1 -8.6710921860882138e+01 8.3921051243362058e+01 3.4999998713433387e+00 0 0 0 +3949 1 -8.6132427237832246e+01 8.2277123314768744e+01 5.2499999067955798e+00 0 0 0 +3996 1 -8.4964194657435243e+01 8.4470341206353709e+01 5.2499998782621153e+00 0 0 0 +4583 1 -8.6710921814128753e+01 8.3921051360436479e+01 6.9999999999667617e+00 0 0 0 +4001 1 -8.2732308790590679e+01 8.3380429613757428e+01 5.2499998920621644e+00 0 0 0 +4050 1 -8.1049144285636359e+01 8.3943699656124522e+01 3.4999999926534806e+00 0 0 0 +4690 1 -8.1049144355403755e+01 8.3943699691163118e+01 6.9999998664181291e+00 0 0 0 +4052 1 -8.0489604022925178e+01 8.2286272343123372e+01 5.2499999274130564e+00 0 0 0 +4053 1 -7.9367522738212443e+01 8.4505941731351129e+01 5.2499999442990477e+00 0 0 0 +4103 1 -7.5439349909916942e+01 8.3971212757211092e+01 3.5000000065826544e+00 0 0 0 +4104 1 -7.7122770914977494e+01 8.3409742633824976e+01 5.2499999646863431e+00 0 0 0 +4109 1 -7.4878100121206870e+01 8.2313685177526565e+01 5.2500000010361489e+00 0 0 0 +4743 1 -7.5439350010683299e+01 8.3971212755087336e+01 6.9999999674920277e+00 0 0 0 +4156 1 -7.3755788815242141e+01 8.4532660269217374e+01 5.2500000160399178e+00 0 0 0 +4161 1 -7.1511092534459749e+01 8.3436635549596986e+01 5.2500000469074939e+00 0 0 0 +4210 1 -6.9827571199819900e+01 8.3998110880827085e+01 3.5000000306444243e+00 0 0 0 +4212 1 -6.9266401479680823e+01 8.2340609057787660e+01 5.2500000433399165e+00 0 0 0 +4213 1 -6.8144055499195716e+01 8.4559588276325059e+01 5.2500000901463739e+00 0 0 0 +4850 1 -6.9827571271015231e+01 8.3998110805293820e+01 7.0000000703311080e+00 0 0 0 +4264 1 -6.5899367976715737e+01 8.3463561913056395e+01 5.2500000522546220e+00 0 0 0 +4269 1 -6.3654680065816365e+01 8.2367535181366421e+01 5.2500000195895975e+00 0 0 0 +4316 1 -6.2532336147001629e+01 8.4586514822296422e+01 5.2499999807686510e+00 0 0 0 +4318 1 -6.1971164050266594e+01 8.2929011625148235e+01 3.5000000376352531e+00 0 0 0 +4958 1 -6.1971164037865634e+01 8.2929011652077051e+01 6.9999999554331733e+00 0 0 0 +4315 1 -6.0848819945992410e+01 8.5147991224229372e+01 3.5000000328972214e+00 0 0 0 +4321 1 -6.0287648042474963e+01 8.3490488068335637e+01 5.2499999829946615e+00 0 0 0 +4372 1 -5.8042959838402872e+01 8.2394461305510646e+01 5.2500000033011407e+00 0 0 0 +4955 1 -6.0848819952277211e+01 8.5147991223442119e+01 6.9999999321879525e+00 0 0 0 +4371 1 -5.6359443698836813e+01 8.2955937590193088e+01 3.5000000207363322e+00 0 0 0 +4373 1 -5.6920615692714989e+01 8.4613440687146323e+01 5.2499999923507437e+00 0 0 0 +4417 1 -5.5237099668260051e+01 8.5174917091631784e+01 3.5000000321393805e+00 0 0 0 +5011 1 -5.6359443784757886e+01 8.2955937576216428e+01 7.0000000173397217e+00 0 0 0 +5057 1 -5.5237099751332472e+01 8.5174917110815983e+01 7.0000000398400921e+00 0 0 0 +4419 1 -5.4675927523073945e+01 8.3517413813041813e+01 5.2500000424064446e+00 0 0 0 +4424 1 -5.2431239525446991e+01 8.2421386913657628e+01 5.2500000456804150e+00 0 0 0 +4452 1 -4.9625379403431886e+01 8.5201842572227520e+01 3.4999999860534570e+00 0 0 0 +4453 1 -5.1308895506916443e+01 8.4640366407567996e+01 5.2500000286447035e+00 0 0 0 +4455 1 -5.0747723427242171e+01 8.2982863187116095e+01 3.4999999851810104e+00 0 0 0 +4458 1 -4.9064207358582863e+01 8.3544339469204630e+01 5.2499999847426189e+00 0 0 0 +4476 1 -4.7380691291948025e+01 8.4105815794528453e+01 3.4999999682753553e+00 0 0 0 +4477 1 -4.6819519267847326e+01 8.2448312511879436e+01 5.2499999570513562e+00 0 0 0 +4478 1 -4.5697175209612787e+01 8.4667291990223077e+01 5.2499999213245250e+00 0 0 0 +3941 1 -8.9214901573530085e+01 8.6609164193702242e+01 5.2499999939858721e+00 0 0 0 +3945 1 -8.7168423289987686e+01 8.5526902650226688e+01 5.2499999218466948e+00 0 0 0 +3993 1 -8.6132427601418797e+01 8.7811108931395609e+01 5.2499999222510088e+00 0 0 0 +3994 1 -8.5523444611369328e+01 8.6134954348807000e+01 3.4999999064155651e+00 0 0 0 +3997 1 -8.3862485689964856e+01 8.6702452044681834e+01 5.2499998726458736e+00 0 0 0 +4634 1 -8.5523444609125633e+01 8.6134954382026010e+01 6.9999999182093875e+00 0 0 0 +662 1 -8.4431592140740335e+01 8.8357121292611694e+01 3.4999999497106171e+00 0 -1 0 +1302 1 -8.4431592167305141e+01 8.8357121326767526e+01 6.9999998493987983e+00 0 -1 0 +4048 1 -8.1612971495103665e+01 8.5602798635970260e+01 5.2499999002458209e+00 0 0 0 +4047 1 -7.9929644691767692e+01 8.6163572191037829e+01 3.5000000037128922e+00 0 0 0 +4049 1 -8.0489604556046061e+01 8.7820257849956903e+01 5.2499999470617000e+00 0 0 0 +4101 1 -7.8245181837537459e+01 8.6724622586978484e+01 5.2499999651728846e+00 0 0 0 +4687 1 -7.9929644800369857e+01 8.6163572218039420e+01 6.9999998810512976e+00 0 0 0 +738 1 -7.8805836114148818e+01 8.8382031798602881e+01 3.5000000134802480e+00 0 -1 0 +1378 1 -7.8805836242145276e+01 8.8382031820711020e+01 6.9999999452758059e+00 0 -1 0 +4154 1 -7.4316921227901489e+01 8.6190149203494670e+01 3.5000000075367947e+00 0 0 0 +4105 1 -7.6000493832542389e+01 8.5628673684844927e+01 5.2500000081093123e+00 0 0 0 +4153 1 -7.4878100464690149e+01 8.7847670729051472e+01 5.2499999945235372e+00 0 0 0 +4794 1 -7.4316921339890371e+01 8.6190149177715782e+01 7.0000000087918002e+00 0 0 0 +4157 1 -7.2633424839789285e+01 8.6751640441437488e+01 5.2500000356249554e+00 0 0 0 +791 1 -7.3194616921018593e+01 8.8409151122092837e+01 3.5000000097326729e+00 0 -1 0 +1431 1 -7.3194617022844213e+01 8.8409151113088541e+01 7.0000000224524754e+00 0 -1 0 +4207 1 -6.8705228613236855e+01 8.6217091844014590e+01 3.5000000319641273e+00 0 0 0 +4208 1 -7.0388741962928847e+01 8.5655614280963121e+01 5.2500000501156929e+00 0 0 0 +4209 1 -6.9266401571129677e+01 8.7874594667297060e+01 5.2500000782672158e+00 0 0 0 +4847 1 -6.8705228661533681e+01 8.6217091780742123e+01 7.0000001055147418e+00 0 0 0 +4260 1 -6.5338196182556032e+01 8.7340044603392045e+01 3.5000000022752089e+00 0 0 0 +4261 1 -6.7021712524301648e+01 8.6778568203125019e+01 5.2500000614469551e+00 0 0 0 +4265 1 -6.4777024176960055e+01 8.5682541545863955e+01 5.2500000391709980e+00 0 0 0 +4900 1 -6.5338196159082798e+01 8.7340044587490127e+01 7.0000000561867459e+00 0 0 0 +898 1 -6.7582884055109432e+01 8.8436070832274865e+01 3.5000000089660830e+00 0 -1 0 +1538 1 -6.7582884079984581e+01 8.8436070836003893e+01 7.0000001056722967e+00 0 -1 0 +4313 1 -6.3654680013196938e+01 8.7901521009203478e+01 5.2500000083071239e+00 0 0 0 +4317 1 -6.1409991977809788e+01 8.6805494342466687e+01 5.2499999637224199e+00 0 0 0 +4366 1 -5.9726475844565826e+01 8.7366970736986048e+01 3.5000000072584347e+00 0 0 0 +4368 1 -5.9165303917424971e+01 8.5709467626871728e+01 5.2499999630615735e+00 0 0 0 +4369 1 -5.8042959719134721e+01 8.7928447122082247e+01 5.2499999725989772e+00 0 0 0 +5006 1 -5.9726475904741214e+01 8.7366970760073656e+01 6.9999999243124993e+00 0 0 0 +4416 1 -5.5798271636868925e+01 8.6832420204881444e+01 5.2500000149604267e+00 0 0 0 +4415 1 -5.4114755513280357e+01 8.7393896455825768e+01 3.5000000121249002e+00 0 0 0 +4420 1 -5.3553583633726781e+01 8.5736393255574981e+01 5.2500000315002673e+00 0 0 0 +4450 1 -5.2431239447395740e+01 8.7955372643270039e+01 5.2500000487309988e+00 0 0 0 +5055 1 -5.4114755591209359e+01 8.7393896454214072e+01 7.0000000604719519e+00 0 0 0 +4454 1 -5.0186551454012630e+01 8.6859345764436881e+01 5.2500000084403498e+00 0 0 0 +4472 1 -4.8503035440987723e+01 8.7420822162858911e+01 3.4999999632940204e+00 0 0 0 +4473 1 -4.6258347325663586e+01 8.6324795183162038e+01 3.4999999575716698e+00 0 0 0 +4474 1 -4.7941863348938490e+01 8.5763318914066659e+01 5.2499999571647589e+00 0 0 0 +4475 1 -4.6819519401647867e+01 8.7982298447225389e+01 5.2499999463475930e+00 0 0 0 +4485 1 -8.8549509906322342e+01 4.4637205564386953e+01 8.7499999941453446e+00 0 0 0 +4499 1 -8.7168422048739870e+01 4.6789002420183792e+01 8.7500000222662155e+00 0 0 0 +5122 1 -8.9045575791013960e+01 4.6236618735243951e+01 1.0500000015869260e+01 0 0 0 +4501 1 -8.6710920441813812e+01 4.5183150883889489e+01 7.0000000211302948e+00 0 0 0 +4503 1 -8.4964193172919508e+01 4.5732440721726071e+01 8.7500000118574306e+00 0 0 0 +4532 1 -8.1049142777630337e+01 4.5205798220970664e+01 7.0000000361641330e+00 0 0 0 +4533 1 -8.2732307245423769e+01 4.4642528507345546e+01 8.7500000407052401e+00 0 0 0 +4534 1 -8.1612969790926911e+01 4.6864897717701190e+01 8.7500000373350204e+00 0 0 0 +5171 1 -8.3289035848527988e+01 4.6301254719056764e+01 1.0500000014372308e+01 0 0 0 +4576 1 -7.9367521180363127e+01 4.5768039926210520e+01 8.7500000344248505e+00 0 0 0 +5215 1 -7.7684224086162175e+01 4.6329410062572727e+01 1.0500000001215446e+01 0 0 0 +4579 1 -7.7122769589974553e+01 4.4671839963142098e+01 8.7499999938718833e+00 0 0 0 +4628 1 -7.6000492443621411e+01 4.6890771201681119e+01 8.7499999857169382e+00 0 0 0 +4630 1 -7.5439348744457959e+01 4.5233309821499589e+01 6.9999999807343665e+00 0 0 0 +4632 1 -7.3755787655132352e+01 4.5794757185740309e+01 8.7499999790318714e+00 0 0 0 +4684 1 -7.1511091582360962e+01 4.4698732019565000e+01 8.7499999780213820e+00 0 0 0 +5322 1 -7.2072253688093255e+01 4.6356230983205002e+01 1.0499999989235024e+01 0 0 0 +4683 1 -6.9827570481649232e+01 4.5260207314316524e+01 6.9999999628197616e+00 0 0 0 +4685 1 -7.0388741162804365e+01 4.6917711045468138e+01 8.7499999751259168e+00 0 0 0 +4736 1 -6.8144054898185757e+01 4.5821684774421847e+01 8.7499999734589142e+00 0 0 0 +4739 1 -6.5899367424216734e+01 4.4725658402867914e+01 8.7500000021117224e+00 0 0 0 +4788 1 -6.4777023782874551e+01 4.6944638409731446e+01 8.7499999947322333e+00 0 0 0 +5375 1 -6.6460539753017102e+01 4.6383161740890856e+01 1.0499999985888934e+01 0 0 0 +4792 1 -6.2532335709760311e+01 4.5848611968659370e+01 8.7499999536217494e+00 0 0 0 +5430 1 -6.4215851694652258e+01 4.5287135240331416e+01 1.0499999971221920e+01 0 0 0 +4842 1 -6.0848819609264510e+01 4.6410088757891906e+01 6.9999999554424805e+00 0 0 0 +4844 1 -6.0287647596502900e+01 4.4752585619074551e+01 8.7499999233424717e+00 0 0 0 +4845 1 -5.9165303656458519e+01 4.6971565484660609e+01 8.7499999590303723e+00 0 0 0 +5483 1 -5.8604131617105345e+01 4.5314062372374394e+01 1.0499999959672021e+01 0 0 0 +5482 1 -6.0848819574844875e+01 4.6410088723376596e+01 1.0499999955526878e+01 0 0 0 +4896 1 -5.6920615534702449e+01 4.5875538902675551e+01 8.7499999769577386e+00 0 0 0 +5535 1 -5.5237099678510397e+01 4.6437015577273982e+01 1.0499999978076460e+01 0 0 0 +4899 1 -5.4675927449515846e+01 4.4779512273343791e+01 8.7499999578588046e+00 0 0 0 +4948 1 -5.3553583692494300e+01 4.6998491936852687e+01 8.7499999606384602e+00 0 0 0 +5590 1 -5.2992411600706113e+01 4.5340988721357313e+01 1.0499999994190929e+01 0 0 0 +4952 1 -5.1308895720065351e+01 4.5902465218636337e+01 8.7499999850319590e+00 0 0 0 +5004 1 -4.9064207717434222e+01 4.4806438307104095e+01 8.7499999922079663e+00 0 0 0 +5642 1 -4.9625379713243632e+01 4.6463941477338984e+01 1.0500000003812454e+01 0 0 0 +5005 1 -4.7941863690354531e+01 4.7025417869109269e+01 8.7499999717724073e+00 0 0 0 +5054 1 -4.5697175662824108e+01 4.5929390924368739e+01 8.7499999705432554e+00 0 0 0 +5643 1 -4.7380691745271349e+01 4.5367914713286034e+01 1.0499999984741418e+01 0 0 0 +3031 1 -5.0747723429715101e+01 8.8516849002639347e+01 1.3999999971984586e+01 0 -1 0 +4483 1 -8.9214901399173456e+01 4.7871264206305050e+01 8.7499999895835145e+00 0 0 0 +4495 1 -8.8549510017614850e+01 5.0171191988251508e+01 8.7499999850959895e+00 0 0 0 +5137 1 -8.7753273073038628e+01 4.8514181794135034e+01 1.0500000075093237e+01 0 0 0 +4498 1 -8.5523442983128405e+01 4.7397054170613274e+01 7.0000000193924965e+00 0 0 0 +4527 1 -8.4431590385311097e+01 4.9619221365285334e+01 7.0000000198270680e+00 0 0 0 +4500 1 -8.6132425930140670e+01 4.9073208993747578e+01 8.7500000321160538e+00 0 0 0 +4529 1 -8.3862483915431440e+01 4.7964551790571967e+01 8.7500000277571708e+00 0 0 0 +4530 1 -8.2732307363647791e+01 5.0176515093137503e+01 8.7500000256964672e+00 0 0 0 +5168 1 -8.2176992939067048e+01 4.8522389751924713e+01 1.0500000020445230e+01 0 0 0 +4572 1 -8.0489602762220983e+01 4.9082357049701834e+01 8.7500000273648517e+00 0 0 0 +4571 1 -7.8805834463700592e+01 4.9644130637984922e+01 7.0000000228594859e+00 0 0 0 +4574 1 -7.9929643085438911e+01 4.7425670910001351e+01 7.0000000439241017e+00 0 0 0 +4577 1 -7.8245180208187207e+01 4.7986720900870026e+01 8.7500000292829778e+00 0 0 0 +4624 1 -7.7122769755443699e+01 5.0205826627899235e+01 8.7500000222804566e+00 0 0 0 +4627 1 -7.4316920066284794e+01 4.7452246490457760e+01 6.9999999650191462e+00 0 0 0 +4629 1 -7.4878099155762754e+01 4.9109768469006859e+01 8.7499999871111811e+00 0 0 0 +5266 1 -7.6561515723357559e+01 4.8548233739164303e+01 1.0499999989962006e+01 0 0 0 +4678 1 -7.3194615871733291e+01 4.9671248725558449e+01 6.9999999615374939e+00 0 0 0 +4680 1 -7.2633423810638789e+01 4.8013737621165028e+01 8.7499999653355971e+00 0 0 0 +4681 1 -7.1511091726856321e+01 5.0232718598479003e+01 8.7499999776943760e+00 0 0 0 +5319 1 -7.0949917864328654e+01 4.8575216627109718e+01 1.0499999996694518e+01 0 0 0 +4732 1 -6.9266400926213620e+01 4.9136691770179475e+01 8.7500000099372706e+00 0 0 0 +4734 1 -6.8705228056527474e+01 4.7479188599982173e+01 6.9999999763344629e+00 0 0 0 +4786 1 -6.5338195846436889e+01 4.8602141588342548e+01 6.9999999894437757e+00 0 0 0 +4731 1 -6.7582883605415944e+01 4.9698167932559748e+01 6.9999999991836033e+00 0 0 0 +4737 1 -6.7021712040887422e+01 4.8040665046613796e+01 8.7500000040905146e+00 0 0 0 +4784 1 -6.5899367563688315e+01 5.0259644755037712e+01 8.7499999628245320e+00 0 0 0 +5426 1 -6.5338195777969176e+01 4.8602141548401384e+01 1.0499999984919333e+01 0 0 0 +4789 1 -6.3654679711918796e+01 4.9163618200317153e+01 8.7499999851775989e+00 0 0 0 +4840 1 -6.1409991670207525e+01 4.8067591807436372e+01 8.7499999506561874e+00 0 0 0 +5427 1 -6.3093507632505087e+01 4.7506115126049735e+01 1.0499999966705237e+01 0 0 0 +5478 1 -6.1971163720106119e+01 4.9725094940667766e+01 1.0500000001406883e+01 0 0 0 +4839 1 -5.9726475660223898e+01 4.8629068612906210e+01 6.9999999547850322e+00 0 0 0 +4841 1 -6.0287647723228233e+01 5.0286571675900916e+01 8.7499999614243951e+00 0 0 0 +4892 1 -5.8042959624619101e+01 4.9190545279380430e+01 8.7499999528019412e+00 0 0 0 +5479 1 -5.9726475660836172e+01 4.8629068570427975e+01 1.0499999977653504e+01 0 0 0 +4897 1 -5.5798271638437299e+01 4.8094518673954390e+01 8.7499999785901323e+00 0 0 0 +5531 1 -5.6359443580139597e+01 4.9752021784630585e+01 1.0499999977479465e+01 0 0 0 +5534 1 -5.7481787551267843e+01 4.7533042075478349e+01 1.0499999991782296e+01 0 0 0 +4944 1 -5.4675927503408353e+01 5.0313498245235067e+01 8.7500000076014270e+00 0 0 0 +4949 1 -5.2431239557361806e+01 4.9217471504225344e+01 8.7499999759088798e+00 0 0 0 +5586 1 -5.4114755601859592e+01 4.8655995161526356e+01 1.0499999987622843e+01 0 0 0 +5587 1 -5.1870067656131333e+01 4.7559968342359952e+01 1.0499999980689157e+01 0 0 0 +5000 1 -5.0186551689842894e+01 4.8121444711239292e+01 8.7499999739927379e+00 0 0 0 +5001 1 -4.9064207591045175e+01 5.0340424296591976e+01 8.7499999591475337e+00 0 0 0 +5638 1 -5.0747723544347380e+01 4.9778947917835858e+01 1.0499999977432768e+01 0 0 0 +5639 1 -4.8503035669799246e+01 4.8682921149207807e+01 1.0499999991164781e+01 0 0 0 +5051 1 -4.6819519579575662e+01 4.9244397421104182e+01 8.7499999559158095e+00 0 0 0 +5693 1 -4.6258347631204359e+01 4.7586894141120176e+01 1.0499999982923672e+01 0 0 0 +6392 1 -4.8503035386082409e+01 8.7420822192366472e+01 1.4000000023906244e+01 0 0 0 +4493 1 -8.9045575861871939e+01 5.1770605191628647e+01 7.0000000000518705e+00 0 0 0 +4491 1 -8.9214901254084140e+01 5.3405250599158940e+01 8.7499999864373645e+00 0 0 0 +4496 1 -8.7168422187210012e+01 5.2322988907935638e+01 8.7499999846028054e+00 0 0 0 +4525 1 -8.4964193251403785e+01 5.1266427222292116e+01 8.7500000265386557e+00 0 0 0 +4526 1 -8.3862484013776225e+01 5.3498538254892111e+01 8.7500000132275009e+00 0 0 0 +5134 1 -8.6710920520273646e+01 5.0717137329121790e+01 1.0500000012504344e+01 0 0 0 +5163 1 -8.5523443039857710e+01 5.2931040621411753e+01 1.0500000020722407e+01 0 0 0 +4524 1 -8.3289036003771486e+01 5.1835241264639670e+01 6.9999999994436992e+00 0 0 0 +4568 1 -8.1612969919193077e+01 5.2398884298307770e+01 8.7500000211562057e+00 0 0 0 +5210 1 -8.1049142866982450e+01 5.0739784883379997e+01 1.0500000031573840e+01 0 0 0 +4573 1 -7.9367521326947241e+01 5.1302026579429679e+01 8.7500000264076601e+00 0 0 0 +4620 1 -7.8245180256168879e+01 5.3520707530940278e+01 8.7500000093317745e+00 0 0 0 +4622 1 -7.7684224269923959e+01 5.1863396731075163e+01 7.0000000092903756e+00 0 0 0 +5207 1 -7.9929643121652404e+01 5.2959657548401495e+01 1.0500000030035146e+01 0 0 0 +4625 1 -7.6000492539718962e+01 5.2424757860912408e+01 8.7500000024719213e+00 0 0 0 +5263 1 -7.5439348783951417e+01 5.0767296467322012e+01 1.0499999991203133e+01 0 0 0 +5314 1 -7.4316920004745768e+01 5.2986233111077091e+01 1.0499999976452274e+01 0 0 0 +4675 1 -7.2072253799738419e+01 5.1890217567164377e+01 6.9999999702065061e+00 0 0 0 +4676 1 -7.3755787758912362e+01 5.1328743800457652e+01 8.7499999674683941e+00 0 0 0 +4677 1 -7.2633423792758563e+01 5.3547724214750239e+01 8.7499999953172019e+00 0 0 0 +4728 1 -7.0388741155874285e+01 5.2451697583534745e+01 8.7499999807465159e+00 0 0 0 +4733 1 -6.8144054944344333e+01 5.1355671230681892e+01 8.7500000095459534e+00 0 0 0 +5367 1 -6.8705227931656154e+01 5.3013175061671092e+01 1.0499999993717955e+01 0 0 0 +5370 1 -6.9827570494172761e+01 5.0794193822867889e+01 1.0500000003109905e+01 0 0 0 +4780 1 -6.7021711983054118e+01 5.3574651403405632e+01 8.7500000012642474e+00 0 0 0 +4782 1 -6.6460539865827357e+01 5.1917148082934744e+01 7.0000000031875853e+00 0 0 0 +4785 1 -6.4777023779542105e+01 5.2478624636164447e+01 8.7499999622561653e+00 0 0 0 +4783 1 -6.4215851848057568e+01 5.0821121474327057e+01 6.9999999699667717e+00 0 0 0 +4834 1 -6.3093507667006108e+01 5.3040101241975421e+01 6.9999999531615389e+00 0 0 0 +4836 1 -6.2532335809843573e+01 5.1382598096529279e+01 8.7499999690988837e+00 0 0 0 +4837 1 -6.1409991600999433e+01 5.3601577798189147e+01 8.7499999622840754e+00 0 0 0 +4890 1 -5.8604131734922113e+01 5.0848048375616251e+01 6.9999999944125237e+00 0 0 0 +4888 1 -5.9165303649403285e+01 5.2505551421861583e+01 8.7499999771248191e+00 0 0 0 +5475 1 -6.0848819603057152e+01 5.1944074751242759e+01 1.0499999984406191e+01 0 0 0 +5530 1 -5.8604131713571640e+01 5.0848048357486533e+01 1.0499999981323672e+01 0 0 0 +4887 1 -5.7481787534329513e+01 5.3067028037001158e+01 6.9999999902895738e+00 0 0 0 +4893 1 -5.6920615575388716e+01 5.1409524846091308e+01 8.7499999785863949e+00 0 0 0 +4940 1 -5.5798271544294856e+01 5.3628504553237434e+01 8.7499999827295571e+00 0 0 0 +5527 1 -5.7481787526599391e+01 5.3067027977634815e+01 1.0499999997133649e+01 0 0 0 +5582 1 -5.5237099600237286e+01 5.1971001442414703e+01 1.0499999989788373e+01 0 0 0 +4945 1 -5.3553583635609066e+01 5.2532477805327829e+01 8.7499999981760208e+00 0 0 0 +5583 1 -5.2992411569489683e+01 5.0874974648102580e+01 1.0499999983946921e+01 0 0 0 +5634 1 -5.1870067539340717e+01 5.3093954226642019e+01 1.0499999969648808e+01 0 0 0 +4996 1 -5.1308895588333520e+01 5.1436451110607301e+01 8.7499999579659526e+00 0 0 0 +4997 1 -5.0186551519853182e+01 5.3655430571409127e+01 8.7499999568306350e+00 0 0 0 +5635 1 -4.9625379534254122e+01 5.1997927370351945e+01 1.0499999959245223e+01 0 0 0 +5048 1 -4.7941863483456650e+01 5.2559403804016263e+01 8.7499999469796474e+00 0 0 0 +5052 1 -4.5697175395254604e+01 5.1463376941491866e+01 8.7499999521006515e+00 0 0 0 +5687 1 -4.6258347417401481e+01 5.3120880097524037e+01 1.0499999974229160e+01 0 0 0 +5690 1 -4.7380691503282563e+01 5.0901900667873619e+01 1.0499999986491749e+01 0 0 0 +4490 1 -8.7753273117223344e+01 5.4048168208819270e+01 7.0000000060268563e+00 0 0 0 +4492 1 -8.8549509933092011e+01 5.5705178273306423e+01 8.7499999586380319e+00 0 0 0 +4519 1 -8.6710920553506881e+01 5.6251123670670616e+01 6.9999999603055505e+00 0 0 0 +4521 1 -8.6132425978075432e+01 5.4607195372432976e+01 8.7499999488193883e+00 0 0 0 +5160 1 -8.4431590392689529e+01 5.5153207802612563e+01 1.0500000018875006e+01 0 0 0 +4563 1 -8.1049142906066677e+01 5.6273771308099214e+01 6.9999999882876898e+00 0 0 0 +4564 1 -8.2732307414882882e+01 5.5710501537463763e+01 8.7500000241877505e+00 0 0 0 +4566 1 -8.2176993079745813e+01 5.4056376241740161e+01 6.9999999823116843e+00 0 0 0 +4569 1 -8.0489602820878659e+01 5.4616343609287476e+01 8.7500000423827107e+00 0 0 0 +5258 1 -7.8805834412241097e+01 5.5178117222577413e+01 1.0500000012401635e+01 0 0 0 +4619 1 -7.6561515815051408e+01 5.4082220343936029e+01 7.0000000196737968e+00 0 0 0 +4621 1 -7.7122769683059815e+01 5.5739813195828006e+01 8.7499999987787138e+00 0 0 0 +4670 1 -7.5439348742889877e+01 5.6301282993656542e+01 7.0000000110823679e+00 0 0 0 +4672 1 -7.4878099105644282e+01 5.4643755072061282e+01 8.7499999867538403e+00 0 0 0 +4724 1 -7.1511091576267262e+01 5.5766705082453463e+01 8.7499999954673626e+00 0 0 0 +4726 1 -7.0949917862257479e+01 5.4109203143079952e+01 6.9999999887392956e+00 0 0 0 +5311 1 -7.3194615687396819e+01 5.5205235248950885e+01 1.0499999982136895e+01 0 0 0 +4723 1 -6.9827570395173112e+01 5.6328180281322545e+01 6.9999999965701747e+00 0 0 0 +4729 1 -6.9266400808758974e+01 5.4670678201219282e+01 8.7499999798400019e+00 0 0 0 +4781 1 -6.5899367362889564e+01 5.5793630980425547e+01 8.7499999863539646e+00 0 0 0 +5419 1 -6.5338195678471052e+01 5.4136127789893649e+01 1.0499999988514141e+01 0 0 0 +5418 1 -6.7582883360571088e+01 5.5232154245161581e+01 1.0499999994392436e+01 0 0 0 +4831 1 -6.1971163602229531e+01 5.5259080954724077e+01 6.9999999458883702e+00 0 0 0 +4832 1 -6.3654679586728861e+01 5.4697604298324521e+01 8.7499999468891350e+00 0 0 0 +5470 1 -6.4215851559189105e+01 5.6355107581311557e+01 1.0499999981513861e+01 0 0 0 +5471 1 -6.1971163549715278e+01 5.5259080930816999e+01 1.0499999982144422e+01 0 0 0 +4884 1 -6.0287647573271578e+01 5.5820557595985107e+01 8.7499999523073591e+00 0 0 0 +4889 1 -5.8042959523348934e+01 5.4724531187574513e+01 8.7499999928965995e+00 0 0 0 +5523 1 -5.8604131539763166e+01 5.6382034240447823e+01 1.0500000008910014e+01 0 0 0 +5526 1 -5.9726475544791597e+01 5.4163054470007211e+01 1.0500000005333272e+01 0 0 0 +4938 1 -5.6359443474916269e+01 5.5286007704708574e+01 7.0000000014214105e+00 0 0 0 +5578 1 -5.6359443480899401e+01 5.5286007678975359e+01 1.0500000003136414e+01 0 0 0 +4941 1 -5.4675927331977014e+01 5.5847484096872265e+01 8.7499999955952639e+00 0 0 0 +4992 1 -5.2431239432403018e+01 5.4751457381334490e+01 8.7499999816048533e+00 0 0 0 +5579 1 -5.4114755455720825e+01 5.4189981009951083e+01 1.0499999968316308e+01 0 0 0 +5630 1 -5.2992411373708599e+01 5.6408960467546649e+01 1.0499999974629578e+01 0 0 0 +5044 1 -4.9064207375939297e+01 5.5874410080899843e+01 8.7499999682671987e+00 0 0 0 +5631 1 -5.0747723374812310e+01 5.5312933717449717e+01 1.0499999963920670e+01 0 0 0 +5686 1 -4.8503035460087425e+01 5.4216907000078514e+01 1.0499999965026936e+01 0 0 0 +5049 1 -4.6819519384398404e+01 5.4778383268431256e+01 8.7499999670908046e+00 0 0 0 +5683 1 -4.7380691363228379e+01 5.6435886469466809e+01 1.0499999968702710e+01 0 0 0 +4488 1 -8.9214901259943815e+01 5.8939236637073535e+01 8.7499999371968791e+00 0 0 0 +4517 1 -8.7168422186677518e+01 5.7856975165813203e+01 8.7499999754901392e+00 0 0 0 +5127 1 -8.9045575865043631e+01 5.7304591284142184e+01 1.0499999918859540e+01 0 0 0 +5155 1 -8.7753273182346263e+01 5.9582154236385655e+01 1.0499999913703146e+01 0 0 0 +4516 1 -8.5523443049857136e+01 5.8465026868030399e+01 6.9999999639811650e+00 0 0 0 +4522 1 -8.4964193273804497e+01 5.6800413561125403e+01 8.7499999830673172e+00 0 0 0 +4560 1 -8.3862483975199069e+01 5.9032524521197956e+01 8.7499999674031770e+00 0 0 0 +4565 1 -8.1612969863988070e+01 5.7932870667429441e+01 8.7499999975037728e+00 0 0 0 +5199 1 -8.2176992949001260e+01 5.9590362555993700e+01 1.0500000002552362e+01 0 0 0 +5202 1 -8.3289035989664072e+01 5.7369227633749830e+01 1.0500000021583823e+01 0 0 0 +4614 1 -7.9929643066847689e+01 5.8493643845233386e+01 7.0000000060309802e+00 0 0 0 +4616 1 -7.9367521263908515e+01 5.6836013052436890e+01 8.7500000038602757e+00 0 0 0 +4617 1 -7.8245180122287977e+01 5.9054693908616059e+01 8.7500000020543105e+00 0 0 0 +5255 1 -7.7684224094532667e+01 5.7397383198960696e+01 1.0500000006850016e+01 0 0 0 +4667 1 -7.4316919879901178e+01 5.8520219555671424e+01 6.9999999937035877e+00 0 0 0 +4668 1 -7.6000492353740455e+01 5.7958744312315957e+01 8.7499999819279299e+00 0 0 0 +5306 1 -7.6561515574912235e+01 5.9616206730174682e+01 1.0500000002488857e+01 0 0 0 +4673 1 -7.3755787592740774e+01 5.6862730298789515e+01 8.7499999897651719e+00 0 0 0 +4720 1 -7.2633423566524542e+01 5.9081710632510720e+01 8.7499999908434170e+00 0 0 0 +5359 1 -7.0949917576233176e+01 5.9643189492248339e+01 1.0500000001600119e+01 0 0 0 +5362 1 -7.2072253536678929e+01 5.7424204001552475e+01 1.0499999991503030e+01 0 0 0 +4725 1 -7.0388740936457296e+01 5.7985683992380380e+01 8.7499999911221078e+00 0 0 0 +4774 1 -6.8705227762735348e+01 5.8547161410475844e+01 7.0000000134322597e+00 0 0 0 +4776 1 -6.8144054714091553e+01 5.6889657585117639e+01 8.7499999732696914e+00 0 0 0 +4826 1 -6.5338195471433636e+01 5.9670113997477436e+01 6.9999999941630406e+00 0 0 0 +4777 1 -6.7021711689245734e+01 5.9108637650055066e+01 8.7500000015337349e+00 0 0 0 +4828 1 -6.4777023524005699e+01 5.8012610766592353e+01 8.7499999841980873e+00 0 0 0 +5415 1 -6.6460539508062908e+01 5.7451134339410856e+01 1.0499999967572757e+01 0 0 0 +5466 1 -6.5338195388483257e+01 5.9670113957757714e+01 1.0499999989156034e+01 0 0 0 +4833 1 -6.2532335576096301e+01 5.6916584084891475e+01 8.7499999451635517e+00 0 0 0 +4880 1 -6.1409991385184277e+01 5.9135563812749332e+01 8.7499999455093231e+00 0 0 0 +5467 1 -6.3093507356254392e+01 5.8574087280101928e+01 1.0499999995173148e+01 0 0 0 +4879 1 -5.9726475381624454e+01 5.9697040498177500e+01 6.9999999680519256e+00 0 0 0 +4882 1 -6.0848819424476055e+01 5.7478060742941587e+01 6.9999999507417261e+00 0 0 0 +4885 1 -5.9165303466145751e+01 5.8039537380599789e+01 8.7499999915334037e+00 0 0 0 +5519 1 -5.9726475395276388e+01 5.9697040478143435e+01 1.0500000004906257e+01 0 0 0 +5522 1 -6.0848819409230735e+01 5.7478060685856434e+01 1.0499999988686019e+01 0 0 0 +4935 1 -5.5237099466160167e+01 5.7504987396423033e+01 7.0000000197709831e+00 0 0 0 +4936 1 -5.6920615404347259e+01 5.6943510751238371e+01 8.7500000178914679e+00 0 0 0 +4937 1 -5.5798271401086140e+01 5.9162490472876236e+01 8.7500000394037833e+00 0 0 0 +5575 1 -5.5237099481743599e+01 5.7504987353393638e+01 1.0500000004224029e+01 0 0 0 +5574 1 -5.7481787345226067e+01 5.8601013907056796e+01 1.0500000020235234e+01 0 0 0 +4986 1 -5.4114755358604754e+01 5.9723966889392734e+01 7.0000000484202136e+00 0 0 0 +4988 1 -5.3553583452136721e+01 5.8066463672466490e+01 8.7499999989503454e+00 0 0 0 +5626 1 -5.4114755319544614e+01 5.9723966872973584e+01 1.0500000011660118e+01 0 0 0 +5627 1 -5.1870067359346500e+01 5.8627939999680414e+01 1.0499999962829886e+01 0 0 0 +4993 1 -5.1308895452218927e+01 5.6970436941487208e+01 8.7499999915488029e+00 0 0 0 +5040 1 -5.0186551372998423e+01 5.9189416306087985e+01 8.7499999820525325e+00 0 0 0 +5679 1 -4.8503035341940596e+01 5.9750892697492560e+01 1.0499999979880402e+01 0 0 0 +5682 1 -4.9625379374814109e+01 5.7531913156823549e+01 1.0499999970243623e+01 0 0 0 +5045 1 -4.7941863329121347e+01 5.8093389533220389e+01 8.7499999614492339e+00 0 0 0 +5089 1 -4.5697175234912933e+01 5.6997362744196415e+01 8.7499999720720769e+00 0 0 0 +5728 1 -4.6258347272698849e+01 5.8654865825040766e+01 1.0499999995590139e+01 0 0 0 +4511 1 -8.9045575936323772e+01 6.2838577161710162e+01 7.0000000080356273e+00 0 0 0 +4513 1 -8.8549510048235305e+01 6.1239164222724384e+01 8.7499999673553273e+00 0 0 0 +4518 1 -8.6132426023744529e+01 6.0141181497535172e+01 8.7499999962906614e+00 0 0 0 +4556 1 -8.4964193250770634e+01 6.2334399573913515e+01 8.7499999948623906e+00 0 0 0 +4558 1 -8.4431590384977383e+01 6.0687193878182356e+01 6.9999999774606634e+00 0 0 0 +5152 1 -8.6710920568467117e+01 6.1785109613653177e+01 1.0499999963176371e+01 0 0 0 +4555 1 -8.3289035926185221e+01 6.2903213619440841e+01 6.9999999770422869e+00 0 0 0 +4561 1 -8.2732307295005342e+01 6.1244487678178480e+01 8.7499999696442181e+00 0 0 0 +5250 1 -8.1049142747794647e+01 6.1807757518450387e+01 1.0500000000753307e+01 0 0 0 +4612 1 -8.0489602679203941e+01 6.0150329856694839e+01 8.7499999807041231e+00 0 0 0 +4611 1 -7.8805834297901541e+01 6.0712103440684572e+01 6.9999999861057143e+00 0 0 0 +4613 1 -7.9367521131969966e+01 6.2369999232048585e+01 8.7499999717813370e+00 0 0 0 +4662 1 -7.7684224009454141e+01 6.2931369376420037e+01 6.9999999673364899e+00 0 0 0 +4664 1 -7.7122769527059717e+01 6.1273799473859924e+01 8.7500000006516228e+00 0 0 0 +4669 1 -7.4878098919831388e+01 6.0177741431308334e+01 8.7499999971199625e+00 0 0 0 +5303 1 -7.5439348569329496e+01 6.1835269292093514e+01 1.0500000010268264e+01 0 0 0 +4715 1 -7.2072253415562216e+01 6.2958190356641325e+01 7.0000000059555578e+00 0 0 0 +4716 1 -7.3755787451482504e+01 6.2396716627458012e+01 8.7499999589286812e+00 0 0 0 +4718 1 -7.3194615537502003e+01 6.0739221666102047e+01 6.9999999976780307e+00 0 0 0 +4721 1 -7.1511091361806805e+01 6.1300691437469055e+01 8.7500000039056118e+00 0 0 0 +4772 1 -6.9266400553862681e+01 6.0204664558727558e+01 8.7500000193929424e+00 0 0 0 +4773 1 -6.8144054511773049e+01 6.2423643865440972e+01 8.7500000432969269e+00 0 0 0 +5410 1 -6.9827570109537803e+01 6.1862166565955320e+01 1.0500000022511497e+01 0 0 0 +4771 1 -6.7582883187494488e+01 6.0766140579768823e+01 7.0000000204379900e+00 0 0 0 +4822 1 -6.6460539411255041e+01 6.2985120601955259e+01 7.0000000295833846e+00 0 0 0 +4824 1 -6.5899367114177224e+01 6.1327617204510339e+01 8.7499999740840391e+00 0 0 0 +4823 1 -6.4215851422435833e+01 6.1889093733655422e+01 6.9999999701481288e+00 0 0 0 +4829 1 -6.3654679334628739e+01 6.0231590415846007e+01 8.7499999768509653e+00 0 0 0 +4876 1 -6.2532335444387527e+01 6.2450570193776606e+01 8.7499999918824827e+00 0 0 0 +5518 1 -6.1971163374474827e+01 6.0793067005917152e+01 1.0500000004179691e+01 0 0 0 +4881 1 -6.0287647418911725e+01 6.1354543604249933e+01 8.7499999959644708e+00 0 0 0 +4930 1 -5.8604131422889488e+01 6.1916020253484504e+01 7.0000000209530997e+00 0 0 0 +4932 1 -5.8042959354304848e+01 6.0258517112206228e+01 8.7500000064674985e+00 0 0 0 +5570 1 -5.8604131443690562e+01 6.1916020233582692e+01 1.0500000020970850e+01 0 0 0 +4933 1 -5.6920615287474135e+01 6.2477496684945002e+01 8.7500000363848009e+00 0 0 0 +5571 1 -5.6359443321416670e+01 6.0819993581231266e+01 1.0500000016896481e+01 0 0 0 +5622 1 -5.5237099355496056e+01 6.3038973217408568e+01 1.0500000020274637e+01 0 0 0 +4983 1 -5.2992411314312847e+01 6.1942946315743242e+01 7.0000000292063405e+00 0 0 0 +4984 1 -5.4675927220368678e+01 6.1381469984798755e+01 8.7500000606847443e+00 0 0 0 +4989 1 -5.2431239268857325e+01 6.0285443144541979e+01 8.7500000226550458e+00 0 0 0 +5623 1 -5.2992411284584840e+01 6.1942946283818365e+01 1.0500000010608217e+01 0 0 0 +5036 1 -5.1308895339149103e+01 6.2504422682909002e+01 8.7499999974110523e+00 0 0 0 +5041 1 -4.9064207318295125e+01 6.1408395805573377e+01 8.7499999613238657e+00 0 0 0 +5675 1 -4.9625379322003646e+01 6.3065898861098390e+01 1.0499999988233098e+01 0 0 0 +5678 1 -5.0747723260639297e+01 6.0846919476887138e+01 1.0499999987150721e+01 0 0 0 +5086 1 -4.6819519294688078e+01 6.0312368982706552e+01 8.7499999615798121e+00 0 0 0 +5087 1 -4.5697175234955026e+01 6.2531348452531851e+01 8.7499999478287940e+00 0 0 0 +5725 1 -4.7380691277302937e+01 6.1969872133996958e+01 1.0499999984923114e+01 0 0 0 +4508 1 -8.7753273270346938e+01 6.5116139934157374e+01 7.0000000109425393e+00 0 0 0 +4509 1 -8.9214901447116702e+01 6.4473222311991449e+01 8.7500000534792406e+00 0 0 0 +4514 1 -8.7168422147966226e+01 6.3390960941531809e+01 8.7499999819633985e+00 0 0 0 +4552 1 -8.6132426015588067e+01 6.5675167182694338e+01 8.7499999510630477e+00 0 0 0 +4557 1 -8.3862483937506695e+01 6.4566510398895062e+01 8.7499999641174675e+00 0 0 0 +5194 1 -8.5523443002680168e+01 6.3999012706155135e+01 1.0499999962253415e+01 0 0 0 +5191 1 -8.4431590312055278e+01 6.6221179675669433e+01 1.0499999957901181e+01 0 0 0 +4606 1 -8.2176992955518571e+01 6.5124348418881922e+01 6.9999999543701366e+00 0 0 0 +4608 1 -8.1612969766615564e+01 6.3466856723762639e+01 8.7499999546071248e+00 0 0 0 +4609 1 -8.0489602648703354e+01 6.5684315846791549e+01 8.7499999648944122e+00 0 0 0 +4660 1 -7.8245180051290021e+01 6.4588680000765592e+01 8.7499999405523248e+00 0 0 0 +5247 1 -7.9929642937935313e+01 6.4027630017666667e+01 1.0499999987954926e+01 0 0 0 +5298 1 -7.8805834271328763e+01 6.6246089526455052e+01 1.0499999997769406e+01 0 0 0 +4659 1 -7.6561515579190925e+01 6.5150192830939275e+01 6.9999999621654974e+00 0 0 0 +4665 1 -7.6000492274019095e+01 6.3492730523975261e+01 8.7499999752348074e+00 0 0 0 +4712 1 -7.4878098910680734e+01 6.5711727588145422e+01 8.7499999768975396e+00 0 0 0 +5354 1 -7.4316919764353955e+01 6.4054205792530553e+01 1.0500000008908236e+01 0 0 0 +4717 1 -7.2633423491110563e+01 6.4615696862407901e+01 8.7500000239065105e+00 0 0 0 +4766 1 -7.0949917498946718e+01 6.5177175813923071e+01 7.0000000332491830e+00 0 0 0 +4768 1 -7.0388740760315784e+01 6.3519670280012093e+01 8.7500000348742510e+00 0 0 0 +4769 1 -6.9266400470624546e+01 6.5738650805399246e+01 8.7500000385484995e+00 0 0 0 +5407 1 -6.8705227563833091e+01 6.4081147667925094e+01 1.0500000030017217e+01 0 0 0 +4820 1 -6.7021711590156457e+01 6.4642623925555043e+01 8.7500000456526088e+00 0 0 0 +4825 1 -6.4777023380225913e+01 6.3546596971444053e+01 8.7499999951928480e+00 0 0 0 +4874 1 -6.3093507302881825e+01 6.4108073444745472e+01 6.9999999794644125e+00 0 0 0 +4872 1 -6.3654679329584731e+01 6.5765576574939061e+01 8.7499999848492589e+00 0 0 0 +4877 1 -6.1409991335222884e+01 6.4669549878111255e+01 8.7499999882180362e+00 0 0 0 +4871 1 -6.1971163421923592e+01 6.6327053112176088e+01 6.9999999596960771e+00 0 0 0 +5511 1 -6.1971163381965361e+01 6.6327053128033896e+01 1.0500000012347757e+01 0 0 0 +5514 1 -6.3093507261725932e+01 6.4108073438234328e+01 1.0500000010688426e+01 0 0 0 +4928 1 -5.9165303386499467e+01 6.3573523358785330e+01 8.7500000012084023e+00 0 0 0 +4929 1 -5.8042959380295024e+01 6.5792503131105420e+01 8.7500000399030924e+00 0 0 0 +4927 1 -5.7481787292090445e+01 6.4134999879252987e+01 7.0000000369094471e+00 0 0 0 +4980 1 -5.5798271339340396e+01 6.4696476370709348e+01 8.7500000533403295e+00 0 0 0 +5567 1 -5.7481787302443273e+01 6.4134999877963395e+01 1.0500000028285722e+01 0 0 0 +4978 1 -5.6359443336742189e+01 6.6353979588139993e+01 7.0000000311345785e+00 0 0 0 +5618 1 -5.6359443375670381e+01 6.6353979584032245e+01 1.0500000035584627e+01 0 0 0 +4985 1 -5.3553583390306706e+01 6.3600449491449460e+01 8.7500000484958296e+00 0 0 0 +5032 1 -5.2431239326023906e+01 6.5819429067406872e+01 8.7500000295466585e+00 0 0 0 +5674 1 -5.1870067346104769e+01 6.4161925828418859e+01 1.0500000012162836e+01 0 0 0 +5619 1 -5.4114755311885652e+01 6.5257952783191868e+01 1.0500000025983331e+01 0 0 0 +5037 1 -5.0186551401008117e+01 6.4723402112865045e+01 8.7499999945704570e+00 0 0 0 +5671 1 -5.0747723318527306e+01 6.6380905292485394e+01 1.0499999995916591e+01 0 0 0 +5721 1 -4.8503035393372876e+01 6.5284878459307308e+01 1.0499999982347969e+01 0 0 0 +5083 1 -4.7941863337182980e+01 6.3627375254043486e+01 8.7499999465102540e+00 0 0 0 +5084 1 -4.6819519373556034e+01 6.5846354695051545e+01 8.7499999576220056e+00 0 0 0 +5722 1 -4.6258347311347428e+01 6.4188851538133193e+01 1.0499999967141013e+01 0 0 0 +4510 1 -8.8549510072101569e+01 6.6773149788048670e+01 8.7500000106886784e+00 0 0 0 +4548 1 -8.7168422199103333e+01 6.8924946414811117e+01 8.7500000145626640e+00 0 0 0 +5145 1 -8.9045575947584183e+01 6.8372562507377737e+01 1.0499999964968191e+01 0 0 0 +4550 1 -8.6710920699292060e+01 6.7319095204483560e+01 7.0000000378638205e+00 0 0 0 +4553 1 -8.4964193311066140e+01 6.7868385188603440e+01 8.7499999634988708e+00 0 0 0 +4603 1 -8.1049142826851082e+01 6.7341743339171927e+01 6.9999999180194692e+00 0 0 0 +4604 1 -8.2732307320095160e+01 6.6778473502678452e+01 8.7499999657748653e+00 0 0 0 +4605 1 -8.1612969853847531e+01 6.9000842459902501e+01 8.7499999313052772e+00 0 0 0 +4656 1 -7.9367521192814920e+01 6.7903985151227474e+01 8.7499999277066607e+00 0 0 0 +4661 1 -7.7122769562237565e+01 6.6807785513910915e+01 8.7499999354422435e+00 0 0 0 +4708 1 -7.6000492424466614e+01 6.9026716502504982e+01 8.7499999326478832e+00 0 0 0 +4710 1 -7.5439348622677088e+01 6.7369255352496722e+01 6.9999999692928920e+00 0 0 0 +5350 1 -7.5439348604901113e+01 6.7369255332385322e+01 1.0499999979316103e+01 0 0 0 +4713 1 -7.3755787536123634e+01 6.7930702688246527e+01 8.7499999812530351e+00 0 0 0 +4764 1 -7.1511091371167183e+01 6.6834677639801839e+01 8.7500000194373797e+00 0 0 0 +4763 1 -6.9827570161818073e+01 6.7396152857570755e+01 7.0000000457148897e+00 0 0 0 +4765 1 -7.0388740890385264e+01 6.9053656500071540e+01 8.7500000215383107e+00 0 0 0 +4816 1 -6.8144054563360299e+01 6.7957630127161110e+01 8.7500000336773756e+00 0 0 0 +5403 1 -6.9827570176397714e+01 6.7396152807636156e+01 1.0500000024725983e+01 0 0 0 +4821 1 -6.5899367140327243e+01 6.6861603437498673e+01 8.7500000422056008e+00 0 0 0 +4868 1 -6.4777023505562994e+01 6.9080583221186700e+01 8.7500000367574682e+00 0 0 0 +4873 1 -6.2532335532202190e+01 6.7984556369914003e+01 8.7499999855351884e+00 0 0 0 +4922 1 -6.0848819425061393e+01 6.8546032907493725e+01 6.9999999702743549e+00 0 0 0 +4924 1 -6.0287647478177924e+01 6.6888529689942004e+01 8.7499999999225775e+00 0 0 0 +4925 1 -5.9165303558261513e+01 6.9107509494725662e+01 8.7500000145121852e+00 0 0 0 +5562 1 -6.0848819441958291e+01 6.8546032894639239e+01 1.0500000001651713e+01 0 0 0 +4975 1 -5.5237099470756270e+01 6.8572959289577042e+01 7.0000000579795314e+00 0 0 0 +4976 1 -5.6920615400643548e+01 6.8011482735553983e+01 8.7500000399243625e+00 0 0 0 +5615 1 -5.5237099542380776e+01 6.8572959268653918e+01 1.0500000041668592e+01 0 0 0 +4981 1 -5.4675927255789617e+01 6.6915455950616547e+01 8.7500000616273415e+00 0 0 0 +5028 1 -5.3553583526232899e+01 6.9134435515517268e+01 8.7500000614976337e+00 0 0 0 +5670 1 -5.2992411374442206e+01 6.7476932238423700e+01 1.0500000014386005e+01 0 0 0 +5033 1 -5.1308895482704564e+01 6.8038408612155735e+01 8.7500000425371098e+00 0 0 0 +5079 1 -4.9064207403944053e+01 6.6942381592670515e+01 8.7499999983239345e+00 0 0 0 +5717 1 -4.9625379413991922e+01 6.8599884742071907e+01 1.0500000010497827e+01 0 0 0 +5080 1 -4.7941863387492752e+01 6.9161361058749478e+01 8.7499999585714434e+00 0 0 0 +5111 1 -4.5697175274251762e+01 6.8065334141656635e+01 8.7499999334912992e+00 0 0 0 +5718 1 -4.7380691388759956e+01 6.7503857897086363e+01 1.0499999973777783e+01 0 0 0 +4506 1 -8.9214901546562473e+01 7.0007207700011449e+01 8.7500000297743767e+00 0 0 0 +4544 1 -8.8549510184864673e+01 7.2307135140760110e+01 8.7500000536173825e+00 0 0 0 +4598 1 -8.4431590640719776e+01 7.1755165030191790e+01 6.9999999546044043e+00 0 0 0 +4547 1 -8.5523443228077795e+01 6.9532998198728080e+01 6.9999999868786125e+00 0 0 0 +4549 1 -8.6132426170879270e+01 7.1209152584389571e+01 8.7500000305000860e+00 0 0 0 +4600 1 -8.3862484054894523e+01 7.0100495947682106e+01 8.7499999525572019e+00 0 0 0 +5238 1 -8.4431590502183070e+01 7.1755165097806696e+01 1.0500000003232538e+01 0 0 0 +4601 1 -8.2732307542955411e+01 7.2312458954624688e+01 8.7499999317367969e+00 0 0 0 +4651 1 -7.8805834594161013e+01 7.1780075228698379e+01 6.9999999057713227e+00 0 0 0 +4654 1 -7.9929643133107916e+01 6.9561615723602401e+01 6.9999999070364698e+00 0 0 0 +4652 1 -8.0489602858943769e+01 7.1218301526911617e+01 8.7499999180124330e+00 0 0 0 +4657 1 -7.8245180255603046e+01 7.0122665867265937e+01 8.7499999252025908e+00 0 0 0 +5291 1 -7.8805834517831386e+01 7.1780075289600077e+01 1.0499999983064399e+01 0 0 0 +5294 1 -7.9929643045992748e+01 6.9561615798512648e+01 1.0499999987898800e+01 0 0 0 +4707 1 -7.4316919954531315e+01 6.9588191829677626e+01 6.9999999797791661e+00 0 0 0 +4704 1 -7.7122769926291539e+01 7.2341771385886204e+01 8.7499999347941930e+00 0 0 0 +4709 1 -7.4878099222254690e+01 7.1245713574009514e+01 8.7499999472048557e+00 0 0 0 +5347 1 -7.4316919971679525e+01 6.9588191826175901e+01 1.0499999964718372e+01 0 0 0 +4758 1 -7.3194615846816632e+01 7.1807193896308249e+01 7.0000000249067815e+00 0 0 0 +4760 1 -7.2633423708501354e+01 7.0149682989890181e+01 8.7499999805133584e+00 0 0 0 +4761 1 -7.1511091713778598e+01 7.2368663778671518e+01 8.7500000042096318e+00 0 0 0 +5398 1 -7.3194615900850209e+01 7.1807193835507945e+01 1.0499999951766185e+01 0 0 0 +4814 1 -6.8705227728363781e+01 6.9615133972077544e+01 7.0000000603302812e+00 0 0 0 +4812 1 -6.9266400724916593e+01 7.1272637056424685e+01 8.7500000475068536e+00 0 0 0 +5454 1 -6.8705227730119773e+01 6.9615133927684852e+01 1.0500000017321980e+01 0 0 0 +4811 1 -6.7582883375794310e+01 7.1834113119578035e+01 7.0000000374096034e+00 0 0 0 +4817 1 -6.7021711753309233e+01 7.0176610206723993e+01 8.7500000497361583e+00 0 0 0 +4864 1 -6.5899367389174955e+01 7.2395589758626599e+01 8.7500000058049512e+00 0 0 0 +4866 1 -6.5338195588743545e+01 7.0738086498316434e+01 7.0000000049729776e+00 0 0 0 +5506 1 -6.5338195548133641e+01 7.0738086483397751e+01 1.0500000023502034e+01 0 0 0 +5451 1 -6.7582883413640531e+01 7.1834113097644490e+01 1.0500000033549888e+01 0 0 0 +4869 1 -6.3654679531985529e+01 7.1299562873280692e+01 8.7500000093477688e+00 0 0 0 +4920 1 -6.1409991545141793e+01 7.0203536103969356e+01 8.7499999630157763e+00 0 0 0 +4919 1 -5.9726475569098064e+01 7.0765012665923237e+01 6.9999999600267744e+00 0 0 0 +4921 1 -6.0287647738990117e+01 7.2422515881791412e+01 8.7499999859830506e+00 0 0 0 +4972 1 -5.8042959587146434e+01 7.1326489232928054e+01 8.7500000201055528e+00 0 0 0 +5559 1 -5.9726475628685066e+01 7.0765012686311138e+01 1.0500000011408517e+01 0 0 0 +4977 1 -5.5798271543999945e+01 7.0230462461694188e+01 8.7500000665672655e+00 0 0 0 +5024 1 -5.4675927421007970e+01 7.2449441972849627e+01 8.7500001055618934e+00 0 0 0 +5026 1 -5.4114755460469134e+01 7.0791938802275638e+01 7.0000000651443859e+00 0 0 0 +5029 1 -5.2431239393193913e+01 7.1353415018724533e+01 8.7500000874646435e+00 0 0 0 +5075 1 -5.0186551450884792e+01 7.0257388012272841e+01 8.7500000296065039e+00 0 0 0 +5076 1 -4.9064207355639887e+01 7.2476367503232311e+01 8.7500000024747386e+00 0 0 0 +5714 1 -4.8503035373627426e+01 7.0818864318817973e+01 1.0499999981663811e+01 0 0 0 +5108 1 -4.6819519316156558e+01 7.1380340496759374e+01 8.7499999549267233e+00 0 0 0 +5750 1 -4.6258347288913669e+01 6.9722837265730320e+01 1.0499999968879923e+01 0 0 0 +4542 1 -8.9045576045583374e+01 7.3906547927936430e+01 7.0000000985653612e+00 0 0 0 +4540 1 -8.9214901521933584e+01 7.5541192993811634e+01 8.7500001802205780e+00 0 0 0 +4545 1 -8.7168422420870044e+01 7.4458931707681103e+01 8.7500000566085294e+00 0 0 0 +5182 1 -8.9045576004364136e+01 7.3906547790332866e+01 1.0500000058238676e+01 0 0 0 +4596 1 -8.4964193528875469e+01 7.3402370496929549e+01 8.7499999919464546e+00 0 0 0 +4597 1 -8.3862484509895324e+01 7.5634481232302335e+01 8.7499999507118478e+00 0 0 0 +4595 1 -8.3289036410890205e+01 7.3971184629207428e+01 6.9999999153651435e+00 0 0 0 +4648 1 -8.1612970306779758e+01 7.4534827910905705e+01 8.7499999218522095e+00 0 0 0 +5235 1 -8.3289036219205428e+01 7.3971184704804003e+01 1.0500000004396723e+01 0 0 0 +4702 1 -7.7684224567716058e+01 7.3999341116400828e+01 6.9999999262766783e+00 0 0 0 +4653 1 -7.9367521605713904e+01 7.3437970817787047e+01 8.7499999113308036e+00 0 0 0 +4700 1 -7.8245180801953495e+01 7.5656651578851765e+01 8.7499999047332331e+00 0 0 0 +5342 1 -7.7684224542308570e+01 7.3999341121450755e+01 1.0499999945398361e+01 0 0 0 +4705 1 -7.6000492928882309e+01 7.4560702417211971e+01 8.7499999347903916e+00 0 0 0 +4755 1 -7.2072253906234138e+01 7.4026162590724596e+01 7.0000000282210513e+00 0 0 0 +4756 1 -7.3755787969640451e+01 7.3464688743319144e+01 8.7499999495631542e+00 0 0 0 +4757 1 -7.2633424166845487e+01 7.5683668982477855e+01 8.7500000075516073e+00 0 0 0 +5395 1 -7.2072253951317322e+01 7.4026162535653683e+01 1.0499999979625711e+01 0 0 0 +4808 1 -7.0388741270067754e+01 7.4587642620615597e+01 8.7500000339334392e+00 0 0 0 +4813 1 -6.8144054876085136e+01 7.3491616387912885e+01 8.7500000525015462e+00 0 0 0 +4862 1 -6.6460539801042003e+01 7.4053093151948914e+01 7.0000000371950160e+00 0 0 0 +4860 1 -6.7021712112946190e+01 7.5710596437278767e+01 8.7500000496826402e+00 0 0 0 +4865 1 -6.4777023807497983e+01 7.4614569529994256e+01 8.7500000103227400e+00 0 0 0 +5502 1 -6.6460539788258927e+01 7.4053093149514709e+01 1.0500000039637783e+01 0 0 0 +4863 1 -6.4215851707908527e+01 7.2957066245562316e+01 6.9999999757808933e+00 0 0 0 +4914 1 -6.3093507742504855e+01 7.5176045933464522e+01 6.9999999693546568e+00 0 0 0 +4916 1 -6.2532335818573806e+01 7.3518542636263604e+01 8.7499999885891473e+00 0 0 0 +4917 1 -6.1409991802347719e+01 7.5737522290545030e+01 8.7499999715910715e+00 0 0 0 +5503 1 -6.4215851676753971e+01 7.2957066225536877e+01 1.0500000010364969e+01 0 0 0 +5554 1 -6.3093507738969222e+01 7.5176045955054235e+01 1.0500000005676995e+01 0 0 0 +4968 1 -5.9165303793371990e+01 7.4641495600044649e+01 8.7500000046017448e+00 0 0 0 +4970 1 -5.8604131703397407e+01 7.2983992399862302e+01 6.9999999999175424e+00 0 0 0 +5610 1 -5.8604131793617626e+01 7.2983992438372098e+01 1.0500000028604425e+01 0 0 0 +4967 1 -5.7481787620244404e+01 7.5202971999819823e+01 7.0000000122097834e+00 0 0 0 +4973 1 -5.6920615594052009e+01 7.3545468782553229e+01 8.7500000550363080e+00 0 0 0 +5020 1 -5.5798271647799190e+01 7.5764448415559414e+01 8.7500000708236563e+00 0 0 0 +5607 1 -5.7481787717996433e+01 7.5202972009992706e+01 1.0500000050250922e+01 0 0 0 +5023 1 -5.2992411453187209e+01 7.3010918213465061e+01 7.0000000696810591e+00 0 0 0 +5025 1 -5.3553583584200766e+01 7.4668421471322219e+01 8.7500001000502898e+00 0 0 0 +5069 1 -5.1870067484721581e+01 7.5229897755301693e+01 7.0000000551534294e+00 0 0 0 +5071 1 -5.1308895435771412e+01 7.3572394551672588e+01 8.7500000546708012e+00 0 0 0 +5072 1 -5.0186551412293888e+01 7.5791374004041643e+01 8.7500000283268431e+00 0 0 0 +5104 1 -4.6258347260315134e+01 7.5256823180035497e+01 6.9999999307303238e+00 0 0 0 +5105 1 -4.7941863297312494e+01 7.4695347004918915e+01 8.7499999497928727e+00 0 0 0 +5107 1 -4.7380691317771756e+01 7.3037843827715250e+01 6.9999999463216280e+00 0 0 0 +5109 1 -4.5697175188210608e+01 7.3599320004235096e+01 8.7499999190526125e+00 0 0 0 +5744 1 -4.6258347234477043e+01 7.5256823230435430e+01 1.0499999936395708e+01 0 0 0 +5747 1 -4.7380691254345415e+01 7.3037843763577712e+01 1.0499999977657760e+01 0 0 0 +4539 1 -8.7753273694344031e+01 7.6184110585707401e+01 7.0000000741722452e+00 0 0 0 +4541 1 -8.8549510475993586e+01 7.7841120508169439e+01 8.7500001360552773e+00 0 0 0 +5179 1 -8.7753273508253358e+01 7.6184110546460502e+01 1.0500000039497360e+01 0 0 0 +4590 1 -8.6710921357815636e+01 7.8387065824249163e+01 7.0000000026174227e+00 0 0 0 +4592 1 -8.6132426550549226e+01 7.6743137846536186e+01 8.7500000122594130e+00 0 0 0 +5230 1 -8.6710921119758439e+01 7.8387065840665741e+01 1.0500000051578697e+01 0 0 0 +4643 1 -8.1049143816731601e+01 7.8409714319049684e+01 6.9999998745652139e+00 0 0 0 +4646 1 -8.2176993695617114e+01 7.6192319402997668e+01 6.9999998806246468e+00 0 0 0 +4644 1 -8.2732308215469473e+01 7.7846444322901348e+01 8.7499998933505907e+00 0 0 0 +5283 1 -8.1049143746728262e+01 7.8409714380275020e+01 1.0499999936266107e+01 0 0 0 +5286 1 -8.2176993546508569e+01 7.6192319479220899e+01 1.0499999969199848e+01 0 0 0 +4649 1 -8.0489603499776536e+01 7.6752287022096368e+01 8.7499999026400896e+00 0 0 0 +4699 1 -7.6561516330056776e+01 7.6218164584889649e+01 6.9999999774271098e+00 0 0 0 +4750 1 -7.5439349477851295e+01 7.8437227104142295e+01 6.9999999885180122e+00 0 0 0 +4701 1 -7.7122770486638515e+01 7.7875757108081061e+01 8.7499999245978692e+00 0 0 0 +4752 1 -7.4878099722349461e+01 7.6779699466205855e+01 8.7499999624964406e+00 0 0 0 +5339 1 -7.6561516361565012e+01 7.6218164608239817e+01 1.0499999947521410e+01 0 0 0 +5390 1 -7.5439349529617559e+01 7.8437227070539862e+01 1.0499999949709411e+01 0 0 0 +4806 1 -7.0949918148315135e+01 7.6245148010695146e+01 7.0000000322922391e+00 0 0 0 +4804 1 -7.1511092163760978e+01 7.7902649707669866e+01 8.7500000262570001e+00 0 0 0 +5446 1 -7.0949918212877805e+01 7.6245147972065624e+01 1.0500000018808494e+01 0 0 0 +4803 1 -6.9827570916586026e+01 7.8464125043555768e+01 7.0000000194078638e+00 0 0 0 +4809 1 -6.9266401112548934e+01 7.6806623132747475e+01 8.7500000592619749e+00 0 0 0 +5443 1 -6.9827570956652721e+01 7.8464124969305260e+01 1.0500000052868980e+01 0 0 0 +4861 1 -6.5899367756134140e+01 7.7929575944600117e+01 8.7500000309084935e+00 0 0 0 +4911 1 -6.1971163914653722e+01 7.7395025553163592e+01 6.9999999538247533e+00 0 0 0 +4912 1 -6.3654679854732429e+01 7.6833549093489282e+01 8.7499999911797843e+00 0 0 0 +5551 1 -6.1971163915267688e+01 7.7395025593774079e+01 1.0500000001201430e+01 0 0 0 +4964 1 -6.0287647973680009e+01 7.7956502015871195e+01 8.7499999597314702e+00 0 0 0 +4969 1 -5.8042959788157901e+01 7.6860475298178869e+01 8.7500000178968342e+00 0 0 0 +5018 1 -5.6359443668749662e+01 7.7421951627680926e+01 7.0000000303473957e+00 0 0 0 +5021 1 -5.4675927532091293e+01 7.7983427933458174e+01 8.7500000877217641e+00 0 0 0 +5067 1 -5.2431239466085714e+01 7.6887401021862445e+01 8.7500000744084794e+00 0 0 0 +5103 1 -4.8503035408145145e+01 7.6352850298547423e+01 6.9999999714417012e+00 0 0 0 +5066 1 -5.0747723433588590e+01 7.7448877277039600e+01 7.0000000414019787e+00 0 0 0 +5101 1 -4.9064207359355400e+01 7.8010353533612133e+01 8.7500000076606064e+00 0 0 0 +5100 1 -4.7380691296069372e+01 7.8571829829884408e+01 6.9999999451132391e+00 0 0 0 +5106 1 -4.6819519285268910e+01 7.6914326491005582e+01 8.7499999437255607e+00 0 0 0 +4537 1 -8.9214901570779872e+01 8.1075178573236158e+01 8.7500002025449692e+00 0 0 0 +4588 1 -8.7168422830158448e+01 7.9992917122029283e+01 8.7500000654135093e+00 0 0 0 +4587 1 -8.5523444195587359e+01 8.0600968863438283e+01 6.9999999165235289e+00 0 0 0 +4593 1 -8.4964194113628039e+01 7.8936355827637357e+01 8.7499999375890152e+00 0 0 0 +4640 1 -8.3862485165970384e+01 8.1168466629460113e+01 8.7499998873221720e+00 0 0 0 +5227 1 -8.5523443992494663e+01 8.0600968919463028e+01 1.0500000005659174e+01 0 0 0 +4645 1 -8.1612970996635596e+01 8.0068813301344662e+01 8.7499998636938479e+00 0 0 0 +4694 1 -7.9929644214371379e+01 8.0629586765512300e+01 6.9999999061225227e+00 0 0 0 +4696 1 -7.9367522240669814e+01 7.8971956358160853e+01 8.7499998895906721e+00 0 0 0 +4697 1 -7.8245181369157450e+01 8.1190637116371974e+01 8.7499999158553248e+00 0 0 0 +5334 1 -7.9929644213643400e+01 8.0629586838324016e+01 1.0499999903074976e+01 0 0 0 +4747 1 -7.4316920875812471e+01 8.0656163558004991e+01 6.9999999799772032e+00 0 0 0 +4748 1 -7.6000493403947388e+01 8.0094688103457969e+01 8.7499999525571877e+00 0 0 0 +5387 1 -7.4316920958573164e+01 8.0656163522765567e+01 1.0499999979389681e+01 0 0 0 +4753 1 -7.3755788437923670e+01 7.8998674539423391e+01 8.7500000014300721e+00 0 0 0 +4800 1 -7.2633424651517402e+01 8.1217654754130677e+01 8.7500000089718721e+00 0 0 0 +4854 1 -6.8705228530656527e+01 8.0683106095125055e+01 7.0000000448612418e+00 0 0 0 +4805 1 -7.0388741768054473e+01 8.0121628511278459e+01 8.7500000189301819e+00 0 0 0 +4856 1 -6.8144055301074573e+01 7.9025602409366883e+01 8.7500000566104461e+00 0 0 0 +5494 1 -6.8705228528430567e+01 8.0683106039444752e+01 1.0500000051059576e+01 0 0 0 +4857 1 -6.7021712477289185e+01 8.1244582426862422e+01 8.7500000628485264e+00 0 0 0 +4906 1 -6.5338196176532691e+01 8.1806058818791342e+01 7.0000000262139599e+00 0 0 0 +4908 1 -6.4777024116825913e+01 8.0148555652744477e+01 8.7500000233988366e+00 0 0 0 +5546 1 -6.5338196143644879e+01 8.1806058808193484e+01 1.0500000018596468e+01 0 0 0 +4913 1 -6.2532336056100036e+01 7.9052528828535017e+01 8.7499999616379984e+00 0 0 0 +4960 1 -6.1409991992801864e+01 8.1271508441046265e+01 8.7499999300943792e+00 0 0 0 +4959 1 -5.9726475964375183e+01 8.1832984876841905e+01 6.9999999448549541e+00 0 0 0 +4962 1 -6.0848819916358885e+01 7.9614005245512033e+01 6.9999999570403535e+00 0 0 0 +4965 1 -5.9165303991519131e+01 8.0175481705856413e+01 8.7499999701991413e+00 0 0 0 +5599 1 -5.9726476027823232e+01 8.1832984903868891e+01 1.0499999960567573e+01 0 0 0 +5602 1 -6.0848819937615019e+01 7.9614005282396420e+01 1.0499999975835342e+01 0 0 0 +5015 1 -5.5237099755769989e+01 7.9640931256205548e+01 7.0000000613781337e+00 0 0 0 +5016 1 -5.6920615767685852e+01 7.9079454784228417e+01 8.7500000338736044e+00 0 0 0 +5017 1 -5.5798271844344690e+01 8.1298434414247666e+01 8.7500000193837835e+00 0 0 0 +5061 1 -5.4114755673546732e+01 8.1859910716346278e+01 7.0000000661658381e+00 0 0 0 +5063 1 -5.3553583735407678e+01 8.0202407458858204e+01 8.7500000721639761e+00 0 0 0 +5068 1 -5.1308895539596101e+01 7.9106380576167766e+01 8.7500000600007422e+00 0 0 0 +5096 1 -4.8503035386693085e+01 8.1886836282064891e+01 7.0000000051977906e+00 0 0 0 +5097 1 -5.0186551454859107e+01 8.1325359999629711e+01 8.7500000312499520e+00 0 0 0 +5099 1 -4.9625379443392603e+01 7.9667856719218108e+01 7.0000000109115508e+00 0 0 0 +5119 1 -4.6258347265627172e+01 8.0790809225286779e+01 6.9999999448834558e+00 0 0 0 +5102 1 -4.7941863315764962e+01 8.0229333040067516e+01 8.7499999507048276e+00 0 0 0 +5120 1 -4.5697175176456994e+01 7.9133305993315091e+01 8.7499999139174633e+00 0 0 0 +4582 1 -8.9045576318548100e+01 8.4974519060139315e+01 7.0000001401679617e+00 0 0 0 +4584 1 -8.8549510875886682e+01 8.3375106214282866e+01 8.7500001774732752e+00 0 0 0 +5222 1 -8.9045576238944037e+01 8.4974519138138817e+01 1.0500000222136187e+01 0 0 0 +4589 1 -8.6132427107962343e+01 8.2277123376493307e+01 8.7500000091489021e+00 0 0 0 +4636 1 -8.4964194640873117e+01 8.4470341323486338e+01 8.7499999187318309e+00 0 0 0 +4638 1 -8.4431591726224113e+01 8.2823135741947880e+01 6.9999998535204648e+00 0 0 0 +5278 1 -8.4431591579759328e+01 8.2823135815666433e+01 1.0499999962910996e+01 0 0 0 +4635 1 -8.3289037541196336e+01 8.5039155410975312e+01 6.9999998326023016e+00 0 0 0 +4641 1 -8.2732308755620565e+01 8.3380429676118325e+01 8.7499998469269791e+00 0 0 0 +5275 1 -8.3289037479701378e+01 8.5039155480369786e+01 1.0499999937795156e+01 0 0 0 +4691 1 -7.8805835704784968e+01 8.2848046325204749e+01 6.9999999216412050e+00 0 0 0 +4742 1 -7.7684225652181411e+01 8.5067312267082116e+01 6.9999999518175695e+00 0 0 0 +4692 1 -8.0489604083710816e+01 8.2286272423536275e+01 8.7499998617434667e+00 0 0 0 +4693 1 -7.9367522827142579e+01 8.4505941780686442e+01 8.7499999120021084e+00 0 0 0 +5331 1 -7.8805835753941153e+01 8.2848046373762742e+01 1.0499999925740488e+01 0 0 0 +5382 1 -7.7684225759899590e+01 8.5067312254004079e+01 1.0499999946051977e+01 0 0 0 +4744 1 -7.7122771035434440e+01 8.3409742670644434e+01 8.7499999648241129e+00 0 0 0 +4749 1 -7.4878100235376834e+01 8.2313685148731651e+01 8.7499999786947775e+00 0 0 0 +4795 1 -7.2072254776781051e+01 8.5094134150132220e+01 7.0000000176731634e+00 0 0 0 +4798 1 -7.3194616790199319e+01 8.2875165555644699e+01 7.0000000047712110e+00 0 0 0 +4796 1 -7.3755788942681448e+01 8.4532660251078582e+01 8.7499999834834092e+00 0 0 0 +4801 1 -7.1511092637768954e+01 8.3436635456460408e+01 8.7500000204619983e+00 0 0 0 +5435 1 -7.2072254860654184e+01 8.5094134067399921e+01 1.0500000010757987e+01 0 0 0 +5438 1 -7.3194616892949895e+01 8.2875165472305582e+01 1.0499999988935514e+01 0 0 0 +4852 1 -6.9266401574334395e+01 8.2340608976201722e+01 8.7500000592324145e+00 0 0 0 +4853 1 -6.8144055557019158e+01 8.4559588211471819e+01 8.7500000839560599e+00 0 0 0 +4851 1 -6.7582884075256345e+01 8.2902085165783490e+01 7.0000000593610618e+00 0 0 0 +4902 1 -6.6460540296562769e+01 8.5121065103212501e+01 7.0000000858773017e+00 0 0 0 +4904 1 -6.5899367953276311e+01 8.3463561889259367e+01 8.7500000283230950e+00 0 0 0 +5491 1 -6.7582884118778381e+01 8.2902085132364675e+01 1.0500000053316807e+01 0 0 0 +5542 1 -6.6460540282015970e+01 8.5121065099551998e+01 1.0500000035818397e+01 0 0 0 +4903 1 -6.4215852140410462e+01 8.4025038437551146e+01 7.0000000108913962e+00 0 0 0 +4909 1 -6.3654680024921568e+01 8.2367535208832962e+01 8.7499999834497988e+00 0 0 0 +4956 1 -6.2532336137976721e+01 8.4586514842335077e+01 8.7499999596088411e+00 0 0 0 +5543 1 -6.4215852077506767e+01 8.4025038430905042e+01 1.0500000000005139e+01 0 0 0 +4961 1 -6.0287648069906929e+01 8.3490488079641835e+01 8.7499999119788825e+00 0 0 0 +5010 1 -5.8604131989912936e+01 8.4051964471156225e+01 6.9999999555828332e+00 0 0 0 +5012 1 -5.8042959942801858e+01 8.2394461305826340e+01 8.7499999516175890e+00 0 0 0 +5650 1 -5.8604132100047096e+01 8.4051964503812059e+01 1.0499999958632900e+01 0 0 0 +5013 1 -5.6920615852380308e+01 8.4613440738784590e+01 8.7499999785305800e+00 0 0 0 +5058 1 -5.2992411576501084e+01 8.4078890057758713e+01 7.0000000835303631e+00 0 0 0 +5059 1 -5.4675927640447497e+01 8.3517413844342414e+01 8.7500000583330397e+00 0 0 0 +5064 1 -5.2431239532060474e+01 8.2421386945236677e+01 8.7500000834583389e+00 0 0 0 +5092 1 -4.9625379387559100e+01 8.5201842586907546e+01 7.0000000123078410e+00 0 0 0 +5095 1 -5.0747723401376348e+01 8.2982863168971548e+01 7.0000000710732850e+00 0 0 0 +5093 1 -5.1308895522860404e+01 8.4640366425498584e+01 8.7500000809392695e+00 0 0 0 +5098 1 -4.9064207320179811e+01 8.3544339469828131e+01 8.7500000168606267e+00 0 0 0 +5116 1 -4.7380691276833431e+01 8.4105815810799271e+01 6.9999999413780918e+00 0 0 0 +5117 1 -4.6819519264236867e+01 8.2448312486380956e+01 8.7499999564555822e+00 0 0 0 +5118 1 -4.5697175211528560e+01 8.4667292004770573e+01 8.7499999357808012e+00 0 0 0 +4580 1 -8.7753274316632101e+01 8.7252081851888377e+01 6.9999998809528083e+00 0 0 0 +4581 1 -8.9214902045281903e+01 8.6609164420421578e+01 8.7500002345961700e+00 0 0 0 +4585 1 -8.7168422957566449e+01 8.5526902602318103e+01 8.7500000434534932e+00 0 0 0 +5220 1 -8.7753274125290645e+01 8.7252082035508479e+01 1.0500000189281383e+01 0 0 0 +4633 1 -8.6132427407698827e+01 8.7811109055550915e+01 8.7499999373486332e+00 0 0 0 +4637 1 -8.3862485682111654e+01 8.6702452111248050e+01 8.7499998777869887e+00 0 0 0 +4686 1 -8.2176994835346449e+01 8.7260290251550160e+01 6.9999998458869763e+00 0 0 0 +4688 1 -8.1612971588169543e+01 8.5602798709165398e+01 8.7499998811193187e+00 0 0 0 +5326 1 -8.2176994876650753e+01 8.7260290297836619e+01 1.0499999914965269e+01 0 0 0 +4689 1 -8.0489604721098701e+01 8.7820257893249405e+01 8.7499999072254031e+00 0 0 0 +4741 1 -7.8245181963410033e+01 8.6724622601627914e+01 8.7499999516668101e+00 0 0 0 +4740 1 -7.6561517327865616e+01 8.7286135756896172e+01 6.9999999954310681e+00 0 0 0 +4745 1 -7.6000493977174486e+01 8.5628673720880187e+01 8.7499999659609831e+00 0 0 0 +4793 1 -7.4878100629702686e+01 8.7847670724384059e+01 8.7499999902264456e+00 0 0 0 +5380 1 -7.6561517476221226e+01 8.7286135748645194e+01 1.0499999974309967e+01 0 0 0 +4846 1 -7.0949918795653929e+01 8.7313119445236609e+01 7.0000000541008918e+00 0 0 0 +4797 1 -7.2633424999234023e+01 8.6751640398352578e+01 8.7500000379703202e+00 0 0 0 +5486 1 -7.0949918927941098e+01 8.7313119406303073e+01 1.0500000035173446e+01 0 0 0 +4848 1 -7.0388742036522302e+01 8.5655614183065154e+01 8.7500000671651019e+00 0 0 0 +4849 1 -6.9266401613094388e+01 8.7874594592061698e+01 8.7500000939335205e+00 0 0 0 +4901 1 -6.7021712533006806e+01 8.6778568172952177e+01 8.7500000968502292e+00 0 0 0 +4905 1 -6.4777024150170277e+01 8.5682541569261758e+01 8.7500000171628347e+00 0 0 0 +4953 1 -6.3654679976086697e+01 8.7901521021059267e+01 8.7499999909046640e+00 0 0 0 +4954 1 -6.3093507989081168e+01 8.6244018028603662e+01 6.9999999710927030e+00 0 0 0 +4957 1 -6.1409991958440187e+01 8.6805494360593002e+01 8.7499999340067287e+00 0 0 0 +5594 1 -6.3093507934281313e+01 8.6244018044497253e+01 1.0499999984837528e+01 0 0 0 +1591 1 -6.1971163978515797e+01 8.8462997464880743e+01 6.9999999271633158e+00 0 -1 0 +2231 1 -6.1971163938012523e+01 8.8462997529854164e+01 1.0499999979119270e+01 0 -1 0 +5008 1 -5.9165304020698919e+01 8.5709467639643464e+01 8.7499999222898079e+00 0 0 0 +5009 1 -5.8042959873638971e+01 8.7928447147146642e+01 8.7499999438917104e+00 0 0 0 +5007 1 -5.7481787771405983e+01 8.6270943914077179e+01 6.9999999640734254e+00 0 0 0 +5056 1 -5.5798271805892256e+01 8.6832420206820302e+01 8.7500000083823668e+00 0 0 0 +5647 1 -5.7481787927022559e+01 8.6270943912392326e+01 1.0499999970296980e+01 0 0 0 +1698 1 -5.6359443668012865e+01 8.8489923343012535e+01 6.9999999883814557e+00 0 -1 0 +2338 1 -5.6359443838671417e+01 8.8489923363513682e+01 1.0499999999583743e+01 0 -1 0 +5091 1 -5.1870067520271363e+01 8.6297869518494309e+01 7.0000000623623579e+00 0 0 0 +5060 1 -5.3553583713301180e+01 8.5736393259380051e+01 8.7500000789045824e+00 0 0 0 +5090 1 -5.2431239515934287e+01 8.7955372682504205e+01 8.7500000715791657e+00 0 0 0 +5112 1 -4.8503035422157794e+01 8.7420822156997843e+01 6.9999999764276701e+00 0 0 0 +5094 1 -5.0186551438714936e+01 8.6859345816181929e+01 8.7500000460867344e+00 0 0 0 +1751 1 -5.0747723437245355e+01 8.8516848933880468e+01 7.0000000639665290e+00 0 -1 0 +5113 1 -4.6258347311992026e+01 8.6324795172670122e+01 6.9999999346969188e+00 0 0 0 +5114 1 -4.7941863291928144e+01 8.5763318946447555e+01 8.7499999762987883e+00 0 0 0 +5115 1 -4.6819519391929710e+01 8.7982298406356207e+01 8.7499999376059243e+00 0 0 0 +5125 1 -8.8549509876437625e+01 4.4637205586733479e+01 1.2249999987460125e+01 0 0 0 +5139 1 -8.7168422146513819e+01 4.6789002531588345e+01 1.2250000003491822e+01 0 0 0 +5141 1 -8.6710920435761267e+01 4.5183150892916359e+01 1.0499999969192876e+01 0 0 0 +5143 1 -8.4964193127000343e+01 4.5732440721019991e+01 1.2250000019110436e+01 0 0 0 +5781 1 -8.6710920416038149e+01 4.5183150884782656e+01 1.4000000012751249e+01 0 0 0 +5172 1 -8.1049142718259432e+01 4.5205798233280106e+01 1.0500000016152050e+01 0 0 0 +5173 1 -8.2732307223930462e+01 4.4642528494790838e+01 1.2250000008347140e+01 0 0 0 +5174 1 -8.1612969772484433e+01 4.6864897677077096e+01 1.2250000031140463e+01 0 0 0 +5812 1 -8.1049142739184376e+01 4.5205798188876834e+01 1.3999999967426970e+01 0 0 0 +5216 1 -7.9367521154609946e+01 4.5768039905439551e+01 1.2250000002723073e+01 0 0 0 +5270 1 -7.5439348627529640e+01 4.5233309802117809e+01 1.0499999984725513e+01 0 0 0 +5219 1 -7.7122769545722406e+01 4.4671839960604586e+01 1.2250000013901566e+01 0 0 0 +5268 1 -7.6000492395363366e+01 4.6890771196377067e+01 1.2250000020836094e+01 0 0 0 +5910 1 -7.5439348681585969e+01 4.5233309818123629e+01 1.3999999993707394e+01 0 0 0 +5272 1 -7.3755787614431583e+01 4.5794757168141082e+01 1.2250000011094428e+01 0 0 0 +5324 1 -7.1511091580439242e+01 4.4698732013085468e+01 1.2250000020828606e+01 0 0 0 +5323 1 -6.9827570460106955e+01 4.5260207301719475e+01 1.0499999987122036e+01 0 0 0 +5325 1 -7.0388741111689512e+01 4.6917711056994165e+01 1.2250000023358405e+01 0 0 0 +5376 1 -6.8144054861600168e+01 4.5821684770915667e+01 1.2250000007419775e+01 0 0 0 +5963 1 -6.9827570439217013e+01 4.5260207312975275e+01 1.4000000025921924e+01 0 0 0 +5379 1 -6.5899367413582468e+01 4.4725658389676212e+01 1.2249999952226771e+01 0 0 0 +5428 1 -6.4777023760238450e+01 4.6944638394839906e+01 1.2249999951837491e+01 0 0 0 +5432 1 -6.2532335718406678e+01 4.5848611954547330e+01 1.2249999976464743e+01 0 0 0 +5484 1 -6.0287647605700776e+01 4.4752585606871115e+01 1.2249999972813535e+01 0 0 0 +5485 1 -5.9165303637584053e+01 4.6971565485247787e+01 1.2249999988734020e+01 0 0 0 +6122 1 -6.0848819604264534e+01 4.6410088740231544e+01 1.4000000012416338e+01 0 0 0 +5536 1 -5.6920615547005347e+01 4.5875538927878708e+01 1.2249999954685091e+01 0 0 0 +6175 1 -5.5237099647796377e+01 4.6437015594641629e+01 1.4000000015909132e+01 0 0 0 +5539 1 -5.4675927482911789e+01 4.4779512307785865e+01 1.2250000016002749e+01 0 0 0 +5588 1 -5.3553583688278010e+01 4.6998491946506078e+01 1.2250000005987284e+01 0 0 0 +6230 1 -5.2992411669763300e+01 4.5340988757447292e+01 1.4000000006075942e+01 0 0 0 +5592 1 -5.1308895731305796e+01 4.5902465218913264e+01 1.2249999992736660e+01 0 0 0 +5644 1 -4.9064207754966866e+01 4.4806438311486509e+01 1.2249999998518925e+01 0 0 0 +6282 1 -4.9625379737122259e+01 4.6463941475803111e+01 1.4000000030420015e+01 0 0 0 +6374 1 -5.0186551438468555e+01 8.6859345834835608e+01 1.5749999965128010e+01 0 0 0 +5645 1 -4.7941863694838354e+01 4.7025417890819810e+01 1.2250000022734682e+01 0 0 0 +5694 1 -4.5697175643959483e+01 4.5929390930487941e+01 1.2250000011695640e+01 0 0 0 +6283 1 -4.7380691749397243e+01 4.5367914667781307e+01 1.4000000013922060e+01 0 0 0 +5123 1 -8.9214901124263790e+01 4.7871264231227897e+01 1.2250000040047556e+01 0 0 0 +5135 1 -8.8549509988956871e+01 5.0171191975105693e+01 1.2250000002118856e+01 0 0 0 +5138 1 -8.5523442982459301e+01 4.7397054198339028e+01 1.0500000002233385e+01 0 0 0 +5140 1 -8.6132425962431924e+01 4.9073208980047653e+01 1.2250000005369127e+01 0 0 0 +5167 1 -8.4431590379022168e+01 4.9619221398261018e+01 1.0500000018715143e+01 0 0 0 +5169 1 -8.3862483905785481e+01 4.7964551768307246e+01 1.2250000043934028e+01 0 0 0 +5778 1 -8.5523442956578947e+01 4.7397054175683870e+01 1.4000000021386453e+01 0 0 0 +5807 1 -8.4431590357967053e+01 4.9619221339277928e+01 1.4000000043400892e+01 0 0 0 +5170 1 -8.2732307339923054e+01 5.0176515084636989e+01 1.2250000061939119e+01 0 0 0 +5211 1 -7.8805834370462676e+01 4.9644130653818792e+01 1.0500000011356059e+01 0 0 0 +5212 1 -8.0489602718179540e+01 4.9082357043602862e+01 1.2250000048202518e+01 0 0 0 +5214 1 -7.9929643001087854e+01 4.7425670905162320e+01 1.0500000017708160e+01 0 0 0 +5217 1 -7.8245180167600552e+01 4.7986720881430230e+01 1.2249999999636264e+01 0 0 0 +5851 1 -7.8805834389817349e+01 4.9644130613725018e+01 1.3999999988992654e+01 0 0 0 +5854 1 -7.9929643038089225e+01 4.7425670866892858e+01 1.3999999971924302e+01 0 0 0 +5267 1 -7.4316919969389204e+01 4.7452246487729084e+01 1.0499999977987658e+01 0 0 0 +5264 1 -7.7122769677678662e+01 5.0205826639490105e+01 1.2249999987910671e+01 0 0 0 +5269 1 -7.4878099092261209e+01 4.9109768490735320e+01 1.2250000016705076e+01 0 0 0 +5907 1 -7.4316919983738686e+01 4.7452246531286931e+01 1.4000000026977078e+01 0 0 0 +5318 1 -7.3194615794863395e+01 4.9671248727060558e+01 1.0499999987451984e+01 0 0 0 +5320 1 -7.2633423743137172e+01 4.8013737662879841e+01 1.2250000033220603e+01 0 0 0 +5321 1 -7.1511091654491707e+01 5.0232718604229618e+01 1.2250000025473286e+01 0 0 0 +5958 1 -7.3194615771291069e+01 4.9671248746600860e+01 1.4000000012150212e+01 0 0 0 +5374 1 -6.8705227999030143e+01 4.7479188592229612e+01 1.0499999997464739e+01 0 0 0 +5372 1 -6.9266400877397686e+01 4.9136691784490218e+01 1.2249999999002197e+01 0 0 0 +6014 1 -6.8705227974735081e+01 4.7479188623372075e+01 1.4000000017306068e+01 0 0 0 +5371 1 -6.7582883568964817e+01 4.9698167946499900e+01 1.0499999991040935e+01 0 0 0 +5377 1 -6.7021711995256069e+01 4.8040665041733902e+01 1.2250000007729323e+01 0 0 0 +5424 1 -6.5899367502099025e+01 5.0259644746907576e+01 1.2250000029727261e+01 0 0 0 +6011 1 -6.7582883509228211e+01 4.9698167931054151e+01 1.4000000018665082e+01 0 0 0 +6066 1 -6.5338195795571167e+01 4.8602141547865436e+01 1.3999999999225027e+01 0 0 0 +5429 1 -6.3654679678667407e+01 4.9163618181203361e+01 1.2249999991007986e+01 0 0 0 +5480 1 -6.1409991654530941e+01 4.8067591790136362e+01 1.2249999989481505e+01 0 0 0 +5481 1 -6.0287647714279800e+01 5.0286571629851977e+01 1.2249999998625100e+01 0 0 0 +5532 1 -5.8042959607681048e+01 4.9190545254722920e+01 1.2250000009980369e+01 0 0 0 +6119 1 -5.9726475625366355e+01 4.8629068541214899e+01 1.4000000024444553e+01 0 0 0 +5537 1 -5.5798271624443665e+01 4.8094518678406033e+01 1.2249999973872894e+01 0 0 0 +6171 1 -5.6359443585770578e+01 4.9752021834312316e+01 1.3999999995097065e+01 0 0 0 +5584 1 -5.4675927463289931e+01 5.0313498249128699e+01 1.2249999953266066e+01 0 0 0 +5589 1 -5.2431239541748631e+01 4.9217471529695572e+01 1.2250000007961631e+01 0 0 0 +6226 1 -5.4114755579691568e+01 4.8655995183658654e+01 1.4000000014667645e+01 0 0 0 +6227 1 -5.1870067698462272e+01 4.7559968397382917e+01 1.4000000002665391e+01 0 0 0 +5640 1 -5.0186551678092542e+01 4.8121444730708902e+01 1.2250000009122301e+01 0 0 0 +5641 1 -4.9064207561900425e+01 5.0340424293354957e+01 1.2250000006352762e+01 0 0 0 +6278 1 -5.0747723554045933e+01 4.9778947921042182e+01 1.4000000016213502e+01 0 0 0 +6279 1 -4.8503035674894910e+01 4.8682921130749662e+01 1.4000000017176486e+01 0 0 0 +5691 1 -4.6819519576438495e+01 4.9244397416118360e+01 1.2250000006856256e+01 0 0 0 +6333 1 -4.6258347634889667e+01 4.7586894145815350e+01 1.4000000034707584e+01 0 0 0 +6335 1 -5.4114755706876167e+01 8.7393896479419908e+01 1.3999999986346737e+01 0 0 0 +5131 1 -8.9214901401410131e+01 5.3405250576108749e+01 1.2249999887880067e+01 0 0 0 +5133 1 -8.9045575856024698e+01 5.1770605135198807e+01 1.0499999941314545e+01 0 0 0 +5136 1 -8.7168422121863998e+01 5.2322988856084180e+01 1.2250000011078559e+01 0 0 0 +5773 1 -8.9045575852868353e+01 5.1770605186773359e+01 1.3999999987957477e+01 0 0 0 +5165 1 -8.4964193269845978e+01 5.1266427249714056e+01 1.2250000027636329e+01 0 0 0 +5166 1 -8.3862484024224671e+01 5.3498538263902333e+01 1.2250000049355913e+01 0 0 0 +5164 1 -8.3289035981874278e+01 5.1835241275920701e+01 1.0500000036336850e+01 0 0 0 +5208 1 -8.1612969896601726e+01 5.2398884293893325e+01 1.2250000062562775e+01 0 0 0 +5804 1 -8.3289035981251530e+01 5.1835241242527687e+01 1.4000000034758148e+01 0 0 0 +5262 1 -7.7684224178594860e+01 5.1863396708848313e+01 1.0500000006378510e+01 0 0 0 +5213 1 -7.9367521267711595e+01 5.1302026567618107e+01 1.2250000033796526e+01 0 0 0 +5260 1 -7.8245180217712232e+01 5.3520707516142330e+01 1.2250000020646800e+01 0 0 0 +5902 1 -7.7684224169100546e+01 5.1863396710075008e+01 1.3999999974065522e+01 0 0 0 +5265 1 -7.6000492460744482e+01 5.2424757844352534e+01 1.2249999986347680e+01 0 0 0 +5315 1 -7.2072253714472566e+01 5.1890217572156089e+01 1.0499999983462144e+01 0 0 0 +5316 1 -7.3755787694395863e+01 5.1328743804585599e+01 1.2250000011830224e+01 0 0 0 +5317 1 -7.2633423721128139e+01 5.3547724223991963e+01 1.2249999978568891e+01 0 0 0 +5955 1 -7.2072253691879766e+01 5.1890217605185391e+01 1.4000000024027498e+01 0 0 0 +5368 1 -7.0388741075576178e+01 5.2451697586511571e+01 1.2250000013036358e+01 0 0 0 +5373 1 -6.8144054883533173e+01 5.1355671250826681e+01 1.2249999999174442e+01 0 0 0 +5422 1 -6.6460539795415229e+01 5.1917148107805062e+01 1.0500000001158464e+01 0 0 0 +5420 1 -6.7021711900380296e+01 5.3574651427688551e+01 1.2249999988168867e+01 0 0 0 +5425 1 -6.4777023720753476e+01 5.2478624612293189e+01 1.2250000022054230e+01 0 0 0 +6062 1 -6.6460539756937791e+01 5.1917148075921915e+01 1.4000000017364345e+01 0 0 0 +5423 1 -6.4215851725022418e+01 5.0821121421549584e+01 1.0500000002389696e+01 0 0 0 +5474 1 -6.3093507587052109e+01 5.3040101233632306e+01 1.0499999982254401e+01 0 0 0 +5476 1 -6.2532335777846050e+01 5.1382598043549208e+01 1.2250000001215007e+01 0 0 0 +5477 1 -6.1409991563281658e+01 5.3601577782328398e+01 1.2250000016995779e+01 0 0 0 +6114 1 -6.3093507588739094e+01 5.3040101211594703e+01 1.4000000050934968e+01 0 0 0 +6063 1 -6.4215851782948448e+01 5.0821121434481405e+01 1.4000000018371997e+01 0 0 0 +5528 1 -5.9165303616261696e+01 5.2505551425214286e+01 1.2249999994641380e+01 0 0 0 +6170 1 -5.8604131662022453e+01 5.0848048332717454e+01 1.4000000029294190e+01 0 0 0 +5533 1 -5.6920615516317447e+01 5.1409524852273542e+01 1.2250000004583889e+01 0 0 0 +5580 1 -5.5798271509574207e+01 5.3628504523337256e+01 1.2249999990901097e+01 0 0 0 +6167 1 -5.7481787463057529e+01 5.3067027986723133e+01 1.4000000002580183e+01 0 0 0 +6222 1 -5.5237099583325801e+01 5.1971001524645906e+01 1.3999999994495743e+01 0 0 0 +5585 1 -5.3553583572651718e+01 5.2532477819640683e+01 1.2249999962725798e+01 0 0 0 +6223 1 -5.2992411519396668e+01 5.0874974664495817e+01 1.4000000007009612e+01 0 0 0 +6274 1 -5.1870067482186990e+01 5.3093954247359392e+01 1.3999999989271894e+01 0 0 0 +5636 1 -5.1308895575833816e+01 5.1436451123419729e+01 1.2249999989029055e+01 0 0 0 +5637 1 -5.0186551499866823e+01 5.3655430576854158e+01 1.2249999988848748e+01 0 0 0 +6275 1 -4.9625379538374794e+01 5.1997927396932106e+01 1.4000000001811712e+01 0 0 0 +5688 1 -4.7941863465564275e+01 5.2559403783800597e+01 1.2249999998502517e+01 0 0 0 +5692 1 -4.5697175395511486e+01 5.1463376925178601e+01 1.2250000012629071e+01 0 0 0 +6327 1 -4.6258347416011510e+01 5.3120880032681725e+01 1.4000000016206529e+01 0 0 0 +6330 1 -4.7380691499238473e+01 5.0901900690336767e+01 1.4000000025507266e+01 0 0 0 +5130 1 -8.7753273160446227e+01 5.4048168169451152e+01 1.0499999922350931e+01 0 0 0 +5132 1 -8.8549510016804703e+01 5.5705178281048106e+01 1.2249999921466650e+01 0 0 0 +5770 1 -8.7753273173922821e+01 5.4048168204856289e+01 1.3999999997362568e+01 0 0 0 +5159 1 -8.6710920556794647e+01 5.6251123692412357e+01 1.0499999983566864e+01 0 0 0 +5161 1 -8.6132425998936327e+01 5.4607195392866693e+01 1.2250000044741460e+01 0 0 0 +5799 1 -8.6710920628331834e+01 5.6251123651147203e+01 1.3999999972680147e+01 0 0 0 +5203 1 -8.1049142887645431e+01 5.6273771340937181e+01 1.0500000031696590e+01 0 0 0 +5206 1 -8.2176993049143604e+01 5.4056376309993269e+01 1.0500000046766395e+01 0 0 0 +5204 1 -8.2732307407329515e+01 5.5710501559724079e+01 1.2250000031564204e+01 0 0 0 +5843 1 -8.1049142861847940e+01 5.6273771340828382e+01 1.4000000016413313e+01 0 0 0 +5846 1 -8.2176993040006806e+01 5.4056376240272229e+01 1.4000000037577342e+01 0 0 0 +5209 1 -8.0489602783954965e+01 5.4616343610295772e+01 1.2250000030455546e+01 0 0 0 +5259 1 -7.6561515728597271e+01 5.4082220353362892e+01 1.0499999980886239e+01 0 0 0 +5310 1 -7.5439348660254339e+01 5.6301282971108655e+01 1.0499999986329302e+01 0 0 0 +5261 1 -7.7122769642610777e+01 5.5739813201445699e+01 1.2250000009923021e+01 0 0 0 +5312 1 -7.4878099041112876e+01 5.4643755059447223e+01 1.2249999979565851e+01 0 0 0 +5899 1 -7.6561515721050810e+01 5.4082220324269933e+01 1.3999999974284977e+01 0 0 0 +5950 1 -7.5439348659788692e+01 5.6301282988408779e+01 1.3999999966467406e+01 0 0 0 +5366 1 -7.0949917813613567e+01 5.4109203140902657e+01 1.0499999977567322e+01 0 0 0 +5364 1 -7.1511091516004612e+01 5.5766705091670481e+01 1.2249999980010069e+01 0 0 0 +6006 1 -7.0949917749811206e+01 5.4109203156119293e+01 1.4000000014533775e+01 0 0 0 +5363 1 -6.9827570338296027e+01 5.6328180247568937e+01 1.0499999992785961e+01 0 0 0 +5369 1 -6.9266400714482089e+01 5.4670678228599570e+01 1.2249999999889681e+01 0 0 0 +6003 1 -6.9827570276723506e+01 5.6328180303168523e+01 1.4000000000894513e+01 0 0 0 +5421 1 -6.5899367300791056e+01 5.5793630969477569e+01 1.2249999969730430e+01 0 0 0 +5472 1 -6.3654679540936854e+01 5.4697604295087658e+01 1.2250000012625733e+01 0 0 0 +6111 1 -6.1971163554563283e+01 5.5259080913134447e+01 1.4000000053984390e+01 0 0 0 +5524 1 -6.0287647550534913e+01 5.5820557557596906e+01 1.2250000012230910e+01 0 0 0 +5529 1 -5.8042959498269475e+01 5.4724531150339047e+01 1.2249999982155934e+01 0 0 0 +6218 1 -5.6359443392642746e+01 5.5286007666201286e+01 1.3999999994521152e+01 0 0 0 +5581 1 -5.4675927302452635e+01 5.5847484106417795e+01 1.2249999991936226e+01 0 0 0 +5632 1 -5.2431239377775327e+01 5.4751457357083240e+01 1.2249999955364549e+01 0 0 0 +6219 1 -5.4114755443225420e+01 5.4189981028591674e+01 1.3999999976859129e+01 0 0 0 +6270 1 -5.2992411389185598e+01 5.6408960494591874e+01 1.3999999964189799e+01 0 0 0 +5684 1 -4.9064207400996345e+01 5.5874410089832978e+01 1.2249999960385370e+01 0 0 0 +6326 1 -4.8503035473842466e+01 5.4216906969694534e+01 1.4000000020754749e+01 0 0 0 +6271 1 -5.0747723385895917e+01 5.5312933732383023e+01 1.3999999988391073e+01 0 0 0 +5689 1 -4.6819519391927905e+01 5.4778383255458749e+01 1.2249999993508052e+01 0 0 0 +6323 1 -4.7380691357935163e+01 5.6435886468431995e+01 1.4000000014789077e+01 0 0 0 +5128 1 -8.9214901415090807e+01 5.8939236596469271e+01 1.2249999930910967e+01 0 0 0 +5157 1 -8.7168422155825837e+01 5.7856975093292903e+01 1.2249999955482597e+01 0 0 0 +5156 1 -8.5523443088744258e+01 5.8465026894549432e+01 1.0500000000945521e+01 0 0 0 +5162 1 -8.4964193308506267e+01 5.6800413587534166e+01 1.2250000035739976e+01 0 0 0 +5200 1 -8.3862484011104598e+01 5.9032524558063102e+01 1.2250000039941829e+01 0 0 0 +5796 1 -8.5523443110217883e+01 5.8465026892887380e+01 1.3999999997579566e+01 0 0 0 +5205 1 -8.1612969861119979e+01 5.7932870695641228e+01 1.2250000052148502e+01 0 0 0 +5254 1 -7.9929643024703694e+01 5.8493643919369603e+01 1.0500000016367771e+01 0 0 0 +5256 1 -7.9367521231411629e+01 5.6836013068068787e+01 1.2250000027674512e+01 0 0 0 +5257 1 -7.8245180094867891e+01 5.9054693912021428e+01 1.2250000005506873e+01 0 0 0 +5894 1 -7.9929643036662355e+01 5.8493643893204059e+01 1.4000000000110562e+01 0 0 0 +5307 1 -7.4316919830777081e+01 5.8520219550788724e+01 1.0499999987145154e+01 0 0 0 +5308 1 -7.6000492327536321e+01 5.7958744300306030e+01 1.2250000013292501e+01 0 0 0 +5947 1 -7.4316919815683036e+01 5.8520219530547124e+01 1.4000000008827776e+01 0 0 0 +5313 1 -7.3755787550213242e+01 5.6862730269812104e+01 1.2249999982450019e+01 0 0 0 +5360 1 -7.2633423523512107e+01 5.9081710615376934e+01 1.2250000009759829e+01 0 0 0 +5414 1 -6.8705227681945956e+01 5.8547161386224836e+01 1.0499999993032921e+01 0 0 0 +5365 1 -7.0388740881542020e+01 5.7985683963836379e+01 1.2249999992856541e+01 0 0 0 +5416 1 -6.8144054649072771e+01 5.6889657579154381e+01 1.2250000004855860e+01 0 0 0 +6054 1 -6.8705227654301822e+01 5.8547161418187144e+01 1.4000000007927081e+01 0 0 0 +5417 1 -6.7021711644362725e+01 5.9108637670432607e+01 1.2249999995035232e+01 0 0 0 +5468 1 -6.4777023454865187e+01 5.8012610779448934e+01 1.2249999969821255e+01 0 0 0 +6106 1 -6.5338195412356953e+01 5.9670113982476089e+01 1.4000000014897374e+01 0 0 0 +5473 1 -6.2532335559101952e+01 5.6916584088746333e+01 1.2250000008898510e+01 0 0 0 +5520 1 -6.1409991396145848e+01 5.9135563781606869e+01 1.2250000024397533e+01 0 0 0 +5525 1 -5.9165303447730956e+01 5.8039537348434237e+01 1.2250000018897303e+01 0 0 0 +6159 1 -5.9726475373896811e+01 5.9697040432526883e+01 1.4000000042200025e+01 0 0 0 +6162 1 -6.0848819405961301e+01 5.7478060696366846e+01 1.4000000048898146e+01 0 0 0 +5576 1 -5.6920615367457422e+01 5.6943510718062235e+01 1.2249999971699374e+01 0 0 0 +5577 1 -5.5798271375131286e+01 5.9162490423267194e+01 1.2249999976660852e+01 0 0 0 +6215 1 -5.5237099403151646e+01 5.7504987337574590e+01 1.3999999963270684e+01 0 0 0 +5628 1 -5.3553583436792621e+01 5.8066463638259563e+01 1.2249999987547257e+01 0 0 0 +6267 1 -5.1870067394365869e+01 5.8627940021499732e+01 1.3999999973988942e+01 0 0 0 +6266 1 -5.4114755313141089e+01 5.9723966855948099e+01 1.3999999963123496e+01 0 0 0 +5633 1 -5.1308895413366670e+01 5.6970436905629661e+01 1.2249999957450303e+01 0 0 0 +5680 1 -5.0186551362988403e+01 5.9189416314870748e+01 1.2249999988367289e+01 0 0 0 +6319 1 -4.8503035389801255e+01 5.9750892686003262e+01 1.4000000030195290e+01 0 0 0 +6322 1 -4.9625379405072145e+01 5.7531913147601131e+01 1.3999999998715856e+01 0 0 0 +5685 1 -4.7941863349570255e+01 5.8093389526576857e+01 1.2250000010864447e+01 0 0 0 +5729 1 -4.5697175257785275e+01 5.6997362742717861e+01 1.2250000034852173e+01 0 0 0 +6368 1 -4.6258347317055396e+01 5.8654865820086769e+01 1.4000000047784679e+01 0 0 0 +5151 1 -8.9045575927393230e+01 6.2838577077501228e+01 1.0499999984988490e+01 0 0 0 +5153 1 -8.8549510102569016e+01 6.1239164220549057e+01 1.2249999966589266e+01 0 0 0 +5791 1 -8.9045575945692462e+01 6.2838577122819402e+01 1.3999999948403559e+01 0 0 0 +5198 1 -8.4431590390244168e+01 6.0687193952928645e+01 1.0499999999359272e+01 0 0 0 +5158 1 -8.6132426038387337e+01 6.0141181507158002e+01 1.2249999970805131e+01 0 0 0 +5196 1 -8.4964193225273021e+01 6.2334399566214415e+01 1.2249999972220881e+01 0 0 0 +5838 1 -8.4431590419443069e+01 6.0687193917019655e+01 1.3999999997320892e+01 0 0 0 +5195 1 -8.3289035887034856e+01 6.2903213664593629e+01 1.0499999990094311e+01 0 0 0 +5201 1 -8.2732307311142250e+01 6.1244487721704665e+01 1.2250000018111191e+01 0 0 0 +5835 1 -8.3289035922284853e+01 6.2903213637863679e+01 1.3999999999257209e+01 0 0 0 +5251 1 -7.8805834248169063e+01 6.0712103503925412e+01 1.0500000001105203e+01 0 0 0 +5302 1 -7.7684223970796793e+01 6.2931369379965027e+01 1.0500000001147999e+01 0 0 0 +5252 1 -8.0489602666959556e+01 6.0150329901990482e+01 1.2250000031726868e+01 0 0 0 +5253 1 -7.9367521120117175e+01 6.2369999249230176e+01 1.2250000027593636e+01 0 0 0 +5891 1 -7.8805834276194332e+01 6.0712103481403666e+01 1.4000000008433942e+01 0 0 0 +5942 1 -7.7684223993784386e+01 6.2931369394346362e+01 1.4000000032260511e+01 0 0 0 +5304 1 -7.7122769510319173e+01 6.1273799485624792e+01 1.2250000000682046e+01 0 0 0 +5309 1 -7.4878098896990764e+01 6.0177741430497932e+01 1.2250000009093826e+01 0 0 0 +5355 1 -7.2072253390095113e+01 6.2958190322100471e+01 1.0500000025012310e+01 0 0 0 +5358 1 -7.3194615531040569e+01 6.0739221598596913e+01 1.0500000014806742e+01 0 0 0 +5356 1 -7.3755787445620967e+01 6.2396716579648150e+01 1.2250000049237162e+01 0 0 0 +5361 1 -7.1511091342417600e+01 6.1300691394109734e+01 1.2250000033171908e+01 0 0 0 +5995 1 -7.2072253411394897e+01 6.2958190308354645e+01 1.4000000034172643e+01 0 0 0 +5998 1 -7.3194615493329110e+01 6.0739221616934771e+01 1.4000000005808598e+01 0 0 0 +5412 1 -6.9266400501428848e+01 6.0204664535216381e+01 1.2249999997957151e+01 0 0 0 +5413 1 -6.8144054473995766e+01 6.2423643832315754e+01 1.2250000003473145e+01 0 0 0 +5411 1 -6.7582883155096482e+01 6.0766140557617035e+01 1.0500000020344922e+01 0 0 0 +5462 1 -6.6460539369003428e+01 6.2985120588833759e+01 1.0500000022711367e+01 0 0 0 +5464 1 -6.5899367099581596e+01 6.1327617173323858e+01 1.2250000038578841e+01 0 0 0 +6051 1 -6.7582883108742450e+01 6.0766140540630232e+01 1.4000000005830742e+01 0 0 0 +6102 1 -6.6460539366119320e+01 6.2985120567867305e+01 1.4000000019259341e+01 0 0 0 +5463 1 -6.4215851323389913e+01 6.1889093699179909e+01 1.0499999991413345e+01 0 0 0 +5469 1 -6.3654679320470350e+01 6.0231590380556540e+01 1.2250000001127416e+01 0 0 0 +5516 1 -6.2532335423883950e+01 6.2450570183473396e+01 1.2250000017393340e+01 0 0 0 +6103 1 -6.4215851394806194e+01 6.1889093722273749e+01 1.4000000065203718e+01 0 0 0 +5515 1 -6.0848819325230991e+01 6.3012046759376354e+01 1.0500000009181225e+01 0 0 0 +5521 1 -6.0287647435806356e+01 6.1354543580796111e+01 1.2250000010544950e+01 0 0 0 +5572 1 -5.8042959370597025e+01 6.0258517090794783e+01 1.2250000020567949e+01 0 0 0 +6210 1 -5.8604131422401018e+01 6.1916020207905881e+01 1.4000000009105717e+01 0 0 0 +5573 1 -5.6920615288537931e+01 6.2477496672462784e+01 1.2250000016447032e+01 0 0 0 +5624 1 -5.4675927186141571e+01 6.1381469952364505e+01 1.2249999966763800e+01 0 0 0 +5629 1 -5.2431239261203757e+01 6.0285443153110236e+01 1.2249999974937053e+01 0 0 0 +6263 1 -5.2992411276477732e+01 6.1942946279529359e+01 1.3999999974668967e+01 0 0 0 +5676 1 -5.1308895331595508e+01 6.2504422676053849e+01 1.2250000000465132e+01 0 0 0 +5681 1 -4.9064207291471170e+01 6.1408395790727411e+01 1.2250000017641286e+01 0 0 0 +6315 1 -4.9625379321097569e+01 6.3065898877610664e+01 1.4000000012341195e+01 0 0 0 +6318 1 -5.0747723274174362e+01 6.0846919454131175e+01 1.4000000002131173e+01 0 0 0 +5726 1 -4.6819519286520048e+01 6.0312368977560837e+01 1.2250000007839439e+01 0 0 0 +5727 1 -4.5697175213404670e+01 6.2531348415882555e+01 1.2250000036520735e+01 0 0 0 +6365 1 -4.7380691292366116e+01 6.1969872188799002e+01 1.4000000048478746e+01 0 0 0 +5148 1 -8.7753273244654451e+01 6.5116139881048980e+01 1.0500000003553724e+01 0 0 0 +5149 1 -8.9214901320729751e+01 6.4473222286791597e+01 1.2249999924584190e+01 0 0 0 +5154 1 -8.7168422204180459e+01 6.3390960967969541e+01 1.2249999965012032e+01 0 0 0 +5788 1 -8.7753273213224745e+01 6.5116139892619856e+01 1.3999999908441321e+01 0 0 0 +5192 1 -8.6132425993923022e+01 6.5675167157778034e+01 1.2249999989599555e+01 0 0 0 +5197 1 -8.3862483911270544e+01 6.4566510398578714e+01 1.2249999974779817e+01 0 0 0 +5246 1 -8.2176992884469129e+01 6.5124348501881911e+01 1.0499999980503889e+01 0 0 0 +5248 1 -8.1612969764575411e+01 6.3466856735845376e+01 1.2250000016686556e+01 0 0 0 +5886 1 -8.2176992928010250e+01 6.5124348432926212e+01 1.4000000020223974e+01 0 0 0 +5249 1 -8.0489602633284079e+01 6.5684315881081062e+01 1.2250000005697341e+01 0 0 0 +5300 1 -7.8245180052178512e+01 6.4588680031535873e+01 1.2250000043717703e+01 0 0 0 +5299 1 -7.6561515551851826e+01 6.5150192868787826e+01 1.0499999998326299e+01 0 0 0 +5305 1 -7.6000492260269937e+01 6.3492730525520805e+01 1.2250000023409921e+01 0 0 0 +5352 1 -7.4878098908746011e+01 6.5711727586178711e+01 1.2250000008787122e+01 0 0 0 +5939 1 -7.6561515571388213e+01 6.5150192849098119e+01 1.4000000040698133e+01 0 0 0 +5406 1 -7.0949917520217852e+01 6.5177175757932247e+01 1.0500000027048799e+01 0 0 0 +5357 1 -7.2633423488542618e+01 6.4615696848992272e+01 1.2250000005902359e+01 0 0 0 +5351 1 -7.3194615542456759e+01 6.6273207787559187e+01 1.0500000002025196e+01 0 0 0 +6046 1 -7.0949917514651077e+01 6.5177175764015473e+01 1.4000000004921787e+01 0 0 0 +5408 1 -7.0388740757713776e+01 6.3519670257394779e+01 1.2250000020452863e+01 0 0 0 +5409 1 -6.9266400474814759e+01 6.5738650793107624e+01 1.2250000022464718e+01 0 0 0 +5459 1 -6.5338195367388849e+01 6.5204100194497173e+01 1.0500000028287504e+01 0 0 0 +5460 1 -6.7021711560468319e+01 6.4642623919630537e+01 1.2250000029965891e+01 0 0 0 +5465 1 -6.4777023362922549e+01 6.3546596968464399e+01 1.2250000043200462e+01 0 0 0 +5458 1 -6.7582883102775455e+01 6.6300126782281041e+01 1.0500000043786679e+01 0 0 0 +5512 1 -6.3654679307585575e+01 6.5765576587017350e+01 1.2250000063302432e+01 0 0 0 +5517 1 -6.1409991340728901e+01 6.4669549884545177e+01 1.2250000035074448e+01 0 0 0 +6154 1 -6.3093507284861595e+01 6.4108073438008944e+01 1.4000000056499932e+01 0 0 0 +6151 1 -6.1971163406062409e+01 6.6327053120562965e+01 1.4000000069817997e+01 0 0 0 +5566 1 -5.9726475371205872e+01 6.5231026512155424e+01 1.0500000013160809e+01 0 0 0 +5568 1 -5.9165303393183152e+01 6.3573523366096843e+01 1.2250000028198492e+01 0 0 0 +5569 1 -5.8042959373879484e+01 6.5792503112849943e+01 1.2250000007416213e+01 0 0 0 +5620 1 -5.5798271346750283e+01 6.4696476354203512e+01 1.2250000009977244e+01 0 0 0 +6258 1 -5.6359443332467720e+01 6.6353979545344302e+01 1.3999999985374490e+01 0 0 0 +6207 1 -5.7481787276051648e+01 6.4134999861550639e+01 1.3999999990301216e+01 0 0 0 +5625 1 -5.3553583354130232e+01 6.3600449498884160e+01 1.2249999991924920e+01 0 0 0 +5672 1 -5.2431239287227470e+01 6.5819429008210463e+01 1.2249999994241046e+01 0 0 0 +6314 1 -5.1870067319800377e+01 6.4161925814664386e+01 1.3999999975731573e+01 0 0 0 +5677 1 -5.0186551354904836e+01 6.4723402071316769e+01 1.2250000004439137e+01 0 0 0 +6361 1 -4.8503035371735152e+01 6.5284878400437833e+01 1.4000000038888901e+01 0 0 0 +6311 1 -5.0747723311755585e+01 6.6380905296326077e+01 1.3999999993316703e+01 0 0 0 +5723 1 -4.7941863325079446e+01 6.3627375217964506e+01 1.2250000026703381e+01 0 0 0 +5724 1 -4.6819519337116589e+01 6.5846354681003135e+01 1.2249999986480235e+01 0 0 0 +6362 1 -4.6258347298959301e+01 6.4188851454456767e+01 1.4000000058167322e+01 0 0 0 +5150 1 -8.8549509975268350e+01 6.6773149735665285e+01 1.2249999922760999e+01 0 0 0 +5188 1 -8.7168422209887083e+01 6.8924946435358223e+01 1.2249999930454461e+01 0 0 0 +5190 1 -8.6710920591618915e+01 6.7319095232186910e+01 1.0499999950127730e+01 0 0 0 +5193 1 -8.4964193249296954e+01 6.7868385187225158e+01 1.2249999974752306e+01 0 0 0 +5830 1 -8.6710920592894738e+01 6.7319095162770921e+01 1.3999999913548448e+01 0 0 0 +5242 1 -8.3289035939072207e+01 6.8437199337565900e+01 1.0499999980275199e+01 0 0 0 +5243 1 -8.1049142767027433e+01 6.7341743384349130e+01 1.0500000000763400e+01 0 0 0 +5244 1 -8.2732307283969547e+01 6.6778473509560953e+01 1.2249999989152489e+01 0 0 0 +5245 1 -8.1612969820717382e+01 6.9000842469818707e+01 1.2250000042678138e+01 0 0 0 +5883 1 -8.1049142799595771e+01 6.7341743362059674e+01 1.4000000054210922e+01 0 0 0 +5295 1 -7.7684224096341367e+01 6.8465355357811333e+01 1.0499999983661906e+01 0 0 0 +5296 1 -7.9367521167805876e+01 6.7903985169485011e+01 1.2250000042445221e+01 0 0 0 +5301 1 -7.7122769551399429e+01 6.6807785529297448e+01 1.2250000039980934e+01 0 0 0 +5348 1 -7.6000492389712207e+01 6.9026716538516141e+01 1.2250000021085619e+01 0 0 0 +5990 1 -7.5439348609322124e+01 6.7369255381596901e+01 1.4000000028144434e+01 0 0 0 +5353 1 -7.3755787537153154e+01 6.7930702692292357e+01 1.2249999973152560e+01 0 0 0 +5402 1 -7.2072253542607811e+01 6.8492176458937536e+01 1.0499999993777871e+01 0 0 0 +5404 1 -7.1511091386919588e+01 6.6834677638057897e+01 1.2249999999273584e+01 0 0 0 +5405 1 -7.0388740920325347e+01 6.9053656481804509e+01 1.2249999992254500e+01 0 0 0 +5456 1 -6.8144054566327100e+01 6.7957630122950661e+01 1.2250000034648945e+01 0 0 0 +6043 1 -6.9827570181177208e+01 6.7396152860700823e+01 1.3999999995562868e+01 0 0 0 +5455 1 -6.6460539457952692e+01 6.8519106858861974e+01 1.0500000033414372e+01 0 0 0 +5461 1 -6.5899367126451409e+01 6.6861603439814530e+01 1.2250000022953985e+01 0 0 0 +5508 1 -6.4777023490515205e+01 6.9080583240085403e+01 1.2250000020593470e+01 0 0 0 +5510 1 -6.4215851429970854e+01 6.7423079972856826e+01 1.0500000019763309e+01 0 0 0 +5513 1 -6.2532335508782523e+01 6.7984556389331203e+01 1.2250000042651063e+01 0 0 0 +5563 1 -5.8604131541069918e+01 6.7450006291502106e+01 1.0500000020458062e+01 0 0 0 +5564 1 -6.0287647485551958e+01 6.6888529689342093e+01 1.2250000031003090e+01 0 0 0 +5565 1 -5.9165303569828836e+01 6.9107509487259165e+01 1.2250000039563549e+01 0 0 0 +6202 1 -6.0848819433811556e+01 6.8546032910492272e+01 1.4000000045421270e+01 0 0 0 +5616 1 -5.6920615399256782e+01 6.8011482702469138e+01 1.2250000014523570e+01 0 0 0 +6255 1 -5.5237099463263114e+01 6.8572959234878525e+01 1.3999999970642234e+01 0 0 0 +5621 1 -5.4675927264242183e+01 6.6915455932148603e+01 1.2250000018033996e+01 0 0 0 +5668 1 -5.3553583516418691e+01 6.9134435494278051e+01 1.2250000028344331e+01 0 0 0 +5673 1 -5.1308895416867117e+01 6.8038408586687041e+01 1.2249999984254044e+01 0 0 0 +5719 1 -4.9064207354776137e+01 6.6942381594806960e+01 1.2249999968428803e+01 0 0 0 +6357 1 -4.9625379388129566e+01 6.8599884727302467e+01 1.3999999967251950e+01 0 0 0 +5720 1 -4.7941863358406621e+01 6.9161361025393020e+01 1.2250000002655199e+01 0 0 0 +5751 1 -4.5697175256463261e+01 6.8065334133129141e+01 1.2250000021648260e+01 0 0 0 +6358 1 -4.7380691312322938e+01 6.7503857916570524e+01 1.4000000002564949e+01 0 0 0 +5186 1 -8.7753273282044674e+01 7.0650125263367215e+01 1.0500000014599882e+01 0 0 0 +5146 1 -8.9214901414001616e+01 7.0007207606014703e+01 1.2249999935170651e+01 0 0 0 +5184 1 -8.8549510120579157e+01 7.2307135040976846e+01 1.2249999971892702e+01 0 0 0 +5187 1 -8.5523443127277844e+01 6.9532998246535669e+01 1.0499999979661329e+01 0 0 0 +5189 1 -8.6132426120515731e+01 7.1209152569957382e+01 1.2249999958628734e+01 0 0 0 +5240 1 -8.3862484012900836e+01 7.0100495955510723e+01 1.2250000031290877e+01 0 0 0 +5827 1 -8.5523443128968665e+01 6.9532998194424067e+01 1.3999999980055575e+01 0 0 0 +5878 1 -8.4431590504389177e+01 7.1755165042547176e+01 1.4000000031003754e+01 0 0 0 +5239 1 -8.2176993012333298e+01 7.0658334083321250e+01 1.0499999992204238e+01 0 0 0 +5241 1 -8.2732307461546014e+01 7.2312458991791672e+01 1.2250000057304790e+01 0 0 0 +5292 1 -8.0489602782345045e+01 7.1218301562443969e+01 1.2250000077696864e+01 0 0 0 +5297 1 -7.8245180184746360e+01 7.0122665895565362e+01 1.2250000017075749e+01 0 0 0 +5931 1 -7.8805834466865576e+01 7.1780075278696657e+01 1.4000000076927385e+01 0 0 0 +5934 1 -7.9929643055943117e+01 6.9561615771314408e+01 1.4000000083113354e+01 0 0 0 +5346 1 -7.6561515809807759e+01 7.0684178779544197e+01 1.0499999969925041e+01 0 0 0 +5344 1 -7.7122769862604045e+01 7.2341771390535541e+01 1.2249999982054058e+01 0 0 0 +5349 1 -7.4878099193300997e+01 7.1245713581816844e+01 1.2249999958263988e+01 0 0 0 +5987 1 -7.4316919935375125e+01 6.9588191841686552e+01 1.4000000011497821e+01 0 0 0 +5399 1 -7.0949917771768426e+01 7.0711161934780264e+01 1.0499999985598148e+01 0 0 0 +5400 1 -7.2633423713836123e+01 7.0149682978072178e+01 1.2249999964221921e+01 0 0 0 +5401 1 -7.1511091735313116e+01 7.2368663746246710e+01 1.2249999961354005e+01 0 0 0 +6038 1 -7.3194615850873646e+01 7.1807193875547583e+01 1.3999999966620848e+01 0 0 0 +5452 1 -6.9266400758911999e+01 7.1272637032840208e+01 1.2249999983078155e+01 0 0 0 +6094 1 -6.8705227761748432e+01 6.9615133948593524e+01 1.3999999987484856e+01 0 0 0 +5457 1 -6.7021711759193636e+01 7.0176610208913672e+01 1.2250000012605705e+01 0 0 0 +5504 1 -6.5899367386790132e+01 7.2395589745245758e+01 1.2250000049837908e+01 0 0 0 +6091 1 -6.7582883391474112e+01 7.1834113098305011e+01 1.4000000007275137e+01 0 0 0 +6146 1 -6.5338195563259646e+01 7.0738086514487946e+01 1.4000000017522151e+01 0 0 0 +5507 1 -6.3093507452215498e+01 6.9642059659448833e+01 1.0500000011979143e+01 0 0 0 +5509 1 -6.3654679538924078e+01 7.1299562871151707e+01 1.2250000031221735e+01 0 0 0 +5558 1 -6.1971163656470502e+01 7.1861039385763590e+01 1.0500000000813838e+01 0 0 0 +5560 1 -6.1409991543401738e+01 7.0203536090390344e+01 1.2250000050328669e+01 0 0 0 +5561 1 -6.0287647757216313e+01 7.2422515876789149e+01 1.2250000027333325e+01 0 0 0 +5612 1 -5.8042959641672091e+01 7.1326489228923322e+01 1.2250000052563095e+01 0 0 0 +6199 1 -5.9726475595482228e+01 7.0765012638847367e+01 1.4000000053960990e+01 0 0 0 +5611 1 -5.6359443588983339e+01 7.1887965643156036e+01 1.0500000046823249e+01 0 0 0 +5614 1 -5.7481787497443840e+01 6.9668985980373776e+01 1.0500000028334256e+01 0 0 0 +5617 1 -5.5798271542498519e+01 7.0230462414287288e+01 1.2250000036441698e+01 0 0 0 +5666 1 -5.4114755471114542e+01 7.0791938815014319e+01 1.0500000070328603e+01 0 0 0 +5664 1 -5.4675927408269537e+01 7.2449441955172503e+01 1.2250000027533982e+01 0 0 0 +5667 1 -5.1870067453059832e+01 6.9695911773648717e+01 1.0500000026881782e+01 0 0 0 +5669 1 -5.2431239388513816e+01 7.1353415021706994e+01 1.2250000002132685e+01 0 0 0 +6306 1 -5.4114755455172364e+01 7.0791938765837187e+01 1.3999999970279918e+01 0 0 0 +5713 1 -5.0747723335422990e+01 7.1914891270713213e+01 1.0500000026243006e+01 0 0 0 +5715 1 -5.0186551401958923e+01 7.0257387986195823e+01 1.2249999994348487e+01 0 0 0 +5716 1 -4.9064207272934595e+01 7.2476367520547356e+01 1.2250000000994758e+01 0 0 0 +6354 1 -4.8503035372695742e+01 7.0818864297485959e+01 1.3999999992821058e+01 0 0 0 +5748 1 -4.6819519283122595e+01 7.1380340513571795e+01 1.2249999982332259e+01 0 0 0 +6390 1 -4.6258347321365527e+01 6.9722837267220910e+01 1.4000000024448854e+01 0 0 0 +5180 1 -8.9214901621662889e+01 7.5541192909582321e+01 1.2249999979159867e+01 0 0 0 +5185 1 -8.7168422302516973e+01 7.4458931633250543e+01 1.2250000010382294e+01 0 0 0 +5822 1 -8.9045576023228435e+01 7.3906547759222249e+01 1.3999999914293475e+01 0 0 0 +5183 1 -8.6710920718606133e+01 7.2853080490996490e+01 1.0500000033401289e+01 0 0 0 +5234 1 -8.5523443360393898e+01 7.5066983480263488e+01 1.0500000017908524e+01 0 0 0 +5236 1 -8.4964193435451293e+01 7.3402370513939672e+01 1.2250000024966983e+01 0 0 0 +5237 1 -8.3862484343717000e+01 7.5634481272869252e+01 1.2250000033909229e+01 0 0 0 +5290 1 -8.1049143060323004e+01 7.2875728946256288e+01 1.0499999991595580e+01 0 0 0 +5288 1 -8.1612970186656426e+01 7.4534827940854115e+01 1.2250000054408231e+01 0 0 0 +5875 1 -8.3289036198073205e+01 7.3971184691195134e+01 1.4000000085285564e+01 0 0 0 +5287 1 -7.9929643562523410e+01 7.5095601389999615e+01 1.0499999958151662e+01 0 0 0 +5293 1 -7.9367521506514294e+01 7.3437970837913966e+01 1.2250000038339168e+01 0 0 0 +5340 1 -7.8245180726275635e+01 7.5656651621906590e+01 1.2250000013262490e+01 0 0 0 +5982 1 -7.7684224434795141e+01 7.3999341162023015e+01 1.4000000062318403e+01 0 0 0 +5343 1 -7.5439349061714239e+01 7.2903241305292028e+01 1.0499999948725996e+01 0 0 0 +5394 1 -7.4316920472321627e+01 7.5122177770402615e+01 1.0499999945914992e+01 0 0 0 +5345 1 -7.6000492876131901e+01 7.4560702422481867e+01 1.2249999963605587e+01 0 0 0 +5396 1 -7.3755787986303403e+01 7.3464688704158277e+01 1.2249999972614162e+01 0 0 0 +5397 1 -7.2633424211431006e+01 7.5683668943756786e+01 1.2249999958050081e+01 0 0 0 +6035 1 -7.2072253971300441e+01 7.4026162531365372e+01 1.3999999990190620e+01 0 0 0 +5447 1 -6.8705228111841421e+01 7.5149120119706751e+01 1.0500000030279118e+01 0 0 0 +5450 1 -6.9827570518993511e+01 7.2930139006216919e+01 1.0499999998089951e+01 0 0 0 +5448 1 -7.0388741332709742e+01 7.4587642588958317e+01 1.2249999984073922e+01 0 0 0 +5453 1 -6.8144054884960937e+01 7.3491616365183376e+01 1.2250000012594215e+01 0 0 0 +5500 1 -6.7021712112486256e+01 7.5710596429728497e+01 1.2250000049906289e+01 0 0 0 +5505 1 -6.4777023789586963e+01 7.4614569534963721e+01 1.2250000039919183e+01 0 0 0 +6142 1 -6.6460539794424420e+01 7.4053093124658133e+01 1.4000000012247915e+01 0 0 0 +5556 1 -6.2532335805335627e+01 7.3518542659497356e+01 1.2250000030492732e+01 0 0 0 +5557 1 -6.1409991817826636e+01 7.5737522326663125e+01 1.2250000033089149e+01 0 0 0 +6143 1 -6.4215851702688170e+01 7.2957066260580916e+01 1.4000000051619800e+01 0 0 0 +6194 1 -6.3093507715502710e+01 7.5176045968314369e+01 1.4000000059894063e+01 0 0 0 +5555 1 -6.0848819748474369e+01 7.4080019125037140e+01 1.0499999999577181e+01 0 0 0 +5608 1 -5.9165303827243719e+01 7.4641495625890755e+01 1.2250000050718318e+01 0 0 0 +6250 1 -5.8604131771826260e+01 7.2983992404240084e+01 1.4000000038851264e+01 0 0 0 +5613 1 -5.6920615644047004e+01 7.3545468787535540e+01 1.2250000057458076e+01 0 0 0 +5660 1 -5.5798271697113620e+01 7.5764448439960844e+01 1.2250000062145194e+01 0 0 0 +5662 1 -5.5237099639118696e+01 7.4106945254237232e+01 1.0500000075386549e+01 0 0 0 +6247 1 -5.7481787687926449e+01 7.5202972034565136e+01 1.4000000038535354e+01 0 0 0 +5663 1 -5.2992411457175045e+01 7.3010918220084861e+01 1.0500000075123758e+01 0 0 0 +5665 1 -5.3553583563087024e+01 7.4668421493492701e+01 1.2250000047558878e+01 0 0 0 +5709 1 -5.1870067444415128e+01 7.5229897789332043e+01 1.0500000061149068e+01 0 0 0 +6349 1 -5.1870067404671708e+01 7.5229897768464753e+01 1.3999999971392896e+01 0 0 0 +6303 1 -5.2992411422838622e+01 7.3010918227250329e+01 1.3999999966569849e+01 0 0 0 +5710 1 -4.9625379319117016e+01 7.4133870686231887e+01 1.0500000013336772e+01 0 0 0 +5711 1 -5.1308895400827673e+01 7.3572394574292474e+01 1.2250000030688918e+01 0 0 0 +5712 1 -5.0186551349653769e+01 7.5791374011702317e+01 1.2250000013301472e+01 0 0 0 +5745 1 -4.7941863246727273e+01 7.4695346996172077e+01 1.2250000005613256e+01 0 0 0 +5749 1 -4.5697175157896879e+01 7.3599319988497498e+01 1.2250000019685894e+01 0 0 0 +6387 1 -4.7380691244885412e+01 7.3037843849407707e+01 1.4000000017674322e+01 0 0 0 +6384 1 -4.6258347212100048e+01 7.5256823157579532e+01 1.4000000040367855e+01 0 0 0 +5181 1 -8.8549510263194577e+01 7.7841120423575546e+01 1.2250000002407180e+01 0 0 0 +5819 1 -8.7753273458449954e+01 7.6184110500755452e+01 1.3999999992081760e+01 0 0 0 +5231 1 -8.4431590949964033e+01 7.7289150389762611e+01 1.0499999982177311e+01 0 0 0 +5232 1 -8.6132426352736900e+01 7.6743137851424081e+01 1.2250000029273176e+01 0 0 0 +5870 1 -8.6710921029122986e+01 7.8387065779097711e+01 1.3999999964271566e+01 0 0 0 +5284 1 -8.2732308039741184e+01 7.7846444345223759e+01 1.2250000011774107e+01 0 0 0 +5926 1 -8.2176993459044851e+01 7.6192319455920028e+01 1.4000000093750856e+01 0 0 0 +5923 1 -8.1049143640670749e+01 7.8409714383086978e+01 1.4000000070139087e+01 0 0 0 +5338 1 -7.8805835162169132e+01 7.7314060926929187e+01 1.0499999939346326e+01 0 0 0 +5289 1 -8.0489603382035170e+01 7.6752287080710872e+01 1.2250000002031552e+01 0 0 0 +5341 1 -7.7122770469310765e+01 7.7875757112818349e+01 1.2249999971293729e+01 0 0 0 +5392 1 -7.4878099732528511e+01 7.6779699440460163e+01 1.2249999967259740e+01 0 0 0 +5979 1 -7.6561516270407168e+01 7.6218164586559098e+01 1.4000000007260622e+01 0 0 0 +6030 1 -7.5439349520338979e+01 7.8437227093335039e+01 1.3999999992474356e+01 0 0 0 +5391 1 -7.3194616375360809e+01 7.7341179753059876e+01 1.0499999979082952e+01 0 0 0 +5444 1 -7.1511092202264550e+01 7.7902649685468276e+01 1.2250000010371018e+01 0 0 0 +6086 1 -7.0949918224748430e+01 7.6245147939105578e+01 1.3999999987044284e+01 0 0 0 +5449 1 -6.9266401168226480e+01 7.6806623105808470e+01 1.2250000019885091e+01 0 0 0 +6083 1 -6.9827570958257752e+01 7.8464125008067839e+01 1.4000000026252069e+01 0 0 0 +5498 1 -6.7582883777868261e+01 7.7368099216787328e+01 1.0500000047227379e+01 0 0 0 +5499 1 -6.5338195889683007e+01 7.6272072748800170e+01 1.0500000039131796e+01 0 0 0 +5501 1 -6.5899367725200321e+01 7.7929575952245017e+01 1.2250000042662039e+01 0 0 0 +5550 1 -6.4215852003653495e+01 7.8491052480683194e+01 1.0500000027549865e+01 0 0 0 +5552 1 -6.3654679832390507e+01 7.6833549145667689e+01 1.2250000047924605e+01 0 0 0 +6191 1 -6.1971163910614230e+01 7.7395025617926393e+01 1.4000000071822383e+01 0 0 0 +5603 1 -5.8604131992101507e+01 7.8517978507363608e+01 1.0500000017245359e+01 0 0 0 +5604 1 -6.0287647991287884e+01 7.7956502056487963e+01 1.2250000030197574e+01 0 0 0 +5606 1 -5.9726475855145139e+01 7.6298998814446719e+01 1.0500000009804555e+01 0 0 0 +5609 1 -5.8042959840059495e+01 7.6860475315195373e+01 1.2250000035028306e+01 0 0 0 +5658 1 -5.6359443746062475e+01 7.7421951670089967e+01 1.0500000052804472e+01 0 0 0 +6298 1 -5.6359443745116749e+01 7.7421951653586603e+01 1.4000000018172349e+01 0 0 0 +5705 1 -5.2992411549627064e+01 7.8544904227865999e+01 1.0500000047353955e+01 0 0 0 +5659 1 -5.4114755563344652e+01 7.6325924799243055e+01 1.0500000075131201e+01 0 0 0 +5661 1 -5.4675927566373645e+01 7.7983427958758853e+01 1.2250000035708437e+01 0 0 0 +5707 1 -5.2431239408814847e+01 7.6887401018133204e+01 1.2250000015474242e+01 0 0 0 +5706 1 -5.0747723338168889e+01 7.7448877263006338e+01 1.0500000021103228e+01 0 0 0 +5741 1 -4.9064207285135815e+01 7.8010353549487149e+01 1.2249999961509344e+01 0 0 0 +5743 1 -4.8503035308750995e+01 7.6352850339160426e+01 1.0499999977313468e+01 0 0 0 +5740 1 -4.7380691294499442e+01 7.8571829807892556e+01 1.0499999959554346e+01 0 0 0 +5746 1 -4.6819519241268644e+01 7.6914326485655934e+01 1.2249999964806582e+01 0 0 0 +5176 1 -8.9045576109511671e+01 7.9440533282697402e+01 1.0500000139859688e+01 0 0 0 +5226 1 -8.7753273843486923e+01 8.1718096166192652e+01 1.0500000042998268e+01 0 0 0 +5177 1 -8.9214901757322437e+01 8.1075178530559143e+01 1.2250000072944211e+01 0 0 0 +5228 1 -8.7168422609212726e+01 7.9992917032092890e+01 1.2250000031765923e+01 0 0 0 +5233 1 -8.4964193963522760e+01 7.8936355858783529e+01 1.2250000012786520e+01 0 0 0 +5280 1 -8.3862485012648136e+01 8.1168466660193317e+01 1.2250000016517578e+01 0 0 0 +5867 1 -8.5523443858035634e+01 8.0600968870482589e+01 1.4000000038933713e+01 0 0 0 +5282 1 -8.3289036907341355e+01 7.9505170080659525e+01 1.0499999929039383e+01 0 0 0 +5279 1 -8.2176994232892056e+01 8.1726304825486039e+01 1.0499999902567623e+01 0 0 0 +5285 1 -8.1612970893504709e+01 8.0068813333925192e+01 1.2249999992921888e+01 0 0 0 +5335 1 -7.7684225139156538e+01 7.9533326766634147e+01 1.0499999934675477e+01 0 0 0 +5336 1 -7.9367522182049882e+01 7.8971956381877504e+01 1.2249999986844799e+01 0 0 0 +5337 1 -7.8245181360682409e+01 8.1190637132414651e+01 1.2249999958486400e+01 0 0 0 +5974 1 -7.9929644148975328e+01 8.0629586809093794e+01 1.4000000029920139e+01 0 0 0 +5386 1 -7.6561516892326452e+01 8.1752150221010425e+01 1.0499999954753681e+01 0 0 0 +5388 1 -7.6000493430157675e+01 8.0094688117360221e+01 1.2249999982326539e+01 0 0 0 +6027 1 -7.4316920947323212e+01 8.0656163507848731e+01 1.4000000013659244e+01 0 0 0 +5439 1 -7.0949918694515446e+01 8.1779133770527707e+01 1.0500000023177778e+01 0 0 0 +5442 1 -7.2072254447060175e+01 7.9560148381120143e+01 1.0500000000284896e+01 0 0 0 +5393 1 -7.3755788479356468e+01 7.8998674520698984e+01 1.2249999966206856e+01 0 0 0 +5440 1 -7.2633424694944708e+01 8.1217654732370178e+01 1.2250000014623900e+01 0 0 0 +5445 1 -7.0388741787655604e+01 8.0121628476940813e+01 1.2250000041682945e+01 0 0 0 +5496 1 -6.8144055306066832e+01 7.9025602414654642e+01 1.2250000054403438e+01 0 0 0 +6134 1 -6.8705228538223366e+01 8.0683106064434895e+01 1.4000000008192313e+01 0 0 0 +5495 1 -6.6460540148329315e+01 7.9587079260386318e+01 1.0500000050699040e+01 0 0 0 +5497 1 -6.7021712463421267e+01 8.1244582445448373e+01 1.2250000007679731e+01 0 0 0 +5548 1 -6.4777024075943103e+01 8.0148555681892589e+01 1.2250000020287022e+01 0 0 0 +6186 1 -6.5338196125881950e+01 8.1806058826956018e+01 1.4000000017001977e+01 0 0 0 +5547 1 -6.3093507951976243e+01 8.0710032093323576e+01 1.0499999987668780e+01 0 0 0 +5553 1 -6.2532336049512921e+01 7.9052528866616754e+01 1.2250000016470588e+01 0 0 0 +5600 1 -6.1409991999235018e+01 8.1271508469533401e+01 1.2250000007174339e+01 0 0 0 +5605 1 -5.9165304027722534e+01 8.0175481723304884e+01 1.2250000007995389e+01 0 0 0 +6242 1 -6.0848819932430587e+01 7.9614005293690127e+01 1.4000000062979185e+01 0 0 0 +6239 1 -5.9726476017450125e+01 8.1832984904445937e+01 1.4000000053399644e+01 0 0 0 +5655 1 -5.5237099865609842e+01 7.9640931264891861e+01 1.0500000037004170e+01 0 0 0 +5654 1 -5.7481787895102549e+01 8.0736958052670531e+01 1.0500000001136238e+01 0 0 0 +5656 1 -5.6920615835006430e+01 7.9079454805333967e+01 1.2250000015168439e+01 0 0 0 +5657 1 -5.5798271899225362e+01 8.1298434433702624e+01 1.2250000012687737e+01 0 0 0 +6295 1 -5.5237099805765119e+01 7.9640931269582040e+01 1.3999999984456430e+01 0 0 0 +5701 1 -5.4114755722769338e+01 8.1859910735159289e+01 1.0500000044630816e+01 0 0 0 +5702 1 -5.1870067565007865e+01 8.0763883746251111e+01 1.0500000043718297e+01 0 0 0 +5703 1 -5.3553583738064610e+01 8.0202407482336554e+01 1.2250000014850459e+01 0 0 0 +6341 1 -5.4114755712090009e+01 8.1859910738253191e+01 1.3999999953994678e+01 0 0 0 +5736 1 -4.8503035325313981e+01 8.1886836328232476e+01 1.0499999979001959e+01 0 0 0 +5708 1 -5.1308895482410236e+01 7.9106380589375789e+01 1.2249999988086213e+01 0 0 0 +5737 1 -5.0186551426143218e+01 8.1325360000494854e+01 1.2249999989846378e+01 0 0 0 +5739 1 -4.9625379383344416e+01 7.9667856739601419e+01 1.0499999997039094e+01 0 0 0 +5759 1 -4.6258347220792942e+01 8.0790809195684716e+01 1.0499999958242418e+01 0 0 0 +5742 1 -4.7941863269370991e+01 8.0229333011578845e+01 1.2249999999318634e+01 0 0 0 +5760 1 -4.5697175182659016e+01 7.9133305983674475e+01 1.2250000003860166e+01 0 0 0 +5224 1 -8.8549510655588577e+01 8.3375106205406055e+01 1.2250000095885598e+01 0 0 0 +5862 1 -8.9045576216122399e+01 8.4974519134550746e+01 1.3999999948608723e+01 0 0 0 +5223 1 -8.6710921564384009e+01 8.3921051414142255e+01 1.0500000030987655e+01 0 0 0 +5229 1 -8.6132426852155774e+01 8.2277123382000980e+01 1.2250000034615422e+01 0 0 0 +5276 1 -8.4964194453318299e+01 8.4470341333923301e+01 1.2250000037129855e+01 0 0 0 +5918 1 -8.4431591474938188e+01 8.2823135785905606e+01 1.4000000068389706e+01 0 0 0 +5281 1 -8.2732308712652397e+01 8.3380429726014285e+01 1.2249999992452485e+01 0 0 0 +5330 1 -8.1049144391579816e+01 8.3943699761551514e+01 1.0499999907182589e+01 0 0 0 +5915 1 -8.3289037430290293e+01 8.5039155489381230e+01 1.4000000099028298e+01 0 0 0 +5332 1 -8.0489604056877866e+01 8.2286272451015506e+01 1.2249999995193985e+01 0 0 0 +5333 1 -7.9367522862246076e+01 8.4505941797956837e+01 1.2249999973098010e+01 0 0 0 +5971 1 -7.8805835728160531e+01 8.2848046340590543e+01 1.4000000018768901e+01 0 0 0 +6022 1 -7.7684225720822155e+01 8.5067312274324394e+01 1.4000000013911139e+01 0 0 0 +5383 1 -7.5439350139585528e+01 8.3971212725075787e+01 1.0499999985248980e+01 0 0 0 +5384 1 -7.7122771064593948e+01 8.3409742663240536e+01 1.2249999964356453e+01 0 0 0 +5389 1 -7.4878100283096273e+01 8.2313685143372837e+01 1.2249999972359971e+01 0 0 0 +5436 1 -7.3755789004994298e+01 8.4532660199915725e+01 1.2250000017485513e+01 0 0 0 +5441 1 -7.1511092669333920e+01 8.3436635429726053e+01 1.2250000001282020e+01 0 0 0 +6078 1 -7.3194616844897126e+01 8.2875165510400535e+01 1.4000000000982809e+01 0 0 0 +6075 1 -7.2072254858866302e+01 8.5094134066104772e+01 1.4000000019620240e+01 0 0 0 +5490 1 -6.9827571344753053e+01 8.3998110751847776e+01 1.0500000028725777e+01 0 0 0 +5492 1 -6.9266401574432265e+01 8.2340608952822492e+01 1.2250000024742443e+01 0 0 0 +5493 1 -6.8144055559390438e+01 8.4559588198911612e+01 1.2250000000483890e+01 0 0 0 +5544 1 -6.5899367930471229e+01 8.3463561900937734e+01 1.2250000018467325e+01 0 0 0 +6131 1 -6.7582884072627323e+01 8.2902085145139068e+01 1.3999999998037527e+01 0 0 0 +6182 1 -6.6460540282568047e+01 8.5121065104248828e+01 1.3999999972684051e+01 0 0 0 +5549 1 -6.3654679989447949e+01 8.2367535234950068e+01 1.2249999993832896e+01 0 0 0 +5596 1 -6.2532336103633448e+01 8.4586514872765591e+01 1.2249999994605899e+01 0 0 0 +5598 1 -6.1971164042013491e+01 8.2929011695111527e+01 1.0499999960158430e+01 0 0 0 +6183 1 -6.4215852103791363e+01 8.4025038491463391e+01 1.4000000010118972e+01 0 0 0 +5595 1 -6.0848819987143244e+01 8.5147991277680163e+01 1.0499999952120000e+01 0 0 0 +5601 1 -6.0287648096603888e+01 8.3490488090065526e+01 1.2249999989345909e+01 0 0 0 +5652 1 -5.8042960015494195e+01 8.2394461325211068e+01 1.2250000006213378e+01 0 0 0 +6290 1 -5.8604132085284917e+01 8.4051964484814363e+01 1.4000000041299373e+01 0 0 0 +5697 1 -5.5237099870375644e+01 8.5174917093363206e+01 1.0500000023167036e+01 0 0 0 +5651 1 -5.6359443911505963e+01 8.2955937610425167e+01 1.0500000019061133e+01 0 0 0 +5653 1 -5.6920615933196338e+01 8.4613440714274546e+01 1.2250000016544197e+01 0 0 0 +5698 1 -5.2992411635421853e+01 8.4078890100298878e+01 1.0500000047242072e+01 0 0 0 +5699 1 -5.4675927713208416e+01 8.3517413856315542e+01 1.2249999990003225e+01 0 0 0 +5704 1 -5.2431239541431680e+01 8.2421386960036074e+01 1.2250000000207502e+01 0 0 0 +5735 1 -5.0747723397415584e+01 8.2982863242467715e+01 1.0500000040519563e+01 0 0 0 +5732 1 -4.9625379354901199e+01 8.5201842602697312e+01 1.0500000045515778e+01 0 0 0 +5733 1 -5.1308895505045648e+01 8.4640366461517871e+01 1.2250000024281896e+01 0 0 0 +5738 1 -4.9064207294083431e+01 8.3544339515207710e+01 1.2250000014443163e+01 0 0 0 +5756 1 -4.7380691241981239e+01 8.4105815766834453e+01 1.0499999991361179e+01 0 0 0 +5757 1 -4.6819519247785564e+01 8.2448312479806987e+01 1.2249999996042694e+01 0 0 0 +5758 1 -4.5697175194496843e+01 8.4667291983319274e+01 1.2250000023852927e+01 0 0 0 +5860 1 -8.7753274077696588e+01 8.7252082022973525e+01 1.4000000038269603e+01 0 0 0 +5221 1 -8.9214901640467843e+01 8.6609164535789660e+01 1.2250000082218284e+01 0 0 0 +5225 1 -8.7168423031773642e+01 8.5526902804662996e+01 1.2250000070100823e+01 0 0 0 +5273 1 -8.6132427314870426e+01 8.7811109143680596e+01 1.2250000056710093e+01 0 0 0 +5274 1 -8.5523444443058679e+01 8.6134954476036498e+01 1.0499999964726523e+01 0 0 0 +5277 1 -8.3862485585793067e+01 8.6702452167905122e+01 1.2250000027176085e+01 0 0 0 +1942 1 -8.4431592100805105e+01 8.8357121429047908e+01 1.0499999926592228e+01 0 -1 0 +5966 1 -8.2176994821393606e+01 8.7260290313372366e+01 1.4000000089425582e+01 0 0 0 +5328 1 -8.1612971574699515e+01 8.5602798731831385e+01 1.2249999994123517e+01 0 0 0 +5329 1 -8.0489604769266336e+01 8.7820257919957371e+01 1.2249999967460745e+01 0 0 0 +5327 1 -7.9929644899805979e+01 8.6163572245045486e+01 1.0499999932258097e+01 0 0 0 +5381 1 -7.8245182031322202e+01 8.6724622603424876e+01 1.2249999996762533e+01 0 0 0 +2018 1 -7.8805836392821206e+01 8.8382031845302294e+01 1.0499999959882114e+01 0 -1 0 +6020 1 -7.6561517434708918e+01 8.7286135702244465e+01 1.4000000000790246e+01 0 0 0 +5434 1 -7.4316921445774483e+01 8.6190149139493556e+01 1.0499999980922075e+01 0 0 0 +5385 1 -7.6000494030722777e+01 8.5628673692284352e+01 1.2249999986271208e+01 0 0 0 +5433 1 -7.4878100703963568e+01 8.7847670694212738e+01 1.2250000008482324e+01 0 0 0 +6126 1 -7.0949918907343957e+01 8.7313119372310851e+01 1.3999999976878692e+01 0 0 0 +5437 1 -7.2633425075106729e+01 8.6751640365337011e+01 1.2249999987741170e+01 0 0 0 +2071 1 -7.3194617159824475e+01 8.8409151044747773e+01 1.0500000009058940e+01 0 -1 0 +5487 1 -6.8705228729047974e+01 8.6217091742464774e+01 1.0500000047550973e+01 0 0 0 +5488 1 -7.0388742100875845e+01 8.5655614153256792e+01 1.2249999997496726e+01 0 0 0 +5489 1 -6.9266401694375062e+01 8.7874594574614633e+01 1.2250000003666434e+01 0 0 0 +5540 1 -6.5338196144727590e+01 8.7340044599138963e+01 1.0500000053934379e+01 0 0 0 +5541 1 -6.7021712542191892e+01 8.6778568180997325e+01 1.2250000027918034e+01 0 0 0 +5545 1 -6.4777024117990905e+01 8.5682541583454437e+01 1.2250000011824325e+01 0 0 0 +2178 1 -6.7582884122849492e+01 8.8436070766350014e+01 1.0500000066815481e+01 0 -1 0 +6234 1 -6.3093507938547191e+01 8.6244018049372457e+01 1.4000000027009021e+01 0 0 0 +5593 1 -6.3654679942283877e+01 8.7901521050669430e+01 1.2250000045902844e+01 0 0 0 +5597 1 -6.1409991955831224e+01 8.6805494372425969e+01 1.2250000016129341e+01 0 0 0 +2871 1 -6.1971163930051368e+01 8.8462997517520606e+01 1.4000000074049495e+01 0 -1 0 +5646 1 -5.9726475975006736e+01 8.7366970777724887e+01 1.0499999955832779e+01 0 0 0 +5648 1 -5.9165304056812431e+01 8.5709467649744084e+01 1.2250000007382351e+01 0 0 0 +5649 1 -5.8042959946508596e+01 8.7928447125875252e+01 1.2250000002228314e+01 0 0 0 +6287 1 -5.7481787893765478e+01 8.6270943908786066e+01 1.4000000050945426e+01 0 0 0 +5696 1 -5.5798271891549845e+01 8.6832420215578281e+01 1.2250000026124912e+01 0 0 0 +2978 1 -5.6359443825435129e+01 8.8489923312568166e+01 1.4000000041422856e+01 0 -1 0 +5695 1 -5.4114755702677826e+01 8.7393896476357654e+01 1.0500000049573954e+01 0 0 0 +5700 1 -5.3553583771393903e+01 8.5736393291997885e+01 1.2250000003611412e+01 0 0 0 +5730 1 -5.2431239554749290e+01 8.7955372694031297e+01 1.2250000007423104e+01 0 0 0 +5731 1 -5.1870067563248334e+01 8.6297869568018129e+01 1.0500000067027816e+01 0 0 0 +5752 1 -4.8503035375827736e+01 8.7420822202235300e+01 1.0500000015832967e+01 0 0 0 +5734 1 -5.0186551427268725e+01 8.6859345846456989e+01 1.2250000026395343e+01 0 0 0 +2391 1 -5.0747723420027292e+01 8.8516848953733344e+01 1.0500000038166551e+01 0 -1 0 +5753 1 -4.6258347306923774e+01 8.6324795191313484e+01 1.0499999959491330e+01 0 0 0 +5754 1 -4.7941863286343562e+01 8.5763318969063675e+01 1.2250000031402335e+01 0 0 0 +5755 1 -4.6819519381066620e+01 8.7982298434230529e+01 1.2250000003232019e+01 0 0 0 +3202 1 -8.9045575799156637e+01 4.6236618908580482e+01 2.9314406901903567e-08 0 0 0 +5762 1 -8.9045575797227656e+01 4.6236618840629681e+01 1.4000000010369979e+01 0 0 0 +5765 1 -8.8549509886050913e+01 4.4637205663853621e+01 1.5749999993828203e+01 0 0 0 +5779 1 -8.7168422055803276e+01 4.6789002463313253e+01 1.5750000027900677e+01 0 0 0 +5783 1 -8.4964193207208936e+01 4.5732440736365497e+01 1.5749999983129976e+01 0 0 0 +3251 1 -8.3289035898520268e+01 4.6301254660157824e+01 1.7499999992772747e+01 0 0 -1 +5811 1 -8.3289035873326426e+01 4.6301254701015836e+01 1.3999999982251975e+01 0 0 0 +5813 1 -8.2732307233154529e+01 4.4642528442349303e+01 1.5749999995554488e+01 0 0 0 +5814 1 -8.1612969822239819e+01 4.6864897636962482e+01 1.5749999990406172e+01 0 0 0 +3295 1 -7.7684224201234045e+01 4.6329410012513584e+01 1.7499999978727729e+01 0 0 -1 +5855 1 -7.7684224069222878e+01 4.6329410031540348e+01 1.3999999985228866e+01 0 0 0 +5856 1 -7.9367521208530803e+01 4.5768039846784767e+01 1.5749999999780616e+01 0 0 0 +5859 1 -7.7122769639008837e+01 4.4671839914812061e+01 1.5749999985173218e+01 0 0 0 +5908 1 -7.6000492474543918e+01 4.6890771208092005e+01 1.5750000003982436e+01 0 0 0 +3402 1 -7.2072253743706867e+01 4.6356231031195556e+01 2.3678452976128028e-08 0 0 0 +5912 1 -7.3755787675793172e+01 4.5794757207044007e+01 1.5750000046762914e+01 0 0 0 +5962 1 -7.2072253669738089e+01 4.6356231004948619e+01 1.4000000027256638e+01 0 0 0 +5964 1 -7.1511091621596080e+01 4.4698732023619129e+01 1.5750000048815032e+01 0 0 0 +5965 1 -7.0388741114056799e+01 4.6917711084422578e+01 1.5750000035537871e+01 0 0 0 +6016 1 -6.8144054900894005e+01 4.5821684804718032e+01 1.5749999988920598e+01 0 0 0 +3455 1 -6.6460539832168720e+01 4.6383161748546428e+01 1.7499999987984975e+01 0 0 -1 +6015 1 -6.6460539803218794e+01 4.6383161746949106e+01 1.3999999982367674e+01 0 0 0 +6019 1 -6.5899367442858178e+01 4.4725658405430636e+01 1.5750000005495984e+01 0 0 0 +6068 1 -6.4777023807749686e+01 4.6944638399806543e+01 1.5750000010822248e+01 0 0 0 +3510 1 -6.4215851755559370e+01 4.5287135233133675e+01 1.7499999989339305e+01 0 0 -1 +6070 1 -6.4215851660953319e+01 4.5287135196967590e+01 1.3999999986042260e+01 0 0 0 +6072 1 -6.2532335779815284e+01 4.5848611965248878e+01 1.5749999995478451e+01 0 0 0 +3563 1 -5.8604131671460429e+01 4.5314062442280118e+01 2.7521590340029434e-08 0 0 0 +6123 1 -5.8604131668903790e+01 4.5314062405398367e+01 1.4000000000426711e+01 0 0 0 +6124 1 -6.0287647650419977e+01 4.4752585678531666e+01 1.5750000007408506e+01 0 0 0 +6125 1 -5.9165303677143775e+01 4.6971565502117699e+01 1.5750000013213501e+01 0 0 0 +3615 1 -5.5237099693094862e+01 4.6437015650452061e+01 1.5045330314933381e-08 0 0 0 +6176 1 -5.6920615552845703e+01 4.5875538972466479e+01 1.5750000032568087e+01 0 0 0 +3670 1 -5.2992411666167769e+01 4.5340988749491459e+01 4.0486753505319939e-08 0 0 0 +6179 1 -5.4675927538224286e+01 4.4779512374428329e+01 1.5749999996871200e+01 0 0 0 +6228 1 -5.3553583738482835e+01 4.6998491967569812e+01 1.5750000002703068e+01 0 0 0 +3722 1 -4.9625379790664205e+01 4.6463941470434136e+01 1.7499999992645684e+01 0 0 -1 +6232 1 -5.1308895748756463e+01 4.5902465212509334e+01 1.5750000036820543e+01 0 0 0 +6284 1 -4.9064207816486750e+01 4.4806438289616537e+01 1.5750000023571090e+01 0 0 0 +3723 1 -4.7380691789841450e+01 4.5367914645875395e+01 1.2048872122250032e-08 0 0 0 +6371 1 -5.1870067545140436e+01 8.6297869558683018e+01 1.3999999984605173e+01 0 0 0 +6285 1 -4.7941863721506742e+01 4.7025417866612884e+01 1.5750000021411081e+01 0 0 0 +6334 1 -4.5697175656097713e+01 4.5929390896869904e+01 1.5750000020233317e+01 0 0 0 +3217 1 -8.7753273077648586e+01 4.8514181905600587e+01 9.8136030857176593e-08 0 0 0 +5763 1 -8.9214901478364624e+01 4.7871264364380522e+01 1.5750000029143708e+01 0 0 0 +5775 1 -8.8549510031254911e+01 5.0171192124661516e+01 1.5750000033407972e+01 0 0 0 +5777 1 -8.7753273126710283e+01 4.8514181849276341e+01 1.3999999942429623e+01 0 0 0 +5780 1 -8.6132425931949072e+01 4.9073209007371062e+01 1.5750000069580858e+01 0 0 0 +5809 1 -8.3862483957788569e+01 4.7964551726745434e+01 1.5750000005916135e+01 0 0 0 +3248 1 -8.2176993006298162e+01 4.8522389654963099e+01 6.4658181031518325e-09 0 0 0 +5808 1 -8.2176992952989224e+01 4.8522389715145465e+01 1.4000000004916485e+01 0 0 0 +5810 1 -8.2732307389947266e+01 5.0176515043391646e+01 1.5750000010553412e+01 0 0 0 +5852 1 -8.0489602754793438e+01 4.9082356983876878e+01 1.5749999988818809e+01 0 0 0 +5857 1 -7.8245180184071458e+01 4.7986720847295366e+01 1.5750000000961709e+01 0 0 0 +3346 1 -7.6561515822155783e+01 4.8548233717708094e+01 1.7499999964444878e+01 0 0 -1 +5904 1 -7.7122769717126715e+01 5.0205826601773651e+01 1.5750000016014052e+01 0 0 0 +5906 1 -7.6561515715955110e+01 4.8548233714978998e+01 1.4000000004584663e+01 0 0 0 +5909 1 -7.4878099133898729e+01 4.9109768497361742e+01 1.5750000005088463e+01 0 0 0 +3399 1 -7.0949917918547129e+01 4.8575216698679036e+01 2.3213715394376777e-08 0 0 0 +5959 1 -7.0949917877681571e+01 4.8575216675701384e+01 1.4000000013326163e+01 0 0 0 +5960 1 -7.2633423791087878e+01 4.8013737698270042e+01 1.5750000032888622e+01 0 0 0 +5961 1 -7.1511091687083081e+01 5.0232718658315818e+01 1.5750000021368910e+01 0 0 0 +6012 1 -6.9266400876884518e+01 4.9136691823011098e+01 1.5750000036295779e+01 0 0 0 +6017 1 -6.7021712041714352e+01 4.8040665053117877e+01 1.5749999981889664e+01 0 0 0 +6064 1 -6.5899367551084410e+01 5.0259644745254455e+01 1.5749999994590668e+01 0 0 0 +3507 1 -6.3093507720381886e+01 4.7506115130889214e+01 2.5159973660038304e-08 0 0 0 +3558 1 -6.1971163760682366e+01 4.9725094898034648e+01 3.6813080583897317e-08 0 0 0 +6067 1 -6.3093507647778310e+01 4.7506115116403137e+01 1.3999999999430738e+01 0 0 0 +6118 1 -6.1971163707229351e+01 4.9725094896568272e+01 1.4000000024932831e+01 0 0 0 +6069 1 -6.3654679738733343e+01 4.9163618149760083e+01 1.5750000031959873e+01 0 0 0 +6120 1 -6.1409991682325973e+01 4.8067591778607323e+01 1.5750000027815014e+01 0 0 0 +6121 1 -6.0287647711291612e+01 5.0286571639486176e+01 1.5750000039635104e+01 0 0 0 +6172 1 -5.8042959626227280e+01 4.9190545314807515e+01 1.5750000001095986e+01 0 0 0 +3611 1 -5.6359443560353590e+01 4.9752021855543141e+01 4.7780890355397787e-08 0 0 0 +3614 1 -5.7481787562218159e+01 4.7533042142443691e+01 3.4938583581833882e-08 0 0 0 +6174 1 -5.7481787586218651e+01 4.7533042103937923e+01 1.3999999998005404e+01 0 0 0 +6177 1 -5.5798271603957929e+01 4.8094518719753694e+01 1.5750000027028094e+01 0 0 0 +3666 1 -5.4114755622113691e+01 4.8655995240556095e+01 1.0611103107294184e-08 0 0 0 +3667 1 -5.1870067719489498e+01 4.7559968378311076e+01 4.1401083450409715e-08 0 0 0 +6224 1 -5.4675927426894788e+01 5.0313498287938430e+01 1.5750000020820652e+01 0 0 0 +6229 1 -5.2431239586652566e+01 4.9217471596077729e+01 1.5750000012131700e+01 0 0 0 +3718 1 -5.0747723584301305e+01 4.9778947963217796e+01 4.1713359877348921e-08 0 0 0 +3719 1 -4.8503035714182701e+01 4.8682921138405057e+01 1.0157261698395814e-08 0 0 0 +6280 1 -5.0186551719360452e+01 4.8121444738344763e+01 1.5750000015040941e+01 0 0 0 +6281 1 -4.9064207570255221e+01 5.0340424283022230e+01 1.5750000030971318e+01 0 0 0 +3773 1 -4.6258347646300031e+01 4.7586894103919228e+01 2.5001860137763288e-08 0 0 0 +6370 1 -5.2431239497557954e+01 8.7955372674298573e+01 1.5749999945615226e+01 0 0 0 +6331 1 -4.6819519579273020e+01 4.9244397386623078e+01 1.5750000028162686e+01 0 0 0 +5771 1 -8.9214901269805196e+01 5.3405250649429746e+01 1.5749999991023255e+01 0 0 0 +5776 1 -8.7168422239154808e+01 5.2322988956170271e+01 1.5750000014580303e+01 0 0 0 +3214 1 -8.6710920588763656e+01 5.0717137345890464e+01 4.4300065837887814e-08 0 0 0 +3243 1 -8.5523443135030661e+01 5.2931040636108207e+01 1.3739299475901134e-08 0 0 0 +5774 1 -8.6710920565999103e+01 5.0717137371998795e+01 1.4000000006413499e+01 0 0 0 +5803 1 -8.5523443116442380e+01 5.2931040652972953e+01 1.4000000007820979e+01 0 0 0 +5805 1 -8.4964193304595966e+01 5.1266427209324469e+01 1.5750000048082732e+01 0 0 0 +5806 1 -8.3862484057893710e+01 5.3498538238446208e+01 1.5750000024908339e+01 0 0 0 +3290 1 -8.1049142900049290e+01 5.0739784779680193e+01 1.7499999992743486e+01 0 0 -1 +5848 1 -8.1612969904909477e+01 5.2398884234275052e+01 1.5750000022058407e+01 0 0 0 +5850 1 -8.1049142855111839e+01 5.0739784823042250e+01 1.4000000005131993e+01 0 0 0 +3287 1 -7.9929643142087954e+01 5.2959657434629975e+01 1.7499999956143959e+01 0 0 -1 +5847 1 -7.9929643093297003e+01 5.2959657476799933e+01 1.4000000013630839e+01 0 0 0 +5853 1 -7.9367521292922120e+01 5.1302026518741179e+01 1.5749999990526883e+01 0 0 0 +5900 1 -7.8245180239695543e+01 5.3520707481664289e+01 1.5749999978162904e+01 0 0 0 +5954 1 -7.4316919979809498e+01 5.2986233100964007e+01 1.3999999980041096e+01 0 0 0 +3343 1 -7.5439348835943520e+01 5.0767296472862533e+01 1.7499999985412042e+01 0 0 -1 +3394 1 -7.4316920051095821e+01 5.2986233133524770e+01 1.7499999994336559e+01 0 0 -1 +5903 1 -7.5439348740030951e+01 5.0767296468008496e+01 1.3999999984630952e+01 0 0 0 +5905 1 -7.6000492476678872e+01 5.2424757825046363e+01 1.5749999984204365e+01 0 0 0 +5956 1 -7.3755787710592827e+01 5.1328743832090019e+01 1.5750000009785502e+01 0 0 0 +5957 1 -7.2633423720628045e+01 5.3547724243770922e+01 1.5750000014622699e+01 0 0 0 +3447 1 -6.8705227981070550e+01 5.3013175129438352e+01 2.2729697235490676e-08 0 0 0 +3450 1 -6.9827570545222883e+01 5.0794193896998607e+01 1.6994608387221888e-08 0 0 0 +6007 1 -6.8705227917496813e+01 5.3013175091896564e+01 1.4000000009415247e+01 0 0 0 +6008 1 -7.0388741117459986e+01 5.2451697659393247e+01 1.5750000014051983e+01 0 0 0 +6010 1 -6.9827570504251725e+01 5.0794193891695578e+01 1.4000000005710913e+01 0 0 0 +6013 1 -6.8144054894659916e+01 5.1355671259837408e+01 1.5750000022322157e+01 0 0 0 +6060 1 -6.7021711934291261e+01 5.3574651413504192e+01 1.5750000033449259e+01 0 0 0 +6065 1 -6.4777023762792282e+01 5.2478624614910125e+01 1.5750000015026613e+01 0 0 0 +6116 1 -6.2532335797090703e+01 5.1382598039682065e+01 1.5750000050390110e+01 0 0 0 +6117 1 -6.1409991599425339e+01 5.3601577794752131e+01 1.5750000037609663e+01 0 0 0 +3555 1 -6.0848819628369405e+01 5.1944074746759931e+01 3.7675356168165308e-08 0 0 0 +6115 1 -6.0848819596010514e+01 5.1944074710298295e+01 1.4000000042416040e+01 0 0 0 +6168 1 -5.9165303604587315e+01 5.2505551441875042e+01 1.5750000025652838e+01 0 0 0 +3662 1 -5.5237099564386789e+01 5.1971001558814990e+01 3.0690912922182179e-08 0 0 0 +6173 1 -5.6920615499057163e+01 5.1409524897682559e+01 1.5749999996827160e+01 0 0 0 +6220 1 -5.5798271488647693e+01 5.3628504603831978e+01 1.5749999981036543e+01 0 0 0 +3714 1 -5.1870067544989162e+01 5.3093954281502874e+01 2.7733914720329267e-08 0 0 0 +3663 1 -5.2992411571085420e+01 5.0874974733178249e+01 3.6801210967496445e-09 0 0 0 +6225 1 -5.3553583563692904e+01 5.2532477873345272e+01 1.5750000023454703e+01 0 0 0 +3715 1 -4.9625379554056813e+01 5.1997927402801317e+01 3.8263177515318603e-08 0 0 0 +6276 1 -5.1308895596829970e+01 5.1436451161524097e+01 1.5750000012920136e+01 0 0 0 +6277 1 -5.0186551499517329e+01 5.3655430589059442e+01 1.5750000022566859e+01 0 0 0 +3767 1 -4.6258347385228660e+01 5.3120880038523559e+01 1.2437553209565522e-08 0 0 0 +3770 1 -4.7380691498667069e+01 5.0901900636705470e+01 8.7167499884799327e-09 0 0 0 +6328 1 -4.7941863471556942e+01 5.2559403772430485e+01 1.5750000021009550e+01 0 0 0 +6332 1 -4.5697175363048991e+01 5.1463376885398837e+01 1.5750000029403617e+01 0 0 0 +5772 1 -8.8549510138722468e+01 5.5705178350856592e+01 1.5749999966518120e+01 0 0 0 +5800 1 -8.4431590486367682e+01 5.5153207784733759e+01 1.4000000013426817e+01 0 0 0 +3240 1 -8.4431590496987027e+01 5.5153207759608705e+01 1.7499999991549629e+01 0 0 -1 +5801 1 -8.6132426110646236e+01 5.4607195404871867e+01 1.5749999977843510e+01 0 0 0 +5844 1 -8.2732307425950822e+01 5.5710501511930374e+01 1.5750000030456661e+01 0 0 0 +5898 1 -7.8805834377148102e+01 5.5178117186036594e+01 1.3999999984827456e+01 0 0 0 +3338 1 -7.8805834418435552e+01 5.5178117132741924e+01 1.7499999957085020e+01 0 0 -1 +5849 1 -8.0489602780154854e+01 5.4616343542871078e+01 1.5750000003875769e+01 0 0 0 +5901 1 -7.7122769654663159e+01 5.5739813136636890e+01 1.5749999975886237e+01 0 0 0 +5952 1 -7.4878099071072313e+01 5.4643755044118592e+01 1.5750000000194524e+01 0 0 0 +5951 1 -7.3194615676381915e+01 5.5205235280795243e+01 1.3999999981981391e+01 0 0 0 +3391 1 -7.3194615717026352e+01 5.5205235300909855e+01 5.6305253792743315e-09 0 0 0 +6004 1 -7.1511091518962658e+01 5.5766705115661580e+01 1.5750000031384570e+01 0 0 0 +6009 1 -6.9266400760817120e+01 5.4670678261594148e+01 1.5750000008780058e+01 0 0 0 +3499 1 -6.5338195742197414e+01 5.4136127807940753e+01 4.3787924397520328e-08 0 0 0 +6058 1 -6.7582883359402501e+01 5.5232154337202665e+01 1.3999999987775711e+01 0 0 0 +3498 1 -6.7582883413873148e+01 5.5232154328674405e+01 4.9985867889290603e-08 0 0 0 +6059 1 -6.5338195633120051e+01 5.4136127789525354e+01 1.4000000020121210e+01 0 0 0 +6061 1 -6.5899367333964321e+01 5.5793631022198852e+01 1.5750000037799943e+01 0 0 0 +3550 1 -6.4215851613466398e+01 5.6355107575150456e+01 5.0474358914698314e-08 0 0 0 +6110 1 -6.4215851510129497e+01 5.6355107545710986e+01 1.4000000043241315e+01 0 0 0 +6112 1 -6.3654679565330149e+01 5.4697604292966638e+01 1.5750000034007693e+01 0 0 0 +3603 1 -5.8604131492698365e+01 5.6382034274869774e+01 5.7703815059539920e-09 0 0 0 +3606 1 -5.9726475516556505e+01 5.4163054523189246e+01 4.1772572956233489e-08 0 0 0 +6163 1 -5.8604131530060556e+01 5.6382034246845095e+01 1.4000000022410070e+01 0 0 0 +6164 1 -6.0287647550208561e+01 5.5820557593597734e+01 1.5750000027126815e+01 0 0 0 +6166 1 -5.9726475532085189e+01 5.4163054493654187e+01 1.4000000032547907e+01 0 0 0 +6169 1 -5.8042959439158942e+01 5.4724531175876514e+01 1.5750000023332406e+01 0 0 0 +3659 1 -5.4114755426359480e+01 5.4189981084088586e+01 3.3671948784785855e-08 0 0 0 +3710 1 -5.2992411397593550e+01 5.6408960511902507e+01 1.9361699798992049e-08 0 0 0 +6221 1 -5.4675927289002523e+01 5.5847484139887726e+01 1.5749999964640876e+01 0 0 0 +6272 1 -5.2431239375930240e+01 5.4751457380633340e+01 1.5750000001952104e+01 0 0 0 +3766 1 -4.8503035496007513e+01 5.4216906976872387e+01 1.9103893578176212e-08 0 0 0 +3711 1 -5.0747723411211979e+01 5.5312933745923921e+01 2.4493306938211390e-08 0 0 0 +6324 1 -4.9064207435476256e+01 5.5874410072681158e+01 1.5750000042912854e+01 0 0 0 +3763 1 -4.7380691416161802e+01 5.6435886458565420e+01 2.8955966513422027e-08 0 0 0 +6329 1 -4.6819519404011359e+01 5.4778383240716209e+01 1.5750000028295112e+01 0 0 0 +3207 1 -8.9045575904701010e+01 5.7304591425304153e+01 8.8246920881829283e-09 0 0 0 +3235 1 -8.7753273297103888e+01 5.9582154306811013e+01 1.7499999982426310e+01 0 0 -1 +5767 1 -8.9045575900222630e+01 5.7304591339699556e+01 1.3999999939319439e+01 0 0 0 +5795 1 -8.7753273307571021e+01 5.9582154266830045e+01 1.3999999986582596e+01 0 0 0 +5768 1 -8.9214901335418858e+01 5.8939236692037014e+01 1.5749999959335382e+01 0 0 0 +5797 1 -8.7168422278686478e+01 5.7856975170027503e+01 1.5749999994702133e+01 0 0 0 +5802 1 -8.4964193342541378e+01 5.6800413583789471e+01 1.5750000001772003e+01 0 0 0 +5840 1 -8.3862484068947211e+01 5.9032524501917706e+01 1.5750000004345916e+01 0 0 0 +3279 1 -8.2176993027467319e+01 5.9590362471976484e+01 3.4273348603619525e-09 0 0 0 +3282 1 -8.3289036027165395e+01 5.7369227576448473e+01 1.7499999960469371e+01 0 0 -1 +5839 1 -8.2176992987439746e+01 5.9590362545995156e+01 1.4000000013101317e+01 0 0 0 +5842 1 -8.3289036011846576e+01 5.7369227659185306e+01 1.4000000022325759e+01 0 0 0 +5845 1 -8.1612969897499170e+01 5.7932870635950486e+01 1.5750000007149806e+01 0 0 0 +5895 1 -7.7684224055815918e+01 5.7397383173095548e+01 1.3999999980906390e+01 0 0 0 +3335 1 -7.7684224116293166e+01 5.7397383119614965e+01 1.7499999971016241e+01 0 0 -1 +5896 1 -7.9367521253236674e+01 5.6836012999074171e+01 1.5749999996165901e+01 0 0 0 +5897 1 -7.8245180104526838e+01 5.9054693847241403e+01 1.5750000008432185e+01 0 0 0 +5946 1 -7.6561515571200118e+01 5.9616206692282582e+01 1.4000000003307468e+01 0 0 0 +3386 1 -7.6561515603978151e+01 5.9616206681064419e+01 1.7499999979181325e+01 0 0 -1 +5948 1 -7.6000492343760556e+01 5.7958744274736318e+01 1.5749999995367926e+01 0 0 0 +5999 1 -7.0949917563067046e+01 5.9643189535896511e+01 1.3999999999363984e+01 0 0 0 +6002 1 -7.2072253493701297e+01 5.7424204022732006e+01 1.3999999993481723e+01 0 0 0 +3439 1 -7.0949917571034433e+01 5.9643189573542202e+01 2.3492837897265417e-08 0 0 0 +3442 1 -7.2072253531553940e+01 5.7424204086286295e+01 2.1093971014352064e-08 0 0 0 +5953 1 -7.3755787562192481e+01 5.6862730312983857e+01 1.5750000003768838e+01 0 0 0 +6000 1 -7.2633423534037902e+01 5.9081710631316938e+01 1.5750000018389237e+01 0 0 0 +6005 1 -7.0388740857743187e+01 5.7985684020661822e+01 1.5750000011453116e+01 0 0 0 +6056 1 -6.8144054671339887e+01 5.6889657639688508e+01 1.5750000004108839e+01 0 0 0 +6055 1 -6.6460539534151252e+01 5.7451134352708912e+01 1.4000000025456011e+01 0 0 0 +3495 1 -6.6460539583573805e+01 5.7451134389936065e+01 2.8993284217904147e-08 0 0 0 +6057 1 -6.7021711687550791e+01 5.9108637670280217e+01 1.5750000010535006e+01 0 0 0 +6108 1 -6.4777023531235812e+01 5.8012610786146887e+01 1.5750000055869736e+01 0 0 0 +3547 1 -6.3093507419885455e+01 5.8574087288261694e+01 7.7896018524370447e-08 0 0 0 +6107 1 -6.3093507351963950e+01 5.8574087285226298e+01 1.4000000035809093e+01 0 0 0 +6113 1 -6.2532335594888657e+01 5.6916584064795593e+01 1.5750000043730493e+01 0 0 0 +6160 1 -6.1409991383994850e+01 5.9135563769140127e+01 1.5750000042547319e+01 0 0 0 +6165 1 -5.9165303453165329e+01 5.8039537348248608e+01 1.5749999992574715e+01 0 0 0 +3654 1 -5.7481787295523411e+01 5.8601013921563592e+01 1.7499999987484994e+01 0 0 -1 +6214 1 -5.7481787345458500e+01 5.8601013881861988e+01 1.3999999988008746e+01 0 0 0 +6216 1 -5.6920615335475823e+01 5.6943510754508551e+01 1.5749999988948161e+01 0 0 0 +6217 1 -5.5798271349529216e+01 5.9162490445283524e+01 1.5749999961899768e+01 0 0 0 +3707 1 -5.1870067448228376e+01 5.8627940029472505e+01 2.1774532399376767e-08 0 0 0 +6268 1 -5.3553583446011643e+01 5.8066463651019845e+01 1.5749999959982539e+01 0 0 0 +3759 1 -4.8503035423659583e+01 5.9750892720995957e+01 3.5826364097601981e-08 0 0 0 +3762 1 -4.9625379454805483e+01 5.7531913152279003e+01 3.2138814276549965e-08 0 0 0 +6273 1 -5.1308895451441998e+01 5.6970436924069716e+01 1.5750000010082305e+01 0 0 0 +6320 1 -5.0186551429783776e+01 5.9189416331637929e+01 1.5750000013811476e+01 0 0 0 +3808 1 -4.6258347322581628e+01 5.8654865819825943e+01 3.7509501282784186e-08 0 0 0 +6325 1 -4.7941863389705375e+01 5.8093389535235637e+01 1.5750000034936802e+01 0 0 0 +6369 1 -4.5697175271553519e+01 5.6997362737291724e+01 1.5750000014866320e+01 0 0 0 +5793 1 -8.8549510209494230e+01 6.1239164289343407e+01 1.5749999987933961e+01 0 0 0 +3232 1 -8.6710920730356108e+01 6.1785109640799128e+01 1.7499999990128252e+01 0 0 -1 +5792 1 -8.6710920680536162e+01 6.1785109646899990e+01 1.3999999989935619e+01 0 0 0 +5798 1 -8.6132426136761268e+01 6.0141181505673174e+01 1.5750000024919220e+01 0 0 0 +5836 1 -8.4964193340767537e+01 6.2334399561193884e+01 1.5750000025723145e+01 0 0 0 +3330 1 -8.1049142828849327e+01 6.1807757417376763e+01 1.9618273228161343e-08 0 0 0 +5890 1 -8.1049142762268261e+01 6.1807757506670377e+01 1.4000000011703838e+01 0 0 0 +5841 1 -8.2732307370111116e+01 6.1244487673276780e+01 1.5750000026622441e+01 0 0 0 +5892 1 -8.0489602702015858e+01 6.0150329837363437e+01 1.5750000022326676e+01 0 0 0 +5893 1 -7.9367521156449413e+01 6.2369999189293964e+01 1.5750000039836088e+01 0 0 0 +5943 1 -7.5439348519667263e+01 6.1835269275992736e+01 1.4000000014042591e+01 0 0 0 +3383 1 -7.5439348542897605e+01 6.1835269261066408e+01 2.4422419642178284e-09 0 0 0 +5944 1 -7.7122769529494647e+01 6.1273799438719237e+01 1.5750000049805413e+01 0 0 0 +5949 1 -7.4878098900209253e+01 6.0177741404119658e+01 1.5750000021635204e+01 0 0 0 +5996 1 -7.3755787414511857e+01 6.2396716590016986e+01 1.5750000020395920e+01 0 0 0 +6001 1 -7.1511091349461495e+01 6.1300691441960637e+01 1.5750000005131044e+01 0 0 0 +6050 1 -6.9827570125677056e+01 6.1862166574319325e+01 1.4000000003473810e+01 0 0 0 +3490 1 -6.9827570134234080e+01 6.1862166625875560e+01 5.0252495498170902e-09 0 0 0 +6052 1 -6.9266400510477681e+01 6.0204664563504956e+01 1.5750000026899423e+01 0 0 0 +6053 1 -6.8144054515558409e+01 6.2423643885781111e+01 1.5750000010142600e+01 0 0 0 +6104 1 -6.5899367129045316e+01 6.1327617216686221e+01 1.5750000017704078e+01 0 0 0 +3598 1 -6.1971163426149985e+01 6.0793066956673997e+01 5.1685852042737679e-08 0 0 0 +6109 1 -6.3654679383972088e+01 6.0231590395882002e+01 1.5750000052426975e+01 0 0 0 +6156 1 -6.2532335477218901e+01 6.2450570167244777e+01 1.5750000070050710e+01 0 0 0 +6158 1 -6.1971163387502912e+01 6.0793066962641284e+01 1.4000000048146591e+01 0 0 0 +3595 1 -6.0848819324564175e+01 6.3012046756754479e+01 4.4074276672745327e-08 0 0 0 +6155 1 -6.0848819315610065e+01 6.3012046740948627e+01 1.4000000044843461e+01 0 0 0 +6161 1 -6.0287647427364988e+01 6.1354543579701108e+01 1.5750000023754179e+01 0 0 0 +6212 1 -5.8042959360108398e+01 6.0258517117713403e+01 1.5749999973835910e+01 0 0 0 +3651 1 -5.6359443285659424e+01 6.0819993600168807e+01 1.7499999977328581e+01 0 0 -1 +3702 1 -5.5237099342055430e+01 6.3038973255310708e+01 1.7499999980551031e+01 0 0 -1 +6211 1 -5.6359443332585428e+01 6.0819993595647475e+01 1.3999999974200039e+01 0 0 0 +6213 1 -5.6920615256268370e+01 6.2477496675907098e+01 1.5749999960489905e+01 0 0 0 +6262 1 -5.5237099363562074e+01 6.3038973256911390e+01 1.3999999971378219e+01 0 0 0 +6264 1 -5.4675927194152017e+01 6.1381469972219584e+01 1.5749999975261668e+01 0 0 0 +6269 1 -5.2431239309964226e+01 6.0285443189380928e+01 1.5749999986093215e+01 0 0 0 +3755 1 -4.9625379380121281e+01 6.3065898877413417e+01 5.6690055316721555e-08 0 0 0 +3758 1 -5.0747723355288173e+01 6.0846919506488916e+01 2.8638979188144731e-08 0 0 0 +6316 1 -5.1308895388123716e+01 6.2504422684549922e+01 1.5750000005614339e+01 0 0 0 +6321 1 -4.9064207329166940e+01 6.1408395775663642e+01 1.5750000049907134e+01 0 0 0 +3805 1 -4.7380691307377298e+01 6.1969872118511063e+01 4.6922227880941136e-08 0 0 0 +6366 1 -4.6819519328543038e+01 6.0312368964716931e+01 1.5750000074818683e+01 0 0 0 +6367 1 -4.5697175202481127e+01 6.2531348410114688e+01 1.5750000060475864e+01 0 0 0 +5789 1 -8.9214901448101557e+01 6.4473222389859998e+01 1.5749999937414563e+01 0 0 0 +5794 1 -8.7168422240818288e+01 6.3390960954223544e+01 1.5749999962535748e+01 0 0 0 +3274 1 -8.5523443164402366e+01 6.3999012682323411e+01 1.7499999997785746e+01 0 0 -1 +3271 1 -8.4431590508213816e+01 6.6221179557685574e+01 4.0017269498093810e-09 0 0 0 +5834 1 -8.5523443090030014e+01 6.3999012717409116e+01 1.3999999969996473e+01 0 0 0 +5832 1 -8.6132426082061073e+01 6.5675167159155578e+01 1.5749999939205074e+01 0 0 0 +5837 1 -8.3862484015352535e+01 6.4566510347842282e+01 1.5750000022519055e+01 0 0 0 +5831 1 -8.4431590407839138e+01 6.6221179619536272e+01 1.3999999974761316e+01 0 0 0 +5888 1 -8.1612969810368824e+01 6.3466856664035454e+01 1.5750000048777027e+01 0 0 0 +3327 1 -7.9929643028443650e+01 6.4027629880557342e+01 1.3225474049249897e-08 0 0 0 +5889 1 -8.0489602689601739e+01 6.5684315788369247e+01 1.5750000061555983e+01 0 0 0 +5887 1 -7.9929642960661340e+01 6.4027629958729406e+01 1.4000000046259776e+01 0 0 0 +5940 1 -7.8245180077589964e+01 6.4588679973602154e+01 1.5750000048584456e+01 0 0 0 +3378 1 -7.8805834318676801e+01 6.6246089428750906e+01 3.2873440858338654e-08 0 0 0 +5938 1 -7.8805834265561629e+01 6.6246089493435775e+01 1.4000000047350312e+01 0 0 0 +5994 1 -7.4316919759545613e+01 6.4054205750012272e+01 1.4000000019980643e+01 0 0 0 +3434 1 -7.4316919756784799e+01 6.4054205787971057e+01 1.5578365264445893e-08 0 0 0 +5945 1 -7.6000492256078402e+01 6.3492730497087251e+01 1.5750000034118836e+01 0 0 0 +5992 1 -7.4878098885130356e+01 6.5711727595278461e+01 1.5750000048082681e+01 0 0 0 +5997 1 -7.2633423457594915e+01 6.4615696888205264e+01 1.5750000018949525e+01 0 0 0 +3431 1 -7.3194615503929214e+01 6.6273207855071462e+01 1.6939555536055195e-08 0 0 0 +5991 1 -7.3194615534706884e+01 6.6273207820101064e+01 1.4000000008888628e+01 0 0 0 +3487 1 -6.8705227607196903e+01 6.4081147753462631e+01 1.7499999996986851e+01 0 0 -1 +6047 1 -6.8705227581196567e+01 6.4081147669902919e+01 1.4000000018070256e+01 0 0 0 +6048 1 -7.0388740764554953e+01 6.3519670308088877e+01 1.5750000009306101e+01 0 0 0 +6049 1 -6.9266400506601542e+01 6.5738650859122600e+01 1.5750000002466328e+01 0 0 0 +3539 1 -6.5338195435816630e+01 6.5204100232305535e+01 4.5629015232862002e-08 0 0 0 +6099 1 -6.5338195356050363e+01 6.5204100203405375e+01 1.4000000035018727e+01 0 0 0 +6098 1 -6.7582883151232281e+01 6.6300126867892061e+01 1.4000000000509756e+01 0 0 0 +6100 1 -6.7021711620152544e+01 6.4642623943027701e+01 1.5750000040953276e+01 0 0 0 +6105 1 -6.4777023407224192e+01 6.3546596954980458e+01 1.5750000026424651e+01 0 0 0 +3538 1 -6.7582883176750300e+01 6.6300126874760750e+01 1.3864969616861345e-08 0 0 0 +6152 1 -6.3654679323895834e+01 6.5765576614206978e+01 1.5750000050268964e+01 0 0 0 +6157 1 -6.1409991353634389e+01 6.4669549898485187e+01 1.5750000055144653e+01 0 0 0 +3646 1 -5.9726475326999761e+01 6.5231026483559390e+01 4.4983512026419703e-08 0 0 0 +6206 1 -5.9726475367505927e+01 6.5231026510241094e+01 1.4000000038268148e+01 0 0 0 +6208 1 -5.9165303380608037e+01 6.3573523362539021e+01 1.5750000021645461e+01 0 0 0 +6209 1 -5.8042959319616386e+01 6.5792503092970279e+01 1.5750000020379478e+01 0 0 0 +6260 1 -5.5798271314035610e+01 6.4696476381222354e+01 1.5749999967020464e+01 0 0 0 +6259 1 -5.4114755292570933e+01 6.5257952750253580e+01 1.3999999974869226e+01 0 0 0 +3699 1 -5.4114755282213480e+01 6.5257952773255695e+01 1.7499999982578803e+01 0 0 -1 +6265 1 -5.3553583375037725e+01 6.3600449512880374e+01 1.5749999984191710e+01 0 0 0 +6312 1 -5.2431239269689129e+01 6.5819429008863523e+01 1.5749999966738610e+01 0 0 0 +3801 1 -4.8503035399515710e+01 6.5284878449334826e+01 8.8249123564310139e-09 0 0 0 +6317 1 -5.0186551356058949e+01 6.4723402093620095e+01 1.5750000015835418e+01 0 0 0 +3802 1 -4.6258347274209747e+01 6.4188851508734601e+01 2.6798129937333215e-08 0 0 0 +6363 1 -4.7941863309648426e+01 6.3627375234725832e+01 1.5750000029631519e+01 0 0 0 +6364 1 -4.6819519325272992e+01 6.5846354659811297e+01 1.5750000054129071e+01 0 0 0 +3225 1 -8.9045575963305282e+01 6.8372562618489667e+01 1.7499999916972943e+01 0 0 -1 +5785 1 -8.9045575941433214e+01 6.8372562522937898e+01 1.3999999895380689e+01 0 0 0 +5790 1 -8.8549510043511646e+01 6.6773149823838139e+01 1.5749999909206279e+01 0 0 0 +5828 1 -8.7168422292989263e+01 6.8924946436134519e+01 1.5749999928814766e+01 0 0 0 +5833 1 -8.4964193373465832e+01 6.7868385127472550e+01 1.5749999966059763e+01 0 0 0 +3322 1 -8.3289036114626938e+01 6.8437199194429937e+01 1.5758061522319622e-09 0 0 0 +5882 1 -8.3289035989647829e+01 6.8437199305589758e+01 1.4000000019489171e+01 0 0 0 +5884 1 -8.2732307386768767e+01 6.6778473412033890e+01 1.5750000049503177e+01 0 0 0 +5885 1 -8.1612969927313813e+01 6.9000842389105230e+01 1.5750000054579502e+01 0 0 0 +3375 1 -7.7684224077131020e+01 6.8465355298072012e+01 3.9450466005064300e-08 0 0 0 +5935 1 -7.7684224034790631e+01 6.8465355342994812e+01 1.4000000069870348e+01 0 0 0 +5936 1 -7.9367521204103056e+01 6.7903985098471921e+01 1.5750000079947259e+01 0 0 0 +5941 1 -7.7122769532185188e+01 6.6807785509984683e+01 1.5750000040349734e+01 0 0 0 +5988 1 -7.6000492344777186e+01 6.9026716528223858e+01 1.5750000040716705e+01 0 0 0 +3482 1 -7.2072253495369168e+01 6.8492176573168351e+01 2.3299499218865094e-08 0 0 0 +5993 1 -7.3755787501420016e+01 6.7930702767103597e+01 1.5750000026669458e+01 0 0 0 +6042 1 -7.2072253506987281e+01 6.8492176501294182e+01 1.3999999978133330e+01 0 0 0 +6044 1 -7.1511091360294131e+01 6.6834677687736885e+01 1.5750000020160650e+01 0 0 0 +6045 1 -7.0388740898392896e+01 6.9053656532864721e+01 1.5749999971871269e+01 0 0 0 +6096 1 -6.8144054587746027e+01 6.7957630194842892e+01 1.5749999981682334e+01 0 0 0 +3535 1 -6.6460539516825349e+01 6.8519106929821902e+01 1.7499999993415987e+01 0 0 -1 +6095 1 -6.6460539505005343e+01 6.8519106856899839e+01 1.4000000029593291e+01 0 0 0 +6101 1 -6.5899367153412229e+01 6.6861603503679348e+01 1.5750000033531132e+01 0 0 0 +6148 1 -6.4777023513390589e+01 6.9080583252269363e+01 1.5750000072015256e+01 0 0 0 +3590 1 -6.4215851458989974e+01 6.7423079973678426e+01 3.2730227417232527e-08 0 0 0 +6150 1 -6.4215851399095172e+01 6.7423079925617245e+01 1.4000000066080240e+01 0 0 0 +6153 1 -6.2532335527109986e+01 6.7984556356036933e+01 1.5750000065509205e+01 0 0 0 +6203 1 -5.8604131503633312e+01 6.7450006276256730e+01 1.4000000043525562e+01 0 0 0 +3643 1 -5.8604131428288945e+01 6.7450006249277649e+01 1.6141086689458461e-08 0 0 0 +6204 1 -6.0287647440786621e+01 6.6888529669668557e+01 1.5750000057402385e+01 0 0 0 +6205 1 -5.9165303497802135e+01 6.9107509419743664e+01 1.5750000045937924e+01 0 0 0 +6256 1 -5.6920615354949192e+01 6.8011482678257224e+01 1.5750000009824266e+01 0 0 0 +3750 1 -5.2992411346683888e+01 6.7476932197139831e+01 1.7499999960148749e+01 0 0 -1 +6261 1 -5.4675927219075867e+01 6.6915455901545116e+01 1.5749999964733345e+01 0 0 0 +6308 1 -5.3553583464229135e+01 6.9134435434135725e+01 1.5749999941939260e+01 0 0 0 +6310 1 -5.2992411359488202e+01 6.7476932211558463e+01 1.3999999970480193e+01 0 0 0 +6313 1 -5.1308895424228297e+01 6.8038408551492594e+01 1.5749999959748724e+01 0 0 0 +6359 1 -4.9064207379382246e+01 6.6942381557970890e+01 1.5750000029625754e+01 0 0 0 +3798 1 -4.7380691382498881e+01 6.7503857922494930e+01 2.9927484490599454e-08 0 0 0 +6360 1 -4.7941863358093734e+01 6.9161361065268849e+01 1.5749999988085758e+01 0 0 0 +6391 1 -4.5697175269906403e+01 6.8065334158321591e+01 1.5750000006649710e+01 0 0 0 +3266 1 -8.7753273465570359e+01 7.0650125280786014e+01 1.7499999923750238e+01 0 0 -1 +5786 1 -8.9214901466965102e+01 7.0007207663641083e+01 1.5749999858126003e+01 0 0 0 +5824 1 -8.8549510278351192e+01 7.2307135095006672e+01 1.5749999906006810e+01 0 0 0 +5826 1 -8.7753273395245500e+01 7.0650125240649146e+01 1.3999999911989086e+01 0 0 0 +5829 1 -8.6132426251003210e+01 7.1209152539673525e+01 1.5749999985065317e+01 0 0 0 +5880 1 -8.3862484144159353e+01 7.0100495857571460e+01 1.5750000017048832e+01 0 0 0 +3319 1 -8.2176993184881468e+01 7.0658333934955834e+01 3.5920699303915171e-08 0 0 0 +5879 1 -8.2176993041712549e+01 7.0658334047882306e+01 1.4000000081737578e+01 0 0 0 +5881 1 -8.2732307566984147e+01 7.2312458914827616e+01 1.5750000079905186e+01 0 0 0 +5932 1 -8.0489602830859397e+01 7.1218301463576736e+01 1.5750000095394004e+01 0 0 0 +5937 1 -7.8245180161381697e+01 7.0122665840622560e+01 1.5750000083045778e+01 0 0 0 +3426 1 -7.6561515705125700e+01 7.0684178801616952e+01 5.9379111405633012e-08 0 0 0 +5984 1 -7.7122769768446304e+01 7.2341771389032729e+01 1.5750000097406826e+01 0 0 0 +5986 1 -7.6561515727558273e+01 7.0684178779062506e+01 1.4000000036507290e+01 0 0 0 +5989 1 -7.4878099105566633e+01 7.1245713600929975e+01 1.5750000028438420e+01 0 0 0 +3479 1 -7.0949917729429330e+01 7.0711162025008619e+01 3.2895638213403799e-08 0 0 0 +6039 1 -7.0949917791613743e+01 7.0711161965960812e+01 1.3999999947103420e+01 0 0 0 +6040 1 -7.2633423684719432e+01 7.0149683014319635e+01 1.5749999997237310e+01 0 0 0 +6041 1 -7.1511091718040930e+01 7.2368663792244163e+01 1.5749999978902274e+01 0 0 0 +6092 1 -6.9266400744596424e+01 7.1272637067127647e+01 1.5749999992663277e+01 0 0 0 +6097 1 -6.7021711794714733e+01 7.0176610238355863e+01 1.5750000014910515e+01 0 0 0 +6144 1 -6.5899367413983754e+01 7.2395589760833445e+01 1.5750000003963381e+01 0 0 0 +6147 1 -6.3093507419550427e+01 6.9642059689710536e+01 1.4000000060875383e+01 0 0 0 +3587 1 -6.3093507446444562e+01 6.9642059656981061e+01 7.2900700587297251e-08 0 0 0 +3638 1 -6.1971163617040602e+01 7.1861039332734592e+01 5.7468870551247164e-08 0 0 0 +6149 1 -6.3654679531663803e+01 7.1299562853908611e+01 1.5750000053566787e+01 0 0 0 +6198 1 -6.1971163634390948e+01 7.1861039356869725e+01 1.4000000066060013e+01 0 0 0 +6200 1 -6.1409991498764491e+01 7.0203536066778497e+01 1.5750000070565282e+01 0 0 0 +6201 1 -6.0287647712656664e+01 7.2422515853694989e+01 1.5750000063357893e+01 0 0 0 +6252 1 -5.8042959552758909e+01 7.1326489204871876e+01 1.5750000033439100e+01 0 0 0 +6251 1 -5.6359443579535522e+01 7.1887965615006493e+01 1.4000000027433364e+01 0 0 0 +3691 1 -5.6359443463444762e+01 7.1887965602667805e+01 1.7499999970866874e+01 0 0 -1 +3694 1 -5.7481787383789538e+01 6.9668985889814053e+01 3.0386964056106081e-09 0 0 0 +6254 1 -5.7481787467981093e+01 6.9668985917781654e+01 1.4000000019194117e+01 0 0 0 +6257 1 -5.5798271469397648e+01 7.0230462387231995e+01 1.5749999968844365e+01 0 0 0 +6307 1 -5.1870067432598482e+01 6.9695911761048549e+01 1.3999999967423154e+01 0 0 0 +3747 1 -5.1870067441187743e+01 6.9695911769563182e+01 1.7499999944358393e+01 0 0 -1 +6304 1 -5.4675927376471108e+01 7.2449441923909134e+01 1.5749999980311658e+01 0 0 0 +6309 1 -5.2431239362202795e+01 7.1353415006153668e+01 1.5749999950858864e+01 0 0 0 +3793 1 -5.0747723378459746e+01 7.1914891268230647e+01 1.7499999943390993e+01 0 0 -1 +6353 1 -5.0747723290848818e+01 7.1914891252524740e+01 1.3999999981301276e+01 0 0 0 +6355 1 -5.0186551424098063e+01 7.0257388014222215e+01 1.5749999953036330e+01 0 0 0 +6356 1 -4.9064207328748651e+01 7.2476367519102112e+01 1.5749999989697983e+01 0 0 0 +3830 1 -4.6258347326830844e+01 6.9722837319760075e+01 2.3449121755447777e-08 0 0 0 +6388 1 -4.6819519301253159e+01 7.1380340524464756e+01 1.5750000050864580e+01 0 0 0 +5820 1 -8.9214901433856724e+01 7.5541192937540501e+01 1.5749999820432050e+01 0 0 0 +5825 1 -8.7168422486223108e+01 7.4458931705964829e+01 1.5749999921684669e+01 0 0 0 +3263 1 -8.6710920961981060e+01 7.2853080446280643e+01 1.7499999941593156e+01 0 0 -1 +3314 1 -8.5523443567732855e+01 7.5066983446291218e+01 1.7499999989983682e+01 0 0 -1 +5823 1 -8.6710920787798898e+01 7.2853080498602040e+01 1.3999999961462162e+01 0 0 0 +5874 1 -8.5523443368636663e+01 7.5066983483155866e+01 1.4000000018447590e+01 0 0 0 +5876 1 -8.4964193565956862e+01 7.3402370461924335e+01 1.5750000043521487e+01 0 0 0 +5877 1 -8.3862484433634705e+01 7.5634481216517486e+01 1.5750000081331679e+01 0 0 0 +3370 1 -8.1049143106622722e+01 7.2875728846893736e+01 8.6473136207132484e-08 0 0 0 +5928 1 -8.1612970186784665e+01 7.4534827868835691e+01 1.5750000124643471e+01 0 0 0 +5930 1 -8.1049142997317773e+01 7.2875728932158950e+01 1.4000000101218737e+01 0 0 0 +3367 1 -7.9929643480203694e+01 7.5095601301236385e+01 7.8927484992163954e-08 0 0 0 +5927 1 -7.9929643450116259e+01 7.5095601363796646e+01 1.4000000117126483e+01 0 0 0 +5933 1 -7.9367521462013144e+01 7.3437970823074991e+01 1.5750000107229798e+01 0 0 0 +5980 1 -7.8245180635621836e+01 7.5656651562799937e+01 1.5750000083251397e+01 0 0 0 +3423 1 -7.5439348864953857e+01 7.2903241320547465e+01 6.4838175717341073e-08 0 0 0 +3474 1 -7.4316920321762112e+01 7.5122177799669046e+01 5.9741701363691391e-08 0 0 0 +5983 1 -7.5439348923100738e+01 7.2903241307329864e+01 1.4000000010746168e+01 0 0 0 +5985 1 -7.6000492760189559e+01 7.4560702396959755e+01 1.5750000035978948e+01 0 0 0 +6034 1 -7.4316920417185528e+01 7.5122177751307632e+01 1.3999999968073151e+01 0 0 0 +6036 1 -7.3755787880448068e+01 7.3464688713224149e+01 1.5749999995413864e+01 0 0 0 +6037 1 -7.2633424126746974e+01 7.5683668961022619e+01 1.5749999997410066e+01 0 0 0 +3527 1 -6.8705228113148422e+01 7.5149120140480321e+01 1.7499999994594951e+01 0 0 -1 +3530 1 -6.9827570506202676e+01 7.2930139042126058e+01 1.7499999993975877e+01 0 0 -1 +6087 1 -6.8705228125646201e+01 7.5149120085036671e+01 1.3999999996377067e+01 0 0 0 +6088 1 -7.0388741327654728e+01 7.4587642591105677e+01 1.5749999994828599e+01 0 0 0 +6090 1 -6.9827570543798672e+01 7.2930138997690662e+01 1.3999999964369010e+01 0 0 0 +6093 1 -6.8144054918346967e+01 7.3491616366209271e+01 1.5749999981448333e+01 0 0 0 +6140 1 -6.7021712119441773e+01 7.5710596450267616e+01 1.5750000020979993e+01 0 0 0 +6145 1 -6.4777023792708675e+01 7.4614569515678653e+01 1.5750000030045625e+01 0 0 0 +6196 1 -6.2532335786142625e+01 7.3518542642020165e+01 1.5750000091287703e+01 0 0 0 +6197 1 -6.1409991801137643e+01 7.5737522332198154e+01 1.5750000074274977e+01 0 0 0 +6195 1 -6.0848819714238573e+01 7.4080019117678845e+01 1.4000000068929284e+01 0 0 0 +3635 1 -6.0848819672786334e+01 7.4080019111573577e+01 7.2796645156358863e-08 0 0 0 +6248 1 -5.9165303774629102e+01 7.4641495624648513e+01 1.5750000059959435e+01 0 0 0 +3742 1 -5.5237099573026882e+01 7.4106945255616580e+01 1.7499999945167382e+01 0 0 -1 +6253 1 -5.6920615555410215e+01 7.3545468750136081e+01 1.5750000011876706e+01 0 0 0 +6300 1 -5.5798271635096469e+01 7.5764448451061696e+01 1.5749999979174037e+01 0 0 0 +6302 1 -5.5237099640794696e+01 7.4106945304284864e+01 1.4000000008187509e+01 0 0 0 +6305 1 -5.3553583556112827e+01 7.4668421505013313e+01 1.5749999950912894e+01 0 0 0 +3790 1 -4.9625379373633194e+01 7.4133870702881751e+01 1.7499999989433316e+01 0 0 -1 +6350 1 -4.9625379303311860e+01 7.4133870726631898e+01 1.4000000000499186e+01 0 0 0 +6351 1 -5.1308895406686574e+01 7.3572394573295483e+01 1.5749999951969858e+01 0 0 0 +6352 1 -5.0186551352895926e+01 7.5791374002805469e+01 1.5749999976947416e+01 0 0 0 +6385 1 -4.7941863265171676e+01 7.4695347009236912e+01 1.5750000013045469e+01 0 0 0 +6389 1 -4.5697175167406165e+01 7.3599320004563054e+01 1.5750000050775411e+01 0 0 0 +5821 1 -8.8549510370623651e+01 7.7841120410567342e+01 1.5749999815629831e+01 0 0 0 +3311 1 -8.4431591054993334e+01 7.7289150292353455e+01 4.9649798938844469e-08 0 0 0 +5871 1 -8.4431590908732275e+01 7.7289150347500254e+01 1.4000000054154748e+01 0 0 0 +5872 1 -8.6132426485381927e+01 7.6743137807876678e+01 1.5749999939123555e+01 0 0 0 +5924 1 -8.2732308032405555e+01 7.7846444282135181e+01 1.5750000130810397e+01 0 0 0 +3418 1 -7.8805834994680083e+01 7.7314060850732560e+01 9.0219508308564400e-08 0 0 0 +5929 1 -8.0489603309054871e+01 7.6752287004689762e+01 1.5750000124128867e+01 0 0 0 +5978 1 -7.8805835045507308e+01 7.7314060900193567e+01 1.4000000035803449e+01 0 0 0 +5981 1 -7.7122770337899070e+01 7.7875757104802261e+01 1.5750000032928957e+01 0 0 0 +6032 1 -7.4878099632995514e+01 7.6779699446441029e+01 1.5750000029892837e+01 0 0 0 +3471 1 -7.3194616256625068e+01 7.7341179785348132e+01 3.0416437368785409e-08 0 0 0 +6031 1 -7.3194616357418951e+01 7.7341179757195249e+01 1.3999999991604394e+01 0 0 0 +6084 1 -7.1511092165521319e+01 7.7902649710763853e+01 1.5750000021056906e+01 0 0 0 +6089 1 -6.9266401153433350e+01 7.6806623148480853e+01 1.5749999997487185e+01 0 0 0 +3578 1 -6.7582883761363362e+01 7.7368099250379316e+01 1.7499999991225923e+01 0 0 -1 +6139 1 -6.5338195873615888e+01 7.6272072772227574e+01 1.4000000044368033e+01 0 0 0 +3579 1 -6.5338195889110537e+01 7.6272072770495427e+01 2.1211196354897766e-08 0 0 0 +6138 1 -6.7582883773132835e+01 7.7368099265642456e+01 1.4000000023240181e+01 0 0 0 +6141 1 -6.5899367720431769e+01 7.7929575969513650e+01 1.5750000028728977e+01 0 0 0 +6190 1 -6.4215851954016728e+01 7.8491052459866580e+01 1.4000000049458890e+01 0 0 0 +3630 1 -6.4215851980601485e+01 7.8491052469678451e+01 4.5803602688465617e-08 0 0 0 +6192 1 -6.3654679811741048e+01 7.6833549160950255e+01 1.5750000048187655e+01 0 0 0 +6243 1 -5.8604131996525346e+01 7.8517978532582433e+01 1.4000000045346290e+01 0 0 0 +3683 1 -5.8604131897649069e+01 7.8517978490418869e+01 5.1714131643620931e-08 0 0 0 +3686 1 -5.9726475772123372e+01 7.6298998816773477e+01 7.1400727108539286e-08 0 0 0 +6244 1 -6.0287647949237957e+01 7.7956502058910033e+01 1.5750000078481573e+01 0 0 0 +6246 1 -5.9726475852405940e+01 7.6298998840266989e+01 1.4000000060794250e+01 0 0 0 +6249 1 -5.8042959777052928e+01 7.6860475298104731e+01 1.5750000043076465e+01 0 0 0 +3739 1 -5.4114755510235135e+01 7.6325924780662660e+01 1.7499999932299779e+01 0 0 -1 +6299 1 -5.4114755547033873e+01 7.6325924778099861e+01 1.3999999997466812e+01 0 0 0 +3785 1 -5.2992411517439599e+01 7.8544904190152693e+01 1.7499999932825084e+01 0 0 -1 +6301 1 -5.4675927521350850e+01 7.7983427950190716e+01 1.5749999955970177e+01 0 0 0 +6345 1 -5.2992411544787366e+01 7.8544904238472796e+01 1.3999999967695473e+01 0 0 0 +6347 1 -5.2431239400356738e+01 7.6887401009279898e+01 1.5749999943108516e+01 0 0 0 +3823 1 -4.8503035356607029e+01 7.6352850305378396e+01 1.9135715234597228e-08 0 0 0 +6346 1 -5.0747723321560990e+01 7.7448877289770181e+01 1.3999999962821907e+01 0 0 0 +6381 1 -4.9064207312683941e+01 7.8010353519797491e+01 1.5750000020992568e+01 0 0 0 +6383 1 -4.8503035302678732e+01 7.6352850283559192e+01 1.4000000026255341e+01 0 0 0 +6380 1 -4.7380691222979998e+01 7.8571829822389134e+01 1.4000000012928430e+01 0 0 0 +6386 1 -4.6819519233413118e+01 7.6914326485019600e+01 1.5750000082821215e+01 0 0 0 +3256 1 -8.9045576158407059e+01 7.9440533254763693e+01 1.7499999727401679e+01 0 0 -1 +3306 1 -8.7753273971690234e+01 8.1718096051640316e+01 1.7499999871705970e+01 0 0 -1 +5816 1 -8.9045576101500671e+01 7.9440533215406177e+01 1.3999999894608997e+01 0 0 0 +5817 1 -8.9214901663201672e+01 8.1075178496585892e+01 1.5749999755197781e+01 0 0 0 +5866 1 -8.7753273796879768e+01 8.1718096144418865e+01 1.3999999999656181e+01 0 0 0 +5868 1 -8.7168422698631957e+01 7.9992917042473806e+01 1.5749999913865441e+01 0 0 0 +5873 1 -8.4964193973953527e+01 7.8936355806016067e+01 1.5750000037879367e+01 0 0 0 +5920 1 -8.3862484989665489e+01 8.1168466553321252e+01 1.5750000080909183e+01 0 0 0 +3359 1 -8.2176994150819581e+01 8.1726304726747117e+01 1.1689823509186681e-07 0 0 0 +3362 1 -8.3289036891705507e+01 7.9505169940271585e+01 7.3841949443931298e-08 0 0 0 +5919 1 -8.2176994141363551e+01 8.1726304810666676e+01 1.4000000079284037e+01 0 0 0 +5922 1 -8.3289036797521049e+01 7.9505170058151819e+01 1.4000000081298056e+01 0 0 0 +5925 1 -8.1612970848576225e+01 8.0068813264856615e+01 1.5750000090895380e+01 0 0 0 +3415 1 -7.7684224963876318e+01 7.9533326709826980e+01 5.4518636716238689e-08 0 0 0 +5975 1 -7.7684225047722535e+01 7.9533326750959048e+01 1.4000000015613228e+01 0 0 0 +5976 1 -7.9367522079903964e+01 7.8971956309755754e+01 1.5750000084386674e+01 0 0 0 +5977 1 -7.8245181253776309e+01 8.1190637085626392e+01 1.5750000035719404e+01 0 0 0 +3466 1 -7.6561516766671943e+01 8.1752150202495628e+01 2.4932933939680879e-08 0 0 0 +6026 1 -7.6561516866410358e+01 8.1752150202891954e+01 1.3999999988211147e+01 0 0 0 +6028 1 -7.6000493335951546e+01 8.0094688095290351e+01 1.5750000016062172e+01 0 0 0 +3519 1 -7.0949918573297310e+01 8.1779133874030904e+01 2.5765910294239802e-08 0 0 0 +3522 1 -7.2072254349140735e+01 7.9560148460512167e+01 2.1189723753423095e-08 0 0 0 +6033 1 -7.3755788410853043e+01 7.8998674566063414e+01 1.5750000005576283e+01 0 0 0 +6079 1 -7.0949918688671588e+01 8.1779133793036465e+01 1.3999999992799191e+01 0 0 0 +6080 1 -7.2633424630812598e+01 8.1217654789290563e+01 1.5750000001253198e+01 0 0 0 +6082 1 -7.2072254418157684e+01 7.9560148384197632e+01 1.3999999995353290e+01 0 0 0 +6085 1 -7.0388741729730242e+01 8.0121628521311820e+01 1.5749999991457017e+01 0 0 0 +6136 1 -6.8144055282286331e+01 7.9025602458970354e+01 1.5749999995370777e+01 0 0 0 +3575 1 -6.6460540139953451e+01 7.9587079289343990e+01 1.7499999987568344e+01 0 0 -1 +6135 1 -6.6460540128802137e+01 7.9587079246275636e+01 1.4000000036542660e+01 0 0 0 +6137 1 -6.7021712442093062e+01 8.1244582487503180e+01 1.5750000000674957e+01 0 0 0 +6188 1 -6.4777024068945735e+01 8.0148555725453178e+01 1.5750000047785818e+01 0 0 0 +6187 1 -6.3093507929858568e+01 8.0710032147424982e+01 1.4000000042829988e+01 0 0 0 +3627 1 -6.3093507962857863e+01 8.0710032105287127e+01 7.9794833851565272e-08 0 0 0 +6193 1 -6.2532336032914564e+01 7.9052528863252689e+01 1.5750000069202786e+01 0 0 0 +6240 1 -6.1409991966350240e+01 8.1271508450365275e+01 1.5750000074913235e+01 0 0 0 +6245 1 -5.9165303979761354e+01 8.0175481716188571e+01 1.5750000062968859e+01 0 0 0 +3734 1 -5.7481787783839984e+01 8.0736958031908443e+01 3.9104747884266544e-08 0 0 0 +6294 1 -5.7481787900376233e+01 8.0736958055137308e+01 1.4000000027915055e+01 0 0 0 +6296 1 -5.6920615766282936e+01 7.9079454823884888e+01 1.5750000019218984e+01 0 0 0 +6297 1 -5.5798271820275083e+01 8.1298434392772506e+01 1.5749999985169426e+01 0 0 0 +3782 1 -5.1870067527631292e+01 8.0763883736568062e+01 1.7499999931258944e+01 0 0 -1 +6342 1 -5.1870067555398514e+01 8.0763883767024026e+01 1.3999999954550370e+01 0 0 0 +6343 1 -5.3553583696738436e+01 8.0202407439331225e+01 1.5749999914368599e+01 0 0 0 +6379 1 -4.9625379344704982e+01 7.9667856726788884e+01 1.3999999972850595e+01 0 0 0 +6348 1 -5.1308895483278349e+01 7.9106380564095460e+01 1.5749999951905123e+01 0 0 0 +6376 1 -4.8503035332178136e+01 8.1886836291457726e+01 1.3999999992545231e+01 0 0 0 +6377 1 -5.0186551429791763e+01 8.1325359986354457e+01 1.5749999946167666e+01 0 0 0 +6382 1 -4.7941863295953155e+01 8.0229333008049082e+01 1.5750000009227119e+01 0 0 0 +6399 1 -4.6258347249989825e+01 8.0790809191973523e+01 1.4000000021518943e+01 0 0 0 +6400 1 -4.5697175159842992e+01 7.9133305976807492e+01 1.5750000042490338e+01 0 0 0 +5864 1 -8.8549510791328373e+01 8.3375106157003472e+01 1.5749999857383397e+01 0 0 0 +5863 1 -8.6710921521604249e+01 8.3921051396787760e+01 1.4000000052691105e+01 0 0 0 +3303 1 -8.6710921668423396e+01 8.3921051293660327e+01 1.7499999930822831e+01 0 0 -1 +5869 1 -8.6132426912225114e+01 8.2277123317737917e+01 1.5749999992672542e+01 0 0 0 +5916 1 -8.4964194498520840e+01 8.4470341289043603e+01 1.5750000109438313e+01 0 0 0 +3410 1 -8.1049144274132729e+01 8.3943699680098007e+01 1.1250896747583283e-07 0 0 0 +5970 1 -8.1049144316133606e+01 8.3943699747919780e+01 1.4000000063174262e+01 0 0 0 +5921 1 -8.2732308667453182e+01 8.3380429672683874e+01 1.5750000124125282e+01 0 0 0 +5972 1 -8.0489603981918663e+01 8.2286272380864489e+01 1.5750000086655970e+01 0 0 0 +5973 1 -7.9367522775545453e+01 8.4505941759932782e+01 1.5750000059244467e+01 0 0 0 +3463 1 -7.5439349958960435e+01 8.3971212729838186e+01 2.3943535154558049e-08 0 0 0 +6023 1 -7.5439350071046533e+01 8.3971212708665306e+01 1.3999999996929349e+01 0 0 0 +6024 1 -7.7122770979378970e+01 8.3409742642019935e+01 1.5750000037302106e+01 0 0 0 +6029 1 -7.4878100182041209e+01 8.2313685141506753e+01 1.5750000017782229e+01 0 0 0 +6076 1 -7.3755788881784696e+01 8.4532660223392597e+01 1.5749999993768853e+01 0 0 0 +6081 1 -7.1511092599257751e+01 8.3436635504401281e+01 1.5749999985481081e+01 0 0 0 +3570 1 -6.9827571232156231e+01 8.3998110842553231e+01 1.7499999987834105e+01 0 0 -1 +6130 1 -6.9827571318223960e+01 8.3998110751508946e+01 1.3999999980924203e+01 0 0 0 +6132 1 -6.9266401497751886e+01 8.2340609031766576e+01 1.5749999995438136e+01 0 0 0 +6133 1 -6.8144055525277992e+01 8.4559588255960847e+01 1.5749999953438110e+01 0 0 0 +6184 1 -6.5899367941740820e+01 8.3463561936607519e+01 1.5749999983896934e+01 0 0 0 +3678 1 -6.1971164044461325e+01 8.2929011642642365e+01 9.9409241727244080e-08 0 0 0 +6189 1 -6.3654680012594945e+01 8.2367535216566864e+01 1.5750000045159547e+01 0 0 0 +6236 1 -6.2532336105271767e+01 8.4586514862000200e+01 1.5750000078913006e+01 0 0 0 +6238 1 -6.1971164019522298e+01 8.2929011678438002e+01 1.4000000043861556e+01 0 0 0 +6235 1 -6.0848819972717799e+01 8.5147991254204641e+01 1.4000000068354437e+01 0 0 0 +6292 1 -5.8042959948961595e+01 8.2394461331436133e+01 1.5750000049319619e+01 0 0 0 +6241 1 -6.0287648073792582e+01 8.3490488079589312e+01 1.5750000089818302e+01 0 0 0 +3675 1 -6.0848819950211094e+01 8.5147991247815838e+01 1.0464983901670166e-07 0 0 0 +3731 1 -5.6359443761749283e+01 8.2955937588716296e+01 3.0154335917131903e-08 0 0 0 +6291 1 -5.6359443921999897e+01 8.2955937606326259e+01 1.4000000003768161e+01 0 0 0 +6337 1 -5.5237099902414521e+01 8.5174917137173466e+01 1.4000000003495932e+01 0 0 0 +6293 1 -5.6920615828072386e+01 8.4613440693950920e+01 1.5750000031970004e+01 0 0 0 +3777 1 -5.5237099738524186e+01 8.5174917098225549e+01 1.7499999992335173e+01 0 0 -1 +6344 1 -5.2431239524213773e+01 8.2421386958346517e+01 1.5749999926147805e+01 0 0 0 +6339 1 -5.4675927616370792e+01 8.3517413850214353e+01 1.5749999978476858e+01 0 0 0 +6338 1 -5.2992411615841618e+01 8.4078890102731833e+01 1.3999999967602133e+01 0 0 0 +6378 1 -4.9064207312102830e+01 8.3544339499847013e+01 1.5749999992568087e+01 0 0 0 +6372 1 -4.9625379351112876e+01 8.5201842652375220e+01 1.3999999999599321e+01 0 0 0 +6375 1 -5.0747723365377247e+01 8.2982863221827600e+01 1.3999999962423953e+01 0 0 0 +6373 1 -5.1308895513675637e+01 8.4640366460462388e+01 1.5749999933283316e+01 0 0 0 +3815 1 -5.0747723404285878e+01 8.2982863202881731e+01 1.7499999947994180e+01 0 0 -1 +6398 1 -4.5697175215028601e+01 8.4667291980413879e+01 1.5750000062418836e+01 0 0 0 +6397 1 -4.6819519251329098e+01 8.2448312507033776e+01 1.5750000069382853e+01 0 0 0 +6396 1 -4.7380691247006332e+01 8.4105815833589176e+01 1.4000000055817404e+01 0 0 0 +5865 1 -8.7168423073429224e+01 8.5526902730904155e+01 1.5749999988069485e+01 0 0 0 +5861 1 -8.9214901695445263e+01 8.6609164453739126e+01 1.5749999852205624e+01 0 0 0 +5917 1 -8.3862485583219780e+01 8.6702452145291289e+01 1.5750000138651016e+01 0 0 0 +5913 1 -8.6132427339829420e+01 8.7811109098740559e+01 1.5750000053188193e+01 0 0 0 +3354 1 -8.5523444487112144e+01 8.6134954415713167e+01 6.2263996625233631e-08 0 0 0 +5914 1 -8.5523444385118069e+01 8.6134954512149221e+01 1.4000000103509851e+01 0 0 0 +22 1 -8.4431592070345758e+01 8.8357121383313512e+01 1.2988066799834996e-07 0 -1 0 +2582 1 -8.4431592052075302e+01 8.8357121455226121e+01 1.4000000125537847e+01 0 -1 0 +5968 1 -8.1612971480036947e+01 8.5602798680059678e+01 1.5750000116137402e+01 0 0 0 +3407 1 -7.9929644736821800e+01 8.6163572207294720e+01 7.6230726619996858e-08 0 0 0 +6021 1 -7.8245181928526122e+01 8.6724622566802182e+01 1.5750000017888835e+01 0 0 0 +5969 1 -8.0489604639190190e+01 8.7820257876569684e+01 1.5750000084433026e+01 0 0 0 +5967 1 -7.9929644849167275e+01 8.6163572225810370e+01 1.4000000064212806e+01 0 0 0 +98 1 -7.8805836191673976e+01 8.8382031811158726e+01 3.5190719671618353e-08 0 -1 0 +2658 1 -7.8805836358811447e+01 8.8382031808186127e+01 1.4000000013261976e+01 0 -1 0 +3514 1 -7.4316921290328565e+01 8.6190149172150214e+01 2.7589987183773701e-08 0 0 0 +6025 1 -7.6000493922105264e+01 8.5628673668044513e+01 1.5749999995433326e+01 0 0 0 +6073 1 -7.4878100624180050e+01 8.7847670665546730e+01 1.5750000004816313e+01 0 0 0 +6074 1 -7.4316921437792260e+01 8.6190149128726560e+01 1.3999999992733763e+01 0 0 0 +6077 1 -7.2633424959516361e+01 8.6751640378846886e+01 1.5749999994752596e+01 0 0 0 +151 1 -7.3194617007734934e+01 8.8409151073014996e+01 6.8315841872390592e-10 0 -1 0 +2711 1 -7.3194617158888150e+01 8.8409151026386454e+01 1.3999999984044967e+01 0 -1 0 +3567 1 -6.8705228655816242e+01 8.6217091832608659e+01 1.7499999962712256e+01 0 0 -1 +6128 1 -7.0388742038951136e+01 8.5655614210539312e+01 1.5749999981010022e+01 0 0 0 +6129 1 -6.9266401665272895e+01 8.7874594631570204e+01 1.5749999953421300e+01 0 0 0 +6127 1 -6.8705228713152152e+01 8.6217091749141360e+01 1.3999999961922880e+01 0 0 0 +6180 1 -6.5338196131284008e+01 8.7340044625718349e+01 1.3999999999865926e+01 0 0 0 +6181 1 -6.7021712536141379e+01 8.6778568205118219e+01 1.5749999962685161e+01 0 0 0 +6185 1 -6.4777024149346474e+01 8.5682541580853155e+01 1.5749999992526067e+01 0 0 0 +3620 1 -6.5338196162585390e+01 8.7340044627544060e+01 1.7499999978109180e+01 0 0 -1 +258 1 -6.7582884085028283e+01 8.8436070816899516e+01 1.7499999945411638e+01 0 -1 -1 +2818 1 -6.7582884119230371e+01 8.8436070824150889e+01 1.3999999954224382e+01 0 -1 0 +6233 1 -6.3654679947968177e+01 8.7901521069535960e+01 1.5750000033362006e+01 0 0 0 +6237 1 -6.1409991953304313e+01 8.6805494349286832e+01 1.5750000096543051e+01 0 0 0 +6286 1 -5.9726475959825137e+01 8.7366970765502273e+01 1.4000000072706907e+01 0 0 0 +6288 1 -5.9165303992489967e+01 8.5709467648471971e+01 1.5750000096471178e+01 0 0 0 +6289 1 -5.8042959835718136e+01 8.7928447079838833e+01 1.5750000094387360e+01 0 0 0 +3726 1 -5.9726475862596708e+01 8.7366970738650849e+01 1.1318480375166473e-07 0 0 0 +6336 1 -5.5798271790798893e+01 8.6832420202329473e+01 1.5750000003406051e+01 0 0 0 +3775 1 -5.4114755579933700e+01 8.7393896459689586e+01 1.7499999976870072e+01 0 0 -1 +6340 1 -5.3553583718817805e+01 8.5736393279129203e+01 1.5749999958824116e+01 0 0 0 +2564 1 -9.0272007528377415e+01 8.8124786149101013e+01 1.3999999960458029e+01 0 -1 0 +3201 1 -9.0272007528377074e+01 4.9386885954207202e+01 3.7515377614668443e-08 0 0 0 +4 1 -9.0272007528377344e+01 8.8124785944326618e+01 1.7499999756341580e+01 0 -1 -1 +3846 1 -9.0272007528377003e+01 6.0454858245015373e+01 3.5000000364902863e+00 0 0 0 +3206 1 -9.0272007528377273e+01 6.0454858186919999e+01 4.9126550468082102e-09 0 0 0 +3224 1 -9.0272007528377230e+01 7.1522829083968404e+01 1.7499999863273548e+01 0 0 -1 +3864 1 -9.0272007528376989e+01 7.1522829180952243e+01 3.4999999773628514e+00 0 0 0 +3895 1 -9.0272007528377401e+01 8.2590799892237698e+01 3.4999998116679487e+00 0 0 0 +3255 1 -9.0272007528377216e+01 8.2590799938319890e+01 1.7499999683914769e+01 0 0 -1 +4507 1 -9.0272007528377372e+01 6.5988843765517544e+01 7.0000000933857374e+00 0 0 0 +4481 1 -9.0272007528377230e+01 4.9386885771346442e+01 7.0000000412241983e+00 0 0 0 +4486 1 -9.0272007528377344e+01 6.0454858154119457e+01 7.0000000033609613e+00 0 0 0 +4504 1 -9.0272007528377102e+01 7.1522829138848948e+01 7.0000001158009502e+00 0 0 0 +5144 1 -9.0272007528377102e+01 7.1522829016459681e+01 1.0500000016306052e+01 0 0 0 +5175 1 -9.0272007528377102e+01 8.2590800047649182e+01 1.0500000240727438e+01 0 0 0 +5761 1 -9.0272007528376704e+01 4.9386885829475872e+01 1.4000000034607838e+01 0 0 0 +5121 1 -9.0272007528376690e+01 4.9386885736548358e+01 1.0499999990949103e+01 0 0 0 +5766 1 -9.0272007528376975e+01 6.0454858039758207e+01 1.3999999908358701e+01 0 0 0 +5784 1 -9.0272007528376776e+01 7.1522828972384829e+01 1.3999999869962567e+01 0 0 0 +5178 1 -9.0272007528377188e+01 7.7056814358237745e+01 1.0500000162176663e+01 0 0 0 +5787 1 -9.0272007528377102e+01 6.5988843748961315e+01 1.3999999895748919e+01 0 0 0 +6405 1 -4.3452487500355346e+01 5.6147619686440109e-01 1.7500000476524551e+00 0 0 0 +6419 1 -4.2330143828877425e+01 2.7804557153733711e+00 1.7500000123151884e+00 0 0 0 +6404 1 -4.5136003433768309e+01 -1.6248574992981227e-07 5.7086519856972425e-08 0 0 0 +6402 1 -4.4013659638101409e+01 2.2189794490007366e+00 5.0391964985509104e-08 0 0 0 +6423 1 -4.0085456042743637e+01 1.6844287841953567e+00 1.7499999636960986e+00 0 0 0 +6421 1 -4.1768971735781278e+01 1.1229524209468347e+00 9.2123228014880917e-09 0 0 0 +7067 1 -3.9524284003473845e+01 2.6925531372155743e-02 3.5000000134072349e+00 0 0 0 +6422 1 -3.9524284067994806e+01 2.6925512805888337e-02 1.7499999941746996e+01 0 0 -1 +6451 1 -3.8401940457732515e+01 2.2459050653562871e+00 1.7499999912707171e+01 0 0 -1 +6453 1 -3.7840768407293332e+01 5.8840184940061946e-01 1.7499999544532951e+00 0 0 0 +6454 1 -3.6718424783065004e+01 2.8073814423503864e+00 1.7499999383110469e+00 0 0 0 +7096 1 -3.8401940408905865e+01 2.2459050856364273e+00 3.4999999951336211e+00 0 0 0 +6496 1 -3.4473737081087570e+01 1.7113545625230451e+00 1.7499999620906999e+00 0 0 0 +7140 1 -3.2790221435261380e+01 2.2728310172915758e+00 3.4999999836684763e+00 0 0 0 +6495 1 -3.2790221372336909e+01 2.2728310041229691e+00 1.7499999987770405e+01 0 0 -1 +6498 1 -3.3912564909747871e+01 5.3851372577831347e-02 1.7499999963631986e+01 0 0 -1 +7143 1 -3.3912564961156001e+01 5.3851359390055593e-02 3.4999999969212263e+00 0 0 0 +6499 1 -3.2229049192388239e+01 6.1532776292385316e-01 1.7500000050934259e+00 0 0 0 +6548 1 -3.1106705531570622e+01 2.8343074332162055e+00 1.7500000219476872e+00 0 0 0 +6552 1 -2.8862017536818385e+01 1.7382809446314214e+00 1.7500000390070678e+00 0 0 0 +6604 1 -2.6617329442841637e+01 6.4225447913003753e-01 1.7500000037996157e+00 0 0 0 +7247 1 -2.7178501662702853e+01 2.2997575292578936e+00 3.5000000186275906e+00 0 0 0 +6602 1 -2.7178501679388898e+01 2.2997574928940252e+00 2.9998828443867692e-10 0 0 0 +7196 1 -2.8300845302726646e+01 8.0777815188569080e-02 3.5000000181343403e+00 0 0 0 +6551 1 -2.8300845316777863e+01 8.0777775782166522e-02 3.3035156715122694e-08 0 0 0 +6605 1 -2.5494985578480186e+01 2.8612341980433627e+00 1.7499999933870523e+00 0 0 0 +6656 1 -2.3250297193044972e+01 1.7652076983926341e+00 1.7499999737665448e+00 0 0 0 +6659 1 -2.1005608124274517e+01 6.6918115689482971e-01 1.7499999758933602e+00 0 0 0 +6708 1 -1.9883267928180970e+01 2.8881618035871361e+00 1.7499999803948953e+00 0 0 0 +6710 1 -1.9322090990054502e+01 1.2306563528103918e+00 5.7192973776505744e-09 0 0 0 +6712 1 -1.7638584966376705e+01 1.7921352931984249e+00 1.7499999974106437e+00 0 0 0 +7355 1 -1.9322091015548015e+01 1.2306563181786949e+00 3.4999999711393581e+00 0 0 0 +6763 1 -1.3710492528625984e+01 1.2576392722227006e+00 2.1277486568601758e-08 0 0 0 +6764 1 -1.5393909299397460e+01 6.9610454029945712e-01 1.7499999780180153e+00 0 0 0 +6765 1 -1.4271515886812626e+01 2.9151016595982115e+00 1.7499999983502119e+00 0 0 0 +7408 1 -1.3710492537267765e+01 1.2576392153311760e+00 3.4999999725215960e+00 0 0 0 +6816 1 -1.2026827963717711e+01 1.8191520520096589e+00 1.7499999991461741e+00 0 0 0 +6819 1 -9.7824052567091719e+00 7.2351586814146462e-01 1.7500000131214131e+00 0 0 0 +6868 1 -8.6590381285159417e+00 2.9409750282226415e+00 1.7500000046686781e+00 0 0 0 +7515 1 -8.0950149150615580e+00 1.2834830214549984e+00 3.5000000310663957e+00 0 0 0 +6870 1 -8.0950149171147334e+00 1.2834830057217137e+00 3.2068960036592056e-08 0 0 0 +6872 1 -6.4095238475950795e+00 1.8413208006752282e+00 1.7500000164660892e+00 0 0 0 +6924 1 -4.1395817340160654e+00 7.3266341788817368e-01 1.7500000313101169e+00 0 0 0 +6925 1 -3.1035854956564806e+00 3.0168696315369052e+00 1.7499999908411052e+00 0 0 0 +6975 1 -1.0571062667469502e+00 1.9346077849517909e+00 1.7500000112160132e+00 0 0 0 +7568 1 -2.5187344778432261e+00 1.2916904524884310e+00 3.5000000046059601e+00 0 0 0 +6923 1 -2.5187344547370820e+00 1.2916904102442768e+00 4.9420710701436596e-08 0 0 0 +7657 1 -1.2264314359570196e+00 4.2307158677048726e+01 1.3999999891735056e+01 0 0 0 +6403 1 -4.4574831757617964e+01 3.8764826110165118e+00 1.7500000212377094e+00 0 0 0 +6415 1 -4.3452487923931095e+01 6.0954621275752112e+00 1.7499999967119566e+00 0 0 0 +6417 1 -4.2891315959154596e+01 4.4379588504361811e+00 1.7499999997792976e+01 0 0 -1 +6418 1 -4.0646628173953431e+01 3.3419320071856782e+00 1.7499999966356828e+01 0 0 -1 +6420 1 -4.1207800180916230e+01 4.9994352143981891e+00 1.7499999926344150e+00 0 0 0 +6449 1 -3.8963112510393948e+01 3.9034082859106904e+00 1.7499999444896286e+00 0 0 0 +6450 1 -3.7840769034708927e+01 6.1223878665955143e+00 1.7499999327274551e+00 0 0 0 +6492 1 -3.5596081392138281e+01 5.0263609703976000e+00 1.7499999568542572e+00 0 0 0 +7093 1 -3.7279596927782826e+01 4.4648846684329744e+00 3.4999999961216042e+00 0 0 0 +6448 1 -3.7279596939142799e+01 4.4648846564511215e+00 1.7499999901156887e+01 0 0 -1 +6497 1 -3.3351393544882569e+01 3.9303342058661239e+00 1.7499999937222515e+00 0 0 0 +6544 1 -3.2229049833614226e+01 6.1493137386351169e+00 1.7500000101157953e+00 0 0 0 +6549 1 -2.9984361790909151e+01 5.0532871710903935e+00 1.7500000240317446e+00 0 0 0 +7191 1 -3.1667877653591248e+01 4.4918105818301708e+00 3.4999999717031796e+00 0 0 0 +6546 1 -3.1667877588182741e+01 4.4918105979503187e+00 2.6676701203604256e-08 0 0 0 +6600 1 -2.7739673685992585e+01 3.9572606413893547e+00 1.7500000153368196e+00 0 0 0 +6601 1 -2.6617329984357546e+01 6.1762405062726877e+00 1.7500000045730681e+00 0 0 0 +7244 1 -2.6056157778801310e+01 4.5187373413581895e+00 3.4999999838415685e+00 0 0 0 +6599 1 -2.6056157798149666e+01 4.5187373139060334e+00 1.7499999986669447e+01 0 0 -1 +6652 1 -2.4372642031799941e+01 5.0802141202616955e+00 1.7499999712934986e+00 0 0 0 +6654 1 -2.3811469573928179e+01 3.4227109207268693e+00 1.7499999974831063e+01 0 0 -1 +6651 1 -2.2689125927715072e+01 5.6416910897622286e+00 1.7499999974963991e+01 0 0 -1 +7299 1 -2.3811469554211182e+01 3.4227109104020736e+00 3.4999999949772556e+00 0 0 0 +7296 1 -2.2689125918610131e+01 5.6416910972616465e+00 3.5000000017951507e+00 0 0 0 +6657 1 -2.2127954402115492e+01 3.9841879027903868e+00 1.7499999912846824e+00 0 0 0 +6704 1 -2.1005608440294154e+01 6.2031673634686033e+00 1.7500000015718793e+00 0 0 0 +6707 1 -1.8199755155869511e+01 3.4496418959194859e+00 3.2437016030068597e-08 0 0 0 +6709 1 -1.8760917336603192e+01 5.1071407327390483e+00 1.7500000116916954e+00 0 0 0 +6758 1 -1.7077392985158426e+01 5.6686106034087844e+00 6.7967718851402393e-08 0 0 0 +6760 1 -1.6516220974926430e+01 4.0111156365732095e+00 1.7500000050146975e+00 0 0 0 +7352 1 -1.8199755169155598e+01 3.4496418281657197e+00 3.4999999765900478e+00 0 0 0 +7403 1 -1.7077393003168105e+01 5.6686105576139152e+00 3.4999999815408418e+00 0 0 0 +6761 1 -1.5393909443192246e+01 6.2300908148344361e+00 1.7500000235731248e+00 0 0 0 +6812 1 -1.3149238574875008e+01 5.1340327780642436e+00 1.7499999987667698e+00 0 0 0 +6814 1 -1.2587784058408225e+01 3.4764627827154451e+00 1.5876402424447596e-08 0 0 0 +6817 1 -1.0904486849640238e+01 4.0378328803818926e+00 1.7500000247894640e+00 0 0 0 +6864 1 -9.7824052508653168e+00 6.2575022470868413e+00 1.7500000270347422e+00 0 0 0 +7456 1 -1.1466173720369721e+01 5.6957287180379597e+00 3.5000000564492986e+00 0 0 0 +7459 1 -1.2587784058837345e+01 3.4764627495747082e+00 3.5000000309490358e+00 0 0 0 +6811 1 -1.1466173732717765e+01 5.6957287320449037e+00 2.1856286390078153e-08 0 0 0 +6869 1 -7.5397005642844208e+00 5.1633440364126946e+00 1.7500000081498908e+00 0 0 0 +7512 1 -6.9829719145242271e+00 3.5046178482579933e+00 3.4999999961858155e+00 0 0 0 +6867 1 -6.9829719071298237e+00 3.5046178300476125e+00 3.7477546083439734e-08 0 0 0 +6920 1 -5.3078145345531773e+00 4.0734315872682059e+00 1.7499999882947430e+00 0 0 0 +6921 1 -4.1395817468090197e+00 6.2666496066622219e+00 1.7499999826597734e+00 0 0 0 +7563 1 -5.8404173996483841e+00 5.7206374910400157e+00 3.5000000008468151e+00 0 0 0 +6918 1 -5.8404174049746596e+00 5.7206374846904371e+00 1.9534330258193907e-08 0 0 0 +6972 1 -1.7224977294695170e+00 5.1686662940676440e+00 1.7499999588405886e+00 0 0 0 +13461 1 -5.2122737479782510e-14 5.9529722851199915e+00 3.4999999349384092e+00 0 0 0 +7652 1 -3.1035849430547184e+00 4.1754774792598333e+01 1.5749999962389172e+01 0 0 0 +7619 1 -1.2264317589659317e+00 3.5692531831523890e+00 3.4999999576140044e+00 0 0 0 +6974 1 -1.2264317382161884e+00 3.5692531550172837e+00 1.4146810889995828e-08 0 0 0 +6411 1 -4.4574832018814753e+01 9.4104684073261655e+00 1.7500000051742737e+00 0 0 0 +6416 1 -4.2330144225657463e+01 8.3144416303867423e+00 1.7499999621812976e+00 0 0 0 +6413 1 -4.4013659963495670e+01 7.7529652991280500e+00 9.0671156146665954e-09 0 0 0 +6443 1 -4.0646628579809530e+01 8.8759180005252407e+00 1.7499999932775246e+01 0 0 -1 +6445 1 -4.0085456533476922e+01 7.2184147652824571e+00 1.7499999661504215e+00 0 0 0 +6446 1 -3.8963112903905369e+01 9.4373942454223219e+00 1.7499999767940910e+00 0 0 0 +7059 1 -4.1768972149420044e+01 6.6569383864511700e+00 3.5000000036816616e+00 0 0 0 +7088 1 -4.0646628516976776e+01 8.8759180293522899e+00 3.5000000253850936e+00 0 0 0 +6414 1 -4.1768972217817485e+01 6.6569383681903531e+00 1.7499999967403067e+01 0 0 -1 +6488 1 -3.6718425280986985e+01 8.3413674261070767e+00 1.7499999698368074e+00 0 0 0 +6490 1 -3.6157253307952168e+01 6.6838641402591756e+00 1.7499999921609952e+01 0 0 -1 +7135 1 -3.6157253353844695e+01 6.6838641271728054e+00 3.5000000031462810e+00 0 0 0 +6493 1 -3.4473737618625265e+01 7.2453405428478588e+00 1.7499999843113072e+00 0 0 0 +6540 1 -3.3351393989858742e+01 9.4643202087218743e+00 1.7500000149527712e+00 0 0 0 +7132 1 -3.5034909635841515e+01 8.9028436694020670e+00 3.4999999878902006e+00 0 0 0 +6487 1 -3.5034909582394597e+01 8.9028436874791925e+00 1.7499999972861744e+01 0 0 -1 +6545 1 -3.1106706002140825e+01 8.3682934449376134e+00 1.7500000381789964e+00 0 0 0 +7188 1 -3.0545533989888696e+01 6.7107903044446280e+00 3.4999999694082145e+00 0 0 0 +7239 1 -2.9423190181435700e+01 8.9297700395182371e+00 3.4999999728419611e+00 0 0 0 +6543 1 -3.0545533956902862e+01 6.7107903064713694e+00 3.5217137012383719e-08 0 0 0 +6594 1 -2.9423190165970862e+01 8.9297700613781714e+00 3.7308109667947614e-08 0 0 0 +6596 1 -2.8862018065914420e+01 7.2722669308007157e+00 1.7500000178378783e+00 0 0 0 +6597 1 -2.7739674057958403e+01 9.4912466544034118e+00 1.7500000165007965e+00 0 0 0 +6648 1 -2.5494986013798858e+01 8.3952202418287705e+00 1.7499999852884165e+00 0 0 0 +6653 1 -2.3250297574468373e+01 7.2991938065925872e+00 1.7499999878191899e+00 0 0 0 +7295 1 -2.4933813902227563e+01 6.7377172216490289e+00 3.4999999935626649e+00 0 0 0 +6650 1 -2.4933813916855186e+01 6.7377172182537883e+00 1.7499999970146153e+01 0 0 -1 +6700 1 -2.2127954603358667e+01 9.5181740037099871e+00 1.7500000119984904e+00 0 0 0 +6702 1 -2.1566781435225273e+01 7.8606703741226722e+00 1.7493768209787260e-08 0 0 0 +6705 1 -1.9883268075692378e+01 8.4221479471371623e+00 1.7500000338965844e+00 0 0 0 +7347 1 -2.1566781439412146e+01 7.8606703692674396e+00 3.5000000104581028e+00 0 0 0 +6756 1 -1.7638585116479220e+01 7.3261215257910566e+00 1.7500000173155252e+00 0 0 0 +6757 1 -1.6516220935417181e+01 9.5451018252947097e+00 1.7500000185920579e+00 0 0 0 +6755 1 -1.5955088589613892e+01 7.8876126677619576e+00 3.5148028149882335e-08 0 0 0 +6808 1 -1.4271515864588334e+01 8.4490879624890400e+00 1.7500000099910027e+00 0 0 0 +7400 1 -1.5955088591805549e+01 7.8876126381259768e+00 3.5000000262483448e+00 0 0 0 +6813 1 -1.2026827889312770e+01 7.3531383683153493e+00 1.7500000229253823e+00 0 0 0 +6860 1 -1.0904486600808955e+01 9.5718192352576867e+00 1.7500000101596995e+00 0 0 0 +7507 1 -1.0342364853151478e+01 7.9141883000272077e+00 3.5000000648133311e+00 0 0 0 +6862 1 -1.0342364857053299e+01 7.9141883130286459e+00 2.3141641779409421e-08 0 0 0 +6865 1 -8.6590379449581878e+00 8.4749614075278092e+00 1.7500000403793960e+00 0 0 0 +6915 1 -4.7485646065615139e+00 7.9428044630310097e+00 1.1038082029677231e-08 0 0 0 +6916 1 -6.4095238309837868e+00 7.3753071457588213e+00 1.7500000013028600e+00 0 0 0 +6917 1 -5.3078143215647007e+00 9.6074179509054591e+00 1.7500000131004001e+00 0 0 0 +7560 1 -4.7485645959788165e+00 7.9428044414909955e+00 3.4999999992689714e+00 0 0 0 +6968 1 -3.1035853289608544e+00 8.5508558302883397e+00 1.7499999900006498e+00 0 0 0 +6973 1 -1.0571063328407477e+00 7.4685938777908252e+00 1.7499999669199673e+00 0 0 0 +6412 1 -4.3452488202678438e+01 1.1629447956510754e+01 1.7500000012696693e+00 0 0 0 +7616 1 -1.7224971284424484e+00 4.3906571424511100e+01 1.5749999897413021e+01 0 0 0 +6441 1 -4.1207800560932029e+01 1.0533421168777636e+01 1.7499999675404319e+00 0 0 0 +7084 1 -4.1768972464727241e+01 1.2190924301554242e+01 3.5000000169508430e+00 0 0 0 +7085 1 -3.9524284946112871e+01 1.1094897488050162e+01 3.5000000364463655e+00 0 0 0 +6440 1 -3.9524284975627893e+01 1.1094897509537976e+01 1.7499999927471990e+01 0 0 -1 +6484 1 -3.7840769320198476e+01 1.1656373824967581e+01 1.7499999719228509e+00 0 0 0 +6489 1 -3.5596081814958517e+01 1.0560346991699772e+01 1.7499999874575933e+00 0 0 0 +7183 1 -3.3912565929531510e+01 1.1121823315016439e+01 3.5000000029811416e+00 0 0 0 +6538 1 -3.3912565885243161e+01 1.1121823345634326e+01 1.7499999992477676e+01 0 0 -1 +6541 1 -3.2229050066552723e+01 1.1683299724085449e+01 1.7500000239118372e+00 0 0 0 +6592 1 -2.9984362103870982e+01 1.0587273153506915e+01 1.7500000236488289e+00 0 0 0 +6644 1 -2.6617330156624213e+01 1.1710226510788020e+01 1.7500000178537867e+00 0 0 0 +7236 1 -2.8300846162743671e+01 1.1148749803121502e+01 3.4999999992739825e+00 0 0 0 +6591 1 -2.8300846176728438e+01 1.1148749784357978e+01 5.7510809466630358e-09 0 0 0 +6649 1 -2.4372642218071817e+01 1.0614200151891025e+01 1.7500000091231824e+00 0 0 0 +6699 1 -2.0444438750235264e+01 1.0079651575907182e+01 3.0842901581068438e-08 0 0 0 +6701 1 -2.1005608439771962e+01 1.1737153408523435e+01 1.7500000239355171e+00 0 0 0 +7344 1 -2.0444438771831184e+01 1.0079651549242483e+01 3.5000000202494603e+00 0 0 0 +6750 1 -1.9322091093790462e+01 1.2298628605626620e+01 2.7194265435640970e-08 0 0 0 +6752 1 -1.8760917291126429e+01 1.0641126844544544e+01 1.7500000160542861e+00 0 0 0 +7395 1 -1.9322091104777069e+01 1.2298628582196542e+01 3.5000000235907653e+00 0 0 0 +6803 1 -1.3710492194850993e+01 1.2325611730652268e+01 5.1988647760390897e-09 0 0 0 +6804 1 -1.5393909167081446e+01 1.1764076953090036e+01 1.7499999965138260e+00 0 0 0 +6806 1 -1.4832659549046815e+01 1.0106549153737662e+01 2.1955378907189550e-08 0 0 0 +6809 1 -1.3149238340717378e+01 1.0668019026013493e+01 1.7500000099470376e+00 0 0 0 +7448 1 -1.3710492219597183e+01 1.2325611717929316e+01 3.4999999901978014e+00 0 0 0 +7451 1 -1.4832659560720364e+01 1.0106549123784511e+01 3.5000000159163278e+00 0 0 0 +6861 1 -9.7824048178981613e+00 1.1791488621884373e+01 1.7500000158551139e+00 0 0 0 +6859 1 -9.2228648210537347e+00 1.0134060839776918e+01 1.9186525883164609e-08 0 0 0 +6910 1 -8.0950144277563858e+00 1.2351455802593286e+01 3.6217069020769034e-08 0 0 0 +6912 1 -7.5397001598671922e+00 1.0697330426623205e+01 1.7500000207760349e+00 0 0 0 +7504 1 -9.2228648183226785e+00 1.0134060838291816e+01 3.5000000504438060e+00 0 0 0 +7555 1 -8.0950144101115242e+00 1.2351455824708770e+01 3.5000000237055615e+00 0 0 0 +6964 1 -4.1395814857074251e+00 1.1800635987276474e+01 1.7500000056063962e+00 0 0 0 +6966 1 -3.5610869229406004e+00 1.0156707512083893e+01 3.3824970323168676e-08 0 0 0 +7611 1 -3.5610869172940927e+00 1.0156707504101835e+01 3.4999999832478332e+00 0 0 0 +6963 1 -2.5187342763971881e+00 1.2359662918372878e+01 2.9957927141339725e-08 0 0 0 +6969 1 -1.7224974193184295e+00 1.0702652493223971e+01 1.7500000001597418e+00 0 0 0 +7608 1 -2.5187342740263703e+00 1.2359662895750008e+01 3.4999999673549871e+00 0 0 0 +6408 1 -4.4574832224777168e+01 1.4944454177029643e+01 1.7499999953178251e+00 0 0 0 +6437 1 -4.2330144442485405e+01 1.3848427507617821e+01 1.7499999980593082e+00 0 0 0 +7052 1 -4.4013660175713440e+01 1.3286951107643954e+01 3.5000000136830329e+00 0 0 0 +7080 1 -4.2891316361924503e+01 1.5505930552195272e+01 3.5000000097457216e+00 0 0 0 +6442 1 -4.0085456823140014e+01 1.2752400719244376e+01 1.7499999610489747e+00 0 0 0 +6480 1 -3.8963113059033887e+01 1.4971380171178509e+01 1.7499999746482156e+00 0 0 0 +7081 1 -4.0646628734841094e+01 1.4409903925160750e+01 3.5000000125617321e+00 0 0 0 +6485 1 -3.6718425438666273e+01 1.3875353381598204e+01 1.7499999842979246e+00 0 0 0 +7124 1 -3.7279597377611644e+01 1.5532856565628901e+01 3.5000000251027159e+00 0 0 0 +7127 1 -3.8401941154913210e+01 1.3313877031973979e+01 3.5000000211626587e+00 0 0 0 +6479 1 -3.7279597379159817e+01 1.5532856578650946e+01 1.7499999950448483e+01 0 0 -1 +6482 1 -3.8401941159122629e+01 1.3313877029660340e+01 1.7499999941445189e+01 0 0 -1 +6536 1 -3.4473737833080982e+01 1.2779326518677230e+01 1.7500000004549829e+00 0 0 0 +6537 1 -3.3351393948629408e+01 1.4998306117172486e+01 1.7500000018142665e+00 0 0 0 +7180 1 -3.2790222055377015e+01 1.3340802947044198e+01 3.4999999814576395e+00 0 0 0 +6535 1 -3.2790222033534604e+01 1.3340802954514912e+01 2.3314316610131478e-08 0 0 0 +6588 1 -3.1106706033163409e+01 1.3902279375720864e+01 1.7500000356335135e+00 0 0 0 +7231 1 -3.1667877887551786e+01 1.5559782511155957e+01 3.4999999978249159e+00 0 0 0 +6586 1 -3.1667877875604987e+01 1.5559782530482485e+01 1.9454798839405197e-08 0 0 0 +6593 1 -2.8862018165040791e+01 1.2806252942010300e+01 1.7500000278776275e+00 0 0 0 +6640 1 -2.7739673946891070e+01 1.5025232617096240e+01 1.7500000005724683e+00 0 0 0 +7284 1 -2.6056157889826732e+01 1.5586709301973443e+01 3.5000000086204741e+00 0 0 0 +7287 1 -2.7178502167298461e+01 1.3367729508172561e+01 3.5000000230786013e+00 0 0 0 +6639 1 -2.6056157891671301e+01 1.5586709301041390e+01 1.7499999998826073e+01 0 0 -1 +6642 1 -2.7178502164424124e+01 1.3367729533588310e+01 1.7499999995442831e+01 0 0 -1 +6645 1 -2.5494985914032018e+01 1.3929206193561772e+01 1.7500000110091245e+00 0 0 0 +6694 1 -2.3811469727142644e+01 1.4490682945980568e+01 1.2586579786981587e-08 0 0 0 +6696 1 -2.3250297574593759e+01 1.2833179784643255e+01 1.7500000096580235e+00 0 0 0 +7339 1 -2.3811469728174064e+01 1.4490682924730807e+01 3.5000000160823079e+00 0 0 0 +6697 1 -2.2127954356861110e+01 1.5052159939714809e+01 1.7500000405653182e+00 0 0 0 +6748 1 -1.9883267856884331e+01 1.3956133944884565e+01 1.7500000190051535e+00 0 0 0 +6753 1 -1.7638584828250323e+01 1.2860107562561586e+01 1.7500000124017714e+00 0 0 0 +6800 1 -1.6516220493783287e+01 1.5079087820664471e+01 1.7499999922493301e+00 0 0 0 +7392 1 -1.8199754861832488e+01 1.4517614000710825e+01 3.4999999997774056e+00 0 0 0 +6747 1 -1.8199754861885346e+01 1.4517614031304193e+01 1.9768373720157237e-08 0 0 0 +6805 1 -1.4271515418916536e+01 1.3983074050044538e+01 1.7500000021711899e+00 0 0 0 +6854 1 -1.2587783413675364e+01 1.4544435286254062e+01 1.7499999991092853e+01 0 0 -1 +6856 1 -1.2026827488479970e+01 1.2887124664850257e+01 1.7499999929164531e+00 0 0 0 +6857 1 -1.0904486113278503e+01 1.5105805573784615e+01 1.7500000031307994e+00 0 0 0 +7499 1 -1.2587783465541357e+01 1.4544435279990577e+01 3.5000000073964666e+00 0 0 0 +6907 1 -6.9829712549774090e+00 1.4572590744119601e+01 4.5241779374448141e-08 0 0 0 +6908 1 -8.6590374525770955e+00 1.4008947894902635e+01 1.7500000018294957e+00 0 0 0 +7552 1 -6.9829712446704173e+00 1.4572590782710151e+01 3.4999999751664244e+00 0 0 0 +6913 1 -6.4095233568915182e+00 1.2909293599412649e+01 1.7500000173734833e+00 0 0 0 +6960 1 -5.3078139323709452e+00 1.5141404553407442e+01 1.7499999953558409e+00 0 0 0 +6965 1 -3.1035851443460407e+00 1.4084842378051817e+01 1.7499999881283537e+00 0 0 0 +7010 1 -1.2264316154718684e+00 1.4637225854928861e+01 1.0063141453850767e-07 0 0 0 +7011 1 -1.0571062049773106e+00 1.3002580215169626e+01 1.7500000020960151e+00 0 0 0 +7655 1 -1.2264316180976593e+00 1.4637225803871551e+01 3.4999998979091762e+00 0 0 0 +6433 1 -4.3452488291995806e+01 1.7163433724121148e+01 1.7499999728046711e+00 0 0 0 +7076 1 -4.4013660190812253e+01 1.8820936867183004e+01 3.4999999749208270e+00 0 0 0 +7037 1 -1.2264314240700642e+00 4.2307158611743390e+01 1.7499999933425283e+01 0 0 -1 +6438 1 -4.1207800643630037e+01 1.6067406992118038e+01 1.7499999759897296e+00 0 0 0 +6476 1 -4.0085456754120649e+01 1.8286386569380820e+01 1.7499999827108275e+00 0 0 0 +7077 1 -4.1768972476176508e+01 1.7724910098601615e+01 3.5000000049752233e+00 0 0 0 +7123 1 -3.9524284980608449e+01 1.6628883386573666e+01 3.5000000097084341e+00 0 0 0 +6481 1 -3.7840769279277175e+01 1.7190359743570113e+01 1.7499999631315972e+00 0 0 0 +6532 1 -3.5596081723417690e+01 1.6094332864339606e+01 1.7499999941904425e+00 0 0 0 +7175 1 -3.6157253448243587e+01 1.7751836011164190e+01 3.5000000208795785e+00 0 0 0 +6530 1 -3.6157253439774010e+01 1.7751836023398454e+01 1.7499999981230282e+01 0 0 -1 +6533 1 -3.4473737591554922e+01 1.8313312389183722e+01 1.7500000190317178e+00 0 0 0 +6584 1 -3.2229049863876874e+01 1.7217285632700730e+01 1.7500000060056686e+00 0 0 0 +6589 1 -2.9984361911174922e+01 1.6121259124706118e+01 1.7500000161917000e+00 0 0 0 +7228 1 -3.0545533861397217e+01 1.7778762184615932e+01 3.4999999824043018e+00 0 0 0 +6583 1 -3.0545533862495201e+01 1.7778762206457799e+01 1.8700556644798419e-08 0 0 0 +6636 1 -2.8862017819081615e+01 1.8340238810821702e+01 1.7499999999629277e+00 0 0 0 +6641 1 -2.6617329858999863e+01 1.7244212438732418e+01 1.7500000133981244e+00 0 0 0 +6690 1 -2.4933813580277707e+01 1.7805689146576949e+01 1.4668778218385753e-08 0 0 0 +6692 1 -2.4372641961002252e+01 1.6148186078287232e+01 1.7500000150851718e+00 0 0 0 +6693 1 -2.3250297096262411e+01 1.8367165665566038e+01 1.7500000173207937e+00 0 0 0 +7336 1 -2.2689125667230307e+01 1.6709663008155882e+01 3.5000000118040404e+00 0 0 0 +7335 1 -2.4933813616132515e+01 1.7805689104539724e+01 3.5000000106258495e+00 0 0 0 +6691 1 -2.2689125659212433e+01 1.6709663043490220e+01 3.8201649731980685e-08 0 0 0 +6744 1 -2.1005607983707126e+01 1.7271139269396983e+01 1.7500000311358912e+00 0 0 0 +7387 1 -2.1566780783975130e+01 1.8928642202414590e+01 3.5000000144370653e+00 0 0 0 +6742 1 -2.1566780778233394e+01 1.8928642208221675e+01 4.6991891001203948e-08 0 0 0 +6749 1 -1.8760916870760255e+01 1.6175112762468530e+01 1.7500000156815847e+00 0 0 0 +6796 1 -1.7638584323755428e+01 1.8394093477668768e+01 1.7500000074988125e+00 0 0 0 +7443 1 -1.7077392360671713e+01 1.6736582633969189e+01 3.4999999786592988e+00 0 0 0 +6798 1 -1.7077392346115278e+01 1.6736582649768252e+01 2.2905872255912515e-08 0 0 0 +6801 1 -1.5393908681631888e+01 1.7298062954160397e+01 1.7499999899190992e+00 0 0 0 +6852 1 -1.3149237842365290e+01 1.6202005190874878e+01 1.7499999882062560e+00 0 0 0 +7440 1 -1.5955087694335768e+01 1.8955584691672083e+01 3.5000000175821926e+00 0 0 0 +6795 1 -1.5955087671416843e+01 1.8955584689355511e+01 1.7499999985760844e+01 0 0 -1 +6851 1 -1.1466172862140816e+01 1.6763701333496144e+01 1.7499999992481282e+01 0 0 -1 +6853 1 -1.2026826958980518e+01 1.8421110889840325e+01 1.7500000153223705e+00 0 0 0 +6904 1 -9.7824043387818893e+00 1.7325475097278751e+01 1.7500000149058927e+00 0 0 0 +7496 1 -1.1466172880736234e+01 1.6763701353368017e+01 3.5000000169670709e+00 0 0 0 +7547 1 -1.0342363861142831e+01 1.8982161076638246e+01 3.5000000086163716e+00 0 0 0 +6902 1 -1.0342363850578316e+01 1.8982161058522440e+01 2.3502626073909410e-08 0 0 0 +6909 1 -7.5396997391948819e+00 1.6231317035429331e+01 1.7500000072391733e+00 0 0 0 +6956 1 -6.4095229647629246e+00 1.8443280308827987e+01 1.7499999957725065e+00 0 0 0 +6961 1 -4.1395811883827012e+00 1.7334622676984068e+01 1.7499999821392651e+00 0 0 0 +7600 1 -4.7485638663427636e+00 1.9010777720368139e+01 3.4999999403818989e+00 0 0 0 +7603 1 -5.8404166625162590e+00 1.6788610570511722e+01 3.4999999519160818e+00 0 0 0 +6955 1 -4.7485638655494364e+00 1.9010777725866138e+01 3.8083967067267391e-08 0 0 0 +6958 1 -5.8404166808664577e+00 1.6788610563711639e+01 4.1451650569174278e-08 0 0 0 +7008 1 -1.7224973159579060e+00 1.6236639159831544e+01 1.7499999802832795e+00 0 0 0 +7009 1 -1.0571060368507352e+00 1.8536566998197053e+01 1.7499999865418738e+00 0 0 0 +12915 1 -3.9781072018670338e-13 1.7020945374148997e+01 9.7683267873458487e-08 0 0 0 +13555 1 -1.7848838242123148e-13 1.7020945281493436e+01 3.4999998435478772e+00 0 0 0 +6429 1 -4.4574832171490364e+01 2.0478439889558018e+01 1.7499999666596471e+00 0 0 0 +6434 1 -4.2330144417654800e+01 1.9382413277348274e+01 1.7499999622699465e+00 0 0 0 +7073 1 -4.2891316318144185e+01 2.1039916338939747e+01 3.4999999752917761e+00 0 0 0 +6472 1 -4.1207800525952266e+01 2.1601392858622120e+01 1.7499999598250009e+00 0 0 0 +6477 1 -3.8963112844310309e+01 2.0505366044691279e+01 1.7499999944458848e+00 0 0 0 +7119 1 -4.0646628619223605e+01 1.9943889759719681e+01 3.5000000042161723e+00 0 0 0 +6528 1 -3.6718425202270780e+01 1.9409339255307593e+01 1.7500000123132597e+00 0 0 0 +6529 1 -3.5596081399203889e+01 2.1628318788667176e+01 1.7500000108054825e+00 0 0 0 +6580 1 -3.3351393597155933e+01 2.0532292005817293e+01 1.7500000110956195e+00 0 0 0 +7172 1 -3.5034909390580701e+01 1.9970815472206237e+01 3.5000000157334723e+00 0 0 0 +6527 1 -3.5034909376217378e+01 1.9970815528488192e+01 1.4561608402640651e-08 0 0 0 +6585 1 -3.1106705680499800e+01 1.9436265277373320e+01 1.7499999951352663e+00 0 0 0 +6632 1 -2.9984361412155881e+01 2.1655244925017701e+01 1.7499999922424789e+00 0 0 0 +6634 1 -2.9423189693839408e+01 1.9997741898547122e+01 1.7499999999337103e+01 0 0 -1 +7279 1 -2.9423189688520900e+01 1.9997741878512020e+01 3.4999999793041510e+00 0 0 0 +6637 1 -2.7739673432867722e+01 2.0559218496641176e+01 1.7499999983732100e+00 0 0 0 +6688 1 -2.5494985475159133e+01 1.9463192101501978e+01 1.7500000067407591e+00 0 0 0 +6689 1 -2.4372641284989530e+01 2.1682171924096092e+01 1.7500000494714532e+00 0 0 0 +6740 1 -2.2127953728701417e+01 2.0586145773406301e+01 1.7500000494993120e+00 0 0 0 +6745 1 -1.9883267254084096e+01 1.9490119779586017e+01 1.7500000545046688e+00 0 0 0 +7384 1 -2.0444437782104426e+01 2.1147623288339034e+01 3.5000000213667888e+00 0 0 0 +6739 1 -2.0444437772494709e+01 2.1147623315633933e+01 5.3112935967838285e-08 0 0 0 +6792 1 -1.8760916228744897e+01 2.1709098586301074e+01 1.7500000352143716e+00 0 0 0 +6797 1 -1.6516219928020817e+01 2.0613073751707699e+01 1.7500000066815076e+00 0 0 0 +6848 1 -1.4271514912847330e+01 1.9517060136876079e+01 1.7499999950801204e+00 0 0 0 +6849 1 -1.3149237309307841e+01 2.1735991298173818e+01 1.7500000073518573e+00 0 0 0 +7491 1 -1.4832658533578639e+01 2.1174521198427847e+01 3.5000000130976221e+00 0 0 0 +6846 1 -1.4832658498023864e+01 2.1174521217948666e+01 1.7499999992349650e+01 0 0 -1 +6900 1 -1.0904485564972896e+01 2.0639791881470625e+01 1.7500000204296944e+00 0 0 0 +6905 1 -8.6590369633110225e+00 1.9542934417401323e+01 1.7500000239848494e+00 0 0 0 +6952 1 -7.5396992327424037e+00 2.1765303631873248e+01 1.7500000051098408e+00 0 0 0 +7544 1 -9.2228637959482018e+00 2.1202033772063817e+01 3.5000000069163448e+00 0 0 0 +6899 1 -9.2228637896669738e+00 2.1202033759458768e+01 3.3454311902022822e-08 0 0 0 +6957 1 -5.3078135086493656e+00 2.0675391298489668e+01 1.7499999924173437e+00 0 0 0 +7647 1 -3.5610863214475734e+00 2.1224680975212213e+01 3.4999999112859976e+00 0 0 0 +7002 1 -3.5610862777257384e+00 2.1224680983990538e+01 6.1466575859525582e-08 0 0 0 +7004 1 -3.1035849194821776e+00 1.9618829250047568e+01 1.7499999851591785e+00 0 0 0 +7005 1 -1.7224969739805118e+00 2.1770626026884045e+01 1.7500000242187057e+00 0 0 0 +6430 1 -4.3452488209202428e+01 2.2697419535241981e+01 1.7499999428107158e+00 0 0 0 +6468 1 -4.2330144280862577e+01 2.4916399143745949e+01 1.7499999517579523e+00 0 0 0 +7070 1 -4.4013660137555974e+01 2.4354922673659971e+01 3.4999999491770977e+00 0 0 0 +9597 1 -5.3078136517568550e+00 4.2811335876956250e+01 1.5750000024361029e+01 0 0 0 +7116 1 -3.9524284775388011e+01 2.2162869249185196e+01 3.5000000276649037e+00 0 0 0 +6473 1 -4.0085456524798957e+01 2.3820372449595119e+01 1.7499999727452671e+00 0 0 0 +7115 1 -4.1768972362414530e+01 2.3258895949283488e+01 3.4999999783397260e+00 0 0 0 +6524 1 -3.7840768947727312e+01 2.2724345639756468e+01 1.7500000126830519e+00 0 0 0 +6525 1 -3.6718424787368342e+01 2.4943325163468913e+01 1.7500000475003539e+00 0 0 0 +7167 1 -3.8401940683542996e+01 2.4381848795289610e+01 3.5000000285295352e+00 0 0 0 +6578 1 -3.3912565348606527e+01 2.2189795103437984e+01 2.6611294207393635e-08 0 0 0 +7223 1 -3.3912565330946194e+01 2.2189795079553534e+01 3.5000000161132170e+00 0 0 0 +6576 1 -3.4473737129093315e+01 2.3847298247533669e+01 1.7500000361418158e+00 0 0 0 +7220 1 -3.2790221173469391e+01 2.4408774630263462e+01 3.4999999884959472e+00 0 0 0 +6575 1 -3.2790221191927721e+01 2.4408774661804959e+01 4.4488919374389727e-08 0 0 0 +6581 1 -3.2229049359840197e+01 2.2751271460724997e+01 1.7500000176456953e+00 0 0 0 +6628 1 -3.1106705039417307e+01 2.4970251044434363e+01 1.7500000115553289e+00 0 0 0 +6631 1 -2.8300845328799664e+01 2.2216721547316709e+01 3.2459833456227805e-09 0 0 0 +6633 1 -2.8862017181026243e+01 2.3874224642273738e+01 1.7499999954858774e+00 0 0 0 +6682 1 -2.7178501017258082e+01 2.4435701214779606e+01 1.7499999995403261e+01 0 0 -1 +6684 1 -2.6617329189275225e+01 2.2778198246196958e+01 1.7500000155760260e+00 0 0 0 +7276 1 -2.8300845341143535e+01 2.2216721549464935e+01 3.4999999688937069e+00 0 0 0 +7327 1 -2.7178501053021826e+01 2.4435701207086105e+01 3.5000000030997436e+00 0 0 0 +6685 1 -2.5494984650551974e+01 2.4997177874129225e+01 1.7500000348917826e+00 0 0 0 +6736 1 -2.3250296349886490e+01 2.3901151457394821e+01 1.7500000577348356e+00 0 0 0 +6741 1 -2.1005607300570926e+01 2.2805125091975004e+01 1.7500000455014402e+00 0 0 0 +6788 1 -1.9883266584764502e+01 2.5024105588236644e+01 1.7500000201264334e+00 0 0 0 +6793 1 -1.7638583656079916e+01 2.3928079326191039e+01 1.7500000183726347e+00 0 0 0 +7435 1 -1.9322089924627484e+01 2.3366600281003539e+01 3.5000000590920419e+00 0 0 0 +6790 1 -1.9322089929391595e+01 2.3366600297031670e+01 1.7499999992902765e+01 0 0 -1 +6844 1 -1.5393908095160750e+01 2.2832048906444843e+01 1.7499999914869298e+00 0 0 0 +6845 1 -1.4271514405228709e+01 2.5051046086515395e+01 1.7500000019951316e+00 0 0 0 +7488 1 -1.3710491164345965e+01 2.3393583867981270e+01 3.4999999904133490e+00 0 0 0 +6843 1 -1.3710491142126493e+01 2.3393583862445919e+01 1.4477887270353338e-08 0 0 0 +6896 1 -1.2026826489700730e+01 2.3955097039317018e+01 1.7499999988960218e+00 0 0 0 +6901 1 -9.7824038059325531e+00 2.2859461431452878e+01 1.7500000222836705e+00 0 0 0 +6948 1 -8.6590365428852536e+00 2.5076920844433481e+01 1.7500000089055103e+00 0 0 0 +7595 1 -8.0950134745187725e+00 2.3419428938563144e+01 3.4999999756643811e+00 0 0 0 +6950 1 -8.0950134870155850e+00 2.3419428897115267e+01 5.6030024770457708e-08 0 0 0 +6953 1 -6.4095225393849296e+00 2.3977266966652277e+01 1.7499999988625810e+00 0 0 0 +7000 1 -4.1395807664301172e+00 2.2868609515077377e+01 1.7499999861023603e+00 0 0 0 +7001 1 -3.1035845307891621e+00 2.5152816005551252e+01 1.7499999804539308e+00 0 0 0 +7034 1 -1.0571063407198453e+00 2.4070553901006406e+01 1.7500000324033897e+00 0 0 0 +7644 1 -2.5187338174779490e+00 2.3427636479757695e+01 3.4999998163446797e+00 0 0 0 +6999 1 -2.5187337697015479e+00 2.3427636492734369e+01 1.7951180351593026e-07 0 0 0 +6426 1 -4.4574832129310948e+01 2.6012425771065498e+01 1.7499999342033368e+00 0 0 0 +6464 1 -4.3452488107731121e+01 2.8231405438618385e+01 1.7499999395526782e+00 0 0 0 +7111 1 -4.2891316194823787e+01 2.6573902198358812e+01 3.4999999610785917e+00 0 0 0 +6469 1 -4.1207800319630167e+01 2.7135378717548626e+01 1.7499999833649036e+00 0 0 0 +6520 1 -3.8963112513974366e+01 2.6039351956062802e+01 1.7500000104527518e+00 0 0 0 +7112 1 -4.0646628434051209e+01 2.5477875633646676e+01 3.5000000044687853e+00 0 0 0 +7163 1 -3.9524284479957700e+01 2.7696855130515594e+01 3.5000000355182337e+00 0 0 0 +6521 1 -3.7840768562129760e+01 2.8258331519910712e+01 1.7500000216264002e+00 0 0 0 +6572 1 -3.5596080861935199e+01 2.7162304620909893e+01 1.7500000594935599e+00 0 0 0 +7164 1 -3.7279596679535466e+01 2.6600828332127548e+01 3.5000000634479003e+00 0 0 0 +6577 1 -3.3351392983627690e+01 2.6066277818984137e+01 1.7500000287431947e+00 0 0 0 +6624 1 -3.2229048695153189e+01 2.8285257275738008e+01 1.7500000246987417e+00 0 0 0 +6626 1 -3.1667876781596391e+01 2.6627754166035071e+01 4.5788047230379486e-08 0 0 0 +6629 1 -2.9984360696711768e+01 2.7189230748865715e+01 1.7500000036091694e+00 0 0 0 +7271 1 -3.1667876771718419e+01 2.6627754165591949e+01 3.4999999829863215e+00 0 0 0 +6679 1 -2.6056156494738456e+01 2.6654680908773592e+01 2.0082182567268201e-08 0 0 0 +6680 1 -2.7739672689611474e+01 2.6093204264572268e+01 1.7500000083196594e+00 0 0 0 +6681 1 -2.6617328433506902e+01 2.8312184027505644e+01 1.7500000369845796e+00 0 0 0 +7324 1 -2.6056156557220550e+01 2.6654680906727780e+01 3.5000000009496035e+00 0 0 0 +6732 1 -2.4372640535092781e+01 2.7216157669985321e+01 1.7500000462973340e+00 0 0 0 +7379 1 -2.3811468411541576e+01 2.5558654561748465e+01 3.5000000417136703e+00 0 0 0 +7376 1 -2.2689124244564475e+01 2.7777634597079132e+01 3.5000000554648154e+00 0 0 0 +6734 1 -2.3811468370595986e+01 2.5558654576810380e+01 2.7036075454251156e-08 0 0 0 +6731 1 -2.2689124222636302e+01 2.7777634593096206e+01 8.7555565970358844e-09 0 0 0 +6737 1 -2.2127952992662834e+01 2.6120131555762455e+01 1.7500000705402374e+00 0 0 0 +6784 1 -2.1005606614824273e+01 2.8339110847181757e+01 1.7500000360289085e+00 0 0 0 +6789 1 -1.8760915647066312e+01 2.7243084413682592e+01 1.7500000037197769e+00 0 0 0 +6840 1 -1.6516219378112350e+01 2.6147059595048997e+01 1.7499999887712205e+00 0 0 0 +7432 1 -1.8199753633923891e+01 2.5585585702197900e+01 3.5000000301885570e+00 0 0 0 +7483 1 -1.7077391242837002e+01 2.7804554374162194e+01 3.4999999914475479e+00 0 0 0 +6787 1 -1.8199753658397807e+01 2.5585585701982986e+01 1.7499999978119387e+01 0 0 -1 +6838 1 -1.7077391240680068e+01 2.7804554377686635e+01 1.7499999967853139e+01 0 0 -1 +6841 1 -1.5393907720082741e+01 2.8366034814418480e+01 1.7499999732056162e+00 0 0 0 +6892 1 -1.3149236970049685e+01 2.7269977308545446e+01 1.7499999867491378e+00 0 0 0 +6897 1 -1.0904485229653453e+01 2.6173778076379001e+01 1.7500000098625739e+00 0 0 0 +6944 1 -9.7824036646300900e+00 2.8393447681250063e+01 1.7500000127601418e+00 0 0 0 +7536 1 -1.1466172090426653e+01 2.7831673677021627e+01 3.4999999823020187e+00 0 0 0 +7539 1 -1.2587782507436954e+01 2.5612407537228393e+01 3.4999999976607810e+00 0 0 0 +6891 1 -1.1466172084380487e+01 2.7831673672252549e+01 3.3632876757558661e-08 0 0 0 +6894 1 -1.2587782459090890e+01 2.5612407538067394e+01 1.9532974739615933e-08 0 0 0 +6949 1 -7.5396990201915504e+00 2.7299290107870497e+01 1.7499999988191446e+00 0 0 0 +7592 1 -6.9829704672187267e+00 2.5640564002554068e+01 3.4999999282659728e+00 0 0 0 +6947 1 -6.9829704681098681e+00 2.5640563978271761e+01 7.1924927359650484e-08 0 0 0 +6996 1 -5.3078133273039869e+00 2.6209378090243753e+01 1.7499999829559139e+00 0 0 0 +6997 1 -4.1395806944668196e+00 2.8402596269676355e+01 1.7499999756711695e+00 0 0 0 +7639 1 -5.8404160797934788e+00 2.7856583928515573e+01 3.4999999171412965e+00 0 0 0 +6994 1 -5.8404161018918463e+00 2.7856583930680834e+01 5.7084764735113143e-08 0 0 0 +7031 1 -1.7224968926823649e+00 2.7304612951906016e+01 1.7499999970711015e+00 0 0 0 +7678 1 -1.2264314444582598e+00 2.5705199565030703e+01 3.4999998848813059e+00 0 0 0 +7033 1 -1.2264314372740948e+00 2.5705199588755494e+01 1.4556431605136628e-07 0 0 0 +9561 1 -8.6590369000642493e+00 4.1678878343750284e+01 1.5750000078521973e+01 0 0 0 +9593 1 -7.5396995273348164e+00 4.3901247311443555e+01 1.5750000082680646e+01 0 0 0 +6460 1 -4.4574832119044963e+01 3.1546411816098711e+01 1.7499999722332487e+00 0 0 0 +6465 1 -4.2330144174553610e+01 3.0450385045947556e+01 1.7499999623753180e+00 0 0 0 +7107 1 -4.4013660086894092e+01 2.9888908641406740e+01 3.4999999564580535e+00 0 0 0 +6516 1 -4.0085456285558223e+01 2.9354358334785946e+01 1.7500000068725574e+00 0 0 0 +6517 1 -3.8963112204215399e+01 3.1573337815138430e+01 1.7500000274229977e+00 0 0 0 +7108 1 -4.1768972198462755e+01 2.8792881815990107e+01 3.4999999865126279e+00 0 0 0 +7159 1 -4.0646628229033659e+01 3.1011861526405827e+01 3.5000000243443696e+00 0 0 0 +6568 1 -3.6718424315140247e+01 3.0477311013963398e+01 1.7500000529895399e+00 0 0 0 +7215 1 -3.6157252559612807e+01 2.8819807753406391e+01 3.5000000695764282e+00 0 0 0 +7160 1 -3.8401940357664486e+01 2.9915834675950489e+01 3.5000000545124590e+00 0 0 0 +6567 1 -3.5034908301102902e+01 3.1038787233123241e+01 4.2453026661124056e-08 0 0 0 +6573 1 -3.4473736536528484e+01 2.9381284096175801e+01 1.7500000528092285e+00 0 0 0 +6620 1 -3.3351392357408081e+01 3.1600263692469930e+01 1.7500000284206694e+00 0 0 0 +7212 1 -3.5034908319456143e+01 3.1038787203533982e+01 3.5000000438563497e+00 0 0 0 +6623 1 -3.0545532554777786e+01 2.8846733805055738e+01 2.3632845763135890e-08 0 0 0 +6625 1 -3.1106704330375216e+01 3.0504236916401926e+01 1.7500000086521523e+00 0 0 0 +6674 1 -2.9423188247006223e+01 3.1065713493186362e+01 2.7990757671619704e-08 0 0 0 +7268 1 -3.0545532559847924e+01 2.8846733809585320e+01 3.4999999681703233e+00 0 0 0 +7319 1 -2.9423188283043803e+01 3.1065713499120157e+01 3.4999999641906197e+00 0 0 0 +6676 1 -2.8862016422632177e+01 2.9408210417677562e+01 1.7500000083513936e+00 0 0 0 +6677 1 -2.7739671978533469e+01 3.1627190109658613e+01 1.7500000247339205e+00 0 0 0 +6728 1 -2.5494983986467112e+01 3.0531163671706533e+01 1.7500000367884903e+00 0 0 0 +6730 1 -2.4933812094032053e+01 2.8873660697248877e+01 2.0496427285413701e-08 0 0 0 +6733 1 -2.3250295638219765e+01 2.9435137241861220e+01 1.7500000495356154e+00 0 0 0 +7375 1 -2.4933812160035512e+01 2.8873660694532610e+01 3.5000000323589502e+00 0 0 0 +6780 1 -2.2127952389754356e+01 3.1654117327262675e+01 1.7500000407699492e+00 0 0 0 +6785 1 -1.9883266011116937e+01 3.0558091387386735e+01 1.7500000233048598e+00 0 0 0 +7427 1 -2.1566779415579177e+01 2.9996613785180195e+01 3.5000000350539309e+00 0 0 0 +6782 1 -2.1566779419937937e+01 2.9996613765189462e+01 1.3423079875502581e-08 0 0 0 +6836 1 -1.7638583223760246e+01 2.9462065173692523e+01 1.7499999637577806e+00 0 0 0 +6837 1 -1.6516219056538006e+01 3.1681045500828979e+01 1.7499999742978047e+00 0 0 0 +6888 1 -1.4271514180403390e+01 3.0585032035034072e+01 1.7499999826978230e+00 0 0 0 +7480 1 -1.5955086766650643e+01 3.0023556484186624e+01 3.4999999904199162e+00 0 0 0 +6835 1 -1.5955086745756200e+01 3.0023556491465730e+01 1.7499999950631427e+01 0 0 -1 +6893 1 -1.2026826298764105e+01 2.9489083065085431e+01 1.7500000081950440e+00 0 0 0 +6940 1 -1.0904485163241521e+01 3.1707764082812030e+01 1.7500000202297417e+00 0 0 0 +7587 1 -1.0342363312647729e+01 3.0050133461743876e+01 3.4999999758729357e+00 0 0 0 +6942 1 -1.0342363328538800e+01 3.0050133466735581e+01 5.7699433671416549e-08 0 0 0 +6945 1 -8.6590365415310409e+00 3.0610907056871206e+01 1.7500000130198405e+00 0 0 0 +6992 1 -6.4095224536320190e+00 2.9511253455888024e+01 1.7499999860556021e+00 0 0 0 +6993 1 -5.3078132630399812e+00 3.1743364465904246e+01 1.7499999790775627e+00 0 0 0 +7636 1 -4.7485634701799162e+00 3.0078751108150186e+01 3.4999999353027214e+00 0 0 0 +6991 1 -4.7485634766524081e+00 3.0078751123744595e+01 3.2365659721854561e-08 0 0 0 +7028 1 -3.1035846907139915e+00 3.0686802890996638e+01 1.7499999889194222e+00 0 0 0 +7032 1 -1.0571058951043988e+00 2.9604540891458669e+01 1.7500000054854021e+00 0 0 0 +6461 1 -4.3452488086623333e+01 3.3765391516642168e+01 1.7499999689701822e+00 0 0 0 +7104 1 -4.2891316162148563e+01 3.2107888184608512e+01 3.4999999857994260e+00 0 0 0 +6512 1 -4.1207800180528665e+01 3.2669364670267292e+01 1.7499999990654875e+00 0 0 0 +7155 1 -4.1768972073895050e+01 3.4326867800894590e+01 3.4999999912031501e+00 0 0 0 +7156 1 -3.9524284215311745e+01 3.3230841034761916e+01 3.5000000337017196e+00 0 0 0 +6564 1 -3.7840768134087163e+01 3.3792317376714308e+01 1.7500000295290250e+00 0 0 0 +6569 1 -3.5596080321259741e+01 3.2696290500099096e+01 1.7500000379715421e+00 0 0 0 +7208 1 -3.6157252058445593e+01 3.4353793622336831e+01 3.5000000365004702e+00 0 0 0 +7211 1 -3.7279596261139119e+01 3.2134814211484724e+01 3.5000000547467427e+00 0 0 0 +6618 1 -3.3912564109194363e+01 3.3257766781082580e+01 1.7826073531142800e-08 0 0 0 +7263 1 -3.3912564134750710e+01 3.3257766778547868e+01 3.5000000202027706e+00 0 0 0 +6621 1 -3.2229048023482463e+01 3.3819243141407242e+01 1.7500000137967811e+00 0 0 0 +6672 1 -2.9984359993481480e+01 3.2723216561115784e+01 1.7499999960499946e+00 0 0 0 +6671 1 -2.8300843880483928e+01 3.3284693187792968e+01 2.7402429870440181e-08 0 0 0 +6724 1 -2.6617327784876764e+01 3.3846169909982763e+01 1.7500000388014343e+00 0 0 0 +7316 1 -2.8300843933322941e+01 3.3284693227087054e+01 3.4999999810545468e+00 0 0 0 +6729 1 -2.4372639888534479e+01 3.2750143503571607e+01 1.7500000587597606e+00 0 0 0 +6781 1 -2.1005606147636556e+01 3.3873096698566499e+01 1.7500000154277742e+00 0 0 0 +7424 1 -2.0444436554212977e+01 3.2215594893433760e+01 3.5000000040599089e+00 0 0 0 +6779 1 -2.0444436576026973e+01 3.2215594917730179e+01 1.7499999998964814e+01 0 0 -1 +6832 1 -1.8760915180637348e+01 3.2777070245949780e+01 1.7500000019660016e+00 0 0 0 +7475 1 -1.9322088931324533e+01 3.4434571934828142e+01 3.5000000418176715e+00 0 0 0 +6830 1 -1.9322088941559667e+01 3.4434571985902920e+01 1.7499999967989140e+01 0 0 -1 +6884 1 -1.5393907487685304e+01 3.3900020709444867e+01 1.7499999799733787e+00 0 0 0 +6889 1 -1.3149236850241651e+01 3.2803963222373518e+01 1.7500000062534093e+00 0 0 0 +7528 1 -1.3710490800708548e+01 3.4461555695376745e+01 3.4999999844155631e+00 0 0 0 +7531 1 -1.4832657866153472e+01 3.2242493024275753e+01 3.4999999937476987e+00 0 0 0 +6883 1 -1.3710490790223648e+01 3.4461555727685251e+01 2.7871137018969762e-08 0 0 0 +6886 1 -1.4832657828450680e+01 3.2242493083808974e+01 1.7499999976733069e+01 0 0 -1 +6941 1 -9.7824037013774472e+00 3.3927433582689950e+01 1.7500000157179412e+00 0 0 0 +6988 1 -7.5396990874408072e+00 3.2833276248284861e+01 1.7499999852902477e+00 0 0 0 +7584 1 -9.2228635198231839e+00 3.2270006142541831e+01 3.4999999684110690e+00 0 0 0 +7631 1 -8.0950134812363164e+00 3.4487401268591533e+01 3.4999999472826784e+00 0 0 0 +6939 1 -9.2228635410284028e+00 3.2270006157382234e+01 5.0107848651806562e-08 0 0 0 +6986 1 -8.0950135098284424e+00 3.4487401237168797e+01 5.0292348837472357e-08 0 0 0 +7024 1 -4.1395806670997128e+00 3.3936582619689609e+01 1.7499999737928704e+00 0 0 0 +7671 1 -3.5610861347557292e+00 3.2292654390258583e+01 3.4999999414564793e+00 0 0 0 +7026 1 -3.5610860947299727e+00 3.2292654395456275e+01 1.8809114459435448e-08 0 0 0 +7023 1 -2.5187336570433909e+00 3.4495609804115148e+01 8.3590457100543657e-09 0 0 0 +7029 1 -1.7224968012231245e+00 3.2838599591611455e+01 1.7500000252726238e+00 0 0 0 +7668 1 -2.5187336985332025e+00 3.4495609828626506e+01 3.5000000090104724e+00 0 0 0 +6457 1 -4.4574832070666240e+01 3.7080398031858849e+01 1.7499999913040318e+00 0 0 0 +6508 1 -4.2330144038512984e+01 3.5984371103351009e+01 1.7499999889766462e+00 0 0 0 +7101 1 -4.4013660072755016e+01 3.5422894781753726e+01 3.4999999682081260e+00 0 0 0 +7151 1 -4.2891315997481009e+01 3.7641874278414946e+01 3.4999999823009547e+00 0 0 0 +6513 1 -4.0085455998114959e+01 3.4888344232381726e+01 1.7500000144953993e+00 0 0 0 +6560 1 -3.8963111832503031e+01 3.7107323704211765e+01 1.7500000364337707e+00 0 0 0 +7152 1 -4.0646627966384060e+01 3.6545847482621497e+01 3.5000000095960617e+00 0 0 0 +6565 1 -3.6718423830151721e+01 3.6011296868278542e+01 1.7500000314509647e+00 0 0 0 +7207 1 -3.8401939944852678e+01 3.5449820547416252e+01 3.5000000103326445e+00 0 0 0 +7204 1 -3.7279595835156776e+01 3.7668800096535016e+01 3.5000000321730456e+00 0 0 0 +6615 1 -3.2790219908327877e+01 3.5476746378144568e+01 1.3905970927209916e-08 0 0 0 +6616 1 -3.4473735952637810e+01 3.4915269948474972e+01 1.7500000185975082e+00 0 0 0 +6617 1 -3.3351391810071831e+01 3.7134249603462635e+01 1.7500000092450765e+00 0 0 0 +7260 1 -3.2790219931698843e+01 3.5476746377613544e+01 3.4999999947238001e+00 0 0 0 +6666 1 -3.1667875592009246e+01 3.7695725998181196e+01 2.5390793539134984e-08 0 0 0 +6668 1 -3.1106703747548838e+01 3.6038222823498302e+01 1.7500000139073815e+00 0 0 0 +7311 1 -3.1667875626547772e+01 3.7695726007228885e+01 3.4999999943350382e+00 0 0 0 +6673 1 -2.8862015819094140e+01 3.4942196390543323e+01 1.7500000111177354e+00 0 0 0 +6719 1 -2.6056155424508514e+01 3.7722652734730289e+01 4.4054546610051129e-08 0 0 0 +6720 1 -2.7739671494772931e+01 3.7161176103274002e+01 1.7500000178885438e+00 0 0 0 +6722 1 -2.7178499704057749e+01 3.5503672948946985e+01 3.7238731973928578e-08 0 0 0 +7364 1 -2.6056155427263544e+01 3.7722652750051054e+01 3.5000000062982806e+00 0 0 0 +7367 1 -2.7178499744747800e+01 3.5503672949410500e+01 3.5000000115092922e+00 0 0 0 +6725 1 -2.5494983431297911e+01 3.6065149594062987e+01 1.7500000277804304e+00 0 0 0 +6776 1 -2.3250295125417402e+01 3.4969123096494911e+01 1.7500000391903381e+00 0 0 0 +7419 1 -2.3811467269805306e+01 3.6626626257516882e+01 3.5000000161219336e+00 0 0 0 +6774 1 -2.3811467289386595e+01 3.6626626267096846e+01 3.3358727673350400e-08 0 0 0 +6777 1 -2.2127952023420242e+01 3.7188103233775173e+01 1.7500000289403539e+00 0 0 0 +6828 1 -1.9883265676512547e+01 3.6092077277974695e+01 1.7499999900054455e+00 0 0 0 +6833 1 -1.7638582880896994e+01 3.4996051046938803e+01 1.7499999960626289e+00 0 0 0 +6880 1 -1.6516218916532686e+01 3.7215031331374206e+01 1.7500000035896333e+00 0 0 0 +7472 1 -1.8199752957553578e+01 3.6653557397526320e+01 3.5000000283914821e+00 0 0 0 +6827 1 -1.8199752965638556e+01 3.6653557445329156e+01 1.7499999974148725e+01 0 0 -1 +6885 1 -1.4271514138951368e+01 3.6119017852555231e+01 1.7500000248807512e+00 0 0 0 +6936 1 -1.2026826345707491e+01 3.5023068914978630e+01 1.7500000067212085e+00 0 0 0 +6937 1 -1.0904485361298978e+01 3.7241749837488634e+01 1.7500000228968557e+00 0 0 0 +7579 1 -1.2587782445069397e+01 3.6680379302034154e+01 3.5000000122318280e+00 0 0 0 +6934 1 -1.2587782423248756e+01 3.6680379317249717e+01 3.3672979854034075e-08 0 0 0 +6983 1 -6.9829706571923680e+00 3.6708536178605492e+01 4.9690157893838073e-08 0 0 0 +6984 1 -8.6590366776228507e+00 3.6144892895052315e+01 1.7500000026749183e+00 0 0 0 +7628 1 -6.9829706539032728e+00 3.6708536206007452e+01 3.4999999187542699e+00 0 0 0 +6989 1 -6.4095225650889862e+00 3.5045239510743535e+01 1.7499999826835768e+00 0 0 0 +7020 1 -5.3078134646292199e+00 3.7277350461614326e+01 1.7499999767217198e+00 0 0 0 +7025 1 -3.1035846860074061e+00 3.6220789028176412e+01 1.7499999749059836e+00 0 0 0 +7043 1 -1.2264314152413212e+00 3.6773172744902574e+01 1.7499999991647528e+01 0 0 -1 +7044 1 -1.0571060469707458e+00 3.5138527366177343e+01 1.7500000424438058e+00 0 0 0 +7688 1 -1.2264314249908350e+00 3.6773172751848755e+01 3.5000000146297450e+00 0 0 0 +6504 1 -4.3452487892758754e+01 3.9299377643889912e+01 1.7500000211615192e+00 0 0 0 +7147 1 -4.4013659853855707e+01 4.0956880970373476e+01 3.4999999989084283e+00 0 0 0 +6509 1 -4.1207799912298292e+01 3.8203350640080934e+01 1.7500000237317077e+00 0 0 0 +6556 1 -4.0085455764873679e+01 4.0422330239629957e+01 1.7500000177025758e+00 0 0 0 +7203 1 -3.9524283863499463e+01 3.8764826958128587e+01 3.5000000292202467e+00 0 0 0 +7148 1 -4.1768971822565440e+01 3.9860853865905256e+01 3.5000000042894892e+00 0 0 0 +6561 1 -3.7840767807024164e+01 3.9326303282494706e+01 1.7500000176848882e+00 0 0 0 +6612 1 -3.5596079879577161e+01 3.8230276391160082e+01 1.7500000204128849e+00 0 0 0 +7200 1 -3.8401939686397291e+01 4.0983806512280758e+01 3.5000000384570833e+00 0 0 0 +7255 1 -3.6157251719042911e+01 3.9887779568148176e+01 3.5000000219544010e+00 0 0 0 +6613 1 -3.4473735657858640e+01 4.0449255962455666e+01 1.7500000119670791e+00 0 0 0 +6663 1 -3.0545531558289039e+01 3.9914705804301128e+01 2.6307889366394816e-08 0 0 0 +6664 1 -3.2229047667647549e+01 3.9353229181181547e+01 1.7500000132262246e+00 0 0 0 +6669 1 -2.9984359554204907e+01 3.8257202641646082e+01 1.7500000200646630e+00 0 0 0 +7308 1 -3.0545531566024419e+01 3.9914705797018705e+01 3.5000000026824214e+00 0 0 0 +6716 1 -2.8862015493761223e+01 4.0476182481369733e+01 1.7500000336431403e+00 0 0 0 +6721 1 -2.6617327456272918e+01 3.9380155990409740e+01 1.7500000429803810e+00 0 0 0 +6770 1 -2.4933811289333534e+01 3.9941632602168838e+01 3.8437056163739191e-08 0 0 0 +6772 1 -2.4372639542837348e+01 3.8284129484639699e+01 1.7500000216864373e+00 0 0 0 +6773 1 -2.3250294947154572e+01 4.0503109081951656e+01 1.7500000150074586e+00 0 0 0 +7415 1 -2.4933811276489859e+01 3.9941632578670827e+01 3.5000000098522071e+00 0 0 0 +7416 1 -2.2689123396331702e+01 3.8845606331262800e+01 3.5000000165572636e+00 0 0 0 +6771 1 -2.2689123423844300e+01 3.8845606356085668e+01 1.9559035789581202e-09 0 0 0 +6824 1 -2.1005605957861196e+01 3.9407082575508227e+01 1.7500000048371684e+00 0 0 0 +7467 1 -2.1566778890250866e+01 4.1064585525351170e+01 3.5000000237491888e+00 0 0 0 +6822 1 -2.1566778924727963e+01 4.1064585534894867e+01 5.3099566978175571e-10 0 0 0 +6829 1 -1.8760915066467145e+01 3.8311056117678760e+01 1.7500000035959207e+00 0 0 0 +6876 1 -1.7638582969844911e+01 4.0530036866294367e+01 1.7499999813984515e+00 0 0 0 +7523 1 -1.7077390892906195e+01 3.8872526083448676e+01 3.5000000297663343e+00 0 0 0 +6878 1 -1.7077390869057336e+01 3.8872526107670637e+01 1.7499999982047765e+01 0 0 -1 +6881 1 -1.5393907582057800e+01 3.9434006501268350e+01 1.7500000038986612e+00 0 0 0 +6932 1 -1.3149236985747644e+01 3.8337948999412461e+01 1.7500000179573896e+00 0 0 0 +7520 1 -1.5955086720573624e+01 4.1091528119491031e+01 3.5000000205261963e+00 0 0 0 +6875 1 -1.5955086690526587e+01 4.1091528132494268e+01 1.7499999975080097e+01 0 0 -1 +6933 1 -1.2026826541381626e+01 4.0557054563482517e+01 1.7500000195751682e+00 0 0 0 +6978 1 -1.0342363679680421e+01 4.1118104868618254e+01 8.4888732702358549e-08 0 0 0 +6980 1 -9.7824039736060993e+00 3.9461419261735720e+01 1.7500000164043790e+00 0 0 0 +7576 1 -1.1466172305427525e+01 3.8899645295034567e+01 3.4999999823114312e+00 0 0 0 +7623 1 -1.0342363695887498e+01 4.1118104884155450e+01 3.4999999707078198e+00 0 0 0 +6931 1 -1.1466172292346524e+01 3.8899645289722585e+01 5.9531621024612906e-08 0 0 0 +6985 1 -7.5396993265022605e+00 3.8367261998852612e+01 1.7499999975628704e+00 0 0 0 +7015 1 -4.7485637696933090e+00 4.1146722933797122e+01 1.2511340991931685e-09 0 0 0 +7016 1 -6.4095227827047365e+00 4.0579225148330750e+01 1.7500000101655342e+00 0 0 0 +7018 1 -5.8404163744874742e+00 3.8924555980436914e+01 3.4036118101506297e-08 0 0 0 +7021 1 -4.1395807977016466e+00 3.9470568505460818e+01 1.7499999859790512e+00 0 0 0 +7660 1 -4.7485637704977828e+00 4.1146722916426341e+01 3.5000000128180444e+00 0 0 0 +7663 1 -5.8404163656528585e+00 3.8924555982597788e+01 3.4999999503665928e+00 0 0 0 +7041 1 -1.7224969723407437e+00 3.8372585794898129e+01 1.7499999764242364e+00 0 0 0 +7042 1 -1.0571061475895824e+00 4.0672513424440822e+01 1.7499999751328159e+00 0 0 0 +7014 1 -6.9829708542365996e+00 4.2242521663813370e+01 5.4677926186741388e-08 0 0 0 +9594 1 -6.9829709101255606e+00 4.2242521588656182e+01 1.4000000061443910e+01 0 0 0 +6501 1 -4.4574831850208987e+01 4.2614384247895487e+01 1.7500000190831602e+00 0 0 0 +6505 1 -4.2330143798123821e+01 4.1518357202038437e+01 1.7500000281781183e+00 0 0 0 +7145 1 -4.2891315756725668e+01 4.3175860449730543e+01 3.5000000202960071e+00 0 0 0 +6553 1 -4.1207799710885347e+01 4.3737336757442399e+01 1.7500000429583760e+00 0 0 0 +6557 1 -3.8963111654924440e+01 4.2641309698852517e+01 1.7500000195296161e+00 0 0 0 +7199 1 -4.0646627739845734e+01 4.2079833544071903e+01 3.5000000312243094e+00 0 0 0 +6608 1 -3.6718423605931292e+01 4.1545282827939921e+01 1.7500000187851927e+00 0 0 0 +6609 1 -3.5596079729435260e+01 4.3764262436987167e+01 1.7500000007126251e+00 0 0 0 +7251 1 -3.7279595645347207e+01 4.3202786089873968e+01 3.5000000229042714e+00 0 0 0 +6661 1 -3.3351391636202855e+01 4.2668235707958786e+01 1.7500000048830426e+00 0 0 0 +7252 1 -3.5034907583479068e+01 4.2106759111509163e+01 3.5000000048007913e+00 0 0 0 +6665 1 -3.1106703494702366e+01 4.1572208989770701e+01 1.7500000199137309e+00 0 0 0 +6713 1 -2.9984359410814218e+01 4.3791188807561213e+01 1.7500000219744536e+00 0 0 0 +6714 1 -2.9423187496713968e+01 4.2133685650154710e+01 6.0056027449593187e-08 0 0 0 +7359 1 -2.9423187508759042e+01 4.2133685637149689e+01 3.4999999925787835e+00 0 0 0 +6717 1 -2.7739671322662620e+01 4.2695162288166806e+01 1.7500000495595360e+00 0 0 0 +6768 1 -2.5494983295001997e+01 4.1599135703139169e+01 1.7500000306502574e+00 0 0 0 +6769 1 -2.4372639496683547e+01 4.3818115565454328e+01 1.7500000474270558e+00 0 0 0 +6821 1 -2.2127952027128114e+01 4.2722089162264275e+01 1.7500000123827968e+00 0 0 0 +6825 1 -1.9883265671209955e+01 4.1626063081363263e+01 1.7500000004304310e+00 0 0 0 +7465 1 -2.0444436351733341e+01 4.3283566605658031e+01 3.5000000112751728e+00 0 0 0 +6820 1 -2.0444436382874756e+01 4.3283566633771336e+01 1.7499999986582797e+01 0 0 -1 +6873 1 -1.8760915131451330e+01 4.3845041880413653e+01 1.7499999841861029e+00 0 0 0 +6877 1 -1.6516219060519230e+01 4.2749017088963249e+01 1.7499999778046411e+00 0 0 0 +6928 1 -1.4271514285072092e+01 4.1653003580649141e+01 1.7499999869676750e+00 0 0 0 +6929 1 -1.3149237097238609e+01 4.3871934570408065e+01 1.7499999977413621e+00 0 0 0 +7571 1 -1.4832658017352164e+01 4.3310464539348878e+01 3.4999999924028922e+00 0 0 0 +6926 1 -1.4832657971565014e+01 4.3310464564937647e+01 1.7499999984990072e+01 0 0 -1 +6977 1 -1.0904485520153722e+01 4.2775735364188499e+01 1.7500000199410581e+00 0 0 0 +6976 1 -9.2228639394434975e+00 4.3337977319452229e+01 8.3614917700834810e-08 0 0 0 +6981 1 -8.6590369313771962e+00 4.1678878412342527e+01 1.7500000369932078e+00 0 0 0 +7013 1 -7.5396994930293983e+00 4.3901247368875495e+01 1.7500000342924593e+00 0 0 0 +7621 1 -9.2228639814030995e+00 4.3337977326376794e+01 3.4999999851126891e+00 0 0 0 +7017 1 -5.3078136291332898e+00 4.2811335930303734e+01 1.7500000307448174e+00 0 0 0 +7036 1 -3.5610863873444938e+00 4.3360625963030706e+01 1.7499999981288781e+01 0 0 -1 +7681 1 -3.5610863887229169e+00 4.3360625971604321e+01 3.5000000488866272e+00 0 0 0 +7038 1 -3.1035848024193493e+00 4.1754774705363985e+01 1.7500000022686901e+00 0 0 0 +7039 1 -1.7224970483813302e+00 4.3906571315201184e+01 1.7500000084223515e+00 0 0 0 +7047 1 -4.4013659595496478e+01 2.2189794323366656e+00 3.5000000035424121e+00 0 0 0 +7050 1 -4.3452487498821810e+01 5.6147615668154105e-01 5.2499999521471974e+00 0 0 0 +7064 1 -4.2330143785764186e+01 2.7804557044824838e+00 5.2500000081829707e+00 0 0 0 +7049 1 -4.5136003409894315e+01 -1.2860208158223163e-07 3.4999999997250382e+00 0 0 0 +7066 1 -4.1768971679654292e+01 1.1229524236804009e+00 3.5000000076314897e+00 0 0 0 +7068 1 -4.0085455995862716e+01 1.6844287853315505e+00 5.2500000235317907e+00 0 0 0 +7097 1 -3.6157252769531858e+01 1.1498781482290497e+00 3.4999999660911496e+00 0 0 0 +7098 1 -3.7840768405256910e+01 5.8840186740885292e-01 5.2500000439986056e+00 0 0 0 +7099 1 -3.6718424762570457e+01 2.8073814355266493e+00 5.2500000212339968e+00 0 0 0 +7742 1 -3.6157252696155552e+01 1.1498781647759706e+00 7.0000000565668836e+00 0 0 0 +7141 1 -3.4473737059595486e+01 1.7113545527532656e+00 5.2500000160364513e+00 0 0 0 +7195 1 -3.0545533399883137e+01 1.1768043365494016e+00 3.4999999943395514e+00 0 0 0 +7144 1 -3.2229049210223991e+01 6.1532779136282501e-01 5.2499999904154482e+00 0 0 0 +7193 1 -3.1106705544245436e+01 2.8343074614785619e+00 5.2499999692727126e+00 0 0 0 +7840 1 -3.0545533386720400e+01 1.1768043439993732e+00 6.9999999530314634e+00 0 0 0 +7197 1 -2.8862017538081091e+01 1.7382809591562862e+00 5.2499999927806735e+00 0 0 0 +7249 1 -2.6617329435899741e+01 6.4225451259189015e-01 5.2500000216589084e+00 0 0 0 +7248 1 -2.4933813415569663e+01 1.2037311453805524e+00 3.5000000162763323e+00 0 0 0 +7250 1 -2.5494985579296280e+01 2.8612342412335510e+00 5.2500000286114954e+00 0 0 0 +7301 1 -2.3250297178839151e+01 1.7652077473711281e+00 5.2500000138960612e+00 0 0 0 +7893 1 -2.4933813410289588e+01 1.2037312069649941e+00 7.0000000367814170e+00 0 0 0 +7303 1 -2.2689125481841774e+01 1.0770493119010172e-01 3.4999999966528677e+00 0 0 0 +7948 1 -2.2689125431162505e+01 1.0770498811740056e-01 7.0000000409680547e+00 0 0 0 +7300 1 -2.1566781162580622e+01 2.3266842249724666e+00 3.4999999658785086e+00 0 0 0 +7304 1 -2.1005608083994741e+01 6.6918117439620473e-01 5.2499999820216061e+00 0 0 0 +7353 1 -1.9883267878929271e+01 2.8881618203129142e+00 5.2499999316450818e+00 0 0 0 +7945 1 -2.1566781102826933e+01 2.3266842752002068e+00 7.0000000061516401e+00 0 0 0 +7357 1 -1.7638584978549446e+01 1.7921352881261094e+00 5.2499999194482729e+00 0 0 0 +7356 1 -1.7077392822990159e+01 1.3462431790068854e-01 3.4999999516383609e+00 0 0 0 +8001 1 -1.7077392843316776e+01 1.3462428834538706e-01 6.9999999377791280e+00 0 0 0 +7407 1 -1.5955088552901396e+01 2.3536263878486561e+00 3.4999999765416909e+00 0 0 0 +7409 1 -1.5393909374537703e+01 6.9610450387967360e-01 5.2499999412233409e+00 0 0 0 +7410 1 -1.4271515940317027e+01 2.9151016259061842e+00 5.2499999955554832e+00 0 0 0 +8052 1 -1.5955088575581863e+01 2.3536263661973140e+00 6.9999999475404451e+00 0 0 0 +7460 1 -1.0342364976880711e+01 2.3802019329428687e+00 3.5000000502310953e+00 0 0 0 +7461 1 -1.2026827933979318e+01 1.8191519715168771e+00 5.2500000183926163e+00 0 0 0 +7464 1 -9.7824052217908708e+00 7.2351586021408698e-01 5.2500000165306906e+00 0 0 0 +8105 1 -1.0342364928110037e+01 2.3802019123823115e+00 7.0000000274160428e+00 0 0 0 +7463 1 -1.1466173684493679e+01 1.6174235784960547e-01 3.5000000363246899e+00 0 0 0 +8108 1 -1.1466173693685375e+01 1.6174230344920679e-01 7.0000000317233306e+00 0 0 0 +7513 1 -8.6590380782283933e+00 2.9409750221946238e+00 5.2500000001612115e+00 0 0 0 +7567 1 -4.7485647275287546e+00 2.4088181689614196e+00 3.4999999315873422e+00 0 0 0 +7517 1 -6.4095238517993254e+00 1.8413208447842990e+00 5.2499999492099922e+00 0 0 0 +7569 1 -4.1395816947021187e+00 7.3266345805282296e-01 5.2499999600684060e+00 0 0 0 +8212 1 -4.7485646469516007e+00 2.4088182529549336e+00 6.9999999636343873e+00 0 0 0 +7516 1 -5.8404173622019329e+00 1.8665124471309771e-01 3.4999999768068863e+00 0 0 0 +8161 1 -5.8404172945027222e+00 1.8665129204568029e-01 6.9999999717911390e+00 0 0 0 +9557 1 -1.0904485484495707e+01 4.2775735316359388e+01 1.5750000062500646e+01 0 0 0 +7570 1 -3.1035854460999888e+00 3.0168696768238727e+00 5.2499999247539959e+00 0 0 0 +7620 1 -1.0571063005493375e+00 1.9346078904233184e+00 5.2499999927381742e+00 0 0 0 +9507 1 -1.2587782539335084e+01 4.2214364931255304e+01 1.4000000039483115e+01 0 0 0 +6927 1 -1.2587782598015327e+01 4.2214364936301983e+01 2.6713099288144804e-08 0 0 0 +7048 1 -4.4574831727466730e+01 3.8764825915591636e+00 5.2499999808815616e+00 0 0 0 +7060 1 -4.3452487920760404e+01 6.0954621138839284e+00 5.2499999867471496e+00 0 0 0 +7062 1 -4.2891315862224239e+01 4.4379588888521244e+00 3.5000000140972922e+00 0 0 0 +7063 1 -4.0646628106227212e+01 3.3419320854684504e+00 3.4999999976578891e+00 0 0 0 +7092 1 -3.9524284594347598e+01 5.5609115487803562e+00 3.4999999739730163e+00 0 0 0 +7065 1 -4.1207800194257878e+01 4.9994352345851611e+00 5.2500000035668837e+00 0 0 0 +7094 1 -3.8963112437072056e+01 3.9034082563373533e+00 5.2500000330549046e+00 0 0 0 +7737 1 -3.9524284607362020e+01 5.5609115357297974e+00 7.0000000737112567e+00 0 0 0 +7095 1 -3.7840768983261967e+01 6.1223878535501086e+00 5.2500000458537057e+00 0 0 0 +7137 1 -3.5596081422765643e+01 5.0263610132443199e+00 5.2500000031622518e+00 0 0 0 +7136 1 -3.3912565631810203e+01 5.5878373262222363e+00 3.4999999585672010e+00 0 0 0 +7139 1 -3.5034909166267198e+01 3.3688576988209142e+00 3.4999999619155995e+00 0 0 0 +7142 1 -3.3351393551640129e+01 3.9303342234653402e+00 5.2499999871968130e+00 0 0 0 +7781 1 -3.3912565555489664e+01 5.5878373511042785e+00 6.9999999912331088e+00 0 0 0 +7784 1 -3.5034909106424074e+01 3.3688576953121454e+00 7.0000000304359942e+00 0 0 0 +7192 1 -2.9423189740742846e+01 3.3957840366417358e+00 3.5000000002074123e+00 0 0 0 +7189 1 -3.2229049834666711e+01 6.1493137241869817e+00 5.2499999806127482e+00 0 0 0 +7194 1 -2.9984361794205096e+01 5.0532871464011579e+00 5.2499999678559863e+00 0 0 0 +7837 1 -2.9423189762507430e+01 3.3957840765443823e+00 6.9999999426371389e+00 0 0 0 +7243 1 -2.8300845919662954e+01 5.6147637937516670e+00 3.4999999843294041e+00 0 0 0 +7245 1 -2.7739673699899342e+01 3.9572606869929379e+00 5.2499999803666881e+00 0 0 0 +7246 1 -2.6617329989081703e+01 6.1762405409266483e+00 5.2500000006191936e+00 0 0 0 +7888 1 -2.8300845932820124e+01 5.6147638260977129e+00 6.9999999514779647e+00 0 0 0 +7297 1 -2.4372641986730994e+01 5.0802141722590655e+00 5.2500000232513893e+00 0 0 0 +7302 1 -2.2127954379300842e+01 3.9841879534947080e+00 5.2499999919767282e+00 0 0 0 +7349 1 -2.1005608443603009e+01 6.2031673839313806e+00 5.2499999662546273e+00 0 0 0 +7351 1 -2.0444438683435486e+01 4.5456654150630094e+00 3.4999999876022607e+00 0 0 0 +7996 1 -2.0444438623402402e+01 4.5456654831409153e+00 6.9999999629421970e+00 0 0 0 +7354 1 -1.8760917342792904e+01 5.1071406937413109e+00 5.2499999547479721e+00 0 0 0 +7405 1 -1.6516220992999479e+01 4.0111155831228906e+00 5.2499999391418601e+00 0 0 0 +7404 1 -1.4832659712436579e+01 4.5725629267043209e+00 3.5000000187917992e+00 0 0 0 +7406 1 -1.5393909438286938e+01 6.2300907581738478e+00 5.2499999846603167e+00 0 0 0 +7457 1 -1.3149238615247461e+01 5.1340327197258837e+00 5.2500000209468007e+00 0 0 0 +8049 1 -1.4832659750923536e+01 4.5725628556569182e+00 6.9999999805234019e+00 0 0 0 +7462 1 -1.0904486818646852e+01 4.0378328232918994e+00 5.2500000527606474e+00 0 0 0 +7509 1 -9.7824052018384631e+00 6.2575022213219791e+00 5.2500000416013970e+00 0 0 0 +7511 1 -9.2228651515523357e+00 4.6000744407061616e+00 3.5000000345155682e+00 0 0 0 +7514 1 -7.5397004506125711e+00 5.1633440232937380e+00 5.2499999856664141e+00 0 0 0 +8156 1 -9.2228650536165144e+00 4.6000744203112891e+00 7.0000000451281945e+00 0 0 0 +7564 1 -3.5610871896132599e+00 4.6227212435485763e+00 3.4999999217936542e+00 0 0 0 +7565 1 -5.3078145127867247e+00 4.0734316571557416e+00 5.2499999183823105e+00 0 0 0 +7566 1 -4.1395817475426702e+00 6.2666496402236946e+00 5.2499998990861316e+00 0 0 0 +8209 1 -3.5610871079754634e+00 4.6227212759102478e+00 6.9999999364473542e+00 0 0 0 +7617 1 -1.7224976765522639e+00 5.1686663003990354e+00 5.2499999191889710e+00 0 0 0 +7058 1 -4.4013659969638624e+01 7.7529653245722701e+00 3.4999999844824008e+00 0 0 0 +7056 1 -4.4574832034406469e+01 9.4104684282940347e+00 5.2499999860124511e+00 0 0 0 +7061 1 -4.2330144201430592e+01 8.3144416457022370e+00 5.2500000293151201e+00 0 0 0 +7703 1 -4.4013659958427894e+01 7.7529653120283255e+00 6.9999999853071397e+00 0 0 0 +7090 1 -4.0085456524353489e+01 7.2184147907056415e+00 5.2500000486949663e+00 0 0 0 +7091 1 -3.8963112920332563e+01 9.4373942500138046e+00 5.2500000423222337e+00 0 0 0 +7089 1 -3.8401940949674412e+01 7.7798910749469066e+00 3.5000000034084935e+00 0 0 0 +7133 1 -3.6718425263000775e+01 8.3413674137423097e+00 5.2500000603174133e+00 0 0 0 +7734 1 -3.8401940907187281e+01 7.7798910727827018e+00 7.0000000905365187e+00 0 0 0 +7187 1 -3.2790221960220833e+01 7.8068169811233101e+00 3.4999999742778853e+00 0 0 0 +7138 1 -3.4473737656314654e+01 7.2453405136992615e+00 5.2500000030549243e+00 0 0 0 +7185 1 -3.3351393958289485e+01 9.4643201911875661e+00 5.2499999715247370e+00 0 0 0 +7832 1 -3.2790221913102812e+01 7.8068169753173384e+00 6.9999999530900556e+00 0 0 0 +7190 1 -3.1106706028231500e+01 8.3682934253792567e+00 5.2499999576741354e+00 0 0 0 +7240 1 -2.7178502135642187e+01 7.8337435471386767e+00 3.4999999750191817e+00 0 0 0 +7241 1 -2.8862018073693779e+01 7.2722669593717129e+00 5.2499999725993334e+00 0 0 0 +7242 1 -2.7739674055426061e+01 9.4912466876778439e+00 5.2500000013722676e+00 0 0 0 +7885 1 -2.7178502165245270e+01 7.8337435688022312e+00 6.9999999868660296e+00 0 0 0 +7292 1 -2.3811469882221324e+01 8.9566969875742224e+00 3.5000000124429564e+00 0 0 0 +7293 1 -2.5494985985284444e+01 8.3952202828204108e+00 5.2499999992252437e+00 0 0 0 +7298 1 -2.3250297550024534e+01 7.2991938471711597e+00 5.2500000163478378e+00 0 0 0 +7937 1 -2.3811469841775658e+01 8.9566970618481765e+00 7.0000000352652556e+00 0 0 0 +7345 1 -2.2127954584987055e+01 9.5181740560265915e+00 5.2500000246725085e+00 0 0 0 +7350 1 -1.9883268054253197e+01 8.4221480128636017e+00 5.2499999916332376e+00 0 0 0 +7348 1 -1.9322091259190806e+01 6.7646425472074680e+00 3.4999999634879275e+00 0 0 0 +7399 1 -1.8199755221456286e+01 8.9836280164872555e+00 3.5000000089317944e+00 0 0 0 +7401 1 -1.7638585095943309e+01 7.3261215301274678e+00 5.2499999587237767e+00 0 0 0 +7402 1 -1.6516220923907866e+01 9.5451017680681911e+00 5.2499999821369210e+00 0 0 0 +7993 1 -1.9322091203510620e+01 6.7646425838015478e+00 6.9999999767679464e+00 0 0 0 +8044 1 -1.8199755192635521e+01 8.9836280410655966e+00 6.9999999705556633e+00 0 0 0 +7453 1 -1.4271515859727542e+01 8.4490878605303301e+00 5.2500000040117625e+00 0 0 0 +7455 1 -1.3710492574316905e+01 6.7916255192165771e+00 3.5000000844839718e+00 0 0 0 +8100 1 -1.3710492591026568e+01 6.7916254436488970e+00 7.0000000132765550e+00 0 0 0 +7452 1 -1.2587783926802603e+01 9.0104490574777092e+00 3.5000000683550923e+00 0 0 0 +7458 1 -1.2026827920043921e+01 7.3531383279466418e+00 5.2500000561459137e+00 0 0 0 +7505 1 -1.0904486569487302e+01 9.5718191865436619e+00 5.2500000459492924e+00 0 0 0 +8097 1 -1.2587783893120310e+01 9.0104489784067727e+00 7.0000000348809328e+00 0 0 0 +7508 1 -8.0950148695062225e+00 6.8174693870493543e+00 3.5000000138050349e+00 0 0 0 +7510 1 -8.6590378637887646e+00 8.4749614104970146e+00 5.2500000340122073e+00 0 0 0 +7559 1 -6.9829716852464410e+00 9.0386042149157255e+00 3.5000000015291159e+00 0 0 0 +8153 1 -8.0950147265566930e+00 6.8174693815799037e+00 7.0000000229512258e+00 0 0 0 +8204 1 -6.9829715417586860e+00 9.0386042206095478e+00 6.9999999868795895e+00 0 0 0 +7561 1 -6.4095236880009034e+00 7.3753071461507362e+00 5.2499999617024349e+00 0 0 0 +7562 1 -5.3078141848883780e+00 9.6074179571500160e+00 5.2499999435387403e+00 0 0 0 +7612 1 -1.2264316855761939e+00 9.1032393188778506e+00 3.4999999540744273e+00 0 0 0 +7613 1 -3.1035854139951944e+00 8.5508559559258028e+00 5.2499999154674111e+00 0 0 0 +7615 1 -2.5187345198108138e+00 6.8256765346544759e+00 3.4999998711095484e+00 0 0 0 +7618 1 -1.0571061091937273e+00 7.4685938841547337e+00 5.2499999180288119e+00 0 0 0 +8257 1 -1.2264316730012090e+00 9.1032394362543094e+00 6.9999999084434270e+00 0 0 0 +8260 1 -2.5187344482276384e+00 6.8256765989852024e+00 6.9999999426681878e+00 0 0 0 +7055 1 -4.2891316226887355e+01 9.9719447641402414e+00 3.5000000016155401e+00 0 0 0 +7057 1 -4.3452488220337024e+01 1.1629447954586812e+01 5.2499999851652648e+00 0 0 0 +7700 1 -4.2891316252625309e+01 9.9719447267891610e+00 7.0000000285011126e+00 0 0 0 +9508 1 -1.4271514213803831e+01 4.1653003590341527e+01 1.5749999998834086e+01 0 0 0 +7086 1 -4.1207800521569375e+01 1.0533421142307779e+01 5.2500000391365331e+00 0 0 0 +7729 1 -4.1768972451357605e+01 1.2190924280281120e+01 7.0000000583298370e+00 0 0 0 +7128 1 -3.6157253636120046e+01 1.2217850118695319e+01 3.4999999989374095e+00 0 0 0 +7131 1 -3.7279597354145004e+01 9.9988706573591966e+00 3.4999999944036984e+00 0 0 0 +7129 1 -3.7840769329093455e+01 1.1656373853185418e+01 5.2500000641936024e+00 0 0 0 +7134 1 -3.5596081750481851e+01 1.0560346974144153e+01 5.2500000263822892e+00 0 0 0 +7773 1 -3.6157253544586212e+01 1.2217850130897961e+01 7.0000000483546208e+00 0 0 0 +7776 1 -3.7279597296182224e+01 9.9988706470826756e+00 7.0000000923665731e+00 0 0 0 +7184 1 -3.1667878017249148e+01 1.0025796578092944e+01 3.4999999895740688e+00 0 0 0 +7235 1 -3.0545534149044819e+01 1.2244776296665163e+01 3.4999999890102238e+00 0 0 0 +7186 1 -3.2229050072769915e+01 1.1683299730854419e+01 5.2499999729855809e+00 0 0 0 +7237 1 -2.9984362112024218e+01 1.0587273176653646e+01 5.2499999704288971e+00 0 0 0 +7829 1 -3.1667877979999105e+01 1.0025796590766271e+01 6.9999999206079409e+00 0 0 0 +7880 1 -3.0545534141764506e+01 1.2244776304377613e+01 6.9999999478336035e+00 0 0 0 +7291 1 -2.6056158087466407e+01 1.0052723357981511e+01 3.5000000172032584e+00 0 0 0 +7289 1 -2.6617330165173840e+01 1.1710226522035697e+01 5.2500000263711728e+00 0 0 0 +7936 1 -2.6056158097323276e+01 1.0052723395728679e+01 7.0000000166248206e+00 0 0 0 +7288 1 -2.4933813982566896e+01 1.2271703200992695e+01 3.5000000162082068e+00 0 0 0 +7294 1 -2.4372642218933979e+01 1.0614200193778650e+01 5.2500000510863440e+00 0 0 0 +7343 1 -2.2689126034155127e+01 1.1175677129410925e+01 3.5000000216071974e+00 0 0 0 +7988 1 -2.2689125962824434e+01 1.1175677163165050e+01 7.0000000498017263e+00 0 0 0 +7933 1 -2.4933813953501904e+01 1.2271703250984549e+01 7.0000000480067355e+00 0 0 0 +7346 1 -2.1005608377286400e+01 1.1737153410727219e+01 5.2500000135138141e+00 0 0 0 +7396 1 -1.7077392853300161e+01 1.1202596700992000e+01 3.4999999927399359e+00 0 0 0 +7397 1 -1.8760917294548022e+01 1.0641126843742141e+01 5.2499999677948823e+00 0 0 0 +8041 1 -1.7077392811058530e+01 1.1202596658004289e+01 6.9999999689442003e+00 0 0 0 +7449 1 -1.5393909178880408e+01 1.1764076912298847e+01 5.2499999731673643e+00 0 0 0 +7454 1 -1.3149238306382339e+01 1.0668018948067575e+01 5.2500000395314492e+00 0 0 0 +7503 1 -1.1466173366088427e+01 1.1229715027611888e+01 3.5000000538521561e+00 0 0 0 +7506 1 -9.7824047605234945e+00 1.1791488617656196e+01 5.2500000095160750e+00 0 0 0 +8148 1 -1.1466173316175821e+01 1.1229714954256590e+01 7.0000000345333708e+00 0 0 0 +7557 1 -7.5397001151805423e+00 1.0697330480630795e+01 5.2499999635316454e+00 0 0 0 +7556 1 -5.8404170411235112e+00 1.1254623909507055e+01 3.4999999501343195e+00 0 0 0 +7609 1 -4.1395814038526231e+00 1.1800636040580176e+01 5.2499999320449131e+00 0 0 0 +8201 1 -5.8404169319521850e+00 1.1254623991733185e+01 6.9999999510981041e+00 0 0 0 +7614 1 -1.7224974769708594e+00 1.0702652608519950e+01 5.2499999381577709e+00 0 0 0 +9509 1 -1.3149237034403383e+01 4.3871934552505792e+01 1.5750000019747938e+01 0 0 0 +13510 1 -3.0949336086299518e-14 1.1486958611403837e+01 3.5000000036803018e+00 0 0 0 +7053 1 -4.4574832185868480e+01 1.4944454180215580e+01 5.2500000101356044e+00 0 0 0 +7082 1 -4.2330144429982518e+01 1.3848427494423909e+01 5.2500000340496760e+00 0 0 0 +7725 1 -4.2891316368021627e+01 1.5505930542720924e+01 7.0000000169290644e+00 0 0 0 +7697 1 -4.4013660206795535e+01 1.3286951113329868e+01 7.0000000086730330e+00 0 0 0 +7087 1 -4.0085456785720254e+01 1.2752400715840277e+01 5.2500000644886429e+00 0 0 0 +7125 1 -3.8963112993403762e+01 1.4971380174387713e+01 5.2500000565299079e+00 0 0 0 +7726 1 -4.0646628693794668e+01 1.4409903924611012e+01 7.0000000879115429e+00 0 0 0 +7130 1 -3.6718425409740810e+01 1.3875353387371721e+01 5.2500000200222914e+00 0 0 0 +7179 1 -3.5034909704307800e+01 1.4436829620151293e+01 3.4999999904913794e+00 0 0 0 +7181 1 -3.4473737813373916e+01 1.2779326496736799e+01 5.2500000055856297e+00 0 0 0 +7182 1 -3.3351393932238636e+01 1.4998306159223038e+01 5.2499999964023409e+00 0 0 0 +7824 1 -3.5034909613824574e+01 1.4436829659342719e+01 7.0000000169939218e+00 0 0 0 +7232 1 -2.9423190119406197e+01 1.4463755993637657e+01 3.5000000045196407e+00 0 0 0 +7233 1 -3.1106706031472704e+01 1.3902279407583165e+01 5.2499999681279439e+00 0 0 0 +7877 1 -2.9423190117809874e+01 1.4463756017905002e+01 6.9999999737952816e+00 0 0 0 +7238 1 -2.8862018156821566e+01 1.2806252914534758e+01 5.2500000010745227e+00 0 0 0 +7285 1 -2.7739673932706143e+01 1.5025232627547258e+01 5.2500000076701445e+00 0 0 0 +7290 1 -2.5494985934037203e+01 1.3929206231581404e+01 5.2500000435533369e+00 0 0 0 +7341 1 -2.3250297528273812e+01 1.2833179834698662e+01 5.2500000327639578e+00 0 0 0 +7340 1 -2.1566781297823503e+01 1.3394656360358193e+01 3.5000000056525851e+00 0 0 0 +7342 1 -2.2127954318641301e+01 1.5052159945269485e+01 5.2500000127379831e+00 0 0 0 +7391 1 -2.0444438420760271e+01 1.5613637436414230e+01 3.5000000019994664e+00 0 0 0 +7393 1 -1.9883267770825448e+01 1.3956133957231659e+01 5.2499999700817019e+00 0 0 0 +7985 1 -2.1566781221911654e+01 1.3394656386001772e+01 7.0000000204325863e+00 0 0 0 +8036 1 -2.0444438350031529e+01 1.5613637477115752e+01 6.9999999737250924e+00 0 0 0 +7398 1 -1.7638584825834105e+01 1.2860107568314781e+01 5.2499999687955130e+00 0 0 0 +7445 1 -1.6516220495472851e+01 1.5079087799526887e+01 5.2499999725441429e+00 0 0 0 +7444 1 -1.4832659086645961e+01 1.5640535201140553e+01 3.4999999938877311e+00 0 0 0 +7447 1 -1.5955088228390299e+01 1.3421598695127368e+01 3.4999999874931338e+00 0 0 0 +7450 1 -1.4271515432562124e+01 1.3983074020849431e+01 5.2500000057908132e+00 0 0 0 +8089 1 -1.4832659076000194e+01 1.5640535171571873e+01 6.9999999876382732e+00 0 0 0 +8092 1 -1.5955088199381684e+01 1.3421598668354571e+01 6.9999999845488743e+00 0 0 0 +7500 1 -1.0342364378748213e+01 1.3448174685140236e+01 3.5000000361528789e+00 0 0 0 +7501 1 -1.2026827441005508e+01 1.2887124597934738e+01 5.2500000177934618e+00 0 0 0 +7502 1 -1.0904486070193618e+01 1.5105805527662399e+01 5.2500000293255846e+00 0 0 0 +8145 1 -1.0342364307872423e+01 1.3448174657899216e+01 6.9999999860680440e+00 0 0 0 +7551 1 -9.2228643419697462e+00 1.5668047321167689e+01 3.5000000093286636e+00 0 0 0 +7553 1 -8.6590374060763189e+00 1.4008947891990225e+01 5.2499999794074705e+00 0 0 0 +8196 1 -9.2228642410980779e+00 1.5668047289267083e+01 6.9999999829336153e+00 0 0 0 +7558 1 -6.4095233194345669e+00 1.2909293659424236e+01 5.2499999371587656e+00 0 0 0 +7604 1 -3.5610866577737710e+00 1.5690694166751490e+01 3.4999998965597885e+00 0 0 0 +7605 1 -5.3078138813532769e+00 1.5141404595661182e+01 5.2499998854848879e+00 0 0 0 +7607 1 -4.7485642538789357e+00 1.3476790958260175e+01 3.4999999253486695e+00 0 0 0 +8249 1 -3.5610865263927818e+00 1.5690694233067202e+01 6.9999998759033621e+00 0 0 0 +8252 1 -4.7485641508490488e+00 1.3476791059888010e+01 6.9999999269679236e+00 0 0 0 +7610 1 -3.1035850898646884e+00 1.4084842455894778e+01 5.2499998785581043e+00 0 0 0 +7656 1 -1.0571062236885669e+00 1.3002580323461453e+01 5.2499999171884939e+00 0 0 0 +7078 1 -4.3452488265261231e+01 1.7163433731801870e+01 5.2500000212785292e+00 0 0 0 +9453 1 -1.8760915138902408e+01 4.3845041942876691e+01 1.5749999980328921e+01 0 0 0 +7721 1 -4.4013660155114437e+01 1.8820936890765200e+01 7.0000000330850156e+00 0 0 0 +7083 1 -4.1207800642911501e+01 1.6067407028614184e+01 5.2500000341920625e+00 0 0 0 +7121 1 -4.0085456745536113e+01 1.8286386596066063e+01 5.2500000562309044e+00 0 0 0 +7722 1 -4.1768972458956085e+01 1.7724910157791751e+01 7.0000000638480682e+00 0 0 0 +7768 1 -3.9524284944873841e+01 1.6628883450306070e+01 7.0000000926387695e+00 0 0 0 +7120 1 -3.8401941041279443e+01 1.8847862908311985e+01 3.5000000157232622e+00 0 0 0 +7126 1 -3.7840769234579867e+01 1.7190359741557387e+01 5.2500000529967537e+00 0 0 0 +7177 1 -3.5596081707985491e+01 1.6094332929566100e+01 5.2500000097068353e+00 0 0 0 +7765 1 -3.8401940965631916e+01 1.8847862953014417e+01 7.0000000756520961e+00 0 0 0 +7176 1 -3.3912565793347696e+01 1.6655809234983419e+01 3.4999999921123983e+00 0 0 0 +7227 1 -3.2790221759221602e+01 1.8874788825049471e+01 3.4999999850088312e+00 0 0 0 +7178 1 -3.4473737589066189e+01 1.8313312399348398e+01 5.2499999834881956e+00 0 0 0 +7872 1 -3.2790221677391678e+01 1.8874788849494891e+01 6.9999999756787723e+00 0 0 0 +7821 1 -3.3912565708763275e+01 1.6655809252703239e+01 6.9999999941021818e+00 0 0 0 +7229 1 -3.2229049822715631e+01 1.7217285609205756e+01 5.2499999895425482e+00 0 0 0 +7234 1 -2.9984361911781157e+01 1.6121259066766587e+01 5.2499999818047955e+00 0 0 0 +7280 1 -2.7178501762232269e+01 1.8901715411900302e+01 3.4999999785240212e+00 0 0 0 +7283 1 -2.8300845926605010e+01 1.6682735737648276e+01 3.4999999890882845e+00 0 0 0 +7281 1 -2.8862017815294990e+01 1.8340238835842126e+01 5.2499999822047165e+00 0 0 0 +7286 1 -2.6617329832976473e+01 1.7244212438856628e+01 5.2500000111137934e+00 0 0 0 +7925 1 -2.7178501719747537e+01 1.8901715405584547e+01 7.0000000078020834e+00 0 0 0 +7928 1 -2.8300845893710186e+01 1.6682735729774567e+01 6.9999999994659712e+00 0 0 0 +7337 1 -2.4372641924927180e+01 1.6148186085436375e+01 5.2500000222640839e+00 0 0 0 +7338 1 -2.3250297072382772e+01 1.8367165677974924e+01 5.2500000070654904e+00 0 0 0 +7389 1 -2.1005607989424579e+01 1.7271139281280156e+01 5.2499999751947968e+00 0 0 0 +7388 1 -1.9322090609012402e+01 1.7832614469760667e+01 3.4999999679693721e+00 0 0 0 +7394 1 -1.8760916845157752e+01 1.6175112733400770e+01 5.2499999775897885e+00 0 0 0 +7441 1 -1.7638584287943385e+01 1.8394093489629405e+01 5.2499999900397416e+00 0 0 0 +8033 1 -1.9322090558345803e+01 1.7832614499752658e+01 6.9999999878381516e+00 0 0 0 +7446 1 -1.5393908670541862e+01 1.7298062950171715e+01 5.2500000079640072e+00 0 0 0 +7495 1 -1.3710491712680591e+01 1.7859597832915217e+01 3.5000000442466028e+00 0 0 0 +7497 1 -1.3149237858327933e+01 1.6202005164404515e+01 5.2500000097785344e+00 0 0 0 +8140 1 -1.3710491695704411e+01 1.7859597797186783e+01 7.0000000001649259e+00 0 0 0 +7498 1 -1.2026826966116081e+01 1.8421110861179777e+01 5.2500000356207561e+00 0 0 0 +7549 1 -9.7824042668947406e+00 1.7325475059459528e+01 5.2500000124172344e+00 0 0 0 +7548 1 -8.0950139389968996e+00 1.7885442427800260e+01 3.4999999870547089e+00 0 0 0 +7554 1 -7.5396996456889109e+00 1.6231317030830041e+01 5.2499999532266362e+00 0 0 0 +8193 1 -8.0950138118493733e+00 1.7885442388252802e+01 6.9999999534706472e+00 0 0 0 +7601 1 -6.4095228510229711e+00 1.8443280311281068e+01 5.2499999420459877e+00 0 0 0 +7606 1 -4.1395810869797645e+00 1.7334622717288028e+01 5.2499998774655428e+00 0 0 0 +7651 1 -2.5187340904741458e+00 1.7893649593741820e+01 3.4999999314023458e+00 0 0 0 +7653 1 -1.7224971941202978e+00 1.6236639186803039e+01 5.2499998310744722e+00 0 0 0 +7654 1 -1.0571061930818695e+00 1.8536567011255261e+01 5.2499998073630909e+00 0 0 0 +8296 1 -2.5187339778389455e+00 1.7893649655669595e+01 6.9999997679280650e+00 0 0 0 +7074 1 -4.4574832152224694e+01 2.0478439957167378e+01 5.2499999950402767e+00 0 0 0 +7079 1 -4.2330144387511055e+01 1.9382413303201030e+01 5.2500000216524354e+00 0 0 0 +7718 1 -4.2891316323513117e+01 2.1039916363862641e+01 7.0000000327779324e+00 0 0 0 +7117 1 -4.1207800522509380e+01 2.1601392857422510e+01 5.2500000108576712e+00 0 0 0 +7122 1 -3.8963112846320286e+01 2.0505366065928662e+01 5.2500000236382069e+00 0 0 0 +7764 1 -4.0646628622222408e+01 1.9943889805061989e+01 7.0000000509534699e+00 0 0 0 +7171 1 -3.7279597118766908e+01 2.1066842463959851e+01 3.5000000185240534e+00 0 0 0 +7173 1 -3.6718425183936816e+01 1.9409339276475183e+01 5.2500000479216471e+00 0 0 0 +7174 1 -3.5596081328877716e+01 2.1628318779296116e+01 5.2500000288532869e+00 0 0 0 +7816 1 -3.7279597043221663e+01 2.1066842503783569e+01 7.0000000483783422e+00 0 0 0 +7225 1 -3.3351393536272610e+01 2.0532291983061512e+01 5.2499999759917975e+00 0 0 0 +7224 1 -3.1667877454162898e+01 2.1093768366534462e+01 3.4999999991810435e+00 0 0 0 +7230 1 -3.1106705646004027e+01 1.9436265262711977e+01 5.2499999829335433e+00 0 0 0 +7277 1 -2.9984361395614627e+01 2.1655244924361945e+01 5.2499999632064949e+00 0 0 0 +7869 1 -3.1667877377864727e+01 2.1093768349480047e+01 6.9999999526614509e+00 0 0 0 +7331 1 -2.6056157321786124e+01 2.1120695157195815e+01 3.4999999995457585e+00 0 0 0 +7282 1 -2.7739673436042576e+01 2.0559218491104279e+01 5.2499999886209112e+00 0 0 0 +7976 1 -2.6056157293155454e+01 2.1120695148205503e+01 6.9999999990629060e+00 0 0 0 +7332 1 -2.3811469182274813e+01 2.0024668786314102e+01 3.5000000290865856e+00 0 0 0 +7333 1 -2.5494985425783170e+01 1.9463192083494793e+01 5.2499999923379699e+00 0 0 0 +7334 1 -2.4372641311205527e+01 2.1682171916029073e+01 5.2500000262317341e+00 0 0 0 +7977 1 -2.3811469125112076e+01 2.0024668811892216e+01 6.9999999868229947e+00 0 0 0 +7385 1 -2.2127953740829152e+01 2.0586145791650733e+01 5.2500000208060387e+00 0 0 0 +7390 1 -1.9883267246345849e+01 1.9490119820363081e+01 5.2500000042855772e+00 0 0 0 +7437 1 -1.8760916219531516e+01 2.1709098609140128e+01 5.2499999960252541e+00 0 0 0 +7439 1 -1.8199754287424572e+01 2.0051599879309382e+01 3.5000000036252907e+00 0 0 0 +7442 1 -1.6516219898420633e+01 2.0613073719091506e+01 5.2500000117150467e+00 0 0 0 +8084 1 -1.8199754248672015e+01 2.0051599890098579e+01 6.9999999848176655e+00 0 0 0 +7493 1 -1.4271514897697873e+01 1.9517060082560352e+01 5.2500000156299240e+00 0 0 0 +7494 1 -1.3149237246755423e+01 2.1735991256643622e+01 5.2500000373792997e+00 0 0 0 +7492 1 -1.2587782919186111e+01 2.0078421460198186e+01 3.5000000299997556e+00 0 0 0 +7545 1 -1.0904485511037796e+01 2.0639791855399551e+01 5.2500000143336614e+00 0 0 0 +8137 1 -1.2587782836015380e+01 2.0078421419215722e+01 7.0000000073247559e+00 0 0 0 +7599 1 -6.9829707709515265e+00 2.0106577425094962e+01 3.4999999828686259e+00 0 0 0 +7550 1 -8.6590368471317181e+00 1.9542934405592927e+01 5.2500000123336159e+00 0 0 0 +7597 1 -7.5396991699126410e+00 2.1765303631359480e+01 5.2499999491838798e+00 0 0 0 +8244 1 -6.9829706416263271e+00 2.0106577380201394e+01 6.9999999320494428e+00 0 0 0 +7602 1 -5.3078134837457274e+00 2.0675391330618083e+01 5.2499999180831152e+00 0 0 0 +7648 1 -1.2264315123237339e+00 2.0171212641171692e+01 3.4999999331255567e+00 0 0 0 +7649 1 -3.1035848350339275e+00 1.9618829207475102e+01 5.2499998601048272e+00 0 0 0 +7650 1 -1.7224970755729181e+00 2.1770626047300425e+01 5.2499998756788209e+00 0 0 0 +8293 1 -1.2264315051169254e+00 2.0171212734102056e+01 6.9999997590775536e+00 0 0 0 +9457 1 -1.6516218990613563e+01 4.2749017112631940e+01 1.5749999974407721e+01 0 0 0 +7075 1 -4.3452488220194077e+01 2.2697419531793713e+01 5.2499999606655283e+00 0 0 0 +7113 1 -4.2330144292737842e+01 2.4916399134803495e+01 5.2499999993232720e+00 0 0 0 +7715 1 -4.4013660140426047e+01 2.4354922734319555e+01 7.0000000045715058e+00 0 0 0 +7118 1 -4.0085456553718494e+01 2.3820372450092858e+01 5.2500000356277132e+00 0 0 0 +7760 1 -4.1768972346717455e+01 2.3258895974901964e+01 7.0000000232830901e+00 0 0 0 +7761 1 -3.9524284756451102e+01 2.2162869310214841e+01 7.0000000565441916e+00 0 0 0 +7168 1 -3.6157253081835798e+01 2.3285821897371971e+01 3.5000000318130406e+00 0 0 0 +7169 1 -3.7840768957437454e+01 2.2724345627008798e+01 5.2500000481415450e+00 0 0 0 +7170 1 -3.6718424746065338e+01 2.4943325131788779e+01 5.2500000174551982e+00 0 0 0 +7813 1 -3.6157252980506406e+01 2.3285821915664410e+01 7.0000000180542159e+00 0 0 0 +7812 1 -3.8401940674153238e+01 2.4381848818328162e+01 7.0000000439035706e+00 0 0 0 +7221 1 -3.4473737064868828e+01 2.3847298228210057e+01 5.2500000062251804e+00 0 0 0 +7226 1 -3.2229049297424702e+01 2.2751271452899239e+01 5.2499999578842438e+00 0 0 0 +7273 1 -3.1106704974808288e+01 2.4970251064808505e+01 5.2499999590040050e+00 0 0 0 +7275 1 -3.0545533272472042e+01 2.3312748001295308e+01 3.4999999584755943e+00 0 0 0 +7920 1 -3.0545533205944480e+01 2.3312748010413127e+01 6.9999999609082275e+00 0 0 0 +7278 1 -2.8862017147014633e+01 2.3874224611917739e+01 5.2499999784976330e+00 0 0 0 +7329 1 -2.6617329202222102e+01 2.2778198243248507e+01 5.2500000087581657e+00 0 0 0 +7328 1 -2.4933812879470580e+01 2.3339674899095716e+01 3.5000000138580614e+00 0 0 0 +7383 1 -2.2689124996378528e+01 2.2243648851264979e+01 3.5000000339616668e+00 0 0 0 +8028 1 -2.2689124945439733e+01 2.2243648843437324e+01 7.0000000112104086e+00 0 0 0 +7330 1 -2.5494984721155877e+01 2.4997177890076347e+01 5.2500000395228854e+00 0 0 0 +7381 1 -2.3250296342724109e+01 2.3901151484217269e+01 5.2500000442987211e+00 0 0 0 +7973 1 -2.4933812867070404e+01 2.3339674913435690e+01 7.0000000150623540e+00 0 0 0 +7380 1 -2.1566780046385539e+01 2.4462628002364429e+01 3.5000000504546742e+00 0 0 0 +7386 1 -2.1005607267896568e+01 2.2805125096521554e+01 5.2500000432555405e+00 0 0 0 +7433 1 -1.9883266516901312e+01 2.5024105605422552e+01 5.2500000393401658e+00 0 0 0 +8025 1 -2.1566779983938876e+01 2.4462628008676141e+01 7.0000000292956850e+00 0 0 0 +7436 1 -1.7077391750630142e+01 2.2270568535274624e+01 3.5000000114999734e+00 0 0 0 +8081 1 -1.7077391666770527e+01 2.2270568517949002e+01 7.0000000069786097e+00 0 0 0 +7438 1 -1.7638583643180596e+01 2.3928079344294019e+01 5.2500000231608537e+00 0 0 0 +7487 1 -1.5955087119097991e+01 2.4489570582020352e+01 3.4999999916229050e+00 0 0 0 +7489 1 -1.5393908051151355e+01 2.2832048889645691e+01 5.2500000046014836e+00 0 0 0 +7490 1 -1.4271514357071242e+01 2.5051046088537284e+01 5.2500000094028172e+00 0 0 0 +8132 1 -1.5955087010084032e+01 2.4489570574867624e+01 7.0000000189727656e+00 0 0 0 +7543 1 -1.1466172319633179e+01 2.2297687555202650e+01 3.5000000220868208e+00 0 0 0 +7540 1 -1.0342363405538975e+01 2.4516147347364889e+01 3.5000000110333689e+00 0 0 0 +7541 1 -1.2026826404104950e+01 2.3955097012143952e+01 5.2499999981901242e+00 0 0 0 +7546 1 -9.7824037453331556e+00 2.2859461435510998e+01 5.2499999810818210e+00 0 0 0 +8188 1 -1.1466172221953697e+01 2.2297687523611657e+01 6.9999999932684691e+00 0 0 0 +8185 1 -1.0342363318864669e+01 2.4516147337959172e+01 6.9999999413908487e+00 0 0 0 +7593 1 -8.6590365255053392e+00 2.5076920843780798e+01 5.2499999424055632e+00 0 0 0 +7596 1 -5.8404162462788394e+00 2.2322597313086700e+01 3.4999999481947737e+00 0 0 0 +7643 1 -4.7485635639526445e+00 2.4544764508516622e+01 3.4999999355183422e+00 0 0 0 +7598 1 -6.4095225076432270e+00 2.3977266967652600e+01 5.2499999153347989e+00 0 0 0 +7645 1 -4.1395808375607128e+00 2.2868609524171305e+01 5.2499999294598325e+00 0 0 0 +8241 1 -5.8404161768329921e+00 2.2322597325687525e+01 6.9999999171209435e+00 0 0 0 +8288 1 -4.7485635134388726e+00 2.4544764518654532e+01 6.9999998951985818e+00 0 0 0 +9454 1 -1.8199753024150525e+01 4.2187543303743666e+01 1.3999999971373674e+01 0 0 0 +7646 1 -3.1035847641283758e+00 2.5152816186650266e+01 5.2499998689114271e+00 0 0 0 +7679 1 -1.0571058775147453e+00 2.4070553947549016e+01 5.2499998568404642e+00 0 0 0 +6874 1 -1.8199753028695618e+01 4.2187543222046600e+01 1.7499999992134203e+01 0 0 -1 +7071 1 -4.4574832106112588e+01 2.6012425815148951e+01 5.2499999768622372e+00 0 0 0 +7109 1 -4.3452488141610537e+01 2.8231405428997746e+01 5.2499999858180475e+00 0 0 0 +7756 1 -4.2891316217976964e+01 2.6573902195451147e+01 7.0000000072558368e+00 0 0 0 +7114 1 -4.1207800329433013e+01 2.7135378720277831e+01 5.2500000142276049e+00 0 0 0 +7165 1 -3.8963112512106200e+01 2.6039351925238826e+01 5.2500000440015118e+00 0 0 0 +7757 1 -4.0646628400394640e+01 2.5477875642119148e+01 7.0000000533302744e+00 0 0 0 +7808 1 -3.9524284444575606e+01 2.7696855179064460e+01 7.0000000592012634e+00 0 0 0 +7166 1 -3.7840768537837313e+01 2.8258331482899678e+01 5.2500000525052624e+00 0 0 0 +7217 1 -3.5596080799413713e+01 2.7162304639622363e+01 5.2500000210246158e+00 0 0 0 +7809 1 -3.7279596608148545e+01 2.6600828377517836e+01 7.0000000329454473e+00 0 0 0 +7216 1 -3.3912564745990970e+01 2.7723780915014217e+01 3.5000000223043348e+00 0 0 0 +7219 1 -3.5034908871671412e+01 2.5504801348595230e+01 3.5000000361394514e+00 0 0 0 +7222 1 -3.3351392929755399e+01 2.6066277830999493e+01 5.2499999845865304e+00 0 0 0 +7861 1 -3.3912564629031486e+01 2.7723780921470773e+01 6.9999999770415506e+00 0 0 0 +7864 1 -3.5034908758588458e+01 2.5504801372348130e+01 6.9999999928138026e+00 0 0 0 +7272 1 -2.9423188985664517e+01 2.5531727640450299e+01 3.4999999768117296e+00 0 0 0 +7269 1 -3.2229048625154199e+01 2.8285257251383186e+01 5.2499999868369489e+00 0 0 0 +7274 1 -2.9984360663510571e+01 2.7189230692230822e+01 5.2499999659760386e+00 0 0 0 +7917 1 -2.9423188953888946e+01 2.5531727636013166e+01 6.9999999572034008e+00 0 0 0 +7323 1 -2.8300844602861556e+01 2.7750707348133169e+01 3.4999999734707155e+00 0 0 0 +7325 1 -2.7739672709544283e+01 2.6093204252526547e+01 5.2499999828516550e+00 0 0 0 +7326 1 -2.6617328461631178e+01 2.8312184052458544e+01 5.2500000160505662e+00 0 0 0 +7968 1 -2.8300844591837283e+01 2.7750707322913208e+01 6.9999999729497970e+00 0 0 0 +7377 1 -2.4372640547708880e+01 2.7216157678156431e+01 5.2500000526427097e+00 0 0 0 +7382 1 -2.2127952971508932e+01 2.6120131575643416e+01 5.2500000698242024e+00 0 0 0 +7429 1 -2.1005606627751988e+01 2.8339110892504266e+01 5.2500000395085733e+00 0 0 0 +7431 1 -2.0444437103005548e+01 2.6681609073388948e+01 3.5000000393944894e+00 0 0 0 +8076 1 -2.0444437023527676e+01 2.6681609106661959e+01 7.0000000325609060e+00 0 0 0 +7434 1 -1.8760915567432505e+01 2.7243084435559716e+01 5.2500000422814157e+00 0 0 0 +7485 1 -1.6516219337784172e+01 2.6147059619074792e+01 5.2500000047909170e+00 0 0 0 +7484 1 -1.4832658084952802e+01 2.6708507138613868e+01 3.4999999877860377e+00 0 0 0 +7486 1 -1.5393907679184814e+01 2.8366034824675129e+01 5.2500000010344898e+00 0 0 0 +7537 1 -1.3149236939833399e+01 2.7269977291898638e+01 5.2499999697785409e+00 0 0 0 +8129 1 -1.4832657995006555e+01 2.6708507151569130e+01 6.9999999951286878e+00 0 0 0 +7542 1 -1.0904485175009819e+01 2.6173778034822842e+01 5.2499999733347416e+00 0 0 0 +7589 1 -9.7824035808081042e+00 2.8393447639278492e+01 5.2499999600819116e+00 0 0 0 +7591 1 -9.2228635366208422e+00 2.6736020090983427e+01 3.4999999809466709e+00 0 0 0 +7594 1 -7.5396990000914768e+00 2.7299290082407691e+01 5.2499999257701431e+00 0 0 0 +8236 1 -9.2228634556851805e+00 2.6736020071756080e+01 6.9999999376358595e+00 0 0 0 +7640 1 -3.5610861283284878e+00 2.6758667862768643e+01 3.4999999413921441e+00 0 0 0 +7641 1 -5.3078132268785874e+00 2.6209378016838382e+01 5.2499998784185573e+00 0 0 0 +7642 1 -4.1395806350879729e+00 2.8402596214950492e+01 5.2499998733203048e+00 0 0 0 +8285 1 -3.5610860961435336e+00 2.6758667786285816e+01 6.9999998633685925e+00 0 0 0 +7676 1 -1.7224968490376877e+00 2.7304612927237038e+01 5.2499998419947236e+00 0 0 0 +7105 1 -4.4574832103312900e+01 3.1546411857827483e+01 5.2499999895033778e+00 0 0 0 +7110 1 -4.2330144184332504e+01 3.0450385058472094e+01 5.2500000145358774e+00 0 0 0 +7752 1 -4.4013660057849712e+01 2.9888908672346233e+01 7.0000000255785348e+00 0 0 0 +7161 1 -4.0085456291096783e+01 2.9354358329476121e+01 5.2500000583992970e+00 0 0 0 +7162 1 -3.8963112212275831e+01 3.1573337810728148e+01 5.2500000326118039e+00 0 0 0 +7753 1 -4.1768972192981273e+01 2.8792881881725229e+01 7.0000000463343071e+00 0 0 0 +7804 1 -4.0646628220704358e+01 3.1011861545717910e+01 7.0000000352058684e+00 0 0 0 +7213 1 -3.6718424303268215e+01 3.0477311025810891e+01 5.2500000561204461e+00 0 0 0 +7805 1 -3.8401940301232266e+01 2.9915834686874412e+01 7.0000000409941876e+00 0 0 0 +7860 1 -3.6157252479372239e+01 2.8819807775039237e+01 7.0000000291917424e+00 0 0 0 +7218 1 -3.4473736493809596e+01 2.9381284087979175e+01 5.2500000101465965e+00 0 0 0 +7265 1 -3.3351392306336550e+01 3.1600263649645076e+01 5.2499999810686431e+00 0 0 0 +7267 1 -3.2790220529750925e+01 2.9942760498740753e+01 3.5000000118746941e+00 0 0 0 +7912 1 -3.2790220452397406e+01 2.9942760479794032e+01 6.9999999727934270e+00 0 0 0 +7270 1 -3.1106704321966031e+01 3.0504236905857002e+01 5.2499999728026205e+00 0 0 0 +7320 1 -2.7178500319912995e+01 2.9969687002937274e+01 3.4999999910053803e+00 0 0 0 +7321 1 -2.8862016451054746e+01 2.9408210432376439e+01 5.2499999612197659e+00 0 0 0 +7322 1 -2.7739672021919436e+01 3.1627190117575910e+01 5.2499999796257084e+00 0 0 0 +7965 1 -2.7178500330103727e+01 2.9969686982711721e+01 6.9999999809787505e+00 0 0 0 +7372 1 -2.3811467736045451e+01 3.1092640341222676e+01 3.5000000451271123e+00 0 0 0 +7373 1 -2.5494983991259048e+01 3.0531163661828852e+01 5.2499999974722797e+00 0 0 0 +7378 1 -2.3250295652568553e+01 2.9435137272082684e+01 5.2500000487367213e+00 0 0 0 +8017 1 -2.3811467735578095e+01 3.1092640395548354e+01 6.9999999890326405e+00 0 0 0 +7425 1 -2.2127952388573767e+01 3.1654117384731258e+01 5.2500000518805194e+00 0 0 0 +7430 1 -1.9883265988237049e+01 3.0558091458928342e+01 5.2500000492971575e+00 0 0 0 +7479 1 -1.8199753195493876e+01 3.1119571561087145e+01 3.4999999880324180e+00 0 0 0 +7428 1 -1.9322089352953970e+01 2.8900586097298294e+01 3.4999999887727342e+00 0 0 0 +7481 1 -1.7638583161441847e+01 2.9462065208217243e+01 5.2500000221373035e+00 0 0 0 +7482 1 -1.6516219003710500e+01 3.1681045479055602e+01 5.2499999998329372e+00 0 0 0 +8073 1 -1.9322089261784551e+01 2.8900586163476657e+01 7.0000000491728613e+00 0 0 0 +8124 1 -1.8199753151047048e+01 3.1119571606727334e+01 7.0000000378168981e+00 0 0 0 +7535 1 -1.3710490912198546e+01 2.8927569835208640e+01 3.5000000048542392e+00 0 0 0 +7533 1 -1.4271514147211557e+01 3.0585032002651303e+01 5.2499999821352299e+00 0 0 0 +8180 1 -1.3710490831224886e+01 2.8927569839234792e+01 6.9999999784567013e+00 0 0 0 +7532 1 -1.2587782355082611e+01 3.1146393494441302e+01 3.4999999916837350e+00 0 0 0 +7538 1 -1.2026826278841192e+01 2.9489083052210454e+01 5.2499999778640571e+00 0 0 0 +7585 1 -1.0904485103486310e+01 3.1707764027056207e+01 5.2499999503539465e+00 0 0 0 +8177 1 -1.2587782265576424e+01 3.1146393462295315e+01 6.9999999528378041e+00 0 0 0 +7588 1 -8.0950133565047970e+00 2.8953415290771197e+01 3.4999999625198734e+00 0 0 0 +7635 1 -6.9829704408938609e+00 3.1174550302482441e+01 3.4999999647104723e+00 0 0 0 +7590 1 -8.6590364147474723e+00 3.0610906999593279e+01 5.2499999520743934e+00 0 0 0 +8233 1 -8.0950132966724162e+00 2.8953415209559129e+01 6.9999999073805190e+00 0 0 0 +8280 1 -6.9829703789901467e+00 3.1174550205800386e+01 6.9999999051626931e+00 0 0 0 +7637 1 -6.4095224085326912e+00 2.9511253410391209e+01 5.2499999163207418e+00 0 0 0 +7638 1 -5.3078132821765625e+00 3.1743364450979929e+01 5.2499999301929225e+00 0 0 0 +7672 1 -1.2264314119480146e+00 3.1239186422633754e+01 3.5000000265676361e+00 0 0 0 +7675 1 -2.5187337306518609e+00 2.8961623324378451e+01 3.4999999707763352e+00 0 0 0 +7673 1 -3.1035846226192341e+00 3.0686802748813427e+01 5.2499999262883792e+00 0 0 0 +7677 1 -1.0571060898246663e+00 2.9604540810709601e+01 5.2499999016707966e+00 0 0 0 +8317 1 -1.2264314483507250e+00 3.1239186370352037e+01 6.9999998982305645e+00 0 0 0 +8320 1 -2.5187336758860650e+00 2.8961623258006171e+01 6.9999998319172532e+00 0 0 0 +7106 1 -4.3452488116980625e+01 3.3765391470588405e+01 5.2499999677642579e+00 0 0 0 +7749 1 -4.2891316164041292e+01 3.2107888208622342e+01 7.0000000087133243e+00 0 0 0 +7157 1 -4.1207800199522268e+01 3.2669364662197282e+01 5.2499999878804502e+00 0 0 0 +7800 1 -4.1768972087170212e+01 3.4326867840874520e+01 6.9999999765493968e+00 0 0 0 +7801 1 -3.9524284179803743e+01 3.3230841062289144e+01 7.0000000257119845e+00 0 0 0 +7209 1 -3.7840768162991324e+01 3.3792317367149593e+01 5.2500000324892744e+00 0 0 0 +7214 1 -3.5596080294415827e+01 3.2696290496837563e+01 5.2500000320312958e+00 0 0 0 +7853 1 -3.6157252024406681e+01 3.4353793656865179e+01 7.0000000111871401e+00 0 0 0 +7856 1 -3.7279596220047708e+01 3.2134814222159065e+01 7.0000000211715401e+00 0 0 0 +7264 1 -3.1667876124540658e+01 3.2161740016070262e+01 3.5000000038905914e+00 0 0 0 +7266 1 -3.2229048019803116e+01 3.3819243153508346e+01 5.2499999837659104e+00 0 0 0 +7315 1 -3.0545531927394542e+01 3.4380719724840041e+01 3.4999999767677115e+00 0 0 0 +7317 1 -2.9984360022075851e+01 3.2723216595820652e+01 5.2499999688003323e+00 0 0 0 +7909 1 -3.1667876054348110e+01 3.2161740016061913e+01 6.9999999630282170e+00 0 0 0 +7960 1 -3.0545531898451138e+01 3.4380719713469453e+01 6.9999999773247987e+00 0 0 0 +7369 1 -2.6617327830281223e+01 3.3846169920791148e+01 5.2499999846359771e+00 0 0 0 +7371 1 -2.6056155874793088e+01 3.2188666764906735e+01 3.5000000085949741e+00 0 0 0 +8016 1 -2.6056155901744763e+01 3.2188666770920676e+01 6.9999999793849623e+00 0 0 0 +7423 1 -2.2689123682872982e+01 3.3311620445856150e+01 3.5000000296930827e+00 0 0 0 +7368 1 -2.4933811549508885e+01 3.4407646543221105e+01 3.5000000022144007e+00 0 0 0 +7374 1 -2.4372639934179805e+01 3.2750143519092589e+01 5.2500000221040066e+00 0 0 0 +8068 1 -2.2689123675000324e+01 3.3311620447522003e+01 7.0000000284736030e+00 0 0 0 +8013 1 -2.4933811574541462e+01 3.4407646555762199e+01 6.9999999993121378e+00 0 0 0 +7426 1 -2.1005606113746300e+01 3.3873096720179028e+01 5.2500000433966161e+00 0 0 0 +7476 1 -1.7077390912482805e+01 3.3338540249966300e+01 3.4999999928379402e+00 0 0 0 +7477 1 -1.8760915165603922e+01 3.2777070285228532e+01 5.2500000101223829e+00 0 0 0 +8121 1 -1.7077390828904470e+01 3.3338540267548233e+01 7.0000000207383026e+00 0 0 0 +7529 1 -1.5393907458430565e+01 3.3900020657795963e+01 5.2499999910610020e+00 0 0 0 +7534 1 -1.3149236789452472e+01 3.2803963166522820e+01 5.2500000039381787e+00 0 0 0 +7583 1 -1.1466172045565159e+01 3.3365659566700273e+01 3.4999999898291665e+00 0 0 0 +7586 1 -9.7824036412731825e+00 3.3927433578420668e+01 5.2499999377565345e+00 0 0 0 +8228 1 -1.1466171946469137e+01 3.3365659528229152e+01 6.9999999380548603e+00 0 0 0 +7633 1 -7.5396990296496016e+00 3.2833276213283675e+01 5.2499999164577780e+00 0 0 0 +7632 1 -5.8404161553329690e+00 3.3390570183639447e+01 3.4999999385116798e+00 0 0 0 +7669 1 -4.1395807471436887e+00 3.3936582626301352e+01 5.2499999827292001e+00 0 0 0 +8277 1 -5.8404161782690833e+00 3.3390570136443905e+01 6.9999999204311232e+00 0 0 0 +9401 1 -2.2127952049951833e+01 4.2722089196409868e+01 1.5750000003702237e+01 0 0 0 +7674 1 -1.7224970044836936e+00 3.2838599636344703e+01 5.2500000110877760e+00 0 0 0 +13821 1 -2.5188680904743060e-14 3.3622905838677433e+01 3.5000001167341481e+00 0 0 0 +7102 1 -4.4574832052898586e+01 3.7080398029334660e+01 5.2499999641986523e+00 0 0 0 +7153 1 -4.2330144059977812e+01 3.5984371093985061e+01 5.2499999858175102e+00 0 0 0 +7746 1 -4.4013660057428865e+01 3.5422894806052859e+01 6.9999999780958158e+00 0 0 0 +7796 1 -4.2891315991473505e+01 3.7641874263234833e+01 6.9999999684463212e+00 0 0 0 +7158 1 -4.0085456060847783e+01 3.4888344245769503e+01 5.2499999999134754e+00 0 0 0 +7205 1 -3.8963111860365800e+01 3.7107323717927677e+01 5.2500000039117589e+00 0 0 0 +7797 1 -4.0646627984316282e+01 3.6545847504690933e+01 6.9999999891540812e+00 0 0 0 +7210 1 -3.6718423821238268e+01 3.6011296877901714e+01 5.2500000184284836e+00 0 0 0 +7849 1 -3.7279595817993766e+01 3.7668800128002736e+01 7.0000000231593198e+00 0 0 0 +7852 1 -3.8401939963604406e+01 3.5449820560937106e+01 7.0000000170911205e+00 0 0 0 +7259 1 -3.5034907800012270e+01 3.6572773098012163e+01 3.5000000371569118e+00 0 0 0 +7261 1 -3.4473735945308114e+01 3.4915269961502098e+01 5.2500000228800285e+00 0 0 0 +7262 1 -3.3351391828312160e+01 3.7134249612412368e+01 5.2500000062574834e+00 0 0 0 +7904 1 -3.5034907762318980e+01 3.6572773109967109e+01 7.0000000093522337e+00 0 0 0 +7312 1 -2.9423187739594741e+01 3.6599699461313804e+01 3.4999999852149468e+00 0 0 0 +7313 1 -3.1106703732535376e+01 3.6038222846759837e+01 5.2499999761150580e+00 0 0 0 +7957 1 -2.9423187719384984e+01 3.6599699458771362e+01 6.9999999585123698e+00 0 0 0 +7318 1 -2.8862015821606654e+01 3.4942196354105121e+01 5.2499999635678041e+00 0 0 0 +7365 1 -2.7739671487959800e+01 3.7161176099854266e+01 5.2499999627672143e+00 0 0 0 +7370 1 -2.5494983480408276e+01 3.6065149624220730e+01 5.2500000124019408e+00 0 0 0 +7421 1 -2.3250295112758060e+01 3.4969123114611904e+01 5.2500000174682144e+00 0 0 0 +7420 1 -2.1566778959262674e+01 3.5530599628315144e+01 3.5000000283310180e+00 0 0 0 +7471 1 -2.0444436307688303e+01 3.7749580735597085e+01 3.5000000149302224e+00 0 0 0 +7422 1 -2.2127952001748685e+01 3.7188103218095449e+01 5.2500000386770465e+00 0 0 0 +7473 1 -1.9883265634306827e+01 3.6092077241887523e+01 5.2500000277961210e+00 0 0 0 +8065 1 -2.1566778943834723e+01 3.5530599637560584e+01 7.0000000268899303e+00 0 0 0 +8116 1 -2.0444436268572282e+01 3.7749580757447809e+01 7.0000000579831667e+00 0 0 0 +7478 1 -1.7638582880783037e+01 3.4996051037337530e+01 5.2500000374643303e+00 0 0 0 +7525 1 -1.6516218906773364e+01 3.7215031338389679e+01 5.2500000314318935e+00 0 0 0 +7524 1 -1.4832657881941312e+01 3.7776478859032224e+01 3.5000000136435894e+00 0 0 0 +7527 1 -1.5955086579464499e+01 3.5557542322101625e+01 3.4999999912319351e+00 0 0 0 +7530 1 -1.4271514070063946e+01 3.6119017846406521e+01 5.2500000075444841e+00 0 0 0 +8169 1 -1.4832657803263443e+01 3.7776478868716438e+01 6.9999999984211740e+00 0 0 0 +8172 1 -1.5955086495837422e+01 3.5557542327896151e+01 7.0000000273408958e+00 0 0 0 +7580 1 -1.0342363427258050e+01 3.5584119288550134e+01 3.4999999927583763e+00 0 0 0 +7581 1 -1.2026826249689186e+01 3.5023068878638846e+01 5.2499999689711982e+00 0 0 0 +7582 1 -1.0904485315435215e+01 3.7241749795631804e+01 5.2499999450881987e+00 0 0 0 +8225 1 -1.0342363368564838e+01 3.5584119260410560e+01 6.9999998830256773e+00 0 0 0 +7627 1 -9.2228637830439872e+00 3.7803991889566099e+01 3.4999999640866015e+00 0 0 0 +7629 1 -8.6590366867824926e+00 3.6144892882900578e+01 5.2499999077462638e+00 0 0 0 +8272 1 -9.2228637555980448e+00 3.7803991872952516e+01 6.9999999044577859e+00 0 0 0 +7634 1 -6.4095225970404561e+00 3.5045239488006978e+01 5.2499999126853503e+00 0 0 0 +7664 1 -3.5610862636177192e+00 3.7826640463687909e+01 3.4999999630312071e+00 0 0 0 +7665 1 -5.3078134818698937e+00 3.7277350432785362e+01 5.2499999157170061e+00 0 0 0 +7667 1 -4.7485636159816824e+00 3.5612737267627665e+01 3.4999999496299603e+00 0 0 0 +8309 1 -3.5610863476109729e+00 3.7826640417348194e+01 6.9999999857169035e+00 0 0 0 +8312 1 -4.7485636784263843e+00 3.5612737254224321e+01 6.9999999606542076e+00 0 0 0 +7670 1 -3.1035847689295339e+00 3.6220789032913366e+01 5.2499999786975131e+00 0 0 0 +7689 1 -1.0571060636402179e+00 3.5138527401930077e+01 5.2500000569146055e+00 0 0 0 +7149 1 -4.3452487928204832e+01 3.9299377631869483e+01 5.2499999750649788e+00 0 0 0 +7792 1 -4.4013659841618910e+01 4.0956880999806437e+01 6.9999999956321028e+00 0 0 0 +7154 1 -4.1207799923681975e+01 3.8203350652068352e+01 5.2499999955770491e+00 0 0 0 +7201 1 -4.0085455745772798e+01 4.0422330227117321e+01 5.2500000398426554e+00 0 0 0 +7793 1 -4.1768971822013178e+01 3.9860853905457944e+01 7.0000000009612346e+00 0 0 0 +7848 1 -3.9524283896352095e+01 3.8764827001827641e+01 7.0000000089171452e+00 0 0 0 +7206 1 -3.7840767813557214e+01 3.9326303289492472e+01 5.2500000251823327e+00 0 0 0 +7257 1 -3.5596079863732854e+01 3.8230276420003058e+01 5.2500000235546738e+00 0 0 0 +7845 1 -3.8401939680237753e+01 4.0983806506004370e+01 7.0000000107420508e+00 0 0 0 +7900 1 -3.6157251679998375e+01 3.9887779575136207e+01 7.0000000387752008e+00 0 0 0 +7256 1 -3.3912563724421659e+01 3.8791752746797371e+01 3.5000000048074389e+00 0 0 0 +7258 1 -3.4473735619056853e+01 4.0449255955748278e+01 5.2500000324930474e+00 0 0 0 +7307 1 -3.2790219648877553e+01 4.1010732458524686e+01 3.5000000161887881e+00 0 0 0 +7901 1 -3.3912563661290228e+01 3.8791752756657779e+01 7.0000000056498477e+00 0 0 0 +7952 1 -3.2790219582690675e+01 4.1010732441526642e+01 6.9999999980846690e+00 0 0 0 +7309 1 -3.2229047613336263e+01 3.9353229164856920e+01 5.2500000041697614e+00 0 0 0 +7314 1 -2.9984359544702858e+01 3.8257202598525410e+01 5.2499999870417762e+00 0 0 0 +7360 1 -2.7178499470426996e+01 4.1037659060552599e+01 3.4999999862825368e+00 0 0 0 +7361 1 -2.8862015506590062e+01 4.0476182470236083e+01 5.2499999634158776e+00 0 0 0 +7363 1 -2.8300843513824596e+01 3.8818679293623326e+01 3.4999999957850330e+00 0 0 0 +7366 1 -2.6617327442299555e+01 3.9380155962145160e+01 5.2499999810797044e+00 0 0 0 +8005 1 -2.7178499456013494e+01 4.1037659030386045e+01 6.9999999662825756e+00 0 0 0 +8008 1 -2.8300843497658164e+01 3.8818679249107731e+01 6.9999999639828534e+00 0 0 0 +7417 1 -2.4372639531978372e+01 3.8284129438763294e+01 5.2500000039002623e+00 0 0 0 +7418 1 -2.3250294934680532e+01 4.0503109067223434e+01 5.2500000131423752e+00 0 0 0 +7469 1 -2.1005605973567636e+01 3.9407082580185637e+01 5.2500000246966190e+00 0 0 0 +7468 1 -1.9322088900188955e+01 3.9968557785619446e+01 3.4999999934272656e+00 0 0 0 +7474 1 -1.8760915000393741e+01 3.8311056109743703e+01 5.2500000508847684e+00 0 0 0 +7521 1 -1.7638582917905360e+01 4.0530036875364672e+01 5.2500000255749946e+00 0 0 0 +8113 1 -1.9322088851655330e+01 3.9968557814886488e+01 7.0000000600012200e+00 0 0 0 +7575 1 -1.3710490981216250e+01 3.9995541441897586e+01 3.5000000206917163e+00 0 0 0 +7526 1 -1.5393907557253105e+01 3.9434006504599282e+01 5.2500000164309801e+00 0 0 0 +7577 1 -1.3149236956835937e+01 3.8337948968389227e+01 5.2499999623433347e+00 0 0 0 +8220 1 -1.3710490916102943e+01 3.9995541478752003e+01 6.9999999736125051e+00 0 0 0 +7578 1 -1.2026826543409001e+01 4.0557054579185561e+01 5.2499999609282328e+00 0 0 0 +7625 1 -9.7824039552360702e+00 3.9461419236266735e+01 5.2499999318737229e+00 0 0 0 +7624 1 -8.0950137504843482e+00 4.0021386901311864e+01 3.4999999638395192e+00 0 0 0 +7630 1 -7.5396993433143011e+00 3.8367261978339258e+01 5.2499999101840169e+00 0 0 0 +8269 1 -8.0950137848242942e+00 4.0021386826981782e+01 6.9999998983865668e+00 0 0 0 +7661 1 -6.4095228148902965e+00 4.0579225122133224e+01 5.2499999385334783e+00 0 0 0 +7666 1 -4.1395808713879596e+00 3.9470568478153389e+01 5.2499999684415704e+00 0 0 0 +7685 1 -2.5187337713991598e+00 4.0029595782781932e+01 3.4999999401009596e+00 0 0 0 +7686 1 -1.7224969960346321e+00 3.8372585748990879e+01 5.2499999988126103e+00 0 0 0 +7687 1 -1.0571059352767529e+00 4.0672513364621189e+01 5.2500000504230906e+00 0 0 0 +8330 1 -2.5187338349588133e+00 4.0029595743935140e+01 7.0000000117440804e+00 0 0 0 +7146 1 -4.4574831844474247e+01 4.2614384268235803e+01 5.2500000015700721e+00 0 0 0 +7150 1 -4.2330143810514912e+01 4.1518357214388701e+01 5.2500000068402013e+00 0 0 0 +7790 1 -4.2891315766034026e+01 4.3175860477956405e+01 6.9999999843115557e+00 0 0 0 +7198 1 -4.1207799703195278e+01 4.3737336759661716e+01 5.2499999953941217e+00 0 0 0 +7202 1 -3.8963111628796703e+01 4.2641309705266323e+01 5.2500000318058779e+00 0 0 0 +7844 1 -4.0646627731865877e+01 4.2079833531442546e+01 7.0000000109556648e+00 0 0 0 +7253 1 -3.6718423591008296e+01 4.1545282874039721e+01 5.2500000390994632e+00 0 0 0 +7254 1 -3.5596079692355403e+01 4.3764262416740344e+01 5.2500000290961388e+00 0 0 0 +7896 1 -3.7279595628202841e+01 4.3202786081119889e+01 7.0000000309161221e+00 0 0 0 +7306 1 -3.3351391578731814e+01 4.2668235665034338e+01 5.2499999964903452e+00 0 0 0 +7897 1 -3.5034907514143178e+01 4.2106759100231002e+01 7.0000000406402814e+00 0 0 0 +7305 1 -3.1667875444832870e+01 4.3229712151255136e+01 3.4999999937655648e+00 0 0 0 +7310 1 -3.1106703460938171e+01 4.1572208956763895e+01 5.2499999887304476e+00 0 0 0 +7358 1 -2.9984359390038421e+01 4.3791188828003648e+01 5.2499999667281196e+00 0 0 0 +7950 1 -3.1667875352801875e+01 4.3229712147864319e+01 6.9999999785174172e+00 0 0 0 +7362 1 -2.7739671307723558e+01 4.2695162288296274e+01 5.2499999698169511e+00 0 0 0 +7411 1 -2.6056155314497598e+01 4.3256638891529640e+01 3.5000000161692588e+00 0 0 0 +8056 1 -2.6056155328619752e+01 4.3256638880389815e+01 6.9999999520364558e+00 0 0 0 +7412 1 -2.3811467173092208e+01 4.2160612274060632e+01 3.5000000223017191e+00 0 0 0 +7413 1 -2.5494983248501459e+01 4.1599135670185987e+01 5.2499999647079978e+00 0 0 0 +7414 1 -2.4372639516480376e+01 4.3818115534165734e+01 5.2499999948822209e+00 0 0 0 +8057 1 -2.3811467187350139e+01 4.2160612282455816e+01 6.9999999743649548e+00 0 0 0 +7466 1 -2.2127952006618443e+01 4.2722089174069545e+01 5.2500000191318970e+00 0 0 0 +7470 1 -1.9883265687452912e+01 4.1626063122158001e+01 5.2500000403877012e+00 0 0 0 +7519 1 -1.8199753047451978e+01 4.2187543190771905e+01 3.5000000024245339e+00 0 0 0 +7518 1 -1.8760915133155539e+01 4.3845041913003428e+01 5.2500000094639407e+00 0 0 0 +7522 1 -1.6516219024924219e+01 4.2749017070344813e+01 5.2500000012277876e+00 0 0 0 +8164 1 -1.8199753037025172e+01 4.2187543259421957e+01 7.0000000498801889e+00 0 0 0 +7573 1 -1.4271514270496557e+01 4.1653003584022890e+01 5.2499999865318969e+00 0 0 0 +7574 1 -1.3149237108221419e+01 4.3871934564059202e+01 5.2499999745887074e+00 0 0 0 +7572 1 -1.2587782623871432e+01 4.2214364932022377e+01 3.4999999829489727e+00 0 0 0 +7622 1 -1.0904485537604513e+01 4.2775735338543448e+01 5.2499999261435404e+00 0 0 0 +8217 1 -1.2587782594427592e+01 4.2214364919380820e+01 6.9999999555366559e+00 0 0 0 +7626 1 -8.6590369080113145e+00 4.1678878379954412e+01 5.2499999498781174e+00 0 0 0 +7658 1 -7.5396995518159216e+00 4.3901247348359796e+01 5.2499999543923339e+00 0 0 0 +7659 1 -6.9829708583511021e+00 4.2242521684852221e+01 3.5000000068940218e+00 0 0 0 +8304 1 -6.9829709134230420e+00 4.2242521609836864e+01 6.9999999234590708e+00 0 0 0 +7662 1 -5.3078136611873461e+00 4.2811335908921855e+01 5.2499999955229208e+00 0 0 0 +7682 1 -1.2264314319005394e+00 4.2307158587163691e+01 3.5000000525069894e+00 0 0 0 +7683 1 -3.1035849043973416e+00 4.1754774740124532e+01 5.2500000230663995e+00 0 0 0 +7684 1 -1.7224971378580767e+00 4.3906571398732687e+01 5.2500000722635027e+00 0 0 0 +8327 1 -1.2264314375359648e+00 4.2307158625626599e+01 7.0000000340525013e+00 0 0 0 +7694 1 -4.5136003436818015e+01 -1.8888671470579763e-07 6.9999999089678093e+00 0 0 0 +7692 1 -4.4013659612291377e+01 2.2189793990448896e+00 6.9999999459373763e+00 0 0 0 +7695 1 -4.3452487546424152e+01 5.6147610029358186e-01 8.7499999315288424e+00 0 0 0 +7709 1 -4.2330143870843003e+01 2.7804556037301777e+00 8.7499999627279941e+00 0 0 0 +7711 1 -4.1768971697613864e+01 1.1229523753088453e+00 6.9999999883279509e+00 0 0 0 +7713 1 -4.0085456063011350e+01 1.6844287053207856e+00 8.7500000271265890e+00 0 0 0 +7712 1 -3.9524284005796467e+01 2.6925492501999826e-02 7.0000000211500408e+00 0 0 0 +7741 1 -3.8401940396141349e+01 2.2459050698040666e+00 7.0000000471308663e+00 0 0 0 +7743 1 -3.7840768359876911e+01 5.8840180961175537e-01 8.7500000641388436e+00 0 0 0 +7744 1 -3.6718424708645330e+01 2.8073814166819697e+00 8.7500000754995284e+00 0 0 0 +7785 1 -3.2790221385014938e+01 2.2728310394490894e+00 6.9999999849104313e+00 0 0 0 +7786 1 -3.4473736970567771e+01 1.7113545881414569e+00 8.7500000249828371e+00 0 0 0 +8430 1 -3.2790221274266308e+01 2.2728310541552608e+00 1.0499999993507712e+01 0 0 0 +7788 1 -3.3912564885481494e+01 5.3851386097136550e-02 6.9999999899316352e+00 0 0 0 +8433 1 -3.3912564797845818e+01 5.3851355812797458e-02 1.0500000001246617e+01 0 0 0 +7789 1 -3.2229049125538580e+01 6.1532777480485601e-01 8.7499999849794960e+00 0 0 0 +7838 1 -3.1106705506938212e+01 2.8343075008568528e+00 8.7499999620075624e+00 0 0 0 +7892 1 -2.7178501667668403e+01 2.2997575416505955e+00 7.0000000032570933e+00 0 0 0 +7842 1 -2.8862017564942558e+01 1.7382809743576326e+00 8.7499999662443280e+00 0 0 0 +7894 1 -2.6617329460412048e+01 6.4225454686487604e-01 8.7499999934651740e+00 0 0 0 +8537 1 -2.7178501698644020e+01 2.2997575316586838e+00 1.0499999963105790e+01 0 0 0 +7841 1 -2.8300845302147330e+01 8.0777834490113651e-02 6.9999999778391135e+00 0 0 0 +8486 1 -2.8300845335419854e+01 8.0777805008991538e-02 1.0499999967743598e+01 0 0 0 +7895 1 -2.5494985607725408e+01 2.8612342808487137e+00 8.7499999988181347e+00 0 0 0 +7946 1 -2.3250297124075395e+01 1.7652078025827489e+00 8.7500000276124705e+00 0 0 0 +7949 1 -2.1005608044945230e+01 6.6918128398328880e-01 8.7499999884626103e+00 0 0 0 +7998 1 -1.9883267842945273e+01 2.8881618906076776e+00 8.7499999844198975e+00 0 0 0 +8000 1 -1.9322090996672145e+01 1.2306563672872057e+00 6.9999999448183727e+00 0 0 0 +8002 1 -1.7638584955525733e+01 1.7921353103547482e+00 8.7499999626046154e+00 0 0 0 +8645 1 -1.9322090936823763e+01 1.2306564335318044e+00 1.0500000000692472e+01 0 0 0 +8053 1 -1.3710492573764064e+01 1.2576391577011379e+00 7.0000000227315731e+00 0 0 0 +8054 1 -1.5393909375051322e+01 6.9610446876066145e-01 8.7499999771588080e+00 0 0 0 +8055 1 -1.4271515953235339e+01 2.9151015559108426e+00 8.7499999785104698e+00 0 0 0 +8698 1 -1.3710492593242375e+01 1.2576391554963027e+00 1.0499999999839027e+01 0 0 0 +8106 1 -1.2026827949451238e+01 1.8191519383857575e+00 8.7500000054669815e+00 0 0 0 +8109 1 -9.7824051510128314e+00 7.2351582938449532e-01 8.7500000145090944e+00 0 0 0 +8158 1 -8.6590379712222010e+00 2.9409750168337565e+00 8.7499999945103077e+00 0 0 0 +8160 1 -8.0950148227452896e+00 1.2834830339391492e+00 6.9999999751365705e+00 0 0 0 +8805 1 -8.0950147653545041e+00 1.2834830327760787e+00 1.0500000008568584e+01 0 0 0 +8162 1 -6.4095237182076543e+00 1.8413208776768726e+00 8.7499999706013423e+00 0 0 0 +8214 1 -4.1395817166038098e+00 7.3266351856933754e-01 8.7499999308954575e+00 0 0 0 +8213 1 -2.5187345313541565e+00 1.2916905113013182e+00 6.9999999160136488e+00 0 0 0 +8215 1 -3.1035855187994699e+00 3.0168698242063630e+00 8.7499999408752061e+00 0 0 0 +8265 1 -1.0571061297558630e+00 1.9346079104636851e+00 8.7499999989911039e+00 0 0 0 +8858 1 -2.5187344964247953e+00 1.2916905232526850e+00 1.0500000015212546e+01 0 0 0 +9405 1 -1.9883265698831483e+01 4.1626063157850382e+01 1.5749999965074206e+01 0 0 0 +7707 1 -4.2891315895701474e+01 4.4379587978810955e+00 6.9999999751523312e+00 0 0 0 +7693 1 -4.4574831763354339e+01 3.8764825069916662e+00 8.7499999305490341e+00 0 0 0 +7705 1 -4.3452487949754158e+01 6.0954620737139358e+00 8.7499999869597858e+00 0 0 0 +7708 1 -4.0646628118976274e+01 3.3419320231009184e+00 7.0000000420719930e+00 0 0 0 +7710 1 -4.1207800217370313e+01 4.9994351584178096e+00 8.7500000120361925e+00 0 0 0 +7739 1 -3.8963112490684601e+01 3.9034082270208517e+00 8.7500000597432983e+00 0 0 0 +7738 1 -3.7279596912836190e+01 4.4648846826887461e+00 7.0000000563702143e+00 0 0 0 +7740 1 -3.7840768984059551e+01 6.1223878668888005e+00 8.7500000875111184e+00 0 0 0 +7782 1 -3.5596081307708467e+01 5.0263610139152632e+00 8.7500000822171717e+00 0 0 0 +7787 1 -3.3351393462614752e+01 3.9303342391172964e+00 8.7499999983638403e+00 0 0 0 +7836 1 -3.1667877636383274e+01 4.4918106068968378e+00 6.9999999479344890e+00 0 0 0 +7834 1 -3.2229049766418257e+01 6.1493137733969272e+00 8.7499999656223366e+00 0 0 0 +7839 1 -2.9984361799714900e+01 5.0532871972674407e+00 8.7499999522304108e+00 0 0 0 +8481 1 -3.1667877551039833e+01 4.4918106327283756e+00 1.0499999960899357e+01 0 0 0 +7889 1 -2.6056157762837021e+01 4.5187373736278253e+00 7.0000000157363003e+00 0 0 0 +7890 1 -2.7739673693961848e+01 3.9572607030185045e+00 8.7499999951988006e+00 0 0 0 +7891 1 -2.6617330005564774e+01 6.1762405510023806e+00 8.7500000034624534e+00 0 0 0 +8534 1 -2.6056157817264243e+01 4.5187373914600650e+00 1.0499999983115197e+01 0 0 0 +7942 1 -2.4372641998654462e+01 5.0802142306497133e+00 8.7500000129006157e+00 0 0 0 +7944 1 -2.3811469536301779e+01 3.4227109606664250e+00 7.0000000307785708e+00 0 0 0 +7941 1 -2.2689125887359410e+01 5.6416911669675951e+00 7.0000000015948691e+00 0 0 0 +8589 1 -2.3811469511350221e+01 3.4227109927278350e+00 1.0500000026234481e+01 0 0 0 +8586 1 -2.2689125829264803e+01 5.6416912013776592e+00 1.0500000029170044e+01 0 0 0 +7947 1 -2.2127954311997595e+01 3.9841880306469655e+00 8.7500000135498244e+00 0 0 0 +7994 1 -2.1005608350495383e+01 6.2031674682433220e+00 8.7499999926756580e+00 0 0 0 +7997 1 -1.8199755136913879e+01 3.4496418638892044e+00 6.9999999143440457e+00 0 0 0 +7999 1 -1.8760917289910712e+01 5.1071407728979752e+00 8.7499999402392969e+00 0 0 0 +8048 1 -1.7077393023656587e+01 5.6686105503687925e+00 6.9999999618692499e+00 0 0 0 +8050 1 -1.6516221002336572e+01 4.0111155956955233e+00 8.7499999414769754e+00 0 0 0 +8642 1 -1.8199755124302520e+01 3.4496419075181195e+00 1.0500000002208964e+01 0 0 0 +8693 1 -1.7077392988411386e+01 5.6686106062087767e+00 1.0499999987259102e+01 0 0 0 +8051 1 -1.5393909473911954e+01 6.2300907293339600e+00 8.7499999808823556e+00 0 0 0 +8102 1 -1.3149238603382386e+01 5.1340326311462761e+00 8.7500000108896252e+00 0 0 0 +8101 1 -1.1466173692848050e+01 5.6957286266368632e+00 7.0000000706490679e+00 0 0 0 +8104 1 -1.2587784068792603e+01 3.4764626839420272e+00 7.0000000438335368e+00 0 0 0 +8107 1 -1.0904486777688797e+01 4.0378327804036793e+00 8.7500000080381835e+00 0 0 0 +8154 1 -9.7824050918351837e+00 6.2575021528978416e+00 8.7499999996324043e+00 0 0 0 +8746 1 -1.1466173683487364e+01 5.6957286132548006e+00 1.0499999998801297e+01 0 0 0 +8749 1 -1.2587784085922401e+01 3.4764626759377144e+00 1.0499999995650310e+01 0 0 0 +8157 1 -6.9829718199954973e+00 3.5046178703366206e+00 6.9999999618706523e+00 0 0 0 +8159 1 -7.5397003539738741e+00 5.1633440476489945e+00 8.7499999779847784e+00 0 0 0 +8802 1 -6.9829717352121099e+00 3.5046178780386370e+00 1.0500000016646251e+01 0 0 0 +8208 1 -5.8404172802582783e+00 5.7206375366974340e+00 6.9999999266120492e+00 0 0 0 +8210 1 -5.3078143672381710e+00 4.0734316568324287e+00 8.7499999674299271e+00 0 0 0 +8211 1 -4.1395815885684337e+00 6.2666496922238171e+00 8.7499999698771607e+00 0 0 0 +8853 1 -5.8404171872066302e+00 5.7206375431806737e+00 1.0500000017386064e+01 0 0 0 +14741 1 -4.4561163763337059e-14 5.9529725751966760e+00 1.0499999982609097e+01 0 0 0 +8262 1 -1.7224976520289690e+00 5.1686664469852825e+00 8.7499999501376244e+00 0 0 0 +8264 1 -1.2264317400147189e+00 3.5692532877656999e+00 6.9999999574287424e+00 0 0 0 +8909 1 -1.2264317146313031e+00 3.5692533236507877e+00 1.0499999986038318e+01 0 0 0 +9348 1 -2.5494983292255231e+01 4.1599135681472440e+01 1.5750000085897836e+01 0 0 0 +7701 1 -4.4574832067439580e+01 9.4104683791994326e+00 8.7499999675404929e+00 0 0 0 +7706 1 -4.2330144273525100e+01 8.3144415923473005e+00 8.7500000077850046e+00 0 0 0 +7704 1 -4.1768972175327058e+01 6.6569383966701512e+00 7.0000000365491193e+00 0 0 0 +7733 1 -4.0646628557017237e+01 8.8759180081097160e+00 7.0000000533750475e+00 0 0 0 +7735 1 -4.0085456557420208e+01 7.2184147390112754e+00 8.7500000608026145e+00 0 0 0 +7736 1 -3.8963112885237578e+01 9.4373942281681416e+00 8.7500000814537326e+00 0 0 0 +8378 1 -4.0646628600089571e+01 8.8759179870166189e+00 1.0500000038346380e+01 0 0 0 +7780 1 -3.6157253335089017e+01 6.6838641599843962e+00 7.0000000319035722e+00 0 0 0 +7778 1 -3.6718425214862080e+01 8.3413674183923607e+00 8.7500000450801636e+00 0 0 0 +7777 1 -3.5034909590374369e+01 8.9028436679296430e+00 7.0000000192448999e+00 0 0 0 +7783 1 -3.4473737536165295e+01 7.2453405358632450e+00 8.7500000246163925e+00 0 0 0 +7830 1 -3.3351393884096495e+01 9.4643202278888694e+00 8.7500000006584333e+00 0 0 0 +8422 1 -3.5034909454026398e+01 8.9028437089310195e+00 1.0500000012981634e+01 0 0 0 +7833 1 -3.0545533969336393e+01 6.7107903243647389e+00 6.9999999285561296e+00 0 0 0 +7884 1 -2.9423190173609509e+01 8.9297700270645919e+00 6.9999999413652878e+00 0 0 0 +7835 1 -3.1106705968782403e+01 8.3682934313110238e+00 8.7499999440468716e+00 0 0 0 +8478 1 -3.0545533924466596e+01 6.7107903304044498e+00 1.0499999947955841e+01 0 0 0 +8529 1 -2.9423190170813978e+01 8.9297700627058241e+00 1.0499999959431989e+01 0 0 0 +7886 1 -2.8862018087727900e+01 7.2722669706104739e+00 8.7499999463415072e+00 0 0 0 +7887 1 -2.7739674094729775e+01 9.4912467097464734e+00 8.7499999861895699e+00 0 0 0 +7940 1 -2.4933813867352850e+01 6.7377172406554999e+00 7.0000000318300151e+00 0 0 0 +7938 1 -2.5494985981441847e+01 8.3952203246969521e+00 8.7500000499720780e+00 0 0 0 +7943 1 -2.3250297542429252e+01 7.2991939264331362e+00 8.7500000315136202e+00 0 0 0 +8585 1 -2.4933813893689980e+01 6.7377172862297767e+00 1.0500000004176226e+01 0 0 0 +7990 1 -2.2127954521259692e+01 9.5181741232093753e+00 8.7500000154577524e+00 0 0 0 +7992 1 -2.1566781380191788e+01 7.8606704348775045e+00 7.0000000090502157e+00 0 0 0 +7995 1 -1.9883267986147555e+01 8.4221480506724795e+00 8.7499999731361271e+00 0 0 0 +8637 1 -2.1566781346648934e+01 7.8606704817009794e+00 1.0500000018706304e+01 0 0 0 +8046 1 -1.7638585084203363e+01 7.3261215372051787e+00 8.7499999398480242e+00 0 0 0 +8047 1 -1.6516220902258603e+01 9.5451017603642327e+00 8.7499999729844191e+00 0 0 0 +8045 1 -1.5955088609726692e+01 7.8876125832636328e+00 6.9999999770203321e+00 0 0 0 +8098 1 -1.4271515877503923e+01 8.4490878069841244e+00 8.7500000040512802e+00 0 0 0 +8690 1 -1.5955088592709608e+01 7.8876125858614436e+00 1.0499999997686778e+01 0 0 0 +8103 1 -1.2026827837236924e+01 7.3531382397214458e+00 8.7500000189169977e+00 0 0 0 +8150 1 -1.0904486468521629e+01 9.5718190979913977e+00 8.7500000061628036e+00 0 0 0 +8152 1 -1.0342364758016956e+01 7.9141882620011783e+00 7.0000000734078718e+00 0 0 0 +8797 1 -1.0342364703714393e+01 7.9141882175444831e+00 1.0499999986874748e+01 0 0 0 +8155 1 -8.6590377205368156e+00 8.4749613718012213e+00 8.7499999767464800e+00 0 0 0 +8205 1 -4.7485644957847546e+00 7.9428045278299662e+00 6.9999999038904068e+00 0 0 0 +8206 1 -6.4095235799228965e+00 7.3753071756724822e+00 8.7499999659564924e+00 0 0 0 +8207 1 -5.3078141365151641e+00 9.6074180504352622e+00 8.7499999375407640e+00 0 0 0 +8850 1 -4.7485644116011594e+00 7.9428045429383527e+00 1.0500000009339072e+01 0 0 0 +8258 1 -3.1035853173897419e+00 8.5508560232465882e+00 8.7499999398330797e+00 0 0 0 +8263 1 -1.0571062325877154e+00 7.4685940594375815e+00 8.7499999071662202e+00 0 0 0 +9349 1 -2.4372639544563548e+01 4.3818115548478644e+01 1.5750000040135228e+01 0 0 0 +7702 1 -4.3452488231284825e+01 1.1629447941882628e+01 8.7500000098584447e+00 0 0 0 +8345 1 -4.2891316270717866e+01 9.9719447078575172e+00 1.0500000012074240e+01 0 0 0 +7730 1 -3.9524284937330933e+01 1.1094897509822273e+01 7.0000000783057130e+00 0 0 0 +7731 1 -4.1207800570894911e+01 1.0533421137397305e+01 8.7500000614860216e+00 0 0 0 +8374 1 -4.1768972505525525e+01 1.2190924259084452e+01 1.0500000010049751e+01 0 0 0 +8375 1 -3.9524284939366538e+01 1.1094897496974809e+01 1.0500000033206094e+01 0 0 0 +7774 1 -3.7840769244828884e+01 1.1656373829631002e+01 8.7500000797824597e+00 0 0 0 +7779 1 -3.5596081682616230e+01 1.0560346996003087e+01 8.7500000282475483e+00 0 0 0 +7828 1 -3.3912565884145934e+01 1.1121823343049666e+01 6.9999999648387110e+00 0 0 0 +8473 1 -3.3912565788186477e+01 1.1121823352122627e+01 1.0499999989593425e+01 0 0 0 +7831 1 -3.2229050010132475e+01 1.1683299741554464e+01 8.7499999774534345e+00 0 0 0 +7882 1 -2.9984362079114632e+01 1.0587273202107868e+01 8.7499999678540981e+00 0 0 0 +7881 1 -2.8300846164891620e+01 1.1148749832068566e+01 6.9999999735837699e+00 0 0 0 +7934 1 -2.6617330173022971e+01 1.1710226575299311e+01 8.7500000121190702e+00 0 0 0 +8526 1 -2.8300846198824523e+01 1.1148749828533774e+01 1.0499999976770209e+01 0 0 0 +7939 1 -2.4372642182570331e+01 1.0614200230967128e+01 8.7500000558318991e+00 0 0 0 +7989 1 -2.0444438701145323e+01 1.0079651591043156e+01 6.9999999891542393e+00 0 0 0 +7991 1 -2.1005608321561990e+01 1.1737153490176828e+01 8.7500000001869047e+00 0 0 0 +8634 1 -2.0444438634650030e+01 1.0079651644387019e+01 1.0500000008694938e+01 0 0 0 +8040 1 -1.9322091045716590e+01 1.2298628624364516e+01 6.9999999716471937e+00 0 0 0 +8042 1 -1.8760917221177042e+01 1.0641126857130596e+01 8.7499999821273633e+00 0 0 0 +8685 1 -1.9322090978795043e+01 1.2298628642411737e+01 1.0500000009364564e+01 0 0 0 +8093 1 -1.3710492198275116e+01 1.2325611648536093e+01 7.0000000356039447e+00 0 0 0 +8094 1 -1.5393909133574821e+01 1.1764076857451959e+01 8.7499999794152199e+00 0 0 0 +8096 1 -1.4832659547452424e+01 1.0106549066459577e+01 7.0000000202003694e+00 0 0 0 +8099 1 -1.3149238291525675e+01 1.0668018880250308e+01 8.7499999957822787e+00 0 0 0 +8738 1 -1.3710492155425424e+01 1.2325611608568261e+01 1.0499999984882376e+01 0 0 0 +8741 1 -1.4832659541466157e+01 1.0106549059792775e+01 1.0499999986771739e+01 0 0 0 +8151 1 -9.7824046585932063e+00 1.1791488545317435e+01 8.7499999993677324e+00 0 0 0 +8149 1 -9.2228647060381110e+00 1.0134060804242559e+01 7.0000000235352742e+00 0 0 0 +8200 1 -8.0950142951649191e+00 1.2351455845514609e+01 6.9999999586791990e+00 0 0 0 +8202 1 -7.5396999656700228e+00 1.0697330459108455e+01 8.7499999714147343e+00 0 0 0 +8794 1 -9.2228646302381101e+00 1.0134060800596593e+01 1.0499999986933846e+01 0 0 0 +8845 1 -8.0950142433095511e+00 1.2351455817586084e+01 1.0499999981702155e+01 0 0 0 +8254 1 -4.1395813724667185e+00 1.1800636159678337e+01 8.7499999259570487e+00 0 0 0 +8256 1 -3.5610868875791515e+00 1.0156707629838339e+01 6.9999998915033910e+00 0 0 0 +8901 1 -3.5610868337454114e+00 1.0156707687242710e+01 1.0500000000857721e+01 0 0 0 +8253 1 -2.5187342955653662e+00 1.2359663026206945e+01 6.9999998735740148e+00 0 0 0 +8259 1 -1.7224974819541272e+00 1.0702652737904968e+01 8.7499999408321312e+00 0 0 0 +8898 1 -2.5187342646328656e+00 1.2359663114205020e+01 1.0499999971058568e+01 0 0 0 +7698 1 -4.4574832221172407e+01 1.4944454133383939e+01 8.7499999857685644e+00 0 0 0 +7727 1 -4.2330144450132138e+01 1.3848427459960508e+01 8.7500000320564677e+00 0 0 0 +8342 1 -4.4013660232572228e+01 1.3286951072488073e+01 1.0499999976016126e+01 0 0 0 +8370 1 -4.2891316397062489e+01 1.5505930581044353e+01 1.0500000029072142e+01 0 0 0 +7732 1 -4.0085456789711699e+01 1.2752400702438651e+01 8.7500000581474104e+00 0 0 0 +7770 1 -3.8963112970292507e+01 1.4971380217136847e+01 8.7500000708692767e+00 0 0 0 +8371 1 -4.0646628716893524e+01 1.4409903964532809e+01 1.0500000043140188e+01 0 0 0 +7769 1 -3.7279597317557631e+01 1.5532856647858617e+01 7.0000000530884714e+00 0 0 0 +7772 1 -3.8401941129977494e+01 1.3313877047447273e+01 7.0000000706270136e+00 0 0 0 +7775 1 -3.6718425316749482e+01 1.3875353421087619e+01 8.7500000691479638e+00 0 0 0 +8414 1 -3.7279597247145958e+01 1.5532856659686423e+01 1.0500000045627532e+01 0 0 0 +8417 1 -3.8401941075215248e+01 1.3313877053911661e+01 1.0500000056141729e+01 0 0 0 +7825 1 -3.2790222004508742e+01 1.3340802992442052e+01 6.9999999633186514e+00 0 0 0 +7826 1 -3.4473737728449720e+01 1.2779326549876929e+01 8.7500000039446384e+00 0 0 0 +7827 1 -3.3351393852845568e+01 1.4998306180827303e+01 8.7499999720752335e+00 0 0 0 +8470 1 -3.2790221935116996e+01 1.3340803002231000e+01 1.0499999985307966e+01 0 0 0 +7876 1 -3.1667877878411762e+01 1.5559782530308865e+01 6.9999999665731636e+00 0 0 0 +7878 1 -3.1106706002807979e+01 1.3902279440720894e+01 8.7499999575001830e+00 0 0 0 +8521 1 -3.1667877821105190e+01 1.5559782550631757e+01 1.0499999978709905e+01 0 0 0 +7929 1 -2.6056157842608343e+01 1.5586709298259034e+01 7.0000000279427503e+00 0 0 0 +7932 1 -2.7178502153070699e+01 1.3367729517162397e+01 7.0000000188477216e+00 0 0 0 +7883 1 -2.8862018180098339e+01 1.2806252954313997e+01 8.7499999913799780e+00 0 0 0 +7930 1 -2.7739673899453059e+01 1.5025232664121216e+01 8.7500000284941368e+00 0 0 0 +8574 1 -2.6056157826159662e+01 1.5586709341239047e+01 1.0500000019356900e+01 0 0 0 +8577 1 -2.7178502152041236e+01 1.3367729540948625e+01 1.0500000008412679e+01 0 0 0 +7935 1 -2.5494985880951990e+01 1.3929206268373289e+01 8.7500000241610287e+00 0 0 0 +7984 1 -2.3811469659993339e+01 1.4490682935653023e+01 7.0000000479352007e+00 0 0 0 +7986 1 -2.3250297445400705e+01 1.2833179882385471e+01 8.7500000343700837e+00 0 0 0 +8629 1 -2.3811469604438283e+01 1.4490682979163541e+01 1.0500000030551712e+01 0 0 0 +7987 1 -2.2127954223310777e+01 1.5052160002517997e+01 8.7500000141067247e+00 0 0 0 +8038 1 -1.9883267715138977e+01 1.3956134000469859e+01 8.7500000011681092e+00 0 0 0 +8037 1 -1.8199754794991314e+01 1.4517614014798797e+01 6.9999999386046277e+00 0 0 0 +8043 1 -1.7638584749742694e+01 1.2860107559782335e+01 8.7499999869020773e+00 0 0 0 +8090 1 -1.6516220456289862e+01 1.5079087787354938e+01 8.7499999708687923e+00 0 0 0 +8682 1 -1.8199754782863824e+01 1.4517614038509562e+01 1.0500000005140578e+01 0 0 0 +8095 1 -1.4271515390907988e+01 1.3983073941452604e+01 8.7499999817944456e+00 0 0 0 +8144 1 -1.2587783420961498e+01 1.4544435221781100e+01 7.0000000135215608e+00 0 0 0 +8146 1 -1.2026827407873819e+01 1.2887124526496402e+01 8.7499999911934250e+00 0 0 0 +8147 1 -1.0904485999495643e+01 1.5105805473774478e+01 8.7499999843937832e+00 0 0 0 +8789 1 -1.2587783370497050e+01 1.4544435204334331e+01 1.0499999968051881e+01 0 0 0 +8197 1 -6.9829711502399103e+00 1.4572590792071844e+01 6.9999999294939528e+00 0 0 0 +8198 1 -8.6590372905972526e+00 1.4008947847836776e+01 8.7499999634495271e+00 0 0 0 +8842 1 -6.9829710891013503e+00 1.4572590780459478e+01 1.0499999975367491e+01 0 0 0 +8203 1 -6.4095231942720323e+00 1.2909293693797180e+01 8.7499999445664969e+00 0 0 0 +8250 1 -5.3078137594485781e+00 1.5141404623528526e+01 8.7499999412788441e+00 0 0 0 +8300 1 -1.2264315784197037e+00 1.4637225978483441e+01 6.9999998659255906e+00 0 0 0 +8255 1 -3.1035851288860963e+00 1.4084842656216551e+01 8.7499999226031608e+00 0 0 0 +8301 1 -1.0571060801980603e+00 1.3002580486928290e+01 8.7499999514627529e+00 0 0 0 +8945 1 -1.2264315395714636e+00 1.4637226121851848e+01 1.0499999960540169e+01 0 0 0 +9347 1 -2.3811467226231333e+01 4.2160612292583117e+01 1.4000000031461781e+01 0 0 0 +7723 1 -4.3452488255585706e+01 1.7163433764839461e+01 8.7500000268265126e+00 0 0 0 +8366 1 -4.4013660213146842e+01 1.8820936880212294e+01 1.0500000005731918e+01 0 0 0 +7728 1 -4.1207800601656402e+01 1.6067407057362644e+01 8.7500000615081674e+00 0 0 0 +7766 1 -4.0085456707710456e+01 1.8286386636006633e+01 8.7500000708467525e+00 0 0 0 +8367 1 -4.1768972463883458e+01 1.7724910164951190e+01 1.0500000024118080e+01 0 0 0 +8413 1 -3.9524284915783035e+01 1.6628883457702351e+01 1.0500000045461720e+01 0 0 0 +7820 1 -3.6157253421112735e+01 1.7751836061644777e+01 7.0000000316069189e+00 0 0 0 +7771 1 -3.7840769171993891e+01 1.7190359831617844e+01 8.7500000627019308e+00 0 0 0 +7822 1 -3.5596081602542711e+01 1.6094332967442970e+01 8.7500000419866613e+00 0 0 0 +8465 1 -3.6157253333953534e+01 1.7751836122327251e+01 1.0500000032478468e+01 0 0 0 +8410 1 -3.8401940922770287e+01 1.8847863043908820e+01 1.0500000048489541e+01 0 0 0 +7823 1 -3.4473737480122530e+01 1.8313312436966800e+01 8.7500000190859648e+00 0 0 0 +7873 1 -3.0545533816724149e+01 1.7778762207417625e+01 6.9999999730682578e+00 0 0 0 +7874 1 -3.2229049782831680e+01 1.7217285660035508e+01 8.7499999773639718e+00 0 0 0 +7879 1 -2.9984361890753803e+01 1.6121259114800392e+01 8.7499999867282625e+00 0 0 0 +8518 1 -3.0545533780536516e+01 1.7778762201619504e+01 1.0500000002474902e+01 0 0 0 +7926 1 -2.8862017765286303e+01 1.8340238832252247e+01 8.7499999820888057e+00 0 0 0 +7931 1 -2.6617329798354099e+01 1.7244212435808763e+01 8.7500000210004529e+00 0 0 0 +7980 1 -2.4933813533937755e+01 1.7805689097740192e+01 7.0000000086576994e+00 0 0 0 +7982 1 -2.4372641853335761e+01 1.6148186129978761e+01 8.7500000231679849e+00 0 0 0 +7983 1 -2.3250297007380674e+01 1.8367165730553346e+01 8.7500000166597829e+00 0 0 0 +7981 1 -2.2689125595008274e+01 1.6709663051297394e+01 6.9999999873883674e+00 0 0 0 +8626 1 -2.2689125512641358e+01 1.6709663090691382e+01 1.0500000037328682e+01 0 0 0 +8625 1 -2.4933813469971778e+01 1.7805689142997672e+01 1.0500000026953446e+01 0 0 0 +8032 1 -2.1566780716100130e+01 1.8928642220003258e+01 6.9999999879194270e+00 0 0 0 +8034 1 -2.1005607870929275e+01 1.7271139345932781e+01 8.7499999881271258e+00 0 0 0 +8677 1 -2.1566780685940998e+01 1.8928642241981702e+01 1.0499999990135995e+01 0 0 0 +8039 1 -1.8760916794865938e+01 1.6175112789457497e+01 8.7499999767920844e+00 0 0 0 +8086 1 -1.7638584273183127e+01 1.8394093500229641e+01 8.7499999663938706e+00 0 0 0 +8088 1 -1.7077392357137196e+01 1.6736582640877479e+01 6.9999999682698624e+00 0 0 0 +8733 1 -1.7077392310400629e+01 1.6736582677549389e+01 1.0499999990961088e+01 0 0 0 +8085 1 -1.5955087681257762e+01 1.8955584657521534e+01 6.9999999720284576e+00 0 0 0 +8091 1 -1.5393908631020794e+01 1.7298062925897732e+01 8.7499999997231921e+00 0 0 0 +8142 1 -1.3149237793272050e+01 1.6202005088656385e+01 8.7500000015408919e+00 0 0 0 +8730 1 -1.5955087629805966e+01 1.8955584664630734e+01 1.0499999985723770e+01 0 0 0 +8141 1 -1.1466172817800066e+01 1.6763701278579234e+01 7.0000000207495274e+00 0 0 0 +8192 1 -1.0342363737211500e+01 1.8982161029080888e+01 7.0000000127207702e+00 0 0 0 +8143 1 -1.2026826837221501e+01 1.8421110787313861e+01 8.7499999963921358e+00 0 0 0 +8194 1 -9.7824041596972773e+00 1.7325474970587674e+01 8.7499999648202351e+00 0 0 0 +8837 1 -1.0342363666039656e+01 1.8982160967104562e+01 1.0499999962104916e+01 0 0 0 +8786 1 -1.1466172777188612e+01 1.6763701235423436e+01 1.0499999957070287e+01 0 0 0 +8199 1 -7.5396995370707414e+00 1.6231317011975484e+01 8.7499999505885420e+00 0 0 0 +8245 1 -4.7485637658474333e+00 1.9010777742285416e+01 6.9999998883439591e+00 0 0 0 +8248 1 -5.8404165190135693e+00 1.6788610601981659e+01 6.9999999019737738e+00 0 0 0 +8246 1 -6.4095227085189599e+00 1.8443280266131488e+01 8.7499999496920093e+00 0 0 0 +8251 1 -4.1395809453657924e+00 1.7334622743095146e+01 8.7499999436772224e+00 0 0 0 +8890 1 -4.7485636528338722e+00 1.9010777746464814e+01 1.0499999985090476e+01 0 0 0 +8893 1 -5.8404164376540741e+00 1.6788610591585211e+01 1.0499999988574052e+01 0 0 0 +14195 1 -3.1484279871131879e-13 1.7020945514068710e+01 6.9999998373990602e+00 0 0 0 +8298 1 -1.7224970867707488e+00 1.6236639342173778e+01 8.7499998888726456e+00 0 0 0 +8299 1 -1.0571059279211190e+00 1.8536567231581397e+01 8.7499998221911621e+00 0 0 0 +6767 1 -2.3811467199853826e+01 4.2160612258539871e+01 3.4834314988074766e-08 0 0 0 +7719 1 -4.4574832149460633e+01 2.0478439940144277e+01 8.7500000035455550e+00 0 0 0 +7724 1 -4.2330144399712076e+01 1.9382413331642439e+01 8.7500000338448594e+00 0 0 0 +8363 1 -4.2891316282779229e+01 2.1039916413010864e+01 1.0500000037072255e+01 0 0 0 +7762 1 -4.1207800505472377e+01 2.1601392902204747e+01 8.7500000665744970e+00 0 0 0 +7767 1 -3.8963112786703654e+01 2.0505366120250748e+01 8.7500000722972224e+00 0 0 0 +8409 1 -4.0646628593513284e+01 1.9943889847051093e+01 1.0500000052322676e+01 0 0 0 +7818 1 -3.6718425112404205e+01 1.9409339337077078e+01 8.7500000217600249e+00 0 0 0 +7819 1 -3.5596081256644517e+01 2.1628318838504772e+01 8.7499999891038112e+00 0 0 0 +8461 1 -3.7279597022642534e+01 2.1066842594388945e+01 1.0500000027957535e+01 0 0 0 +7817 1 -3.5034909329014383e+01 1.9970815545673844e+01 7.0000000186379348e+00 0 0 0 +7870 1 -3.3351393464132180e+01 2.0532292041444205e+01 8.7499999979990708e+00 0 0 0 +8462 1 -3.5034909217936736e+01 1.9970815578498492e+01 1.0500000010084817e+01 0 0 0 +7924 1 -2.9423189648284016e+01 1.9997741839848366e+01 6.9999999750790698e+00 0 0 0 +7875 1 -3.1106705591140091e+01 1.9436265266712308e+01 8.7499999702750291e+00 0 0 0 +7922 1 -2.9984361314879948e+01 2.1655244936859471e+01 8.7499999986156816e+00 0 0 0 +8569 1 -2.9423189608981311e+01 1.9997741873018800e+01 1.0500000006683376e+01 0 0 0 +7927 1 -2.7739673393406306e+01 2.0559218489203207e+01 8.7500000062355596e+00 0 0 0 +7978 1 -2.5494985370438787e+01 1.9463192131957843e+01 8.7500000288449531e+00 0 0 0 +7979 1 -2.4372641249400921e+01 2.1682171936843215e+01 8.7500000074131172e+00 0 0 0 +8029 1 -2.0444437736210279e+01 2.1147623291681395e+01 6.9999999817614000e+00 0 0 0 +8030 1 -2.2127953663866030e+01 2.0586145810825855e+01 8.7499999901250654e+00 0 0 0 +8035 1 -1.9883267190829635e+01 1.9490119824077134e+01 8.7499999597509106e+00 0 0 0 +8674 1 -2.0444437681253955e+01 2.1147623337744168e+01 1.0499999981637719e+01 0 0 0 +8082 1 -1.8760916149613543e+01 2.1709098600082605e+01 8.7499999938488298e+00 0 0 0 +8087 1 -1.6516219849855933e+01 2.0613073723414963e+01 8.7500000031899052e+00 0 0 0 +8136 1 -1.4832658448607274e+01 2.1174521192034060e+01 7.0000000062017715e+00 0 0 0 +8138 1 -1.4271514824841802e+01 1.9517060042604616e+01 8.7500000105654330e+00 0 0 0 +8139 1 -1.3149237138216362e+01 2.1735991205789173e+01 8.7499999975203000e+00 0 0 0 +8781 1 -1.4832658398666936e+01 2.1174521185000973e+01 1.0499999977624677e+01 0 0 0 +8190 1 -1.0904485367659147e+01 2.0639791772581507e+01 8.7499999896188037e+00 0 0 0 +8189 1 -9.2228636635512320e+00 2.1202033726166785e+01 6.9999999851322059e+00 0 0 0 +8195 1 -8.6590367257854890e+00 1.9542934328903385e+01 8.7499999668803952e+00 0 0 0 +8242 1 -7.5396990685828209e+00 2.1765303586751848e+01 8.7499999780035402e+00 0 0 0 +8834 1 -9.2228635939726704e+00 2.1202033697555414e+01 1.0499999988496439e+01 0 0 0 +8292 1 -3.5610863031418041e+00 2.1224681050825676e+01 6.9999998929654259e+00 0 0 0 +8247 1 -5.3078133734797142e+00 2.0675391307981567e+01 8.7499999434462197e+00 0 0 0 +8937 1 -3.5610862207228253e+00 2.1224681038597716e+01 1.0499999969646835e+01 0 0 0 +8294 1 -3.1035849092589856e+00 1.9618829391557473e+01 8.7499999008949167e+00 0 0 0 +8295 1 -1.7224970064667662e+00 2.1770626126882981e+01 8.7499998497209557e+00 0 0 0 +9297 1 -2.7739671296243714e+01 4.2695162301394696e+01 1.5750000078927272e+01 0 0 0 +7720 1 -4.3452488204226654e+01 2.2697419570134407e+01 8.7500000442450450e+00 0 0 0 +7758 1 -4.2330144291553736e+01 2.4916399159739580e+01 8.7500000311386454e+00 0 0 0 +8360 1 -4.4013660153030195e+01 2.4354922698223035e+01 1.0500000031651394e+01 0 0 0 +8406 1 -3.9524284702927417e+01 2.2162869373534420e+01 1.0500000040988709e+01 0 0 0 +7763 1 -4.0085456498705405e+01 2.3820372499298870e+01 8.7500000330029835e+00 0 0 0 +8405 1 -4.1768972353917334e+01 2.3258895989548602e+01 1.0500000044823985e+01 0 0 0 +7814 1 -3.7840768863490709e+01 2.2724345686846046e+01 8.7500000383585164e+00 0 0 0 +7815 1 -3.6718424653218939e+01 2.4943325201257394e+01 8.7500000155024935e+00 0 0 0 +8457 1 -3.8401940575449139e+01 2.4381848899825933e+01 1.0500000014880914e+01 0 0 0 +8458 1 -3.6157252918938191e+01 2.3285821982438904e+01 1.0500000004165601e+01 0 0 0 +7868 1 -3.3912565277980669e+01 2.2189795109506516e+01 6.9999999740166423e+00 0 0 0 +8513 1 -3.3912565206064990e+01 2.2189795143852933e+01 1.0499999999917808e+01 0 0 0 +7865 1 -3.2790221068093651e+01 2.4408774663007826e+01 6.9999999667398365e+00 0 0 0 +7866 1 -3.4473736972360797e+01 2.3847298289552093e+01 8.7499999785016946e+00 0 0 0 +8510 1 -3.2790221016361926e+01 2.4408774690079465e+01 1.0499999989508225e+01 0 0 0 +7871 1 -3.2229049223366339e+01 2.2751271471232624e+01 8.7499999888982991e+00 0 0 0 +7918 1 -3.1106704929566252e+01 2.4970251069730370e+01 8.7499999776822115e+00 0 0 0 +7921 1 -2.8300845299693055e+01 2.2216721554307362e+01 6.9999999782922986e+00 0 0 0 +7972 1 -2.7178501022798464e+01 2.4435701177917561e+01 6.9999999907268764e+00 0 0 0 +7923 1 -2.8862017121039038e+01 2.3874224625707221e+01 8.7500000035847236e+00 0 0 0 +7974 1 -2.6617329161094208e+01 2.2778198263871033e+01 8.7500000042399524e+00 0 0 0 +8566 1 -2.8300845272467988e+01 2.2216721547022289e+01 1.0500000014811480e+01 0 0 0 +8617 1 -2.7178500991876703e+01 2.4435701180851950e+01 1.0500000007257604e+01 0 0 0 +7975 1 -2.5494984662441965e+01 2.4997177886435384e+01 8.7500000097386206e+00 0 0 0 +8026 1 -2.3250296281305555e+01 2.3901151494966040e+01 8.7500000000966232e+00 0 0 0 +8031 1 -2.1005607213034185e+01 2.2805125129862887e+01 8.7499999964123489e+00 0 0 0 +8078 1 -1.9883266443982180e+01 2.5024105624633155e+01 8.7500000229553478e+00 0 0 0 +8080 1 -1.9322089866311117e+01 2.3366600316650629e+01 7.0000000041185677e+00 0 0 0 +8083 1 -1.7638583516635084e+01 2.3928079319793198e+01 8.7500000120516574e+00 0 0 0 +8725 1 -1.9322089795758387e+01 2.3366600302442848e+01 1.0499999971403751e+01 0 0 0 +8133 1 -1.3710491064098756e+01 2.3393583854769503e+01 7.0000000121452102e+00 0 0 0 +8134 1 -1.5393907948746737e+01 2.2832048872410674e+01 8.7499999913934161e+00 0 0 0 +8135 1 -1.4271514241411342e+01 2.5051046045911047e+01 8.7499999873552774e+00 0 0 0 +8778 1 -1.3710490974688934e+01 2.3393583818811138e+01 1.0499999993692452e+01 0 0 0 +8186 1 -1.2026826298166695e+01 2.3955096969751171e+01 8.7499999856591852e+00 0 0 0 +8191 1 -9.7824036269777253e+00 2.2859461353373803e+01 8.7499999918648239e+00 0 0 0 +8240 1 -8.0950133941474132e+00 2.3419428914172336e+01 6.9999999471594974e+00 0 0 0 +8238 1 -8.6590364278626399e+00 2.5076920782021222e+01 8.7499999728986317e+00 0 0 0 +8885 1 -8.0950133446601171e+00 2.3419428870902593e+01 1.0500000009052460e+01 0 0 0 +8243 1 -6.4095224601723633e+00 2.3977266952669055e+01 8.7499999654106038e+00 0 0 0 +8290 1 -4.1395807508216951e+00 2.2868609540617083e+01 8.7499999028743130e+00 0 0 0 +8289 1 -2.5187338979013196e+00 2.3427636508808725e+01 6.9999998770379825e+00 0 0 0 +8291 1 -3.1035847368814302e+00 2.5152816182137496e+01 8.7499999077527733e+00 0 0 0 +8324 1 -1.0571059686909146e+00 2.4070554033282317e+01 8.7499998601884883e+00 0 0 0 +8934 1 -2.5187337961794176e+00 2.3427636560398820e+01 1.0499999943554233e+01 0 0 0 +7716 1 -4.4574832133045149e+01 2.6012425811996010e+01 8.7500000004674874e+00 0 0 0 +7754 1 -4.3452488116278232e+01 2.8231405493494361e+01 8.7500000356029535e+00 0 0 0 +8401 1 -4.2891316202917452e+01 2.6573902303556750e+01 1.0500000041964572e+01 0 0 0 +7759 1 -4.1207800300451645e+01 2.7135378764035870e+01 8.7500000414232044e+00 0 0 0 +7810 1 -3.8963112450879791e+01 2.6039351973490646e+01 8.7500000304388017e+00 0 0 0 +8402 1 -4.0646628368199387e+01 2.5477875733250286e+01 1.0500000025870264e+01 0 0 0 +8453 1 -3.9524284365821977e+01 2.7696855204337727e+01 1.0500000028265413e+01 0 0 0 +7811 1 -3.7840768440650507e+01 2.8258331560414820e+01 8.7500000186472437e+00 0 0 0 +7862 1 -3.5596080692182639e+01 2.7162304674933228e+01 8.7499999978582998e+00 0 0 0 +8454 1 -3.7279596520547962e+01 2.6600828432378023e+01 1.0499999993003703e+01 0 0 0 +7867 1 -3.3351392807712841e+01 2.6066277837241646e+01 8.7499999645475217e+00 0 0 0 +8506 1 -3.3912564572047145e+01 2.7723780951308168e+01 1.0499999992271574e+01 0 0 0 +8509 1 -3.5034908717905680e+01 2.5504801448488355e+01 1.0499999996905286e+01 0 0 0 +7914 1 -3.2229048531405873e+01 2.8285257272668691e+01 8.7499999712568588e+00 0 0 0 +7916 1 -3.1667876702591943e+01 2.6627754175021739e+01 6.9999999653607494e+00 0 0 0 +7919 1 -2.9984360627330897e+01 2.7189230723713482e+01 8.7499999952716827e+00 0 0 0 +8561 1 -3.1667876655104166e+01 2.6627754158546541e+01 1.0500000001681720e+01 0 0 0 +7969 1 -2.6056156542703608e+01 2.6654680897774881e+01 7.0000000087189482e+00 0 0 0 +7970 1 -2.7739672656584627e+01 2.6093204249094754e+01 8.7500000244661464e+00 0 0 0 +7971 1 -2.6617328438346700e+01 2.8312184005957690e+01 8.7500000084345331e+00 0 0 0 +8614 1 -2.6056156498215060e+01 2.6654680910265739e+01 1.0499999997801442e+01 0 0 0 +8022 1 -2.4372640503978261e+01 2.7216157699007962e+01 8.7500000034407037e+00 0 0 0 +8024 1 -2.3811468376189882e+01 2.5558654556519141e+01 7.0000000389305974e+00 0 0 0 +8021 1 -2.2689124214743867e+01 2.7777634639099777e+01 7.0000000269359237e+00 0 0 0 +8669 1 -2.3811468311370415e+01 2.5558654563361337e+01 1.0499999974796147e+01 0 0 0 +8666 1 -2.2689124138668355e+01 2.7777634645994269e+01 1.0499999992174615e+01 0 0 0 +8027 1 -2.2127952919059119e+01 2.6120131601509271e+01 8.7500000184688709e+00 0 0 0 +8074 1 -2.1005606531606688e+01 2.8339110952643853e+01 8.7500000350111424e+00 0 0 0 +8077 1 -1.8199753526548875e+01 2.5585585726176220e+01 7.0000000043457815e+00 0 0 0 +8079 1 -1.8760915498259866e+01 2.7243084466536789e+01 8.7500000269075340e+00 0 0 0 +8128 1 -1.7077391165378845e+01 2.7804554426376789e+01 7.0000000199381667e+00 0 0 0 +8130 1 -1.6516219221590426e+01 2.6147059620447099e+01 8.7500000050625300e+00 0 0 0 +8722 1 -1.8199753498347320e+01 2.5585585729446862e+01 1.0500000003148120e+01 0 0 0 +8773 1 -1.7077391091409901e+01 2.7804554454291967e+01 1.0500000013477763e+01 0 0 0 +8131 1 -1.5393907572374728e+01 2.8366034837022582e+01 8.7500000166750738e+00 0 0 0 +8182 1 -1.3149236827370803e+01 2.7269977272950978e+01 8.7499999959794614e+00 0 0 0 +8181 1 -1.1466172010785392e+01 2.7831673639624199e+01 6.9999999675495683e+00 0 0 0 +8184 1 -1.2587782402545594e+01 2.5612407515760513e+01 6.9999999691739312e+00 0 0 0 +8187 1 -1.0904485080451893e+01 2.6173778013202995e+01 8.7499999710799177e+00 0 0 0 +8234 1 -9.7824035156579221e+00 2.8393447564419198e+01 8.7499999369222632e+00 0 0 0 +8826 1 -1.1466171964506213e+01 2.7831673630205430e+01 1.0499999975142574e+01 0 0 0 +8829 1 -1.2587782305608828e+01 2.5612407534015585e+01 1.0499999989812652e+01 0 0 0 +8237 1 -6.9829704318061259e+00 2.5640563968803548e+01 6.9999999311246519e+00 0 0 0 +8239 1 -7.5396989423375986e+00 2.7299290022375843e+01 8.7499999476441612e+00 0 0 0 +8882 1 -6.9829704058465909e+00 2.5640563939197715e+01 1.0500000010371540e+01 0 0 0 +8284 1 -5.8404160376251832e+00 2.7856583875458877e+01 6.9999999097964718e+00 0 0 0 +8286 1 -5.3078132460064555e+00 2.6209377985216907e+01 8.7499999572318679e+00 0 0 0 +8287 1 -4.1395806000475863e+00 2.8402596154943421e+01 8.7499999674126219e+00 0 0 0 +8929 1 -5.8404160105375231e+00 2.7856583825498877e+01 1.0500000012176868e+01 0 0 0 +9346 1 -2.6056155338115282e+01 4.3256638895262839e+01 1.4000000057802749e+01 0 0 0 +8323 1 -1.2264314189303711e+00 2.5705199623877913e+01 6.9999998261629335e+00 0 0 0 +6766 1 -2.6056155326962685e+01 4.3256638892998375e+01 6.4274885858139896e-08 0 0 0 +8321 1 -1.7224968291108005e+00 2.7304612931908885e+01 8.7499998741277700e+00 0 0 0 +8968 1 -1.2264314245578201e+00 2.5705199672813109e+01 1.0499999899852181e+01 0 0 0 +7750 1 -4.4574832099439604e+01 3.1546411873914554e+01 8.7500000003251728e+00 0 0 0 +7755 1 -4.2330144156410874e+01 3.0450385103070573e+01 8.7500000166818293e+00 0 0 0 +8397 1 -4.4013660100884806e+01 2.9888908715741863e+01 1.0500000020936023e+01 0 0 0 +7806 1 -4.0085456236522411e+01 2.9354358387303563e+01 8.7500000216289493e+00 0 0 0 +7807 1 -3.8963112166719405e+01 3.1573337849573306e+01 8.7500000126380630e+00 0 0 0 +8398 1 -4.1768972160557354e+01 2.8792881907157980e+01 1.0500000019707013e+01 0 0 0 +8449 1 -4.0646628166137667e+01 3.1011861597579372e+01 1.0500000001940887e+01 0 0 0 +7858 1 -3.6718424208385379e+01 3.0477311026340224e+01 8.7499999889162314e+00 0 0 0 +8505 1 -3.6157252428128793e+01 2.8819807819810915e+01 1.0499999970290187e+01 0 0 0 +8450 1 -3.8401940203958553e+01 2.9915834773606363e+01 1.0499999996212054e+01 0 0 0 +7857 1 -3.5034908247622361e+01 3.1038787217973880e+01 7.0000000224286705e+00 0 0 0 +7863 1 -3.4473736387556933e+01 2.9381284104482834e+01 8.7499999788248051e+00 0 0 0 +7910 1 -3.3351392244034159e+01 3.1600263684963242e+01 8.7500000015266330e+00 0 0 0 +8502 1 -3.5034908139129740e+01 3.1038787247043960e+01 1.0499999984734485e+01 0 0 0 +8557 1 -3.2790220386316420e+01 2.9942760492999419e+01 1.0499999999490365e+01 0 0 0 +7913 1 -3.0545532506151350e+01 2.8846733791991465e+01 6.9999999707247325e+00 0 0 0 +7915 1 -3.1106704247611226e+01 3.0504236859665536e+01 8.7499999935168642e+00 0 0 0 +7964 1 -2.9423188274551645e+01 3.1065713465783510e+01 6.9999999623004321e+00 0 0 0 +8558 1 -3.0545532455732740e+01 2.8846733780182262e+01 1.0500000008459368e+01 0 0 0 +8609 1 -2.9423188213901859e+01 3.1065713447755471e+01 1.0500000018888723e+01 0 0 0 +7966 1 -2.8862016402729523e+01 2.9408210394156381e+01 8.7499999819952325e+00 0 0 0 +7967 1 -2.7739672002810021e+01 3.1627190096643748e+01 8.7499999815862406e+00 0 0 0 +8020 1 -2.4933812143346135e+01 2.8873660671961815e+01 7.0000000007634213e+00 0 0 0 +8018 1 -2.5494983976821178e+01 3.0531163693639314e+01 8.7500000160139120e+00 0 0 0 +8023 1 -2.3250295616496508e+01 2.9435137304110398e+01 8.7500000287931456e+00 0 0 0 +8665 1 -2.4933812083164309e+01 2.8873660694014628e+01 1.0499999990890588e+01 0 0 0 +8070 1 -2.2127952353979630e+01 3.1654117421872762e+01 8.7500000137222127e+00 0 0 0 +8072 1 -2.1566779359777829e+01 2.9996613844297674e+01 7.0000000410004954e+00 0 0 0 +8075 1 -1.9883265937417320e+01 3.0558091508727120e+01 8.7500000207030286e+00 0 0 0 +8717 1 -2.1566779358846741e+01 2.9996613849476041e+01 1.0499999999363320e+01 0 0 0 +8126 1 -1.7638583100479373e+01 2.9462065253939169e+01 8.7500000298309395e+00 0 0 0 +8127 1 -1.6516218923888172e+01 3.1681045532179159e+01 8.7500000462948382e+00 0 0 0 +8125 1 -1.5955086706225396e+01 3.0023556477968711e+01 6.9999999929061474e+00 0 0 0 +8178 1 -1.4271514048699560e+01 3.0585031993046631e+01 8.7499999956935746e+00 0 0 0 +8770 1 -1.5955086629623832e+01 3.0023556523855891e+01 1.0500000013920928e+01 0 0 0 +8232 1 -1.0342363204640524e+01 3.0050133401597886e+01 6.9999999438450322e+00 0 0 0 +8183 1 -1.2026826151425812e+01 2.9489083003177580e+01 8.7499999635945720e+00 0 0 0 +8230 1 -1.0904484985634449e+01 3.1707763968734824e+01 8.7499999383862868e+00 0 0 0 +8877 1 -1.0342363166520167e+01 3.0050133376636012e+01 1.0499999952380085e+01 0 0 0 +8235 1 -8.6590363705792974e+00 3.0610906928166912e+01 8.7499999412085767e+00 0 0 0 +8281 1 -4.7485634612388186e+00 3.0078751035135358e+01 6.9999999156684254e+00 0 0 0 +8282 1 -6.4095223421481862e+00 2.9511253312355823e+01 8.7499999497546455e+00 0 0 0 +8283 1 -5.3078132629094972e+00 3.1743364346506965e+01 8.7499999534686292e+00 0 0 0 +8926 1 -4.7485634121160505e+00 3.0078750975043175e+01 1.0499999994734775e+01 0 0 0 +8318 1 -3.1035847205428539e+00 3.0686802765797189e+01 8.7499999407555560e+00 0 0 0 +8322 1 -1.0571059215849268e+00 2.9604540833420931e+01 8.7499998696129122e+00 0 0 0 +7751 1 -4.3452488072025020e+01 3.3765391527636687e+01 8.7500000123217561e+00 0 0 0 +8394 1 -4.2891316077891361e+01 3.2107888284671638e+01 1.0500000017734765e+01 0 0 0 +7802 1 -4.1207800162028967e+01 3.2669364693272996e+01 8.7500000302707441e+00 0 0 0 +8445 1 -4.1768972039072807e+01 3.4326867844799438e+01 1.0500000016253333e+01 0 0 0 +8446 1 -3.9524284162410851e+01 3.3230841133744036e+01 1.0500000001095392e+01 0 0 0 +7854 1 -3.7840768109962042e+01 3.3792317420468621e+01 8.7499999911071935e+00 0 0 0 +7859 1 -3.5596080224154406e+01 3.2696290521762592e+01 8.7499999946597686e+00 0 0 0 +8498 1 -3.6157251976825336e+01 3.4353793642688501e+01 1.0499999997110871e+01 0 0 0 +8501 1 -3.7279596158943939e+01 3.2134814278217640e+01 1.0500000003219395e+01 0 0 0 +7908 1 -3.3912564092670451e+01 3.3257766796821301e+01 7.0000000033414000e+00 0 0 0 +8553 1 -3.3912564024655630e+01 3.3257766791302842e+01 1.0499999997778962e+01 0 0 0 +7911 1 -3.2229047959521182e+01 3.3819243148397952e+01 8.7499999945336544e+00 0 0 0 +7962 1 -2.9984359938436263e+01 3.2723216580675633e+01 8.7499999863916802e+00 0 0 0 +8605 1 -3.0545531834709465e+01 3.4380719703965717e+01 1.0500000010509488e+01 0 0 0 +8554 1 -3.1667876011814958e+01 3.2161739983787413e+01 1.0500000023539709e+01 0 0 0 +7961 1 -2.8300843935535717e+01 3.3284693211835538e+01 6.9999999585992549e+00 0 0 0 +8014 1 -2.6617327813741255e+01 3.3846169905738172e+01 8.7499999711484300e+00 0 0 0 +8606 1 -2.8300843894692395e+01 3.3284693180052514e+01 1.0499999993260625e+01 0 0 0 +8019 1 -2.4372639924435976e+01 3.2750143550663417e+01 8.7499999926530041e+00 0 0 0 +8069 1 -2.0444436534241351e+01 3.2215594924318978e+01 7.0000000352577816e+00 0 0 0 +8071 1 -2.1005606100956520e+01 3.3873096765095916e+01 8.7500000459261624e+00 0 0 0 +8714 1 -2.0444436512789302e+01 3.2215595003460670e+01 1.0500000015435736e+01 0 0 0 +8120 1 -1.9322088902808837e+01 3.4434571989304338e+01 7.0000000300840863e+00 0 0 0 +8122 1 -1.8760915128400942e+01 3.2777070315031558e+01 8.7500000496159629e+00 0 0 0 +8765 1 -1.9322088869882741e+01 3.4434572025063304e+01 1.0500000034070331e+01 0 0 0 +8173 1 -1.3710490687581443e+01 3.4461555676602288e+01 6.9999999824736534e+00 0 0 0 +8174 1 -1.5393907346461868e+01 3.3900020689313735e+01 8.7500000029458782e+00 0 0 0 +8176 1 -1.4832657763032678e+01 3.2242493032884802e+01 6.9999999929485286e+00 0 0 0 +8179 1 -1.3149236667691390e+01 3.2803963151395344e+01 8.7499999623587499e+00 0 0 0 +8818 1 -1.3710490618611185e+01 3.4461555680219931e+01 1.0499999963188133e+01 0 0 0 +8821 1 -1.4832657704052904e+01 3.2242493083903256e+01 1.0499999988629234e+01 0 0 0 +8231 1 -9.7824035574187960e+00 3.3927433489866623e+01 8.7499999350435935e+00 0 0 0 +8229 1 -9.2228634162618128e+00 3.2270006087317121e+01 6.9999999317480377e+00 0 0 0 +8276 1 -8.0950134438314727e+00 3.4487401214232200e+01 6.9999999036209539e+00 0 0 0 +8278 1 -7.5396990080327511e+00 3.2833276144509774e+01 8.7499999493152476e+00 0 0 0 +8874 1 -9.2228634042627249e+00 3.2270006053399555e+01 1.0499999956595966e+01 0 0 0 +8921 1 -8.0950134483770135e+00 3.4487401174196108e+01 1.0499999977382016e+01 0 0 0 +8316 1 -3.5610862221785280e+00 3.2292654364748159e+01 6.9999999611412971e+00 0 0 0 +8314 1 -4.1395808236433078e+00 3.3936582563381030e+01 8.7499999592236790e+00 0 0 0 +8961 1 -3.5610862001114278e+00 3.2292654282798111e+01 1.0499999988561894e+01 0 0 0 +8313 1 -2.5187338764368588e+00 3.4495609797954437e+01 6.9999999280834135e+00 0 0 0 +8319 1 -1.7224970519661362e+00 3.2838599556936565e+01 8.7499999360927863e+00 0 0 0 +8958 1 -2.5187338687123755e+00 3.4495609747578250e+01 1.0499999963959011e+01 0 0 0 +7747 1 -4.4574832051166773e+01 3.7080398055213990e+01 8.7499999898031326e+00 0 0 0 +7798 1 -4.2330144038315332e+01 3.5984371120823354e+01 8.7499999745632167e+00 0 0 0 +8391 1 -4.4013660029832771e+01 3.5422894813441289e+01 1.0500000020953795e+01 0 0 0 +8441 1 -4.2891315975605409e+01 3.7641874366288924e+01 1.0500000001521066e+01 0 0 0 +7803 1 -4.0085456009769032e+01 3.4888344278625183e+01 8.7499999956214136e+00 0 0 0 +7850 1 -3.8963111847598434e+01 3.7107323739409381e+01 8.7499999943102988e+00 0 0 0 +8442 1 -4.0646627948810583e+01 3.6545847548623037e+01 1.0499999995546696e+01 0 0 0 +7855 1 -3.6718423819760879e+01 3.6011296916901038e+01 8.7500000046757211e+00 0 0 0 +8494 1 -3.7279595796719001e+01 3.7668800137656021e+01 1.0499999987361564e+01 0 0 0 +8497 1 -3.8401939912154532e+01 3.5449820606596752e+01 1.0499999980618188e+01 0 0 0 +7905 1 -3.2790219891240532e+01 3.5476746389715331e+01 6.9999999975303533e+00 0 0 0 +7906 1 -3.4473735872100626e+01 3.4915269984705091e+01 8.7500000016961454e+00 0 0 0 +7907 1 -3.3351391729708340e+01 3.7134249607764431e+01 8.7500000070482056e+00 0 0 0 +8550 1 -3.2790219811837041e+01 3.5476746402241339e+01 1.0499999997354394e+01 0 0 0 +8549 1 -3.5034907723110024e+01 3.6572773151758895e+01 1.0500000014300069e+01 0 0 0 +7956 1 -3.1667875570847070e+01 3.7695726024707668e+01 6.9999999970951103e+00 0 0 0 +7958 1 -3.1106703693228166e+01 3.6038222834597150e+01 8.7499999951121374e+00 0 0 0 +8601 1 -3.1667875513448092e+01 3.7695725978167090e+01 1.0500000004969685e+01 0 0 0 +8009 1 -2.6056155411796261e+01 3.7722652707282471e+01 6.9999999689610073e+00 0 0 0 +8012 1 -2.7178499734872769e+01 3.5503672935391279e+01 6.9999999588160344e+00 0 0 0 +7963 1 -2.8862015816758554e+01 3.4942196345336740e+01 8.7499999843753393e+00 0 0 0 +8010 1 -2.7739671472136909e+01 3.7161176081361006e+01 8.7499999835347229e+00 0 0 0 +8654 1 -2.6056155440827258e+01 3.7722652704275589e+01 1.0500000007037888e+01 0 0 0 +8657 1 -2.7178499728113927e+01 3.5503672903003142e+01 1.0500000005161153e+01 0 0 0 +8015 1 -2.5494983471820117e+01 3.6065149581257195e+01 8.7499999801220500e+00 0 0 0 +8064 1 -2.3811467277773193e+01 3.6626626237245311e+01 7.0000000154674167e+00 0 0 0 +8066 1 -2.3250295135691932e+01 3.4969123110728241e+01 8.7500000084237310e+00 0 0 0 +8709 1 -2.3811467285288156e+01 3.6626626227306396e+01 1.0500000010571556e+01 0 0 0 +8067 1 -2.2127952024497233e+01 3.7188103253574560e+01 8.7500000407190353e+00 0 0 0 +8118 1 -1.9883265595275962e+01 3.6092077301233878e+01 8.7500000611098283e+00 0 0 0 +8117 1 -1.8199752875524474e+01 3.6653557421950438e+01 7.0000000268954246e+00 0 0 0 +8123 1 -1.7638582769923783e+01 3.4996051073135895e+01 8.7500000510101419e+00 0 0 0 +8170 1 -1.6516218791520348e+01 3.7215031371125626e+01 8.7499999966606019e+00 0 0 0 +8762 1 -1.8199752859324946e+01 3.6653557464814966e+01 1.0500000028677144e+01 0 0 0 +8175 1 -1.4271513959869207e+01 3.6119017831879788e+01 8.7499999640850898e+00 0 0 0 +8224 1 -1.2587782342019478e+01 3.6680379267538171e+01 6.9999999412019482e+00 0 0 0 +8226 1 -1.2026826157281597e+01 3.5023068847546611e+01 8.7499999320262916e+00 0 0 0 +8227 1 -1.0904485245350090e+01 3.7241749781109128e+01 8.7499999264854438e+00 0 0 0 +8869 1 -1.2587782271369122e+01 3.6680379308317519e+01 1.0499999950102371e+01 0 0 0 +8273 1 -6.9829706947484294e+00 3.6708536166617826e+01 6.9999999193790829e+00 0 0 0 +8274 1 -8.6590366427716159e+00 3.6144892824364433e+01 8.7499999346702602e+00 0 0 0 +8918 1 -6.9829707208283613e+00 3.6708536139504488e+01 1.0499999989466881e+01 0 0 0 +8279 1 -6.4095226271382169e+00 3.5045239460457246e+01 8.7499999582056667e+00 0 0 0 +8310 1 -5.3078135546900542e+00 3.7277350377824334e+01 8.7499999759815044e+00 0 0 0 +8315 1 -3.1035849221035225e+00 3.6220789086234440e+01 8.7499999828276440e+00 0 0 0 +8333 1 -1.2264314456713847e+00 3.6773172801006069e+01 7.0000000207547526e+00 0 0 0 +8334 1 -1.0571058478962763e+00 3.5138527349712014e+01 8.7499999881616528e+00 0 0 0 +8978 1 -1.2264314642934075e+00 3.6773172802781517e+01 1.0499999938597016e+01 0 0 0 +7794 1 -4.3452487895766033e+01 3.9299377677560294e+01 8.7499999842566858e+00 0 0 0 +8437 1 -4.4013659851950969e+01 4.0956881045167762e+01 1.0499999987462388e+01 0 0 0 +7799 1 -4.1207799930715630e+01 3.8203350677719421e+01 8.7499999750011810e+00 0 0 0 +7846 1 -4.0085455765907057e+01 4.0422330249715415e+01 8.7499999906366224e+00 0 0 0 +8493 1 -3.9524283870016944e+01 3.8764826981269621e+01 1.0500000006764866e+01 0 0 0 +8438 1 -4.1768971817389470e+01 3.9860853902689811e+01 1.0499999978254655e+01 0 0 0 +7851 1 -3.7840767785466156e+01 3.9326303297088785e+01 8.7500000209266791e+00 0 0 0 +7902 1 -3.5596079829895970e+01 3.8230276429514170e+01 8.7500000257175241e+00 0 0 0 +8490 1 -3.8401939674383712e+01 4.0983806521989486e+01 1.0500000006873375e+01 0 0 0 +8545 1 -3.6157251691985408e+01 3.9887779552268626e+01 1.0499999996234669e+01 0 0 0 +7903 1 -3.4473735561617247e+01 4.0449255954314985e+01 8.7500000155181432e+00 0 0 0 +8546 1 -3.3912563609125890e+01 3.8791752750486047e+01 1.0500000014358640e+01 0 0 0 +8597 1 -3.2790219497616739e+01 4.1010732427912181e+01 1.0500000005581418e+01 0 0 0 +7953 1 -3.0545531497820114e+01 3.9914705771996850e+01 6.9999999657185414e+00 0 0 0 +7954 1 -3.2229047524891875e+01 3.9353229173810995e+01 8.7499999959282899e+00 0 0 0 +7959 1 -2.9984359484895510e+01 3.8257202612914320e+01 8.7499999763773175e+00 0 0 0 +8598 1 -3.0545531445195696e+01 3.9914705776013250e+01 1.0499999993901989e+01 0 0 0 +8006 1 -2.8862015427583156e+01 4.0476182433754836e+01 8.7499999509856075e+00 0 0 0 +8011 1 -2.6617327451850404e+01 3.9380155920756941e+01 8.7499999767019503e+00 0 0 0 +8060 1 -2.4933811268282419e+01 3.9941632527987899e+01 6.9999999840713665e+00 0 0 0 +8062 1 -2.4372639533019377e+01 3.8284129442674548e+01 8.7499999817677843e+00 0 0 0 +8063 1 -2.3250294962941634e+01 4.0503109055076152e+01 8.7500000176399819e+00 0 0 0 +8061 1 -2.2689123394333240e+01 3.8845606341538229e+01 7.0000000282749326e+00 0 0 0 +8706 1 -2.2689123398497571e+01 3.8845606333871054e+01 1.0500000023945532e+01 0 0 0 +8705 1 -2.4933811285118669e+01 3.9941632553124101e+01 1.0500000004261503e+01 0 0 0 +8112 1 -2.1566778879766566e+01 4.1064585535378420e+01 7.0000000269191869e+00 0 0 0 +8114 1 -2.1005605942986112e+01 3.9407082595283974e+01 8.7500000420541006e+00 0 0 0 +8757 1 -2.1566778918647241e+01 4.1064585569227411e+01 1.0500000029713592e+01 0 0 0 +8119 1 -1.8760914979549323e+01 3.8311056145880904e+01 8.7500000319657723e+00 0 0 0 +8166 1 -1.7638582890611637e+01 4.0530036930298863e+01 8.7500000375164273e+00 0 0 0 +8168 1 -1.7077390833725527e+01 3.8872526113834475e+01 7.0000000355788741e+00 0 0 0 +8813 1 -1.7077390762688466e+01 3.8872526193503035e+01 1.0500000009226984e+01 0 0 0 +8165 1 -1.5955086654385482e+01 4.1091528141537900e+01 6.9999999983299244e+00 0 0 0 +8171 1 -1.5393907450111739e+01 3.9434006531279081e+01 8.7500000059532539e+00 0 0 0 +8222 1 -1.3149236869236125e+01 3.8337948960103887e+01 8.7499999703009248e+00 0 0 0 +8810 1 -1.5955086600318872e+01 4.1091528184807487e+01 1.0500000011029099e+01 0 0 0 +8221 1 -1.1466172238768710e+01 3.8899645267361237e+01 6.9999999326462952e+00 0 0 0 +8223 1 -1.2026826456723972e+01 4.0557054541002195e+01 8.7499999426196027e+00 0 0 0 +8268 1 -1.0342363664720729e+01 4.1118104829638213e+01 6.9999999263957182e+00 0 0 0 +8270 1 -9.7824039406036167e+00 3.9461419156544480e+01 8.7499999115633376e+00 0 0 0 +8866 1 -1.1466172206841515e+01 3.8899645253612107e+01 1.0499999954111862e+01 0 0 0 +8913 1 -1.0342363643226733e+01 4.1118104794483642e+01 1.0499999964692828e+01 0 0 0 +8275 1 -7.5396993674807797e+00 3.8367261931240087e+01 8.7499999261746417e+00 0 0 0 +8305 1 -4.7485638541817119e+00 4.1146722899118949e+01 6.9999999658094785e+00 0 0 0 +8306 1 -6.4095228606619461e+00 4.0579225046025655e+01 8.7499999432569471e+00 0 0 0 +8308 1 -5.8404164269494849e+00 3.8924555950105955e+01 6.9999999264768284e+00 0 0 0 +8311 1 -4.1395809370549479e+00 3.9470568452151660e+01 8.7499999922538034e+00 0 0 0 +8953 1 -5.8404164630270756e+00 3.8924555902420231e+01 1.0499999988678432e+01 0 0 0 +8950 1 -4.7485638771916516e+00 4.1146722859069648e+01 1.0499999978256078e+01 0 0 0 +8331 1 -1.7224971295869460e+00 3.8372585800611603e+01 8.7499999938521196e+00 0 0 0 +8332 1 -1.0571059788549995e+00 4.0672513418576870e+01 8.7499999989772981e+00 0 0 0 +9240 1 -3.1667875319993179e+01 4.3229712131165527e+01 1.4000000031444014e+01 0 0 0 +9245 1 -3.1106703435044292e+01 4.1572208976103411e+01 1.5750000054543229e+01 0 0 0 +7791 1 -4.4574831832010361e+01 4.2614384298889348e+01 8.7499999726162212e+00 0 0 0 +7795 1 -4.2330143803702882e+01 4.1518357229724046e+01 8.7499999757295157e+00 0 0 0 +8435 1 -4.2891315722917696e+01 4.3175860509499969e+01 1.0499999984941985e+01 0 0 0 +7843 1 -4.1207799694239242e+01 4.3737336765861272e+01 8.7500000075792848e+00 0 0 0 +7847 1 -3.8963111641916434e+01 4.2641309699043425e+01 8.7500000154753472e+00 0 0 0 +8489 1 -4.0646627735482134e+01 4.2079833537045232e+01 1.0499999985305898e+01 0 0 0 +7898 1 -3.6718423539528835e+01 4.1545282820797823e+01 8.7500000236730138e+00 0 0 0 +7899 1 -3.5596079638862221e+01 4.3764262399477566e+01 8.7500000411961665e+00 0 0 0 +8541 1 -3.7279595626175244e+01 4.3202786067214561e+01 1.0500000023435613e+01 0 0 0 +7951 1 -3.3351391513521740e+01 4.2668235679136473e+01 8.7500000227451409e+00 0 0 0 +8542 1 -3.5034907453976977e+01 4.2106759098513471e+01 1.0500000009826433e+01 0 0 0 +7955 1 -3.1106703381608789e+01 4.1572208921181485e+01 8.7499999971571931e+00 0 0 0 +8003 1 -2.9984359310227958e+01 4.3791188803526779e+01 8.7499999631961352e+00 0 0 0 +8004 1 -2.9423187455476132e+01 4.2133685583224917e+01 6.9999999550420418e+00 0 0 0 +8649 1 -2.9423187414170176e+01 4.2133685605026841e+01 1.0499999989590902e+01 0 0 0 +8595 1 -3.1667875298298149e+01 4.3229712110884620e+01 1.0500000016633473e+01 0 0 0 +8007 1 -2.7739671293955936e+01 4.2695162241656327e+01 8.7499999419272658e+00 0 0 0 +8058 1 -2.5494983277302445e+01 4.1599135668079846e+01 8.7499999878348547e+00 0 0 0 +8059 1 -2.4372639545071994e+01 4.3818115553344605e+01 8.7499999737686700e+00 0 0 0 +8702 1 -2.3811467228542909e+01 4.2160612240884412e+01 1.0500000012813880e+01 0 0 0 +8110 1 -2.0444436364561536e+01 4.3283566613910317e+01 7.0000000309518144e+00 0 0 0 +8111 1 -2.2127952033886878e+01 4.2722089202114702e+01 8.7500000070595316e+00 0 0 0 +8115 1 -1.9883265656843367e+01 4.1626063168675017e+01 8.7500000244025493e+00 0 0 0 +8755 1 -2.0444436384031420e+01 4.3283566686390792e+01 1.0500000016490423e+01 0 0 0 +8163 1 -1.8760915115723872e+01 4.3845041933775626e+01 8.7500000353918566e+00 0 0 0 +8167 1 -1.6516218978935534e+01 4.2749017159735750e+01 8.7500000283980164e+00 0 0 0 +8216 1 -1.4832657951114953e+01 4.3310464558278383e+01 7.0000000021218476e+00 0 0 0 +8218 1 -1.4271514192544839e+01 4.1653003586611007e+01 8.7499999792558025e+00 0 0 0 +8219 1 -1.3149237027765817e+01 4.3871934541574461e+01 8.7499999721484798e+00 0 0 0 +8861 1 -1.4832657906052495e+01 4.3310464624188846e+01 1.0500000012550489e+01 0 0 0 +8267 1 -1.0904485496189347e+01 4.2775735274505990e+01 8.7499999430879747e+00 0 0 0 +8266 1 -9.2228639908025940e+00 4.3337977274813341e+01 6.9999999299922839e+00 0 0 0 +8271 1 -8.6590369520012924e+00 4.1678878306976578e+01 8.7499999298099063e+00 0 0 0 +8303 1 -7.5396996137582288e+00 4.3901247278443371e+01 8.7499999494107659e+00 0 0 0 +8911 1 -9.2228639894882072e+00 4.3337977218256903e+01 1.0499999977491637e+01 0 0 0 +8307 1 -5.3078137401679353e+00 4.2811335847321331e+01 8.7499999522782446e+00 0 0 0 +8326 1 -3.5610864894612884e+00 4.3360625983302263e+01 7.0000000153596629e+00 0 0 0 +8971 1 -3.5610865227096835e+00 4.3360625969363625e+01 1.0499999947021777e+01 0 0 0 +8328 1 -3.1035849628918109e+00 4.1754774759806402e+01 8.7499999918800562e+00 0 0 0 +8329 1 -1.7224971923804413e+00 4.3906571469021010e+01 8.7500000038762948e+00 0 0 0 +8339 1 -4.5136003447599990e+01 -2.2256225497494752e-07 1.0499999942241397e+01 0 0 0 +8337 1 -4.4013659668553800e+01 2.2189793292124866e+00 1.0499999926517837e+01 0 0 0 +8340 1 -4.3452487597095036e+01 5.6147606835466934e-01 1.2249999983432650e+01 0 0 0 +8354 1 -4.2330143940821642e+01 2.7804555661386394e+00 1.2249999976280545e+01 0 0 0 +8356 1 -4.1768971807194987e+01 1.1229522889328114e+00 1.0499999971440161e+01 0 0 0 +8358 1 -4.0085456134423410e+01 1.6844286713062857e+00 1.2249999976499497e+01 0 0 0 +8357 1 -3.9524284087785155e+01 2.6925461719607937e-02 1.0500000005599132e+01 0 0 0 +8386 1 -3.8401940438910124e+01 2.2459050083709458e+00 1.0500000045103873e+01 0 0 0 +8387 1 -3.6157252655958182e+01 1.1498781528941941e+00 1.0500000027735878e+01 0 0 0 +8388 1 -3.7840768418002703e+01 5.8840179110125923e-01 1.2249999984822695e+01 0 0 0 +8389 1 -3.6718424699757982e+01 2.8073814251238138e+00 1.2250000013189746e+01 0 0 0 +8431 1 -3.4473736926490261e+01 1.7113545805370731e+00 1.2250000027684054e+01 0 0 0 +9075 1 -3.2790221298645804e+01 2.2728310399489651e+00 1.4000000001025500e+01 0 0 0 +9078 1 -3.3912564833640211e+01 5.3851391736283935e-02 1.3999999994457683e+01 0 0 0 +8485 1 -3.0545533359691579e+01 1.1768043582229879e+00 1.0499999961259947e+01 0 0 0 +8434 1 -3.2229049087831555e+01 6.1532778865771975e-01 1.2249999980935343e+01 0 0 0 +8483 1 -3.1106705450291919e+01 2.8343074926024134e+00 1.2249999998396536e+01 0 0 0 +8487 1 -2.8862017572569105e+01 1.7382809524451381e+00 1.2249999976625801e+01 0 0 0 +8539 1 -2.6617329470097236e+01 6.4225450028168962e-01 1.2249999989411769e+01 0 0 0 +9182 1 -2.7178501698341165e+01 2.2997575070748035e+00 1.3999999978877032e+01 0 0 0 +9131 1 -2.8300845327031091e+01 8.0777764107977948e-02 1.4000000012339383e+01 0 0 0 +8538 1 -2.4933813420648324e+01 1.2037311873658161e+00 1.0500000026838944e+01 0 0 0 +8540 1 -2.5494985604924892e+01 2.8612342485843678e+00 1.2249999990895065e+01 0 0 0 +8591 1 -2.3250297141225051e+01 1.7652078159516384e+00 1.2249999996517124e+01 0 0 0 +8593 1 -2.2689125430340280e+01 1.0770505851792918e-01 1.0500000007991355e+01 0 0 0 +8590 1 -2.1566781061969461e+01 2.3266843426348300e+00 1.0500000005798537e+01 0 0 0 +8594 1 -2.1005608017432216e+01 6.6918127720594955e-01 1.2250000021443944e+01 0 0 0 +8643 1 -1.9883267799459134e+01 2.8881619213971259e+00 1.2250000023344708e+01 0 0 0 +8647 1 -1.7638584927149672e+01 1.7921353678028960e+00 1.2250000017431065e+01 0 0 0 +9290 1 -1.9322090950096985e+01 1.2306564400124385e+00 1.4000000042880012e+01 0 0 0 +8646 1 -1.7077392820840537e+01 1.3462435942053858e-01 1.0500000001637449e+01 0 0 0 +8697 1 -1.5955088602441956e+01 2.3536263785007656e+00 1.0500000001151587e+01 0 0 0 +8699 1 -1.5393909365216361e+01 6.9610451698324038e-01 1.2250000022345095e+01 0 0 0 +8700 1 -1.4271515943797880e+01 2.9151016043567446e+00 1.2249999995475003e+01 0 0 0 +9343 1 -1.3710492559073845e+01 1.2576392269810341e+00 1.3999999996263220e+01 0 0 0 +8750 1 -1.0342364875665549e+01 2.3802018752121326e+00 1.0500000007189250e+01 0 0 0 +8751 1 -1.2026827937017002e+01 1.8191519449305960e+00 1.2249999994640492e+01 0 0 0 +8754 1 -9.7824051299904440e+00 7.2351583532912878e-01 1.2249999952164139e+01 0 0 0 +8753 1 -1.1466173644082758e+01 1.6174229114065952e-01 1.0500000000863757e+01 0 0 0 +8803 1 -8.6590379538217164e+00 2.9409750056006696e+00 1.2249999995060730e+01 0 0 0 +9450 1 -8.0950148042021706e+00 1.2834830219527780e+00 1.4000000029210243e+01 0 0 0 +8807 1 -6.4095237297596972e+00 1.8413208558236689e+00 1.2250000030429709e+01 0 0 0 +8857 1 -4.7485646236764092e+00 2.4088182900426780e+00 1.0499999982050145e+01 0 0 0 +8859 1 -4.1395816772681808e+00 7.3266349947659315e-01 1.2250000059983320e+01 0 0 0 +8806 1 -5.8404172753796377e+00 1.8665130208964484e-01 1.0499999983952804e+01 0 0 0 +8860 1 -3.1035854429414118e+00 3.0168697648076366e+00 1.2250000034584451e+01 0 0 0 +8910 1 -1.0571062511768348e+00 1.9346079049054279e+00 1.2249999947725403e+01 0 0 0 +9293 1 -2.9984359352656593e+01 4.3791188818978831e+01 1.5750000061226906e+01 0 0 0 +9503 1 -2.5187345047620027e+00 1.2916904679864112e+00 1.4000000027387815e+01 0 0 0 +6660 1 -3.1667875412337050e+01 4.3229712139246274e+01 2.6841920686138110e-08 0 0 0 +8338 1 -4.4574831800283377e+01 3.8764825087959300e+00 1.2249999953328185e+01 0 0 0 +8350 1 -4.3452488007347718e+01 6.0954620206293528e+00 1.2249999962455096e+01 0 0 0 +8352 1 -4.2891315989925253e+01 4.4379587695692235e+00 1.0499999977892026e+01 0 0 0 +8382 1 -3.9524284635608602e+01 5.5609114857040796e+00 1.0500000036950093e+01 0 0 0 +8353 1 -4.0646628187005859e+01 3.3419319629031774e+00 1.0500000007834224e+01 0 0 0 +8355 1 -4.1207800292636257e+01 4.9994351138600006e+00 1.2250000009502047e+01 0 0 0 +8384 1 -3.8963112532810065e+01 3.9034081911322622e+00 1.2250000012330682e+01 0 0 0 +8383 1 -3.7279596871484109e+01 4.4648846667327904e+00 1.0500000068080722e+01 0 0 0 +8385 1 -3.7840768979598195e+01 6.1223878277904573e+00 1.2250000007337603e+01 0 0 0 +8427 1 -3.5596081267702417e+01 5.0263610244826680e+00 1.2250000001175490e+01 0 0 0 +8426 1 -3.3912565492424946e+01 5.5878373945998838e+00 1.0500000009768021e+01 0 0 0 +8429 1 -3.5034909039435142e+01 3.3688577443796275e+00 1.0500000034614226e+01 0 0 0 +8432 1 -3.3351393397217649e+01 3.9303342634318490e+00 1.2250000037530677e+01 0 0 0 +8482 1 -2.9423189737127160e+01 3.3957840547138720e+00 1.0499999969814342e+01 0 0 0 +8479 1 -3.2229049710774554e+01 6.1493138017200302e+00 1.2250000029573380e+01 0 0 0 +8484 1 -2.9984361770971507e+01 5.0532871879572019e+00 1.2249999987972810e+01 0 0 0 +9126 1 -3.1667877546551079e+01 4.4918106299236698e+00 1.4000000005690563e+01 0 0 0 +8533 1 -2.8300845939878826e+01 5.6147637941077271e+00 1.0499999973405515e+01 0 0 0 +8535 1 -2.7739673724571094e+01 3.9572606911475310e+00 1.2249999975811317e+01 0 0 0 +8536 1 -2.6617330042678105e+01 6.1762405605486297e+00 1.2249999997370546e+01 0 0 0 +9179 1 -2.6056157798415931e+01 4.5187373196912448e+00 1.3999999989889425e+01 0 0 0 +8587 1 -2.4372641998590471e+01 5.0802141913405734e+00 1.2250000020891541e+01 0 0 0 +9234 1 -2.3811469556831103e+01 3.4227109637166691e+00 1.3999999958158707e+01 0 0 0 +9231 1 -2.2689125884180797e+01 5.6416911628636139e+00 1.4000000003216817e+01 0 0 0 +8592 1 -2.2127954326821129e+01 3.9841880426051870e+00 1.2250000002694753e+01 0 0 0 +8639 1 -2.1005608353969286e+01 6.2031674828392420e+00 1.2250000013686808e+01 0 0 0 +8641 1 -2.0444438578875836e+01 4.5456655463923221e+00 1.0499999990505733e+01 0 0 0 +8644 1 -1.8760917264637847e+01 5.1071408181041242e+00 1.2250000028589215e+01 0 0 0 +8695 1 -1.6516220981771372e+01 4.0111156245385144e+00 1.2250000047201420e+01 0 0 0 +9287 1 -1.8199755104674072e+01 3.4496419459502534e+00 1.4000000075702141e+01 0 0 0 +9338 1 -1.7077392996391005e+01 5.6686106143433053e+00 1.4000000055043628e+01 0 0 0 +8694 1 -1.4832659747466913e+01 4.5725628681080455e+00 1.0500000003959711e+01 0 0 0 +8696 1 -1.5393909456166398e+01 6.2300907590957495e+00 1.2249999987521807e+01 0 0 0 +8747 1 -1.3149238600904447e+01 5.1340326823762057e+00 1.2249999964771863e+01 0 0 0 +8752 1 -1.0904486761052981e+01 4.0378327756214212e+00 1.2249999975038206e+01 0 0 0 +8799 1 -9.7824050784722303e+00 6.2575021714750623e+00 1.2249999985724633e+01 0 0 0 +9391 1 -1.1466173666642595e+01 5.6957286681064385e+00 1.3999999968831455e+01 0 0 0 +9394 1 -1.2587784056551381e+01 3.4764627140282580e+00 1.3999999987010622e+01 0 0 0 +8801 1 -9.2228649740950175e+00 4.6000743990982551e+00 1.0499999996354141e+01 0 0 0 +8804 1 -7.5397003340586988e+00 5.1633440145026226e+00 1.2249999997310438e+01 0 0 0 +9447 1 -6.9829718064722783e+00 3.5046178456043222e+00 1.4000000054726367e+01 0 0 0 +8854 1 -3.5610870680902669e+00 4.6227213483595486e+00 1.0499999986678114e+01 0 0 0 +8855 1 -5.3078143856367443e+00 4.0734316836251061e+00 1.2250000027665628e+01 0 0 0 +8856 1 -4.1395816071589344e+00 6.2666496975485995e+00 1.2250000015253601e+01 0 0 0 +9498 1 -5.8404172778648356e+00 5.7206375207914517e+00 1.4000000063237930e+01 0 0 0 +8907 1 -1.7224975918413956e+00 5.1686664321697577e+00 1.2250000021227864e+01 0 0 0 +9241 1 -3.3351391571187825e+01 4.2668235657927902e+01 1.5750000021967184e+01 0 0 0 +9554 1 -1.2264317268089859e+00 3.5692532630355456e+00 1.4000000002629879e+01 0 0 0 +8348 1 -4.4013660010673824e+01 7.7529652633595285e+00 1.0499999977580535e+01 0 0 0 +8346 1 -4.4574832070085165e+01 9.4104683827121161e+00 1.2249999995114456e+01 0 0 0 +8351 1 -4.2330144296372808e+01 8.3144415706974524e+00 1.2249999982739133e+01 0 0 0 +8349 1 -4.1768972261525263e+01 6.6569383235053179e+00 1.0500000004250385e+01 0 0 0 +8380 1 -4.0085456593790752e+01 7.2184147066875735e+00 1.2249999984663869e+01 0 0 0 +8381 1 -3.8963112895942395e+01 9.4373942152964059e+00 1.2249999987727531e+01 0 0 0 +9023 1 -4.0646628587999466e+01 8.8759179757324169e+00 1.3999999958293165e+01 0 0 0 +8379 1 -3.8401940923950782e+01 7.7798910559732946e+00 1.0500000048596942e+01 0 0 0 +8423 1 -3.6718425174395705e+01 8.3413674358287846e+00 1.2250000027133980e+01 0 0 0 +8425 1 -3.6157253238080948e+01 6.6838641528445679e+00 1.0500000039019566e+01 0 0 0 +9070 1 -3.6157253252041734e+01 6.6838641774407090e+00 1.3999999980200950e+01 0 0 0 +8477 1 -3.2790221838156434e+01 7.8068170294382719e+00 1.0499999982119004e+01 0 0 0 +8428 1 -3.4473737475539686e+01 7.2453405768607722e+00 1.2250000010443507e+01 0 0 0 +8475 1 -3.3351393835905434e+01 9.4643202518064129e+00 1.2250000000975783e+01 0 0 0 +9067 1 -3.5034909512251105e+01 8.9028437213838529e+00 1.3999999976659046e+01 0 0 0 +8480 1 -3.1106705945341648e+01 8.3682934913215572e+00 1.2250000025382054e+01 0 0 0 +9123 1 -3.0545533929016710e+01 6.7107903573908523e+00 1.4000000031567147e+01 0 0 0 +9174 1 -2.9423190174339826e+01 8.9297700422071653e+00 1.4000000019541604e+01 0 0 0 +8530 1 -2.7178502149977774e+01 7.8337435846083148e+00 1.0500000006403786e+01 0 0 0 +8531 1 -2.8862018077391397e+01 7.2722669737910497e+00 1.2250000028624362e+01 0 0 0 +8532 1 -2.7739674089576482e+01 9.4912466989063287e+00 1.2250000003429154e+01 0 0 0 +8582 1 -2.3811469841003834e+01 8.9566970475667365e+00 1.0500000022738577e+01 0 0 0 +8583 1 -2.5494986013688187e+01 8.3952203023530334e+00 1.2249999989478084e+01 0 0 0 +8588 1 -2.3250297512111047e+01 7.2991939160298891e+00 1.2249999984997295e+01 0 0 0 +9230 1 -2.4933813903630252e+01 6.7377172213161334e+00 1.3999999989212384e+01 0 0 0 +8635 1 -2.2127954492972219e+01 9.5181741101216755e+00 1.2250000020933294e+01 0 0 0 +8640 1 -1.9883267973934679e+01 8.4221480612487678e+00 1.2250000024189898e+01 0 0 0 +9282 1 -2.1566781355762270e+01 7.8606704546181918e+00 1.4000000010895707e+01 0 0 0 +8638 1 -1.9322091182766261e+01 6.7646426460324518e+00 1.0499999994958060e+01 0 0 0 +8689 1 -1.8199755149919202e+01 8.9836280840018645e+00 1.0499999986985591e+01 0 0 0 +8691 1 -1.7638585058232202e+01 7.3261215709636929e+00 1.2250000036023829e+01 0 0 0 +8692 1 -1.6516220906965970e+01 9.5451017717615709e+00 1.2250000004165319e+01 0 0 0 +8743 1 -1.4271515845360543e+01 8.4490878311021191e+00 1.2249999982433739e+01 0 0 0 +8745 1 -1.3710492591723966e+01 6.7916254344982363e+00 1.0500000010242749e+01 0 0 0 +9335 1 -1.5955088594349396e+01 7.8876126643532851e+00 1.4000000041582059e+01 0 0 0 +8742 1 -1.2587783863556638e+01 9.0104489429315695e+00 1.0500000004578254e+01 0 0 0 +8748 1 -1.2026827855165328e+01 7.3531382427485070e+00 1.2249999946934594e+01 0 0 0 +8795 1 -1.0904486470834888e+01 9.5718191030501920e+00 1.2249999957651291e+01 0 0 0 +9442 1 -1.0342364748674955e+01 7.9141882499242842e+00 1.3999999966675029e+01 0 0 0 +8798 1 -8.0950146378916656e+00 6.8174693613248101e+00 1.0499999998746215e+01 0 0 0 +8800 1 -8.6590377203387767e+00 8.4749613540448205e+00 1.2249999984747001e+01 0 0 0 +8849 1 -6.9829714629496555e+00 9.0386042442930812e+00 1.0499999984233728e+01 0 0 0 +8851 1 -6.4095235721134154e+00 7.3753071540063493e+00 1.2250000017312374e+01 0 0 0 +8852 1 -5.3078141158122039e+00 9.6074180406841503e+00 1.2250000027223853e+01 0 0 0 +9495 1 -4.7485645002126962e+00 7.9428045403706786e+00 1.4000000081161751e+01 0 0 0 +8902 1 -1.2264316799821724e+00 9.1032395701863074e+00 1.0499999972545162e+01 0 0 0 +8903 1 -3.1035853600639309e+00 8.5508560813878116e+00 1.2250000033044246e+01 0 0 0 +8905 1 -2.5187344513983563e+00 6.8256766808626361e+00 1.0499999963578214e+01 0 0 0 +8908 1 -1.0571061314275010e+00 7.4685940894057534e+00 1.2250000044439917e+01 0 0 0 +6607 1 -3.5034907574077977e+01 4.2106759106964226e+01 1.7499999988856221e+01 0 0 -1 +8347 1 -4.3452488272699306e+01 1.1629447908254839e+01 1.2249999989167776e+01 0 0 0 +8990 1 -4.2891316317713681e+01 9.9719447093112841e+00 1.3999999965270687e+01 0 0 0 +8376 1 -4.1207800599995828e+01 1.0533421101248534e+01 1.2249999965901175e+01 0 0 0 +9019 1 -4.1768972516058312e+01 1.2190924289952267e+01 1.3999999981565129e+01 0 0 0 +9020 1 -3.9524284965015731e+01 1.1094897477506899e+01 1.3999999951020481e+01 0 0 0 +8418 1 -3.6157253481396296e+01 1.2217850163594330e+01 1.0500000025993904e+01 0 0 0 +8421 1 -3.7279597287695452e+01 9.9988706718475360e+00 1.0500000035514525e+01 0 0 0 +8419 1 -3.7840769252265126e+01 1.1656373829999689e+01 1.2249999985418134e+01 0 0 0 +8424 1 -3.5596081631125649e+01 1.0560347014398616e+01 1.2250000025938792e+01 0 0 0 +9118 1 -3.3912565809536737e+01 1.1121823374740082e+01 1.4000000021752481e+01 0 0 0 +8474 1 -3.1667877939954270e+01 1.0025796634352885e+01 1.0499999972345671e+01 0 0 0 +8525 1 -3.0545534114459944e+01 1.2244776319811054e+01 1.0499999971639307e+01 0 0 0 +8476 1 -3.2229049973059588e+01 1.1683299777087225e+01 1.2249999995205551e+01 0 0 0 +8527 1 -2.9984362098290340e+01 1.0587273204434057e+01 1.2250000012136157e+01 0 0 0 +8581 1 -2.6056158071725701e+01 1.0052723363367027e+01 1.0500000021154408e+01 0 0 0 +8579 1 -2.6617330159084862e+01 1.1710226568898422e+01 1.2250000031100139e+01 0 0 0 +9171 1 -2.8300846155260317e+01 1.1148749816675064e+01 1.4000000026056453e+01 0 0 0 +8578 1 -2.4933813918562770e+01 1.2271703260357882e+01 1.0500000045811849e+01 0 0 0 +8584 1 -2.4372642198197486e+01 1.0614200236094110e+01 1.2249999999217208e+01 0 0 0 +8633 1 -2.2689125917574554e+01 1.1175677237578498e+01 1.0500000016633157e+01 0 0 0 +8636 1 -2.1005608295944125e+01 1.1737153485498977e+01 1.2250000014793025e+01 0 0 0 +9279 1 -2.0444438678564673e+01 1.0079651605618535e+01 1.4000000040902615e+01 0 0 0 +8686 1 -1.7077392791799411e+01 1.1202596694762857e+01 1.0500000004312998e+01 0 0 0 +8687 1 -1.8760917198676349e+01 1.0641126890961337e+01 1.2250000013219744e+01 0 0 0 +9330 1 -1.9322091030617813e+01 1.2298628663171243e+01 1.4000000038829231e+01 0 0 0 +8739 1 -1.5393909137466188e+01 1.1764076868852724e+01 1.2250000010503143e+01 0 0 0 +8744 1 -1.3149238264067629e+01 1.0668018888033794e+01 1.2249999963369939e+01 0 0 0 +9383 1 -1.3710492179366071e+01 1.2325611688074147e+01 1.3999999972413153e+01 0 0 0 +9386 1 -1.4832659530613601e+01 1.0106549100807449e+01 1.4000000004037457e+01 0 0 0 +8793 1 -1.1466173248452463e+01 1.1229714911233419e+01 1.0499999995436202e+01 0 0 0 +8796 1 -9.7824046517249137e+00 1.1791488539184359e+01 1.2249999941255869e+01 0 0 0 +8847 1 -7.5396999930582611e+00 1.0697330434195168e+01 1.2249999994258962e+01 0 0 0 +9439 1 -9.2228646922040607e+00 1.0134060780755473e+01 1.3999999997052972e+01 0 0 0 +9490 1 -8.0950142949461430e+00 1.2351455791665796e+01 1.4000000029451950e+01 0 0 0 +8846 1 -5.8404168932570872e+00 1.1254624004624702e+01 1.0499999990242546e+01 0 0 0 +8899 1 -4.1395813668958947e+00 1.1800636143155106e+01 1.2250000049715098e+01 0 0 0 +9546 1 -3.5610868835348319e+00 1.0156707653771477e+01 1.4000000074294920e+01 0 0 0 +8904 1 -1.7224974307108438e+00 1.0702652761072283e+01 1.2250000009535970e+01 0 0 0 +9543 1 -2.5187342763079625e+00 1.2359663065634129e+01 1.4000000123504265e+01 0 0 0 +9188 1 -3.6718423597907965e+01 4.1545282840509763e+01 1.5749999983397899e+01 0 0 0 +8343 1 -4.4574832231567598e+01 1.4944454160920632e+01 1.2249999981919439e+01 0 0 0 +8372 1 -4.2330144481886087e+01 1.3848427485450170e+01 1.2249999981104935e+01 0 0 0 +9015 1 -4.2891316424165986e+01 1.5505930533022189e+01 1.3999999967220495e+01 0 0 0 +8987 1 -4.4013660238610647e+01 1.3286951114076553e+01 1.3999999995802666e+01 0 0 0 +8377 1 -4.0085456796355871e+01 1.2752400719379541e+01 1.2249999996492489e+01 0 0 0 +8415 1 -3.8963112974222476e+01 1.4971380198189829e+01 1.2250000005160778e+01 0 0 0 +9016 1 -4.0646628739292218e+01 1.4409903935350338e+01 1.3999999947674052e+01 0 0 0 +8420 1 -3.6718425292374661e+01 1.3875353431338560e+01 1.2249999998224615e+01 0 0 0 +9062 1 -3.8401941131736940e+01 1.3313877059337816e+01 1.3999999969097916e+01 0 0 0 +9059 1 -3.7279597287542899e+01 1.5532856641593879e+01 1.3999999981506788e+01 0 0 0 +8469 1 -3.5034909575423733e+01 1.4436829707708270e+01 1.0500000023951845e+01 0 0 0 +8471 1 -3.4473737693160913e+01 1.2779326557060608e+01 1.2250000024346145e+01 0 0 0 +8472 1 -3.3351393825106740e+01 1.4998306183963980e+01 1.2250000035539662e+01 0 0 0 +9115 1 -3.2790221957301334e+01 1.3340802999230519e+01 1.4000000012679392e+01 0 0 0 +8522 1 -2.9423190084131779e+01 1.4463756022491527e+01 1.0499999990687545e+01 0 0 0 +8523 1 -3.1106705979017182e+01 1.3902279448379272e+01 1.2250000024409339e+01 0 0 0 +9166 1 -3.1667877831807786e+01 1.5559782546185767e+01 1.4000000023583709e+01 0 0 0 +8528 1 -2.8862018175823660e+01 1.2806252966014727e+01 1.2250000001760988e+01 0 0 0 +8575 1 -2.7739673908881123e+01 1.5025232677411045e+01 1.2250000001348621e+01 0 0 0 +9219 1 -2.6056157821004387e+01 1.5586709318543516e+01 1.4000000030789144e+01 0 0 0 +9222 1 -2.7178502140002145e+01 1.3367729529469328e+01 1.3999999996060442e+01 0 0 0 +8580 1 -2.5494985873412052e+01 1.3929206265941421e+01 1.2250000021169450e+01 0 0 0 +8631 1 -2.3250297446790029e+01 1.2833179889630589e+01 1.2250000023583684e+01 0 0 0 +9274 1 -2.3811469637872950e+01 1.4490682987441119e+01 1.4000000012300474e+01 0 0 0 +8630 1 -2.1566781150455618e+01 1.3394656418537496e+01 1.0500000015654388e+01 0 0 0 +8632 1 -2.2127954209903592e+01 1.5052160036066651e+01 1.2250000038292349e+01 0 0 0 +8681 1 -2.0444438275677030e+01 1.5613637519496336e+01 1.0500000001879037e+01 0 0 0 +8683 1 -1.9883267696324310e+01 1.3956134010311319e+01 1.2250000026877647e+01 0 0 0 +8688 1 -1.7638584747575639e+01 1.2860107578265859e+01 1.2249999998790392e+01 0 0 0 +8735 1 -1.6516220445376582e+01 1.5079087795959301e+01 1.2250000020872935e+01 0 0 0 +9327 1 -1.8199754788789271e+01 1.4517614056749586e+01 1.4000000058915489e+01 0 0 0 +8734 1 -1.4832659044510560e+01 1.5640535171498435e+01 1.0499999983129340e+01 0 0 0 +8737 1 -1.5955088208160982e+01 1.3421598669883496e+01 1.0499999985782882e+01 0 0 0 +8740 1 -1.4271515364685689e+01 1.3983073970205030e+01 1.2249999987239132e+01 0 0 0 +8790 1 -1.0342364237486384e+01 1.3448174596206142e+01 1.0499999977635056e+01 0 0 0 +8791 1 -1.2026827375780440e+01 1.2887124508193946e+01 1.2249999963565784e+01 0 0 0 +8792 1 -1.0904485978253003e+01 1.5105805443762076e+01 1.2249999947595557e+01 0 0 0 +9434 1 -1.2587783386349003e+01 1.4544435222635146e+01 1.3999999954115109e+01 0 0 0 +8841 1 -9.2228641600364103e+00 1.5668047236543721e+01 1.0499999964069042e+01 0 0 0 +8843 1 -8.6590372859155185e+00 1.4008947819213917e+01 1.2249999980441425e+01 0 0 0 +9487 1 -6.9829711544741349e+00 1.4572590744783600e+01 1.4000000065047512e+01 0 0 0 +8894 1 -3.5610864804983877e+00 1.5690694331357063e+01 1.0499999998003611e+01 0 0 0 +8897 1 -4.7485641063500825e+00 1.3476791129463344e+01 1.0499999979513797e+01 0 0 0 +8848 1 -6.4095232056343372e+00 1.2909293646408660e+01 1.2250000028203983e+01 0 0 0 +8895 1 -5.3078137564562295e+00 1.5141404631284264e+01 1.2250000040407432e+01 0 0 0 +8900 1 -3.1035851371308523e+00 1.4084842683996861e+01 1.2250000050736313e+01 0 0 0 +8946 1 -1.0571060238513295e+00 1.3002580548746295e+01 1.2249999990637590e+01 0 0 0 +9590 1 -1.2264315760226727e+00 1.4637226046345070e+01 1.4000000099780518e+01 0 0 0 +9189 1 -3.5596079676485189e+01 4.3764262397509306e+01 1.5749999997763299e+01 0 0 0 +8368 1 -4.3452488297903287e+01 1.7163433713415266e+01 1.2249999979954930e+01 0 0 0 +9011 1 -4.4013660211419889e+01 1.8820936853255070e+01 1.3999999993280650e+01 0 0 0 +8373 1 -4.1207800640401828e+01 1.6067407037792982e+01 1.2249999999024219e+01 0 0 0 +8411 1 -4.0085456694021026e+01 1.8286386655158466e+01 1.2250000002392152e+01 0 0 0 +9058 1 -3.9524284955200550e+01 1.6628883462276697e+01 1.3999999975104728e+01 0 0 0 +9012 1 -4.1768972481543159e+01 1.7724910152900510e+01 1.3999999973383344e+01 0 0 0 +8416 1 -3.7840769149871704e+01 1.7190359832166916e+01 1.2250000017428450e+01 0 0 0 +8467 1 -3.5596081579970736e+01 1.6094332969141412e+01 1.2250000005734949e+01 0 0 0 +9055 1 -3.8401940924344316e+01 1.8847862994962622e+01 1.3999999988560882e+01 0 0 0 +9110 1 -3.6157253350516221e+01 1.7751836096829813e+01 1.4000000009151291e+01 0 0 0 +8466 1 -3.3912565659407150e+01 1.6655809316634613e+01 1.0499999999716401e+01 0 0 0 +8468 1 -3.4473737460059979e+01 1.8313312468358205e+01 1.2250000011685700e+01 0 0 0 +8517 1 -3.2790221653058431e+01 1.8874788871779511e+01 1.0500000001966161e+01 0 0 0 +8519 1 -3.2229049760369286e+01 1.7217285690307225e+01 1.2250000016324551e+01 0 0 0 +8524 1 -2.9984361872441529e+01 1.6121259129400634e+01 1.2250000005095739e+01 0 0 0 +9163 1 -3.0545533804897769e+01 1.7778762230234726e+01 1.4000000018419232e+01 0 0 0 +8570 1 -2.7178501664301020e+01 1.8901715433947086e+01 1.0500000024564226e+01 0 0 0 +8573 1 -2.8300845866582023e+01 1.6682735719357566e+01 1.0500000010629080e+01 0 0 0 +8571 1 -2.8862017763986458e+01 1.8340238848513781e+01 1.2250000041767420e+01 0 0 0 +8576 1 -2.6617329786909679e+01 1.7244212488142388e+01 1.2250000025750873e+01 0 0 0 +8627 1 -2.4372641831967325e+01 1.6148186151610229e+01 1.2250000049748476e+01 0 0 0 +8628 1 -2.3250296967139580e+01 1.8367165729811443e+01 1.2249999994262126e+01 0 0 0 +9270 1 -2.4933813514641844e+01 1.7805689125493963e+01 1.4000000025211301e+01 0 0 0 +9271 1 -2.2689125564859754e+01 1.6709663064758399e+01 1.4000000040709871e+01 0 0 0 +8679 1 -2.1005607873835967e+01 1.7271139338937349e+01 1.2250000033925822e+01 0 0 0 +9322 1 -2.1566780660565254e+01 1.8928642251791945e+01 1.4000000042178156e+01 0 0 0 +8678 1 -1.9322090530151378e+01 1.7832614515877871e+01 1.0499999985902686e+01 0 0 0 +8684 1 -1.8760916778849147e+01 1.6175112806448606e+01 1.2250000018130633e+01 0 0 0 +8731 1 -1.7638584234919470e+01 1.8394093503624045e+01 1.2250000016606570e+01 0 0 0 +9378 1 -1.7077392326496287e+01 1.6736582659710045e+01 1.4000000002401901e+01 0 0 0 +8736 1 -1.5393908619629642e+01 1.7298062919241580e+01 1.2249999958019256e+01 0 0 0 +8785 1 -1.3710491650588068e+01 1.7859597780241568e+01 1.0499999967321246e+01 0 0 0 +8787 1 -1.3149237765117784e+01 1.6202005097721347e+01 1.2249999950327272e+01 0 0 0 +9375 1 -1.5955087648960662e+01 1.8955584702090842e+01 1.3999999991994027e+01 0 0 0 +8788 1 -1.2026826821735895e+01 1.8421110777868318e+01 1.2249999948451368e+01 0 0 0 +8839 1 -9.7824041408872802e+00 1.7325474969719910e+01 1.2249999976711052e+01 0 0 0 +9431 1 -1.1466172773406544e+01 1.6763701278448085e+01 1.3999999948507778e+01 0 0 0 +9482 1 -1.0342363731742799e+01 1.8982161004529093e+01 1.3999999964577135e+01 0 0 0 +8838 1 -8.0950137256998449e+00 1.7885442328457543e+01 1.0499999978043961e+01 0 0 0 +8844 1 -7.5396995543165968e+00 1.6231316974432037e+01 1.2249999997017758e+01 0 0 0 +8891 1 -6.4095227245884656e+00 1.8443280237608320e+01 1.2250000028352753e+01 0 0 0 +8896 1 -4.1395809329440336e+00 1.7334622747276509e+01 1.2250000030203761e+01 0 0 0 +9538 1 -5.8404165416472695e+00 1.6788610572264364e+01 1.4000000074482886e+01 0 0 0 +9535 1 -4.7485637517075414e+00 1.9010777740257058e+01 1.4000000097581665e+01 0 0 0 +15475 1 -1.2971526911058718e-13 1.7020945641297700e+01 1.4000000127791948e+01 0 0 0 +8941 1 -2.5187339572357477e+00 1.7893649746616038e+01 1.0499999982474664e+01 0 0 0 +8943 1 -1.7224970511696647e+00 1.6236639376632848e+01 1.2250000058697227e+01 0 0 0 +8944 1 -1.0571059826560369e+00 1.8536567290553393e+01 1.2250000079471855e+01 0 0 0 +8364 1 -4.4574832177582401e+01 2.0478439923304418e+01 1.2250000015095940e+01 0 0 0 +8369 1 -4.2330144390392078e+01 1.9382413331564656e+01 1.2250000027082935e+01 0 0 0 +9008 1 -4.2891316331821216e+01 2.1039916356823074e+01 1.3999999986960058e+01 0 0 0 +8407 1 -4.1207800484696513e+01 2.1601392916277430e+01 1.2249999996780581e+01 0 0 0 +8412 1 -3.8963112747947186e+01 2.0505366158057239e+01 1.2250000008503500e+01 0 0 0 +9054 1 -4.0646628595009886e+01 1.9943889845486467e+01 1.3999999986704475e+01 0 0 0 +8463 1 -3.6718425072522166e+01 1.9409339376023755e+01 1.2250000021308498e+01 0 0 0 +8464 1 -3.5596081230635889e+01 2.1628318885586733e+01 1.2250000021884500e+01 0 0 0 +9106 1 -3.7279596991778163e+01 2.1066842574701177e+01 1.3999999994519438e+01 0 0 0 +8515 1 -3.3351393463559418e+01 2.0532292064281734e+01 1.2250000005139034e+01 0 0 0 +9107 1 -3.5034909298957892e+01 1.9970815581506272e+01 1.4000000005632751e+01 0 0 0 +8514 1 -3.1667877353611534e+01 2.1093768396361128e+01 1.0500000002190811e+01 0 0 0 +8520 1 -3.1106705591054567e+01 1.9436265298340270e+01 1.2250000026496467e+01 0 0 0 +8567 1 -2.9984361344657195e+01 2.1655244951315936e+01 1.2250000041136719e+01 0 0 0 +9214 1 -2.9423189650410144e+01 1.9997741866762837e+01 1.4000000035936759e+01 0 0 0 +8621 1 -2.6056157216909650e+01 2.1120695126217885e+01 1.0500000013690062e+01 0 0 0 +8572 1 -2.7739673372763022e+01 2.0559218514674942e+01 1.2250000027424385e+01 0 0 0 +8622 1 -2.3811469064801713e+01 2.0024668785248252e+01 1.0500000000204126e+01 0 0 0 +8623 1 -2.5494985349884825e+01 1.9463192128823565e+01 1.2250000017698117e+01 0 0 0 +8624 1 -2.4372641211857296e+01 2.1682171953765934e+01 1.2250000007532323e+01 0 0 0 +8675 1 -2.2127953613759967e+01 2.0586145829478404e+01 1.2250000009306184e+01 0 0 0 +8680 1 -1.9883267158350773e+01 1.9490119843568273e+01 1.2250000031972007e+01 0 0 0 +9319 1 -2.0444437687252965e+01 2.1147623286442840e+01 1.4000000014959655e+01 0 0 0 +8727 1 -1.8760916131142025e+01 2.1709098603193205e+01 1.2249999986412167e+01 0 0 0 +8729 1 -1.8199754198852158e+01 2.0051599915072078e+01 1.0499999969517113e+01 0 0 0 +8732 1 -1.6516219818778854e+01 2.0613073706812138e+01 1.2249999968009977e+01 0 0 0 +8783 1 -1.4271514792214809e+01 1.9517060065653176e+01 1.2249999962132383e+01 0 0 0 +8784 1 -1.3149237112209335e+01 2.1735991206055832e+01 1.2249999964605506e+01 0 0 0 +9426 1 -1.4832658407449653e+01 2.1174521187267548e+01 1.3999999957953921e+01 0 0 0 +8782 1 -1.2587782756919733e+01 2.0078421398254985e+01 1.0499999976116616e+01 0 0 0 +8835 1 -1.0904485367610178e+01 2.0639791755259235e+01 1.2249999983339038e+01 0 0 0 +8840 1 -8.6590367254853344e+00 1.9542934299649652e+01 1.2249999999179790e+01 0 0 0 +8887 1 -7.5396990750015176e+00 2.1765303546647459e+01 1.2250000027554433e+01 0 0 0 +8889 1 -6.9829705725459528e+00 2.0106577357230172e+01 1.0499999993719362e+01 0 0 0 +9479 1 -9.2228636776332955e+00 2.1202033676640944e+01 1.4000000031475285e+01 0 0 0 +8892 1 -5.3078133733151827e+00 2.0675391318298288e+01 1.2250000041512079e+01 0 0 0 +9582 1 -3.5610862350634127e+00 2.1224681078071168e+01 1.4000000073138100e+01 0 0 0 +8938 1 -1.2264314872252333e+00 2.0171212855525500e+01 1.0499999927192574e+01 0 0 0 +8939 1 -3.1035848704707565e+00 1.9618829396281114e+01 1.2250000047952204e+01 0 0 0 +8940 1 -1.7224969114580604e+00 2.1770626156403459e+01 1.2249999998866940e+01 0 0 0 +6606 1 -3.7279595656574699e+01 4.3202786090566534e+01 1.7499999996059014e+01 0 0 -1 +8365 1 -4.3452488226014012e+01 2.2697419561464653e+01 1.2250000011700239e+01 0 0 0 +8403 1 -4.2330144275768404e+01 2.4916399193370562e+01 1.2250000024696078e+01 0 0 0 +9005 1 -4.4013660154733799e+01 2.4354922749284082e+01 1.3999999998225832e+01 0 0 0 +8408 1 -4.0085456457784851e+01 2.3820372537947321e+01 1.2250000027196254e+01 0 0 0 +9050 1 -4.1768972329241173e+01 2.3258896039051088e+01 1.4000000014264076e+01 0 0 0 +9051 1 -3.9524284683139157e+01 2.2162869364939560e+01 1.3999999987678962e+01 0 0 0 +8459 1 -3.7840768833177705e+01 2.2724345736645688e+01 1.2249999997653491e+01 0 0 0 +8460 1 -3.6718424618526441e+01 2.4943325255157315e+01 1.2249999988991517e+01 0 0 0 +9103 1 -3.6157252949098719e+01 2.3285822011407465e+01 1.4000000014369490e+01 0 0 0 +9102 1 -3.8401940602714191e+01 2.4381848923148851e+01 1.4000000005007974e+01 0 0 0 +8511 1 -3.4473736976045934e+01 2.3847298318206732e+01 1.2250000016781506e+01 0 0 0 +9158 1 -3.3912565267102785e+01 2.2189795160631462e+01 1.4000000039990653e+01 0 0 0 +9155 1 -3.2790221097357765e+01 2.4408774680432654e+01 1.4000000045217556e+01 0 0 0 +8516 1 -3.2229049234017666e+01 2.2751271500476076e+01 1.2250000018142135e+01 0 0 0 +8563 1 -3.1106704920016725e+01 2.4970251083066092e+01 1.2250000050638679e+01 0 0 0 +8565 1 -3.0545533183060790e+01 2.3312748008962199e+01 1.0500000016849972e+01 0 0 0 +9211 1 -2.8300845270936673e+01 2.2216721560948734e+01 1.4000000036767879e+01 0 0 0 +8568 1 -2.8862017114574094e+01 2.3874224634668799e+01 1.2250000038898976e+01 0 0 0 +8619 1 -2.6617329124371974e+01 2.2778198261848566e+01 1.2250000033588281e+01 0 0 0 +9262 1 -2.7178500967849637e+01 2.4435701194067637e+01 1.4000000023576989e+01 0 0 0 +8618 1 -2.4933812792171889e+01 2.3339674913092590e+01 1.0500000003233431e+01 0 0 0 +8673 1 -2.2689124856730160e+01 2.2243648875466096e+01 1.0499999978388972e+01 0 0 0 +8620 1 -2.5494984607288657e+01 2.4997177894308855e+01 1.2250000013392816e+01 0 0 0 +8671 1 -2.3250296236632717e+01 2.3901151493789879e+01 1.2249999997701108e+01 0 0 0 +8670 1 -2.1566779914195703e+01 2.4462628002513195e+01 1.0499999974549109e+01 0 0 0 +8676 1 -2.1005607190310783e+01 2.2805125098444581e+01 1.2249999963090104e+01 0 0 0 +8723 1 -1.9883266430938850e+01 2.5024105617795655e+01 1.2249999968146534e+01 0 0 0 +8726 1 -1.7077391619580265e+01 2.2270568526234086e+01 1.0499999982387628e+01 0 0 0 +8728 1 -1.7638583521869716e+01 2.3928079319381496e+01 1.2249999965899816e+01 0 0 0 +9370 1 -1.9322089838381149e+01 2.3366600309265479e+01 1.3999999983422763e+01 0 0 0 +8777 1 -1.5955086952680874e+01 2.4489570581147028e+01 1.0499999981735114e+01 0 0 0 +8779 1 -1.5393907920334614e+01 2.2832048858812090e+01 1.2249999990101458e+01 0 0 0 +8780 1 -1.4271514203628369e+01 2.5051046045734427e+01 1.2250000000401601e+01 0 0 0 +9423 1 -1.3710491031466434e+01 2.3393583873883035e+01 1.3999999982401469e+01 0 0 0 +8833 1 -1.1466172124690406e+01 2.2297687484717059e+01 1.0499999986571213e+01 0 0 0 +8830 1 -1.0342363254367072e+01 2.4516147302419864e+01 1.0500000001041164e+01 0 0 0 +8831 1 -1.2026826276792519e+01 2.3955096959666285e+01 1.2250000007935983e+01 0 0 0 +8836 1 -9.7824036214131382e+00 2.2859461355425736e+01 1.2249999995432271e+01 0 0 0 +8883 1 -8.6590364357924887e+00 2.5076920756369972e+01 1.2250000049936311e+01 0 0 0 +9530 1 -8.0950133921827003e+00 2.3419428871072075e+01 1.4000000073562747e+01 0 0 0 +8886 1 -5.8404161459922781e+00 2.2322597285836505e+01 1.0500000007107115e+01 0 0 0 +8933 1 -4.7485635012512786e+00 2.4544764524943947e+01 1.0499999997536726e+01 0 0 0 +8888 1 -6.4095224466864194e+00 2.3977266901567738e+01 1.2250000064023116e+01 0 0 0 +8935 1 -4.1395807056014258e+00 2.2868609527995389e+01 1.2250000065240759e+01 0 0 0 +14941 1 -2.2116612207533060e-13 2.2554932501262837e+01 1.0499999879471154e+01 0 0 0 +8936 1 -3.1035847224843178e+00 2.5152816185595981e+01 1.2250000037040987e+01 0 0 0 +8969 1 -1.0571059688828486e+00 2.4070554106148737e+01 1.2249999947793672e+01 0 0 0 +9579 1 -2.5187338086307509e+00 2.3427636542576746e+01 1.4000000047246905e+01 0 0 0 +8361 1 -4.4574832133611892e+01 2.6012425827198982e+01 1.2250000032890606e+01 0 0 0 +8399 1 -4.3452488118372280e+01 2.8231405489372630e+01 1.2250000002441405e+01 0 0 0 +9046 1 -4.2891316203465152e+01 2.6573902236975552e+01 1.3999999999223387e+01 0 0 0 +8404 1 -4.1207800262716056e+01 2.7135378807623567e+01 1.2249999999816600e+01 0 0 0 +8455 1 -3.8963112402082466e+01 2.6039352035819835e+01 1.2249999993089586e+01 0 0 0 +9047 1 -4.0646628341701273e+01 2.5477875720539746e+01 1.3999999989940029e+01 0 0 0 +9098 1 -3.9524284391171733e+01 2.7696855259140936e+01 1.3999999966183758e+01 0 0 0 +8456 1 -3.7840768414708393e+01 2.8258331594536685e+01 1.2249999968346218e+01 0 0 0 +8507 1 -3.5596080679498989e+01 2.7162304697252502e+01 1.2249999977355575e+01 0 0 0 +9099 1 -3.7279596550442520e+01 2.6600828448603600e+01 1.3999999990980758e+01 0 0 0 +8512 1 -3.3351392831789163e+01 2.6066277876384891e+01 1.2250000028850392e+01 0 0 0 +9154 1 -3.5034908759905292e+01 2.5504801409381901e+01 1.4000000021875042e+01 0 0 0 +8562 1 -2.9423188899235061e+01 2.5531727627945536e+01 1.0500000023651911e+01 0 0 0 +8559 1 -3.2229048554346804e+01 2.8285257277740840e+01 1.2250000038159945e+01 0 0 0 +8564 1 -2.9984360607059394e+01 2.7189230706018293e+01 1.2250000053317372e+01 0 0 0 +9206 1 -3.1667876713163576e+01 2.6627754179004675e+01 1.4000000050637951e+01 0 0 0 +8613 1 -2.8300844536444913e+01 2.7750707297631134e+01 1.0500000014247613e+01 0 0 0 +8615 1 -2.7739672629042040e+01 2.6093204266761262e+01 1.2250000035138044e+01 0 0 0 +8616 1 -2.6617328391037422e+01 2.8312184024177974e+01 1.2250000021486887e+01 0 0 0 +9259 1 -2.6056156451729784e+01 2.6654680893084510e+01 1.4000000011137891e+01 0 0 0 +8667 1 -2.4372640451645577e+01 2.7216157692995495e+01 1.2250000006087875e+01 0 0 0 +9314 1 -2.3811468290099555e+01 2.5558654572631202e+01 1.3999999971229871e+01 0 0 0 +9311 1 -2.2689124161415553e+01 2.7777634608224396e+01 1.3999999984003747e+01 0 0 0 +8672 1 -2.2127952877549735e+01 2.6120131589419579e+01 1.2249999981493888e+01 0 0 0 +8719 1 -2.1005606525989545e+01 2.8339110915134672e+01 1.2249999993866810e+01 0 0 0 +8721 1 -2.0444436950626233e+01 2.6681609120451828e+01 1.0499999991288279e+01 0 0 0 +8724 1 -1.8760915499123286e+01 2.7243084450939723e+01 1.2249999985092643e+01 0 0 0 +8775 1 -1.6516219217567752e+01 2.6147059599317963e+01 1.2250000015663913e+01 0 0 0 +9367 1 -1.8199753524053254e+01 2.5585585715124530e+01 1.3999999984095959e+01 0 0 0 +9418 1 -1.7077391141096712e+01 2.7804554404170645e+01 1.3999999972945925e+01 0 0 0 +8774 1 -1.4832657892853977e+01 2.6708507163943246e+01 1.0499999994928778e+01 0 0 0 +8776 1 -1.5393907549607597e+01 2.8366034825492680e+01 1.2249999988729636e+01 0 0 0 +8827 1 -1.3149236793417719e+01 2.7269977270871479e+01 1.2249999990158408e+01 0 0 0 +8832 1 -1.0904485078174446e+01 2.6173777990190910e+01 1.2250000006155174e+01 0 0 0 +8879 1 -9.7824035210271365e+00 2.8393447576343110e+01 1.2250000029839807e+01 0 0 0 +9471 1 -1.1466171986342079e+01 2.7831673657767841e+01 1.4000000020396955e+01 0 0 0 +9474 1 -1.2587782363969556e+01 2.5612407507139089e+01 1.4000000005630669e+01 0 0 0 +8881 1 -9.2228634071179343e+00 2.6736020021070608e+01 1.0499999994331301e+01 0 0 0 +8884 1 -7.5396989707788968e+00 2.7299290009111502e+01 1.2250000048887367e+01 0 0 0 +9527 1 -6.9829704379450579e+00 2.5640563932489876e+01 1.4000000107100098e+01 0 0 0 +8930 1 -3.5610861075594404e+00 2.6758667826831864e+01 1.0499999989982497e+01 0 0 0 +8931 1 -5.3078132380436474e+00 2.6209378005472050e+01 1.2250000060143025e+01 0 0 0 +8932 1 -4.1395806144483878e+00 2.8402596153105925e+01 1.2250000025446102e+01 0 0 0 +9574 1 -5.8404160605668318e+00 2.7856583878695009e+01 1.4000000087015190e+01 0 0 0 +9133 1 -4.1207799708121705e+01 4.3737336781764647e+01 1.5750000022143634e+01 0 0 0 +8966 1 -1.7224967985448627e+00 2.7304612914323375e+01 1.2250000015712439e+01 0 0 0 +8261 1 -1.2264314183638294e+00 2.5705199665339389e+01 1.4000000061664084e+01 0 0 0 +8395 1 -4.4574832102841128e+01 3.1546411895010419e+01 1.2250000028737407e+01 0 0 0 +8400 1 -4.2330144120366448e+01 3.0450385126862479e+01 1.2250000018064995e+01 0 0 0 +9042 1 -4.4013660069451454e+01 2.9888908702653023e+01 1.3999999991582303e+01 0 0 0 +8451 1 -4.0085456186131232e+01 2.9354358401566575e+01 1.2249999987801067e+01 0 0 0 +8452 1 -3.8963112092435068e+01 3.1573337893476062e+01 1.2249999983804654e+01 0 0 0 +9043 1 -4.1768972130936454e+01 2.8792881925561598e+01 1.3999999970926226e+01 0 0 0 +9094 1 -4.0646628139947431e+01 3.1011861619031023e+01 1.3999999995799598e+01 0 0 0 +8503 1 -3.6718424180443940e+01 3.0477311088602239e+01 1.2249999971050928e+01 0 0 0 +9095 1 -3.8401940225733831e+01 2.9915834761067856e+01 1.3999999982658260e+01 0 0 0 +9150 1 -3.6157252428645108e+01 2.8819807828598673e+01 1.4000000008319473e+01 0 0 0 +8508 1 -3.4473736364974066e+01 2.9381284126967856e+01 1.2250000010030604e+01 0 0 0 +8555 1 -3.3351392199526288e+01 3.1600263687535918e+01 1.2250000000193152e+01 0 0 0 +9147 1 -3.5034908214433955e+01 3.1038787242017843e+01 1.4000000006961582e+01 0 0 0 +8560 1 -3.1106704227248802e+01 3.0504236886081124e+01 1.2250000031067387e+01 0 0 0 +9203 1 -3.0545532474952740e+01 2.8846733787850631e+01 1.4000000059723417e+01 0 0 0 +9254 1 -2.9423188199133740e+01 3.1065713441726235e+01 1.4000000049461852e+01 0 0 0 +8610 1 -2.7178500271093988e+01 2.9969686973645960e+01 1.0500000009312792e+01 0 0 0 +8611 1 -2.8862016360293598e+01 2.9408210399186018e+01 1.2250000059458566e+01 0 0 0 +8612 1 -2.7739671951746793e+01 3.1627190070308892e+01 1.2250000031679050e+01 0 0 0 +8662 1 -2.3811467712642091e+01 3.1092640348516422e+01 1.0499999992465790e+01 0 0 0 +8663 1 -2.5494983924691024e+01 3.0531163668194651e+01 1.2250000001484429e+01 0 0 0 +8668 1 -2.3250295579103565e+01 2.9435137292073630e+01 1.2249999966797310e+01 0 0 0 +9310 1 -2.4933812067555269e+01 2.8873660668222414e+01 1.4000000004634323e+01 0 0 0 +8715 1 -2.2127952355806901e+01 3.1654117406589677e+01 1.2250000016447006e+01 0 0 0 +8720 1 -1.9883265930679503e+01 3.0558091489691886e+01 1.2250000040818790e+01 0 0 0 +9362 1 -2.1566779335627867e+01 2.9996613818462937e+01 1.3999999991239360e+01 0 0 0 +8718 1 -1.9322089241797357e+01 2.8900586180413320e+01 1.0500000012588865e+01 0 0 0 +8769 1 -1.8199753082695590e+01 3.1119571654727313e+01 1.0500000022274060e+01 0 0 0 +8771 1 -1.7638583081368125e+01 2.9462065244314882e+01 1.2250000026166433e+01 0 0 0 +8772 1 -1.6516218902132540e+01 3.1681045546365510e+01 1.2249999998446704e+01 0 0 0 +8823 1 -1.4271514008729541e+01 3.0585032035580500e+01 1.2249999997340209e+01 0 0 0 +8825 1 -1.3710490760815670e+01 2.8927569838519542e+01 1.0499999978672145e+01 0 0 0 +9415 1 -1.5955086664901476e+01 3.0023556536211576e+01 1.3999999998893948e+01 0 0 0 +8822 1 -1.2587782178354558e+01 3.1146393475938748e+01 1.0499999968851332e+01 0 0 0 +8828 1 -1.2026826142365707e+01 2.9489083011886546e+01 1.2249999986770348e+01 0 0 0 +8875 1 -1.0904485008415319e+01 3.1707763981530281e+01 1.2249999991486833e+01 0 0 0 +9522 1 -1.0342363233791188e+01 3.0050133425061670e+01 1.4000000016503055e+01 0 0 0 +8878 1 -8.0950132704559472e+00 2.8953415170625313e+01 1.0499999998536721e+01 0 0 0 +8880 1 -8.6590364024407105e+00 3.0610906918942504e+01 1.2250000017653548e+01 0 0 0 +8925 1 -6.9829703697634109e+00 3.1174550165109991e+01 1.0499999987679807e+01 0 0 0 +8927 1 -6.4095223877864616e+00 2.9511253300789573e+01 1.2250000058591752e+01 0 0 0 +8928 1 -5.3078132588278510e+00 3.1743364357810549e+01 1.2250000028341175e+01 0 0 0 +9571 1 -4.7485634637579386e+00 3.0078751035463398e+01 1.4000000067404581e+01 0 0 0 +8962 1 -1.2264314432387697e+00 3.1239186366178856e+01 1.0499999917553433e+01 0 0 0 +8963 1 -3.1035847621277339e+00 3.0686802818492133e+01 1.2250000008864646e+01 0 0 0 +8965 1 -2.5187337264697582e+00 2.8961623245170987e+01 1.0499999932092251e+01 0 0 0 +8967 1 -1.0571058007071723e+00 2.9604540857292406e+01 1.2250000006949190e+01 0 0 0 +8396 1 -4.3452488046960390e+01 3.3765391561527530e+01 1.2250000009619983e+01 0 0 0 +9039 1 -4.2891316120477008e+01 3.2107888265128992e+01 1.4000000005674726e+01 0 0 0 +8447 1 -4.1207800115161504e+01 3.2669364737745276e+01 1.2249999976956980e+01 0 0 0 +9090 1 -4.1768972013758599e+01 3.4326867911116935e+01 1.4000000032385829e+01 0 0 0 +9091 1 -3.9524284092217179e+01 3.3230841097747430e+01 1.4000000000513861e+01 0 0 0 +8499 1 -3.7840768054481082e+01 3.3792317421360423e+01 1.2249999991404993e+01 0 0 0 +8504 1 -3.5596080204672170e+01 3.2696290540893052e+01 1.2249999983561361e+01 0 0 0 +9143 1 -3.6157251966900986e+01 3.4353793679312837e+01 1.4000000000042766e+01 0 0 0 +9146 1 -3.7279596148142403e+01 3.2134814277532321e+01 1.3999999980622356e+01 0 0 0 +9198 1 -3.3912564027549251e+01 3.3257766798785688e+01 1.4000000021509436e+01 0 0 0 +8556 1 -3.2229047908591433e+01 3.3819243133555744e+01 1.2250000023487281e+01 0 0 0 +8607 1 -2.9984359923054953e+01 3.2723216546287297e+01 1.2250000056469622e+01 0 0 0 +8661 1 -2.6056155843263472e+01 3.2188666709650448e+01 1.0499999992115779e+01 0 0 0 +8659 1 -2.6617327783772563e+01 3.3846169890447591e+01 1.2250000031842982e+01 0 0 0 +9251 1 -2.8300843848260815e+01 3.3284693174788806e+01 1.4000000060121430e+01 0 0 0 +8658 1 -2.4933811552579339e+01 3.4407646545668001e+01 1.0499999996480145e+01 0 0 0 +8664 1 -2.4372639898373084e+01 3.2750143517641291e+01 1.2250000012439612e+01 0 0 0 +8713 1 -2.2689123661146251e+01 3.3311620492527155e+01 1.0499999999807683e+01 0 0 0 +8716 1 -2.1005606117122696e+01 3.3873096784368435e+01 1.2250000008853066e+01 0 0 0 +9359 1 -2.0444436526051366e+01 3.2215594936406639e+01 1.4000000022931419e+01 0 0 0 +8766 1 -1.7077390781870321e+01 3.3338540323665129e+01 1.0500000029144475e+01 0 0 0 +8767 1 -1.8760915099336430e+01 3.2777070353229689e+01 1.2250000024528203e+01 0 0 0 +9410 1 -1.9322088896913904e+01 3.4434572029583443e+01 1.4000000009623859e+01 0 0 0 +8819 1 -1.5393907308107668e+01 3.3900020727601579e+01 1.2249999999030186e+01 0 0 0 +8824 1 -1.3149236649692272e+01 3.2803963178795527e+01 1.2249999971389785e+01 0 0 0 +9463 1 -1.3710490666777725e+01 3.4461555756446913e+01 1.3999999979477620e+01 0 0 0 +9466 1 -1.4832657716798320e+01 3.2242493085027988e+01 1.3999999980547695e+01 0 0 0 +8873 1 -1.1466171877142367e+01 3.3365659516609163e+01 1.0499999947861950e+01 0 0 0 +8876 1 -9.7824035795232351e+00 3.3927433510136254e+01 1.2249999979840696e+01 0 0 0 +8923 1 -7.5396990337432070e+00 3.2833276125885831e+01 1.2250000025344272e+01 0 0 0 +9519 1 -9.2228634852290075e+00 3.2270006070188074e+01 1.4000000040076646e+01 0 0 0 +9566 1 -8.0950134846411963e+00 3.4487401199493519e+01 1.4000000058767192e+01 0 0 0 +8922 1 -5.8404162058627813e+00 3.3390570078244430e+01 1.0500000000092429e+01 0 0 0 +8959 1 -4.1395807785950129e+00 3.3936582545002643e+01 1.2250000007736650e+01 0 0 0 +8947 1 -3.5610861570242385e+00 3.2292654357774296e+01 1.3999999986036217e+01 0 0 0 +8964 1 -1.7224969490946311e+00 3.2838599555033049e+01 1.2249999928148014e+01 0 0 0 +9551 1 -2.5187337818414419e+00 3.4495609790689358e+01 1.3999999983364901e+01 0 0 0 +9137 1 -3.8963111666878426e+01 4.2641309706134244e+01 1.5750000001811713e+01 0 0 0 +8392 1 -4.4574832018752737e+01 3.7080398086097226e+01 1.2250000035921746e+01 0 0 0 +8443 1 -4.2330144003368872e+01 3.5984371161381723e+01 1.2250000028579196e+01 0 0 0 +9036 1 -4.4013660023003368e+01 3.5422894891947621e+01 1.4000000020330342e+01 0 0 0 +9086 1 -4.2891315944823411e+01 3.7641874320769318e+01 1.4000000028594551e+01 0 0 0 +8448 1 -4.0085455971446251e+01 3.4888344301582102e+01 1.2250000002832563e+01 0 0 0 +8495 1 -3.8963111831884419e+01 3.7107323747660814e+01 1.2250000001831021e+01 0 0 0 +9087 1 -4.0646627913760646e+01 3.6545847527867160e+01 1.4000000026177574e+01 0 0 0 +8500 1 -3.6718423764699828e+01 3.6011296908743525e+01 1.2249999994939330e+01 0 0 0 +9139 1 -3.7279595803021493e+01 3.7668800109955406e+01 1.4000000005395620e+01 0 0 0 +9142 1 -3.8401939901916485e+01 3.5449820599730955e+01 1.4000000017153869e+01 0 0 0 +8551 1 -3.4473735855260827e+01 3.4915269987848156e+01 1.2250000005373664e+01 0 0 0 +8552 1 -3.3351391714556286e+01 3.7134249628821465e+01 1.2250000012505948e+01 0 0 0 +9194 1 -3.5034907715465287e+01 3.6572773083510349e+01 1.3999999997643629e+01 0 0 0 +9195 1 -3.2790219822918054e+01 3.5476746367795251e+01 1.4000000028556729e+01 0 0 0 +8602 1 -2.9423187654079555e+01 3.6599699426714338e+01 1.0500000013250713e+01 0 0 0 +8603 1 -3.1106703633395895e+01 3.6038222831753743e+01 1.2250000028976446e+01 0 0 0 +9246 1 -3.1667875516209502e+01 3.7695726012977033e+01 1.4000000014290356e+01 0 0 0 +8608 1 -2.8862015759565399e+01 3.4942196347648206e+01 1.2250000028420427e+01 0 0 0 +8655 1 -2.7739671450016747e+01 3.7161176070814612e+01 1.2250000027367577e+01 0 0 0 +9299 1 -2.6056155415046746e+01 3.7722652703825169e+01 1.4000000043793953e+01 0 0 0 +9302 1 -2.7178499691679473e+01 3.5503672902130468e+01 1.4000000039194720e+01 0 0 0 +8660 1 -2.5494983468793158e+01 3.6065149595825709e+01 1.2250000019831040e+01 0 0 0 +8711 1 -2.3250295117901352e+01 3.4969123130049560e+01 1.2250000025460373e+01 0 0 0 +9354 1 -2.3811467286007598e+01 3.6626626260484521e+01 1.4000000020334475e+01 0 0 0 +8710 1 -2.1566778937256618e+01 3.5530599653202167e+01 1.0500000042284782e+01 0 0 0 +8712 1 -2.2127952028740449e+01 3.7188103240050481e+01 1.2250000018580060e+01 0 0 0 +8761 1 -2.0444436260417980e+01 3.7749580788603140e+01 1.0500000028425784e+01 0 0 0 +8763 1 -1.9883265618066176e+01 3.6092077329419531e+01 1.2250000008326374e+01 0 0 0 +8768 1 -1.7638582768564405e+01 3.4996051112987587e+01 1.2249999991999804e+01 0 0 0 +8815 1 -1.6516218774159189e+01 3.7215031387455468e+01 1.2250000013559934e+01 0 0 0 +9407 1 -1.8199752863436323e+01 3.6653557502000879e+01 1.4000000005459521e+01 0 0 0 +8814 1 -1.4832657682155128e+01 3.7776478919629561e+01 1.0499999966870105e+01 0 0 0 +8817 1 -1.5955086424452432e+01 3.5557542374992323e+01 1.0499999993740914e+01 0 0 0 +8820 1 -1.4271513932696141e+01 3.6119017860409741e+01 1.2249999976962565e+01 0 0 0 +8870 1 -1.0342363331066066e+01 3.5584119239185043e+01 1.0499999957375692e+01 0 0 0 +8871 1 -1.2026826156883576e+01 3.5023068866813794e+01 1.2249999981871783e+01 0 0 0 +8872 1 -1.0904485253067124e+01 3.7241749757618479e+01 1.2249999979802690e+01 0 0 0 +9514 1 -1.2587782334987219e+01 3.6680379297088116e+01 1.4000000000585665e+01 0 0 0 +8917 1 -9.2228637493320562e+00 3.7803991812409706e+01 1.0499999964847946e+01 0 0 0 +8919 1 -8.6590366633021620e+00 3.6144892803018358e+01 1.2250000019719552e+01 0 0 0 +9563 1 -6.9829707000537553e+00 3.6708536135342534e+01 1.4000000081652272e+01 0 0 0 +8924 1 -6.4095226289764629e+00 3.5045239415757592e+01 1.2250000037582117e+01 0 0 0 +8954 1 -3.5610864258957426e+00 3.7826640415383793e+01 1.0499999989142870e+01 0 0 0 +8955 1 -5.3078135434829177e+00 3.7277350383201039e+01 1.2250000030956416e+01 0 0 0 +8957 1 -4.7485637234779832e+00 3.5612737222116337e+01 1.0499999987263864e+01 0 0 0 +8960 1 -3.1035848913841080e+00 3.6220789054646353e+01 1.2249999971974024e+01 0 0 0 +8979 1 -1.0571059152659812e+00 3.5138527378718287e+01 1.2249999855963667e+01 0 0 0 +7007 1 -1.2264314400239007e+00 3.6773172783388887e+01 1.3999999911439026e+01 0 0 0 +8439 1 -4.3452487879987480e+01 3.9299377698302841e+01 1.2249999997999012e+01 0 0 0 +9082 1 -4.4013659814914178e+01 4.0956881022768265e+01 1.4000000016193042e+01 0 0 0 +8444 1 -4.1207799896661172e+01 3.8203350687757428e+01 1.2250000006409881e+01 0 0 0 +8491 1 -4.0085455751707457e+01 4.0422330239365529e+01 1.2249999986693346e+01 0 0 0 +9138 1 -3.9524283875487093e+01 3.8764826989004156e+01 1.4000000002029571e+01 0 0 0 +9083 1 -4.1768971809104151e+01 3.9860853916270507e+01 1.4000000007064232e+01 0 0 0 +8496 1 -3.7840767797643849e+01 3.9326303297264850e+01 1.2249999974702321e+01 0 0 0 +8547 1 -3.5596079798969448e+01 3.8230276409943627e+01 1.2249999985672805e+01 0 0 0 +9135 1 -3.8401939694189934e+01 4.0983806490859067e+01 1.3999999981937135e+01 0 0 0 +9190 1 -3.6157251676542984e+01 3.9887779550714548e+01 1.3999999992988093e+01 0 0 0 +8548 1 -3.4473735536292061e+01 4.0449255939776656e+01 1.2250000020640476e+01 0 0 0 +9191 1 -3.3912563632029737e+01 3.8791752746384333e+01 1.3999999993732693e+01 0 0 0 +8599 1 -3.2229047521216827e+01 3.9353229169760482e+01 1.2250000026845491e+01 0 0 0 +8604 1 -2.9984359465038587e+01 3.8257202602429729e+01 1.2250000024838254e+01 0 0 0 +9243 1 -3.0545531464579394e+01 3.9914705780590317e+01 1.4000000050930453e+01 0 0 0 +8650 1 -2.7178499432861486e+01 4.1037659016462982e+01 1.0499999988141434e+01 0 0 0 +8653 1 -2.8300843456398137e+01 3.8818679234515599e+01 1.0499999983080944e+01 0 0 0 +8651 1 -2.8862015431296943e+01 4.0476182454860513e+01 1.2250000040182954e+01 0 0 0 +8656 1 -2.6617327457423645e+01 3.9380155935835724e+01 1.2250000020464746e+01 0 0 0 +8707 1 -2.4372639567731948e+01 3.8284129445853246e+01 1.2250000045631779e+01 0 0 0 +8708 1 -2.3250294991948390e+01 4.0503109086610053e+01 1.2249999997868654e+01 0 0 0 +9350 1 -2.4933811308084795e+01 3.9941632552806425e+01 1.4000000039590550e+01 0 0 0 +9351 1 -2.2689123438137244e+01 3.8845606353294492e+01 1.4000000041136106e+01 0 0 0 +8759 1 -2.1005605958916551e+01 3.9407082626484055e+01 1.2250000021864338e+01 0 0 0 +9402 1 -2.1566778913048005e+01 4.1064585564703052e+01 1.3999999998931916e+01 0 0 0 +8758 1 -1.9322088846852868e+01 3.9968557881368589e+01 1.0500000030137544e+01 0 0 0 +8764 1 -1.8760914964892685e+01 3.8311056185936046e+01 1.2250000011650290e+01 0 0 0 +8811 1 -1.7638582858565350e+01 4.0530036946295198e+01 1.2249999992053635e+01 0 0 0 +9458 1 -1.7077390798996895e+01 3.8872526150008333e+01 1.3999999972508020e+01 0 0 0 +8816 1 -1.5393907426889411e+01 3.9434006551205933e+01 1.2249999962182326e+01 0 0 0 +8865 1 -1.3710490862910412e+01 3.9995541464540032e+01 1.0499999965990002e+01 0 0 0 +8867 1 -1.3149236830037703e+01 3.8337948973045854e+01 1.2249999959640329e+01 0 0 0 +9455 1 -1.5955086613618619e+01 4.1091528202319594e+01 1.3999999991756139e+01 0 0 0 +8868 1 -1.2026826438770014e+01 4.0557054518271350e+01 1.2249999987738912e+01 0 0 0 +8915 1 -9.7824039299909575e+00 3.9461419159982363e+01 1.2250000029255116e+01 0 0 0 +9558 1 -1.0342363641147262e+01 4.1118104823167577e+01 1.4000000057320538e+01 0 0 0 +9511 1 -1.1466172232995437e+01 3.8899645272653601e+01 1.4000000032794240e+01 0 0 0 +8914 1 -8.0950137916519989e+00 4.0021386795674523e+01 1.0499999982883248e+01 0 0 0 +8920 1 -7.5396993846116311e+00 3.8367261909352479e+01 1.2250000035786204e+01 0 0 0 +8951 1 -6.4095228860425220e+00 4.0579225029057966e+01 1.2250000029192531e+01 0 0 0 +8956 1 -4.1395809461308897e+00 3.9470568453049246e+01 1.2249999990342648e+01 0 0 0 +9598 1 -5.8404164411685873e+00 3.8924555943284318e+01 1.4000000064877147e+01 0 0 0 +9595 1 -4.7485638566131794e+00 4.1146722892163183e+01 1.4000000027251273e+01 0 0 0 +8975 1 -2.5187339293365771e+00 4.0029595782945755e+01 1.0499999976142929e+01 0 0 0 +8976 1 -1.7224971090695389e+00 3.8372585790440127e+01 1.2249999958891966e+01 0 0 0 +8977 1 -1.0571059702182524e+00 4.0672513437720305e+01 1.2249999951840536e+01 0 0 0 +15795 1 -1.4885512548736392e-13 3.9156891997033654e+01 1.3999999908023355e+01 0 0 0 +8436 1 -4.4574831826201162e+01 4.2614384332783416e+01 1.2250000003303642e+01 0 0 0 +8440 1 -4.2330143789882818e+01 4.1518357247539548e+01 1.2250000004281430e+01 0 0 0 +9080 1 -4.2891315753957514e+01 4.3175860508008036e+01 1.4000000004741013e+01 0 0 0 +8488 1 -4.1207799710406888e+01 4.3737336770808852e+01 1.2249999973720646e+01 0 0 0 +8492 1 -3.8963111646361078e+01 4.2641309684768260e+01 1.2249999988961960e+01 0 0 0 +9134 1 -4.0646627747821725e+01 4.2079833551088605e+01 1.3999999994820133e+01 0 0 0 +8543 1 -3.6718423574877853e+01 4.1545282818605045e+01 1.2250000008879256e+01 0 0 0 +8544 1 -3.5596079652795815e+01 4.3764262398676124e+01 1.2250000008774004e+01 0 0 0 +9186 1 -3.7279595643874543e+01 4.3202786056572727e+01 1.3999999984024898e+01 0 0 0 +8596 1 -3.3351391479421565e+01 4.2668235666376148e+01 1.2250000016000321e+01 0 0 0 +9187 1 -3.5034907524480900e+01 4.2106759084313616e+01 1.4000000006107630e+01 0 0 0 +8600 1 -3.1106703358990824e+01 4.1572208951297583e+01 1.2250000010778896e+01 0 0 0 +8648 1 -2.9984359294115503e+01 4.3791188792267832e+01 1.2250000038666617e+01 0 0 0 +9294 1 -2.9423187429987902e+01 4.2133685601208185e+01 1.4000000044696661e+01 0 0 0 +8701 1 -2.6056155317819687e+01 4.3256638831054772e+01 1.0499999981679132e+01 0 0 0 +8652 1 -2.7739671285736023e+01 4.2695162255012256e+01 1.2250000020501686e+01 0 0 0 +8703 1 -2.5494983288088644e+01 4.1599135669762205e+01 1.2250000009937372e+01 0 0 0 +8704 1 -2.4372639568421867e+01 4.3818115544185645e+01 1.2250000005329246e+01 0 0 0 +8756 1 -2.2127952070793668e+01 4.2722089190701787e+01 1.2250000018268926e+01 0 0 0 +8760 1 -1.9883265680749005e+01 4.1626063173616721e+01 1.2250000012721454e+01 0 0 0 +9400 1 -2.0444436390223704e+01 4.3283566658071152e+01 1.4000000010897280e+01 0 0 0 +8808 1 -1.8760915118306073e+01 4.3845041983555149e+01 1.2250000010875711e+01 0 0 0 +8809 1 -1.8199752983178442e+01 4.2187543297265961e+01 1.0500000011150306e+01 0 0 0 +8812 1 -1.6516218952151263e+01 4.2749017156814830e+01 1.2249999985206141e+01 0 0 0 +8863 1 -1.4271514163362220e+01 4.1653003597572805e+01 1.2250000010823266e+01 0 0 0 +8864 1 -1.3149236983555934e+01 4.3871934556735837e+01 1.2250000029582981e+01 0 0 0 +9506 1 -1.4832657894019034e+01 4.3310464587547955e+01 1.4000000009120592e+01 0 0 0 +8862 1 -1.2587782510833728e+01 4.2214364915233155e+01 1.0499999987870325e+01 0 0 0 +8912 1 -1.0904485467851799e+01 4.2775735256883081e+01 1.2250000033594894e+01 0 0 0 +8949 1 -6.9829709355212408e+00 4.2242521569682900e+01 1.0499999972544698e+01 0 0 0 +9556 1 -9.2228639599865296e+00 4.3337977222798060e+01 1.4000000079211873e+01 0 0 0 +8916 1 -8.6590369284678896e+00 4.1678878276541496e+01 1.2250000025002951e+01 0 0 0 +8948 1 -7.5396995847874795e+00 4.3901247244519531e+01 1.2250000000725137e+01 0 0 0 +7680 1 -3.5610864937136895e+00 4.3360625983792787e+01 1.3999999947323298e+01 0 0 0 +8952 1 -5.3078137333973050e+00 4.2811335866456439e+01 1.2249999979758531e+01 0 0 0 +8972 1 -1.2264314519325032e+00 4.2307158690464405e+01 1.0499999968537487e+01 0 0 0 +8973 1 -3.1035849744053694e+00 4.1754774767863353e+01 1.2249999954093278e+01 0 0 0 +8974 1 -1.7224971957192317e+00 4.3906571475033061e+01 1.2249999908956658e+01 0 0 0 +8984 1 -4.5136003449266944e+01 -1.7134883557901909e-07 1.4000000030761333e+01 0 0 0 +8982 1 -4.4013659683147132e+01 2.2189793559624631e+00 1.4000000000487141e+01 0 0 0 +8985 1 -4.3452487571304687e+01 5.6147612360516530e-01 1.5750000029443459e+01 0 0 0 +8999 1 -4.2330143914164438e+01 2.7804556569943926e+00 1.5749999988601555e+01 0 0 0 +9001 1 -4.1768971830517060e+01 1.1229523168849340e+00 1.3999999987358143e+01 0 0 0 +9003 1 -4.0085456130772144e+01 1.6844287273317067e+00 1.5749999963162495e+01 0 0 0 +9002 1 -3.9524284127715909e+01 2.6925440802917786e-02 1.3999999951431901e+01 0 0 0 +6452 1 -3.6157252765538907e+01 1.1498781553665498e+00 1.7499999939717856e+01 0 0 -1 +9031 1 -3.8401940473273513e+01 2.2459050320184462e+00 1.3999999971694452e+01 0 0 0 +9032 1 -3.6157252684219685e+01 1.1498781469985777e+00 1.3999999960639922e+01 0 0 0 +9033 1 -3.7840768458073498e+01 5.8840184709040111e-01 1.5749999920489584e+01 0 0 0 +9034 1 -3.6718424758358154e+01 2.8073814175096072e+00 1.5749999941513900e+01 0 0 0 +9076 1 -3.4473736991362323e+01 1.7113545521948741e+00 1.5749999962113479e+01 0 0 0 +6550 1 -3.0545533384911323e+01 1.1768043157653341e+00 4.5306926210741949e-08 0 0 0 +9079 1 -3.2229049146200538e+01 6.1532779932251513e-01 1.5750000024716547e+01 0 0 0 +9128 1 -3.1106705484447726e+01 2.8343074357495412e+00 1.5750000046805090e+01 0 0 0 +9130 1 -3.0545533338570717e+01 1.1768043086941327e+00 1.4000000015143913e+01 0 0 0 +9132 1 -2.8862017534131219e+01 1.7382809250004336e+00 1.5750000029550897e+01 0 0 0 +9184 1 -2.6617329477599665e+01 6.4225444422163969e-01 1.5749999988578747e+01 0 0 0 +6603 1 -2.4933813435775544e+01 1.2037311117767626e+00 1.7499999964246410e+01 0 0 -1 +9183 1 -2.4933813434708654e+01 1.2037311487420448e+00 1.3999999960358320e+01 0 0 0 +9185 1 -2.5494985614271041e+01 2.8612342151756365e+00 1.5749999962021208e+01 0 0 0 +9236 1 -2.3250297181721024e+01 1.7652077338622683e+00 1.5749999960976510e+01 0 0 0 +6658 1 -2.2689125483224700e+01 1.0770494255263677e-01 1.7499999970827599e+01 0 0 -1 +9238 1 -2.2689125423917105e+01 1.0770499351752884e-01 1.3999999970402213e+01 0 0 0 +6655 1 -2.1566781146241397e+01 2.3266842327424397e+00 1.7499999991093794e+01 0 0 -1 +9235 1 -2.1566781095981014e+01 2.3266843149758110e+00 1.4000000007608671e+01 0 0 0 +9239 1 -2.1005608051148556e+01 6.6918121204226355e-01 1.5749999995738397e+01 0 0 0 +9288 1 -1.9883267845830829e+01 2.8881618729487473e+00 1.5750000044880366e+01 0 0 0 +9292 1 -1.7638584944503961e+01 1.7921353459105027e+00 1.5750000070928547e+01 0 0 0 +6711 1 -1.7077392797369971e+01 1.3462435450530236e-01 1.3621892946957814e-08 0 0 0 +9291 1 -1.7077392795943215e+01 1.3462438025735560e-01 1.4000000052605934e+01 0 0 0 +6762 1 -1.5955088529692837e+01 2.3536264206702047e+00 2.9189209271862637e-08 0 0 0 +9342 1 -1.5955088545255494e+01 2.3536264435147163e+00 1.4000000039377989e+01 0 0 0 +9344 1 -1.5393909329529595e+01 6.9610455941214822e-01 1.5750000026612147e+01 0 0 0 +9345 1 -1.4271515916448504e+01 2.9151016736776763e+00 1.5749999992371942e+01 0 0 0 +6815 1 -1.0342364954462655e+01 2.3802019394710192e+00 1.7499999995802202e+01 0 0 -1 +9395 1 -1.0342364918225895e+01 2.3802019285331726e+00 1.3999999994872036e+01 0 0 0 +9396 1 -1.2026827922074645e+01 1.8191520188557893e+00 1.5749999967388334e+01 0 0 0 +9399 1 -9.7824052010589391e+00 7.2351584636272603e-01 1.5750000006951025e+01 0 0 0 +6818 1 -1.1466173668464531e+01 1.6174235569932674e-01 1.7499999985248866e+01 0 0 -1 +9398 1 -1.1466173675606006e+01 1.6174233483544628e-01 1.3999999973436196e+01 0 0 0 +9448 1 -8.6590380634828801e+00 2.9409750166599191e+00 1.5750000017040621e+01 0 0 0 +6922 1 -4.7485647091097203e+00 2.4088181777472037e+00 7.2979741361223205e-08 0 0 0 +9502 1 -4.7485646273436917e+00 2.4088182091435604e+00 1.4000000069752467e+01 0 0 0 +9452 1 -6.4095238121969063e+00 1.8413208115975024e+00 1.5750000057801484e+01 0 0 0 +9504 1 -4.1395816882163050e+00 7.3266342684074548e-01 1.5750000051528273e+01 0 0 0 +6871 1 -5.8404173657442300e+00 1.8665122647885260e-01 8.5770491153880357e-08 0 0 0 +9451 1 -5.8404172734402691e+00 1.8665127302663795e-01 1.4000000063365366e+01 0 0 0 +6554 1 -4.0646627725196268e+01 4.2079833521142604e+01 2.9643693721936870e-08 0 0 0 +9081 1 -4.4574831836574631e+01 4.2614384290687767e+01 1.5750000009899091e+01 0 0 0 +9505 1 -3.1035854728963295e+00 3.0168696877862806e+00 1.5750000063331502e+01 0 0 0 +9555 1 -1.0571062280660284e+00 1.9346078391369772e+00 1.5750000020387670e+01 0 0 0 +9085 1 -4.2330143794039664e+01 4.1518357225572309e+01 1.5750000003717515e+01 0 0 0 +8997 1 -4.2891315984285761e+01 4.4379587474647089e+00 1.3999999996467201e+01 0 0 0 +8983 1 -4.4574831781382564e+01 3.8764825633653142e+00 1.5750000038788320e+01 0 0 0 +8995 1 -4.3452487991593586e+01 6.0954620684390743e+00 1.5750000003002162e+01 0 0 0 +8998 1 -4.0646628246823312e+01 3.3419319728740229e+00 1.3999999962946097e+01 0 0 0 +6447 1 -3.9524284614862793e+01 5.5609115126899269e+00 1.7499999953033111e+01 0 0 -1 +9000 1 -4.1207800285351944e+01 4.9994351538833781e+00 1.5749999938059554e+01 0 0 0 +9027 1 -3.9524284692120851e+01 5.5609114682229981e+00 1.3999999952163671e+01 0 0 0 +9029 1 -3.8963112528754138e+01 3.9034081968135190e+00 1.5749999933764517e+01 0 0 0 +9028 1 -3.7279596901789255e+01 4.4648846495370469e+00 1.3999999960853913e+01 0 0 0 +9030 1 -3.7840768979177071e+01 6.1223878385633661e+00 1.5749999935863807e+01 0 0 0 +9072 1 -3.5596081338140984e+01 5.0263610148194466e+00 1.5749999965031950e+01 0 0 0 +6491 1 -3.3912565562180703e+01 5.5878373613011538e+00 1.7499999986270137e+01 0 0 -1 +9071 1 -3.3912565438221314e+01 5.5878373789740463e+00 1.4000000004647807e+01 0 0 0 +6494 1 -3.5034909115058504e+01 3.3688576876585654e+00 1.7499999949378889e+01 0 0 -1 +9074 1 -3.5034909018497459e+01 3.3688577042357948e+00 1.3999999980467145e+01 0 0 0 +9077 1 -3.3351393438446884e+01 3.9303342593885122e+00 1.5749999996164725e+01 0 0 0 +6547 1 -2.9423189723894520e+01 3.3957840081220789e+00 2.6445171386058064e-08 0 0 0 +9127 1 -2.9423189735325298e+01 3.3957840280768932e+00 1.4000000006125831e+01 0 0 0 +9124 1 -3.2229049742196651e+01 6.1493137733804977e+00 1.5750000026499572e+01 0 0 0 +9129 1 -2.9984361756335094e+01 5.0532871840476856e+00 1.5750000056441467e+01 0 0 0 +6598 1 -2.8300845929991805e+01 5.6147637958686518e+00 1.8979871896362965e-08 0 0 0 +9178 1 -2.8300845926995539e+01 5.6147638184553665e+00 1.4000000010306678e+01 0 0 0 +9180 1 -2.7739673705191642e+01 3.9572606445001517e+00 1.5750000013440543e+01 0 0 0 +9181 1 -2.6617330015740801e+01 6.1762405068093758e+00 1.5749999998796159e+01 0 0 0 +9232 1 -2.4372642019749193e+01 5.0802141546824364e+00 1.5749999956066464e+01 0 0 0 +6706 1 -2.0444438664194188e+01 4.5456654444733839e+00 1.7966510057476626e-08 0 0 0 +9237 1 -2.2127954368845035e+01 3.9841879678307053e+00 1.5749999994627181e+01 0 0 0 +9284 1 -2.1005608405653252e+01 6.2031674064988431e+00 1.5750000035137816e+01 0 0 0 +9286 1 -2.0444438603376959e+01 4.5456655375150214e+00 1.4000000043699785e+01 0 0 0 +9289 1 -1.8760917304087076e+01 5.1071407508202906e+00 1.5750000044739116e+01 0 0 0 +9340 1 -1.6516220961739464e+01 4.0111156770754883e+00 1.5750000041609695e+01 0 0 0 +9339 1 -1.4832659745528666e+01 4.5725629404864270e+00 1.4000000030428426e+01 0 0 0 +6759 1 -1.4832659688274484e+01 4.5725629812292645e+00 1.7706607735590296e-08 0 0 0 +9341 1 -1.5393909434365421e+01 6.2300908155516508e+00 1.5750000032861088e+01 0 0 0 +9392 1 -1.3149238590804611e+01 5.1340327550725720e+00 1.5750000000501434e+01 0 0 0 +9397 1 -1.0904486807239245e+01 4.0378328284477067e+00 1.5749999956197835e+01 0 0 0 +9444 1 -9.7824051871002240e+00 6.2575022242967488e+00 1.5749999957382300e+01 0 0 0 +6866 1 -9.2228651281129590e+00 4.6000744402004967e+00 3.2592428311772892e-08 0 0 0 +9446 1 -9.2228650513606496e+00 4.6000744118932975e+00 1.3999999991196551e+01 0 0 0 +9449 1 -7.5397004496310753e+00 5.1633440106606283e+00 1.5750000030526763e+01 0 0 0 +6919 1 -3.5610871840923157e+00 4.6227212332921903e+00 4.0244014343215895e-08 0 0 0 +9499 1 -3.5610870758410855e+00 4.6227212795955852e+00 1.4000000072264031e+01 0 0 0 +9500 1 -5.3078144773123306e+00 4.0734316226868001e+00 1.5750000078077559e+01 0 0 0 +9501 1 -4.1395817257749918e+00 6.2666496404080796e+00 1.5750000064760242e+01 0 0 0 +9552 1 -1.7224976310333213e+00 5.1686663186562036e+00 1.5750000020153536e+01 0 0 0 +8991 1 -4.4574832064691329e+01 9.4104683831929687e+00 1.5749999983920816e+01 0 0 0 +8993 1 -4.4013660025581082e+01 7.7529652625009442e+00 1.4000000001651154e+01 0 0 0 +8996 1 -4.2330144264891594e+01 8.3144415785064716e+00 1.5749999979682825e+01 0 0 0 +8994 1 -4.1768972249170538e+01 6.6569383041926855e+00 1.3999999967295100e+01 0 0 0 +9025 1 -4.0085456587238042e+01 7.2184147192325909e+00 1.5749999917030456e+01 0 0 0 +9026 1 -3.8963112920718594e+01 9.4373942295205069e+00 1.5749999921099745e+01 0 0 0 +6444 1 -3.8401940941045737e+01 7.7798910426261907e+00 1.7499999928677191e+01 0 0 -1 +9024 1 -3.8401940916343563e+01 7.7798910482169239e+00 1.3999999954671321e+01 0 0 0 +9068 1 -3.6718425213830706e+01 8.3413674222643941e+00 1.5749999924095869e+01 0 0 0 +6542 1 -3.2790221899164230e+01 7.8068170170672015e+00 1.4808929194032316e-08 0 0 0 +9073 1 -3.4473737548429689e+01 7.2453405818439611e+00 1.5750000002946820e+01 0 0 0 +9120 1 -3.3351393883831953e+01 9.4643202547873617e+00 1.5750000040929805e+01 0 0 0 +9122 1 -3.2790221805459858e+01 7.8068170430275954e+00 1.4000000015586799e+01 0 0 0 +9125 1 -3.1106705976728819e+01 8.3682934779706049e+00 1.5750000061415587e+01 0 0 0 +6595 1 -2.7178502145820921e+01 7.8337435295537672e+00 8.7800238190993696e-09 0 0 0 +9175 1 -2.7178502187852317e+01 7.8337435243116600e+00 1.3999999989335846e+01 0 0 0 +9176 1 -2.8862018092059319e+01 7.2722669557352759e+00 1.5750000042247708e+01 0 0 0 +9177 1 -2.7739674071066226e+01 9.4912466965008129e+00 1.5750000018680568e+01 0 0 0 +9227 1 -2.3811469841310352e+01 8.9566970350532209e+00 1.4000000005827014e+01 0 0 0 +6647 1 -2.3811469879724537e+01 8.9566969594765737e+00 1.7499999970401859e+01 0 0 -1 +9228 1 -2.5494986004204602e+01 8.3952202478679219e+00 1.5750000013698868e+01 0 0 0 +9233 1 -2.3250297557865910e+01 7.2991938405824763e+00 1.5749999993364090e+01 0 0 0 +9280 1 -2.2127954567665792e+01 9.5181740395984153e+00 1.5749999998258756e+01 0 0 0 +9285 1 -1.9883268023530388e+01 8.4221480263439066e+00 1.5750000031045820e+01 0 0 0 +9283 1 -1.9322091170791026e+01 6.7646426349341855e+00 1.4000000039773303e+01 0 0 0 +9334 1 -1.8199755167640667e+01 8.9836280868196923e+00 1.4000000037400058e+01 0 0 0 +6703 1 -1.9322091248433335e+01 6.7646425878540208e+00 6.6772365414635715e-08 0 0 0 +6754 1 -1.8199755202335357e+01 8.9836280487157723e+00 6.8991209190016889e-08 0 0 0 +9336 1 -1.7638585057841350e+01 7.3261215644349305e+00 1.5750000057930420e+01 0 0 0 +9337 1 -1.6516220902440576e+01 9.5451018096456224e+00 1.5750000028615759e+01 0 0 0 +9390 1 -1.3710492574306452e+01 6.7916254970250067e+00 1.3999999987560804e+01 0 0 0 +6810 1 -1.3710492558487140e+01 6.7916255429809160e+00 2.7931577051276690e-09 0 0 0 +9388 1 -1.4271515846698042e+01 8.4490879178056275e+00 1.5749999990205763e+01 0 0 0 +9387 1 -1.2587783881780062e+01 9.0104490050080983e+00 1.3999999974233955e+01 0 0 0 +6807 1 -1.2587783908366932e+01 9.0104490841607028e+00 1.7499999999194209e+01 0 0 -1 +9393 1 -1.2026827886324838e+01 7.3531383507885684e+00 1.5749999961238473e+01 0 0 0 +9440 1 -1.0904486540761104e+01 9.5718191869255449e+00 1.5749999968800463e+01 0 0 0 +6863 1 -8.0950148560162010e+00 6.8174693639158708e+00 4.9404786039985993e-08 0 0 0 +9443 1 -8.0950147327703181e+00 6.8174693680350389e+00 1.4000000010166101e+01 0 0 0 +9494 1 -6.9829715661393763e+00 9.0386042019157706e+00 1.4000000036479959e+01 0 0 0 +6914 1 -6.9829716875261720e+00 9.0386041938792321e+00 6.0241088561951983e-08 0 0 0 +9445 1 -8.6590378662798422e+00 8.4749613803395576e+00 1.5749999987395121e+01 0 0 0 +9496 1 -6.4095237055167491e+00 7.3753071447636529e+00 1.5750000040559190e+01 0 0 0 +9497 1 -5.3078142164693505e+00 9.6074179344311670e+00 1.5750000061488993e+01 0 0 0 +9550 1 -2.5187344469363100e+00 6.8256766193734579e+00 1.4000000053370776e+01 0 0 0 +6967 1 -1.2264316781934794e+00 9.1032393650258481e+00 1.9192402334056169e-08 0 0 0 +6970 1 -2.5187345235920291e+00 6.8256765477553243e+00 7.3884418583247680e-08 0 0 0 +9547 1 -1.2264316540174478e+00 9.1032395105558361e+00 1.4000000049325966e+01 0 0 0 +9548 1 -3.1035854156098863e+00 8.5508559868271252e+00 1.5750000063428548e+01 0 0 0 +9553 1 -1.0571061200004794e+00 7.4685939366520451e+00 1.5750000032950277e+01 0 0 0 +6410 1 -4.2891316228439827e+01 9.9719447134945032e+00 1.7499999992835498e+01 0 0 -1 +6500 1 -4.2891315755417750e+01 4.3175860468621636e+01 2.4060732073394320e-08 0 0 0 +8992 1 -4.3452488241183310e+01 1.1629447963413991e+01 1.5749999976834147e+01 0 0 0 +6439 1 -4.1768972472898241e+01 1.2190924300526840e+01 1.7499999956340478e+01 0 0 -1 +9021 1 -4.1207800570677698e+01 1.0533421129842448e+01 1.5749999950761779e+01 0 0 0 +6483 1 -3.6157253604980298e+01 1.2217850118549395e+01 1.7499999977392502e+01 0 0 -1 +6486 1 -3.7279597332914491e+01 9.9988706701443277e+00 1.7499999959205017e+01 0 0 -1 +9063 1 -3.6157253504132967e+01 1.2217850151191488e+01 1.3999999986775403e+01 0 0 0 +9064 1 -3.7840769317965616e+01 1.1656373849289519e+01 1.5749999929576102e+01 0 0 0 +9066 1 -3.7279597260445634e+01 9.9988706595171788e+00 1.3999999945079479e+01 0 0 0 +9069 1 -3.5596081685904778e+01 1.0560347017487130e+01 1.5749999971695271e+01 0 0 0 +6539 1 -3.1667877989307993e+01 1.0025796613918542e+01 3.0681867713155953e-08 0 0 0 +6590 1 -3.0545534124567968e+01 1.2244776285778597e+01 4.7730427610304105e-08 0 0 0 +9170 1 -3.0545534103294830e+01 1.2244776327330099e+01 1.4000000024020505e+01 0 0 0 +9119 1 -3.1667877928232482e+01 1.0025796618724414e+01 1.4000000029883680e+01 0 0 0 +9121 1 -3.2229050022664602e+01 1.1683299768507442e+01 1.5750000057043984e+01 0 0 0 +9172 1 -2.9984362094135250e+01 1.0587273190785060e+01 1.5750000066848811e+01 0 0 0 +6646 1 -2.6056158089811898e+01 1.0052723335203222e+01 1.7499999985198222e+01 0 0 -1 +9226 1 -2.6056158107894262e+01 1.0052723393554002e+01 1.4000000000981977e+01 0 0 0 +9224 1 -2.6617330185586844e+01 1.1710226498114100e+01 1.5749999992502733e+01 0 0 0 +6643 1 -2.4933813969797988e+01 1.2271703201847815e+01 1.7499999998829090e+01 0 0 -1 +9278 1 -2.2689125939117812e+01 1.1175677179447787e+01 1.3999999996905707e+01 0 0 0 +6698 1 -2.2689126019917040e+01 1.1175677152127930e+01 1.6477827102789888e-08 0 0 0 +9223 1 -2.4933813947852261e+01 1.2271703229969914e+01 1.3999999980834833e+01 0 0 0 +9229 1 -2.4372642207067415e+01 1.0614200169581464e+01 1.5749999980350488e+01 0 0 0 +9281 1 -2.1005608358265803e+01 1.1737153436424068e+01 1.5750000033679456e+01 0 0 0 +9331 1 -1.7077392805934352e+01 1.1202596708173504e+01 1.4000000031249485e+01 0 0 0 +6751 1 -1.7077392853554397e+01 1.1202596732599119e+01 4.0106748144808080e-08 0 0 0 +9332 1 -1.8760917271100663e+01 1.0641126861596085e+01 1.5750000057915319e+01 0 0 0 +9384 1 -1.5393909148995435e+01 1.1764076940568154e+01 1.5750000004544068e+01 0 0 0 +9389 1 -1.3149238303052181e+01 1.0668018968187340e+01 1.5749999971390071e+01 0 0 0 +9438 1 -1.1466173288502537e+01 1.1229714963815596e+01 1.3999999958183642e+01 0 0 0 +6858 1 -1.1466173354901869e+01 1.1229715009753130e+01 1.7499999996487556e+01 0 0 -1 +9441 1 -9.7824047428902166e+00 1.1791488563601868e+01 1.5750000000891950e+01 0 0 0 +9492 1 -7.5397001259003993e+00 1.0697330441877142e+01 1.5750000037690784e+01 0 0 0 +6911 1 -5.8404170444887962e+00 1.1254623887385760e+01 8.1670567197988930e-08 0 0 0 +9491 1 -5.8404169431637571e+00 1.1254623973957649e+01 1.4000000051752965e+01 0 0 0 +9544 1 -4.1395813926154448e+00 1.1800636049650434e+01 1.5750000058258268e+01 0 0 0 +15430 1 -3.8388639344742174e-15 1.1486958929915897e+01 1.3999999996096124e+01 0 0 0 +7012 1 -1.0571058631682608e+00 4.0672513404704006e+01 1.5749999892277586e+01 0 0 0 +9549 1 -1.7224974416000576e+00 1.0702652670151799e+01 1.5750000038959850e+01 0 0 0 +6407 1 -4.4013660224896512e+01 1.3286951115892171e+01 1.7499999985903465e+01 0 0 -1 +6435 1 -4.2891316414633650e+01 1.5505930573841464e+01 1.7499999969983911e+01 0 0 -1 +8988 1 -4.4574832248089940e+01 1.4944454154713119e+01 1.5749999989516628e+01 0 0 0 +9017 1 -4.2330144490870232e+01 1.3848427473207899e+01 1.5749999944022708e+01 0 0 0 +6436 1 -4.0646628760820334e+01 1.4409903915853571e+01 1.7499999970560008e+01 0 0 -1 +9022 1 -4.0085456830850852e+01 1.2752400701396525e+01 1.5749999938490678e+01 0 0 0 +9060 1 -3.8963113005106244e+01 1.4971380178781148e+01 1.5749999947265298e+01 0 0 0 +9065 1 -3.6718425375244635e+01 1.3875353388528149e+01 1.5749999972626807e+01 0 0 0 +6534 1 -3.5034909658403578e+01 1.4436829623644757e+01 4.7871573372049170e-09 0 0 0 +9114 1 -3.5034909563704687e+01 1.4436829654548443e+01 1.4000000001739608e+01 0 0 0 +9116 1 -3.4473737765036937e+01 1.2779326506758895e+01 1.5750000013402854e+01 0 0 0 +9117 1 -3.3351393872411606e+01 1.4998306185765303e+01 1.5750000018608931e+01 0 0 0 +6587 1 -2.9423190086223933e+01 1.4463755991987071e+01 1.8015477110111533e-08 0 0 0 +9167 1 -2.9423190110924494e+01 1.4463756018552356e+01 1.4000000014236617e+01 0 0 0 +9168 1 -3.1106706003371993e+01 1.3902279415223084e+01 1.5750000040847596e+01 0 0 0 +9173 1 -2.8862018142271264e+01 1.2806252935965654e+01 1.5750000030721036e+01 0 0 0 +9220 1 -2.7739673923152264e+01 1.5025232651787796e+01 1.5750000024461963e+01 0 0 0 +9225 1 -2.5494985911771419e+01 1.3929206269312919e+01 1.5749999998155166e+01 0 0 0 +9276 1 -2.3250297505460509e+01 1.2833179845773019e+01 1.5750000012561603e+01 0 0 0 +6695 1 -2.1566781290353813e+01 1.3394656352854980e+01 3.0933392736187670e-08 0 0 0 +6746 1 -2.0444438397207524e+01 1.5613637465289608e+01 4.5171539397870220e-08 0 0 0 +9275 1 -2.1566781205951223e+01 1.3394656426594473e+01 1.4000000037611287e+01 0 0 0 +9326 1 -2.0444438333352494e+01 1.5613637519823614e+01 1.4000000051839782e+01 0 0 0 +9277 1 -2.2127954294368902e+01 1.5052159969133131e+01 1.5750000024156567e+01 0 0 0 +9328 1 -1.9883267762011634e+01 1.3956133980691847e+01 1.5750000056890347e+01 0 0 0 +9333 1 -1.7638584817891815e+01 1.2860107590394255e+01 1.5750000058928975e+01 0 0 0 +9380 1 -1.6516220470162352e+01 1.5079087819901913e+01 1.5750000005118157e+01 0 0 0 +9379 1 -1.4832659041799493e+01 1.5640535197382004e+01 1.3999999975239939e+01 0 0 0 +9382 1 -1.5955088179454334e+01 1.3421598705954937e+01 1.4000000007837796e+01 0 0 0 +6799 1 -1.4832659067271694e+01 1.5640535239120872e+01 1.7499999980036716e+01 0 0 -1 +6802 1 -1.5955088228405675e+01 1.3421598709344375e+01 1.1913165565147210e-08 0 0 0 +9385 1 -1.4271515403036586e+01 1.3983074023081958e+01 1.5749999945100638e+01 0 0 0 +6855 1 -1.0342364351922326e+01 1.3448174682570505e+01 1.7499999996726988e+01 0 0 -1 +9435 1 -1.0342364281758448e+01 1.3448174627769053e+01 1.3999999979972360e+01 0 0 0 +9436 1 -1.2026827412191727e+01 1.2887124605241063e+01 1.5749999958543611e+01 0 0 0 +9437 1 -1.0904486039090569e+01 1.5105805506671340e+01 1.5749999962060702e+01 0 0 0 +6906 1 -9.2228643289306635e+00 1.5668047295769524e+01 2.1043355502570193e-08 0 0 0 +9486 1 -9.2228642388041884e+00 1.5668047244265376e+01 1.3999999988229060e+01 0 0 0 +9488 1 -8.6590373949216861e+00 1.4008947846314950e+01 1.5750000028045674e+01 0 0 0 +6959 1 -3.5610866638700585e+00 1.5690694191126852e+01 7.2212692714401783e-08 0 0 0 +6962 1 -4.7485642610031871e+00 1.3476790954144651e+01 8.5108062819472252e-08 0 0 0 +9493 1 -6.4095233236896174e+00 1.2909293615862723e+01 1.5750000057806725e+01 0 0 0 +9539 1 -3.5610865272859313e+00 1.5690694256153410e+01 1.4000000095841738e+01 0 0 0 +9540 1 -5.3078139079911564e+00 1.5141404567231346e+01 1.5750000090865132e+01 0 0 0 +9542 1 -4.7485641642099807e+00 1.3476791039710911e+01 1.4000000073098516e+01 0 0 0 +9545 1 -3.1035850925008099e+00 1.4084842466195521e+01 1.5750000103939618e+01 0 0 0 +9591 1 -1.0571062609598947e+00 1.3002580405454525e+01 1.5750000086916815e+01 0 0 0 +6431 1 -4.4013660227233764e+01 1.8820936829908984e+01 1.7499999971914789e+01 0 0 -1 +7035 1 -1.7224969785384652e+00 3.8372585746533439e+01 1.5749999956483206e+01 0 0 0 +9013 1 -4.3452488316623025e+01 1.7163433716215803e+01 1.5749999977781009e+01 0 0 0 +6432 1 -4.1768972493079417e+01 1.7724910093639306e+01 1.7499999953897500e+01 0 0 -1 +6478 1 -3.9524284967511512e+01 1.6628883392601541e+01 1.7499999963945154e+01 0 0 -1 +9018 1 -4.1207800660259601e+01 1.6067407036725232e+01 1.5749999944511762e+01 0 0 0 +9056 1 -4.0085456738665556e+01 1.8286386593091830e+01 1.5749999942699381e+01 0 0 0 +6475 1 -3.8401940997104887e+01 1.8847862914452399e+01 1.7499999980845175e+01 0 0 -1 +9061 1 -3.7840769197078373e+01 1.7190359762311484e+01 1.5749999970552269e+01 0 0 0 +9112 1 -3.5596081660592290e+01 1.6094332933752934e+01 1.5749999997865912e+01 0 0 0 +6531 1 -3.3912565757722938e+01 1.6655809229979656e+01 1.7536290641828600e-08 0 0 0 +6582 1 -3.2790221720130958e+01 1.8874788845062106e+01 2.3457332076759485e-08 0 0 0 +9111 1 -3.3912565664379876e+01 1.6655809276447545e+01 1.4000000027895076e+01 0 0 0 +9162 1 -3.2790221665907360e+01 1.8874788884332105e+01 1.4000000023808962e+01 0 0 0 +9113 1 -3.4473737545422630e+01 1.8313312437209337e+01 1.5750000006745937e+01 0 0 0 +9164 1 -3.2229049808982033e+01 1.7217285633816648e+01 1.5750000024340077e+01 0 0 0 +9169 1 -2.9984361889494171e+01 1.6121259112534389e+01 1.5750000027749255e+01 0 0 0 +6635 1 -2.7178501740984789e+01 1.8901715429047833e+01 1.4173782147963720e-08 0 0 0 +6638 1 -2.8300845913728395e+01 1.6682735753514866e+01 1.2639265634106778e-08 0 0 0 +9218 1 -2.8300845874600331e+01 1.6682735773241845e+01 1.4000000015201413e+01 0 0 0 +9215 1 -2.7178501709004792e+01 1.8901715409190306e+01 1.4000000018047963e+01 0 0 0 +9216 1 -2.8862017810282694e+01 1.8340238871319240e+01 1.5750000015114372e+01 0 0 0 +9221 1 -2.6617329820089047e+01 1.7244212471519585e+01 1.5750000008912442e+01 0 0 0 +9272 1 -2.4372641916009165e+01 1.6148186105512668e+01 1.5750000010606881e+01 0 0 0 +9273 1 -2.3250297023174532e+01 1.8367165720311881e+01 1.5750000072030952e+01 0 0 0 +9324 1 -2.1005607943725551e+01 1.7271139307924521e+01 1.5750000069826442e+01 0 0 0 +6743 1 -1.9322090591500871e+01 1.7832614489437823e+01 5.9228689508472598e-08 0 0 0 +9323 1 -1.9322090538870583e+01 1.7832614523407461e+01 1.4000000032444341e+01 0 0 0 +9329 1 -1.8760916826451126e+01 1.6175112756004946e+01 1.5750000041125583e+01 0 0 0 +9376 1 -1.7638584261507638e+01 1.8394093496574051e+01 1.5750000027473495e+01 0 0 0 +6850 1 -1.3710491697896527e+01 1.7859597837021877e+01 1.7499999953515374e+01 0 0 -1 +9430 1 -1.3710491631968562e+01 1.7859597808679304e+01 1.3999999954370915e+01 0 0 0 +9381 1 -1.5393908618023824e+01 1.7298062965312951e+01 1.5749999988235048e+01 0 0 0 +9432 1 -1.3149237800268212e+01 1.6202005164071053e+01 1.5749999963427022e+01 0 0 0 +9433 1 -1.2026826914543916e+01 1.8421110859282603e+01 1.5749999942140805e+01 0 0 0 +9484 1 -9.7824042597941929e+00 1.7325475027350919e+01 1.5749999980464461e+01 0 0 0 +6903 1 -8.0950139472368896e+00 1.7885442390034761e+01 4.3169993801939199e-08 0 0 0 +9483 1 -8.0950138218633647e+00 1.7885442348579620e+01 1.4000000016395889e+01 0 0 0 +9489 1 -7.5396996567586791e+00 1.6231316980630737e+01 1.5750000047012602e+01 0 0 0 +9536 1 -6.4095228599034844e+00 1.8443280287982187e+01 1.5750000050749476e+01 0 0 0 +9541 1 -4.1395810866503533e+00 1.7334622723522422e+01 1.5750000101352978e+01 0 0 0 +7006 1 -2.5187341036976454e+00 1.7893649613710476e+01 5.4932481674541123e-08 0 0 0 +9586 1 -2.5187339725170874e+00 1.7893649708577570e+01 1.4000000139613762e+01 0 0 0 +9588 1 -1.7224971817037957e+00 1.6236639258163020e+01 1.5750000128488452e+01 0 0 0 +9589 1 -1.0571060996390749e+00 1.8536567110226660e+01 1.5750000137196974e+01 0 0 0 +6428 1 -4.2891316312404832e+01 2.1039916333058233e+01 1.7499999952717310e+01 0 0 -1 +9009 1 -4.4574832187495225e+01 2.0478439886934439e+01 1.5749999954131637e+01 0 0 0 +9014 1 -4.2330144410212348e+01 1.9382413280361263e+01 1.5749999950975891e+01 0 0 0 +6474 1 -4.0646628616321664e+01 1.9943889785136498e+01 1.7499999954903711e+01 0 0 -1 +9052 1 -4.1207800479996230e+01 2.1601392897222873e+01 1.5749999984523255e+01 0 0 0 +9057 1 -3.8963112788960188e+01 2.0505366117223062e+01 1.5749999975678975e+01 0 0 0 +6526 1 -3.7279597069502763e+01 2.1066842522578341e+01 8.9500140632026159e-09 0 0 0 +9108 1 -3.6718425131070994e+01 1.9409339327072033e+01 1.5749999975642153e+01 0 0 0 +9109 1 -3.5596081298754832e+01 2.1628318854063249e+01 1.5750000024651348e+01 0 0 0 +9160 1 -3.3351393529643303e+01 2.0532292044672168e+01 1.5750000037166727e+01 0 0 0 +6579 1 -3.1667877466084438e+01 2.1093768375148542e+01 1.3950121058314835e-08 0 0 0 +9159 1 -3.1667877384185189e+01 2.1093768381943022e+01 1.4000000044970310e+01 0 0 0 +9165 1 -3.1106705644104501e+01 1.9436265315994458e+01 1.5750000030595674e+01 0 0 0 +9212 1 -2.9984361403439831e+01 2.1655244940117907e+01 1.5750000038318341e+01 0 0 0 +6686 1 -2.6056157300982584e+01 2.1120695159417259e+01 1.3801738418806053e-08 0 0 0 +9217 1 -2.7739673409994975e+01 2.0559218521857563e+01 1.5750000023106413e+01 0 0 0 +9266 1 -2.6056157236723983e+01 2.1120695172408169e+01 1.4000000024458611e+01 0 0 0 +6687 1 -2.3811469134182726e+01 2.0024668765083554e+01 1.9931096773007084e-08 0 0 0 +9267 1 -2.3811469072034505e+01 2.0024668829946716e+01 1.4000000048973614e+01 0 0 0 +9268 1 -2.5494985389893227e+01 1.9463192106471709e+01 1.5750000050011794e+01 0 0 0 +9269 1 -2.4372641235060520e+01 2.1682171923403363e+01 1.5750000020149548e+01 0 0 0 +9320 1 -2.2127953685809981e+01 2.0586145774967889e+01 1.5750000047841336e+01 0 0 0 +9325 1 -1.9883267205287257e+01 1.9490119811045105e+01 1.5750000018791386e+01 0 0 0 +6794 1 -1.8199754247612663e+01 2.0051599883861059e+01 4.0940200562999962e-08 0 0 0 +9374 1 -1.8199754225958664e+01 2.0051599907222435e+01 1.3999999995563831e+01 0 0 0 +9372 1 -1.8760916187092551e+01 2.1709098606258056e+01 1.5750000018340140e+01 0 0 0 +9377 1 -1.6516219869061064e+01 2.0613073726172797e+01 1.5749999983683566e+01 0 0 0 +9428 1 -1.4271514840488178e+01 1.9517060088731863e+01 1.5749999960852398e+01 0 0 0 +9429 1 -1.3149237210257349e+01 2.1735991248448826e+01 1.5749999979218753e+01 0 0 0 +6847 1 -1.2587782896726186e+01 2.0078421473455649e+01 1.7499999983841434e+01 0 0 -1 +9427 1 -1.2587782799511860e+01 2.0078421412617910e+01 1.3999999967911474e+01 0 0 0 +9480 1 -1.0904485486692691e+01 2.0639791839276981e+01 1.5749999983840791e+01 0 0 0 +6954 1 -6.9829707819262969e+00 2.0106577391555398e+01 3.3884695938013465e-08 0 0 0 +9534 1 -6.9829706649249088e+00 2.0106577341201550e+01 1.4000000063339236e+01 0 0 0 +9485 1 -8.6590368675334197e+00 1.9542934358564235e+01 1.5750000006032410e+01 0 0 0 +9532 1 -7.5396991836152401e+00 2.1765303591269184e+01 1.5750000066969831e+01 0 0 0 +9537 1 -5.3078134765489891e+00 2.0675391290615444e+01 1.5750000070266781e+01 0 0 0 +7003 1 -1.2264314867902053e+00 2.0171212703321995e+01 7.4375687830752213e-08 0 0 0 +9583 1 -1.2264314702844801e+00 2.0171212830001746e+01 1.4000000127395575e+01 0 0 0 +9584 1 -3.1035848518969771e+00 1.9618829287587698e+01 1.5750000098059925e+01 0 0 0 +9585 1 -1.7224969093779376e+00 2.1770626089192362e+01 1.5750000083971953e+01 0 0 0 +7045 1 -2.5187338567962074e+00 4.0029595750825067e+01 1.3999999934258542e+01 0 0 0 +6425 1 -4.4013660145601911e+01 2.4354922682840943e+01 1.7499999956789527e+01 0 0 -1 +9010 1 -4.3452488216413755e+01 2.2697419531787173e+01 1.5749999988307245e+01 0 0 0 +9048 1 -4.2330144262294432e+01 2.4916399171693033e+01 1.5749999952573045e+01 0 0 0 +6471 1 -3.9524284750586595e+01 2.2162869314516978e+01 1.7499999974611789e+01 0 0 -1 +6470 1 -4.1768972334076892e+01 2.3258895978883636e+01 1.7499999951326775e+01 0 0 -1 +9053 1 -4.0085456485993973e+01 2.3820372525569265e+01 1.5749999981746212e+01 0 0 0 +6522 1 -3.8401940656342418e+01 2.4381848853215317e+01 2.3234818513628852e-09 0 0 0 +6523 1 -3.6157253047743758e+01 2.3285821917709242e+01 4.3486245715484984e-08 0 0 0 +9104 1 -3.7840768892100620e+01 2.2724345724809133e+01 1.5749999985428209e+01 0 0 0 +9105 1 -3.6718424715241873e+01 2.4943325219415016e+01 1.5750000014443151e+01 0 0 0 +9156 1 -3.4473737072104207e+01 2.3847298277811493e+01 1.5750000042695307e+01 0 0 0 +6630 1 -3.0545533273175682e+01 2.3312748001136125e+01 2.7903986676847126e-08 0 0 0 +9161 1 -3.2229049324417602e+01 2.2751271494781111e+01 1.5750000051127936e+01 0 0 0 +9208 1 -3.1106705007831799e+01 2.4970251068360891e+01 1.5750000059859818e+01 0 0 0 +9210 1 -3.0545533219426122e+01 2.3312748010254079e+01 1.4000000043627418e+01 0 0 0 +9213 1 -2.8862017122119724e+01 2.3874224638238026e+01 1.5750000036573681e+01 0 0 0 +9264 1 -2.6617329148015383e+01 2.2778198248724554e+01 1.5750000027090676e+01 0 0 0 +6738 1 -2.2689124936155082e+01 2.2243648863052261e+01 5.7132002240223301e-08 0 0 0 +9318 1 -2.2689124879153209e+01 2.2243648857185132e+01 1.3999999984228555e+01 0 0 0 +6683 1 -2.4933812837275013e+01 2.3339674907987881e+01 2.3880595279024419e-08 0 0 0 +9263 1 -2.4933812776449585e+01 2.3339674905884699e+01 1.3999999992574152e+01 0 0 0 +9265 1 -2.5494984624842996e+01 2.4997177902425193e+01 1.5750000018830125e+01 0 0 0 +9316 1 -2.3250296257598421e+01 2.3901151493138229e+01 1.5750000017956598e+01 0 0 0 +6735 1 -2.1566780007218927e+01 2.4462627968626460e+01 2.1141225658993790e-08 0 0 0 +9315 1 -2.1566779951897320e+01 2.4462628014103782e+01 1.3999999980431433e+01 0 0 0 +9321 1 -2.1005607212335988e+01 2.2805125102961640e+01 1.5750000032148016e+01 0 0 0 +9368 1 -1.9883266500991184e+01 2.5024105573898229e+01 1.5750000007579693e+01 0 0 0 +6791 1 -1.7077391737154013e+01 2.2270568542143113e+01 9.7946539767690410e-10 0 0 0 +9371 1 -1.7077391660855135e+01 2.2270568528679370e+01 1.3999999982764592e+01 0 0 0 +9373 1 -1.7638583627952983e+01 2.3928079315421137e+01 1.5749999996141204e+01 0 0 0 +6842 1 -1.5955087106326268e+01 2.4489570556878888e+01 1.7499999990304715e+01 0 0 -1 +9422 1 -1.5955086982172361e+01 2.4489570585380225e+01 1.3999999972722135e+01 0 0 0 +9424 1 -1.5393908015451101e+01 2.2832048898716106e+01 1.5749999987654109e+01 0 0 0 +9425 1 -1.4271514320820154e+01 2.5051046069127469e+01 1.5749999957134341e+01 0 0 0 +6898 1 -1.1466172315359779e+01 2.2297687539696181e+01 6.0784479671838199e-09 0 0 0 +6895 1 -1.0342363401276820e+01 2.4516147340305679e+01 3.2631337631983115e-08 0 0 0 +9478 1 -1.1466172189742185e+01 2.2297687511223131e+01 1.4000000004920155e+01 0 0 0 +9475 1 -1.0342363299137801e+01 2.4516147305807728e+01 1.4000000058480687e+01 0 0 0 +9476 1 -1.2026826371372678e+01 2.3955096994747525e+01 1.5750000006523594e+01 0 0 0 +9481 1 -9.7824037424997101e+00 2.2859461382669913e+01 1.5750000041356534e+01 0 0 0 +9528 1 -8.6590365318639435e+00 2.5076920802083329e+01 1.5750000075344547e+01 0 0 0 +6951 1 -5.8404162225362883e+00 2.2322597280334193e+01 5.0949051200177564e-08 0 0 0 +6998 1 -4.7485635365619361e+00 2.4544764503694832e+01 4.5017142014103229e-08 0 0 0 +9531 1 -5.8404161476888179e+00 2.2322597294969942e+01 1.4000000078585176e+01 0 0 0 +9578 1 -4.7485634851363834e+00 2.4544764488570468e+01 1.4000000107473697e+01 0 0 0 +9533 1 -6.4095224844180745e+00 2.3977266925503997e+01 1.5750000074747911e+01 0 0 0 +9580 1 -4.1395807489021328e+00 2.2868609498011121e+01 1.5750000045895538e+01 0 0 0 +7040 1 -2.5187337912218664e+00 4.0029595785432591e+01 3.9761847148156448e-08 0 0 0 +7690 1 -1.0571058703546310e+00 2.4070554033839066e+01 1.5750000109306235e+01 0 0 0 +9581 1 -3.1035847439070516e+00 2.5152816200419458e+01 1.5750000101527263e+01 0 0 0 +13021 1 -3.5302294964609966e-14 2.2554932290119996e+01 1.3011444366384239e-08 0 0 0 +6466 1 -4.2891316204474869e+01 2.6573902239509376e+01 1.7499999949181873e+01 0 0 -1 +9006 1 -4.4574832141119963e+01 2.6012425816538041e+01 1.5749999970395052e+01 0 0 0 +9044 1 -4.3452488131167470e+01 2.8231405451610090e+01 1.5749999978437859e+01 0 0 0 +6467 1 -4.0646628390172069e+01 2.5477875672308112e+01 1.7499999969130741e+01 0 0 -1 +6518 1 -3.9524284419750423e+01 2.7696855175923748e+01 1.7499999998468695e+01 0 0 -1 +9049 1 -4.1207800270112607e+01 2.7135378775501163e+01 1.5749999956762721e+01 0 0 0 +9100 1 -3.8963112444158639e+01 2.6039351993205472e+01 1.5749999982856574e+01 0 0 0 +6519 1 -3.7279596661441879e+01 2.6600828389582482e+01 2.6569697553213700e-08 0 0 0 +9101 1 -3.7840768455395207e+01 2.8258331567406799e+01 1.5750000006992339e+01 0 0 0 +9152 1 -3.5596080792229188e+01 2.7162304699912081e+01 1.5750000032923348e+01 0 0 0 +9151 1 -3.3912564629567441e+01 2.7723780958293400e+01 1.4000000033706197e+01 0 0 0 +6571 1 -3.3912564745272576e+01 2.7723780926255035e+01 6.3180120690731201e-08 0 0 0 +6574 1 -3.5034908856760893e+01 2.5504801380300915e+01 5.3089699747488339e-08 0 0 0 +9157 1 -3.3351392940799990e+01 2.6066277867278011e+01 1.5750000055970627e+01 0 0 0 +6627 1 -2.9423188960042783e+01 2.5531727632079999e+01 1.0428720997879282e-08 0 0 0 +9204 1 -3.2229048621537068e+01 2.8285257269319906e+01 1.5750000052748689e+01 0 0 0 +9207 1 -2.9423188935156439e+01 2.5531727639697134e+01 1.4000000043870950e+01 0 0 0 +9209 1 -2.9984360649668041e+01 2.7189230721635479e+01 1.5750000053794016e+01 0 0 0 +6678 1 -2.8300844561572035e+01 2.7750707357593392e+01 1.9830672215448431e-08 0 0 0 +9258 1 -2.8300844525845516e+01 2.7750707331881205e+01 1.4000000037991798e+01 0 0 0 +9260 1 -2.7739672655271914e+01 2.6093204262909019e+01 1.5750000044596156e+01 0 0 0 +9261 1 -2.6617328377963652e+01 2.8312184039666462e+01 1.5750000034671597e+01 0 0 0 +9312 1 -2.4372640468169649e+01 2.7216157673168805e+01 1.5750000012257679e+01 0 0 0 +6786 1 -2.0444437079312216e+01 2.6681609056294732e+01 1.3015011290917755e-09 0 0 0 +9366 1 -2.0444437014413158e+01 2.6681609097681960e+01 1.3999999960923407e+01 0 0 0 +9317 1 -2.2127952936652072e+01 2.6120131548822290e+01 1.5749999991565169e+01 0 0 0 +9364 1 -2.1005606603806651e+01 2.8339110863086304e+01 1.5750000001653826e+01 0 0 0 +9369 1 -1.8760915576221571e+01 2.7243084394129504e+01 1.5749999977169338e+01 0 0 0 +9420 1 -1.6516219313611980e+01 2.6147059599613467e+01 1.5749999957000830e+01 0 0 0 +6839 1 -1.4832658053662888e+01 2.6708507164676011e+01 1.7499999977363249e+01 0 0 -1 +9419 1 -1.4832657958254186e+01 2.6708507161397453e+01 1.3999999988886019e+01 0 0 0 +9421 1 -1.5393907627609298e+01 2.8366034831503192e+01 1.5749999981617973e+01 0 0 0 +9472 1 -1.3149236886253329e+01 2.7269977292357737e+01 1.5750000017467316e+01 0 0 0 +9477 1 -1.0904485153706831e+01 2.6173778027271037e+01 1.5750000042997161e+01 0 0 0 +9524 1 -9.7824036147618401e+00 2.8393447633470728e+01 1.5750000049088555e+01 0 0 0 +6946 1 -9.2228635370640148e+00 2.6736020089626280e+01 5.7080285387201002e-08 0 0 0 +9526 1 -9.2228634706480808e+00 2.6736020043049784e+01 1.4000000066942020e+01 0 0 0 +9529 1 -7.5396990250863851e+00 2.7299290063512885e+01 1.5750000085844796e+01 0 0 0 +6995 1 -3.5610861253536301e+00 2.6758667874493554e+01 1.6215793152696278e-08 0 0 0 +9575 1 -3.5610860914650844e+00 2.6758667811507181e+01 1.4000000108747399e+01 0 0 0 +9576 1 -5.3078132481015876e+00 2.6209378001123394e+01 1.5750000105703222e+01 0 0 0 +9577 1 -4.1395806231725434e+00 2.8402596233428682e+01 1.5750000080204890e+01 0 0 0 +8302 1 -1.7224968099357523e+00 2.7304612952179490e+01 1.5750000111345072e+01 0 0 0 +6462 1 -4.4013660089425777e+01 2.9888908646864284e+01 1.7499999962428955e+01 0 0 -1 +9040 1 -4.4574832094112018e+01 3.1546411872746038e+01 1.5749999957790729e+01 0 0 0 +9045 1 -4.2330144129224351e+01 3.0450385101352431e+01 1.5749999958360926e+01 0 0 0 +6463 1 -4.1768972175007562e+01 2.8792881859336291e+01 1.7499999975969001e+01 0 0 -1 +6514 1 -4.0646628187527980e+01 3.1011861559233850e+01 1.7499999986461809e+01 0 0 -1 +9096 1 -4.0085456219332485e+01 2.9354358391338195e+01 1.5749999955538344e+01 0 0 0 +9097 1 -3.8963112138607997e+01 3.1573337857742029e+01 1.5749999986925770e+01 0 0 0 +6515 1 -3.8401940298387274e+01 2.9915834704515557e+01 1.7602847179887249e-08 0 0 0 +6570 1 -3.6157252561139003e+01 2.8819807796309643e+01 4.0539731571698212e-08 0 0 0 +9148 1 -3.6718424242821435e+01 3.0477311066711895e+01 1.5750000000588576e+01 0 0 0 +6622 1 -3.2790220498173966e+01 2.9942760494335801e+01 4.3136438421242929e-08 0 0 0 +9153 1 -3.4473736489506010e+01 2.9381284131624774e+01 1.5750000021226066e+01 0 0 0 +9200 1 -3.3351392279701592e+01 3.1600263672001162e+01 1.5750000039628103e+01 0 0 0 +9202 1 -3.2790220428622135e+01 2.9942760501133645e+01 1.4000000036331834e+01 0 0 0 +9205 1 -3.1106704281815748e+01 3.0504236897254124e+01 1.5750000053990805e+01 0 0 0 +6675 1 -2.7178500261626954e+01 2.9969686989253866e+01 3.7713753897605784e-08 0 0 0 +9255 1 -2.7178500248801893e+01 2.9969686949378154e+01 1.4000000027266770e+01 0 0 0 +9256 1 -2.8862016393594963e+01 2.9408210425358892e+01 1.5750000052627639e+01 0 0 0 +9257 1 -2.7739671928640888e+01 3.1627190100944770e+01 1.5750000055520031e+01 0 0 0 +6727 1 -2.3811467696251789e+01 3.1092640305947494e+01 3.6446380136112566e-08 0 0 0 +9307 1 -2.3811467679703554e+01 3.1092640374072694e+01 1.4000000011731043e+01 0 0 0 +9308 1 -2.5494983918370778e+01 3.0531163641279310e+01 1.5750000066895106e+01 0 0 0 +9313 1 -2.3250295593341075e+01 2.9435137240973134e+01 1.5750000045763471e+01 0 0 0 +9360 1 -2.2127952365709618e+01 3.1654117355675460e+01 1.5750000018778744e+01 0 0 0 +9365 1 -1.9883265992563388e+01 3.0558091437704476e+01 1.5749999973995907e+01 0 0 0 +6783 1 -1.9322089343776621e+01 2.8900586097140334e+01 1.2329977039371443e-09 0 0 0 +6834 1 -1.8199753170990430e+01 3.1119571565263016e+01 1.7499999990162451e+01 0 0 -1 +9363 1 -1.9322089284165628e+01 2.8900586146049765e+01 1.3999999968265977e+01 0 0 0 +9414 1 -1.8199753144200123e+01 3.1119571633551583e+01 1.3999999981444926e+01 0 0 0 +9416 1 -1.7638583140537062e+01 2.9462065190664209e+01 1.5749999986376270e+01 0 0 0 +9417 1 -1.6516218968676299e+01 3.1681045518449672e+01 1.5749999982886539e+01 0 0 0 +6890 1 -1.3710490892071038e+01 2.8927569844532190e+01 1.7499999974333925e+01 0 0 -1 +9470 1 -1.3710490771612946e+01 2.8927569862289371e+01 1.3999999993536459e+01 0 0 0 +9468 1 -1.4271514093423816e+01 3.0585032037199749e+01 1.5749999978740535e+01 0 0 0 +6887 1 -1.2587782341856581e+01 3.1146393532286247e+01 2.0176535997507017e-09 0 0 0 +9467 1 -1.2587782248475499e+01 3.1146393503803953e+01 1.3999999997269555e+01 0 0 0 +9473 1 -1.2026826252206412e+01 2.9489083066113167e+01 1.5749999998745841e+01 0 0 0 +9520 1 -1.0904485116867788e+01 3.1707764059639398e+01 1.5750000025691332e+01 0 0 0 +6943 1 -8.0950133930581547e+00 2.8953415270082502e+01 5.3342731121119868e-08 0 0 0 +6990 1 -6.9829704734252633e+00 3.1174550293006810e+01 2.3462938258944632e-08 0 0 0 +9523 1 -8.0950133404862115e+00 2.8953415206412863e+01 1.4000000072722454e+01 0 0 0 +9570 1 -6.9829704310010801e+00 3.1174550203195746e+01 1.4000000076824625e+01 0 0 0 +9525 1 -8.6590364885190443e+00 3.0610906998124833e+01 1.5750000045085049e+01 0 0 0 +9572 1 -6.4095224543915270e+00 2.9511253425412985e+01 1.5750000063430582e+01 0 0 0 +9573 1 -5.3078133115527173e+00 3.1743364428665533e+01 1.5750000041687217e+01 0 0 0 +7027 1 -1.2264313860413132e+00 3.1239186436237631e+01 6.3394480775968987e-09 0 0 0 +7030 1 -2.5187337241870766e+00 2.8961623347415856e+01 1.7499999995013059e+01 0 0 -1 +8325 1 -2.5187336818262938e+00 2.8961623281857563e+01 1.4000000136250842e+01 0 0 0 +8942 1 -1.2264314063772077e+00 3.1239186397682456e+01 1.3999999999658559e+01 0 0 0 +8297 1 -1.0571060893642557e+00 2.9604540857502716e+01 1.5750000043447297e+01 0 0 0 +8906 1 -3.1035846086928456e+00 3.0686802778065946e+01 1.5750000033975851e+01 0 0 0 +6459 1 -4.2891316120339525e+01 3.2107888221954795e+01 1.7499999966421690e+01 0 0 -1 +9041 1 -4.3452488066646097e+01 3.3765391528926372e+01 1.5750000021468754e+01 0 0 0 +6510 1 -4.1768972032629122e+01 3.4326867844503255e+01 7.4708204067519546e-09 0 0 0 +6511 1 -3.9524284169936557e+01 3.3230841080072402e+01 1.2215522815495206e-08 0 0 0 +9092 1 -4.1207800112822731e+01 3.2669364708535824e+01 1.5750000020839455e+01 0 0 0 +6563 1 -3.6157252023532997e+01 3.4353793605059735e+01 4.4685684486012178e-08 0 0 0 +6566 1 -3.7279596206347712e+01 3.2134814256122667e+01 4.5356362221582458e-08 0 0 0 +9144 1 -3.7840768096879351e+01 3.3792317423770349e+01 1.5750000004446173e+01 0 0 0 +9149 1 -3.5596080227851282e+01 3.2696290530404710e+01 1.5750000026867530e+01 0 0 0 +6619 1 -3.1667876080326515e+01 3.2161740009478208e+01 3.0159199582158180e-08 0 0 0 +6670 1 -3.0545531870548214e+01 3.4380719694030667e+01 2.3260639636646374e-08 0 0 0 +9199 1 -3.1667876004585235e+01 3.2161739989178479e+01 1.4000000035985305e+01 0 0 0 +9201 1 -3.2229047956091186e+01 3.3819243158624559e+01 1.5750000028748351e+01 0 0 0 +9250 1 -3.0545531822454318e+01 3.4380719677629997e+01 1.4000000042912937e+01 0 0 0 +9252 1 -2.9984359946099801e+01 3.2723216567694692e+01 1.5750000047615101e+01 0 0 0 +6726 1 -2.6056155839821226e+01 3.2188666732297499e+01 4.0072748674901959e-08 0 0 0 +9304 1 -2.6617327769909494e+01 3.3846169876493015e+01 1.5750000052074128e+01 0 0 0 +9306 1 -2.6056155820150707e+01 3.2188666741376203e+01 1.4000000039585414e+01 0 0 0 +6778 1 -2.2689123659225395e+01 3.3311620444529453e+01 4.3869967214504868e-08 0 0 0 +9358 1 -2.2689123667467495e+01 3.3311620445488970e+01 1.4000000004355522e+01 0 0 0 +6723 1 -2.4933811531088296e+01 3.4407646543693623e+01 4.4143884991854065e-08 0 0 0 +9303 1 -2.4933811539845223e+01 3.4407646519965745e+01 1.4000000037394141e+01 0 0 0 +9309 1 -2.4372639882203988e+01 3.2750143500170850e+01 1.5750000032267970e+01 0 0 0 +9361 1 -2.1005606115933062e+01 3.3873096728897281e+01 1.5750000022398893e+01 0 0 0 +6831 1 -1.7077390899832437e+01 3.3338540297884741e+01 1.7499999973523586e+01 0 0 -1 +9411 1 -1.7077390823322364e+01 3.3338540339439881e+01 1.3999999990283300e+01 0 0 0 +9412 1 -1.8760915158498442e+01 3.2777070315544307e+01 1.5749999996988626e+01 0 0 0 +9464 1 -1.5393907395797989e+01 3.3900020742969772e+01 1.5749999998456058e+01 0 0 0 +9469 1 -1.3149236771486526e+01 3.2803963211915544e+01 1.5749999994569817e+01 0 0 0 +6938 1 -1.1466172065193437e+01 3.3365659588379778e+01 2.8930365658652590e-08 0 0 0 +9518 1 -1.1466171964597947e+01 3.3365659561537278e+01 1.4000000008860184e+01 0 0 0 +9521 1 -9.7824036855502055e+00 3.3927433552857615e+01 1.5750000050059786e+01 0 0 0 +9568 1 -7.5396990831416115e+00 3.2833276198183619e+01 1.5750000066750198e+01 0 0 0 +6987 1 -5.8404161385582301e+00 3.3390570164240934e+01 2.4728706193855032e-08 0 0 0 +9567 1 -5.8404161685866516e+00 3.3390570115592958e+01 1.4000000053325278e+01 0 0 0 +8980 1 -4.1395806819538015e+00 3.3936582592844381e+01 1.5749999990040637e+01 0 0 0 +13181 1 -1.6327504842756160e-14 3.3622905882616337e+01 1.7499999962705754e+01 0 0 -1 +9592 1 -4.1395808883306353e+00 3.9470568472741057e+01 1.5750000009309352e+01 0 0 0 +8335 1 -1.7224968191080214e+00 3.2838599607786172e+01 1.5749999965408895e+01 0 0 0 +6456 1 -4.4013660044553532e+01 3.5422894806057826e+01 4.6456847258014022e-09 0 0 0 +6506 1 -4.2891315955148514e+01 3.7641874313929648e+01 2.0872750639000515e-08 0 0 0 +9037 1 -4.4574832029813379e+01 3.7080398091738921e+01 1.5750000013163589e+01 0 0 0 +9088 1 -4.2330143992299341e+01 3.5984371145765792e+01 1.5750000018362341e+01 0 0 0 +6507 1 -4.0646627939126788e+01 3.6545847500890076e+01 3.7137390052066621e-08 0 0 0 +9093 1 -4.0085455963366414e+01 3.4888344278044272e+01 1.5750000024586917e+01 0 0 0 +9140 1 -3.8963111814411704e+01 3.7107323709502261e+01 1.5750000013123467e+01 0 0 0 +6559 1 -3.7279595809161172e+01 3.7668800090935974e+01 9.9801269470845000e-09 0 0 0 +6562 1 -3.8401939907632112e+01 3.5449820553569431e+01 3.3943763355637202e-08 0 0 0 +9145 1 -3.6718423786121349e+01 3.6011296887933000e+01 1.5750000006544925e+01 0 0 0 +6614 1 -3.5034907762300008e+01 3.6572773097276972e+01 1.2114227843085246e-08 0 0 0 +9196 1 -3.4473735886265565e+01 3.4915269946463880e+01 1.5750000008897315e+01 0 0 0 +9197 1 -3.3351391767609556e+01 3.7134249609066750e+01 1.5750000017738564e+01 0 0 0 +6667 1 -2.9423187697105369e+01 3.6599699446924724e+01 3.4988364205901235e-08 0 0 0 +9247 1 -2.9423187667482697e+01 3.6599699435317838e+01 1.4000000038269228e+01 0 0 0 +9248 1 -3.1106703681891524e+01 3.6038222814448822e+01 1.5750000035464527e+01 0 0 0 +9253 1 -2.8862015755003654e+01 3.4942196330301044e+01 1.5750000045984985e+01 0 0 0 +9300 1 -2.7739671469523913e+01 3.7161176106992514e+01 1.5750000073661711e+01 0 0 0 +9305 1 -2.5494983453640277e+01 3.6065149610389319e+01 1.5750000046154067e+01 0 0 0 +9356 1 -2.3250295120768829e+01 3.4969123119756311e+01 1.5750000040294557e+01 0 0 0 +6775 1 -2.1566778965795933e+01 3.5530599623341431e+01 1.5723841784165415e-08 0 0 0 +6826 1 -2.0444436307259050e+01 3.7749580761111922e+01 1.7499999990449975e+01 0 0 -1 +9355 1 -2.1566778981988158e+01 3.5530599674287011e+01 1.4000000002361178e+01 0 0 0 +9406 1 -2.0444436291150772e+01 3.7749580813636456e+01 1.3999999998158831e+01 0 0 0 +9357 1 -2.2127952044696798e+01 3.7188103259161544e+01 1.5749999997298930e+01 0 0 0 +9408 1 -1.9883265630420322e+01 3.6092077304124246e+01 1.5750000012937262e+01 0 0 0 +9413 1 -1.7638582860364931e+01 3.4996051098945188e+01 1.5749999993864936e+01 0 0 0 +9460 1 -1.6516218862612437e+01 3.7215031396495583e+01 1.5749999955666391e+01 0 0 0 +6879 1 -1.4832657851987495e+01 3.7776478911424547e+01 4.0127581257820566e-09 0 0 0 +6882 1 -1.5955086567049729e+01 3.5557542345125015e+01 4.1351952972945583e-09 0 0 0 +9459 1 -1.4832657769496752e+01 3.7776478920590840e+01 1.3999999987383775e+01 0 0 0 +9462 1 -1.5955086447312725e+01 3.5557542420373579e+01 1.3999999973068602e+01 0 0 0 +9465 1 -1.4271514038625925e+01 3.6119017882501758e+01 1.5749999971257397e+01 0 0 0 +6935 1 -1.0342363451934917e+01 3.5584119298873489e+01 4.0828641800771948e-08 0 0 0 +9515 1 -1.0342363372846073e+01 3.5584119260051146e+01 1.4000000050405889e+01 0 0 0 +9516 1 -1.2026826246411437e+01 3.5023068905009062e+01 1.5750000019792315e+01 0 0 0 +9517 1 -1.0904485314910099e+01 3.7241749794117183e+01 1.5750000059996999e+01 0 0 0 +6982 1 -9.2228637917670380e+00 3.7803991886629873e+01 6.9851854078706310e-08 0 0 0 +9562 1 -9.2228637757260206e+00 3.7803991837546022e+01 1.4000000063608365e+01 0 0 0 +9564 1 -8.6590367001713275e+00 3.6144892856847434e+01 1.5750000070368239e+01 0 0 0 +7019 1 -3.5610862594785706e+00 3.7826640470599877e+01 1.7499999990252800e+01 0 0 -1 +7022 1 -4.7485635887245872e+00 3.5612737249567530e+01 1.4718448682060625e-08 0 0 0 +9569 1 -6.4095225899607131e+00 3.5045239456246129e+01 1.5750000050833659e+01 0 0 0 +9587 1 -4.7485636465983223e+00 3.5612737202170209e+01 1.4000000024542459e+01 0 0 0 +9599 1 -3.5610863425342996e+00 3.7826640426650933e+01 1.3999999995542781e+01 0 0 0 +9600 1 -5.3078134893313873e+00 3.7277350412904781e+01 1.5750000053466634e+01 0 0 0 +6971 1 -1.0571060087639015e+00 3.5138527418729630e+01 1.5749999936034207e+01 0 0 0 +8970 1 -3.1035847637097254e+00 3.6220789035915594e+01 1.5749999987123685e+01 0 0 0 +6502 1 -4.4013659853597773e+01 4.0956880992011229e+01 2.8664207007977893e-08 0 0 0 +9084 1 -4.3452487889133280e+01 3.9299377673912915e+01 1.5750000030894286e+01 0 0 0 +6558 1 -3.9524283853322657e+01 3.8764826965481873e+01 2.2721213355225700e-08 0 0 0 +6503 1 -4.1768971800367289e+01 3.9860853875896602e+01 4.4790734676780630e-08 0 0 0 +9089 1 -4.1207799881220090e+01 3.8203350670936160e+01 1.5750000028027554e+01 0 0 0 +9136 1 -4.0085455753657214e+01 4.0422330225834330e+01 1.5750000013917118e+01 0 0 0 +6555 1 -3.8401939712926804e+01 4.0983806496078536e+01 1.6713254780142961e-08 0 0 0 +6610 1 -3.6157251735704733e+01 3.9887779548589201e+01 5.7699658384535724e-09 0 0 0 +9141 1 -3.7840767789746387e+01 3.9326303266660297e+01 1.5750000011033670e+01 0 0 0 +9192 1 -3.5596079856576758e+01 3.8230276404479518e+01 1.5750000015861259e+01 0 0 0 +6611 1 -3.3912563710393101e+01 3.8791752736450590e+01 1.6856418483257585e-08 0 0 0 +6662 1 -3.2790219621080276e+01 4.1010732459288171e+01 1.1431634305836269e-08 0 0 0 +9193 1 -3.4473735612504420e+01 4.0449255966746641e+01 1.5749999983511957e+01 0 0 0 +9242 1 -3.2790219551755037e+01 4.1010732449011613e+01 1.4000000011658752e+01 0 0 0 +9244 1 -3.2229047569365093e+01 3.9353229174234393e+01 1.5750000021562862e+01 0 0 0 +9249 1 -2.9984359497184176e+01 3.8257202637051421e+01 1.5750000040490335e+01 0 0 0 +6715 1 -2.7178499474970280e+01 4.1037659068410171e+01 7.7978633328257274e-08 0 0 0 +6718 1 -2.8300843509996675e+01 3.8818679301153821e+01 4.6576950296639552e-08 0 0 0 +9295 1 -2.7178499466002975e+01 4.1037659020538747e+01 1.4000000057421316e+01 0 0 0 +9296 1 -2.8862015490468039e+01 4.0476182481078872e+01 1.5750000062387171e+01 0 0 0 +9298 1 -2.8300843471240430e+01 3.8818679274894492e+01 1.4000000053954835e+01 0 0 0 +9301 1 -2.6617327457406439e+01 3.9380155985721757e+01 1.5750000048937121e+01 0 0 0 +9352 1 -2.4372639560744364e+01 3.8284129465209411e+01 1.5750000028870005e+01 0 0 0 +9353 1 -2.3250294974170149e+01 4.0503109069706817e+01 1.5750000041885249e+01 0 0 0 +9404 1 -2.1005606008201685e+01 3.9407082598020054e+01 1.5749999996814788e+01 0 0 0 +6823 1 -1.9322088906642005e+01 3.9968557824819271e+01 5.4687951944742963e-09 0 0 0 +9403 1 -1.9322088870368045e+01 3.9968557850730321e+01 1.3999999975285242e+01 0 0 0 +9409 1 -1.8760915010984046e+01 3.8311056135151027e+01 1.5749999965123880e+01 0 0 0 +9456 1 -1.7638582891228868e+01 4.0530036904439299e+01 1.5749999972845533e+01 0 0 0 +6930 1 -1.3710490966055721e+01 3.9995541458854063e+01 1.7719980149877301e-08 0 0 0 +9510 1 -1.3710490861718799e+01 3.9995541482684068e+01 1.3999999999407759e+01 0 0 0 +9461 1 -1.5393907504716982e+01 3.9434006524843667e+01 1.5749999988766779e+01 0 0 0 +9512 1 -1.3149236914017520e+01 3.8337948978435719e+01 1.5750000024755652e+01 0 0 0 +9513 1 -1.2026826505084790e+01 4.0557054557469975e+01 1.5750000031182756e+01 0 0 0 +9560 1 -9.7824039575227690e+00 3.9461419211120337e+01 1.5750000077725000e+01 0 0 0 +6979 1 -8.0950137584718842e+00 4.0021386881183631e+01 7.2206361778626160e-08 0 0 0 +9559 1 -8.0950137765314256e+00 4.0021386818096133e+01 1.4000000071231547e+01 0 0 0 +9565 1 -7.5396993481595356e+00 3.8367261947382140e+01 1.5750000075971796e+01 0 0 0 +9596 1 -6.4095228153747126e+00 4.0579225116983828e+01 1.5750000052788776e+01 0 0 0 +9605 1 -4.3452487665863828e+01 4.4833363849533967e+01 1.7500000146647454e+00 0 0 0 +9619 1 -4.2330143517315534e+01 4.7052343364015478e+01 1.7499999988170960e+00 0 0 0 +10245 1 -4.4013659595219018e+01 4.6490867185455627e+01 3.4999999932184598e+00 0 0 0 +9623 1 -4.0085455513340875e+01 4.5956316298794853e+01 1.7500000150514530e+00 0 0 0 +10264 1 -4.1768971570989322e+01 4.5394840008991395e+01 3.5000000210371205e+00 0 0 0 +10265 1 -3.9524283691367735e+01 4.4298813011328996e+01 3.5000000255728314e+00 0 0 0 +9653 1 -3.7840767636417389e+01 4.4860289282817277e+01 1.7500000020025790e+00 0 0 0 +9654 1 -3.6718423450553352e+01 4.7079268861449442e+01 1.7499999982115981e+00 0 0 0 +10295 1 -3.6157251571885247e+01 4.5421765570483764e+01 3.5000000076621700e+00 0 0 0 +10294 1 -3.8401939492065836e+01 4.6517792532967967e+01 3.4999999952889702e+00 0 0 0 +9695 1 -3.2790219550812445e+01 4.6544718591995490e+01 1.7499999996622364e+01 0 0 -1 +9696 1 -3.4473735532469583e+01 4.5983242015223993e+01 1.7499999819571359e+00 0 0 0 +10338 1 -3.2790219565985467e+01 4.6544718592777812e+01 3.4999999860135071e+00 0 0 0 +9698 1 -3.3912563556596332e+01 4.4325738812849927e+01 1.7499999983654845e+01 0 0 -1 +10341 1 -3.3912563560985575e+01 4.4325738823095115e+01 3.4999999946843636e+00 0 0 0 +9699 1 -3.2229047505317737e+01 4.4887215323299017e+01 1.7500000070885955e+00 0 0 0 +9748 1 -3.1106703463562244e+01 4.7106195183945374e+01 1.7500000036476793e+00 0 0 0 +9752 1 -2.8862015473783988e+01 4.6010168773284889e+01 1.7500000286347659e+00 0 0 0 +9802 1 -2.7178499463037689e+01 4.6571645306838079e+01 5.7725566269292954e-08 0 0 0 +9804 1 -2.6617327401056460e+01 4.4914142187233089e+01 1.7500000396799531e+00 0 0 0 +10445 1 -2.7178499491591200e+01 4.6571645301205656e+01 3.5000000180640645e+00 0 0 0 +9751 1 -2.8300843396602527e+01 4.4352665498242033e+01 5.8727275494390002e-08 0 0 0 +10394 1 -2.8300843420442153e+01 4.4352665512132624e+01 3.5000000064883987e+00 0 0 0 +9805 1 -2.5494983299865176e+01 4.7133121856813176e+01 1.7500000444913890e+00 0 0 0 +9856 1 -2.3250294999334145e+01 4.6037095100520688e+01 1.7500000364071151e+00 0 0 0 +9859 1 -2.1005606049737850e+01 4.4941068447868638e+01 1.7500000113214125e+00 0 0 0 +9908 1 -1.9883265791433558e+01 4.7160048927067322e+01 1.7499999845669814e+00 0 0 0 +9912 1 -1.7638583035804164e+01 4.6064022553990114e+01 1.7499999715517869e+00 0 0 0 +10553 1 -1.9322088973513406e+01 4.5502543554692465e+01 3.5000000381426553e+00 0 0 0 +9910 1 -1.9322088989752903e+01 4.5502543603024421e+01 1.7499999961233371e+01 0 0 -1 +9964 1 -1.5393907664256272e+01 4.4967992154667094e+01 1.7499999566024391e+00 0 0 0 +9965 1 -1.4271514402575514e+01 4.7186989105458572e+01 1.7499999772234365e+00 0 0 0 +10606 1 -1.3710491086907217e+01 4.5529527012387270e+01 3.4999999498067429e+00 0 0 0 +9963 1 -1.3710491043623607e+01 4.5529527039785151e+01 3.5707233626247002e-08 0 0 0 +10016 1 -1.2026826663697753e+01 4.6091040050243990e+01 1.7499999883613537e+00 0 0 0 +10019 1 -9.7824040964331846e+00 4.4995404627552929e+01 1.7500000250130550e+00 0 0 0 +10068 1 -8.6590370141590896e+00 4.7212863676636474e+01 1.7500000321343914e+00 0 0 0 +10713 1 -8.0950139220522583e+00 4.5555372204699069e+01 3.5000000040687640e+00 0 0 0 +10070 1 -8.0950138972649928e+00 4.5555372151705377e+01 9.1347664116642820e-08 0 0 0 +10072 1 -6.4095229084147602e+00 4.6113210375446037e+01 1.7500000434088481e+00 0 0 0 +10124 1 -4.1395809293005623e+00 4.5004553839565801e+01 1.7500000242626101e+00 0 0 0 +10125 1 -3.1035848623531170e+00 4.7288759867248139e+01 1.7500000020998858e+00 0 0 0 +10174 1 -1.0571060213599790e+00 4.6206498730164292e+01 1.7499999978692182e+00 0 0 0 +10766 1 -2.5187338089923781e+00 4.5563581178041950e+01 3.5000000465185686e+00 0 0 0 +10123 1 -2.5187337948667938e+00 4.5563581171535084e+01 1.7499999957306539e+01 0 0 -1 +9603 1 -4.4574831544889570e+01 4.8148370427548478e+01 1.7499999956651457e+00 0 0 0 +9615 1 -4.3452487310433703e+01 5.0367349926075846e+01 1.7500000006738063e+00 0 0 0 +10260 1 -4.2891315440584599e+01 4.8709846607038024e+01 3.4999999717330401e+00 0 0 0 +9620 1 -4.1207799371852104e+01 4.9271322849747122e+01 1.7500000011692995e+00 0 0 0 +9649 1 -3.8963111407960120e+01 4.8175295742400941e+01 1.7500000181769289e+00 0 0 0 +10261 1 -4.0646627451359173e+01 4.7613819630611580e+01 3.5000000033324925e+00 0 0 0 +10290 1 -3.9524283431343136e+01 4.9832799090445334e+01 3.5000000095793351e+00 0 0 0 +9650 1 -3.7840767490666089e+01 5.0394275367276052e+01 1.7499999995532740e+00 0 0 0 +9692 1 -3.5596079633719548e+01 4.9298248470320786e+01 1.7500000040479129e+00 0 0 0 +10291 1 -3.7279595495828310e+01 4.8736772116732332e+01 3.5000000158863780e+00 0 0 0 +9697 1 -3.3351391580351667e+01 4.8202221810348085e+01 1.7499999876385868e+00 0 0 0 +9744 1 -3.2229047601642513e+01 5.0421201537299822e+01 1.7500000017198909e+00 0 0 0 +9746 1 -3.1667875433681061e+01 4.8763698359790830e+01 2.9900423014138411e-09 0 0 0 +9749 1 -2.9984359460505793e+01 4.9325175094303944e+01 1.7500000209024273e+00 0 0 0 +10389 1 -3.1667875460695850e+01 4.8763698366757829e+01 3.4999999916913715e+00 0 0 0 +9799 1 -2.6056155391811998e+01 4.8790625078487061e+01 5.0378525183283393e-08 0 0 0 +9800 1 -2.7739671371334367e+01 4.8229148545529000e+01 1.7500000314059518e+00 0 0 0 +9801 1 -2.6617327525763542e+01 5.0448128372195256e+01 1.7500000461831648e+00 0 0 0 +10442 1 -2.6056155405221215e+01 4.8790625097793594e+01 3.5000000142742498e+00 0 0 0 +9852 1 -2.4372639606699568e+01 4.9352101659948836e+01 1.7500000325161134e+00 0 0 0 +10497 1 -2.3811467238970963e+01 4.7694598350676330e+01 3.5000000301535472e+00 0 0 0 +10494 1 -2.2689123565699479e+01 4.9913578302274701e+01 3.5000000305614796e+00 0 0 0 +9854 1 -2.3811467268105304e+01 4.7694598354730296e+01 4.2703010586945868e-08 0 0 0 +9851 1 -2.2689123590332766e+01 4.9913578311255812e+01 2.0364511974524783e-08 0 0 0 +9857 1 -2.2127952110875011e+01 4.8256075115174070e+01 1.7500000370035094e+00 0 0 0 +9904 1 -2.1005606218448932e+01 5.0475054326469596e+01 1.7500000065831756e+00 0 0 0 +9909 1 -1.8760915337472035e+01 4.9379027632970676e+01 1.7499999873809862e+00 0 0 0 +9960 1 -1.6516219197000265e+01 4.8283002697609660e+01 1.7499999735074188e+00 0 0 0 +10550 1 -1.8199753179230687e+01 4.7721528905183135e+01 3.5000000055525620e+00 0 0 0 +10601 1 -1.7077391226569020e+01 4.9940497439816710e+01 3.5000000020465181e+00 0 0 0 +9907 1 -1.8199753178994602e+01 4.7721528944340044e+01 1.7499999974367416e+01 0 0 -1 +9958 1 -1.7077391191040419e+01 4.9940497465961691e+01 1.7499999989149206e+01 0 0 -1 +9961 1 -1.5393907885209581e+01 5.0501977720178516e+01 1.7499999971602986e+00 0 0 0 +10012 1 -1.3149237252146742e+01 4.9405920068787765e+01 1.7499999956082470e+00 0 0 0 +10017 1 -1.0904485640146751e+01 4.8309720746165105e+01 1.7500000288146451e+00 0 0 0 +10064 1 -9.7824041593032049e+00 5.0529389926346468e+01 1.7500000254811012e+00 0 0 0 +10654 1 -1.1466172556365938e+01 4.9967616179742244e+01 3.4999999866608049e+00 0 0 0 +10657 1 -1.2587782767893197e+01 4.7748350408057327e+01 3.4999999859971402e+00 0 0 0 +10011 1 -1.1466172512198762e+01 4.9967616174761162e+01 7.3189364125457654e-08 0 0 0 +10014 1 -1.2587782703085677e+01 4.7748350412619672e+01 3.9539882167151289e-08 0 0 0 +10069 1 -7.5396995431134926e+00 4.9435232524916941e+01 1.7500000267664253e+00 0 0 0 +10710 1 -6.9829709696636035e+00 4.7776506878498573e+01 3.4999999943333631e+00 0 0 0 +10067 1 -6.9829709570731540e+00 4.7776506835604152e+01 7.2637930750919301e-08 0 0 0 +10120 1 -5.3078136952420634e+00 4.8345321046199736e+01 1.7500000200949604e+00 0 0 0 +10121 1 -4.1395808946674411e+00 5.0538538811856895e+01 1.7499999821762870e+00 0 0 0 +10761 1 -5.8404165167543693e+00 4.9992526385207896e+01 3.4999999908878645e+00 0 0 0 +10118 1 -5.8404165401847576e+00 4.9992526364701298e+01 4.5205827066013985e-08 0 0 0 +10171 1 -1.7224970427343309e+00 4.9440556391611672e+01 1.7499999661455976e+00 0 0 0 +10816 1 -1.2264313930666646e+00 4.7841143787124942e+01 3.4999999858304727e+00 0 0 0 +11493 1 -1.2264316912082958e+00 8.6579042119058968e+01 1.4000000050899684e+01 0 0 0 +10173 1 -1.2264313993274896e+00 4.7841143791820556e+01 1.7499999971383023e+01 0 0 -1 +11461 1 -3.1035854234852565e+00 8.6026658536214327e+01 1.5750000093910289e+01 0 0 0 +9611 1 -4.4574831294534391e+01 5.3682356389105379e+01 1.7499999727734601e+00 0 0 0 +9616 1 -4.2330143227461086e+01 5.2586329432138633e+01 1.7499999848380545e+00 0 0 0 +10256 1 -4.4013659273019087e+01 5.2024853221831101e+01 3.4999999581482832e+00 0 0 0 +9645 1 -4.0085455289392598e+01 5.1490302420115626e+01 1.7499999916527393e+00 0 0 0 +9646 1 -3.8963111312011151e+01 5.3709281870335211e+01 1.7499999924957699e+00 0 0 0 +10257 1 -4.1768971269213971e+01 5.0928826128178038e+01 3.4999999736884635e+00 0 0 0 +10286 1 -4.0646627285308327e+01 5.3147805746408608e+01 3.4999999916924165e+00 0 0 0 +9688 1 -3.6718423429740703e+01 5.2613254954380771e+01 1.7500000171679422e+00 0 0 0 +10287 1 -3.8401939387260178e+01 5.2051778644769946e+01 3.5000000198232133e+00 0 0 0 +10333 1 -3.6157251536505257e+01 5.0955751658289124e+01 3.5000000224619590e+00 0 0 0 +9693 1 -3.4473735578924234e+01 5.1517228140022389e+01 1.7500000230422557e+00 0 0 0 +9740 1 -3.3351391717330500e+01 5.3736207930704765e+01 1.7500000189528764e+00 0 0 0 +10330 1 -3.5034907568279671e+01 5.3174731262784135e+01 3.5000000246144625e+00 0 0 0 +9743 1 -3.0545531562177445e+01 5.0982678255923318e+01 2.1218581312580934e-08 0 0 0 +9745 1 -3.1106703595968838e+01 5.2640181352780907e+01 1.7500000104259794e+00 0 0 0 +9794 1 -2.9423187654500410e+01 5.3201658061504951e+01 3.5828293917503639e-08 0 0 0 +10386 1 -3.0545531595982325e+01 5.0982678220654044e+01 3.5000000100222475e+00 0 0 0 +10437 1 -2.9423187681308701e+01 5.3201658057540037e+01 3.5000000074100486e+00 0 0 0 +9796 1 -2.8862015569353026e+01 5.1544154940302555e+01 1.7500000174801094e+00 0 0 0 +9797 1 -2.7739671546990145e+01 5.3763134655226359e+01 1.7500000403161717e+00 0 0 0 +9848 1 -2.5494983515172340e+01 5.2667107957492227e+01 1.7500000359837975e+00 0 0 0 +9850 1 -2.4933811428451826e+01 5.1009604826480192e+01 4.4369587454921752e-08 0 0 0 +9853 1 -2.3250295181815172e+01 5.1571081101663545e+01 1.7500000230209627e+00 0 0 0 +10493 1 -2.4933811441684128e+01 5.1009604802981954e+01 3.5000000249413699e+00 0 0 0 +9900 1 -2.2127952375763034e+01 5.3790061031260599e+01 1.7500000154783513e+00 0 0 0 +9905 1 -1.9883266029173484e+01 5.2694034696845563e+01 1.7500000066574140e+00 0 0 0 +10545 1 -2.1566779202322671e+01 5.2132557355181689e+01 3.5000000266854516e+00 0 0 0 +9902 1 -2.1566779219824006e+01 5.2132557330465815e+01 9.7647883142467952e-09 0 0 0 +9956 1 -1.7638583323158613e+01 5.1598008233697634e+01 1.7499999733128646e+00 0 0 0 +9957 1 -1.6516219406492961e+01 5.3816988333411345e+01 1.7499999934747004e+00 0 0 0 +9955 1 -1.5955087021739311e+01 5.2159499340006043e+01 1.7499999996495937e+01 0 0 -1 +10008 1 -1.4271514556512926e+01 5.2720974630788561e+01 1.7500000090170651e+00 0 0 0 +10598 1 -1.5955087062225694e+01 5.2159499337395843e+01 3.5000000122308474e+00 0 0 0 +10013 1 -1.2026826723559733e+01 5.1625025430230274e+01 1.7500000248349983e+00 0 0 0 +10060 1 -1.0904485628286563e+01 5.3843706053206340e+01 1.7500000251597312e+00 0 0 0 +10705 1 -1.0342363828951839e+01 5.2186075548334891e+01 3.4999999863357876e+00 0 0 0 +10062 1 -1.0342363826829956e+01 5.2186075545367274e+01 8.2423421688099988e-08 0 0 0 +10065 1 -8.6590370012601898e+00 5.2746848872332201e+01 1.7500000238517854e+00 0 0 0 +10116 1 -6.4095228671757880e+00 5.1647195423980016e+01 1.7500000024886992e+00 0 0 0 +10117 1 -5.3078136025183671e+00 5.3879306011630149e+01 1.7499999992430850e+00 0 0 0 +10758 1 -4.7485638146931937e+00 5.2214693080472024e+01 3.4999999992665303e+00 0 0 0 +10115 1 -4.7485638435349014e+00 5.2214693084994927e+01 1.7499999997574402e+01 0 0 -1 +10168 1 -3.1035849059867902e+00 5.2822744826222134e+01 1.7499999976752521e+00 0 0 0 +10172 1 -1.0571059468751483e+00 5.1740483748130337e+01 1.7499999801804993e+00 0 0 0 +9612 1 -4.3452487186738828e+01 5.5901335899444923e+01 1.7499999655141369e+00 0 0 0 +10253 1 -4.2891315209209225e+01 5.4243832616650387e+01 3.4999999719483821e+00 0 0 0 +10252 1 -4.5136003275783459e+01 5.5339859577393824e+01 3.4999999557104298e+00 0 0 0 +9641 1 -4.1207799247754181e+01 5.4805308943810637e+01 1.7499999902688737e+00 0 0 0 +10282 1 -4.1768971155814960e+01 5.6462812123394002e+01 3.4999999817088043e+00 0 0 0 +10283 1 -3.9524283380866926e+01 5.5366785194959341e+01 3.5000000063865890e+00 0 0 0 +9684 1 -3.7840767456297392e+01 5.5928261443860748e+01 1.7500000038765524e+00 0 0 0 +9689 1 -3.5596079722935350e+01 5.4832234601505725e+01 1.7500000135385034e+00 0 0 0 +10326 1 -3.6157251585893476e+01 5.6489737733738814e+01 3.5000000100656807e+00 0 0 0 +10329 1 -3.7279595516731632e+01 5.4270758242850476e+01 3.5000000183047137e+00 0 0 0 +9738 1 -3.3912563666371156e+01 5.5393710981617204e+01 1.7499999991011858e+01 0 0 -1 +10381 1 -3.3912563686272513e+01 5.5393711014641902e+01 3.5000000244015443e+00 0 0 0 +9741 1 -3.2229047691592534e+01 5.5955187528841279e+01 1.7500000303110643e+00 0 0 0 +9792 1 -2.9984359635797716e+01 5.4859161154720866e+01 1.7500000284844222e+00 0 0 0 +9791 1 -2.8300843666438055e+01 5.5420637817793732e+01 3.9776252405432611e-08 0 0 0 +9844 1 -2.6617327716532877e+01 5.5982114398709655e+01 1.7500000244965297e+00 0 0 0 +10434 1 -2.8300843703196012e+01 5.5420637816107799e+01 3.5000000213033764e+00 0 0 0 +9849 1 -2.4372639829884072e+01 5.4886087647089255e+01 1.7500000433654173e+00 0 0 0 +9899 1 -2.0444436747757269e+01 5.4351538276399417e+01 2.8241972673908505e-10 0 0 0 +9901 1 -2.1005606436205216e+01 5.6009040147213796e+01 1.7500000013929720e+00 0 0 0 +10542 1 -2.0444436746904753e+01 5.4351538270509181e+01 3.5000000033499967e+00 0 0 0 +9950 1 -1.9322089366299011e+01 5.6570515106934891e+01 1.7499999972079184e+01 0 0 -1 +9952 1 -1.8760915518334890e+01 5.4913013350710344e+01 1.7499999757803208e+00 0 0 0 +10593 1 -1.9322089369045177e+01 5.6570515102575655e+01 3.5000000249706740e+00 0 0 0 +10003 1 -1.3710491286379655e+01 5.6597497962751234e+01 1.3720445650639318e-08 0 0 0 +10004 1 -1.5393907964578805e+01 5.6035963258193021e+01 1.7499999871674323e+00 0 0 0 +10006 1 -1.4832658282629819e+01 5.4378435623222586e+01 1.0101775318804154e-08 0 0 0 +10009 1 -1.3149237298326131e+01 5.4939905456384686e+01 1.7500000259634507e+00 0 0 0 +10646 1 -1.3710491288349209e+01 5.6597497952128073e+01 3.4999999951291421e+00 0 0 0 +10649 1 -1.4832658311201241e+01 5.4378435611329181e+01 3.5000000228615247e+00 0 0 0 +10061 1 -9.7824041146253347e+00 5.6063375185808191e+01 1.7500000192932683e+00 0 0 0 +10112 1 -7.5396994672018955e+00 5.4969217666546292e+01 1.7500000064738883e+00 0 0 0 +10702 1 -9.2228639857013004e+00 5.4405947819772031e+01 3.4999999858391222e+00 0 0 0 +10753 1 -8.0950138222684433e+00 5.6623342567279508e+01 3.4999999762022824e+00 0 0 0 +10059 1 -9.2228640106838569e+00 5.4405947818153003e+01 4.3394787716850171e-08 0 0 0 +10110 1 -8.0950138336307429e+00 5.6623342544473829e+01 3.9407921593791235e-08 0 0 0 +10164 1 -4.1395808396584872e+00 5.6072523780465488e+01 1.7499999969869633e+00 0 0 0 +10809 1 -3.5610863318686481e+00 5.4428595918746247e+01 3.4999999890245137e+00 0 0 0 +10166 1 -3.5610863297255140e+00 5.4428595920189956e+01 9.3971904264395007e-09 0 0 0 +10169 1 -1.7224969964354679e+00 5.4974541221293613e+01 1.7500000346106050e+00 0 0 0 +10806 1 -2.5187337275476880e+00 5.6631551026753421e+01 3.5000000123390245e+00 0 0 0 +10163 1 -2.5187337108996011e+00 5.6631550999580448e+01 4.9818323472454487e-08 0 0 0 +9608 1 -4.4574831230045781e+01 5.9216342198517602e+01 1.7499999951944463e+00 0 0 0 +9637 1 -4.2330143152842425e+01 5.8120315343307780e+01 1.7499999686414989e+00 0 0 0 +10250 1 -4.4013659187866999e+01 5.7558839094852566e+01 3.4999999718726729e+00 0 0 0 +10278 1 -4.2891315155921568e+01 5.9777818453499378e+01 3.4999999783834879e+00 0 0 0 +9642 1 -4.0085455211198280e+01 5.7024288450934620e+01 1.7499999925096756e+00 0 0 0 +9680 1 -3.8963111242992795e+01 5.9243267852971329e+01 1.7499999987352666e+00 0 0 0 +10279 1 -4.0646627177381518e+01 5.8681791680225253e+01 3.4999999876958330e+00 0 0 0 +9685 1 -3.6718423401692284e+01 5.8147240999426032e+01 1.7500000025867115e+00 0 0 0 +10322 1 -3.7279595409537372e+01 5.9804744240447285e+01 3.5000000300402534e+00 0 0 0 +10325 1 -3.8401939344749373e+01 5.7585764694788807e+01 3.4999999988300385e+00 0 0 0 +9735 1 -3.2790219737101793e+01 5.7612690729243290e+01 1.7499999992512418e+01 0 0 -1 +9736 1 -3.4473735652056781e+01 5.7051214155523304e+01 1.7500000061994221e+00 0 0 0 +9737 1 -3.3351391724997804e+01 5.9270193886786807e+01 1.7499999829341584e+00 0 0 0 +10378 1 -3.2790219767804906e+01 5.7612690746604422e+01 3.5000000151819317e+00 0 0 0 +9786 1 -3.1667875632580376e+01 5.9831670373950629e+01 5.7134344450624348e-09 0 0 0 +9788 1 -3.1106703706473336e+01 5.8174167329791338e+01 1.7499999922656106e+00 0 0 0 +10429 1 -3.1667875649974754e+01 5.9831670412102341e+01 3.4999999808619315e+00 0 0 0 +9793 1 -2.8862015759172323e+01 5.7078140973518416e+01 1.7500000192070544e+00 0 0 0 +9840 1 -2.7739671650446471e+01 5.9297120586081519e+01 1.7500000165491421e+00 0 0 0 +10485 1 -2.7178499809127089e+01 5.7639617431015168e+01 3.5000000170821779e+00 0 0 0 +10482 1 -2.6056155693418891e+01 5.9858597028435895e+01 3.5000000028326097e+00 0 0 0 +9839 1 -2.6056155690035638e+01 5.9858597026692188e+01 3.4951340239654124e-08 0 0 0 +9842 1 -2.7178499778221113e+01 5.7639617438802524e+01 4.5689589013254992e-08 0 0 0 +9845 1 -2.5494983645996463e+01 5.8201093872865201e+01 1.7500000305355103e+00 0 0 0 +9894 1 -2.3811467607127121e+01 5.8762570233382974e+01 3.7136293290605106e-08 0 0 0 +9896 1 -2.3250295372341064e+01 5.7105066989294436e+01 1.7500000135889293e+00 0 0 0 +10537 1 -2.3811467585432528e+01 5.8762570212323538e+01 3.5000000197323997e+00 0 0 0 +9897 1 -2.2127952455960759e+01 5.9324046853312801e+01 1.7500000194344338e+00 0 0 0 +9948 1 -1.9883266142986244e+01 5.8228020505194735e+01 1.7499999854071708e+00 0 0 0 +9947 1 -1.8199753523159856e+01 5.8789500346367383e+01 1.7499999962518743e+01 0 0 -1 +9953 1 -1.7638583408152662e+01 5.7131993915219212e+01 1.7499999824582264e+00 0 0 0 +10000 1 -1.6516219478734882e+01 5.9350973960675226e+01 1.7499999804385193e+00 0 0 0 +10590 1 -1.8199753509197748e+01 5.8789500329843271e+01 3.4999999980344256e+00 0 0 0 +10005 1 -1.4271514620649034e+01 5.8254960113505099e+01 1.7500000092080892e+00 0 0 0 +10054 1 -1.2587782841156319e+01 5.8816321244289760e+01 1.7865449014342097e-08 0 0 0 +10056 1 -1.2026826770634486e+01 5.7159010825928739e+01 1.7500000161366809e+00 0 0 0 +10057 1 -1.0904485639870272e+01 5.9377691422916591e+01 1.7500000275053265e+00 0 0 0 +10697 1 -1.2587782862802554e+01 5.8816321251241654e+01 3.5000000032430001e+00 0 0 0 +10108 1 -8.6590369064789190e+00 5.8280834136568224e+01 1.7500000109488159e+00 0 0 0 +10750 1 -6.9829707801853980e+00 5.8844477178952268e+01 3.4999999733213492e+00 0 0 0 +10107 1 -6.9829707727665102e+00 5.8844477147470819e+01 3.3580978009181302e-08 0 0 0 +10113 1 -6.4095227779858597e+00 5.7181180573362163e+01 1.7500000069461414e+00 0 0 0 +10160 1 -5.3078134914146782e+00 5.9413291178087505e+01 1.7500000144154233e+00 0 0 0 +10165 1 -3.1035847567910637e+00 5.8356729718110472e+01 1.7500000051196714e+00 0 0 0 +10211 1 -1.0571060242638288e+00 5.7274468519416146e+01 1.7500000272816345e+00 0 0 0 +10853 1 -1.2264313446679296e+00 5.8909113528683321e+01 3.4999999829277506e+00 0 0 0 +10210 1 -1.2264313432402845e+00 5.8909113543058432e+01 2.6236410646495921e-08 0 0 0 +9633 1 -4.3452487110513331e+01 6.1435321630865538e+01 1.7500000142125394e+00 0 0 0 +10274 1 -4.4013659142260721e+01 6.3092824797128024e+01 3.4999999682286189e+00 0 0 0 +10249 1 -4.5136003193878253e+01 6.0873845310231665e+01 3.4999999782436944e+00 0 0 0 +9638 1 -4.1207799107161208e+01 6.0339294774298338e+01 1.7499999994663040e+00 0 0 0 +9676 1 -4.0085455098106898e+01 6.2558274276756677e+01 1.7500000057739886e+00 0 0 0 +10275 1 -4.1768971063928809e+01 6.1996797907895925e+01 3.4999999909388637e+00 0 0 0 +10321 1 -3.9524283256812147e+01 6.0900771111531860e+01 3.4999999962743256e+00 0 0 0 +9681 1 -3.7840767375354140e+01 6.1462247417928552e+01 1.7499999886668489e+00 0 0 0 +9732 1 -3.5596079606937799e+01 6.0366220554209789e+01 1.7499999923780614e+00 0 0 0 +10373 1 -3.6157251446906862e+01 6.2023723687912145e+01 3.5000000094961763e+00 0 0 0 +10318 1 -3.8401939215689815e+01 6.3119750587005953e+01 3.4999999965176709e+00 0 0 0 +9733 1 -3.4473735538797541e+01 6.2585200100028793e+01 1.7499999700341249e+00 0 0 0 +9784 1 -3.2229047712668788e+01 6.1489173498206675e+01 1.7499999648036133e+00 0 0 0 +9789 1 -2.9984359675117936e+01 6.0393147076869994e+01 1.7499999959566230e+00 0 0 0 +10426 1 -3.0545531726622464e+01 6.2050650122021970e+01 3.4999999760358675e+00 0 0 0 +9783 1 -3.0545531695659406e+01 6.2050650129726947e+01 1.7499999994201414e+01 0 0 -1 +9836 1 -2.8862015707061634e+01 6.2612126749186146e+01 1.7499999761759355e+00 0 0 0 +9841 1 -2.6617327756723803e+01 6.1516100217993213e+01 1.7500000210304909e+00 0 0 0 +9892 1 -2.4372639899415216e+01 6.0420073474609779e+01 1.7500000213638522e+00 0 0 0 +9893 1 -2.3250295407416218e+01 6.2639052758062483e+01 1.7500000152757917e+00 0 0 0 +9891 1 -2.2689123871227061e+01 6.0981550019678785e+01 2.2916663035324389e-08 0 0 0 +10534 1 -2.2689123857460761e+01 6.0981549985746696e+01 3.5000000103022355e+00 0 0 0 +10533 1 -2.4933811667652162e+01 6.2077576542686387e+01 3.5000000157959792e+00 0 0 0 +9890 1 -2.4933811670016912e+01 6.2077576584338381e+01 2.6441942559490938e-08 0 0 0 +9942 1 -2.1566779436674580e+01 6.3200528922369358e+01 1.7499999994213617e+01 0 0 -1 +9944 1 -2.1005606501804390e+01 6.1543025925683409e+01 1.7499999901548418e+00 0 0 0 +10585 1 -2.1566779413438663e+01 6.3200528932067208e+01 3.5000000167194645e+00 0 0 0 +9949 1 -1.8760915630806679e+01 6.0446999110830312e+01 1.7499999916665223e+00 0 0 0 +9996 1 -1.7638583525950509e+01 6.2665979635459408e+01 1.7499999780731361e+00 0 0 0 +9998 1 -1.7077391452078231e+01 6.1008468800187778e+01 1.7499999970826710e+01 0 0 -1 +10641 1 -1.7077391465834975e+01 6.1008468801089734e+01 3.4999999928175485e+00 0 0 0 +9995 1 -1.5955087174327856e+01 6.3227470633057514e+01 1.7499999967000058e+01 0 0 -1 +10001 1 -1.5393908073225067e+01 6.1569948904016016e+01 1.7499999963909456e+00 0 0 0 +10052 1 -1.3149237361896667e+01 6.0473890963681598e+01 1.7499999977764251e+00 0 0 0 +10638 1 -1.5955087198871913e+01 6.3227470636256626e+01 3.4999999913331452e+00 0 0 0 +10051 1 -1.1466172495930913e+01 6.1035586933352810e+01 2.3898870427845996e-08 0 0 0 +10053 1 -1.2026826706232422e+01 6.2692996335017703e+01 1.7500000295026243e+00 0 0 0 +10102 1 -1.0342363678631964e+01 6.3254046344803321e+01 6.2459939839239856e-08 0 0 0 +10104 1 -9.7824040252790585e+00 6.1597360592651668e+01 1.7500000363980674e+00 0 0 0 +10694 1 -1.1466172532657351e+01 6.1035586963862904e+01 3.4999999953588334e+00 0 0 0 +10745 1 -1.0342363723969399e+01 6.3254046361092968e+01 3.4999999797055144e+00 0 0 0 +10109 1 -7.5396993339973344e+00 6.0503202975034405e+01 1.7500000388051595e+00 0 0 0 +10156 1 -6.4095226168615378e+00 6.2715165905856978e+01 1.7500000275825309e+00 0 0 0 +10158 1 -5.8404162633548529e+00 6.1060496694808343e+01 2.2694144572093481e-08 0 0 0 +10161 1 -4.1395807050956037e+00 6.1606508944376301e+01 1.7499999988558437e+00 0 0 0 +10798 1 -4.7485635797469614e+00 6.3282663432036529e+01 3.5000000183950157e+00 0 0 0 +10801 1 -5.8404162728239291e+00 6.1060496672312091e+01 3.4999999926703871e+00 0 0 0 +10155 1 -4.7485635822045609e+00 6.3282663453824064e+01 1.7499999993932601e+01 0 0 -1 +10208 1 -1.7224969113565483e+00 6.0508526157792545e+01 1.7499999869411764e+00 0 0 0 +10209 1 -1.0571059630990061e+00 6.2808453586918354e+01 1.7499999740699614e+00 0 0 0 +10877 1 -1.7224975776394154e+00 8.8178455171443375e+01 1.5750000034482856e+01 0 0 0 +16125 1 -1.6525636415140222e-13 6.1292832182287121e+01 1.7499999987029089e+01 0 0 -1 +9629 1 -4.4574831210487318e+01 6.4750327859789294e+01 1.7500000052760132e+00 0 0 0 +9634 1 -4.2330143101114402e+01 6.3654301063286056e+01 1.7500000052481923e+00 0 0 0 +10271 1 -4.2891315122735698e+01 6.5311804153043624e+01 3.4999999868868912e+00 0 0 0 +9672 1 -4.1207799133568749e+01 6.5873280563297342e+01 1.7499999866347811e+00 0 0 0 +9677 1 -3.8963111124961401e+01 6.4777253684456397e+01 1.7499999828278399e+00 0 0 0 +10317 1 -4.0646627104141587e+01 6.4215777471871249e+01 3.5000000141523770e+00 0 0 0 +9728 1 -3.6718423288210182e+01 6.3681226919523958e+01 1.7499999632495122e+00 0 0 0 +9729 1 -3.5596079533782628e+01 6.5900206477709347e+01 1.7499999479792698e+00 0 0 0 +10369 1 -3.7279595312637568e+01 6.5338730116384582e+01 3.4999999664826738e+00 0 0 0 +9727 1 -3.5034907425268983e+01 6.4242703215149916e+01 1.7499999944106332e+01 0 0 -1 +9780 1 -3.3351391609136797e+01 6.4804179788446973e+01 1.7499999556843349e+00 0 0 0 +10370 1 -3.5034907419047194e+01 6.4242703198254418e+01 3.4999999813376905e+00 0 0 0 +9785 1 -3.1106703631161171e+01 6.3708153165831753e+01 1.7499999625356117e+00 0 0 0 +9832 1 -2.9984359574338605e+01 6.5927132793506544e+01 1.7499999947803404e+00 0 0 0 +10477 1 -2.9423187714086446e+01 6.4269629775179084e+01 3.4999999794994108e+00 0 0 0 +9834 1 -2.9423187705804242e+01 6.4269629758077144e+01 1.0548211939823028e-08 0 0 0 +9837 1 -2.7739671581235079e+01 6.4831106293157248e+01 1.7500000185303923e+00 0 0 0 +9888 1 -2.5494983648526841e+01 6.3735079616949974e+01 1.7500000136481635e+00 0 0 0 +9889 1 -2.4372639907021405e+01 6.5954059161239869e+01 1.7500000178486323e+00 0 0 0 +9939 1 -2.0444436899978239e+01 6.5419509799377110e+01 1.7499999988732242e+01 0 0 -1 +9940 1 -2.2127952525817037e+01 6.4858032577871754e+01 1.7500000133686127e+00 0 0 0 +9945 1 -1.9883266235413217e+01 6.3762006233783573e+01 1.7500000080721045e+00 0 0 0 +10582 1 -2.0444436900489851e+01 6.5419509781007150e+01 3.5000000026639819e+00 0 0 0 +9992 1 -1.8760915667584420e+01 6.5980984853292384e+01 1.7499999890933362e+00 0 0 0 +9997 1 -1.6516219534821083e+01 6.4884959732552147e+01 1.7499999987855628e+00 0 0 0 +10046 1 -1.4832658335394111e+01 6.5446406927294731e+01 8.3993098610492486e-10 0 0 0 +10048 1 -1.4271514625181267e+01 6.3788945795269555e+01 1.7500000001179841e+00 0 0 0 +10049 1 -1.3149237295954023e+01 6.6007876661802740e+01 1.7500000215005340e+00 0 0 0 +10689 1 -1.4832658379967356e+01 6.5446406921239387e+01 3.4999999866558098e+00 0 0 0 +10100 1 -1.0904485539316259e+01 6.4911676985380311e+01 1.7500000237856366e+00 0 0 0 +10099 1 -9.2228638231193418e+00 6.5473918694627031e+01 2.6715246778619734e-08 0 0 0 +10105 1 -8.6590368076681585e+00 6.3814819588488874e+01 1.7500000409253056e+00 0 0 0 +10152 1 -7.5396992613745466e+00 6.6037188499959498e+01 1.7500000383466263e+00 0 0 0 +10742 1 -9.2228638553776427e+00 6.5473918699632904e+01 3.4999999998235114e+00 0 0 0 +10157 1 -5.3078133793544193e+00 6.4947276612810086e+01 1.7500000411504641e+00 0 0 0 +10202 1 -3.5610861330327777e+00 6.5496566408418346e+01 1.6613255995594674e-08 0 0 0 +10845 1 -3.5610861511877565e+00 6.5496566376093597e+01 3.5000000179921096e+00 0 0 0 +10204 1 -3.1035847191364034e+00 6.3890715065605768e+01 1.7500000203247912e+00 0 0 0 +10205 1 -1.7224968372605585e+00 6.6042511457282558e+01 1.7500000398808757e+00 0 0 0 +9630 1 -4.3452487141817876e+01 6.6969307370600689e+01 1.7500000023714257e+00 0 0 0 +9668 1 -4.2330143113979616e+01 6.9188286791131489e+01 1.7499999784752496e+00 0 0 0 +10268 1 -4.4013659183804208e+01 6.8626810513094568e+01 3.4999999622792530e+00 0 0 0 +10270 1 -4.5136003263383159e+01 6.6407831035407554e+01 3.4999999730978995e+00 0 0 0 +10314 1 -3.9524283181861769e+01 6.6434756876686592e+01 3.4999999827058672e+00 0 0 0 +9673 1 -4.0085455086639882e+01 6.8092260020159102e+01 1.7499999528362975e+00 0 0 0 +10313 1 -4.1768971083231257e+01 6.7530783626910932e+01 3.4999999621218949e+00 0 0 0 +9724 1 -3.7840767260370178e+01 6.6996233207464243e+01 1.7499999619524860e+00 0 0 0 +9725 1 -3.6718423157503381e+01 6.9215212724471101e+01 1.7499999630217116e+00 0 0 0 +10365 1 -3.8401939123058739e+01 6.8653736348029454e+01 3.4999999661614485e+00 0 0 0 +10421 1 -3.3912563487793896e+01 6.6461682810938598e+01 3.4999999794171286e+00 0 0 0 +9775 1 -3.2790219500770313e+01 6.8680662430357188e+01 1.7499999983439309e+01 0 0 -1 +9776 1 -3.4473735403605716e+01 6.8119185937010698e+01 1.7499999664077290e+00 0 0 0 +10418 1 -3.2790219531533033e+01 6.8680662424726606e+01 3.4999999961461468e+00 0 0 0 +9778 1 -3.3912563481474116e+01 6.6461682825789808e+01 1.7499999960773955e+01 0 0 -1 +9781 1 -3.2229047526812622e+01 6.7023159241852369e+01 1.7499999846890559e+00 0 0 0 +9828 1 -3.1106703485771376e+01 6.9242138883173325e+01 1.7499999964960999e+00 0 0 0 +9833 1 -2.8862015634916698e+01 6.8146112435226030e+01 1.7500000117193784e+00 0 0 0 +9884 1 -2.6617327685414669e+01 6.7050085864350066e+01 1.7500000010480692e+00 0 0 0 +10474 1 -2.8300843651104675e+01 6.6488609348288833e+01 3.5000000052402798e+00 0 0 0 +10525 1 -2.7178499704831840e+01 6.8707588871225227e+01 3.5000000139587684e+00 0 0 0 +9831 1 -2.8300843633447791e+01 6.6488609348506259e+01 2.5842299297365888e-08 0 0 0 +9882 1 -2.7178499708547776e+01 6.8707588837996880e+01 2.6808914928704285e-08 0 0 0 +9885 1 -2.5494983614970199e+01 6.9269065303810933e+01 1.7500000145060068e+00 0 0 0 +9936 1 -2.3250295411215919e+01 6.8173038473672079e+01 1.7499999942054150e+00 0 0 0 +9941 1 -2.1005606558453174e+01 6.7077011684379286e+01 1.7500000027238851e+00 0 0 0 +9988 1 -1.9883266273676391e+01 6.9295992054772512e+01 1.7499999925265417e+00 0 0 0 +9990 1 -1.9322089489503583e+01 6.7638486640361080e+01 1.7499999983147820e+01 0 0 -1 +9993 1 -1.7638583525901971e+01 6.8199965462645835e+01 1.7500000114018270e+00 0 0 0 +10633 1 -1.9322089517864189e+01 6.7638486635145185e+01 3.5000000139917198e+00 0 0 0 +10043 1 -1.3710491273552158e+01 6.7665469329579565e+01 3.4110728603898227e-09 0 0 0 +10044 1 -1.5393908023819149e+01 6.7103934677876822e+01 1.7499999929069423e+00 0 0 0 +10045 1 -1.4271514637036070e+01 6.9322931618913287e+01 1.7500000173290260e+00 0 0 0 +10686 1 -1.3710491306531075e+01 6.7665469310209843e+01 3.4999999748442225e+00 0 0 0 +10096 1 -1.2026826745802882e+01 6.8226982115572198e+01 1.7500000098534831e+00 0 0 0 +10101 1 -9.7824040126287652e+00 6.7131346235066658e+01 1.7500000301971130e+00 0 0 0 +10148 1 -8.6590369020039031e+00 6.9348805312926004e+01 1.7500000146086214e+00 0 0 0 +10150 1 -8.0950136905693970e+00 6.7691313545851145e+01 2.0707232717845761e-08 0 0 0 +10793 1 -8.0950137162952203e+00 6.7691313577980793e+01 3.5000000062141767e+00 0 0 0 +10153 1 -6.4095226701355896e+00 6.8249151555580966e+01 1.7500000299321155e+00 0 0 0 +10200 1 -4.1395807527180430e+00 6.7140494477536677e+01 1.7500000297320819e+00 0 0 0 +10201 1 -3.1035848022283754e+00 6.9424700717019917e+01 1.7500000500712658e+00 0 0 0 +10233 1 -1.0571058925813273e+00 6.8342439010759591e+01 1.7500000630460903e+00 0 0 0 +10842 1 -2.5187337284332405e+00 6.7699521557660930e+01 3.5000000706678813e+00 0 0 0 +10199 1 -2.5187337119655981e+00 6.7699521564836829e+01 1.6479227342797226e-08 0 0 0 +9626 1 -4.4574831250755295e+01 7.0284313658254675e+01 1.7499999866765397e+00 0 0 0 +9664 1 -4.3452487067155211e+01 7.2503293127706968e+01 1.7500000298680560e+00 0 0 0 +10309 1 -4.2891315096939515e+01 7.0845789902935451e+01 3.4999999745647261e+00 0 0 0 +10267 1 -4.5136003206353529e+01 7.1941816829744027e+01 3.4999999914678828e+00 0 0 0 +9669 1 -4.1207799020934551e+01 7.1407266260438774e+01 1.7499999971656792e+00 0 0 0 +9720 1 -3.8963111071367322e+01 7.0311239447183226e+01 1.7499999723242925e+00 0 0 0 +10310 1 -4.0646627061357655e+01 6.9749763203916146e+01 3.4999999622492837e+00 0 0 0 +10361 1 -3.9524283104480851e+01 7.1968742597858849e+01 3.4999999607699670e+00 0 0 0 +9719 1 -3.7279595165265128e+01 7.0872715887059712e+01 1.7499999947362458e+01 0 0 -1 +9721 1 -3.7840767172047777e+01 7.2530218992660721e+01 1.7499999705531666e+00 0 0 0 +9772 1 -3.5596079332145521e+01 7.1434192237877923e+01 1.7499999692380377e+00 0 0 0 +10362 1 -3.7279595178659221e+01 7.0872715871364775e+01 3.4999999959184751e+00 0 0 0 +9777 1 -3.3351391450611096e+01 7.0338165556714401e+01 1.7499999976529683e+00 0 0 0 +9824 1 -3.2229047474119348e+01 7.2557145057353495e+01 1.7499999981033105e+00 0 0 0 +9829 1 -2.9984359483436904e+01 7.1461118519151597e+01 1.7500000160667950e+00 0 0 0 +10469 1 -3.1667875406410353e+01 7.0899641945440393e+01 3.4999999957502976e+00 0 0 0 +9826 1 -3.1667875394100079e+01 7.0899641951292637e+01 2.7439937318992263e-08 0 0 0 +9880 1 -2.7739671515393287e+01 7.0365091966619531e+01 1.7500000122404826e+00 0 0 0 +9881 1 -2.6617327722647779e+01 7.2584071589342017e+01 1.7499999910568926e+00 0 0 0 +10522 1 -2.6056155651021353e+01 7.0926568401743580e+01 3.4999999750289836e+00 0 0 0 +9879 1 -2.6056155654930201e+01 7.0926568403009938e+01 2.0809178114972849e-08 0 0 0 +9931 1 -2.2689123954920852e+01 7.2049521521700882e+01 1.7499999977019712e+01 0 0 -1 +9932 1 -2.4372639944538562e+01 7.1488044903771865e+01 1.7499999682112792e+00 0 0 0 +9934 1 -2.3811467632368132e+01 6.9830541684478092e+01 7.4132671586072509e-09 0 0 0 +10574 1 -2.2689123965584372e+01 7.2049521536550827e+01 3.4999999763818428e+00 0 0 0 +10577 1 -2.3811467632736374e+01 6.9830541671468538e+01 3.4999999888247713e+00 0 0 0 +9937 1 -2.2127952533931744e+01 7.0392018360848752e+01 1.7499999917907689e+00 0 0 0 +9984 1 -2.1005606630127605e+01 7.2610997553567330e+01 1.7499999984485950e+00 0 0 0 +9987 1 -1.8199753641604634e+01 6.9857471934629473e+01 1.7499999993871533e+01 0 0 -1 +9989 1 -1.8760915765739366e+01 7.1514970760172716e+01 1.7500000228986050e+00 0 0 0 +10038 1 -1.7077391593819563e+01 7.2076440483512584e+01 9.5565621105087227e-09 0 0 0 +10040 1 -1.6516219573609138e+01 7.0418945578890259e+01 1.7500000257542214e+00 0 0 0 +10630 1 -1.8199753647411200e+01 6.9857471924842315e+01 3.4999999996692774e+00 0 0 0 +10681 1 -1.7077391609957580e+01 7.2076440501186568e+01 3.5000000011213506e+00 0 0 0 +10041 1 -1.5393908208881550e+01 7.2637920635820421e+01 1.7500000307301078e+00 0 0 0 +10092 1 -1.3149237430535223e+01 7.1541862574026197e+01 1.7499999952159953e+00 0 0 0 +10091 1 -1.1466172652128732e+01 7.2103558524135423e+01 1.7499999976473877e+01 0 0 -1 +10094 1 -1.2587782867970406e+01 6.9884292695472269e+01 1.7499999993321925e+01 0 0 -1 +10097 1 -1.0904485690338639e+01 7.0445662831402302e+01 1.7500000222270946e+00 0 0 0 +10144 1 -9.7824042359728018e+00 7.2665332129955203e+01 1.7500000045262147e+00 0 0 0 +10734 1 -1.1466172666437330e+01 7.2103558526476718e+01 3.5000000022443216e+00 0 0 0 +10737 1 -1.2587782882297903e+01 6.9884292700302325e+01 3.5000000049266182e+00 0 0 0 +10149 1 -7.5396994832516686e+00 7.1571174310060513e+01 1.7500000389309300e+00 0 0 0 +10790 1 -6.9829707958201981e+00 6.9912448337944184e+01 3.5000000021897630e+00 0 0 0 +10147 1 -6.9829707728866897e+00 6.9912448310079156e+01 1.5014174972347525e-08 0 0 0 +10194 1 -5.8404164109847434e+00 7.2128468000565448e+01 1.7671425678625975e-08 0 0 0 +10196 1 -5.3078134997319815e+00 7.0481262311411911e+01 1.7500000367410653e+00 0 0 0 +10197 1 -4.1395808825901304e+00 7.2674480266977199e+01 1.7500000381071035e+00 0 0 0 +10837 1 -5.8404164184656224e+00 7.2128467989427691e+01 3.5000000278742411e+00 0 0 0 +10230 1 -1.7224969202936946e+00 7.1576497188900092e+01 1.7500000355986920e+00 0 0 0 +10875 1 -1.2264313969754175e+00 6.9977084239389612e+01 3.5000000352020106e+00 0 0 0 +10236 1 -1.2264316881305080e+00 8.6579042098805445e+01 2.9576032289924115e-08 0 0 0 +12788 1 -5.3078144086650694e+00 8.7083220343962893e+01 1.5750000074410320e+01 0 0 0 +10232 1 -1.2264313900889443e+00 6.9977084294877201e+01 6.9595617117873380e-08 0 0 0 +9660 1 -4.4574831117620910e+01 7.5818299506751202e+01 1.7500000369488986e+00 0 0 0 +9665 1 -4.2330143007340432e+01 7.4722272582826832e+01 1.7500000121338526e+00 0 0 0 +10305 1 -4.4013659079989530e+01 7.4160796335558913e+01 3.4999999745522152e+00 0 0 0 +9716 1 -4.0085454968948738e+01 7.3626245770259288e+01 1.7499999737058463e+00 0 0 0 +9717 1 -3.8963111023174186e+01 7.5845225215825536e+01 1.7499999769766683e+00 0 0 0 +10306 1 -4.1768970976323274e+01 7.3064769352232744e+01 3.4999999672748063e+00 0 0 0 +10357 1 -4.0646626973777700e+01 7.5283748990076788e+01 3.5000000140849608e+00 0 0 0 +9768 1 -3.6718423125274612e+01 7.4749198514071026e+01 1.7499999776991226e+00 0 0 0 +9770 1 -3.6157251188511601e+01 7.3091695320482060e+01 1.7499999964460098e+01 0 0 -1 +10413 1 -3.6157251229951797e+01 7.3091695309738242e+01 3.5000000009019456e+00 0 0 0 +9767 1 -3.5034907272441068e+01 7.5310674839393570e+01 1.7499999958618623e+01 0 0 -1 +9773 1 -3.4473735305968056e+01 7.3653171732041471e+01 1.7499999777343167e+00 0 0 0 +9820 1 -3.3351391550879377e+01 7.5872151387986861e+01 1.7499999769822674e+00 0 0 0 +10410 1 -3.5034907302197503e+01 7.5310674826402632e+01 3.4999999918794011e+00 0 0 0 +9825 1 -3.1106703534332610e+01 7.4776124667039667e+01 1.7500000079416766e+00 0 0 0 +10466 1 -3.0545531552025476e+01 7.3118621597435961e+01 3.4999999867646965e+00 0 0 0 +10517 1 -2.9423187708321606e+01 7.5337601211043378e+01 3.4999999797249259e+00 0 0 0 +9823 1 -3.0545531547780435e+01 7.3118621584621920e+01 2.3346029944860589e-08 0 0 0 +9874 1 -2.9423187723572898e+01 7.5337601204222068e+01 1.4511227190458336e-08 0 0 0 +9876 1 -2.8862015636660228e+01 7.3680098137958453e+01 1.7499999950943008e+00 0 0 0 +9877 1 -2.7739671681597869e+01 7.5899077729668221e+01 1.7499999883824779e+00 0 0 0 +9928 1 -2.5494983761149371e+01 7.4803051070251541e+01 1.7499999744953285e+00 0 0 0 +9933 1 -2.3250295538406714e+01 7.3707024319482400e+01 1.7499999808430140e+00 0 0 0 +10573 1 -2.4933811724631237e+01 7.3145548012730657e+01 3.4999999784951727e+00 0 0 0 +9930 1 -2.4933811738669363e+01 7.3145548001501595e+01 1.7499999984900928e+01 0 0 -1 +9980 1 -2.2127952793660011e+01 7.5926004296696973e+01 1.7499999778549125e+00 0 0 0 +9982 1 -2.1566779598772786e+01 7.4268500594836141e+01 1.7499999984448941e+01 0 0 -1 +9985 1 -1.9883266463467514e+01 7.4829977995731099e+01 1.7500000207521702e+00 0 0 0 +10625 1 -2.1566779616048645e+01 7.4268500593924202e+01 3.4999999843795133e+00 0 0 0 +10036 1 -1.7638583722945025e+01 7.3733951412075200e+01 1.7500000106438955e+00 0 0 0 +10037 1 -1.6516219867497018e+01 7.5952931668933303e+01 1.7500000215479485e+00 0 0 0 +10035 1 -1.5955087434104392e+01 7.4295442455583128e+01 1.7499999997958753e+01 0 0 -1 +10088 1 -1.4271514893141022e+01 7.4856917667106188e+01 1.7500000041279236e+00 0 0 0 +10678 1 -1.5955087417287592e+01 7.4295442470354203e+01 3.5000000046589070e+00 0 0 0 +10093 1 -1.2026826933419517e+01 7.3760968078473283e+01 1.7500000050284468e+00 0 0 0 +10140 1 -1.0904485966227684e+01 7.5979648864266110e+01 1.7499999915847924e+00 0 0 0 +10142 1 -1.0342364016065362e+01 7.4322018072999299e+01 5.0982192032731512e-09 0 0 0 +10785 1 -1.0342364032707524e+01 7.4322018066293111e+01 3.4999999844915237e+00 0 0 0 +10145 1 -8.6590371990084058e+00 7.4882791261016280e+01 1.7500000247319545e+00 0 0 0 +10191 1 -4.7485638640127847e+00 7.4350634939025767e+01 2.2836600078500710e-08 0 0 0 +10192 1 -6.4095229164216985e+00 7.3783137392628603e+01 1.7500000408989329e+00 0 0 0 +10193 1 -5.3078137809244295e+00 7.6015248232004453e+01 1.7500000677375227e+00 0 0 0 +10834 1 -4.7485638675328454e+00 7.4350634921559134e+01 3.5000000337074040e+00 0 0 0 +10227 1 -3.1035849139398306e+00 7.4958686576316040e+01 1.7500000484679130e+00 0 0 0 +10231 1 -1.0571060766256553e+00 7.3876424836288535e+01 1.7500000441193064e+00 0 0 0 +9661 1 -4.3452487011032986e+01 7.8037279064111260e+01 1.7500000488643954e+00 0 0 0 +10301 1 -4.5136003150533128e+01 7.7475802779338309e+01 3.5000000229949424e+00 0 0 0 +9658 1 -4.5136003151395862e+01 7.7475802732015950e+01 6.6632797983497899e-08 0 0 0 +9712 1 -4.1207799027629349e+01 7.6941252139174878e+01 1.7500000171810581e+00 0 0 0 +10354 1 -3.9524283158096061e+01 7.7502728439728443e+01 3.4999999961249006e+00 0 0 0 +9711 1 -3.9524283174243216e+01 7.7502728456872376e+01 1.7499999946905156e+01 0 0 -1 +9764 1 -3.7840767299059863e+01 7.8064204811107018e+01 1.7499999455167297e+00 0 0 0 +9769 1 -3.5596079527872419e+01 7.6968178100306417e+01 1.7499999644580748e+00 0 0 0 +10461 1 -3.3912563586685344e+01 7.7529654437457523e+01 3.4999999758517966e+00 0 0 0 +9818 1 -3.3912563550819435e+01 7.7529654462233680e+01 1.7499999977052884e+01 0 0 -1 +9821 1 -3.2229047718064415e+01 7.8091130853342975e+01 1.7499999749617949e+00 0 0 0 +9872 1 -2.9984359701816292e+01 7.6995104295733555e+01 1.7499999887272284e+00 0 0 0 +9924 1 -2.6617328014719245e+01 7.8118057387982333e+01 1.7499999733195546e+00 0 0 0 +10514 1 -2.8300843851179920e+01 7.7556580847224325e+01 3.4999999764061922e+00 0 0 0 +9871 1 -2.8300843878099030e+01 7.7556580813094456e+01 9.2974001942045830e-09 0 0 0 +9929 1 -2.4372640202429299e+01 7.7022030769216641e+01 1.7499999797615442e+00 0 0 0 +9979 1 -2.0444437211801578e+01 7.6487481638728582e+01 1.7499999990918401e+01 0 0 -1 +9981 1 -2.1005606988271126e+01 7.8144983612312160e+01 1.7500000040436459e+00 0 0 0 +10622 1 -2.0444437226000446e+01 7.6487481632930923e+01 3.4999999995312780e+00 0 0 0 +10030 1 -1.9322089994769026e+01 7.8706458693798510e+01 8.4134239624527435e-09 0 0 0 +10032 1 -1.8760916060200596e+01 7.7048956817227861e+01 1.7500000087313474e+00 0 0 0 +10673 1 -1.9322090014430703e+01 7.8706458688958861e+01 3.5000000072179684e+00 0 0 0 +10083 1 -1.3710491836753375e+01 7.8733441488956586e+01 7.5221092287313009e-09 0 0 0 +10084 1 -1.5393908516849525e+01 7.8171906787728290e+01 1.7499999939541386e+00 0 0 0 +10086 1 -1.4832658749390426e+01 7.6514378920416192e+01 6.6831082162743045e-09 0 0 0 +10089 1 -1.3149237742503274e+01 7.7075848696493580e+01 1.7500000005144780e+00 0 0 0 +10726 1 -1.3710491827135373e+01 7.8733441471276819e+01 3.4999999481310571e+00 0 0 0 +10729 1 -1.4832658730131120e+01 7.6514378920783017e+01 3.4999999795417289e+00 0 0 0 +10141 1 -9.7824045834816076e+00 7.8199318231130448e+01 1.7500000129914159e+00 0 0 0 +10139 1 -9.2228643092865887e+00 7.6541890563665618e+01 1.7499999995177451e+01 0 0 -1 +10186 1 -8.0950142780774197e+00 7.8759285510296834e+01 2.7145781959044776e-08 0 0 0 +10188 1 -7.5396997756927577e+00 7.7105160274591611e+01 1.7500000304758696e+00 0 0 0 +10782 1 -9.2228643481680770e+00 7.6541890526648700e+01 3.4999999967980799e+00 0 0 0 +10829 1 -8.0950143245096235e+00 7.8759285495013032e+01 3.5000000172353349e+00 0 0 0 +10223 1 -4.1395811971042686e+00 7.8208466243068074e+01 1.7500000635630431e+00 0 0 0 +10225 1 -3.5610865065785018e+00 7.6564538023303612e+01 4.7077081070888579e-08 0 0 0 +10868 1 -3.5610864783851368e+00 7.6564538051687265e+01 3.5000000277659824e+00 0 0 0 +10228 1 -1.7224970556926626e+00 7.7110483148329479e+01 1.7500000461934586e+00 0 0 0 +10865 1 -2.5187340969029153e+00 7.8767493358546133e+01 3.4999999867907872e+00 0 0 0 +10222 1 -2.5187341019669613e+00 7.8767493329019842e+01 4.3688153020291011e-08 0 0 0 +9657 1 -4.4574831184086641e+01 8.1352285529685091e+01 1.7500000289837738e+00 0 0 0 +9706 1 -4.2891315153090787e+01 8.1913761707976917e+01 2.8300403007725114e-09 0 0 0 +9708 1 -4.2330143074262295e+01 8.0256258534883585e+01 1.7500000061914494e+00 0 0 0 +9656 1 -4.4013659079489734e+01 7.9694782324955924e+01 6.1547279679468623e-08 0 0 0 +9713 1 -4.0085455116533772e+01 7.9160231649543903e+01 1.7499999722994510e+00 0 0 0 +9760 1 -3.8963111354291179e+01 8.1379211157161521e+01 1.7499999716163492e+00 0 0 0 +9762 1 -3.8401939296649928e+01 7.9721707990417428e+01 1.7499999930852709e+01 0 0 -1 +9765 1 -3.6718423476641533e+01 8.0283184397449006e+01 1.7499999428077528e+00 0 0 0 +10405 1 -3.8401939298278073e+01 7.9721707983087185e+01 3.4999999868949669e+00 0 0 0 +10402 1 -3.7279595641948788e+01 8.1940687591998611e+01 3.5000000010326242e+00 0 0 0 +9759 1 -3.7279595640232245e+01 8.1940687592416637e+01 1.7499999921182724e+01 0 0 -1 +9816 1 -3.4473735667403723e+01 7.9187157592670275e+01 1.7499999655986453e+00 0 0 0 +9817 1 -3.3351392042300027e+01 8.1406137250341374e+01 1.7499999971784888e+00 0 0 0 +10458 1 -3.2790219908106522e+01 7.9748634082781066e+01 3.4999999747735875e+00 0 0 0 +9815 1 -3.2790219879238002e+01 7.9748634070743194e+01 1.7499999997968334e+01 0 0 -1 +9868 1 -3.1106703984602234e+01 8.0310110500802850e+01 1.7499999926927021e+00 0 0 0 +10509 1 -3.1667876111833536e+01 8.1967613616904728e+01 3.4999999688199948e+00 0 0 0 +9866 1 -3.1667876098793847e+01 8.1967613634206074e+01 4.0883992347635829e-08 0 0 0 +9873 1 -2.8862016014622778e+01 7.9214083976107318e+01 1.7500000100103053e+00 0 0 0 +9920 1 -2.7739672191554934e+01 8.1433063604167927e+01 1.7500000039168526e+00 0 0 0 +10562 1 -2.6056156384614614e+01 8.1994540160599783e+01 3.4999999791763963e+00 0 0 0 +10565 1 -2.7178500179476149e+01 7.9775560456813750e+01 3.4999999914641373e+00 0 0 0 +9919 1 -2.6056156404567929e+01 8.1994540153225373e+01 5.4770480670853391e-09 0 0 0 +9922 1 -2.7178500196438691e+01 7.9775560429151000e+01 1.7499999992943383e+01 0 0 -1 +9925 1 -2.5494984178532508e+01 8.0337037004819365e+01 1.7499999851452930e+00 0 0 0 +9974 1 -2.3811468288208037e+01 8.0898513556024952e+01 1.7499999970719028e+01 0 0 -1 +9976 1 -2.3250295918261141e+01 7.9241010297125527e+01 1.7499999748769910e+00 0 0 0 +10617 1 -2.3811468282247883e+01 8.0898513547369035e+01 3.4999999977760874e+00 0 0 0 +9977 1 -2.2127953250463865e+01 8.1459990397689239e+01 1.7499999839192821e+00 0 0 0 +10028 1 -1.9883266909007620e+01 8.0363964174055738e+01 1.7500000007072398e+00 0 0 0 +10027 1 -1.8199754310688803e+01 8.0925444199362801e+01 1.8359863714167670e-08 0 0 0 +10033 1 -1.7638584082233702e+01 7.9267937609189460e+01 1.7500000173969072e+00 0 0 0 +10080 1 -1.6516220267379460e+01 8.1486917918229480e+01 1.7500000018556781e+00 0 0 0 +10670 1 -1.8199754316896193e+01 8.0925444159382863e+01 3.4999999956255379e+00 0 0 0 +10085 1 -1.4271515254006914e+01 8.0390903898336688e+01 1.7499999946111435e+00 0 0 0 +10134 1 -1.2587783528115775e+01 8.0952265011876605e+01 1.7499999993460925e+01 0 0 -1 +10136 1 -1.2026827334293134e+01 7.9294954292343078e+01 1.7499999875970838e+00 0 0 0 +10137 1 -1.0904486404518385e+01 8.1513635132752412e+01 1.7500000081667964e+00 0 0 0 +10777 1 -1.2587783539735481e+01 8.0952264997076867e+01 3.4999999852159536e+00 0 0 0 +10184 1 -8.6590376020241084e+00 8.0416777410284510e+01 1.7500000267741433e+00 0 0 0 +10826 1 -6.9829715130582448e+00 8.0980420354771013e+01 3.5000000232178072e+00 0 0 0 +10183 1 -6.9829714679233961e+00 8.0980420340067994e+01 5.6038559542821241e-08 0 0 0 +10189 1 -6.4095232943110911e+00 7.9317123426589376e+01 1.7500000446017225e+00 0 0 0 +10219 1 -5.3078141993520269e+00 8.1549234262222839e+01 1.7500000545496632e+00 0 0 0 +10224 1 -3.1035852082461011e+00 8.0492672528762398e+01 1.7500000411787373e+00 0 0 0 +10243 1 -1.0571061698531015e+00 7.9410410820625401e+01 1.7499999991801531e+00 0 0 0 +10885 1 -1.2264316214544697e+00 8.1045056167244212e+01 3.4999999767851775e+00 0 0 0 +10242 1 -1.2264316375635143e+00 8.1045056128866804e+01 6.5164175491772334e-09 0 0 0 +9655 1 -4.5136003201627702e+01 8.3009788743712264e+01 5.1835186810353344e-08 0 0 0 +9704 1 -4.3452487143797995e+01 8.3571265066242162e+01 1.7500000368537609e+00 0 0 0 +9702 1 -4.4013659223094024e+01 8.5228768343824257e+01 7.7842202964712354e-08 0 0 0 +9709 1 -4.1207799200448171e+01 8.2475238068816651e+01 1.7499999975960665e+00 0 0 0 +9756 1 -4.0085455463082795e+01 8.4694217639806467e+01 1.7499999842121974e+00 0 0 0 +9703 1 -4.1768971246257209e+01 8.4132741254910684e+01 2.0058465174092584e-08 0 0 0 +9761 1 -3.7840767779907083e+01 8.3598190767760400e+01 1.7499999757586304e+00 0 0 0 +9810 1 -3.6157251995416608e+01 8.4159667083043587e+01 1.7499999943901852e+01 0 0 -1 +9812 1 -3.5596079992606150e+01 8.2502163962645042e+01 1.7499999640567236e+00 0 0 0 +10453 1 -3.6157252036797438e+01 8.4159667068835219e+01 3.5000000039022043e+00 0 0 0 +9813 1 -3.4473736280580134e+01 8.4721143508863591e+01 1.7499999767949472e+00 0 0 0 +9864 1 -3.2229048405433332e+01 8.3625116771796655e+01 1.7500000131567039e+00 0 0 0 +9869 1 -2.9984360281835123e+01 8.2529090187887419e+01 1.7500000170182684e+00 0 0 0 +10506 1 -3.0545532562468829e+01 8.4186593316366952e+01 3.4999999945380611e+00 0 0 0 +9863 1 -3.0545532559322165e+01 8.4186593308325257e+01 4.9972190234871251e-08 0 0 0 +9916 1 -2.8862016729826731e+01 8.4748069899992771e+01 1.7500000186750491e+00 0 0 0 +9921 1 -2.6617328663455442e+01 8.3652043390559626e+01 1.7499999976572305e+00 0 0 0 +9972 1 -2.4372640770502791e+01 8.2556016810728892e+01 1.7499999673185853e+00 0 0 0 +9973 1 -2.3250296564102168e+01 8.4774996444974789e+01 1.7499999775086341e+00 0 0 0 +9971 1 -2.2689124819958163e+01 8.3117493625578234e+01 1.7499999956620105e+01 0 0 -1 +10614 1 -2.2689124826912625e+01 8.3117493638281971e+01 3.5000000049997726e+00 0 0 0 +10613 1 -2.4933812703316818e+01 8.4213519979888446e+01 3.4999999988116630e+00 0 0 0 +9970 1 -2.4933812725126728e+01 8.4213519959921143e+01 1.7499999987485666e+01 0 0 -1 +10022 1 -2.1566780602599835e+01 8.5336472900747282e+01 1.7499999975030889e+01 0 0 -1 +10024 1 -2.1005607520469582e+01 8.3678969806297943e+01 1.7499999814540077e+00 0 0 0 +10665 1 -2.1566780618490139e+01 8.5336472897639737e+01 3.4999999869914920e+00 0 0 0 +10029 1 -1.8760916531810579e+01 8.2582943080074671e+01 1.7500000055308451e+00 0 0 0 +10076 1 -1.7638584581689148e+01 8.4801923900568454e+01 1.7499999905806687e+00 0 0 0 +10078 1 -1.7077392362406833e+01 8.3144412909927240e+01 2.7197202795284158e-08 0 0 0 +10721 1 -1.7077392382082131e+01 8.3144412914199279e+01 3.4999999658318646e+00 0 0 0 +10075 1 -1.5955088246980168e+01 8.5363415048267555e+01 5.7639548146437182e-09 0 0 0 +10081 1 -1.5393908980252519e+01 8.3705893126468737e+01 1.7500000054513745e+00 0 0 0 +10132 1 -1.3149238146048662e+01 8.2609835005903605e+01 1.7499999766943930e+00 0 0 0 +10718 1 -1.5955088271051721e+01 8.5363415010858432e+01 3.4999999795534564e+00 0 0 0 +10131 1 -1.1466173419225690e+01 8.3171530952742202e+01 1.7499999991975546e+01 0 0 -1 +10133 1 -1.2026827725163585e+01 8.4828940614033996e+01 1.7499999993449842e+00 0 0 0 +10178 1 -1.0342364816352038e+01 8.5389990549377544e+01 1.3762801703547821e-08 0 0 0 +10180 1 -9.7824050361253043e+00 8.3733304501791494e+01 1.7500000276234446e+00 0 0 0 +10774 1 -1.1466173444636000e+01 8.3171530949094162e+01 3.5000000141260230e+00 0 0 0 +10821 1 -1.0342364844391462e+01 8.5389990536492348e+01 3.5000000309601549e+00 0 0 0 +10185 1 -7.5397002660608505e+00 8.2639146460238905e+01 1.7500000664561304e+00 0 0 0 +10215 1 -6.4095237298420127e+00 8.4851109572462619e+01 1.7500000684307468e+00 0 0 0 +10220 1 -4.1395815783487961e+00 8.3742452286914883e+01 1.7500000423037947e+00 0 0 0 +10857 1 -4.7485645754408834e+00 8.5418606984438455e+01 3.5000000326839489e+00 0 0 0 +10860 1 -5.8404171770928057e+00 8.3196440049365762e+01 3.5000000444927704e+00 0 0 0 +10214 1 -4.7485645794940137e+00 8.5418606989709843e+01 6.5760255665016763e-08 0 0 0 +10217 1 -5.8404171741186754e+00 8.3196440048790834e+01 6.0752775087823664e-08 0 0 0 +10240 1 -1.7224974791935621e+00 8.2644469167487969e+01 1.7499999971775417e+00 0 0 0 +10241 1 -1.0571061538029376e+00 8.4944396758456804e+01 1.7500000142038934e+00 0 0 0 +12785 1 -6.9829717072947162e+00 8.6514406530913590e+01 1.4000000036137942e+01 0 0 0 +16445 1 -3.8459115311429051e-13 8.3428775200310852e+01 1.2218528020043797e-08 0 0 0 +9700 1 -4.2891315447899629e+01 8.7447747744175985e+01 3.9001852096265281e-08 0 0 0 +9701 1 -4.4574831337655553e+01 8.6886271534467539e+01 1.7500000245506686e+00 0 0 0 +9705 1 -4.2330143325888827e+01 8.5790244558979012e+01 1.7500000054553879e+00 0 0 0 +9753 1 -4.1207799662640831e+01 8.8009224155704160e+01 1.7500000167428531e+00 0 0 0 +9754 1 -4.0646627585900227e+01 8.6351720907749680e+01 1.7499999965982102e+01 0 0 -1 +9757 1 -3.8963111833172846e+01 8.6913197160027835e+01 1.7499999754514497e+00 0 0 0 +9808 1 -3.6718424067788952e+01 8.5817170352311223e+01 1.7499999815601861e+00 0 0 0 +9809 1 -3.5596080764707104e+01 8.8036149961645762e+01 1.7499999742056647e+00 0 0 0 +9861 1 -3.3351392822023868e+01 8.6940123192975989e+01 1.7499999987841046e+00 0 0 0 +10450 1 -3.5034908415672916e+01 8.6378646646168662e+01 3.5000000033436001e+00 0 0 0 +9807 1 -3.5034908392533936e+01 8.6378646640088874e+01 1.7499999948913253e+01 0 0 -1 +9865 1 -3.1106704739785268e+01 8.5844096446240385e+01 1.7500000338569699e+00 0 0 0 +9913 1 -2.9984361136213852e+01 8.8063076118690844e+01 1.7500000314471453e+00 0 0 0 +10557 1 -2.9423188989402853e+01 8.6405573014965753e+01 3.5000000031414338e+00 0 0 0 +9914 1 -2.9423189002413935e+01 8.6405573000164054e+01 5.6466168320915291e-08 0 0 0 +9917 1 -2.7739672994978118e+01 8.6967049596331563e+01 1.7500000304164811e+00 0 0 0 +9968 1 -2.5494984928786256e+01 8.5871023055845612e+01 1.7499999883477693e+00 0 0 0 +9969 1 -2.4372641481621883e+01 8.8090002937676161e+01 1.7499999860577442e+00 0 0 0 +10020 1 -2.0444438267712059e+01 8.7555454134631105e+01 1.7499999983922496e+01 0 0 -1 +10021 1 -2.2127953918477861e+01 8.6993976620659396e+01 1.7499999711572425e+00 0 0 0 +10025 1 -1.9883267455147443e+01 8.5897950415606175e+01 1.7499999981171481e+00 0 0 0 +10663 1 -2.0444438297407267e+01 8.7555454103272041e+01 3.4999999815704581e+00 0 0 0 +10073 1 -1.8760917039823106e+01 8.8116929387929105e+01 1.7499999702691540e+00 0 0 0 +10077 1 -1.6516220726697526e+01 8.7020904266781812e+01 1.7499999721304313e+00 0 0 0 +10126 1 -1.4832659540119767e+01 8.7582351577105925e+01 4.2029290941292372e-09 0 0 0 +10128 1 -1.4271515699382201e+01 8.5924890286776431e+01 1.7499999765825627e+00 0 0 0 +10129 1 -1.3149238501961658e+01 8.8143821373793159e+01 1.7500000051308802e+00 0 0 0 +10769 1 -1.4832659545376449e+01 8.7582351553305074e+01 3.4999999687836789e+00 0 0 0 +10177 1 -1.0904486746036458e+01 8.7047621444509716e+01 1.7500000064322243e+00 0 0 0 +10181 1 -8.6590380032187770e+00 8.5950763656531791e+01 1.7500000460011351e+00 0 0 0 +10212 1 -7.5397004779971075e+00 8.8173132631874836e+01 1.7500000306405175e+00 0 0 0 +10819 1 -9.2228650882709040e+00 8.7609863019957615e+01 3.5000000394942816e+00 0 0 0 +10176 1 -9.2228650716518441e+00 8.7609863042064276e+01 1.0942813336415160e-08 0 0 0 +10216 1 -5.3078144365937092e+00 8.7083220353569672e+01 1.7500000569629688e+00 0 0 0 +10878 1 -3.5610870594305220e+00 8.7632510050858173e+01 3.4999999991167616e+00 0 0 0 +10235 1 -3.5610870518365489e+00 8.7632510011924651e+01 8.0921449701835527e-08 0 0 0 +10237 1 -3.1035854074968112e+00 8.6026658547128903e+01 1.7500000455369964e+00 0 0 0 +10238 1 -1.7224975198298338e+00 8.8178455129647020e+01 1.7500000358354855e+00 0 0 0 +10248 1 -4.3452487676421796e+01 4.4833363834274536e+01 5.2499999803253550e+00 0 0 0 +10262 1 -4.2330143525576737e+01 4.7052343383491284e+01 5.2499999909834720e+00 0 0 0 +10888 1 -4.4013659591640575e+01 4.6490867230274183e+01 6.9999999589350779e+00 0 0 0 +10266 1 -4.0085455550788389e+01 4.5956316312520165e+01 5.2500000116511290e+00 0 0 0 +10907 1 -4.1768971589068215e+01 4.5394840046949199e+01 6.9999999779037356e+00 0 0 0 +10908 1 -3.9524283649188540e+01 4.4298813009004867e+01 7.0000000292307876e+00 0 0 0 +10296 1 -3.7840767631595305e+01 4.4860289285038192e+01 5.2500000325368328e+00 0 0 0 +10297 1 -3.6718423432097403e+01 4.7079268851755280e+01 5.2500000220291927e+00 0 0 0 +10937 1 -3.8401939513792442e+01 4.6517792530270064e+01 7.0000000257734776e+00 0 0 0 +10938 1 -3.6157251541801934e+01 4.5421765583297315e+01 7.0000000272654468e+00 0 0 0 +10339 1 -3.4473735513480165e+01 4.5983242018013769e+01 5.2500000202353938e+00 0 0 0 +10342 1 -3.2229047506799915e+01 4.4887215343484918e+01 5.2499999873833127e+00 0 0 0 +10391 1 -3.1106703454617659e+01 4.7106195193680897e+01 5.2499999716365373e+00 0 0 0 +10393 1 -3.0545531490651424e+01 4.5448692024663245e+01 3.4999999868976563e+00 0 0 0 +11036 1 -3.0545531436224177e+01 4.5448691984945114e+01 6.9999999717485135e+00 0 0 0 +10395 1 -2.8862015461233238e+01 4.6010168706998329e+01 5.2499999601553373e+00 0 0 0 +10447 1 -2.6617327430691127e+01 4.4914142173807683e+01 5.2499999649134406e+00 0 0 0 +10446 1 -2.4933811284764140e+01 4.5475618708401413e+01 3.5000000010092966e+00 0 0 0 +10448 1 -2.5494983346134426e+01 4.7133121870699142e+01 5.2500000043205812e+00 0 0 0 +10499 1 -2.3250294989274778e+01 4.6037095115562323e+01 5.2500000084108933e+00 0 0 0 +11089 1 -2.4933811317724942e+01 4.5475618700900206e+01 6.9999999786457927e+00 0 0 0 +10501 1 -2.2689123429554794e+01 4.4379592332327000e+01 3.5000000172767121e+00 0 0 0 +11144 1 -2.2689123442829601e+01 4.4379592317654996e+01 7.0000000209957935e+00 0 0 0 +10498 1 -2.1566778958891849e+01 4.6598571441939932e+01 3.5000000219708167e+00 0 0 0 +10502 1 -2.1005606023642990e+01 4.4941068454548208e+01 5.2500000253409445e+00 0 0 0 +10551 1 -1.9883265765361958e+01 4.7160048892903347e+01 5.2500000056778884e+00 0 0 0 +11141 1 -2.1566778986200617e+01 4.6598571444314736e+01 7.0000000197995300e+00 0 0 0 +10555 1 -1.7638583048442992e+01 4.6064022545503057e+01 5.2500000135470470e+00 0 0 0 +10554 1 -1.7077390990569530e+01 4.4406511797912131e+01 3.4999999849722787e+00 0 0 0 +11197 1 -1.7077390955930809e+01 4.4406511823776150e+01 7.0000000264209339e+00 0 0 0 +10605 1 -1.5955086813384543e+01 4.6625513725096404e+01 3.4999999609956132e+00 0 0 0 +10607 1 -1.5393907666069250e+01 4.4967992129033156e+01 5.2499999583821007e+00 0 0 0 +10608 1 -1.4271514408602982e+01 4.7186989130005678e+01 5.2499999650773965e+00 0 0 0 +11248 1 -1.5955086790429231e+01 4.6625513751358234e+01 7.0000000081073157e+00 0 0 0 +10658 1 -1.0342363827193434e+01 4.6652090266732067e+01 3.5000000022118756e+00 0 0 0 +10659 1 -1.2026826663764069e+01 4.6091040037853375e+01 5.2499999438302174e+00 0 0 0 +10662 1 -9.7824041575181138e+00 4.4995404632981703e+01 5.2499999484380702e+00 0 0 0 +11301 1 -1.0342363888783080e+01 4.6652090231840617e+01 6.9999999073879104e+00 0 0 0 +10661 1 -1.1466172432640258e+01 4.4433630775114196e+01 3.4999999727496069e+00 0 0 0 +11304 1 -1.1466172430716719e+01 4.4433630751181774e+01 6.9999999387197862e+00 0 0 0 +10711 1 -8.6590371331207425e+00 4.7212863685606656e+01 5.2499999515531295e+00 0 0 0 +10765 1 -4.7485639078851793e+00 4.6680708123825006e+01 3.5000000326950476e+00 0 0 0 +10715 1 -6.4095230087815258e+00 4.6113210371378862e+01 5.2499999806486199e+00 0 0 0 +10767 1 -4.1395810003408098e+00 4.5004553870297876e+01 5.2500000402391933e+00 0 0 0 +11408 1 -4.7485640186127300e+00 4.6680708143879777e+01 6.9999999993762074e+00 0 0 0 +10714 1 -5.8404165447008527e+00 4.4458541341305498e+01 3.5000000197195149e+00 0 0 0 +11357 1 -5.8404166395777750e+00 4.4458541304767820e+01 6.9999999614058996e+00 0 0 0 +10768 1 -3.1035849641550621e+00 4.7288759921355769e+01 5.2500000302286036e+00 0 0 0 +10817 1 -1.0571060466097038e+00 4.6206498827310362e+01 5.2500000505995477e+00 0 0 0 +12784 1 -7.5397004386235995e+00 8.8173132660162054e+01 1.5750000066442624e+01 0 0 0 +12753 1 -8.6590379374215694e+00 8.5950763673323522e+01 1.5750000017225167e+01 0 0 0 +10246 1 -4.4574831554102680e+01 4.8148370447249945e+01 5.2499999453333466e+00 0 0 0 +10258 1 -4.3452487352947273e+01 5.0367349972319026e+01 5.2499999512426463e+00 0 0 0 +10903 1 -4.2891315456919031e+01 4.8709846625001433e+01 6.9999999501678767e+00 0 0 0 +10263 1 -4.1207799413554895e+01 4.9271322892284154e+01 5.2499999908581287e+00 0 0 0 +10292 1 -3.8963111429776191e+01 4.8175295762227513e+01 5.2500000152155692e+00 0 0 0 +10904 1 -4.0646627486709505e+01 4.7613819652454822e+01 6.9999999940361892e+00 0 0 0 +10933 1 -3.9524283500217607e+01 4.9832799129144355e+01 7.0000000079643971e+00 0 0 0 +10293 1 -3.7840767532496727e+01 5.0394275366264957e+01 5.2500000310973940e+00 0 0 0 +10335 1 -3.5596079661493931e+01 4.9298248487718901e+01 5.2500000243219667e+00 0 0 0 +10934 1 -3.7279595520996018e+01 4.8736772135236720e+01 7.0000000336689530e+00 0 0 0 +10334 1 -3.3912563604480596e+01 4.9859724959171700e+01 3.4999999996825228e+00 0 0 0 +10337 1 -3.5034907495258658e+01 4.7640745167309767e+01 3.5000000101198054e+00 0 0 0 +10340 1 -3.3351391603237083e+01 4.8202221819339712e+01 5.2500000159193601e+00 0 0 0 +10977 1 -3.3912563562649964e+01 4.9859724906628095e+01 7.0000000211789422e+00 0 0 0 +10980 1 -3.5034907463511850e+01 4.7640745148234444e+01 7.0000000226938424e+00 0 0 0 +10387 1 -3.2229047581673015e+01 5.0421201489440719e+01 5.2500000140558480e+00 0 0 0 +10390 1 -2.9423187534159318e+01 4.7667671904778537e+01 3.4999999770310155e+00 0 0 0 +10392 1 -2.9984359493425476e+01 4.9325175042291498e+01 5.2499999751987145e+00 0 0 0 +11033 1 -2.9423187520420793e+01 4.7667671869385778e+01 6.9999999628455045e+00 0 0 0 +10441 1 -2.8300843504761833e+01 4.9886651751811073e+01 3.4999999999787188e+00 0 0 0 +10443 1 -2.7739671371297810e+01 4.8229148537847777e+01 5.2499999631234431e+00 0 0 0 +10444 1 -2.6617327533523135e+01 5.0448128328618878e+01 5.2499999904355388e+00 0 0 0 +11084 1 -2.8300843517542422e+01 4.9886651687023516e+01 6.9999999784897398e+00 0 0 0 +10495 1 -2.4372639620835969e+01 4.9352101625625146e+01 5.2500000041803130e+00 0 0 0 +10549 1 -2.0444436499783016e+01 4.8817552433935809e+01 3.5000000154066973e+00 0 0 0 +10500 1 -2.2127952110364461e+01 4.8256075115939488e+01 5.2500000312588009e+00 0 0 0 +10547 1 -2.1005606245160013e+01 5.0475054345051525e+01 5.2500000168924323e+00 0 0 0 +11192 1 -2.0444436490910004e+01 4.8817552445635222e+01 7.0000000306740393e+00 0 0 0 +10552 1 -1.8760915302697413e+01 4.9379027623332739e+01 5.2500000247511185e+00 0 0 0 +10603 1 -1.6516219217553463e+01 4.8283002713822277e+01 5.2499999885810098e+00 0 0 0 +10602 1 -1.4832658190044912e+01 4.8844450100347231e+01 3.4999999835570357e+00 0 0 0 +10604 1 -1.5393907912934910e+01 5.0501977707879533e+01 5.2499999858561566e+00 0 0 0 +10655 1 -1.3149237302232100e+01 4.9405920041644542e+01 5.2499999412341509e+00 0 0 0 +11245 1 -1.4832658184649391e+01 4.8844450118290631e+01 6.9999999832975535e+00 0 0 0 +10660 1 -1.0904485704512435e+01 4.8309720712101999e+01 5.2499999421380288e+00 0 0 0 +10707 1 -9.7824042043151920e+00 5.0529389908082514e+01 5.2499999502960346e+00 0 0 0 +10709 1 -9.2228640832206317e+00 4.8871962607193332e+01 3.4999999985395771e+00 0 0 0 +10712 1 -7.5396996268167102e+00 4.9435232516224495e+01 5.2499999689986829e+00 0 0 0 +11352 1 -9.2228641595169609e+00 4.8871962578159362e+01 6.9999999341622265e+00 0 0 0 +10762 1 -3.5610863752292339e+00 4.8894611030040330e+01 3.5000000067038601e+00 0 0 0 +10763 1 -5.3078137412323940e+00 4.8345321027737626e+01 5.2499999837708593e+00 0 0 0 +10764 1 -4.1395809142611810e+00 5.0538538840333132e+01 5.2499999805298749e+00 0 0 0 +11405 1 -3.5610864735481731e+00 4.8894611040778578e+01 6.9999999986756283e+00 0 0 0 +10814 1 -1.7224970334454379e+00 4.9440556430814112e+01 5.2499999866644451e+00 0 0 0 +10254 1 -4.4574831296948673e+01 5.3682356413658091e+01 5.2499999702494744e+00 0 0 0 +10259 1 -4.2330143278814688e+01 5.2586329473914716e+01 5.2499999639417458e+00 0 0 0 +10899 1 -4.4013659311192072e+01 5.2024853269162740e+01 6.9999999589168249e+00 0 0 0 +10288 1 -4.0085455311949879e+01 5.1490302409590910e+01 5.2500000240189930e+00 0 0 0 +10289 1 -3.8963111363732835e+01 5.3709281889726491e+01 5.2500000172745827e+00 0 0 0 +10900 1 -4.1768971308342422e+01 5.0928826171449813e+01 6.9999999913554305e+00 0 0 0 +10929 1 -4.0646627321571422e+01 5.3147805756773266e+01 7.0000000075049718e+00 0 0 0 +10331 1 -3.6718423469490382e+01 5.2613254987201664e+01 5.2500000488526908e+00 0 0 0 +10930 1 -3.8401939420882179e+01 5.2051778633118900e+01 7.0000000061534831e+00 0 0 0 +10976 1 -3.6157251572863785e+01 5.0955751644876599e+01 7.0000000398473938e+00 0 0 0 +10336 1 -3.4473735600844265e+01 5.1517228116676897e+01 5.2500000229941559e+00 0 0 0 +10383 1 -3.3351391713514992e+01 5.3736207911296958e+01 5.2500000103984767e+00 0 0 0 +10385 1 -3.2790219700452838e+01 5.2078704739210423e+01 3.5000000184718481e+00 0 0 0 +11028 1 -3.2790219659317543e+01 5.2078704696799285e+01 7.0000000115809735e+00 0 0 0 +10973 1 -3.5034907569001845e+01 5.3174731247851568e+01 7.0000000253818380e+00 0 0 0 +10388 1 -3.1106703600070453e+01 5.2640181317378591e+01 5.2500000166010619e+00 0 0 0 +10438 1 -2.7178499636884929e+01 5.2105631453804321e+01 3.4999999974040441e+00 0 0 0 +10439 1 -2.8862015626112608e+01 5.1544154935322844e+01 5.2499999770419059e+00 0 0 0 +10440 1 -2.7739671556886801e+01 5.3763134643778180e+01 5.2499999982114414e+00 0 0 0 +11081 1 -2.7178499649845637e+01 5.2105631431510886e+01 7.0000000005220615e+00 0 0 0 +10490 1 -2.3811467482649423e+01 5.3228584367585462e+01 3.5000000273804606e+00 0 0 0 +10491 1 -2.5494983499675467e+01 5.2667107939293999e+01 5.2499999924968597e+00 0 0 0 +10496 1 -2.3250295189420012e+01 5.1571081113427617e+01 5.2500000392907307e+00 0 0 0 +11133 1 -2.3811467493188168e+01 5.3228584361631945e+01 6.9999999961670190e+00 0 0 0 +10543 1 -2.2127952371001971e+01 5.3790061050218512e+01 5.2500000101308331e+00 0 0 0 +10548 1 -1.9883266070970873e+01 5.2694034748144077e+01 5.2500000136773144e+00 0 0 0 +10546 1 -1.9322089232663611e+01 5.1036529358092842e+01 3.4999999847684249e+00 0 0 0 +10597 1 -1.8199753444586975e+01 5.3255514618704900e+01 3.4999999974412419e+00 0 0 0 +10599 1 -1.7638583312054102e+01 5.1598008264408193e+01 5.2500000040013859e+00 0 0 0 +10600 1 -1.6516219411781854e+01 5.3816988316068006e+01 5.2500000045797384e+00 0 0 0 +11189 1 -1.9322089217481228e+01 5.1036529389112424e+01 7.0000000407720382e+00 0 0 0 +11240 1 -1.8199753454458246e+01 5.3255514692757060e+01 7.0000000287428410e+00 0 0 0 +10653 1 -1.3710491266570131e+01 5.1063512497693097e+01 3.5000000135705545e+00 0 0 0 +10651 1 -1.4271514577301941e+01 5.2720974623336652e+01 5.2499999897245138e+00 0 0 0 +11296 1 -1.3710491280001106e+01 5.1063512521768779e+01 6.9999999570781322e+00 0 0 0 +10650 1 -1.2587782817788227e+01 5.3282335795732656e+01 3.5000000109475402e+00 0 0 0 +10656 1 -1.2026826795948303e+01 5.1625025436300142e+01 5.2499999605081289e+00 0 0 0 +10703 1 -1.0904485637475846e+01 5.3843706019993341e+01 5.2499999540583220e+00 0 0 0 +11293 1 -1.2587782829534319e+01 5.3282335789831336e+01 6.9999999544493487e+00 0 0 0 +10706 1 -8.0950138951023476e+00 5.1089357364407647e+01 3.4999999895276797e+00 0 0 0 +10757 1 -6.9829708715587016e+00 5.3310491960749687e+01 3.5000000015927575e+00 0 0 0 +10708 1 -8.6590369743927500e+00 5.2746848835908835e+01 5.2499999637440249e+00 0 0 0 +11349 1 -8.0950139776192511e+00 5.1089357302341774e+01 6.9999999335466976e+00 0 0 0 +11400 1 -6.9829709175239660e+00 5.3310491872556497e+01 6.9999999419051582e+00 0 0 0 +10759 1 -6.4095229009641397e+00 5.1647195431918675e+01 5.2499999766071781e+00 0 0 0 +10760 1 -5.3078136577633366e+00 5.3879306024437703e+01 5.2499999830154156e+00 0 0 0 +10810 1 -1.2264313743822246e+00 5.3375128695271442e+01 3.5000000220208594e+00 0 0 0 +10813 1 -2.5187337681596529e+00 5.1097566137679408e+01 3.5000000135440144e+00 0 0 0 +10811 1 -3.1035848673608180e+00 5.2822744780683919e+01 5.2499999993301536e+00 0 0 0 +10815 1 -1.0571060445212928e+00 5.1740483759066571e+01 5.2500000097777546e+00 0 0 0 +11453 1 -1.2264313761704695e+00 5.3375128768345469e+01 6.9999999920854226e+00 0 0 0 +11456 1 -2.5187337955966704e+00 5.1097566163588866e+01 6.9999999566890256e+00 0 0 0 +10255 1 -4.3452487190239637e+01 5.5901335896441616e+01 5.2499999737283618e+00 0 0 0 +10895 1 -4.5136003269740634e+01 5.5339859594430926e+01 6.9999999607039918e+00 0 0 0 +10896 1 -4.2891315265538061e+01 5.4243832663924998e+01 6.9999999714873082e+00 0 0 0 +10284 1 -4.1207799267652334e+01 5.4805308945896655e+01 5.2499999861330506e+00 0 0 0 +10925 1 -4.1768971202046870e+01 5.6462812145797031e+01 6.9999999938677151e+00 0 0 0 +10926 1 -3.9524283395049586e+01 5.5366785199777532e+01 7.0000000211975788e+00 0 0 0 +10327 1 -3.7840767521042153e+01 5.5928261469685395e+01 5.2500000324435030e+00 0 0 0 +10332 1 -3.5596079734541824e+01 5.4832234554238092e+01 5.2500000485675802e+00 0 0 0 +10969 1 -3.6157251576980698e+01 5.6489737736448745e+01 7.0000000312296393e+00 0 0 0 +10972 1 -3.7279595535757359e+01 5.4270758230076602e+01 7.0000000248578838e+00 0 0 0 +10382 1 -3.1667875618017494e+01 5.4297684473320317e+01 3.5000000175867649e+00 0 0 0 +10384 1 -3.2229047748210832e+01 5.5955187577652609e+01 5.2499999933872648e+00 0 0 0 +10433 1 -3.0545531754963527e+01 5.6516664258714222e+01 3.5000000012104695e+00 0 0 0 +10435 1 -2.9984359639651998e+01 5.4859161165289109e+01 5.2499999831390056e+00 0 0 0 +11025 1 -3.1667875587659708e+01 5.4297684436441557e+01 7.0000000003474332e+00 0 0 0 +11076 1 -3.0545531723125666e+01 5.6516664236598736e+01 6.9999999838912590e+00 0 0 0 +10487 1 -2.6617327750574983e+01 5.5982114373891434e+01 5.2499999932082613e+00 0 0 0 +10489 1 -2.6056155596487589e+01 5.4324611131629723e+01 3.5000000337263049e+00 0 0 0 +11132 1 -2.6056155634779461e+01 5.4324611131322690e+01 6.9999999806080746e+00 0 0 0 +10486 1 -2.4933811639792403e+01 5.6543590767979914e+01 3.5000000032940770e+00 0 0 0 +10492 1 -2.4372639863955701e+01 5.4886087616654059e+01 5.2499999914688713e+00 0 0 0 +10541 1 -2.2689123815860814e+01 5.5447564215108663e+01 3.5000000063851919e+00 0 0 0 +11184 1 -2.2689123803927796e+01 5.5447564236128109e+01 7.0000000241358178e+00 0 0 0 +11129 1 -2.4933811664774492e+01 5.6543590782858921e+01 6.9999999887820401e+00 0 0 0 +10544 1 -2.1005606420245115e+01 5.6009040183341625e+01 5.2500000127786821e+00 0 0 0 +10594 1 -1.7077391361226756e+01 5.5474483091168352e+01 3.5000000018857440e+00 0 0 0 +10595 1 -1.8760915547026816e+01 5.4913013404263268e+01 5.2500000015496475e+00 0 0 0 +11237 1 -1.7077391360180499e+01 5.5474483140388571e+01 7.0000000207372288e+00 0 0 0 +10647 1 -1.5393907976600961e+01 5.6035963264269490e+01 5.2499999982993675e+00 0 0 0 +10652 1 -1.3149237297240568e+01 5.4939905462381908e+01 5.2500000098474811e+00 0 0 0 +10701 1 -1.1466172515738906e+01 5.5501601502438334e+01 3.4999999990864352e+00 0 0 0 +10704 1 -9.7824040979905060e+00 5.6063375171375249e+01 5.2499999605964005e+00 0 0 0 +11344 1 -1.1466172513000243e+01 5.5501601472268241e+01 6.9999999538777784e+00 0 0 0 +10755 1 -7.5396994706929998e+00 5.4969217637644270e+01 5.2499999472638876e+00 0 0 0 +10754 1 -5.8404164527675819e+00 5.5526511439701125e+01 3.4999999864250007e+00 0 0 0 +10807 1 -4.1395808860255849e+00 5.6072523801383973e+01 5.2500000227671153e+00 0 0 0 +11397 1 -5.8404164855712768e+00 5.5526511408862909e+01 6.9999999724275721e+00 0 0 0 +10812 1 -1.7224970762907130e+00 5.4974541281597197e+01 5.2500000244461891e+00 0 0 0 +10213 1 -6.9829718143581410e+00 8.6514406526149088e+01 6.5239117219562104e-08 0 0 0 +12699 1 -1.2587783935983214e+01 8.6486251350113307e+01 1.3999999978267828e+01 0 0 0 +10251 1 -4.4574831220755883e+01 5.9216342207988767e+01 5.2499999519074176e+00 0 0 0 +10280 1 -4.2330143168758553e+01 5.8120315369537472e+01 5.2499999888417186e+00 0 0 0 +10893 1 -4.4013659173806204e+01 5.7558839116135061e+01 6.9999999782714459e+00 0 0 0 +10921 1 -4.2891315159852617e+01 5.9777818478929959e+01 6.9999999650574551e+00 0 0 0 +10285 1 -4.0085455268927333e+01 5.7024288465083877e+01 5.2500000049076547e+00 0 0 0 +10323 1 -3.8963111256702291e+01 5.9243267876174691e+01 5.2500000271093867e+00 0 0 0 +10922 1 -4.0646627226743028e+01 5.8681791729613167e+01 7.0000000172669345e+00 0 0 0 +10328 1 -3.6718423425920761e+01 5.8147241019404383e+01 5.2500000173139192e+00 0 0 0 +10965 1 -3.7279595439826174e+01 5.9804744277807345e+01 7.0000000160982019e+00 0 0 0 +10968 1 -3.8401939378980344e+01 5.7585764713538325e+01 7.0000000245296192e+00 0 0 0 +10377 1 -3.5034907564628369e+01 5.8708717291158848e+01 3.5000000144981227e+00 0 0 0 +10379 1 -3.4473735634910767e+01 5.7051214190288526e+01 5.2500000211290256e+00 0 0 0 +10380 1 -3.3351391738311435e+01 5.9270193916641013e+01 5.2500000027943887e+00 0 0 0 +11020 1 -3.5034907540102886e+01 5.8708717293575944e+01 7.0000000146953774e+00 0 0 0 +10430 1 -2.9423187790938247e+01 5.8735644022635917e+01 3.4999999795394654e+00 0 0 0 +10431 1 -3.1106703710958531e+01 5.8174167348896120e+01 5.2499999785045661e+00 0 0 0 +11073 1 -2.9423187799296123e+01 5.8735643989591459e+01 6.9999999603719631e+00 0 0 0 +10436 1 -2.8862015756343482e+01 5.7078140924608569e+01 5.2499999723672035e+00 0 0 0 +10483 1 -2.7739671659468588e+01 5.9297120569678796e+01 5.2499999500794372e+00 0 0 0 +10488 1 -2.5494983671411603e+01 5.8201093863192057e+01 5.2499999978906304e+00 0 0 0 +10539 1 -2.3250295367230549e+01 5.7105067010729918e+01 5.2499999956948562e+00 0 0 0 +10538 1 -2.1566779333094424e+01 5.7666543173888101e+01 3.5000000026882416e+00 0 0 0 +10540 1 -2.2127952469559371e+01 5.9324046830423569e+01 5.2499999930190304e+00 0 0 0 +10589 1 -2.0444436814554486e+01 5.9885524028071075e+01 3.4999999931168246e+00 0 0 0 +10591 1 -1.9883266141353534e+01 5.8228020465084271e+01 5.2499999829493325e+00 0 0 0 +11181 1 -2.1566779363157753e+01 5.7666543175428515e+01 6.9999999960683441e+00 0 0 0 +11232 1 -2.0444436830768520e+01 5.9885524063273834e+01 7.0000000133292533e+00 0 0 0 +10596 1 -1.7638583404771122e+01 5.7131993924891447e+01 5.2500000263174833e+00 0 0 0 +10643 1 -1.6516219484467040e+01 5.9350973994315794e+01 5.2500000273403966e+00 0 0 0 +10642 1 -1.4832658367899151e+01 5.9912421189024677e+01 3.4999999950556440e+00 0 0 0 +10645 1 -1.5955087111383822e+01 5.7693484929090985e+01 3.4999999985457566e+00 0 0 0 +10648 1 -1.4271514598514514e+01 5.8254960161457738e+01 5.2500000187072775e+00 0 0 0 +11285 1 -1.4832658356764160e+01 5.9912421251015594e+01 7.0000000213307736e+00 0 0 0 +11288 1 -1.5955087103734536e+01 5.7693484972670625e+01 7.0000000279909012e+00 0 0 0 +10698 1 -1.0342363793617441e+01 5.7720060870191908e+01 3.4999999998150155e+00 0 0 0 +10699 1 -1.2026826725586798e+01 5.7159010803417054e+01 5.2499999965449708e+00 0 0 0 +10700 1 -1.0904485631878979e+01 5.9377691429511941e+01 5.2499999864896392e+00 0 0 0 +11341 1 -1.0342363787492198e+01 5.7720060847102260e+01 6.9999999377768445e+00 0 0 0 +10749 1 -9.2228639392010674e+00 5.9939933167731191e+01 3.4999999884796034e+00 0 0 0 +10751 1 -8.6590369510043121e+00 5.8280834133691570e+01 5.2499999610242023e+00 0 0 0 +11392 1 -9.2228639472787517e+00 5.9939933151457218e+01 6.9999999553684944e+00 0 0 0 +10802 1 -3.5610861931655151e+00 5.9962580971704227e+01 3.4999999962035466e+00 0 0 0 +10805 1 -4.7485637600167898e+00 5.7748678138498477e+01 3.4999999927004652e+00 0 0 0 +10756 1 -6.4095228182668977e+00 5.7181180549531192e+01 5.2499999723190163e+00 0 0 0 +10803 1 -5.3078135081701570e+00 5.9413291146052224e+01 5.2499999689381056e+00 0 0 0 +11445 1 -3.5610862164906725e+00 5.9962580949792049e+01 6.9999999835110636e+00 0 0 0 +11448 1 -4.7485637947575663e+00 5.7748678123046716e+01 6.9999999904966828e+00 0 0 0 +10808 1 -3.1035848578334275e+00 5.8356729784641949e+01 5.2499999936943356e+00 0 0 0 +10854 1 -1.0571059743876696e+00 5.7274468590566144e+01 5.2500000185427966e+00 0 0 0 +10276 1 -4.3452487134448660e+01 6.1435321654316120e+01 5.2499999666028545e+00 0 0 0 +10917 1 -4.4013659183783879e+01 6.3092824829704256e+01 6.9999999594416922e+00 0 0 0 +10892 1 -4.5136003213323981e+01 6.0873845331772003e+01 6.9999999476740093e+00 0 0 0 +10281 1 -4.1207799192479079e+01 6.0339294834194241e+01 5.2500000090506216e+00 0 0 0 +10319 1 -4.0085455131439225e+01 6.2558274308683579e+01 5.2500000117236105e+00 0 0 0 +10964 1 -3.9524283301110991e+01 6.0900771159792768e+01 7.0000000306354684e+00 0 0 0 +10918 1 -4.1768971117237541e+01 6.1996797962982065e+01 6.9999999992871311e+00 0 0 0 +10324 1 -3.7840767362018696e+01 6.1462247413480881e+01 5.2500000199902175e+00 0 0 0 +10375 1 -3.5596079671577151e+01 6.0366220599635469e+01 5.2500000072803950e+00 0 0 0 +10961 1 -3.8401939202799149e+01 6.3119750611080704e+01 7.0000000205992174e+00 0 0 0 +11016 1 -3.6157251456658727e+01 6.2023723707062565e+01 7.0000000165363865e+00 0 0 0 +10374 1 -3.3912563659137611e+01 6.0927696998966027e+01 3.4999999620866347e+00 0 0 0 +10376 1 -3.4473735546518924e+01 6.2585200118062943e+01 5.2499999794275807e+00 0 0 0 +10425 1 -3.2790219691132009e+01 6.3146676637706300e+01 3.4999999660523486e+00 0 0 0 +11017 1 -3.3912563602363399e+01 6.0927696960748072e+01 7.0000000192343190e+00 0 0 0 +11068 1 -3.2790219645374570e+01 6.3146676596218647e+01 6.9999999991467083e+00 0 0 0 +10427 1 -3.2229047672523635e+01 6.1489173467439002e+01 5.2499999763099439e+00 0 0 0 +10432 1 -2.9984359701451250e+01 6.0393147047944545e+01 5.2499999533433721e+00 0 0 0 +10478 1 -2.7178499770128845e+01 6.3173603193837224e+01 3.4999999892362266e+00 0 0 0 +10481 1 -2.8300843727964775e+01 6.0954623668756824e+01 3.4999999795175079e+00 0 0 0 +10479 1 -2.8862015757450010e+01 6.2612126761553874e+01 5.2499999480668933e+00 0 0 0 +10484 1 -2.6617327756702405e+01 6.1516100170075390e+01 5.2499999655649709e+00 0 0 0 +11121 1 -2.7178499806239714e+01 6.3173603165702367e+01 6.9999999693576163e+00 0 0 0 +11124 1 -2.8300843741570311e+01 6.0954623622142989e+01 6.9999999589770558e+00 0 0 0 +10535 1 -2.4372639919036672e+01 6.0420073428752005e+01 5.2499999826140993e+00 0 0 0 +10536 1 -2.3250295426102607e+01 6.2639052753431130e+01 5.2500000129933966e+00 0 0 0 +10587 1 -2.1005606512748049e+01 6.1543025924292422e+01 5.2500000009962857e+00 0 0 0 +10586 1 -1.9322089460264564e+01 6.2104500850886538e+01 3.4999999741949597e+00 0 0 0 +10592 1 -1.8760915598185548e+01 6.0446999106631388e+01 5.2500000204652082e+00 0 0 0 +10639 1 -1.7638583512311865e+01 6.2665979671469529e+01 5.2500000119973755e+00 0 0 0 +11229 1 -1.9322089470289512e+01 6.2104500889061541e+01 7.0000000268913176e+00 0 0 0 +10644 1 -1.5393908066642378e+01 6.1569948939836124e+01 5.2500000335867307e+00 0 0 0 +10693 1 -1.3710491335549097e+01 6.2131483550497379e+01 3.5000000117651724e+00 0 0 0 +10695 1 -1.3149237345503513e+01 6.0473891000607999e+01 5.2499999845197562e+00 0 0 0 +11336 1 -1.3710491332464647e+01 6.2131483611196494e+01 6.9999999886642277e+00 0 0 0 +10696 1 -1.2026826773595802e+01 6.2692996363141802e+01 5.2499999888050413e+00 0 0 0 +10747 1 -9.7824040479057324e+00 6.1597360581523837e+01 5.2499999837084736e+00 0 0 0 +10746 1 -8.0950136757820790e+00 6.2157327928834256e+01 3.4999999850185621e+00 0 0 0 +10752 1 -7.5396993686853628e+00 6.0503202940744202e+01 5.2499999778609796e+00 0 0 0 +11389 1 -8.0950137132085942e+00 6.2157327871511335e+01 6.9999999437761717e+00 0 0 0 +10799 1 -6.4095226311707387e+00 6.2715165889293921e+01 5.2499999945932503e+00 0 0 0 +10804 1 -4.1395807215694163e+00 6.1606508930182578e+01 5.2499999777339195e+00 0 0 0 +10849 1 -2.5187336539297585e+00 6.2165536075100988e+01 3.4999999626291598e+00 0 0 0 +10851 1 -1.7224968466459756e+00 6.0508526151852273e+01 5.2499999696686057e+00 0 0 0 +10852 1 -1.0571059341671369e+00 6.2808453574871905e+01 5.2499999673765139e+00 0 0 0 +11492 1 -2.5187336282814545e+00 6.2165536075518794e+01 6.9999999860653421e+00 0 0 0 +10272 1 -4.4574831250607183e+01 6.4750327906025646e+01 5.2499999555001589e+00 0 0 0 +10277 1 -4.2330143117435746e+01 6.3654301127810292e+01 5.2499999726805466e+00 0 0 0 +10914 1 -4.2891315165717735e+01 6.5311804190757229e+01 6.9999999481286723e+00 0 0 0 +10315 1 -4.1207799119140375e+01 6.5873280526901283e+01 5.2499999767695922e+00 0 0 0 +10320 1 -3.8963111169315063e+01 6.4777253707450242e+01 5.2499999856284836e+00 0 0 0 +10960 1 -4.0646627156341644e+01 6.4215777515089911e+01 6.9999999781986748e+00 0 0 0 +10371 1 -3.6718423270948200e+01 6.3681226953365353e+01 5.2500000215631175e+00 0 0 0 +10372 1 -3.5596079494609171e+01 6.5900206414507466e+01 5.2500000040184416e+00 0 0 0 +11012 1 -3.7279595275729633e+01 6.5338730106052651e+01 7.0000000281876531e+00 0 0 0 +10423 1 -3.3351391606781377e+01 6.4804179771513915e+01 5.2499999603599763e+00 0 0 0 +10422 1 -3.1667875550629603e+01 6.5365656222379130e+01 3.4999999665557202e+00 0 0 0 +10428 1 -3.1106703634645584e+01 6.3708153123854267e+01 5.2499999720376413e+00 0 0 0 +10475 1 -2.9984359585624528e+01 6.5927132799592073e+01 5.2499999595552591e+00 0 0 0 +11065 1 -3.1667875528101494e+01 6.5365656181881675e+01 6.9999999870540872e+00 0 0 0 +10529 1 -2.6056155655922932e+01 6.5392582703863013e+01 3.5000000189389082e+00 0 0 0 +10480 1 -2.7739671618404358e+01 6.4831106273918991e+01 5.2499999713945877e+00 0 0 0 +11172 1 -2.6056155726732882e+01 6.5392582715241332e+01 6.9999999716829775e+00 0 0 0 +10530 1 -2.3811467625334068e+01 6.4296555942545595e+01 3.5000000163831286e+00 0 0 0 +10531 1 -2.5494983657051321e+01 6.3735079596601352e+01 5.2499999762375333e+00 0 0 0 +10532 1 -2.4372639949723393e+01 6.5954059171867939e+01 5.2499999904324053e+00 0 0 0 +11173 1 -2.3811467668590065e+01 6.4296555954905060e+01 6.9999999888689155e+00 0 0 0 +10583 1 -2.2127952525013836e+01 6.4858032587808140e+01 5.2500000028881946e+00 0 0 0 +10588 1 -1.9883266275292243e+01 6.3762006266429680e+01 5.2500000100049071e+00 0 0 0 +10635 1 -1.8760915717779678e+01 6.5980984892357114e+01 5.2499999927852077e+00 0 0 0 +10637 1 -1.8199753613191010e+01 6.4323486088160749e+01 3.4999999835124185e+00 0 0 0 +10640 1 -1.6516219552300480e+01 6.4884959724563217e+01 5.2500000057790412e+00 0 0 0 +11280 1 -1.8199753641829670e+01 6.4323486158699239e+01 7.0000000187167046e+00 0 0 0 +10691 1 -1.4271514648352884e+01 6.3788945795579117e+01 5.2500000088252445e+00 0 0 0 +10692 1 -1.3149237328208386e+01 6.6007876691227850e+01 5.2500000213726157e+00 0 0 0 +10690 1 -1.2587782806095415e+01 6.4350306844675700e+01 3.4999999824484851e+00 0 0 0 +10743 1 -1.0904485579361591e+01 6.4911676979903291e+01 5.2499999682015694e+00 0 0 0 +11333 1 -1.2587782821655528e+01 6.4350306872379292e+01 6.9999999725665889e+00 0 0 0 +10748 1 -8.6590368054346225e+00 6.3814819581039629e+01 5.2499999892161080e+00 0 0 0 +10795 1 -7.5396993115148589e+00 6.6037188486829152e+01 5.2499999772939727e+00 0 0 0 +10797 1 -6.9829706433636041e+00 6.4378462626833567e+01 3.5000000143253125e+00 0 0 0 +11440 1 -6.9829706815758472e+00 6.4378462548522236e+01 6.9999999524730958e+00 0 0 0 +10800 1 -5.3078134105983956e+00 6.4947276585183971e+01 5.2500000034051713e+00 0 0 0 +10846 1 -1.2264313527351458e+00 6.4443098675262817e+01 3.4999999903770025e+00 0 0 0 +10847 1 -3.1035847349380647e+00 6.3890715023420029e+01 5.2499999843308904e+00 0 0 0 +10848 1 -1.7224969076533958e+00 6.6042511484684212e+01 5.2500000074160251e+00 0 0 0 +11489 1 -1.2264313478343074e+00 6.4443098721001377e+01 6.9999999700297728e+00 0 0 0 +10273 1 -4.3452487164072117e+01 6.6969307344266795e+01 5.2499999469583249e+00 0 0 0 +10311 1 -4.2330143105523582e+01 6.9188286805123724e+01 5.2499999467326575e+00 0 0 0 +10911 1 -4.4013659181325473e+01 6.8626810517346527e+01 6.9999999358577867e+00 0 0 0 +10913 1 -4.5136003284054425e+01 6.6407831025442960e+01 6.9999999296569388e+00 0 0 0 +10316 1 -4.0085455082374757e+01 6.8092260035245630e+01 5.2499999783737428e+00 0 0 0 +10956 1 -4.1768971089201557e+01 6.7530783625184114e+01 6.9999999639773716e+00 0 0 0 +10957 1 -3.9524283204030077e+01 6.6434756909876853e+01 6.9999999813607454e+00 0 0 0 +10366 1 -3.6157251342350776e+01 6.7557709531391168e+01 3.4999999557362167e+00 0 0 0 +10367 1 -3.7840767285924642e+01 6.6996233252661327e+01 5.2499999762143812e+00 0 0 0 +10368 1 -3.6718423169617658e+01 6.9215212730459925e+01 5.2499999611294275e+00 0 0 0 +11009 1 -3.6157251303670016e+01 6.7557709541361319e+01 7.0000000200346060e+00 0 0 0 +11008 1 -3.8401939168920826e+01 6.8653736363910269e+01 6.9999999780570326e+00 0 0 0 +10419 1 -3.4473735377156167e+01 6.8119185949776508e+01 5.2499999889138982e+00 0 0 0 +10473 1 -3.0545531601266863e+01 6.7584635834166392e+01 3.4999999844153118e+00 0 0 0 +10424 1 -3.2229047590197553e+01 6.7023159268481109e+01 5.2499999602310092e+00 0 0 0 +10471 1 -3.1106703511884547e+01 6.9242138891885162e+01 5.2499999765646299e+00 0 0 0 +11116 1 -3.0545531612785503e+01 6.7584635820639292e+01 6.9999999759651645e+00 0 0 0 +10476 1 -2.8862015644092878e+01 6.8146112412263307e+01 5.2499999824058463e+00 0 0 0 +10527 1 -2.6617327731413400e+01 6.7050085877035116e+01 5.2499999916443238e+00 0 0 0 +10526 1 -2.4933811646194769e+01 6.7611562246908107e+01 3.5000000074705775e+00 0 0 0 +10581 1 -2.2689123915554124e+01 6.6515535740359624e+01 3.5000000058555223e+00 0 0 0 +11224 1 -2.2689123942629152e+01 6.6515535764843435e+01 6.9999999996534790e+00 0 0 0 +10528 1 -2.5494983654485981e+01 6.9269065298497367e+01 5.2499999817739269e+00 0 0 0 +10579 1 -2.3250295448956880e+01 6.8173038496701878e+01 5.2499999755265430e+00 0 0 0 +11169 1 -2.4933811721344721e+01 6.7611562264305661e+01 6.9999999865609492e+00 0 0 0 +10578 1 -2.1566779452988698e+01 6.8734514688249206e+01 3.4999999772822870e+00 0 0 0 +10584 1 -2.1005606568642463e+01 6.7077011706339846e+01 5.2499999968021198e+00 0 0 0 +10631 1 -1.9883266290516293e+01 6.9295992039704188e+01 5.2499999764015159e+00 0 0 0 +11221 1 -2.1566779499442703e+01 6.8734514713561111e+01 6.9999999785526583e+00 0 0 0 +10634 1 -1.7077391492741768e+01 6.6542454563221540e+01 3.4999999848624035e+00 0 0 0 +11277 1 -1.7077391510618099e+01 6.6542454607320451e+01 7.0000000077240605e+00 0 0 0 +10636 1 -1.7638583568420252e+01 6.8199965481832621e+01 5.2500000127596032e+00 0 0 0 +10685 1 -1.5955087213260592e+01 6.8761456473249197e+01 3.4999999934559276e+00 0 0 0 +10687 1 -1.5393908082084705e+01 6.7103934690620704e+01 5.2500000063435950e+00 0 0 0 +10688 1 -1.4271514677896642e+01 6.9322931664372845e+01 5.2500000287401507e+00 0 0 0 +11328 1 -1.5955087253035845e+01 6.8761456490319546e+01 7.0000000096346247e+00 0 0 0 +10741 1 -1.1466172478800324e+01 6.6569572621301987e+01 3.4999999884403117e+00 0 0 0 +11384 1 -1.1466172512607981e+01 6.6569572614667322e+01 6.9999999728252797e+00 0 0 0 +10738 1 -1.0342363780100555e+01 6.8788032093415779e+01 3.5000000014582180e+00 0 0 0 +10739 1 -1.2026826742788149e+01 6.8226982083357569e+01 5.2500000159494000e+00 0 0 0 +10744 1 -9.7824040474005063e+00 6.7131346233754627e+01 5.2499999917648204e+00 0 0 0 +11381 1 -1.0342363810469813e+01 6.8788032077723642e+01 6.9999999740002963e+00 0 0 0 +10791 1 -8.6590369539749759e+00 6.9348805318576495e+01 5.2499999884694102e+00 0 0 0 +10794 1 -5.8404162600294471e+00 6.6594482212800813e+01 3.4999999986433492e+00 0 0 0 +10841 1 -4.7485636724063358e+00 6.8816649088496490e+01 3.5000000086987404e+00 0 0 0 +11437 1 -5.8404162809458375e+00 6.6594482183754621e+01 6.9999999891250804e+00 0 0 0 +10796 1 -6.4095227289017069e+00 6.8249151545301956e+01 5.2500000074886177e+00 0 0 0 +10843 1 -4.1395807466209069e+00 6.7140494475908824e+01 5.2500000321039648e+00 0 0 0 +11484 1 -4.7485636794589849e+00 6.8816649079828252e+01 7.0000000115443521e+00 0 0 0 +17511 1 -1.2215501963752522e-14 6.6826817564790105e+01 7.0000000108673399e+00 0 0 0 +10844 1 -3.1035847981839839e+00 6.9424700680851132e+01 5.2500000166020548e+00 0 0 0 +10876 1 -1.0571060216512342e+00 6.8342439024272494e+01 5.2500000184533127e+00 0 0 0 +12749 1 -1.0904486708833550e+01 8.7047621442967866e+01 1.5749999978488352e+01 0 0 0 +10269 1 -4.4574831233373750e+01 7.0284313641962100e+01 5.2499999405136286e+00 0 0 0 +10307 1 -4.3452487088221403e+01 7.2503293091019870e+01 5.2499999380442928e+00 0 0 0 +10910 1 -4.5136003216839157e+01 7.1941816793148760e+01 6.9999999202044281e+00 0 0 0 +10952 1 -4.2891315121986288e+01 7.0845789855920671e+01 6.9999999164235218e+00 0 0 0 +10312 1 -4.1207799084865300e+01 7.1407266257047212e+01 5.2499999390656615e+00 0 0 0 +10363 1 -3.8963111073439322e+01 7.0311239424408171e+01 5.2499999682094636e+00 0 0 0 +10953 1 -4.0646627086368142e+01 6.9749763174162752e+01 6.9999999713767203e+00 0 0 0 +11004 1 -3.9524283147440016e+01 7.1968742634071731e+01 6.9999999965651076e+00 0 0 0 +10364 1 -3.7840767160484070e+01 7.2530218972860354e+01 5.2499999964245658e+00 0 0 0 +10415 1 -3.5596079412131289e+01 7.1434192265872412e+01 5.2499999873785015e+00 0 0 0 +10414 1 -3.3912563383318400e+01 7.1995668615168583e+01 3.4999999798788592e+00 0 0 0 +10417 1 -3.5034907276764208e+01 6.9776689002000566e+01 3.4999999878175476e+00 0 0 0 +10420 1 -3.3351391469484589e+01 7.0338165565325014e+01 5.2499999863056139e+00 0 0 0 +11057 1 -3.3912563357872074e+01 7.1995668636191780e+01 6.9999999987960448e+00 0 0 0 +11060 1 -3.5034907268529523e+01 6.9776689015958198e+01 7.0000000034983110e+00 0 0 0 +10470 1 -2.9423187611122842e+01 6.9803615455214810e+01 3.4999999953752923e+00 0 0 0 +10467 1 -3.2229047448868009e+01 7.2557145032136447e+01 5.2499999852610699e+00 0 0 0 +10472 1 -2.9984359508963632e+01 7.1461118495448247e+01 5.2499999716238595e+00 0 0 0 +11113 1 -2.9423187658236014e+01 6.9803615436469315e+01 6.9999999629532024e+00 0 0 0 +10521 1 -2.8300843592741266e+01 7.2022595053048207e+01 3.4999999803616890e+00 0 0 0 +10523 1 -2.7739671542330115e+01 7.0365091954407333e+01 5.2499999544530729e+00 0 0 0 +10524 1 -2.6617327723360955e+01 7.2584071567814462e+01 5.2499999719423727e+00 0 0 0 +11164 1 -2.8300843633373983e+01 7.2022595019322111e+01 6.9999999685522614e+00 0 0 0 +10575 1 -2.4372639966312121e+01 7.1488044908822246e+01 5.2499999790342402e+00 0 0 0 +10580 1 -2.2127952587997861e+01 7.0392018386859107e+01 5.2499999672015942e+00 0 0 0 +10627 1 -2.1005606687648790e+01 7.2610997547288676e+01 5.2499999600995331e+00 0 0 0 +10629 1 -2.0444436959621662e+01 7.0953495640320625e+01 3.4999999791673440e+00 0 0 0 +11272 1 -2.0444437005632732e+01 7.0953495667743880e+01 6.9999999671641930e+00 0 0 0 +10632 1 -1.8760915792729460e+01 7.1514970762611171e+01 5.2499999934413255e+00 0 0 0 +10683 1 -1.6516219626711049e+01 7.0418945608470068e+01 5.2500000131124436e+00 0 0 0 +10682 1 -1.4832658453905722e+01 7.0980392812884730e+01 3.5000000054441665e+00 0 0 0 +10684 1 -1.5393908217060869e+01 7.2637920676726694e+01 5.2500000426254232e+00 0 0 0 +10735 1 -1.3149237445022761e+01 7.1541862598009345e+01 5.2500000185716367e+00 0 0 0 +11325 1 -1.4832658496191259e+01 7.0980392855383570e+01 7.0000000255434331e+00 0 0 0 +10740 1 -1.0904485705655583e+01 7.0445662831663910e+01 5.2500000267013665e+00 0 0 0 +10787 1 -9.7824042522953469e+00 7.2665332120152797e+01 5.2500000339950565e+00 0 0 0 +10789 1 -9.2228640488812434e+00 7.1007904511553974e+01 3.5000000003168394e+00 0 0 0 +10792 1 -7.5396994745743662e+00 7.1571174286994292e+01 5.2500000235180613e+00 0 0 0 +11432 1 -9.2228640469585024e+00 7.1007904527006829e+01 7.0000000144155319e+00 0 0 0 +10838 1 -3.5610862512280845e+00 7.1030552092061370e+01 3.5000000103457105e+00 0 0 0 +10839 1 -5.3078135244758027e+00 7.0481262313775815e+01 5.2500000020585329e+00 0 0 0 +10840 1 -4.1395808870462947e+00 7.2674480268870084e+01 5.2500000047597535e+00 0 0 0 +11481 1 -3.5610862521155777e+00 7.1030552092641429e+01 7.0000000011241754e+00 0 0 0 +10873 1 -1.7224968693136793e+00 7.1576497161530966e+01 5.2499999991448556e+00 0 0 0 +10303 1 -4.4574831159224111e+01 7.5818299540779464e+01 5.2499999611410590e+00 0 0 0 +10308 1 -4.2330143012973494e+01 7.4722272615750285e+01 5.2499999722056785e+00 0 0 0 +10948 1 -4.4013659116268997e+01 7.4160796323430830e+01 6.9999999327477926e+00 0 0 0 +10359 1 -4.0085455001298371e+01 7.3626245774926787e+01 5.2499999954834511e+00 0 0 0 +10360 1 -3.8963111075975903e+01 7.5845225208664701e+01 5.2499999913377184e+00 0 0 0 +10949 1 -4.1768971028524540e+01 7.3064769383974578e+01 6.9999999609343657e+00 0 0 0 +11000 1 -4.0646627069140081e+01 7.5283748941558414e+01 6.9999999682834044e+00 0 0 0 +10358 1 -3.8401939050475463e+01 7.4187722121588308e+01 3.4999999911278947e+00 0 0 0 +10411 1 -3.6718423129319767e+01 7.4749198535898586e+01 5.2499999998894751e+00 0 0 0 +11001 1 -3.8401939090217986e+01 7.4187722115076667e+01 7.0000000103110596e+00 0 0 0 +10465 1 -3.2790219497236919e+01 7.4214648222585637e+01 3.4999999891191438e+00 0 0 0 +10416 1 -3.4473735328434934e+01 7.3653171740893697e+01 5.2499999932877248e+00 0 0 0 +10463 1 -3.3351391532182383e+01 7.5872151381538615e+01 5.2499999534626589e+00 0 0 0 +11108 1 -3.2790219492412497e+01 7.4214648205308094e+01 6.9999999781797539e+00 0 0 0 +10468 1 -3.1106703534953585e+01 7.4776124650232276e+01 5.2499999489692675e+00 0 0 0 +10518 1 -2.7178499774698036e+01 7.4241574588892689e+01 3.4999999651396325e+00 0 0 0 +10519 1 -2.8862015654513403e+01 7.3680098169062887e+01 5.2499999541028375e+00 0 0 0 +10520 1 -2.7739671695065216e+01 7.5899077724455566e+01 5.2499999731965064e+00 0 0 0 +11161 1 -2.7178499819887953e+01 7.4241574576502529e+01 6.9999999782052811e+00 0 0 0 +10570 1 -2.3811467836457378e+01 7.5364527514909810e+01 3.4999999759793243e+00 0 0 0 +10571 1 -2.5494983773649160e+01 7.4803051071372792e+01 5.2499999695631150e+00 0 0 0 +10576 1 -2.3250295586179888e+01 7.3707024314066814e+01 5.2499999868934975e+00 0 0 0 +11213 1 -2.3811467872542458e+01 7.5364527535023811e+01 6.9999999980198373e+00 0 0 0 +10623 1 -2.2127952804643613e+01 7.5926004305540218e+01 5.2499999974593594e+00 0 0 0 +10628 1 -1.9883266518429565e+01 7.4829978052648315e+01 5.2499999889353841e+00 0 0 0 +10626 1 -1.9322089662835161e+01 7.3172472554602223e+01 3.4999999605901406e+00 0 0 0 +10677 1 -1.8199753898108163e+01 7.5391457960218389e+01 3.4999999932611172e+00 0 0 0 +10679 1 -1.7638583732917748e+01 7.3733951456156603e+01 5.2499999989996491e+00 0 0 0 +10680 1 -1.6516219875039454e+01 7.5952931671972223e+01 5.2499999986093320e+00 0 0 0 +11269 1 -1.9322089690485534e+01 7.3172472595367253e+01 6.9999999843012422e+00 0 0 0 +11320 1 -1.8199753939151407e+01 7.5391458013736269e+01 6.9999999738056387e+00 0 0 0 +10731 1 -1.4271514892214391e+01 7.4856917671839767e+01 5.2500000210953122e+00 0 0 0 +10733 1 -1.3710491491254178e+01 7.3199455296884082e+01 3.5000000278532855e+00 0 0 0 +11376 1 -1.3710491528826338e+01 7.3199455351271467e+01 7.0000000161123541e+00 0 0 0 +10730 1 -1.2587783128697474e+01 7.5418278739637785e+01 3.4999999913972011e+00 0 0 0 +10736 1 -1.2026826992466459e+01 7.3760968107919055e+01 5.2500000332210703e+00 0 0 0 +10783 1 -1.0904485981044086e+01 7.5979648859600090e+01 5.2499999983952899e+00 0 0 0 +11373 1 -1.2587783154034893e+01 7.5418278768429516e+01 7.0000000148640629e+00 0 0 0 +10786 1 -8.0950139397052627e+00 7.3225299424775059e+01 3.4999999945097335e+00 0 0 0 +10788 1 -8.6590371945169835e+00 7.4882791250104788e+01 5.2500000150072292e+00 0 0 0 +10833 1 -6.9829710576561563e+00 7.5446434252629174e+01 3.5000000234207920e+00 0 0 0 +11429 1 -8.0950139504769325e+00 7.3225299393147210e+01 6.9999999943954192e+00 0 0 0 +11476 1 -6.9829710612456024e+00 7.5446434228809494e+01 6.9999999697702879e+00 0 0 0 +10835 1 -6.4095229132927241e+00 7.3783137379562731e+01 5.2500000045046198e+00 0 0 0 +10836 1 -5.3078137906595719e+00 7.6015248230614986e+01 5.2500000003856337e+00 0 0 0 +10869 1 -1.2264314833145404e+00 7.5511070150722247e+01 3.5000000275162662e+00 0 0 0 +10870 1 -3.1035848878212788e+00 7.4958686549914376e+01 5.2499999882643698e+00 0 0 0 +10872 1 -2.5187338325539832e+00 7.3233507355561727e+01 3.5000000158130939e+00 0 0 0 +10874 1 -1.0571060960865371e+00 7.3876424822625609e+01 5.2499999996478479e+00 0 0 0 +11515 1 -2.5187338139526534e+00 7.3233507358053956e+01 6.9999999686895347e+00 0 0 0 +11512 1 -1.2264314726358501e+00 7.5511070182008766e+01 6.9999999555590398e+00 0 0 0 +10302 1 -4.2891315003947490e+01 7.6379775746007539e+01 3.5000000158584554e+00 0 0 0 +10304 1 -4.3452487063978054e+01 7.8037279020156944e+01 5.2499999722315787e+00 0 0 0 +10945 1 -4.2891315084743304e+01 7.6379775740391622e+01 6.9999999401990340e+00 0 0 0 +10353 1 -4.1768970991946077e+01 7.8598755266936209e+01 3.4999999875050696e+00 0 0 0 +10355 1 -4.1207799030577732e+01 7.6941252060655174e+01 5.2499999798311947e+00 0 0 0 +10996 1 -4.1768971050411714e+01 7.8598755234948868e+01 6.9999999893600755e+00 0 0 0 +10406 1 -3.6157251479664005e+01 7.8625681152206681e+01 3.4999999560553117e+00 0 0 0 +10407 1 -3.7840767335019841e+01 7.8064204827199291e+01 5.2500000125696555e+00 0 0 0 +10409 1 -3.7279595226186629e+01 7.6406701677576550e+01 3.4999999831856918e+00 0 0 0 +10412 1 -3.5596079490833318e+01 7.6968178027906234e+01 5.2499999887063513e+00 0 0 0 +11049 1 -3.6157251443253514e+01 7.8625681157507529e+01 7.0000000185321518e+00 0 0 0 +11052 1 -3.7279595244696637e+01 7.6406701671313982e+01 7.0000000339595632e+00 0 0 0 +10462 1 -3.1667875565332167e+01 7.6433627762155751e+01 3.4999999657397072e+00 0 0 0 +10513 1 -3.0545531871098568e+01 7.8652607410369214e+01 3.4999999593096480e+00 0 0 0 +10464 1 -3.2229047745376278e+01 7.8091130883876019e+01 5.2499999427272819e+00 0 0 0 +10515 1 -2.9984359681136034e+01 7.6995104311852302e+01 5.2499999469830936e+00 0 0 0 +11105 1 -3.1667875539859825e+01 7.6433627791727659e+01 6.9999999492414009e+00 0 0 0 +11156 1 -3.0545531873179222e+01 7.8652607407381637e+01 6.9999999265039046e+00 0 0 0 +10569 1 -2.6056155852607038e+01 7.6460554203295530e+01 3.4999999892307372e+00 0 0 0 +10567 1 -2.6617328040603780e+01 7.8118057416488369e+01 5.2499999888863060e+00 0 0 0 +11212 1 -2.6056155919434509e+01 7.6460554223143347e+01 6.9999999897618910e+00 0 0 0 +10566 1 -2.4933812061341776e+01 7.8679533899200308e+01 3.4999999941729500e+00 0 0 0 +10572 1 -2.4372640236573933e+01 7.7022030795058356e+01 5.2500000068654149e+00 0 0 0 +10621 1 -2.2689124288449758e+01 7.7583507515966673e+01 3.4999999933806323e+00 0 0 0 +11264 1 -2.2689124296679445e+01 7.7583507525263400e+01 7.0000000146824020e+00 0 0 0 +11209 1 -2.4933812109077344e+01 7.8679533930577264e+01 7.0000000182405158e+00 0 0 0 +10624 1 -2.1005607000720467e+01 7.8144983613710352e+01 5.2500000108302345e+00 0 0 0 +10674 1 -1.7077391921922679e+01 7.7610426619886169e+01 3.4999999887490816e+00 0 0 0 +10675 1 -1.8760916092795874e+01 7.7048956832926351e+01 5.2499999828988466e+00 0 0 0 +11317 1 -1.7077391945806081e+01 7.7610426616429109e+01 6.9999999713909107e+00 0 0 0 +10727 1 -1.5393908560229718e+01 7.8171906803238670e+01 5.2499999832435114e+00 0 0 0 +10732 1 -1.3149237736203844e+01 7.7075848714286863e+01 5.2500000194786205e+00 0 0 0 +10781 1 -1.1466172973561882e+01 7.7637544655209211e+01 3.4999999860959927e+00 0 0 0 +10784 1 -9.7824046123347976e+00 7.8199318232330072e+01 5.2499999957053172e+00 0 0 0 +11424 1 -1.1466173019754502e+01 7.7637544663766832e+01 7.0000000083264560e+00 0 0 0 +10831 1 -7.5396998064678105e+00 7.7105160280160376e+01 5.2499999821518077e+00 0 0 0 +10830 1 -5.8404167454172811e+00 7.7662453940562074e+01 3.5000000092184989e+00 0 0 0 +10866 1 -4.1395811955139497e+00 7.8208466241488196e+01 5.2499999956775971e+00 0 0 0 +11473 1 -5.8404167583005879e+00 7.7662453950566231e+01 6.9999999504794177e+00 0 0 0 +10871 1 -1.7224970745639332e+00 7.7110483182229146e+01 5.2499999991177377e+00 0 0 0 +10127 1 -1.2587783907797085e+01 8.6486251355827704e+01 1.7499999973610098e+01 0 0 -1 +12700 1 -1.4271515689740394e+01 8.5924890262303805e+01 1.5749999989017633e+01 0 0 0 +10349 1 -4.2891315105380706e+01 8.1913761754390578e+01 3.5000000075095126e+00 0 0 0 +10299 1 -4.4013659076929763e+01 7.9694782317082343e+01 3.4999999919288238e+00 0 0 0 +10300 1 -4.4574831151582337e+01 8.1352285545722111e+01 5.2499999523710779e+00 0 0 0 +10351 1 -4.2330143064073837e+01 8.0256258557798333e+01 5.2499999899347936e+00 0 0 0 +10350 1 -4.0646627148917126e+01 8.0817734906640140e+01 3.4999999935668260e+00 0 0 0 +10356 1 -4.0085455115207367e+01 7.9160231652524416e+01 5.2500000054312164e+00 0 0 0 +10403 1 -3.8963111337462777e+01 8.1379211116482907e+01 5.2500000107443690e+00 0 0 0 +10993 1 -4.0646627205160591e+01 8.0817734868444063e+01 7.0000000033552956e+00 0 0 0 +10408 1 -3.6718423458033023e+01 8.0283184373418223e+01 5.2499999881478940e+00 0 0 0 +10457 1 -3.5034907725651472e+01 8.0844660680719741e+01 3.4999999794647851e+00 0 0 0 +10459 1 -3.4473735632536389e+01 7.9187157600838248e+01 5.2499999706777576e+00 0 0 0 +10460 1 -3.3351392028166138e+01 8.1406137229860391e+01 5.2499999487668632e+00 0 0 0 +11100 1 -3.5034907683705832e+01 8.0844660677620084e+01 6.9999999829167585e+00 0 0 0 +10510 1 -2.9423188175757407e+01 8.0871587057707217e+01 3.4999999724104081e+00 0 0 0 +10511 1 -3.1106703975548069e+01 8.0310110498454094e+01 5.2499999238229460e+00 0 0 0 +11153 1 -2.9423188201640912e+01 8.0871587072041962e+01 6.9999999314994144e+00 0 0 0 +10516 1 -2.8862016000337047e+01 7.9214083965232064e+01 5.2499999480537740e+00 0 0 0 +10563 1 -2.7739672182666023e+01 8.1433063613327079e+01 5.2499999474055015e+00 0 0 0 +10568 1 -2.5494984204201248e+01 8.0337037016096033e+01 5.2500000055135523e+00 0 0 0 +10619 1 -2.3250295938647501e+01 7.9241010310042867e+01 5.2500000066933250e+00 0 0 0 +10618 1 -2.1566780021154489e+01 7.9802486675799017e+01 3.4999999845837131e+00 0 0 0 +10620 1 -2.2127953266700882e+01 8.1459990443498555e+01 5.2500000038188697e+00 0 0 0 +10669 1 -2.0444437710980623e+01 8.2021467825561956e+01 3.5000000007602270e+00 0 0 0 +10671 1 -1.9883266892390726e+01 8.0363964176522302e+01 5.2499999783088702e+00 0 0 0 +11261 1 -2.1566780013255467e+01 7.9802486698642724e+01 7.0000000084230196e+00 0 0 0 +11312 1 -2.0444437697712090e+01 8.2021467883553655e+01 6.9999999820161287e+00 0 0 0 +10676 1 -1.7638584096306928e+01 7.9267937617178447e+01 5.2499999787736051e+00 0 0 0 +10723 1 -1.6516220296075723e+01 8.1486917911447151e+01 5.2499999724948321e+00 0 0 0 +10722 1 -1.4832659161002953e+01 8.2048365205530501e+01 3.4999999941071627e+00 0 0 0 +10725 1 -1.5955087793887186e+01 7.9829428687983338e+01 3.4999999869026692e+00 0 0 0 +10728 1 -1.4271515303728830e+01 8.0390903935680171e+01 5.2499999968007698e+00 0 0 0 +11365 1 -1.4832659222384221e+01 8.2048365189219794e+01 6.9999999830585411e+00 0 0 0 +11368 1 -1.5955087825933562e+01 7.9829428692221811e+01 6.9999999796308456e+00 0 0 0 +10778 1 -1.0342364431490548e+01 7.9856004227580428e+01 3.5000000101436424e+00 0 0 0 +10779 1 -1.2026827319839935e+01 7.9294954253209369e+01 5.2500000020322588e+00 0 0 0 +10780 1 -1.0904486429137599e+01 8.1513635107500463e+01 5.2500000229390347e+00 0 0 0 +11421 1 -1.0342364458296492e+01 7.9856004244455860e+01 6.9999999873783683e+00 0 0 0 +10825 1 -9.2228648055673812e+00 8.2075876749883818e+01 3.5000000188432856e+00 0 0 0 +10827 1 -8.6590376492742340e+00 8.0416777411425485e+01 5.2499999886688293e+00 0 0 0 +11468 1 -9.2228647981917415e+00 8.2075876775747318e+01 7.0000000119581074e+00 0 0 0 +10861 1 -3.5610868915433960e+00 8.2098524035155492e+01 3.5000000093165782e+00 0 0 0 +10864 1 -4.7485642568140758e+00 7.9884620931166182e+01 3.5000000040521746e+00 0 0 0 +10832 1 -6.4095233374322191e+00 7.9317123421417392e+01 5.2499999867670111e+00 0 0 0 +10862 1 -5.3078141778190719e+00 8.1549234276901231e+01 5.2499999776593578e+00 0 0 0 +11504 1 -3.5610868693359996e+00 8.2098524044508792e+01 6.9999999473133689e+00 0 0 0 +11507 1 -4.7485642475566268e+00 7.9884620960671555e+01 6.9999999539944344e+00 0 0 0 +10867 1 -3.1035852538141691e+00 8.0492672602944438e+01 5.2499999809767841e+00 0 0 0 +10886 1 -1.0571060494367761e+00 7.9410410890206492e+01 5.2499999848127201e+00 0 0 0 +10298 1 -4.5136003164044354e+01 8.3009788788285192e+01 3.5000000030085592e+00 0 0 0 +10345 1 -4.4013659213594515e+01 8.5228768332904394e+01 3.4999999555591979e+00 0 0 0 +10347 1 -4.3452487154501533e+01 8.3571265031424517e+01 5.2499999481574928e+00 0 0 0 +10346 1 -4.1768971214884417e+01 8.4132741269067296e+01 3.4999999792061134e+00 0 0 0 +10352 1 -4.1207799250155169e+01 8.2475238063783692e+01 5.2499999840316089e+00 0 0 0 +10399 1 -4.0085455445372340e+01 8.4694217657223959e+01 5.2500000290600903e+00 0 0 0 +10401 1 -3.9524283462261884e+01 8.3036714391752554e+01 3.4999999735724527e+00 0 0 0 +11044 1 -3.9524283514237645e+01 8.3036714380445019e+01 7.0000000303060954e+00 0 0 0 +10398 1 -3.8401939753066813e+01 8.5255693962536597e+01 3.5000000097837560e+00 0 0 0 +10404 1 -3.7840767732904865e+01 8.3598190737861771e+01 5.2500000189835943e+00 0 0 0 +10455 1 -3.5596080021796006e+01 8.2502163962460202e+01 5.2499999916770346e+00 0 0 0 +11041 1 -3.8401939743592571e+01 8.5255693958689477e+01 7.0000000388853660e+00 0 0 0 +10454 1 -3.3912564167022509e+01 8.3063640327438577e+01 3.4999999660553769e+00 0 0 0 +10505 1 -3.2790220610782853e+01 8.5282619974934022e+01 3.4999999956811898e+00 0 0 0 +10456 1 -3.4473736272872827e+01 8.4721143486190257e+01 5.2500000053507643e+00 0 0 0 +11097 1 -3.3912564083703700e+01 8.3063640339294807e+01 6.9999999757540703e+00 0 0 0 +11148 1 -3.2790220552789577e+01 8.5282619937896172e+01 6.9999999651012299e+00 0 0 0 +10507 1 -3.2229048340728568e+01 8.3625116734734817e+01 5.2499999627524225e+00 0 0 0 +10512 1 -2.9984360268248235e+01 8.2529090165516024e+01 5.2499999352198676e+00 0 0 0 +10558 1 -2.7178500897614079e+01 8.5309546448233235e+01 3.4999999928103360e+00 0 0 0 +10561 1 -2.8300844460985708e+01 8.3090566757952431e+01 3.4999999848353887e+00 0 0 0 +10559 1 -2.8862016720605741e+01 8.4748069920908748e+01 5.2499999578375958e+00 0 0 0 +10564 1 -2.6617328635350066e+01 8.3652043387528451e+01 5.2499999882559081e+00 0 0 0 +11201 1 -2.7178500914059626e+01 8.5309546439204155e+01 6.9999999945300031e+00 0 0 0 +11204 1 -2.8300844472263535e+01 8.3090566742219622e+01 6.9999999513365525e+00 0 0 0 +10615 1 -2.4372640744083643e+01 8.2556016843437291e+01 5.2500000204161834e+00 0 0 0 +10616 1 -2.3250296553374525e+01 8.4774996471515735e+01 5.2500000195108623e+00 0 0 0 +10667 1 -2.1005607538533582e+01 8.3678969821251457e+01 5.2499999777121316e+00 0 0 0 +10666 1 -1.9322090544869578e+01 8.4240444951019271e+01 3.4999999506955599e+00 0 0 0 +10672 1 -1.8760916557683753e+01 8.2582943070993963e+01 5.2499999833756990e+00 0 0 0 +10719 1 -1.7638584590136560e+01 8.4801923936757390e+01 5.2499999461151594e+00 0 0 0 +11309 1 -1.9322090524010786e+01 8.4240444994916444e+01 6.9999999917149562e+00 0 0 0 +10724 1 -1.5393909004293702e+01 8.3705893116148090e+01 5.2499999834918425e+00 0 0 0 +10773 1 -1.3710492284432068e+01 8.4267427806727511e+01 3.5000000293682838e+00 0 0 0 +10775 1 -1.3149238215171552e+01 8.2609834994758657e+01 5.2499999952919501e+00 0 0 0 +11416 1 -1.3710492348410906e+01 8.4267427798777874e+01 6.9999999963911170e+00 0 0 0 +10776 1 -1.2026827810836588e+01 8.4828940606462197e+01 5.2500000231467405e+00 0 0 0 +10823 1 -9.7824050545348609e+00 8.3733304494184551e+01 5.2500000369457043e+00 0 0 0 +10822 1 -8.0950147588918444e+00 8.4293271704869142e+01 3.5000000272020224e+00 0 0 0 +10828 1 -7.5397002368683506e+00 8.2639146442778639e+01 5.2500000054064193e+00 0 0 0 +11465 1 -8.0950147049420398e+00 8.4293271711405637e+01 7.0000000055197233e+00 0 0 0 +10858 1 -6.4095236571428567e+00 8.4851109570243310e+01 5.2499999887255244e+00 0 0 0 +10863 1 -4.1395815392125765e+00 8.3742452304291803e+01 5.2499999656352792e+00 0 0 0 +10882 1 -2.5187343553039874e+00 8.4301479350612539e+01 3.5000000208515361e+00 0 0 0 +10883 1 -1.7224973954260843e+00 8.2644469191163566e+01 5.2499999735659131e+00 0 0 0 +10884 1 -1.0571062519171637e+00 8.4944396780251978e+01 5.2500000064300414e+00 0 0 0 +11525 1 -2.5187343089525980e+00 8.4301479371736050e+01 6.9999999577306093e+00 0 0 0 +10343 1 -4.2891315394290416e+01 8.7447747804631817e+01 3.5000000121733383e+00 0 0 0 +10344 1 -4.4574831343600700e+01 8.6886271559012883e+01 5.2499999510558037e+00 0 0 0 +10348 1 -4.2330143315157549e+01 8.5790244597324019e+01 5.2499999858726794e+00 0 0 0 +10397 1 -4.0646627513792190e+01 8.6351720948675364e+01 3.5000000218511436e+00 0 0 0 +10396 1 -4.1207799620275573e+01 8.8009224104580028e+01 5.2499999929792418e+00 0 0 0 +10400 1 -3.8963111835446639e+01 8.6913197148305755e+01 5.2500000265019580e+00 0 0 0 +10449 1 -3.7279596245892343e+01 8.7474673589225020e+01 3.4999999919176221e+00 0 0 0 +10451 1 -3.6718424033605999e+01 8.5817170345821211e+01 5.2500000414316341e+00 0 0 0 +10452 1 -3.5596080682689049e+01 8.8036149906072737e+01 5.2500000156820210e+00 0 0 0 +11092 1 -3.7279596223893506e+01 8.7474673550710349e+01 7.0000000665220403e+00 0 0 0 +10504 1 -3.3351392781085174e+01 8.6940123174498567e+01 5.2499999837953073e+00 0 0 0 +10503 1 -3.1667876927558595e+01 8.7501599570200426e+01 3.4999999976448306e+00 0 0 0 +10508 1 -3.1106704729318796e+01 8.5844096406729079e+01 5.2499999571741602e+00 0 0 0 +10556 1 -2.9984361114514968e+01 8.8063076147866937e+01 5.2499999773170636e+00 0 0 0 +11146 1 -3.1667876873219740e+01 8.7501599571902773e+01 6.9999999530422370e+00 0 0 0 +10609 1 -2.6056157156467538e+01 8.7528526218799612e+01 3.5000000257219948e+00 0 0 0 +10560 1 -2.7739672981802581e+01 8.6967049612376925e+01 5.2499999992078381e+00 0 0 0 +11252 1 -2.6056157166720585e+01 8.7528526258824328e+01 7.0000000167282233e+00 0 0 0 +10610 1 -2.3811468978971160e+01 8.6432499689425200e+01 3.4999999994152104e+00 0 0 0 +10611 1 -2.5494984898797952e+01 8.5871023089720921e+01 5.2499999981741698e+00 0 0 0 +10612 1 -2.4372641475328138e+01 8.8090003001403332e+01 5.2500000368662771e+00 0 0 0 +11253 1 -2.3811468959897557e+01 8.6432499759791895e+01 7.0000000507960136e+00 0 0 0 +10664 1 -2.2127953887242313e+01 8.6993976681779003e+01 5.2500000032606406e+00 0 0 0 +10668 1 -1.9883267470184826e+01 8.5897950500406452e+01 5.2499999705005571e+00 0 0 0 +10716 1 -1.8760917071576927e+01 8.8116929391629981e+01 5.2499999369515269e+00 0 0 0 +10717 1 -1.8199754832332200e+01 8.6459430470133157e+01 3.4999999650526523e+00 0 0 0 +10720 1 -1.6516220773227577e+01 8.7020904237692690e+01 5.2499999483489121e+00 0 0 0 +11360 1 -1.8199754842331259e+01 8.6459430540487162e+01 6.9999999491874760e+00 0 0 0 +10771 1 -1.4271515725544402e+01 8.5924890229465063e+01 5.2499999852896595e+00 0 0 0 +10772 1 -1.3149238507150930e+01 8.8143821318970680e+01 5.2500000177181354e+00 0 0 0 +10770 1 -1.2587783938881424e+01 8.6486251341791416e+01 3.5000000224011050e+00 0 0 0 +10820 1 -1.0904486744568201e+01 8.7047621421137052e+01 5.2500000301550491e+00 0 0 0 +11413 1 -1.2587783971316536e+01 8.6486251310010786e+01 7.0000000152998458e+00 0 0 0 +10856 1 -6.9829718052168648e+00 8.6514406519246364e+01 3.5000000248280343e+00 0 0 0 +10824 1 -8.6590379675452702e+00 8.5950763663013760e+01 5.2500000289894917e+00 0 0 0 +10855 1 -7.5397004519011217e+00 8.8173132673008055e+01 5.2499999810313476e+00 0 0 0 +11499 1 -6.9829717171808499e+00 8.6514406528663116e+01 6.9999999786277929e+00 0 0 0 +10859 1 -5.3078143844379726e+00 8.7083220363843495e+01 5.2499999694927109e+00 0 0 0 +10879 1 -1.2264316948251059e+00 8.6579042104518237e+01 3.5000000225670620e+00 0 0 0 +10880 1 -3.1035853604030090e+00 8.6026658533048632e+01 5.2499999792959189e+00 0 0 0 +10881 1 -1.7224976074714622e+00 8.8178455219668209e+01 5.2500000056433143e+00 0 0 0 +11522 1 -1.2264316960168813e+00 8.6579042144842532e+01 7.0000000019872557e+00 0 0 0 +10891 1 -4.3452487658959086e+01 4.4833363891396310e+01 8.7499999793281411e+00 0 0 0 +10905 1 -4.2330143534960598e+01 4.7052343398231955e+01 8.7499999675079820e+00 0 0 0 +11531 1 -4.4013659570757348e+01 4.6490867228385191e+01 1.0499999988408664e+01 0 0 0 +10909 1 -4.0085455539194285e+01 4.5956316306265407e+01 8.7500000089807912e+00 0 0 0 +11550 1 -4.1768971590263028e+01 4.5394840036489242e+01 1.0499999987269108e+01 0 0 0 +11551 1 -3.9524283705222622e+01 4.4298813036099247e+01 1.0499999996918511e+01 0 0 0 +10939 1 -3.7840767626358954e+01 4.4860289283056744e+01 8.7500000175397528e+00 0 0 0 +10940 1 -3.6718423461909865e+01 4.7079268853241665e+01 8.7500000440464998e+00 0 0 0 +11581 1 -3.6157251526532725e+01 4.5421765531884461e+01 1.0500000031231497e+01 0 0 0 +11580 1 -3.8401939508233276e+01 4.6517792535453644e+01 1.0499999994209416e+01 0 0 0 +10981 1 -3.2790219531152779e+01 4.6544718584957891e+01 7.0000000006116627e+00 0 0 0 +10982 1 -3.4473735454113168e+01 4.5983242006355205e+01 8.7500000376905636e+00 0 0 0 +11624 1 -3.2790219454651620e+01 4.6544718568209838e+01 1.0500000016121440e+01 0 0 0 +10984 1 -3.3912563509588246e+01 4.4325738818697111e+01 7.0000000149733026e+00 0 0 0 +11627 1 -3.3912563459902600e+01 4.4325738789449943e+01 1.0500000016187171e+01 0 0 0 +10985 1 -3.2229047418794245e+01 4.4887215298690954e+01 8.7500000083502183e+00 0 0 0 +11034 1 -3.1106703400144919e+01 4.7106195160906843e+01 8.7499999998718145e+00 0 0 0 +11679 1 -3.0545531377657948e+01 4.5448691994080448e+01 1.0499999996320394e+01 0 0 0 +11038 1 -2.8862015450511265e+01 4.6010168713224729e+01 8.7499999576955823e+00 0 0 0 +11088 1 -2.7178499492041304e+01 4.6571645282678389e+01 6.9999999480609958e+00 0 0 0 +11090 1 -2.6617327415489441e+01 4.4914142155018318e+01 8.7499999530593779e+00 0 0 0 +11731 1 -2.7178499485171290e+01 4.6571645227727970e+01 1.0499999987187659e+01 0 0 0 +11037 1 -2.8300843394995763e+01 4.4352665487988233e+01 6.9999999276875506e+00 0 0 0 +11680 1 -2.8300843367370987e+01 4.4352665464514061e+01 1.0499999982729177e+01 0 0 0 +11091 1 -2.5494983357638869e+01 4.7133121823530907e+01 8.7499999463612887e+00 0 0 0 +11142 1 -2.3250295049400520e+01 4.6037095092887796e+01 8.7499999880215338e+00 0 0 0 +11732 1 -2.4933811334926212e+01 4.5475618683537981e+01 1.0499999980133827e+01 0 0 0 +11145 1 -2.1005606075539170e+01 4.4941068490603740e+01 8.7500000154455506e+00 0 0 0 +11194 1 -1.9883265777085075e+01 4.7160048944501177e+01 8.7500000304080334e+00 0 0 0 +11196 1 -1.9322088975587185e+01 4.5502543601042632e+01 7.0000000245866438e+00 0 0 0 +11198 1 -1.7638582991302744e+01 4.6064022592934371e+01 8.7500000365634012e+00 0 0 0 +11839 1 -1.9322088979617725e+01 4.5502543642384090e+01 1.0500000024477020e+01 0 0 0 +11249 1 -1.3710491042390441e+01 4.5529527018496857e+01 6.9999999763878851e+00 0 0 0 +11250 1 -1.5393907599602867e+01 4.4967992170953600e+01 8.7500000161294782e+00 0 0 0 +11251 1 -1.4271514350956600e+01 4.7186989125459910e+01 8.7499999943953259e+00 0 0 0 +11892 1 -1.3710490994937349e+01 4.5529527022728765e+01 1.0500000028955448e+01 0 0 0 +11302 1 -1.2026826632555087e+01 4.6091040016467076e+01 8.7499999581066543e+00 0 0 0 +11305 1 -9.7824041520579410e+00 4.4995404539813720e+01 8.7499999550931964e+00 0 0 0 +11356 1 -8.0950140124928751e+00 4.5555372149166196e+01 6.9999999345574029e+00 0 0 0 +11354 1 -8.6590371705068332e+00 4.7212863610016825e+01 8.7499999475313288e+00 0 0 0 +11999 1 -8.0950140240028716e+00 4.5555372074474256e+01 1.0499999972002605e+01 0 0 0 +11358 1 -6.4095231205379068e+00 4.6113210342503756e+01 8.7499999627268057e+00 0 0 0 +11410 1 -4.1395811115414043e+00 4.5004553871134483e+01 8.7499999708907303e+00 0 0 0 +11409 1 -2.5187339507176358e+00 4.5563581246725064e+01 7.0000000084143492e+00 0 0 0 +11411 1 -3.1035850674103758e+00 4.7288759988952371e+01 8.7499999844441252e+00 0 0 0 +11460 1 -1.0571059848551139e+00 4.6206498935739177e+01 8.7500000271534777e+00 0 0 0 +12052 1 -2.5187339795881836e+00 4.5563581263542559e+01 1.0499999929789562e+01 0 0 0 +10889 1 -4.4574831573980291e+01 4.8148370489199863e+01 8.7499999684552048e+00 0 0 0 +10901 1 -4.3452487363932875e+01 5.0367350009605296e+01 8.7499999649887386e+00 0 0 0 +11546 1 -4.2891315472849953e+01 4.8709846683232705e+01 1.0499999990433116e+01 0 0 0 +10906 1 -4.1207799449134406e+01 4.9271322918108815e+01 8.7499999765727239e+00 0 0 0 +10935 1 -3.8963111448075317e+01 4.8175295772851527e+01 8.7500000084348279e+00 0 0 0 +11547 1 -4.0646627489760625e+01 4.7613819680368550e+01 1.0500000002436002e+01 0 0 0 +11576 1 -3.9524283494066125e+01 4.9832799113189957e+01 1.0500000007790222e+01 0 0 0 +10936 1 -3.7840767539242350e+01 5.0394275356443629e+01 8.7500000212151416e+00 0 0 0 +10978 1 -3.5596079642528267e+01 4.9298248472752704e+01 8.7500000470464752e+00 0 0 0 +11577 1 -3.7279595505476834e+01 4.8736772108528918e+01 1.0500000002825296e+01 0 0 0 +10983 1 -3.3351391531968254e+01 4.8202221778628683e+01 8.7500000087927763e+00 0 0 0 +11623 1 -3.5034907446009953e+01 4.7640745161658835e+01 1.0500000034706595e+01 0 0 0 +11620 1 -3.3912563538352927e+01 4.9859724901904549e+01 1.0500000001362928e+01 0 0 0 +11030 1 -3.2229047549264067e+01 5.0421201464015063e+01 8.7499999952002430e+00 0 0 0 +11032 1 -3.1667875445569877e+01 4.8763698337821332e+01 6.9999999987755048e+00 0 0 0 +11035 1 -2.9984359437805416e+01 4.9325175013322117e+01 8.7499999781881002e+00 0 0 0 +11675 1 -3.1667875379840495e+01 4.8763698282458456e+01 1.0500000007494432e+01 0 0 0 +11085 1 -2.6056155415797019e+01 4.8790625031169874e+01 6.9999999605106629e+00 0 0 0 +11086 1 -2.7739671382547758e+01 4.8229148493134105e+01 8.7499999648166611e+00 0 0 0 +11087 1 -2.6617327561356912e+01 5.0448128309936877e+01 8.7499999969312032e+00 0 0 0 +11728 1 -2.6056155443891686e+01 4.8790625046685214e+01 1.0500000000803542e+01 0 0 0 +11140 1 -2.3811467285620875e+01 4.7694598312658336e+01 7.0000000065104819e+00 0 0 0 +11137 1 -2.2689123600973787e+01 4.9913578343161802e+01 7.0000000218529514e+00 0 0 0 +11138 1 -2.4372639645461820e+01 4.9352101629661448e+01 8.7499999751296738e+00 0 0 0 +11783 1 -2.3811467312526151e+01 4.7694598312325624e+01 1.0499999992099884e+01 0 0 0 +11780 1 -2.2689123611004355e+01 4.9913578289325990e+01 1.0500000009628879e+01 0 0 0 +11143 1 -2.2127952158043662e+01 4.8256075126184108e+01 8.7500000274630843e+00 0 0 0 +11190 1 -2.1005606237012930e+01 5.0475054368241963e+01 8.7500000318408393e+00 0 0 0 +11193 1 -1.8199753142534199e+01 4.7721528928469070e+01 7.0000000131525315e+00 0 0 0 +11244 1 -1.7077391209887324e+01 4.9940497483920289e+01 7.0000000164788680e+00 0 0 0 +11195 1 -1.8760915315574987e+01 4.9379027665281228e+01 8.7500000180560882e+00 0 0 0 +11246 1 -1.6516219138142379e+01 4.8283002755662380e+01 8.7499999965436590e+00 0 0 0 +11836 1 -1.8199753155322707e+01 4.7721528968477656e+01 1.0500000042799464e+01 0 0 0 +11887 1 -1.7077391156319916e+01 4.9940497537043861e+01 1.0500000011624834e+01 0 0 0 +11247 1 -1.5393907865299324e+01 5.0501977733242356e+01 8.7499999740997794e+00 0 0 0 +11298 1 -1.3149237275974137e+01 4.9405920033842477e+01 8.7499999753737523e+00 0 0 0 +11297 1 -1.1466172604070561e+01 4.9967616141265047e+01 6.9999999337417549e+00 0 0 0 +11300 1 -1.2587782761092644e+01 4.7748350385918990e+01 6.9999999467196652e+00 0 0 0 +11303 1 -1.0904485717948141e+01 4.8309720678979566e+01 8.7499999356983373e+00 0 0 0 +11350 1 -9.7824042697704243e+00 5.0529389835774104e+01 8.7499999336828118e+00 0 0 0 +11940 1 -1.1466172586937279e+01 4.9967616131958181e+01 1.0499999976709061e+01 0 0 0 +11943 1 -1.2587782717217692e+01 4.7748350410595442e+01 1.0499999999912127e+01 0 0 0 +11353 1 -6.9829711118622582e+00 4.7776506841210370e+01 6.9999999656178247e+00 0 0 0 +11355 1 -7.5396997238869847e+00 4.9435232461570166e+01 8.7499999358909584e+00 0 0 0 +11996 1 -6.9829711662510610e+00 4.7776506793602621e+01 1.0499999965926643e+01 0 0 0 +11404 1 -5.8404166467753527e+00 4.9992526382304369e+01 6.9999999712015910e+00 0 0 0 +11406 1 -5.3078138983877752e+00 4.8345321012541525e+01 8.7499999871059586e+00 0 0 0 +11407 1 -4.1395810403441224e+00 5.0538538841720523e+01 8.7500000267169309e+00 0 0 0 +12047 1 -5.8404167061585026e+00 4.9992526316662342e+01 1.0499999977345643e+01 0 0 0 +12701 1 -1.3149238488531449e+01 8.8143821344042095e+01 1.5749999966877420e+01 0 0 0 +11459 1 -1.2264313978909482e+00 4.7841143933924535e+01 7.0000000210971924e+00 0 0 0 +11457 1 -1.7224971502143769e+00 4.9440556541827739e+01 8.7499999986115000e+00 0 0 0 +12646 1 -1.8199754787772850e+01 8.6459430564540639e+01 1.4000000021716897e+01 0 0 0 +12102 1 -1.2264314253968915e+00 4.7841144024196090e+01 1.0499999963965760e+01 0 0 0 +10897 1 -4.4574831323389454e+01 5.3682356442316724e+01 8.7499999695683073e+00 0 0 0 +10902 1 -4.2330143309019618e+01 5.2586329486834941e+01 8.7499999883415391e+00 0 0 0 +11542 1 -4.4013659324195444e+01 5.2024853301503917e+01 1.0499999988885726e+01 0 0 0 +10931 1 -4.0085455374051747e+01 5.1490302442883092e+01 8.7500000081323943e+00 0 0 0 +10932 1 -3.8963111394000194e+01 5.3709281882810636e+01 8.7500000244007836e+00 0 0 0 +11543 1 -4.1768971328772594e+01 5.0928826167251152e+01 1.0499999981176876e+01 0 0 0 +11572 1 -4.0646627320336812e+01 5.3147805766279106e+01 1.0499999996644947e+01 0 0 0 +10974 1 -3.6718423454163819e+01 5.2613254926093035e+01 8.7500000096903872e+00 0 0 0 +11573 1 -3.8401939431690224e+01 5.2051778644782729e+01 1.0500000005211630e+01 0 0 0 +11619 1 -3.6157251549288432e+01 5.0955751615737398e+01 1.0499999983051174e+01 0 0 0 +10979 1 -3.4473735573035349e+01 5.1517228075697247e+01 8.7500000180741484e+00 0 0 0 +11026 1 -3.3351391670967239e+01 5.3736207898504382e+01 8.7499999977924521e+00 0 0 0 +11616 1 -3.5034907502447119e+01 5.3174731223985113e+01 1.0499999985473778e+01 0 0 0 +11671 1 -3.2790219615813143e+01 5.2078704666010729e+01 1.0499999990037157e+01 0 0 0 +11029 1 -3.0545531581429493e+01 5.0982678189221879e+01 6.9999999645010478e+00 0 0 0 +11031 1 -3.1106703574815537e+01 5.2640181286500535e+01 8.7499999840288307e+00 0 0 0 +11080 1 -2.9423187669939924e+01 5.3201657972814722e+01 6.9999999712136320e+00 0 0 0 +11672 1 -3.0545531516740667e+01 5.0982678167002597e+01 1.0500000003946591e+01 0 0 0 +11723 1 -2.9423187634653424e+01 5.3201658000285931e+01 1.0499999988578331e+01 0 0 0 +11082 1 -2.8862015555631768e+01 5.1544154878536510e+01 8.7499999682627507e+00 0 0 0 +11083 1 -2.7739671550620709e+01 5.3763134602496365e+01 8.7499999659507086e+00 0 0 0 +11134 1 -2.5494983532657702e+01 5.2667107940427584e+01 8.7500000053605280e+00 0 0 0 +11136 1 -2.4933811447155787e+01 5.1009604771689496e+01 6.9999999979492324e+00 0 0 0 +11139 1 -2.3250295222000432e+01 5.1571081097982400e+01 8.7500000014333992e+00 0 0 0 +11779 1 -2.4933811473155650e+01 5.1009604778130239e+01 1.0499999994582408e+01 0 0 0 +11188 1 -2.1566779226822007e+01 5.2132557361888047e+01 7.0000000234323103e+00 0 0 0 +11186 1 -2.2127952400003071e+01 5.3790061094501475e+01 8.7500000112923466e+00 0 0 0 +11191 1 -1.9883266044063511e+01 5.2694034777906197e+01 8.7500000189620604e+00 0 0 0 +11831 1 -2.1566779235059464e+01 5.2132557393471110e+01 1.0500000027638626e+01 0 0 0 +11242 1 -1.7638583305028529e+01 5.1598008299371472e+01 8.7500000105818820e+00 0 0 0 +11243 1 -1.6516219390633371e+01 5.3816988396493954e+01 8.7500000107659002e+00 0 0 0 +11241 1 -1.5955087058066418e+01 5.2159499352246144e+01 6.9999999867994918e+00 0 0 0 +11294 1 -1.4271514559141023e+01 5.2720974633281962e+01 8.7499999620609081e+00 0 0 0 +11884 1 -1.5955087020221349e+01 5.2159499401739886e+01 1.0500000002027358e+01 0 0 0 +11348 1 -1.0342363857433895e+01 5.2186075503145865e+01 6.9999999429129494e+00 0 0 0 +11299 1 -1.2026826769224538e+01 5.1625025403985482e+01 8.7499999384427731e+00 0 0 0 +11346 1 -1.0904485643970597e+01 5.3843705956880193e+01 8.7499999342469810e+00 0 0 0 +11991 1 -1.0342363886476294e+01 5.2186075460903751e+01 1.0499999956122839e+01 0 0 0 +11351 1 -8.6590370734351367e+00 5.2746848772856737e+01 8.7499999441526715e+00 0 0 0 +11401 1 -4.7485639187134714e+00 5.2214693085364559e+01 6.9999999966275164e+00 0 0 0 +11402 1 -6.4095229929155906e+00 5.1647195356253150e+01 8.7499999567502993e+00 0 0 0 +11403 1 -5.3078136994930212e+00 5.3879305965785463e+01 8.7499999812855496e+00 0 0 0 +12044 1 -4.7485639514543223e+00 5.2214693045318512e+01 1.0500000001572436e+01 0 0 0 +11454 1 -3.1035850181440257e+00 5.2822744882691481e+01 8.7500000123934996e+00 0 0 0 +11458 1 -1.0571059217359193e+00 5.1740483885982449e+01 8.7499999823510741e+00 0 0 0 +10898 1 -4.3452487215037060e+01 5.5901335942497134e+01 8.7499999930617065e+00 0 0 0 +11539 1 -4.2891315252508619e+01 5.4243832654048354e+01 1.0500000011695999e+01 0 0 0 +11538 1 -4.5136003284937139e+01 5.5339859607019363e+01 1.0499999999509784e+01 0 0 0 +10927 1 -4.1207799276481850e+01 5.4805308956630086e+01 8.7500000291693514e+00 0 0 0 +11569 1 -3.9524283413026787e+01 5.5366785218956032e+01 1.0500000003593804e+01 0 0 0 +11568 1 -4.1768971191299492e+01 5.6462812165388080e+01 1.0500000029053295e+01 0 0 0 +10970 1 -3.7840767506644106e+01 5.5928261468876975e+01 8.7500000121592869e+00 0 0 0 +10975 1 -3.5596079706937509e+01 5.4832234562579188e+01 8.7500000022896174e+00 0 0 0 +11615 1 -3.7279595518186333e+01 5.4270758220214610e+01 1.0500000008281146e+01 0 0 0 +11612 1 -3.6157251546824959e+01 5.6489737708692111e+01 1.0499999995998627e+01 0 0 0 +11024 1 -3.3912563693548933e+01 5.5393711005240441e+01 6.9999999980455483e+00 0 0 0 +11667 1 -3.3912563627778994e+01 5.5393710959821917e+01 1.0499999971176416e+01 0 0 0 +11027 1 -3.2229047673510479e+01 5.5955187516414583e+01 8.7499999896291190e+00 0 0 0 +11078 1 -2.9984359606702434e+01 5.4859161143699318e+01 8.7499999742484356e+00 0 0 0 +11668 1 -3.1667875546364193e+01 5.4297684411043136e+01 1.0499999979099655e+01 0 0 0 +11077 1 -2.8300843683653603e+01 5.5420637806822086e+01 6.9999999595923272e+00 0 0 0 +11130 1 -2.6617327730039690e+01 5.5982114370534816e+01 8.7499999698030972e+00 0 0 0 +11720 1 -2.8300843668196713e+01 5.5420637777902229e+01 1.0499999988193601e+01 0 0 0 +11135 1 -2.4372639866878465e+01 5.4886087648412705e+01 8.7500000139581253e+00 0 0 0 +11772 1 -2.4933811641304121e+01 5.6543590765226512e+01 1.0499999992726639e+01 0 0 0 +11185 1 -2.0444436774821202e+01 5.4351538322433711e+01 7.0000000163922369e+00 0 0 0 +11187 1 -2.1005606467641076e+01 5.6009040203960218e+01 8.7499999980130045e+00 0 0 0 +11828 1 -2.0444436763658558e+01 5.4351538353373165e+01 1.0500000020547260e+01 0 0 0 +11236 1 -1.9322089395253293e+01 5.6570515161081190e+01 7.0000000108849516e+00 0 0 0 +11238 1 -1.8760915548684011e+01 5.4913013417176309e+01 8.7500000347762352e+00 0 0 0 +11879 1 -1.9322089386462938e+01 5.6570515176835713e+01 1.0500000029415649e+01 0 0 0 +11292 1 -1.4832658284856254e+01 5.4378435635948186e+01 7.0000000054651741e+00 0 0 0 +11289 1 -1.3710491239330432e+01 5.6597497968303017e+01 7.0000000086550367e+00 0 0 0 +11290 1 -1.5393907948040059e+01 5.6035963291716662e+01 8.7500000051041464e+00 0 0 0 +11295 1 -1.3149237266312486e+01 5.4939905435231395e+01 8.7499999444157375e+00 0 0 0 +11932 1 -1.3710491242123329e+01 5.6597497983447681e+01 1.0499999989107836e+01 0 0 0 +11935 1 -1.4832658279612298e+01 5.4378435681011801e+01 1.0499999965102580e+01 0 0 0 +11347 1 -9.7824040937398298e+00 5.6063375098689356e+01 8.7499999633816685e+00 0 0 0 +11345 1 -9.2228639949722186e+00 5.4405947761911705e+01 6.9999999522552958e+00 0 0 0 +11396 1 -8.0950138415974759e+00 5.6623342515178081e+01 6.9999999496260612e+00 0 0 0 +11398 1 -7.5396995356490510e+00 5.4969217586519065e+01 8.7499999909849961e+00 0 0 0 +11988 1 -9.2228640323632245e+00 5.4405947721614240e+01 1.0499999983376203e+01 0 0 0 +12039 1 -8.0950138556025397e+00 5.6623342442130557e+01 1.0499999995784600e+01 0 0 0 +11452 1 -3.5610864112303759e+00 5.4428595957155835e+01 7.0000000118883241e+00 0 0 0 +11450 1 -4.1395809495708615e+00 5.6072523793778771e+01 8.7499999751075208e+00 0 0 0 +12095 1 -3.5610864218487324e+00 5.4428595917789949e+01 1.0499999995346743e+01 0 0 0 +11449 1 -2.5187338375736132e+00 5.6631551052361154e+01 6.9999999873879482e+00 0 0 0 +11455 1 -1.7224971065309356e+00 5.4974541352043772e+01 8.7499999788006875e+00 0 0 0 +12092 1 -2.5187337744439580e+00 5.6631551081310292e+01 1.0499999998691870e+01 0 0 0 +10894 1 -4.4574831234391446e+01 5.9216342218648066e+01 8.7499999968182181e+00 0 0 0 +10923 1 -4.2330143191876992e+01 5.8120315384702074e+01 8.7500000078944780e+00 0 0 0 +11536 1 -4.4013659185627276e+01 5.7558839130736189e+01 1.0500000003107804e+01 0 0 0 +11564 1 -4.2891315196553492e+01 5.9777818512099472e+01 1.0500000009946211e+01 0 0 0 +10928 1 -4.0085455266825072e+01 5.7024288471462398e+01 8.7500000335334871e+00 0 0 0 +10966 1 -3.8963111269088067e+01 5.9243267913757826e+01 8.7500000196342373e+00 0 0 0 +11565 1 -4.0646627211538004e+01 5.8681791750284944e+01 1.0500000030000537e+01 0 0 0 +10971 1 -3.6718423429294489e+01 5.8147241023398884e+01 8.7500000269947620e+00 0 0 0 +11608 1 -3.7279595395979868e+01 5.9804744256638493e+01 1.0500000004125024e+01 0 0 0 +11611 1 -3.8401939336080282e+01 5.7585764714610079e+01 1.0499999992694836e+01 0 0 0 +11021 1 -3.2790219748205267e+01 5.7612690758643929e+01 6.9999999872400478e+00 0 0 0 +11022 1 -3.4473735620191931e+01 5.7051214176800833e+01 8.7499999974102156e+00 0 0 0 +11023 1 -3.3351391691591488e+01 5.9270193884472519e+01 8.7499999788774563e+00 0 0 0 +11664 1 -3.2790219690732059e+01 5.7612690713325485e+01 1.0499999987191137e+01 0 0 0 +11663 1 -3.5034907516744809e+01 5.8708717287830602e+01 1.0499999999795749e+01 0 0 0 +11072 1 -3.1667875642784740e+01 5.9831670386625788e+01 6.9999999749518826e+00 0 0 0 +11074 1 -3.1106703675357309e+01 5.8174167310676097e+01 8.7499999769405061e+00 0 0 0 +11715 1 -3.1667875593617659e+01 5.9831670322035123e+01 1.0499999995312921e+01 0 0 0 +11125 1 -2.6056155691561088e+01 5.9858596966479290e+01 6.9999999568081783e+00 0 0 0 +11079 1 -2.8862015755358996e+01 5.7078140926522323e+01 8.7499999574454428e+00 0 0 0 +11126 1 -2.7739671654338910e+01 5.9297120532887227e+01 8.7499999638028676e+00 0 0 0 +11128 1 -2.7178499796290367e+01 5.7639617405099138e+01 6.9999999608542867e+00 0 0 0 +11768 1 -2.6056155730025960e+01 5.9858596998552891e+01 1.0499999974667688e+01 0 0 0 +11771 1 -2.7178499789731205e+01 5.7639617374412971e+01 1.0499999985261550e+01 0 0 0 +11131 1 -2.5494983671478764e+01 5.8201093844845985e+01 8.7499999363200622e+00 0 0 0 +11180 1 -2.3811467637030638e+01 5.8762570175605369e+01 6.9999999818941454e+00 0 0 0 +11182 1 -2.3250295411162561e+01 5.7105066994920463e+01 8.7499999933781840e+00 0 0 0 +11823 1 -2.3811467635713097e+01 5.8762570203451752e+01 1.0499999988736633e+01 0 0 0 +11183 1 -2.2127952496065149e+01 5.9324046855074215e+01 8.7500000144642414e+00 0 0 0 +11234 1 -1.9883266173375965e+01 5.8228020535242514e+01 8.7500000211146247e+00 0 0 0 +11233 1 -1.8199753485869508e+01 5.8789500378910695e+01 7.0000000202935180e+00 0 0 0 +11239 1 -1.7638583389736453e+01 5.7131993973526896e+01 8.7500000313529469e+00 0 0 0 +11286 1 -1.6516219442180720e+01 5.9350974035954295e+01 8.7500000220391083e+00 0 0 0 +11876 1 -1.8199753534965655e+01 5.8789500409679135e+01 1.0500000032034801e+01 0 0 0 +11291 1 -1.4271514549423582e+01 5.8254960161572363e+01 8.7500000193172180e+00 0 0 0 +11340 1 -1.2587782795603461e+01 5.8816321253207477e+01 6.9999999870422158e+00 0 0 0 +11342 1 -1.2026826700456269e+01 5.7159010805287473e+01 8.7499999619347264e+00 0 0 0 +11343 1 -1.0904485594847802e+01 5.9377691407949030e+01 8.7499999667926556e+00 0 0 0 +11983 1 -1.2587782787277355e+01 5.8816321287745211e+01 1.0499999986172535e+01 0 0 0 +11393 1 -6.9829708414452814e+00 5.8844477116824024e+01 6.9999999719473154e+00 0 0 0 +11394 1 -8.6590369366172180e+00 5.8280834067426490e+01 8.7499999691482895e+00 0 0 0 +12036 1 -6.9829708394803109e+00 5.8844477078292094e+01 1.0499999989269206e+01 0 0 0 +11399 1 -6.4095228713019790e+00 5.7181180517243078e+01 8.7499999969031972e+00 0 0 0 +11446 1 -5.3078135912846047e+00 5.9413291116754550e+01 8.7500000067891257e+00 0 0 0 +11496 1 -1.2264313196908563e+00 5.8909113627612840e+01 6.9999999893086020e+00 0 0 0 +11451 1 -3.1035848948502966e+00 5.8356729824769779e+01 8.7499999836382507e+00 0 0 0 +11497 1 -1.0571059359825099e+00 5.7274468677926620e+01 8.7500000087790326e+00 0 0 0 +12139 1 -1.2264313264754938e+00 5.8909113681358463e+01 1.0499999988780658e+01 0 0 0 +11535 1 -4.5136003230187086e+01 6.0873845326529199e+01 1.0500000007361169e+01 0 0 0 +10919 1 -4.3452487151672869e+01 6.1435321701865313e+01 8.7499999709741836e+00 0 0 0 +11560 1 -4.4013659185988281e+01 6.3092824872644357e+01 1.0499999982451524e+01 0 0 0 +10924 1 -4.1207799205874757e+01 6.0339294870496389e+01 8.7499999944857283e+00 0 0 0 +10962 1 -4.0085455170559676e+01 6.2558274345923280e+01 8.7500000128730147e+00 0 0 0 +11561 1 -4.1768971130631115e+01 6.1996797980297671e+01 1.0499999983272161e+01 0 0 0 +11607 1 -3.9524283283854274e+01 6.0900771158314811e+01 1.0500000007894217e+01 0 0 0 +10967 1 -3.7840767390458026e+01 6.1462247455693110e+01 8.7500000144933487e+00 0 0 0 +11018 1 -3.5596079602496218e+01 6.0366220588041344e+01 8.7500000338234276e+00 0 0 0 +11659 1 -3.6157251414196757e+01 6.2023723690960537e+01 1.0500000001340521e+01 0 0 0 +11604 1 -3.8401939244035383e+01 6.3119750642532750e+01 1.0500000003874440e+01 0 0 0 +11019 1 -3.4473735490042756e+01 6.2585200072857141e+01 8.7500000169387242e+00 0 0 0 +11660 1 -3.3912563595162901e+01 6.0927696939310003e+01 1.0499999997240021e+01 0 0 0 +11711 1 -3.2790219638715087e+01 6.3146676587596062e+01 1.0500000003496840e+01 0 0 0 +11069 1 -3.0545531717924753e+01 6.2050650094021506e+01 6.9999999482520145e+00 0 0 0 +11070 1 -3.2229047667875655e+01 6.1489173440880954e+01 8.7499999729224527e+00 0 0 0 +11075 1 -2.9984359661343561e+01 6.0393147010948191e+01 8.7499999609340264e+00 0 0 0 +11712 1 -3.0545531666380054e+01 6.2050650039713162e+01 1.0500000001188624e+01 0 0 0 +11122 1 -2.8862015734896314e+01 6.2612126693665111e+01 8.7499999544151610e+00 0 0 0 +11127 1 -2.6617327790192341e+01 6.1516100144992215e+01 8.7499999614339892e+00 0 0 0 +11176 1 -2.4933811686407733e+01 6.2077576510048630e+01 6.9999999732194471e+00 0 0 0 +11178 1 -2.4372639957436341e+01 6.0420073437077903e+01 8.7499999481154909e+00 0 0 0 +11179 1 -2.3250295479018586e+01 6.2639052765225891e+01 8.7499999509877711e+00 0 0 0 +11177 1 -2.2689123901308403e+01 6.0981550038686301e+01 6.9999999893402514e+00 0 0 0 +11819 1 -2.4933811738256782e+01 6.2077576542373890e+01 1.0499999958977842e+01 0 0 0 +11820 1 -2.2689123912310084e+01 6.0981550008921765e+01 1.0499999991848217e+01 0 0 0 +11228 1 -2.1566779463333937e+01 6.3200528936853630e+01 6.9999999954171193e+00 0 0 0 +11230 1 -2.1005606543216526e+01 6.1543025966188765e+01 8.7500000064091275e+00 0 0 0 +11871 1 -2.1566779496655251e+01 6.3200528989748456e+01 1.0499999986507797e+01 0 0 0 +11235 1 -1.8760915637395239e+01 6.0446999156990209e+01 8.7500000142949759e+00 0 0 0 +11282 1 -1.7638583525205142e+01 6.2665979724119723e+01 8.7500000217884963e+00 0 0 0 +11284 1 -1.7077391451735565e+01 6.1008468861812148e+01 7.0000000300555678e+00 0 0 0 +11927 1 -1.7077391439515079e+01 6.1008468901596906e+01 1.0500000025562251e+01 0 0 0 +11281 1 -1.5955087188851218e+01 6.3227470652944639e+01 7.0000000050745728e+00 0 0 0 +11287 1 -1.5393908016444643e+01 6.1569948977406263e+01 8.7500000185956672e+00 0 0 0 +11338 1 -1.3149237309434334e+01 6.0473891010572373e+01 8.7500000273628284e+00 0 0 0 +11924 1 -1.5955087174449941e+01 6.3227470735056784e+01 1.0500000030593261e+01 0 0 0 +11337 1 -1.1466172510792752e+01 6.1035586956599928e+01 6.9999999626313461e+00 0 0 0 +11339 1 -1.2026826699092933e+01 6.2692996368546730e+01 8.7499999969266860e+00 0 0 0 +11388 1 -1.0342363722958288e+01 6.3254046334086823e+01 6.9999999597934393e+00 0 0 0 +11390 1 -9.7824040435627584e+00 6.1597360536059149e+01 8.7499999511422502e+00 0 0 0 +11980 1 -1.1466172478590131e+01 6.1035586950225849e+01 1.0499999992790000e+01 0 0 0 +12031 1 -1.0342363702796682e+01 6.3254046314561258e+01 1.0499999970023884e+01 0 0 0 +11395 1 -7.5396993992748316e+00 6.0503202902332589e+01 8.7499999439101348e+00 0 0 0 +11441 1 -4.7485636432464844e+00 6.3282663410313702e+01 6.9999999722759183e+00 0 0 0 +11442 1 -6.4095226788165158e+00 6.2715165827271981e+01 8.7499999561919903e+00 0 0 0 +11444 1 -5.8404163387071417e+00 6.1060496642315734e+01 6.9999999609763313e+00 0 0 0 +11447 1 -4.1395807390781894e+00 6.1606508933586326e+01 8.7500000245471927e+00 0 0 0 +12084 1 -4.7485636239016351e+00 6.3282663381435121e+01 1.0499999985566788e+01 0 0 0 +12087 1 -5.8404163254224892e+00 6.1060496594543331e+01 1.0499999986418400e+01 0 0 0 +17405 1 -1.7923967683312179e-13 6.1292832266252937e+01 6.9999999980813596e+00 0 0 0 +18045 1 -9.3598282030387105e-14 6.1292832374596856e+01 1.0500000028871243e+01 0 0 0 +11494 1 -1.7224968832138230e+00 6.0508526256174235e+01 8.7499999873660208e+00 0 0 0 +11495 1 -1.0571060230826368e+00 6.2808453704039330e+01 8.7499999636482979e+00 0 0 0 +10915 1 -4.4574831272079521e+01 6.4750327897104270e+01 8.7499999528234369e+00 0 0 0 +10920 1 -4.2330143172619856e+01 6.3654301137442800e+01 8.7499999769711803e+00 0 0 0 +11557 1 -4.2891315183211368e+01 6.5311804153414556e+01 1.0499999984234087e+01 0 0 0 +10958 1 -4.1207799159732879e+01 6.5873280572040727e+01 8.7499999863849887e+00 0 0 0 +10963 1 -3.8963111156721908e+01 6.4777253734245775e+01 8.7500000185264675e+00 0 0 0 +11603 1 -4.0646627151279901e+01 6.4215777522908979e+01 1.0499999991796392e+01 0 0 0 +11014 1 -3.6718423270344395e+01 6.3681226945862051e+01 8.7499999999779341e+00 0 0 0 +11015 1 -3.5596079487439297e+01 6.5900206469205983e+01 8.7499999900406618e+00 0 0 0 +11655 1 -3.7279595305248115e+01 6.5338730149592266e+01 1.0500000010254551e+01 0 0 0 +11013 1 -3.5034907410373997e+01 6.4242703208113682e+01 6.9999999991930979e+00 0 0 0 +11066 1 -3.3351391563422567e+01 6.4804179761558942e+01 8.7500000162810689e+00 0 0 0 +11656 1 -3.5034907345285227e+01 6.4242703187736112e+01 1.0500000023165667e+01 0 0 0 +11120 1 -2.9423187745247017e+01 6.4269629700502591e+01 6.9999999505083146e+00 0 0 0 +11071 1 -3.1106703625146011e+01 6.3708153097426326e+01 8.7499999703301334e+00 0 0 0 +11118 1 -2.9984359613594464e+01 6.5927132781946142e+01 8.7499999647334583e+00 0 0 0 +11763 1 -2.9423187734422378e+01 6.4269629697669984e+01 1.0499999979458160e+01 0 0 0 +11123 1 -2.7739671652947845e+01 6.4831106247677923e+01 8.7499999470200418e+00 0 0 0 +11174 1 -2.5494983709680348e+01 6.3735079602624246e+01 8.7499999770698782e+00 0 0 0 +11175 1 -2.4372640001194011e+01 6.5954059189873206e+01 8.7499999898983898e+00 0 0 0 +11225 1 -2.0444436952373490e+01 6.5419509839566572e+01 6.9999999902099708e+00 0 0 0 +11226 1 -2.2127952602274071e+01 6.4858032644477447e+01 8.7499999744112387e+00 0 0 0 +11231 1 -1.9883266273032916e+01 6.3762006302201989e+01 8.7500000078925044e+00 0 0 0 +11868 1 -2.0444436948204253e+01 6.5419509881180048e+01 1.0499999996112816e+01 0 0 0 +11278 1 -1.8760915728261882e+01 6.5980984918166513e+01 8.7500000252312216e+00 0 0 0 +11283 1 -1.6516219549765800e+01 6.4884959808296969e+01 8.7500000422095070e+00 0 0 0 +11332 1 -1.4832658376822126e+01 6.5446406965867652e+01 7.0000000143846233e+00 0 0 0 +11334 1 -1.4271514613878463e+01 6.3788945832430514e+01 8.7500000236669457e+00 0 0 0 +11335 1 -1.3149237307757748e+01 6.6007876674305848e+01 8.7499999844488325e+00 0 0 0 +11975 1 -1.4832658372623888e+01 6.5446406989104759e+01 1.0500000008046397e+01 0 0 0 +11386 1 -1.0904485562243041e+01 6.4911676950630095e+01 8.7499999792912089e+00 0 0 0 +11385 1 -9.2228638702290571e+00 6.5473918672143213e+01 6.9999999551291934e+00 0 0 0 +11391 1 -8.6590368410674490e+00 6.3814819536510718e+01 8.7499999572335394e+00 0 0 0 +11438 1 -7.5396993158374750e+00 6.6037188434170758e+01 8.7499999740954930e+00 0 0 0 +12028 1 -9.2228638681291226e+00 6.5473918626338914e+01 1.0499999972804757e+01 0 0 0 +11443 1 -5.3078134596096920e+00 6.4947276560227039e+01 8.7499999602780747e+00 0 0 0 +11488 1 -3.5610862001779022e+00 6.5496566400689488e+01 6.9999999858517086e+00 0 0 0 +12131 1 -3.5610861740454305e+00 6.5496566383045149e+01 1.0499999986639949e+01 0 0 0 +11490 1 -3.1035847625348607e+00 6.3890715054798875e+01 8.7499999905981145e+00 0 0 0 +11491 1 -1.7224968679419375e+00 6.6042511529598798e+01 8.7499999805403430e+00 0 0 0 +10916 1 -4.3452487176165114e+01 6.6969307363577840e+01 8.7499999501993315e+00 0 0 0 +10954 1 -4.2330143134348546e+01 6.9188286776966521e+01 8.7499999591418227e+00 0 0 0 +11554 1 -4.4013659175389684e+01 6.8626810501521973e+01 1.0499999970017488e+01 0 0 0 +11556 1 -4.5136003281095306e+01 6.6407830993354821e+01 1.0499999972484551e+01 0 0 0 +11600 1 -3.9524283232592552e+01 6.6434756931994144e+01 1.0500000007034677e+01 0 0 0 +10959 1 -4.0085455121180814e+01 6.8092260041804792e+01 8.7499999793860361e+00 0 0 0 +11599 1 -4.1768971127349850e+01 6.7530783635617695e+01 1.0499999990623035e+01 0 0 0 +11010 1 -3.7840767257755097e+01 6.6996233257513623e+01 8.7500000097695896e+00 0 0 0 +11011 1 -3.6718423167272640e+01 6.9215212764413906e+01 8.7500000191682741e+00 0 0 0 +11651 1 -3.8401939144430308e+01 6.8653736388058434e+01 1.0500000003309401e+01 0 0 0 +11652 1 -3.6157251318353687e+01 6.7557709586826363e+01 1.0500000006612428e+01 0 0 0 +11064 1 -3.3912563503493445e+01 6.6461682823485745e+01 6.9999999804311273e+00 0 0 0 +11707 1 -3.3912563442317470e+01 6.6461682811879200e+01 1.0500000004495348e+01 0 0 0 +11061 1 -3.2790219542842259e+01 6.8680662440404262e+01 6.9999999788058718e+00 0 0 0 +11062 1 -3.4473735383625254e+01 6.8119185989239682e+01 8.7499999837961155e+00 0 0 0 +11704 1 -3.2790219490655588e+01 6.8680662442352428e+01 1.0499999991011549e+01 0 0 0 +11067 1 -3.2229047544068671e+01 6.7023159238826750e+01 8.7499999963683184e+00 0 0 0 +11114 1 -3.1106703529288719e+01 6.9242138889739493e+01 8.7499999752321429e+00 0 0 0 +11117 1 -2.8300843684152706e+01 6.6488609358286979e+01 6.9999999585096058e+00 0 0 0 +11168 1 -2.7178499757465381e+01 6.8707588836116926e+01 6.9999999630645231e+00 0 0 0 +11119 1 -2.8862015707921699e+01 6.8146112408364274e+01 8.7499999561007780e+00 0 0 0 +11170 1 -2.6617327774814346e+01 6.7050085866699675e+01 8.7499999565893898e+00 0 0 0 +11811 1 -2.7178499796872977e+01 6.8707588807237769e+01 1.0499999975722474e+01 0 0 0 +11760 1 -2.8300843709327605e+01 6.6488609321333897e+01 1.0499999977191980e+01 0 0 0 +11171 1 -2.5494983704005151e+01 6.9269065281909846e+01 8.7499999545041565e+00 0 0 0 +11222 1 -2.3250295514351791e+01 6.8173038508532912e+01 8.7499999921871900e+00 0 0 0 +11227 1 -2.1005606623525484e+01 6.7077011748399471e+01 8.7499999645170874e+00 0 0 0 +11274 1 -1.9883266348258676e+01 6.9295992092936430e+01 8.7499999832361048e+00 0 0 0 +11276 1 -1.9322089574833225e+01 6.7638486708598677e+01 6.9999999819558676e+00 0 0 0 +11279 1 -1.7638583583843250e+01 6.8199965510741194e+01 8.7500000017699957e+00 0 0 0 +11919 1 -1.9322089561309557e+01 6.7638486706256799e+01 1.0499999993028002e+01 0 0 0 +11329 1 -1.3710491320593171e+01 6.7665469313830812e+01 7.0000000156444004e+00 0 0 0 +11330 1 -1.5393908079987254e+01 6.7103934706609408e+01 8.7500000151872221e+00 0 0 0 +11331 1 -1.4271514689761966e+01 6.9322931650954658e+01 8.7500000330974306e+00 0 0 0 +11972 1 -1.3710491320734311e+01 6.7665469344399398e+01 1.0500000011645717e+01 0 0 0 +11382 1 -1.2026826757659217e+01 6.8226982087833051e+01 8.7499999970452258e+00 0 0 0 +11387 1 -9.7824040467652882e+00 6.7131346188495201e+01 8.7499999836249174e+00 0 0 0 +11434 1 -8.6590369297244276e+00 6.9348805275911275e+01 8.7499999994741593e+00 0 0 0 +11436 1 -8.0950137371102375e+00 6.7691313537511121e+01 6.9999999721782507e+00 0 0 0 +12079 1 -8.0950137213079465e+00 6.7691313497811478e+01 1.0499999984641887e+01 0 0 0 +11439 1 -6.4095227318529453e+00 6.8249151527005495e+01 8.7500000031725005e+00 0 0 0 +11486 1 -4.1395807882497859e+00 6.7140494482391048e+01 8.7499999651887368e+00 0 0 0 +11485 1 -2.5187337805617620e+00 6.7699521561207945e+01 6.9999999688765095e+00 0 0 0 +11487 1 -3.1035848374265393e+00 6.9424700744833672e+01 8.7499999844359486e+00 0 0 0 +11519 1 -1.0571059432110066e+00 6.8342439100986780e+01 8.7500000014074164e+00 0 0 0 +12128 1 -2.5187337087458941e+00 6.7699521601686044e+01 1.0499999996359142e+01 0 0 0 +10912 1 -4.4574831236648535e+01 7.0284313602531967e+01 8.7499999514525726e+00 0 0 0 +10950 1 -4.3452487111009404e+01 7.2503293099288669e+01 8.7499999283440069e+00 0 0 0 +11595 1 -4.2891315165553792e+01 7.0845789857857014e+01 1.0499999973055008e+01 0 0 0 +11553 1 -4.5136003204615001e+01 7.1941816772533571e+01 1.0499999967461976e+01 0 0 0 +10955 1 -4.1207799107680728e+01 7.1407266253711484e+01 8.7499999682409708e+00 0 0 0 +11006 1 -3.8963111113430536e+01 7.0311239473108387e+01 8.7499999851115540e+00 0 0 0 +11596 1 -4.0646627120738337e+01 6.9749763218167885e+01 1.0499999995632177e+01 0 0 0 +11647 1 -3.9524283194707451e+01 7.1968742624152071e+01 1.0499999991516882e+01 0 0 0 +11005 1 -3.7279595209206349e+01 7.0872715927453967e+01 6.9999999850583361e+00 0 0 0 +11007 1 -3.7840767221054080e+01 7.2530219015989999e+01 8.7499999822435530e+00 0 0 0 +11058 1 -3.5596079361982255e+01 7.1434192290294334e+01 8.7500000084964320e+00 0 0 0 +11648 1 -3.7279595190913966e+01 7.0872715924724886e+01 1.0499999999542769e+01 0 0 0 +11063 1 -3.3351391454623112e+01 7.0338165578313465e+01 8.7499999694787061e+00 0 0 0 +11703 1 -3.5034907272890244e+01 6.9776689073339085e+01 1.0499999992234589e+01 0 0 0 +11112 1 -3.1667875424146377e+01 7.0899641953093123e+01 6.9999999675894014e+00 0 0 0 +11110 1 -3.2229047465635780e+01 7.2557145050401431e+01 8.7499999446618215e+00 0 0 0 +11115 1 -2.9984359524683672e+01 7.1461118476855987e+01 8.7499999514058793e+00 0 0 0 +11755 1 -3.1667875419403913e+01 7.0899641934771068e+01 1.0499999973654083e+01 0 0 0 +11165 1 -2.6056155674212537e+01 7.0926568381257539e+01 6.9999999675698863e+00 0 0 0 +11166 1 -2.7739671594766961e+01 7.0365091928308416e+01 8.7499999764865493e+00 0 0 0 +11167 1 -2.6617327796438229e+01 7.2584071544028177e+01 8.7499999885646513e+00 0 0 0 +11808 1 -2.6056155749473337e+01 7.0926568392883567e+01 1.0500000001921084e+01 0 0 0 +11217 1 -2.2689124043469992e+01 7.2049521577100109e+01 6.9999999742292314e+00 0 0 0 +11218 1 -2.4372640013928230e+01 7.1488044895727214e+01 8.7499999748344610e+00 0 0 0 +11220 1 -2.3811467706374792e+01 6.9830541683569663e+01 6.9999999858379374e+00 0 0 0 +11860 1 -2.2689124030275082e+01 7.2049521547248034e+01 1.0500000002123032e+01 0 0 0 +11863 1 -2.3811467710550748e+01 6.9830541674572032e+01 1.0499999996559859e+01 0 0 0 +11223 1 -2.2127952633187807e+01 7.0392018402669535e+01 8.7499999993843005e+00 0 0 0 +11270 1 -2.1005606719264510e+01 7.2610997596980752e+01 8.7499999896312879e+00 0 0 0 +11273 1 -1.8199753693266718e+01 6.9857471968519192e+01 6.9999999713602481e+00 0 0 0 +11275 1 -1.8760915838460328e+01 7.1514970810975257e+01 8.7499999627686957e+00 0 0 0 +11324 1 -1.7077391662305541e+01 7.2076440560371481e+01 7.0000000007196093e+00 0 0 0 +11326 1 -1.6516219639495354e+01 7.0418945631581650e+01 8.7499999968915425e+00 0 0 0 +11916 1 -1.8199753719380535e+01 6.9857471994907343e+01 1.0500000000303777e+01 0 0 0 +11967 1 -1.7077391675563419e+01 7.2076440568568472e+01 1.0499999979032975e+01 0 0 0 +11327 1 -1.5393908253819198e+01 7.2637920690873983e+01 8.7499999982017229e+00 0 0 0 +11378 1 -1.3149237468037894e+01 7.1541862599933708e+01 8.7500000432872902e+00 0 0 0 +11377 1 -1.1466172670425209e+01 7.2103558530309087e+01 7.0000000276734884e+00 0 0 0 +11380 1 -1.2587782881648653e+01 6.9884292707689227e+01 7.0000000205482973e+00 0 0 0 +11383 1 -1.0904485699088346e+01 7.0445662827692786e+01 8.7500000091684473e+00 0 0 0 +11430 1 -9.7824042417454375e+00 7.2665332104967874e+01 8.7500000064042922e+00 0 0 0 +12020 1 -1.1466172673167005e+01 7.2103558545095780e+01 1.0500000012522172e+01 0 0 0 +12023 1 -1.2587782904284721e+01 6.9884292727645303e+01 1.0500000004812653e+01 0 0 0 +11433 1 -6.9829708172697034e+00 6.9912448311078720e+01 7.0000000010477690e+00 0 0 0 +11435 1 -7.5396994937983903e+00 7.1571174281544316e+01 8.7499999770188754e+00 0 0 0 +12076 1 -6.9829707934999981e+00 6.9912448275215667e+01 1.0499999984290350e+01 0 0 0 +11480 1 -5.8404164467689998e+00 7.2128467983020130e+01 6.9999999918543603e+00 0 0 0 +11482 1 -5.3078135576121657e+00 7.0481262288605677e+01 8.7500000092293551e+00 0 0 0 +11483 1 -4.1395809040774374e+00 7.2674480276180120e+01 8.7500000189518889e+00 0 0 0 +12123 1 -5.8404164128614102e+00 7.2128467974043957e+01 1.0499999993442785e+01 0 0 0 +11516 1 -1.7224968835650916e+00 7.1576497237122069e+01 8.7499999960076593e+00 0 0 0 +11518 1 -1.2264313804371143e+00 6.9977084312863298e+01 7.0000000004766783e+00 0 0 0 +12161 1 -1.2264313776116034e+00 6.9977084381234278e+01 1.0499999988683406e+01 0 0 0 +18205 1 -7.4786841726535122e-14 7.2360803467536144e+01 1.0500000022167063e+01 0 0 0 +12649 1 -1.6516220710013616e+01 8.7020904282471747e+01 1.5750000040971386e+01 0 0 0 +10946 1 -4.4574831197723057e+01 7.5818299490795113e+01 8.7499999219167357e+00 0 0 0 +10951 1 -4.2330143097105186e+01 7.4722272566722765e+01 8.7499999480146169e+00 0 0 0 +11591 1 -4.4013659122387224e+01 7.4160796348739993e+01 1.0499999953124073e+01 0 0 0 +11002 1 -4.0085455090682245e+01 7.3626245767393371e+01 8.7499999756585538e+00 0 0 0 +11003 1 -3.8963111110962217e+01 7.5845225216096651e+01 8.7500000128882593e+00 0 0 0 +11592 1 -4.1768971071415535e+01 7.3064769363080799e+01 1.0499999966457224e+01 0 0 0 +11643 1 -4.0646627113851387e+01 7.5283748960149993e+01 1.0499999978776573e+01 0 0 0 +11054 1 -3.6718423137720620e+01 7.4749198528361333e+01 8.7499999860791604e+00 0 0 0 +11056 1 -3.6157251248519515e+01 7.3091695325565908e+01 6.9999999973254026e+00 0 0 0 +11699 1 -3.6157251211477664e+01 7.3091695350757931e+01 1.0499999984153806e+01 0 0 0 +11644 1 -3.8401939141409258e+01 7.4187722153320024e+01 1.0500000001413719e+01 0 0 0 +11053 1 -3.5034907280557569e+01 7.5310674827829672e+01 6.9999999898777672e+00 0 0 0 +11059 1 -3.4473735291941594e+01 7.3653171749037355e+01 8.7499999747699828e+00 0 0 0 +11106 1 -3.3351391492143883e+01 7.5872151414149741e+01 8.7499999855196542e+00 0 0 0 +11696 1 -3.5034907223093192e+01 7.5310674855759160e+01 1.0499999987624415e+01 0 0 0 +11109 1 -3.0545531563583616e+01 7.3118621571066356e+01 6.9999999420547594e+00 0 0 0 +11160 1 -2.9423187715751563e+01 7.5337601190990114e+01 6.9999999381667388e+00 0 0 0 +11111 1 -3.1106703536850990e+01 7.4776124651572857e+01 8.7499999550308996e+00 0 0 0 +11803 1 -2.9423187760878790e+01 7.5337601183299768e+01 1.0499999966106811e+01 0 0 0 +11752 1 -3.0545531551947899e+01 7.3118621560521817e+01 1.0499999977475735e+01 0 0 0 +11162 1 -2.8862015675211605e+01 7.3680098122197279e+01 8.7499999628533285e+00 0 0 0 +11163 1 -2.7739671753080344e+01 7.5899077696321697e+01 8.7499999591557067e+00 0 0 0 +11216 1 -2.4933811761781236e+01 7.3145547976167919e+01 6.9999999798545751e+00 0 0 0 +11214 1 -2.5494983835135759e+01 7.4803051064388498e+01 8.7500000176154238e+00 0 0 0 +11219 1 -2.3250295625910571e+01 7.3707024315755632e+01 8.7499999850919554e+00 0 0 0 +11859 1 -2.4933811821005730e+01 7.3145547979014665e+01 1.0500000000794849e+01 0 0 0 +11266 1 -2.2127952841706964e+01 7.5926004340773730e+01 8.7499999992043023e+00 0 0 0 +11268 1 -2.1566779666327331e+01 7.4268500610613145e+01 6.9999999838947256e+00 0 0 0 +11271 1 -1.9883266533546667e+01 7.4829978062556435e+01 8.7499999809272762e+00 0 0 0 +11911 1 -2.1566779677349281e+01 7.4268500644169251e+01 1.0499999989402893e+01 0 0 0 +11322 1 -1.7638583779798971e+01 7.3733951470697448e+01 8.7499999774231547e+00 0 0 0 +11323 1 -1.6516219906067285e+01 7.5952931717566585e+01 8.7500000082760394e+00 0 0 0 +11321 1 -1.5955087446783374e+01 7.4295442477028516e+01 6.9999999919643106e+00 0 0 0 +11374 1 -1.4271514932603687e+01 7.4856917701161095e+01 8.7500000329096892e+00 0 0 0 +11964 1 -1.5955087495734077e+01 7.4295442529770426e+01 1.0500000008352510e+01 0 0 0 +11379 1 -1.2026826960631606e+01 7.3760968118866785e+01 8.7500000437404033e+00 0 0 0 +11426 1 -1.0904485968779937e+01 7.5979648880464524e+01 8.7500000330283463e+00 0 0 0 +11428 1 -1.0342364023876017e+01 7.4322018066799430e+01 7.0000000218919283e+00 0 0 0 +12071 1 -1.0342364024460620e+01 7.4322018096215032e+01 1.0500000008988600e+01 0 0 0 +11431 1 -8.6590371960908339e+00 7.4882791280727901e+01 8.7499999957130807e+00 0 0 0 +11477 1 -4.7485638938805135e+00 7.4350634937526650e+01 6.9999999728456395e+00 0 0 0 +11478 1 -6.4095229170535442e+00 7.3783137369019911e+01 8.7499999758150615e+00 0 0 0 +11479 1 -5.3078138031332420e+00 7.6015248225197851e+01 8.7499999371543815e+00 0 0 0 +12120 1 -4.7485638841804549e+00 7.4350634906639655e+01 1.0499999968764820e+01 0 0 0 +11513 1 -3.1035849825712027e+00 7.4958686626656416e+01 8.7499999676553646e+00 0 0 0 +11517 1 -1.0571060297511374e+00 7.3876424925477863e+01 8.7499999610777994e+00 0 0 0 +10944 1 -4.5136003174004919e+01 7.7475802762494382e+01 6.9999999138046878e+00 0 0 0 +10947 1 -4.3452487112611074e+01 7.8037279022391090e+01 8.7499999274869946e+00 0 0 0 +11588 1 -4.2891315134652928e+01 7.6379775679710093e+01 1.0499999972387606e+01 0 0 0 +10997 1 -3.9524283191608845e+01 7.7502728427637535e+01 7.0000000106211564e+00 0 0 0 +10998 1 -4.1207799126314022e+01 7.6941252070462767e+01 8.7499999899099130e+00 0 0 0 +11640 1 -3.9524283258192014e+01 7.7502728425681596e+01 1.0499999994409199e+01 0 0 0 +11050 1 -3.7840767331366550e+01 7.8064204799938224e+01 8.7500000247179290e+00 0 0 0 +11055 1 -3.5596079468831960e+01 7.6968178079776280e+01 8.7499999825079904e+00 0 0 0 +11104 1 -3.3912563557963757e+01 7.7529654476257349e+01 6.9999999636075554e+00 0 0 0 +11747 1 -3.3912563494910891e+01 7.7529654468582123e+01 1.0499999971767449e+01 0 0 0 +11107 1 -3.2229047700001729e+01 7.8091130864667875e+01 8.7499999437007698e+00 0 0 0 +11158 1 -2.9984359721460301e+01 7.6995104321830240e+01 8.7499999361817640e+00 0 0 0 +11157 1 -2.8300843883036407e+01 7.7556580860542240e+01 6.9999999381863978e+00 0 0 0 +11210 1 -2.6617328073655223e+01 7.8118057426204018e+01 8.7499999815618796e+00 0 0 0 +11800 1 -2.8300843935856882e+01 7.7556580845801406e+01 1.0499999985505646e+01 0 0 0 +11215 1 -2.4372640280598691e+01 7.7022030801993012e+01 8.7500000329167236e+00 0 0 0 +11265 1 -2.0444437264203120e+01 7.6487481665971416e+01 6.9999999750473663e+00 0 0 0 +11267 1 -2.1005607011762411e+01 7.8144983656891327e+01 8.7499999766015577e+00 0 0 0 +11908 1 -2.0444437237618942e+01 7.6487481680895471e+01 1.0499999984459718e+01 0 0 0 +11316 1 -1.9322090031213413e+01 7.8706458724798708e+01 6.9999999731205387e+00 0 0 0 +11318 1 -1.8760916096709526e+01 7.7048956844988254e+01 8.7499999885903357e+00 0 0 0 +11959 1 -1.9322090010489230e+01 7.8706458727778056e+01 1.0499999985138206e+01 0 0 0 +11369 1 -1.3710491853819816e+01 7.8733441468167570e+01 7.0000000310058130e+00 0 0 0 +11370 1 -1.5393908566405196e+01 7.8171906790660188e+01 8.7500000163698850e+00 0 0 0 +11372 1 -1.4832658758467661e+01 7.6514378955193081e+01 7.0000000133725759e+00 0 0 0 +11375 1 -1.3149237774538268e+01 7.7075848730148536e+01 8.7500000127497355e+00 0 0 0 +12012 1 -1.3710491901417917e+01 7.8733441476515395e+01 1.0500000031915322e+01 0 0 0 +12015 1 -1.4832658819394492e+01 7.6514378967274780e+01 1.0500000007705500e+01 0 0 0 +11427 1 -9.7824045967364395e+00 7.8199318238700172e+01 8.7500000069541439e+00 0 0 0 +11425 1 -9.2228643498303455e+00 7.6541890538956750e+01 6.9999999955210797e+00 0 0 0 +11472 1 -8.0950143302683131e+00 7.8759285497252449e+01 6.9999999633301773e+00 0 0 0 +11474 1 -7.5396997946761761e+00 7.7105160285157964e+01 8.7499999744457213e+00 0 0 0 +12068 1 -9.2228643287093792e+00 7.6541890560290540e+01 1.0499999996023410e+01 0 0 0 +12115 1 -8.0950142841566937e+00 7.8759285533398028e+01 1.0499999976230935e+01 0 0 0 +11511 1 -3.5610865237816620e+00 7.6564538079579066e+01 6.9999999669484456e+00 0 0 0 +11509 1 -4.1395812241844183e+00 7.8208466282792614e+01 8.7499999107145232e+00 0 0 0 +12154 1 -3.5610865475663389e+00 7.6564538046229032e+01 1.0499999941073149e+01 0 0 0 +11508 1 -2.5187341462144248e+00 7.8767493381227922e+01 6.9999999788800933e+00 0 0 0 +11514 1 -1.7224971188573550e+00 7.7110483227042153e+01 8.7499999583987123e+00 0 0 0 +12151 1 -2.5187341272063217e+00 7.8767493378977790e+01 1.0499999932661686e+01 0 0 0 +10942 1 -4.4013659105177034e+01 7.9694782298769098e+01 6.9999999429934983e+00 0 0 0 +10943 1 -4.4574831200892568e+01 8.1352285487510272e+01 8.7499999435530746e+00 0 0 0 +10992 1 -4.2891315153443337e+01 8.1913761691981392e+01 6.9999999362307594e+00 0 0 0 +10994 1 -4.2330143172728121e+01 8.0256258490482054e+01 8.7499999734824900e+00 0 0 0 +10999 1 -4.0085455192907709e+01 7.9160231593458164e+01 8.7500000099933217e+00 0 0 0 +11046 1 -3.8963111385929523e+01 8.1379211119729391e+01 8.7500000157928834e+00 0 0 0 +11045 1 -3.7279595629140196e+01 8.1940687588279971e+01 7.0000000176289783e+00 0 0 0 +11048 1 -3.8401939315444089e+01 7.9721707964947996e+01 7.0000000137056171e+00 0 0 0 +11051 1 -3.6718423441530561e+01 8.0283184378352644e+01 8.7500000203044177e+00 0 0 0 +11688 1 -3.7279595605290034e+01 8.1940687586872414e+01 1.0499999997096475e+01 0 0 0 +11691 1 -3.8401939339376838e+01 7.9721707949913608e+01 1.0500000005551712e+01 0 0 0 +11101 1 -3.2790219875381666e+01 7.9748634087607115e+01 6.9999999330116056e+00 0 0 0 +11102 1 -3.4473735586242164e+01 7.9187157626296667e+01 8.7499999620052371e+00 0 0 0 +11103 1 -3.3351391957589328e+01 8.1406137246070955e+01 8.7499999435759825e+00 0 0 0 +11744 1 -3.2790219803349025e+01 7.9748634106959855e+01 1.0499999971801456e+01 0 0 0 +11152 1 -3.1667876079395509e+01 8.1967613614110277e+01 6.9999999245224425e+00 0 0 0 +11154 1 -3.1106703954094691e+01 8.0310110538862645e+01 8.7499999318408648e+00 0 0 0 +11795 1 -3.1667876042935628e+01 8.1967613618285384e+01 1.0499999941769225e+01 0 0 0 +11205 1 -2.6056156381916317e+01 8.1994540173778461e+01 6.9999999918748843e+00 0 0 0 +11208 1 -2.7178500202645566e+01 7.9775560455277343e+01 6.9999999654052347e+00 0 0 0 +11159 1 -2.8862016065506843e+01 7.9214083993328359e+01 8.7499999426269923e+00 0 0 0 +11206 1 -2.7739672218856803e+01 8.1433063596273470e+01 8.7499999728055595e+00 0 0 0 +11851 1 -2.7178500257321243e+01 7.9775560433438727e+01 1.0499999967257649e+01 0 0 0 +11848 1 -2.6056156451184684e+01 8.1994540183332020e+01 1.0500000010959974e+01 0 0 0 +11211 1 -2.5494984244383367e+01 8.0337037018371134e+01 8.7499999919832003e+00 0 0 0 +11260 1 -2.3811468305096703e+01 8.0898513579870183e+01 7.0000000325713696e+00 0 0 0 +11262 1 -2.3250295953061997e+01 7.9241010340387348e+01 8.7500000287113906e+00 0 0 0 +11903 1 -2.3811468292833005e+01 8.0898513584641037e+01 1.0500000017369603e+01 0 0 0 +11263 1 -2.2127953253637163e+01 8.1459990486140896e+01 8.7500000276799135e+00 0 0 0 +11314 1 -1.9883266890159671e+01 8.0363964210398478e+01 8.7499999955151608e+00 0 0 0 +11313 1 -1.8199754303431128e+01 8.0925444186630287e+01 6.9999999568872688e+00 0 0 0 +11319 1 -1.7638584110876867e+01 7.9267937633942267e+01 8.7499999850690795e+00 0 0 0 +11366 1 -1.6516220325389313e+01 8.1486917912746279e+01 8.7499999680819123e+00 0 0 0 +11956 1 -1.8199754318430092e+01 8.0925444204691374e+01 1.0499999997969677e+01 0 0 0 +11371 1 -1.4271515332193200e+01 8.0390903879031654e+01 8.7500000179585182e+00 0 0 0 +11420 1 -1.2587783572798566e+01 8.0952264982495208e+01 7.0000000201995078e+00 0 0 0 +11422 1 -1.2026827376423878e+01 7.9294954277035032e+01 8.7500000127163684e+00 0 0 0 +11423 1 -1.0904486430269451e+01 8.1513635124817910e+01 8.7500000084214182e+00 0 0 0 +12063 1 -1.2587783609568657e+01 8.0952265009875063e+01 1.0500000022986592e+01 0 0 0 +11469 1 -6.9829715019458751e+00 8.0980420366338862e+01 6.9999999699590303e+00 0 0 0 +11470 1 -8.6590375950302843e+00 8.0416777428733511e+01 8.7499999856185546e+00 0 0 0 +12112 1 -6.9829714490833892e+00 8.0980420374085298e+01 1.0499999947838861e+01 0 0 0 +11475 1 -6.4095233217526477e+00 7.9317123461506569e+01 8.7499999577748220e+00 0 0 0 +11505 1 -5.3078141832348766e+00 8.1549234293939293e+01 8.7499999579060503e+00 0 0 0 +11528 1 -1.2264316117899761e+00 8.1045056233442537e+01 6.9999999976495966e+00 0 0 0 +11510 1 -3.1035852301191524e+00 8.0492672584856081e+01 8.7499999392787693e+00 0 0 0 +11529 1 -1.0571061811245153e+00 7.9410410906553082e+01 8.7499999972233873e+00 0 0 0 +12171 1 -1.2264316282846961e+00 8.1045056220362014e+01 1.0500000000908493e+01 0 0 0 +10941 1 -4.5136003183638785e+01 8.3009788757052235e+01 6.9999999163267184e+00 0 0 0 +10988 1 -4.4013659231794826e+01 8.5228768326956356e+01 6.9999999219221563e+00 0 0 0 +10990 1 -4.3452487204500656e+01 8.3571265023603090e+01 8.7499999435524334e+00 0 0 0 +10989 1 -4.1768971256313854e+01 8.4132741278584916e+01 6.9999999813019027e+00 0 0 0 +10995 1 -4.1207799300255452e+01 8.2475238026274496e+01 8.7499999859205335e+00 0 0 0 +11042 1 -4.0085455529401038e+01 8.4694217605096966e+01 8.7500000023271536e+00 0 0 0 +11096 1 -3.6157251988704900e+01 8.4159667066733661e+01 7.0000000057571041e+00 0 0 0 +11047 1 -3.7840767761641068e+01 8.3598190741164032e+01 8.7500000227255033e+00 0 0 0 +11098 1 -3.5596079923595177e+01 8.2502163963181474e+01 8.7500000119219727e+00 0 0 0 +11739 1 -3.6157251928916679e+01 8.4159667064119077e+01 1.0499999979660100e+01 0 0 0 +11099 1 -3.4473736168364518e+01 8.4721143473738906e+01 8.7499999725429554e+00 0 0 0 +11149 1 -3.0545532523412028e+01 8.4186593290029563e+01 6.9999999142988658e+00 0 0 0 +11150 1 -3.2229048299590239e+01 8.3625116736280049e+01 8.7499999236038164e+00 0 0 0 +11155 1 -2.9984360275498819e+01 8.2529090141833507e+01 8.7499999199538490e+00 0 0 0 +11792 1 -3.0545532501013788e+01 8.4186593269639758e+01 1.0499999959880711e+01 0 0 0 +11202 1 -2.8862016715515278e+01 8.4748069883935699e+01 8.7499999436705611e+00 0 0 0 +11207 1 -2.6617328678259003e+01 8.3652043386462651e+01 8.7499999911748532e+00 0 0 0 +11256 1 -2.4933812693243503e+01 8.4213519980233428e+01 7.0000000288548971e+00 0 0 0 +11258 1 -2.4372640760722572e+01 8.2556016872146543e+01 8.7500000128122899e+00 0 0 0 +11259 1 -2.3250296543851732e+01 8.4774996548236302e+01 8.7500000399857818e+00 0 0 0 +11257 1 -2.2689124825869030e+01 8.3117493706254123e+01 7.0000000172528614e+00 0 0 0 +11900 1 -2.2689124779669825e+01 8.3117493721811641e+01 1.0500000038001332e+01 0 0 0 +11899 1 -2.4933812721397764e+01 8.4213520006787078e+01 1.0500000025321937e+01 0 0 0 +11308 1 -2.1566780589847578e+01 8.5336472968702310e+01 7.0000000233841906e+00 0 0 0 +11310 1 -2.1005607487235835e+01 8.3678969921621288e+01 8.7500000132896876e+00 0 0 0 +11951 1 -2.1566780568655375e+01 8.5336473029857274e+01 1.0500000018002581e+01 0 0 0 +11315 1 -1.8760916538667885e+01 8.2582943137112153e+01 8.7499999622459654e+00 0 0 0 +11362 1 -1.7638584605907059e+01 8.4801923950948165e+01 8.7499999618440789e+00 0 0 0 +11364 1 -1.7077392428161168e+01 8.3144412923624159e+01 6.9999999772787280e+00 0 0 0 +12007 1 -1.7077392413554026e+01 8.3144412959746290e+01 1.0499999993007940e+01 0 0 0 +11361 1 -1.5955088314294231e+01 8.5363414994845826e+01 6.9999999654414440e+00 0 0 0 +11367 1 -1.5393909069598216e+01 8.3705893113059346e+01 8.7499999865867046e+00 0 0 0 +11418 1 -1.3149238229562510e+01 8.2609834971631912e+01 8.7500000346495721e+00 0 0 0 +12004 1 -1.5955088327341976e+01 8.5363415027619823e+01 1.0500000002505921e+01 0 0 0 +11464 1 -1.0342364802598860e+01 8.5389990526733342e+01 7.0000000419040047e+00 0 0 0 +11417 1 -1.1466173463034533e+01 8.3171530921010898e+01 7.0000000419109600e+00 0 0 0 +11419 1 -1.2026827780697984e+01 8.4828940562676891e+01 8.7500000206930775e+00 0 0 0 +11466 1 -9.7824050033813279e+00 8.3733304482435116e+01 8.7499999878650812e+00 0 0 0 +12060 1 -1.1466173458454184e+01 8.3171530934766963e+01 1.0500000000587962e+01 0 0 0 +12107 1 -1.0342364771665510e+01 8.5389990531492913e+01 1.0499999983597251e+01 0 0 0 +11471 1 -7.5397001973521673e+00 8.2639146478216389e+01 8.7499999445737284e+00 0 0 0 +11500 1 -4.7485645316563865e+00 8.5418607039123231e+01 6.9999999410074079e+00 0 0 0 +11503 1 -5.8404171458911112e+00 8.3196440068041511e+01 6.9999999569087192e+00 0 0 0 +11501 1 -6.4095236079275431e+00 8.4851109585175465e+01 8.7499999558963157e+00 0 0 0 +11506 1 -4.1395815220776599e+00 8.3742452312281770e+01 8.7500000017893544e+00 0 0 0 +12143 1 -4.7485644912765501e+00 8.5418607007859265e+01 1.0499999997207814e+01 0 0 0 +12146 1 -5.8404170824631754e+00 8.3196440081508044e+01 1.0499999965762186e+01 0 0 0 +11526 1 -1.7224974420155388e+00 8.2644469228261386e+01 8.7500000026814657e+00 0 0 0 +11527 1 -1.0571061790141381e+00 8.4944396837504783e+01 8.7499999998806999e+00 0 0 0 +12645 1 -1.8760917014688690e+01 8.8116929444945967e+01 1.5750000048384422e+01 0 0 0 +10074 1 -1.8199754780807879e+01 8.6459430509895441e+01 2.3170837692987334e-08 0 0 0 +10986 1 -4.2891315451671794e+01 8.7447747749841795e+01 6.9999999490388625e+00 0 0 0 +10987 1 -4.4574831388029715e+01 8.6886271492752897e+01 8.7499999130641832e+00 0 0 0 +10991 1 -4.2330143403725856e+01 8.5790244526372078e+01 8.7499999479468968e+00 0 0 0 +11040 1 -4.0646627571571962e+01 8.6351720894311867e+01 6.9999999880695434e+00 0 0 0 +11039 1 -4.1207799720511517e+01 8.8009224057087010e+01 8.7499999923022198e+00 0 0 0 +11043 1 -3.8963111849820166e+01 8.6913197103382487e+01 8.7500000243084557e+00 0 0 0 +11094 1 -3.6718423999848795e+01 8.5817170319336157e+01 8.7500000096843014e+00 0 0 0 +11095 1 -3.5596080630887663e+01 8.8036149922545349e+01 8.7500000381223213e+00 0 0 0 +11093 1 -3.5034908339975104e+01 8.6378646608807529e+01 7.0000000130132669e+00 0 0 0 +11147 1 -3.3351392686425307e+01 8.6940123181194281e+01 8.7500000021988207e+00 0 0 0 +11736 1 -3.5034908245274451e+01 8.6378646636409954e+01 1.0499999991186131e+01 0 0 0 +11200 1 -2.9423188959925483e+01 8.6405572981424157e+01 6.9999999504357602e+00 0 0 0 +11151 1 -3.1106704670733929e+01 8.5844096385941114e+01 8.7499999409537388e+00 0 0 0 +11199 1 -2.9984361090717066e+01 8.8063076145710980e+01 8.7499999501833994e+00 0 0 0 +11843 1 -2.9423188981003261e+01 8.6405572959952323e+01 1.0499999964269362e+01 0 0 0 +11203 1 -2.7739673021133179e+01 8.6967049595467742e+01 8.7499999686406138e+00 0 0 0 +11254 1 -2.5494984902988683e+01 8.5871023107493443e+01 8.7500000393943829e+00 0 0 0 +11255 1 -2.4372641461614982e+01 8.8090003029105404e+01 8.7500000527127604e+00 0 0 0 +11306 1 -2.0444438264394968e+01 8.7555454179637451e+01 6.9999999742509269e+00 0 0 0 +11307 1 -2.2127953857558172e+01 8.6993976759618818e+01 8.7500000258416080e+00 0 0 0 +11311 1 -1.9883267430068436e+01 8.5897950543587712e+01 8.7499999871592777e+00 0 0 0 +11949 1 -2.0444438202116320e+01 8.7555454244995090e+01 1.0500000025043040e+01 0 0 0 +11359 1 -1.8760917015870490e+01 8.8116929458032914e+01 8.7499999686725776e+00 0 0 0 +11363 1 -1.6516220783487679e+01 8.7020904275775536e+01 8.7499999719757060e+00 0 0 0 +11412 1 -1.4832659607126292e+01 8.7582351520415742e+01 6.9999999943396851e+00 0 0 0 +11414 1 -1.4271515792331389e+01 8.5924890213823957e+01 8.7500000002437339e+00 0 0 0 +11415 1 -1.3149238547622300e+01 8.8143821287130152e+01 8.7499999896844525e+00 0 0 0 +12055 1 -1.4832659632040682e+01 8.7582351539718729e+01 1.0499999990584103e+01 0 0 0 +11463 1 -1.0904486704700075e+01 8.7047621390229779e+01 8.7500000131861349e+00 0 0 0 +11462 1 -9.2228650111634600e+00 8.7609863017466267e+01 7.0000000123939277e+00 0 0 0 +11467 1 -8.6590378815496400e+00 8.5950763664227622e+01 8.7499999783330829e+00 0 0 0 +11498 1 -7.5397003302938854e+00 8.8173132669223662e+01 8.7499999854553181e+00 0 0 0 +12105 1 -9.2228649533364404e+00 8.7609863038574687e+01 1.0499999997901703e+01 0 0 0 +11521 1 -3.5610870804766814e+00 8.7632510114156190e+01 6.9999999459421485e+00 0 0 0 +11502 1 -5.3078143482331734e+00 8.7083220419173813e+01 8.7499999401142077e+00 0 0 0 +12164 1 -3.5610870605058369e+00 8.7632510079309299e+01 1.0500000005378526e+01 0 0 0 +11523 1 -3.1035853944055138e+00 8.6026658592458872e+01 8.7499999791177618e+00 0 0 0 +11524 1 -1.7224976705128028e+00 8.8178455240337087e+01 8.7499999916840725e+00 0 0 0 +11534 1 -4.3452487655935634e+01 4.4833363893249441e+01 1.2249999988382548e+01 0 0 0 +11548 1 -4.2330143530339065e+01 4.7052343421270244e+01 1.2250000005884742e+01 0 0 0 +12174 1 -4.4013659586986265e+01 4.6490867254048169e+01 1.4000000024389683e+01 0 0 0 +11552 1 -4.0085455547106321e+01 4.5956316324018580e+01 1.2250000006606070e+01 0 0 0 +12193 1 -4.1768971578894757e+01 4.5394840055238909e+01 1.4000000026799201e+01 0 0 0 +12194 1 -3.9524283686266578e+01 4.4298813002044128e+01 1.4000000006406189e+01 0 0 0 +11582 1 -3.7840767623322407e+01 4.4860289264052874e+01 1.2250000011379603e+01 0 0 0 +11583 1 -3.6718423428188949e+01 4.7079268829570928e+01 1.2250000007631018e+01 0 0 0 +12223 1 -3.8401939519770842e+01 4.6517792532259932e+01 1.3999999996818335e+01 0 0 0 +12224 1 -3.6157251543904806e+01 4.5421765562577910e+01 1.3999999987351220e+01 0 0 0 +11625 1 -3.4473735449561730e+01 4.5983241994938574e+01 1.2250000025432959e+01 0 0 0 +12267 1 -3.2790219469468461e+01 4.6544718553881879e+01 1.4000000016941549e+01 0 0 0 +12270 1 -3.3912563478645765e+01 4.4325738798074298e+01 1.4000000014706995e+01 0 0 0 +11628 1 -3.2229047381586199e+01 4.4887215291496346e+01 1.2250000028199223e+01 0 0 0 +11677 1 -3.1106703361337921e+01 4.7106195145320051e+01 1.2250000026255965e+01 0 0 0 +11681 1 -2.8862015407324080e+01 4.6010168699612542e+01 1.2250000022015495e+01 0 0 0 +11733 1 -2.6617327420607502e+01 4.4914142144287602e+01 1.2250000022335538e+01 0 0 0 +12374 1 -2.7178499460653885e+01 4.6571645282540764e+01 1.4000000047192206e+01 0 0 0 +12323 1 -2.8300843361981130e+01 4.4352665467954132e+01 1.4000000071375089e+01 0 0 0 +11734 1 -2.5494983364735671e+01 4.7133121848125711e+01 1.2250000009166079e+01 0 0 0 +11785 1 -2.3250295064379848e+01 4.6037095107783365e+01 1.2250000014633214e+01 0 0 0 +11787 1 -2.2689123497024884e+01 4.4379592362567813e+01 1.0499999984562210e+01 0 0 0 +11784 1 -2.1566779014382849e+01 4.6598571456126145e+01 1.0500000014053221e+01 0 0 0 +11788 1 -2.1005606093690417e+01 4.4941068518783432e+01 1.2249999986539759e+01 0 0 0 +11837 1 -1.9883265798526214e+01 4.7160048967087683e+01 1.2249999990119596e+01 0 0 0 +11841 1 -1.7638582990484142e+01 4.6064022641211679e+01 1.2249999992856061e+01 0 0 0 +12482 1 -1.9322088991823009e+01 4.5502543650707409e+01 1.3999999987572901e+01 0 0 0 +11840 1 -1.7077390925146823e+01 4.4406511893424813e+01 1.0500000029666035e+01 0 0 0 +11891 1 -1.5955086726118315e+01 4.6625513791327606e+01 1.0500000021139615e+01 0 0 0 +11893 1 -1.5393907551011241e+01 4.4967992196292919e+01 1.2250000020102004e+01 0 0 0 +11894 1 -1.4271514288136871e+01 4.7186989132635198e+01 1.2250000017433749e+01 0 0 0 +12535 1 -1.3710490966011493e+01 4.5529527049039224e+01 1.4000000035004105e+01 0 0 0 +11944 1 -1.0342363852458881e+01 4.6652090169936514e+01 1.0499999991916726e+01 0 0 0 +11945 1 -1.2026826585712007e+01 4.6091040002123542e+01 1.2250000048206291e+01 0 0 0 +11948 1 -9.7824041001570468e+00 4.4995404522688851e+01 1.2250000008933904e+01 0 0 0 +11947 1 -1.1466172364149838e+01 4.4433630725011668e+01 1.0499999991927389e+01 0 0 0 +11997 1 -8.6590371357055140e+00 4.7212863562597121e+01 1.2250000022480265e+01 0 0 0 +12642 1 -8.0950139539155117e+00 4.5555372107822301e+01 1.4000000058786279e+01 0 0 0 +12051 1 -4.7485641207846090e+00 4.6680708124489698e+01 1.0499999966211901e+01 0 0 0 +12001 1 -6.4095230986175835e+00 4.6113210280470810e+01 1.2249999985931966e+01 0 0 0 +12053 1 -4.1395811205842694e+00 4.5004553858106732e+01 1.2249999959040411e+01 0 0 0 +12000 1 -5.8404167139342436e+00 4.4458541257585871e+01 1.0499999965236888e+01 0 0 0 +12054 1 -3.1035851220397319e+00 4.7288760021414888e+01 1.2249999943477068e+01 0 0 0 +12103 1 -1.0571058891174081e+00 4.6206498963776575e+01 1.2249999884253294e+01 0 0 0 +12593 1 -2.2127953878662257e+01 8.6993976669631792e+01 1.5749999968477042e+01 0 0 0 +12695 1 -2.5187339471993160e+00 4.5563581252460985e+01 1.3999999974965071e+01 0 0 0 +11532 1 -4.4574831542224793e+01 4.8148370480742926e+01 1.2250000018052685e+01 0 0 0 +11544 1 -4.3452487351582135e+01 5.0367349988696240e+01 1.2250000007553414e+01 0 0 0 +12189 1 -4.2891315417291437e+01 4.8709846618368495e+01 1.4000000016264710e+01 0 0 0 +11549 1 -4.1207799426262802e+01 4.9271322885975337e+01 1.2250000011812865e+01 0 0 0 +11578 1 -3.8963111461354089e+01 4.8175295761726254e+01 1.2250000005839125e+01 0 0 0 +12190 1 -4.0646627470736711e+01 4.7613819636318297e+01 1.3999999998218673e+01 0 0 0 +12219 1 -3.9524283456375741e+01 4.9832799112567379e+01 1.3999999988814908e+01 0 0 0 +11579 1 -3.7840767528508692e+01 5.0394275357499517e+01 1.2249999985536524e+01 0 0 0 +11621 1 -3.5596079609698386e+01 4.9298248440139616e+01 1.2249999982531216e+01 0 0 0 +12220 1 -3.7279595509766423e+01 4.8736772108259615e+01 1.3999999989805271e+01 0 0 0 +11626 1 -3.3351391506835071e+01 4.8202221774514413e+01 1.2250000012201269e+01 0 0 0 +12263 1 -3.3912563521639733e+01 4.9859724913573835e+01 1.3999999982943104e+01 0 0 0 +12266 1 -3.5034907421312937e+01 4.7640745121660125e+01 1.3999999984008575e+01 0 0 0 +11673 1 -3.2229047507881667e+01 5.0421201461630368e+01 1.2250000019886917e+01 0 0 0 +11676 1 -2.9423187469113547e+01 4.7667671838711357e+01 1.0499999993098143e+01 0 0 0 +11678 1 -2.9984359403635292e+01 4.9325175035607906e+01 1.2250000007632710e+01 0 0 0 +12318 1 -3.1667875371848780e+01 4.8763698344298980e+01 1.4000000009262761e+01 0 0 0 +11727 1 -2.8300843479724012e+01 4.9886651671072215e+01 1.0499999981139716e+01 0 0 0 +11729 1 -2.7739671338348501e+01 4.8229148487923673e+01 1.2250000028148369e+01 0 0 0 +11730 1 -2.6617327536777342e+01 5.0448128311412191e+01 1.2250000010631231e+01 0 0 0 +12371 1 -2.6056155399521348e+01 4.8790625030780873e+01 1.4000000036068043e+01 0 0 0 +11781 1 -2.4372639672632069e+01 4.9352101614024185e+01 1.2250000023702304e+01 0 0 0 +12426 1 -2.3811467307126257e+01 4.7694598329787929e+01 1.4000000008372465e+01 0 0 0 +12423 1 -2.2689123625732570e+01 4.9913578316908612e+01 1.4000000023031877e+01 0 0 0 +11786 1 -2.2127952175010382e+01 4.8256075121980302e+01 1.2249999985429024e+01 0 0 0 +11833 1 -2.1005606254710809e+01 5.0475054369913359e+01 1.2250000008789147e+01 0 0 0 +11835 1 -2.0444436518285993e+01 4.8817552475419568e+01 1.0500000003247184e+01 0 0 0 +11838 1 -1.8760915295351491e+01 4.9379027680260080e+01 1.2250000006975561e+01 0 0 0 +11889 1 -1.6516219119118396e+01 4.8283002762297862e+01 1.2250000042117559e+01 0 0 0 +12479 1 -1.8199753134053541e+01 4.7721528989287428e+01 1.4000000008914117e+01 0 0 0 +12530 1 -1.7077391146008136e+01 4.9940497506797065e+01 1.3999999997615831e+01 0 0 0 +11888 1 -1.4832658080887766e+01 4.8844450146990596e+01 1.0499999995895575e+01 0 0 0 +11890 1 -1.5393907808167201e+01 5.0501977766008977e+01 1.2249999991503469e+01 0 0 0 +11941 1 -1.3149237186708596e+01 4.9405920054537233e+01 1.2249999994199689e+01 0 0 0 +11946 1 -1.0904485658892865e+01 4.8309720651712283e+01 1.2250000021519458e+01 0 0 0 +11993 1 -9.7824042398153477e+00 5.0529389825064975e+01 1.2250000021727246e+01 0 0 0 +12583 1 -1.1466172519682988e+01 4.9967616138691319e+01 1.4000000056226822e+01 0 0 0 +12586 1 -1.2587782651392468e+01 4.7748350389475171e+01 1.4000000058713134e+01 0 0 0 +11995 1 -9.2228641852601658e+00 4.8871962503363818e+01 1.0499999975576275e+01 0 0 0 +11998 1 -7.5396997289725096e+00 4.9435232428874180e+01 1.2250000008831918e+01 0 0 0 +12639 1 -6.9829710856231522e+00 4.7776506775955120e+01 1.4000000052045907e+01 0 0 0 +12048 1 -3.5610865835110235e+00 4.8894611078012730e+01 1.0499999995760129e+01 0 0 0 +12049 1 -5.3078138690096202e+00 4.8345320992045473e+01 1.2249999974745524e+01 0 0 0 +12050 1 -4.1395810606853258e+00 5.0538538831690950e+01 1.2249999969041678e+01 0 0 0 +12690 1 -5.8404166863861740e+00 4.9992526341799206e+01 1.4000000028674307e+01 0 0 0 +12597 1 -1.9883267426284210e+01 8.5897950497656936e+01 1.5750000008184763e+01 0 0 0 +12100 1 -1.7224971704836649e+00 4.9440556556942276e+01 1.2249999978865640e+01 0 0 0 +12745 1 -1.2264314132181873e+00 4.7841143953140843e+01 1.3999999930867773e+01 0 0 0 +11540 1 -4.4574831328426832e+01 5.3682356441321801e+01 1.2250000007767113e+01 0 0 0 +11545 1 -4.2330143287618064e+01 5.2586329480535802e+01 1.2250000015329821e+01 0 0 0 +12185 1 -4.4013659274703912e+01 5.2024853229346981e+01 1.4000000026069856e+01 0 0 0 +11574 1 -4.0085455331931662e+01 5.1490302429612427e+01 1.2249999991280488e+01 0 0 0 +11575 1 -3.8963111333588238e+01 5.3709281867333374e+01 1.2249999984409833e+01 0 0 0 +12186 1 -4.1768971295295941e+01 5.0928826139191777e+01 1.4000000005882743e+01 0 0 0 +12215 1 -4.0646627282873418e+01 5.3147805761220198e+01 1.3999999991745140e+01 0 0 0 +11617 1 -3.6718423441518851e+01 5.2613254931905878e+01 1.2249999994588961e+01 0 0 0 +12216 1 -3.8401939372075269e+01 5.2051778619523560e+01 1.3999999965273718e+01 0 0 0 +12262 1 -3.6157251510166994e+01 5.0955751637922937e+01 1.3999999976032923e+01 0 0 0 +11622 1 -3.4473735518828207e+01 5.1517228087768125e+01 1.2249999984149408e+01 0 0 0 +11669 1 -3.3351391638390382e+01 5.3736207865051774e+01 1.2249999967172306e+01 0 0 0 +12259 1 -3.5034907517470373e+01 5.3174731237529919e+01 1.3999999969414457e+01 0 0 0 +12314 1 -3.2790219604090886e+01 5.2078704704636884e+01 1.3999999980540007e+01 0 0 0 +11674 1 -3.1106703516282160e+01 5.2640181291465673e+01 1.2249999984352460e+01 0 0 0 +12315 1 -3.0545531518865754e+01 5.0982678202038450e+01 1.4000000013983692e+01 0 0 0 +12366 1 -2.9423187613172839e+01 5.3201658011979994e+01 1.4000000010715429e+01 0 0 0 +11724 1 -2.7178499620873346e+01 5.2105631412834839e+01 1.0499999987805927e+01 0 0 0 +11725 1 -2.8862015561017941e+01 5.1544154894804564e+01 1.2250000020229006e+01 0 0 0 +11726 1 -2.7739671525684592e+01 5.3763134636187331e+01 1.2250000006674227e+01 0 0 0 +11776 1 -2.3811467527872793e+01 5.3228584357959733e+01 1.0500000024573199e+01 0 0 0 +11777 1 -2.5494983509535796e+01 5.2667107949896696e+01 1.2249999997554781e+01 0 0 0 +11782 1 -2.3250295239815966e+01 5.1571081113154399e+01 1.2250000005030467e+01 0 0 0 +12422 1 -2.4933811454428604e+01 5.1009604786277137e+01 1.4000000017926482e+01 0 0 0 +11829 1 -2.2127952409699454e+01 5.3790061073497533e+01 1.2250000030725840e+01 0 0 0 +11834 1 -1.9883266050206277e+01 5.2694034763546014e+01 1.2250000008990447e+01 0 0 0 +12474 1 -2.1566779224967952e+01 5.2132557360349139e+01 1.4000000010543269e+01 0 0 0 +11832 1 -1.9322089227431007e+01 5.1036529428170908e+01 1.0500000021400222e+01 0 0 0 +11883 1 -1.8199753410344389e+01 5.3255514703785757e+01 1.0500000009637164e+01 0 0 0 +11885 1 -1.7638583257341843e+01 5.1598008312226220e+01 1.2249999998241226e+01 0 0 0 +11886 1 -1.6516219362717564e+01 5.3816988375859850e+01 1.2249999957141029e+01 0 0 0 +11939 1 -1.3710491225944613e+01 5.1063512517563197e+01 1.0499999974625888e+01 0 0 0 +11937 1 -1.4271514514230674e+01 5.2720974634925241e+01 1.2249999990099557e+01 0 0 0 +12527 1 -1.5955086974334371e+01 5.2159499382874472e+01 1.4000000000191545e+01 0 0 0 +11936 1 -1.2587782789419448e+01 5.3282335780239833e+01 1.0499999956593154e+01 0 0 0 +11942 1 -1.2026826734805107e+01 5.1625025389274178e+01 1.2249999968235278e+01 0 0 0 +11989 1 -1.0904485656065738e+01 5.3843705957025165e+01 1.2250000002237819e+01 0 0 0 +12634 1 -1.0342363849937696e+01 5.2186075490649962e+01 1.4000000049696963e+01 0 0 0 +11992 1 -8.0950140534196429e+00 5.1089357262999840e+01 1.0499999990457479e+01 0 0 0 +12043 1 -6.9829709990552473e+00 5.3310491858407843e+01 1.0499999998838691e+01 0 0 0 +11994 1 -8.6590370806048966e+00 5.2746848742821506e+01 1.2250000014672942e+01 0 0 0 +12045 1 -6.4095230517872590e+00 5.1647195329067586e+01 1.2250000034263628e+01 0 0 0 +12046 1 -5.3078137409518513e+00 5.3879305974480459e+01 1.2250000021517918e+01 0 0 0 +12687 1 -4.7485639734487641e+00 5.2214693067753707e+01 1.4000000019496929e+01 0 0 0 +12096 1 -1.2264313782167149e+00 5.3375128876992434e+01 1.0499999979471426e+01 0 0 0 +12099 1 -2.5187339261005768e+00 5.1097566217335903e+01 1.0499999988556269e+01 0 0 0 +12097 1 -3.1035850249046062e+00 5.2822744879759512e+01 1.2249999982227207e+01 0 0 0 +12101 1 -1.0571059252957042e+00 5.1740483914117007e+01 1.2249999991192878e+01 0 0 0 +11541 1 -4.3452487212300049e+01 5.5901335923127135e+01 1.2250000021155884e+01 0 0 0 +12182 1 -4.2891315252387500e+01 5.4243832660508772e+01 1.4000000002754694e+01 0 0 0 +12181 1 -4.5136003288208464e+01 5.5339859607892073e+01 1.4000000022295319e+01 0 0 0 +11570 1 -4.1207799285043585e+01 5.4805308964514900e+01 1.2250000001289154e+01 0 0 0 +12211 1 -4.1768971155620349e+01 5.6462812152158605e+01 1.4000000015736582e+01 0 0 0 +12212 1 -3.9524283347742887e+01 5.5366785197210731e+01 1.4000000002501233e+01 0 0 0 +11613 1 -3.7840767454182910e+01 5.5928261441359439e+01 1.2249999996114864e+01 0 0 0 +11618 1 -3.5596079675916108e+01 5.4832234546546530e+01 1.2249999981113964e+01 0 0 0 +12258 1 -3.7279595464676092e+01 5.4270758218809291e+01 1.3999999959574303e+01 0 0 0 +12255 1 -3.6157251517989494e+01 5.6489737700043939e+01 1.3999999959716224e+01 0 0 0 +12310 1 -3.3912563619185889e+01 5.5393710966689682e+01 1.3999999981733856e+01 0 0 0 +11670 1 -3.2229047642166748e+01 5.5955187505017115e+01 1.2249999975058362e+01 0 0 0 +11719 1 -3.0545531682155183e+01 5.6516664229164483e+01 1.0499999973241190e+01 0 0 0 +11721 1 -2.9984359563993362e+01 5.4859161125914326e+01 1.2250000000535399e+01 0 0 0 +11773 1 -2.6617327721730135e+01 5.5982114379076791e+01 1.2250000023926612e+01 0 0 0 +11775 1 -2.6056155586684564e+01 5.4324611094762631e+01 1.0499999993986041e+01 0 0 0 +12363 1 -2.8300843637820417e+01 5.5420637786351179e+01 1.4000000032762715e+01 0 0 0 +11827 1 -2.2689123869279374e+01 5.5447564278527764e+01 1.0500000001598282e+01 0 0 0 +11778 1 -2.4372639866054488e+01 5.4886087644010644e+01 1.2249999998661872e+01 0 0 0 +11830 1 -2.1005606466124053e+01 5.6009040224728892e+01 1.2250000021347093e+01 0 0 0 +12471 1 -2.0444436764359221e+01 5.4351538306025134e+01 1.4000000026051428e+01 0 0 0 +11880 1 -1.7077391344193142e+01 5.5474483185200462e+01 1.0500000007751286e+01 0 0 0 +11881 1 -1.8760915536454942e+01 5.4913013439248950e+01 1.2250000010416130e+01 0 0 0 +12522 1 -1.9322089400441442e+01 5.6570515162476859e+01 1.4000000000727495e+01 0 0 0 +11933 1 -1.5393907930447869e+01 5.6035963291669070e+01 1.2249999970371920e+01 0 0 0 +11938 1 -1.3149237254635548e+01 5.4939905455393145e+01 1.2249999982049852e+01 0 0 0 +12575 1 -1.3710491238065952e+01 5.6597497973055390e+01 1.3999999980982414e+01 0 0 0 +12578 1 -1.4832658229515321e+01 5.4378435640827554e+01 1.3999999979108390e+01 0 0 0 +11987 1 -1.1466172488778257e+01 5.5501601461517687e+01 1.0499999964521367e+01 0 0 0 +11990 1 -9.7824041128648975e+00 5.6063375092692162e+01 1.2249999994265922e+01 0 0 0 +12041 1 -7.5396995596440224e+00 5.4969217561479134e+01 1.2250000010018416e+01 0 0 0 +12631 1 -9.2228640520099479e+00 5.4405947739204464e+01 1.4000000054879465e+01 0 0 0 +12682 1 -8.0950138680719022e+00 5.6623342499748006e+01 1.4000000049642866e+01 0 0 0 +12040 1 -5.8404165790401068e+00 5.5526511372150438e+01 1.0500000014972565e+01 0 0 0 +12093 1 -4.1395809269490433e+00 5.6072523794074250e+01 1.2250000042946612e+01 0 0 0 +12738 1 -3.5610864044863111e+00 5.4428595958085104e+01 1.3999999991167707e+01 0 0 0 +12539 1 -2.3811468967547889e+01 8.6432499726921989e+01 1.3999999988679850e+01 0 0 0 +12098 1 -1.7224970395723351e+00 5.4974541360537479e+01 1.2249999973061943e+01 0 0 0 +12735 1 -2.5187337892141306e+00 5.6631551058671022e+01 1.3999999987484792e+01 0 0 0 +11537 1 -4.4574831243129850e+01 5.9216342232926969e+01 1.2250000025441699e+01 0 0 0 +11566 1 -4.2330143165556109e+01 5.8120315402307988e+01 1.2250000023833211e+01 0 0 0 +12179 1 -4.4013659218553272e+01 5.7558839132251123e+01 1.4000000038689873e+01 0 0 0 +12207 1 -4.2891315130425482e+01 5.9777818468787657e+01 1.4000000032327486e+01 0 0 0 +11571 1 -4.0085455242038329e+01 5.7024288487843258e+01 1.2250000020043631e+01 0 0 0 +11609 1 -3.8963111252014649e+01 5.9243267891713515e+01 1.2249999997205727e+01 0 0 0 +12208 1 -4.0646627179372352e+01 5.8681791703648493e+01 1.3999999985518061e+01 0 0 0 +11614 1 -3.6718423370539057e+01 5.8147240997846623e+01 1.2249999977393493e+01 0 0 0 +12251 1 -3.7279595389289966e+01 5.9804744238062170e+01 1.3999999985228444e+01 0 0 0 +12254 1 -3.8401939309891873e+01 5.7585764698862320e+01 1.3999999981289696e+01 0 0 0 +11665 1 -3.4473735576621316e+01 5.7051214134082997e+01 1.2249999979195826e+01 0 0 0 +11666 1 -3.3351391656303541e+01 5.9270193846812383e+01 1.2249999988016432e+01 0 0 0 +12307 1 -3.2790219693855967e+01 5.7612690679183736e+01 1.3999999988957953e+01 0 0 0 +12306 1 -3.5034907475116349e+01 5.8708717231754029e+01 1.3999999975490303e+01 0 0 0 +11716 1 -2.9423187752798199e+01 5.8735643935752051e+01 1.0499999985786223e+01 0 0 0 +11717 1 -3.1106703646810406e+01 5.8174167276387756e+01 1.2249999991465176e+01 0 0 0 +12358 1 -3.1667875588432498e+01 5.9831670353232688e+01 1.3999999999955390e+01 0 0 0 +11722 1 -2.8862015706579552e+01 5.7078140912734625e+01 1.2249999994524858e+01 0 0 0 +11769 1 -2.7739671632538180e+01 5.9297120519591090e+01 1.2250000005816853e+01 0 0 0 +12411 1 -2.6056155669457429e+01 5.9858596974064938e+01 1.4000000035834189e+01 0 0 0 +12414 1 -2.7178499759735072e+01 5.7639617430255413e+01 1.4000000026634988e+01 0 0 0 +11774 1 -2.5494983663248735e+01 5.8201093871032924e+01 1.2250000014343204e+01 0 0 0 +11825 1 -2.3250295416270045e+01 5.7105067029232359e+01 1.2250000014871029e+01 0 0 0 +12466 1 -2.3811467651840587e+01 5.8762570236754890e+01 1.4000000016555024e+01 0 0 0 +11824 1 -2.1566779396807025e+01 5.7666543227352015e+01 1.0500000020683785e+01 0 0 0 +11875 1 -2.0444436891661546e+01 5.9885524097787581e+01 1.0499999991207982e+01 0 0 0 +11826 1 -2.2127952524247043e+01 5.9324046887676097e+01 1.2249999977816092e+01 0 0 0 +11877 1 -1.9883266193813004e+01 5.8228020547722750e+01 1.2250000005561214e+01 0 0 0 +11882 1 -1.7638583399293932e+01 5.7131993982244445e+01 1.2249999977848175e+01 0 0 0 +11929 1 -1.6516219457373577e+01 5.9350974039054904e+01 1.2250000030138457e+01 0 0 0 +12519 1 -1.8199753520015399e+01 5.8789500412884927e+01 1.3999999991110199e+01 0 0 0 +11928 1 -1.4832658279359633e+01 5.9912421269898289e+01 1.0500000001526628e+01 0 0 0 +11931 1 -1.5955087075105007e+01 5.7693484990271735e+01 1.0499999995211731e+01 0 0 0 +11934 1 -1.4271514536087468e+01 5.8254960161286178e+01 1.2249999972021158e+01 0 0 0 +11984 1 -1.0342363762845357e+01 5.7720060797140050e+01 1.0499999987891975e+01 0 0 0 +11985 1 -1.2026826702889732e+01 5.7159010785592997e+01 1.2250000009150760e+01 0 0 0 +11986 1 -1.0904485579240236e+01 5.9377691366140638e+01 1.2250000014956454e+01 0 0 0 +12626 1 -1.2587782772613693e+01 5.8816321230673267e+01 1.3999999999658066e+01 0 0 0 +12035 1 -9.2228639337620724e+00 5.9939933081055031e+01 1.0499999975552509e+01 0 0 0 +12037 1 -8.6590369422109177e+00 5.8280834042645608e+01 1.2250000029381178e+01 0 0 0 +12679 1 -6.9829708183166952e+00 5.8844477107433619e+01 1.4000000044733204e+01 0 0 0 +12088 1 -3.5610862673123158e+00 5.9962581001524697e+01 1.0500000004039901e+01 0 0 0 +12091 1 -4.7485638630416744e+00 5.7748678118264742e+01 1.0500000001923858e+01 0 0 0 +12042 1 -6.4095228661592181e+00 5.7181180466745168e+01 1.2250000012910066e+01 0 0 0 +12089 1 -5.3078135736920453e+00 5.9413291142928344e+01 1.2250000004574023e+01 0 0 0 +12094 1 -3.1035848880597143e+00 5.8356729824777730e+01 1.2250000016038994e+01 0 0 0 +12140 1 -1.0571059630022317e+00 5.7274468706405202e+01 1.2249999950124762e+01 0 0 0 +12782 1 -1.2264313295952907e+00 5.8909113645451555e+01 1.4000000017365899e+01 0 0 0 +12178 1 -4.5136003205721707e+01 6.0873845323203938e+01 1.4000000040738739e+01 0 0 0 +11562 1 -4.3452487153899206e+01 6.1435321680653644e+01 1.2250000031575849e+01 0 0 0 +12203 1 -4.4013659144950708e+01 6.3092824775102279e+01 1.4000000036755793e+01 0 0 0 +11567 1 -4.1207799171186018e+01 6.0339294838088406e+01 1.2250000024599386e+01 0 0 0 +11605 1 -4.0085455141589243e+01 6.2558274341403425e+01 1.2249999989848881e+01 0 0 0 +12250 1 -3.9524283248316380e+01 6.0900771148060194e+01 1.3999999977197948e+01 0 0 0 +12204 1 -4.1768971096712555e+01 6.1996797929307640e+01 1.4000000010956375e+01 0 0 0 +11610 1 -3.7840767359559145e+01 6.1462247445101056e+01 1.2249999987250321e+01 0 0 0 +11661 1 -3.5596079592665937e+01 6.0366220545248602e+01 1.2249999963872760e+01 0 0 0 +12247 1 -3.8401939205150853e+01 6.3119750596165588e+01 1.3999999964573490e+01 0 0 0 +12302 1 -3.6157251422582668e+01 6.2023723691341630e+01 1.3999999970950592e+01 0 0 0 +11662 1 -3.4473735480217066e+01 6.2585200088482161e+01 1.2249999983022862e+01 0 0 0 +12354 1 -3.2790219616708725e+01 6.3146676593656956e+01 1.4000000001873135e+01 0 0 0 +12303 1 -3.3912563579775288e+01 6.0927696926056711e+01 1.3999999977487450e+01 0 0 0 +11713 1 -3.2229047639388796e+01 6.1489173408362298e+01 1.2250000027866067e+01 0 0 0 +11718 1 -2.9984359637234103e+01 6.0393147003231164e+01 1.2249999995460630e+01 0 0 0 +12355 1 -3.0545531690715816e+01 6.2050650059867060e+01 1.4000000022579396e+01 0 0 0 +11764 1 -2.7178499799154903e+01 6.3173603149874992e+01 1.0499999973681168e+01 0 0 0 +11765 1 -2.8862015730495873e+01 6.2612126689048878e+01 1.2250000009944092e+01 0 0 0 +11767 1 -2.8300843709543134e+01 6.0954623579536928e+01 1.0499999970565590e+01 0 0 0 +11770 1 -2.6617327770665014e+01 6.1516100172500757e+01 1.2249999976090985e+01 0 0 0 +11821 1 -2.4372639966798786e+01 6.0420073462318200e+01 1.2250000019937669e+01 0 0 0 +11822 1 -2.3250295493723915e+01 6.2639052794675301e+01 1.2249999975683000e+01 0 0 0 +12463 1 -2.2689123954413358e+01 6.0981550062666336e+01 1.3999999995317557e+01 0 0 0 +12462 1 -2.4933811692070968e+01 6.2077576541254295e+01 1.3999999990014176e+01 0 0 0 +11873 1 -2.1005606588476923e+01 6.1543025992714092e+01 1.2249999984787715e+01 0 0 0 +12514 1 -2.1566779495488863e+01 6.3200528979566641e+01 1.3999999977577399e+01 0 0 0 +11872 1 -1.9322089518982864e+01 6.2104500951250344e+01 1.0500000007750087e+01 0 0 0 +11878 1 -1.8760915637488878e+01 6.0446999174278680e+01 1.2250000011387652e+01 0 0 0 +11925 1 -1.7638583507479701e+01 6.2665979736306902e+01 1.2250000013229691e+01 0 0 0 +12570 1 -1.7077391448202718e+01 6.1008468858094901e+01 1.3999999969517908e+01 0 0 0 +11979 1 -1.3710491263530869e+01 6.2131483607577692e+01 1.0500000002076014e+01 0 0 0 +11930 1 -1.5393908000999957e+01 6.1569948973325850e+01 1.2250000016972407e+01 0 0 0 +11981 1 -1.3149237259395372e+01 6.0473890995567892e+01 1.2249999992504195e+01 0 0 0 +12567 1 -1.5955087140127349e+01 6.3227470684195048e+01 1.3999999999393742e+01 0 0 0 +11982 1 -1.2026826647311601e+01 6.2692996339874490e+01 1.2250000002665287e+01 0 0 0 +12033 1 -9.7824039952320465e+00 6.1597360533204295e+01 1.2250000036640122e+01 0 0 0 +12623 1 -1.1466172448907100e+01 6.1035586935495218e+01 1.4000000034171743e+01 0 0 0 +12674 1 -1.0342363656996513e+01 6.3254046304363641e+01 1.4000000028216229e+01 0 0 0 +12032 1 -8.0950137163909712e+00 6.2157327856654241e+01 1.0499999975207846e+01 0 0 0 +12038 1 -7.5396993820234091e+00 6.0503202883878657e+01 1.2250000026143560e+01 0 0 0 +12085 1 -6.4095226833001622e+00 6.2715165830637986e+01 1.2250000006097766e+01 0 0 0 +12090 1 -4.1395807663582351e+00 6.1606508956508506e+01 1.2249999972749967e+01 0 0 0 +12730 1 -5.8404163431555940e+00 6.1060496642282750e+01 1.4000000013670164e+01 0 0 0 +12727 1 -4.7485636446876454e+00 6.3282663458319483e+01 1.4000000001049026e+01 0 0 0 +12540 1 -2.5494984949178161e+01 8.5871023049631461e+01 1.5749999992150245e+01 0 0 0 +12135 1 -2.5187337111884633e+00 6.2165536132179504e+01 1.0499999964875125e+01 0 0 0 +12137 1 -1.7224968781827628e+00 6.0508526252643449e+01 1.2250000027694426e+01 0 0 0 +12138 1 -1.0571058793032408e+00 6.2808453731552220e+01 1.2250000057501017e+01 0 0 0 +11558 1 -4.4574831248511551e+01 6.4750327895076595e+01 1.2249999995408697e+01 0 0 0 +11563 1 -4.2330143158911518e+01 6.3654301132458542e+01 1.2249999997834037e+01 0 0 0 +12200 1 -4.2891315179629423e+01 6.5311804186879840e+01 1.4000000006986971e+01 0 0 0 +11601 1 -4.1207799175546178e+01 6.5873280575731570e+01 1.2249999992724545e+01 0 0 0 +11606 1 -3.8963111170107510e+01 6.4777253743233430e+01 1.2249999972481243e+01 0 0 0 +12246 1 -4.0646627135456733e+01 6.4215777507850532e+01 1.3999999996752042e+01 0 0 0 +11657 1 -3.6718423258023307e+01 6.3681226939706782e+01 1.2250000003559304e+01 0 0 0 +11658 1 -3.5596079472196834e+01 6.5900206479103787e+01 1.2250000009878006e+01 0 0 0 +12298 1 -3.7279595287991583e+01 6.5338730146122415e+01 1.3999999969917097e+01 0 0 0 +11709 1 -3.3351391564708912e+01 6.4804179757530392e+01 1.2249999981774916e+01 0 0 0 +12299 1 -3.5034907406015215e+01 6.4242703208201206e+01 1.3999999983582951e+01 0 0 0 +11708 1 -3.1667875525715345e+01 6.5365656171569739e+01 1.0499999997092708e+01 0 0 0 +11714 1 -3.1106703590120969e+01 6.3708153093962366e+01 1.2249999999609580e+01 0 0 0 +11761 1 -2.9984359590950493e+01 6.5927132763611922e+01 1.2250000010152823e+01 0 0 0 +12406 1 -2.9423187705287184e+01 6.4269629721620078e+01 1.4000000017487212e+01 0 0 0 +11766 1 -2.7739671631545484e+01 6.4831106257484507e+01 1.2249999982878641e+01 0 0 0 +11815 1 -2.6056155714941923e+01 6.5392582670931631e+01 1.0499999967109238e+01 0 0 0 +11816 1 -2.3811467735874494e+01 6.4296555969915147e+01 1.0499999975319957e+01 0 0 0 +11817 1 -2.5494983714289162e+01 6.3735079611942680e+01 1.2249999953245355e+01 0 0 0 +11818 1 -2.4372640004936880e+01 6.5954059188122812e+01 1.2249999952046762e+01 0 0 0 +11869 1 -2.2127952609849228e+01 6.4858032648477177e+01 1.2249999993923618e+01 0 0 0 +11874 1 -1.9883266293132674e+01 6.3762006323077578e+01 1.2249999987868083e+01 0 0 0 +12511 1 -2.0444436961158718e+01 6.5419509856077397e+01 1.3999999994139586e+01 0 0 0 +11923 1 -1.8199753620352819e+01 6.4323486187293256e+01 1.0499999997238604e+01 0 0 0 +11921 1 -1.8760915722626322e+01 6.5980984948587192e+01 1.2249999994452283e+01 0 0 0 +11926 1 -1.6516219507418995e+01 6.4884959781024179e+01 1.2249999989154489e+01 0 0 0 +11977 1 -1.4271514565874645e+01 6.3788945836682117e+01 1.2250000041992816e+01 0 0 0 +11978 1 -1.3149237263665198e+01 6.6007876676808664e+01 1.2250000035970062e+01 0 0 0 +12618 1 -1.4832658290783577e+01 6.5446406950012019e+01 1.3999999997249049e+01 0 0 0 +11976 1 -1.2587782749522965e+01 6.4350306856192503e+01 1.0499999996294925e+01 0 0 0 +12029 1 -1.0904485522422046e+01 6.4911676927674378e+01 1.2250000021130369e+01 0 0 0 +12034 1 -8.6590368022557378e+00 6.3814819504252895e+01 1.2250000003283821e+01 0 0 0 +12081 1 -7.5396993008382518e+00 6.6037188421871846e+01 1.2249999992014029e+01 0 0 0 +12083 1 -6.9829707023196272e+00 6.4378462536083106e+01 1.0499999962472184e+01 0 0 0 +12671 1 -9.2228638232142011e+00 6.5473918640135892e+01 1.4000000029829328e+01 0 0 0 +12086 1 -5.3078134443526048e+00 6.4947276582300347e+01 1.2249999994798301e+01 0 0 0 +12774 1 -3.5610861790697870e+00 6.5496566422393670e+01 1.3999999979962642e+01 0 0 0 +12132 1 -1.2264313369248883e+00 6.4443098827832600e+01 1.0499999987354425e+01 0 0 0 +12133 1 -3.1035848219364324e+00 6.3890715145674392e+01 1.2249999990208073e+01 0 0 0 +12134 1 -1.7224968222222001e+00 6.6042511582514280e+01 1.2249999999145334e+01 0 0 0 +11559 1 -4.3452487180512698e+01 6.6969307350369434e+01 1.2250000009293089e+01 0 0 0 +11597 1 -4.2330143152646642e+01 6.9188286787269732e+01 1.2249999999222656e+01 0 0 0 +12197 1 -4.4013659209958149e+01 6.8626810506890521e+01 1.4000000023600336e+01 0 0 0 +12199 1 -4.5136003242384156e+01 6.6407831021037438e+01 1.4000000028126019e+01 0 0 0 +12243 1 -3.9524283229451456e+01 6.6434756914545190e+01 1.3999999989527840e+01 0 0 0 +11602 1 -4.0085455128390230e+01 6.8092260051384343e+01 1.2250000006567655e+01 0 0 0 +12242 1 -4.1768971111921289e+01 6.7530783635584200e+01 1.4000000004162299e+01 0 0 0 +11653 1 -3.7840767282788079e+01 6.6996233266233872e+01 1.2249999996412706e+01 0 0 0 +11654 1 -3.6718423157296137e+01 6.9215212786226175e+01 1.2249999967288014e+01 0 0 0 +12294 1 -3.8401939167091726e+01 6.8653736398760572e+01 1.3999999985819796e+01 0 0 0 +12295 1 -3.6157251301658285e+01 6.7557709558774732e+01 1.3999999976453967e+01 0 0 0 +11705 1 -3.4473735352131563e+01 6.8119185977641777e+01 1.2249999999477206e+01 0 0 0 +12347 1 -3.2790219507180858e+01 6.8680662434407438e+01 1.4000000005538142e+01 0 0 0 +12350 1 -3.3912563469176092e+01 6.6461682849278930e+01 1.3999999989493530e+01 0 0 0 +11710 1 -3.2229047528475853e+01 6.7023159255427331e+01 1.2249999979842569e+01 0 0 0 +11757 1 -3.1106703510648920e+01 6.9242138879210046e+01 1.2249999977615614e+01 0 0 0 +11759 1 -3.0545531633614466e+01 6.7584635836306987e+01 1.0499999977132994e+01 0 0 0 +11762 1 -2.8862015685014352e+01 6.8146112391883150e+01 1.2249999989829311e+01 0 0 0 +11813 1 -2.6617327783213330e+01 6.7050085849462874e+01 1.2249999998881341e+01 0 0 0 +12403 1 -2.8300843659481814e+01 6.6488609308155020e+01 1.4000000016737687e+01 0 0 0 +12454 1 -2.7178499747520394e+01 6.8707588836533731e+01 1.4000000016645446e+01 0 0 0 +11867 1 -2.2689124024546597e+01 6.6515535817071026e+01 1.0499999970720197e+01 0 0 0 +11812 1 -2.4933811726500526e+01 6.7611562244736902e+01 1.0499999979629395e+01 0 0 0 +11814 1 -2.5494983704501880e+01 6.9269065288265395e+01 1.2250000015225456e+01 0 0 0 +11865 1 -2.3250295506566818e+01 6.8173038514009065e+01 1.2249999993063916e+01 0 0 0 +11864 1 -2.1566779533537122e+01 6.8734514761573053e+01 1.0500000000515119e+01 0 0 0 +11870 1 -2.1005606623515714e+01 6.7077011757533398e+01 1.2250000000046484e+01 0 0 0 +11917 1 -1.9883266339703493e+01 6.9295992105776989e+01 1.2250000003782043e+01 0 0 0 +11920 1 -1.7077391510643658e+01 6.6542454648321453e+01 1.0500000005279157e+01 0 0 0 +11922 1 -1.7638583556638526e+01 6.8199965514103397e+01 1.2249999983959739e+01 0 0 0 +12562 1 -1.9322089546569579e+01 6.7638486700077678e+01 1.3999999999102650e+01 0 0 0 +11971 1 -1.5955087237987302e+01 6.8761456510286337e+01 1.0499999995653074e+01 0 0 0 +11973 1 -1.5393908040487487e+01 6.7103934712123220e+01 1.2250000012505357e+01 0 0 0 +11974 1 -1.4271514661039097e+01 6.9322931642881287e+01 1.2249999972843115e+01 0 0 0 +12615 1 -1.3710491269967338e+01 6.7665469322560369e+01 1.3999999990996802e+01 0 0 0 +12027 1 -1.1466172458432023e+01 6.6569572597559798e+01 1.0499999990035619e+01 0 0 0 +12024 1 -1.0342363761129329e+01 6.8788032035549023e+01 1.0500000005420327e+01 0 0 0 +12025 1 -1.2026826718892831e+01 6.8226982074417919e+01 1.2250000025547944e+01 0 0 0 +12030 1 -9.7824040026182715e+00 6.7131346179931469e+01 1.2249999989547344e+01 0 0 0 +12077 1 -8.6590369055598213e+00 6.9348805252955117e+01 1.2250000000957344e+01 0 0 0 +12722 1 -8.0950136966447719e+00 6.7691313510929788e+01 1.4000000008826792e+01 0 0 0 +12080 1 -5.8404163250279666e+00 6.6594482160587475e+01 1.0499999982148481e+01 0 0 0 +12082 1 -6.4095227071815266e+00 6.8249151481446177e+01 1.2249999987127964e+01 0 0 0 +12127 1 -4.7485637188221874e+00 6.8816649080050624e+01 1.0499999988458496e+01 0 0 0 +12129 1 -4.1395807615470872e+00 6.7140494493003018e+01 1.2250000012533979e+01 0 0 0 +12541 1 -2.4372641492865487e+01 8.8090002962112194e+01 1.5749999964134972e+01 0 0 0 +12130 1 -3.1035848761231910e+00 6.9424700784398155e+01 1.2250000017807103e+01 0 0 0 +12162 1 -1.0571059423309590e+00 6.8342439177734121e+01 1.2249999979051806e+01 0 0 0 +12771 1 -2.5187337446009006e+00 6.7699521626030389e+01 1.4000000029196739e+01 0 0 0 +11555 1 -4.4574831232542763e+01 7.0284313615944185e+01 1.2249999984323710e+01 0 0 0 +11593 1 -4.3452487117259828e+01 7.2503293091339515e+01 1.2250000011432924e+01 0 0 0 +12196 1 -4.5136003182109654e+01 7.1941816819689691e+01 1.4000000036746558e+01 0 0 0 +12238 1 -4.2891315115658600e+01 7.0845789878760471e+01 1.4000000032629794e+01 0 0 0 +11598 1 -4.1207799122715763e+01 7.1407266254764338e+01 1.2250000012831542e+01 0 0 0 +11649 1 -3.8963111120588195e+01 7.0311239472654222e+01 1.2249999993381413e+01 0 0 0 +12239 1 -4.0646627125604248e+01 6.9749763199581167e+01 1.4000000006456144e+01 0 0 0 +12290 1 -3.9524283152059375e+01 7.1968742641085839e+01 1.3999999983177755e+01 0 0 0 +11650 1 -3.7840767205336078e+01 7.2530219026617431e+01 1.2249999985575831e+01 0 0 0 +11701 1 -3.5596079345957854e+01 7.1434192297810341e+01 1.2249999948452995e+01 0 0 0 +12291 1 -3.7279595198664886e+01 7.0872715933144065e+01 1.3999999986653970e+01 0 0 0 +11700 1 -3.3912563360272884e+01 7.1995668653359601e+01 1.0499999980873172e+01 0 0 0 +11706 1 -3.3351391422996294e+01 7.0338165599825174e+01 1.2249999987738430e+01 0 0 0 +12346 1 -3.5034907217561120e+01 6.9776689044818994e+01 1.3999999990105980e+01 0 0 0 +11756 1 -2.9423187672971380e+01 6.9803615394770105e+01 1.0499999979013612e+01 0 0 0 +11753 1 -3.2229047449138250e+01 7.2557145049121743e+01 1.2250000013899990e+01 0 0 0 +11758 1 -2.9984359534474983e+01 7.1461118478794475e+01 1.2249999993457807e+01 0 0 0 +12398 1 -3.1667875402024610e+01 7.0899641971113653e+01 1.4000000001619064e+01 0 0 0 +11807 1 -2.8300843659415410e+01 7.2022594980386742e+01 1.0499999975623814e+01 0 0 0 +11809 1 -2.7739671597038782e+01 7.0365091909803539e+01 1.2250000013031416e+01 0 0 0 +11810 1 -2.6617327793594306e+01 7.2584071528089353e+01 1.2249999996171802e+01 0 0 0 +12451 1 -2.6056155680038458e+01 7.0926568333869710e+01 1.4000000011784168e+01 0 0 0 +11861 1 -2.4372640036312109e+01 7.1488044893053839e+01 1.2250000042232640e+01 0 0 0 +12503 1 -2.2689124032249964e+01 7.2049521581645109e+01 1.4000000016337552e+01 0 0 0 +12506 1 -2.3811467709766934e+01 6.9830541675071132e+01 1.4000000012403277e+01 0 0 0 +11915 1 -2.0444437046218123e+01 7.0953495691223395e+01 1.0499999983429980e+01 0 0 0 +11866 1 -2.2127952617977403e+01 7.0392018402074129e+01 1.2249999983653895e+01 0 0 0 +11913 1 -2.1005606710322024e+01 7.2610997594275190e+01 1.2250000000431248e+01 0 0 0 +11918 1 -1.8760915825098614e+01 7.1514970794334246e+01 1.2250000005861205e+01 0 0 0 +11969 1 -1.6516219643706808e+01 7.0418945616827401e+01 1.2250000013918555e+01 0 0 0 +12559 1 -1.8199753663290451e+01 6.9857471987197926e+01 1.4000000004351728e+01 0 0 0 +12610 1 -1.7077391645787216e+01 7.2076440518897485e+01 1.3999999985882905e+01 0 0 0 +11968 1 -1.4832658477817116e+01 7.0980392846473592e+01 1.0499999996758595e+01 0 0 0 +11970 1 -1.5393908255273097e+01 7.2637920669378559e+01 1.2250000001793461e+01 0 0 0 +12021 1 -1.3149237446323761e+01 7.1541862590916239e+01 1.2249999985905575e+01 0 0 0 +12026 1 -1.0904485678175718e+01 7.0445662794719709e+01 1.2250000008664593e+01 0 0 0 +12073 1 -9.7824041950869010e+00 7.2665332127058633e+01 1.2250000027759535e+01 0 0 0 +12663 1 -1.1466172634552414e+01 7.2103558534099236e+01 1.3999999989537532e+01 0 0 0 +12666 1 -1.2587782841781952e+01 6.9884292685710463e+01 1.3999999981744326e+01 0 0 0 +12075 1 -9.2228640159978177e+00 7.1007904490177211e+01 1.0499999991535349e+01 0 0 0 +12078 1 -7.5396994727192022e+00 7.1571174279341292e+01 1.2250000016403526e+01 0 0 0 +12719 1 -6.9829707761142412e+00 6.9912448293707385e+01 1.4000000017248752e+01 0 0 0 +12124 1 -3.5610862920720554e+00 7.1030552147044403e+01 1.0500000007522139e+01 0 0 0 +12125 1 -5.3078135361892214e+00 7.0481262305808869e+01 1.2249999999191859e+01 0 0 0 +12126 1 -4.1395809112145701e+00 7.2674480310559574e+01 1.2249999970744158e+01 0 0 0 +12766 1 -5.8404164633183777e+00 7.2128467986941772e+01 1.4000000015793397e+01 0 0 0 +9967 1 -2.3811468986641938e+01 8.6432499671294721e+01 1.7499999964247380e+01 0 0 -1 +12159 1 -1.7224969123230869e+00 7.1576497293615660e+01 1.2250000049208442e+01 0 0 0 +12136 1 -1.2264313826657556e+00 6.9977084395210568e+01 1.4000000047504885e+01 0 0 0 +11589 1 -4.4574831173094459e+01 7.5818299501725690e+01 1.2249999974942227e+01 0 0 0 +11594 1 -4.2330143119504562e+01 7.4722272572319369e+01 1.2249999984965063e+01 0 0 0 +12234 1 -4.4013659108247943e+01 7.4160796292687976e+01 1.4000000038967926e+01 0 0 0 +11645 1 -4.0085455082249631e+01 7.3626245776240253e+01 1.2249999978884912e+01 0 0 0 +11646 1 -3.8963111128837227e+01 7.5845225211734729e+01 1.2249999962459995e+01 0 0 0 +12286 1 -4.0646627086898789e+01 7.5283748977230829e+01 1.4000000000378112e+01 0 0 0 +12235 1 -4.1768971056538952e+01 7.3064769357815493e+01 1.4000000010441349e+01 0 0 0 +11697 1 -3.6718423131403846e+01 7.4749198549660576e+01 1.2249999986627456e+01 0 0 0 +12287 1 -3.8401939083991948e+01 7.4187722138652362e+01 1.3999999957623857e+01 0 0 0 +12342 1 -3.6157251217080102e+01 7.3091695374836533e+01 1.3999999968641715e+01 0 0 0 +11702 1 -3.4473735268529609e+01 7.3653171781049821e+01 1.2249999957123219e+01 0 0 0 +11749 1 -3.3351391486975167e+01 7.5872151412710338e+01 1.2249999961736645e+01 0 0 0 +11751 1 -3.2790219477922605e+01 7.4214648252373735e+01 1.0499999977598936e+01 0 0 0 +12339 1 -3.5034907265289647e+01 7.5310674866299195e+01 1.3999999980066891e+01 0 0 0 +11754 1 -3.1106703537520143e+01 7.4776124656155389e+01 1.2249999986523200e+01 0 0 0 +12395 1 -3.0545531585919996e+01 7.3118621574652494e+01 1.4000000023079769e+01 0 0 0 +12446 1 -2.9423187761695615e+01 7.5337601184057107e+01 1.4000000018364604e+01 0 0 0 +11804 1 -2.7178499851713106e+01 7.4241574556053720e+01 1.0499999986535512e+01 0 0 0 +11805 1 -2.8862015712404421e+01 7.3680098113024357e+01 1.2250000008068712e+01 0 0 0 +11806 1 -2.7739671770851348e+01 7.5899077706650687e+01 1.2249999991374104e+01 0 0 0 +11856 1 -2.3811467917793681e+01 7.5364527534380088e+01 1.0500000010445829e+01 0 0 0 +11857 1 -2.5494983831027440e+01 7.4803051061493107e+01 1.2249999982905612e+01 0 0 0 +11862 1 -2.3250295617667852e+01 7.3707024335259305e+01 1.2250000006228992e+01 0 0 0 +12502 1 -2.4933811765571846e+01 7.3145547969005733e+01 1.3999999990834256e+01 0 0 0 +11909 1 -2.2127952829423919e+01 7.5926004333288432e+01 1.2250000005647761e+01 0 0 0 +11914 1 -1.9883266517070755e+01 7.4829978061400624e+01 1.2249999990187556e+01 0 0 0 +12554 1 -2.1566779649548359e+01 7.4268500610032802e+01 1.3999999988502177e+01 0 0 0 +11912 1 -1.9322089733306569e+01 7.3172472630902803e+01 1.0499999983273334e+01 0 0 0 +11963 1 -1.8199753938900152e+01 7.5391458011420966e+01 1.0499999973110175e+01 0 0 0 +11965 1 -1.7638583768884260e+01 7.3733951475965071e+01 1.2250000008690327e+01 0 0 0 +11966 1 -1.6516219917124207e+01 7.5952931676348001e+01 1.2249999993078342e+01 0 0 0 +12019 1 -1.3710491526562212e+01 7.3199455347971195e+01 1.0500000012068014e+01 0 0 0 +12017 1 -1.4271514935119544e+01 7.4856917688003875e+01 1.2250000035235324e+01 0 0 0 +12607 1 -1.5955087455400783e+01 7.4295442481791625e+01 1.4000000005295377e+01 0 0 0 +12016 1 -1.2587783143800049e+01 7.5418278766191918e+01 1.0500000034984701e+01 0 0 0 +12022 1 -1.2026826961397949e+01 7.3760968112622194e+01 1.2249999990686142e+01 0 0 0 +12069 1 -1.0904485963873260e+01 7.5979648886712255e+01 1.2250000028857228e+01 0 0 0 +12714 1 -1.0342363991779697e+01 7.4322018090033453e+01 1.3999999994962536e+01 0 0 0 +12072 1 -8.0950139273017321e+00 7.3225299424932558e+01 1.0500000006169390e+01 0 0 0 +12119 1 -6.9829710659444135e+00 7.5446434261613163e+01 1.0499999968834720e+01 0 0 0 +12074 1 -8.6590371540138662e+00 7.4882791278447925e+01 1.2249999997238161e+01 0 0 0 +12121 1 -6.4095229295090448e+00 7.3783137389170491e+01 1.2250000003344640e+01 0 0 0 +12122 1 -5.3078138293299162e+00 7.6015248270533661e+01 1.2249999993397839e+01 0 0 0 +12763 1 -4.7485639248927685e+00 7.4350634961546817e+01 1.4000000030758898e+01 0 0 0 +12155 1 -1.2264314965838523e+00 7.5511070251309690e+01 1.0499999986408477e+01 0 0 0 +12158 1 -2.5187338936147672e+00 7.3233507413073099e+01 1.0500000016279266e+01 0 0 0 +12156 1 -3.1035849930624408e+00 7.4958686616748835e+01 1.2249999990048892e+01 0 0 0 +12160 1 -1.0571061104585193e+00 7.3876424976265454e+01 1.2250000062676834e+01 0 0 0 +11587 1 -4.5136003195049966e+01 7.7475802708355559e+01 1.0499999940703590e+01 0 0 0 +11590 1 -4.3452487123475628e+01 7.8037278986208833e+01 1.2250000003170085e+01 0 0 0 +12231 1 -4.2891315107612868e+01 7.6379775744554365e+01 1.4000000009837638e+01 0 0 0 +11639 1 -4.1768971150241640e+01 7.8598755212717478e+01 1.0499999986663530e+01 0 0 0 +11641 1 -4.1207799173135783e+01 7.6941252068520981e+01 1.2249999989248920e+01 0 0 0 +12283 1 -3.9524283257936027e+01 7.7502728439731030e+01 1.3999999986207039e+01 0 0 0 +11692 1 -3.6157251436093247e+01 7.8625681198004131e+01 1.0500000002937973e+01 0 0 0 +11693 1 -3.7840767345103771e+01 7.8064204814075978e+01 1.2249999970982028e+01 0 0 0 +11695 1 -3.7279595267176447e+01 7.6406701701061138e+01 1.0500000003351170e+01 0 0 0 +11698 1 -3.5596079459497069e+01 7.6968178110826813e+01 1.2249999988235656e+01 0 0 0 +12390 1 -3.3912563527973433e+01 7.7529654508262098e+01 1.3999999993949187e+01 0 0 0 +11748 1 -3.1667875544335221e+01 7.6433627779936870e+01 1.0499999963692545e+01 0 0 0 +11799 1 -3.0545531897690061e+01 7.8652607447012883e+01 1.0499999964002910e+01 0 0 0 +11750 1 -3.2229047687907652e+01 7.8091130907740634e+01 1.2249999968582264e+01 0 0 0 +11801 1 -2.9984359725399578e+01 7.6995104313446845e+01 1.2250000004525914e+01 0 0 0 +11853 1 -2.6617328111629099e+01 7.8118057394844598e+01 1.2249999998111599e+01 0 0 0 +11855 1 -2.6056155914806855e+01 7.6460554167301268e+01 1.0499999990530119e+01 0 0 0 +12443 1 -2.8300843914475685e+01 7.7556580808695287e+01 1.3999999994805881e+01 0 0 0 +11852 1 -2.4933812119970455e+01 7.8679533912396991e+01 1.0499999998540138e+01 0 0 0 +11907 1 -2.2689124340759165e+01 7.7583507569291356e+01 1.0499999981390470e+01 0 0 0 +11858 1 -2.4372640282649922e+01 7.7022030782431941e+01 1.2249999959159707e+01 0 0 0 +11910 1 -2.1005606989706312e+01 7.8144983665283817e+01 1.2249999997000208e+01 0 0 0 +12551 1 -2.0444437244118230e+01 7.6487481690957082e+01 1.4000000000239877e+01 0 0 0 +11960 1 -1.7077391960931013e+01 7.7610426652945591e+01 1.0500000002608811e+01 0 0 0 +11961 1 -1.8760916091329463e+01 7.7048956863070316e+01 1.2250000002893779e+01 0 0 0 +12602 1 -1.9322090022446439e+01 7.8706458732818248e+01 1.4000000013291496e+01 0 0 0 +12013 1 -1.5393908591590099e+01 7.8171906795588328e+01 1.2250000034515491e+01 0 0 0 +12018 1 -1.3149237770239811e+01 7.7075848721624851e+01 1.2250000047769147e+01 0 0 0 +12655 1 -1.3710491873735659e+01 7.8733441487846264e+01 1.4000000025305544e+01 0 0 0 +12658 1 -1.4832658775936345e+01 7.6514378919612440e+01 1.4000000021303752e+01 0 0 0 +12067 1 -1.1466172992491517e+01 7.7637544679398360e+01 1.0500000029376030e+01 0 0 0 +12070 1 -9.7824045580377792e+00 7.8199318279510138e+01 1.2250000005335393e+01 0 0 0 +12117 1 -7.5396997595127742e+00 7.7105160312947490e+01 1.2249999984013971e+01 0 0 0 +12711 1 -9.2228642955995941e+00 7.6541890575544656e+01 1.4000000020532406e+01 0 0 0 +12758 1 -8.0950142725936747e+00 7.8759285539158540e+01 1.4000000013204723e+01 0 0 0 +12116 1 -5.8404168011003286e+00 7.7662453975691278e+01 1.0499999960974911e+01 0 0 0 +12152 1 -4.1395812635359768e+00 7.8208466277431313e+01 1.2249999997563927e+01 0 0 0 +12797 1 -3.5610865874346054e+00 7.6564538065512380e+01 1.4000000009956066e+01 0 0 0 +12489 1 -2.7739673030508460e+01 8.6967049575818095e+01 1.5750000018093145e+01 0 0 0 +12157 1 -1.7224971959125563e+00 7.7110483213205427e+01 1.2249999974373019e+01 0 0 0 +12794 1 -2.5187342041266709e+00 7.8767493348847395e+01 1.4000000031257819e+01 0 0 0 +11585 1 -4.4013659140141989e+01 7.9694782279421759e+01 1.0499999940890358e+01 0 0 0 +11586 1 -4.4574831227689387e+01 8.1352285481324444e+01 1.2249999985227971e+01 0 0 0 +11635 1 -4.2891315240280406e+01 8.1913761661253872e+01 1.0499999971204796e+01 0 0 0 +11637 1 -4.2330143202557139e+01 8.0256258462792402e+01 1.2249999985884385e+01 0 0 0 +11636 1 -4.0646627275268422e+01 8.0817734859038282e+01 1.0500000006127786e+01 0 0 0 +11642 1 -4.0085455232472356e+01 7.9160231617663186e+01 1.2249999992965245e+01 0 0 0 +11689 1 -3.8963111428156381e+01 8.1379211111649809e+01 1.2249999994334578e+01 0 0 0 +11694 1 -3.6718423427889689e+01 8.0283184406152856e+01 1.2249999958282665e+01 0 0 0 +12334 1 -3.8401939357865118e+01 7.9721708000518561e+01 1.3999999963319485e+01 0 0 0 +11743 1 -3.5034907646073449e+01 8.0844660728381925e+01 1.0499999983516483e+01 0 0 0 +11745 1 -3.4473735561502373e+01 7.9187157635523405e+01 1.2249999993675123e+01 0 0 0 +11746 1 -3.3351391934716581e+01 8.1406137275082273e+01 1.2249999989994683e+01 0 0 0 +12387 1 -3.2790219853139156e+01 7.9748634106184980e+01 1.4000000007315306e+01 0 0 0 +11796 1 -2.9423188222181832e+01 8.0871587041630875e+01 1.0499999957283491e+01 0 0 0 +11797 1 -3.1106703962639436e+01 8.0310110522873515e+01 1.2249999985284212e+01 0 0 0 +12438 1 -3.1667876065765373e+01 8.1967613648143626e+01 1.4000000024819828e+01 0 0 0 +11802 1 -2.8862016081879300e+01 7.9214083956559151e+01 1.2249999987736638e+01 0 0 0 +11849 1 -2.7739672251553880e+01 8.1433063602267325e+01 1.2250000003142299e+01 0 0 0 +12491 1 -2.6056156420989698e+01 8.1994540119372516e+01 1.4000000000240414e+01 0 0 0 +12494 1 -2.7178500243297588e+01 7.9775560439747863e+01 1.4000000002754364e+01 0 0 0 +11854 1 -2.5494984248152821e+01 8.0337037023391289e+01 1.2249999997802700e+01 0 0 0 +11905 1 -2.3250295939192750e+01 7.9241010350551392e+01 1.2249999986656945e+01 0 0 0 +12546 1 -2.3811468309060857e+01 8.0898513570122560e+01 1.3999999966413517e+01 0 0 0 +11904 1 -2.1566780005405402e+01 7.9802486742374285e+01 1.0500000003666209e+01 0 0 0 +11955 1 -2.0444437681667271e+01 8.2021467924806927e+01 1.0500000002618251e+01 0 0 0 +11906 1 -2.2127953241034465e+01 8.1459990491584108e+01 1.2249999984291351e+01 0 0 0 +11957 1 -1.9883266877067168e+01 8.0363964229002121e+01 1.2250000004881660e+01 0 0 0 +11962 1 -1.7638584095569271e+01 7.9267937633038088e+01 1.2249999998153108e+01 0 0 0 +12009 1 -1.6516220317498835e+01 8.1486917911309149e+01 1.2250000041088828e+01 0 0 0 +12599 1 -1.8199754296270061e+01 8.0925444222306794e+01 1.4000000042734522e+01 0 0 0 +12008 1 -1.4832659215469931e+01 8.2048365184591020e+01 1.0500000025483859e+01 0 0 0 +12011 1 -1.5955087863138745e+01 7.9829428676960745e+01 1.0500000008907904e+01 0 0 0 +12014 1 -1.4271515332699833e+01 8.0390903895463239e+01 1.2250000020450008e+01 0 0 0 +12064 1 -1.0342364406889812e+01 7.9856004255416451e+01 1.0500000022782540e+01 0 0 0 +12065 1 -1.2026827336509434e+01 7.9294954279813027e+01 1.2250000052424754e+01 0 0 0 +12066 1 -1.0904486389183022e+01 8.1513635110251002e+01 1.2250000000484947e+01 0 0 0 +12706 1 -1.2587783543442962e+01 8.0952264988157850e+01 1.4000000005272454e+01 0 0 0 +12111 1 -9.2228647422984373e+00 8.2075876775886172e+01 1.0499999975278140e+01 0 0 0 +12113 1 -8.6590375535554323e+00 8.0416777445927565e+01 1.2249999993827807e+01 0 0 0 +12755 1 -6.9829714504018590e+00 8.0980420392547799e+01 1.4000000017152624e+01 0 0 0 +12147 1 -3.5610869222225694e+00 8.2098524090407608e+01 1.0499999990637775e+01 0 0 0 +12150 1 -4.7485642955129466e+00 7.9884620967041457e+01 1.0499999948625268e+01 0 0 0 +12118 1 -6.4095232921940806e+00 7.9317123449093671e+01 1.2249999958454989e+01 0 0 0 +12148 1 -5.3078141553578444e+00 8.1549234299482109e+01 1.2249999979509715e+01 0 0 0 +12153 1 -3.1035853314369803e+00 8.0492672615226155e+01 1.2250000010006920e+01 0 0 0 +12172 1 -1.0571060497015834e+00 7.9410410885666963e+01 1.2249999975522789e+01 0 0 0 +10207 1 -1.2264316553796362e+00 8.1045056185994980e+01 1.4000000024192270e+01 0 0 0 +11631 1 -4.4013659288367109e+01 8.5228768303542651e+01 1.0499999961281015e+01 0 0 0 +11584 1 -4.5136003212862896e+01 8.3009788735495917e+01 1.0499999966016400e+01 0 0 0 +11633 1 -4.3452487248420610e+01 8.3571264989438006e+01 1.2250000013419712e+01 0 0 0 +11632 1 -4.1768971344047756e+01 8.4132741214031995e+01 1.0499999971069947e+01 0 0 0 +11687 1 -3.9524283573379975e+01 8.3036714361411285e+01 1.0499999994057468e+01 0 0 0 +11638 1 -4.1207799345352491e+01 8.2475238004567558e+01 1.2249999998189962e+01 0 0 0 +11685 1 -4.0085455574966140e+01 8.4694217589941076e+01 1.2249999960809538e+01 0 0 0 +11684 1 -3.8401939800729480e+01 8.5255693940569216e+01 1.0499999996451750e+01 0 0 0 +11690 1 -3.7840767769986023e+01 8.3598190742767599e+01 1.2249999975993164e+01 0 0 0 +11741 1 -3.5596079901621763e+01 8.2502163990762398e+01 1.2249999947366751e+01 0 0 0 +11740 1 -3.3912564049110529e+01 8.3063640341138679e+01 1.0499999970074509e+01 0 0 0 +11791 1 -3.2790220485936125e+01 8.5282619972699507e+01 1.0499999973570857e+01 0 0 0 +11742 1 -3.4473736145485354e+01 8.4721143506208335e+01 1.2249999971294613e+01 0 0 0 +11793 1 -3.2229048279535213e+01 8.3625116763239674e+01 1.2250000009026053e+01 0 0 0 +11798 1 -2.9984360291778508e+01 8.2529090163972995e+01 1.2249999989820598e+01 0 0 0 +12435 1 -3.0545532560929885e+01 8.4186593295327356e+01 1.4000000048580599e+01 0 0 0 +11844 1 -2.7178500936795036e+01 8.5309546427566616e+01 1.0499999999909008e+01 0 0 0 +11847 1 -2.8300844499034621e+01 8.3090566708600264e+01 1.0499999982622104e+01 0 0 0 +11845 1 -2.8862016752021376e+01 8.4748069868028338e+01 1.2250000009460138e+01 0 0 0 +11850 1 -2.6617328713808835e+01 8.3652043371041103e+01 1.2250000003593126e+01 0 0 0 +11901 1 -2.4372640778889721e+01 8.2556016852786811e+01 1.2250000029357889e+01 0 0 0 +11902 1 -2.3250296540292936e+01 8.4774996533556831e+01 1.2249999996545190e+01 0 0 0 +12543 1 -2.2689124824499295e+01 8.3117493709363714e+01 1.4000000000387878e+01 0 0 0 +12542 1 -2.4933812725017784e+01 8.4213519962886295e+01 1.3999999993716955e+01 0 0 0 +11953 1 -2.1005607480395415e+01 8.3678969907182463e+01 1.2250000002226745e+01 0 0 0 +12594 1 -2.1566780562102068e+01 8.5336472982491159e+01 1.4000000002448504e+01 0 0 0 +11952 1 -1.9322090514009375e+01 8.4240445058348172e+01 1.0500000002372587e+01 0 0 0 +11958 1 -1.8760916522027131e+01 8.2582943144404624e+01 1.2250000018202382e+01 0 0 0 +12005 1 -1.7638584573145746e+01 8.4801923982319821e+01 1.2250000039355854e+01 0 0 0 +12650 1 -1.7077392396304738e+01 8.3144412942095457e+01 1.4000000034854155e+01 0 0 0 +12059 1 -1.3710492348796199e+01 8.4267427781603843e+01 1.0500000008490334e+01 0 0 0 +12010 1 -1.5393909037349729e+01 8.3705893101945676e+01 1.2250000010509700e+01 0 0 0 +12061 1 -1.3149238216069488e+01 8.2609834977835916e+01 1.2249999994749251e+01 0 0 0 +12647 1 -1.5955088272553326e+01 8.5363415048858400e+01 1.4000000029393069e+01 0 0 0 +12062 1 -1.2026827758145023e+01 8.4828940570025338e+01 1.2249999969665213e+01 0 0 0 +12109 1 -9.7824049449333224e+00 8.3733304511263299e+01 1.2250000002029921e+01 0 0 0 +12703 1 -1.1466173397056780e+01 8.3171530959276552e+01 1.3999999980617847e+01 0 0 0 +12750 1 -1.0342364761623767e+01 8.5389990537958425e+01 1.3999999958858183e+01 0 0 0 +12108 1 -8.0950146370637519e+00 8.4293271750537684e+01 1.0499999971014079e+01 0 0 0 +12114 1 -7.5397001694445223e+00 8.2639146485532549e+01 1.2250000004071373e+01 0 0 0 +12144 1 -6.4095236042883945e+00 8.4851109596960185e+01 1.2250000008735801e+01 0 0 0 +12149 1 -4.1395815703387875e+00 8.3742452316534752e+01 1.2249999972159122e+01 0 0 0 +12789 1 -5.8404171763452242e+00 8.3196440067587901e+01 1.4000000035848041e+01 0 0 0 +12786 1 -4.7485645797418901e+00 8.5418607045694216e+01 1.4000000067999197e+01 0 0 0 +19005 1 -9.9867455003853420e-15 8.3428775239806072e+01 1.4000000060119902e+01 0 0 0 +12168 1 -2.5187344115973480e+00 8.4301479366585099e+01 1.0500000011533633e+01 0 0 0 +12169 1 -1.7224975307258921e+00 8.2644469215621143e+01 1.2250000049252870e+01 0 0 0 +12170 1 -1.0571061573593179e+00 8.4944396797908766e+01 1.2250000093757127e+01 0 0 0 +11629 1 -4.2891315508839874e+01 8.7447747687526061e+01 1.0499999957359593e+01 0 0 0 +11630 1 -4.4574831394513865e+01 8.6886271492852444e+01 1.2249999985714791e+01 0 0 0 +11634 1 -4.2330143454365576e+01 8.5790244492256747e+01 1.2249999988038672e+01 0 0 0 +11682 1 -4.1207799784724116e+01 8.8009224027256977e+01 1.2249999961188928e+01 0 0 0 +11683 1 -4.0646627657758060e+01 8.6351720868019513e+01 1.0499999976396879e+01 0 0 0 +11686 1 -3.8963111906562602e+01 8.6913197091579505e+01 1.2249999969217594e+01 0 0 0 +11735 1 -3.7279596233337749e+01 8.7474673551403612e+01 1.0500000013187758e+01 0 0 0 +11737 1 -3.6718424003337674e+01 8.5817170338677016e+01 1.2249999982829582e+01 0 0 0 +11738 1 -3.5596080610667386e+01 8.8036149933592938e+01 1.2249999997266517e+01 0 0 0 +11790 1 -3.3351392656992935e+01 8.6940123185329242e+01 1.2249999973081172e+01 0 0 0 +11789 1 -3.1667876832339342e+01 8.7501599559889968e+01 1.0499999970917097e+01 0 0 0 +11794 1 -3.1106704680242267e+01 8.5844096412879580e+01 1.2249999993447307e+01 0 0 0 +11842 1 -2.9984361105302302e+01 8.8063076112428490e+01 1.2250000000624633e+01 0 0 0 +12486 1 -2.9423189002996981e+01 8.6405572964924616e+01 1.4000000035739550e+01 0 0 0 +11895 1 -2.6056157164542853e+01 8.7528526208661177e+01 1.0500000010704577e+01 0 0 0 +11846 1 -2.7739673034441019e+01 8.6967049574440537e+01 1.2249999988170510e+01 0 0 0 +11896 1 -2.3811468965634486e+01 8.6432499760176242e+01 1.0500000030694409e+01 0 0 0 +11897 1 -2.5494984941503908e+01 8.5871023081475840e+01 1.2249999990326716e+01 0 0 0 +11898 1 -2.4372641493121669e+01 8.8090003019196985e+01 1.2249999972743630e+01 0 0 0 +12592 1 -2.0444438227764735e+01 8.7555454213305836e+01 1.4000000021879837e+01 0 0 0 +11950 1 -2.2127953831808771e+01 8.6993976755710335e+01 1.2250000020706452e+01 0 0 0 +11954 1 -1.9883267397125874e+01 8.5897950571808977e+01 1.2250000022966841e+01 0 0 0 +12002 1 -1.8760916989937385e+01 8.8116929490235592e+01 1.2250000028088289e+01 0 0 0 +12003 1 -1.8199754801225772e+01 8.6459430583037445e+01 1.0499999998075838e+01 0 0 0 +12006 1 -1.6516220764490985e+01 8.7020904271812711e+01 1.2250000011125824e+01 0 0 0 +12057 1 -1.4271515752494564e+01 8.5924890235140793e+01 1.2250000012819356e+01 0 0 0 +12058 1 -1.3149238521768510e+01 8.8143821299608703e+01 1.2249999997090287e+01 0 0 0 +12698 1 -1.4832659558636115e+01 8.7582351559730043e+01 1.4000000013418907e+01 0 0 0 +12056 1 -1.2587783950889422e+01 8.6486251297060605e+01 1.0500000009575183e+01 0 0 0 +12106 1 -1.0904486686307216e+01 8.7047621394724388e+01 1.2249999972664760e+01 0 0 0 +12142 1 -6.9829716761430074e+00 8.6514406569005075e+01 1.0499999975660968e+01 0 0 0 +12110 1 -8.6590378655769822e+00 8.5950763667493277e+01 1.2249999979492976e+01 0 0 0 +12141 1 -7.5397003416788602e+00 8.8173132670333345e+01 1.2249999998055303e+01 0 0 0 +12748 1 -9.2228649892821917e+00 8.7609863026648569e+01 1.3999999999327040e+01 0 0 0 +12145 1 -5.3078143399771420e+00 8.7083220398869827e+01 1.2250000044816213e+01 0 0 0 +11520 1 -3.5610870867536781e+00 8.7632510075251673e+01 1.4000000070319565e+01 0 0 0 +12165 1 -1.2264317153928825e+00 8.6579042174859154e+01 1.0500000030643369e+01 0 0 0 +12166 1 -3.1035854500259488e+00 8.6026658597162623e+01 1.2250000035816637e+01 0 0 0 +12167 1 -1.7224976655109512e+00 8.8178455232921237e+01 1.2250000002898844e+01 0 0 0 +9602 1 -4.4013659573753301e+01 4.6490867175910012e+01 1.8932276191208075e-08 0 0 0 +12177 1 -4.3452487653155586e+01 4.4833363868887346e+01 1.5750000040261938e+01 0 0 0 +12191 1 -4.2330143516096122e+01 4.7052343384734442e+01 1.5750000024204795e+01 0 0 0 +9621 1 -4.1768971580027355e+01 4.5394840035220788e+01 1.5438498479625196e-08 0 0 0 +12195 1 -4.0085455542102487e+01 4.5956316302094393e+01 1.5750000007057261e+01 0 0 0 +9622 1 -3.9524283705825667e+01 4.4298813022475336e+01 1.7499999998530384e+01 0 0 -1 +9652 1 -3.6157251578980592e+01 4.5421765537481598e+01 1.7499999993229736e+01 0 0 -1 +9651 1 -3.8401939483786897e+01 4.6517792512057056e+01 8.9898968269608304e-09 0 0 0 +12225 1 -3.7840767663029986e+01 4.4860289276672660e+01 1.5749999992797630e+01 0 0 0 +12226 1 -3.6718423433796801e+01 4.7079268836537487e+01 1.5749999988490382e+01 0 0 0 +12268 1 -3.4473735477759227e+01 4.5983241975866129e+01 1.5749999994241326e+01 0 0 0 +9750 1 -3.0545531440086314e+01 4.5448692019761346e+01 4.5898762124352288e-08 0 0 0 +12271 1 -3.2229047449629043e+01 4.4887215330542013e+01 1.5750000017057619e+01 0 0 0 +12320 1 -3.1106703393569667e+01 4.7106195164842596e+01 1.5750000037136044e+01 0 0 0 +12322 1 -3.0545531380220361e+01 4.5448691975669256e+01 1.4000000043366963e+01 0 0 0 +12324 1 -2.8862015416054284e+01 4.6010168712057720e+01 1.5750000073687961e+01 0 0 0 +12376 1 -2.6617327416535794e+01 4.4914142150807209e+01 1.5750000076598258e+01 0 0 0 +9803 1 -2.4933811292438030e+01 4.5475618711177326e+01 6.5449082597979213e-08 0 0 0 +12375 1 -2.4933811329725440e+01 4.5475618677607621e+01 1.4000000044480933e+01 0 0 0 +12377 1 -2.5494983334278665e+01 4.7133121866901284e+01 1.5750000056736862e+01 0 0 0 +12428 1 -2.3250295038682530e+01 4.6037095110372377e+01 1.5750000034585055e+01 0 0 0 +9858 1 -2.2689123448127543e+01 4.4379592351901223e+01 3.9096576642805303e-08 0 0 0 +12430 1 -2.2689123487792870e+01 4.4379592340205960e+01 1.4000000007496498e+01 0 0 0 +9855 1 -2.1566778976236971e+01 4.6598571443713972e+01 9.7380770114341431e-09 0 0 0 +12427 1 -2.1566779043620098e+01 4.6598571471043002e+01 1.3999999993138600e+01 0 0 0 +12431 1 -2.1005606067692391e+01 4.4941068486773872e+01 1.5749999995626270e+01 0 0 0 +12480 1 -1.9883265795362220e+01 4.7160048936938914e+01 1.5749999998193365e+01 0 0 0 +12484 1 -1.7638583026331247e+01 4.6064022607933829e+01 1.5749999980745157e+01 0 0 0 +9911 1 -1.7077390986217114e+01 4.4406511839371795e+01 1.7499999969798505e+01 0 0 -1 +12483 1 -1.7077390943025506e+01 4.4406511895593844e+01 1.3999999999463236e+01 0 0 0 +9962 1 -1.5955086788319182e+01 4.6625513742132412e+01 1.7499999998492129e+01 0 0 -1 +12534 1 -1.5955086727430622e+01 4.6625513828958155e+01 1.4000000004105800e+01 0 0 0 +12536 1 -1.5393907606755711e+01 4.4967992178979145e+01 1.5750000002560769e+01 0 0 0 +12537 1 -1.4271514315665248e+01 4.7186989155084639e+01 1.5750000004605372e+01 0 0 0 +10015 1 -1.0342363775219807e+01 4.6652090241738378e+01 5.9524843720737408e-08 0 0 0 +12587 1 -1.0342363785105686e+01 4.6652090197607585e+01 1.4000000092606102e+01 0 0 0 +12588 1 -1.2026826566743038e+01 4.6091040025619058e+01 1.5750000053630245e+01 0 0 0 +12591 1 -9.7824040783547836e+00 4.4995404566859087e+01 1.5750000081475404e+01 0 0 0 +10018 1 -1.1466172388877842e+01 4.4433630769336872e+01 5.4722413267427328e-08 0 0 0 +12590 1 -1.1466172362407450e+01 4.4433630727469691e+01 1.4000000068387104e+01 0 0 0 +12640 1 -8.6590370607088545e+00 4.7212863625085021e+01 1.5750000074367579e+01 0 0 0 +10122 1 -4.7485639004632150e+00 4.6680708107526421e+01 2.6294358690392983e-08 0 0 0 +12694 1 -4.7485640036869903e+00 4.6680708087693418e+01 1.3999999969609732e+01 0 0 0 +12644 1 -6.4095229666587938e+00 4.6113210316999748e+01 1.5750000041086464e+01 0 0 0 +12696 1 -4.1395809676090973e+00 4.5004553841918479e+01 1.5749999951902195e+01 0 0 0 +10071 1 -5.8404165210587378e+00 4.4458541315054184e+01 6.0855356309730269e-08 0 0 0 +12643 1 -5.8404166078477679e+00 4.4458541271463389e+01 1.4000000006399265e+01 0 0 0 +12538 1 -2.6056157215466857e+01 8.7528526215833125e+01 1.3999999988854048e+01 0 0 0 +12697 1 -3.1035849447979711e+00 4.7288759897274311e+01 1.5749999954484265e+01 0 0 0 +12746 1 -1.0571060770714766e+00 4.6206498854940641e+01 1.5749999909423108e+01 0 0 0 +9966 1 -2.6056157174522586e+01 8.7528526195314598e+01 1.7499999990355565e+01 0 0 -1 +9617 1 -4.2891315405980649e+01 4.8709846600466356e+01 1.9097100789622345e-08 0 0 0 +12175 1 -4.4574831531405536e+01 4.8148370436090481e+01 1.5750000030087401e+01 0 0 0 +12187 1 -4.3452487327597879e+01 5.0367349955549081e+01 1.5750000013352818e+01 0 0 0 +9618 1 -4.0646627460666970e+01 4.7613819627996143e+01 2.1712121878181279e-08 0 0 0 +9647 1 -3.9524283410977176e+01 4.9832799085038502e+01 1.7499999996795008e+01 0 0 -1 +12192 1 -4.1207799378706781e+01 4.9271322874343070e+01 1.5750000014162973e+01 0 0 0 +12221 1 -3.8963111413330004e+01 4.8175295738827884e+01 1.5749999990827970e+01 0 0 0 +9648 1 -3.7279595478879195e+01 4.8736772113788355e+01 1.7499999969778209e+01 0 0 -1 +12222 1 -3.7840767464815507e+01 5.0394275343755893e+01 1.5749999990498084e+01 0 0 0 +12264 1 -3.5596079632892703e+01 4.9298248468978123e+01 1.5749999989384301e+01 0 0 0 +9691 1 -3.3912563563727396e+01 4.9859724935441911e+01 1.7499999991471899e+01 0 0 -1 +9694 1 -3.5034907451595281e+01 4.7640745162965850e+01 1.7499999980191149e+01 0 0 -1 +12269 1 -3.3351391534854415e+01 4.8202221808502919e+01 1.5750000003730207e+01 0 0 0 +9747 1 -2.9423187492914948e+01 4.7667671884588934e+01 4.2610622585925739e-08 0 0 0 +12316 1 -3.2229047531761687e+01 5.0421201483731281e+01 1.5749999996147807e+01 0 0 0 +12319 1 -2.9423187452771064e+01 4.7667671862434680e+01 1.4000000054188298e+01 0 0 0 +12321 1 -2.9984359406290043e+01 4.9325175067659927e+01 1.5750000029657729e+01 0 0 0 +9798 1 -2.8300843480264927e+01 4.9886651777655594e+01 5.0180730681859131e-08 0 0 0 +12370 1 -2.8300843461940278e+01 4.9886651722279758e+01 1.4000000043269479e+01 0 0 0 +12372 1 -2.7739671346034989e+01 4.8229148530666059e+01 1.5750000067371541e+01 0 0 0 +12373 1 -2.6617327516229501e+01 5.0448128365051737e+01 1.5750000042949926e+01 0 0 0 +12424 1 -2.4372639635454430e+01 4.9352101622119676e+01 1.5750000030810549e+01 0 0 0 +9906 1 -2.0444436502122404e+01 4.8817552445597414e+01 3.0485622914966370e-09 0 0 0 +12478 1 -2.0444436521089948e+01 4.8817552478169475e+01 1.3999999993321183e+01 0 0 0 +12429 1 -2.2127952155087129e+01 4.8256075136211017e+01 1.5749999995842504e+01 0 0 0 +12476 1 -2.1005606264382283e+01 5.0475054338863167e+01 1.5750000003104818e+01 0 0 0 +12481 1 -1.8760915302692961e+01 4.9379027642547008e+01 1.5749999970345343e+01 0 0 0 +12532 1 -1.6516219154436374e+01 4.8283002767981124e+01 1.5749999967811110e+01 0 0 0 +9959 1 -1.4832658118102581e+01 4.8844450136526063e+01 2.2800499266395491e-09 0 0 0 +12531 1 -1.4832658108935922e+01 4.8844450159830814e+01 1.4000000042261956e+01 0 0 0 +12533 1 -1.5393907818913876e+01 5.0501977730592955e+01 1.5749999994497726e+01 0 0 0 +12584 1 -1.3149237187660917e+01 4.9405920048095993e+01 1.5750000052262326e+01 0 0 0 +12589 1 -1.0904485602161136e+01 4.8309720683869308e+01 1.5750000073843776e+01 0 0 0 +12636 1 -9.7824041775860717e+00 5.0529389873424002e+01 1.5750000064828242e+01 0 0 0 +10066 1 -9.2228640396447492e+00 4.8871962579200840e+01 8.0147170677946633e-08 0 0 0 +12638 1 -9.2228641164699656e+00 4.8871962513216900e+01 1.4000000066835636e+01 0 0 0 +12641 1 -7.5396996031789065e+00 4.9435232455632942e+01 1.5750000049014261e+01 0 0 0 +10119 1 -3.5610863981666592e+00 4.8894611025457280e+01 1.7499999991745693e+01 0 0 -1 +12691 1 -3.5610865035293084e+00 4.8894611028331326e+01 1.3999999958576359e+01 0 0 0 +12692 1 -5.3078137712891538e+00 4.8345320990471180e+01 1.5750000021519513e+01 0 0 0 +12693 1 -4.1395809737563427e+00 5.0538538824333351e+01 1.5750000002082993e+01 0 0 0 +12743 1 -1.7224970806009454e+00 4.9440556458610018e+01 1.5749999963464385e+01 0 0 0 +9613 1 -4.4013659270302242e+01 5.2024853222970783e+01 3.7446064027335524e-09 0 0 0 +12183 1 -4.4574831314656855e+01 5.3682356405441496e+01 1.5750000016441083e+01 0 0 0 +12188 1 -4.2330143240811601e+01 5.2586329435295021e+01 1.5749999995083202e+01 0 0 0 +9614 1 -4.1768971238978878e+01 5.0928826101890252e+01 5.4314561737101030e-09 0 0 0 +9643 1 -4.0646627228575184e+01 5.3147805733022231e+01 1.7499999978475969e+01 0 0 -1 +12217 1 -4.0085455293174419e+01 5.1490302395485429e+01 1.5749999992858999e+01 0 0 0 +12218 1 -3.8963111316396002e+01 5.3709281894634969e+01 1.5749999989130561e+01 0 0 0 +9644 1 -3.8401939370157073e+01 5.2051778634075689e+01 1.7499999989974189e+01 0 0 -1 +9690 1 -3.6157251530046551e+01 5.0955751650469161e+01 1.7499999976686716e+01 0 0 -1 +12260 1 -3.6718423411048043e+01 5.2613254950807537e+01 1.5749999967400928e+01 0 0 0 +9687 1 -3.5034907535869486e+01 5.3174731274065245e+01 1.7499999986078155e+01 0 0 -1 +9742 1 -3.2790219634775838e+01 5.2078704753149502e+01 9.3729077832449548e-09 0 0 0 +12265 1 -3.4473735544770790e+01 5.1517228122484063e+01 1.5749999963764957e+01 0 0 0 +12312 1 -3.3351391660371313e+01 5.3736207881524400e+01 1.5750000001970019e+01 0 0 0 +12317 1 -3.1106703549930572e+01 5.2640181349285641e+01 1.5750000024875517e+01 0 0 0 +9795 1 -2.7178499617194934e+01 5.2105631467502114e+01 5.6080818211512451e-08 0 0 0 +12367 1 -2.7178499616985079e+01 5.2105631433353047e+01 1.4000000045184857e+01 0 0 0 +12368 1 -2.8862015564016012e+01 5.1544154943372419e+01 1.5750000045294613e+01 0 0 0 +12369 1 -2.7739671503288008e+01 5.3763134662918127e+01 1.5750000038284009e+01 0 0 0 +9847 1 -2.3811467484759444e+01 5.3228584329361226e+01 2.7622487408507368e-08 0 0 0 +12419 1 -2.3811467500523197e+01 5.3228584359525456e+01 1.4000000022949548e+01 0 0 0 +12420 1 -2.5494983507332723e+01 5.2667107950943567e+01 1.5750000059549944e+01 0 0 0 +12425 1 -2.3250295207045394e+01 5.1571081099123347e+01 1.5750000032758805e+01 0 0 0 +12472 1 -2.2127952375678301e+01 5.3790061055181745e+01 1.5750000005893751e+01 0 0 0 +12477 1 -1.9883266050594997e+01 5.2694034736587163e+01 1.5749999982846866e+01 0 0 0 +9903 1 -1.9322089225515981e+01 5.1036529359520650e+01 8.4989046911232435e-09 0 0 0 +9954 1 -1.8199753405017727e+01 5.3255514616944687e+01 5.2744617562439089e-09 0 0 0 +12475 1 -1.9322089207758406e+01 5.1036529383263797e+01 1.3999999992881808e+01 0 0 0 +12526 1 -1.8199753420792042e+01 5.3255514682488659e+01 1.3999999987974308e+01 0 0 0 +12528 1 -1.7638583257428891e+01 5.1598008270009863e+01 1.5749999985146294e+01 0 0 0 +12529 1 -1.6516219354667861e+01 5.3816988330797621e+01 1.5749999984644793e+01 0 0 0 +10010 1 -1.3710491206046420e+01 5.1063512509994581e+01 2.7903620747338209e-08 0 0 0 +12580 1 -1.4271514503092856e+01 5.2720974632823022e+01 1.5749999993309391e+01 0 0 0 +12582 1 -1.3710491186958413e+01 5.1063512530145267e+01 1.4000000017852999e+01 0 0 0 +10007 1 -1.2587782786930360e+01 5.3282335808672642e+01 4.1088373592401695e-08 0 0 0 +12579 1 -1.2587782794552330e+01 5.3282335820553854e+01 1.4000000018705681e+01 0 0 0 +12585 1 -1.2026826721517654e+01 5.1625025439082201e+01 1.5750000046563486e+01 0 0 0 +12632 1 -1.0904485641120411e+01 5.3843706011715909e+01 1.5750000046025972e+01 0 0 0 +10063 1 -8.0950139108672410e+00 5.1089357341183785e+01 6.5338269905623747e-08 0 0 0 +10114 1 -6.9829709179952211e+00 5.3310491929047103e+01 2.2524258014300358e-08 0 0 0 +12635 1 -8.0950139919653648e+00 5.1089357275265670e+01 1.4000000049940079e+01 0 0 0 +12686 1 -6.9829709941688378e+00 5.3310491859476613e+01 1.4000000051440077e+01 0 0 0 +12637 1 -8.6590370286302196e+00 5.2746848810967045e+01 1.5750000052471007e+01 0 0 0 +12688 1 -6.4095229609894098e+00 5.1647195395317830e+01 1.5750000017097555e+01 0 0 0 +12689 1 -5.3078136891931180e+00 5.3879305981310104e+01 1.5750000001186496e+01 0 0 0 +10167 1 -1.2264313564220974e+00 5.3375128735832028e+01 1.7499999988914723e+01 0 0 -1 +10170 1 -2.5187338183561061e+00 5.1097566141931289e+01 1.7499999996227633e+01 0 0 -1 +12739 1 -1.2264313657080039e+00 5.3375128838146331e+01 1.3999999980539059e+01 0 0 0 +12742 1 -2.5187338411365667e+00 5.1097566178728627e+01 1.3999999985937722e+01 0 0 0 +12740 1 -3.1035849471555537e+00 5.2822744831853733e+01 1.5749999993263632e+01 0 0 0 +12744 1 -1.0571059454382337e+00 5.1740483814342745e+01 1.5749999947571279e+01 0 0 0 +9610 1 -4.2891315224700996e+01 5.4243832614642230e+01 1.7499999986744402e+01 0 0 -1 +9609 1 -4.5136003274780983e+01 5.5339859561439027e+01 3.8996432749627274e-09 0 0 0 +12184 1 -4.3452487195218488e+01 5.5901335908359272e+01 1.5750000014180355e+01 0 0 0 +9639 1 -4.1768971159606139e+01 5.6462812143867396e+01 1.7499999977905528e+01 0 0 -1 +9640 1 -3.9524283351154331e+01 5.5366785193597572e+01 1.7499999955881087e+01 0 0 -1 +12213 1 -4.1207799229141415e+01 5.4805308948847546e+01 1.5749999993227544e+01 0 0 0 +9686 1 -3.7279595465805180e+01 5.4270758243793161e+01 1.7499999995291834e+01 0 0 -1 +9683 1 -3.6157251541397009e+01 5.6489737693717281e+01 1.0310927223144972e-08 0 0 0 +12256 1 -3.7840767472233892e+01 5.5928261449019743e+01 1.5749999973170867e+01 0 0 0 +12261 1 -3.5596079644628126e+01 5.4832234536152058e+01 1.5749999982788490e+01 0 0 0 +9739 1 -3.1667875585618575e+01 5.4297684441110867e+01 1.7829787424261667e-08 0 0 0 +9790 1 -3.0545531698139314e+01 5.6516664256889165e+01 3.8368266785937521e-08 0 0 0 +12311 1 -3.1667875530924853e+01 5.4297684427615636e+01 1.4000000004959793e+01 0 0 0 +12313 1 -3.2229047663969325e+01 5.5955187535972733e+01 1.5749999992790633e+01 0 0 0 +12362 1 -3.0545531666828865e+01 5.6516664195215284e+01 1.4000000020342844e+01 0 0 0 +12364 1 -2.9984359593232305e+01 5.4859161152976817e+01 1.5750000022715968e+01 0 0 0 +12418 1 -2.6056155609962712e+01 5.4324611166357194e+01 1.4000000043044910e+01 0 0 0 +9846 1 -2.6056155596855195e+01 5.4324611150364930e+01 4.5773379753200061e-08 0 0 0 +12416 1 -2.6617327719665692e+01 5.5982114379905383e+01 1.5750000042347272e+01 0 0 0 +9843 1 -2.4933811626813057e+01 5.6543590779576554e+01 5.7466671421479987e-08 0 0 0 +12415 1 -2.4933811657192827e+01 5.6543590781130341e+01 1.4000000033617969e+01 0 0 0 +9898 1 -2.2689123812138426e+01 5.5447564245119679e+01 4.1497454361660857e-08 0 0 0 +12421 1 -2.4372639858071594e+01 5.4886087642064282e+01 1.5750000041867239e+01 0 0 0 +12470 1 -2.2689123815282006e+01 5.5447564242588335e+01 1.4000000018748702e+01 0 0 0 +12473 1 -2.1005606443118406e+01 5.6009040193901022e+01 1.5750000006966143e+01 0 0 0 +9951 1 -1.7077391350209083e+01 5.5474483102905666e+01 1.7499999979960684e+01 0 0 -1 +12523 1 -1.7077391339172639e+01 5.5474483165067099e+01 1.3999999979233380e+01 0 0 0 +12524 1 -1.8760915529978796e+01 5.4913013388168380e+01 1.5749999986487296e+01 0 0 0 +12576 1 -1.5393907951180363e+01 5.6035963278464429e+01 1.5749999981892309e+01 0 0 0 +12581 1 -1.3149237278116324e+01 5.4939905463175151e+01 1.5749999995458735e+01 0 0 0 +10058 1 -1.1466172537212778e+01 5.5501601495134892e+01 3.7332590352434636e-08 0 0 0 +12630 1 -1.1466172524835963e+01 5.5501601462510713e+01 1.4000000018886741e+01 0 0 0 +12633 1 -9.7824041287753012e+00 5.6063375130355865e+01 1.5750000049130524e+01 0 0 0 +12684 1 -7.5396995293741078e+00 5.4969217624530565e+01 1.5750000060686588e+01 0 0 0 +10111 1 -5.8404164629346749e+00 5.5526511442341800e+01 1.6851679163210065e-08 0 0 0 +12683 1 -5.8404164986844060e+00 5.5526511378775972e+01 1.4000000029883932e+01 0 0 0 +12736 1 -4.1395808678413175e+00 5.6072523772728005e+01 1.5749999977683263e+01 0 0 0 +12437 1 -3.1106704731389392e+01 8.5844096430949207e+01 1.5750000048990403e+01 0 0 0 +12741 1 -1.7224969976012345e+00 5.4974541279560988e+01 1.5749999999251610e+01 0 0 0 +12485 1 -2.9984361114287484e+01 8.8063076112373082e+01 1.5750000036665224e+01 0 0 0 +9607 1 -4.4013659174132272e+01 5.7558839092890857e+01 1.7499999991226826e+01 0 0 -1 +9635 1 -4.2891315130035913e+01 5.9777818437586028e+01 1.7499999997082025e+01 0 0 -1 +12180 1 -4.4574831224939324e+01 5.9216342180749940e+01 1.5750000051094528e+01 0 0 0 +12209 1 -4.2330143169832539e+01 5.8120315374563383e+01 1.5750000015222833e+01 0 0 0 +9636 1 -4.0646627161714981e+01 5.8681791686077034e+01 4.7499533195605181e-09 0 0 0 +12214 1 -4.0085455195551972e+01 5.7024288450390792e+01 1.5749999985481990e+01 0 0 0 +12252 1 -3.8963111189887776e+01 5.9243267843131640e+01 1.5749999976172461e+01 0 0 0 +9679 1 -3.7279595384087123e+01 5.9804744211880937e+01 1.7499999948092078e+01 0 0 -1 +9682 1 -3.8401939291520385e+01 5.7585764676447667e+01 1.7499999979259130e+01 0 0 -1 +12257 1 -3.6718423366039616e+01 5.8147240987801773e+01 1.5749999986525026e+01 0 0 0 +9734 1 -3.5034907516701672e+01 5.8708717260548582e+01 1.7499999989601072e+01 0 0 -1 +12308 1 -3.4473735576959569e+01 5.7051214108358707e+01 1.5749999980127118e+01 0 0 0 +12309 1 -3.3351391683878852e+01 5.9270193862530732e+01 1.5749999991325504e+01 0 0 0 +9787 1 -2.9423187773627124e+01 5.8735643976787998e+01 3.0574017984008606e-08 0 0 0 +12359 1 -2.9423187734807975e+01 5.8735643955434789e+01 1.4000000029931963e+01 0 0 0 +12360 1 -3.1106703658237741e+01 5.8174167269664643e+01 1.5750000020482029e+01 0 0 0 +12365 1 -2.8862015707197664e+01 5.7078140917852380e+01 1.5750000048350516e+01 0 0 0 +12412 1 -2.7739671628112244e+01 5.9297120575330439e+01 1.5750000041427006e+01 0 0 0 +12417 1 -2.5494983648719035e+01 5.8201093907226443e+01 1.5750000031176741e+01 0 0 0 +12468 1 -2.3250295387985322e+01 5.7105067035659793e+01 1.5750000038927457e+01 0 0 0 +9895 1 -2.1566779353973391e+01 5.7666543175060610e+01 1.7499999998176737e+01 0 0 -1 +9946 1 -2.0444436847028932e+01 5.9885524057366766e+01 1.7499999993355097e+01 0 0 -1 +12467 1 -2.1566779396737420e+01 5.7666543210654389e+01 1.4000000018221584e+01 0 0 0 +12469 1 -2.2127952498241719e+01 5.9324046886160353e+01 1.5750000013640232e+01 0 0 0 +12518 1 -2.0444436870195165e+01 5.9885524090503253e+01 1.3999999993286544e+01 0 0 0 +12520 1 -1.9883266174050480e+01 5.8228020508111257e+01 1.5749999996069628e+01 0 0 0 +12525 1 -1.7638583404683537e+01 5.7131993946434591e+01 1.5749999975344503e+01 0 0 0 +12572 1 -1.6516219478501018e+01 5.9350974005960985e+01 1.5749999953707349e+01 0 0 0 +9999 1 -1.4832658348251645e+01 5.9912421208670885e+01 1.7499999974435354e+01 0 0 -1 +10002 1 -1.5955087114232576e+01 5.7693484906174369e+01 1.7499999979336817e+01 0 0 -1 +12571 1 -1.4832658340005445e+01 5.9912421250491228e+01 1.3999999992518989e+01 0 0 0 +12574 1 -1.5955087099303476e+01 5.7693484984498859e+01 1.3999999971692736e+01 0 0 0 +12577 1 -1.4271514587969467e+01 5.8254960139784920e+01 1.5749999978304535e+01 0 0 0 +10055 1 -1.0342363795555134e+01 5.7720060860196583e+01 3.0522127048016046e-08 0 0 0 +12627 1 -1.0342363779637441e+01 5.7720060823272142e+01 1.4000000043090056e+01 0 0 0 +12628 1 -1.2026826725892040e+01 5.7159010791109836e+01 1.5750000022227749e+01 0 0 0 +12629 1 -1.0904485595648861e+01 5.9377691380812308e+01 1.5750000054369522e+01 0 0 0 +10106 1 -9.2228639137240709e+00 5.9939933144254105e+01 3.7654515949725464e-08 0 0 0 +12678 1 -9.2228639063818925e+00 5.9939933108271305e+01 1.4000000033835873e+01 0 0 0 +12680 1 -8.6590369309378357e+00 5.8280834103174172e+01 1.5750000056635320e+01 0 0 0 +10159 1 -3.5610862141164055e+00 5.9962581001637425e+01 1.7499999997693131e+01 0 0 -1 +10162 1 -4.7485637570116337e+00 5.7748678134572941e+01 1.2643756264196782e-08 0 0 0 +12731 1 -3.5610862297410573e+00 5.9962580973979712e+01 1.4000000011625010e+01 0 0 0 +12734 1 -4.7485637613332194e+00 5.7748678099436276e+01 1.4000000010923969e+01 0 0 0 +12685 1 -6.4095228133481932e+00 5.7181180509482488e+01 1.5750000047798725e+01 0 0 0 +12732 1 -5.3078135020220403e+00 5.9413291152786471e+01 1.5750000033796530e+01 0 0 0 +12737 1 -3.1035848655054838e+00 5.8356729803454648e+01 1.5750000004889012e+01 0 0 0 +12783 1 -1.0571058982174131e+00 5.7274468616045588e+01 1.5750000026538366e+01 0 0 0 +9631 1 -4.4013659122080981e+01 6.3092824800234148e+01 5.3879844585935643e-08 0 0 0 +9606 1 -4.5136003220420868e+01 6.0873845284548722e+01 4.6166384493062651e-08 0 0 0 +12205 1 -4.3452487102781319e+01 6.1435321638158122e+01 1.5750000021889164e+01 0 0 0 +9632 1 -4.1768971047787922e+01 6.1996797884373279e+01 7.7941315623775154e-09 0 0 0 +9678 1 -3.9524283219502372e+01 6.0900771086065546e+01 5.4692428363978252e-09 0 0 0 +12210 1 -4.1207799148137866e+01 6.0339294818348463e+01 1.5750000005539935e+01 0 0 0 +12248 1 -4.0085455116790193e+01 6.2558274283860506e+01 1.5749999981732499e+01 0 0 0 +9730 1 -3.6157251443910695e+01 6.2023723688706987e+01 1.7499999958159336e+01 0 0 -1 +9675 1 -3.8401939202817076e+01 6.3119750577826515e+01 1.7499999977014586e+01 0 0 -1 +12253 1 -3.7840767315069677e+01 6.1462247390499222e+01 1.5749999972506821e+01 0 0 0 +12304 1 -3.5596079630167118e+01 6.0366220541537267e+01 1.5749999971303371e+01 0 0 0 +9782 1 -3.2790219656501705e+01 6.3146676653987676e+01 1.7499999978922236e+01 0 0 -1 +9731 1 -3.3912563631256091e+01 6.0927696953901140e+01 1.7499999987548630e+01 0 0 -1 +12305 1 -3.4473735517357703e+01 6.2585200116437392e+01 1.5749999954444586e+01 0 0 0 +12356 1 -3.2229047648966940e+01 6.1489173428355414e+01 1.5749999972303526e+01 0 0 0 +12361 1 -2.9984359635592813e+01 6.0393147042178313e+01 1.5750000009302248e+01 0 0 0 +9835 1 -2.7178499757790267e+01 6.3173603186299118e+01 3.7196326019284243e-08 0 0 0 +9838 1 -2.8300843701086418e+01 6.0954623690403160e+01 3.9180800825988626e-08 0 0 0 +12407 1 -2.7178499786705775e+01 6.3173603150307102e+01 1.4000000015859097e+01 0 0 0 +12410 1 -2.8300843705239938e+01 6.0954623635848677e+01 1.4000000037320458e+01 0 0 0 +12408 1 -2.8862015726303635e+01 6.2612126742540738e+01 1.5750000030380969e+01 0 0 0 +12413 1 -2.6617327743056311e+01 6.1516100203084065e+01 1.5750000031447751e+01 0 0 0 +12464 1 -2.4372639947009208e+01 6.0420073472927982e+01 1.5750000006359709e+01 0 0 0 +12465 1 -2.3250295457826127e+01 6.2639052801695030e+01 1.5749999997544398e+01 0 0 0 +12516 1 -2.1005606552657838e+01 6.1543025968384001e+01 1.5750000008219294e+01 0 0 0 +9943 1 -1.9322089491825640e+01 6.2104500877843371e+01 1.7499999977711660e+01 0 0 -1 +12515 1 -1.9322089497891419e+01 6.2104500921336339e+01 1.3999999981931241e+01 0 0 0 +12521 1 -1.8760915643339654e+01 6.0446999131860252e+01 1.5749999964305005e+01 0 0 0 +12568 1 -1.7638583504561986e+01 6.2665979690862521e+01 1.5749999978469539e+01 0 0 0 +10050 1 -1.3710491293587951e+01 6.2131483538916740e+01 1.7499999978742750e+01 0 0 -1 +12573 1 -1.5393908017411222e+01 6.1569948920934387e+01 1.5749999988087730e+01 0 0 0 +12622 1 -1.3710491258829995e+01 6.2131483578493921e+01 1.4000000013777619e+01 0 0 0 +12624 1 -1.3149237297219818e+01 6.0473890971565801e+01 1.5750000031051425e+01 0 0 0 +12625 1 -1.2026826677454805e+01 6.2692996324319402e+01 1.5750000052713316e+01 0 0 0 +12676 1 -9.7824039975801167e+00 6.1597360545341125e+01 1.5750000057159749e+01 0 0 0 +10103 1 -8.0950136562883586e+00 6.2157327927952906e+01 5.6629257727536242e-08 0 0 0 +12675 1 -8.0950136721917207e+00 6.2157327850797337e+01 1.4000000016713273e+01 0 0 0 +12681 1 -7.5396993326754869e+00 6.0503202915371531e+01 1.5750000036204820e+01 0 0 0 +12728 1 -6.4095226287647016e+00 6.2715165907204387e+01 1.5750000025051371e+01 0 0 0 +12733 1 -4.1395807463128973e+00 6.1606508971667367e+01 1.5750000033128586e+01 0 0 0 +10206 1 -2.5187337108608099e+00 6.2165536098866291e+01 2.1418586015897745e-08 0 0 0 +12778 1 -2.5187336691689670e+00 6.2165536127851851e+01 1.4000000023923064e+01 0 0 0 +12780 1 -1.7224969224537003e+00 6.0508526205354130e+01 1.5750000022974424e+01 0 0 0 +12781 1 -1.0571059191738321e+00 6.2808453653871197e+01 1.5749999998806228e+01 0 0 0 +9628 1 -4.2891315134879598e+01 6.5311804125137087e+01 1.5048982504595187e-08 0 0 0 +12201 1 -4.4574831235089206e+01 6.4750327880200359e+01 1.5750000057744243e+01 0 0 0 +12206 1 -4.2330143095778133e+01 6.3654301087015448e+01 1.5750000025330410e+01 0 0 0 +9674 1 -4.0646627095943870e+01 6.4215777470754929e+01 1.7499999975106110e+01 0 0 -1 +12244 1 -4.1207799131659584e+01 6.5873280534809652e+01 1.5750000003410381e+01 0 0 0 +12249 1 -3.8963111167112324e+01 6.4777253725564051e+01 1.5749999973520298e+01 0 0 0 +9726 1 -3.7279595295023888e+01 6.5338730125226760e+01 1.7499999973724428e+01 0 0 -1 +12300 1 -3.6718423273028947e+01 6.3681226944283509e+01 1.5749999950035630e+01 0 0 0 +12301 1 -3.5596079476030845e+01 6.5900206451537855e+01 1.5749999952123543e+01 0 0 0 +12352 1 -3.3351391581328357e+01 6.4804179755881719e+01 1.5749999987476365e+01 0 0 0 +9779 1 -3.1667875532158480e+01 6.5365656195908841e+01 1.7499999993636454e+01 0 0 -1 +12351 1 -3.1667875496852709e+01 6.5365656185676073e+01 1.4000000017032329e+01 0 0 0 +12357 1 -3.1106703608026230e+01 6.3708153141031353e+01 1.5750000005156942e+01 0 0 0 +12404 1 -2.9984359564982491e+01 6.5927132778924559e+01 1.5750000006051113e+01 0 0 0 +9886 1 -2.6056155647609895e+01 6.5392582712402472e+01 3.0280688179118442e-08 0 0 0 +12458 1 -2.6056155725983420e+01 6.5392582724832636e+01 1.4000000004855538e+01 0 0 0 +12409 1 -2.7739671586326260e+01 6.4831106281869410e+01 1.5750000009151790e+01 0 0 0 +9887 1 -2.3811467644821327e+01 6.4296555928193044e+01 4.6431836153715267e-09 0 0 0 +12459 1 -2.3811467673684778e+01 6.4296555963732217e+01 1.3999999986842687e+01 0 0 0 +12460 1 -2.5494983670484594e+01 6.3735079610041723e+01 1.5750000029402305e+01 0 0 0 +12461 1 -2.4372639952183555e+01 6.5954059179979865e+01 1.5750000013589396e+01 0 0 0 +12512 1 -2.2127952563678111e+01 6.4858032617027149e+01 1.5749999967459109e+01 0 0 0 +12517 1 -1.9883266274822425e+01 6.3762006278319667e+01 1.5749999983979921e+01 0 0 0 +9994 1 -1.8199753592587157e+01 6.4323486093305476e+01 1.7499999986265070e+01 0 0 -1 +12564 1 -1.8760915690379061e+01 6.5980984905514191e+01 1.5750000003419444e+01 0 0 0 +12566 1 -1.8199753624601104e+01 6.4323486154293818e+01 1.3999999976871665e+01 0 0 0 +12569 1 -1.6516219493559078e+01 6.4884959736874436e+01 1.5750000005162676e+01 0 0 0 +12620 1 -1.4271514562665644e+01 6.3788945790577941e+01 1.5750000003885873e+01 0 0 0 +12621 1 -1.3149237245629227e+01 6.6007876669863705e+01 1.5750000009115869e+01 0 0 0 +10047 1 -1.2587782751072909e+01 6.4350306837575260e+01 1.7617043823747736e-08 0 0 0 +12619 1 -1.2587782744196707e+01 6.4350306876791421e+01 1.4000000026481926e+01 0 0 0 +12672 1 -1.0904485501281229e+01 6.4911676962549350e+01 1.5750000054662566e+01 0 0 0 +10154 1 -6.9829706404193903e+00 6.4378462601468016e+01 1.8964584569403087e-08 0 0 0 +12677 1 -8.6590367709192684e+00 6.3814819555251333e+01 1.5750000055322202e+01 0 0 0 +12724 1 -7.5396992805709298e+00 6.6037188467932921e+01 1.5750000054732306e+01 0 0 0 +12726 1 -6.9829706626934369e+00 6.4378462552473863e+01 1.4000000012775214e+01 0 0 0 +12729 1 -5.3078134110838526e+00 6.4947276584903122e+01 1.5749999994766720e+01 0 0 0 +10203 1 -1.2264313268120173e+00 6.4443098748732055e+01 1.5629439076292329e-08 0 0 0 +12775 1 -1.2264313237470001e+00 6.4443098820692811e+01 1.4000000023337034e+01 0 0 0 +12776 1 -3.1035847726700045e+00 6.3890715116858701e+01 1.5750000016858666e+01 0 0 0 +12777 1 -1.7224968393385918e+00 6.6042511562036324e+01 1.5750000028664767e+01 0 0 0 +9625 1 -4.4013659172834288e+01 6.8626810549970997e+01 1.9552668817368613e-08 0 0 0 +9627 1 -4.5136003255969314e+01 6.6407830988980351e+01 2.4889526883953295e-08 0 0 0 +12202 1 -4.3452487168603071e+01 6.6969307343451902e+01 1.5750000010090469e+01 0 0 0 +12240 1 -4.2330143139161031e+01 6.9188286821439775e+01 1.5750000026723269e+01 0 0 0 +9671 1 -3.9524283221875642e+01 6.6434756894855468e+01 1.7499999962913062e+01 0 0 -1 +9670 1 -4.1768971083946205e+01 6.7530783652088743e+01 6.5418888084423088e-09 0 0 0 +12245 1 -4.0085455116654899e+01 6.8092260058179065e+01 1.5749999986683250e+01 0 0 0 +9722 1 -3.8401939132718439e+01 6.8653736362499274e+01 1.7499999954954884e+01 0 0 -1 +9723 1 -3.6157251329884943e+01 6.7557709535902632e+01 1.7499999979998250e+01 0 0 -1 +12296 1 -3.7840767298018498e+01 6.6996233261866664e+01 1.5749999958958011e+01 0 0 0 +12297 1 -3.6718423148473143e+01 6.9215212759757321e+01 1.5749999977905651e+01 0 0 0 +12348 1 -3.4473735346621822e+01 6.8119185952900452e+01 1.5749999964702820e+01 0 0 0 +9830 1 -3.0545531566622710e+01 6.7584635855938046e+01 3.5383973084890386e-08 0 0 0 +12402 1 -3.0545531583373851e+01 6.7584635802240896e+01 1.4000000021798249e+01 0 0 0 +12353 1 -3.2229047529230627e+01 6.7023159279849736e+01 1.5749999995351088e+01 0 0 0 +12400 1 -3.1106703483611781e+01 6.9242138860972574e+01 1.5750000030993748e+01 0 0 0 +12405 1 -2.8862015634879182e+01 6.8146112402662069e+01 1.5750000043930021e+01 0 0 0 +12456 1 -2.6617327723899827e+01 6.7050085844653665e+01 1.5750000009087291e+01 0 0 0 +9883 1 -2.4933811644475036e+01 6.7611562212792322e+01 1.2524658643542352e-08 0 0 0 +12455 1 -2.4933811717399642e+01 6.7611562241617023e+01 1.4000000011540516e+01 0 0 0 +9938 1 -2.2689123919348873e+01 6.6515535759623731e+01 1.0928193461268165e-08 0 0 0 +12510 1 -2.2689123940377350e+01 6.6515535759337098e+01 1.3999999973041275e+01 0 0 0 +12457 1 -2.5494983646844169e+01 6.9269065286380297e+01 1.5749999995241597e+01 0 0 0 +12508 1 -2.3250295464968417e+01 6.8173038498378446e+01 1.5750000006726248e+01 0 0 0 +9935 1 -2.1566779436775846e+01 6.8734514687021530e+01 2.1537935879223369e-09 0 0 0 +12507 1 -2.1566779491954055e+01 6.8734514720569194e+01 1.3999999998104201e+01 0 0 0 +12513 1 -2.1005606564247955e+01 6.7077011715912946e+01 1.5749999991308316e+01 0 0 0 +12560 1 -1.9883266278456023e+01 6.9295992055750887e+01 1.5750000018964304e+01 0 0 0 +9991 1 -1.7077391467373360e+01 6.6542454586643572e+01 1.7499999979127047e+01 0 0 -1 +12563 1 -1.7077391471193238e+01 6.6542454642030634e+01 1.3999999991137800e+01 0 0 0 +12565 1 -1.7638583526212276e+01 6.8199965479005314e+01 1.5750000010108105e+01 0 0 0 +10042 1 -1.5955087181048491e+01 6.8761456433142698e+01 1.7499999991681651e+01 0 0 -1 +12614 1 -1.5955087219025142e+01 6.8761456486772559e+01 1.3999999986684221e+01 0 0 0 +12616 1 -1.5393908021252955e+01 6.7103934706120242e+01 1.5750000009679107e+01 0 0 0 +12617 1 -1.4271514639882692e+01 6.9322931636936985e+01 1.5750000000349882e+01 0 0 0 +10098 1 -1.1466172448120112e+01 6.6569572608182611e+01 1.1914536912627227e-08 0 0 0 +12670 1 -1.1466172448589999e+01 6.6569572591582940e+01 1.4000000026534423e+01 0 0 0 +10095 1 -1.0342363746100178e+01 6.8788032075541736e+01 1.7499999992308812e+01 0 0 -1 +12667 1 -1.0342363752508515e+01 6.8788032062681864e+01 1.4000000014597363e+01 0 0 0 +12668 1 -1.2026826689528750e+01 6.8226982076780644e+01 1.5750000017166103e+01 0 0 0 +12673 1 -9.7824039902258804e+00 6.7131346186840815e+01 1.5750000045950571e+01 0 0 0 +12720 1 -8.6590368893725156e+00 6.9348805293934788e+01 1.5750000023683510e+01 0 0 0 +10151 1 -5.8404162426484429e+00 6.6594482221869015e+01 2.9993110217674257e-08 0 0 0 +10198 1 -4.7485636701429375e+00 6.8816649088202851e+01 4.1816274887196414e-08 0 0 0 +12723 1 -5.8404162438589298e+00 6.6594482156025364e+01 1.3999999987145049e+01 0 0 0 +12770 1 -4.7485636487176404e+00 6.8816649072731948e+01 1.3999999989744131e+01 0 0 0 +12725 1 -6.4095226905737377e+00 6.8249151514649967e+01 1.5750000033213771e+01 0 0 0 +12772 1 -4.1395807157117712e+00 6.7140494491921402e+01 1.5750000005009197e+01 0 0 0 +12432 1 -3.1667876841346516e+01 8.7501599552717678e+01 1.4000000011688661e+01 0 0 0 +9860 1 -3.1667876921649935e+01 8.7501599561731553e+01 3.4153423200677935e-08 0 0 0 +12104 1 -1.0571059936109213e+00 6.8342439141959304e+01 1.5750000065085100e+01 0 0 0 +12773 1 -3.1035848224247253e+00 6.9424700733568883e+01 1.5750000033887350e+01 0 0 0 +9666 1 -4.2891315125084205e+01 7.0845789885083462e+01 6.0708771343342960e-10 0 0 0 +9624 1 -4.5136003222860303e+01 7.1941816802002350e+01 4.2843378622592354e-08 0 0 0 +12198 1 -4.4574831229739438e+01 7.0284313633291816e+01 1.5750000057388531e+01 0 0 0 +12236 1 -4.3452487086992129e+01 7.2503293107236047e+01 1.5750000026370069e+01 0 0 0 +9667 1 -4.0646627081086372e+01 6.9749763178755032e+01 1.7499999984326355e+01 0 0 -1 +9718 1 -3.9524283088710021e+01 7.1968742634368084e+01 7.3659798260905518e-09 0 0 0 +12241 1 -4.1207799101638976e+01 7.1407266255754337e+01 1.5749999996958820e+01 0 0 0 +12292 1 -3.8963111074318491e+01 7.0311239436712469e+01 1.5749999967834867e+01 0 0 0 +12293 1 -3.7840767151280652e+01 7.2530218994792293e+01 1.5749999962485621e+01 0 0 0 +12344 1 -3.5596079364941545e+01 7.1434192269411781e+01 1.5749999975604311e+01 0 0 0 +9774 1 -3.5034907246187821e+01 6.9776689020586801e+01 1.7499999981985827e+01 0 0 -1 +12343 1 -3.3912563310890228e+01 7.1995668647526401e+01 1.3999999975815399e+01 0 0 0 +9771 1 -3.3912563362590326e+01 7.1995668634919554e+01 1.8550760927382726e-08 0 0 0 +12349 1 -3.3351391417330348e+01 7.0338165578846969e+01 1.5749999996233910e+01 0 0 0 +9827 1 -2.9423187623198324e+01 6.9803615415974264e+01 3.7156819843175981e-08 0 0 0 +12399 1 -2.9423187640860220e+01 6.9803615418942570e+01 1.4000000032078500e+01 0 0 0 +12396 1 -3.2229047440396627e+01 7.2557145035894706e+01 1.5749999992805272e+01 0 0 0 +12401 1 -2.9984359496718085e+01 7.1461118505332720e+01 1.5750000029193155e+01 0 0 0 +9878 1 -2.8300843610583168e+01 7.2022595054149193e+01 4.0384776411883649e-08 0 0 0 +12450 1 -2.8300843662395526e+01 7.2022595009222130e+01 1.4000000034579488e+01 0 0 0 +12452 1 -2.7739671565542885e+01 7.0365091930562102e+01 1.5750000030226145e+01 0 0 0 +12453 1 -2.6617327756967384e+01 7.2584071572626485e+01 1.5750000023782880e+01 0 0 0 +12504 1 -2.4372639966866117e+01 7.1488044897918499e+01 1.5749999993450619e+01 0 0 0 +9986 1 -2.0444436955030461e+01 7.0953495619510448e+01 9.3273158086049079e-09 0 0 0 +12509 1 -2.2127952572414596e+01 7.0392018393726531e+01 1.5750000024160535e+01 0 0 0 +12556 1 -2.1005606668779038e+01 7.2610997571621155e+01 1.5750000020726924e+01 0 0 0 +12558 1 -2.0444436974534597e+01 7.0953495663302832e+01 1.4000000001279616e+01 0 0 0 +12561 1 -1.8760915770571515e+01 7.1514970752729340e+01 1.5750000005271339e+01 0 0 0 +12612 1 -1.6516219595190517e+01 7.0418945611793205e+01 1.5749999991271725e+01 0 0 0 +10039 1 -1.4832658433606488e+01 7.0980392823401573e+01 1.7499999970281213e+01 0 0 -1 +12611 1 -1.4832658488882585e+01 7.0980392854907123e+01 1.3999999989090396e+01 0 0 0 +12613 1 -1.5393908218066752e+01 7.2637920618801715e+01 1.5750000001534799e+01 0 0 0 +12664 1 -1.3149237431082989e+01 7.1541862576842448e+01 1.5750000007255448e+01 0 0 0 +12669 1 -1.0904485659399214e+01 7.0445662803370382e+01 1.5749999999856371e+01 0 0 0 +12716 1 -9.7824042134707447e+00 7.2665332121092561e+01 1.5749999994571150e+01 0 0 0 +10146 1 -9.2228640118335061e+00 7.1007904518701935e+01 1.7499999999069917e+01 0 0 -1 +12718 1 -9.2228639977512241e+00 7.1007904512933962e+01 1.3999999991355011e+01 0 0 0 +12721 1 -7.5396994431240296e+00 7.1571174280049547e+01 1.5750000008012398e+01 0 0 0 +10195 1 -3.5610862800476655e+00 7.1030552131722459e+01 5.7251629215215871e-08 0 0 0 +12767 1 -3.5610862855409167e+00 7.1030552110535837e+01 1.4000000021089839e+01 0 0 0 +12768 1 -5.3078135255515360e+00 7.0481262322039498e+01 1.5750000037775036e+01 0 0 0 +12769 1 -4.1395809389726121e+00 7.2674480301549366e+01 1.5750000072625729e+01 0 0 0 +12747 1 -1.7224969398239518e+00 7.1576497243364543e+01 1.5750000070155801e+01 0 0 0 +9662 1 -4.4013659058108480e+01 7.4160796371587423e+01 8.4866325522625630e-08 0 0 0 +12232 1 -4.4574831155537019e+01 7.5818299525201155e+01 1.5750000091297279e+01 0 0 0 +12237 1 -4.2330143023495083e+01 7.4722272584874574e+01 1.5750000050672469e+01 0 0 0 +9663 1 -4.1768970972630449e+01 7.3064769380603252e+01 2.7439849503707592e-08 0 0 0 +9714 1 -4.0646626996476833e+01 7.5283748968416418e+01 1.7499999976437763e+01 0 0 -1 +12288 1 -4.0085455024120407e+01 7.3626245777607579e+01 1.5749999990972684e+01 0 0 0 +12289 1 -3.8963111095067291e+01 7.5845225255644223e+01 1.5749999964598125e+01 0 0 0 +9715 1 -3.8401939068137658e+01 7.4187722123899619e+01 1.7499999976370002e+01 0 0 -1 +12340 1 -3.6718423105893109e+01 7.4749198551462612e+01 1.5749999932224133e+01 0 0 0 +9822 1 -3.2790219499274237e+01 7.4214648245923314e+01 1.2067609134192026e-08 0 0 0 +12394 1 -3.2790219458176246e+01 7.4214648233455350e+01 1.3999999999975019e+01 0 0 0 +12345 1 -3.4473735292651838e+01 7.3653171790104992e+01 1.5749999978839323e+01 0 0 0 +12392 1 -3.3351391510146833e+01 7.5872151398493074e+01 1.5750000001781311e+01 0 0 0 +12397 1 -3.1106703545935435e+01 7.4776124681739446e+01 1.5750000019402609e+01 0 0 0 +9875 1 -2.7178499800713848e+01 7.4241574569415064e+01 1.7499999992238997e+01 0 0 -1 +12447 1 -2.7178499850606162e+01 7.4241574533563252e+01 1.4000000018936316e+01 0 0 0 +12448 1 -2.8862015688199694e+01 7.3680098144153405e+01 1.5750000037051191e+01 0 0 0 +12449 1 -2.7739671721358690e+01 7.5899077693509128e+01 1.5749999998797307e+01 0 0 0 +9927 1 -2.3811467831218248e+01 7.5364527501229617e+01 1.7499999958206722e+01 0 0 -1 +12499 1 -2.3811467859455192e+01 7.5364527514638482e+01 1.3999999963283207e+01 0 0 0 +12500 1 -2.5494983804015735e+01 7.4803051053933743e+01 1.5749999994842851e+01 0 0 0 +12505 1 -2.3250295563558183e+01 7.3707024310554090e+01 1.5749999975923188e+01 0 0 0 +12552 1 -2.2127952782998634e+01 7.5926004321223317e+01 1.5749999962860429e+01 0 0 0 +12557 1 -1.9883266486561823e+01 7.4829978031760149e+01 1.5750000022181281e+01 0 0 0 +9983 1 -1.9322089644111145e+01 7.3172472577123500e+01 1.4428934491661494e-08 0 0 0 +10034 1 -1.8199753882517498e+01 7.5391457944068122e+01 2.4935904008316356e-08 0 0 0 +12555 1 -1.9322089671406783e+01 7.3172472596003928e+01 1.4000000000146363e+01 0 0 0 +12606 1 -1.8199753932732438e+01 7.5391457987937116e+01 1.3999999990880644e+01 0 0 0 +12608 1 -1.7638583730346035e+01 7.3733951433408066e+01 1.5750000025474666e+01 0 0 0 +12609 1 -1.6516219873815714e+01 7.5952931654337490e+01 1.5750000032388307e+01 0 0 0 +10090 1 -1.3710491483018123e+01 7.3199455286249290e+01 1.7499999957342357e+01 0 0 -1 +12660 1 -1.4271514903608407e+01 7.4856917656144873e+01 1.5749999998390029e+01 0 0 0 +12662 1 -1.3710491526170882e+01 7.3199455314554044e+01 1.3999999984751380e+01 0 0 0 +10087 1 -1.2587783120113562e+01 7.5418278737955063e+01 1.7499999974301787e+01 0 0 -1 +12659 1 -1.2587783158390502e+01 7.5418278787841970e+01 1.4000000007644827e+01 0 0 0 +12665 1 -1.2026826969706168e+01 7.3760968090619627e+01 1.5750000006037448e+01 0 0 0 +12712 1 -1.0904485946247869e+01 7.5979648890785114e+01 1.5750000014088631e+01 0 0 0 +10143 1 -8.0950139251479687e+00 7.3225299435369223e+01 2.2254074139027580e-08 0 0 0 +10190 1 -6.9829710548990525e+00 7.5446434267504245e+01 2.6335673197763754e-08 0 0 0 +12715 1 -8.0950139019230960e+00 7.3225299411213726e+01 1.3999999989701308e+01 0 0 0 +12717 1 -8.6590371577636152e+00 7.4882791293260524e+01 1.5750000016823371e+01 0 0 0 +12762 1 -6.9829710294516190e+00 7.5446434266115659e+01 1.4000000003590678e+01 0 0 0 +12764 1 -6.4095229037003003e+00 7.3783137418793430e+01 1.5750000020583238e+01 0 0 0 +12765 1 -5.3078137847950781e+00 7.6015248222464820e+01 1.5750000023312193e+01 0 0 0 +10226 1 -1.2264314790766544e+00 7.5511070187852710e+01 5.3604129135464973e-08 0 0 0 +10229 1 -2.5187339024641728e+00 7.3233507366498245e+01 9.4710429721089895e-08 0 0 0 +12163 1 -1.0571059613035942e+00 7.3876424909071602e+01 1.5750000037431152e+01 0 0 0 +12779 1 -2.5187338593810216e+00 7.3233507411013292e+01 1.3999999997714609e+01 0 0 0 +12798 1 -1.2264315029136352e+00 7.5511070232238438e+01 1.4000000029362777e+01 0 0 0 +12799 1 -3.1035850400719682e+00 7.4958686639297554e+01 1.5750000052831064e+01 0 0 0 +9659 1 -4.2891315043890600e+01 7.6379775715570901e+01 5.3671065813887253e-08 0 0 0 +12230 1 -4.5136003157128584e+01 7.7475802761858091e+01 1.4000000041163844e+01 0 0 0 +12233 1 -4.3452487098496320e+01 7.8037279007978398e+01 1.5750000045031266e+01 0 0 0 +9710 1 -4.1768971032941764e+01 7.8598755295963883e+01 3.2756947376810785e-08 0 0 0 +12282 1 -4.1768971114367815e+01 7.8598755220582603e+01 1.3999999988821504e+01 0 0 0 +12284 1 -4.1207799070462627e+01 7.6941252069769220e+01 1.5749999991507869e+01 0 0 0 +12335 1 -3.6157251422661879e+01 7.8625681178733018e+01 1.3999999953728874e+01 0 0 0 +9763 1 -3.6157251490836892e+01 7.8625681181626049e+01 1.7499999964475180e+01 0 0 -1 +9766 1 -3.7279595237481431e+01 7.6406701719067030e+01 1.7499999967331089e+01 0 0 -1 +12336 1 -3.7840767362814063e+01 7.8064204844745916e+01 1.5749999946683062e+01 0 0 0 +12338 1 -3.7279595233906406e+01 7.6406701709235591e+01 1.3999999951979930e+01 0 0 0 +12341 1 -3.5596079462815794e+01 7.6968178080854386e+01 1.5749999938401848e+01 0 0 0 +9819 1 -3.1667875567923044e+01 7.6433627764519457e+01 6.8644219197722123e-09 0 0 0 +9870 1 -3.0545531882564866e+01 7.8652607408525512e+01 4.2287172874466705e-08 0 0 0 +12391 1 -3.1667875536933579e+01 7.6433627778374799e+01 1.4000000026044658e+01 0 0 0 +12442 1 -3.0545531869533011e+01 7.8652607402231624e+01 1.4000000018071598e+01 0 0 0 +12393 1 -3.2229047726832711e+01 7.8091130897213404e+01 1.5750000022905603e+01 0 0 0 +12444 1 -2.9984359726764190e+01 7.6995104287022286e+01 1.5750000021971704e+01 0 0 0 +9926 1 -2.6056155863242687e+01 7.6460554191104677e+01 1.7499999974197923e+01 0 0 -1 +12498 1 -2.6056155943554867e+01 7.6460554200701452e+01 1.3999999973348249e+01 0 0 0 +12496 1 -2.6617328062326983e+01 7.8118057384022407e+01 1.5749999975616650e+01 0 0 0 +9923 1 -2.4933812070558741e+01 7.8679533871285770e+01 1.7499999951227814e+01 0 0 -1 +12495 1 -2.4933812115332326e+01 7.8679533895487168e+01 1.3999999976634955e+01 0 0 0 +9978 1 -2.2689124278379399e+01 7.7583507525036254e+01 1.7499999965574997e+01 0 0 -1 +12501 1 -2.4372640228561007e+01 7.7022030790133456e+01 1.5749999967134869e+01 0 0 0 +12550 1 -2.2689124267804868e+01 7.7583507521328414e+01 1.3999999953701176e+01 0 0 0 +12553 1 -2.1005606960886567e+01 7.8144983632422893e+01 1.5749999972048975e+01 0 0 0 +10031 1 -1.7077391931727703e+01 7.7610426637975479e+01 1.5961905575068158e-08 0 0 0 +12603 1 -1.7077391953366725e+01 7.7610426636910731e+01 1.4000000027431632e+01 0 0 0 +12604 1 -1.8760916076895558e+01 7.7048956843948346e+01 1.5750000033167483e+01 0 0 0 +12656 1 -1.5393908569374450e+01 7.8171906798366862e+01 1.5750000040531203e+01 0 0 0 +12661 1 -1.3149237746227033e+01 7.7075848703059961e+01 1.5750000003306708e+01 0 0 0 +10138 1 -1.1466172965595666e+01 7.7637544653590382e+01 1.7499999978911976e+01 0 0 -1 +12710 1 -1.1466172990634222e+01 7.7637544686844194e+01 1.4000000018027958e+01 0 0 0 +12713 1 -9.7824045522706218e+00 7.8199318249005401e+01 1.5750000027950176e+01 0 0 0 +12760 1 -7.5396997713187597e+00 7.7105160319914631e+01 1.5750000055252473e+01 0 0 0 +10187 1 -5.8404167571310124e+00 7.7662453962285724e+01 6.2639990972002124e-08 0 0 0 +12759 1 -5.8404167320829199e+00 7.7662453954527962e+01 1.3999999998146544e+01 0 0 0 +12795 1 -4.1395812147675786e+00 7.8208466241669868e+01 1.5750000011171100e+01 0 0 0 +12379 1 -3.5034908321938694e+01 8.6378646644021487e+01 1.3999999960861921e+01 0 0 0 +18951 1 -1.4907666406476271e-13 7.7894789355179668e+01 1.3999999975819357e+01 0 0 0 +12800 1 -1.7224971817331129e+00 7.7110483193420563e+01 1.5750000021244796e+01 0 0 0 +12278 1 -4.2891315214344822e+01 8.1913761672815113e+01 1.4000000039960762e+01 0 0 0 +12228 1 -4.4013659165856502e+01 7.9694782259684672e+01 1.4000000034869601e+01 0 0 0 +12229 1 -4.4574831174715506e+01 8.1352285496237855e+01 1.5750000079600586e+01 0 0 0 +12280 1 -4.2330143153875575e+01 8.0256258540677095e+01 1.5750000036881048e+01 0 0 0 +9707 1 -4.0646627216612799e+01 8.0817734882277861e+01 1.7499999973636339e+01 0 0 -1 +12279 1 -4.0646627283420059e+01 8.0817734863491253e+01 1.3999999972990574e+01 0 0 0 +12285 1 -4.0085455179837474e+01 7.9160231646211130e+01 1.5749999963434071e+01 0 0 0 +12332 1 -3.8963111379177839e+01 8.1379211116026426e+01 1.5749999934213580e+01 0 0 0 +12331 1 -3.7279595647172059e+01 8.1940687606171693e+01 1.3999999952756243e+01 0 0 0 +12337 1 -3.6718423456584432e+01 8.0283184416626824e+01 1.5749999958506246e+01 0 0 0 +9814 1 -3.5034907706762212e+01 8.0844660706840997e+01 1.7499999967092904e+01 0 0 -1 +12386 1 -3.5034907621475348e+01 8.0844660721721610e+01 1.3999999979389838e+01 0 0 0 +12388 1 -3.4473735593059182e+01 7.9187157618916885e+01 1.5749999962816203e+01 0 0 0 +12389 1 -3.3351391977414593e+01 8.1406137285464951e+01 1.5750000000319398e+01 0 0 0 +9867 1 -2.9423188206645730e+01 8.0871587036441468e+01 4.0097773990055430e-08 0 0 0 +12439 1 -2.9423188225036981e+01 8.0871587038496216e+01 1.4000000047116975e+01 0 0 0 +12440 1 -3.1106703974425280e+01 8.0310110506381818e+01 1.5750000048221318e+01 0 0 0 +12445 1 -2.8862016038833122e+01 7.9214083971253913e+01 1.5750000028071318e+01 0 0 0 +12492 1 -2.7739672251352115e+01 8.1433063582554212e+01 1.5750000021879607e+01 0 0 0 +12497 1 -2.5494984217056562e+01 8.0337036993706434e+01 1.5749999956483395e+01 0 0 0 +12548 1 -2.3250295942566922e+01 7.9241010307711292e+01 1.5749999956143043e+01 0 0 0 +9975 1 -2.1566779996837393e+01 7.9802486678129185e+01 1.7499999991805161e+01 0 0 -1 +10026 1 -2.0444437693550622e+01 8.2021467835228165e+01 4.4169894408696564e-09 0 0 0 +12547 1 -2.1566779995996995e+01 7.9802486718391549e+01 1.3999999976492925e+01 0 0 0 +12549 1 -2.2127953247764871e+01 8.1459990456733607e+01 1.5749999984752755e+01 0 0 0 +12598 1 -2.0444437655916211e+01 8.2021467894265484e+01 1.4000000008502836e+01 0 0 0 +12600 1 -1.9883266866852388e+01 8.0363964196288023e+01 1.5750000016436472e+01 0 0 0 +12605 1 -1.7638584087480595e+01 7.9267937615828842e+01 1.5750000052550609e+01 0 0 0 +12652 1 -1.6516220284303095e+01 8.1486917941241231e+01 1.5750000025658084e+01 0 0 0 +10079 1 -1.4832659146241374e+01 8.2048365223225673e+01 1.7499999988204600e+01 0 0 -1 +10082 1 -1.5955087798261667e+01 7.9829428661970894e+01 1.9118591154665410e-08 0 0 0 +12651 1 -1.4832659211760129e+01 8.2048365218669218e+01 1.4000000032290933e+01 0 0 0 +12654 1 -1.5955087837237400e+01 7.9829428691573654e+01 1.4000000028889565e+01 0 0 0 +12657 1 -1.4271515292035977e+01 8.0390903910779187e+01 1.5750000013727986e+01 0 0 0 +10135 1 -1.0342364386614758e+01 7.9856004251209214e+01 1.7499999988787931e+01 0 0 -1 +12707 1 -1.0342364393777416e+01 7.9856004271269626e+01 1.4000000016299991e+01 0 0 0 +12708 1 -1.2026827299130703e+01 7.9294954278204870e+01 1.5750000006716967e+01 0 0 0 +12709 1 -1.0904486363960132e+01 8.1513635117349963e+01 1.5749999998033802e+01 0 0 0 +10182 1 -9.2228647641553927e+00 8.2075876775163493e+01 2.3091828893484490e-08 0 0 0 +12754 1 -9.2228647080782427e+00 8.2075876798474269e+01 1.3999999986785276e+01 0 0 0 +12756 1 -8.6590375582668972e+00 8.0416777444353713e+01 1.5750000030601596e+01 0 0 0 +10218 1 -3.5610869538096650e+00 8.2098524038888755e+01 6.6214614236059788e-08 0 0 0 +10221 1 -4.7485642821024268e+00 7.9884620935199266e+01 7.6617020283720194e-08 0 0 0 +12761 1 -6.4095233039500705e+00 7.9317123440572630e+01 1.5750000058095354e+01 0 0 0 +12790 1 -3.5610869398740657e+00 8.2098523989993922e+01 1.4000000036239310e+01 0 0 0 +12791 1 -5.3078141852814760e+00 8.1549234285397205e+01 1.5750000076009805e+01 0 0 0 +12793 1 -4.7485642476209549e+00 7.9884620932935945e+01 1.3999999997198691e+01 0 0 0 +10175 1 -1.0571061440588332e+00 7.9410410845783204e+01 1.5750000019258843e+01 0 0 0 +12796 1 -3.1035852755613371e+00 8.0492672548757199e+01 1.5750000032069643e+01 0 0 0 +12227 1 -4.5136003190289586e+01 8.3009788751018306e+01 1.4000000044124443e+01 0 0 0 +12274 1 -4.4013659277600333e+01 8.5228768261864147e+01 1.4000000041143528e+01 0 0 0 +12276 1 -4.3452487208225456e+01 8.3571264988308258e+01 1.5750000036177578e+01 0 0 0 +9758 1 -3.9524283506713047e+01 8.3036714400177772e+01 1.7499999977397131e+01 0 0 -1 +12275 1 -4.1768971347492048e+01 8.4132741219561154e+01 1.3999999982513987e+01 0 0 0 +12281 1 -4.1207799319431821e+01 8.2475238025500445e+01 1.5749999991144001e+01 0 0 0 +12328 1 -4.0085455528427666e+01 8.4694217617312106e+01 1.5749999960864786e+01 0 0 0 +12330 1 -3.9524283569276498e+01 8.3036714361052461e+01 1.3999999950340197e+01 0 0 0 +9755 1 -3.8401939798629172e+01 8.5255693968065373e+01 1.7499999943307799e+01 0 0 -1 +12327 1 -3.8401939789406029e+01 8.5255693940030923e+01 1.3999999941850387e+01 0 0 0 +12382 1 -3.6157251979993205e+01 8.4159667112719703e+01 1.3999999944656583e+01 0 0 0 +12333 1 -3.7840767752437429e+01 8.3598190757277436e+01 1.5749999924669059e+01 0 0 0 +12384 1 -3.5596079986813393e+01 8.2502163984577720e+01 1.5749999966346255e+01 0 0 0 +9811 1 -3.3912564147792018e+01 8.3063640364458919e+01 1.8903055121199941e-08 0 0 0 +9862 1 -3.2790220601334781e+01 8.5282620008587330e+01 2.3413761596202676e-08 0 0 0 +12383 1 -3.3912564034542982e+01 8.3063640360983229e+01 1.3999999981014890e+01 0 0 0 +12385 1 -3.4473736227824382e+01 8.4721143554073805e+01 1.5749999983519036e+01 0 0 0 +12434 1 -3.2790220500891827e+01 8.5282619975540953e+01 1.4000000002724825e+01 0 0 0 +12436 1 -3.2229048331995131e+01 8.3625116763450677e+01 1.5750000013734292e+01 0 0 0 +12441 1 -2.9984360292825560e+01 8.2529090189266299e+01 1.5750000060909873e+01 0 0 0 +9915 1 -2.7178500943134750e+01 8.5309546413397044e+01 2.8907940929912002e-08 0 0 0 +9918 1 -2.8300844500449887e+01 8.3090566766430470e+01 5.3309662462197593e-08 0 0 0 +12487 1 -2.7178500964467240e+01 8.5309546383531426e+01 1.4000000020079931e+01 0 0 0 +12490 1 -2.8300844520432033e+01 8.3090566734064652e+01 1.4000000037465457e+01 0 0 0 +12488 1 -2.8862016776902905e+01 8.4748069901077827e+01 1.5750000065181480e+01 0 0 0 +12493 1 -2.6617328698766471e+01 8.3652043380460526e+01 1.5750000015280518e+01 0 0 0 +12544 1 -2.4372640766642146e+01 8.2556016825814197e+01 1.5749999963126442e+01 0 0 0 +12545 1 -2.3250296549484968e+01 8.4774996459344024e+01 1.5749999963621304e+01 0 0 0 +12596 1 -2.1005607507127319e+01 8.3678969849565163e+01 1.5750000009801539e+01 0 0 0 +10023 1 -1.9322090524408480e+01 8.4240444973599736e+01 2.6326880231408722e-08 0 0 0 +12595 1 -1.9322090472670009e+01 8.4240445034222049e+01 1.4000000026562162e+01 0 0 0 +12601 1 -1.8760916511750828e+01 8.2582943082350383e+01 1.5750000018133344e+01 0 0 0 +12648 1 -1.7638584543693643e+01 8.4801923941501514e+01 1.5750000029921257e+01 0 0 0 +10130 1 -1.3710492245741557e+01 8.4267427819869326e+01 1.7499999962612854e+01 0 0 -1 +12653 1 -1.5393908979799619e+01 8.3705893108315962e+01 1.5750000011683824e+01 0 0 0 +12702 1 -1.3710492312167894e+01 8.4267427804622614e+01 1.3999999992152258e+01 0 0 0 +12704 1 -1.3149238168528962e+01 8.2609834997989026e+01 1.5750000013239697e+01 0 0 0 +12705 1 -1.2026827745140487e+01 8.4828940607093685e+01 1.5749999981361210e+01 0 0 0 +12752 1 -9.7824049835624614e+00 8.3733304509748990e+01 1.5749999987352016e+01 0 0 0 +10179 1 -8.0950147390778113e+00 8.4293271716578303e+01 6.0899171927530915e-08 0 0 0 +12751 1 -8.0950146560361311e+00 8.4293271718998000e+01 1.3999999991794878e+01 0 0 0 +12757 1 -7.5397001876781315e+00 8.2639146469012701e+01 1.5750000024202787e+01 0 0 0 +12787 1 -6.4095236712948971e+00 8.4851109592307409e+01 1.5750000057712167e+01 0 0 0 +12792 1 -4.1395816160249836e+00 8.3742452308784550e+01 1.5750000112679263e+01 0 0 0 +10239 1 -2.5187344375005738e+00 8.4301479332341543e+01 4.9283730874094545e-08 0 0 0 +10850 1 -2.5187343891201168e+00 8.4301479351934148e+01 1.4000000074444088e+01 0 0 0 +10234 1 -1.0571062291191131e+00 8.4944396745884731e+01 1.5750000028011616e+01 0 0 0 +10818 1 -1.7224975633720783e+00 8.2644469188762116e+01 1.5750000047159318e+01 0 0 0 +12272 1 -4.2891315525960863e+01 8.7447747725687478e+01 1.4000000008641994e+01 0 0 0 +12273 1 -4.4574831380616828e+01 8.6886271528786594e+01 1.5750000079443643e+01 0 0 0 +12277 1 -4.2330143385075878e+01 8.5790244541898815e+01 1.5750000034256603e+01 0 0 0 +12326 1 -4.0646627659015252e+01 8.6351720871033692e+01 1.3999999970426559e+01 0 0 0 +12325 1 -4.1207799741778224e+01 8.8009224067014500e+01 1.5749999984411996e+01 0 0 0 +12329 1 -3.8963111909217957e+01 8.6913197126622634e+01 1.5749999946369906e+01 0 0 0 +9806 1 -3.7279596281676852e+01 8.7474673591704402e+01 1.7499999945752965e+01 0 0 -1 +12378 1 -3.7279596248984333e+01 8.7474673562509992e+01 1.3999999931021746e+01 0 0 0 +12380 1 -3.6718424039324674e+01 8.5817170359957231e+01 1.5749999913859154e+01 0 0 0 +12381 1 -3.5596080668798606e+01 8.8036149933721290e+01 1.5749999934505979e+01 0 0 0 +12433 1 -3.3351392735352789e+01 8.6940123196228498e+01 1.5750000012502230e+01 0 0 0 +10244 1 -4.5136003441523371e+01 4.9805873677574404e+01 3.4999999687953847e+00 0 0 0 +10890 1 -4.5136003763472637e+01 4.4271887599793160e+01 6.9999999684591563e+00 0 0 0 +10887 1 -4.5136003471804031e+01 4.9805873726829191e+01 6.9999999470344942e+00 0 0 0 +11533 1 -4.5136003734038084e+01 4.4271887642957168e+01 1.0499999996814179e+01 0 0 0 +11530 1 -4.5136003470892518e+01 4.9805873727300273e+01 1.0499999982792888e+01 0 0 0 +12176 1 -4.5136003743413603e+01 4.4271887613264241e+01 1.4000000011996258e+01 0 0 0 +12173 1 -4.5136003448466816e+01 4.9805873703469217e+01 1.4000000026033455e+01 0 0 0 +9604 1 -4.5136003757363596e+01 4.4271887587785720e+01 1.2335778620808924e-08 0 0 0 +9601 1 -4.5136003442243897e+01 4.9805873666721872e+01 5.0362274350845837e-09 0 0 0 +12818 1 1.0571062667461191e+00 1.9346077849528227e+00 1.7500000112156056e+00 0 0 0 +12824 1 3.1035854956555595e+00 3.0168696315392496e+00 1.7499999908411956e+00 0 0 0 +13457 1 2.5187344778432319e+00 1.2916904524908879e+00 3.5000000046060800e+00 0 0 0 +12817 1 2.5187344547369452e+00 1.2916904102462243e+00 4.9420871064050320e-08 0 0 0 +12820 1 4.1395817340161933e+00 7.3266341789005995e-01 1.7500000313098003e+00 0 0 0 +12828 1 6.4095238475943477e+00 1.8413208006766797e+00 1.7500000164663647e+00 0 0 0 +12833 1 8.6590381285156965e+00 2.9409750282241154e+00 1.7500000046685644e+00 0 0 0 +13470 1 8.0950149150610411e+00 1.2834830214561255e+00 3.5000000310664832e+00 0 0 0 +12830 1 8.0950149171148365e+00 1.2834830057226385e+00 3.2068961338172225e-08 0 0 0 +12832 1 9.7824052567088060e+00 7.2351586814210600e-01 1.7500000131214675e+00 0 0 0 +12836 1 1.2026827963717315e+01 1.8191520520102136e+00 1.7499999991461219e+00 0 0 0 +12835 1 1.3710492528625631e+01 1.2576392722224934e+00 2.1277522756686838e-08 0 0 0 +12838 1 1.5393909299397027e+01 6.9610454029909663e-01 1.7499999780182194e+00 0 0 0 +12855 1 1.4271515886812715e+01 2.9151016595978896e+00 1.7499999983501662e+00 0 0 0 +13475 1 1.3710492537267406e+01 1.2576392153309808e+00 3.4999999725215551e+00 0 0 0 +12859 1 1.7638584966376918e+01 1.7921352931977486e+00 1.7499999974109979e+00 0 0 0 +12861 1 1.9322090990055045e+01 1.2306563528083887e+00 5.7190826023066457e-09 0 0 0 +13501 1 1.9322091015548143e+01 1.2306563181770649e+00 3.4999999711394918e+00 0 0 0 +12863 1 2.1005608124274758e+01 6.6918115689345126e-01 1.7499999758936373e+00 0 0 0 +12864 1 1.9883267928181375e+01 2.8881618035852563e+00 1.7499999803948569e+00 0 0 0 +12867 1 2.3250297193045000e+01 1.7652076983911877e+00 1.7499999737659728e+00 0 0 0 +12900 1 2.5494985578480346e+01 2.8612341980423812e+00 1.7499999933872816e+00 0 0 0 +12869 1 2.6617329442841985e+01 6.4225447912836686e-01 1.7500000037995525e+00 0 0 0 +12904 1 2.8862017536818470e+01 1.7382809446304111e+00 1.7500000390070389e+00 0 0 0 +13542 1 2.7178501662702949e+01 2.2997575292563344e+00 3.5000000186276194e+00 0 0 0 +12902 1 2.7178501679389338e+01 2.2997574928928390e+00 3.0011183696096122e-10 0 0 0 +13508 1 2.8300845302726319e+01 8.0777815187375063e-02 3.5000000181341182e+00 0 0 0 +12868 1 2.8300845316778801e+01 8.0777775781180700e-02 3.3035269561744549e-08 0 0 0 +12908 1 3.2229049192387912e+01 6.1532776292386593e-01 1.7500000050934270e+00 0 0 0 +12909 1 3.1106705531570451e+01 2.8343074332159190e+00 1.7500000219474521e+00 0 0 0 +12912 1 3.4473737081087130e+01 1.7113545625238877e+00 1.7499999620907791e+00 0 0 0 +13547 1 3.2790221435261287e+01 2.2728310172919155e+00 3.4999999836687037e+00 0 0 0 +12907 1 3.2790221372336234e+01 2.2728310041231632e+00 1.7499999987769982e+01 0 0 -1 +12910 1 3.3912564909748568e+01 5.3851372578339954e-02 1.7499999963632007e+01 0 0 -1 +13550 1 3.3912564961155603e+01 5.3851359390581409e-02 3.4999999969212334e+00 0 0 0 +12914 1 3.7840768407292281e+01 5.8840184940124995e-01 1.7499999544533458e+00 0 0 0 +12958 1 3.6718424783064357e+01 2.8073814423515326e+00 1.7499999383111389e+00 0 0 0 +12960 1 3.8401940457731520e+01 2.2459050653570025e+00 1.7499999912707157e+01 0 0 -1 +13600 1 3.8401940408906128e+01 2.2459050856377467e+00 3.4999999951340803e+00 0 0 0 +12962 1 4.0085456042742997e+01 1.6844287841957248e+00 1.7499999636963353e+00 0 0 0 +12964 1 4.1768971735780887e+01 1.1229524209478008e+00 9.2123324918310275e-09 0 0 0 +12913 1 3.9524284067994721e+01 2.6925512807287690e-02 1.7499999941747138e+01 0 0 -1 +13553 1 3.9524284003473475e+01 2.6925531372715097e-02 3.5000000134070426e+00 0 0 0 +12965 1 4.4013659638100371e+01 2.2189794490016137e+00 5.0392150996600312e-08 0 0 0 +12966 1 4.3452487500354728e+01 5.6147619686520900e-01 1.7500000476526285e+00 0 0 0 +12967 1 4.2330143828877240e+01 2.7804557153744391e+00 1.7500000123149393e+00 0 0 0 +19201 1 4.5136003433767918e+01 -1.6248530316431992e-07 5.7086650005297504e-08 0 0 0 +12825 1 1.7224977294695840e+00 5.1686662940701238e+00 1.7499999588403059e+00 0 0 0 +13462 1 1.2264317589631200e+00 3.5692531831552428e+00 3.4999999576142455e+00 0 0 0 +12822 1 1.2264317382147218e+00 3.5692531550190587e+00 1.4147145974879704e-08 0 0 0 +12829 1 5.3078145345525449e+00 4.0734315872692948e+00 1.7499999882941337e+00 0 0 0 +12843 1 4.1395817468083376e+00 6.2666496066644379e+00 1.7499999826597705e+00 0 0 0 +13485 1 5.8404173996480591e+00 5.7206374910418791e+00 3.5000000008469048e+00 0 0 0 +12845 1 5.8404174049736621e+00 5.7206374846923458e+00 1.9534394383269751e-08 0 0 0 +12847 1 7.5397005642848249e+00 5.1633440364141503e+00 1.7500000081499365e+00 0 0 0 +13467 1 6.9829719145240032e+00 3.5046178482597083e+00 3.4999999961860921e+00 0 0 0 +12827 1 6.9829719071291336e+00 3.5046178300486299e+00 3.7477812327475106e-08 0 0 0 +12852 1 9.7824052508652759e+00 6.2575022470872907e+00 1.7500000270342384e+00 0 0 0 +12851 1 1.0904486849640181e+01 4.0378328803829548e+00 1.7500000247894294e+00 0 0 0 +12853 1 1.2587784058408054e+01 3.4764627827153225e+00 1.5876237666183580e-08 0 0 0 +13490 1 1.1466173720369424e+01 5.6957287180384606e+00 3.5000000564490823e+00 0 0 0 +13493 1 1.2587784058837038e+01 3.4764627495750720e+00 3.5000000309495833e+00 0 0 0 +12850 1 1.1466173732716946e+01 5.6957287320453833e+00 2.1856274310016519e-08 0 0 0 +12856 1 1.3149238574875001e+01 5.1340327780646575e+00 1.7499999987666610e+00 0 0 0 +12888 1 1.5393909443192626e+01 6.2300908148338259e+00 1.7500000235735631e+00 0 0 0 +12858 1 1.8199755155868932e+01 3.4496418959185360e+00 3.2437142486713390e-08 0 0 0 +12860 1 1.6516220974926757e+01 4.0111156365725185e+00 1.7500000050148492e+00 0 0 0 +12890 1 1.7077392985158294e+01 5.6686106034078749e+00 6.7968234208256343e-08 0 0 0 +12892 1 1.8760917336603537e+01 5.1071407327379097e+00 1.7500000116915948e+00 0 0 0 +13498 1 1.8199755169156031e+01 3.4496418281640779e+00 3.4999999765899350e+00 0 0 0 +13530 1 1.7077393003168364e+01 5.6686105576125509e+00 3.4999999815408098e+00 0 0 0 +12896 1 2.2127954402115893e+01 3.9841879027887903e+00 1.7499999912845396e+00 0 0 0 +12897 1 2.1005608440293759e+01 6.2031673634671307e+00 1.7500000015717319e+00 0 0 0 +12895 1 2.2689125927714858e+01 5.6416910897603358e+00 1.7499999974963991e+01 0 0 -1 +12898 1 2.3811469573927496e+01 3.4227109207248878e+00 1.7499999974831017e+01 0 0 -1 +12901 1 2.4372642031799579e+01 5.0802141202601474e+00 1.7499999712934475e+00 0 0 0 +13535 1 2.2689125918610454e+01 5.6416910972599519e+00 3.5000000017952444e+00 0 0 0 +13538 1 2.3811469554211659e+01 3.4227109104006228e+00 3.4999999949772969e+00 0 0 0 +12905 1 2.7739673685992212e+01 3.9572606413884186e+00 1.7500000153364506e+00 0 0 0 +12946 1 2.6617329984357365e+01 6.1762405062710739e+00 1.7500000045729784e+00 0 0 0 +13539 1 2.6056157778801200e+01 4.5187373413569238e+00 3.4999999838410418e+00 0 0 0 +12899 1 2.6056157798149925e+01 4.5187373139046949e+00 1.7499999986669764e+01 0 0 -1 +12950 1 2.9984361790908466e+01 5.0532871710903962e+00 1.7500000240319842e+00 0 0 0 +12952 1 3.1667877588182566e+01 4.4918105979504963e+00 2.6677081492213450e-08 0 0 0 +12955 1 3.2229049833613111e+01 6.1493137386358052e+00 1.7500000101160029e+00 0 0 0 +13592 1 3.1667877653590619e+01 4.4918105818298111e+00 3.4999999717029722e+00 0 0 0 +12954 1 3.3351393544882036e+01 3.9303342058665365e+00 1.7499999937226005e+00 0 0 0 +12959 1 3.5596081392137648e+01 5.0263609703984269e+00 1.7499999568546007e+00 0 0 0 +13012 1 3.7840769034708117e+01 6.1223878665962470e+00 1.7499999327272542e+00 0 0 0 +13597 1 3.7279596927781974e+01 4.4648846684336965e+00 3.4999999961215007e+00 0 0 0 +12957 1 3.7279596939142301e+01 4.4648846564523277e+00 1.7499999901156851e+01 0 0 -1 +12961 1 4.0646628173952998e+01 3.3419320071863727e+00 1.7499999966356445e+01 0 0 -1 +12963 1 3.8963112510392982e+01 3.9034082859113917e+00 1.7499999444897851e+00 0 0 0 +13016 1 4.1207800180915406e+01 4.9994352143990328e+00 1.7499999926346110e+00 0 0 0 +13018 1 4.2891315959154063e+01 4.4379588504372816e+00 1.7499999997792976e+01 0 0 -1 +13019 1 4.4574831757617218e+01 3.8764826110175243e+00 1.7500000212378688e+00 0 0 0 +13020 1 4.3452487923930128e+01 6.0954621275761722e+00 1.7499999967118767e+00 0 0 0 +12801 1 4.4574831836574845e+01 4.2614384290688932e+01 1.5750000009898589e+01 0 0 0 +12840 1 1.0571063328403156e+00 7.4685938777930385e+00 1.7499999669200288e+00 0 0 0 +12844 1 3.1035853289598467e+00 8.5508558302904341e+00 1.7499999900007142e+00 0 0 0 +12842 1 4.7485646065608993e+00 7.9428044630325250e+00 1.1038309305492536e-08 0 0 0 +12848 1 6.4095238309832130e+00 7.3753071457608561e+00 1.7500000013029255e+00 0 0 0 +12876 1 5.3078143215648836e+00 9.6074179509072710e+00 1.7500000131003046e+00 0 0 0 +13482 1 4.7485645959784142e+00 7.9428044414925321e+00 3.4999999992689728e+00 0 0 0 +12880 1 8.6590379449577028e+00 8.4749614075295874e+00 1.7500000403792066e+00 0 0 0 +12884 1 1.2026827889312527e+01 7.3531383683159008e+00 1.7500000229255046e+00 0 0 0 +12885 1 1.0904486600808481e+01 9.5718192352582232e+00 1.7500000101594166e+00 0 0 0 +13522 1 1.0342364853151805e+01 7.9141883000278419e+00 3.5000000648132632e+00 0 0 0 +12882 1 1.0342364857052821e+01 7.9141883130295136e+00 2.3141360662650522e-08 0 0 0 +12887 1 1.5955088589614208e+01 7.8876126677611706e+00 3.5147813164781606e-08 0 0 0 +12889 1 1.4271515864588480e+01 8.4490879624886190e+00 1.7500000099911233e+00 0 0 0 +13527 1 1.5955088591805298e+01 7.8876126381253622e+00 3.5000000262483670e+00 0 0 0 +12893 1 1.7638585116478680e+01 7.3261215257896781e+00 1.7500000173155044e+00 0 0 0 +12934 1 1.6516220935417273e+01 9.5451018252941040e+00 1.7500000185920579e+00 0 0 0 +12938 1 1.9883268075693334e+01 8.4221479471361569e+00 1.7500000338969113e+00 0 0 0 +12940 1 2.1566781435225831e+01 7.8606703741209518e+00 1.7494177547443685e-08 0 0 0 +12943 1 2.2127954603359065e+01 9.5181740037083671e+00 1.7500000119983627e+00 0 0 0 +13580 1 2.1566781439412111e+01 7.8606703692662316e+00 3.5000000104578595e+00 0 0 0 +12942 1 2.3250297574468707e+01 7.2991938065911457e+00 1.7499999878193380e+00 0 0 0 +12947 1 2.5494986013798826e+01 8.3952202418277029e+00 1.7499999852882964e+00 0 0 0 +13584 1 2.4933813902227541e+01 6.7377172216484098e+00 3.4999999935629886e+00 0 0 0 +12944 1 2.4933813916855399e+01 6.7377172182527287e+00 1.7499999970145613e+01 0 0 -1 +12951 1 2.8862018065914381e+01 7.2722669308002024e+00 1.7500000178376351e+00 0 0 0 +13000 1 2.7739674057959053e+01 9.4912466544029765e+00 1.7500000165006995e+00 0 0 0 +13002 1 2.9423190165970560e+01 8.9297700613786493e+00 3.7308096716891182e-08 0 0 0 +13004 1 3.1106706002140420e+01 8.3682934449375566e+00 1.7500000381791689e+00 0 0 0 +13589 1 3.0545533989888145e+01 6.7107903044448989e+00 3.4999999694080985e+00 0 0 0 +13642 1 2.9423190181435146e+01 8.9297700395181341e+00 3.4999999728414153e+00 0 0 0 +12949 1 3.0545533956902236e+01 6.7107903064719894e+00 3.5217692933175919e-08 0 0 0 +13008 1 3.4473737618624490e+01 7.2453405428487923e+00 1.7499999843118534e+00 0 0 0 +13009 1 3.3351393989858366e+01 9.4643202087231817e+00 1.7500000149533128e+00 0 0 0 +13647 1 3.5034909635840719e+01 8.9028436694030475e+00 3.4999999878901211e+00 0 0 0 +13007 1 3.5034909582394398e+01 8.9028436874806900e+00 1.7499999972862383e+01 0 0 -1 +13010 1 3.6157253307951230e+01 6.6838641402602308e+00 1.7499999921610112e+01 0 0 -1 +13013 1 3.6718425280986146e+01 8.3413674261089348e+00 1.7499999698367423e+00 0 0 0 +13650 1 3.6157253353844098e+01 6.6838641271734964e+00 3.5000000031468135e+00 0 0 0 +13015 1 4.1768972217816099e+01 6.6569383681910237e+00 1.7499999967402800e+01 0 0 -1 +13017 1 4.0085456533475998e+01 7.2184147652831072e+00 1.7499999661502694e+00 0 0 0 +13067 1 3.8963112903904964e+01 9.4373942454235138e+00 1.7499999767940566e+00 0 0 0 +13069 1 4.0646628579809160e+01 8.8759180005264255e+00 1.7499999932775300e+01 0 0 -1 +13655 1 4.1768972149419341e+01 6.6569383864521834e+00 3.5000000036815067e+00 0 0 0 +13709 1 4.0646628516975362e+01 8.8759180293535547e+00 3.5000000253847880e+00 0 0 0 +13071 1 4.2330144225656746e+01 8.3144416303874831e+00 1.7499999621811493e+00 0 0 0 +13074 1 4.4574832018813481e+01 9.4104684073270715e+00 1.7500000051742399e+00 0 0 0 +13073 1 4.4013659963495002e+01 7.7529652991294205e+00 9.0673070999905913e-09 0 0 0 +12871 1 2.5187342763967049e+00 1.2359662918374800e+01 2.9958412173470768e-08 0 0 0 +12872 1 1.7224974193187061e+00 1.0702652493226077e+01 1.7500000001593896e+00 0 0 0 +13511 1 2.5187342740256926e+00 1.2359662895752214e+01 3.4999999673548019e+00 0 0 0 +12874 1 3.5610869229399933e+00 1.0156707512086689e+01 3.3824757717442391e-08 0 0 0 +12877 1 4.1395814857069881e+00 1.1800635987278744e+01 1.7500000056063643e+00 0 0 0 +13514 1 3.5610869172931072e+00 1.0156707504104000e+01 3.4999999832482542e+00 0 0 0 +12879 1 9.2228648210529425e+00 1.0134060839777769e+01 1.9186556841463486e-08 0 0 0 +12881 1 7.5397001598670297e+00 1.0697330426624468e+01 1.7500000207759649e+00 0 0 0 +12924 1 8.0950144277559986e+00 1.2351455802594781e+01 3.6216996964116913e-08 0 0 0 +13519 1 9.2228648183223267e+00 1.0134060838292930e+01 3.5000000504439139e+00 0 0 0 +13564 1 8.0950144101117640e+00 1.2351455824709756e+01 3.5000000237055784e+00 0 0 0 +12926 1 9.7824048178985148e+00 1.1791488621884678e+01 1.7500000158550091e+00 0 0 0 +12929 1 1.3710492194850529e+01 1.2325611730652167e+01 5.1987859936494503e-09 0 0 0 +12930 1 1.3149238340717723e+01 1.0668019026013624e+01 1.7500000099467217e+00 0 0 0 +12932 1 1.4832659549047943e+01 1.0106549153736870e+01 2.1955394149747372e-08 0 0 0 +12935 1 1.5393909167081366e+01 1.1764076953089141e+01 1.7499999965139685e+00 0 0 0 +13569 1 1.3710492219597057e+01 1.2325611717929345e+01 3.4999999901978671e+00 0 0 0 +13572 1 1.4832659560720479e+01 1.0106549123783946e+01 3.5000000159161155e+00 0 0 0 +12939 1 1.8760917291126834e+01 1.0641126844543304e+01 1.7500000160542832e+00 0 0 0 +13630 1 1.9322091104777343e+01 1.2298628582195059e+01 3.5000000235906312e+00 0 0 0 +12990 1 1.9322091093790398e+01 1.2298628605625538e+01 2.7194277990659895e-08 0 0 0 +12992 1 2.1005608439772256e+01 1.1737153408521609e+01 1.7500000239354141e+00 0 0 0 +13577 1 2.0444438771831294e+01 1.0079651549241014e+01 3.5000000202491788e+00 0 0 0 +12937 1 2.0444438750235268e+01 1.0079651575905915e+01 3.0843382233524849e-08 0 0 0 +12996 1 2.4372642218072144e+01 1.0614200151889710e+01 1.7500000091228525e+00 0 0 0 +13001 1 2.6617330156623986e+01 1.1710226510787805e+01 1.7500000178534003e+00 0 0 0 +13639 1 2.8300846162743920e+01 1.1148749803121696e+01 3.4999999992739821e+00 0 0 0 +12999 1 2.8300846176728207e+01 1.1148749784357666e+01 5.7512336862853584e-09 0 0 0 +13005 1 2.9984362103870112e+01 1.0587273153507102e+01 1.7500000236488331e+00 0 0 0 +13059 1 3.2229050066552929e+01 1.1683299724086398e+01 1.7500000239121161e+00 0 0 0 +13061 1 3.3912565885242770e+01 1.1121823345635320e+01 1.7499999992477967e+01 0 0 -1 +13701 1 3.3912565929531084e+01 1.1121823315017684e+01 3.5000000029811744e+00 0 0 0 +13063 1 3.5596081814958495e+01 1.0560346991700248e+01 1.7499999874573844e+00 0 0 0 +13068 1 3.7840769320197900e+01 1.1656373824968794e+01 1.7499999719229054e+00 0 0 0 +13066 1 3.9524284975626927e+01 1.1094897509539106e+01 1.7499999927471755e+01 0 0 -1 +13072 1 4.1207800560931148e+01 1.0533421168778704e+01 1.7499999675398543e+00 0 0 0 +13706 1 3.9524284946112658e+01 1.1094897488050984e+01 3.5000000364462784e+00 0 0 0 +13764 1 4.1768972464726566e+01 1.2190924301555730e+01 3.5000000169507262e+00 0 0 0 +13126 1 4.3452488202677799e+01 1.1629447956511546e+01 1.7500000012695467e+00 0 0 0 +13451 1 4.2891315755417530e+01 4.3175860468622417e+01 2.4060813785808932e-08 0 0 0 +12873 1 1.0571062049771620e+00 1.3002580215171479e+01 1.7500000020965456e+00 0 0 0 +12916 1 1.2264316154707708e+00 1.4637225854929923e+01 1.0063133603474596e-07 0 0 0 +12918 1 3.1035851443452023e+00 1.4084842378053764e+01 1.7499999881283752e+00 0 0 0 +13556 1 1.2264316180949566e+00 1.4637225803873612e+01 3.4999998979094831e+00 0 0 0 +12922 1 6.4095233568917411e+00 1.2909293599413930e+01 1.7500000173737413e+00 0 0 0 +12923 1 5.3078139323700526e+00 1.5141404553408879e+01 1.7499999953562535e+00 0 0 0 +12921 1 6.9829712549771381e+00 1.4572590744120866e+01 4.5242044042666072e-08 0 0 0 +12927 1 8.6590374525763814e+00 1.4008947894903521e+01 1.7500000018295734e+00 0 0 0 +13561 1 6.9829712446702539e+00 1.4572590782711377e+01 3.4999999751666486e+00 0 0 0 +12931 1 1.2026827488479347e+01 1.2887124664850640e+01 1.7499999929164991e+00 0 0 0 +12980 1 1.0904486113278416e+01 1.5105805573784911e+01 1.7500000031309157e+00 0 0 0 +12982 1 1.2587783413675528e+01 1.4544435286254403e+01 1.7499999991092832e+01 0 0 -1 +13622 1 1.2587783465542127e+01 1.4544435279990568e+01 3.5000000073961322e+00 0 0 0 +12984 1 1.4271515418916415e+01 1.3983074050044749e+01 1.7500000021714937e+00 0 0 0 +12988 1 1.7638584828250611e+01 1.2860107562560879e+01 1.7500000124018984e+00 0 0 0 +12989 1 1.6516220493783084e+01 1.5079087820663750e+01 1.7499999922489631e+00 0 0 0 +13627 1 1.8199754861832240e+01 1.4517614000709777e+01 3.4999999997776117e+00 0 0 0 +12987 1 1.8199754861885360e+01 1.4517614031303061e+01 1.9768443857277706e-08 0 0 0 +12993 1 1.9883267856883506e+01 1.3956133944883391e+01 1.7500000190053864e+00 0 0 0 +13047 1 2.2127954356860165e+01 1.5052159939713748e+01 1.7500000405650962e+00 0 0 0 +12997 1 2.3250297574593798e+01 1.2833179784641832e+01 1.7500000096581496e+00 0 0 0 +13051 1 2.5494985914031851e+01 1.3929206193560722e+01 1.7500000110090614e+00 0 0 0 +13689 1 2.3811469728173869e+01 1.4490682924729729e+01 3.5000000160823097e+00 0 0 0 +13049 1 2.3811469727143102e+01 1.4490682945979252e+01 1.2586207654103188e-08 0 0 0 +13050 1 2.6056157891670910e+01 1.5586709301040623e+01 1.7499999998825992e+01 0 0 -1 +13053 1 2.7178502164424103e+01 1.3367729533588246e+01 1.7499999995442636e+01 0 0 -1 +13055 1 2.8862018165040134e+01 1.2806252942010230e+01 1.7500000278777901e+00 0 0 0 +13056 1 2.7739673946890228e+01 1.5025232617095558e+01 1.7500000005726566e+00 0 0 0 +13690 1 2.6056157889826242e+01 1.5586709301973228e+01 3.5000000086204874e+00 0 0 0 +13693 1 2.7178502167298287e+01 1.3367729508172609e+01 3.5000000230780892e+00 0 0 0 +13060 1 3.1106706033163501e+01 1.3902279375721545e+01 1.7500000356337084e+00 0 0 0 +13112 1 3.1667877875604201e+01 1.5559782530483293e+01 1.9454942734669672e-08 0 0 0 +13752 1 3.1667877887551445e+01 1.5559782511156429e+01 3.4999999978249110e+00 0 0 0 +13064 1 3.4473737833080655e+01 1.2779326518678229e+01 1.7500000004550897e+00 0 0 0 +13114 1 3.3351393948629386e+01 1.4998306117173179e+01 1.7500000018144704e+00 0 0 0 +13698 1 3.2790222055376809e+01 1.3340802947044402e+01 3.4999999814575538e+00 0 0 0 +13058 1 3.2790222033534725e+01 1.3340802954515683e+01 2.3314631189104743e-08 0 0 0 +13117 1 3.7279597379159654e+01 1.5532856578651565e+01 1.7499999950448583e+01 0 0 -1 +13118 1 3.6718425438666479e+01 1.3875353381599515e+01 1.7499999842978806e+00 0 0 0 +13120 1 3.8401941159122785e+01 1.3313877029661940e+01 1.7499999941444898e+01 0 0 -1 +13757 1 3.7279597377611566e+01 1.5532856565629878e+01 3.5000000251027510e+00 0 0 0 +13760 1 3.8401941154912514e+01 1.3313877031974942e+01 3.5000000211624598e+00 0 0 0 +13122 1 4.0085456823140213e+01 1.2752400719245983e+01 1.7499999610486137e+00 0 0 0 +13123 1 3.8963113059033873e+01 1.4971380171179653e+01 1.7499999746476664e+00 0 0 0 +13761 1 4.0646628734840696e+01 1.4409903925161476e+01 3.5000000125615376e+00 0 0 0 +13127 1 4.2330144442484958e+01 1.3848427507619043e+01 1.7499999980594372e+00 0 0 0 +13179 1 4.4574832224777566e+01 1.4944454177031030e+01 1.7499999953176844e+00 0 0 0 +13765 1 4.4013660175712552e+01 1.3286951107644827e+01 3.5000000136832465e+00 0 0 0 +13818 1 4.2891316361924204e+01 1.5505930552196338e+01 3.5000000097455319e+00 0 0 0 +12919 1 1.7224973159580073e+00 1.6236639159833278e+01 1.7499999802829433e+00 0 0 0 +12969 1 1.0571060368499881e+00 1.8536566998199202e+01 1.7499999865410965e+00 0 0 0 +12972 1 4.1395811883820253e+00 1.7334622676985692e+01 1.7499999821396608e+00 0 0 0 +12977 1 6.4095229647622007e+00 1.8443280308828829e+01 1.7499999957730263e+00 0 0 0 +13611 1 4.7485638663424456e+00 1.9010777720369482e+01 3.4999999403819491e+00 0 0 0 +13614 1 5.8404166625155138e+00 1.6788610570512972e+01 3.4999999519163554e+00 0 0 0 +12971 1 4.7485638655496780e+00 1.9010777725867431e+01 3.8083495668780144e-08 0 0 0 +12974 1 5.8404166808666407e+00 1.6788610563712680e+01 4.1452181145202392e-08 0 0 0 +12976 1 7.5396997391946163e+00 1.6231317035430582e+01 1.7500000072394248e+00 0 0 0 +12981 1 9.7824043387817774e+00 1.7325475097279362e+01 1.7500000149057682e+00 0 0 0 +12979 1 1.1466172862140638e+01 1.6763701333496527e+01 1.7499999992481417e+01 0 0 -1 +13035 1 1.2026826958980397e+01 1.8421110889840715e+01 1.7500000153224140e+00 0 0 0 +13619 1 1.1466172880736950e+01 1.6763701353368347e+01 3.5000000169669061e+00 0 0 0 +13673 1 1.0342363861143147e+01 1.8982161076638924e+01 3.5000000086163827e+00 0 0 0 +13033 1 1.0342363850578133e+01 1.8982161058522539e+01 2.3503161412160747e-08 0 0 0 +12985 1 1.3149237842365540e+01 1.6202005190875049e+01 1.7499999882064341e+00 0 0 0 +13039 1 1.5393908681631808e+01 1.7298062954160450e+01 1.7499999899191439e+00 0 0 0 +13678 1 1.5955087694336196e+01 1.8955584691671543e+01 3.5000000175822374e+00 0 0 0 +13038 1 1.5955087671416992e+01 1.8955584689354790e+01 1.7499999985760613e+01 0 0 -1 +13043 1 1.8760916870759647e+01 1.6175112762467887e+01 1.7500000156813900e+00 0 0 0 +13044 1 1.7638584323755751e+01 1.8394093477667379e+01 1.7500000074987734e+00 0 0 0 +13681 1 1.7077392360671929e+01 1.6736582633968549e+01 3.4999999786594973e+00 0 0 0 +13041 1 1.7077392346115825e+01 1.6736582649767161e+01 2.2905642967240639e-08 0 0 0 +13048 1 2.1005607983707360e+01 1.7271139269395523e+01 1.7500000311358894e+00 0 0 0 +13740 1 2.1566780783975037e+01 1.8928642202413396e+01 3.5000000144370875e+00 0 0 0 +13100 1 2.1566780778233639e+01 1.8928642208220879e+01 4.6991689511978032e-08 0 0 0 +13052 1 2.4372641961002074e+01 1.6148186078286688e+01 1.7500000150850568e+00 0 0 0 +13102 1 2.3250297096261399e+01 1.8367165665564659e+01 1.7500000173207086e+00 0 0 0 +13104 1 2.4933813580276855e+01 1.7805689146575979e+01 1.4668773161367692e-08 0 0 0 +13686 1 2.2689125667229217e+01 1.6709663008154962e+01 3.5000000118039973e+00 0 0 0 +13744 1 2.4933813616132642e+01 1.7805689104539081e+01 3.5000000106256266e+00 0 0 0 +13046 1 2.2689125659212113e+01 1.6709663043489254e+01 3.8201621767992930e-08 0 0 0 +13106 1 2.6617329858998847e+01 1.7244212438732049e+01 1.7500000133982299e+00 0 0 0 +13111 1 2.8862017819081426e+01 1.8340238810821202e+01 1.7499999999627895e+00 0 0 0 +13110 1 2.9984361911174979e+01 1.6121259124706203e+01 1.7500000161914830e+00 0 0 0 +13115 1 3.2229049863876320e+01 1.7217285632700968e+01 1.7500000060058420e+00 0 0 0 +13749 1 3.0545533861396592e+01 1.7778762184616181e+01 3.4999999824041357e+00 0 0 0 +13109 1 3.0545533862494803e+01 1.7778762206457831e+01 1.8700487860897992e-08 0 0 0 +13168 1 3.4473737591554773e+01 1.8313312389184858e+01 1.7500000190315810e+00 0 0 0 +13119 1 3.5596081723417377e+01 1.6094332864340629e+01 1.7499999941901907e+00 0 0 0 +13170 1 3.6157253439773775e+01 1.7751836023399822e+01 1.7499999981230406e+01 0 0 -1 +13172 1 3.7840769279277289e+01 1.7190359743571690e+01 1.7499999631317829e+00 0 0 0 +13810 1 3.6157253448243104e+01 1.7751836011165402e+01 3.5000000208794204e+00 0 0 0 +13176 1 4.1207800643629859e+01 1.6067406992119100e+01 1.7499999759897231e+00 0 0 0 +13177 1 4.0085456754120045e+01 1.8286386569381730e+01 1.7499999827111350e+00 0 0 0 +13815 1 4.1768972476176479e+01 1.7724910098602003e+01 3.5000000049756097e+00 0 0 0 +13814 1 3.9524284980608101e+01 1.6628883386574920e+01 3.5000000097082737e+00 0 0 0 +13180 1 4.3452488291995572e+01 1.7163433724122225e+01 1.7499999728045390e+00 0 0 0 +13873 1 4.4013660190811578e+01 1.8820936867184383e+01 3.4999999749209878e+00 0 0 0 +12804 1 4.2330143794039536e+01 4.1518357225573403e+01 1.5750000003717272e+01 0 0 0 +12973 1 3.1035849194806744e+00 1.9618829250048563e+01 1.7499999851586197e+00 0 0 0 +13023 1 1.7224969739806189e+00 2.1770626026884969e+01 1.7500000242186140e+00 0 0 0 +13027 1 5.3078135086493123e+00 2.0675391298490663e+01 1.7499999924175575e+00 0 0 0 +13665 1 3.5610863214473665e+00 2.1224680975213602e+01 3.4999999112859839e+00 0 0 0 +13025 1 3.5610862777249701e+00 2.1224680983991927e+01 6.1466517541277292e-08 0 0 0 +13031 1 8.6590369633104753e+00 1.9542934417402069e+01 1.7500000239848696e+00 0 0 0 +13032 1 7.5396992327413788e+00 2.1765303631873902e+01 1.7500000051094504e+00 0 0 0 +13670 1 9.2228637959479727e+00 2.1202033772065029e+01 3.5000000069162231e+00 0 0 0 +13030 1 9.2228637896669969e+00 2.1202033759459262e+01 3.3454352786418200e-08 0 0 0 +13036 1 1.0904485564972974e+01 2.0639791881471240e+01 1.7500000204300683e+00 0 0 0 +13040 1 1.4271514912847476e+01 1.9517060136875831e+01 1.7499999950796834e+00 0 0 0 +13090 1 1.3149237309307891e+01 2.1735991298174092e+01 1.7500000073517745e+00 0 0 0 +13732 1 1.4832658533578922e+01 2.1174521198427218e+01 3.5000000130977660e+00 0 0 0 +13092 1 1.4832658498024026e+01 2.1174521217947941e+01 1.7499999992349846e+01 0 0 -1 +13094 1 1.6516219928021307e+01 2.0613073751707027e+01 1.7500000066812134e+00 0 0 0 +13099 1 1.8760916228745611e+01 2.1709098586299294e+01 1.7500000352146385e+00 0 0 0 +13098 1 1.9883267254084029e+01 1.9490119779584937e+01 1.7500000545050023e+00 0 0 0 +13103 1 2.2127953728701701e+01 2.0586145773405693e+01 1.7500000494991166e+00 0 0 0 +13737 1 2.0444437782104078e+01 2.1147623288337879e+01 3.5000000213665987e+00 0 0 0 +13097 1 2.0444437772494776e+01 2.1147623315633176e+01 5.3112765355016696e-08 0 0 0 +13107 1 2.5494985475159123e+01 1.9463192101501004e+01 1.7500000067409383e+00 0 0 0 +13156 1 2.4372641284988489e+01 2.1682171924095240e+01 1.7500000494720658e+00 0 0 0 +13160 1 2.7739673432867868e+01 2.0559218496640991e+01 1.7499999983731331e+00 0 0 0 +13162 1 2.9423189693838967e+01 1.9997741898546867e+01 1.7499999999337138e+01 0 0 -1 +13164 1 3.1106705680499445e+01 1.9436265277373643e+01 1.7499999951352365e+00 0 0 0 +13165 1 2.9984361412155494e+01 2.1655244925017644e+01 1.7499999922424228e+00 0 0 0 +13802 1 2.9423189688520850e+01 1.9997741878512176e+01 3.4999999793041021e+00 0 0 0 +13167 1 3.5034909376217087e+01 1.9970815528488430e+01 1.4561598498923300e-08 0 0 0 +13169 1 3.3351393597155493e+01 2.0532292005818192e+01 1.7500000110953227e+00 0 0 0 +13807 1 3.5034909390580204e+01 1.9970815472207143e+01 3.5000000157334483e+00 0 0 0 +13173 1 3.6718425202270616e+01 1.9409339255308453e+01 1.7500000123132979e+00 0 0 0 +13223 1 3.5596081399204174e+01 2.1628318788668174e+01 1.7500000108055824e+00 0 0 0 +13227 1 3.8963112844310523e+01 2.0505366044691822e+01 1.7499999944461875e+00 0 0 0 +13232 1 4.1207800525952045e+01 2.1601392858622930e+01 1.7499999598250258e+00 0 0 0 +13869 1 4.0646628619223137e+01 1.9943889759720701e+01 3.5000000042160684e+00 0 0 0 +13231 1 4.2330144417654445e+01 1.9382413277348871e+01 1.7499999622702056e+00 0 0 0 +13234 1 4.4574832171490016e+01 2.0478439889559219e+01 1.7499999666597665e+00 0 0 0 +13870 1 4.2891316318143829e+01 2.1039916338940618e+01 3.4999999752918747e+00 0 0 0 +13024 1 1.0571063407186700e+00 2.4070553901007258e+01 1.7500000324034939e+00 0 0 0 +13078 1 3.1035845307887286e+00 2.5152816005552808e+01 1.7499999804538653e+00 0 0 0 +13662 1 2.5187338174781937e+00 2.3427636479758821e+01 3.4999998163444674e+00 0 0 0 +13022 1 2.5187337697015573e+00 2.3427636492735559e+01 1.7951163305568050e-07 0 0 0 +13028 1 4.1395807664294235e+00 2.2868609515078827e+01 1.7499999861021112e+00 0 0 0 +13082 1 6.4095225393844393e+00 2.3977266966652831e+01 1.7499999988624297e+00 0 0 0 +13087 1 8.6590365428851026e+00 2.5076920844434330e+01 1.7500000089057961e+00 0 0 0 +13724 1 8.0950134745185682e+00 2.3419428938564309e+01 3.4999999756644686e+00 0 0 0 +13084 1 8.0950134870154589e+00 2.3419428897115623e+01 5.6030313346204484e-08 0 0 0 +13086 1 9.7824038059321907e+00 2.2859461431453408e+01 1.7500000222841641e+00 0 0 0 +13091 1 1.2026826489701223e+01 2.3955097039316740e+01 1.7499999988958372e+00 0 0 0 +13095 1 1.5393908095161521e+01 2.2832048906443521e+01 1.7499999914868738e+00 0 0 0 +13144 1 1.4271514405229086e+01 2.5051046086515125e+01 1.7500000019950459e+00 0 0 0 +13729 1 1.3710491164345925e+01 2.3393583867981430e+01 3.4999999904134249e+00 0 0 0 +13089 1 1.3710491142126216e+01 2.3393583862445912e+01 1.4477967159737541e-08 0 0 0 +13148 1 1.7638583656079209e+01 2.3928079326189707e+01 1.7500000183726518e+00 0 0 0 +13790 1 1.9322089924627608e+01 2.3366600281001933e+01 3.5000000590923848e+00 0 0 0 +13150 1 1.9322089929391854e+01 2.3366600297030505e+01 1.7499999992902566e+01 0 0 -1 +13152 1 2.1005607300570180e+01 2.2805125091973775e+01 1.7500000455010554e+00 0 0 0 +13153 1 1.9883266584765401e+01 2.5024105588235447e+01 1.7500000201261039e+00 0 0 0 +13157 1 2.3250296349886696e+01 2.3901151457394185e+01 1.7500000577352612e+00 0 0 0 +13211 1 2.5494984650552290e+01 2.4997177874128521e+01 1.7500000348918552e+00 0 0 0 +13159 1 2.8300845328800140e+01 2.2216721547316066e+01 3.2458843097916637e-09 0 0 0 +13161 1 2.6617329189275342e+01 2.2778198246196563e+01 1.7500000155759847e+00 0 0 0 +13215 1 2.8862017181026651e+01 2.3874224642273653e+01 1.7499999954860477e+00 0 0 0 +13799 1 2.8300845341143443e+01 2.2216721549465234e+01 3.4999999688935213e+00 0 0 0 +13853 1 2.7178501053021996e+01 2.4435701207085646e+01 3.5000000030997533e+00 0 0 0 +13213 1 2.7178501017257695e+01 2.4435701214779520e+01 1.7499999995403545e+01 0 0 -1 +13219 1 3.2229049359840566e+01 2.2751271460725469e+01 1.7500000176451933e+00 0 0 0 +13220 1 3.1106705039418049e+01 2.4970251044434978e+01 1.7500000115550776e+00 0 0 0 +13221 1 3.3912565348606520e+01 2.2189795103439540e+01 2.6610992670673683e-08 0 0 0 +13861 1 3.3912565330945426e+01 2.2189795079554777e+01 3.5000000161131908e+00 0 0 0 +13224 1 3.4473737129093415e+01 2.3847298247534479e+01 1.7500000361414596e+00 0 0 0 +13858 1 3.2790221173469099e+01 2.4408774630263931e+01 3.4999999884957842e+00 0 0 0 +13218 1 3.2790221191927557e+01 2.4408774661805104e+01 4.4488580927224515e-08 0 0 0 +13228 1 3.7840768947727007e+01 2.2724345639757313e+01 1.7500000126833557e+00 0 0 0 +13278 1 3.6718424787368583e+01 2.4943325163469702e+01 1.7500000475002060e+00 0 0 0 +13920 1 3.8401940683543287e+01 2.4381848795290704e+01 3.5000000285294055e+00 0 0 0 +13866 1 3.9524284775388075e+01 2.2162869249185690e+01 3.5000000276653043e+00 0 0 0 +13282 1 4.0085456524799504e+01 2.3820372449596213e+01 1.7499999727453899e+00 0 0 0 +13924 1 4.1768972362415084e+01 2.3258895949285012e+01 3.4999999783401705e+00 0 0 0 +13286 1 4.3452488209202016e+01 2.2697419535242854e+01 1.7499999428107897e+00 0 0 0 +13287 1 4.2330144280862470e+01 2.4916399143747139e+01 1.7499999517583220e+00 0 0 0 +12807 1 3.8963111666878724e+01 4.2641309706135090e+01 1.5750000001811776e+01 0 0 0 +13925 1 4.4013660137556016e+01 2.4354922673661413e+01 3.4999999491771114e+00 0 0 0 +13079 1 1.7224968926835720e+00 2.7304612951907291e+01 1.7499999970715912e+00 0 0 0 +13716 1 1.2264314444570075e+00 2.5705199565032434e+01 3.4999998848818246e+00 0 0 0 +13076 1 1.2264314372719622e+00 2.5705199588756862e+01 1.4556458915585132e-07 0 0 0 +13083 1 5.3078133273039345e+00 2.6209378090244957e+01 1.7499999829561628e+00 0 0 0 +13132 1 4.1395806944662734e+00 2.8402596269677403e+01 1.7499999756715057e+00 0 0 0 +13774 1 5.8404160797930293e+00 2.7856583928516894e+01 3.4999999171410798e+00 0 0 0 +13134 1 5.8404161018910443e+00 2.7856583930681978e+01 5.7084847635424508e-08 0 0 0 +13136 1 7.5396990201911844e+00 2.7299290107870466e+01 1.7499999988195429e+00 0 0 0 +13721 1 6.9829704672185722e+00 2.5640564002554999e+01 3.4999999282658898e+00 0 0 0 +13081 1 6.9829704681093405e+00 2.5640563978272048e+01 7.1925125855035034e-08 0 0 0 +13141 1 9.7824036646305608e+00 2.8393447681250375e+01 1.7500000127603115e+00 0 0 0 +13140 1 1.0904485229653583e+01 2.6173778076379588e+01 1.7500000098625905e+00 0 0 0 +13779 1 1.1466172090425960e+01 2.7831673677022021e+01 3.4999999823018579e+00 0 0 0 +13782 1 1.2587782507437270e+01 2.5612407537227714e+01 3.4999999976610674e+00 0 0 0 +13139 1 1.1466172084380222e+01 2.7831673672252570e+01 3.3633510321639935e-08 0 0 0 +13142 1 1.2587782459090354e+01 2.5612407538067487e+01 1.9533193391777136e-08 0 0 0 +13145 1 1.3149236970049909e+01 2.7269977308544597e+01 1.7499999867491975e+00 0 0 0 +13199 1 1.5393907720082824e+01 2.8366034814417731e+01 1.7499999732055418e+00 0 0 0 +13149 1 1.6516219378112922e+01 2.6147059595047178e+01 1.7499999887714868e+00 0 0 0 +13203 1 1.8760915647066327e+01 2.7243084413681142e+01 1.7500000037197680e+00 0 0 0 +13787 1 1.8199753633923013e+01 2.5585585702197072e+01 3.5000000301884686e+00 0 0 0 +13841 1 1.7077391242836981e+01 2.7804554374160798e+01 3.4999999914477162e+00 0 0 0 +13147 1 1.8199753658397871e+01 2.5585585701981895e+01 1.7499999978119185e+01 0 0 -1 +13201 1 1.7077391240680285e+01 2.7804554377685388e+01 1.7499999967852865e+01 0 0 -1 +13207 1 2.2127952992662507e+01 2.6120131555761212e+01 1.7500000705405125e+00 0 0 0 +13208 1 2.1005606614824099e+01 2.8339110847180830e+01 1.7500000360292918e+00 0 0 0 +13212 1 2.4372640535092749e+01 2.7216157669984682e+01 1.7500000462976257e+00 0 0 0 +13846 1 2.2689124244564006e+01 2.7777634597077622e+01 3.5000000554647910e+00 0 0 0 +13849 1 2.3811468411540964e+01 2.5558654561747634e+01 3.5000000417137178e+00 0 0 0 +13206 1 2.2689124222635893e+01 2.7777634593095200e+01 8.7555478802199565e-09 0 0 0 +13209 1 2.3811468370595673e+01 2.5558654576809747e+01 2.7036157799888534e-08 0 0 0 +13210 1 2.6056156494738229e+01 2.6654680908772754e+01 2.0082303107766600e-08 0 0 0 +13216 1 2.7739672689611542e+01 2.6093204264572037e+01 1.7500000083193261e+00 0 0 0 +13266 1 2.6617328433506970e+01 2.8312184027504749e+01 1.7500000369846758e+00 0 0 0 +13850 1 2.6056156557220454e+01 2.6654680906727169e+01 3.5000000009495955e+00 0 0 0 +13270 1 2.9984360696711491e+01 2.7189230748865754e+01 1.7500000036089907e+00 0 0 0 +13272 1 3.1667876781595368e+01 2.6627754166035807e+01 4.5788081882375909e-08 0 0 0 +13275 1 3.2229048695152066e+01 2.8285257275738378e+01 1.7500000246982490e+00 0 0 0 +13912 1 3.1667876771718383e+01 2.6627754165591934e+01 3.4999999829860058e+00 0 0 0 +13274 1 3.3351392983626994e+01 2.6066277818984673e+01 1.7500000287429924e+00 0 0 0 +13279 1 3.5596080861934531e+01 2.7162304620910938e+01 1.7500000594931246e+00 0 0 0 +13332 1 3.7840768562128993e+01 2.8258331519911639e+01 1.7500000216259071e+00 0 0 0 +13917 1 3.7279596679535146e+01 2.6600828332128515e+01 3.5000000634478092e+00 0 0 0 +13283 1 3.8963112513974338e+01 2.6039351956063747e+01 1.7500000104525091e+00 0 0 0 +13336 1 4.1207800319629186e+01 2.7135378717550100e+01 1.7499999833650153e+00 0 0 0 +13921 1 4.0646628434051387e+01 2.5477875633647717e+01 3.5000000044688138e+00 0 0 0 +13974 1 3.9524284479957807e+01 2.7696855130516965e+01 3.5000000355183150e+00 0 0 0 +13339 1 4.4574832129310003e+01 2.6012425771067139e+01 1.7499999342032246e+00 0 0 0 +13340 1 4.3452488107730957e+01 2.8231405438619912e+01 1.7499999395525652e+00 0 0 0 +13978 1 4.2891316194823695e+01 2.6573902198360170e+01 3.4999999610785899e+00 0 0 0 +13129 1 1.0571058951039696e+00 2.9604540891460047e+01 1.7500000054850431e+00 0 0 0 +13133 1 3.1035846907139093e+00 3.0686802890997289e+01 1.7499999889195836e+00 0 0 0 +13137 1 6.4095224536319835e+00 2.9511253455888781e+01 1.7499999860557420e+00 0 0 0 +13187 1 5.3078132630396713e+00 3.1743364465904701e+01 1.7499999790773313e+00 0 0 0 +13771 1 4.7485634701797963e+00 3.0078751108150975e+01 3.4999999353027493e+00 0 0 0 +13131 1 4.7485634766526355e+00 3.0078751123745679e+01 3.2365822623807310e-08 0 0 0 +13191 1 8.6590365415311812e+00 3.0610907056871682e+01 1.7500000130198838e+00 0 0 0 +13195 1 1.2026826298763634e+01 2.9489083065084849e+01 1.7500000081948310e+00 0 0 0 +13196 1 1.0904485163241587e+01 3.1707764082811828e+01 1.7500000202296646e+00 0 0 0 +13833 1 1.0342363312647313e+01 3.0050133461744096e+01 3.4999999758723566e+00 0 0 0 +13193 1 1.0342363328538831e+01 3.0050133466735527e+01 5.7699837633975956e-08 0 0 0 +13200 1 1.4271514180403738e+01 3.0585032035032953e+01 1.7499999826977648e+00 0 0 0 +13838 1 1.5955086766650668e+01 3.0023556484185772e+01 3.4999999904197536e+00 0 0 0 +13198 1 1.5955086745755906e+01 3.0023556491464646e+01 1.7499999950631601e+01 0 0 -1 +13204 1 1.7638583223760495e+01 2.9462065173692128e+01 1.7499999637576211e+00 0 0 0 +13254 1 1.6516219056538052e+01 3.1681045500828183e+01 1.7499999742980328e+00 0 0 0 +13258 1 1.9883266011116742e+01 3.0558091387385659e+01 1.7500000233046409e+00 0 0 0 +13263 1 2.2127952389754075e+01 3.1654117327261378e+01 1.7500000407697918e+00 0 0 0 +13900 1 2.1566779415579379e+01 2.9996613785178781e+01 3.5000000350539109e+00 0 0 0 +13260 1 2.1566779419937344e+01 2.9996613765188645e+01 1.3423032994938728e-08 0 0 0 +13262 1 2.3250295638219736e+01 2.9435137241859909e+01 1.7500000495356625e+00 0 0 0 +13264 1 2.4933812094031751e+01 2.8873660697247967e+01 2.0496394935339964e-08 0 0 0 +13267 1 2.5494983986467137e+01 3.0531163671706114e+01 1.7500000367881137e+00 0 0 0 +13904 1 2.4933812160035494e+01 2.8873660694531626e+01 3.5000000323592548e+00 0 0 0 +13271 1 2.8862016422631164e+01 2.9408210417677648e+01 1.7500000083520757e+00 0 0 0 +13320 1 2.7739671978532485e+01 3.1627190109657924e+01 1.7500000247338809e+00 0 0 0 +13269 1 3.0545532554777726e+01 2.8846733805055752e+01 2.3632597756044587e-08 0 0 0 +13322 1 2.9423188247005662e+01 3.1065713493186742e+01 2.7990929208571010e-08 0 0 0 +13324 1 3.1106704330374399e+01 3.0504236916401918e+01 1.7500000086520673e+00 0 0 0 +13909 1 3.0545532559847217e+01 2.8846733809585306e+01 3.4999999681704406e+00 0 0 0 +13962 1 2.9423188283043359e+01 3.1065713499119628e+01 3.4999999641905308e+00 0 0 0 +13328 1 3.4473736536528222e+01 2.9381284096176106e+01 1.7500000528092834e+00 0 0 0 +13329 1 3.3351392357406681e+01 3.1600263692470257e+01 1.7500000284210286e+00 0 0 0 +13967 1 3.5034908319455702e+01 3.1038787203534255e+01 3.5000000438562080e+00 0 0 0 +13327 1 3.5034908301102334e+01 3.1038787233124577e+01 4.2452939083239331e-08 0 0 0 +13333 1 3.6718424315139210e+01 3.0477311013964403e+01 1.7500000529891431e+00 0 0 0 +13970 1 3.6157252559611877e+01 2.8819807753406781e+01 3.5000000695757567e+00 0 0 0 +13971 1 3.8401940357664500e+01 2.9915834675951732e+01 3.5000000545121175e+00 0 0 0 +13337 1 4.0085456285557576e+01 2.9354358334787182e+01 1.7500000068724730e+00 0 0 0 +13382 1 3.8963112204214184e+01 3.1573337815138796e+01 1.7500000274228080e+00 0 0 0 +13975 1 4.1768972198462151e+01 2.8792881815991493e+01 3.4999999865127625e+00 0 0 0 +14024 1 4.0646628229032899e+01 3.1011861526406857e+01 3.5000000243445215e+00 0 0 0 +13386 1 4.2330144174552899e+01 3.0450385045948764e+01 1.7499999623752942e+00 0 0 0 +13389 1 4.4574832119043755e+01 3.1546411816099802e+01 1.7499999722336657e+00 0 0 0 +14028 1 4.4013660086893587e+01 2.9888908641408282e+01 3.4999999564577258e+00 0 0 0 +13182 1 2.5187336570439642e+00 3.4495609804116093e+01 8.3592141853200896e-09 0 0 0 +13183 1 1.7224968012239772e+00 3.2838599591612549e+01 1.7500000252723433e+00 0 0 0 +13822 1 2.5187336985333619e+00 3.4495609828627344e+01 3.5000000090099115e+00 0 0 0 +13188 1 4.1395806670996222e+00 3.3936582619690398e+01 1.7499999737929535e+00 0 0 0 +13825 1 3.5610861347552709e+00 3.2292654390259266e+01 3.4999999414561414e+00 0 0 0 +13185 1 3.5610860947300420e+00 3.2292654395457184e+01 1.8808900689148982e-08 0 0 0 +13192 1 7.5396990874413063e+00 3.2833276248285074e+01 1.7499999852906436e+00 0 0 0 +13830 1 9.2228635198228144e+00 3.2270006142542165e+01 3.4999999684110659e+00 0 0 0 +13884 1 8.0950134812367551e+00 3.4487401268591306e+01 3.4999999472824794e+00 0 0 0 +13190 1 9.2228635410286053e+00 3.2270006157382078e+01 5.0108019416077642e-08 0 0 0 +13244 1 8.0950135098287355e+00 3.4487401237169209e+01 5.0292564835229853e-08 0 0 0 +13246 1 9.7824037013776515e+00 3.3927433582689808e+01 1.7500000157175899e+00 0 0 0 +13250 1 1.3149236850241726e+01 3.2803963222373120e+01 1.7500000062533940e+00 0 0 0 +13255 1 1.5393907487685537e+01 3.3900020709443744e+01 1.7499999799735206e+00 0 0 0 +13889 1 1.3710490800708559e+01 3.4461555695376070e+01 3.4999999844158469e+00 0 0 0 +13892 1 1.4832657866153793e+01 3.2242493024275014e+01 3.4999999937478505e+00 0 0 0 +13249 1 1.3710490790223991e+01 3.4461555727684981e+01 2.7870864208955936e-08 0 0 0 +13252 1 1.4832657828450582e+01 3.2242493083807936e+01 1.7499999976732809e+01 0 0 -1 +13259 1 1.8760915180637582e+01 3.2777070245948941e+01 1.7500000019658772e+00 0 0 0 +13950 1 1.9322088931324910e+01 3.4434571934827211e+01 3.5000000418177803e+00 0 0 0 +13310 1 1.9322088941559709e+01 3.4434571985901727e+01 1.7499999967989130e+01 0 0 -1 +13312 1 2.1005606147636446e+01 3.3873096698565327e+01 1.7500000154278539e+00 0 0 0 +13897 1 2.0444436554213301e+01 3.2215594893433092e+01 3.5000000040595545e+00 0 0 0 +13257 1 2.0444436576026405e+01 3.2215594917728353e+01 1.7499999998964828e+01 0 0 -1 +13316 1 2.4372639888534611e+01 3.2750143503570584e+01 1.7500000587598121e+00 0 0 0 +13319 1 2.8300843880484045e+01 3.3284693187792264e+01 2.7402359840761447e-08 0 0 0 +13321 1 2.6617327784876270e+01 3.3846169909982208e+01 1.7500000388017301e+00 0 0 0 +13959 1 2.8300843933322486e+01 3.3284693227087168e+01 3.4999999810546698e+00 0 0 0 +13325 1 2.9984359993480606e+01 3.2723216561115848e+01 1.7499999960498229e+00 0 0 0 +13374 1 3.2229048023481752e+01 3.3819243141407540e+01 1.7500000137971445e+00 0 0 0 +14016 1 3.3912564134749907e+01 3.3257766778548103e+01 3.5000000202027359e+00 0 0 0 +13376 1 3.3912564109194008e+01 3.3257766781083596e+01 1.7826165394850238e-08 0 0 0 +13378 1 3.5596080321259031e+01 3.2696290500100083e+01 1.7500000379712515e+00 0 0 0 +13383 1 3.7840768134086140e+01 3.3792317376715488e+01 1.7500000295288511e+00 0 0 0 +14017 1 3.6157252058445415e+01 3.4353793622338202e+01 3.5000000365002566e+00 0 0 0 +14020 1 3.7279596261138501e+01 3.2134814211485391e+01 3.5000000547465877e+00 0 0 0 +13387 1 4.1207800180527954e+01 3.2669364670268500e+01 1.7499999990655521e+00 0 0 0 +14061 1 4.1768972073894517e+01 3.4326867800895954e+01 3.4999999912028339e+00 0 0 0 +14021 1 3.9524284215310750e+01 3.3230841034763422e+01 3.5000000337018733e+00 0 0 0 +13423 1 4.3452488086622061e+01 3.3765391516642872e+01 1.7499999689703831e+00 0 0 0 +14025 1 4.2891316162147454e+01 3.2107888184610189e+01 3.4999999857995392e+00 0 0 0 +13184 1 1.0571060469712157e+00 3.5138527366179112e+01 1.7500000424433357e+00 0 0 0 +13236 1 1.2264314152406779e+00 3.6773172744903547e+01 1.7499999991647940e+01 0 0 -1 +13238 1 3.1035846860075456e+00 3.6220789028175702e+01 1.7499999749059181e+00 0 0 0 +13876 1 1.2264314249913133e+00 3.6773172751849465e+01 3.5000000146291192e+00 0 0 0 +13242 1 6.4095225650892189e+00 3.5045239510743933e+01 1.7499999826837394e+00 0 0 0 +13243 1 5.3078134646295974e+00 3.7277350461614333e+01 1.7499999767216947e+00 0 0 0 +13241 1 6.9829706571928059e+00 3.6708536178606344e+01 4.9690417471382578e-08 0 0 0 +13247 1 8.6590366776234777e+00 3.6144892895052557e+01 1.7500000026748355e+00 0 0 0 +13881 1 6.9829706539037675e+00 3.6708536206007508e+01 3.4999999187540478e+00 0 0 0 +13251 1 1.2026826345708525e+01 3.5023068914978744e+01 1.7500000067213681e+00 0 0 0 +13300 1 1.0904485361298983e+01 3.7241749837488506e+01 1.7500000228969828e+00 0 0 0 +13942 1 1.2587782445069571e+01 3.6680379302033352e+01 3.5000000122320292e+00 0 0 0 +13302 1 1.2587782423249600e+01 3.6680379317249319e+01 3.3673042752040260e-08 0 0 0 +13304 1 1.4271514138950957e+01 3.6119017852554705e+01 1.7500000248807845e+00 0 0 0 +13308 1 1.7638582880896760e+01 3.4996051046937929e+01 1.7499999960624266e+00 0 0 0 +13309 1 1.6516218916531667e+01 3.7215031331372721e+01 1.7500000035896213e+00 0 0 0 +13947 1 1.8199752957554097e+01 3.6653557397525383e+01 3.5000000283919919e+00 0 0 0 +13307 1 1.8199752965638719e+01 3.6653557445328204e+01 1.7499999974148270e+01 0 0 -1 +13313 1 1.9883265676512224e+01 3.6092077277974020e+01 1.7499999900056984e+00 0 0 0 +13362 1 2.2127952023419819e+01 3.7188103233774029e+01 1.7500000289402249e+00 0 0 0 +13317 1 2.3250295125417090e+01 3.4969123096493767e+01 1.7500000391898975e+00 0 0 0 +13366 1 2.5494983431297882e+01 3.6065149594061772e+01 1.7500000277799772e+00 0 0 0 +14004 1 2.3811467269806045e+01 3.6626626257516222e+01 3.5000000161220322e+00 0 0 0 +13364 1 2.3811467289386869e+01 3.6626626267095624e+01 3.3358738954875108e-08 0 0 0 +13365 1 2.6056155424508887e+01 3.7722652734729373e+01 4.4054637601867069e-08 0 0 0 +13368 1 2.7178499704057657e+01 3.5503672948946807e+01 3.7238705750405939e-08 0 0 0 +13370 1 2.8862015819093834e+01 3.4942196390543280e+01 1.7500000111182712e+00 0 0 0 +13371 1 2.7739671494772534e+01 3.7161176103273966e+01 1.7500000178884667e+00 0 0 0 +14005 1 2.6056155427264446e+01 3.7722652750050422e+01 3.5000000062981225e+00 0 0 0 +14008 1 2.7178499744748194e+01 3.5503672949409804e+01 3.5000000115090724e+00 0 0 0 +13375 1 3.1106703747547993e+01 3.6038222823499090e+01 1.7500000139074012e+00 0 0 0 +13409 1 3.1667875592008876e+01 3.7695725998181281e+01 2.5390893014893408e-08 0 0 0 +14049 1 3.1667875626547556e+01 3.7695726007229247e+01 3.4999999943349942e+00 0 0 0 +13379 1 3.4473735952637142e+01 3.4915269948475434e+01 1.7500000185975959e+00 0 0 0 +13411 1 3.3351391810072101e+01 3.7134249603463161e+01 1.7500000092454213e+00 0 0 0 +14013 1 3.2790219931699163e+01 3.5476746377614141e+01 3.4999999947239497e+00 0 0 0 +13373 1 3.2790219908328012e+01 3.5476746378145464e+01 1.3906194385942050e-08 0 0 0 +13415 1 3.6718423830151330e+01 3.6011296868279054e+01 1.7500000314508284e+00 0 0 0 +14054 1 3.7279595835156734e+01 3.7668800096536231e+01 3.5000000321733173e+00 0 0 0 +14057 1 3.8401939944851975e+01 3.5449820547417140e+01 3.5000000103328479e+00 0 0 0 +13419 1 4.0085455998114533e+01 3.4888344232382316e+01 1.7500000144955503e+00 0 0 0 +13420 1 3.8963111832502634e+01 3.7107323704212938e+01 1.7500000364339678e+00 0 0 0 +14058 1 4.0646627966383761e+01 3.6545847482622484e+01 3.5000000095960737e+00 0 0 0 +13424 1 4.2330144038511747e+01 3.5984371103351378e+01 1.7499999889769666e+00 0 0 0 +13445 1 4.4574832070666069e+01 3.7080398031859758e+01 1.7499999913039992e+00 0 0 0 +14062 1 4.4013660072754170e+01 3.5422894781755375e+01 3.4999999682084706e+00 0 0 0 +14084 1 4.2891315997480312e+01 3.7641874278416196e+01 3.4999999823013521e+00 0 0 0 +13239 1 1.7224969723416477e+00 3.8372585794898477e+01 1.7499999764242473e+00 0 0 0 +13289 1 1.0571061475896688e+00 4.0672513424440524e+01 1.7499999751324598e+00 0 0 0 +13291 1 4.7485637696931624e+00 4.1146722933796980e+01 1.2511554237543928e-09 0 0 0 +13292 1 4.1395807977011856e+00 3.9470568505461422e+01 1.7499999859788806e+00 0 0 0 +13294 1 5.8404163744880364e+00 3.8924555980437269e+01 3.4036227512970463e-08 0 0 0 +13297 1 6.4095227827049763e+00 4.0579225148331687e+01 1.7500000101658337e+00 0 0 0 +13931 1 4.7485637704976709e+00 4.1146722916426363e+01 3.5000000128181212e+00 0 0 0 +13934 1 5.8404163656537218e+00 3.8924555982598186e+01 3.4999999503666954e+00 0 0 0 +13296 1 7.5396993265018182e+00 3.8367261998852449e+01 1.7499999975628067e+00 0 0 0 +13301 1 9.7824039736069199e+00 3.9461419261735784e+01 1.7500000164044114e+00 0 0 0 +13348 1 1.0342363679681041e+01 4.1118104868618026e+01 8.4889006886661670e-08 0 0 0 +13350 1 1.2026826541381851e+01 4.0557054563482353e+01 1.7500000195753576e+00 0 0 0 +13939 1 1.1466172305427706e+01 3.8899645295034290e+01 3.4999999823116217e+00 0 0 0 +13988 1 1.0342363695888185e+01 4.1118104884155613e+01 3.4999999707081533e+00 0 0 0 +13299 1 1.1466172292347025e+01 3.8899645289722486e+01 5.9531478599844069e-08 0 0 0 +13305 1 1.3149236985747674e+01 3.8337948999412092e+01 1.7500000179571646e+00 0 0 0 +13354 1 1.5393907582057521e+01 3.9434006501267376e+01 1.7500000038990111e+00 0 0 0 +13993 1 1.5955086720573632e+01 4.1091528119490171e+01 3.5000000205264508e+00 0 0 0 +13353 1 1.5955086690526555e+01 4.1091528132493785e+01 1.7499999975079753e+01 0 0 -1 +13358 1 1.8760915066467923e+01 3.8311056117677829e+01 1.7500000035962027e+00 0 0 0 +13359 1 1.7638582969845316e+01 4.0530036866292754e+01 1.7499999813983433e+00 0 0 0 +13996 1 1.7077390892906536e+01 3.8872526083447497e+01 3.5000000297670995e+00 0 0 0 +13356 1 1.7077390869058053e+01 3.8872526107669444e+01 1.7499999982047537e+01 0 0 -1 +13363 1 2.1005605957860613e+01 3.9407082575506678e+01 1.7500000048372282e+00 0 0 0 +14037 1 2.1566778890250657e+01 4.1064585525350168e+01 3.5000000237497177e+00 0 0 0 +13397 1 2.1566778924727750e+01 4.1064585534893560e+01 5.3101960989804276e-10 0 0 0 +13367 1 2.4372639542837213e+01 3.8284129484639131e+01 1.7500000216864180e+00 0 0 0 +13399 1 2.3250294947154149e+01 4.0503109081950733e+01 1.7500000150074919e+00 0 0 0 +13401 1 2.4933811289333452e+01 3.9941632602168070e+01 3.8437170258472067e-08 0 0 0 +14041 1 2.4933811276489831e+01 3.9941632578669939e+01 3.5000000098517172e+00 0 0 0 +14001 1 2.2689123396332004e+01 3.8845606331261401e+01 3.5000000165573941e+00 0 0 0 +13361 1 2.2689123423843409e+01 3.8845606356084346e+01 1.9555904636635154e-09 0 0 0 +13403 1 2.6617327456273092e+01 3.9380155990408667e+01 1.7500000429804419e+00 0 0 0 +13408 1 2.8862015493761309e+01 4.0476182481369236e+01 1.7500000336429411e+00 0 0 0 +13406 1 3.0545531558288999e+01 3.9914705804300795e+01 2.6307998872033958e-08 0 0 0 +13407 1 2.9984359554205394e+01 3.8257202641645812e+01 1.7500000200641939e+00 0 0 0 +13412 1 3.2229047667647720e+01 3.9353229181182201e+01 1.7500000132264875e+00 0 0 0 +14046 1 3.0545531566024088e+01 3.9914705797018613e+01 3.5000000026823970e+00 0 0 0 +13434 1 3.4473735657859059e+01 4.0449255962455652e+01 1.7500000119664512e+00 0 0 0 +13416 1 3.5596079879576770e+01 3.8230276391161020e+01 1.7500000204125910e+00 0 0 0 +13438 1 3.7840767807024449e+01 3.9326303282495644e+01 1.7500000176852013e+00 0 0 0 +14077 1 3.8401939686397029e+01 4.0983806512281461e+01 3.5000000384569323e+00 0 0 0 +14076 1 3.6157251719042812e+01 3.9887779568149107e+01 3.5000000219544622e+00 0 0 0 +13442 1 4.1207799912298228e+01 3.8203350640081780e+01 1.7500000237315421e+00 0 0 0 +13443 1 4.0085455764873522e+01 4.0422330239631059e+01 1.7500000177024702e+00 0 0 0 +14080 1 3.9524283863498638e+01 3.8764826958129831e+01 3.5000000292198643e+00 0 0 0 +14081 1 4.1768971822565163e+01 3.9860853865906613e+01 3.5000000042895358e+00 0 0 0 +13446 1 4.3452487892758349e+01 3.9299377643890963e+01 1.7500000211613360e+00 0 0 0 +14094 1 4.4013659853855494e+01 4.0956880970375401e+01 3.4999999989085939e+00 0 0 0 +13293 1 3.1035848024186103e+00 4.1754774705363879e+01 1.7500000022686377e+00 0 0 0 +13341 1 1.7224970483818220e+00 4.3906571315201347e+01 1.7500000084221383e+00 0 0 0 +13342 1 3.5610863873441141e+00 4.3360625963030706e+01 1.7499999981288617e+01 0 0 -1 +13343 1 5.3078136291333360e+00 4.2811335930303940e+01 1.7500000307448895e+00 0 0 0 +13982 1 3.5610863887224959e+00 4.3360625971605302e+01 3.5000000488866574e+00 0 0 0 +13345 1 9.2228639394430125e+00 4.3337977319452271e+01 8.3615101683074878e-08 0 0 0 +13346 1 8.6590369313771873e+00 4.1678878412342861e+01 1.7500000369931348e+00 0 0 0 +13347 1 7.5396994930291408e+00 4.3901247368875815e+01 1.7500000342923119e+00 0 0 0 +13985 1 9.2228639814030888e+00 4.3337977326376993e+01 3.4999999851128329e+00 0 0 0 +13351 1 1.0904485520153743e+01 4.2775735364188201e+01 1.7500000199413610e+00 0 0 0 +13355 1 1.4271514285071547e+01 4.1653003580648587e+01 1.7499999869678520e+00 0 0 0 +13390 1 1.3149237097238434e+01 4.3871934570407404e+01 1.7499999977414140e+00 0 0 0 +14031 1 1.4832658017352154e+01 4.3310464539347876e+01 3.4999999924028473e+00 0 0 0 +13391 1 1.4832657971564789e+01 4.3310464564936879e+01 1.7499999984990463e+01 0 0 -1 +13392 1 1.6516219060519234e+01 4.2749017088962539e+01 1.7499999778046325e+00 0 0 0 +13396 1 1.8760915131451810e+01 4.3845041880411848e+01 1.7499999841866583e+00 0 0 0 +13395 1 1.9883265671209582e+01 4.1626063081362084e+01 1.7500000004306522e+00 0 0 0 +13400 1 2.2127952027128305e+01 4.2722089162262670e+01 1.7500000123826260e+00 0 0 0 +14034 1 2.0444436351733241e+01 4.3283566605656503e+01 3.5000000112749601e+00 0 0 0 +13394 1 2.0444436382875168e+01 4.3283566633769418e+01 1.7499999986582868e+01 0 0 -1 +13404 1 2.5494983295001937e+01 4.1599135703137982e+01 1.7500000306499965e+00 0 0 0 +13425 1 2.4372639496683618e+01 4.3818115565453162e+01 1.7500000474269124e+00 0 0 0 +13427 1 2.7739671322662982e+01 4.2695162288165690e+01 1.7500000495595214e+00 0 0 0 +13428 1 2.9423187496713872e+01 4.2133685650154035e+01 6.0055810756250488e-08 0 0 0 +13430 1 3.1106703494702568e+01 4.1572208989770452e+01 1.7500000199136885e+00 0 0 0 +13431 1 2.9984359410814129e+01 4.3791188807560232e+01 1.7500000219741563e+00 0 0 0 +14068 1 2.9423187508758559e+01 4.2133685637148552e+01 3.4999999925785961e+00 0 0 0 +13435 1 3.3351391636202735e+01 4.2668235707959823e+01 1.7500000048825424e+00 0 0 0 +14073 1 3.5034907583479153e+01 4.2106759111509490e+01 3.5000000048009405e+00 0 0 0 +13439 1 3.6718423605931271e+01 4.1545282827940355e+01 1.7500000187851878e+00 0 0 0 +13447 1 3.5596079729434770e+01 4.3764262436988055e+01 1.7500000007124423e+00 0 0 0 +14088 1 3.7279595645346767e+01 4.3202786089874898e+01 3.5000000229043753e+00 0 0 0 +13449 1 3.8963111654924475e+01 4.2641309698853433e+01 1.7500000195293908e+00 0 0 0 +13453 1 4.1207799710884927e+01 4.3737336757443209e+01 1.7500000429583540e+00 0 0 0 +14090 1 4.0646627739845634e+01 4.2079833544073097e+01 3.5000000312245736e+00 0 0 0 +13452 1 4.2330143798123757e+01 4.1518357202040050e+01 1.7500000281781096e+00 0 0 0 +13455 1 4.4574831850208597e+01 4.2614384247897320e+01 1.7500000190836540e+00 0 0 0 +14091 1 4.2891315756725973e+01 4.3175860449731395e+01 3.5000000202956723e+00 0 0 0 +13458 1 1.0571063005485251e+00 1.9346078904251192e+00 5.2499999927378980e+00 0 0 0 +13464 1 3.1035854460995798e+00 3.0168696768257965e+00 5.2499999247533040e+00 0 0 0 +13466 1 4.7485647275282155e+00 2.4088181689633226e+00 3.4999999315871468e+00 0 0 0 +13460 1 4.1395816947019197e+00 7.3266345805421396e-01 5.2499999600686547e+00 0 0 0 +13468 1 6.4095238517998911e+00 1.8413208447857448e+00 5.2499999492101841e+00 0 0 0 +14106 1 4.7485646469507055e+00 2.4088182529569631e+00 6.9999999636342274e+00 0 0 0 +13459 1 5.8404173622025723e+00 1.8665124471415570e-01 3.4999999768067234e+00 0 0 0 +14099 1 5.8404172945021395e+00 1.8665129204755701e-01 6.9999999717912207e+00 0 0 0 +13473 1 8.6590380782281411e+00 2.9409750221953548e+00 5.2500000001610649e+00 0 0 0 +13471 1 1.0342364976880354e+01 2.3802019329432671e+00 3.5000000502310518e+00 0 0 0 +13472 1 9.7824052217909205e+00 7.2351586021507663e-01 5.2500000165309615e+00 0 0 0 +13476 1 1.2026827933979671e+01 1.8191519715174180e+00 5.2500000183928002e+00 0 0 0 +14111 1 1.0342364928109625e+01 2.3802019123833476e+00 7.0000000274160090e+00 0 0 0 +13474 1 1.1466173684493638e+01 1.6174235785038438e-01 3.5000000363247050e+00 0 0 0 +14114 1 1.1466173693685286e+01 1.6174230344987178e-01 7.0000000317235118e+00 0 0 0 +13478 1 1.5393909374538085e+01 6.9610450387979195e-01 5.2499999412232938e+00 0 0 0 +13495 1 1.4271515940316828e+01 2.9151016259061286e+00 5.2499999955555738e+00 0 0 0 +13497 1 1.5955088552901207e+01 2.3536263878478985e+00 3.4999999765419365e+00 0 0 0 +14137 1 1.5955088575582094e+01 2.3536263661962775e+00 6.9999999475405330e+00 0 0 0 +13499 1 1.7638584978549968e+01 1.7921352881245993e+00 5.2499999194484541e+00 0 0 0 +13477 1 1.7077392822989864e+01 1.3462431789978588e-01 3.4999999516383737e+00 0 0 0 +14117 1 1.7077392843317270e+01 1.3462428834438733e-01 6.9999999377793962e+00 0 0 0 +13502 1 2.1566781162580920e+01 2.3266842249707578e+00 3.4999999658783465e+00 0 0 0 +13503 1 2.1005608083994996e+01 6.6918117439427605e-01 5.2499999820213752e+00 0 0 0 +13504 1 1.9883267878929040e+01 2.8881618203120989e+00 5.2499999316454140e+00 0 0 0 +14142 1 2.1566781102827939e+01 2.3266842751985912e+00 7.0000000061521286e+00 0 0 0 +13506 1 2.4933813415570015e+01 1.2037311453794297e+00 3.5000000162764064e+00 0 0 0 +13507 1 2.3250297178838977e+01 1.7652077473696648e+00 5.2500000138962273e+00 0 0 0 +13540 1 2.5494985579296909e+01 2.8612342412321374e+00 5.2500000286114723e+00 0 0 0 +14146 1 2.4933813410290330e+01 1.2037312069632715e+00 7.0000000367812438e+00 0 0 0 +13505 1 2.2689125481841749e+01 1.0770493118782308e-01 3.4999999966524951e+00 0 0 0 +14145 1 2.2689125431163028e+01 1.0770498811522144e-01 7.0000000409679224e+00 0 0 0 +13509 1 2.6617329435899752e+01 6.4225451259117516e-01 5.2500000216582734e+00 0 0 0 +13544 1 2.8862017538081105e+01 1.7382809591556914e+00 5.2499999927805963e+00 0 0 0 +13546 1 3.0545533399883247e+01 1.1768043365487590e+00 3.4999999943393392e+00 0 0 0 +13548 1 3.2229049210223600e+01 6.1532779136292359e-01 5.2499999904150894e+00 0 0 0 +13549 1 3.1106705544245425e+01 2.8343074614782711e+00 5.2499999692721664e+00 0 0 0 +14186 1 3.0545533386720109e+01 1.1768043439985656e+00 6.9999999530311241e+00 0 0 0 +13552 1 3.4473737059595898e+01 1.7113545527533183e+00 5.2500000160364069e+00 0 0 0 +13551 1 3.6157252769531041e+01 1.1498781482294711e+00 3.4999999660911518e+00 0 0 0 +13554 1 3.7840768405257002e+01 5.8840186740949829e-01 5.2500000439993615e+00 0 0 0 +13598 1 3.6718424762569420e+01 2.8073814355268500e+00 5.2500000212341558e+00 0 0 0 +14191 1 3.6157252696154814e+01 1.1498781647765011e+00 7.0000000565666136e+00 0 0 0 +13604 1 4.1768971679653639e+01 1.1229524236809372e+00 3.5000000076317956e+00 0 0 0 +13602 1 4.0085455995861928e+01 1.6844287853326234e+00 5.2500000235314541e+00 0 0 0 +13605 1 4.4013659595496151e+01 2.2189794323380312e+00 3.5000000035423184e+00 0 0 0 +13606 1 4.3452487498821242e+01 5.6147615668273965e-01 5.2499999521474425e+00 0 0 0 +13607 1 4.2330143785763326e+01 2.7804557044830287e+00 5.2500000081834273e+00 0 0 0 +19841 1 4.5136003409893462e+01 -1.2860124373595059e-07 3.4999999997250586e+00 0 0 0 +13465 1 1.7224976765517952e+00 5.1686663004009237e+00 5.2499999191893565e+00 0 0 0 +13463 1 3.5610871896113436e+00 4.6227212435502318e+00 3.4999999217932474e+00 0 0 0 +13469 1 5.3078145127860035e+00 4.0734316571577756e+00 5.2499999183820441e+00 0 0 0 +13483 1 4.1395817475422678e+00 6.2666496402254399e+00 5.2499998990863634e+00 0 0 0 +14103 1 3.5610871079752937e+00 4.6227212759128591e+00 6.9999999364472281e+00 0 0 0 +13489 1 9.2228651515518933e+00 4.6000744407068845e+00 3.5000000345151316e+00 0 0 0 +13487 1 7.5397004506120266e+00 5.1633440232955881e+00 5.2499999856661059e+00 0 0 0 +14129 1 9.2228650536162302e+00 4.6000744203126933e+00 7.0000000451282718e+00 0 0 0 +13492 1 9.7824052018380261e+00 6.2575022213231106e+00 5.2500000416015045e+00 0 0 0 +13491 1 1.0904486818646667e+01 4.0378328232927450e+00 5.2500000527606110e+00 0 0 0 +13494 1 1.4832659712436598e+01 4.5725629267038430e+00 3.5000000187920723e+00 0 0 0 +13496 1 1.3149238615247109e+01 5.1340327197260578e+00 5.2500000209466000e+00 0 0 0 +13528 1 1.5393909438287110e+01 6.2300907581733735e+00 5.2499999846602474e+00 0 0 0 +14134 1 1.4832659750923685e+01 4.5725628556569529e+00 6.9999999805237438e+00 0 0 0 +13500 1 1.6516220992999088e+01 4.0111155831225123e+00 5.2499999391421586e+00 0 0 0 +13532 1 1.8760917342793441e+01 5.1071406937397530e+00 5.2499999547482386e+00 0 0 0 +13534 1 2.0444438683436090e+01 4.5456654150612286e+00 3.4999999876024757e+00 0 0 0 +13536 1 2.2127954379301489e+01 3.9841879534931288e+00 5.2499999919771660e+00 0 0 0 +13537 1 2.1005608443603808e+01 6.2031673839302632e+00 5.2499999662547623e+00 0 0 0 +14174 1 2.0444438623402604e+01 4.5456654831391567e+00 6.9999999629426206e+00 0 0 0 +13541 1 2.4372641986731036e+01 5.0802141722578602e+00 5.2500000232517809e+00 0 0 0 +13588 1 2.8300845919662780e+01 5.6147637937506731e+00 3.4999999843293272e+00 0 0 0 +13545 1 2.7739673699899477e+01 3.9572606869918721e+00 5.2499999803667663e+00 0 0 0 +13586 1 2.6617329989082307e+01 6.1762405409260088e+00 5.2500000006189840e+00 0 0 0 +14228 1 2.8300845932820216e+01 5.6147638260968868e+00 6.9999999514779701e+00 0 0 0 +13543 1 2.9423189740742821e+01 3.3957840366415764e+00 3.5000000002070704e+00 0 0 0 +13590 1 2.9984361794204833e+01 5.0532871464007725e+00 5.2499999678558380e+00 0 0 0 +13595 1 3.2229049834666291e+01 6.1493137241873468e+00 5.2499999806124578e+00 0 0 0 +14183 1 2.9423189762507249e+01 3.3957840765440124e+00 6.9999999426372161e+00 0 0 0 +13593 1 3.3912565631809315e+01 5.5878373262236005e+00 3.4999999585671913e+00 0 0 0 +13596 1 3.5034909166266779e+01 3.3688576988210435e+00 3.4999999619153641e+00 0 0 0 +13594 1 3.3351393551639433e+01 3.9303342234654881e+00 5.2499999871968210e+00 0 0 0 +14233 1 3.3912565555488960e+01 5.5878373511049269e+00 6.9999999912330244e+00 0 0 0 +14236 1 3.5034909106424031e+01 3.3688576953127773e+00 7.0000000304356664e+00 0 0 0 +13599 1 3.5596081422764968e+01 5.0263610132449186e+00 5.2500000031625742e+00 0 0 0 +13652 1 3.7840768983261384e+01 6.1223878535502978e+00 5.2500000458536551e+00 0 0 0 +13601 1 4.0646628106226117e+01 3.3419320854686965e+00 3.4999999976580787e+00 0 0 0 +13654 1 3.9524284594346632e+01 5.5609115487814922e+00 3.4999999739729497e+00 0 0 0 +13603 1 3.8963112437071196e+01 3.9034082563380728e+00 5.2500000330549064e+00 0 0 0 +13656 1 4.1207800194257793e+01 4.9994352345856221e+00 5.2500000035671199e+00 0 0 0 +14294 1 3.9524284607361636e+01 5.5609115357305914e+00 7.0000000737111865e+00 0 0 0 +12803 1 4.1207799708122344e+01 4.3737336781765272e+01 1.5750000022143698e+01 0 0 0 +13658 1 4.2891315862223784e+01 4.4379588888535633e+00 3.5000000140972034e+00 0 0 0 +13659 1 4.4574831727465877e+01 3.8764825915601056e+00 5.2499999808814684e+00 0 0 0 +13660 1 4.3452487920759758e+01 6.0954621138848122e+00 5.2499999867466114e+00 0 0 0 +13479 1 1.2264316855743833e+00 9.1032393188797691e+00 3.4999999540751707e+00 0 0 0 +13480 1 1.0571061091928704e+00 7.4685938841563546e+00 5.2499999180288324e+00 0 0 0 +13481 1 2.5187345198094926e+00 6.8256765346570605e+00 3.4999998711094480e+00 0 0 0 +13484 1 3.1035854139940242e+00 8.5508559559280464e+00 5.2499999154675354e+00 0 0 0 +14119 1 1.2264316729983860e+00 9.1032394362573079e+00 6.9999999084437539e+00 0 0 0 +14121 1 2.5187344482266356e+00 6.8256765989872656e+00 6.9999999426681709e+00 0 0 0 +13488 1 6.4095236880005713e+00 7.3753071461517239e+00 5.2499999617024464e+00 0 0 0 +13516 1 5.3078141848882847e+00 9.6074179571516467e+00 5.2499999435386417e+00 0 0 0 +13486 1 8.0950148695054693e+00 6.8174693870509815e+00 3.5000000138047960e+00 0 0 0 +13518 1 6.9829716852461674e+00 9.0386042149171413e+00 3.5000000015290516e+00 0 0 0 +13520 1 8.6590378637892247e+00 8.4749614104978814e+00 5.2500000340120536e+00 0 0 0 +14126 1 8.0950147265559824e+00 6.8174693815809801e+00 7.0000000229510677e+00 0 0 0 +14158 1 6.9829715417586691e+00 9.0386042206107611e+00 6.9999999868801579e+00 0 0 0 +13523 1 1.2587783926801778e+01 9.0104490574775813e+00 3.5000000683551873e+00 0 0 0 +13524 1 1.2026827920043983e+01 7.3531383279468887e+00 5.2500000561455398e+00 0 0 0 +13525 1 1.0904486569486664e+01 9.5718191865442073e+00 5.2500000459492080e+00 0 0 0 +14163 1 1.2587783893120447e+01 9.0104489784076591e+00 7.0000000348807996e+00 0 0 0 +13526 1 1.3710492574317410e+01 6.7916255192161774e+00 3.5000000844840016e+00 0 0 0 +13529 1 1.4271515859727661e+01 8.4490878605298985e+00 5.2500000040117474e+00 0 0 0 +14166 1 1.3710492591026295e+01 6.7916254436483516e+00 7.0000000132764431e+00 0 0 0 +13531 1 1.9322091259191438e+01 6.7646425472062939e+00 3.4999999634882166e+00 0 0 0 +13533 1 1.7638585095943927e+01 7.3261215301266107e+00 5.2499999587236905e+00 0 0 0 +13574 1 1.6516220923908630e+01 9.5451017680672550e+00 5.2499999821367451e+00 0 0 0 +13576 1 1.8199755221456449e+01 8.9836280164861684e+00 3.5000000089321666e+00 0 0 0 +14171 1 1.9322091203510929e+01 6.7646425838002679e+00 6.9999999767681542e+00 0 0 0 +14216 1 1.8199755192636179e+01 8.9836280410645202e+00 6.9999999705549802e+00 0 0 0 +13578 1 1.9883268054253957e+01 8.4221480128621717e+00 5.2499999916330582e+00 0 0 0 +13583 1 2.2127954584987677e+01 9.5181740560258508e+00 5.2500000246725795e+00 0 0 0 +13581 1 2.3811469882221683e+01 8.9566969875726095e+00 3.5000000124429689e+00 0 0 0 +13582 1 2.3250297550025792e+01 7.2991938471697315e+00 5.2500000163480189e+00 0 0 0 +13587 1 2.5494985985284561e+01 8.3952202828195190e+00 5.2499999992253654e+00 0 0 0 +14221 1 2.3811469841776248e+01 8.9566970618468726e+00 7.0000000352654723e+00 0 0 0 +13585 1 2.7178502135642152e+01 7.8337435471379324e+00 3.4999999750195911e+00 0 0 0 +13591 1 2.8862018073693456e+01 7.2722669593711862e+00 5.2499999725992739e+00 0 0 0 +13640 1 2.7739674055425699e+01 9.4912466876774637e+00 5.2500000013727899e+00 0 0 0 +14225 1 2.7178502165245519e+01 7.8337435688015633e+00 6.9999999868658866e+00 0 0 0 +13644 1 3.1106706028231372e+01 8.3682934253795143e+00 5.2499999576741363e+00 0 0 0 +13646 1 3.2790221960220336e+01 7.8068169811240757e+00 3.4999999742780963e+00 0 0 0 +13648 1 3.4473737656314299e+01 7.2453405136997304e+00 5.2500000030546774e+00 0 0 0 +13649 1 3.3351393958288931e+01 9.4643201911882819e+00 5.2499999715248222e+00 0 0 0 +14286 1 3.2790221913102499e+01 7.8068169753173429e+00 6.9999999530901444e+00 0 0 0 +13651 1 3.8401940949673168e+01 7.7798910749478232e+00 3.5000000034083874e+00 0 0 0 +13653 1 3.6718425263000036e+01 8.3413674137425335e+00 5.2500000603175101e+00 0 0 0 +14291 1 3.8401940907187040e+01 7.7798910727836654e+00 7.0000000905364965e+00 0 0 0 +13657 1 4.0085456524352708e+01 7.2184147907069649e+00 5.2500000486950213e+00 0 0 0 +13707 1 3.8963112920332009e+01 9.4373942500146129e+00 5.2500000423222080e+00 0 0 0 +13711 1 4.2330144201429476e+01 8.3144416457032051e+00 5.2500000293149123e+00 0 0 0 +13713 1 4.4013659969637224e+01 7.7529653245739762e+00 3.4999999844824083e+00 0 0 0 +13714 1 4.4574832034406150e+01 9.4104684282950757e+00 5.2499999860123037e+00 0 0 0 +14353 1 4.4013659958427809e+01 7.7529653120295290e+00 6.9999999853070980e+00 0 0 0 +13512 1 1.7224974769724206e+00 1.0702652608521971e+01 5.2499999381582896e+00 0 0 0 +13515 1 5.8404170411230565e+00 1.1254623909508593e+01 3.4999999501346442e+00 0 0 0 +13517 1 4.1395814038522110e+00 1.1800636040582166e+01 5.2499999320452089e+00 0 0 0 +14155 1 5.8404169319518049e+00 1.1254623991734556e+01 6.9999999510984692e+00 0 0 0 +13521 1 7.5397001151800316e+00 1.0697330480631793e+01 5.2499999635317893e+00 0 0 0 +13566 1 9.7824047605231730e+00 1.1791488617656603e+01 5.2500000095162234e+00 0 0 0 +13568 1 1.1466173366087972e+01 1.1229715027612107e+01 3.5000000538523532e+00 0 0 0 +14208 1 1.1466173316175764e+01 1.1229714954256822e+01 7.0000000345332696e+00 0 0 0 +13570 1 1.3149238306382030e+01 1.0668018948067338e+01 5.2500000395314128e+00 0 0 0 +13575 1 1.5393909178879975e+01 1.1764076912298503e+01 5.2499999731674256e+00 0 0 0 +13573 1 1.7077392853300275e+01 1.1202596700991281e+01 3.4999999927399226e+00 0 0 0 +13579 1 1.8760917294547699e+01 1.0641126843740981e+01 5.2499999677947846e+00 0 0 0 +14213 1 1.7077392811058836e+01 1.1202596658003610e+01 6.9999999689438166e+00 0 0 0 +13632 1 2.1005608377286716e+01 1.1737153410726163e+01 5.2500000135134774e+00 0 0 0 +13635 1 2.4933813982566591e+01 1.2271703200991729e+01 3.5000000162080318e+00 0 0 0 +13634 1 2.2689126034156256e+01 1.1175677129409694e+01 3.5000000216074496e+00 0 0 0 +13636 1 2.4372642218934079e+01 1.0614200193777652e+01 5.2500000510862490e+00 0 0 0 +14274 1 2.2689125962824765e+01 1.1175677163163856e+01 7.0000000498016384e+00 0 0 0 +14275 1 2.4933813953501993e+01 1.2271703250983608e+01 7.0000000480070268e+00 0 0 0 +13638 1 2.6056158087466763e+01 1.0052723357980762e+01 3.5000000172033201e+00 0 0 0 +13641 1 2.6617330165173907e+01 1.1710226522034967e+01 5.2500000263713593e+00 0 0 0 +14278 1 2.6056158097323419e+01 1.0052723395728242e+01 7.0000000166242362e+00 0 0 0 +13643 1 3.1667878017249279e+01 1.0025796578093590e+01 3.4999999895746878e+00 0 0 0 +13645 1 2.9984362112024623e+01 1.0587273176654111e+01 5.2499999704290783e+00 0 0 0 +13697 1 3.0545534149045110e+01 1.2244776296665632e+01 3.4999999890105586e+00 0 0 0 +13699 1 3.2229050072769532e+01 1.1683299730854749e+01 5.2499999729858402e+00 0 0 0 +14337 1 3.0545534141764769e+01 1.2244776304378274e+01 6.9999999478333557e+00 0 0 0 +14283 1 3.1667877979999030e+01 1.0025796590766813e+01 6.9999999206075669e+00 0 0 0 +13702 1 3.6157253636120522e+01 1.2217850118696431e+01 3.4999999989374975e+00 0 0 0 +13705 1 3.7279597354144158e+01 9.9988706573601824e+00 3.4999999944034808e+00 0 0 0 +13703 1 3.5596081750481545e+01 1.0560346974145151e+01 5.2500000263826676e+00 0 0 0 +13708 1 3.7840769329093106e+01 1.1656373853186551e+01 5.2500000641932942e+00 0 0 0 +14342 1 3.6157253544586140e+01 1.2217850130898537e+01 7.0000000483548348e+00 0 0 0 +14345 1 3.7279597296181713e+01 9.9988706470837485e+00 7.0000000923670287e+00 0 0 0 +13712 1 4.1207800521568537e+01 1.0533421142308981e+01 5.2500000391365003e+00 0 0 0 +14404 1 4.1768972451356731e+01 1.2190924280282271e+01 7.0000000583301434e+00 0 0 0 +13710 1 4.2891316226886424e+01 9.9719447641410994e+00 3.5000000016152306e+00 0 0 0 +13766 1 4.3452488220337031e+01 1.1629447954588439e+01 5.2499999851653296e+00 0 0 0 +14350 1 4.2891316252624478e+01 9.9719447267900527e+00 7.0000000285011197e+00 0 0 0 +13450 1 4.0646627725196353e+01 4.2079833521143321e+01 2.9643913990184956e-08 0 0 0 +13513 1 1.0571062236884785e+00 1.3002580323463189e+01 5.2499999171880134e+00 0 0 0 +13558 1 3.1035850898641897e+00 1.4084842455896498e+01 5.2499998785579516e+00 0 0 0 +13557 1 3.5610866577727651e+00 1.5690694166752751e+01 3.4999998965597396e+00 0 0 0 +13560 1 4.7485642538792741e+00 1.3476790958261768e+01 3.4999999253487961e+00 0 0 0 +13562 1 6.4095233194339762e+00 1.2909293659425447e+01 5.2499999371592070e+00 0 0 0 +13563 1 5.3078138813531108e+00 1.5141404595662932e+01 5.2499998854846988e+00 0 0 0 +14197 1 3.5610865263927600e+00 1.5690694233069367e+01 6.9999998759034430e+00 0 0 0 +14200 1 4.7485641508488818e+00 1.3476791059889772e+01 6.9999999269681563e+00 0 0 0 +13567 1 8.6590374060769673e+00 1.4008947891991108e+01 5.2499999794077628e+00 0 0 0 +13618 1 9.2228643419700642e+00 1.5668047321168434e+01 3.5000000093291734e+00 0 0 0 +14258 1 9.2228642410980939e+00 1.5668047289267479e+01 6.9999999829334065e+00 0 0 0 +13565 1 1.0342364378748110e+01 1.3448174685140719e+01 3.5000000361529997e+00 0 0 0 +13571 1 1.2026827441005343e+01 1.2887124597934443e+01 5.2500000177934503e+00 0 0 0 +13620 1 1.0904486070193315e+01 1.5105805527662762e+01 5.2500000293255988e+00 0 0 0 +14205 1 1.0342364307872462e+01 1.3448174657899955e+01 6.9999999860680866e+00 0 0 0 +13623 1 1.4832659086645645e+01 1.5640535201140224e+01 3.4999999938877173e+00 0 0 0 +13624 1 1.4271515432561792e+01 1.3983074020849033e+01 5.2500000057906133e+00 0 0 0 +13626 1 1.5955088228390521e+01 1.3421598695126560e+01 3.4999999874930792e+00 0 0 0 +14263 1 1.4832659076000425e+01 1.5640535171571639e+01 6.9999999876383452e+00 0 0 0 +14266 1 1.5955088199381834e+01 1.3421598668354033e+01 6.9999999845487046e+00 0 0 0 +13628 1 1.7638584825833600e+01 1.2860107568314156e+01 5.2499999687956134e+00 0 0 0 +13629 1 1.6516220495472957e+01 1.5079087799526029e+01 5.2499999725442636e+00 0 0 0 +13631 1 2.1566781297823187e+01 1.3394656360356660e+01 3.5000000056526530e+00 0 0 0 +13633 1 1.9883267770825753e+01 1.3956133957230429e+01 5.2499999700816531e+00 0 0 0 +13685 1 2.0444438420760005e+01 1.5613637436412654e+01 3.5000000019997541e+00 0 0 0 +13687 1 2.2127954318640711e+01 1.5052159945268038e+01 5.2500000127382380e+00 0 0 0 +14271 1 2.1566781221911917e+01 1.3394656386000738e+01 7.0000000204319894e+00 0 0 0 +14325 1 2.0444438350032019e+01 1.5613637477114409e+01 6.9999999737253447e+00 0 0 0 +13637 1 2.3250297528273911e+01 1.2833179834697455e+01 5.2500000327640803e+00 0 0 0 +13691 1 2.5494985934036873e+01 1.3929206231580968e+01 5.2500000435532481e+00 0 0 0 +13695 1 2.8862018156821748e+01 1.2806252914535065e+01 5.2500000010743806e+00 0 0 0 +13696 1 2.7739673932705891e+01 1.5025232627547396e+01 5.2500000076699287e+00 0 0 0 +13694 1 2.9423190119405891e+01 1.4463755993638239e+01 3.5000000045200403e+00 0 0 0 +13700 1 3.1106706031472317e+01 1.3902279407583308e+01 5.2499999681281286e+00 0 0 0 +14334 1 2.9423190117809458e+01 1.4463756017904968e+01 6.9999999737950471e+00 0 0 0 +13704 1 3.4473737813373923e+01 1.2779326496737667e+01 5.2500000055859140e+00 0 0 0 +13754 1 3.3351393932238601e+01 1.4998306159224024e+01 5.2499999964025124e+00 0 0 0 +13756 1 3.5034909704307594e+01 1.4436829620152379e+01 3.4999999904915957e+00 0 0 0 +14396 1 3.5034909613824098e+01 1.4436829659343790e+01 7.0000000169940879e+00 0 0 0 +13758 1 3.6718425409740668e+01 1.3875353387372822e+01 5.2500000200220214e+00 0 0 0 +13762 1 4.0085456785720027e+01 1.2752400715841603e+01 5.2500000644885922e+00 0 0 0 +13763 1 3.8963112993403612e+01 1.4971380174389052e+01 5.2500000565299008e+00 0 0 0 +14401 1 4.0646628693794305e+01 1.4409903924611985e+01 7.0000000879117614e+00 0 0 0 +13767 1 4.2330144429982326e+01 1.3848427494424612e+01 5.2500000340492710e+00 0 0 0 +13819 1 4.4574832185867599e+01 1.4944454180216667e+01 5.2500000101361204e+00 0 0 0 +14405 1 4.4013660206794846e+01 1.3286951113330270e+01 7.0000000086728571e+00 0 0 0 +14458 1 4.2891316368020888e+01 1.5505930542721833e+01 7.0000000169291905e+00 0 0 0 +13610 1 2.5187340904729476e+00 1.7893649593743408e+01 3.4999999314017813e+00 0 0 0 +13559 1 1.7224971941207747e+00 1.6236639186804666e+01 5.2499998310745628e+00 0 0 0 +13609 1 1.0571061930807510e+00 1.8536567011256704e+01 5.2499998073631895e+00 0 0 0 +14250 1 2.5187339778384050e+00 1.7893649655671172e+01 6.9999997679283226e+00 0 0 0 +13612 1 4.1395810869792342e+00 1.7334622717289506e+01 5.2499998774654157e+00 0 0 0 +13617 1 6.4095228510220643e+00 1.8443280311282457e+01 5.2499999420457995e+00 0 0 0 +13615 1 8.0950139389968943e+00 1.7885442427801465e+01 3.4999999870548506e+00 0 0 0 +13616 1 7.5396996456887644e+00 1.6231317030830851e+01 5.2499999532265278e+00 0 0 0 +14255 1 8.0950138118491228e+00 1.7885442388254610e+01 6.9999999534702839e+00 0 0 0 +13621 1 9.7824042668940780e+00 1.7325475059460253e+01 5.2500000124172992e+00 0 0 0 +13675 1 1.2026826966116376e+01 1.8421110861180171e+01 5.2500000356205705e+00 0 0 0 +13625 1 1.3149237858327748e+01 1.6202005164404731e+01 5.2500000097782671e+00 0 0 0 +13677 1 1.3710491712680694e+01 1.7859597832915103e+01 3.5000000442463373e+00 0 0 0 +13679 1 1.5393908670541990e+01 1.7298062950171406e+01 5.2500000079643154e+00 0 0 0 +14317 1 1.3710491695704922e+01 1.7859597797186701e+01 7.0000000001645164e+00 0 0 0 +13682 1 1.9322090609011866e+01 1.7832614469759715e+01 3.4999999679694325e+00 0 0 0 +13683 1 1.8760916845157251e+01 1.6175112733399565e+01 5.2499999775897317e+00 0 0 0 +13684 1 1.7638584287944095e+01 1.8394093489628332e+01 5.2499999900401857e+00 0 0 0 +14322 1 1.9322090558346240e+01 1.7832614499751266e+01 6.9999999878382839e+00 0 0 0 +13688 1 2.1005607989424895e+01 1.7271139281278650e+01 5.2499999751950934e+00 0 0 0 +13692 1 2.4372641924927560e+01 1.6148186085435192e+01 5.2500000222639613e+00 0 0 0 +13742 1 2.3250297072381656e+01 1.8367165677974771e+01 5.2500000070651609e+00 0 0 0 +13745 1 2.7178501762231605e+01 1.8901715411900121e+01 3.4999999785240257e+00 0 0 0 +13746 1 2.6617329832974843e+01 1.7244212438856056e+01 5.2500000111137268e+00 0 0 0 +13748 1 2.8300845926604637e+01 1.6682735737647967e+01 3.4999999890883551e+00 0 0 0 +13751 1 2.8862017815294724e+01 1.8340238835841657e+01 5.2499999822046988e+00 0 0 0 +14385 1 2.7178501719746482e+01 1.8901715405584447e+01 7.0000000078017610e+00 0 0 0 +14388 1 2.8300845893710193e+01 1.6682735729774659e+01 6.9999999994655280e+00 0 0 0 +13750 1 2.9984361911780013e+01 1.6121259066767049e+01 5.2499999818050131e+00 0 0 0 +13755 1 3.2229049822714899e+01 1.7217285609206186e+01 5.2499999895425038e+00 0 0 0 +13753 1 3.3912565793347262e+01 1.6655809234984062e+01 3.4999999921125173e+00 0 0 0 +13806 1 3.2790221759221218e+01 1.8874788825050278e+01 3.4999999850088890e+00 0 0 0 +13808 1 3.4473737589065848e+01 1.8313312399349631e+01 5.2499999834882285e+00 0 0 0 +14393 1 3.3912565708763083e+01 1.6655809252703857e+01 6.9999999941022812e+00 0 0 0 +14446 1 3.2790221677390726e+01 1.8874788849495861e+01 6.9999999756788123e+00 0 0 0 +13759 1 3.5596081707984588e+01 1.6094332929567319e+01 5.2500000097069917e+00 0 0 0 +13811 1 3.8401941041279542e+01 1.8847862908312383e+01 3.5000000157232130e+00 0 0 0 +13812 1 3.7840769234580073e+01 1.7190359741558591e+01 5.2500000529965867e+00 0 0 0 +14451 1 3.8401940965631304e+01 1.8847862953015273e+01 7.0000000756519922e+00 0 0 0 +13816 1 4.1207800642911224e+01 1.6067407028615722e+01 5.2500000341920341e+00 0 0 0 +13817 1 4.0085456745535552e+01 1.8286386596066976e+01 5.2500000562304621e+00 0 0 0 +14454 1 3.9524284944872889e+01 1.6628883450307157e+01 7.0000000926387926e+00 0 0 0 +14455 1 4.1768972458955098e+01 1.7724910157792166e+01 7.0000000638481188e+00 0 0 0 +13448 1 3.7279595656574664e+01 4.3202786090567734e+01 1.7499999996058467e+01 0 0 -1 +13820 1 4.3452488265260214e+01 1.7163433731802620e+01 5.2500000212786651e+00 0 0 0 +14513 1 4.4013660155113413e+01 1.8820936890766852e+01 7.0000000330851089e+00 0 0 0 +13608 1 1.2264315123218827e+00 2.0171212641173195e+01 3.4999999331251384e+00 0 0 0 +13613 1 3.1035848350330273e+00 1.9618829207475763e+01 5.2499998601048068e+00 0 0 0 +13663 1 1.7224970755737654e+00 2.1770626047301686e+01 5.2499998756784656e+00 0 0 0 +14248 1 1.2264315051147523e+00 2.0171212734103875e+01 6.9999997590775029e+00 0 0 0 +13667 1 5.3078134837441091e+00 2.0675391330619341e+01 5.2499999180824695e+00 0 0 0 +13669 1 6.9829707709508808e+00 2.0106577425095690e+01 3.4999999828688479e+00 0 0 0 +13671 1 8.6590368471306469e+00 1.9542934405593225e+01 5.2500000123334036e+00 0 0 0 +13672 1 7.5396991699115370e+00 2.1765303631360172e+01 5.2499999491843790e+00 0 0 0 +14309 1 6.9829706416256334e+00 2.0106577380202200e+01 6.9999999320493345e+00 0 0 0 +13674 1 1.2587782919186010e+01 2.0078421460198591e+01 3.5000000299997667e+00 0 0 0 +13676 1 1.0904485511037908e+01 2.0639791855399594e+01 5.2500000143332768e+00 0 0 0 +14314 1 1.2587782836015579e+01 2.0078421419216532e+01 7.0000000073250161e+00 0 0 0 +13680 1 1.4271514897698513e+01 1.9517060082559944e+01 5.2500000156298814e+00 0 0 0 +13730 1 1.3149237246754895e+01 2.1735991256643715e+01 5.2500000373792961e+00 0 0 0 +13734 1 1.6516219898419767e+01 2.0613073719090618e+01 5.2500000117151613e+00 0 0 0 +13736 1 1.8199754287424931e+01 2.0051599879307904e+01 3.5000000036253192e+00 0 0 0 +13739 1 1.8760916219532085e+01 2.1709098609138966e+01 5.2499999960253012e+00 0 0 0 +14376 1 1.8199754248672615e+01 2.0051599890097272e+01 6.9999999848180057e+00 0 0 0 +13738 1 1.9883267246345032e+01 1.9490119820361713e+01 5.2500000042857673e+00 0 0 0 +13743 1 2.2127953740829334e+01 2.0586145791649589e+01 5.2500000208061666e+00 0 0 0 +13741 1 2.3811469182274603e+01 2.0024668786314038e+01 3.5000000290866398e+00 0 0 0 +13747 1 2.5494985425782954e+01 1.9463192083493862e+01 5.2499999923375507e+00 0 0 0 +13796 1 2.4372641311205292e+01 2.1682171916028530e+01 5.2500000262312438e+00 0 0 0 +14381 1 2.3811469125111472e+01 2.0024668811891992e+01 6.9999999868225649e+00 0 0 0 +13798 1 2.6056157321785804e+01 2.1120695157195293e+01 3.4999999995456021e+00 0 0 0 +13800 1 2.7739673436042018e+01 2.0559218491103469e+01 5.2499999886206243e+00 0 0 0 +14438 1 2.6056157293155263e+01 2.1120695148204895e+01 6.9999999990627666e+00 0 0 0 +13803 1 3.1667877454162284e+01 2.1093768366534626e+01 3.4999999991808566e+00 0 0 0 +13804 1 3.1106705646003316e+01 1.9436265262712581e+01 5.2499999829334918e+00 0 0 0 +13805 1 2.9984361395614968e+01 2.1655244924361686e+01 5.2499999632064434e+00 0 0 0 +14443 1 3.1667877377864034e+01 2.1093768349480875e+01 6.9999999526617662e+00 0 0 0 +13809 1 3.3351393536272710e+01 2.0532291983061945e+01 5.2499999759919227e+00 0 0 0 +13813 1 3.6718425183936780e+01 1.9409339276476381e+01 5.2500000479215139e+00 0 0 0 +13863 1 3.5596081328877553e+01 2.1628318779297508e+01 5.2500000288529201e+00 0 0 0 +13865 1 3.7279597118766311e+01 2.1066842463961358e+01 3.5000000185240889e+00 0 0 0 +14505 1 3.7279597043221813e+01 2.1066842503784979e+01 7.0000000483781806e+00 0 0 0 +13867 1 3.8963112846319973e+01 2.0505366065929518e+01 5.2500000236384050e+00 0 0 0 +13872 1 4.1207800522509473e+01 2.1601392857423662e+01 5.2500000108578861e+00 0 0 0 +14509 1 4.0646628622221947e+01 1.9943889805063339e+01 7.0000000509532487e+00 0 0 0 +13871 1 4.2330144387510742e+01 1.9382413303202078e+01 5.2500000216525136e+00 0 0 0 +13874 1 4.4574832152223891e+01 2.0478439957168654e+01 5.2499999950406471e+00 0 0 0 +14510 1 4.2891316323512832e+01 2.1039916363863266e+01 7.0000000327777299e+00 0 0 0 +13664 1 1.0571058775145996e+00 2.4070553947550277e+01 5.2499998568405024e+00 0 0 0 +13718 1 3.1035847641280574e+00 2.5152816186651695e+01 5.2499998689110239e+00 0 0 0 +13666 1 5.8404162462778846e+00 2.2322597313087368e+01 3.4999999481946258e+00 0 0 0 +13720 1 4.7485635639518593e+00 2.4544764508517655e+01 3.4999999355188494e+00 0 0 0 +13668 1 4.1395808375603309e+00 2.2868609524172015e+01 5.2499999294598778e+00 0 0 0 +13722 1 6.4095225076429561e+00 2.3977266967653325e+01 5.2499999153350361e+00 0 0 0 +14306 1 5.8404161768329663e+00 2.2322597325688882e+01 6.9999999171207969e+00 0 0 0 +14360 1 4.7485635134388646e+00 2.4544764518655882e+01 6.9999998951985996e+00 0 0 0 +13727 1 8.6590365255051456e+00 2.5076920843781227e+01 5.2499999424051040e+00 0 0 0 +13728 1 1.1466172319632740e+01 2.2297687555202423e+01 3.5000000220863603e+00 0 0 0 +13725 1 1.0342363405538549e+01 2.4516147347365735e+01 3.5000000110338565e+00 0 0 0 +13726 1 9.7824037453327826e+00 2.2859461435511808e+01 5.2499999810813591e+00 0 0 0 +13731 1 1.2026826404105105e+01 2.3955097012143941e+01 5.2499999981903498e+00 0 0 0 +14368 1 1.1466172221953961e+01 2.2297687523611991e+01 6.9999999932682710e+00 0 0 0 +14365 1 1.0342363318864765e+01 2.4516147337959794e+01 6.9999999413905725e+00 0 0 0 +13735 1 1.5393908051151779e+01 2.2832048889644383e+01 5.2500000046021027e+00 0 0 0 +13784 1 1.4271514357070792e+01 2.5051046088536417e+01 5.2500000094027390e+00 0 0 0 +13786 1 1.5955087119098428e+01 2.4489570582019017e+01 3.4999999916226052e+00 0 0 0 +14426 1 1.5955087010083725e+01 2.4489570574866139e+01 7.0000000189730214e+00 0 0 0 +13733 1 1.7077391750630184e+01 2.2270568535273643e+01 3.5000000115000081e+00 0 0 0 +14373 1 1.7077391666769632e+01 2.2270568517948188e+01 7.0000000069793904e+00 0 0 0 +13788 1 1.7638583643180809e+01 2.3928079344292605e+01 5.2500000231608865e+00 0 0 0 +13791 1 2.1566780046385006e+01 2.4462628002363822e+01 3.5000000504549105e+00 0 0 0 +13792 1 2.1005607267896419e+01 2.2805125096520602e+01 5.2500000432555511e+00 0 0 0 +13793 1 1.9883266516901244e+01 2.5024105605421123e+01 5.2500000393407973e+00 0 0 0 +14431 1 2.1566779983938165e+01 2.4462628008675463e+01 7.0000000292955402e+00 0 0 0 +13795 1 2.4933812879469496e+01 2.3339674899095595e+01 3.5000000138582585e+00 0 0 0 +13794 1 2.2689124996379025e+01 2.2243648851264350e+01 3.5000000339612916e+00 0 0 0 +14434 1 2.2689124945439353e+01 2.2243648843436556e+01 7.0000000112099290e+00 0 0 0 +13797 1 2.3250296342724621e+01 2.3901151484217134e+01 5.2500000442983863e+00 0 0 0 +13851 1 2.5494984721155323e+01 2.4997177890075388e+01 5.2500000395231048e+00 0 0 0 +14435 1 2.4933812867069783e+01 2.3339674913435541e+01 7.0000000150618860e+00 0 0 0 +13801 1 2.6617329202222717e+01 2.2778198243248209e+01 5.2500000087580254e+00 0 0 0 +13855 1 2.8862017147014658e+01 2.3874224611917295e+01 5.2499999784974198e+00 0 0 0 +13857 1 3.0545533272471438e+01 2.3312748001296001e+01 3.4999999584755552e+00 0 0 0 +13859 1 3.2229049297424794e+01 2.2751271452900390e+01 5.2499999578842544e+00 0 0 0 +13860 1 3.1106704974807862e+01 2.4970251064809105e+01 5.2499999590042377e+00 0 0 0 +14497 1 3.0545533205944260e+01 2.3312748010413276e+01 6.9999999609083821e+00 0 0 0 +13864 1 3.4473737064868232e+01 2.3847298228211017e+01 5.2500000062251369e+00 0 0 0 +13862 1 3.6157253081836132e+01 2.3285821897372607e+01 3.5000000318131206e+00 0 0 0 +13868 1 3.7840768957437248e+01 2.2724345627009729e+01 5.2500000481413229e+00 0 0 0 +13918 1 3.6718424746065281e+01 2.4943325131789788e+01 5.2500000174551227e+00 0 0 0 +14502 1 3.6157252980505966e+01 2.3285821915665245e+01 7.0000000180542070e+00 0 0 0 +14560 1 3.8401940674153053e+01 2.4381848818329338e+01 7.0000000439034524e+00 0 0 0 +13922 1 4.0085456553718778e+01 2.3820372450093888e+01 5.2500000356275818e+00 0 0 0 +14564 1 4.1768972346717391e+01 2.3258895974903698e+01 7.0000000232830661e+00 0 0 0 +14506 1 3.9524284756450719e+01 2.2162869310215605e+01 7.0000000565440645e+00 0 0 0 +15999 1 3.6718423597908554e+01 4.1545282840510666e+01 1.5749999983397531e+01 0 0 0 +13926 1 4.3452488220193807e+01 2.2697419531795028e+01 5.2499999606652912e+00 0 0 0 +13927 1 4.2330144292737714e+01 2.4916399134805001e+01 5.2499999993232631e+00 0 0 0 +14565 1 4.4013660140425912e+01 2.4354922734321256e+01 7.0000000045717883e+00 0 0 0 +13719 1 1.7224968490384021e+00 2.7304612927238832e+01 5.2499998419952014e+00 0 0 0 +13717 1 3.5610861283274904e+00 2.6758667862769869e+01 3.4999999413924430e+00 0 0 0 +13723 1 5.3078132268778484e+00 2.6209378016839384e+01 5.2499998784190485e+00 0 0 0 +13772 1 4.1395806350878415e+00 2.8402596214951458e+01 5.2499998733203297e+00 0 0 0 +14357 1 3.5610860961430619e+00 2.6758667786287170e+01 6.9999998633689611e+00 0 0 0 +13778 1 9.2228635366205438e+00 2.6736020090984237e+01 3.4999999809466869e+00 0 0 0 +13776 1 7.5396990000911019e+00 2.7299290082408493e+01 5.2499999257699832e+00 0 0 0 +14418 1 9.2228634556857312e+00 2.6736020071756542e+01 6.9999999376356454e+00 0 0 0 +13781 1 9.7824035808084986e+00 2.8393447639278303e+01 5.2499999600820386e+00 0 0 0 +13780 1 1.0904485175009091e+01 2.6173778034823044e+01 5.2499999733344946e+00 0 0 0 +13783 1 1.4832658084952335e+01 2.6708507138613164e+01 3.4999999877860488e+00 0 0 0 +13785 1 1.3149236939834173e+01 2.7269977291897948e+01 5.2499999697784556e+00 0 0 0 +13839 1 1.5393907679185244e+01 2.8366034824674113e+01 5.2500000010344507e+00 0 0 0 +14423 1 1.4832657995006432e+01 2.6708507151568490e+01 6.9999999951288796e+00 0 0 0 +13789 1 1.6516219337784335e+01 2.6147059619073296e+01 5.2500000047910955e+00 0 0 0 +13843 1 1.8760915567432672e+01 2.7243084435559346e+01 5.2500000422812931e+00 0 0 0 +13845 1 2.0444437103005288e+01 2.6681609073388415e+01 3.5000000393940613e+00 0 0 0 +13847 1 2.2127952971509107e+01 2.6120131575642347e+01 5.2500000698239404e+00 0 0 0 +13848 1 2.1005606627752531e+01 2.8339110892503900e+01 5.2500000395085813e+00 0 0 0 +14485 1 2.0444437023527218e+01 2.6681609106660815e+01 7.0000000325611973e+00 0 0 0 +13852 1 2.4372640547708862e+01 2.7216157678155938e+01 5.2500000526429629e+00 0 0 0 +13856 1 2.7739672709544305e+01 2.6093204252526789e+01 5.2499999828518620e+00 0 0 0 +13906 1 2.6617328461630979e+01 2.8312184052458107e+01 5.2500000160502589e+00 0 0 0 +13908 1 2.8300844602861204e+01 2.7750707348133133e+01 3.4999999734708895e+00 0 0 0 +14548 1 2.8300844591837478e+01 2.7750707322912778e+01 6.9999999729496825e+00 0 0 0 +13854 1 2.9423188985664439e+01 2.5531727640450026e+01 3.4999999768118433e+00 0 0 0 +13910 1 2.9984360663510394e+01 2.7189230692231096e+01 5.2499999659761407e+00 0 0 0 +13915 1 3.2229048625153879e+01 2.8285257251383836e+01 5.2499999868368707e+00 0 0 0 +14494 1 2.9423188953888584e+01 2.5531727636012878e+01 6.9999999572037703e+00 0 0 0 +13913 1 3.3912564745990643e+01 2.7723780915014583e+01 3.5000000223042984e+00 0 0 0 +13914 1 3.3351392929755406e+01 2.6066277831000264e+01 5.2499999845863590e+00 0 0 0 +13916 1 3.5034908871671355e+01 2.5504801348596011e+01 3.5000000361390637e+00 0 0 0 +14553 1 3.3912564629031280e+01 2.7723780921470762e+01 6.9999999770416768e+00 0 0 0 +14556 1 3.5034908758587946e+01 2.5504801372348940e+01 6.9999999928135779e+00 0 0 0 +13919 1 3.5596080799413222e+01 2.7162304639623084e+01 5.2500000210245013e+00 0 0 0 +13972 1 3.7840768537836993e+01 2.8258331482900491e+01 5.2500000525051318e+00 0 0 0 +14557 1 3.7279596608148147e+01 2.6600828377518383e+01 7.0000000329455991e+00 0 0 0 +13923 1 3.8963112512105937e+01 2.6039351925240119e+01 5.2500000440017107e+00 0 0 0 +13976 1 4.1207800329432750e+01 2.7135378720279196e+01 5.2500000142272913e+00 0 0 0 +14561 1 4.0646628400394739e+01 2.5477875642120164e+01 7.0000000533301749e+00 0 0 0 +14614 1 3.9524284444574917e+01 2.7696855179065569e+01 7.0000000592011924e+00 0 0 0 +13979 1 4.4574832106112083e+01 2.6012425815150770e+01 5.2499999768622212e+00 0 0 0 +13980 1 4.3452488141610523e+01 2.8231405428998769e+01 5.2499999858181523e+00 0 0 0 +14618 1 4.2891316217977327e+01 2.6573902195452597e+01 7.0000000072554531e+00 0 0 0 +13768 1 1.2264314119451050e+00 3.1239186422635271e+01 3.5000000265683182e+00 0 0 0 +13770 1 2.5187337306511552e+00 2.8961623324380348e+01 3.4999999707768166e+00 0 0 0 +13769 1 1.0571060898242304e+00 2.9604540810711107e+01 5.2499999016707504e+00 0 0 0 +13773 1 3.1035846226187331e+00 3.0686802748814674e+01 5.2499999262887895e+00 0 0 0 +14408 1 1.2264314483481380e+00 3.1239186370353927e+01 6.9999998982309570e+00 0 0 0 +14410 1 2.5187336758855077e+00 2.8961623258007901e+01 6.9999998319166279e+00 0 0 0 +13777 1 6.4095224085334346e+00 2.9511253410391546e+01 5.2499999163206805e+00 0 0 0 +13827 1 5.3078132821762765e+00 3.1743364450980529e+01 5.2499999301928746e+00 0 0 0 +13775 1 8.0950133565042464e+00 2.8953415290771868e+01 3.4999999625204530e+00 0 0 0 +13829 1 6.9829704408941549e+00 3.1174550302482903e+01 3.4999999647106619e+00 0 0 0 +13831 1 8.6590364147470247e+00 3.0610906999593222e+01 5.2499999520740994e+00 0 0 0 +14415 1 8.0950132966721764e+00 2.8953415209560099e+01 6.9999999073803520e+00 0 0 0 +14469 1 6.9829703789900224e+00 3.1174550205801395e+01 6.9999999051625208e+00 0 0 0 +13834 1 1.2587782355082680e+01 3.1146393494441210e+01 3.4999999916839992e+00 0 0 0 +13835 1 1.2026826278841416e+01 2.9489083052210116e+01 5.2499999778643049e+00 0 0 0 +13836 1 1.0904485103487147e+01 3.1707764027056029e+01 5.2499999503539110e+00 0 0 0 +14474 1 1.2587782265576234e+01 3.1146393462294949e+01 6.9999999528378396e+00 0 0 0 +13837 1 1.3710490912198415e+01 2.8927569835207773e+01 3.5000000048542041e+00 0 0 0 +13840 1 1.4271514147212031e+01 3.0585032002650813e+01 5.2499999821353915e+00 0 0 0 +14477 1 1.3710490831225076e+01 2.8927569839234224e+01 6.9999999784565228e+00 0 0 0 +13896 1 1.8199753195493752e+01 3.1119571561086257e+01 3.4999999880322195e+00 0 0 0 +13842 1 1.9322089352953913e+01 2.8900586097297165e+01 3.4999999887728372e+00 0 0 0 +13844 1 1.7638583161442575e+01 2.9462065208215886e+01 5.2500000221374785e+00 0 0 0 +13894 1 1.6516219003710869e+01 3.1681045479055122e+01 5.2499999998328484e+00 0 0 0 +14482 1 1.9322089261784008e+01 2.8900586163475595e+01 7.0000000491724856e+00 0 0 0 +14536 1 1.8199753151046991e+01 3.1119571606726488e+01 7.0000000378169300e+00 0 0 0 +13898 1 1.9883265988236911e+01 3.0558091458927436e+01 5.2500000492973706e+00 0 0 0 +13903 1 2.2127952388573672e+01 3.1654117384730647e+01 5.2500000518805416e+00 0 0 0 +13901 1 2.3811467736045557e+01 3.1092640341221141e+01 3.5000000451274222e+00 0 0 0 +13902 1 2.3250295652568013e+01 2.9435137272081693e+01 5.2500000487369434e+00 0 0 0 +13907 1 2.5494983991258497e+01 3.0531163661828295e+01 5.2499999974723774e+00 0 0 0 +14541 1 2.3811467735577754e+01 3.1092640395547154e+01 6.9999999890326912e+00 0 0 0 +13905 1 2.7178500319912683e+01 2.9969687002936080e+01 3.4999999910051693e+00 0 0 0 +13911 1 2.8862016451054448e+01 2.9408210432375782e+01 5.2499999612199089e+00 0 0 0 +13960 1 2.7739672021918732e+01 3.1627190117575989e+01 5.2499999796259020e+00 0 0 0 +14545 1 2.7178500330103610e+01 2.9969686982711689e+01 6.9999999809790143e+00 0 0 0 +13964 1 3.1106704321965463e+01 3.0504236905857162e+01 5.2499999728026587e+00 0 0 0 +13966 1 3.2790220529750520e+01 2.9942760498740817e+01 3.5000000118747905e+00 0 0 0 +13968 1 3.4473736493808801e+01 2.9381284087979914e+01 5.2500000101460484e+00 0 0 0 +13969 1 3.3351392306336265e+01 3.1600263649645438e+01 5.2499999810683358e+00 0 0 0 +14606 1 3.2790220452397413e+01 2.9942760479794114e+01 6.9999999727929518e+00 0 0 0 +13973 1 3.6718424303267327e+01 3.0477311025811790e+01 5.2500000561205242e+00 0 0 0 +14611 1 3.8401940301231740e+01 2.9915834686874792e+01 7.0000000409943901e+00 0 0 0 +14610 1 3.6157252479371969e+01 2.8819807775039230e+01 7.0000000291918862e+00 0 0 0 +13977 1 4.0085456291096079e+01 2.9354358329477286e+01 5.2500000583993254e+00 0 0 0 +14022 1 3.8963112212275270e+01 3.1573337810729097e+01 5.2500000326117897e+00 0 0 0 +14615 1 4.1768972192980691e+01 2.8792881881726718e+01 7.0000000463346321e+00 0 0 0 +14664 1 4.0646628220704144e+01 3.1011861545718929e+01 7.0000000352059111e+00 0 0 0 +14026 1 4.2330144184331559e+01 3.0450385058473707e+01 5.2500000145359671e+00 0 0 0 +14029 1 4.4574832103312318e+01 3.1546411857829021e+01 5.2499999895030669e+00 0 0 0 +14668 1 4.4013660057849734e+01 2.9888908672347473e+01 7.0000000255786707e+00 0 0 0 +13823 1 1.7224970044844068e+00 3.2838599636345862e+01 5.2500000110874101e+00 0 0 0 +13826 1 5.8404161553324112e+00 3.3390570183640023e+01 3.4999999385121692e+00 0 0 0 +13828 1 4.1395807471448567e+00 3.3936582626301842e+01 5.2499999827292436e+00 0 0 0 +14466 1 5.8404161782692894e+00 3.3390570136444396e+01 6.9999999204304704e+00 0 0 0 +13832 1 7.5396990296501727e+00 3.2833276213283582e+01 5.2499999164576776e+00 0 0 0 +13888 1 1.1466172045566305e+01 3.3365659566699790e+01 3.4999999898292051e+00 0 0 0 +13886 1 9.7824036412729196e+00 3.3927433578420647e+01 5.2499999377569146e+00 0 0 0 +14528 1 1.1466171946469288e+01 3.3365659528229060e+01 6.9999999380550291e+00 0 0 0 +13890 1 1.3149236789452786e+01 3.2803963166522628e+01 5.2500000039380357e+00 0 0 0 +13895 1 1.5393907458430435e+01 3.3900020657795316e+01 5.2499999910613182e+00 0 0 0 +13893 1 1.7077390912482883e+01 3.3338540249964979e+01 3.4999999928382741e+00 0 0 0 +13899 1 1.8760915165603361e+01 3.2777070285227758e+01 5.2500000101225313e+00 0 0 0 +14533 1 1.7077390828904555e+01 3.3338540267547401e+01 7.0000000207379562e+00 0 0 0 +13952 1 2.1005606113746452e+01 3.3873096720177458e+01 5.2500000433963727e+00 0 0 0 +13955 1 2.4933811549509098e+01 3.4407646543219954e+01 3.5000000022139917e+00 0 0 0 +13954 1 2.2689123682873305e+01 3.3311620445855183e+01 3.5000000296930636e+00 0 0 0 +13956 1 2.4372639934179670e+01 3.2750143519091182e+01 5.2500000221035119e+00 0 0 0 +14594 1 2.2689123675000406e+01 3.3311620447520916e+01 7.0000000284738135e+00 0 0 0 +14595 1 2.4933811574541878e+01 3.4407646555761744e+01 6.9999999993122399e+00 0 0 0 +13958 1 2.6056155874793024e+01 3.2188666764906102e+01 3.5000000085948688e+00 0 0 0 +13961 1 2.6617327830280718e+01 3.3846169920790807e+01 5.2499999846360783e+00 0 0 0 +14598 1 2.6056155901745065e+01 3.2188666770920356e+01 6.9999999793848877e+00 0 0 0 +13963 1 3.1667876124540570e+01 3.2161740016070610e+01 3.5000000038908179e+00 0 0 0 +13965 1 2.9984360022074906e+01 3.2723216595820489e+01 5.2499999688001484e+00 0 0 0 +14012 1 3.0545531927394009e+01 3.4380719724839885e+01 3.4999999767678096e+00 0 0 0 +14014 1 3.2229048019803102e+01 3.3819243153508673e+01 5.2499999837659246e+00 0 0 0 +14603 1 3.1667876054348532e+01 3.2161740016061714e+01 6.9999999630282028e+00 0 0 0 +14652 1 3.0545531898451181e+01 3.4380719713469425e+01 6.9999999773245003e+00 0 0 0 +14018 1 3.5596080294415550e+01 3.2696290496837847e+01 5.2500000320314957e+00 0 0 0 +14023 1 3.7840768162990692e+01 3.3792317367150382e+01 5.2500000324890417e+00 0 0 0 +14660 1 3.7279596220047054e+01 3.2134814222159449e+01 7.0000000211714424e+00 0 0 0 +14657 1 3.6157252024406873e+01 3.4353793656866131e+01 7.0000000111870779e+00 0 0 0 +14027 1 4.1207800199521607e+01 3.2669364662198205e+01 5.2499999878809192e+00 0 0 0 +14661 1 3.9524284179804070e+01 3.3230841062290224e+01 7.0000000257123567e+00 0 0 0 +14701 1 4.1768972087169452e+01 3.4326867840875188e+01 6.9999999765499927e+00 0 0 0 +14063 1 4.3452488116980220e+01 3.3765391470588852e+01 5.2499999677645075e+00 0 0 0 +14665 1 4.2891316164040667e+01 3.2107888208623606e+01 7.0000000087132221e+00 0 0 0 +13824 1 1.0571060636402865e+00 3.5138527401930894e+01 5.2500000569149794e+00 0 0 0 +13878 1 3.1035847689299798e+00 3.6220789032913927e+01 5.2499999786974207e+00 0 0 0 +13877 1 3.5610862636187610e+00 3.7826640463687873e+01 3.4999999630314620e+00 0 0 0 +13880 1 4.7485636159822864e+00 3.5612737267628056e+01 3.4999999496297525e+00 0 0 0 +13882 1 6.4095225970393619e+00 3.5045239488006835e+01 5.2499999126850003e+00 0 0 0 +13883 1 5.3078134818699061e+00 3.7277350432785802e+01 5.2499999157167458e+00 0 0 0 +14517 1 3.5610863476119472e+00 3.7826640417349324e+01 6.9999999857157293e+00 0 0 0 +14520 1 4.7485636784267671e+00 3.5612737254224854e+01 6.9999999606543026e+00 0 0 0 +13887 1 8.6590366867829527e+00 3.6144892882900749e+01 5.2499999077462718e+00 0 0 0 +13938 1 9.2228637830449181e+00 3.7803991889566063e+01 3.4999999640864692e+00 0 0 0 +14578 1 9.2228637555986914e+00 3.7803991872952629e+01 6.9999999044579040e+00 0 0 0 +13885 1 1.0342363427259214e+01 3.5584119288550809e+01 3.4999999927581422e+00 0 0 0 +13891 1 1.2026826249689574e+01 3.5023068878638334e+01 5.2499999689711503e+00 0 0 0 +13940 1 1.0904485315436053e+01 3.7241749795631534e+01 5.2499999450878709e+00 0 0 0 +14525 1 1.0342363368564824e+01 3.5584119260410255e+01 6.9999998830256169e+00 0 0 0 +13943 1 1.4832657881941053e+01 3.7776478859031634e+01 3.5000000136433966e+00 0 0 0 +13946 1 1.5955086579464501e+01 3.5557542322100588e+01 3.4999999912318991e+00 0 0 0 +13944 1 1.4271514070063818e+01 3.6119017846405868e+01 5.2500000075450046e+00 0 0 0 +14583 1 1.4832657803263649e+01 3.7776478868715181e+01 6.9999999984212611e+00 0 0 0 +14586 1 1.5955086495837786e+01 3.5557542327894936e+01 7.0000000273414269e+00 0 0 0 +13948 1 1.7638582880783421e+01 3.4996051037336258e+01 5.2500000374648073e+00 0 0 0 +13949 1 1.6516218906774050e+01 3.7215031338388918e+01 5.2500000314324717e+00 0 0 0 +13951 1 2.1566778959262884e+01 3.5530599628314022e+01 3.5000000283307893e+00 0 0 0 +14000 1 2.0444436307689003e+01 3.7749580735596204e+01 3.5000000149301185e+00 0 0 0 +13953 1 1.9883265634306944e+01 3.6092077241885818e+01 5.2500000277960579e+00 0 0 0 +14002 1 2.2127952001748405e+01 3.7188103218094561e+01 5.2500000386769594e+00 0 0 0 +14591 1 2.1566778943835359e+01 3.5530599637559916e+01 7.0000000268900928e+00 0 0 0 +14640 1 2.0444436268572730e+01 3.7749580757446672e+01 7.0000000579833550e+00 0 0 0 +13957 1 2.3250295112758117e+01 3.4969123114610952e+01 5.2500000174681576e+00 0 0 0 +14006 1 2.5494983480407868e+01 3.6065149624219934e+01 5.2500000124019115e+00 0 0 0 +14010 1 2.8862015821606022e+01 3.4942196354104460e+01 5.2499999635674159e+00 0 0 0 +14011 1 2.7739671487959750e+01 3.7161176099854245e+01 5.2499999627668119e+00 0 0 0 +14009 1 2.9423187739594976e+01 3.6599699461313620e+01 3.4999999852148989e+00 0 0 0 +14015 1 3.1106703732535149e+01 3.6038222846759865e+01 5.2499999761152267e+00 0 0 0 +14649 1 2.9423187719384646e+01 3.6599699458771546e+01 6.9999999585121984e+00 0 0 0 +14053 1 3.5034907800011865e+01 3.6572773098012966e+01 3.5000000371572577e+00 0 0 0 +14019 1 3.4473735945307716e+01 3.4915269961503363e+01 5.2500000228803652e+00 0 0 0 +14051 1 3.3351391828313005e+01 3.7134249612412191e+01 5.2500000062574994e+00 0 0 0 +14693 1 3.5034907762318412e+01 3.6572773109967535e+01 7.0000000093521271e+00 0 0 0 +14055 1 3.6718423821238730e+01 3.6011296877902431e+01 5.2500000184284623e+00 0 0 0 +14694 1 3.7279595817994050e+01 3.7668800128003710e+01 7.0000000231591191e+00 0 0 0 +14697 1 3.8401939963603695e+01 3.5449820560938356e+01 7.0000000170909704e+00 0 0 0 +14059 1 4.0085456060847413e+01 3.4888344245769851e+01 5.2499999999137561e+00 0 0 0 +14060 1 3.8963111860365032e+01 3.7107323717928402e+01 5.2500000039118140e+00 0 0 0 +14698 1 4.0646627984316027e+01 3.6545847504692581e+01 6.9999999891541966e+00 0 0 0 +14064 1 4.2330144059977279e+01 3.5984371093986475e+01 5.2499999858173112e+00 0 0 0 +14085 1 4.4574832052897534e+01 3.7080398029335541e+01 5.2499999641986550e+00 0 0 0 +14702 1 4.4013660057428417e+01 3.5422894806054146e+01 6.9999999780957021e+00 0 0 0 +14724 1 4.2891315991472965e+01 3.7641874263235778e+01 6.9999999684462582e+00 0 0 0 +13879 1 1.7224969960354926e+00 3.8372585748991092e+01 5.2499999988123331e+00 0 0 0 +13929 1 1.0571059352760193e+00 4.0672513364621800e+01 5.2500000504230417e+00 0 0 0 +13930 1 2.5187337713998907e+00 4.0029595782782494e+01 3.4999999401002051e+00 0 0 0 +14570 1 2.5187338349590593e+00 4.0029595743935538e+01 7.0000000117442784e+00 0 0 0 +13932 1 4.1395808713881408e+00 3.9470568478153538e+01 5.2499999684419585e+00 0 0 0 +13937 1 6.4095228148902033e+00 4.0579225122133387e+01 5.2499999385331275e+00 0 0 0 +13935 1 8.0950137504844815e+00 4.0021386901312020e+01 3.4999999638394135e+00 0 0 0 +13936 1 7.5396993433145019e+00 3.8367261978339627e+01 5.2499999101838792e+00 0 0 0 +14575 1 8.0950137848243280e+00 4.0021386826981683e+01 6.9999998983864566e+00 0 0 0 +13941 1 9.7824039552366528e+00 3.9461419236267261e+01 5.2499999318734201e+00 0 0 0 +13990 1 1.2026826543408522e+01 4.0557054579184943e+01 5.2499999609277577e+00 0 0 0 +13992 1 1.3710490981216275e+01 3.9995541441896684e+01 3.5000000206914690e+00 0 0 0 +13945 1 1.3149236956835683e+01 3.8337948968388112e+01 5.2499999623433853e+00 0 0 0 +13994 1 1.5393907557253096e+01 3.9434006504598550e+01 5.2500000164313230e+00 0 0 0 +14632 1 1.3710490916102833e+01 3.9995541478751271e+01 6.9999999736129981e+00 0 0 0 +13997 1 1.9322088900189769e+01 3.9968557785618380e+01 3.4999999934273087e+00 0 0 0 +13998 1 1.8760915000393318e+01 3.8311056109742680e+01 5.2500000508850055e+00 0 0 0 +13999 1 1.7638582917905246e+01 4.0530036875363479e+01 5.2500000255752903e+00 0 0 0 +14637 1 1.9322088851655831e+01 3.9968557814885074e+01 7.0000000600013150e+00 0 0 0 +14003 1 2.1005605973567530e+01 3.9407082580183960e+01 5.2500000246966021e+00 0 0 0 +14007 1 2.4372639531978191e+01 3.8284129438761902e+01 5.2500000039001042e+00 0 0 0 +14039 1 2.3250294934680266e+01 4.0503109067222105e+01 5.2500000131424560e+00 0 0 0 +14042 1 2.7178499470426910e+01 4.1037659060551583e+01 3.4999999862824294e+00 0 0 0 +14043 1 2.6617327442299686e+01 3.9380155962144279e+01 5.2499999810797018e+00 0 0 0 +14045 1 2.8300843513824230e+01 3.8818679293622857e+01 3.4999999957849273e+00 0 0 0 +14048 1 2.8862015506590545e+01 4.0476182470236019e+01 5.2499999634154424e+00 0 0 0 +14682 1 2.7178499456013682e+01 4.1037659030384816e+01 6.9999999662827097e+00 0 0 0 +14685 1 2.8300843497658093e+01 3.8818679249107056e+01 6.9999999639827042e+00 0 0 0 +14047 1 2.9984359544702869e+01 3.8257202598524863e+01 5.2499999870417238e+00 0 0 0 +14052 1 3.2229047613336185e+01 3.9353229164857375e+01 5.2500000041698094e+00 0 0 0 +14050 1 3.3912563724421446e+01 3.8791752746797712e+01 3.5000000048071533e+00 0 0 0 +14072 1 3.2790219648876807e+01 4.1010732458524913e+01 3.5000000161889200e+00 0 0 0 +14074 1 3.4473735619057230e+01 4.0449255955748811e+01 5.2500000324935003e+00 0 0 0 +14712 1 3.2790219582690355e+01 4.1010732441526677e+01 6.9999999980848377e+00 0 0 0 +14690 1 3.3912563661290797e+01 3.8791752756658454e+01 7.0000000056500760e+00 0 0 0 +14056 1 3.5596079863732918e+01 3.8230276420004074e+01 5.2500000235546453e+00 0 0 0 +14078 1 3.7840767813557186e+01 3.9326303289493126e+01 5.2500000251821861e+00 0 0 0 +14716 1 3.6157251679997273e+01 3.9887779575137337e+01 7.0000000387756325e+00 0 0 0 +14717 1 3.8401939680237199e+01 4.0983806506005351e+01 7.0000000107417195e+00 0 0 0 +14082 1 4.1207799923681307e+01 3.8203350652068821e+01 5.2499999955773982e+00 0 0 0 +14083 1 4.0085455745772080e+01 4.0422330227118486e+01 5.2500000398423792e+00 0 0 0 +14721 1 4.1768971822012738e+01 3.9860853905459003e+01 7.0000000009607923e+00 0 0 0 +14720 1 3.9524283896351349e+01 3.8764827001829048e+01 7.0000000089171595e+00 0 0 0 +14086 1 4.3452487928203894e+01 3.9299377631870797e+01 5.2499999750651369e+00 0 0 0 +14734 1 4.4013659841617532e+01 4.0956880999807701e+01 6.9999999956319749e+00 0 0 0 +13928 1 1.2264314318994078e+00 4.2307158587163791e+01 3.5000000525068788e+00 0 0 0 +13933 1 3.1035849043970400e+00 4.1754774740124503e+01 5.2500000230660930e+00 0 0 0 +13981 1 1.7224971378578464e+00 4.3906571398732567e+01 5.2500000722635205e+00 0 0 0 +14568 1 1.2264314375345708e+00 4.2307158625627217e+01 7.0000000340525395e+00 0 0 0 +13983 1 5.3078136611864650e+00 4.2811335908922985e+01 5.2499999955228525e+00 0 0 0 +13984 1 6.9829708583505870e+00 4.2242521684852008e+01 3.5000000068937220e+00 0 0 0 +13986 1 8.6590369080115348e+00 4.1678878379954909e+01 5.2499999498783581e+00 0 0 0 +13987 1 7.5396995518157768e+00 4.3901247348360080e+01 5.2499999543925915e+00 0 0 0 +14624 1 6.9829709134233466e+00 4.2242521609837354e+01 6.9999999234592556e+00 0 0 0 +13989 1 1.2587782623870792e+01 4.2214364932021738e+01 3.4999999829484203e+00 0 0 0 +13991 1 1.0904485537604566e+01 4.2775735338543427e+01 5.2499999261427082e+00 0 0 0 +14629 1 1.2587782594428342e+01 4.2214364919380422e+01 6.9999999555366665e+00 0 0 0 +13995 1 1.4271514270496588e+01 4.1653003584022493e+01 5.2499999865320675e+00 0 0 0 +14030 1 1.3149237108221461e+01 4.3871934564058712e+01 5.2499999745888912e+00 0 0 0 +14033 1 1.8199753047452720e+01 4.2187543190770484e+01 3.5000000024247422e+00 0 0 0 +14032 1 1.6516219024924091e+01 4.2749017070343591e+01 5.2500000012276811e+00 0 0 0 +14036 1 1.8760915133155653e+01 4.3845041913001950e+01 5.2500000094640837e+00 0 0 0 +14673 1 1.8199753037025623e+01 4.2187543259420778e+01 7.0000000498806028e+00 0 0 0 +14035 1 1.9883265687453576e+01 4.1626063122156580e+01 5.2500000403877189e+00 0 0 0 +14040 1 2.2127952006617960e+01 4.2722089174067733e+01 5.2500000191322203e+00 0 0 0 +14038 1 2.3811467173091717e+01 4.2160612274059382e+01 3.5000000223016676e+00 0 0 0 +14044 1 2.5494983248501867e+01 4.1599135670184722e+01 5.2499999647079854e+00 0 0 0 +14065 1 2.4372639516480348e+01 4.3818115534164647e+01 5.2499999948824909e+00 0 0 0 +14678 1 2.3811467187350502e+01 4.2160612282454451e+01 6.9999999743651165e+00 0 0 0 +14066 1 2.6056155314497524e+01 4.3256638891528503e+01 3.5000000161691838e+00 0 0 0 +14067 1 2.7739671307723796e+01 4.2695162288295130e+01 5.2499999698170052e+00 0 0 0 +14706 1 2.6056155328620072e+01 4.3256638880388635e+01 6.9999999520368661e+00 0 0 0 +14069 1 3.1667875444832696e+01 4.3229712151254184e+01 3.4999999937651038e+00 0 0 0 +14070 1 3.1106703460938199e+01 4.1572208956763269e+01 5.2499999887302327e+00 0 0 0 +14071 1 2.9984359390038680e+01 4.3791188828003015e+01 5.2499999667278585e+00 0 0 0 +14709 1 3.1667875352801605e+01 4.3229712147864255e+01 6.9999999785174811e+00 0 0 0 +14075 1 3.3351391578731793e+01 4.2668235665034587e+01 5.2499999964902884e+00 0 0 0 +14713 1 3.5034907514142667e+01 4.2106759100231251e+01 7.0000000406402112e+00 0 0 0 +14079 1 3.6718423591007948e+01 4.1545282874041114e+01 5.2500000390993096e+00 0 0 0 +14087 1 3.5596079692354969e+01 4.3764262416740891e+01 5.2500000290961273e+00 0 0 0 +14728 1 3.7279595628202422e+01 4.3202786081120863e+01 7.0000000309160946e+00 0 0 0 +14089 1 3.8963111628796042e+01 4.2641309705267332e+01 5.2500000318059081e+00 0 0 0 +14093 1 4.1207799703194247e+01 4.3737336759663158e+01 5.2499999953935950e+00 0 0 0 +14730 1 4.0646627731864804e+01 4.2079833531444223e+01 7.0000000109553886e+00 0 0 0 +14092 1 4.2330143810514606e+01 4.1518357214389418e+01 5.2500000068400468e+00 0 0 0 +14095 1 4.4574831844473387e+01 4.2614384268236869e+01 5.2500000015698207e+00 0 0 0 +14731 1 4.2891315766032996e+01 4.3175860477957656e+01 6.9999999843114526e+00 0 0 0 +14097 1 2.5187345313538292e+00 1.2916905113039709e+00 6.9999999160135120e+00 0 0 0 +14098 1 1.0571061297557596e+00 1.9346079104657157e+00 8.7499999989915160e+00 0 0 0 +14104 1 3.1035855187997292e+00 3.0168698242084195e+00 8.7499999408750284e+00 0 0 0 +14737 1 2.5187344964244334e+00 1.2916905232549876e+00 1.0500000015212750e+01 0 0 0 +14100 1 4.1395817166030584e+00 7.3266351857119105e-01 8.7499999308956209e+00 0 0 0 +14108 1 6.4095237182067004e+00 1.8413208776788166e+00 8.7499999706010367e+00 0 0 0 +14110 1 8.0950148227445240e+00 1.2834830339404759e+00 6.9999999751365465e+00 0 0 0 +14113 1 8.6590379712216166e+00 2.9409750168350124e+00 8.7499999945102918e+00 0 0 0 +14750 1 8.0950147653540778e+00 1.2834830327773945e+00 1.0500000008568689e+01 0 0 0 +14112 1 9.7824051510121137e+00 7.2351582938532621e-01 8.7500000145091210e+00 0 0 0 +14116 1 1.2026827949450830e+01 1.8191519383861838e+00 8.7500000054673848e+00 0 0 0 +14115 1 1.3710492573764192e+01 1.2576391577011015e+00 7.0000000227314061e+00 0 0 0 +14118 1 1.5393909375051029e+01 6.9610446876082355e-01 8.7499999771587120e+00 0 0 0 +14135 1 1.4271515953235228e+01 2.9151015559108835e+00 8.7499999785105658e+00 0 0 0 +14755 1 1.3710492593242236e+01 1.2576391554964141e+00 1.0499999999839259e+01 0 0 0 +14139 1 1.7638584955525452e+01 1.7921353103528421e+00 8.7499999626043898e+00 0 0 0 +14141 1 1.9322090996672483e+01 1.2306563672850446e+00 6.9999999448185752e+00 0 0 0 +14781 1 1.9322090936824015e+01 1.2306564335293566e+00 1.0500000000692401e+01 0 0 0 +14143 1 2.1005608044945483e+01 6.6918128398122700e-01 8.7499999884626689e+00 0 0 0 +14144 1 1.9883267842946516e+01 2.8881618906061175e+00 8.7499999844201497e+00 0 0 0 +14147 1 2.3250297124075860e+01 1.7652078025814169e+00 8.7500000276129697e+00 0 0 0 +14180 1 2.5494985607725411e+01 2.8612342808476838e+00 8.7499999988183212e+00 0 0 0 +14182 1 2.7178501667668581e+01 2.2997575416494564e+00 7.0000000032565577e+00 0 0 0 +14149 1 2.6617329460412208e+01 6.4225454686350048e-01 8.7499999934652948e+00 0 0 0 +14184 1 2.8862017564942224e+01 1.7382809743572252e+00 8.7499999662440029e+00 0 0 0 +14822 1 2.7178501698644094e+01 2.2997575316573742e+00 1.0499999963105804e+01 0 0 0 +14148 1 2.8300845302147795e+01 8.0777834489460465e-02 6.9999999778391944e+00 0 0 0 +14788 1 2.8300845335419947e+01 8.0777805008601822e-02 1.0499999967743674e+01 0 0 0 +14188 1 3.2229049125538161e+01 6.1532777480495582e-01 8.7499999849798051e+00 0 0 0 +14189 1 3.1106705506938159e+01 2.8343075008566867e+00 8.7499999620076512e+00 0 0 0 +14187 1 3.2790221385014632e+01 2.2728310394496449e+00 6.9999999849107164e+00 0 0 0 +14192 1 3.4473736970567316e+01 1.7113545881419581e+00 8.7500000249830592e+00 0 0 0 +14827 1 3.2790221274265328e+01 2.2728310541559007e+00 1.0499999993507657e+01 0 0 0 +14190 1 3.3912564885481920e+01 5.3851386097228511e-02 6.9999999899318626e+00 0 0 0 +14830 1 3.3912564797845903e+01 5.3851355813507432e-02 1.0500000001246503e+01 0 0 0 +14240 1 3.8401940396140880e+01 2.2459050698045888e+00 7.0000000471308423e+00 0 0 0 +14194 1 3.7840768359876549e+01 5.8840180961226851e-01 8.7500000641387246e+00 0 0 0 +14238 1 3.6718424708644747e+01 2.8073814166830320e+00 8.7500000754989156e+00 0 0 0 +14242 1 4.0085456063010980e+01 1.6844287053215106e+00 8.7500000271267311e+00 0 0 0 +14244 1 4.1768971697614106e+01 1.1229523753095543e+00 6.9999999883279385e+00 0 0 0 +14193 1 3.9524284005795799e+01 2.6925492502569755e-02 7.0000000211498277e+00 0 0 0 +14245 1 4.4013659612291008e+01 2.2189793990459412e+00 6.9999999459372821e+00 0 0 0 +20481 1 4.5136003436817703e+01 -1.8888590402960381e-07 6.9999999089675615e+00 0 0 0 +14246 1 4.3452487546423171e+01 5.6147610029414574e-01 8.7499999315284622e+00 0 0 0 +14247 1 4.2330143870843045e+01 2.7804556037311992e+00 8.7499999627281380e+00 0 0 0 +14102 1 1.2264317400134044e+00 3.5692532877681700e+00 6.9999999574273959e+00 0 0 0 +14105 1 1.7224976520293087e+00 5.1686664469874142e+00 8.7499999501374042e+00 0 0 0 +14742 1 1.2264317146313262e+00 3.5692533236524655e+00 1.0499999986038366e+01 0 0 0 +14109 1 5.3078143672374889e+00 4.0734316568340052e+00 8.7499999674301083e+00 0 0 0 +14123 1 4.1395815885681184e+00 6.2666496922257240e+00 8.7499999698766349e+00 0 0 0 +14125 1 5.8404172802574204e+00 5.7206375366994831e+00 6.9999999266113315e+00 0 0 0 +14765 1 5.8404171872060857e+00 5.7206375431825203e+00 1.0500000017386895e+01 0 0 0 +14107 1 6.9829718199952575e+00 3.5046178703377699e+00 6.9999999618705715e+00 0 0 0 +14127 1 7.5397003539741254e+00 5.1633440476501979e+00 8.7499999779845474e+00 0 0 0 +14747 1 6.9829717352108958e+00 3.5046178780407335e+00 1.0500000016645876e+01 0 0 0 +14132 1 9.7824050918345371e+00 6.2575021528987715e+00 8.7499999996323119e+00 0 0 0 +14130 1 1.1466173692847761e+01 5.6957286266377452e+00 7.0000000706492767e+00 0 0 0 +14131 1 1.0904486777688531e+01 4.0378327804044494e+00 8.7500000080380822e+00 0 0 0 +14133 1 1.2587784068792610e+01 3.4764626839422710e+00 7.0000000438334515e+00 0 0 0 +14770 1 1.1466173683487195e+01 5.6957286132553779e+00 1.0499999998801599e+01 0 0 0 +14773 1 1.2587784085921729e+01 3.4764626759379875e+00 1.0499999995650329e+01 0 0 0 +14136 1 1.3149238603382589e+01 5.1340326311462547e+00 8.7500000108896465e+00 0 0 0 +14168 1 1.5393909473912304e+01 6.2300907293331287e+00 8.7499999808822064e+00 0 0 0 +14138 1 1.8199755136914469e+01 3.4496418638877429e+00 6.9999999143439506e+00 0 0 0 +14140 1 1.6516221002337108e+01 4.0111155956950943e+00 8.7499999414770997e+00 0 0 0 +14170 1 1.7077393023656498e+01 5.6686105503676822e+00 6.9999999618694666e+00 0 0 0 +14172 1 1.8760917289911099e+01 5.1071407728961828e+00 8.7499999402391584e+00 0 0 0 +14778 1 1.8199755124302307e+01 3.4496419075174551e+00 1.0500000002209248e+01 0 0 0 +14810 1 1.7077392988411237e+01 5.6686106062073547e+00 1.0499999987259004e+01 0 0 0 +14176 1 2.2127954311997975e+01 3.9841880306448276e+00 8.7500000135499114e+00 0 0 0 +14177 1 2.1005608350495308e+01 6.2031674682422988e+00 8.7499999926760186e+00 0 0 0 +14175 1 2.2689125887359957e+01 5.6416911669662477e+00 7.0000000015948922e+00 0 0 0 +14178 1 2.3811469536301665e+01 3.4227109606648711e+00 7.0000000307789794e+00 0 0 0 +14181 1 2.4372641998654849e+01 5.0802142306486742e+00 8.7500000129007827e+00 0 0 0 +14815 1 2.2689125829264995e+01 5.6416912013761191e+00 1.0500000029170277e+01 0 0 0 +14818 1 2.3811469511350026e+01 3.4227109927260417e+00 1.0500000026234433e+01 0 0 0 +14179 1 2.6056157762837174e+01 4.5187373736271033e+00 7.0000000157367390e+00 0 0 0 +14185 1 2.7739673693962022e+01 3.9572607030176394e+00 8.7499999951989249e+00 0 0 0 +14226 1 2.6617330005564835e+01 6.1762405510013529e+00 8.7500000034624925e+00 0 0 0 +14819 1 2.6056157817264975e+01 4.5187373914585862e+00 1.0499999983115249e+01 0 0 0 +14232 1 3.1667877636382848e+01 4.4918106068965047e+00 6.9999999479338921e+00 0 0 0 +14230 1 2.9984361799714698e+01 5.0532871972672915e+00 8.7499999522301959e+00 0 0 0 +14235 1 3.2229049766418626e+01 6.1493137733971217e+00 8.7499999656222993e+00 0 0 0 +14872 1 3.1667877551039801e+01 4.4918106327285523e+00 1.0499999960899398e+01 0 0 0 +14234 1 3.3351393462614048e+01 3.9303342391176455e+00 8.7499999983636503e+00 0 0 0 +14237 1 3.7279596912835324e+01 4.4648846826892008e+00 7.0000000563704425e+00 0 0 0 +14239 1 3.5596081307709042e+01 5.0263610139155386e+00 8.7500000822167188e+00 0 0 0 +14292 1 3.7840768984058649e+01 6.1223878668893539e+00 8.7500000875115411e+00 0 0 0 +14241 1 4.0646628118976139e+01 3.3419320231022542e+00 7.0000000420717754e+00 0 0 0 +14243 1 3.8963112490684978e+01 3.9034082270212487e+00 8.7500000597434600e+00 0 0 0 +14296 1 4.1207800217369545e+01 4.9994351584188577e+00 8.7500000120358532e+00 0 0 0 +12809 1 3.5596079676485331e+01 4.3764262397510116e+01 1.5749999997763318e+01 0 0 0 +14298 1 4.2891315895701013e+01 4.4379587978823718e+00 6.9999999751523596e+00 0 0 0 +14299 1 4.4574831763354332e+01 3.8764825069928190e+00 8.7499999305485954e+00 0 0 0 +14300 1 4.3452487949754087e+01 6.0954620737154004e+00 8.7499999869598142e+00 0 0 0 +14120 1 1.0571062325870157e+00 7.4685940594393756e+00 8.7499999071660781e+00 0 0 0 +14124 1 3.1035853173887098e+00 8.5508560232476931e+00 8.7499999398334438e+00 0 0 0 +14122 1 4.7485644957839206e+00 7.9428045278316137e+00 6.9999999038906813e+00 0 0 0 +14128 1 6.4095235799226344e+00 7.3753071756742221e+00 8.7499999659564356e+00 0 0 0 +14156 1 5.3078141365137474e+00 9.6074180504367224e+00 8.7499999375412045e+00 0 0 0 +14762 1 4.7485644116006869e+00 7.9428045429400278e+00 1.0500000009338553e+01 0 0 0 +14160 1 8.6590377205361300e+00 8.4749613718022871e+00 8.7499999767462260e+00 0 0 0 +14162 1 1.0342364758016403e+01 7.9141882620021464e+00 7.0000000734077394e+00 0 0 0 +14164 1 1.2026827837237034e+01 7.3531382397221732e+00 8.7500000189171185e+00 0 0 0 +14165 1 1.0904486468521467e+01 9.5718190979917832e+00 8.7500000061631908e+00 0 0 0 +14802 1 1.0342364703713873e+01 7.9141882175455258e+00 1.0499999986875190e+01 0 0 0 +14167 1 1.5955088609726950e+01 7.8876125832633548e+00 6.9999999770204600e+00 0 0 0 +14169 1 1.4271515877504189e+01 8.4490878069840409e+00 8.7500000040514561e+00 0 0 0 +14807 1 1.5955088592710384e+01 7.8876125858611390e+00 1.0499999997686857e+01 0 0 0 +14173 1 1.7638585084203385e+01 7.3261215372046244e+00 8.7499999398479194e+00 0 0 0 +14214 1 1.6516220902258194e+01 9.5451017603632362e+00 8.7499999729843800e+00 0 0 0 +14218 1 1.9883267986147636e+01 8.4221480506709554e+00 8.7499999731359850e+00 0 0 0 +14220 1 2.1566781380192555e+01 7.8606704348764458e+00 7.0000000090503489e+00 0 0 0 +14223 1 2.2127954521260378e+01 9.5181741232077393e+00 8.7500000154573279e+00 0 0 0 +14860 1 2.1566781346649325e+01 7.8606704816989836e+00 1.0500000018706018e+01 0 0 0 +14224 1 2.4933813867352949e+01 6.7377172406540335e+00 7.0000000318306563e+00 0 0 0 +14222 1 2.3250297542429546e+01 7.2991939264322614e+00 8.7500000315137747e+00 0 0 0 +14227 1 2.5494985981441634e+01 8.3952203246958419e+00 8.7500000499725008e+00 0 0 0 +14864 1 2.4933813893690186e+01 6.7377172862288761e+00 1.0500000004175915e+01 0 0 0 +14231 1 2.8862018087727996e+01 7.2722669706100076e+00 8.7499999463417417e+00 0 0 0 +14280 1 2.7739674094730191e+01 9.4912467097460524e+00 8.7499999861895521e+00 0 0 0 +14229 1 3.0545533969335747e+01 6.7107903243649893e+00 6.9999999285558827e+00 0 0 0 +14282 1 2.9423190173609552e+01 8.9297700270644924e+00 6.9999999413654779e+00 0 0 0 +14284 1 3.1106705968781888e+01 8.3682934313112067e+00 8.7499999440464951e+00 0 0 0 +14869 1 3.0545533924466348e+01 6.7107903304044667e+00 1.0499999947955748e+01 0 0 0 +14922 1 2.9423190170814127e+01 8.9297700627053533e+00 1.0499999959432222e+01 0 0 0 +14287 1 3.5034909590374220e+01 8.9028436679305614e+00 7.0000000192443990e+00 0 0 0 +14288 1 3.4473737536164101e+01 7.2453405358635221e+00 8.7500000246162202e+00 0 0 0 +14289 1 3.3351393884096488e+01 9.4643202278896457e+00 8.7500000006583711e+00 0 0 0 +14927 1 3.5034909454026071e+01 8.9028437089316057e+00 1.0500000012981452e+01 0 0 0 +14290 1 3.6157253335088619e+01 6.6838641599850144e+00 7.0000000319030233e+00 0 0 0 +14293 1 3.6718425214861952e+01 8.3413674183934408e+00 8.7500000450804478e+00 0 0 0 +14295 1 4.1768972175326297e+01 6.6569383966710820e+00 7.0000000365495820e+00 0 0 0 +14349 1 4.0646628557016534e+01 8.8759180081109292e+00 7.0000000533750004e+00 0 0 0 +14297 1 4.0085456557419612e+01 7.2184147390117497e+00 8.7500000608025026e+00 0 0 0 +14347 1 3.8963112885237386e+01 9.4373942281686283e+00 8.7500000814537113e+00 0 0 0 +14989 1 4.0646628600089223e+01 8.8759179870177931e+00 1.0500000038346581e+01 0 0 0 +14351 1 4.2330144273524866e+01 8.3144415923484001e+00 8.7500000077851183e+00 0 0 0 +14354 1 4.4574832067439388e+01 9.4104683792005464e+00 8.7499999675405746e+00 0 0 0 +14151 1 2.5187342955652734e+00 1.2359663026208974e+01 6.9999998735741045e+00 0 0 0 +14152 1 1.7224974819540328e+00 1.0702652737907428e+01 8.7499999408326818e+00 0 0 0 +14791 1 2.5187342646321396e+00 1.2359663114207759e+01 1.0499999971058692e+01 0 0 0 +14154 1 3.5610868875781398e+00 1.0156707629840088e+01 6.9999998915036166e+00 0 0 0 +14157 1 4.1395813724662345e+00 1.1800636159680121e+01 8.7499999259567769e+00 0 0 0 +14794 1 3.5610868337438988e+00 1.0156707687244131e+01 1.0500000000858137e+01 0 0 0 +14159 1 9.2228647060377380e+00 1.0134060804243248e+01 7.0000000235351019e+00 0 0 0 +14161 1 7.5396999656697767e+00 1.0697330459109610e+01 8.7499999714149475e+00 0 0 0 +14204 1 8.0950142951650950e+00 1.2351455845515579e+01 6.9999999586794646e+00 0 0 0 +14799 1 9.2228646302378952e+00 1.0134060800598027e+01 1.0499999986933860e+01 0 0 0 +14844 1 8.0950142433090466e+00 1.2351455817587359e+01 1.0499999981702066e+01 0 0 0 +14206 1 9.7824046585925863e+00 1.1791488545318479e+01 8.7499999993679332e+00 0 0 0 +14209 1 1.3710492198275134e+01 1.2325611648535798e+01 7.0000000356038035e+00 0 0 0 +14210 1 1.3149238291525464e+01 1.0668018880250546e+01 8.7499999957820549e+00 0 0 0 +14212 1 1.4832659547452502e+01 1.0106549066458763e+01 7.0000000202005701e+00 0 0 0 +14215 1 1.5393909133575235e+01 1.1764076857451336e+01 8.7499999794152483e+00 0 0 0 +14849 1 1.3710492155425442e+01 1.2325611608568538e+01 1.0499999984882246e+01 0 0 0 +14852 1 1.4832659541466564e+01 1.0106549059792357e+01 1.0499999986772069e+01 0 0 0 +14219 1 1.8760917221177969e+01 1.0641126857129818e+01 8.7499999821270844e+00 0 0 0 +14270 1 1.9322091045716633e+01 1.2298628624363031e+01 6.9999999716474015e+00 0 0 0 +14910 1 1.9322090978795512e+01 1.2298628642410870e+01 1.0500000009364420e+01 0 0 0 +14217 1 2.0444438701145970e+01 1.0079651591041941e+01 6.9999999891542339e+00 0 0 0 +14272 1 2.1005608321562203e+01 1.1737153490175299e+01 8.7500000001866294e+00 0 0 0 +14857 1 2.0444438634650155e+01 1.0079651644386120e+01 1.0500000008694746e+01 0 0 0 +14276 1 2.4372642182570786e+01 1.0614200230966238e+01 8.7500000558319240e+00 0 0 0 +14279 1 2.8300846164891198e+01 1.1148749832067898e+01 6.9999999735841509e+00 0 0 0 +14281 1 2.6617330173023220e+01 1.1710226575298957e+01 8.7500000121188943e+00 0 0 0 +14919 1 2.8300846198824299e+01 1.1148749828533429e+01 1.0499999976770004e+01 0 0 0 +14285 1 2.9984362079114771e+01 1.0587273202107705e+01 8.7499999678539009e+00 0 0 0 +14339 1 3.2229050010132575e+01 1.1683299741554952e+01 8.7499999774536583e+00 0 0 0 +14341 1 3.3912565884145764e+01 1.1121823343050174e+01 6.9999999648387492e+00 0 0 0 +14981 1 3.3912565788186662e+01 1.1121823352123510e+01 1.0499999989593054e+01 0 0 0 +14343 1 3.5596081682616223e+01 1.0560346996003577e+01 8.7500000282474737e+00 0 0 0 +14348 1 3.7840769244828543e+01 1.1656373829631985e+01 8.7500000797824562e+00 0 0 0 +14346 1 3.9524284937330819e+01 1.1094897509823339e+01 7.0000000783057397e+00 0 0 0 +14352 1 4.1207800570894754e+01 1.0533421137398257e+01 8.7500000614864373e+00 0 0 0 +14986 1 3.9524284939366396e+01 1.1094897496976051e+01 1.0500000033206208e+01 0 0 0 +15044 1 4.1768972505525312e+01 1.2190924259085211e+01 1.0500000010049618e+01 0 0 0 +13433 1 3.5034907574076975e+01 4.2106759106964837e+01 1.7499999988856075e+01 0 0 -1 +14406 1 4.3452488231283930e+01 1.1629447941883724e+01 8.7500000098584891e+00 0 0 0 +14990 1 4.2891316270717383e+01 9.9719447078587802e+00 1.0500000012074020e+01 0 0 0 +14196 1 1.2264315784192665e+00 1.4637225978485164e+01 6.9999998659257869e+00 0 0 0 +14153 1 1.0571060801979510e+00 1.3002580486930537e+01 8.7499999514630016e+00 0 0 0 +14198 1 3.1035851288854506e+00 1.4084842656218123e+01 8.7499999226033651e+00 0 0 0 +14836 1 1.2264315395689973e+00 1.4637226121854866e+01 1.0499999960540093e+01 0 0 0 +14202 1 6.4095231942721673e+00 1.2909293693798860e+01 8.7499999445665715e+00 0 0 0 +14203 1 5.3078137594481625e+00 1.5141404623530478e+01 8.7499999412791656e+00 0 0 0 +14201 1 6.9829711502402683e+00 1.4572590792073468e+01 6.9999999294941055e+00 0 0 0 +14207 1 8.6590372905969808e+00 1.4008947847837948e+01 8.7499999634492536e+00 0 0 0 +14841 1 6.9829710891012287e+00 1.4572590780461530e+01 1.0499999975367114e+01 0 0 0 +14211 1 1.2026827407873709e+01 1.2887124526496947e+01 8.7499999911934960e+00 0 0 0 +14260 1 1.0904485999495853e+01 1.5105805473774851e+01 8.7499999843935026e+00 0 0 0 +14262 1 1.2587783420961044e+01 1.4544435221781132e+01 7.0000000135217224e+00 0 0 0 +14902 1 1.2587783370496886e+01 1.4544435204334253e+01 1.0499999968051776e+01 0 0 0 +14264 1 1.4271515390907798e+01 1.3983073941452236e+01 8.7499999817948506e+00 0 0 0 +14267 1 1.8199754794990564e+01 1.4517614014797525e+01 6.9999999386046747e+00 0 0 0 +14268 1 1.7638584749742655e+01 1.2860107559781039e+01 8.7499999869018570e+00 0 0 0 +14269 1 1.6516220456290231e+01 1.5079087787354020e+01 8.7499999708685525e+00 0 0 0 +14907 1 1.8199754782864712e+01 1.4517614038508421e+01 1.0500000005140366e+01 0 0 0 +14273 1 1.9883267715139279e+01 1.3956134000468246e+01 8.7500000011682832e+00 0 0 0 +14327 1 2.2127954223310429e+01 1.5052160002517242e+01 8.7500000141067549e+00 0 0 0 +14277 1 2.3250297445401447e+01 1.2833179882383831e+01 8.7500000343700233e+00 0 0 0 +14329 1 2.3811469659993360e+01 1.4490682935651749e+01 7.0000000479350684e+00 0 0 0 +14331 1 2.5494985880951194e+01 1.3929206268372981e+01 8.7500000241610199e+00 0 0 0 +14969 1 2.3811469604438827e+01 1.4490682979162591e+01 1.0500000030551689e+01 0 0 0 +14330 1 2.6056157842607728e+01 1.5586709298258965e+01 7.0000000279424448e+00 0 0 0 +14333 1 2.7178502153070578e+01 1.3367729517162342e+01 7.0000000188482012e+00 0 0 0 +14335 1 2.8862018180097440e+01 1.2806252954314290e+01 8.7499999913799016e+00 0 0 0 +14336 1 2.7739673899452903e+01 1.5025232664120912e+01 8.7500000284939468e+00 0 0 0 +14970 1 2.6056157826159108e+01 1.5586709341238473e+01 1.0500000019357344e+01 0 0 0 +14973 1 2.7178502152041144e+01 1.3367729540948357e+01 1.0500000008412723e+01 0 0 0 +14340 1 3.1106706002808206e+01 1.3902279440721468e+01 8.7499999575003731e+00 0 0 0 +14392 1 3.1667877878411758e+01 1.5559782530309427e+01 6.9999999665735553e+00 0 0 0 +15032 1 3.1667877821104899e+01 1.5559782550632582e+01 1.0499999978709484e+01 0 0 0 +14338 1 3.2790222004508813e+01 1.3340802992442686e+01 6.9999999633187624e+00 0 0 0 +14344 1 3.4473737728449272e+01 1.2779326549877384e+01 8.7500000039446757e+00 0 0 0 +14394 1 3.3351393852844822e+01 1.4998306180828189e+01 8.7499999720750683e+00 0 0 0 +14978 1 3.2790221935116790e+01 1.3340803002231180e+01 1.0499999985307435e+01 0 0 0 +14400 1 3.8401941129977274e+01 1.3313877047448134e+01 7.0000000706269763e+00 0 0 0 +14397 1 3.7279597317557325e+01 1.5532856647859807e+01 7.0000000530884403e+00 0 0 0 +14398 1 3.6718425316749276e+01 1.3875353421088908e+01 8.7500000691483741e+00 0 0 0 +15037 1 3.7279597247145709e+01 1.5532856659687747e+01 1.0500000045627070e+01 0 0 0 +15040 1 3.8401941075215070e+01 1.3313877053912984e+01 1.0500000056141909e+01 0 0 0 +14402 1 4.0085456789711387e+01 1.2752400702439550e+01 8.7500000581479807e+00 0 0 0 +14403 1 3.8963112970292386e+01 1.4971380217137748e+01 8.7500000708700387e+00 0 0 0 +15041 1 4.0646628716892927e+01 1.4409903964533695e+01 1.0500000043140163e+01 0 0 0 +14407 1 4.2330144450131669e+01 1.3848427459961330e+01 8.7500000320562545e+00 0 0 0 +14459 1 4.4574832221171739e+01 1.4944454133385474e+01 8.7499999857685022e+00 0 0 0 +15045 1 4.4013660232571574e+01 1.3286951072488854e+01 1.0499999976016595e+01 0 0 0 +15098 1 4.2891316397061502e+01 1.5505930581045385e+01 1.0500000029072369e+01 0 0 0 +14199 1 1.7224970867705298e+00 1.6236639342175710e+01 8.7499998888722352e+00 0 0 0 +14249 1 1.0571059279197896e+00 1.8536567231582730e+01 8.7499998221910964e+00 0 0 0 +14251 1 4.7485637658463746e+00 1.9010777742286951e+01 6.9999998883442123e+00 0 0 0 +14254 1 5.8404165190132193e+00 1.6788610601983486e+01 6.9999999019736689e+00 0 0 0 +14252 1 4.1395809453648473e+00 1.7334622743096933e+01 8.7499999436767393e+00 0 0 0 +14257 1 6.4095227085182369e+00 1.8443280266132845e+01 8.7499999496919205e+00 0 0 0 +14891 1 4.7485636528334556e+00 1.9010777746466779e+01 1.0499999985090430e+01 0 0 0 +14894 1 5.8404164376538041e+00 1.6788610591586444e+01 1.0499999988573460e+01 0 0 0 +14256 1 7.5396995370702218e+00 1.6231317011976863e+01 8.7499999505881583e+00 0 0 0 +14259 1 1.1466172817800343e+01 1.6763701278579923e+01 7.0000000207493560e+00 0 0 0 +14313 1 1.0342363737211254e+01 1.8982161029080991e+01 7.0000000127201769e+00 0 0 0 +14261 1 9.7824041596980944e+00 1.7325474970588708e+01 8.7499999648201392e+00 0 0 0 +14315 1 1.2026826837220963e+01 1.8421110787313935e+01 8.7499999963922122e+00 0 0 0 +14953 1 1.0342363666039395e+01 1.8982160967104644e+01 1.0499999962104610e+01 0 0 0 +14899 1 1.1466172777188616e+01 1.6763701235423923e+01 1.0499999957070145e+01 0 0 0 +14265 1 1.3149237793272439e+01 1.6202005088656136e+01 8.7500000015411157e+00 0 0 0 +14318 1 1.5955087681257830e+01 1.8955584657520816e+01 6.9999999720286166e+00 0 0 0 +14319 1 1.5393908631020297e+01 1.7298062925897280e+01 8.7499999997230198e+00 0 0 0 +14958 1 1.5955087629805984e+01 1.8955584664630173e+01 1.0499999985724040e+01 0 0 0 +14321 1 1.7077392357137448e+01 1.6736582640876602e+01 6.9999999682702905e+00 0 0 0 +14323 1 1.8760916794865508e+01 1.6175112789456279e+01 8.7499999767923136e+00 0 0 0 +14324 1 1.7638584273183202e+01 1.8394093500228422e+01 8.7499999663945776e+00 0 0 0 +14961 1 1.7077392310401581e+01 1.6736582677548483e+01 1.0499999990961342e+01 0 0 0 +14328 1 2.1005607870929289e+01 1.7271139345931072e+01 8.7499999881269197e+00 0 0 0 +14380 1 2.1566780716100087e+01 1.8928642220001922e+01 6.9999999879195931e+00 0 0 0 +15020 1 2.1566780685941605e+01 1.8928642241980683e+01 1.0499999990136208e+01 0 0 0 +14384 1 2.4933813533937844e+01 1.7805689097739151e+01 7.0000000086574792e+00 0 0 0 +14326 1 2.2689125595008040e+01 1.6709663051296502e+01 6.9999999873888230e+00 0 0 0 +14332 1 2.4372641853335285e+01 1.6148186129977876e+01 8.7500000231678676e+00 0 0 0 +14382 1 2.3250297007380713e+01 1.8367165730551996e+01 8.7500000166596674e+00 0 0 0 +14966 1 2.2689125512641837e+01 1.6709663090690473e+01 1.0500000037328414e+01 0 0 0 +15024 1 2.4933813469970815e+01 1.7805689142996766e+01 1.0500000026953995e+01 0 0 0 +14386 1 2.6617329798354014e+01 1.7244212435808556e+01 8.7500000210000941e+00 0 0 0 +14391 1 2.8862017765286080e+01 1.8340238832251906e+01 8.7499999820886760e+00 0 0 0 +14389 1 3.0545533816723189e+01 1.7778762207418016e+01 6.9999999730680571e+00 0 0 0 +14390 1 2.9984361890753348e+01 1.6121259114800516e+01 8.7499999867283815e+00 0 0 0 +14395 1 3.2229049782831638e+01 1.7217285660035596e+01 8.7499999773638564e+00 0 0 0 +15029 1 3.0545533780535958e+01 1.7778762201619617e+01 1.0500000002475208e+01 0 0 0 +14448 1 3.4473737480122146e+01 1.8313312436968189e+01 8.7500000190859275e+00 0 0 0 +14399 1 3.5596081602542689e+01 1.6094332967443687e+01 8.7500000419866151e+00 0 0 0 +14450 1 3.6157253421111569e+01 1.7751836061646195e+01 7.0000000316070290e+00 0 0 0 +14452 1 3.7840769171993109e+01 1.7190359831619283e+01 8.7500000627019219e+00 0 0 0 +15090 1 3.6157253333953669e+01 1.7751836122328484e+01 1.0500000032478225e+01 0 0 0 +15091 1 3.8401940922769185e+01 1.8847863043909740e+01 1.0500000048489648e+01 0 0 0 +14456 1 4.1207800601655663e+01 1.6067407057363095e+01 8.7500000615080307e+00 0 0 0 +14457 1 4.0085456707709902e+01 1.8286386636007531e+01 8.7500000708462569e+00 0 0 0 +15094 1 3.9524284915782211e+01 1.6628883457703324e+01 1.0500000045461993e+01 0 0 0 +15095 1 4.1768972463882534e+01 1.7724910164952153e+01 1.0500000024118055e+01 0 0 0 +15995 1 3.3351391571188650e+01 4.2668235657928044e+01 1.5750000021967356e+01 0 0 0 +14460 1 4.3452488255584967e+01 1.7163433764840246e+01 8.7500000268268572e+00 0 0 0 +15153 1 4.4013660213146274e+01 1.8820936880213129e+01 1.0500000005732046e+01 0 0 0 +14253 1 3.1035849092578776e+00 1.9618829391558702e+01 8.7499999008952791e+00 0 0 0 +14303 1 1.7224970064665357e+00 2.1770626126884054e+01 8.7499998497211244e+00 0 0 0 +14305 1 3.5610863031410367e+00 2.1224681050826966e+01 6.9999998929653762e+00 0 0 0 +14307 1 5.3078133734790631e+00 2.0675391307982455e+01 8.7499999434461362e+00 0 0 0 +14945 1 3.5610862207218235e+00 2.1224681038598987e+01 1.0499999969647158e+01 0 0 0 +14310 1 9.2228636635508199e+00 2.1202033726167596e+01 6.9999999851324048e+00 0 0 0 +14311 1 8.6590367257851675e+00 1.9542934328904209e+01 8.7499999668799955e+00 0 0 0 +14312 1 7.5396990685821281e+00 2.1765303586752527e+01 8.7499999780035349e+00 0 0 0 +14950 1 9.2228635939728356e+00 2.1202033697556331e+01 1.0499999988496171e+01 0 0 0 +14316 1 1.0904485367658625e+01 2.0639791772582214e+01 8.7499999896187290e+00 0 0 0 +14320 1 1.4271514824841665e+01 1.9517060042604697e+01 8.7500000105656337e+00 0 0 0 +14370 1 1.3149237138216250e+01 2.1735991205788931e+01 8.7499999975200282e+00 0 0 0 +14372 1 1.4832658448607791e+01 2.1174521192033513e+01 7.0000000062021019e+00 0 0 0 +15012 1 1.4832658398667052e+01 2.1174521185000941e+01 1.0499999977624405e+01 0 0 0 +14374 1 1.6516219849856263e+01 2.0613073723414296e+01 8.7500000031904168e+00 0 0 0 +14379 1 1.8760916149613706e+01 2.1709098600080662e+01 8.7499999938492561e+00 0 0 0 +14377 1 2.0444437736210144e+01 2.1147623291680642e+01 6.9999999817618832e+00 0 0 0 +14378 1 1.9883267190830104e+01 1.9490119824075990e+01 8.7499999597509124e+00 0 0 0 +14383 1 2.2127953663866300e+01 2.0586145810824711e+01 8.7499999901251009e+00 0 0 0 +15017 1 2.0444437681254026e+01 2.1147623337743315e+01 1.0499999981637863e+01 0 0 0 +14387 1 2.5494985370439142e+01 1.9463192131957648e+01 8.7500000288447239e+00 0 0 0 +14436 1 2.4372641249400701e+01 2.1682171936842362e+01 8.7500000074128668e+00 0 0 0 +14440 1 2.7739673393405418e+01 2.0559218489202735e+01 8.7500000062354335e+00 0 0 0 +14442 1 2.9423189648283611e+01 1.9997741839848214e+01 6.9999999750790014e+00 0 0 0 +14444 1 3.1106705591139754e+01 1.9436265266712507e+01 8.7499999702749882e+00 0 0 0 +14445 1 2.9984361314879443e+01 2.1655244936859773e+01 8.7499999986156638e+00 0 0 0 +15082 1 2.9423189608980859e+01 1.9997741873018562e+01 1.0500000006683640e+01 0 0 0 +14447 1 3.5034909329013502e+01 1.9970815545674807e+01 7.0000000186378459e+00 0 0 0 +14449 1 3.3351393464131306e+01 2.0532292041445061e+01 8.7499999979992378e+00 0 0 0 +15087 1 3.5034909217936743e+01 1.9970815578499661e+01 1.0500000010084413e+01 0 0 0 +14453 1 3.6718425112403359e+01 1.9409339337078293e+01 8.7500000217600800e+00 0 0 0 +14503 1 3.5596081256644496e+01 2.1628318838505738e+01 8.7499999891038218e+00 0 0 0 +15145 1 3.7279597022641560e+01 2.1066842594389737e+01 1.0500000027957199e+01 0 0 0 +14507 1 3.8963112786703348e+01 2.0505366120252202e+01 8.7500000722965030e+00 0 0 0 +14512 1 4.1207800505471681e+01 2.1601392902205852e+01 8.7500000665744402e+00 0 0 0 +15149 1 4.0646628593513128e+01 1.9943889847052407e+01 1.0500000052322520e+01 0 0 0 +14511 1 4.2330144399711017e+01 1.9382413331643317e+01 8.7500000338448913e+00 0 0 0 +14514 1 4.4574832149459553e+01 2.0478439940145748e+01 8.7500000035454519e+00 0 0 0 +15150 1 4.2891316282778206e+01 2.1039916413012207e+01 1.0500000037072372e+01 0 0 0 +14302 1 2.5187338979009768e+00 2.3427636508810249e+01 6.9999998770382277e+00 0 0 0 +14304 1 1.0571059686902022e+00 2.4070554033283489e+01 8.7499998601881828e+00 0 0 0 +14358 1 3.1035847368811238e+00 2.5152816182139336e+01 8.7499999077528976e+00 0 0 0 +14942 1 2.5187337961793048e+00 2.3427636560400863e+01 1.0499999943554545e+01 0 0 0 +14308 1 4.1395807508213140e+00 2.2868609540618458e+01 8.7499999028752935e+00 0 0 0 +14362 1 6.4095224601720302e+00 2.3977266952670121e+01 8.7499999654102325e+00 0 0 0 +14364 1 8.0950133941463172e+00 2.3419428914172290e+01 6.9999999471591785e+00 0 0 0 +14367 1 8.6590364278629117e+00 2.5076920782021773e+01 8.7499999728990243e+00 0 0 0 +15004 1 8.0950133446607531e+00 2.3419428870902752e+01 1.0500000009052732e+01 0 0 0 +14366 1 9.7824036269772527e+00 2.2859461353373760e+01 8.7499999918646001e+00 0 0 0 +14371 1 1.2026826298166908e+01 2.3955096969751075e+01 8.7499999856592954e+00 0 0 0 +14369 1 1.3710491064098473e+01 2.3393583854769382e+01 7.0000000121452688e+00 0 0 0 +14375 1 1.5393907948746600e+01 2.2832048872409839e+01 8.7499999913935209e+00 0 0 0 +14424 1 1.4271514241411507e+01 2.5051046045910148e+01 8.7499999873553733e+00 0 0 0 +15009 1 1.3710490974688801e+01 2.3393583818810729e+01 1.0499999993692271e+01 0 0 0 +14428 1 1.7638583516634839e+01 2.3928079319792307e+01 8.7500000120517871e+00 0 0 0 +14430 1 1.9322089866311142e+01 2.3366600316649773e+01 7.0000000041184638e+00 0 0 0 +15070 1 1.9322089795758348e+01 2.3366600302441643e+01 1.0499999971404172e+01 0 0 0 +14432 1 2.1005607213034327e+01 2.2805125129862137e+01 8.7499999964123063e+00 0 0 0 +14433 1 1.9883266443982318e+01 2.5024105624632650e+01 8.7500000229552644e+00 0 0 0 +14437 1 2.3250296281305225e+01 2.3901151494965479e+01 8.7500000000969180e+00 0 0 0 +14491 1 2.5494984662442008e+01 2.4997177886434866e+01 8.7500000097382458e+00 0 0 0 +14439 1 2.8300845299692419e+01 2.2216721554307046e+01 6.9999999782924265e+00 0 0 0 +14493 1 2.7178501022798244e+01 2.4435701177917228e+01 6.9999999907267298e+00 0 0 0 +14441 1 2.6617329161093810e+01 2.2778198263870507e+01 8.7500000042400341e+00 0 0 0 +14495 1 2.8862017121038740e+01 2.3874224625707253e+01 8.7500000035850398e+00 0 0 0 +15079 1 2.8300845272467324e+01 2.2216721547021923e+01 1.0500000014811848e+01 0 0 0 +15133 1 2.7178500991876234e+01 2.4435701180851524e+01 1.0500000007257496e+01 0 0 0 +14499 1 3.2229049223365735e+01 2.2751271471232990e+01 8.7499999888982245e+00 0 0 0 +14500 1 3.1106704929566039e+01 2.4970251069730711e+01 8.7499999776827373e+00 0 0 0 +14501 1 3.3912565277980178e+01 2.2189795109507326e+01 6.9999999740166050e+00 0 0 0 +15141 1 3.3912565206064968e+01 2.2189795143854298e+01 1.0499999999917957e+01 0 0 0 +14498 1 3.2790221068093153e+01 2.4408774663008405e+01 6.9999999667400141e+00 0 0 0 +14504 1 3.4473736972360470e+01 2.3847298289553088e+01 8.7499999785017479e+00 0 0 0 +15138 1 3.2790221016361166e+01 2.4408774690079756e+01 1.0499999989508446e+01 0 0 0 +14508 1 3.7840768863490567e+01 2.2724345686847343e+01 8.7500000383578627e+00 0 0 0 +14558 1 3.6718424653218982e+01 2.4943325201258713e+01 8.7500000155023088e+00 0 0 0 +15200 1 3.8401940575449096e+01 2.4381848899827347e+01 1.0500000014880623e+01 0 0 0 +15142 1 3.6157252918937715e+01 2.3285821982439384e+01 1.0500000004165678e+01 0 0 0 +15146 1 3.9524284702927467e+01 2.2162869373535248e+01 1.0500000040988093e+01 0 0 0 +14562 1 4.0085456498705220e+01 2.3820372499300085e+01 8.7500000330026069e+00 0 0 0 +15204 1 4.1768972353917256e+01 2.3258895989549821e+01 1.0500000044823791e+01 0 0 0 +13429 1 3.1667875412336212e+01 4.3229712139245834e+01 2.6841984634984328e-08 0 0 0 +14566 1 4.3452488204226292e+01 2.2697419570136105e+01 8.7500000442450681e+00 0 0 0 +14567 1 4.2330144291553644e+01 2.4916399159740696e+01 8.7500000311383808e+00 0 0 0 +15205 1 4.4013660153029861e+01 2.4354922698224062e+01 1.0500000031651407e+01 0 0 0 +14356 1 1.2264314189291805e+00 2.5705199623879569e+01 6.9999998261620684e+00 0 0 0 +14359 1 1.7224968291111946e+00 2.7304612931910555e+01 8.7499998741272371e+00 0 0 0 +14996 1 1.2264314245554797e+00 2.5705199672814988e+01 1.0499999899852167e+01 0 0 0 +14414 1 5.8404160376250562e+00 2.7856583875459354e+01 6.9999999097963004e+00 0 0 0 +14363 1 5.3078132460063179e+00 2.6209377985217273e+01 8.7499999572314362e+00 0 0 0 +14412 1 4.1395806000476485e+00 2.8402596154944352e+01 8.7499999674124034e+00 0 0 0 +15054 1 5.8404160105371821e+00 2.7856583825499687e+01 1.0500000012177365e+01 0 0 0 +14361 1 6.9829704318055663e+00 2.5640563968804763e+01 6.9999999311251040e+00 0 0 0 +14416 1 7.5396989423380978e+00 2.7299290022376226e+01 8.7499999476442394e+00 0 0 0 +15001 1 6.9829704058472934e+00 2.5640563939198280e+01 1.0500000010371586e+01 0 0 0 +14419 1 1.1466172010784710e+01 2.7831673639624547e+01 6.9999999675495106e+00 0 0 0 +14422 1 1.2587782402545976e+01 2.5612407515760609e+01 6.9999999691738211e+00 0 0 0 +14421 1 9.7824035156578528e+00 2.8393447564419294e+01 8.7499999369219275e+00 0 0 0 +14420 1 1.0904485080452313e+01 2.6173778013203034e+01 8.7499999710797880e+00 0 0 0 +15059 1 1.1466171964506485e+01 2.7831673630205422e+01 1.0499999975142506e+01 0 0 0 +15062 1 1.2587782305608545e+01 2.5612407534015407e+01 1.0499999989812347e+01 0 0 0 +14425 1 1.3149236827370984e+01 2.7269977272950001e+01 8.7499999959791861e+00 0 0 0 +14479 1 1.5393907572374992e+01 2.8366034837021857e+01 8.7500000166748038e+00 0 0 0 +14427 1 1.8199753526548996e+01 2.5585585726174919e+01 7.0000000043461093e+00 0 0 0 +14429 1 1.6516219221590863e+01 2.6147059620445930e+01 8.7500000050628408e+00 0 0 0 +14481 1 1.7077391165378678e+01 2.7804554426375969e+01 7.0000000199381676e+00 0 0 0 +14483 1 1.8760915498260267e+01 2.7243084466535400e+01 8.7500000269077134e+00 0 0 0 +15067 1 1.8199753498346755e+01 2.5585585729445828e+01 1.0500000003147912e+01 0 0 0 +15121 1 1.7077391091409865e+01 2.7804554454290869e+01 1.0500000013477644e+01 0 0 0 +14487 1 2.2127952919059165e+01 2.6120131601508717e+01 8.7500000184689419e+00 0 0 0 +14488 1 2.1005606531606116e+01 2.8339110952642976e+01 8.7500000350115563e+00 0 0 0 +14486 1 2.2689124214743568e+01 2.7777634639098860e+01 7.0000000269359557e+00 0 0 0 +14489 1 2.3811468376190142e+01 2.5558654556518569e+01 7.0000000389303265e+00 0 0 0 +14492 1 2.4372640503977991e+01 2.7216157699007667e+01 8.7500000034402809e+00 0 0 0 +15126 1 2.2689124138667868e+01 2.7777634645993157e+01 1.0499999992174740e+01 0 0 0 +15129 1 2.3811468311369410e+01 2.5558654563360346e+01 1.0499999974796326e+01 0 0 0 +14490 1 2.6056156542702819e+01 2.6654680897773648e+01 7.0000000087194234e+00 0 0 0 +14496 1 2.7739672656584574e+01 2.6093204249094644e+01 8.7500000244666971e+00 0 0 0 +14546 1 2.6617328438346103e+01 2.8312184005957182e+01 8.7500000084351779e+00 0 0 0 +15130 1 2.6056156498214968e+01 2.6654680910265022e+01 1.0499999997801336e+01 0 0 0 +14550 1 2.9984360627330563e+01 2.7189230723713838e+01 8.7499999952715140e+00 0 0 0 +14552 1 3.1667876702591574e+01 2.6627754175022218e+01 6.9999999653608791e+00 0 0 0 +14555 1 3.2229048531405546e+01 2.8285257272669138e+01 8.7499999712570684e+00 0 0 0 +15192 1 3.1667876655103562e+01 2.6627754158546953e+01 1.0500000001681668e+01 0 0 0 +14554 1 3.3351392807712223e+01 2.6066277837242627e+01 8.7499999645474364e+00 0 0 0 +15193 1 3.3912564572046392e+01 2.7723780951308608e+01 1.0499999992271530e+01 0 0 0 +15196 1 3.5034908717905111e+01 2.5504801448488962e+01 1.0499999996905455e+01 0 0 0 +14559 1 3.5596080692182376e+01 2.7162304674933928e+01 8.7499999978580654e+00 0 0 0 +14612 1 3.7840768440649931e+01 2.8258331560415918e+01 8.7500000186470732e+00 0 0 0 +15197 1 3.7279596520547770e+01 2.6600828432378183e+01 1.0499999993003675e+01 0 0 0 +14563 1 3.8963112450879109e+01 2.6039351973491502e+01 8.7500000304390166e+00 0 0 0 +14616 1 4.1207800300451517e+01 2.7135378764037554e+01 8.7500000414233288e+00 0 0 0 +15201 1 4.0646628368198400e+01 2.5477875733251206e+01 1.0500000025870207e+01 0 0 0 +15254 1 3.9524284365821295e+01 2.7696855204338274e+01 1.0500000028265559e+01 0 0 0 +14619 1 4.4574832133045454e+01 2.6012425811997268e+01 8.7500000004673382e+00 0 0 0 +14620 1 4.3452488116277564e+01 2.8231405493495721e+01 8.7500000356027936e+00 0 0 0 +15258 1 4.2891316202916954e+01 2.6573902303558249e+01 1.0500000041964530e+01 0 0 0 +14409 1 1.0571059215841214e+00 2.9604540833422128e+01 8.7499998696130241e+00 0 0 0 +14413 1 3.1035847205436524e+00 3.0686802765798227e+01 8.7499999407550515e+00 0 0 0 +14411 1 4.7485634612384944e+00 3.0078751035136339e+01 6.9999999156687283e+00 0 0 0 +14417 1 6.4095223421482794e+00 2.9511253312356370e+01 8.7499999497550363e+00 0 0 0 +14467 1 5.3078132629093151e+00 3.1743364346507153e+01 8.7499999534691302e+00 0 0 0 +15051 1 4.7485634121162441e+00 3.0078750975043917e+01 1.0499999994734534e+01 0 0 0 +14471 1 8.6590363705793330e+00 3.0610906928167367e+01 8.7499999412090208e+00 0 0 0 +14473 1 1.0342363204640559e+01 3.0050133401597787e+01 6.9999999438451503e+00 0 0 0 +14475 1 1.2026826151425691e+01 2.9489083003177573e+01 8.7499999635943944e+00 0 0 0 +14476 1 1.0904484985634582e+01 3.1707763968734628e+01 8.7499999383862637e+00 0 0 0 +15113 1 1.0342363166519748e+01 3.0050133376636630e+01 1.0499999952380364e+01 0 0 0 +14478 1 1.5955086706225549e+01 3.0023556477967791e+01 6.9999999929061945e+00 0 0 0 +14480 1 1.4271514048700050e+01 3.0585031993045650e+01 8.7499999956938073e+00 0 0 0 +15118 1 1.5955086629623313e+01 3.0023556523854570e+01 1.0500000013920431e+01 0 0 0 +14484 1 1.7638583100479114e+01 2.9462065253938828e+01 8.7500000298306730e+00 0 0 0 +14534 1 1.6516218923888584e+01 3.1681045532177752e+01 8.7500000462947991e+00 0 0 0 +14538 1 1.9883265937417676e+01 3.0558091508726335e+01 8.7500000207024886e+00 0 0 0 +14540 1 2.1566779359777502e+01 2.9996613844296945e+01 7.0000000410002547e+00 0 0 0 +14543 1 2.2127952353979282e+01 3.1654117421871767e+01 8.7500000137221541e+00 0 0 0 +15180 1 2.1566779358846052e+01 2.9996613849474858e+01 1.0499999999363547e+01 0 0 0 +14544 1 2.4933812143345509e+01 2.8873660671961105e+01 7.0000000007635306e+00 0 0 0 +14542 1 2.3250295616496853e+01 2.9435137304109443e+01 8.7500000287932060e+00 0 0 0 +14547 1 2.5494983976820876e+01 3.0531163693638728e+01 8.7500000160145568e+00 0 0 0 +15184 1 2.4933812083164504e+01 2.8873660694014170e+01 1.0499999990890354e+01 0 0 0 +14551 1 2.8862016402729715e+01 2.9408210394157422e+01 8.7499999819949981e+00 0 0 0 +14600 1 2.7739672002809328e+01 3.1627190096643680e+01 8.7499999815857947e+00 0 0 0 +14549 1 3.0545532506151126e+01 2.8846733791991156e+01 6.9999999707248035e+00 0 0 0 +14602 1 2.9423188274551588e+01 3.1065713465783183e+01 6.9999999623004312e+00 0 0 0 +14604 1 3.1106704247611045e+01 3.0504236859666182e+01 8.7499999935169228e+00 0 0 0 +15189 1 3.0545532455732943e+01 2.8846733780182685e+01 1.0500000008459494e+01 0 0 0 +15242 1 2.9423188213902272e+01 3.1065713447756313e+01 1.0500000018888441e+01 0 0 0 +14607 1 3.5034908247622340e+01 3.1038787217974505e+01 7.0000000224285222e+00 0 0 0 +14608 1 3.4473736387556720e+01 2.9381284104483598e+01 8.7499999788246914e+00 0 0 0 +14609 1 3.3351392244033860e+01 3.1600263684963949e+01 8.7500000015261730e+00 0 0 0 +15247 1 3.5034908139129428e+01 3.1038787247044294e+01 1.0499999984734449e+01 0 0 0 +15246 1 3.2790220386315788e+01 2.9942760492999749e+01 1.0499999999490319e+01 0 0 0 +14613 1 3.6718424208384647e+01 3.0477311026340729e+01 8.7499999889163966e+00 0 0 0 +15250 1 3.6157252428128260e+01 2.8819807819811551e+01 1.0499999970290210e+01 0 0 0 +15251 1 3.8401940203957949e+01 2.9915834773607028e+01 1.0499999996212248e+01 0 0 0 +14617 1 4.0085456236521516e+01 2.9354358387304341e+01 8.7500000216293117e+00 0 0 0 +14662 1 3.8963112166719078e+01 3.1573337849574269e+01 8.7500000126383295e+00 0 0 0 +15255 1 4.1768972160556650e+01 2.8792881907158790e+01 1.0500000019706846e+01 0 0 0 +15304 1 4.0646628166136743e+01 3.1011861597580214e+01 1.0500000001940959e+01 0 0 0 +14666 1 4.2330144156410334e+01 3.0450385103072115e+01 8.7500000166816356e+00 0 0 0 +14669 1 4.4574832099439462e+01 3.1546411873915112e+01 8.7500000003253611e+00 0 0 0 +15308 1 4.4013660100884316e+01 2.9888908715743103e+01 1.0500000020935740e+01 0 0 0 +14462 1 2.5187338764370382e+00 3.4495609797955211e+01 6.9999999280840584e+00 0 0 0 +14463 1 1.7224970519669121e+00 3.2838599556937844e+01 8.7499999360932854e+00 0 0 0 +15102 1 2.5187338687121690e+00 3.4495609747578804e+01 1.0499999963958967e+01 0 0 0 +14465 1 3.5610862221775155e+00 3.2292654364748401e+01 6.9999999611414339e+00 0 0 0 +14468 1 4.1395808236434704e+00 3.3936582563381471e+01 8.7499999592237483e+00 0 0 0 +15105 1 3.5610862001122938e+00 3.2292654282799397e+01 1.0499999988562031e+01 0 0 0 +14470 1 9.2228634162616601e+00 3.2270006087317448e+01 6.9999999317483681e+00 0 0 0 +14524 1 8.0950134438317889e+00 3.4487401214232655e+01 6.9999999036211946e+00 0 0 0 +14472 1 7.5396990080327022e+00 3.2833276144510251e+01 8.7499999493150771e+00 0 0 0 +15110 1 9.2228634042618651e+00 3.2270006053399506e+01 1.0499999956596001e+01 0 0 0 +15164 1 8.0950134483763296e+00 3.4487401174196322e+01 1.0499999977382048e+01 0 0 0 +14526 1 9.7824035574190269e+00 3.3927433489866750e+01 8.7499999350437658e+00 0 0 0 +14529 1 1.3710490687581823e+01 3.4461555676601598e+01 6.9999999824740193e+00 0 0 0 +14530 1 1.3149236667691603e+01 3.2803963151394690e+01 8.7499999623592828e+00 0 0 0 +14532 1 1.4832657763032632e+01 3.2242493032884191e+01 6.9999999929485082e+00 0 0 0 +14535 1 1.5393907346461829e+01 3.3900020689312711e+01 8.7500000029457716e+00 0 0 0 +15169 1 1.3710490618611232e+01 3.4461555680218495e+01 1.0499999963187907e+01 0 0 0 +15172 1 1.4832657704052790e+01 3.2242493083902737e+01 1.0499999988629222e+01 0 0 0 +14539 1 1.8760915128400939e+01 3.2777070315030187e+01 8.7500000496158261e+00 0 0 0 +14590 1 1.9322088902809110e+01 3.4434571989303443e+01 7.0000000300835952e+00 0 0 0 +15230 1 1.9322088869882712e+01 3.4434572025061968e+01 1.0500000034070341e+01 0 0 0 +14537 1 2.0444436534241248e+01 3.2215594924317394e+01 7.0000000352577008e+00 0 0 0 +14592 1 2.1005606100955951e+01 3.3873096765095013e+01 8.7500000459260772e+00 0 0 0 +15177 1 2.0444436512789132e+01 3.2215595003459491e+01 1.0500000015435875e+01 0 0 0 +14596 1 2.4372639924434662e+01 3.2750143550663047e+01 8.7499999926533363e+00 0 0 0 +14599 1 2.8300843935535536e+01 3.3284693211835226e+01 6.9999999585990320e+00 0 0 0 +14601 1 2.6617327813740751e+01 3.3846169905737732e+01 8.7499999711483767e+00 0 0 0 +15239 1 2.8300843894692353e+01 3.3284693180052599e+01 1.0499999993260790e+01 0 0 0 +14605 1 2.9984359938436338e+01 3.2723216580675889e+01 8.7499999863917779e+00 0 0 0 +14654 1 3.2229047959521630e+01 3.3819243148397852e+01 8.7499999945333506e+00 0 0 0 +15243 1 3.1667876011814712e+01 3.2161739983787811e+01 1.0500000023539114e+01 0 0 0 +15292 1 3.0545531834709362e+01 3.4380719703965468e+01 1.0500000010509229e+01 0 0 0 +14656 1 3.3912564092670287e+01 3.3257766796821400e+01 7.0000000033413015e+00 0 0 0 +15296 1 3.3912564024655438e+01 3.3257766791303773e+01 1.0499999997778625e+01 0 0 0 +14658 1 3.5596080224154228e+01 3.2696290521762926e+01 8.7499999946594205e+00 0 0 0 +14663 1 3.7840768109961715e+01 3.3792317420469821e+01 8.7499999911074138e+00 0 0 0 +15297 1 3.6157251976825634e+01 3.4353793642689226e+01 1.0499999997110750e+01 0 0 0 +15300 1 3.7279596158943534e+01 3.2134814278218030e+01 1.0500000003219569e+01 0 0 0 +14667 1 4.1207800162028569e+01 3.2669364693273991e+01 8.7500000302705558e+00 0 0 0 +15341 1 4.1768972039073148e+01 3.4326867844800617e+01 1.0500000016253153e+01 0 0 0 +15301 1 3.9524284162410915e+01 3.3230841133744825e+01 1.0500000001095474e+01 0 0 0 +14703 1 4.3452488072023883e+01 3.3765391527638307e+01 8.7500000123218094e+00 0 0 0 +15305 1 4.2891316077891297e+01 3.2107888284673145e+01 1.0500000017734861e+01 0 0 0 +14464 1 1.0571058478968229e+00 3.5138527349712739e+01 8.7499999881614752e+00 0 0 0 +14516 1 1.2264314456717027e+00 3.6773172801005948e+01 7.0000000207560351e+00 0 0 0 +14518 1 3.1035849221035012e+00 3.6220789086234547e+01 8.7499999828274220e+00 0 0 0 +15156 1 1.2264314642925638e+00 3.6773172802782767e+01 1.0499999938596197e+01 0 0 0 +14522 1 6.4095226271384202e+00 3.5045239460457637e+01 8.7499999582058852e+00 0 0 0 +14523 1 5.3078135546901999e+00 3.7277350377824547e+01 8.7499999759812503e+00 0 0 0 +14521 1 6.9829706947480004e+00 3.6708536166618146e+01 6.9999999193792828e+00 0 0 0 +14527 1 8.6590366427716710e+00 3.6144892824364391e+01 8.7499999346702495e+00 0 0 0 +15161 1 6.9829707208287006e+00 3.6708536139505632e+01 1.0499999989466955e+01 0 0 0 +14531 1 1.2026826157281862e+01 3.5023068847546156e+01 8.7499999320265616e+00 0 0 0 +14580 1 1.0904485245349493e+01 3.7241749781108844e+01 8.7499999264856978e+00 0 0 0 +14582 1 1.2587782342020173e+01 3.6680379267537447e+01 6.9999999412018727e+00 0 0 0 +15222 1 1.2587782271369409e+01 3.6680379308317470e+01 1.0499999950102726e+01 0 0 0 +14584 1 1.4271513959869088e+01 3.6119017831878537e+01 8.7499999640850419e+00 0 0 0 +14587 1 1.8199752875525082e+01 3.6653557421949010e+01 7.0000000268954583e+00 0 0 0 +14588 1 1.7638582769923254e+01 3.4996051073134986e+01 8.7500000510099802e+00 0 0 0 +14589 1 1.6516218791519741e+01 3.7215031371124205e+01 8.7499999966607103e+00 0 0 0 +15227 1 1.8199752859325400e+01 3.6653557464813993e+01 1.0500000028677004e+01 0 0 0 +14593 1 1.9883265595275887e+01 3.6092077301233054e+01 8.7500000611094126e+00 0 0 0 +14642 1 2.2127952024497080e+01 3.7188103253573253e+01 8.7500000407188914e+00 0 0 0 +14597 1 2.3250295135691733e+01 3.4969123110727040e+01 8.7500000084239140e+00 0 0 0 +14644 1 2.3811467277773314e+01 3.6626626237244245e+01 7.0000000154671849e+00 0 0 0 +14646 1 2.5494983471819467e+01 3.6065149581256335e+01 8.7499999801221477e+00 0 0 0 +15284 1 2.3811467285288508e+01 3.6626626227305294e+01 1.0500000010571597e+01 0 0 0 +14645 1 2.6056155411796105e+01 3.7722652707281767e+01 6.9999999689610304e+00 0 0 0 +14648 1 2.7178499734872336e+01 3.5503672935390988e+01 6.9999999588158781e+00 0 0 0 +14650 1 2.8862015816758127e+01 3.4942196345336562e+01 8.7499999843751866e+00 0 0 0 +14651 1 2.7739671472136781e+01 3.7161176081360253e+01 8.7499999835346749e+00 0 0 0 +15285 1 2.6056155440827549e+01 3.7722652704275170e+01 1.0500000007038105e+01 0 0 0 +15288 1 2.7178499728113543e+01 3.5503672903002304e+01 1.0500000005161281e+01 0 0 0 +14655 1 3.1106703693228262e+01 3.6038222834597228e+01 8.7499999951119225e+00 0 0 0 +14689 1 3.1667875570846711e+01 3.7695726024707689e+01 6.9999999970953226e+00 0 0 0 +15329 1 3.1667875513447925e+01 3.7695725978166827e+01 1.0500000004969374e+01 0 0 0 +14653 1 3.2790219891240852e+01 3.5476746389715402e+01 6.9999999975300780e+00 0 0 0 +14659 1 3.4473735872100221e+01 3.4915269984705425e+01 8.7500000016959323e+00 0 0 0 +14691 1 3.3351391729708240e+01 3.7134249607764346e+01 8.7500000070480404e+00 0 0 0 +15293 1 3.2790219811837822e+01 3.5476746402241474e+01 1.0499999997354317e+01 0 0 0 +15333 1 3.5034907723109612e+01 3.6572773151760060e+01 1.0500000014300216e+01 0 0 0 +14695 1 3.6718423819760474e+01 3.6011296916901294e+01 8.7500000046758206e+00 0 0 0 +15334 1 3.7279595796718610e+01 3.7668800137656781e+01 1.0499999987361592e+01 0 0 0 +15337 1 3.8401939912153878e+01 3.5449820606597399e+01 1.0499999980618112e+01 0 0 0 +14699 1 4.0085456009768741e+01 3.4888344278625652e+01 8.7499999956216143e+00 0 0 0 +14700 1 3.8963111847598086e+01 3.7107323739410901e+01 8.7499999943098885e+00 0 0 0 +15338 1 4.0646627948811179e+01 3.6545847548623712e+01 1.0499999995546560e+01 0 0 0 +14704 1 4.2330144038315026e+01 3.5984371120824051e+01 8.7499999745635382e+00 0 0 0 +14725 1 4.4574832051166432e+01 3.7080398055214829e+01 8.7499999898037846e+00 0 0 0 +15342 1 4.4013660029832714e+01 3.5422894813442731e+01 1.0500000020953671e+01 0 0 0 +15364 1 4.2891315975604563e+01 3.7641874366289841e+01 1.0500000001521130e+01 0 0 0 +14519 1 1.7224971295881453e+00 3.8372585800612342e+01 8.7499999938518620e+00 0 0 0 +14569 1 1.0571059788550894e+00 4.0672513418577196e+01 8.7499999989771418e+00 0 0 0 +14571 1 4.7485638541816879e+00 4.1146722899119446e+01 6.9999999658091951e+00 0 0 0 +14572 1 4.1395809370555705e+00 3.9470568452152456e+01 8.7499999922540557e+00 0 0 0 +14574 1 5.8404164269501813e+00 3.8924555950106409e+01 6.9999999264769448e+00 0 0 0 +14577 1 6.4095228606614727e+00 4.0579225046025691e+01 8.7499999432569648e+00 0 0 0 +15214 1 5.8404164630274069e+00 3.8924555902420487e+01 1.0499999988678262e+01 0 0 0 +15211 1 4.7485638771919136e+00 4.1146722859070181e+01 1.0499999978256055e+01 0 0 0 +14576 1 7.5396993674801900e+00 3.8367261931241046e+01 8.7499999261748211e+00 0 0 0 +14581 1 9.7824039406031122e+00 3.9461419156544409e+01 8.7499999115632754e+00 0 0 0 +14579 1 1.1466172238769115e+01 3.8899645267360981e+01 6.9999999326457383e+00 0 0 0 +14628 1 1.0342363664720816e+01 4.1118104829637367e+01 6.9999999263954775e+00 0 0 0 +14630 1 1.2026826456724192e+01 4.0557054541002245e+01 8.7499999426195085e+00 0 0 0 +15219 1 1.1466172206841886e+01 3.8899645253611382e+01 1.0499999954112027e+01 0 0 0 +15268 1 1.0342363643227380e+01 4.1118104794483919e+01 1.0499999964692838e+01 0 0 0 +14585 1 1.3149236869236253e+01 3.8337948960103894e+01 8.7499999703013494e+00 0 0 0 +14633 1 1.5955086654385905e+01 4.1091528141536791e+01 6.9999999983297823e+00 0 0 0 +14634 1 1.5393907450111520e+01 3.9434006531278136e+01 8.7500000059533392e+00 0 0 0 +15273 1 1.5955086600319246e+01 4.1091528184807068e+01 1.0500000011029217e+01 0 0 0 +14636 1 1.7077390833725893e+01 3.8872526113833814e+01 7.0000000355787186e+00 0 0 0 +14638 1 1.8760914979550076e+01 3.8311056145880073e+01 8.7500000319657403e+00 0 0 0 +14639 1 1.7638582890612398e+01 4.0530036930297996e+01 8.7500000375166440e+00 0 0 0 +15276 1 1.7077390762689383e+01 3.8872526193502004e+01 1.0500000009227097e+01 0 0 0 +14643 1 2.1005605942986453e+01 3.9407082595282617e+01 8.7500000420540882e+00 0 0 0 +14677 1 2.1566778879766833e+01 4.1064585535377041e+01 7.0000000269188796e+00 0 0 0 +15317 1 2.1566778918647373e+01 4.1064585569226047e+01 1.0500000029713355e+01 0 0 0 +14681 1 2.4933811268283023e+01 3.9941632527986805e+01 6.9999999840714011e+00 0 0 0 +14641 1 2.2689123394333485e+01 3.8845606341537355e+01 7.0000000282747283e+00 0 0 0 +14647 1 2.4372639533019843e+01 3.8284129442673333e+01 8.7499999817679246e+00 0 0 0 +14679 1 2.3250294962941727e+01 4.0503109055075072e+01 8.7500000176400707e+00 0 0 0 +15281 1 2.2689123398497610e+01 3.8845606333869547e+01 1.0500000023945709e+01 0 0 0 +15321 1 2.4933811285118761e+01 3.9941632553122844e+01 1.0500000004261793e+01 0 0 0 +14683 1 2.6617327451850500e+01 3.9380155920755648e+01 8.7499999767021635e+00 0 0 0 +14688 1 2.8862015427583021e+01 4.0476182433754303e+01 8.7499999509858419e+00 0 0 0 +14686 1 3.0545531497820438e+01 3.9914705771996559e+01 6.9999999657182119e+00 0 0 0 +14687 1 2.9984359484895304e+01 3.8257202612913566e+01 8.7499999763774969e+00 0 0 0 +14692 1 3.2229047524891975e+01 3.9353229173811144e+01 8.7499999959281585e+00 0 0 0 +15326 1 3.0545531445195326e+01 3.9914705776013108e+01 1.0499999993902032e+01 0 0 0 +14714 1 3.4473735561617239e+01 4.0449255954315099e+01 8.7500000155180828e+00 0 0 0 +15330 1 3.3912563609126138e+01 3.8791752750486459e+01 1.0500000014358545e+01 0 0 0 +15352 1 3.2790219497616704e+01 4.1010732427912501e+01 1.0500000005581635e+01 0 0 0 +14696 1 3.5596079829895530e+01 3.8230276429515143e+01 8.7500000257177639e+00 0 0 0 +14718 1 3.7840767785465658e+01 3.9326303297089325e+01 8.7500000209263522e+00 0 0 0 +15357 1 3.8401939674382810e+01 4.0983806521990836e+01 1.0500000006873343e+01 0 0 0 +15356 1 3.6157251691984669e+01 3.9887779552269372e+01 1.0499999996234191e+01 0 0 0 +14722 1 4.1207799930715225e+01 3.8203350677719662e+01 8.7499999750012396e+00 0 0 0 +14723 1 4.0085455765906168e+01 4.0422330249716758e+01 8.7499999906362920e+00 0 0 0 +15360 1 3.9524283870016241e+01 3.8764826981270623e+01 1.0500000006765275e+01 0 0 0 +15361 1 4.1768971817388376e+01 3.9860853902690494e+01 1.0499999978254944e+01 0 0 0 +14726 1 4.3452487895765167e+01 3.9299377677561786e+01 8.7499999842565703e+00 0 0 0 +15374 1 4.4013659851949448e+01 4.0956881045168565e+01 1.0499999987462788e+01 0 0 0 +14573 1 3.1035849628911514e+00 4.1754774759806793e+01 8.7499999918797151e+00 0 0 0 +14621 1 1.7224971923814616e+00 4.3906571469021351e+01 8.7500000038760177e+00 0 0 0 +14622 1 3.5610864894609415e+00 4.3360625983302242e+01 7.0000000153595288e+00 0 0 0 +14623 1 5.3078137401677319e+00 4.2811335847321267e+01 8.7499999522783956e+00 0 0 0 +15262 1 3.5610865227094055e+00 4.3360625969363490e+01 1.0499999947021474e+01 0 0 0 +14625 1 9.2228639908019510e+00 4.3337977274813312e+01 6.9999999299921267e+00 0 0 0 +14626 1 8.6590369520008981e+00 4.1678878306976721e+01 8.7499999298100413e+00 0 0 0 +14627 1 7.5396996137579766e+00 4.3901247278443194e+01 8.7499999494104603e+00 0 0 0 +15265 1 9.2228639894884328e+00 4.3337977218256732e+01 1.0499999977491530e+01 0 0 0 +14631 1 1.0904485496189794e+01 4.2775735274505550e+01 8.7499999430884738e+00 0 0 0 +14635 1 1.4271514192544899e+01 4.1653003586610431e+01 8.7499999792554046e+00 0 0 0 +14670 1 1.3149237027765954e+01 4.3871934541574078e+01 8.7499999721481352e+00 0 0 0 +14671 1 1.4832657951114776e+01 4.3310464558277197e+01 7.0000000021214870e+00 0 0 0 +15311 1 1.4832657906052805e+01 4.3310464624188278e+01 1.0500000012550904e+01 0 0 0 +14672 1 1.6516218978935971e+01 4.2749017159734912e+01 8.7500000283978867e+00 0 0 0 +14676 1 1.8760915115723961e+01 4.3845041933773985e+01 8.7500000353914764e+00 0 0 0 +14674 1 2.0444436364561696e+01 4.3283566613908853e+01 7.0000000309514956e+00 0 0 0 +14675 1 1.9883265656843108e+01 4.1626063168673923e+01 8.7500000244023504e+00 0 0 0 +14680 1 2.2127952033887336e+01 4.2722089202113047e+01 8.7500000070594748e+00 0 0 0 +15314 1 2.0444436384031853e+01 4.3283566686389157e+01 1.0500000016490484e+01 0 0 0 +14684 1 2.5494983277303195e+01 4.1599135668078986e+01 8.7499999878348849e+00 0 0 0 +14705 1 2.4372639545073206e+01 4.3818115553343659e+01 8.7499999737692828e+00 0 0 0 +15318 1 2.3811467228543769e+01 4.2160612240882806e+01 1.0500000012813837e+01 0 0 0 +14707 1 2.7739671293956047e+01 4.2695162241654835e+01 8.7499999419275021e+00 0 0 0 +14708 1 2.9423187455475702e+01 4.2133685583224050e+01 6.9999999550419947e+00 0 0 0 +14710 1 3.1106703381608487e+01 4.1572208921181030e+01 8.7499999971574010e+00 0 0 0 +14711 1 2.9984359310228658e+01 4.3791188803526389e+01 8.7499999631960304e+00 0 0 0 +15348 1 2.9423187414170496e+01 4.2133685605026251e+01 1.0499999989591045e+01 0 0 0 +15349 1 3.1667875298297822e+01 4.3229712110884250e+01 1.0500000016633608e+01 0 0 0 +14715 1 3.3351391513522309e+01 4.2668235679137169e+01 8.7500000227451729e+00 0 0 0 +15353 1 3.5034907453976352e+01 4.2106759098514601e+01 1.0500000009826604e+01 0 0 0 +14719 1 3.6718423539528516e+01 4.1545282820798278e+01 8.7500000236727686e+00 0 0 0 +14727 1 3.5596079638861873e+01 4.3764262399478575e+01 8.7500000411962962e+00 0 0 0 +15368 1 3.7279595626174547e+01 4.3202786067215321e+01 1.0500000023436010e+01 0 0 0 +14729 1 3.8963111641915660e+01 4.2641309699044122e+01 8.7500000154751305e+00 0 0 0 +14733 1 4.1207799694239156e+01 4.3737336765862111e+01 8.7500000075792315e+00 0 0 0 +15370 1 4.0646627735481232e+01 4.2079833537046071e+01 1.0499999985305571e+01 0 0 0 +14732 1 4.2330143803701823e+01 4.1518357229725211e+01 8.7499999757298728e+00 0 0 0 +14735 1 4.4574831832009913e+01 4.2614384298890926e+01 8.7499999726162390e+00 0 0 0 +15371 1 4.2891315722916247e+01 4.3175860509500687e+01 1.0499999984941986e+01 0 0 0 +14738 1 1.0571062511769007e+00 1.9346079049072551e+00 1.2249999947725552e+01 0 0 0 +14744 1 3.1035854429407088e+00 3.0168697648096723e+00 1.2250000034584465e+01 0 0 0 +15377 1 2.5187345047618539e+00 1.2916904679883181e+00 1.4000000027387696e+01 0 0 0 +14740 1 4.1395816772676000e+00 7.3266349947860976e-01 1.2250000059983631e+01 0 0 0 +14746 1 4.7485646236764598e+00 2.4088182900448083e+00 1.0499999982049605e+01 0 0 0 +14748 1 6.4095237297595480e+00 1.8413208558246086e+00 1.2250000030429364e+01 0 0 0 +14739 1 5.8404172753794263e+00 1.8665130209164355e-01 1.0499999983953041e+01 0 0 0 +14753 1 8.6590379538209561e+00 2.9409750056015742e+00 1.2249999995061350e+01 0 0 0 +15390 1 8.0950148042016163e+00 1.2834830219550251e+00 1.4000000029210268e+01 0 0 0 +14752 1 9.7824051299905221e+00 7.2351583533006969e-01 1.2249999952163884e+01 0 0 0 +14751 1 1.0342364875665277e+01 2.3802018752129208e+00 1.0500000007189682e+01 0 0 0 +14756 1 1.2026827937016542e+01 1.8191519449310682e+00 1.2249999994639927e+01 0 0 0 +14754 1 1.1466173644082797e+01 1.6174229114171557e-01 1.0500000000863775e+01 0 0 0 +14758 1 1.5393909365216215e+01 6.9610451698233378e-01 1.2250000022345024e+01 0 0 0 +14775 1 1.4271515943797406e+01 2.9151016043563827e+00 1.2249999995474662e+01 0 0 0 +14777 1 1.5955088602441663e+01 2.3536263784999742e+00 1.0500000001151234e+01 0 0 0 +15395 1 1.3710492559073074e+01 1.2576392269812522e+00 1.3999999996263087e+01 0 0 0 +14779 1 1.7638584927149779e+01 1.7921353678017664e+00 1.2250000017430764e+01 0 0 0 +15421 1 1.9322090950097142e+01 1.2306564400106956e+00 1.4000000042879895e+01 0 0 0 +14757 1 1.7077392820841265e+01 1.3462435941957268e-01 1.0500000001637170e+01 0 0 0 +14782 1 2.1566781061969806e+01 2.3266843426325763e+00 1.0500000005798617e+01 0 0 0 +14783 1 2.1005608017432692e+01 6.6918127720348852e-01 1.2250000021443812e+01 0 0 0 +14784 1 1.9883267799458952e+01 2.8881619213954695e+00 1.2250000023344647e+01 0 0 0 +14786 1 2.4933813420648580e+01 1.2037311873643399e+00 1.0500000026838846e+01 0 0 0 +14787 1 2.3250297141224820e+01 1.7652078159500582e+00 1.2249999996516724e+01 0 0 0 +14820 1 2.5494985604925095e+01 2.8612342485829885e+00 1.2249999990894796e+01 0 0 0 +14785 1 2.2689125430340329e+01 1.0770505851617233e-01 1.0500000007991458e+01 0 0 0 +14789 1 2.6617329470097609e+01 6.4225450028045816e-01 1.2249999989412073e+01 0 0 0 +14824 1 2.8862017572569425e+01 1.7382809524440803e+00 1.2249999976625874e+01 0 0 0 +15462 1 2.7178501698341389e+01 2.2997575070738372e+00 1.3999999978877403e+01 0 0 0 +15428 1 2.8300845327030906e+01 8.0777764106560235e-02 1.4000000012339347e+01 0 0 0 +14826 1 3.0545533359691802e+01 1.1768043582223113e+00 1.0499999961260206e+01 0 0 0 +14828 1 3.2229049087831015e+01 6.1532778865819482e-01 1.2249999980935584e+01 0 0 0 +14829 1 3.1106705450292200e+01 2.8343074926026208e+00 1.2249999998396918e+01 0 0 0 +14832 1 3.4473736926490766e+01 1.7113545805376242e+00 1.2250000027684228e+01 0 0 0 +15467 1 3.2790221298645733e+01 2.2728310399502081e+00 1.4000000001025295e+01 0 0 0 +15470 1 3.3912564833639820e+01 5.3851391736935782e-02 1.3999999994457875e+01 0 0 0 +14831 1 3.6157252655956981e+01 1.1498781528959539e+00 1.0500000027736327e+01 0 0 0 +14834 1 3.7840768418002803e+01 5.8840179110226665e-01 1.2249999984822633e+01 0 0 0 +14878 1 3.6718424699757129e+01 2.8073814251252238e+00 1.2250000013190020e+01 0 0 0 +14880 1 3.8401940438910344e+01 2.2459050083718699e+00 1.0500000045103855e+01 0 0 0 +14884 1 4.1768971807194923e+01 1.1229522889336863e+00 1.0499999971439737e+01 0 0 0 +14882 1 4.0085456134423133e+01 1.6844286713075731e+00 1.2249999976499300e+01 0 0 0 +14833 1 3.9524284087784615e+01 2.6925461720657597e-02 1.0500000005599246e+01 0 0 0 +21121 1 4.5136003447599300e+01 -2.2256157766759437e-07 1.0499999942241805e+01 0 0 0 +14885 1 4.4013659668553487e+01 2.2189793292135973e+00 1.0499999926518365e+01 0 0 0 +14886 1 4.3452487597095121e+01 5.6147606835559483e-01 1.2249999983432543e+01 0 0 0 +14887 1 4.2330143940821898e+01 2.7804555661394352e+00 1.2249999976280295e+01 0 0 0 +14745 1 1.7224975918423120e+00 5.1686664321711824e+00 1.2250000021227931e+01 0 0 0 +15382 1 1.2264317268077543e+00 3.5692532630379628e+00 1.4000000002630603e+01 0 0 0 +14743 1 3.5610870680899658e+00 4.6227213483614014e+00 1.0499999986678178e+01 0 0 0 +14749 1 5.3078143856365978e+00 4.0734316836277840e+00 1.2250000027665651e+01 0 0 0 +14763 1 4.1395816071590525e+00 6.2666496975503767e+00 1.2250000015253500e+01 0 0 0 +15405 1 5.8404172778645673e+00 5.7206375207936748e+00 1.4000000063237968e+01 0 0 0 +14767 1 7.5397003340579731e+00 5.1633440145045979e+00 1.2249999997310464e+01 0 0 0 +14769 1 9.2228649740940583e+00 4.6000743990995900e+00 1.0499999996354196e+01 0 0 0 +15387 1 6.9829718064726061e+00 3.5046178456053281e+00 1.4000000054726518e+01 0 0 0 +14772 1 9.7824050784717933e+00 6.2575021714763679e+00 1.2249999985724752e+01 0 0 0 +14771 1 1.0904486761052677e+01 4.0378327756220092e+00 1.2249999975038213e+01 0 0 0 +15410 1 1.1466173666642486e+01 5.6957286681067059e+00 1.3999999968831183e+01 0 0 0 +15413 1 1.2587784056550856e+01 3.4764627140286031e+00 1.3999999987010449e+01 0 0 0 +14774 1 1.4832659747466579e+01 4.5725628681081174e+00 1.0500000003959554e+01 0 0 0 +14776 1 1.3149238600904525e+01 5.1340326823767892e+00 1.2249999964772352e+01 0 0 0 +14808 1 1.5393909456165790e+01 6.2300907590952397e+00 1.2249999987521749e+01 0 0 0 +14780 1 1.6516220981771387e+01 4.0111156245376263e+00 1.2250000047201084e+01 0 0 0 +14812 1 1.8760917264637204e+01 5.1071408181028257e+00 1.2250000028588929e+01 0 0 0 +15418 1 1.8199755104674381e+01 3.4496419459487102e+00 1.4000000075702010e+01 0 0 0 +15450 1 1.7077392996390909e+01 5.6686106143422235e+00 1.4000000055043282e+01 0 0 0 +14814 1 2.0444438578875612e+01 4.5456655463904081e+00 1.0499999990505806e+01 0 0 0 +14816 1 2.2127954326820891e+01 3.9841880426035425e+00 1.2250000002694442e+01 0 0 0 +14817 1 2.1005608353969727e+01 6.2031674828370269e+00 1.2250000013686345e+01 0 0 0 +14821 1 2.4372641998590389e+01 5.0802141913385954e+00 1.2250000020891838e+01 0 0 0 +15458 1 2.3811469556831053e+01 3.4227109637152444e+00 1.3999999958158389e+01 0 0 0 +15455 1 2.2689125884180417e+01 5.6416911628619042e+00 1.4000000003216643e+01 0 0 0 +14868 1 2.8300845939878553e+01 5.6147637941069917e+00 1.0499999973405441e+01 0 0 0 +14825 1 2.7739673724571464e+01 3.9572606911469688e+00 1.2249999975811310e+01 0 0 0 +14866 1 2.6617330042677995e+01 6.1762405605478428e+00 1.2249999997370528e+01 0 0 0 +15459 1 2.6056157798415466e+01 4.5187373196898806e+00 1.3999999989889147e+01 0 0 0 +14823 1 2.9423189737127263e+01 3.3957840547137566e+00 1.0499999969814754e+01 0 0 0 +14870 1 2.9984361770971031e+01 5.0532871879567898e+00 1.2249999987973164e+01 0 0 0 +14875 1 3.2229049710774007e+01 6.1493138017207034e+00 1.2250000029573554e+01 0 0 0 +15512 1 3.1667877546550653e+01 4.4918106299236182e+00 1.4000000005691073e+01 0 0 0 +14873 1 3.3912565492424228e+01 5.5878373946003626e+00 1.0500000009767973e+01 0 0 0 +14876 1 3.5034909039435007e+01 3.3688577443799224e+00 1.0500000034614354e+01 0 0 0 +14874 1 3.3351393397216533e+01 3.9303342634325311e+00 1.2250000037530565e+01 0 0 0 +14877 1 3.7279596871483683e+01 4.4648846667341999e+00 1.0500000068080684e+01 0 0 0 +14879 1 3.5596081267702026e+01 5.0263610244837906e+00 1.2250000001175474e+01 0 0 0 +14932 1 3.7840768979597556e+01 6.1223878277913499e+00 1.2250000007337599e+01 0 0 0 +14881 1 4.0646628187005554e+01 3.3419319629043178e+00 1.0500000007834029e+01 0 0 0 +14934 1 3.9524284635608403e+01 5.5609114857048478e+00 1.0500000036949668e+01 0 0 0 +14883 1 3.8963112532809674e+01 3.9034081911330660e+00 1.2250000012330689e+01 0 0 0 +14936 1 4.1207800292635753e+01 4.9994351138609625e+00 1.2250000009502124e+01 0 0 0 +15991 1 2.9984359352657183e+01 4.3791188818978064e+01 1.5750000061227343e+01 0 0 0 +14938 1 4.2891315989925623e+01 4.4379587695699731e+00 1.0499999977892230e+01 0 0 0 +14939 1 4.4574831800282404e+01 3.8764825087968968e+00 1.2249999953327897e+01 0 0 0 +14940 1 4.3452488007347881e+01 6.0954620206301193e+00 1.2249999962455531e+01 0 0 0 +14759 1 1.2264316799793540e+00 9.1032395701881530e+00 1.0499999972544957e+01 0 0 0 +14760 1 1.0571061314265229e+00 7.4685940894074916e+00 1.2250000044440254e+01 0 0 0 +14761 1 2.5187344513975813e+00 6.8256766808649747e+00 1.0499999963578171e+01 0 0 0 +14764 1 3.1035853600623762e+00 8.5508560813900480e+00 1.2250000033043891e+01 0 0 0 +14768 1 6.4095235721127155e+00 7.3753071540074622e+00 1.2250000017312546e+01 0 0 0 +14796 1 5.3078141158116168e+00 9.6074180406861363e+00 1.2250000027223802e+01 0 0 0 +15402 1 4.7485645002124963e+00 7.9428045403722276e+00 1.4000000081161870e+01 0 0 0 +14766 1 8.0950146378919410e+00 6.8174693613259967e+00 1.0499999998746397e+01 0 0 0 +14798 1 6.9829714629485800e+00 9.0386042442949570e+00 1.0499999984233959e+01 0 0 0 +14800 1 8.6590377203386151e+00 8.4749613540465969e+00 1.2249999984747271e+01 0 0 0 +14803 1 1.2587783863556901e+01 9.0104489429318555e+00 1.0500000004578329e+01 0 0 0 +14804 1 1.2026827855164894e+01 7.3531382427491563e+00 1.2249999946934702e+01 0 0 0 +14805 1 1.0904486470835284e+01 9.5718191030512632e+00 1.2249999957651465e+01 0 0 0 +15442 1 1.0342364748674388e+01 7.9141882499255498e+00 1.3999999966675375e+01 0 0 0 +14806 1 1.3710492591724208e+01 6.7916254344983784e+00 1.0500000010242697e+01 0 0 0 +14809 1 1.4271515845361465e+01 8.4490878311022612e+00 1.2249999982433657e+01 0 0 0 +15447 1 1.5955088594349093e+01 7.8876126643525524e+00 1.4000000041582012e+01 0 0 0 +14811 1 1.9322091182766911e+01 6.7646426460312368e+00 1.0499999994957820e+01 0 0 0 +14813 1 1.7638585058232440e+01 7.3261215709625445e+00 1.2250000036023874e+01 0 0 0 +14854 1 1.6516220906966456e+01 9.5451017717605353e+00 1.2250000004165001e+01 0 0 0 +14856 1 1.8199755149918914e+01 8.9836280840006744e+00 1.0499999986985639e+01 0 0 0 +14858 1 1.9883267973934501e+01 8.4221480612474888e+00 1.2250000024190189e+01 0 0 0 +14863 1 2.2127954492972584e+01 9.5181741101201123e+00 1.2250000020933538e+01 0 0 0 +15500 1 2.1566781355761865e+01 7.8606704546170851e+00 1.4000000010895972e+01 0 0 0 +14861 1 2.3811469841003980e+01 8.9566970475654273e+00 1.0500000022738485e+01 0 0 0 +14862 1 2.3250297512110318e+01 7.2991939160283623e+00 1.2249999984996970e+01 0 0 0 +14867 1 2.5494986013688763e+01 8.3952203023516390e+00 1.2249999989477407e+01 0 0 0 +15504 1 2.4933813903629815e+01 6.7377172213144592e+00 1.3999999989212247e+01 0 0 0 +14865 1 2.7178502149977533e+01 7.8337435846073236e+00 1.0500000006403976e+01 0 0 0 +14871 1 2.8862018077391784e+01 7.2722669737905825e+00 1.2250000028624635e+01 0 0 0 +14920 1 2.7739674089575836e+01 9.4912466989061635e+00 1.2250000003429085e+01 0 0 0 +14924 1 3.1106705945340845e+01 8.3682934913217935e+00 1.2250000025381935e+01 0 0 0 +15562 1 2.9423190174339886e+01 8.9297700422069415e+00 1.4000000019541647e+01 0 0 0 +15509 1 3.0545533929016074e+01 6.7107903573908469e+00 1.4000000031566891e+01 0 0 0 +14926 1 3.2790221838156143e+01 7.8068170294390180e+00 1.0499999982118707e+01 0 0 0 +14928 1 3.4473737475539380e+01 7.2453405768613184e+00 1.2250000010443216e+01 0 0 0 +14929 1 3.3351393835905640e+01 9.4643202518073348e+00 1.2250000000975712e+01 0 0 0 +15567 1 3.5034909512250174e+01 8.9028437213849596e+00 1.3999999976658998e+01 0 0 0 +14931 1 3.8401940923950633e+01 7.7798910559742103e+00 1.0500000048597176e+01 0 0 0 +14930 1 3.6157253238080521e+01 6.6838641528452625e+00 1.0500000039019412e+01 0 0 0 +14933 1 3.6718425174395726e+01 8.3413674358295076e+00 1.2250000027133582e+01 0 0 0 +15570 1 3.6157253252041215e+01 6.6838641774413068e+00 1.3999999980200856e+01 0 0 0 +14935 1 4.1768972261525398e+01 6.6569383235064938e+00 1.0500000004250365e+01 0 0 0 +14937 1 4.0085456593790646e+01 7.2184147066886597e+00 1.2249999984664036e+01 0 0 0 +14987 1 3.8963112895941563e+01 9.4373942152972017e+00 1.2249999987727664e+01 0 0 0 +15629 1 4.0646628587998542e+01 8.8759179757329996e+00 1.3999999958292969e+01 0 0 0 +14993 1 4.4013660010673533e+01 7.7529652633607311e+00 1.0499999977580060e+01 0 0 0 +14991 1 4.2330144296372097e+01 8.3144415706983530e+00 1.2249999982739107e+01 0 0 0 +14994 1 4.4574832070084604e+01 9.4104683827132192e+00 1.2249999995114216e+01 0 0 0 +14792 1 1.7224974307108576e+00 1.0702652761075029e+01 1.2250000009535732e+01 0 0 0 +15431 1 2.5187342763072351e+00 1.2359663065636454e+01 1.4000000123503973e+01 0 0 0 +14795 1 5.8404168932571352e+00 1.1254624004625974e+01 1.0499999990242550e+01 0 0 0 +14797 1 4.1395813668951247e+00 1.1800636143157634e+01 1.2250000049715094e+01 0 0 0 +15434 1 3.5610868835334739e+00 1.0156707653774275e+01 1.4000000074294253e+01 0 0 0 +14801 1 7.5396999930578934e+00 1.0697330434196504e+01 1.2249999994258825e+01 0 0 0 +15439 1 9.2228646922036646e+00 1.0134060780756910e+01 1.3999999997052798e+01 0 0 0 +15484 1 8.0950142949455390e+00 1.2351455791667446e+01 1.4000000029452002e+01 0 0 0 +14846 1 9.7824046517245620e+00 1.1791488539185865e+01 1.2249999941255979e+01 0 0 0 +14848 1 1.1466173248452259e+01 1.1229714911234099e+01 1.0499999995436722e+01 0 0 0 +14850 1 1.3149238264067721e+01 1.0668018888034030e+01 1.2249999963370188e+01 0 0 0 +14855 1 1.5393909137466910e+01 1.1764076868852007e+01 1.2250000010503229e+01 0 0 0 +15489 1 1.3710492179366451e+01 1.2325611688074039e+01 1.3999999972413113e+01 0 0 0 +15492 1 1.4832659530613730e+01 1.0106549100807422e+01 1.4000000004037336e+01 0 0 0 +14853 1 1.7077392791799475e+01 1.1202596694762029e+01 1.0500000004312847e+01 0 0 0 +14859 1 1.8760917198676463e+01 1.0641126890959848e+01 1.2250000013219763e+01 0 0 0 +15550 1 1.9322091030618370e+01 1.2298628663169813e+01 1.4000000038829500e+01 0 0 0 +14912 1 2.1005608295943954e+01 1.1737153485497570e+01 1.2250000014792969e+01 0 0 0 +15497 1 2.0444438678565415e+01 1.0079651605616629e+01 1.4000000040902609e+01 0 0 0 +14915 1 2.4933813918563086e+01 1.2271703260356954e+01 1.0500000045811714e+01 0 0 0 +14914 1 2.2689125917574664e+01 1.1175677237577361e+01 1.0500000016633093e+01 0 0 0 +14916 1 2.4372642198197415e+01 1.0614200236092895e+01 1.2249999999217675e+01 0 0 0 +14918 1 2.6056158071725488e+01 1.0052723363365816e+01 1.0500000021154813e+01 0 0 0 +14921 1 2.6617330159084169e+01 1.1710226568897356e+01 1.2250000031100608e+01 0 0 0 +15559 1 2.8300846155260107e+01 1.1148749816675044e+01 1.4000000026056052e+01 0 0 0 +14923 1 3.1667877939953680e+01 1.0025796634353178e+01 1.0499999972345529e+01 0 0 0 +14977 1 3.0545534114460349e+01 1.2244776319811335e+01 1.0499999971639703e+01 0 0 0 +14925 1 2.9984362098290383e+01 1.0587273204434279e+01 1.2250000012136155e+01 0 0 0 +14979 1 3.2229049973059169e+01 1.1683299777087623e+01 1.2249999995205060e+01 0 0 0 +15621 1 3.3912565809536325e+01 1.1121823374741018e+01 1.4000000021752308e+01 0 0 0 +14982 1 3.6157253481396047e+01 1.2217850163595822e+01 1.0500000025993941e+01 0 0 0 +14985 1 3.7279597287695452e+01 9.9988706718478024e+00 1.0500000035514361e+01 0 0 0 +14983 1 3.5596081631124640e+01 1.0560347014399294e+01 1.2250000025938995e+01 0 0 0 +14988 1 3.7840769252265474e+01 1.1656373830000478e+01 1.2249999985418546e+01 0 0 0 +14992 1 4.1207800599995828e+01 1.0533421101249425e+01 1.2249999965901308e+01 0 0 0 +15626 1 3.9524284965015234e+01 1.1094897477507933e+01 1.3999999951020660e+01 0 0 0 +15684 1 4.1768972516058227e+01 1.2190924289953600e+01 1.3999999981565061e+01 0 0 0 +15990 1 3.1106703435044384e+01 4.1572208976102601e+01 1.5750000054543488e+01 0 0 0 +15046 1 4.3452488272699000e+01 1.1629447908255884e+01 1.2249999989167641e+01 0 0 0 +15630 1 4.2891316317713652e+01 9.9719447093121438e+00 1.3999999965270666e+01 0 0 0 +14793 1 1.0571060238505792e+00 1.3002580548748602e+01 1.2249999990637555e+01 0 0 0 +14838 1 3.1035851371297860e+00 1.4084842683998822e+01 1.2250000050736325e+01 0 0 0 +15476 1 1.2264315760204572e+00 1.4637226046347465e+01 1.4000000099780213e+01 0 0 0 +14837 1 3.5610864804977704e+00 1.5690694331359254e+01 1.0499999998003581e+01 0 0 0 +14840 1 4.7485641063495017e+00 1.3476791129465839e+01 1.0499999979514056e+01 0 0 0 +14842 1 6.4095232056336506e+00 1.2909293646410440e+01 1.2250000028203534e+01 0 0 0 +14843 1 5.3078137564560031e+00 1.5141404631286603e+01 1.2250000040406974e+01 0 0 0 +14898 1 9.2228641600366394e+00 1.5668047236545050e+01 1.0499999964069078e+01 0 0 0 +14847 1 8.6590372859157352e+00 1.4008947819215448e+01 1.2249999980441723e+01 0 0 0 +15481 1 6.9829711544743489e+00 1.4572590744785296e+01 1.4000000065047255e+01 0 0 0 +14845 1 1.0342364237486615e+01 1.3448174596206998e+01 1.0499999977634998e+01 0 0 0 +14851 1 1.2026827375780549e+01 1.2887124508194292e+01 1.2249999963565696e+01 0 0 0 +14900 1 1.0904485978252829e+01 1.5105805443762939e+01 1.2249999947595525e+01 0 0 0 +15542 1 1.2587783386349519e+01 1.4544435222635629e+01 1.3999999954115353e+01 0 0 0 +14903 1 1.4832659044510711e+01 1.5640535171498021e+01 1.0499999983129033e+01 0 0 0 +14904 1 1.4271515364685341e+01 1.3983073970205016e+01 1.2249999987239095e+01 0 0 0 +14906 1 1.5955088208160886e+01 1.3421598669882629e+01 1.0499999985782903e+01 0 0 0 +14908 1 1.7638584747574949e+01 1.2860107578264905e+01 1.2249999998790596e+01 0 0 0 +14909 1 1.6516220445376625e+01 1.5079087795958088e+01 1.2250000020873205e+01 0 0 0 +15547 1 1.8199754788789157e+01 1.4517614056748236e+01 1.4000000058915209e+01 0 0 0 +14911 1 2.1566781150456105e+01 1.3394656418535549e+01 1.0500000015654724e+01 0 0 0 +14913 1 1.9883267696324481e+01 1.3956134010309809e+01 1.2250000026877014e+01 0 0 0 +14965 1 2.0444438275677268e+01 1.5613637519494914e+01 1.0500000001878897e+01 0 0 0 +14967 1 2.2127954209904036e+01 1.5052160036065063e+01 1.2250000038292638e+01 0 0 0 +14917 1 2.3250297446789975e+01 1.2833179889629434e+01 1.2250000023583532e+01 0 0 0 +14971 1 2.5494985873412247e+01 1.3929206265940650e+01 1.2250000021169491e+01 0 0 0 +15609 1 2.3811469637872687e+01 1.4490682987440284e+01 1.4000000012300944e+01 0 0 0 +14975 1 2.8862018175824208e+01 1.2806252966014531e+01 1.2250000001761221e+01 0 0 0 +14976 1 2.7739673908880849e+01 1.5025232677410969e+01 1.2250000001348797e+01 0 0 0 +15610 1 2.6056157821004103e+01 1.5586709318542999e+01 1.4000000030789058e+01 0 0 0 +15613 1 2.7178502140001676e+01 1.3367729529468908e+01 1.3999999996060687e+01 0 0 0 +14974 1 2.9423190084131527e+01 1.4463756022491390e+01 1.0499999990687279e+01 0 0 0 +14980 1 3.1106705979017175e+01 1.3902279448379140e+01 1.2250000024409177e+01 0 0 0 +15672 1 3.1667877831808060e+01 1.5559782546185904e+01 1.4000000023583691e+01 0 0 0 +15036 1 3.5034909575423320e+01 1.4436829707709116e+01 1.0500000023952186e+01 0 0 0 +14984 1 3.4473737693161347e+01 1.2779326557061419e+01 1.2250000024345766e+01 0 0 0 +15034 1 3.3351393825106989e+01 1.4998306183964591e+01 1.2250000035539820e+01 0 0 0 +15618 1 3.2790221957300830e+01 1.3340802999231492e+01 1.4000000012679518e+01 0 0 0 +15038 1 3.6718425292374349e+01 1.3875353431338892e+01 1.2249999998224318e+01 0 0 0 +15680 1 3.8401941131736990e+01 1.3313877059338663e+01 1.3999999969097981e+01 0 0 0 +15677 1 3.7279597287542103e+01 1.5532856641595538e+01 1.3999999981507164e+01 0 0 0 +15042 1 4.0085456796355864e+01 1.2752400719380715e+01 1.2249999996492424e+01 0 0 0 +15043 1 3.8963112974222206e+01 1.4971380198190554e+01 1.2250000005160585e+01 0 0 0 +15681 1 4.0646628739292133e+01 1.4409903935351959e+01 1.3999999947673885e+01 0 0 0 +15047 1 4.2330144481885839e+01 1.3848427485451309e+01 1.2249999981105210e+01 0 0 0 +15099 1 4.4574832231567285e+01 1.4944454160921406e+01 1.2249999981919439e+01 0 0 0 +15685 1 4.4013660238610292e+01 1.3286951114078040e+01 1.3999999995802481e+01 0 0 0 +15738 1 4.2891316424166241e+01 1.5505930533023101e+01 1.3999999967220351e+01 0 0 0 +14839 1 1.7224970511704651e+00 1.6236639376634699e+01 1.2250000058697731e+01 0 0 0 +14889 1 1.0571059826546596e+00 1.8536567290554892e+01 1.2250000079472589e+01 0 0 0 +14890 1 2.5187339572341396e+00 1.7893649746617882e+01 1.0499999982474682e+01 0 0 0 +14892 1 4.1395809329430806e+00 1.7334622747278285e+01 1.2250000030203767e+01 0 0 0 +14897 1 6.4095227245882542e+00 1.8443280237610402e+01 1.2250000028352666e+01 0 0 0 +15534 1 5.8404165416467064e+00 1.6788610572265998e+01 1.4000000074482918e+01 0 0 0 +15531 1 4.7485637517080264e+00 1.9010777740258490e+01 1.4000000097581829e+01 0 0 0 +14895 1 8.0950137257001682e+00 1.7885442328458872e+01 1.0499999978044274e+01 0 0 0 +14896 1 7.5396995543166261e+00 1.6231316974433504e+01 1.2249999997017611e+01 0 0 0 +14901 1 9.7824041408866602e+00 1.7325474969720833e+01 1.2249999976710624e+01 0 0 0 +14955 1 1.2026826821736030e+01 1.8421110777868584e+01 1.2249999948451313e+01 0 0 0 +15539 1 1.1466172773406857e+01 1.6763701278448416e+01 1.3999999948508110e+01 0 0 0 +15593 1 1.0342363731743239e+01 1.8982161004529786e+01 1.3999999964577647e+01 0 0 0 +14905 1 1.3149237765117435e+01 1.6202005097721493e+01 1.2249999950327688e+01 0 0 0 +14957 1 1.3710491650588416e+01 1.7859597780241771e+01 1.0499999967321472e+01 0 0 0 +14959 1 1.5393908619629839e+01 1.7298062919241215e+01 1.2249999958018972e+01 0 0 0 +15598 1 1.5955087648960850e+01 1.8955584702089958e+01 1.3999999991993910e+01 0 0 0 +14962 1 1.9322090530151289e+01 1.7832614515876411e+01 1.0499999985902789e+01 0 0 0 +14963 1 1.8760916778849683e+01 1.6175112806447373e+01 1.2250000018130342e+01 0 0 0 +14964 1 1.7638584234919747e+01 1.8394093503622017e+01 1.2250000016606016e+01 0 0 0 +15601 1 1.7077392326496653e+01 1.6736582659709384e+01 1.4000000002401300e+01 0 0 0 +14968 1 2.1005607873836215e+01 1.7271139338935672e+01 1.2250000033926167e+01 0 0 0 +15660 1 2.1566780660565179e+01 1.8928642251790489e+01 1.4000000042177874e+01 0 0 0 +14972 1 2.4372641831967741e+01 1.6148186151609444e+01 1.2250000049748284e+01 0 0 0 +15022 1 2.3250296967139999e+01 1.8367165729810807e+01 1.2249999994261968e+01 0 0 0 +15664 1 2.4933813514641720e+01 1.7805689125493721e+01 1.4000000025211067e+01 0 0 0 +15606 1 2.2689125564859665e+01 1.6709663064756885e+01 1.4000000040709862e+01 0 0 0 +15025 1 2.7178501664300789e+01 1.8901715433947068e+01 1.0500000024563859e+01 0 0 0 +15028 1 2.8300845866581394e+01 1.6682735719357861e+01 1.0500000010629062e+01 0 0 0 +15026 1 2.6617329786909483e+01 1.7244212488141716e+01 1.2250000025751234e+01 0 0 0 +15031 1 2.8862017763985818e+01 1.8340238848513962e+01 1.2250000041767318e+01 0 0 0 +15030 1 2.9984361872441518e+01 1.6121259129400805e+01 1.2250000005095638e+01 0 0 0 +15035 1 3.2229049760369165e+01 1.7217285690307698e+01 1.2250000016324337e+01 0 0 0 +15669 1 3.0545533804897971e+01 1.7778762230234705e+01 1.4000000018419380e+01 0 0 0 +15033 1 3.3912565659406226e+01 1.6655809316635462e+01 1.0499999999716673e+01 0 0 0 +15086 1 3.2790221653058417e+01 1.8874788871780279e+01 1.0500000001966049e+01 0 0 0 +15088 1 3.4473737460059290e+01 1.8313312468358919e+01 1.2250000011685804e+01 0 0 0 +15039 1 3.5596081579969997e+01 1.6094332969142144e+01 1.2250000005735188e+01 0 0 0 +15092 1 3.7840769149871008e+01 1.7190359832168348e+01 1.2250000017428240e+01 0 0 0 +15730 1 3.6157253350516115e+01 1.7751836096831155e+01 1.4000000009151407e+01 0 0 0 +15731 1 3.8401940924344316e+01 1.8847862994963531e+01 1.3999999988560491e+01 0 0 0 +15096 1 4.1207800640401551e+01 1.6067407037794084e+01 1.2249999999024354e+01 0 0 0 +15097 1 4.0085456694020422e+01 1.8286386655159379e+01 1.2250000002392273e+01 0 0 0 +15734 1 3.9524284955200883e+01 1.6628883462277720e+01 1.3999999975104856e+01 0 0 0 +15735 1 4.1768972481542548e+01 1.7724910152901646e+01 1.3999999973383014e+01 0 0 0 +15989 1 3.1667875319993051e+01 4.3229712131166330e+01 1.4000000031444040e+01 0 0 0 +15100 1 4.3452488297902860e+01 1.7163433713416438e+01 1.2249999979954760e+01 0 0 0 +15793 1 4.4013660211419385e+01 1.8820936853256384e+01 1.3999999993280605e+01 0 0 0 +14888 1 1.2264314872234419e+00 2.0171212855526498e+01 1.0499999927192926e+01 0 0 0 +14893 1 3.1035848704700526e+00 1.9618829396283289e+01 1.2250000047952350e+01 0 0 0 +14943 1 1.7224969114579198e+00 2.1770626156405037e+01 1.2249999998867205e+01 0 0 0 +14947 1 5.3078133733146533e+00 2.0675391318299830e+01 1.2250000041512084e+01 0 0 0 +15585 1 3.5610862350630432e+00 2.1224681078072205e+01 1.4000000073138068e+01 0 0 0 +14949 1 6.9829705725449394e+00 2.0106577357231053e+01 1.0499999993719062e+01 0 0 0 +14951 1 8.6590367254854854e+00 1.9542934299650039e+01 1.2249999999179897e+01 0 0 0 +14952 1 7.5396990750011668e+00 2.1765303546648664e+01 1.2250000027554291e+01 0 0 0 +15590 1 9.2228636776337858e+00 2.1202033676640966e+01 1.4000000031475594e+01 0 0 0 +14954 1 1.2587782756919774e+01 2.0078421398254946e+01 1.0499999976116767e+01 0 0 0 +14956 1 1.0904485367610050e+01 2.0639791755259846e+01 1.2249999983339423e+01 0 0 0 +14960 1 1.4271514792214727e+01 1.9517060065652821e+01 1.2249999962132325e+01 0 0 0 +15010 1 1.3149237112209320e+01 2.1735991206055722e+01 1.2249999964605649e+01 0 0 0 +15652 1 1.4832658407449497e+01 2.1174521187267420e+01 1.3999999957953797e+01 0 0 0 +15014 1 1.6516219818779071e+01 2.0613073706811353e+01 1.2249999968009917e+01 0 0 0 +15016 1 1.8199754198852567e+01 2.0051599915070998e+01 1.0499999969516645e+01 0 0 0 +15019 1 1.8760916131141975e+01 2.1709098603192114e+01 1.2249999986411860e+01 0 0 0 +15018 1 1.9883267158351558e+01 1.9490119843566966e+01 1.2250000031971929e+01 0 0 0 +15023 1 2.2127953613759868e+01 2.0586145829477243e+01 1.2250000009306152e+01 0 0 0 +15657 1 2.0444437687253235e+01 2.1147623286441394e+01 1.4000000014959642e+01 0 0 0 +15021 1 2.3811469064801155e+01 2.0024668785247712e+01 1.0500000000204166e+01 0 0 0 +15027 1 2.5494985349883713e+01 1.9463192128822872e+01 1.2250000017698758e+01 0 0 0 +15076 1 2.4372641211857569e+01 2.1682171953765152e+01 1.2250000007532478e+01 0 0 0 +15078 1 2.6056157216909352e+01 2.1120695126217313e+01 1.0500000013689805e+01 0 0 0 +15080 1 2.7739673372763356e+01 2.0559218514674477e+01 1.2250000027424457e+01 0 0 0 +15083 1 3.1667877353610937e+01 2.1093768396361266e+01 1.0500000002190822e+01 0 0 0 +15084 1 3.1106705591054411e+01 1.9436265298340484e+01 1.2250000026496627e+01 0 0 0 +15085 1 2.9984361344656694e+01 2.1655244951316170e+01 1.2250000041137096e+01 0 0 0 +15722 1 2.9423189650409725e+01 1.9997741866763384e+01 1.4000000035936459e+01 0 0 0 +15089 1 3.3351393463558999e+01 2.0532292064282476e+01 1.2250000005139270e+01 0 0 0 +15727 1 3.5034909298957871e+01 1.9970815581506752e+01 1.4000000005633384e+01 0 0 0 +15093 1 3.6718425072521725e+01 1.9409339376024363e+01 1.2250000021308024e+01 0 0 0 +15143 1 3.5596081230635825e+01 2.1628318885588097e+01 1.2250000021884212e+01 0 0 0 +15785 1 3.7279596991778476e+01 2.1066842574702996e+01 1.3999999994519664e+01 0 0 0 +15147 1 3.8963112747946987e+01 2.0505366158058155e+01 1.2250000008503426e+01 0 0 0 +15152 1 4.1207800484696072e+01 2.1601392916278602e+01 1.2249999996779950e+01 0 0 0 +15789 1 4.0646628595009290e+01 1.9943889845487146e+01 1.3999999986704420e+01 0 0 0 +15151 1 4.2330144390390913e+01 1.9382413331565612e+01 1.2250000027082699e+01 0 0 0 +15154 1 4.4574832177581975e+01 2.0478439923305984e+01 1.2250000015095855e+01 0 0 0 +15790 1 4.2891316331821209e+01 2.1039916356823991e+01 1.3999999986960212e+01 0 0 0 +14944 1 1.0571059688822715e+00 2.4070554106150421e+01 1.2249999947793308e+01 0 0 0 +14998 1 3.1035847224838298e+00 2.5152816185597000e+01 1.2250000037040802e+01 0 0 0 +15582 1 2.5187338086302149e+00 2.3427636542578526e+01 1.4000000047246804e+01 0 0 0 +14946 1 5.8404161459919735e+00 2.2322597285837201e+01 1.0500000007107406e+01 0 0 0 +15000 1 4.7485635012508363e+00 2.4544764524944533e+01 1.0499999997536221e+01 0 0 0 +14948 1 4.1395807056013929e+00 2.2868609527996618e+01 1.2250000065240583e+01 0 0 0 +15002 1 6.4095224466872889e+00 2.3977266901568104e+01 1.2250000064023771e+01 0 0 0 +15007 1 8.6590364357923129e+00 2.5076920756370157e+01 1.2250000049936112e+01 0 0 0 +15644 1 8.0950133921818921e+00 2.3419428871072387e+01 1.4000000073562701e+01 0 0 0 +15008 1 1.1466172124690541e+01 2.2297687484716814e+01 1.0499999986571444e+01 0 0 0 +15006 1 9.7824036214133780e+00 2.2859461355426092e+01 1.2249999995432132e+01 0 0 0 +15005 1 1.0342363254367152e+01 2.4516147302420745e+01 1.0500000001041020e+01 0 0 0 +15011 1 1.2026826276792605e+01 2.3955096959666651e+01 1.2250000007935647e+01 0 0 0 +15015 1 1.5393907920334398e+01 2.2832048858811390e+01 1.2249999990101459e+01 0 0 0 +15064 1 1.4271514203628689e+01 2.5051046045734047e+01 1.2250000000401487e+01 0 0 0 +15066 1 1.5955086952680865e+01 2.4489570581147056e+01 1.0499999981735140e+01 0 0 0 +15649 1 1.3710491031466860e+01 2.3393583873882537e+01 1.3999999982401610e+01 0 0 0 +15013 1 1.7077391619580514e+01 2.2270568526232697e+01 1.0499999982387832e+01 0 0 0 +15068 1 1.7638583521870387e+01 2.3928079319380235e+01 1.2249999965899859e+01 0 0 0 +15710 1 1.9322089838381174e+01 2.3366600309264893e+01 1.3999999983422354e+01 0 0 0 +15071 1 2.1566779914196069e+01 2.4462628002512275e+01 1.0499999974548968e+01 0 0 0 +15072 1 2.1005607190311661e+01 2.2805125098443703e+01 1.2249999963090154e+01 0 0 0 +15073 1 1.9883266430938910e+01 2.5024105617794348e+01 1.2249999968146721e+01 0 0 0 +15075 1 2.4933812792171690e+01 2.3339674913091947e+01 1.0500000003233605e+01 0 0 0 +15074 1 2.2689124856729880e+01 2.2243648875465503e+01 1.0499999978388916e+01 0 0 0 +15077 1 2.3250296236632302e+01 2.3901151493789289e+01 1.2249999997700971e+01 0 0 0 +15131 1 2.5494984607288732e+01 2.4997177894307914e+01 1.2250000013393052e+01 0 0 0 +15719 1 2.8300845270936723e+01 2.2216721560948468e+01 1.4000000036767679e+01 0 0 0 +15081 1 2.6617329124371484e+01 2.2778198261848345e+01 1.2250000033588186e+01 0 0 0 +15135 1 2.8862017114573447e+01 2.3874224634668277e+01 1.2250000038899010e+01 0 0 0 +15773 1 2.7178500967848890e+01 2.4435701194066969e+01 1.4000000023576867e+01 0 0 0 +15137 1 3.0545533183060165e+01 2.3312748008962458e+01 1.0500000016850105e+01 0 0 0 +15139 1 3.2229049234016962e+01 2.2751271500476456e+01 1.2250000018142286e+01 0 0 0 +15140 1 3.1106704920015641e+01 2.4970251083067019e+01 1.2250000050638553e+01 0 0 0 +15144 1 3.4473736976045515e+01 2.3847298318207582e+01 1.2250000016781231e+01 0 0 0 +15781 1 3.3912565267102714e+01 2.2189795160632205e+01 1.4000000039990571e+01 0 0 0 +15778 1 3.2790221097357495e+01 2.4408774680432803e+01 1.4000000045217615e+01 0 0 0 +15148 1 3.7840768833177208e+01 2.2724345736646566e+01 1.2249999997653742e+01 0 0 0 +15198 1 3.6718424618526640e+01 2.4943325255158136e+01 1.2249999988991547e+01 0 0 0 +15782 1 3.6157252949098982e+01 2.3285822011408008e+01 1.4000000014369224e+01 0 0 0 +15840 1 3.8401940602714333e+01 2.4381848923149668e+01 1.4000000005008019e+01 0 0 0 +15202 1 4.0085456457784950e+01 2.3820372537948554e+01 1.2250000027196071e+01 0 0 0 +15844 1 4.1768972329240896e+01 2.3258896039052182e+01 1.4000000014263657e+01 0 0 0 +15786 1 3.9524284683138731e+01 2.2162869364940015e+01 1.3999999987678908e+01 0 0 0 +13426 1 2.6056155326962337e+01 4.3256638892997302e+01 6.4274814803866320e-08 0 0 0 +15206 1 4.3452488226013998e+01 2.2697419561465900e+01 1.2250000011700180e+01 0 0 0 +15207 1 4.2330144275768006e+01 2.4916399193371543e+01 1.2250000024696231e+01 0 0 0 +15845 1 4.4013660154732968e+01 2.4354922749285429e+01 1.3999999998225592e+01 0 0 0 +14999 1 1.7224967985443389e+00 2.7304612914323940e+01 1.2250000015712455e+01 0 0 0 +15636 1 1.2264314183631326e+00 2.5705199665340206e+01 1.4000000061664334e+01 0 0 0 +14997 1 3.5610861075586175e+00 2.6758667826831886e+01 1.0499999989982431e+01 0 0 0 +15003 1 5.3078132380433010e+00 2.6209378005472960e+01 1.2250000060143181e+01 0 0 0 +15052 1 4.1395806144484011e+00 2.8402596153106391e+01 1.2250000025446500e+01 0 0 0 +15694 1 5.8404160605663051e+00 2.7856583878694831e+01 1.4000000087014955e+01 0 0 0 +15056 1 7.5396989707789208e+00 2.7299290009111846e+01 1.2250000048887255e+01 0 0 0 +15058 1 9.2228634071174778e+00 2.6736020021070818e+01 1.0499999994331047e+01 0 0 0 +15641 1 6.9829704379451023e+00 2.5640563932490299e+01 1.4000000107099792e+01 0 0 0 +15061 1 9.7824035210268079e+00 2.8393447576343654e+01 1.2250000029840288e+01 0 0 0 +15060 1 1.0904485078174828e+01 2.6173777990191127e+01 1.2250000006155263e+01 0 0 0 +15699 1 1.1466171986341379e+01 2.7831673657767670e+01 1.4000000020396861e+01 0 0 0 +15702 1 1.2587782363969692e+01 2.5612407507139398e+01 1.4000000005630895e+01 0 0 0 +15063 1 1.4832657892853890e+01 2.6708507163941864e+01 1.0499999994928825e+01 0 0 0 +15065 1 1.3149236793417847e+01 2.7269977270871419e+01 1.2249999990158594e+01 0 0 0 +15119 1 1.5393907549608199e+01 2.8366034825491518e+01 1.2249999988729865e+01 0 0 0 +15069 1 1.6516219217567830e+01 2.6147059599316599e+01 1.2250000015663511e+01 0 0 0 +15123 1 1.8760915499123776e+01 2.7243084450938660e+01 1.2249999985092826e+01 0 0 0 +15707 1 1.8199753524053325e+01 2.5585585715123276e+01 1.3999999984096190e+01 0 0 0 +15761 1 1.7077391141096356e+01 2.7804554404170059e+01 1.3999999972946211e+01 0 0 0 +15125 1 2.0444436950625850e+01 2.6681609120451373e+01 1.0499999991288014e+01 0 0 0 +15127 1 2.2127952877550278e+01 2.6120131589418701e+01 1.2249999981493774e+01 0 0 0 +15128 1 2.1005606525989421e+01 2.8339110915133805e+01 1.2249999993866515e+01 0 0 0 +15132 1 2.4372640451645470e+01 2.7216157692994972e+01 1.2250000006088031e+01 0 0 0 +15766 1 2.2689124161415723e+01 2.7777634608223213e+01 1.3999999984003562e+01 0 0 0 +15769 1 2.3811468290099207e+01 2.5558654572630456e+01 1.3999999971229830e+01 0 0 0 +15188 1 2.8300844536444664e+01 2.7750707297631052e+01 1.0500000014248013e+01 0 0 0 +15136 1 2.7739672629041735e+01 2.6093204266761191e+01 1.2250000035137878e+01 0 0 0 +15186 1 2.6617328391037216e+01 2.8312184024177878e+01 1.2250000021486503e+01 0 0 0 +15770 1 2.6056156451729862e+01 2.6654680893083704e+01 1.4000000011137379e+01 0 0 0 +15134 1 2.9423188899234116e+01 2.5531727627945294e+01 1.0500000023652181e+01 0 0 0 +15190 1 2.9984360607058495e+01 2.7189230706018481e+01 1.2250000053317443e+01 0 0 0 +15195 1 3.2229048554346214e+01 2.8285257277741952e+01 1.2250000038159573e+01 0 0 0 +15832 1 3.1667876713162585e+01 2.6627754179005358e+01 1.4000000050637901e+01 0 0 0 +15194 1 3.3351392831788772e+01 2.6066277876385474e+01 1.2250000028850677e+01 0 0 0 +15836 1 3.5034908759905136e+01 2.5504801409382797e+01 1.4000000021875504e+01 0 0 0 +15199 1 3.5596080679498371e+01 2.7162304697253326e+01 1.2249999977356117e+01 0 0 0 +15252 1 3.7840768414708172e+01 2.8258331594537339e+01 1.2249999968346634e+01 0 0 0 +15837 1 3.7279596550442072e+01 2.6600828448604418e+01 1.3999999990980863e+01 0 0 0 +15203 1 3.8963112402081933e+01 2.6039352035820599e+01 1.2249999993089011e+01 0 0 0 +15256 1 4.1207800262715374e+01 2.7135378807625052e+01 1.2249999999816426e+01 0 0 0 +15841 1 4.0646628341701089e+01 2.5477875720540318e+01 1.3999999989940047e+01 0 0 0 +15894 1 3.9524284391170305e+01 2.7696855259142154e+01 1.3999999966183623e+01 0 0 0 +15259 1 4.4574832133611380e+01 2.6012425827200765e+01 1.2250000032891014e+01 0 0 0 +15260 1 4.3452488118371747e+01 2.8231405489373358e+01 1.2250000002441144e+01 0 0 0 +15898 1 4.2891316203463937e+01 2.6573902236976014e+01 1.3999999999223567e+01 0 0 0 +15048 1 1.2264314432388279e+00 3.1239186366179386e+01 1.0499999917553874e+01 0 0 0 +15049 1 1.0571058007072123e+00 2.9604540857292953e+01 1.2250000006949589e+01 0 0 0 +15050 1 2.5187337264687302e+00 2.8961623245171836e+01 1.0499999932092312e+01 0 0 0 +15053 1 3.1035847621277437e+00 3.0686802818492442e+01 1.2250000008864987e+01 0 0 0 +15057 1 6.4095223877863159e+00 2.9511253300789875e+01 1.2250000058591120e+01 0 0 0 +15107 1 5.3078132588291780e+00 3.1743364357811675e+01 1.2250000028340965e+01 0 0 0 +15691 1 4.7485634637573702e+00 3.0078751035463505e+01 1.4000000067404638e+01 0 0 0 +15055 1 8.0950132704554854e+00 2.8953415170625696e+01 1.0499999998536504e+01 0 0 0 +15109 1 6.9829703697632031e+00 3.1174550165109711e+01 1.0499999987679953e+01 0 0 0 +15111 1 8.6590364024410746e+00 3.0610906918942728e+01 1.2250000017653685e+01 0 0 0 +15114 1 1.2587782178353756e+01 3.1146393475938428e+01 1.0499999968851411e+01 0 0 0 +15115 1 1.2026826142366099e+01 2.9489083011886226e+01 1.2249999986770430e+01 0 0 0 +15116 1 1.0904485008414975e+01 3.1707763981529983e+01 1.2249999991486762e+01 0 0 0 +15753 1 1.0342363233789820e+01 3.0050133425061340e+01 1.4000000016502939e+01 0 0 0 +15117 1 1.3710490760815743e+01 2.8927569838519208e+01 1.0499999978672191e+01 0 0 0 +15120 1 1.4271514008729239e+01 3.0585032035579871e+01 1.2249999997340119e+01 0 0 0 +15758 1 1.5955086664901401e+01 3.0023556536209984e+01 1.3999999998894458e+01 0 0 0 +15122 1 1.9322089241797542e+01 2.8900586180411896e+01 1.0500000012588851e+01 0 0 0 +15124 1 1.7638583081368072e+01 2.9462065244313759e+01 1.2250000026166775e+01 0 0 0 +15174 1 1.6516218902132234e+01 3.1681045546364707e+01 1.2249999998446732e+01 0 0 0 +15176 1 1.8199753082694937e+01 3.1119571654726194e+01 1.0500000022273971e+01 0 0 0 +15178 1 1.9883265930678888e+01 3.0558091489690629e+01 1.2250000040819092e+01 0 0 0 +15183 1 2.2127952355806269e+01 3.1654117406588782e+01 1.2250000016447141e+01 0 0 0 +15820 1 2.1566779335627277e+01 2.9996613818461825e+01 1.3999999991239433e+01 0 0 0 +15181 1 2.3811467712642123e+01 3.1092640348516028e+01 1.0499999992466002e+01 0 0 0 +15182 1 2.3250295579102957e+01 2.9435137292072849e+01 1.2249999966797446e+01 0 0 0 +15187 1 2.5494983924690910e+01 3.0531163668194669e+01 1.2250000001484040e+01 0 0 0 +15824 1 2.4933812067554566e+01 2.8873660668221401e+01 1.4000000004634321e+01 0 0 0 +15185 1 2.7178500271093458e+01 2.9969686973645182e+01 1.0500000009313004e+01 0 0 0 +15191 1 2.8862016360293211e+01 2.9408210399186000e+01 1.2250000059458635e+01 0 0 0 +15240 1 2.7739671951746573e+01 3.1627190070308934e+01 1.2250000031679260e+01 0 0 0 +15244 1 3.1106704227248709e+01 3.0504236886081696e+01 1.2250000031066925e+01 0 0 0 +15882 1 2.9423188199132799e+01 3.1065713441725912e+01 1.4000000049462063e+01 0 0 0 +15829 1 3.0545532474951116e+01 2.8846733787851086e+01 1.4000000059723227e+01 0 0 0 +15248 1 3.4473736364973625e+01 2.9381284126968481e+01 1.2250000010030686e+01 0 0 0 +15249 1 3.3351392199525904e+01 3.1600263687536806e+01 1.2250000000193351e+01 0 0 0 +15887 1 3.5034908214433493e+01 3.1038787242018746e+01 1.4000000006961862e+01 0 0 0 +15253 1 3.6718424180443442e+01 3.0477311088602882e+01 1.2249999971051112e+01 0 0 0 +15891 1 3.8401940225733270e+01 2.9915834761068329e+01 1.3999999982658304e+01 0 0 0 +15890 1 3.6157252428644263e+01 2.8819807828599497e+01 1.4000000008319812e+01 0 0 0 +15257 1 4.0085456186130308e+01 2.9354358401567222e+01 1.2249999987801047e+01 0 0 0 +15302 1 3.8963112092434180e+01 3.1573337893477039e+01 1.2249999983804516e+01 0 0 0 +15895 1 4.1768972130935403e+01 2.8792881925562526e+01 1.3999999970926066e+01 0 0 0 +15944 1 4.0646628139946742e+01 3.1011861619032061e+01 1.3999999995799390e+01 0 0 0 +15306 1 4.2330144120365645e+01 3.0450385126864294e+01 1.2250000018064991e+01 0 0 0 +15309 1 4.4574832102840141e+01 3.1546411895011488e+01 1.2250000028737412e+01 0 0 0 +15948 1 4.4013660069451063e+01 2.9888908702654312e+01 1.3999999991582245e+01 0 0 0 +15103 1 1.7224969490951902e+00 3.2838599555033873e+01 1.2249999928148016e+01 0 0 0 +15742 1 2.5187337818413380e+00 3.4495609790690487e+01 1.3999999983364793e+01 0 0 0 +15106 1 5.8404162058622155e+00 3.3390570078245986e+01 1.0500000000092458e+01 0 0 0 +15108 1 4.1395807785953131e+00 3.3936582545003645e+01 1.2250000007736354e+01 0 0 0 +15745 1 3.5610861570239867e+00 3.2292654357775056e+01 1.3999999986036432e+01 0 0 0 +15112 1 7.5396990337428074e+00 3.2833276125886066e+01 1.2250000025344745e+01 0 0 0 +15750 1 9.2228634852284355e+00 3.2270006070188266e+01 1.4000000040076349e+01 0 0 0 +15804 1 8.0950134846410222e+00 3.4487401199493526e+01 1.4000000058767192e+01 0 0 0 +15166 1 9.7824035795233026e+00 3.3927433510136368e+01 1.2249999979840704e+01 0 0 0 +15168 1 1.1466171877142399e+01 3.3365659516609256e+01 1.0499999947862067e+01 0 0 0 +15170 1 1.3149236649691987e+01 3.2803963178794852e+01 1.2249999971389714e+01 0 0 0 +15175 1 1.5393907308107430e+01 3.3900020727600506e+01 1.2249999999030237e+01 0 0 0 +15809 1 1.3710490666777654e+01 3.4461555756446266e+01 1.3999999979477534e+01 0 0 0 +15812 1 1.4832657716798616e+01 3.2242493085027256e+01 1.3999999980547859e+01 0 0 0 +15173 1 1.7077390781870228e+01 3.3338540323663629e+01 1.0500000029144426e+01 0 0 0 +15179 1 1.8760915099335755e+01 3.2777070353228638e+01 1.2250000024528335e+01 0 0 0 +15870 1 1.9322088896914209e+01 3.4434572029582519e+01 1.4000000009624250e+01 0 0 0 +15232 1 2.1005606117122237e+01 3.3873096784367405e+01 1.2250000008853352e+01 0 0 0 +15817 1 2.0444436526050932e+01 3.2215594936405559e+01 1.4000000022931768e+01 0 0 0 +15235 1 2.4933811552578835e+01 3.4407646545667852e+01 1.0499999996480511e+01 0 0 0 +15234 1 2.2689123661146255e+01 3.3311620492526089e+01 1.0499999999807834e+01 0 0 0 +15236 1 2.4372639898372835e+01 3.2750143517640737e+01 1.2250000012439736e+01 0 0 0 +15238 1 2.6056155843262829e+01 3.2188666709649986e+01 1.0499999992116003e+01 0 0 0 +15241 1 2.6617327783772087e+01 3.3846169890447236e+01 1.2250000031842944e+01 0 0 0 +15879 1 2.8300843848260307e+01 3.3284693174789012e+01 1.4000000060121478e+01 0 0 0 +15245 1 2.9984359923054914e+01 3.2723216546287595e+01 1.2250000056468897e+01 0 0 0 +15294 1 3.2229047908590786e+01 3.3819243133555879e+01 1.2250000023487056e+01 0 0 0 +15936 1 3.3912564027548470e+01 3.3257766798786413e+01 1.4000000021509724e+01 0 0 0 +15298 1 3.5596080204671296e+01 3.2696290540893976e+01 1.2249999983561457e+01 0 0 0 +15303 1 3.7840768054480222e+01 3.3792317421361126e+01 1.2249999991405126e+01 0 0 0 +15937 1 3.6157251966900539e+01 3.4353793679313817e+01 1.4000000000042816e+01 0 0 0 +15940 1 3.7279596148141451e+01 3.2134814277533266e+01 1.3999999980622349e+01 0 0 0 +15307 1 4.1207800115160794e+01 3.2669364737746207e+01 1.2249999976956842e+01 0 0 0 +15941 1 3.9524284092216767e+01 3.3230841097748595e+01 1.4000000000513550e+01 0 0 0 +15981 1 4.1768972013758429e+01 3.4326867911117816e+01 1.4000000032385376e+01 0 0 0 +15343 1 4.3452488046959864e+01 3.3765391561528880e+01 1.2250000009619651e+01 0 0 0 +15945 1 4.2891316120476077e+01 3.2107888265130136e+01 1.4000000005674329e+01 0 0 0 +15104 1 1.0571059152658580e+00 3.5138527378719424e+01 1.2249999855963589e+01 0 0 0 +15158 1 3.1035848913845059e+00 3.6220789054646474e+01 1.2249999971973985e+01 0 0 0 +15796 1 1.2264314400234169e+00 3.6773172783388844e+01 1.3999999911438769e+01 0 0 0 +15157 1 3.5610864258961001e+00 3.7826640415384134e+01 1.0499999989142998e+01 0 0 0 +15160 1 4.7485637234784619e+00 3.5612737222116834e+01 1.0499999987264209e+01 0 0 0 +15162 1 6.4095226289768075e+00 3.5045239415758225e+01 1.2250000037582122e+01 0 0 0 +15163 1 5.3078135434830749e+00 3.7277350383201593e+01 1.2250000030956731e+01 0 0 0 +15167 1 8.6590366633018814e+00 3.6144892803018735e+01 1.2250000019719542e+01 0 0 0 +15218 1 9.2228637493321219e+00 3.7803991812409748e+01 1.0499999964848190e+01 0 0 0 +15801 1 6.9829707000533174e+00 3.6708536135342882e+01 1.4000000081652027e+01 0 0 0 +15165 1 1.0342363331066318e+01 3.5584119239184901e+01 1.0499999957375781e+01 0 0 0 +15171 1 1.2026826156883384e+01 3.5023068866813396e+01 1.2249999981872094e+01 0 0 0 +15220 1 1.0904485253066786e+01 3.7241749757618365e+01 1.2249999979802634e+01 0 0 0 +15862 1 1.2587782334987958e+01 3.6680379297087576e+01 1.4000000000585452e+01 0 0 0 +15223 1 1.4832657682155414e+01 3.7776478919628659e+01 1.0499999966870366e+01 0 0 0 +15224 1 1.4271513932695798e+01 3.6119017860409244e+01 1.2249999976962725e+01 0 0 0 +15226 1 1.5955086424452558e+01 3.5557542374991712e+01 1.0499999993740740e+01 0 0 0 +15228 1 1.7638582768564117e+01 3.4996051112986194e+01 1.2249999991999816e+01 0 0 0 +15229 1 1.6516218774159174e+01 3.7215031387455014e+01 1.2250000013559704e+01 0 0 0 +15867 1 1.8199752863436405e+01 3.6653557501999785e+01 1.4000000005459567e+01 0 0 0 +15231 1 2.1566778937256547e+01 3.5530599653200781e+01 1.0500000042284857e+01 0 0 0 +15233 1 1.9883265618066236e+01 3.6092077329418295e+01 1.2250000008326865e+01 0 0 0 +15280 1 2.0444436260418549e+01 3.7749580788602273e+01 1.0500000028425546e+01 0 0 0 +15282 1 2.2127952028739987e+01 3.7188103240049728e+01 1.2250000018580566e+01 0 0 0 +15237 1 2.3250295117900947e+01 3.4969123130048331e+01 1.2250000025460768e+01 0 0 0 +15286 1 2.5494983468792569e+01 3.6065149595825233e+01 1.2250000019831020e+01 0 0 0 +15924 1 2.3811467286007090e+01 3.6626626260483299e+01 1.4000000020334625e+01 0 0 0 +15290 1 2.8862015759564958e+01 3.4942196347647517e+01 1.2250000028420210e+01 0 0 0 +15291 1 2.7739671450015997e+01 3.7161176070814236e+01 1.2250000027367504e+01 0 0 0 +15925 1 2.6056155415046835e+01 3.7722652703824153e+01 1.4000000043793785e+01 0 0 0 +15928 1 2.7178499691679342e+01 3.5503672902129438e+01 1.4000000039194886e+01 0 0 0 +15289 1 2.9423187654079854e+01 3.6599699426713933e+01 1.0500000013250302e+01 0 0 0 +15295 1 3.1106703633395504e+01 3.6038222831753636e+01 1.2250000028976331e+01 0 0 0 +15969 1 3.1667875516210039e+01 3.7695726012977339e+01 1.4000000014290121e+01 0 0 0 +15299 1 3.4473735855259982e+01 3.4915269987849271e+01 1.2250000005373323e+01 0 0 0 +15331 1 3.3351391714555959e+01 3.7134249628820932e+01 1.2250000012505582e+01 0 0 0 +15973 1 3.5034907715464811e+01 3.6572773083511052e+01 1.3999999997643354e+01 0 0 0 +15933 1 3.2790219822918225e+01 3.5476746367795776e+01 1.4000000028556865e+01 0 0 0 +15335 1 3.6718423764698883e+01 3.6011296908744377e+01 1.2249999994939081e+01 0 0 0 +15974 1 3.7279595803021145e+01 3.7668800109956379e+01 1.4000000005395927e+01 0 0 0 +15977 1 3.8401939901916485e+01 3.5449820599732085e+01 1.4000000017154147e+01 0 0 0 +15339 1 4.0085455971446017e+01 3.4888344301583089e+01 1.2250000002832586e+01 0 0 0 +15340 1 3.8963111831884014e+01 3.7107323747661987e+01 1.2250000001831252e+01 0 0 0 +15978 1 4.0646627913760170e+01 3.6545847527868013e+01 1.4000000026177378e+01 0 0 0 +15344 1 4.2330144003368694e+01 3.5984371161382604e+01 1.2250000028579105e+01 0 0 0 +15365 1 4.4574832018752254e+01 3.7080398086098356e+01 1.2250000035921440e+01 0 0 0 +12812 1 4.2891315944822964e+01 3.7641874320769915e+01 1.4000000028594448e+01 0 0 0 +15982 1 4.4013660023003133e+01 3.5422894891948431e+01 1.4000000020330297e+01 0 0 0 +15210 1 2.5187339293366011e+00 4.0029595782946863e+01 1.0499999976143348e+01 0 0 0 +15159 1 1.7224971090690961e+00 3.8372585790440347e+01 1.2249999958892152e+01 0 0 0 +15209 1 1.0571059702180028e+00 4.0672513437721143e+01 1.2249999951841060e+01 0 0 0 +15212 1 4.1395809461308213e+00 3.9470568453050184e+01 1.2249999990342683e+01 0 0 0 +15217 1 6.4095228860428310e+00 4.0579225029058350e+01 1.2250000029192785e+01 0 0 0 +15851 1 4.7485638566134849e+00 4.1146722892163382e+01 1.4000000027251533e+01 0 0 0 +15854 1 5.8404164411684887e+00 3.8924555943284894e+01 1.4000000064877304e+01 0 0 0 +15215 1 8.0950137916520397e+00 4.0021386795674950e+01 1.0499999982883130e+01 0 0 0 +15216 1 7.5396993846112190e+00 3.8367261909353033e+01 1.2250000035785883e+01 0 0 0 +15221 1 9.7824039299908563e+00 3.9461419159981865e+01 1.2250000029255522e+01 0 0 0 +15270 1 1.2026826438769936e+01 4.0557054518271165e+01 1.2249999987738880e+01 0 0 0 +15908 1 1.0342363641147388e+01 4.1118104823167521e+01 1.4000000057320564e+01 0 0 0 +15859 1 1.1466172232995863e+01 3.8899645272653665e+01 1.4000000032794503e+01 0 0 0 +15225 1 1.3149236830037783e+01 3.8337948973044995e+01 1.2249999959640194e+01 0 0 0 +15272 1 1.3710490862910914e+01 3.9995541464539045e+01 1.0499999965990066e+01 0 0 0 +15274 1 1.5393907426889227e+01 3.9434006551205286e+01 1.2249999962182088e+01 0 0 0 +15913 1 1.5955086613618988e+01 4.1091528202318727e+01 1.3999999991756040e+01 0 0 0 +15277 1 1.9322088846852935e+01 3.9968557881367467e+01 1.0500000030137249e+01 0 0 0 +15278 1 1.8760914964892248e+01 3.8311056185935414e+01 1.2250000011650140e+01 0 0 0 +15279 1 1.7638582858565684e+01 4.0530036946294658e+01 1.2249999992053727e+01 0 0 0 +15916 1 1.7077390798997456e+01 3.8872526150007637e+01 1.3999999972507711e+01 0 0 0 +15283 1 2.1005605958916505e+01 3.9407082626482996e+01 1.2250000021864093e+01 0 0 0 +15957 1 2.1566778913048015e+01 4.1064585564701765e+01 1.3999999998932042e+01 0 0 0 +15287 1 2.4372639567731813e+01 3.8284129445851939e+01 1.2250000045631799e+01 0 0 0 +15319 1 2.3250294991948820e+01 4.0503109086608994e+01 1.2249999997868667e+01 0 0 0 +15961 1 2.4933811308085222e+01 3.9941632552805352e+01 1.4000000039590489e+01 0 0 0 +15921 1 2.2689123438137344e+01 3.8845606353293142e+01 1.4000000041136344e+01 0 0 0 +15322 1 2.7178499432862083e+01 4.1037659016462555e+01 1.0499999988141374e+01 0 0 0 +15325 1 2.8300843456397946e+01 3.8818679234514917e+01 1.0499999983080755e+01 0 0 0 +15323 1 2.6617327457423624e+01 3.9380155935834694e+01 1.2250000020465023e+01 0 0 0 +15328 1 2.8862015431297333e+01 4.0476182454859710e+01 1.2250000040182996e+01 0 0 0 +15327 1 2.9984359465038306e+01 3.8257202602428954e+01 1.2250000024838094e+01 0 0 0 +15332 1 3.2229047521216849e+01 3.9353229169760532e+01 1.2250000026845580e+01 0 0 0 +15966 1 3.0545531464580058e+01 3.9914705780590509e+01 1.4000000050930611e+01 0 0 0 +15354 1 3.4473735536291706e+01 4.0449255939776911e+01 1.2250000020640682e+01 0 0 0 +15970 1 3.3912563632029482e+01 3.8791752746384589e+01 1.3999999993732866e+01 0 0 0 +15336 1 3.5596079798968816e+01 3.8230276409944111e+01 1.2249999985672515e+01 0 0 0 +15358 1 3.7840767797643323e+01 3.9326303297265518e+01 1.2249999974702662e+01 0 0 0 +15996 1 3.6157251676543090e+01 3.9887779550715713e+01 1.3999999992987988e+01 0 0 0 +15997 1 3.8401939694188833e+01 4.0983806490859223e+01 1.3999999981937695e+01 0 0 0 +15362 1 4.1207799896660532e+01 3.8203350687758551e+01 1.2250000006409664e+01 0 0 0 +15363 1 4.0085455751708118e+01 4.0422330239366431e+01 1.2249999986693439e+01 0 0 0 +12815 1 4.1768971809103562e+01 3.9860853916271303e+01 1.4000000007064315e+01 0 0 0 +16000 1 3.9524283875486667e+01 3.8764826989005016e+01 1.4000000002029486e+01 0 0 0 +15366 1 4.3452487879988020e+01 3.9299377698303978e+01 1.2249999997999131e+01 0 0 0 +12802 1 4.4013659814913105e+01 4.0956881022768762e+01 1.4000000016192732e+01 0 0 0 +15208 1 1.2264314519309929e+00 4.2307158690465251e+01 1.0499999968537631e+01 0 0 0 +15213 1 3.1035849744050807e+00 4.1754774767863438e+01 1.2249999954093227e+01 0 0 0 +15261 1 1.7224971957199799e+00 4.3906571475033729e+01 1.2249999908957090e+01 0 0 0 +15902 1 3.5610864937135869e+00 4.3360625983793611e+01 1.3999999947323843e+01 0 0 0 +15263 1 5.3078137333974453e+00 4.2811335866456787e+01 1.2249999979758380e+01 0 0 0 +15264 1 6.9829709355210277e+00 4.2242521569683056e+01 1.0499999972544735e+01 0 0 0 +15905 1 9.2228639599867108e+00 4.3337977222797697e+01 1.4000000079211775e+01 0 0 0 +15266 1 8.6590369284675965e+00 4.1678878276541909e+01 1.2250000025002935e+01 0 0 0 +15267 1 7.5396995847867672e+00 4.3901247244518885e+01 1.2250000000725052e+01 0 0 0 +15269 1 1.2587782510833266e+01 4.2214364915232487e+01 1.0499999987870417e+01 0 0 0 +15271 1 1.0904485467851535e+01 4.2775735256882399e+01 1.2250000033594748e+01 0 0 0 +15951 1 1.4832657894019476e+01 4.3310464587546605e+01 1.4000000009120438e+01 0 0 0 +15275 1 1.4271514163362443e+01 4.1653003597572351e+01 1.2250000010823728e+01 0 0 0 +15310 1 1.3149236983556113e+01 4.3871934556735390e+01 1.2250000029583003e+01 0 0 0 +15312 1 1.6516218952151277e+01 4.2749017156814119e+01 1.2249999985206074e+01 0 0 0 +15313 1 1.8199752983178222e+01 4.2187543297264511e+01 1.0500000011149885e+01 0 0 0 +15316 1 1.8760915118306684e+01 4.3845041983553969e+01 1.2250000010875647e+01 0 0 0 +15315 1 1.9883265680749336e+01 4.1626063173615641e+01 1.2250000012721429e+01 0 0 0 +15320 1 2.2127952070794223e+01 4.2722089190700537e+01 1.2250000018268853e+01 0 0 0 +15954 1 2.0444436390223238e+01 4.3283566658069475e+01 1.4000000010897500e+01 0 0 0 +15324 1 2.5494983288089553e+01 4.1599135669760912e+01 1.2250000009937564e+01 0 0 0 +15345 1 2.4372639568422823e+01 4.3818115544184003e+01 1.2250000005328840e+01 0 0 0 +15346 1 2.6056155317820309e+01 4.3256638831053507e+01 1.0499999981678839e+01 0 0 0 +15347 1 2.7739671285736296e+01 4.2695162255010970e+01 1.2250000020501663e+01 0 0 0 +15988 1 2.9423187429987504e+01 4.2133685601207468e+01 1.4000000044696598e+01 0 0 0 +15350 1 3.1106703358990707e+01 4.1572208951297064e+01 1.2250000010778553e+01 0 0 0 +15351 1 2.9984359294115588e+01 4.3791188792267107e+01 1.2250000038666689e+01 0 0 0 +15993 1 3.5034907524480516e+01 4.2106759084314120e+01 1.4000000006107513e+01 0 0 0 +15355 1 3.3351391479422013e+01 4.2668235666376489e+01 1.2250000016000268e+01 0 0 0 +12808 1 3.7279595643874423e+01 4.3202786056573430e+01 1.3999999984024937e+01 0 0 0 +15359 1 3.6718423574877974e+01 4.1545282818606204e+01 1.2250000008879598e+01 0 0 0 +15367 1 3.5596079652795787e+01 4.3764262398676507e+01 1.2250000008773851e+01 0 0 0 +12806 1 4.0646627747821249e+01 4.2079833551089408e+01 1.3999999994820362e+01 0 0 0 +15369 1 3.8963111646361085e+01 4.2641309684769162e+01 1.2249999988961886e+01 0 0 0 +15373 1 4.1207799710406654e+01 4.3737336770810238e+01 1.2249999973720820e+01 0 0 0 +12805 1 4.2891315753956945e+01 4.3175860508008931e+01 1.4000000004741420e+01 0 0 0 +15372 1 4.2330143789882449e+01 4.1518357247539825e+01 1.2250000004281484e+01 0 0 0 +15375 1 4.4574831826200004e+01 4.2614384332785043e+01 1.2250000003303688e+01 0 0 0 +15378 1 1.0571062280651971e+00 1.9346078391386126e+00 1.5750000020387821e+01 0 0 0 +15384 1 3.1035854728968113e+00 3.0168696877883239e+00 1.5750000063332166e+01 0 0 0 +12826 1 4.7485647091096324e+00 2.4088181777494575e+00 7.2979801757355744e-08 0 0 0 +15386 1 4.7485646273430238e+00 2.4088182091455073e+00 1.4000000069753613e+01 0 0 0 +15380 1 4.1395816882159844e+00 7.3266342684303432e-01 1.5750000051528051e+01 0 0 0 +15388 1 6.4095238121963538e+00 1.8413208115991961e+00 1.5750000057801641e+01 0 0 0 +12819 1 5.8404173657439475e+00 1.8665122647966373e-01 8.5770729185696837e-08 0 0 0 +15379 1 5.8404172734392779e+00 1.8665127302836435e-01 1.4000000063365173e+01 0 0 0 +15393 1 8.6590380634820434e+00 2.9409750166616586e+00 1.5750000017040200e+01 0 0 0 +12831 1 1.0342364954462756e+01 2.3802019394711520e+00 1.7499999995801947e+01 0 0 -1 +15391 1 1.0342364918225305e+01 2.3802019285339058e+00 1.3999999994872089e+01 0 0 0 +15392 1 9.7824052010585270e+00 7.2351584636318345e-01 1.5750000006950868e+01 0 0 0 +15396 1 1.2026827922073902e+01 1.8191520188560866e+00 1.5749999967388389e+01 0 0 0 +15394 1 1.1466173675605761e+01 1.6174233483580366e-01 1.3999999973435948e+01 0 0 0 +12834 1 1.1466173668464274e+01 1.6174235570020382e-01 1.7499999985248891e+01 0 0 -1 +12857 1 1.5955088529692855e+01 2.3536264206692605e+00 2.9189418881969686e-08 0 0 0 +15398 1 1.5393909329529373e+01 6.9610455941143301e-01 1.5750000026612129e+01 0 0 0 +15415 1 1.4271515916447781e+01 2.9151016736781394e+00 1.5749999992371922e+01 0 0 0 +15417 1 1.5955088545255114e+01 2.3536264435139329e+00 1.4000000039377682e+01 0 0 0 +15419 1 1.7638584944503755e+01 1.7921353459093743e+00 1.5750000070928541e+01 0 0 0 +15397 1 1.7077392795942536e+01 1.3462438025613868e-01 1.4000000052605854e+01 0 0 0 +12837 1 1.7077392797370148e+01 1.3462435450424431e-01 1.3621782812833771e-08 0 0 0 +12862 1 2.1566781146241023e+01 2.3266842327408219e+00 1.7499999991093560e+01 0 0 -1 +15422 1 2.1566781095980893e+01 2.3266843149738774e+00 1.4000000007608516e+01 0 0 0 +15423 1 2.1005608051148371e+01 6.6918121204070546e-01 1.5749999995738410e+01 0 0 0 +15424 1 1.9883267845830808e+01 2.8881618729468248e+00 1.5750000044879858e+01 0 0 0 +12866 1 2.4933813435775239e+01 1.2037311117750802e+00 1.7499999964246179e+01 0 0 -1 +15426 1 2.4933813434709002e+01 1.2037311487402345e+00 1.3999999960358547e+01 0 0 0 +15427 1 2.3250297181721148e+01 1.7652077338601668e+00 1.5749999960976785e+01 0 0 0 +15460 1 2.5494985614270828e+01 2.8612342151738979e+00 1.5749999962021212e+01 0 0 0 +15425 1 2.2689125423916920e+01 1.0770499351512798e-01 1.3999999970402337e+01 0 0 0 +12865 1 2.2689125483225126e+01 1.0770494255154671e-01 1.7499999970827712e+01 0 0 -1 +15429 1 2.6617329477599966e+01 6.4225444422077582e-01 1.5749999988578693e+01 0 0 0 +15464 1 2.8862017534131301e+01 1.7382809249998927e+00 1.5750000029551520e+01 0 0 0 +12906 1 3.0545533384911867e+01 1.1768043157648647e+00 4.5307270823968793e-08 0 0 0 +15466 1 3.0545533338570625e+01 1.1768043086940196e+00 1.4000000015143812e+01 0 0 0 +15468 1 3.2229049146200808e+01 6.1532779932295356e-01 1.5750000024716570e+01 0 0 0 +15469 1 3.1106705484447705e+01 2.8343074357498019e+00 1.5750000046805217e+01 0 0 0 +15472 1 3.4473736991361690e+01 1.7113545521957698e+00 1.5749999962113318e+01 0 0 0 +12911 1 3.6157252765538828e+01 1.1498781553678670e+00 1.7499999939717739e+01 0 0 -1 +15520 1 3.8401940473273172e+01 2.2459050320197242e+00 1.3999999971694109e+01 0 0 0 +15471 1 3.6157252684219145e+01 1.1498781470000794e+00 1.3999999960639798e+01 0 0 0 +15474 1 3.7840768458072695e+01 5.8840184709139165e-01 1.5749999920489364e+01 0 0 0 +15518 1 3.6718424758357401e+01 2.8073814175109879e+00 1.5749999941514098e+01 0 0 0 +15522 1 4.0085456130771789e+01 1.6844287273330019e+00 1.5749999963162738e+01 0 0 0 +15524 1 4.1768971830516769e+01 1.1229523168855249e+00 1.3999999987358381e+01 0 0 0 +15473 1 3.9524284127715383e+01 2.6925440803989738e-02 1.3999999951431942e+01 0 0 0 +21761 1 4.5136003449265843e+01 -1.7134801792562613e-07 1.4000000030760985e+01 0 0 0 +15525 1 4.4013659683146713e+01 2.2189793559632847e+00 1.4000000000486589e+01 0 0 0 +15526 1 4.3452487571303344e+01 5.6147612360551347e-01 1.5750000029443402e+01 0 0 0 +15527 1 4.2330143914163656e+01 2.7804556569948686e+00 1.5749999988601608e+01 0 0 0 +15385 1 1.7224976310335609e+00 5.1686663186579267e+00 1.5750000020153658e+01 0 0 0 +12823 1 3.5610871840913942e+00 4.6227212332936718e+00 4.0244223953322944e-08 0 0 0 +15383 1 3.5610870758408879e+00 4.6227212795972044e+00 1.4000000072264390e+01 0 0 0 +15389 1 5.3078144773111182e+00 4.0734316226885641e+00 1.5750000078078061e+01 0 0 0 +15403 1 4.1395817257742387e+00 6.2666496404104350e+00 1.5750000064760467e+01 0 0 0 +12849 1 9.2228651281124350e+00 4.6000744402020084e+00 3.2592684107157766e-08 0 0 0 +15409 1 9.2228650513600989e+00 4.6000744118943153e+00 1.3999999991196912e+01 0 0 0 +15407 1 7.5397004496306286e+00 5.1633440106621613e+00 1.5750000030526916e+01 0 0 0 +15412 1 9.7824051871000108e+00 6.2575022242983414e+00 1.5749999957382473e+01 0 0 0 +15411 1 1.0904486807238564e+01 4.0378328284483542e+00 1.5749999956197648e+01 0 0 0 +15414 1 1.4832659745528359e+01 4.5725629404862946e+00 1.4000000030428156e+01 0 0 0 +12854 1 1.4832659688273719e+01 4.5725629812284652e+00 1.7706511812320969e-08 0 0 0 +15416 1 1.3149238590804487e+01 5.1340327550723917e+00 1.5750000000501222e+01 0 0 0 +15448 1 1.5393909434365559e+01 6.2300908155516872e+00 1.5750000032860875e+01 0 0 0 +15420 1 1.6516220961739180e+01 4.0111156770746152e+00 1.5750000041609448e+01 0 0 0 +15452 1 1.8760917304087066e+01 5.1071407508188846e+00 1.5750000044739382e+01 0 0 0 +12894 1 2.0444438664193896e+01 4.5456654444720082e+00 1.7966272025660146e-08 0 0 0 +15454 1 2.0444438603376675e+01 4.5456655375126243e+00 1.4000000043699346e+01 0 0 0 +15456 1 2.2127954368844716e+01 3.9841879678292385e+00 1.5749999994627213e+01 0 0 0 +15457 1 2.1005608405653202e+01 6.2031674064966928e+00 1.5750000035137946e+01 0 0 0 +15461 1 2.4372642019748753e+01 5.0802141546806991e+00 1.5749999956065457e+01 0 0 0 +12948 1 2.8300845929991809e+01 5.6147637958678009e+00 1.8980045979333227e-08 0 0 0 +15465 1 2.7739673705192200e+01 3.9572606444988350e+00 1.5750000013440600e+01 0 0 0 +15506 1 2.6617330015740652e+01 6.1762405068086608e+00 1.5749999998796495e+01 0 0 0 +15508 1 2.8300845926995883e+01 5.6147638184549562e+00 1.4000000010306534e+01 0 0 0 +12903 1 2.9423189723893870e+01 3.3957840081214918e+00 2.6444691769711426e-08 0 0 0 +15463 1 2.9423189735325522e+01 3.3957840280764309e+00 1.4000000006126081e+01 0 0 0 +15510 1 2.9984361756334405e+01 5.0532871840471358e+00 1.5750000056441305e+01 0 0 0 +15515 1 3.2229049742196324e+01 6.1493137733814587e+00 1.5750000026499755e+01 0 0 0 +12953 1 3.3912565562179985e+01 5.5878373613020491e+00 1.7499999986269891e+01 0 0 -1 +15513 1 3.3912565438220568e+01 5.5878373789753546e+00 1.4000000004648015e+01 0 0 0 +12956 1 3.5034909115057850e+01 3.3688576876596503e+00 1.7499999949379109e+01 0 0 -1 +15514 1 3.3351393438446053e+01 3.9303342593893538e+00 1.5749999996164913e+01 0 0 0 +15516 1 3.5034909018497466e+01 3.3688577042365715e+00 1.3999999980467297e+01 0 0 0 +15517 1 3.7279596901788096e+01 4.4648846495380932e+00 1.3999999960853597e+01 0 0 0 +15519 1 3.5596081338140436e+01 5.0263610148206546e+00 1.5749999965031890e+01 0 0 0 +15572 1 3.7840768979176246e+01 6.1223878385643200e+00 1.5749999935863940e+01 0 0 0 +13014 1 3.9524284614861685e+01 5.5609115126912370e+00 1.7499999953033310e+01 0 0 -1 +15521 1 4.0646628246822836e+01 3.3419319728753254e+00 1.3999999962946465e+01 0 0 0 +15523 1 3.8963112528754024e+01 3.9034081968146501e+00 1.5749999933764320e+01 0 0 0 +15574 1 3.9524284692120773e+01 5.5609114682235736e+00 1.3999999952163908e+01 0 0 0 +15576 1 4.1207800285351453e+01 4.9994351538842849e+00 1.5749999938059331e+01 0 0 0 +15578 1 4.2891315984285370e+01 4.4379587474653910e+00 1.3999999996466991e+01 0 0 0 +15987 1 2.7739671296243895e+01 4.2695162301393296e+01 1.5750000078927036e+01 0 0 0 +15579 1 4.4574831781382564e+01 3.8764825633662050e+00 1.5750000038788754e+01 0 0 0 +15580 1 4.3452487991592918e+01 6.0954620684398595e+00 1.5750000003002357e+01 0 0 0 +15401 1 2.5187344469361381e+00 6.8256766193758134e+00 1.4000000053371332e+01 0 0 0 +12839 1 1.2264316781936537e+00 9.1032393650276546e+00 1.9191805478158130e-08 0 0 0 +12841 1 2.5187345235915024e+00 6.8256765477572863e+00 7.3884272921986849e-08 0 0 0 +15399 1 1.2264316540151194e+00 9.1032395105579305e+00 1.4000000049325614e+01 0 0 0 +15400 1 1.0571061200002825e+00 7.4685939366537806e+00 1.5750000032949886e+01 0 0 0 +15404 1 3.1035854156089742e+00 8.5508559868286191e+00 1.5750000063428152e+01 0 0 0 +15408 1 6.4095237055166567e+00 7.3753071447659257e+00 1.5750000040558687e+01 0 0 0 +15436 1 5.3078142164693833e+00 9.6074179344338848e+00 1.5750000061488615e+01 0 0 0 +12846 1 8.0950148560157658e+00 6.8174693639169854e+00 4.9404654589579877e-08 0 0 0 +15406 1 8.0950147327696715e+00 6.8174693680364289e+00 1.4000000010166557e+01 0 0 0 +15438 1 6.9829715661384384e+00 9.0386042019175292e+00 1.4000000036479928e+01 0 0 0 +12878 1 6.9829716875258399e+00 9.0386041938810777e+00 6.0240687105306279e-08 0 0 0 +15440 1 8.6590378662796947e+00 8.4749613803409769e+00 1.5749999987395112e+01 0 0 0 +15443 1 1.2587783881780208e+01 9.0104490050083026e+00 1.3999999974233969e+01 0 0 0 +12883 1 1.2587783908366751e+01 9.0104490841611113e+00 1.7499999999194007e+01 0 0 -1 +15444 1 1.2026827886325178e+01 7.3531383507891315e+00 1.5749999961238213e+01 0 0 0 +15445 1 1.0904486540761004e+01 9.5718191869265681e+00 1.5749999968800257e+01 0 0 0 +15446 1 1.3710492574306617e+01 6.7916254970249188e+00 1.3999999987561045e+01 0 0 0 +12886 1 1.3710492558486830e+01 6.7916255429807197e+00 2.7932678392517118e-09 0 0 0 +15449 1 1.4271515846698637e+01 8.4490879178049187e+00 1.5749999990205467e+01 0 0 0 +15451 1 1.9322091170789939e+01 6.7646426349334829e+00 1.4000000039773393e+01 0 0 0 +15496 1 1.8199755167640639e+01 8.9836280868183138e+00 1.4000000037400408e+01 0 0 0 +12891 1 1.9322091248433544e+01 6.7646425878519647e+00 6.6772287254934781e-08 0 0 0 +12936 1 1.8199755202336085e+01 8.9836280487145537e+00 6.8991397483841865e-08 0 0 0 +15453 1 1.7638585057841969e+01 7.3261215644337740e+00 1.5750000057930610e+01 0 0 0 +15494 1 1.6516220902440466e+01 9.5451018096451197e+00 1.5750000028616324e+01 0 0 0 +15498 1 1.9883268023529887e+01 8.4221480263424464e+00 1.5750000031045566e+01 0 0 0 +15503 1 2.2127954567665498e+01 9.5181740395964738e+00 1.5749999998258765e+01 0 0 0 +15501 1 2.3811469841310473e+01 8.9566970350518833e+00 1.4000000005827257e+01 0 0 0 +12941 1 2.3811469879724708e+01 8.9566969594750816e+00 1.7499999970401607e+01 0 0 -1 +15502 1 2.3250297557866062e+01 7.2991938405811183e+00 1.5749999993364034e+01 0 0 0 +15507 1 2.5494986004204186e+01 8.3952202478665860e+00 1.5750000013698992e+01 0 0 0 +12945 1 2.7178502145820353e+01 7.8337435295528728e+00 8.7794091996329371e-09 0 0 0 +15505 1 2.7178502187852544e+01 7.8337435243107647e+00 1.3999999989336146e+01 0 0 0 +15511 1 2.8862018092058619e+01 7.2722669557351924e+00 1.5750000042247374e+01 0 0 0 +15560 1 2.7739674071065686e+01 9.4912466964997204e+00 1.5750000018680298e+01 0 0 0 +15564 1 3.1106705976728083e+01 8.3682934779711360e+00 1.5750000061415900e+01 0 0 0 +13006 1 3.2790221899162944e+01 7.8068170170678295e+00 1.4808673398647443e-08 0 0 0 +15566 1 3.2790221805459346e+01 7.8068170430284365e+00 1.4000000015586853e+01 0 0 0 +15568 1 3.4473737548428502e+01 7.2453405818448786e+00 1.5750000002946971e+01 0 0 0 +15569 1 3.3351393883831250e+01 9.4643202547886176e+00 1.5750000040929537e+01 0 0 0 +13011 1 3.8401940941044451e+01 7.7798910426268080e+00 1.7499999928676750e+01 0 0 -1 +15571 1 3.8401940916343030e+01 7.7798910482178574e+00 1.3999999954671413e+01 0 0 0 +15573 1 3.6718425213830393e+01 8.3413674222657050e+00 1.5749999924096155e+01 0 0 0 +15575 1 4.1768972249169757e+01 6.6569383041934573e+00 1.3999999967294963e+01 0 0 0 +15577 1 4.0085456587237196e+01 7.2184147192333459e+00 1.5749999917030456e+01 0 0 0 +15627 1 3.8963112920717833e+01 9.4373942295210238e+00 1.5749999921099548e+01 0 0 0 +15631 1 4.2330144264891203e+01 8.3144415785076706e+00 1.5749999979683068e+01 0 0 0 +15633 1 4.4013660025580521e+01 7.7529652625015943e+00 1.4000000001651452e+01 0 0 0 +15634 1 4.4574832064690483e+01 9.4104683831937432e+00 1.5749999983920944e+01 0 0 0 +15432 1 1.7224974416008405e+00 1.0702652670153910e+01 1.5750000038959469e+01 0 0 0 +12875 1 5.8404170444878787e+00 1.1254623887387778e+01 8.1670137319633795e-08 0 0 0 +15435 1 5.8404169431629267e+00 1.1254623973959527e+01 1.4000000051752741e+01 0 0 0 +15437 1 4.1395813926149101e+00 1.1800636049652383e+01 1.5750000058258220e+01 0 0 0 +15441 1 7.5397001258998140e+00 1.0697330441878945e+01 1.5750000037690592e+01 0 0 0 +15488 1 1.1466173288502080e+01 1.1229714963816527e+01 1.3999999958183318e+01 0 0 0 +12928 1 1.1466173354902233e+01 1.1229715009753683e+01 1.7499999996487340e+01 0 0 -1 +15486 1 9.7824047428899039e+00 1.1791488563603229e+01 1.5750000000891461e+01 0 0 0 +15490 1 1.3149238303052009e+01 1.0668018968187639e+01 1.5749999971390496e+01 0 0 0 +15495 1 1.5393909148995892e+01 1.1764076940567632e+01 1.5750000004543761e+01 0 0 0 +12933 1 1.7077392853554127e+01 1.1202596732598034e+01 4.0107163812308499e-08 0 0 0 +15493 1 1.7077392805934814e+01 1.1202596708172766e+01 1.4000000031249526e+01 0 0 0 +15499 1 1.8760917271100524e+01 1.0641126861594698e+01 1.5750000057915546e+01 0 0 0 +15552 1 2.1005608358266038e+01 1.1737153436422892e+01 1.5750000033680221e+01 0 0 0 +12994 1 2.2689126019916994e+01 1.1175677152126420e+01 1.6477976316764398e-08 0 0 0 +12995 1 2.4933813969797821e+01 1.2271703201846769e+01 1.7499999998829033e+01 0 0 -1 +15554 1 2.2689125939118618e+01 1.1175677179446128e+01 1.3999999996905629e+01 0 0 0 +15555 1 2.4933813947852329e+01 1.2271703229968443e+01 1.3999999980834890e+01 0 0 0 +15556 1 2.4372642207067560e+01 1.0614200169580227e+01 1.5749999980350413e+01 0 0 0 +12998 1 2.6056158089811799e+01 1.0052723335202447e+01 1.7499999985198261e+01 0 0 -1 +15558 1 2.6056158107894536e+01 1.0052723393553494e+01 1.4000000000982023e+01 0 0 0 +15561 1 2.6617330185586788e+01 1.1710226498113474e+01 1.5749999992502415e+01 0 0 0 +13003 1 3.1667877989307549e+01 1.0025796613919866e+01 3.0681878371296989e-08 0 0 0 +15563 1 3.1667877928232109e+01 1.0025796618724735e+01 1.4000000029883651e+01 0 0 0 +13057 1 3.0545534124567968e+01 1.2244776285778972e+01 4.7729947993957467e-08 0 0 0 +15565 1 2.9984362094135200e+01 1.0587273190785481e+01 1.5750000066849021e+01 0 0 0 +15617 1 3.0545534103293960e+01 1.2244776327330619e+01 1.4000000024020400e+01 0 0 0 +15619 1 3.2229050022664843e+01 1.1683299768507815e+01 1.5750000057043819e+01 0 0 0 +13062 1 3.6157253604979587e+01 1.2217850118550508e+01 1.7499999977392584e+01 0 0 -1 +15622 1 3.6157253504132612e+01 1.2217850151192197e+01 1.3999999986775022e+01 0 0 0 +13065 1 3.7279597332913823e+01 9.9988706701451999e+00 1.7499999959205031e+01 0 0 -1 +15623 1 3.5596081685904750e+01 1.0560347017488008e+01 1.5749999971695136e+01 0 0 0 +15625 1 3.7279597260445470e+01 9.9988706595185857e+00 1.3999999945079127e+01 0 0 0 +15628 1 3.7840769317966021e+01 1.1656373849290665e+01 1.5749999929576045e+01 0 0 0 +13124 1 4.1768972472897907e+01 1.2190924300527975e+01 1.7499999956340403e+01 0 0 -1 +15632 1 4.1207800570677051e+01 1.0533421129843568e+01 1.5749999950761952e+01 0 0 0 +15986 1 2.6056155338115953e+01 4.3256638895261801e+01 1.4000000057802632e+01 0 0 0 +13070 1 4.2891316228438612e+01 9.9719447134953416e+00 1.7499999992835974e+01 0 0 -1 +15686 1 4.3452488241183381e+01 1.1629447963415583e+01 1.5749999976834129e+01 0 0 0 +15433 1 1.0571062609594042e+00 1.3002580405456353e+01 1.5750000086916577e+01 0 0 0 +15478 1 3.1035850925006354e+00 1.4084842466197875e+01 1.5750000103939552e+01 0 0 0 +12917 1 3.5610866638695278e+00 1.5690694191127704e+01 7.2212461788012661e-08 0 0 0 +12920 1 4.7485642610022847e+00 1.3476790954146331e+01 8.5107703995390693e-08 0 0 0 +15477 1 3.5610865272853256e+00 1.5690694256154826e+01 1.4000000095842092e+01 0 0 0 +15480 1 4.7485641642091201e+00 1.3476791039713040e+01 1.4000000073098301e+01 0 0 0 +15482 1 6.4095233236892151e+00 1.2909293615864446e+01 1.5750000057806259e+01 0 0 0 +15483 1 5.3078139079897317e+00 1.5141404567232797e+01 1.5750000090865100e+01 0 0 0 +12978 1 9.2228643289311663e+00 1.5668047295770299e+01 2.1043462083980558e-08 0 0 0 +15487 1 8.6590373949212687e+00 1.4008947846316140e+01 1.5750000028045459e+01 0 0 0 +15538 1 9.2228642388038882e+00 1.5668047244266026e+01 1.3999999988228591e+01 0 0 0 +12925 1 1.0342364351922051e+01 1.3448174682571306e+01 1.7499999996726860e+01 0 0 -1 +15485 1 1.0342364281758185e+01 1.3448174627769980e+01 1.3999999979972110e+01 0 0 0 +15491 1 1.2026827412191672e+01 1.2887124605241423e+01 1.5749999958543672e+01 0 0 0 +15540 1 1.0904486039090539e+01 1.5105805506672281e+01 1.5749999962061018e+01 0 0 0 +12983 1 1.4832659067272255e+01 1.5640535239120618e+01 1.7499999980036815e+01 0 0 -1 +15543 1 1.4832659041799193e+01 1.5640535197381359e+01 1.3999999975239938e+01 0 0 0 +15546 1 1.5955088179455343e+01 1.3421598705954297e+01 1.4000000007837901e+01 0 0 0 +12986 1 1.5955088228405842e+01 1.3421598709344170e+01 1.1913240172134465e-08 0 0 0 +15544 1 1.4271515403036716e+01 1.3983074023082059e+01 1.5749999945100155e+01 0 0 0 +15548 1 1.7638584817891992e+01 1.2860107590393298e+01 1.5750000058928778e+01 0 0 0 +15549 1 1.6516220470162114e+01 1.5079087819901153e+01 1.5750000005118352e+01 0 0 0 +12991 1 2.1566781290353475e+01 1.3394656352853152e+01 3.0933065886529221e-08 0 0 0 +13045 1 2.0444438397207765e+01 1.5613637465288162e+01 4.5171553608724935e-08 0 0 0 +15551 1 2.1566781205951465e+01 1.3394656426593238e+01 1.4000000037611773e+01 0 0 0 +15605 1 2.0444438333352782e+01 1.5613637519822468e+01 1.4000000051839315e+01 0 0 0 +15553 1 1.9883267762011691e+01 1.3956133980690133e+01 1.5750000056890347e+01 0 0 0 +15607 1 2.2127954294369147e+01 1.5052159969131498e+01 1.5750000024156000e+01 0 0 0 +15557 1 2.3250297505460786e+01 1.2833179845771399e+01 1.5750000012561300e+01 0 0 0 +15611 1 2.5494985911771160e+01 1.3929206269311885e+01 1.5749999998155332e+01 0 0 0 +15615 1 2.8862018142271459e+01 1.2806252935965516e+01 1.5750000030720901e+01 0 0 0 +15616 1 2.7739673923151759e+01 1.5025232651787643e+01 1.5750000024462073e+01 0 0 0 +13054 1 2.9423190086223862e+01 1.4463755991987277e+01 1.8015398950410599e-08 0 0 0 +15614 1 2.9423190110923791e+01 1.4463756018552376e+01 1.4000000014236798e+01 0 0 0 +15620 1 3.1106706003371571e+01 1.3902279415223253e+01 1.5750000040847292e+01 0 0 0 +13116 1 3.5034909658403485e+01 1.4436829623645618e+01 4.7870365449398378e-09 0 0 0 +15624 1 3.4473737765036581e+01 1.2779326506759745e+01 1.5750000013402959e+01 0 0 0 +15674 1 3.3351393872411421e+01 1.4998306185765808e+01 1.5750000018608810e+01 0 0 0 +15676 1 3.5034909563704574e+01 1.4436829654549694e+01 1.4000000001738973e+01 0 0 0 +15678 1 3.6718425375244607e+01 1.3875353388529538e+01 1.5749999972627037e+01 0 0 0 +13121 1 4.0646628760820541e+01 1.4409903915854740e+01 1.7499999970560197e+01 0 0 -1 +15682 1 4.0085456830850489e+01 1.2752400701397038e+01 1.5749999938490479e+01 0 0 0 +15683 1 3.8963113005106152e+01 1.4971380178782548e+01 1.5749999947265199e+01 0 0 0 +13125 1 4.4013660224897166e+01 1.3286951115893446e+01 1.7499999985903244e+01 0 0 -1 +13178 1 4.2891316414633536e+01 1.5505930573842669e+01 1.7499999969983751e+01 0 0 -1 +15687 1 4.2330144490870204e+01 1.3848427473208867e+01 1.5749999944022756e+01 0 0 0 +15739 1 4.4574832248090225e+01 1.4944454154714546e+01 1.5749999989516288e+01 0 0 0 +12970 1 2.5187341036971245e+00 1.7893649613712238e+01 5.4932517201677911e-08 0 0 0 +15530 1 2.5187339725165949e+00 1.7893649708579247e+01 1.4000000139614025e+01 0 0 0 +15479 1 1.7224971817044017e+00 1.6236639258164974e+01 1.5750000128488670e+01 0 0 0 +15529 1 1.0571060996381563e+00 1.8536567110228042e+01 1.5750000137196922e+01 0 0 0 +15532 1 4.1395810866504599e+00 1.7334622723524017e+01 1.5750000101352944e+01 0 0 0 +15537 1 6.4095228599028164e+00 1.8443280287984113e+01 1.5750000050749323e+01 0 0 0 +12975 1 8.0950139472373674e+00 1.7885442390035688e+01 4.3170171437623139e-08 0 0 0 +15535 1 8.0950138218636116e+00 1.7885442348580675e+01 1.4000000016395648e+01 0 0 0 +15536 1 7.5396996567586232e+00 1.6231316980631998e+01 1.5750000047012824e+01 0 0 0 +15541 1 9.7824042597941130e+00 1.7325475027351850e+01 1.5749999980464981e+01 0 0 0 +15595 1 1.2026826914543745e+01 1.8421110859283193e+01 1.5749999942140873e+01 0 0 0 +13037 1 1.3710491697897000e+01 1.7859597837022296e+01 1.7499999953515488e+01 0 0 -1 +15597 1 1.3710491631968724e+01 1.7859597808678913e+01 1.3999999954371170e+01 0 0 0 +15545 1 1.3149237800267828e+01 1.6202005164070783e+01 1.5749999963426651e+01 0 0 0 +15599 1 1.5393908618024094e+01 1.7298062965312965e+01 1.5749999988235132e+01 0 0 0 +13042 1 1.9322090591500444e+01 1.7832614489436207e+01 5.9228607796057986e-08 0 0 0 +15602 1 1.9322090538871478e+01 1.7832614523405990e+01 1.4000000032444181e+01 0 0 0 +15603 1 1.8760916826451407e+01 1.6175112756003710e+01 1.5750000041125714e+01 0 0 0 +15604 1 1.7638584261507908e+01 1.8394093496572793e+01 1.5750000027472971e+01 0 0 0 +15608 1 2.1005607943725245e+01 1.7271139307923313e+01 1.5750000069825921e+01 0 0 0 +15612 1 2.4372641916008195e+01 1.6148186105511630e+01 1.5750000010607206e+01 0 0 0 +15662 1 2.3250297023174600e+01 1.8367165720310627e+01 1.5750000072031558e+01 0 0 0 +13105 1 2.7178501740984604e+01 1.8901715429047751e+01 1.4174112550335849e-08 0 0 0 +13108 1 2.8300845913727859e+01 1.6682735753514834e+01 1.2639119972845947e-08 0 0 0 +15665 1 2.7178501709004625e+01 1.8901715409189539e+01 1.4000000018048492e+01 0 0 0 +15666 1 2.6617329820089438e+01 1.7244212471518786e+01 1.5750000008912268e+01 0 0 0 +15668 1 2.8300845874599641e+01 1.6682735773241593e+01 1.4000000015201829e+01 0 0 0 +15671 1 2.8862017810282023e+01 1.8340238871318913e+01 1.5750000015114797e+01 0 0 0 +15670 1 2.9984361889494259e+01 1.6121259112534386e+01 1.5750000027749405e+01 0 0 0 +15675 1 3.2229049808981472e+01 1.7217285633816800e+01 1.5750000024340286e+01 0 0 0 +13113 1 3.3912565757722646e+01 1.6655809229980438e+01 1.7536304852683315e-08 0 0 0 +15673 1 3.3912565664379372e+01 1.6655809276448171e+01 1.4000000027894599e+01 0 0 0 +15726 1 3.2790221665906991e+01 1.8874788884333014e+01 1.4000000023808900e+01 0 0 0 +13166 1 3.2790221720130958e+01 1.8874788845063065e+01 2.3457257469772230e-08 0 0 0 +15728 1 3.4473737545422821e+01 1.8313312437210669e+01 1.5750000006745987e+01 0 0 0 +13171 1 3.8401940997104511e+01 1.8847862914453291e+01 1.7499999980845487e+01 0 0 -1 +15679 1 3.5596081660592468e+01 1.6094332933753734e+01 1.5749999997865766e+01 0 0 0 +15732 1 3.7840769197077883e+01 1.7190359762312212e+01 1.5749999970552476e+01 0 0 0 +13175 1 4.1768972493079488e+01 1.7724910093640293e+01 1.7499999953897394e+01 0 0 -1 +13174 1 3.9524284967511520e+01 1.6628883392602773e+01 1.7499999963945029e+01 0 0 -1 +15736 1 4.1207800660259394e+01 1.6067407036726468e+01 1.5749999944511790e+01 0 0 0 +15737 1 4.0085456738665222e+01 1.8286386593092509e+01 1.5749999942699503e+01 0 0 0 +13233 1 4.4013660227233430e+01 1.8820936829909865e+01 1.7499999971914558e+01 0 0 -1 +15958 1 2.3811467226231304e+01 4.2160612292581831e+01 1.4000000031461509e+01 0 0 0 +15740 1 4.3452488316622805e+01 1.7163433716216900e+01 1.5749999977780664e+01 0 0 0 +12968 1 1.2264314867878445e+00 2.0171212703323874e+01 7.4375279268679151e-08 0 0 0 +15528 1 1.2264314702821104e+00 2.0171212830004176e+01 1.4000000127396024e+01 0 0 0 +15533 1 3.1035848518962657e+00 1.9618829287589445e+01 1.5750000098059868e+01 0 0 0 +15583 1 1.7224969093790670e+00 2.1770626089194540e+01 1.5750000083971910e+01 0 0 0 +15587 1 5.3078134765485734e+00 2.0675391290616261e+01 1.5750000070267138e+01 0 0 0 +13029 1 6.9829707819260838e+00 2.0106577391556655e+01 3.3885136474509636e-08 0 0 0 +15589 1 6.9829706649250713e+00 2.0106577341201991e+01 1.4000000063339336e+01 0 0 0 +15591 1 8.6590368675334783e+00 1.9542934358565013e+01 1.5750000006032840e+01 0 0 0 +15592 1 7.5396991836152818e+00 2.1765303591270374e+01 1.5750000066969656e+01 0 0 0 +13034 1 1.2587782896727008e+01 2.0078421473455617e+01 1.7499999983841494e+01 0 0 -1 +15594 1 1.2587782799511565e+01 2.0078421412617946e+01 1.3999999967911229e+01 0 0 0 +15596 1 1.0904485486692158e+01 2.0639791839277382e+01 1.5749999983840580e+01 0 0 0 +15600 1 1.4271514840488040e+01 1.9517060088731174e+01 1.5749999960852815e+01 0 0 0 +15650 1 1.3149237210257908e+01 2.1735991248449245e+01 1.5749999979219012e+01 0 0 0 +13096 1 1.8199754247613040e+01 2.0051599883859698e+01 4.0940065559880168e-08 0 0 0 +15656 1 1.8199754225959602e+01 2.0051599907221387e+01 1.3999999995564034e+01 0 0 0 +15654 1 1.6516219869061498e+01 2.0613073726172274e+01 1.5749999983683331e+01 0 0 0 +15659 1 1.8760916187093386e+01 2.1709098606255967e+01 1.5750000018339991e+01 0 0 0 +15658 1 1.9883267205287467e+01 1.9490119811043968e+01 1.5750000018790811e+01 0 0 0 +15663 1 2.2127953685809995e+01 2.0586145774966656e+01 1.5750000047841489e+01 0 0 0 +13101 1 2.3811469134181877e+01 2.0024668765082943e+01 1.9931452044374964e-08 0 0 0 +15661 1 2.3811469072034811e+01 2.0024668829946119e+01 1.4000000048973707e+01 0 0 0 +15667 1 2.5494985389893021e+01 1.9463192106471414e+01 1.5750000050011776e+01 0 0 0 +15716 1 2.4372641235060502e+01 2.1682171923402692e+01 1.5750000020149468e+01 0 0 0 +13158 1 2.6056157300982566e+01 2.1120695159416986e+01 1.3801621179254653e-08 0 0 0 +15718 1 2.6056157236723077e+01 2.1120695172407459e+01 1.4000000024459160e+01 0 0 0 +15720 1 2.7739673409994722e+01 2.0559218521856803e+01 1.5750000023106864e+01 0 0 0 +13163 1 3.1667877466084885e+01 2.1093768375149008e+01 1.3950064214895974e-08 0 0 0 +15723 1 3.1667877384184973e+01 2.1093768381942919e+01 1.4000000044970369e+01 0 0 0 +15724 1 3.1106705644104885e+01 1.9436265315994760e+01 1.5750000030595611e+01 0 0 0 +15725 1 2.9984361403439671e+01 2.1655244940118124e+01 1.5750000038318012e+01 0 0 0 +15729 1 3.3351393529643005e+01 2.0532292044672790e+01 1.5750000037166362e+01 0 0 0 +13225 1 3.7279597069503048e+01 2.1066842522579076e+01 8.9501845934591984e-09 0 0 0 +15733 1 3.6718425131070205e+01 1.9409339327073006e+01 1.5749999975642403e+01 0 0 0 +15783 1 3.5596081298754690e+01 2.1628318854063888e+01 1.5750000024651634e+01 0 0 0 +13229 1 4.0646628616321607e+01 1.9943889785137436e+01 1.7499999954904190e+01 0 0 -1 +15787 1 3.8963112788959819e+01 2.0505366117223961e+01 1.5749999975679101e+01 0 0 0 +15792 1 4.1207800479995917e+01 2.1601392897223548e+01 1.5749999984523441e+01 0 0 0 +13230 1 4.2891316312404705e+01 2.1039916333059281e+01 1.7499999952717090e+01 0 0 -1 +15791 1 4.2330144410212526e+01 1.9382413280362588e+01 1.5749999950975692e+01 0 0 0 +15794 1 4.4574832187494181e+01 2.0478439886935632e+01 1.5749999954131081e+01 0 0 0 +15584 1 1.0571058703539469e+00 2.4070554033839997e+01 1.5750000109306942e+01 0 0 0 +15638 1 3.1035847439067861e+00 2.5152816200420027e+01 1.5750000101527943e+01 0 0 0 +13026 1 5.8404162225367600e+00 2.2322597280334570e+01 5.0949335417271868e-08 0 0 0 +13080 1 4.7485635365615755e+00 2.4544764503695749e+01 4.5017166883098980e-08 0 0 0 +15586 1 5.8404161476889351e+00 2.2322597294971185e+01 1.4000000078584936e+01 0 0 0 +15640 1 4.7485634851360743e+00 2.4544764488571030e+01 1.4000000107473875e+01 0 0 0 +15588 1 4.1395807489018033e+00 2.2868609498012304e+01 1.5750000045894964e+01 0 0 0 +15642 1 6.4095224844180647e+00 2.3977266925504697e+01 1.5750000074747778e+01 0 0 0 +15647 1 8.6590365318640004e+00 2.5076920802084516e+01 1.5750000075344687e+01 0 0 0 +13088 1 1.1466172315360058e+01 2.2297687539696707e+01 6.0789524525262095e-09 0 0 0 +13085 1 1.0342363401276788e+01 2.4516147340306393e+01 3.2631394475401976e-08 0 0 0 +15648 1 1.1466172189741572e+01 2.2297687511223408e+01 1.4000000004920498e+01 0 0 0 +15645 1 1.0342363299138059e+01 2.4516147305807731e+01 1.4000000058480909e+01 0 0 0 +15646 1 9.7824037425000956e+00 2.2859461382670190e+01 1.5750000041356827e+01 0 0 0 +15651 1 1.2026826371372794e+01 2.3955096994747976e+01 1.5750000006523818e+01 0 0 0 +13146 1 1.5955087106326141e+01 2.4489570556877979e+01 1.7499999990304985e+01 0 0 -1 +15706 1 1.5955086982172594e+01 2.4489570585379408e+01 1.3999999972722200e+01 0 0 0 +15655 1 1.5393908015451439e+01 2.2832048898715151e+01 1.5749999987653704e+01 0 0 0 +15704 1 1.4271514320820623e+01 2.5051046069126855e+01 1.5749999957134674e+01 0 0 0 +13093 1 1.7077391737153778e+01 2.2270568542142154e+01 9.7920960229203047e-10 0 0 0 +15653 1 1.7077391660855419e+01 2.2270568528678471e+01 1.3999999982764068e+01 0 0 0 +15708 1 1.7638583627953647e+01 2.3928079315420192e+01 1.5749999996141193e+01 0 0 0 +13151 1 2.1566780007218700e+01 2.4462627968625739e+01 2.1141577377647991e-08 0 0 0 +15711 1 2.1566779951897182e+01 2.4462628014102961e+01 1.3999999980431259e+01 0 0 0 +15712 1 2.1005607212336340e+01 2.2805125102960336e+01 1.5750000032148655e+01 0 0 0 +15713 1 1.9883266500991148e+01 2.5024105573897110e+01 1.5750000007579638e+01 0 0 0 +13154 1 2.2689124936154414e+01 2.2243648863051622e+01 5.7132488961997296e-08 0 0 0 +15714 1 2.2689124879153123e+01 2.2243648857184308e+01 1.3999999984228870e+01 0 0 0 +13155 1 2.4933812837275521e+01 2.3339674907987206e+01 2.3880630806161207e-08 0 0 0 +15715 1 2.4933812776449390e+01 2.3339674905884241e+01 1.3999999992574384e+01 0 0 0 +15717 1 2.3250296257598265e+01 2.3901151493137117e+01 1.5750000017956712e+01 0 0 0 +15771 1 2.5494984624842925e+01 2.4997177902424205e+01 1.5750000018830164e+01 0 0 0 +15721 1 2.6617329148014999e+01 2.2778198248724266e+01 1.5750000027090918e+01 0 0 0 +15775 1 2.8862017122119973e+01 2.3874224638237870e+01 1.5750000036573237e+01 0 0 0 +15777 1 3.0545533219425447e+01 2.3312748010254541e+01 1.4000000043627425e+01 0 0 0 +13217 1 3.0545533273175682e+01 2.3312748001136491e+01 2.7903563903919348e-08 0 0 0 +15779 1 3.2229049324417531e+01 2.2751271494781673e+01 1.5750000051128151e+01 0 0 0 +15780 1 3.1106705007830740e+01 2.4970251068361332e+01 1.5750000059859152e+01 0 0 0 +15784 1 3.4473737072103901e+01 2.3847298277812605e+01 1.5750000042695479e+01 0 0 0 +13222 1 3.6157253047743957e+01 2.3285821917709583e+01 4.3486227951916590e-08 0 0 0 +13280 1 3.8401940656341885e+01 2.4381848853216713e+01 2.3236346180510736e-09 0 0 0 +15788 1 3.7840768892100769e+01 2.2724345724810011e+01 1.5749999985428129e+01 0 0 0 +15838 1 3.6718424715241916e+01 2.4943325219415684e+01 1.5750000014443225e+01 0 0 0 +13226 1 3.9524284750587391e+01 2.2162869314517380e+01 1.7499999974612251e+01 0 0 -1 +13284 1 4.1768972334076331e+01 2.3258895978884588e+01 1.7499999951326828e+01 0 0 -1 +15842 1 4.0085456485994037e+01 2.3820372525570207e+01 1.5749999981746420e+01 0 0 0 +15985 1 2.4372639544564230e+01 4.3818115548477593e+01 1.5750000040135093e+01 0 0 0 +13285 1 4.4013660145601236e+01 2.4354922682841892e+01 1.7499999956789591e+01 0 0 -1 +15846 1 4.3452488216413151e+01 2.2697419531788572e+01 1.5749999988307342e+01 0 0 0 +15847 1 4.2330144262293878e+01 2.4916399171693868e+01 1.5749999952572606e+01 0 0 0 +15639 1 1.7224968099360538e+00 2.7304612952180669e+01 1.5750000111344818e+01 0 0 0 +13077 1 3.5610861253522463e+00 2.6758667874494233e+01 1.6215626175153375e-08 0 0 0 +15637 1 3.5610860914651630e+00 2.6758667811507760e+01 1.4000000108747127e+01 0 0 0 +15643 1 5.3078132481005875e+00 2.6209378001123415e+01 1.5750000105702952e+01 0 0 0 +15692 1 4.1395806231724270e+00 2.8402596233428778e+01 1.5750000080204856e+01 0 0 0 +13138 1 9.2228635370630254e+00 2.6736020089627065e+01 5.7080352888760899e-08 0 0 0 +15698 1 9.2228634706477965e+00 2.6736020043050257e+01 1.4000000066942555e+01 0 0 0 +15696 1 7.5396990250870637e+00 2.7299290063513652e+01 1.5750000085844805e+01 0 0 0 +15701 1 9.7824036147612237e+00 2.8393447633470874e+01 1.5750000049088378e+01 0 0 0 +15700 1 1.0904485153707235e+01 2.6173778027271268e+01 1.5750000042997627e+01 0 0 0 +13143 1 1.4832658053663037e+01 2.6708507164675115e+01 1.7499999977363309e+01 0 0 -1 +15703 1 1.4832657958254027e+01 2.6708507161396806e+01 1.3999999988885936e+01 0 0 0 +15705 1 1.3149236886253593e+01 2.7269977292357190e+01 1.5750000017467746e+01 0 0 0 +15759 1 1.5393907627609522e+01 2.8366034831502095e+01 1.5749999981618304e+01 0 0 0 +15709 1 1.6516219313612471e+01 2.6147059599612636e+01 1.5749999957000854e+01 0 0 0 +15763 1 1.8760915576221141e+01 2.7243084394128406e+01 1.5749999977169505e+01 0 0 0 +13205 1 2.0444437079312166e+01 2.6681609056293198e+01 1.3018173206091888e-09 0 0 0 +15765 1 2.0444437014412749e+01 2.6681609097681037e+01 1.3999999960923617e+01 0 0 0 +15767 1 2.2127952936651727e+01 2.6120131548821011e+01 1.5749999991565431e+01 0 0 0 +15768 1 2.1005606603806530e+01 2.8339110863085686e+01 1.5750000001653673e+01 0 0 0 +15772 1 2.4372640468169585e+01 2.7216157673168041e+01 1.5750000012257455e+01 0 0 0 +13268 1 2.8300844561571303e+01 2.7750707357592766e+01 1.9830565634038066e-08 0 0 0 +15776 1 2.7739672655271782e+01 2.6093204262909040e+01 1.5750000044595804e+01 0 0 0 +15826 1 2.6617328377963766e+01 2.8312184039665812e+01 1.5750000034671494e+01 0 0 0 +15828 1 2.8300844525845189e+01 2.7750707331881436e+01 1.4000000037991386e+01 0 0 0 +13214 1 2.9423188960042442e+01 2.5531727632080134e+01 1.0428180985400104e-08 0 0 0 +15774 1 2.9423188935156528e+01 2.5531727639696715e+01 1.4000000043870795e+01 0 0 0 +15830 1 2.9984360649667728e+01 2.7189230721635393e+01 1.5750000053794013e+01 0 0 0 +15835 1 3.2229048621536585e+01 2.8285257269320518e+01 1.5750000052748970e+01 0 0 0 +13273 1 3.3912564745272292e+01 2.7723780926255852e+01 6.3179978582184049e-08 0 0 0 +15833 1 3.3912564629566653e+01 2.7723780958293766e+01 1.4000000033706073e+01 0 0 0 +13276 1 3.5034908856760467e+01 2.5504801380302187e+01 5.3089554086227508e-08 0 0 0 +15834 1 3.3351392940799819e+01 2.6066277867278256e+01 1.5750000055970480e+01 0 0 0 +13277 1 3.7279596661442156e+01 2.6600828389583029e+01 2.6569427546974111e-08 0 0 0 +15839 1 3.5596080792229152e+01 2.7162304699912923e+01 1.5750000032923207e+01 0 0 0 +15892 1 3.7840768455394659e+01 2.8258331567407524e+01 1.5750000006992398e+01 0 0 0 +13281 1 4.0646628390171998e+01 2.5477875672309136e+01 1.7499999969130780e+01 0 0 -1 +13334 1 3.9524284419750039e+01 2.7696855175924490e+01 1.7499999998468425e+01 0 0 -1 +15843 1 3.8963112444158405e+01 2.6039351993206598e+01 1.5749999982856632e+01 0 0 0 +15896 1 4.1207800270112443e+01 2.7135378775502332e+01 1.5749999956762858e+01 0 0 0 +13338 1 4.2891316204474442e+01 2.6573902239510872e+01 1.7499999949181920e+01 0 0 -1 +15899 1 4.4574832141119487e+01 2.6012425816539633e+01 1.5749999970394898e+01 0 0 0 +15900 1 4.3452488131166099e+01 2.8231405451611124e+01 1.5749999978438181e+01 0 0 0 +13128 1 1.2264313860400162e+00 3.1239186436238352e+01 6.3387126658653870e-09 0 0 0 +13130 1 2.5187337241863559e+00 2.8961623347417092e+01 1.7499999995013425e+01 0 0 -1 +15688 1 1.2264314063778412e+00 3.1239186397683273e+01 1.3999999999657916e+01 0 0 0 +15690 1 2.5187336818265829e+00 2.8961623281858071e+01 1.4000000136250693e+01 0 0 0 +15689 1 1.0571060893642428e+00 2.9604540857503491e+01 1.5750000043447381e+01 0 0 0 +15693 1 3.1035846086928576e+00 3.0686802778067086e+01 1.5750000033975629e+01 0 0 0 +15697 1 6.4095224543915510e+00 2.9511253425413745e+01 1.5750000063431120e+01 0 0 0 +15747 1 5.3078133115531001e+00 3.1743364428665942e+01 1.5750000041687388e+01 0 0 0 +13135 1 8.0950133930573127e+00 2.8953415270082658e+01 5.3342557038149607e-08 0 0 0 +13189 1 6.9829704734246674e+00 3.1174550293006526e+01 2.3462860099243699e-08 0 0 0 +15695 1 8.0950133404860694e+00 2.8953415206413151e+01 1.4000000072722671e+01 0 0 0 +15749 1 6.9829704310002807e+00 3.1174550203196688e+01 1.4000000076824570e+01 0 0 0 +15751 1 8.6590364885186748e+00 3.0610906998124850e+01 1.5750000045085040e+01 0 0 0 +13194 1 1.2587782341856213e+01 3.1146393532285582e+01 2.0175434656266589e-09 0 0 0 +15754 1 1.2587782248475182e+01 3.1146393503802823e+01 1.3999999997269461e+01 0 0 0 +15755 1 1.2026826252206353e+01 2.9489083066113412e+01 1.5749999998745958e+01 0 0 0 +15756 1 1.0904485116867953e+01 3.1707764059639217e+01 1.5750000025691822e+01 0 0 0 +13197 1 1.3710490892071157e+01 2.8927569844531352e+01 1.7499999974334070e+01 0 0 -1 +15757 1 1.3710490771612232e+01 2.8927569862289015e+01 1.3999999993536546e+01 0 0 0 +15760 1 1.4271514093424075e+01 3.0585032037198889e+01 1.5749999978740663e+01 0 0 0 +13202 1 1.9322089343775808e+01 2.8900586097139282e+01 1.2331540233390115e-09 0 0 0 +13256 1 1.8199753170990277e+01 3.1119571565262056e+01 1.7499999990162543e+01 0 0 -1 +15762 1 1.9322089284165330e+01 2.8900586146048632e+01 1.3999999968266213e+01 0 0 0 +15816 1 1.8199753144200006e+01 3.1119571633550489e+01 1.3999999981444994e+01 0 0 0 +15764 1 1.7638583140537055e+01 2.9462065190662898e+01 1.5749999986376471e+01 0 0 0 +15814 1 1.6516218968675901e+01 3.1681045518448620e+01 1.5749999982886631e+01 0 0 0 +15818 1 1.9883265992563111e+01 3.0558091437703357e+01 1.5749999973996315e+01 0 0 0 +15823 1 2.2127952365709415e+01 3.1654117355674764e+01 1.5750000018778795e+01 0 0 0 +13261 1 2.3811467696251846e+01 3.1092640305946400e+01 3.6445818807351316e-08 0 0 0 +15821 1 2.3811467679703121e+01 3.1092640374071625e+01 1.4000000011731126e+01 0 0 0 +15822 1 2.3250295593341260e+01 2.9435137240971997e+01 1.5750000045763201e+01 0 0 0 +15827 1 2.5494983918370281e+01 3.0531163641278575e+01 1.5750000066895009e+01 0 0 0 +13265 1 2.7178500261626279e+01 2.9969686989253454e+01 3.7713768108460499e-08 0 0 0 +15825 1 2.7178500248802184e+01 2.9969686949378321e+01 1.4000000027266369e+01 0 0 0 +15831 1 2.8862016393594729e+01 2.9408210425359165e+01 1.5750000052626623e+01 0 0 0 +15880 1 2.7739671928640664e+01 3.1627190100944564e+01 1.5750000055519870e+01 0 0 0 +15884 1 3.1106704281814629e+01 3.0504236897254355e+01 1.5750000053991027e+01 0 0 0 +13326 1 3.2790220498172737e+01 2.9942760494335939e+01 4.3136548555366971e-08 0 0 0 +15886 1 3.2790220428621502e+01 2.9942760501135016e+01 1.4000000036332144e+01 0 0 0 +15888 1 3.4473736489504951e+01 2.9381284131625126e+01 1.5750000021226304e+01 0 0 0 +15889 1 3.3351392279700612e+01 3.1600263672002285e+01 1.5750000039628047e+01 0 0 0 +13330 1 3.6157252561138570e+01 2.8819807796310460e+01 4.0539543277873236e-08 0 0 0 +13331 1 3.8401940298386016e+01 2.9915834704516676e+01 1.7602548751938230e-08 0 0 0 +15893 1 3.6718424242820376e+01 3.0477311066712588e+01 1.5750000000588418e+01 0 0 0 +13335 1 4.1768972175006539e+01 2.8792881859337843e+01 1.7499999975968766e+01 0 0 -1 +13384 1 4.0646628187527185e+01 3.1011861559235076e+01 1.7499999986461425e+01 0 0 -1 +15897 1 4.0085456219331263e+01 2.9354358391339115e+01 1.5749999955538005e+01 0 0 0 +15942 1 3.8963112138607045e+01 3.1573337857743031e+01 1.5749999986925816e+01 0 0 0 +13388 1 4.4013660089424775e+01 2.9888908646865357e+01 1.7499999962429321e+01 0 0 -1 +15946 1 4.2330144129222830e+01 3.0450385101354097e+01 1.5749999958361034e+01 0 0 0 +15949 1 4.4574832094111805e+01 3.1546411872747086e+01 1.5749999957790811e+01 0 0 0 +15743 1 1.7224968191089876e+00 3.2838599607787060e+01 1.5749999965409215e+01 0 0 0 +13186 1 5.8404161385577078e+00 3.3390570164241574e+01 2.4728635139581456e-08 0 0 0 +15746 1 5.8404161685870619e+00 3.3390570115593235e+01 1.4000000053325653e+01 0 0 0 +15748 1 4.1395806819544552e+00 3.3936582592845163e+01 1.5749999990040985e+01 0 0 0 +15752 1 7.5396990831415307e+00 3.2833276198184137e+01 1.5750000066749786e+01 0 0 0 +13248 1 1.1466172065193398e+01 3.3365659588379273e+01 2.8930138284977147e-08 0 0 0 +15808 1 1.1466171964598084e+01 3.3365659561537207e+01 1.4000000008860226e+01 0 0 0 +15806 1 9.7824036855505980e+00 3.3927433552857671e+01 1.5750000050059608e+01 0 0 0 +15810 1 1.3149236771486693e+01 3.2803963211915232e+01 1.5749999994569647e+01 0 0 0 +15815 1 1.5393907395797644e+01 3.3900020742968898e+01 1.5749999998455857e+01 0 0 0 +13253 1 1.7077390899832569e+01 3.3338540297883860e+01 1.7499999973523582e+01 0 0 -1 +15813 1 1.7077390823321821e+01 3.3338540339438339e+01 1.3999999990283412e+01 0 0 0 +15819 1 1.8760915158497919e+01 3.2777070315543305e+01 1.5749999996988924e+01 0 0 0 +15872 1 2.1005606115932260e+01 3.3873096728896414e+01 1.5750000022399044e+01 0 0 0 +13314 1 2.2689123659225405e+01 3.3311620444528522e+01 4.3869555099718127e-08 0 0 0 +15874 1 2.2689123667467154e+01 3.3311620445487620e+01 1.4000000004355584e+01 0 0 0 +13315 1 2.4933811531088658e+01 3.4407646543693033e+01 4.4143817490294168e-08 0 0 0 +15875 1 2.4933811539844861e+01 3.4407646519964302e+01 1.4000000037394221e+01 0 0 0 +15876 1 2.4372639882203348e+01 3.2750143500169855e+01 1.5750000032267859e+01 0 0 0 +13318 1 2.6056155839821113e+01 3.2188666732296184e+01 4.0072997364859475e-08 0 0 0 +15878 1 2.6056155820150376e+01 3.2188666741376068e+01 1.4000000039585062e+01 0 0 0 +15881 1 2.6617327769908897e+01 3.3846169876492610e+01 1.5750000052073476e+01 0 0 0 +15883 1 3.1667876004585548e+01 3.2161739989179274e+01 1.4000000035984911e+01 0 0 0 +13323 1 3.1667876080325513e+01 3.2161740009478812e+01 3.0159682751218497e-08 0 0 0 +13372 1 3.0545531870547762e+01 3.4380719694030418e+01 2.3261243597971770e-08 0 0 0 +15885 1 2.9984359946098593e+01 3.2723216567694841e+01 1.5750000047615679e+01 0 0 0 +15932 1 3.0545531822454400e+01 3.4380719677630424e+01 1.4000000042912678e+01 0 0 0 +15934 1 3.2229047956090930e+01 3.3819243158624900e+01 1.5750000028748142e+01 0 0 0 +13377 1 3.6157252023532415e+01 3.4353793605060908e+01 4.4685890543405549e-08 0 0 0 +13380 1 3.7279596206346781e+01 3.2134814256123661e+01 4.5356365774296137e-08 0 0 0 +15938 1 3.5596080227850187e+01 3.2696290530405292e+01 1.5750000026867712e+01 0 0 0 +15943 1 3.7840768096878087e+01 3.3792317423771372e+01 1.5750000004446271e+01 0 0 0 +13421 1 4.1768972032628355e+01 3.4326867844504200e+01 7.4709980424358946e-09 0 0 0 +13381 1 3.9524284169935747e+01 3.3230841080073233e+01 1.2215032541007531e-08 0 0 0 +15947 1 4.1207800112821694e+01 3.2669364708536413e+01 1.5750000020839352e+01 0 0 0 +13385 1 4.2891316120338480e+01 3.2107888221956280e+01 1.7499999966421829e+01 0 0 -1 +15983 1 4.3452488066645550e+01 3.3765391528927935e+01 1.5750000021468471e+01 0 0 0 +15744 1 1.0571060087641466e+00 3.5138527418730135e+01 1.5749999936034493e+01 0 0 0 +15798 1 3.1035847637094833e+00 3.6220789035915992e+01 1.5749999987124024e+01 0 0 0 +13237 1 3.5610862594791213e+00 3.7826640470600402e+01 1.7499999990252650e+01 0 0 -1 +13240 1 4.7485635887246760e+00 3.5612737249567758e+01 1.4718594343321456e-08 0 0 0 +15797 1 3.5610863425347357e+00 3.7826640426651934e+01 1.3999999995543696e+01 0 0 0 +15800 1 4.7485636465984298e+00 3.5612737202170628e+01 1.4000000024542391e+01 0 0 0 +15802 1 6.4095225899603321e+00 3.5045239456246058e+01 1.5750000050833652e+01 0 0 0 +15803 1 5.3078134893315942e+00 3.7277350412905356e+01 1.5750000053466961e+01 0 0 0 +13298 1 9.2228637917679048e+00 3.7803991886629824e+01 6.9852180928364760e-08 0 0 0 +15807 1 8.6590367001716011e+00 3.6144892856847726e+01 1.5750000070368614e+01 0 0 0 +15858 1 9.2228637757266121e+00 3.7803991837546775e+01 1.4000000063608359e+01 0 0 0 +13245 1 1.0342363451935270e+01 3.5584119298873283e+01 4.0828986413998791e-08 0 0 0 +15805 1 1.0342363372846574e+01 3.5584119260051281e+01 1.4000000050405935e+01 0 0 0 +15811 1 1.2026826246411753e+01 3.5023068905008479e+01 1.5750000019791893e+01 0 0 0 +15860 1 1.0904485314910687e+01 3.7241749794117503e+01 1.5750000059996957e+01 0 0 0 +13303 1 1.4832657851987491e+01 3.7776478911424142e+01 4.0128078637735598e-09 0 0 0 +13306 1 1.5955086567050241e+01 3.5557542345123991e+01 4.1350567414610850e-09 0 0 0 +15863 1 1.4832657769496892e+01 3.7776478920589838e+01 1.3999999987383578e+01 0 0 0 +15866 1 1.5955086447312979e+01 3.5557542420372698e+01 1.3999999973068400e+01 0 0 0 +15864 1 1.4271514038625581e+01 3.6119017882500764e+01 1.5749999971256965e+01 0 0 0 +15868 1 1.7638582860364494e+01 3.4996051098944271e+01 1.5749999993865075e+01 0 0 0 +15869 1 1.6516218862612796e+01 3.7215031396494744e+01 1.5749999955666210e+01 0 0 0 +13311 1 2.1566778965796246e+01 3.5530599623339519e+01 1.5723841784165415e-08 0 0 0 +13360 1 2.0444436307259451e+01 3.7749580761111105e+01 1.7499999990450032e+01 0 0 -1 +15871 1 2.1566778981987682e+01 3.5530599674286300e+01 1.4000000002361249e+01 0 0 0 +15920 1 2.0444436291150744e+01 3.7749580813635028e+01 1.3999999998158982e+01 0 0 0 +15873 1 1.9883265630419970e+01 3.6092077304123002e+01 1.5750000012937047e+01 0 0 0 +15922 1 2.2127952044696354e+01 3.7188103259160648e+01 1.5749999997298993e+01 0 0 0 +15877 1 2.3250295120768257e+01 3.4969123119755508e+01 1.5750000040294466e+01 0 0 0 +15926 1 2.5494983453640103e+01 3.6065149610388509e+01 1.5750000046154389e+01 0 0 0 +15930 1 2.8862015755003231e+01 3.4942196330300654e+01 1.5750000045984979e+01 0 0 0 +15931 1 2.7739671469523795e+01 3.7161176106992066e+01 1.5750000073662019e+01 0 0 0 +13369 1 2.9423187697105760e+01 3.6599699446924888e+01 3.4988840269534194e-08 0 0 0 +15929 1 2.9423187667483209e+01 3.6599699435317532e+01 1.4000000038269247e+01 0 0 0 +15935 1 3.1106703681891073e+01 3.6038222814449071e+01 1.5750000035464430e+01 0 0 0 +13413 1 3.5034907762299724e+01 3.6572773097278144e+01 1.2114018232978196e-08 0 0 0 +15939 1 3.4473735886264400e+01 3.4915269946465038e+01 1.5750000008897388e+01 0 0 0 +15971 1 3.3351391767609321e+01 3.7134249609067176e+01 1.5750000017738451e+01 0 0 0 +13414 1 3.7279595809160391e+01 3.7668800090936813e+01 9.9799137842637720e-09 0 0 0 +13417 1 3.8401939907631231e+01 3.5449820553570497e+01 3.3943493349397613e-08 0 0 0 +15975 1 3.6718423786120546e+01 3.6011296887933810e+01 1.5750000006545072e+01 0 0 0 +13418 1 4.0646627939126013e+01 3.6545847500891057e+01 3.7137521502472737e-08 0 0 0 +15979 1 4.0085455963365135e+01 3.4888344278045253e+01 1.5750000024586376e+01 0 0 0 +15980 1 3.8963111814411199e+01 3.7107323709502722e+01 1.5750000013123421e+01 0 0 0 +13422 1 4.4013660044552751e+01 3.5422894806059197e+01 4.6454253777028498e-09 0 0 0 +13444 1 4.2891315955148109e+01 3.7641874313930678e+01 2.0872391814918956e-08 0 0 0 +12811 1 4.4574832029812995e+01 3.7080398091739745e+01 1.5750000013163360e+01 0 0 0 +15984 1 4.2330143992299497e+01 3.5984371145766971e+01 1.5750000018362295e+01 0 0 0 +13290 1 2.5187337912223113e+00 4.0029595785433131e+01 3.9762436898627129e-08 0 0 0 +15799 1 1.7224969785394901e+00 3.8372585746533616e+01 1.5749999956483640e+01 0 0 0 +15849 1 1.0571058631678314e+00 4.0672513404704937e+01 1.5749999892277613e+01 0 0 0 +15850 1 2.5187338567961062e+00 4.0029595750825941e+01 1.3999999934258168e+01 0 0 0 +15852 1 4.1395808883312117e+00 3.9470568472741320e+01 1.5750000009308934e+01 0 0 0 +15857 1 6.4095228153743102e+00 4.0579225116983601e+01 1.5750000052788721e+01 0 0 0 +13295 1 8.0950137584721293e+00 4.0021386881183936e+01 7.2206539414310100e-08 0 0 0 +15855 1 8.0950137765316921e+00 4.0021386818096346e+01 1.4000000071231723e+01 0 0 0 +15856 1 7.5396993481595693e+00 3.8367261947382524e+01 1.5750000075971991e+01 0 0 0 +15861 1 9.7824039575231474e+00 3.9461419211120429e+01 1.5750000077725202e+01 0 0 0 +15910 1 1.2026826505084243e+01 4.0557054557469371e+01 1.5750000031183117e+01 0 0 0 +13352 1 1.3710490966055868e+01 3.9995541458852969e+01 1.7719912648317404e-08 0 0 0 +15912 1 1.3710490861719251e+01 3.9995541482683862e+01 1.3999999999407855e+01 0 0 0 +15865 1 1.3149236914017312e+01 3.8337948978435222e+01 1.5750000024755760e+01 0 0 0 +15914 1 1.5393907504716417e+01 3.9434006524843198e+01 1.5749999988766325e+01 0 0 0 +13357 1 1.9322088906642023e+01 3.9968557824818269e+01 5.4689088813120179e-09 0 0 0 +15917 1 1.9322088870368233e+01 3.9968557850728700e+01 1.3999999975285284e+01 0 0 0 +15918 1 1.8760915010983812e+01 3.8311056135150174e+01 1.5749999965123898e+01 0 0 0 +15919 1 1.7638582891229078e+01 4.0530036904438298e+01 1.5749999972845153e+01 0 0 0 +15923 1 2.1005606008201205e+01 3.9407082598018889e+01 1.5749999996815108e+01 0 0 0 +15927 1 2.4372639560743760e+01 3.8284129465208466e+01 1.5750000028869879e+01 0 0 0 +15959 1 2.3250294974169886e+01 4.0503109069705523e+01 1.5750000041885317e+01 0 0 0 +13402 1 2.7178499474970774e+01 4.1037659068409489e+01 7.7978580037552092e-08 0 0 0 +13405 1 2.8300843509997168e+01 3.8818679301153487e+01 4.6577127932323492e-08 0 0 0 +15962 1 2.7178499466003114e+01 4.1037659020537824e+01 1.4000000057421257e+01 0 0 0 +15963 1 2.6617327457406937e+01 3.9380155985720947e+01 1.5750000048936707e+01 0 0 0 +15965 1 2.8300843471240459e+01 3.8818679274893917e+01 1.4000000053954983e+01 0 0 0 +15968 1 2.8862015490467648e+01 4.0476182481078766e+01 1.5750000062387381e+01 0 0 0 +15967 1 2.9984359497184176e+01 3.8257202637050867e+01 1.5750000040490546e+01 0 0 0 +15972 1 3.2229047569364880e+01 3.9353229174234713e+01 1.5750000021562357e+01 0 0 0 +13410 1 3.3912563710393513e+01 3.8791752736451087e+01 1.6856400719689191e-08 0 0 0 +13432 1 3.2790219621080446e+01 4.1010732459288747e+01 1.1431179558485383e-08 0 0 0 +15992 1 3.2790219551755023e+01 4.1010732449011968e+01 1.4000000011658592e+01 0 0 0 +15994 1 3.4473735612504321e+01 4.0449255966747224e+01 1.5749999983511632e+01 0 0 0 +13436 1 3.6157251735704726e+01 3.9887779548589776e+01 5.7700368927271484e-09 0 0 0 +13437 1 3.8401939712926648e+01 4.0983806496079140e+01 1.6713361361553325e-08 0 0 0 +15976 1 3.5596079856576459e+01 3.8230276404480378e+01 1.5750000015861426e+01 0 0 0 +15998 1 3.7840767789746025e+01 3.9326303266661220e+01 1.5750000011033325e+01 0 0 0 +13440 1 3.9524283853322572e+01 3.8764826965482861e+01 2.2721170722661554e-08 0 0 0 +13441 1 4.1768971800367041e+01 3.9860853875897298e+01 4.4790901654323534e-08 0 0 0 +12813 1 4.0085455753657214e+01 4.0422330225835488e+01 1.5750000013917619e+01 0 0 0 +12814 1 4.1207799881220353e+01 3.8203350670936999e+01 1.5750000028027237e+01 0 0 0 +13454 1 4.4013659853597495e+01 4.0956880992011740e+01 2.8664128848276960e-08 0 0 0 +12810 1 4.3452487889132627e+01 3.9299377673914087e+01 1.5750000030894313e+01 0 0 0 +15848 1 1.2264314359553774e+00 4.2307158677049806e+01 1.3999999891734737e+01 0 0 0 +15853 1 3.1035849430546403e+00 4.1754774792599143e+01 1.5749999962389900e+01 0 0 0 +13288 1 1.2264314240693495e+00 4.2307158611743780e+01 1.7499999933425492e+01 0 0 -1 +15901 1 1.7224971284434787e+00 4.3906571424511540e+01 1.5749999897413147e+01 0 0 0 +15903 1 5.3078136517558114e+00 4.2811335876957244e+01 1.5750000024361068e+01 0 0 0 +15904 1 6.9829709101259310e+00 4.2242521588656366e+01 1.4000000061443409e+01 0 0 0 +15906 1 8.6590369000638692e+00 4.1678878343750839e+01 1.5750000078521666e+01 0 0 0 +15907 1 7.5396995273347711e+00 4.3901247311443562e+01 1.5750000082681080e+01 0 0 0 +13344 1 6.9829708542367159e+00 4.2242521663814671e+01 5.4678679362041294e-08 0 0 0 +13349 1 1.2587782598015243e+01 4.2214364936301827e+01 2.6713433243230611e-08 0 0 0 +15909 1 1.2587782539335926e+01 4.2214364931255268e+01 1.4000000039483254e+01 0 0 0 +15911 1 1.0904485484496060e+01 4.2775735316359139e+01 1.5750000062500883e+01 0 0 0 +15915 1 1.4271514213804158e+01 4.1653003590340447e+01 1.5749999998833864e+01 0 0 0 +15950 1 1.3149237034402958e+01 4.3871934552505671e+01 1.5750000019747944e+01 0 0 0 +13393 1 1.8199753028696193e+01 4.2187543222045640e+01 1.7499999992134320e+01 0 0 -1 +15952 1 1.6516218990614181e+01 4.2749017112630966e+01 1.5749999974408032e+01 0 0 0 +15956 1 1.8760915138902870e+01 4.3845041942875305e+01 1.5749999980328781e+01 0 0 0 +15953 1 1.8199753024151043e+01 4.2187543303742302e+01 1.3999999971373565e+01 0 0 0 +15955 1 1.9883265698832012e+01 4.1626063157849323e+01 1.5749999965074336e+01 0 0 0 +15960 1 2.2127952049951549e+01 4.2722089196408135e+01 1.5750000003702347e+01 0 0 0 +13398 1 2.3811467199853624e+01 4.2160612258538499e+01 3.4834496176472385e-08 0 0 0 +15964 1 2.5494983292255149e+01 4.1599135681471473e+01 1.5750000085897854e+01 0 0 0 +12821 1 2.5480612354308638e-13 5.9529723093845615e+00 1.7499999995171422e+01 0 0 -1 +13075 1 1.2005678690510475e-13 2.8088919251097330e+01 9.4929584471531559e-08 0 0 0 +13715 1 1.9339376852388490e-13 2.8088919194638965e+01 3.4999998851841809e+00 0 0 0 +13235 1 2.1368608217553862e-13 3.9156891993016039e+01 1.7499999927361642e+01 0 0 -1 +13875 1 1.4699793330176738e-13 3.9156891959253670e+01 3.5000000194156966e+00 0 0 0 +14096 1 4.5691775940467193e-13 4.1898636137999923e-01 7.0000000294723748e+00 0 0 0 +13456 1 5.0352867479456701e-13 4.1898630038339774e-01 3.5000000574708912e+00 0 0 0 +14150 1 4.6964722299579675e-13 1.1486958804079896e+01 6.9999999760959248e+00 0 0 0 +13661 1 3.6423898124557424e-13 2.2554932183220579e+01 3.5000000320149955e+00 0 0 0 +14301 1 4.0355420141046329e-13 2.2554932348852891e+01 6.9999998337169602e+00 0 0 0 +14461 1 2.6702400618369282e-14 3.3622905817549729e+01 7.0000000251663801e+00 0 0 0 +14101 1 2.4593076345220391e-13 5.9529724297866009e+00 6.9999999233035775e+00 0 0 0 +14835 1 9.0658734941801133e-14 1.7020945793452825e+01 1.0499999951048915e+01 0 0 0 +14355 1 1.9595992565970553e-13 2.8088919208097117e+01 6.9999998628994700e+00 0 0 0 +14995 1 2.9185802943043964e-13 2.8088919331802821e+01 1.0499999932184471e+01 0 0 0 +15155 1 2.4172310285870805e-13 3.9156892007526992e+01 1.0499999977354120e+01 0 0 0 +14515 1 2.6336707104338101e-13 3.9156891971680821e+01 7.0000000563809817e+00 0 0 0 +14736 1 1.8152515060016726e-13 4.1898635734511208e-01 1.0499999961489950e+01 0 0 0 +15381 1 1.8542496954736664e-14 5.9529724835590052e+00 1.4000000025181237e+01 0 0 0 +14790 1 3.4234254713280963e-14 1.1486958967798898e+01 1.0499999968268350e+01 0 0 0 +15635 1 1.3250938792710531e-13 2.8088919286323282e+01 1.4000000038804338e+01 0 0 0 +15101 1 2.4413575701589789e-13 3.3622905833468892e+01 1.0499999876217084e+01 0 0 0 +12816 1 4.5647984978548669e-13 4.1898628777619906e-01 1.7499999998996127e+01 0 0 -1 +15376 1 3.3401234096424164e-13 4.1898633078543979e-01 1.3999999963354858e+01 0 0 0 +12870 1 2.6887231025529785e-14 1.1486958663971073e+01 1.7499999998167983e+01 0 0 -1 +15581 1 2.1867283949432848e-13 2.2554932538454299e+01 1.4000000032705211e+01 0 0 0 +15741 1 1.4739424701199825e-13 3.3622905903807286e+01 1.3999999865644462e+01 0 0 0 +16028 1 1.0571060213599544e+00 4.6206498730164192e+01 1.7499999978686493e+00 0 0 0 +16034 1 3.1035848623532534e+00 4.7288759867249105e+01 1.7500000020998501e+00 0 0 0 +16667 1 2.5187338089919686e+00 4.5563581178042504e+01 3.5000000465186298e+00 0 0 0 +16027 1 2.5187337948671753e+00 4.5563581171535994e+01 1.7499999957306947e+01 0 0 -1 +16030 1 4.1395809293007613e+00 4.5004553839566391e+01 1.7500000242629838e+00 0 0 0 +16038 1 6.4095229084140337e+00 4.6113210375447395e+01 1.7500000434090026e+00 0 0 0 +16043 1 8.6590370141591464e+00 4.7212863676636374e+01 1.7500000321348796e+00 0 0 0 +16680 1 8.0950139220523969e+00 4.5555372204699623e+01 3.5000000040689772e+00 0 0 0 +16040 1 8.0950138972648471e+00 4.5555372151706237e+01 9.1347537194734152e-08 0 0 0 +16042 1 9.7824040964328844e+00 4.4995404627553810e+01 1.7500000250136110e+00 0 0 0 +16046 1 1.2026826663697625e+01 4.6091040050243500e+01 1.7499999883611801e+00 0 0 0 +16048 1 1.5393907664256124e+01 4.4967992154666092e+01 1.7499999566022510e+00 0 0 0 +16065 1 1.4271514402574828e+01 4.7186989105457933e+01 1.7499999772237183e+00 0 0 0 +16685 1 1.3710491086907115e+01 4.5529527012386829e+01 3.4999999498069703e+00 0 0 0 +16045 1 1.3710491043623563e+01 4.5529527039784682e+01 3.5707518422987200e-08 0 0 0 +16069 1 1.7638583035804587e+01 4.6064022553988806e+01 1.7499999715515506e+00 0 0 0 +16711 1 1.9322088973513427e+01 4.5502543554690959e+01 3.5000000381424519e+00 0 0 0 +16071 1 1.9322088989753382e+01 4.5502543603023391e+01 1.7499999961233556e+01 0 0 -1 +16073 1 2.1005606049738464e+01 4.4941068447867330e+01 1.7500000113216136e+00 0 0 0 +16074 1 1.9883265791434127e+01 4.7160048927065603e+01 1.7499999845666854e+00 0 0 0 +16077 1 2.3250294999334233e+01 4.6037095100519004e+01 1.7500000364074790e+00 0 0 0 +16110 1 2.5494983299865996e+01 4.7133121856811975e+01 1.7500000444916337e+00 0 0 0 +16079 1 2.6617327401056414e+01 4.4914142187231697e+01 1.7500000396801849e+00 0 0 0 +16112 1 2.7178499463037870e+01 4.6571645306837212e+01 5.7725703399356578e-08 0 0 0 +16114 1 2.8862015473784037e+01 4.6010168773283958e+01 1.7500000286346267e+00 0 0 0 +16752 1 2.7178499491591069e+01 4.6571645301203986e+01 3.5000000180643100e+00 0 0 0 +16078 1 2.8300843396602115e+01 4.4352665498241109e+01 5.8727396988277214e-08 0 0 0 +16718 1 2.8300843420441467e+01 4.4352665512131118e+01 3.5000000064883410e+00 0 0 0 +16118 1 3.2229047505317318e+01 4.4887215323298420e+01 1.7500000070885491e+00 0 0 0 +16119 1 3.1106703463562926e+01 4.7106195183944592e+01 1.7500000036479655e+00 0 0 0 +16117 1 3.2790219550812729e+01 4.6544718591995668e+01 1.7499999996622122e+01 0 0 -1 +16122 1 3.4473735532469739e+01 4.5983242015224349e+01 1.7499999819567602e+00 0 0 0 +16757 1 3.2790219565984977e+01 4.6544718592777429e+01 3.4999999860135715e+00 0 0 0 +16120 1 3.3912563556596574e+01 4.4325738812850368e+01 1.7499999983654451e+01 0 0 -1 +16760 1 3.3912563560985312e+01 4.4325738823095485e+01 3.4999999946843143e+00 0 0 0 +16124 1 3.7840767636416707e+01 4.4860289282818101e+01 1.7500000020024598e+00 0 0 0 +16168 1 3.6718423450552969e+01 4.7079268861450409e+01 1.7499999982113643e+00 0 0 0 +16761 1 3.6157251571884245e+01 4.5421765570484055e+01 3.5000000076621847e+00 0 0 0 +16810 1 3.8401939492065594e+01 4.6517792532969374e+01 3.4999999952886984e+00 0 0 0 +16172 1 4.0085455513340577e+01 4.5956316298796025e+01 1.7500000150516037e+00 0 0 0 +16814 1 4.1768971570988931e+01 4.5394840008992951e+01 3.5000000210374389e+00 0 0 0 +16763 1 3.9524283691367643e+01 4.4298813011329642e+01 3.5000000255730011e+00 0 0 0 +16176 1 4.3452487665864496e+01 4.4833363849535381e+01 1.7500000146650636e+00 0 0 0 +16177 1 4.2330143517315307e+01 4.7052343364016124e+01 1.7499999988172723e+00 0 0 0 +16815 1 4.4013659595218364e+01 4.6490867185456814e+01 3.4999999932183723e+00 0 0 0 +16035 1 1.7224970427347723e+00 4.9440556391612589e+01 1.7499999661458832e+00 0 0 0 +16672 1 1.2264313930672008e+00 4.7841143787125340e+01 3.4999999858308604e+00 0 0 0 +16032 1 1.2264313993266525e+00 4.7841143791821956e+01 1.7499999971382294e+01 0 0 -1 +16039 1 5.3078136952425838e+00 4.8345321046200240e+01 1.7500000200946335e+00 0 0 0 +16053 1 4.1395808946675769e+00 5.0538538811857727e+01 1.7499999821767900e+00 0 0 0 +16695 1 5.8404165167541953e+00 4.9992526385208464e+01 3.4999999908881749e+00 0 0 0 +16055 1 5.8404165401848367e+00 4.9992526364701853e+01 4.5205819211827601e-08 0 0 0 +16057 1 7.5396995431138265e+00 4.9435232524917502e+01 1.7500000267668203e+00 0 0 0 +16677 1 6.9829709696634037e+00 4.7776506878499212e+01 3.4999999943336415e+00 0 0 0 +16037 1 6.9829709570723457e+00 4.7776506835604323e+01 7.2637949919899399e-08 0 0 0 +16062 1 9.7824041593028745e+00 5.0529389926345907e+01 1.7500000254810109e+00 0 0 0 +16061 1 1.0904485640147021e+01 4.8309720746165574e+01 1.7500000288145168e+00 0 0 0 +16700 1 1.1466172556365475e+01 4.9967616179742173e+01 3.4999999866611011e+00 0 0 0 +16703 1 1.2587782767893311e+01 4.7748350408056879e+01 3.4999999859968480e+00 0 0 0 +16060 1 1.1466172512198503e+01 4.9967616174761524e+01 7.3189537969680866e-08 0 0 0 +16063 1 1.2587782703085399e+01 4.7748350412618777e+01 3.9540424604102030e-08 0 0 0 +16066 1 1.3149237252146747e+01 4.9405920068786941e+01 1.7499999956081129e+00 0 0 0 +16098 1 1.5393907885209618e+01 5.0501977720177692e+01 1.7499999971602411e+00 0 0 0 +16070 1 1.6516219197000787e+01 4.8283002697608829e+01 1.7499999735076703e+00 0 0 0 +16102 1 1.8760915337472444e+01 4.9379027632969112e+01 1.7499999873810581e+00 0 0 0 +16708 1 1.8199753179230893e+01 4.7721528905182367e+01 3.5000000055523901e+00 0 0 0 +16740 1 1.7077391226569034e+01 4.9940497439815438e+01 3.5000000020462920e+00 0 0 0 +16068 1 1.8199753178994367e+01 4.7721528944338672e+01 1.7499999974367640e+01 0 0 -1 +16100 1 1.7077391191040054e+01 4.9940497465960426e+01 1.7499999989149313e+01 0 0 -1 +16106 1 2.2127952110876151e+01 4.8256075115172308e+01 1.7500000370032451e+00 0 0 0 +16107 1 2.1005606218449319e+01 5.0475054326467628e+01 1.7500000065830295e+00 0 0 0 +16111 1 2.4372639606700425e+01 4.9352101659946669e+01 1.7500000325164398e+00 0 0 0 +16745 1 2.2689123565699497e+01 4.9913578302273159e+01 3.5000000305613810e+00 0 0 0 +16748 1 2.3811467238971279e+01 4.7694598350674909e+01 3.5000000301534016e+00 0 0 0 +16105 1 2.2689123590333143e+01 4.9913578311253495e+01 2.0364580854223459e-08 0 0 0 +16108 1 2.3811467268105542e+01 4.7694598354728733e+01 4.2702701657180262e-08 0 0 0 +16109 1 2.6056155391812482e+01 4.8790625078485292e+01 5.0378656597067059e-08 0 0 0 +16115 1 2.7739671371335174e+01 4.8229148545527153e+01 1.7500000314059481e+00 0 0 0 +16156 1 2.6617327525763692e+01 5.0448128372193594e+01 1.7500000461829224e+00 0 0 0 +16749 1 2.6056155405221112e+01 4.8790625097792493e+01 3.5000000142747210e+00 0 0 0 +16160 1 2.9984359460505967e+01 4.9325175094303098e+01 1.7500000209028088e+00 0 0 0 +16162 1 3.1667875433681825e+01 4.8763698359790560e+01 2.9903376434420971e-09 0 0 0 +16165 1 3.2229047601642321e+01 5.0421201537299353e+01 1.7500000017200377e+00 0 0 0 +16802 1 3.1667875460695988e+01 4.8763698366757218e+01 3.4999999916910811e+00 0 0 0 +16164 1 3.3351391580351404e+01 4.8202221810347950e+01 1.7499999876384715e+00 0 0 0 +16169 1 3.5596079633718979e+01 4.9298248470321170e+01 1.7500000040477564e+00 0 0 0 +16222 1 3.7840767490666551e+01 5.0394275367276855e+01 1.7499999995534390e+00 0 0 0 +16807 1 3.7279595495828055e+01 4.8736772116733135e+01 3.5000000158863602e+00 0 0 0 +16173 1 3.8963111407959310e+01 4.8175295742401524e+01 1.7500000181766553e+00 0 0 0 +16226 1 4.1207799371851969e+01 4.9271322849747953e+01 1.7500000011691672e+00 0 0 0 +16811 1 4.0646627451358519e+01 4.7613819630611850e+01 3.5000000033324916e+00 0 0 0 +16864 1 3.9524283431342134e+01 4.9832799090446954e+01 3.5000000095795025e+00 0 0 0 +16229 1 4.4574831544888795e+01 4.8148370427549828e+01 1.7499999956651611e+00 0 0 0 +16230 1 4.3452487310432538e+01 5.0367349926076500e+01 1.7500000006735383e+00 0 0 0 +16868 1 4.2891315440584059e+01 4.8709846607039459e+01 3.4999999717328145e+00 0 0 0 +16050 1 1.0571059468751598e+00 5.1740483748131773e+01 1.7499999801800956e+00 0 0 0 +16054 1 3.1035849059870073e+00 5.2822744826223307e+01 1.7499999976754006e+00 0 0 0 +16058 1 6.4095228671755953e+00 5.1647195423980357e+01 1.7500000024888247e+00 0 0 0 +16086 1 5.3078136025180482e+00 5.3879306011630874e+01 1.7499999992429300e+00 0 0 0 +16692 1 4.7485638146923304e+00 5.2214693080472657e+01 3.4999999992666444e+00 0 0 0 +16052 1 4.7485638435349458e+00 5.2214693084995197e+01 1.7499999997574250e+01 0 0 -1 +16090 1 8.6590370012601419e+00 5.2746848872332620e+01 1.7500000238518474e+00 0 0 0 +16094 1 1.2026826723559800e+01 5.1625025430230110e+01 1.7500000248349130e+00 0 0 0 +16095 1 1.0904485628286302e+01 5.3843706053206191e+01 1.7500000251591799e+00 0 0 0 +16732 1 1.0342363828951500e+01 5.2186075548334315e+01 3.4999999863357689e+00 0 0 0 +16092 1 1.0342363826830049e+01 5.2186075545367544e+01 8.2423439781360617e-08 0 0 0 +16097 1 1.5955087021739372e+01 5.2159499340005283e+01 1.7499999996496278e+01 0 0 -1 +16099 1 1.4271514556512606e+01 5.2720974630787914e+01 1.7500000090172516e+00 0 0 0 +16737 1 1.5955087062225521e+01 5.2159499337395310e+01 3.5000000122310420e+00 0 0 0 +16103 1 1.7638583323158183e+01 5.1598008233696390e+01 1.7499999733125611e+00 0 0 0 +16144 1 1.6516219406493157e+01 5.3816988333409924e+01 1.7499999934743531e+00 0 0 0 +16148 1 1.9883266029173427e+01 5.2694034696843396e+01 1.7500000066568309e+00 0 0 0 +16150 1 2.1566779219823822e+01 5.2132557330463364e+01 9.7644140759448949e-09 0 0 0 +16153 1 2.2127952375763066e+01 5.3790061031258183e+01 1.7500000154782120e+00 0 0 0 +16790 1 2.1566779202322881e+01 5.2132557355179685e+01 3.5000000266850622e+00 0 0 0 +16152 1 2.3250295181814973e+01 5.1571081101661122e+01 1.7500000230209702e+00 0 0 0 +16154 1 2.4933811428452920e+01 5.1009604826478324e+01 4.4369413100791727e-08 0 0 0 +16157 1 2.5494983515173072e+01 5.2667107957490053e+01 1.7500000359834385e+00 0 0 0 +16794 1 2.4933811441684064e+01 5.1009604802979659e+01 3.5000000249414556e+00 0 0 0 +16161 1 2.8862015569352895e+01 5.1544154940301027e+01 1.7500000174805757e+00 0 0 0 +16210 1 2.7739671546990198e+01 5.3763134655224107e+01 1.7500000403163083e+00 0 0 0 +16159 1 3.0545531562178059e+01 5.0982678255922877e+01 2.1218735748674818e-08 0 0 0 +16212 1 2.9423187654500659e+01 5.3201658061504077e+01 3.5828142005364644e-08 0 0 0 +16214 1 3.1106703595969165e+01 5.2640181352780147e+01 1.7500000104256994e+00 0 0 0 +16799 1 3.0545531595982283e+01 5.0982678220653113e+01 3.5000000100224571e+00 0 0 0 +16852 1 2.9423187681309518e+01 5.3201658057538715e+01 3.5000000074100339e+00 0 0 0 +16218 1 3.4473735578924881e+01 5.1517228140022240e+01 1.7500000230420361e+00 0 0 0 +16219 1 3.3351391717330515e+01 5.3736207930704666e+01 1.7500000189530542e+00 0 0 0 +16857 1 3.5034907568279877e+01 5.3174731262784888e+01 3.5000000246148537e+00 0 0 0 +16223 1 3.6718423429740483e+01 5.2613254954381503e+01 1.7500000171681411e+00 0 0 0 +16860 1 3.6157251536505399e+01 5.0955751658289842e+01 3.5000000224619798e+00 0 0 0 +16861 1 3.8401939387259880e+01 5.2051778644770366e+01 3.5000000198233283e+00 0 0 0 +16227 1 4.0085455289391717e+01 5.1490302420116834e+01 1.7499999916524964e+00 0 0 0 +16277 1 3.8963111312010938e+01 5.3709281870336355e+01 1.7499999924952299e+00 0 0 0 +16865 1 4.1768971269213324e+01 5.0928826128178862e+01 3.4999999736879674e+00 0 0 0 +16919 1 4.0646627285308476e+01 5.3147805746409354e+01 3.4999999916921474e+00 0 0 0 +16281 1 4.2330143227460653e+01 5.2586329432139294e+01 1.7499999848380925e+00 0 0 0 +16284 1 4.4574831294534256e+01 5.3682356389106445e+01 1.7499999727732118e+00 0 0 0 +16923 1 4.4013659273018355e+01 5.2024853221831819e+01 3.4999999581481420e+00 0 0 0 +16082 1 1.7224969964368679e+00 5.4974541221294963e+01 1.7500000346106885e+00 0 0 0 +16721 1 2.5187337275476405e+00 5.6631551026754529e+01 3.5000000123392647e+00 0 0 0 +16081 1 2.5187337109000452e+00 5.6631550999581151e+01 4.9817605384703465e-08 0 0 0 +16087 1 4.1395808396590086e+00 5.6072523780466291e+01 1.7499999969868558e+00 0 0 0 +16724 1 3.5610863318688284e+00 5.4428595918747682e+01 3.4999999890243436e+00 0 0 0 +16084 1 3.5610863297255020e+00 5.4428595920190610e+01 9.3972911627954723e-09 0 0 0 +16091 1 7.5396994672022739e+00 5.4969217666546086e+01 1.7500000064738761e+00 0 0 0 +16729 1 9.2228639857004460e+00 5.4405947819772358e+01 3.4999999858391648e+00 0 0 0 +16774 1 8.0950138222683314e+00 5.6623342567279636e+01 3.4999999762019618e+00 0 0 0 +16089 1 9.2228640106839883e+00 5.4405947818153372e+01 4.3394739440481702e-08 0 0 0 +16134 1 8.0950138336315884e+00 5.6623342544475022e+01 3.9407755919658025e-08 0 0 0 +16136 1 9.7824041146253489e+00 5.6063375185808546e+01 1.7500000192925287e+00 0 0 0 +16139 1 1.3710491286380243e+01 5.6597497962751568e+01 1.3720732509892792e-08 0 0 0 +16140 1 1.3149237298325422e+01 5.4939905456384416e+01 1.7500000259638477e+00 0 0 0 +16142 1 1.4832658282629581e+01 5.4378435623221833e+01 1.0101611353725364e-08 0 0 0 +16145 1 1.5393907964579412e+01 5.6035963258192467e+01 1.7499999871675285e+00 0 0 0 +16779 1 1.3710491288348633e+01 5.6597497952127540e+01 3.4999999951292082e+00 0 0 0 +16782 1 1.4832658311200934e+01 5.4378435611328058e+01 3.5000000228620514e+00 0 0 0 +16149 1 1.8760915518334986e+01 5.4913013350707963e+01 1.7499999757802178e+00 0 0 0 +16200 1 1.9322089366299171e+01 5.6570515106932362e+01 1.7499999972078925e+01 0 0 -1 +16840 1 1.9322089369045884e+01 5.6570515102573303e+01 3.5000000249708543e+00 0 0 0 +16147 1 2.0444436747757010e+01 5.4351538276397250e+01 2.8197240422923214e-10 0 0 0 +16202 1 2.1005606436205294e+01 5.6009040147211245e+01 1.7500000013927863e+00 0 0 0 +16787 1 2.0444436746905154e+01 5.4351538270507362e+01 3.5000000033502134e+00 0 0 0 +16206 1 2.4372639829884303e+01 5.4886087647087010e+01 1.7500000433651222e+00 0 0 0 +16209 1 2.8300843666438382e+01 5.5420637817792020e+01 3.9776264478366836e-08 0 0 0 +16211 1 2.6617327716532451e+01 5.5982114398707523e+01 1.7500000244965199e+00 0 0 0 +16849 1 2.8300843703196595e+01 5.5420637816106094e+01 3.5000000213032090e+00 0 0 0 +16215 1 2.9984359635797613e+01 5.4859161154719729e+01 1.7500000284843229e+00 0 0 0 +16269 1 3.2229047691592704e+01 5.5955187528840753e+01 1.7500000303111698e+00 0 0 0 +16271 1 3.3912563666370986e+01 5.5393710981617026e+01 1.7499999991011556e+01 0 0 -1 +16911 1 3.3912563686272208e+01 5.5393711014641788e+01 3.5000000244017406e+00 0 0 0 +16273 1 3.5596079722936061e+01 5.4832234601506073e+01 1.7500000135390006e+00 0 0 0 +16278 1 3.7840767456297179e+01 5.5928261443860954e+01 1.7500000038766095e+00 0 0 0 +16912 1 3.6157251585893974e+01 5.6489737733738629e+01 3.5000000100657878e+00 0 0 0 +16915 1 3.7279595516731185e+01 5.4270758242851187e+01 3.5000000183045459e+00 0 0 0 +16282 1 4.1207799247754068e+01 5.4805308943811596e+01 1.7499999902686902e+00 0 0 0 +16916 1 3.9524283380866748e+01 5.5366785194960137e+01 3.5000000063865229e+00 0 0 0 +16974 1 4.1768971155814647e+01 5.6462812123394947e+01 3.4999999817088399e+00 0 0 0 +16336 1 4.3452487186738679e+01 5.5901335899446437e+01 1.7499999655132203e+00 0 0 0 +16920 1 4.2891315209208557e+01 5.4243832616650579e+01 3.4999999719481019e+00 0 0 0 +23095 1 4.5136003275784162e+01 5.5339859577395103e+01 3.4999999557099852e+00 0 0 0 +16083 1 1.0571060242642010e+00 5.7274468519416693e+01 1.7500000272816079e+00 0 0 0 +16128 1 3.1035847567912849e+00 5.8356729718111154e+01 1.7500000051194726e+00 0 0 0 +16766 1 1.2264313446664472e+00 5.8909113528684763e+01 3.4999999829264294e+00 0 0 0 +16126 1 1.2264313432401808e+00 5.8909113543059384e+01 2.6236968140201034e-08 0 0 0 +16132 1 6.4095227779858321e+00 5.7181180573362923e+01 1.7500000069460522e+00 0 0 0 +16133 1 5.3078134914146347e+00 5.9413291178087981e+01 1.7500000144155146e+00 0 0 0 +16137 1 8.6590369064793133e+00 5.8280834136568259e+01 1.7500000109483553e+00 0 0 0 +16771 1 6.9829707801854015e+00 5.8844477178952808e+01 3.4999999733215268e+00 0 0 0 +16131 1 6.9829707727669286e+00 5.8844477147471594e+01 3.3580416995598292e-08 0 0 0 +16141 1 1.2026826770634822e+01 5.7159010825928895e+01 1.7500000161370777e+00 0 0 0 +16190 1 1.0904485639870256e+01 5.9377691422917110e+01 1.7500000275055883e+00 0 0 0 +16192 1 1.2587782841157010e+01 5.8816321244289931e+01 1.7865821338341145e-08 0 0 0 +16832 1 1.2587782862802205e+01 5.8816321251241561e+01 3.5000000032427789e+00 0 0 0 +16194 1 1.4271514620649086e+01 5.8254960113504325e+01 1.7500000092078620e+00 0 0 0 +16197 1 1.8199753523160659e+01 5.8789500346365003e+01 1.7499999962518636e+01 0 0 -1 +16198 1 1.7638583408152833e+01 5.7131993915217294e+01 1.7499999824585162e+00 0 0 0 +16199 1 1.6516219478735060e+01 5.9350973960674388e+01 1.7499999804392237e+00 0 0 0 +16837 1 1.8199753509198658e+01 5.8789500329841310e+01 3.4999999980349692e+00 0 0 0 +16203 1 1.9883266142986290e+01 5.8228020505192227e+01 1.7499999854073260e+00 0 0 0 +16257 1 2.2127952455961118e+01 5.9324046853310193e+01 1.7500000194343632e+00 0 0 0 +16207 1 2.3250295372340712e+01 5.7105066989292091e+01 1.7500000135887486e+00 0 0 0 +16259 1 2.3811467607127124e+01 5.8762570233380394e+01 3.7136179459744731e-08 0 0 0 +16261 1 2.5494983645996303e+01 5.8201093872862799e+01 1.7500000305354662e+00 0 0 0 +16899 1 2.3811467585433164e+01 5.8762570212321499e+01 3.5000000197324694e+00 0 0 0 +16265 1 2.8862015759172579e+01 5.7078140973516788e+01 1.7500000192067344e+00 0 0 0 +16266 1 2.7739671650446702e+01 5.9297120586079458e+01 1.7500000165492566e+00 0 0 0 +16900 1 2.6056155693419335e+01 5.9858597028433323e+01 3.5000000028324618e+00 0 0 0 +16903 1 2.7178499809127629e+01 5.7639617431013406e+01 3.5000000170819994e+00 0 0 0 +16260 1 2.6056155690035883e+01 5.9858597026690056e+01 3.4951521495838347e-08 0 0 0 +16263 1 2.7178499778221699e+01 5.7639617438800911e+01 4.5689748097359694e-08 0 0 0 +16270 1 3.1106703706473578e+01 5.8174167329790698e+01 1.7499999922653859e+00 0 0 0 +16322 1 3.1667875632580611e+01 5.9831670373950018e+01 5.7135793990251617e-09 0 0 0 +16962 1 3.1667875649974789e+01 5.9831670412101403e+01 3.4999999808616944e+00 0 0 0 +16268 1 3.2790219737102191e+01 5.7612690729243184e+01 1.7499999992512254e+01 0 0 -1 +16274 1 3.4473735652056732e+01 5.7051214155523958e+01 1.7500000061993539e+00 0 0 0 +16324 1 3.3351391724998010e+01 5.9270193886786245e+01 1.7499999829338964e+00 0 0 0 +16908 1 3.2790219767805610e+01 5.7612690746603320e+01 3.5000000151818980e+00 0 0 0 +16328 1 3.6718423401692249e+01 5.8147240999426451e+01 1.7500000025868983e+00 0 0 0 +16967 1 3.7279595409537308e+01 5.9804744240447469e+01 3.5000000300404635e+00 0 0 0 +16970 1 3.8401939344748918e+01 5.7585764694789290e+01 3.4999999988301540e+00 0 0 0 +16332 1 4.0085455211197655e+01 5.7024288450935828e+01 1.7499999925098235e+00 0 0 0 +16333 1 3.8963111242992156e+01 5.9243267852972174e+01 1.7499999987352359e+00 0 0 0 +16971 1 4.0646627177381362e+01 5.8681791680225572e+01 3.4999999876955332e+00 0 0 0 +16337 1 4.2330143152841941e+01 5.8120315343309066e+01 1.7499999686412104e+00 0 0 0 +16389 1 4.4574831230045532e+01 5.9216342198518866e+01 1.7499999951946696e+00 0 0 0 +17028 1 4.2891315155921788e+01 5.9777818453500188e+01 3.4999999783831677e+00 0 0 0 +16975 1 4.4013659187867738e+01 5.7558839094853518e+01 3.4999999718726786e+00 0 0 0 +16129 1 1.7224969113573727e+00 6.0508526157793327e+01 1.7499999869407752e+00 0 0 0 +16179 1 1.0571059630987856e+00 6.2808453586919072e+01 1.7499999740699574e+00 0 0 0 +16181 1 4.7485635822050334e+00 6.3282663453824810e+01 1.7499999993932551e+01 0 0 -1 +16182 1 4.1395807050953444e+00 6.1606508944377254e+01 1.7499999988558894e+00 0 0 0 +16184 1 5.8404162633557011e+00 6.1060496694809117e+01 2.2694300177384767e-08 0 0 0 +16187 1 6.4095226168619179e+00 6.2715165905857631e+01 1.7500000275822740e+00 0 0 0 +16821 1 4.7485635797465742e+00 6.3282663432037388e+01 3.5000000183954985e+00 0 0 0 +16824 1 5.8404162728239388e+00 6.1060496672312695e+01 3.4999999926704164e+00 0 0 0 +16186 1 7.5396993339970155e+00 6.0503202975035485e+01 1.7500000388051857e+00 0 0 0 +16191 1 9.7824040252793019e+00 6.1597360592652265e+01 1.7500000363981241e+00 0 0 0 +16189 1 1.1466172495931550e+01 6.1035586933353528e+01 2.3898705128842469e-08 0 0 0 +16243 1 1.0342363678631692e+01 6.3254046344803953e+01 6.2459878971450214e-08 0 0 0 +16245 1 1.2026826706231571e+01 6.2692996335017661e+01 1.7500000295027542e+00 0 0 0 +16829 1 1.1466172532657056e+01 6.1035586963862947e+01 3.4999999953587744e+00 0 0 0 +16883 1 1.0342363723969385e+01 6.3254046361093437e+01 3.4999999797055734e+00 0 0 0 +16195 1 1.3149237361896944e+01 6.0473890963681860e+01 1.7499999977764031e+00 0 0 0 +16248 1 1.5955087174328424e+01 6.3227470633056072e+01 1.7499999967000274e+01 0 0 -1 +16249 1 1.5393908073225578e+01 6.1569948904014922e+01 1.7499999963912678e+00 0 0 0 +16888 1 1.5955087198872414e+01 6.3227470636255411e+01 3.4999999913329809e+00 0 0 0 +16251 1 1.7077391452078761e+01 6.1008468800186336e+01 1.7499999970827151e+01 0 0 -1 +16253 1 1.8760915630807645e+01 6.0446999110828507e+01 1.7499999916667699e+00 0 0 0 +16254 1 1.7638583525951240e+01 6.2665979635457546e+01 1.7499999780730247e+00 0 0 0 +16891 1 1.7077391465835859e+01 6.1008468801087908e+01 3.4999999928175081e+00 0 0 0 +16258 1 2.1005606501805421e+01 6.1543025925680681e+01 1.7499999901548422e+00 0 0 0 +16310 1 2.1566779436675173e+01 6.3200528922367319e+01 1.7499999994213375e+01 0 0 -1 +16950 1 2.1566779413439843e+01 6.3200528932065076e+01 3.5000000167193428e+00 0 0 0 +16256 1 2.2689123871227938e+01 6.0981550019676241e+01 2.2916610015959008e-08 0 0 0 +16262 1 2.4372639899415546e+01 6.0420073474607548e+01 1.7500000213638054e+00 0 0 0 +16312 1 2.3250295407416900e+01 6.2639052758060423e+01 1.7500000152757340e+00 0 0 0 +16896 1 2.2689123857461681e+01 6.0981549985744053e+01 3.5000000103022462e+00 0 0 0 +16954 1 2.4933811667652613e+01 6.2077576542684348e+01 3.5000000157955395e+00 0 0 0 +16314 1 2.4933811670017391e+01 6.2077576584336150e+01 2.6442232453981318e-08 0 0 0 +16316 1 2.6617327756723647e+01 6.1516100217991443e+01 1.7500000210302362e+00 0 0 0 +16321 1 2.8862015707061868e+01 6.2612126749184561e+01 1.7499999761760336e+00 0 0 0 +16319 1 3.0545531695659470e+01 6.2050650129725668e+01 1.7499999994201371e+01 0 0 -1 +16320 1 2.9984359675118633e+01 6.0393147076868487e+01 1.7499999959567594e+00 0 0 0 +16325 1 3.2229047712668624e+01 6.1489173498205588e+01 1.7499999648033304e+00 0 0 0 +16959 1 3.0545531726623249e+01 6.2050650122020159e+01 3.4999999760359541e+00 0 0 0 +16378 1 3.4473735538797328e+01 6.2585200100028807e+01 1.7499999700345545e+00 0 0 0 +16329 1 3.5596079606937593e+01 6.0366220554210123e+01 1.7499999923780702e+00 0 0 0 +16382 1 3.7840767375354091e+01 6.1462247417929127e+01 1.7499999886670103e+00 0 0 0 +17020 1 3.6157251446906329e+01 6.2023723687912160e+01 3.5000000094966741e+00 0 0 0 +17021 1 3.8401939215689886e+01 6.3119750587006536e+01 3.4999999965173210e+00 0 0 0 +16386 1 4.1207799107160838e+01 6.0339294774299162e+01 1.7499999994663775e+00 0 0 0 +16387 1 4.0085455098106706e+01 6.2558274276757381e+01 1.7500000057743081e+00 0 0 0 +17024 1 3.9524283256811991e+01 6.0900771111532663e+01 3.4999999962742585e+00 0 0 0 +17025 1 4.1768971063928056e+01 6.1996797907896543e+01 3.4999999909389805e+00 0 0 0 +16390 1 4.3452487110513289e+01 6.1435321630865545e+01 1.7500000142125345e+00 0 0 0 +17083 1 4.4013659142259634e+01 6.3092824797128770e+01 3.4999999682283467e+00 0 0 0 +23140 1 4.5136003193877976e+01 6.0873845310232049e+01 3.4999999782435931e+00 0 0 0 +16183 1 3.1035847191361907e+00 6.3890715065607203e+01 1.7500000203250323e+00 0 0 0 +16233 1 1.7224968372617693e+00 6.6042511457284732e+01 1.7500000398813880e+00 0 0 0 +16235 1 3.5610861330322003e+00 6.5496566408419994e+01 1.6613620481533185e-08 0 0 0 +16237 1 5.3078133793540250e+00 6.4947276612811592e+01 1.7500000411507357e+00 0 0 0 +16875 1 3.5610861511881500e+00 6.5496566376094592e+01 3.5000000179919413e+00 0 0 0 +16240 1 9.2228638231190132e+00 6.5473918694627415e+01 2.6715281302953303e-08 0 0 0 +16241 1 8.6590368076679667e+00 6.3814819588489868e+01 1.7500000409253296e+00 0 0 0 +16242 1 7.5396992613747074e+00 6.6037188499960564e+01 1.7500000383468779e+00 0 0 0 +16880 1 9.2228638553774758e+00 6.5473918699633444e+01 3.4999999998234905e+00 0 0 0 +16246 1 1.0904485539315605e+01 6.4911676985380666e+01 1.7500000237856117e+00 0 0 0 +16250 1 1.4271514625181574e+01 6.3788945795269711e+01 1.7500000001181661e+00 0 0 0 +16300 1 1.3149237295953887e+01 6.6007876661801760e+01 1.7500000215003044e+00 0 0 0 +16302 1 1.4832658335393555e+01 6.5446406927293737e+01 8.4038354277767622e-10 0 0 0 +16942 1 1.4832658379967114e+01 6.5446406921238207e+01 3.4999999866555722e+00 0 0 0 +16304 1 1.6516219534821406e+01 6.4884959732550143e+01 1.7499999987858126e+00 0 0 0 +16309 1 1.8760915667584680e+01 6.5980984853290266e+01 1.7499999890934919e+00 0 0 0 +16307 1 2.0444436899979301e+01 6.5419509799374893e+01 1.7499999988731997e+01 0 0 -1 +16308 1 1.9883266235414467e+01 6.3762006233781726e+01 1.7500000080721916e+00 0 0 0 +16313 1 2.2127952525818085e+01 6.4858032577869395e+01 1.7500000133681226e+00 0 0 0 +16947 1 2.0444436900490810e+01 6.5419509781005132e+01 3.5000000026635716e+00 0 0 0 +16317 1 2.5494983648527501e+01 6.3735079616947736e+01 1.7500000136479190e+00 0 0 0 +16366 1 2.4372639907022300e+01 6.5954059161237566e+01 1.7500000178485331e+00 0 0 0 +16370 1 2.7739671581235740e+01 6.4831106293155401e+01 1.7500000185308482e+00 0 0 0 +16374 1 3.1106703631161345e+01 6.3708153165830787e+01 1.7499999625353349e+00 0 0 0 +16375 1 2.9984359574338718e+01 6.5927132793505265e+01 1.7499999947801441e+00 0 0 0 +17012 1 2.9423187714085877e+01 6.4269629775177563e+01 3.4999999794995147e+00 0 0 0 +16372 1 2.9423187705805134e+01 6.4269629758075638e+01 1.0548733229879388e-08 0 0 0 +16377 1 3.5034907425269260e+01 6.4242703215149817e+01 1.7499999944106257e+01 0 0 -1 +16379 1 3.3351391609136499e+01 6.4804179788446277e+01 1.7499999556848620e+00 0 0 0 +17017 1 3.5034907419046036e+01 6.4242703198254262e+01 3.4999999813377798e+00 0 0 0 +16383 1 3.6718423288210133e+01 6.3681226919524200e+01 1.7499999632493817e+00 0 0 0 +16433 1 3.5596079533781683e+01 6.5900206477709560e+01 1.7499999479790085e+00 0 0 0 +17075 1 3.7279595312636999e+01 6.5338730116385364e+01 3.4999999664826151e+00 0 0 0 +16437 1 3.8963111124960946e+01 6.4777253684456880e+01 1.7499999828278610e+00 0 0 0 +16442 1 4.1207799133568592e+01 6.5873280563297811e+01 1.7499999866349465e+00 0 0 0 +17079 1 4.0646627104140741e+01 6.4215777471872030e+01 3.5000000141526302e+00 0 0 0 +16441 1 4.2330143101113507e+01 6.3654301063287456e+01 1.7500000052481064e+00 0 0 0 +16444 1 4.4574831210486735e+01 6.4750327859789380e+01 1.7500000052758975e+00 0 0 0 +17080 1 4.2891315122734483e+01 6.5311804153044591e+01 3.4999999868864329e+00 0 0 0 +16234 1 1.0571058925812082e+00 6.8342439010761069e+01 1.7500000630465939e+00 0 0 0 +16288 1 3.1035848022281662e+00 6.9424700717021054e+01 1.7500000500715489e+00 0 0 0 +16872 1 2.5187337284327991e+00 6.7699521557662749e+01 3.5000000706683161e+00 0 0 0 +16232 1 2.5187337119658086e+00 6.7699521564838193e+01 1.6479383253889217e-08 0 0 0 +16238 1 4.1395807527182980e+00 6.7140494477537644e+01 1.7500000297318705e+00 0 0 0 +16292 1 6.4095226701354431e+00 6.8249151555582770e+01 1.7500000299328167e+00 0 0 0 +16294 1 8.0950136905696048e+00 6.7691313545852864e+01 2.0707029576536086e-08 0 0 0 +16297 1 8.6590369020036828e+00 6.9348805312926928e+01 1.7500000146087542e+00 0 0 0 +16934 1 8.0950137162946891e+00 6.7691313577982470e+01 3.5000000062141425e+00 0 0 0 +16296 1 9.7824040126282910e+00 6.7131346235067838e+01 1.7500000301970398e+00 0 0 0 +16301 1 1.2026826745802524e+01 6.8226982115572582e+01 1.7500000098532538e+00 0 0 0 +16299 1 1.3710491273552035e+01 6.7665469329578912e+01 3.4109129959714769e-09 0 0 0 +16305 1 1.5393908023818462e+01 6.7103934677875642e+01 1.7499999929067800e+00 0 0 0 +16354 1 1.4271514637035581e+01 6.9322931618912406e+01 1.7500000173288845e+00 0 0 0 +16939 1 1.3710491306530990e+01 6.7665469310209374e+01 3.4999999748441737e+00 0 0 0 +16358 1 1.7638583525901655e+01 6.8199965462643831e+01 1.7500000114017782e+00 0 0 0 +16360 1 1.9322089489503998e+01 6.7638486640358863e+01 1.7499999983148044e+01 0 0 -1 +17000 1 1.9322089517864178e+01 6.7638486635142570e+01 3.5000000139916110e+00 0 0 0 +16362 1 2.1005606558453547e+01 6.7077011684376913e+01 1.7500000027234568e+00 0 0 0 +16363 1 1.9883266273676885e+01 6.9295992054769243e+01 1.7499999925261651e+00 0 0 0 +16367 1 2.3250295411216864e+01 6.8173038473669365e+01 1.7499999942055060e+00 0 0 0 +16421 1 2.5494983614970767e+01 6.9269065303809171e+01 1.7500000145056696e+00 0 0 0 +16371 1 2.6617327685415660e+01 6.7050085864348063e+01 1.7500000010478192e+00 0 0 0 +16425 1 2.8862015634917185e+01 6.8146112435224140e+01 1.7500000117193895e+00 0 0 0 +17009 1 2.8300843651105062e+01 6.6488609348287355e+01 3.5000000052402500e+00 0 0 0 +17063 1 2.7178499704832138e+01 6.8707588871223493e+01 3.5000000139588021e+00 0 0 0 +16369 1 2.8300843633448945e+01 6.6488609348505051e+01 2.5842606839244488e-08 0 0 0 +16423 1 2.7178499708548721e+01 6.8707588837995019e+01 2.6809074123661764e-08 0 0 0 +16429 1 3.2229047526812074e+01 6.7023159241852042e+01 1.7499999846896424e+00 0 0 0 +16430 1 3.1106703485772343e+01 6.9242138883172032e+01 1.7499999964960971e+00 0 0 0 +16431 1 3.3912563481473676e+01 6.6461682825789694e+01 1.7499999960773774e+01 0 0 -1 +17071 1 3.3912563487793072e+01 6.6461682810938328e+01 3.4999999794176251e+00 0 0 0 +16434 1 3.4473735403605474e+01 6.8119185937010997e+01 1.7499999664071557e+00 0 0 0 +17068 1 3.2790219531533182e+01 6.8680662424725980e+01 3.4999999961461961e+00 0 0 0 +16428 1 3.2790219500770284e+01 6.8680662430356861e+01 1.7499999983439693e+01 0 0 -1 +16438 1 3.7840767260369709e+01 6.6996233207464442e+01 1.7499999619527968e+00 0 0 0 +16488 1 3.6718423157502741e+01 6.9215212724471940e+01 1.7499999630216898e+00 0 0 0 +17130 1 3.8401939123057623e+01 6.8653736348030023e+01 3.4999999661615782e+00 0 0 0 +16492 1 4.0085455086639193e+01 6.8092260020159969e+01 1.7499999528358068e+00 0 0 0 +17076 1 3.9524283181861136e+01 6.6434756876687246e+01 3.4999999827060901e+00 0 0 0 +17134 1 4.1768971083230774e+01 6.7530783626911997e+01 3.4999999621216786e+00 0 0 0 +16496 1 4.3452487141816896e+01 6.6969307370601712e+01 1.7500000023716744e+00 0 0 0 +16497 1 4.2330143113979126e+01 6.9188286791132413e+01 1.7499999784753859e+00 0 0 0 +23246 1 4.5136003263382463e+01 6.6407831035408492e+01 3.4999999730980540e+00 0 0 0 +17135 1 4.4013659183803284e+01 6.8626810513095194e+01 3.4999999622789471e+00 0 0 0 +16289 1 1.7224969202940683e+00 7.1576497188901158e+01 1.7500000355986425e+00 0 0 0 +16926 1 1.2264313969736917e+00 6.9977084239391345e+01 3.5000000352021510e+00 0 0 0 +16286 1 1.2264313900893100e+00 6.9977084294877770e+01 6.9595095850078609e-08 0 0 0 +16293 1 5.3078134997322390e+00 7.0481262311413062e+01 1.7500000367414357e+00 0 0 0 +16342 1 4.1395808825899687e+00 7.2674480266978648e+01 1.7500000381076479e+00 0 0 0 +16344 1 5.8404164109848766e+00 7.2128468000567111e+01 1.7671430002078557e-08 0 0 0 +16984 1 5.8404164184652139e+00 7.2128467989429552e+01 3.5000000278746475e+00 0 0 0 +16346 1 7.5396994832511490e+00 7.1571174310062361e+01 1.7500000389311616e+00 0 0 0 +16931 1 6.9829707958201608e+00 6.9912448337945165e+01 3.5000000021899464e+00 0 0 0 +16291 1 6.9829707728864046e+00 6.9912448310080933e+01 1.5014721910298245e-08 0 0 0 +16351 1 9.7824042359718231e+00 7.2665332129956383e+01 1.7500000045260877e+00 0 0 0 +16349 1 1.1466172652129078e+01 7.2103558524135934e+01 1.7499999976473838e+01 0 0 -1 +16350 1 1.0904485690338831e+01 7.0445662831403283e+01 1.7500000222271659e+00 0 0 0 +16352 1 1.2587782867970102e+01 6.9884292695472425e+01 1.7499999993321737e+01 0 0 -1 +16989 1 1.1466172666437886e+01 7.2103558526476959e+01 3.5000000022442337e+00 0 0 0 +16992 1 1.2587782882297757e+01 6.9884292700302495e+01 3.5000000049261568e+00 0 0 0 +16355 1 1.3149237430534932e+01 7.1541862574025913e+01 1.7499999952158549e+00 0 0 0 +16409 1 1.5393908208881689e+01 7.2637920635819157e+01 1.7500000307304768e+00 0 0 0 +16357 1 1.8199753641604932e+01 6.9857471934627597e+01 1.7499999993871945e+01 0 0 -1 +16359 1 1.6516219573609145e+01 7.0418945578888440e+01 1.7500000257543857e+00 0 0 0 +16411 1 1.7077391593819719e+01 7.2076440483511547e+01 9.5564809470277349e-09 0 0 0 +16413 1 1.8760915765739195e+01 7.1514970760170513e+01 1.7500000228986285e+00 0 0 0 +16997 1 1.8199753647410606e+01 6.9857471924839686e+01 3.4999999996692037e+00 0 0 0 +17051 1 1.7077391609957445e+01 7.2076440501184777e+01 3.5000000011210539e+00 0 0 0 +16417 1 2.2127952533932032e+01 7.0392018360845682e+01 1.7499999917909290e+00 0 0 0 +16418 1 2.1005606630127925e+01 7.2610997553564715e+01 1.7499999984491892e+00 0 0 0 +16416 1 2.2689123954921261e+01 7.2049521521698594e+01 1.7499999977019773e+01 0 0 -1 +16419 1 2.3811467632368988e+01 6.9830541684475534e+01 7.4136790453777980e-09 0 0 0 +16422 1 2.4372639944539667e+01 7.1488044903768554e+01 1.7499999682114056e+00 0 0 0 +17056 1 2.2689123965584475e+01 7.2049521536548241e+01 3.4999999763822593e+00 0 0 0 +17059 1 2.3811467632736765e+01 6.9830541671465554e+01 3.4999999888247801e+00 0 0 0 +16426 1 2.7739671515393773e+01 7.0365091966618124e+01 1.7500000122405059e+00 0 0 0 +16476 1 2.6617327722647556e+01 7.2584071589339089e+01 1.7499999910568595e+00 0 0 0 +17060 1 2.6056155651021982e+01 7.0926568401741804e+01 3.4999999750280448e+00 0 0 0 +16420 1 2.6056155654930787e+01 7.0926568403008133e+01 2.0809821814014212e-08 0 0 0 +16480 1 2.9984359483436759e+01 7.1461118519151043e+01 1.7500000160665188e+00 0 0 0 +16485 1 3.2229047474118545e+01 7.2557145057353225e+01 1.7499999981034209e+00 0 0 0 +17122 1 3.1667875406410758e+01 7.0899641945440010e+01 3.4999999957501253e+00 0 0 0 +16482 1 3.1667875394100147e+01 7.0899641951291912e+01 2.7439575345691040e-08 0 0 0 +16484 1 3.3351391450611018e+01 7.0338165556713435e+01 1.7499999976527676e+00 0 0 0 +16489 1 3.5596079332145514e+01 7.1434192237878605e+01 1.7499999692381643e+00 0 0 0 +16542 1 3.7840767172047222e+01 7.2530218992661503e+01 1.7499999705526810e+00 0 0 0 +17127 1 3.7279595178658617e+01 7.0872715871365486e+01 3.4999999959183463e+00 0 0 0 +16487 1 3.7279595165264347e+01 7.0872715887060210e+01 1.7499999947362628e+01 0 0 -1 +16493 1 3.8963111071366285e+01 7.0311239447183851e+01 1.7499999723241799e+00 0 0 0 +16546 1 4.1207799020934033e+01 7.1407266260439670e+01 1.7499999971658469e+00 0 0 0 +17131 1 4.0646627061356938e+01 6.9749763203917297e+01 3.4999999622494111e+00 0 0 0 +17184 1 3.9524283104480325e+01 7.1968742597859588e+01 3.4999999607701211e+00 0 0 0 +16549 1 4.4574831250754833e+01 7.0284313658254931e+01 1.7499999866763221e+00 0 0 0 +16550 1 4.3452487067154394e+01 7.2503293127708190e+01 1.7500000298679708e+00 0 0 0 +17188 1 4.2891315096938982e+01 7.0845789902936346e+01 3.4999999745645192e+00 0 0 0 +23300 1 4.5136003206352889e+01 7.1941816829744809e+01 3.4999999914680853e+00 0 0 0 +16339 1 1.0571060766257201e+00 7.3876424836289317e+01 1.7500000441187049e+00 0 0 0 +16343 1 3.1035849139394220e+00 7.4958686576317049e+01 1.7500000484677818e+00 0 0 0 +16341 1 4.7485638640127137e+00 7.4350634939026662e+01 2.2836395478044018e-08 0 0 0 +16347 1 6.4095229164210235e+00 7.3783137392630124e+01 1.7500000408996625e+00 0 0 0 +16397 1 5.3078137809242012e+00 7.6015248232006414e+01 1.7500000677374767e+00 0 0 0 +16981 1 4.7485638675326616e+00 7.4350634921560811e+01 3.5000000337076953e+00 0 0 0 +16401 1 8.6590371990084769e+00 7.4882791261018028e+01 1.7500000247322332e+00 0 0 0 +16403 1 1.0342364016065078e+01 7.4322018073000237e+01 5.0987155099832843e-09 0 0 0 +16405 1 1.2026826933419784e+01 7.3760968078473454e+01 1.7500000050282061e+00 0 0 0 +16406 1 1.0904485966227520e+01 7.5979648864266451e+01 1.7499999915849835e+00 0 0 0 +17043 1 1.0342364032707353e+01 7.4322018066294888e+01 3.4999999844912382e+00 0 0 0 +16408 1 1.5955087434104392e+01 7.4295442455581920e+01 1.7499999997958721e+01 0 0 -1 +16410 1 1.4271514893141624e+01 7.4856917667105421e+01 1.7500000041278154e+00 0 0 0 +17048 1 1.5955087417287706e+01 7.4295442470352668e+01 3.5000000046590918e+00 0 0 0 +16414 1 1.7638583722945349e+01 7.3733951412073424e+01 1.7500000106438771e+00 0 0 0 +16464 1 1.6516219867497178e+01 7.5952931668932536e+01 1.7500000215477565e+00 0 0 0 +16468 1 1.9883266463467933e+01 7.4829977995729095e+01 1.7500000207526125e+00 0 0 0 +16470 1 2.1566779598773248e+01 7.4268500594833768e+01 1.7499999984448980e+01 0 0 -1 +16473 1 2.2127952793660654e+01 7.5926004296694416e+01 1.7499999778551696e+00 0 0 0 +17110 1 2.1566779616049104e+01 7.4268500593922042e+01 3.4999999843795373e+00 0 0 0 +16472 1 2.3250295538407023e+01 7.3707024319479984e+01 1.7499999808428481e+00 0 0 0 +16477 1 2.5494983761149658e+01 7.4803051070249808e+01 1.7499999744948487e+00 0 0 0 +17114 1 2.4933811724631987e+01 7.3145548012728227e+01 3.4999999784953721e+00 0 0 0 +16474 1 2.4933811738669363e+01 7.3145548001499478e+01 1.7499999984900679e+01 0 0 -1 +16481 1 2.8862015636660484e+01 7.3680098137956904e+01 1.7499999950940655e+00 0 0 0 +16530 1 2.7739671681597947e+01 7.5899077729666885e+01 1.7499999883825976e+00 0 0 0 +16534 1 3.1106703534332365e+01 7.4776124667038872e+01 1.7500000079414093e+00 0 0 0 +17119 1 3.0545531552025086e+01 7.3118621597435734e+01 3.4999999867641773e+00 0 0 0 +17172 1 2.9423187708321151e+01 7.5337601211042212e+01 3.4999999797244850e+00 0 0 0 +16479 1 3.0545531547781138e+01 7.3118621584621053e+01 2.3346478060245129e-08 0 0 0 +16532 1 2.9423187723572845e+01 7.5337601204221599e+01 1.4510913014413171e-08 0 0 0 +16538 1 3.4473735305968553e+01 7.3653171732041514e+01 1.7499999777341675e+00 0 0 0 +16539 1 3.3351391550879498e+01 7.5872151387986634e+01 1.7499999769823988e+00 0 0 0 +17177 1 3.5034907302197404e+01 7.5310674826402234e+01 3.4999999918793510e+00 0 0 0 +16537 1 3.5034907272440492e+01 7.5310674839393883e+01 1.7499999958619028e+01 0 0 -1 +16540 1 3.6157251188511317e+01 7.3091695320482515e+01 1.7499999964459974e+01 0 0 -1 +16543 1 3.6718423125274505e+01 7.4749198514071892e+01 1.7499999776994379e+00 0 0 0 +17180 1 3.6157251229951640e+01 7.3091695309738526e+01 3.5000000009019439e+00 0 0 0 +16547 1 4.0085454968948014e+01 7.3626245770260439e+01 1.7499999737057981e+00 0 0 0 +16592 1 3.8963111023173369e+01 7.5845225215826190e+01 1.7499999769770627e+00 0 0 0 +17185 1 4.1768970976321896e+01 7.3064769352233540e+01 3.4999999672748885e+00 0 0 0 +17234 1 4.0646626973777110e+01 7.5283748990077257e+01 3.5000000140848901e+00 0 0 0 +16596 1 4.2330143007339828e+01 7.4722272582827699e+01 1.7500000121333945e+00 0 0 0 +16599 1 4.4574831117619929e+01 7.5818299506751771e+01 1.7500000369488800e+00 0 0 0 +17238 1 4.4013659079989829e+01 7.4160796335559368e+01 3.4999999745520549e+00 0 0 0 +16393 1 1.7224970556949688e+00 7.7110483148331312e+01 1.7500000461935359e+00 0 0 0 +17032 1 2.5187340969024592e+00 7.8767493358547981e+01 3.4999999867908982e+00 0 0 0 +16392 1 2.5187341019664551e+00 7.8767493329021747e+01 4.3687714558190102e-08 0 0 0 +16395 1 3.5610865065781505e+00 7.6564538023304948e+01 4.7076521636260063e-08 0 0 0 +16398 1 4.1395811971041505e+00 7.8208466243070106e+01 1.7500000635626463e+00 0 0 0 +17035 1 3.5610864783847531e+00 7.6564538051689752e+01 3.5000000277667693e+00 0 0 0 +16400 1 9.2228643092863738e+00 7.6541890563666584e+01 1.7499999995177781e+01 0 0 -1 +16402 1 7.5396997756920081e+00 7.7105160274592748e+01 1.7500000304754790e+00 0 0 0 +16454 1 8.0950142780765031e+00 7.8759285510299108e+01 2.7145649339507122e-08 0 0 0 +17040 1 9.2228643481673913e+00 7.6541890526649851e+01 3.4999999967977504e+00 0 0 0 +17094 1 8.0950143245087869e+00 7.8759285495014637e+01 3.5000000172352994e+00 0 0 0 +16456 1 9.7824045834817994e+00 7.8199318231131727e+01 1.7500000129912257e+00 0 0 0 +16459 1 1.3710491836752880e+01 7.8733441488955705e+01 7.5221662073286014e-09 0 0 0 +16460 1 1.3149237742503297e+01 7.7075848696493324e+01 1.7500000005146061e+00 0 0 0 +16462 1 1.4832658749390752e+01 7.6514378920415325e+01 6.6830503808383616e-09 0 0 0 +16465 1 1.5393908516849734e+01 7.8171906787727480e+01 1.7499999939540560e+00 0 0 0 +17099 1 1.3710491827135112e+01 7.8733441471276322e+01 3.4999999481311961e+00 0 0 0 +17102 1 1.4832658730130802e+01 7.6514378920782576e+01 3.4999999795417129e+00 0 0 0 +16469 1 1.8760916060201033e+01 7.7048956817226070e+01 1.7500000087315759e+00 0 0 0 +16520 1 1.9322089994768682e+01 7.8706458693796648e+01 8.4132637316654899e-09 0 0 0 +17160 1 1.9322090014431250e+01 7.8706458688956587e+01 3.5000000072184489e+00 0 0 0 +16467 1 2.0444437211801567e+01 7.6487481638726180e+01 1.7499999990918266e+01 0 0 -1 +16522 1 2.1005606988270994e+01 7.8144983612309829e+01 1.7500000040437196e+00 0 0 0 +17107 1 2.0444437226000524e+01 7.6487481632928933e+01 3.4999999995315085e+00 0 0 0 +16526 1 2.4372640202429718e+01 7.7022030769213956e+01 1.7499999797613233e+00 0 0 0 +16531 1 2.6617328014720048e+01 7.8118057387980656e+01 1.7499999733196405e+00 0 0 0 +17169 1 2.8300843851180453e+01 7.7556580847222946e+01 3.4999999764061167e+00 0 0 0 +16529 1 2.8300843878099538e+01 7.7556580813093476e+01 9.2974436290953497e-09 0 0 0 +16535 1 2.9984359701816004e+01 7.6995104295732204e+01 1.7499999887269881e+00 0 0 0 +16584 1 3.2229047718064692e+01 7.8091130853343373e+01 1.7499999749619490e+00 0 0 0 +17226 1 3.3912563586684705e+01 7.7529654437458035e+01 3.4999999758516034e+00 0 0 0 +16586 1 3.3912563550818817e+01 7.7529654462233509e+01 1.7499999977053314e+01 0 0 -1 +16588 1 3.5596079527871716e+01 7.6968178100306474e+01 1.7499999644580446e+00 0 0 0 +16593 1 3.7840767299059145e+01 7.8064204811108027e+01 1.7499999455169803e+00 0 0 0 +16597 1 4.1207799027628766e+01 7.6941252139176171e+01 1.7500000171812198e+00 0 0 0 +17231 1 3.9524283158095670e+01 7.7502728439729168e+01 3.4999999961248687e+00 0 0 0 +16591 1 3.9524283174242562e+01 7.7502728456873314e+01 1.7499999946905206e+01 0 0 -1 +16633 1 4.3452487011032538e+01 7.8037279064111360e+01 1.7500000488642640e+00 0 0 0 +22766 1 4.5136003151396046e+01 7.7475802732016859e+01 6.6632378393347971e-08 0 0 0 +23406 1 4.5136003150532382e+01 7.7475802779339105e+01 3.5000000229951644e+00 0 0 0 +16394 1 1.0571061698529105e+00 7.9410410820625970e+01 1.7499999991801396e+00 0 0 0 +16448 1 3.1035852082457338e+00 8.0492672528763975e+01 1.7500000411781709e+00 0 0 0 +17086 1 1.2264316214526314e+00 8.1045056167245292e+01 3.4999999767848520e+00 0 0 0 +16446 1 1.2264316375619444e+00 8.1045056128867969e+01 6.5159927319800197e-09 0 0 0 +16452 1 6.4095232943107163e+00 7.9317123426591394e+01 1.7500000446016133e+00 0 0 0 +16453 1 5.3078141993501138e+00 8.1549234262224431e+01 1.7500000545496432e+00 0 0 0 +16457 1 8.6590376020229165e+00 8.0416777410285619e+01 1.7500000267734446e+00 0 0 0 +17091 1 6.9829715130569037e+00 8.0980420354772150e+01 3.5000000232174866e+00 0 0 0 +16451 1 6.9829714679228472e+00 8.0980420340069472e+01 5.6038147782498433e-08 0 0 0 +16461 1 1.2026827334292502e+01 7.9294954292343519e+01 1.7499999875969456e+00 0 0 0 +16510 1 1.0904486404517877e+01 8.1513635132752938e+01 1.7500000081669218e+00 0 0 0 +16512 1 1.2587783528115512e+01 8.0952265011877174e+01 1.7499999993461188e+01 0 0 -1 +17152 1 1.2587783539734478e+01 8.0952264997076867e+01 3.4999999852156245e+00 0 0 0 +16514 1 1.4271515254006570e+01 8.0390903898336504e+01 1.7499999946113249e+00 0 0 0 +16517 1 1.8199754310688839e+01 8.0925444199360768e+01 1.8359316460066988e-08 0 0 0 +16518 1 1.7638584082233560e+01 7.9267937609188223e+01 1.7500000173967984e+00 0 0 0 +16519 1 1.6516220267379037e+01 8.1486917918228485e+01 1.7500000018556643e+00 0 0 0 +17157 1 1.8199754316895330e+01 8.0925444159381371e+01 3.4999999956259575e+00 0 0 0 +16523 1 1.9883266909007858e+01 8.0363964174053777e+01 1.7500000007073659e+00 0 0 0 +16572 1 2.2127953250463790e+01 8.1459990397686113e+01 1.7499999839193559e+00 0 0 0 +16527 1 2.3250295918261887e+01 7.9241010297123410e+01 1.7499999748767585e+00 0 0 0 +16574 1 2.3811468288208282e+01 8.0898513556023005e+01 1.7499999970719095e+01 0 0 -1 +16576 1 2.5494984178532818e+01 8.0337037004816850e+01 1.7499999851456489e+00 0 0 0 +17214 1 2.3811468282248835e+01 8.0898513547366647e+01 3.4999999977759138e+00 0 0 0 +16580 1 2.8862016014623791e+01 7.9214083976106267e+01 1.7500000100101647e+00 0 0 0 +16581 1 2.7739672191555574e+01 8.1433063604167188e+01 1.7500000039164409e+00 0 0 0 +17215 1 2.6056156384614880e+01 8.1994540160597822e+01 3.4999999791762799e+00 0 0 0 +17218 1 2.7178500179476988e+01 7.9775560456811917e+01 3.4999999914643749e+00 0 0 0 +16575 1 2.6056156404568913e+01 8.1994540153223639e+01 5.4770625301723311e-09 0 0 0 +16578 1 2.7178500196439369e+01 7.9775560429150417e+01 1.7499999992942673e+01 0 0 -1 +16585 1 3.1106703984601968e+01 8.0310110500802210e+01 1.7499999926929453e+00 0 0 0 +17259 1 3.1667876111833841e+01 8.1967613616904671e+01 3.4999999688201009e+00 0 0 0 +16619 1 3.1667876098794409e+01 8.1967613634205918e+01 4.0883895486702366e-08 0 0 0 +16589 1 3.4473735667402771e+01 7.9187157592670374e+01 1.7499999655986178e+00 0 0 0 +16621 1 3.3351392042300439e+01 8.1406137250342013e+01 1.7499999971787437e+00 0 0 0 +17223 1 3.2790219908105826e+01 7.9748634082780583e+01 3.4999999747735546e+00 0 0 0 +16583 1 3.2790219879238215e+01 7.9748634070742966e+01 1.7499999997968498e+01 0 0 -1 +16625 1 3.6718423476641519e+01 8.0283184397450015e+01 1.7499999428080584e+00 0 0 0 +16627 1 3.8401939296649239e+01 7.9721707990417784e+01 1.7499999930852837e+01 0 0 -1 +17264 1 3.7279595641948262e+01 8.1940687591999634e+01 3.5000000010322867e+00 0 0 0 +17267 1 3.8401939298277249e+01 7.9721707983087654e+01 3.4999999868952116e+00 0 0 0 +16624 1 3.7279595640231989e+01 8.1940687592417291e+01 1.7499999921183047e+01 0 0 -1 +16629 1 4.0085455116534213e+01 7.9160231649544031e+01 1.7499999722994821e+00 0 0 0 +16630 1 3.8963111354290454e+01 8.1379211157162672e+01 1.7499999716163197e+00 0 0 0 +16634 1 4.2330143074261585e+01 8.0256258534883941e+01 1.7500000061915613e+00 0 0 0 +16655 1 4.4574831184086960e+01 8.1352285529684949e+01 1.7500000289837212e+00 0 0 0 +16632 1 4.4013659079489912e+01 7.9694782324956535e+01 6.1547261701550733e-08 0 0 0 +16654 1 4.2891315153090353e+01 8.1913761707977841e+01 2.8301792418610867e-09 0 0 0 +16449 1 1.7224974791941055e+00 8.2644469167489902e+01 1.7499999971770996e+00 0 0 0 +16499 1 1.0571061538030289e+00 8.4944396758458552e+01 1.7500000142032777e+00 0 0 0 +16502 1 4.1395815783482073e+00 8.3742452286916233e+01 1.7500000423039348e+00 0 0 0 +16507 1 6.4095237298415482e+00 8.4851109572464040e+01 1.7500000684301833e+00 0 0 0 +17141 1 4.7485645754402288e+00 8.5418606984440288e+01 3.5000000326842082e+00 0 0 0 +17144 1 5.8404171770913047e+00 8.3196440049367538e+01 3.5000000444930781e+00 0 0 0 +16501 1 4.7485645794943343e+00 8.5418606989711336e+01 6.5760024244836735e-08 0 0 0 +16504 1 5.8404171741182260e+00 8.3196440048792994e+01 6.0752309481546882e-08 0 0 0 +16506 1 7.5397002660600068e+00 8.2639146460240681e+01 1.7500000664557447e+00 0 0 0 +16511 1 9.7824050361246737e+00 8.3733304501792361e+01 1.7500000276238712e+00 0 0 0 +16509 1 1.1466173419225390e+01 8.3171530952742472e+01 1.7499999991975582e+01 0 0 -1 +16558 1 1.0342364816351944e+01 8.5389990549379178e+01 1.3762873178439249e-08 0 0 0 +16560 1 1.2026827725163020e+01 8.4828940614034735e+01 1.7499999993451090e+00 0 0 0 +17149 1 1.1466173444634819e+01 8.3171530949094105e+01 3.5000000141261673e+00 0 0 0 +17198 1 1.0342364844390634e+01 8.5389990536492860e+01 3.5000000309599590e+00 0 0 0 +16515 1 1.3149238146048525e+01 8.2609835005902895e+01 1.7499999766939833e+00 0 0 0 +16563 1 1.5955088246980033e+01 8.5363415048266901e+01 5.7641547755495743e-09 0 0 0 +16564 1 1.5393908980252142e+01 8.3705893126468169e+01 1.7500000054512173e+00 0 0 0 +17203 1 1.5955088271051372e+01 8.5363415010858091e+01 3.4999999795533263e+00 0 0 0 +16566 1 1.7077392362406457e+01 8.3144412909925975e+01 2.7197013437461828e-08 0 0 0 +16568 1 1.8760916531810356e+01 8.2582943080073093e+01 1.7500000055307945e+00 0 0 0 +16569 1 1.7638584581689205e+01 8.4801923900567090e+01 1.7499999905804078e+00 0 0 0 +17206 1 1.7077392382082127e+01 8.3144412914198284e+01 3.4999999658322105e+00 0 0 0 +16573 1 2.1005607520469884e+01 8.3678969806295783e+01 1.7499999814539082e+00 0 0 0 +16607 1 2.1566780602600460e+01 8.5336472900745505e+01 1.7499999975030846e+01 0 0 -1 +17247 1 2.1566780618490078e+01 8.5336472897637279e+01 3.4999999869913219e+00 0 0 0 +16571 1 2.2689124819958181e+01 8.3117493625575577e+01 1.7499999956620108e+01 0 0 -1 +16577 1 2.4372640770503228e+01 8.2556016810726391e+01 1.7499999673186195e+00 0 0 0 +16609 1 2.3250296564101880e+01 8.4774996444972658e+01 1.7499999775087303e+00 0 0 0 +17211 1 2.2689124826912792e+01 8.3117493638279853e+01 3.5000000049999351e+00 0 0 0 +17251 1 2.4933812703316828e+01 8.4213519979886456e+01 3.4999999988116199e+00 0 0 0 +16611 1 2.4933812725128170e+01 8.4213519959919452e+01 1.7499999987485836e+01 0 0 -1 +16613 1 2.6617328663455989e+01 8.3652043390558063e+01 1.7499999976570857e+00 0 0 0 +16618 1 2.8862016729827111e+01 8.4748069899991776e+01 1.7500000186754077e+00 0 0 0 +16617 1 2.9984360281835972e+01 8.2529090187886595e+01 1.7500000170185424e+00 0 0 0 +16622 1 3.2229048405433794e+01 8.3625116771796314e+01 1.7500000131562035e+00 0 0 0 +17256 1 3.0545532562468768e+01 8.4186593316365517e+01 3.4999999945381157e+00 0 0 0 +16616 1 3.0545532559323060e+01 8.4186593308324035e+01 4.9972038795339477e-08 0 0 0 +16644 1 3.4473736280579956e+01 8.4721143508864415e+01 1.7499999767949925e+00 0 0 0 +16626 1 3.5596079992605958e+01 8.2502163962645511e+01 1.7499999640563677e+00 0 0 0 +16646 1 3.6157251995416068e+01 8.4159667083044539e+01 1.7499999943901827e+01 0 0 -1 +16648 1 3.7840767779906983e+01 8.3598190767761466e+01 1.7499999757587665e+00 0 0 0 +17286 1 3.6157252036797260e+01 8.4159667068836058e+01 3.5000000039023083e+00 0 0 0 +16652 1 4.1207799200448299e+01 8.2475238068817347e+01 1.7499999975959368e+00 0 0 0 +16653 1 4.0085455463082475e+01 8.4694217639806794e+01 1.7499999842120395e+00 0 0 0 +16651 1 4.1768971246257358e+01 8.4132741254911139e+01 2.0058872672495039e-08 0 0 0 +16656 1 4.3452487143797406e+01 8.3571265066242660e+01 1.7500000368535062e+00 0 0 0 +22820 1 4.5136003201627744e+01 8.3009788743713145e+01 5.1834722984029963e-08 0 0 0 +16664 1 4.4013659223093022e+01 8.5228768343824939e+01 7.7842187378449933e-08 0 0 0 +16503 1 3.1035854074962539e+00 8.6026658547130609e+01 1.7500000455367348e+00 0 0 0 +16551 1 1.7224975198321406e+00 8.8178455129649308e+01 1.7500000358355861e+00 0 0 0 +16553 1 5.3078144365934623e+00 8.7083220353570724e+01 1.7500000569629006e+00 0 0 0 +17192 1 3.5610870594307822e+00 8.7632510050859267e+01 3.4999999991168282e+00 0 0 0 +16552 1 3.5610870518359925e+00 8.7632510011926499e+01 8.0921446768807182e-08 0 0 0 +16556 1 8.6590380032184981e+00 8.5950763656532146e+01 1.7500000460013296e+00 0 0 0 +16557 1 7.5397004779962655e+00 8.8173132631876243e+01 1.7500000306407308e+00 0 0 0 +17195 1 9.2228650882708365e+00 8.7609863019957828e+01 3.5000000394946880e+00 0 0 0 +16555 1 9.2228650716517766e+00 8.7609863042065186e+01 1.0942645938185114e-08 0 0 0 +16561 1 1.0904486746036177e+01 8.7047621444510440e+01 1.7500000064319263e+00 0 0 0 +16565 1 1.4271515699381830e+01 8.5924890286775906e+01 1.7499999765826475e+00 0 0 0 +16600 1 1.3149238501961158e+01 8.8143821373793600e+01 1.7500000051309457e+00 0 0 0 +16601 1 1.4832659540119566e+01 8.7582351577105655e+01 4.2030618745584195e-09 0 0 0 +17241 1 1.4832659545376897e+01 8.7582351553304761e+01 3.4999999687840222e+00 0 0 0 +16602 1 1.6516220726697192e+01 8.7020904266781244e+01 1.7499999721305344e+00 0 0 0 +16606 1 1.8760917039822964e+01 8.8116929387927598e+01 1.7499999702687348e+00 0 0 0 +16604 1 2.0444438267712073e+01 8.7555454134629315e+01 1.7499999983922379e+01 0 0 -1 +16605 1 1.9883267455146676e+01 8.5897950415604598e+01 1.7499999981171452e+00 0 0 0 +16610 1 2.2127953918478045e+01 8.6993976620658131e+01 1.7499999711571266e+00 0 0 0 +17244 1 2.0444438297407633e+01 8.7555454103270591e+01 3.4999999815703697e+00 0 0 0 +16614 1 2.5494984928786653e+01 8.5871023055843963e+01 1.7499999883478794e+00 0 0 0 +16635 1 2.4372641481622242e+01 8.8090002937674598e+01 1.7499999860579427e+00 0 0 0 +16637 1 2.7739672994978516e+01 8.6967049596330639e+01 1.7500000304167487e+00 0 0 0 +16640 1 3.1106704739785783e+01 8.5844096446240101e+01 1.7500000338568638e+00 0 0 0 +16641 1 2.9984361136214336e+01 8.8063076118690489e+01 1.7500000314468702e+00 0 0 0 +17278 1 2.9423188989403513e+01 8.6405573014964801e+01 3.5000000031416927e+00 0 0 0 +16638 1 2.9423189002413810e+01 8.6405573000163471e+01 5.6466038514239026e-08 0 0 0 +16645 1 3.3351392822024074e+01 8.6940123192976074e+01 1.7499999987840136e+00 0 0 0 +16643 1 3.5034908392533488e+01 8.6378646640089613e+01 1.7499999948912851e+01 0 0 -1 +17283 1 3.5034908415673094e+01 8.6378646646168761e+01 3.5000000033435286e+00 0 0 0 +16649 1 3.6718424067788199e+01 8.5817170352311734e+01 1.7499999815600769e+00 0 0 0 +16657 1 3.5596080764706720e+01 8.8036149961646771e+01 1.7499999742058625e+00 0 0 0 +16659 1 3.8963111833172547e+01 8.6913197160029114e+01 1.7499999754515578e+00 0 0 0 +16660 1 4.0646627585899601e+01 8.6351720907750575e+01 1.7499999965982333e+01 0 0 -1 +16663 1 4.1207799662639957e+01 8.8009224155704786e+01 1.7500000167430252e+00 0 0 0 +16661 1 4.2891315447899082e+01 8.7447747744176382e+01 3.9001303506730870e-08 0 0 0 +16662 1 4.2330143325887853e+01 8.5790244558979253e+01 1.7500000054555671e+00 0 0 0 +16665 1 4.4574831337655276e+01 8.6886271534467909e+01 1.7500000245506091e+00 0 0 0 +16668 1 1.0571060466097504e+00 4.6206498827311364e+01 5.2500000505998079e+00 0 0 0 +16674 1 3.1035849641552216e+00 4.7288759921356544e+01 5.2500000302288337e+00 0 0 0 +16676 1 4.7485639078854307e+00 4.6680708123825923e+01 3.5000000326953433e+00 0 0 0 +16670 1 4.1395810003406313e+00 4.5004553870297514e+01 5.2500000402391853e+00 0 0 0 +16678 1 6.4095230087818802e+00 4.6113210371380347e+01 5.2499999806485098e+00 0 0 0 +17316 1 4.7485640186124876e+00 4.6680708143880047e+01 6.9999999993756283e+00 0 0 0 +16669 1 5.8404165446996936e+00 4.4458541341306244e+01 3.5000000197199066e+00 0 0 0 +17309 1 5.8404166395773389e+00 4.4458541304767806e+01 6.9999999614058588e+00 0 0 0 +16683 1 8.6590371331207301e+00 4.7212863685606891e+01 5.2499999515531846e+00 0 0 0 +16681 1 1.0342363827192528e+01 4.6652090266731591e+01 3.5000000022120776e+00 0 0 0 +16682 1 9.7824041575181973e+00 4.4995404632982101e+01 5.2499999484380444e+00 0 0 0 +16686 1 1.2026826663764489e+01 4.6091040037852871e+01 5.2499999438304918e+00 0 0 0 +17321 1 1.0342363888783286e+01 4.6652090231840340e+01 6.9999999073883465e+00 0 0 0 +16684 1 1.1466172432640132e+01 4.4433630775113762e+01 3.4999999727494133e+00 0 0 0 +17324 1 1.1466172430716840e+01 4.4433630751181575e+01 6.9999999387197338e+00 0 0 0 +16707 1 1.5955086813383785e+01 4.6625513725095530e+01 3.4999999609957708e+00 0 0 0 +16688 1 1.5393907666068928e+01 4.4967992129031906e+01 5.2499999583816193e+00 0 0 0 +16705 1 1.4271514408602984e+01 4.7186989130004811e+01 5.2499999650768361e+00 0 0 0 +17347 1 1.5955086790429307e+01 4.6625513751357296e+01 7.0000000081070146e+00 0 0 0 +16709 1 1.7638583048443273e+01 4.6064022545501835e+01 5.2500000135468259e+00 0 0 0 +16687 1 1.7077390990570017e+01 4.4406511797911286e+01 3.4999999849721029e+00 0 0 0 +17327 1 1.7077390955930628e+01 4.4406511823775013e+01 7.0000000264209641e+00 0 0 0 +16712 1 2.1566778958892211e+01 4.6598571441938255e+01 3.5000000219712097e+00 0 0 0 +16713 1 2.1005606023643541e+01 4.4941068454546865e+01 5.2500000253409320e+00 0 0 0 +16714 1 1.9883265765362140e+01 4.7160048892901706e+01 5.2500000056779612e+00 0 0 0 +17352 1 2.1566778986201001e+01 4.6598571444313386e+01 7.0000000197995327e+00 0 0 0 +16716 1 2.4933811284763895e+01 4.5475618708400269e+01 3.5000000010093881e+00 0 0 0 +16717 1 2.3250294989275140e+01 4.6037095115560767e+01 5.2500000084110638e+00 0 0 0 +16750 1 2.5494983346134781e+01 4.7133121870698183e+01 5.2500000043208290e+00 0 0 0 +17356 1 2.4933811317725180e+01 4.5475618700899105e+01 6.9999999786461267e+00 0 0 0 +16715 1 2.2689123429554826e+01 4.4379592332326219e+01 3.5000000172769510e+00 0 0 0 +17355 1 2.2689123442829427e+01 4.4379592317653525e+01 7.0000000209956674e+00 0 0 0 +16719 1 2.6617327430691986e+01 4.4914142173806738e+01 5.2499999649134450e+00 0 0 0 +16754 1 2.8862015461233195e+01 4.6010168706997106e+01 5.2499999601551659e+00 0 0 0 +16756 1 3.0545531490651591e+01 4.5448692024662371e+01 3.4999999868975484e+00 0 0 0 +16758 1 3.2229047506800065e+01 4.4887215343484840e+01 5.2499999873831440e+00 0 0 0 +16759 1 3.1106703454617747e+01 4.7106195193680421e+01 5.2499999716362167e+00 0 0 0 +17396 1 3.0545531436224273e+01 4.5448691984943977e+01 6.9999999717484354e+00 0 0 0 +16762 1 3.4473735513479923e+01 4.5983242018014145e+01 5.2500000202351105e+00 0 0 0 +16764 1 3.7840767631594538e+01 4.4860289285038725e+01 5.2500000325369536e+00 0 0 0 +16808 1 3.6718423432096294e+01 4.7079268851755884e+01 5.2500000220295471e+00 0 0 0 +17450 1 3.8401939513791952e+01 4.6517792530270981e+01 7.0000000257736747e+00 0 0 0 +17401 1 3.6157251541801436e+01 4.5421765583298004e+01 7.0000000272656564e+00 0 0 0 +16812 1 4.0085455550788332e+01 4.5956316312521295e+01 5.2500000116510801e+00 0 0 0 +17454 1 4.1768971589067789e+01 4.5394840046950868e+01 6.9999999779032906e+00 0 0 0 +17403 1 3.9524283649187424e+01 4.4298813009005706e+01 7.0000000292302165e+00 0 0 0 +16816 1 4.3452487676421150e+01 4.4833363834276014e+01 5.2499999803252875e+00 0 0 0 +16817 1 4.2330143525575913e+01 4.7052343383491831e+01 5.2499999909834729e+00 0 0 0 +17455 1 4.4013659591639986e+01 4.6490867230275512e+01 6.9999999589348594e+00 0 0 0 +16675 1 1.7224970334445580e+00 4.9440556430814738e+01 5.2499999866645437e+00 0 0 0 +16673 1 3.5610863752288577e+00 4.8894611030041062e+01 3.5000000067042198e+00 0 0 0 +16679 1 5.3078137412321658e+00 4.8345321027738066e+01 5.2499999837711888e+00 0 0 0 +16693 1 4.1395809142608853e+00 5.0538538840334176e+01 5.2499999805301174e+00 0 0 0 +17313 1 3.5610864735478129e+00 4.8894611040779601e+01 6.9999999986754462e+00 0 0 0 +16699 1 9.2228640832203101e+00 4.8871962607193538e+01 3.4999999985397561e+00 0 0 0 +16697 1 7.5396996268167804e+00 4.9435232516225582e+01 5.2499999689990773e+00 0 0 0 +17339 1 9.2228641595171688e+00 4.8871962578159412e+01 6.9999999341622940e+00 0 0 0 +16702 1 9.7824042043153305e+00 5.0529389908082486e+01 5.2499999502959023e+00 0 0 0 +16701 1 1.0904485704512298e+01 4.8309720712102347e+01 5.2499999421382988e+00 0 0 0 +16704 1 1.4832658190044993e+01 4.8844450100346506e+01 3.4999999835569668e+00 0 0 0 +16706 1 1.3149237302232073e+01 4.9405920041643910e+01 5.2499999412344369e+00 0 0 0 +16738 1 1.5393907912935372e+01 5.0501977707878794e+01 5.2499999858559727e+00 0 0 0 +17344 1 1.4832658184649855e+01 4.8844450118289870e+01 6.9999999832978270e+00 0 0 0 +16710 1 1.6516219217553036e+01 4.8283002713820892e+01 5.2499999885808650e+00 0 0 0 +16742 1 1.8760915302697494e+01 4.9379027623331375e+01 5.2500000247507019e+00 0 0 0 +16744 1 2.0444436499783095e+01 4.8817552433934473e+01 3.5000000154065969e+00 0 0 0 +16746 1 2.2127952110364358e+01 4.8256075115937946e+01 5.2500000312590966e+00 0 0 0 +16747 1 2.1005606245160312e+01 5.0475054345049465e+01 5.2500000168927707e+00 0 0 0 +17384 1 2.0444436490909496e+01 4.8817552445633794e+01 7.0000000306738466e+00 0 0 0 +16751 1 2.4372639620836441e+01 4.9352101625623412e+01 5.2500000041805350e+00 0 0 0 +16755 1 2.7739671371297391e+01 4.8229148537846719e+01 5.2499999631234289e+00 0 0 0 +16796 1 2.6617327533523596e+01 5.0448128328617038e+01 5.2499999904353558e+00 0 0 0 +16798 1 2.8300843504761971e+01 4.9886651751810192e+01 3.4999999999786526e+00 0 0 0 +17438 1 2.8300843517542770e+01 4.9886651687021939e+01 6.9999999784896136e+00 0 0 0 +16753 1 2.9423187534159428e+01 4.7667671904777407e+01 3.4999999770305670e+00 0 0 0 +16800 1 2.9984359493426201e+01 4.9325175042290297e+01 5.2499999751983468e+00 0 0 0 +16805 1 3.2229047581673200e+01 5.0421201489440229e+01 5.2500000140559493e+00 0 0 0 +17393 1 2.9423187520420843e+01 4.7667671869384485e+01 6.9999999628453793e+00 0 0 0 +16803 1 3.3912563604480809e+01 4.9859724959171672e+01 3.4999999996826663e+00 0 0 0 +16804 1 3.3351391603237218e+01 4.8202221819339570e+01 5.2500000159190678e+00 0 0 0 +16806 1 3.5034907495258530e+01 4.7640745167310449e+01 3.5000000101200159e+00 0 0 0 +17443 1 3.3912563562649645e+01 4.9859724906627918e+01 7.0000000211790843e+00 0 0 0 +17446 1 3.5034907463511907e+01 4.7640745148234679e+01 7.0000000226937207e+00 0 0 0 +16809 1 3.5596079661493555e+01 4.9298248487719313e+01 5.2500000243222731e+00 0 0 0 +16862 1 3.7840767532497040e+01 5.0394275366265703e+01 5.2500000310973185e+00 0 0 0 +17447 1 3.7279595520995727e+01 4.8736772135237423e+01 7.0000000336690844e+00 0 0 0 +16813 1 3.8963111429775708e+01 4.8175295762228416e+01 5.2500000152157646e+00 0 0 0 +16866 1 4.1207799413554717e+01 4.9271322892285383e+01 5.2499999908582566e+00 0 0 0 +17451 1 4.0646627486709356e+01 4.7613819652456137e+01 6.9999999940360267e+00 0 0 0 +17504 1 3.9524283500218161e+01 4.9832799129145407e+01 7.0000000079643305e+00 0 0 0 +16869 1 4.4574831554102516e+01 4.8148370447251104e+01 5.2499999453330108e+00 0 0 0 +16870 1 4.3452487352947067e+01 5.0367349972319275e+01 5.2499999512424287e+00 0 0 0 +17508 1 4.2891315456918718e+01 4.8709846625002811e+01 6.9999999501678021e+00 0 0 0 +16689 1 1.2264313743825750e+00 5.3375128695272146e+01 3.5000000220214109e+00 0 0 0 +16691 1 2.5187337681598803e+00 5.1097566137680531e+01 3.5000000135447342e+00 0 0 0 +16690 1 1.0571060445217348e+00 5.1740483759067402e+01 5.2500000097784918e+00 0 0 0 +16694 1 3.1035848673602584e+00 5.2822744780684566e+01 5.2499999993303312e+00 0 0 0 +17329 1 1.2264313761704755e+00 5.3375128768346691e+01 6.9999999920852716e+00 0 0 0 +17331 1 2.5187337955964297e+00 5.1097566163589420e+01 6.9999999566883044e+00 0 0 0 +16698 1 6.4095229009641690e+00 5.1647195431919073e+01 5.2499999766076888e+00 0 0 0 +16726 1 5.3078136577637132e+00 5.3879306024438947e+01 5.2499999830155968e+00 0 0 0 +16696 1 8.0950138951021984e+00 5.1089357364407903e+01 3.4999999895276162e+00 0 0 0 +16728 1 6.9829708715586696e+00 5.3310491960750063e+01 3.5000000015926123e+00 0 0 0 +16730 1 8.6590369743924640e+00 5.2746848835909532e+01 5.2499999637443073e+00 0 0 0 +17336 1 8.0950139776184518e+00 5.1089357302342201e+01 6.9999999335470857e+00 0 0 0 +17368 1 6.9829709175236285e+00 5.3310491872556781e+01 6.9999999419051226e+00 0 0 0 +16733 1 1.2587782817788142e+01 5.3282335795732706e+01 3.5000000109475691e+00 0 0 0 +16734 1 1.2026826795948329e+01 5.1625025436300270e+01 5.2499999605080765e+00 0 0 0 +16735 1 1.0904485637475384e+01 5.3843706019993256e+01 5.2499999540585005e+00 0 0 0 +17373 1 1.2587782829533644e+01 5.3282335789831237e+01 6.9999999544494385e+00 0 0 0 +16736 1 1.3710491266570017e+01 5.1063512497692834e+01 3.5000000135704084e+00 0 0 0 +16739 1 1.4271514577301865e+01 5.2720974623336247e+01 5.2499999897245191e+00 0 0 0 +17376 1 1.3710491280001033e+01 5.1063512521768480e+01 6.9999999570783800e+00 0 0 0 +16741 1 1.9322089232663128e+01 5.1036529358090959e+01 3.4999999847684129e+00 0 0 0 +16743 1 1.7638583312054148e+01 5.1598008264406630e+01 5.2500000040013663e+00 0 0 0 +16784 1 1.6516219411782195e+01 5.3816988316066492e+01 5.2500000045798636e+00 0 0 0 +16786 1 1.8199753444586509e+01 5.3255514618703231e+01 3.4999999974410758e+00 0 0 0 +17426 1 1.8199753454458797e+01 5.3255514692755625e+01 7.0000000287429431e+00 0 0 0 +17381 1 1.9322089217481640e+01 5.1036529389111195e+01 7.0000000407724192e+00 0 0 0 +16788 1 1.9883266070971398e+01 5.2694034748141959e+01 5.2500000136776919e+00 0 0 0 +16793 1 2.2127952371001889e+01 5.3790061050216366e+01 5.2500000101305453e+00 0 0 0 +16791 1 2.3811467482649402e+01 5.3228584367583359e+01 3.5000000273806924e+00 0 0 0 +16792 1 2.3250295189420381e+01 5.1571081113425564e+01 5.2500000392907946e+00 0 0 0 +16797 1 2.5494983499675261e+01 5.2667107939291803e+01 5.2499999924970204e+00 0 0 0 +17431 1 2.3811467493188339e+01 5.3228584361630610e+01 6.9999999961670394e+00 0 0 0 +16795 1 2.7178499636885523e+01 5.2105631453802879e+01 3.4999999974037554e+00 0 0 0 +16801 1 2.8862015626113145e+01 5.1544154935321593e+01 5.2499999770417070e+00 0 0 0 +16850 1 2.7739671556886890e+01 5.3763134643776638e+01 5.2499999982110994e+00 0 0 0 +17435 1 2.7178499649845392e+01 5.2105631431509380e+01 7.0000000005221166e+00 0 0 0 +16854 1 3.1106703600069761e+01 5.2640181317377497e+01 5.2500000166009713e+00 0 0 0 +16856 1 3.2790219700453349e+01 5.2078704739210025e+01 3.5000000184719831e+00 0 0 0 +16858 1 3.4473735600844343e+01 5.1517228116676897e+01 5.2500000229947936e+00 0 0 0 +16859 1 3.3351391713514708e+01 5.3736207911296979e+01 5.2500000103987130e+00 0 0 0 +17496 1 3.2790219659316868e+01 5.2078704696798837e+01 7.0000000115809264e+00 0 0 0 +17497 1 3.5034907569002129e+01 5.3174731247851206e+01 7.0000000253818202e+00 0 0 0 +16863 1 3.6718423469490162e+01 5.2613254987202559e+01 5.2500000488529341e+00 0 0 0 +17500 1 3.6157251572863423e+01 5.0955751644877353e+01 7.0000000398473707e+00 0 0 0 +17501 1 3.8401939420882378e+01 5.2051778633119959e+01 7.0000000061536323e+00 0 0 0 +16867 1 4.0085455311949694e+01 5.1490302409591600e+01 5.2500000240191849e+00 0 0 0 +16917 1 3.8963111363733098e+01 5.3709281889727393e+01 5.2500000172748988e+00 0 0 0 +17505 1 4.1768971308341904e+01 5.0928826171450815e+01 6.9999999913556783e+00 0 0 0 +17559 1 4.0646627321571422e+01 5.3147805756774297e+01 7.0000000075049362e+00 0 0 0 +16921 1 4.2330143278814219e+01 5.2586329473915875e+01 5.2499999639411463e+00 0 0 0 +16924 1 4.4574831296948418e+01 5.3682356413658937e+01 5.2499999702493714e+00 0 0 0 +17563 1 4.4013659311192022e+01 5.2024853269163778e+01 6.9999999589167992e+00 0 0 0 +16722 1 1.7224970762906466e+00 5.4974541281598533e+01 5.2500000244461482e+00 0 0 0 +16725 1 5.8404164527679008e+00 5.5526511439701778e+01 3.4999999864251716e+00 0 0 0 +16727 1 4.1395808860254268e+00 5.6072523801385422e+01 5.2500000227672095e+00 0 0 0 +17365 1 5.8404164855711587e+00 5.5526511408864060e+01 6.9999999724275490e+00 0 0 0 +16731 1 7.5396994706928799e+00 5.4969217637644626e+01 5.2499999472634489e+00 0 0 0 +16778 1 1.1466172515739178e+01 5.5501601502438589e+01 3.4999999990859436e+00 0 0 0 +16776 1 9.7824040979899110e+00 5.6063375171375895e+01 5.2499999605962806e+00 0 0 0 +17418 1 1.1466172512999346e+01 5.5501601472267772e+01 6.9999999538780369e+00 0 0 0 +16780 1 1.3149237297240482e+01 5.4939905462381560e+01 5.2500000098471871e+00 0 0 0 +16785 1 1.5393907976600648e+01 5.6035963264268212e+01 5.2499999982995753e+00 0 0 0 +16783 1 1.7077391361226823e+01 5.5474483091166881e+01 3.5000000018859523e+00 0 0 0 +16789 1 1.8760915547026837e+01 5.4913013404261456e+01 5.2500000015499504e+00 0 0 0 +17423 1 1.7077391360180755e+01 5.5474483140386717e+01 7.0000000207374100e+00 0 0 0 +16842 1 2.1005606420245044e+01 5.6009040183339224e+01 5.2500000127784867e+00 0 0 0 +16844 1 2.2689123815860956e+01 5.5447564215106162e+01 3.5000000063849952e+00 0 0 0 +16845 1 2.4933811639792836e+01 5.6543590767977634e+01 3.5000000032938399e+00 0 0 0 +16846 1 2.4372639863955776e+01 5.4886087616651629e+01 5.2499999914688251e+00 0 0 0 +17484 1 2.2689123803928670e+01 5.5447564236126652e+01 7.0000000241359288e+00 0 0 0 +17485 1 2.4933811664775298e+01 5.6543590782857187e+01 6.9999999887817932e+00 0 0 0 +16848 1 2.6056155596488328e+01 5.4324611131627478e+01 3.5000000337259900e+00 0 0 0 +16851 1 2.6617327750575114e+01 5.5982114373889303e+01 5.2499999932082373e+00 0 0 0 +17488 1 2.6056155634779401e+01 5.4324611131320950e+01 6.9999999806081155e+00 0 0 0 +16853 1 3.1667875618017330e+01 5.4297684473319563e+01 3.5000000175870718e+00 0 0 0 +16855 1 2.9984359639652002e+01 5.4859161165288015e+01 5.2499999831388511e+00 0 0 0 +16907 1 3.0545531754963520e+01 5.6516664258713213e+01 3.5000000012104131e+00 0 0 0 +16909 1 3.2229047748211066e+01 5.5955187577651927e+01 5.2499999933875010e+00 0 0 0 +17493 1 3.1667875587660173e+01 5.4297684436440626e+01 7.0000000003476268e+00 0 0 0 +17547 1 3.0545531723126128e+01 5.6516664236597656e+01 6.9999999838910574e+00 0 0 0 +16913 1 3.5596079734541881e+01 5.4832234554238227e+01 5.2500000485675518e+00 0 0 0 +16918 1 3.7840767521041954e+01 5.5928261469686539e+01 5.2500000324434346e+00 0 0 0 +17552 1 3.6157251576980372e+01 5.6489737736448944e+01 7.0000000312300008e+00 0 0 0 +17555 1 3.7279595535757522e+01 5.4270758230076851e+01 7.0000000248581404e+00 0 0 0 +16922 1 4.1207799267651971e+01 5.4805308945897693e+01 5.2499999861329707e+00 0 0 0 +17556 1 3.9524283395049579e+01 5.5366785199777631e+01 7.0000000211974722e+00 0 0 0 +17614 1 4.1768971202046920e+01 5.6462812145797727e+01 6.9999999938679203e+00 0 0 0 +23735 1 4.5136003269740129e+01 5.5339859594431623e+01 6.9999999607041081e+00 0 0 0 +16976 1 4.3452487190239651e+01 5.5901335896442802e+01 5.2499999737283938e+00 0 0 0 +17560 1 4.2891315265538523e+01 5.4243832663926234e+01 6.9999999714875436e+00 0 0 0 +16723 1 1.0571059743877549e+00 5.7274468590567757e+01 5.2500000185423081e+00 0 0 0 +16768 1 3.1035848578318106e+00 5.8356729784642994e+01 5.2499999936943000e+00 0 0 0 +16767 1 3.5610861931649924e+00 5.9962580971705172e+01 3.4999999962036847e+00 0 0 0 +16770 1 4.7485637600171327e+00 5.7748678138499585e+01 3.4999999926996268e+00 0 0 0 +16772 1 6.4095228182666100e+00 5.7181180549532471e+01 5.2499999723191566e+00 0 0 0 +16773 1 5.3078135081709465e+00 5.9413291146052892e+01 5.2499999689379004e+00 0 0 0 +17407 1 3.5610862164894268e+00 5.9962580949794145e+01 6.9999999835107252e+00 0 0 0 +17410 1 4.7485637947576995e+00 5.7748678123047753e+01 6.9999999904965442e+00 0 0 0 +16777 1 8.6590369510048628e+00 5.8280834133691769e+01 5.2499999610241188e+00 0 0 0 +16828 1 9.2228639392016376e+00 5.9939933167731716e+01 3.4999999884793187e+00 0 0 0 +17468 1 9.2228639472789862e+00 5.9939933151457630e+01 6.9999999553685104e+00 0 0 0 +16775 1 1.0342363793617723e+01 5.7720060870192299e+01 3.4999999998149396e+00 0 0 0 +16781 1 1.2026826725586634e+01 5.7159010803416891e+01 5.2499999965448838e+00 0 0 0 +16830 1 1.0904485631878664e+01 5.9377691429512474e+01 5.2499999864894136e+00 0 0 0 +17415 1 1.0342363787491504e+01 5.7720060847102260e+01 6.9999999377766393e+00 0 0 0 +16833 1 1.4832658367900240e+01 5.9912421189024023e+01 3.4999999950562963e+00 0 0 0 +16834 1 1.4271514598514612e+01 5.8254960161457198e+01 5.2500000187075653e+00 0 0 0 +16836 1 1.5955087111384175e+01 5.7693484929089834e+01 3.4999999985460488e+00 0 0 0 +17473 1 1.4832658356764213e+01 5.9912421251014351e+01 7.0000000213305080e+00 0 0 0 +17476 1 1.5955087103734582e+01 5.7693484972669040e+01 7.0000000279912298e+00 0 0 0 +16838 1 1.7638583404771417e+01 5.7131993924889649e+01 5.2500000263176778e+00 0 0 0 +16839 1 1.6516219484467975e+01 5.9350973994313961e+01 5.2500000273401959e+00 0 0 0 +16841 1 2.1566779333094875e+01 5.7666543173885195e+01 3.5000000026880760e+00 0 0 0 +16843 1 1.9883266141354202e+01 5.8228020465081407e+01 5.2499999829493591e+00 0 0 0 +16895 1 2.0444436814555377e+01 5.9885524028068922e+01 3.4999999931166998e+00 0 0 0 +16897 1 2.2127952469560121e+01 5.9324046830421231e+01 5.2499999930189318e+00 0 0 0 +17481 1 2.1566779363158346e+01 5.7666543175426391e+01 6.9999999960685342e+00 0 0 0 +17535 1 2.0444436830769209e+01 5.9885524063271880e+01 7.0000000133293900e+00 0 0 0 +16847 1 2.3250295367231107e+01 5.7105067010727538e+01 5.2499999956948811e+00 0 0 0 +16901 1 2.5494983671411703e+01 5.8201093863189634e+01 5.2499999978903240e+00 0 0 0 +16905 1 2.8862015756344206e+01 5.7078140924606920e+01 5.2499999723670321e+00 0 0 0 +16906 1 2.7739671659469082e+01 5.9297120569676849e+01 5.2499999500790535e+00 0 0 0 +16904 1 2.9423187790938989e+01 5.8735644022634361e+01 3.4999999795393384e+00 0 0 0 +16910 1 3.1106703710958904e+01 5.8174167348895260e+01 5.2499999785045173e+00 0 0 0 +17544 1 2.9423187799297299e+01 5.8735643989589420e+01 6.9999999603717820e+00 0 0 0 +16914 1 3.4473735634910270e+01 5.7051214190288619e+01 5.2500000211292095e+00 0 0 0 +16964 1 3.3351391738311555e+01 5.9270193916640672e+01 5.2500000027945388e+00 0 0 0 +16966 1 3.5034907564627972e+01 5.8708717291158841e+01 3.5000000144982737e+00 0 0 0 +17606 1 3.5034907540102850e+01 5.8708717293575759e+01 7.0000000146954422e+00 0 0 0 +16968 1 3.6718423425920498e+01 5.8147241019405158e+01 5.2500000173140737e+00 0 0 0 +17607 1 3.7279595439826380e+01 5.9804744277807288e+01 7.0000000160980376e+00 0 0 0 +17610 1 3.8401939378979954e+01 5.7585764713538715e+01 7.0000000245292586e+00 0 0 0 +16972 1 4.0085455268926616e+01 5.7024288465084723e+01 5.2500000049073456e+00 0 0 0 +16973 1 3.8963111256702376e+01 5.9243267876175075e+01 5.2500000271093281e+00 0 0 0 +17611 1 4.0646627226742737e+01 5.8681791729613444e+01 7.0000000172674506e+00 0 0 0 +16977 1 4.2330143168759662e+01 5.8120315369538019e+01 5.2499999888414051e+00 0 0 0 +17029 1 4.4574831220755179e+01 5.9216342207989683e+01 5.2499999519074274e+00 0 0 0 +17615 1 4.4013659173806289e+01 5.7558839116136049e+01 6.9999999782712665e+00 0 0 0 +17668 1 4.2891315159851835e+01 5.9777818478930662e+01 6.9999999650574427e+00 0 0 0 +16769 1 1.7224968466454322e+00 6.0508526151853502e+01 5.2499999696683393e+00 0 0 0 +16819 1 1.0571059341664975e+00 6.2808453574873525e+01 5.2499999673761497e+00 0 0 0 +16820 1 2.5187336539293090e+00 6.2165536075101969e+01 3.4999999626289631e+00 0 0 0 +17460 1 2.5187336282805108e+00 6.2165536075520293e+01 6.9999999860647861e+00 0 0 0 +16822 1 4.1395807215684002e+00 6.1606508930183715e+01 5.2499999777338511e+00 0 0 0 +16827 1 6.4095226311708240e+00 6.2715165889294390e+01 5.2499999945927707e+00 0 0 0 +16825 1 8.0950136757817273e+00 6.2157327928834960e+01 3.4999999850184662e+00 0 0 0 +16826 1 7.5396993686850173e+00 6.0503202940744799e+01 5.2499999778608153e+00 0 0 0 +17465 1 8.0950137132084947e+00 6.2157327871512138e+01 6.9999999437758937e+00 0 0 0 +16831 1 9.7824040479061196e+00 6.1597360581524299e+01 5.2499999837087739e+00 0 0 0 +16885 1 1.2026826773596094e+01 6.2692996363141653e+01 5.2499999888049951e+00 0 0 0 +16835 1 1.3149237345504369e+01 6.0473891000608091e+01 5.2499999845199170e+00 0 0 0 +16887 1 1.3710491335549648e+01 6.2131483550497066e+01 3.5000000117658749e+00 0 0 0 +16889 1 1.5393908066642581e+01 6.1569948939834951e+01 5.2500000335867538e+00 0 0 0 +17527 1 1.3710491332465056e+01 6.2131483611195804e+01 6.9999999886642188e+00 0 0 0 +16892 1 1.9322089460266195e+01 6.2104500850884676e+01 3.4999999741951289e+00 0 0 0 +16893 1 1.8760915598186070e+01 6.0446999106629299e+01 5.2500000204655954e+00 0 0 0 +16894 1 1.7638583512312504e+01 6.2665979671467966e+01 5.2500000119979404e+00 0 0 0 +17532 1 1.9322089470289825e+01 6.2104500889058741e+01 7.0000000268913576e+00 0 0 0 +16898 1 2.1005606512748717e+01 6.1543025924289985e+01 5.2500000009958629e+00 0 0 0 +16902 1 2.4372639919036466e+01 6.0420073428749021e+01 5.2499999826139323e+00 0 0 0 +16952 1 2.3250295426102809e+01 6.2639052753428729e+01 5.2500000129935707e+00 0 0 0 +16955 1 2.7178499770129658e+01 6.3173603193835049e+01 3.4999999892363691e+00 0 0 0 +16958 1 2.8300843727965091e+01 6.0954623668754820e+01 3.4999999795178618e+00 0 0 0 +16956 1 2.6617327756703180e+01 6.1516100170073116e+01 5.2499999655650536e+00 0 0 0 +16961 1 2.8862015757450155e+01 6.2612126761551316e+01 5.2499999480665993e+00 0 0 0 +17595 1 2.7178499806240051e+01 6.3173603165699909e+01 6.9999999693578285e+00 0 0 0 +17598 1 2.8300843741570784e+01 6.0954623622141639e+01 6.9999999589768205e+00 0 0 0 +16960 1 2.9984359701451666e+01 6.0393147047943195e+01 5.2499999533430266e+00 0 0 0 +16965 1 3.2229047672523848e+01 6.1489173467438683e+01 5.2499999763102068e+00 0 0 0 +16963 1 3.3912563659138094e+01 6.0927696998965111e+01 3.4999999620865330e+00 0 0 0 +17016 1 3.2790219691131739e+01 6.3146676637706108e+01 3.4999999660524979e+00 0 0 0 +17018 1 3.4473735546519286e+01 6.2585200118062879e+01 5.2499999794273773e+00 0 0 0 +17603 1 3.3912563602363839e+01 6.0927696960747710e+01 7.0000000192343359e+00 0 0 0 +17656 1 3.2790219645373853e+01 6.3146676596218327e+01 6.9999999991465733e+00 0 0 0 +16969 1 3.5596079671577421e+01 6.0366220599635803e+01 5.2500000072802271e+00 0 0 0 +17022 1 3.7840767362018219e+01 6.1462247413481322e+01 5.2500000199901065e+00 0 0 0 +17661 1 3.8401939202798879e+01 6.3119750611081059e+01 7.0000000205991961e+00 0 0 0 +17660 1 3.6157251456658315e+01 6.2023723707063368e+01 7.0000000165363145e+00 0 0 0 +17026 1 4.1207799192478248e+01 6.0339294834195684e+01 5.2500000090506411e+00 0 0 0 +17027 1 4.0085455131439367e+01 6.2558274308684545e+01 5.2500000117234880e+00 0 0 0 +17664 1 3.9524283301110209e+01 6.0900771159793486e+01 7.0000000306355572e+00 0 0 0 +17665 1 4.1768971117236838e+01 6.1996797962982370e+01 6.9999999992866115e+00 0 0 0 +17030 1 4.3452487134448148e+01 6.1435321654316709e+01 5.2499999666027533e+00 0 0 0 +17723 1 4.4013659183783375e+01 6.3092824829704767e+01 6.9999999594421096e+00 0 0 0 +23780 1 4.5136003213323413e+01 6.0873845331772941e+01 6.9999999476741674e+00 0 0 0 +16818 1 1.2264313527340533e+00 6.4443098675264437e+01 3.4999999903765420e+00 0 0 0 +16823 1 3.1035847349380519e+00 6.3890715023421023e+01 5.2499999843301381e+00 0 0 0 +16873 1 1.7224969076535945e+00 6.6042511484685335e+01 5.2500000074153466e+00 0 0 0 +17458 1 1.2264313478323254e+00 6.4443098721003111e+01 6.9999999700289175e+00 0 0 0 +16877 1 5.3078134105981505e+00 6.4947276585185534e+01 5.2500000034049465e+00 0 0 0 +16879 1 6.9829706433643679e+00 6.4378462626834335e+01 3.5000000143253343e+00 0 0 0 +16881 1 8.6590368054343081e+00 6.3814819581040425e+01 5.2499999892163691e+00 0 0 0 +16882 1 7.5396993115146831e+00 6.6037188486829606e+01 5.2499999772936938e+00 0 0 0 +17519 1 6.9829706815761412e+00 6.4378462548522990e+01 6.9999999524725203e+00 0 0 0 +16884 1 1.2587782806095429e+01 6.4350306844675643e+01 3.4999999824486165e+00 0 0 0 +16886 1 1.0904485579361415e+01 6.4911676979904101e+01 5.2499999682012319e+00 0 0 0 +17524 1 1.2587782821655766e+01 6.4350306872379150e+01 6.9999999725665720e+00 0 0 0 +16890 1 1.4271514648352902e+01 6.3788945795578577e+01 5.2500000088252001e+00 0 0 0 +16940 1 1.3149237328207496e+01 6.6007876691227622e+01 5.2500000213732347e+00 0 0 0 +16944 1 1.6516219552300850e+01 6.4884959724561384e+01 5.2500000057789808e+00 0 0 0 +16946 1 1.8199753613192083e+01 6.4323486088159513e+01 3.4999999835125841e+00 0 0 0 +16949 1 1.8760915717780236e+01 6.5980984892354684e+01 5.2499999927846632e+00 0 0 0 +17586 1 1.8199753641830153e+01 6.4323486158697321e+01 7.0000000187167615e+00 0 0 0 +16948 1 1.9883266275292904e+01 6.3762006266427896e+01 5.2500000100041948e+00 0 0 0 +16953 1 2.2127952525014631e+01 6.4858032587805354e+01 5.2500000028885525e+00 0 0 0 +16951 1 2.3811467625335087e+01 6.4296555942543236e+01 3.5000000163826370e+00 0 0 0 +16957 1 2.5494983657052035e+01 6.3735079596598716e+01 5.2499999762375325e+00 0 0 0 +17006 1 2.4372639949724338e+01 6.5954059171865666e+01 5.2499999904321752e+00 0 0 0 +17591 1 2.3811467668590485e+01 6.4296555954902445e+01 6.9999999888693409e+00 0 0 0 +17008 1 2.6056155655923174e+01 6.5392582703861095e+01 3.5000000189390525e+00 0 0 0 +17010 1 2.7739671618404451e+01 6.4831106273917072e+01 5.2499999713944918e+00 0 0 0 +17648 1 2.6056155726733085e+01 6.5392582715238973e+01 6.9999999716830663e+00 0 0 0 +17013 1 3.1667875550629805e+01 6.5365656222378433e+01 3.4999999665559236e+00 0 0 0 +17014 1 3.1106703634646326e+01 6.3708153123853094e+01 5.2499999720382382e+00 0 0 0 +17015 1 2.9984359585625391e+01 6.5927132799590311e+01 5.2499999595555833e+00 0 0 0 +17653 1 3.1667875528101053e+01 6.5365656181880752e+01 6.9999999870541956e+00 0 0 0 +17019 1 3.3351391606781249e+01 6.4804179771513390e+01 5.2499999603593590e+00 0 0 0 +17023 1 3.6718423270947838e+01 6.3681226953365837e+01 5.2500000215634062e+00 0 0 0 +17073 1 3.5596079494608574e+01 6.5900206414508119e+01 5.2500000040186663e+00 0 0 0 +17715 1 3.7279595275729463e+01 6.5338730106053092e+01 7.0000000281875581e+00 0 0 0 +17077 1 3.8963111169315191e+01 6.4777253707450924e+01 5.2499999856285662e+00 0 0 0 +17082 1 4.1207799119139430e+01 6.5873280526901738e+01 5.2499999767692174e+00 0 0 0 +17719 1 4.0646627156341289e+01 6.4215777515090664e+01 6.9999999781981641e+00 0 0 0 +17081 1 4.2330143117434581e+01 6.3654301127810555e+01 5.2499999726802882e+00 0 0 0 +17084 1 4.4574831250606422e+01 6.4750327906027081e+01 5.2499999555003098e+00 0 0 0 +17720 1 4.2891315165716939e+01 6.5311804190758750e+01 6.9999999481284974e+00 0 0 0 +16874 1 1.0571060216504349e+00 6.8342439024273887e+01 5.2500000184534823e+00 0 0 0 +16928 1 3.1035847981837712e+00 6.9424700680852894e+01 5.2500000166024376e+00 0 0 0 +16876 1 5.8404162600292908e+00 6.6594482212801807e+01 3.4999999986434931e+00 0 0 0 +16930 1 4.7485636724063571e+00 6.8816649088498394e+01 3.5000000086993071e+00 0 0 0 +17516 1 5.8404162809455942e+00 6.6594482183755773e+01 6.9999999891240421e+00 0 0 0 +16878 1 4.1395807466211014e+00 6.7140494475909847e+01 5.2500000321037099e+00 0 0 0 +16932 1 6.4095227289016101e+00 6.8249151545303675e+01 5.2500000074885245e+00 0 0 0 +17570 1 4.7485636794591164e+00 6.8816649079829475e+01 7.0000000115438938e+00 0 0 0 +16937 1 8.6590369539748604e+00 6.9348805318577959e+01 5.2499999884690549e+00 0 0 0 +16938 1 1.1466172478799709e+01 6.6569572621302115e+01 3.4999999884406119e+00 0 0 0 +17578 1 1.1466172512608660e+01 6.6569572614667479e+01 6.9999999728259201e+00 0 0 0 +16936 1 9.7824040474003073e+00 6.7131346233755522e+01 5.2499999917649216e+00 0 0 0 +16935 1 1.0342363780100660e+01 6.8788032093417044e+01 3.5000000014584174e+00 0 0 0 +16941 1 1.2026826742787993e+01 6.8226982083357541e+01 5.2500000159497109e+00 0 0 0 +17575 1 1.0342363810470363e+01 6.8788032077724111e+01 6.9999999740002679e+00 0 0 0 +16945 1 1.5393908082084678e+01 6.7103934690619795e+01 5.2500000063433561e+00 0 0 0 +16994 1 1.4271514677896985e+01 6.9322931664371922e+01 5.2500000287401587e+00 0 0 0 +16996 1 1.5955087213260452e+01 6.8761456473247719e+01 3.4999999934559649e+00 0 0 0 +17636 1 1.5955087253035648e+01 6.8761456490317457e+01 7.0000000096344648e+00 0 0 0 +16943 1 1.7077391492742215e+01 6.6542454563219295e+01 3.4999999848621934e+00 0 0 0 +17583 1 1.7077391510618437e+01 6.6542454607319158e+01 7.0000000077238633e+00 0 0 0 +16998 1 1.7638583568420550e+01 6.8199965481830503e+01 5.2500000127593980e+00 0 0 0 +17001 1 2.1566779452989298e+01 6.8734514688247103e+01 3.4999999772819006e+00 0 0 0 +17002 1 2.1005606568643223e+01 6.7077011706336961e+01 5.2499999968023641e+00 0 0 0 +17003 1 1.9883266290516278e+01 6.9295992039701403e+01 5.2499999764016607e+00 0 0 0 +17641 1 2.1566779499442976e+01 6.8734514713557900e+01 6.9999999785529958e+00 0 0 0 +17005 1 2.4933811646194986e+01 6.7611562246906018e+01 3.5000000074709106e+00 0 0 0 +17004 1 2.2689123915554902e+01 6.6515535740357350e+01 3.5000000058552394e+00 0 0 0 +17644 1 2.2689123942629415e+01 6.6515535764841175e+01 6.9999999996539746e+00 0 0 0 +17007 1 2.3250295448958031e+01 6.8173038496699206e+01 5.2499999755262365e+00 0 0 0 +17061 1 2.5494983654486447e+01 6.9269065298494283e+01 5.2499999817740095e+00 0 0 0 +17645 1 2.4933811721345609e+01 6.7611562264303430e+01 6.9999999865605309e+00 0 0 0 +17011 1 2.6617327731413912e+01 6.7050085877032743e+01 5.2499999916445352e+00 0 0 0 +17065 1 2.8862015644093969e+01 6.8146112412261999e+01 5.2499999824059387e+00 0 0 0 +17067 1 3.0545531601267118e+01 6.7584635834165894e+01 3.4999999844153531e+00 0 0 0 +17069 1 3.2229047590197780e+01 6.7023159268480441e+01 5.2499999602307899e+00 0 0 0 +17070 1 3.1106703511883982e+01 6.9242138891884608e+01 5.2499999765645313e+00 0 0 0 +17707 1 3.0545531612785418e+01 6.7584635820638084e+01 6.9999999759651219e+00 0 0 0 +17074 1 3.4473735377155826e+01 6.8119185949776025e+01 5.2499999889141451e+00 0 0 0 +17072 1 3.6157251342350442e+01 6.7557709531391538e+01 3.4999999557364512e+00 0 0 0 +17078 1 3.7840767285924542e+01 6.6996233252661909e+01 5.2499999762143474e+00 0 0 0 +17128 1 3.6718423169616770e+01 6.9215212730460166e+01 5.2499999611292045e+00 0 0 0 +17712 1 3.6157251303668524e+01 6.7557709541361803e+01 7.0000000200343226e+00 0 0 0 +17770 1 3.8401939168920990e+01 6.8653736363910880e+01 6.9999999780571960e+00 0 0 0 +17132 1 4.0085455082373542e+01 6.8092260035246241e+01 5.2499999783736904e+00 0 0 0 +17774 1 4.1768971089201479e+01 6.7530783625185023e+01 6.9999999639774835e+00 0 0 0 +17716 1 3.9524283204028862e+01 6.6434756909877891e+01 6.9999999813602480e+00 0 0 0 +17136 1 4.3452487164071691e+01 6.6969307344267378e+01 5.2499999469584990e+00 0 0 0 +17137 1 4.2330143105522701e+01 6.9188286805124577e+01 5.2499999467325811e+00 0 0 0 +17775 1 4.4013659181324741e+01 6.8626810517348005e+01 6.9999999358576295e+00 0 0 0 +23886 1 4.5136003284053373e+01 6.6407831025443642e+01 6.9999999296562700e+00 0 0 0 +16929 1 1.7224968693134424e+00 7.1576497161532089e+01 5.2499999991458592e+00 0 0 0 +16927 1 3.5610862512274033e+00 7.1030552092062365e+01 3.5000000103462878e+00 0 0 0 +16933 1 5.3078135244743132e+00 7.0481262313777066e+01 5.2500000020590427e+00 0 0 0 +16982 1 4.1395808870459252e+00 7.2674480268871591e+01 5.2500000047603042e+00 0 0 0 +17567 1 3.5610862521148197e+00 7.1030552092642907e+01 7.0000000011241692e+00 0 0 0 +16986 1 7.5396994745741877e+00 7.1571174286996381e+01 5.2500000235181501e+00 0 0 0 +16988 1 9.2228640488811031e+00 7.1007904511555552e+01 3.5000000003172462e+00 0 0 0 +17628 1 9.2228640469587866e+00 7.1007904527008591e+01 7.0000000144156127e+00 0 0 0 +16991 1 9.7824042522950627e+00 7.2665332120154005e+01 5.2500000339952422e+00 0 0 0 +16990 1 1.0904485705655459e+01 7.0445662831664436e+01 5.2500000267016445e+00 0 0 0 +16993 1 1.4832658453905863e+01 7.0980392812883792e+01 3.5000000054439599e+00 0 0 0 +16995 1 1.3149237445022942e+01 7.1541862598009033e+01 5.2500000185717388e+00 0 0 0 +17049 1 1.5393908217061220e+01 7.2637920676725528e+01 5.2500000426252225e+00 0 0 0 +17633 1 1.4832658496191568e+01 7.0980392855382917e+01 7.0000000255434713e+00 0 0 0 +16999 1 1.6516219626710818e+01 7.0418945608467951e+01 5.2500000131122491e+00 0 0 0 +17053 1 1.8760915792729556e+01 7.1514970762609067e+01 5.2499999934412767e+00 0 0 0 +17055 1 2.0444436959622017e+01 7.0953495640318238e+01 3.4999999791675163e+00 0 0 0 +17057 1 2.2127952587998152e+01 7.0392018386856478e+01 5.2499999672015738e+00 0 0 0 +17058 1 2.1005606687649994e+01 7.2610997547285777e+01 5.2499999600993554e+00 0 0 0 +17695 1 2.0444437005633382e+01 7.0953495667741024e+01 6.9999999671642250e+00 0 0 0 +17062 1 2.4372639966312157e+01 7.1488044908819802e+01 5.2499999790342136e+00 0 0 0 +17118 1 2.8300843592741266e+01 7.2022595053046246e+01 3.4999999803615225e+00 0 0 0 +17066 1 2.7739671542330257e+01 7.0365091954406054e+01 5.2499999544528340e+00 0 0 0 +17116 1 2.6617327723361598e+01 7.2584071567813098e+01 5.2499999719419161e+00 0 0 0 +17758 1 2.8300843633374448e+01 7.2022595019320988e+01 6.9999999685522978e+00 0 0 0 +17064 1 2.9423187611123723e+01 6.9803615455214043e+01 3.4999999953756089e+00 0 0 0 +17120 1 2.9984359508963802e+01 7.1461118495446669e+01 5.2499999716239900e+00 0 0 0 +17125 1 3.2229047448869089e+01 7.2557145032136091e+01 5.2499999852609003e+00 0 0 0 +17704 1 2.9423187658236209e+01 6.9803615436468021e+01 6.9999999629528906e+00 0 0 0 +17123 1 3.3912563383318151e+01 7.1995668615168682e+01 3.4999999798791830e+00 0 0 0 +17124 1 3.3351391469484902e+01 7.0338165565324758e+01 5.2499999863058360e+00 0 0 0 +17126 1 3.5034907276764052e+01 6.9776689002000751e+01 3.4999999878173602e+00 0 0 0 +17766 1 3.5034907268529388e+01 6.9776689015958553e+01 7.0000000034984655e+00 0 0 0 +17763 1 3.3912563357872287e+01 7.1995668636191539e+01 6.9999999987958201e+00 0 0 0 +17129 1 3.5596079412131175e+01 7.1434192265872497e+01 5.2499999873788612e+00 0 0 0 +17182 1 3.7840767160483651e+01 7.2530218972860538e+01 5.2499999964248003e+00 0 0 0 +17133 1 3.8963111073438412e+01 7.0311239424409152e+01 5.2499999682092913e+00 0 0 0 +17186 1 4.1207799084864789e+01 7.1407266257047894e+01 5.2499999390654901e+00 0 0 0 +17824 1 3.9524283147439519e+01 7.1968742634072726e+01 6.9999999965653465e+00 0 0 0 +17771 1 4.0646627086367531e+01 6.9749763174163903e+01 6.9999999713769068e+00 0 0 0 +17189 1 4.4574831233372699e+01 7.0284313641962854e+01 5.2499999405136117e+00 0 0 0 +17190 1 4.3452487088220721e+01 7.2503293091020183e+01 5.2499999380445530e+00 0 0 0 +23940 1 4.5136003216838702e+01 7.1941816793149428e+01 6.9999999202044201e+00 0 0 0 +17828 1 4.2891315121986409e+01 7.0845789855920899e+01 6.9999999164232820e+00 0 0 0 +16978 1 1.2264314833138226e+00 7.5511070150723938e+01 3.5000000275154366e+00 0 0 0 +16979 1 1.0571060960864056e+00 7.3876424822627214e+01 5.2499999996478204e+00 0 0 0 +16980 1 2.5187338325538535e+00 7.3233507355563077e+01 3.5000000158133306e+00 0 0 0 +16983 1 3.1035848878204555e+00 7.4958686549915782e+01 5.2499999882642392e+00 0 0 0 +17620 1 2.5187338139518887e+00 7.3233507358055689e+01 6.9999999686898162e+00 0 0 0 +17618 1 1.2264314726339365e+00 7.5511070182010982e+01 6.9999999555587387e+00 0 0 0 +16987 1 6.4095229132923679e+00 7.3783137379564252e+01 5.2500000045045399e+00 0 0 0 +17037 1 5.3078137906590239e+00 7.6015248230616820e+01 5.2500000003855591e+00 0 0 0 +16985 1 8.0950139397050300e+00 7.3225299424776864e+01 3.4999999945100235e+00 0 0 0 +17039 1 6.9829710576555826e+00 7.5446434252630894e+01 3.5000000234209359e+00 0 0 0 +17041 1 8.6590371945168894e+00 7.4882791250105996e+01 5.2500000150071724e+00 0 0 0 +17625 1 8.0950139504764174e+00 7.3225299393148973e+01 6.9999999943952327e+00 0 0 0 +17679 1 6.9829710612452986e+00 7.5446434228811796e+01 6.9999999697705055e+00 0 0 0 +17044 1 1.2587783128697410e+01 7.5418278739638296e+01 3.4999999913971065e+00 0 0 0 +17045 1 1.2026826992467264e+01 7.3760968107919197e+01 5.2500000332212542e+00 0 0 0 +17046 1 1.0904485981043806e+01 7.5979648859600800e+01 5.2499999983951904e+00 0 0 0 +17684 1 1.2587783154035158e+01 7.5418278768429516e+01 7.0000000148641792e+00 0 0 0 +17047 1 1.3710491491254812e+01 7.3199455296883642e+01 3.5000000278531149e+00 0 0 0 +17050 1 1.4271514892214423e+01 7.4856917671839113e+01 5.2500000210952349e+00 0 0 0 +17687 1 1.3710491528826276e+01 7.3199455351270871e+01 7.0000000161122671e+00 0 0 0 +17052 1 1.9322089662835555e+01 7.3172472554599935e+01 3.4999999605904946e+00 0 0 0 +17054 1 1.7638583732918320e+01 7.3733951456154983e+01 5.2499999989997539e+00 0 0 0 +17104 1 1.6516219875039749e+01 7.5952931671970688e+01 5.2499999986099901e+00 0 0 0 +17106 1 1.8199753898108302e+01 7.5391457960216584e+01 3.4999999932612140e+00 0 0 0 +17692 1 1.9322089690485551e+01 7.3172472595365136e+01 6.9999999843010983e+00 0 0 0 +17746 1 1.8199753939151812e+01 7.5391458013735175e+01 6.9999999738054495e+00 0 0 0 +17108 1 1.9883266518429735e+01 7.4829978052646638e+01 5.2499999889353468e+00 0 0 0 +17113 1 2.2127952804644391e+01 7.5926004305538299e+01 5.2499999974594154e+00 0 0 0 +17111 1 2.3811467836457314e+01 7.5364527514907110e+01 3.4999999759792582e+00 0 0 0 +17112 1 2.3250295586180197e+01 7.3707024314064213e+01 5.2499999868934735e+00 0 0 0 +17117 1 2.5494983773649832e+01 7.4803051071370064e+01 5.2499999695632713e+00 0 0 0 +17751 1 2.3811467872543400e+01 7.5364527535021566e+01 6.9999999980197671e+00 0 0 0 +17115 1 2.7178499774697919e+01 7.4241574588891112e+01 3.4999999651401152e+00 0 0 0 +17121 1 2.8862015654513193e+01 7.3680098169061694e+01 5.2499999541026634e+00 0 0 0 +17170 1 2.7739671695065695e+01 7.5899077724453747e+01 5.2499999731966982e+00 0 0 0 +17755 1 2.7178499819888753e+01 7.4241574576500810e+01 6.9999999782049169e+00 0 0 0 +17174 1 3.1106703534953517e+01 7.4776124650231850e+01 5.2499999489692790e+00 0 0 0 +17176 1 3.2790219497236876e+01 7.4214648222585424e+01 3.4999999891194293e+00 0 0 0 +17178 1 3.4473735328434529e+01 7.3653171740893370e+01 5.2499999932877079e+00 0 0 0 +17179 1 3.3351391532181431e+01 7.5872151381538316e+01 5.2499999534628916e+00 0 0 0 +17816 1 3.2790219492412980e+01 7.4214648205307768e+01 6.9999999781798996e+00 0 0 0 +17181 1 3.8401939050474695e+01 7.4187722121589573e+01 3.4999999911282251e+00 0 0 0 +17183 1 3.6718423129318573e+01 7.4749198535899168e+01 5.2499999998893259e+00 0 0 0 +17821 1 3.8401939090217041e+01 7.4187722115077477e+01 7.0000000103112496e+00 0 0 0 +17187 1 4.0085455001297220e+01 7.3626245774928179e+01 5.2499999954832806e+00 0 0 0 +17232 1 3.8963111075975497e+01 7.5845225208665212e+01 5.2499999913377158e+00 0 0 0 +17825 1 4.1768971028524284e+01 7.3064769383975715e+01 6.9999999609342556e+00 0 0 0 +17874 1 4.0646627069139882e+01 7.5283748941559494e+01 6.9999999682836505e+00 0 0 0 +17236 1 4.2330143012972755e+01 7.4722272615750342e+01 5.2499999722058455e+00 0 0 0 +17239 1 4.4574831159223770e+01 7.5818299540780671e+01 5.2499999611408432e+00 0 0 0 +17878 1 4.4013659116268357e+01 7.4160796323430958e+01 6.9999999327483415e+00 0 0 0 +17033 1 1.7224970745646793e+00 7.7110483182230880e+01 5.2499999991175184e+00 0 0 0 +17036 1 5.8404167454165448e+00 7.7662453940564291e+01 3.5000000092184864e+00 0 0 0 +17038 1 4.1395811955127630e+00 7.8208466241490285e+01 5.2499999956775705e+00 0 0 0 +17676 1 5.8404167582998499e+00 7.7662453950567880e+01 6.9999999504794772e+00 0 0 0 +17042 1 7.5396998064670839e+00 7.7105160280162409e+01 5.2499999821516008e+00 0 0 0 +17096 1 9.7824046123342878e+00 7.8199318232331350e+01 5.2499999957053785e+00 0 0 0 +17098 1 1.1466172973561903e+01 7.7637544655209894e+01 3.4999999860958262e+00 0 0 0 +17738 1 1.1466173019753715e+01 7.7637544663767144e+01 7.0000000083265226e+00 0 0 0 +17100 1 1.3149237736204130e+01 7.7075848714286693e+01 5.2500000194782537e+00 0 0 0 +17105 1 1.5393908560229884e+01 7.8171906803238173e+01 5.2499999832437796e+00 0 0 0 +17103 1 1.7077391921922473e+01 7.7610426619885004e+01 3.4999999887490434e+00 0 0 0 +17109 1 1.8760916092796716e+01 7.7048956832924887e+01 5.2499999828989932e+00 0 0 0 +17743 1 1.7077391945805445e+01 7.7610426616427745e+01 6.9999999713911709e+00 0 0 0 +17162 1 2.1005607000720989e+01 7.8144983613707950e+01 5.2500000108302869e+00 0 0 0 +17165 1 2.4933812061342351e+01 7.8679533899198262e+01 3.4999999941729674e+00 0 0 0 +17164 1 2.2689124288450476e+01 7.7583507515964499e+01 3.4999999933812473e+00 0 0 0 +17166 1 2.4372640236574753e+01 7.7022030795056253e+01 5.2500000068656174e+00 0 0 0 +17804 1 2.2689124296679790e+01 7.7583507525261126e+01 7.0000000146822465e+00 0 0 0 +17805 1 2.4933812109077707e+01 7.8679533930575190e+01 7.0000000182406303e+00 0 0 0 +17168 1 2.6056155852607869e+01 7.6460554203294052e+01 3.4999999892301550e+00 0 0 0 +17171 1 2.6617328040604139e+01 7.8118057416486607e+01 5.2499999888860351e+00 0 0 0 +17808 1 2.6056155919435160e+01 7.6460554223140875e+01 6.9999999897620837e+00 0 0 0 +17173 1 3.1667875565332178e+01 7.6433627762155197e+01 3.4999999657400407e+00 0 0 0 +17222 1 3.0545531871099271e+01 7.8652607410368901e+01 3.4999999593099198e+00 0 0 0 +17175 1 2.9984359681136517e+01 7.6995104311851648e+01 5.2499999469833698e+00 0 0 0 +17224 1 3.2229047745375809e+01 7.8091130883875834e+01 5.2499999427273787e+00 0 0 0 +17813 1 3.1667875539859299e+01 7.6433627791726948e+01 6.9999999492410314e+00 0 0 0 +17862 1 3.0545531873179691e+01 7.8652607407381012e+01 6.9999999265040183e+00 0 0 0 +17227 1 3.6157251479663472e+01 7.8625681152206809e+01 3.4999999560557091e+00 0 0 0 +17228 1 3.5596079490833411e+01 7.6968178027906575e+01 5.2499999887064517e+00 0 0 0 +17230 1 3.7279595226185975e+01 7.6406701677576777e+01 3.4999999831858828e+00 0 0 0 +17233 1 3.7840767335019216e+01 7.8064204827199518e+01 5.2500000125692532e+00 0 0 0 +17867 1 3.6157251443252633e+01 7.8625681157508154e+01 7.0000000185322238e+00 0 0 0 +17870 1 3.7279595244696068e+01 7.6406701671314451e+01 7.0000000339595516e+00 0 0 0 +17271 1 4.1768970991945316e+01 7.8598755266937331e+01 3.4999999875047769e+00 0 0 0 +17237 1 4.1207799030577057e+01 7.6941252060656325e+01 5.2499999798317321e+00 0 0 0 +17911 1 4.1768971050410784e+01 7.8598755234949081e+01 6.9999999893603189e+00 0 0 0 +17235 1 4.2891315003947582e+01 7.6379775746008050e+01 3.5000000158582418e+00 0 0 0 +17273 1 4.3452487063978054e+01 7.8037279020157015e+01 5.2499999722311337e+00 0 0 0 +17875 1 4.2891315084742239e+01 7.6379775740391992e+01 6.9999999401991815e+00 0 0 0 +17034 1 1.0571060494361528e+00 7.9410410890208453e+01 5.2499999848127015e+00 0 0 0 +17088 1 3.1035852538129207e+00 8.0492672602946413e+01 5.2499999809768951e+00 0 0 0 +17087 1 3.5610868915424643e+00 8.2098524035157141e+01 3.5000000093161985e+00 0 0 0 +17090 1 4.7485642568131947e+00 7.9884620931168911e+01 3.5000000040518007e+00 0 0 0 +17092 1 6.4095233374315592e+00 7.9317123421419055e+01 5.2499999867670972e+00 0 0 0 +17093 1 5.3078141778181074e+00 8.1549234276904045e+01 5.2499999776594271e+00 0 0 0 +17727 1 3.5610868693340567e+00 8.2098524044510967e+01 6.9999999473139907e+00 0 0 0 +17730 1 4.7485642475552154e+00 7.9884620960672919e+01 6.9999999539949593e+00 0 0 0 +17148 1 9.2228648055664966e+00 8.2075876749885424e+01 3.5000000188432514e+00 0 0 0 +17097 1 8.6590376492735537e+00 8.0416777411426523e+01 5.2499999886691704e+00 0 0 0 +17788 1 9.2228647981904448e+00 8.2075876775748156e+01 7.0000000119582255e+00 0 0 0 +17095 1 1.0342364431490209e+01 7.9856004227580556e+01 3.5000000101435433e+00 0 0 0 +17101 1 1.2026827319839581e+01 7.9294954253209497e+01 5.2500000020318351e+00 0 0 0 +17150 1 1.0904486429137057e+01 8.1513635107500846e+01 5.2500000229387531e+00 0 0 0 +17735 1 1.0342364458295172e+01 7.9856004244456145e+01 6.9999999873783301e+00 0 0 0 +17153 1 1.4832659161002342e+01 8.2048365205529990e+01 3.4999999941071835e+00 0 0 0 +17154 1 1.4271515303728098e+01 8.0390903935679731e+01 5.2499999968013302e+00 0 0 0 +17156 1 1.5955087793887021e+01 7.9829428687982528e+01 3.4999999869027394e+00 0 0 0 +17793 1 1.4832659222383167e+01 8.2048365189218899e+01 6.9999999830585562e+00 0 0 0 +17796 1 1.5955087825933020e+01 7.9829428692220887e+01 6.9999999796310908e+00 0 0 0 +17158 1 1.7638584096306374e+01 7.9267937617177068e+01 5.2499999787738041e+00 0 0 0 +17159 1 1.6516220296076050e+01 8.1486917911446355e+01 5.2499999724947308e+00 0 0 0 +17161 1 2.1566780021154084e+01 7.9802486675796885e+01 3.4999999845833725e+00 0 0 0 +17163 1 1.9883266892390807e+01 8.0363964176520199e+01 5.2499999783090017e+00 0 0 0 +17210 1 2.0444437710980910e+01 8.2021467825559540e+01 3.5000000007602190e+00 0 0 0 +17212 1 2.2127953266700757e+01 8.1459990443496167e+01 5.2500000038190331e+00 0 0 0 +17801 1 2.1566780013255560e+01 7.9802486698640223e+01 7.0000000084228633e+00 0 0 0 +17850 1 2.0444437697711987e+01 8.2021467883551253e+01 6.9999999820160497e+00 0 0 0 +17167 1 2.3250295938647771e+01 7.9241010310040323e+01 5.2500000066933428e+00 0 0 0 +17216 1 2.5494984204201387e+01 8.0337037016093618e+01 5.2500000055135132e+00 0 0 0 +17220 1 2.8862016000337459e+01 7.9214083965231140e+01 5.2499999480540014e+00 0 0 0 +17221 1 2.7739672182667139e+01 8.1433063613325601e+01 5.2499999474060912e+00 0 0 0 +17219 1 2.9423188175758234e+01 8.0871587057706392e+01 3.4999999724103681e+00 0 0 0 +17225 1 3.1106703975548662e+01 8.0310110498453298e+01 5.2499999238228039e+00 0 0 0 +17859 1 2.9423188201640937e+01 8.0871587072040739e+01 6.9999999314993016e+00 0 0 0 +17263 1 3.5034907725651180e+01 8.0844660680720466e+01 3.4999999794648167e+00 0 0 0 +17229 1 3.4473735632536062e+01 7.9187157600838347e+01 5.2499999706775036e+00 0 0 0 +17261 1 3.3351392028166671e+01 8.1406137229861386e+01 5.2499999487670115e+00 0 0 0 +17903 1 3.5034907683705420e+01 8.0844660677621107e+01 6.9999999829167008e+00 0 0 0 +17265 1 3.6718423458032724e+01 8.0283184373419630e+01 5.2499999881478772e+00 0 0 0 +17268 1 4.0646627148917268e+01 8.0817734906641022e+01 3.4999999935671102e+00 0 0 0 +17269 1 4.0085455115206706e+01 7.9160231652525113e+01 5.2500000054311275e+00 0 0 0 +17270 1 3.8963111337462713e+01 8.1379211116483432e+01 5.2500000107446008e+00 0 0 0 +17908 1 4.0646627205159973e+01 8.0817734868444404e+01 7.0000000033554981e+00 0 0 0 +17272 1 4.4013659076929457e+01 7.9694782317082684e+01 3.4999999919287967e+00 0 0 0 +17274 1 4.2330143064074058e+01 8.0256258557799427e+01 5.2499999899343113e+00 0 0 0 +17294 1 4.2891315105380279e+01 8.1913761754391260e+01 3.5000000075097342e+00 0 0 0 +17295 1 4.4574831151581989e+01 8.1352285545722708e+01 5.2499999523710086e+00 0 0 0 +17140 1 2.5187343553037285e+00 8.4301479350614329e+01 3.5000000208505346e+00 0 0 0 +17089 1 1.7224973954257827e+00 8.2644469191165214e+01 5.2499999735657426e+00 0 0 0 +17139 1 1.0571062519165808e+00 8.4944396780254408e+01 5.2500000064296612e+00 0 0 0 +17780 1 2.5187343089515659e+00 8.4301479371738253e+01 6.9999999577309451e+00 0 0 0 +17142 1 4.1395815392121786e+00 8.3742452304293550e+01 5.2499999656350793e+00 0 0 0 +17147 1 6.4095236571418441e+00 8.4851109570245129e+01 5.2499999887263789e+00 0 0 0 +17145 1 8.0950147588914252e+00 8.4293271704869738e+01 3.5000000272019647e+00 0 0 0 +17146 1 7.5397002368675139e+00 8.2639146442779605e+01 5.2500000054065481e+00 0 0 0 +17785 1 8.0950147049416987e+00 8.4293271711406405e+01 7.0000000055199605e+00 0 0 0 +17151 1 9.7824050545335641e+00 8.3733304494185376e+01 5.2500000369455355e+00 0 0 0 +17200 1 1.2026827810836133e+01 8.4828940606462311e+01 5.2500000231466588e+00 0 0 0 +17155 1 1.3149238215170673e+01 8.2609834994758913e+01 5.2499999952919660e+00 0 0 0 +17202 1 1.3710492284431485e+01 8.4267427806727795e+01 3.5000000293684179e+00 0 0 0 +17204 1 1.5393909004292729e+01 8.3705893116147507e+01 5.2499999834919366e+00 0 0 0 +17842 1 1.3710492348410702e+01 8.4267427798778058e+01 6.9999999963909367e+00 0 0 0 +17207 1 1.9322090544869205e+01 8.4240444951017423e+01 3.4999999506952899e+00 0 0 0 +17208 1 1.8760916557682780e+01 8.2582943070991817e+01 5.2499999833758801e+00 0 0 0 +17209 1 1.7638584590136350e+01 8.4801923936756396e+01 5.2499999461153557e+00 0 0 0 +17847 1 1.9322090524010733e+01 8.4240444994915208e+01 6.9999999917150291e+00 0 0 0 +17213 1 2.1005607538533642e+01 8.3678969821248657e+01 5.2499999777116289e+00 0 0 0 +17217 1 2.4372640744083849e+01 8.2556016843435117e+01 5.2500000204157224e+00 0 0 0 +17249 1 2.3250296553374461e+01 8.4774996471513191e+01 5.2500000195105425e+00 0 0 0 +17252 1 2.7178500897614761e+01 8.5309546448231600e+01 3.4999999928101677e+00 0 0 0 +17255 1 2.8300844460986390e+01 8.3090566757951692e+01 3.4999999848355103e+00 0 0 0 +17253 1 2.6617328635350141e+01 8.3652043387526518e+01 5.2499999882561577e+00 0 0 0 +17258 1 2.8862016720605681e+01 8.4748069920908151e+01 5.2499999578372911e+00 0 0 0 +17892 1 2.7178500914059313e+01 8.5309546439202961e+01 6.9999999945296398e+00 0 0 0 +17895 1 2.8300844472263854e+01 8.3090566742218485e+01 6.9999999513367959e+00 0 0 0 +17257 1 2.9984360268248860e+01 8.2529090165515171e+01 5.2499999352200080e+00 0 0 0 +17262 1 3.2229048340728340e+01 8.3625116734734888e+01 5.2499999627527014e+00 0 0 0 +17260 1 3.3912564167022090e+01 8.3063640327438819e+01 3.4999999660555110e+00 0 0 0 +17282 1 3.2790220610783692e+01 8.5282619974934249e+01 3.4999999956814549e+00 0 0 0 +17284 1 3.4473736272872841e+01 8.4721143486191195e+01 5.2500000053506959e+00 0 0 0 +17900 1 3.3912564083703643e+01 8.3063640339294565e+01 6.9999999757541378e+00 0 0 0 +17922 1 3.2790220552789506e+01 8.5282619937896357e+01 6.9999999651014662e+00 0 0 0 +17287 1 3.8401939753066912e+01 8.5255693962537350e+01 3.5000000097842179e+00 0 0 0 +17266 1 3.5596080021795423e+01 8.2502163962461111e+01 5.2499999916771252e+00 0 0 0 +17288 1 3.7840767732904744e+01 8.3598190737862851e+01 5.2500000189837914e+00 0 0 0 +17927 1 3.8401939743591853e+01 8.5255693958689918e+01 7.0000000388854078e+00 0 0 0 +17290 1 3.9524283462261515e+01 8.3036714391752980e+01 3.4999999735723351e+00 0 0 0 +17291 1 4.1768971214884644e+01 8.4132741269068575e+01 3.4999999792057319e+00 0 0 0 +17292 1 4.1207799250154920e+01 8.2475238063783962e+01 5.2499999840314802e+00 0 0 0 +17293 1 4.0085455445371856e+01 8.4694217657224613e+01 5.2500000290601916e+00 0 0 0 +17930 1 3.9524283514237240e+01 8.3036714380445616e+01 7.0000000303060634e+00 0 0 0 +17304 1 4.4013659213594387e+01 8.5228768332905261e+01 3.4999999555590611e+00 0 0 0 +23460 1 4.5136003164044546e+01 8.3009788788285690e+01 3.5000000030083882e+00 0 0 0 +17296 1 4.3452487154500858e+01 8.3571265031425000e+01 5.2499999481576687e+00 0 0 0 +17138 1 1.2264316948232499e+00 8.6579042104520838e+01 3.5000000225659584e+00 0 0 0 +17143 1 3.1035853604030752e+00 8.6026658533050536e+01 5.2499999792958105e+00 0 0 0 +17191 1 1.7224976074718998e+00 8.8178455219670099e+01 5.2500000056427227e+00 0 0 0 +17778 1 1.2264316960145774e+00 8.6579042144845090e+01 7.0000000019870097e+00 0 0 0 +17193 1 5.3078143844365444e+00 8.7083220363844916e+01 5.2499999694931061e+00 0 0 0 +17194 1 6.9829718052167618e+00 8.6514406519248425e+01 3.5000000248282750e+00 0 0 0 +17196 1 8.6590379675444602e+00 8.5950763663014726e+01 5.2500000289896649e+00 0 0 0 +17197 1 7.5397004519006590e+00 8.8173132673009036e+01 5.2499999810314097e+00 0 0 0 +17834 1 6.9829717171800967e+00 8.6514406528663983e+01 6.9999999786276472e+00 0 0 0 +17199 1 1.2587783938881461e+01 8.6486251341791302e+01 3.5000000224010512e+00 0 0 0 +17201 1 1.0904486744567759e+01 8.7047621421137904e+01 5.2500000301552330e+00 0 0 0 +17839 1 1.2587783971316188e+01 8.6486251310011099e+01 7.0000000152997233e+00 0 0 0 +17205 1 1.4271515725544134e+01 8.5924890229465504e+01 5.2499999852897457e+00 0 0 0 +17240 1 1.3149238507150814e+01 8.8143821318970893e+01 5.2500000177181416e+00 0 0 0 +17242 1 1.6516220773227069e+01 8.7020904237691354e+01 5.2499999483486528e+00 0 0 0 +17243 1 1.8199754832332530e+01 8.6459430470131650e+01 3.4999999650524125e+00 0 0 0 +17246 1 1.8760917071577744e+01 8.8116929391628858e+01 5.2499999369515438e+00 0 0 0 +17883 1 1.8199754842331281e+01 8.6459430540485400e+01 6.9999999491873162e+00 0 0 0 +17245 1 1.9883267470184613e+01 8.5897950500404605e+01 5.2499999705007241e+00 0 0 0 +17250 1 2.2127953887242686e+01 8.6993976681776701e+01 5.2500000032603129e+00 0 0 0 +17248 1 2.3811468978971654e+01 8.6432499689423878e+01 3.4999999994146300e+00 0 0 0 +17254 1 2.5494984898798677e+01 8.5871023089719202e+01 5.2499999981740464e+00 0 0 0 +17275 1 2.4372641475328006e+01 8.8090003001402295e+01 5.2500000368662221e+00 0 0 0 +17888 1 2.3811468959897784e+01 8.6432499759790119e+01 7.0000000507958191e+00 0 0 0 +17276 1 2.6056157156468515e+01 8.7528526218798191e+01 3.5000000257215933e+00 0 0 0 +17277 1 2.7739672981802276e+01 8.6967049612375831e+01 5.2499999992073230e+00 0 0 0 +17916 1 2.6056157166720400e+01 8.7528526258822438e+01 7.0000000167279541e+00 0 0 0 +17279 1 3.1667876927558748e+01 8.7501599570199659e+01 3.4999999976446530e+00 0 0 0 +17280 1 3.1106704729318857e+01 8.5844096406729093e+01 5.2499999571746621e+00 0 0 0 +17281 1 2.9984361114515117e+01 8.8063076147866042e+01 5.2499999773171373e+00 0 0 0 +17919 1 3.1667876873219384e+01 8.7501599571902815e+01 6.9999999530422521e+00 0 0 0 +17285 1 3.3351392781084890e+01 8.6940123174498339e+01 5.2499999837956279e+00 0 0 0 +17298 1 3.7279596245891618e+01 8.7474673589225873e+01 3.4999999919177225e+00 0 0 0 +17289 1 3.6718424033605700e+01 8.5817170345822191e+01 5.2500000414315018e+00 0 0 0 +17297 1 3.5596080682688296e+01 8.8036149906073618e+01 5.2500000156821880e+00 0 0 0 +17938 1 3.7279596223893805e+01 8.7474673550711344e+01 7.0000000665220909e+00 0 0 0 +17299 1 3.8963111835445972e+01 8.6913197148306409e+01 5.2500000265018363e+00 0 0 0 +17300 1 4.0646627513792041e+01 8.6351720948675720e+01 3.5000000218512737e+00 0 0 0 +17303 1 4.1207799620274962e+01 8.8009224104580142e+01 5.2499999929794061e+00 0 0 0 +17301 1 4.2891315394290004e+01 8.7447747804632854e+01 3.5000000121734902e+00 0 0 0 +17302 1 4.2330143315157194e+01 8.5790244597324602e+01 5.2499999858726207e+00 0 0 0 +17305 1 4.4574831343599662e+01 8.6886271559013679e+01 5.2499999510555124e+00 0 0 0 +17307 1 2.5187339507179773e+00 4.5563581246725668e+01 7.0000000084142915e+00 0 0 0 +17308 1 1.0571059848553885e+00 4.6206498935738864e+01 8.7500000271533427e+00 0 0 0 +17314 1 3.1035850674096208e+00 4.7288759988952691e+01 8.7499999844438072e+00 0 0 0 +17947 1 2.5187339795882986e+00 4.5563581263543320e+01 1.0499999929788947e+01 0 0 0 +17310 1 4.1395811115412746e+00 4.5004553871134718e+01 8.7499999708903591e+00 0 0 0 +17318 1 6.4095231205380063e+00 4.6113210342504331e+01 8.7499999627268075e+00 0 0 0 +17320 1 8.0950140124924594e+00 4.5555372149166317e+01 6.9999999345575992e+00 0 0 0 +17323 1 8.6590371705072613e+00 4.7212863610016583e+01 8.7499999475314763e+00 0 0 0 +17960 1 8.0950140240033566e+00 4.5555372074474136e+01 1.0499999972002479e+01 0 0 0 +17322 1 9.7824041520581968e+00 4.4995404539813869e+01 8.7499999550931697e+00 0 0 0 +17326 1 1.2026826632555069e+01 4.6091040016466472e+01 8.7499999581063133e+00 0 0 0 +17325 1 1.3710491042389776e+01 4.5529527018495976e+01 6.9999999763874463e+00 0 0 0 +17328 1 1.5393907599603200e+01 4.4967992170953195e+01 8.7500000161298619e+00 0 0 0 +17345 1 1.4271514350957343e+01 4.7186989125459249e+01 8.7499999943955444e+00 0 0 0 +17965 1 1.3710490994938244e+01 4.5529527022728260e+01 1.0500000028955553e+01 0 0 0 +17351 1 1.9322088975587150e+01 4.5502543601041047e+01 7.0000000245866296e+00 0 0 0 +17349 1 1.7638582991302584e+01 4.6064022592932808e+01 8.7500000365632591e+00 0 0 0 +17991 1 1.9322088979617519e+01 4.5502543642382591e+01 1.0500000024477014e+01 0 0 0 +17353 1 2.1005606075539273e+01 4.4941068490602575e+01 8.7500000154451421e+00 0 0 0 +17354 1 1.9883265777085033e+01 4.7160048944499337e+01 8.7500000304082892e+00 0 0 0 +17357 1 2.3250295049401281e+01 4.6037095092886595e+01 8.7499999880217079e+00 0 0 0 +17390 1 2.5494983357638905e+01 4.7133121823529216e+01 8.7499999463611857e+00 0 0 0 +17996 1 2.4933811334926677e+01 4.5475618683536503e+01 1.0499999980133378e+01 0 0 0 +17359 1 2.6617327415489815e+01 4.4914142155016947e+01 8.7499999530595964e+00 0 0 0 +17392 1 2.7178499492041450e+01 4.6571645282677054e+01 6.9999999480608279e+00 0 0 0 +17394 1 2.8862015450511684e+01 4.6010168713223607e+01 8.7499999576954863e+00 0 0 0 +18032 1 2.7178499485171905e+01 4.6571645227726570e+01 1.0499999987187886e+01 0 0 0 +17358 1 2.8300843394995592e+01 4.4352665487986705e+01 6.9999999276874538e+00 0 0 0 +17998 1 2.8300843367371328e+01 4.4352665464513002e+01 1.0499999982729269e+01 0 0 0 +17398 1 3.2229047418794508e+01 4.4887215298690542e+01 8.7500000083499501e+00 0 0 0 +17399 1 3.1106703400145435e+01 4.7106195160906438e+01 8.7499999998714895e+00 0 0 0 +18036 1 3.0545531377657806e+01 4.5448691994079688e+01 1.0499999996319994e+01 0 0 0 +17397 1 3.2790219531152779e+01 4.6544718584957202e+01 7.0000000006115082e+00 0 0 0 +17402 1 3.4473735454113076e+01 4.5983242006355695e+01 8.7500000376908016e+00 0 0 0 +18037 1 3.2790219454652103e+01 4.6544718568210179e+01 1.0500000016121380e+01 0 0 0 +17400 1 3.3912563509587763e+01 4.4325738818697310e+01 7.0000000149735104e+00 0 0 0 +18040 1 3.3912563459902586e+01 4.4325738789450398e+01 1.0500000016187188e+01 0 0 0 +17404 1 3.7840767626358478e+01 4.4860289283057782e+01 8.7500000175391754e+00 0 0 0 +17448 1 3.6718423461910248e+01 4.7079268853242112e+01 8.7500000440464554e+00 0 0 0 +18041 1 3.6157251526532065e+01 4.5421765531885001e+01 1.0500000031231364e+01 0 0 0 +18090 1 3.8401939508233369e+01 4.6517792535454852e+01 1.0499999994209078e+01 0 0 0 +17452 1 4.0085455539194051e+01 4.5956316306266189e+01 8.7500000089807557e+00 0 0 0 +18094 1 4.1768971590262730e+01 4.5394840036490365e+01 1.0499999987269218e+01 0 0 0 +18043 1 3.9524283705222189e+01 4.4298813036099965e+01 1.0499999996918481e+01 0 0 0 +17456 1 4.3452487658958390e+01 4.4833363891397489e+01 8.7499999793279297e+00 0 0 0 +17457 1 4.2330143534960065e+01 4.7052343398233454e+01 8.7499999675079572e+00 0 0 0 +18095 1 4.4013659570756559e+01 4.6490867228386790e+01 1.0499999988408902e+01 0 0 0 +17312 1 1.2264313978905812e+00 4.7841143933924997e+01 7.0000000210977698e+00 0 0 0 +17315 1 1.7224971502156250e+00 4.9440556541828428e+01 8.7499999986112265e+00 0 0 0 +17952 1 1.2264314253962603e+00 4.7841144024196993e+01 1.0499999963965024e+01 0 0 0 +17335 1 5.8404166467755969e+00 4.9992526382304909e+01 6.9999999712018237e+00 0 0 0 +17319 1 5.3078138983891474e+00 4.8345321012542335e+01 8.7499999871063459e+00 0 0 0 +17333 1 4.1395810403445017e+00 5.0538538841721547e+01 8.7500000267170694e+00 0 0 0 +17975 1 5.8404167061578240e+00 4.9992526316662591e+01 1.0499999977345368e+01 0 0 0 +17317 1 6.9829711118619739e+00 4.7776506841210875e+01 6.9999999656180796e+00 0 0 0 +17337 1 7.5396997238869323e+00 4.9435232461570749e+01 8.7499999358906422e+00 0 0 0 +17957 1 6.9829711662507608e+00 4.7776506793602508e+01 1.0499999965926367e+01 0 0 0 +17340 1 1.1466172604070795e+01 4.9967616141264614e+01 6.9999999337421235e+00 0 0 0 +17343 1 1.2587782761092562e+01 4.7748350385918428e+01 6.9999999467195151e+00 0 0 0 +17342 1 9.7824042697704137e+00 5.0529389835774097e+01 8.7499999336837178e+00 0 0 0 +17341 1 1.0904485717948850e+01 4.8309720678979879e+01 8.7499999356982396e+00 0 0 0 +17980 1 1.1466172586937025e+01 4.9967616131958167e+01 1.0499999976708807e+01 0 0 0 +17983 1 1.2587782717217697e+01 4.7748350410594810e+01 1.0499999999912557e+01 0 0 0 +17346 1 1.3149237275974587e+01 4.9405920033842172e+01 8.7499999753736972e+00 0 0 0 +17378 1 1.5393907865299479e+01 5.0501977733241453e+01 8.7499999740992784e+00 0 0 0 +17348 1 1.8199753142534448e+01 4.7721528928467741e+01 7.0000000131522189e+00 0 0 0 +17380 1 1.7077391209886592e+01 4.9940497483919039e+01 7.0000000164787695e+00 0 0 0 +17350 1 1.6516219138142358e+01 4.8283002755661144e+01 8.7499999965432220e+00 0 0 0 +17382 1 1.8760915315575527e+01 4.9379027665279338e+01 8.7500000180563209e+00 0 0 0 +17988 1 1.8199753155322508e+01 4.7721528968476036e+01 1.0500000042799625e+01 0 0 0 +18020 1 1.7077391156320058e+01 4.9940497537042432e+01 1.0500000011625133e+01 0 0 0 +17386 1 2.2127952158044625e+01 4.8256075126182637e+01 8.7500000274635852e+00 0 0 0 +17387 1 2.1005606237012579e+01 5.0475054368239846e+01 8.7500000318405800e+00 0 0 0 +17385 1 2.2689123600973495e+01 4.9913578343160466e+01 7.0000000218535305e+00 0 0 0 +17388 1 2.3811467285620786e+01 4.7694598312656957e+01 7.0000000065109944e+00 0 0 0 +17391 1 2.4372639645461309e+01 4.9352101629659835e+01 8.7499999751296968e+00 0 0 0 +18028 1 2.3811467312526467e+01 4.7694598312323905e+01 1.0499999992099664e+01 0 0 0 +18025 1 2.2689123611004781e+01 4.9913578289323851e+01 1.0500000009628751e+01 0 0 0 +17389 1 2.6056155415796603e+01 4.8790625031168446e+01 6.9999999605104266e+00 0 0 0 +17395 1 2.7739671382548899e+01 4.8229148493133081e+01 8.7499999648166007e+00 0 0 0 +17436 1 2.6617327561356767e+01 5.0448128309935477e+01 8.7499999969315407e+00 0 0 0 +18029 1 2.6056155443891960e+01 4.8790625046683914e+01 1.0500000000803880e+01 0 0 0 +17440 1 2.9984359437805267e+01 4.9325175013320973e+01 8.7499999781876721e+00 0 0 0 +17442 1 3.1667875445570324e+01 4.8763698337820777e+01 6.9999999987754169e+00 0 0 0 +17445 1 3.2229047549264010e+01 5.0421201464014580e+01 8.7499999951998255e+00 0 0 0 +18082 1 3.1667875379840510e+01 4.8763698282457888e+01 1.0500000007494551e+01 0 0 0 +17444 1 3.3351391531968488e+01 4.8202221778628676e+01 8.7500000087927301e+00 0 0 0 +18083 1 3.3912563538352970e+01 4.9859724901904457e+01 1.0500000001362608e+01 0 0 0 +18086 1 3.5034907446009292e+01 4.7640745161659027e+01 1.0500000034706643e+01 0 0 0 +17449 1 3.5596079642527926e+01 4.9298248472753308e+01 8.7500000470464947e+00 0 0 0 +17502 1 3.7840767539242229e+01 5.0394275356444446e+01 8.7500000212153690e+00 0 0 0 +18087 1 3.7279595505477083e+01 4.8736772108529806e+01 1.0500000002825260e+01 0 0 0 +17453 1 3.8963111448075253e+01 4.8175295772852429e+01 8.7500000084348724e+00 0 0 0 +17506 1 4.1207799449134619e+01 4.9271322918109909e+01 8.7499999765723135e+00 0 0 0 +18091 1 4.0646627489760753e+01 4.7613819680369446e+01 1.0500000002435948e+01 0 0 0 +18144 1 3.9524283494066772e+01 4.9832799113191008e+01 1.0500000007790302e+01 0 0 0 +17509 1 4.4574831573979871e+01 4.8148370489201170e+01 8.7499999684554055e+00 0 0 0 +17510 1 4.3452487363931837e+01 5.0367350009606582e+01 8.7499999649892750e+00 0 0 0 +18148 1 4.2891315472850430e+01 4.8709846683234041e+01 1.0499999990433134e+01 0 0 0 +17330 1 1.0571059217357850e+00 5.1740483885982968e+01 8.7499999823512464e+00 0 0 0 +17334 1 3.1035850181446079e+00 5.2822744882692682e+01 8.7500000123936559e+00 0 0 0 +17332 1 4.7485639187135185e+00 5.2214693085365646e+01 6.9999999966280519e+00 0 0 0 +17338 1 6.4095229929151749e+00 5.1647195356253533e+01 8.7499999567497113e+00 0 0 0 +17366 1 5.3078136994922298e+00 5.3879305965786834e+01 8.7499999812859102e+00 0 0 0 +17972 1 4.7485639514540035e+00 5.2214693045319351e+01 1.0500000001572532e+01 0 0 0 +17370 1 8.6590370734348188e+00 5.2746848772857717e+01 8.7499999441529273e+00 0 0 0 +17372 1 1.0342363857433446e+01 5.2186075503146270e+01 6.9999999429128827e+00 0 0 0 +17374 1 1.2026826769224597e+01 5.1625025403985738e+01 8.7499999384428495e+00 0 0 0 +17375 1 1.0904485643970100e+01 5.3843705956880434e+01 8.7499999342466932e+00 0 0 0 +18012 1 1.0342363886475789e+01 5.2186075460903908e+01 1.0499999956122823e+01 0 0 0 +17377 1 1.5955087058066328e+01 5.2159499352244929e+01 6.9999999867992759e+00 0 0 0 +17379 1 1.4271514559141023e+01 5.2720974633280960e+01 8.7499999620609845e+00 0 0 0 +18017 1 1.5955087020221846e+01 5.2159499401738564e+01 1.0500000002027237e+01 0 0 0 +17383 1 1.7638583305028806e+01 5.1598008299369717e+01 8.7500000105822995e+00 0 0 0 +17424 1 1.6516219390633328e+01 5.3816988396492640e+01 8.7500000107662590e+00 0 0 0 +17428 1 1.9883266044063383e+01 5.2694034777904264e+01 8.7500000189620035e+00 0 0 0 +17430 1 2.1566779226821897e+01 5.2132557361885880e+01 7.0000000234326603e+00 0 0 0 +17433 1 2.2127952400003569e+01 5.3790061094499492e+01 8.7500000112931531e+00 0 0 0 +18070 1 2.1566779235059386e+01 5.2132557393469504e+01 1.0500000027639434e+01 0 0 0 +17432 1 2.3250295222000211e+01 5.1571081097980475e+01 8.7500000014337012e+00 0 0 0 +17434 1 2.4933811447156057e+01 5.1009604771687663e+01 6.9999999979491774e+00 0 0 0 +17437 1 2.5494983532657919e+01 5.2667107940426106e+01 8.7500000053606186e+00 0 0 0 +18074 1 2.4933811473155458e+01 5.1009604778128541e+01 1.0499999994582394e+01 0 0 0 +17441 1 2.8862015555631395e+01 5.1544154878535338e+01 8.7499999682624434e+00 0 0 0 +17490 1 2.7739671550620940e+01 5.3763134602494340e+01 8.7499999659503924e+00 0 0 0 +17439 1 3.0545531581429447e+01 5.0982678189221190e+01 6.9999999645007245e+00 0 0 0 +17492 1 2.9423187669939445e+01 5.3201657972813088e+01 6.9999999712133807e+00 0 0 0 +17494 1 3.1106703574816073e+01 5.2640181286499605e+01 8.7499999840290137e+00 0 0 0 +18079 1 3.0545531516741050e+01 5.0982678167001410e+01 1.0500000003946674e+01 0 0 0 +18132 1 2.9423187634653292e+01 5.3201658000284809e+01 1.0499999988578786e+01 0 0 0 +17498 1 3.4473735573035249e+01 5.1517228075696814e+01 8.7500000180743456e+00 0 0 0 +17499 1 3.3351391670966002e+01 5.3736207898504219e+01 8.7499999977925995e+00 0 0 0 +18136 1 3.2790219615812553e+01 5.2078704666010339e+01 1.0499999990036969e+01 0 0 0 +18137 1 3.5034907502446679e+01 5.3174731223985020e+01 1.0499999985473835e+01 0 0 0 +17503 1 3.6718423454163506e+01 5.2613254926093454e+01 8.7500000096901154e+00 0 0 0 +18141 1 3.8401939431691346e+01 5.2051778644783631e+01 1.0500000005211485e+01 0 0 0 +18140 1 3.6157251549288503e+01 5.0955751615737547e+01 1.0499999983050918e+01 0 0 0 +17507 1 4.0085455374051918e+01 5.1490302442884285e+01 8.7500000081327656e+00 0 0 0 +17557 1 3.8963111393999924e+01 5.3709281882811403e+01 8.7500000244007534e+00 0 0 0 +18145 1 4.1768971328773539e+01 5.0928826167252474e+01 1.0499999981176783e+01 0 0 0 +18199 1 4.0646627320336520e+01 5.3147805766279767e+01 1.0499999996645020e+01 0 0 0 +17561 1 4.2330143309019356e+01 5.2586329486836128e+01 8.7499999883418429e+00 0 0 0 +17564 1 4.4574831323389489e+01 5.3682356442317989e+01 8.7499999695682114e+00 0 0 0 +18203 1 4.4013659324195274e+01 5.2024853301505516e+01 1.0499999988885941e+01 0 0 0 +17361 1 2.5187338375737345e+00 5.6631551052362909e+01 6.9999999873877945e+00 0 0 0 +17362 1 1.7224971065321646e+00 5.4974541352045094e+01 8.7499999788007603e+00 0 0 0 +18001 1 2.5187337744440792e+00 5.6631551081311571e+01 1.0499999998692640e+01 0 0 0 +17364 1 3.5610864112302236e+00 5.4428595957156880e+01 7.0000000118887220e+00 0 0 0 +17367 1 4.1395809495709290e+00 5.6072523793779823e+01 8.7499999751076007e+00 0 0 0 +18004 1 3.5610864218490379e+00 5.4428595917790545e+01 1.0499999995346473e+01 0 0 0 +17369 1 9.2228639949716857e+00 5.4405947761911996e+01 6.9999999522555214e+00 0 0 0 +17414 1 8.0950138415975701e+00 5.6623342515178656e+01 6.9999999496261855e+00 0 0 0 +17371 1 7.5396995356489773e+00 5.4969217586519896e+01 8.7499999909856250e+00 0 0 0 +18009 1 9.2228640323622795e+00 5.4405947721614666e+01 1.0499999983376261e+01 0 0 0 +18054 1 8.0950138556023425e+00 5.6623342442131211e+01 1.0499999995784469e+01 0 0 0 +17416 1 9.7824040937392063e+00 5.6063375098689747e+01 8.7499999633816543e+00 0 0 0 +17419 1 1.3710491239330269e+01 5.6597497968302491e+01 7.0000000086548120e+00 0 0 0 +17420 1 1.3149237266312005e+01 5.4939905435230934e+01 8.7499999444156753e+00 0 0 0 +17422 1 1.4832658284856098e+01 5.4378435635947412e+01 7.0000000054649893e+00 0 0 0 +17425 1 1.5393907948039736e+01 5.6035963291715220e+01 8.7500000051037468e+00 0 0 0 +18059 1 1.3710491242122572e+01 5.6597497983446807e+01 1.0499999989107312e+01 0 0 0 +18062 1 1.4832658279611881e+01 5.4378435681010878e+01 1.0499999965102246e+01 0 0 0 +17429 1 1.8760915548684174e+01 5.4913013417173936e+01 8.7500000347758586e+00 0 0 0 +17480 1 1.9322089395253819e+01 5.6570515161079200e+01 7.0000000108849614e+00 0 0 0 +18120 1 1.9322089386463372e+01 5.6570515176833979e+01 1.0500000029415796e+01 0 0 0 +17427 1 2.0444436774820939e+01 5.4351538322431580e+01 7.0000000163923790e+00 0 0 0 +17482 1 2.1005606467641915e+01 5.6009040203958698e+01 8.7499999980137204e+00 0 0 0 +18067 1 2.0444436763659343e+01 5.4351538353371659e+01 1.0500000020547624e+01 0 0 0 +17486 1 2.4372639866878476e+01 5.4886087648410864e+01 8.7500000139583474e+00 0 0 0 +18125 1 2.4933811641304246e+01 5.6543590765224785e+01 1.0499999992727101e+01 0 0 0 +17489 1 2.8300843683654222e+01 5.5420637806820245e+01 6.9999999595921816e+00 0 0 0 +17491 1 2.6617327730040582e+01 5.5982114370533388e+01 8.7499999698027580e+00 0 0 0 +18129 1 2.8300843668196887e+01 5.5420637777900836e+01 1.0499999988193650e+01 0 0 0 +17495 1 2.9984359606702320e+01 5.4859161143698010e+01 8.7499999742485635e+00 0 0 0 +17549 1 3.2229047673510031e+01 5.5955187516413638e+01 8.7499999896292966e+00 0 0 0 +18133 1 3.1667875546363874e+01 5.4297684411041629e+01 1.0499999979099393e+01 0 0 0 +17551 1 3.3912563693548677e+01 5.5393711005240270e+01 6.9999999980457366e+00 0 0 0 +18191 1 3.3912563627778127e+01 5.5393710959821512e+01 1.0499999971176443e+01 0 0 0 +17553 1 3.5596079706936848e+01 5.4832234562579245e+01 8.7500000022896334e+00 0 0 0 +17558 1 3.7840767506643566e+01 5.5928261468877466e+01 8.7500000121594290e+00 0 0 0 +18192 1 3.6157251546825229e+01 5.6489737708691685e+01 1.0499999995998099e+01 0 0 0 +18195 1 3.7279595518185921e+01 5.4270758220215512e+01 1.0500000008280781e+01 0 0 0 +17562 1 4.1207799276481758e+01 5.4805308956630618e+01 8.7500000291695201e+00 0 0 0 +18254 1 4.1768971191299080e+01 5.6462812165388883e+01 1.0500000029053478e+01 0 0 0 +18196 1 3.9524283413026694e+01 5.5366785218957013e+01 1.0500000003593840e+01 0 0 0 +17616 1 4.3452487215036719e+01 5.5901335942498633e+01 8.7499999930619250e+00 0 0 0 +18200 1 4.2891315252508349e+01 5.4243832654049712e+01 1.0500000011696438e+01 0 0 0 +24375 1 4.5136003284936450e+01 5.5339859607020848e+01 1.0499999999509580e+01 0 0 0 +17406 1 1.2264313196896979e+00 5.8909113627614033e+01 6.9999999893095692e+00 0 0 0 +17363 1 1.0571059359825792e+00 5.7274468677927530e+01 8.7500000087791285e+00 0 0 0 +17408 1 3.1035848948501492e+00 5.8356729824771051e+01 8.7499999836381299e+00 0 0 0 +18046 1 1.2264313264766631e+00 5.8909113681359223e+01 1.0499999988780004e+01 0 0 0 +17412 1 6.4095228713020713e+00 5.7181180517244243e+01 8.7499999969034707e+00 0 0 0 +17413 1 5.3078135912845932e+00 5.9413291116756142e+01 8.7500000067888912e+00 0 0 0 +17411 1 6.9829708414446028e+00 5.8844477116824883e+01 6.9999999719474557e+00 0 0 0 +17417 1 8.6590369366172109e+00 5.8280834067427115e+01 8.7499999691485293e+00 0 0 0 +18051 1 6.9829708394800596e+00 5.8844477078293480e+01 1.0499999989269604e+01 0 0 0 +17421 1 1.2026826700455803e+01 5.7159010805287238e+01 8.7499999619345061e+00 0 0 0 +17470 1 1.0904485594847479e+01 5.9377691407949087e+01 8.7499999667927835e+00 0 0 0 +17472 1 1.2587782795603811e+01 5.8816321253206745e+01 6.9999999870420577e+00 0 0 0 +18112 1 1.2587782787277416e+01 5.8816321287744451e+01 1.0499999986172259e+01 0 0 0 +17474 1 1.4271514549423660e+01 5.8254960161571113e+01 8.7500000193167402e+00 0 0 0 +17477 1 1.8199753485869742e+01 5.8789500378908649e+01 7.0000000202932853e+00 0 0 0 +17478 1 1.7638583389736603e+01 5.7131993973524665e+01 8.7500000313526662e+00 0 0 0 +17479 1 1.6516219442180549e+01 5.9350974035952838e+01 8.7500000220389555e+00 0 0 0 +18117 1 1.8199753534965240e+01 5.8789500409676940e+01 1.0500000032034606e+01 0 0 0 +17483 1 1.9883266173376182e+01 5.8228020535240333e+01 8.7500000211142996e+00 0 0 0 +17537 1 2.2127952496065021e+01 5.9324046855071806e+01 8.7500000144640850e+00 0 0 0 +17487 1 2.3250295411162593e+01 5.7105066994918118e+01 8.7499999933779939e+00 0 0 0 +17539 1 2.3811467637031530e+01 5.8762570175603116e+01 6.9999999818939882e+00 0 0 0 +17541 1 2.5494983671479112e+01 5.8201093844844578e+01 8.7499999363197869e+00 0 0 0 +18179 1 2.3811467635713647e+01 5.8762570203449712e+01 1.0499999988737029e+01 0 0 0 +17540 1 2.6056155691561798e+01 5.9858596966477144e+01 6.9999999568080682e+00 0 0 0 +17543 1 2.7178499796291046e+01 5.7639617405096935e+01 6.9999999608540326e+00 0 0 0 +17545 1 2.8862015755359039e+01 5.7078140926520796e+01 8.7499999574457323e+00 0 0 0 +17546 1 2.7739671654339169e+01 5.9297120532885508e+01 8.7499999638031252e+00 0 0 0 +18180 1 2.6056155730026404e+01 5.9858596998550681e+01 1.0499999974667340e+01 0 0 0 +18183 1 2.7178499789731678e+01 5.7639617374411444e+01 1.0499999985261486e+01 0 0 0 +17550 1 3.1106703675357068e+01 5.8174167310675017e+01 8.7499999769402983e+00 0 0 0 +17602 1 3.1667875642785198e+01 5.9831670386625127e+01 6.9999999749521420e+00 0 0 0 +18242 1 3.1667875593618000e+01 5.9831670322034540e+01 1.0499999995313045e+01 0 0 0 +17548 1 3.2790219748205423e+01 5.7612690758643197e+01 6.9999999872400744e+00 0 0 0 +17554 1 3.4473735620191590e+01 5.7051214176800976e+01 8.7499999974101303e+00 0 0 0 +17604 1 3.3351391691592220e+01 5.9270193884472320e+01 8.7499999788776499e+00 0 0 0 +18246 1 3.5034907516744546e+01 5.8708717287831256e+01 1.0499999999795575e+01 0 0 0 +18188 1 3.2790219690732691e+01 5.7612690713324596e+01 1.0499999987191854e+01 0 0 0 +17608 1 3.6718423429294020e+01 5.8147241023398415e+01 8.7500000269945719e+00 0 0 0 +18247 1 3.7279595395979328e+01 5.9804744256638557e+01 1.0500000004125187e+01 0 0 0 +18250 1 3.8401939336079678e+01 5.7585764714610626e+01 1.0499999992695018e+01 0 0 0 +17612 1 4.0085455266824795e+01 5.7024288471462917e+01 8.7500000335334001e+00 0 0 0 +17613 1 3.8963111269087975e+01 5.9243267913758935e+01 8.7500000196339869e+00 0 0 0 +18251 1 4.0646627211537236e+01 5.8681791750285711e+01 1.0500000030000376e+01 0 0 0 +17617 1 4.2330143191876353e+01 5.8120315384702629e+01 8.7500000078945721e+00 0 0 0 +17669 1 4.4574831234391610e+01 5.9216342218649075e+01 8.7499999968185449e+00 0 0 0 +18308 1 4.2891315196552526e+01 5.9777818512099877e+01 1.0500000009946136e+01 0 0 0 +18255 1 4.4013659185626068e+01 5.7558839130737105e+01 1.0500000003108044e+01 0 0 0 +17409 1 1.7224968832129623e+00 6.0508526256175855e+01 8.7499999873665306e+00 0 0 0 +17459 1 1.0571060230820251e+00 6.2808453704041014e+01 8.7499999636485377e+00 0 0 0 +17461 1 4.7485636432458094e+00 6.3282663410314939e+01 6.9999999722754591e+00 0 0 0 +17462 1 4.1395807390777541e+00 6.1606508933587669e+01 8.7500000245470524e+00 0 0 0 +17464 1 5.8404163387070556e+00 6.1060496642316302e+01 6.9999999609764698e+00 0 0 0 +17467 1 6.4095226788166100e+00 6.2715165827272919e+01 8.7499999561918447e+00 0 0 0 +18101 1 4.7485636239009690e+00 6.3282663381436564e+01 1.0499999985566575e+01 0 0 0 +18104 1 5.8404163254224342e+00 6.1060496594544418e+01 1.0499999986418054e+01 0 0 0 +17466 1 7.5396993992745456e+00 6.0503202902333690e+01 8.7499999439099625e+00 0 0 0 +17471 1 9.7824040435630728e+00 6.1597360536059632e+01 8.7499999511421755e+00 0 0 0 +17469 1 1.1466172510792669e+01 6.1035586956600213e+01 6.9999999626312555e+00 0 0 0 +17523 1 1.0342363722958085e+01 6.3254046334086830e+01 6.9999999597939704e+00 0 0 0 +17525 1 1.2026826699092842e+01 6.2692996368546694e+01 8.7499999969263538e+00 0 0 0 +18109 1 1.1466172478590362e+01 6.1035586950226204e+01 1.0499999992789856e+01 0 0 0 +18163 1 1.0342363702797162e+01 6.3254046314561762e+01 1.0499999970023875e+01 0 0 0 +17475 1 1.3149237309434522e+01 6.0473891010571599e+01 8.7500000273624288e+00 0 0 0 +17528 1 1.5955087188852552e+01 6.3227470652943467e+01 7.0000000050742512e+00 0 0 0 +17529 1 1.5393908016445179e+01 6.1569948977405097e+01 8.7500000185954327e+00 0 0 0 +18168 1 1.5955087174450142e+01 6.3227470735055057e+01 1.0500000030593428e+01 0 0 0 +17531 1 1.7077391451736741e+01 6.1008468861810996e+01 7.0000000300552792e+00 0 0 0 +17533 1 1.8760915637395218e+01 6.0446999156988213e+01 8.7500000142947023e+00 0 0 0 +17534 1 1.7638583525205728e+01 6.2665979724118053e+01 8.7500000217879599e+00 0 0 0 +18171 1 1.7077391439515143e+01 6.1008468901594902e+01 1.0500000025561983e+01 0 0 0 +17538 1 2.1005606543216540e+01 6.1543025966186470e+01 8.7500000064093406e+00 0 0 0 +17590 1 2.1566779463335291e+01 6.3200528936851903e+01 6.9999999954169283e+00 0 0 0 +18230 1 2.1566779496654934e+01 6.3200528989746239e+01 1.0499999986508257e+01 0 0 0 +17594 1 2.4933811686407935e+01 6.2077576510046192e+01 6.9999999732197100e+00 0 0 0 +17536 1 2.2689123901309415e+01 6.0981550038684048e+01 6.9999999893398401e+00 0 0 0 +17542 1 2.4372639957437411e+01 6.0420073437075345e+01 8.7499999481153399e+00 0 0 0 +17592 1 2.3250295479019375e+01 6.2639052765223745e+01 8.7499999509876112e+00 0 0 0 +18234 1 2.4933811738257649e+01 6.2077576542371794e+01 1.0499999958977789e+01 0 0 0 +18176 1 2.2689123912309714e+01 6.0981550008919008e+01 1.0499999991848522e+01 0 0 0 +17596 1 2.6617327790192622e+01 6.1516100144989913e+01 8.7499999614340958e+00 0 0 0 +17601 1 2.8862015734896428e+01 6.2612126693663228e+01 8.7499999544149176e+00 0 0 0 +17599 1 3.0545531717925527e+01 6.2050650094019922e+01 6.9999999482518920e+00 0 0 0 +17600 1 2.9984359661344548e+01 6.0393147010947153e+01 8.7499999609339678e+00 0 0 0 +17605 1 3.2229047667876266e+01 6.1489173440879746e+01 8.7499999729224225e+00 0 0 0 +18239 1 3.0545531666379752e+01 6.2050650039712274e+01 1.0500000001188925e+01 0 0 0 +17658 1 3.4473735490042422e+01 6.2585200072857162e+01 8.7500000169386016e+00 0 0 0 +18296 1 3.2790219638715918e+01 6.3146676587595508e+01 1.0500000003496769e+01 0 0 0 +18243 1 3.3912563595162908e+01 6.0927696939309890e+01 1.0499999997240192e+01 0 0 0 +17609 1 3.5596079602496260e+01 6.0366220588041429e+01 8.7500000338238575e+00 0 0 0 +17662 1 3.7840767390458282e+01 6.1462247455693650e+01 8.7500000144930823e+00 0 0 0 +18300 1 3.6157251414197738e+01 6.2023723690960772e+01 1.0500000001340718e+01 0 0 0 +18301 1 3.8401939244034381e+01 6.3119750642533333e+01 1.0500000003874622e+01 0 0 0 +17666 1 4.1207799205874430e+01 6.0339294870496616e+01 8.7499999944856324e+00 0 0 0 +17667 1 4.0085455170559598e+01 6.2558274345923515e+01 8.7500000128727997e+00 0 0 0 +18305 1 4.1768971130630284e+01 6.1996797980298560e+01 1.0499999983272200e+01 0 0 0 +18304 1 3.9524283283854025e+01 6.0900771158315429e+01 1.0500000007893629e+01 0 0 0 +24420 1 4.5136003230186411e+01 6.0873845326529690e+01 1.0500000007361123e+01 0 0 0 +17670 1 4.3452487151672372e+01 6.1435321701865888e+01 8.7499999709741818e+00 0 0 0 +18363 1 4.4013659185987080e+01 6.3092824872645025e+01 1.0499999982451197e+01 0 0 0 +17463 1 3.1035847625352386e+00 6.3890715054800701e+01 8.7499999905974732e+00 0 0 0 +17513 1 1.7224968679438362e+00 6.6042511529599921e+01 8.7499999805402826e+00 0 0 0 +17515 1 3.5610862001775039e+00 6.5496566400690512e+01 6.9999999858518036e+00 0 0 0 +17517 1 5.3078134596087425e+00 6.4947276560227266e+01 8.7499999602777621e+00 0 0 0 +18155 1 3.5610861740457240e+00 6.5496566383045604e+01 1.0499999986639841e+01 0 0 0 +17520 1 9.2228638702285970e+00 6.5473918672143725e+01 6.9999999551294536e+00 0 0 0 +17521 1 8.6590368410670102e+00 6.3814819536511713e+01 8.7499999572337437e+00 0 0 0 +17522 1 7.5396993158378249e+00 6.6037188434171725e+01 8.7499999740948322e+00 0 0 0 +18160 1 9.2228638681291635e+00 6.5473918626339341e+01 1.0499999972804332e+01 0 0 0 +17526 1 1.0904485562242840e+01 6.4911676950630692e+01 8.7499999792915109e+00 0 0 0 +17530 1 1.4271514613878860e+01 6.3788945832429256e+01 8.7500000236669120e+00 0 0 0 +17580 1 1.3149237307757936e+01 6.6007876674305592e+01 8.7499999844491487e+00 0 0 0 +17582 1 1.4832658376822662e+01 6.5446406965866302e+01 7.0000000143845584e+00 0 0 0 +18222 1 1.4832658372624222e+01 6.5446406989103366e+01 1.0500000008046310e+01 0 0 0 +17584 1 1.6516219549766479e+01 6.4884959808295577e+01 8.7500000422090487e+00 0 0 0 +17589 1 1.8760915728262322e+01 6.5980984918164395e+01 8.7500000252316088e+00 0 0 0 +17587 1 2.0444436952374204e+01 6.5419509839564256e+01 6.9999999902097167e+00 0 0 0 +17588 1 1.9883266273032852e+01 6.3762006302199957e+01 8.7500000078929663e+00 0 0 0 +17593 1 2.2127952602274952e+01 6.4858032644475145e+01 8.7499999744117307e+00 0 0 0 +18227 1 2.0444436948204416e+01 6.5419509881177873e+01 1.0499999996113274e+01 0 0 0 +17597 1 2.5494983709680341e+01 6.3735079602621305e+01 8.7499999770699990e+00 0 0 0 +17646 1 2.4372640001194437e+01 6.5954059189870378e+01 8.7499999898986012e+00 0 0 0 +17650 1 2.7739671652948704e+01 6.4831106247675891e+01 8.7499999470203473e+00 0 0 0 +17652 1 2.9423187745247322e+01 6.4269629700501284e+01 6.9999999505085615e+00 0 0 0 +17654 1 3.1106703625146331e+01 6.3708153097425907e+01 8.7499999703296059e+00 0 0 0 +17655 1 2.9984359613593931e+01 6.5927132781944479e+01 8.7499999647330338e+00 0 0 0 +18292 1 2.9423187734422086e+01 6.4269629697668449e+01 1.0499999979457632e+01 0 0 0 +17657 1 3.5034907410374281e+01 6.4242703208113880e+01 6.9999999991933182e+00 0 0 0 +17659 1 3.3351391563422276e+01 6.4804179761558416e+01 8.7500000162812128e+00 0 0 0 +18297 1 3.5034907345284601e+01 6.4242703187736083e+01 1.0500000023165720e+01 0 0 0 +17663 1 3.6718423270345255e+01 6.3681226945862498e+01 8.7499999999777760e+00 0 0 0 +17713 1 3.5596079487439134e+01 6.5900206469205727e+01 8.7499999900407293e+00 0 0 0 +18355 1 3.7279595305248158e+01 6.5338730149592479e+01 1.0500000010254634e+01 0 0 0 +17717 1 3.8963111156721475e+01 6.4777253734246514e+01 8.7500000185264586e+00 0 0 0 +17722 1 4.1207799159732012e+01 6.5873280572041978e+01 8.7499999863850331e+00 0 0 0 +18359 1 4.0646627151279759e+01 6.4215777522910159e+01 1.0499999991796422e+01 0 0 0 +17721 1 4.2330143172619380e+01 6.3654301137443952e+01 8.7499999769712264e+00 0 0 0 +17724 1 4.4574831272078264e+01 6.4750327897104583e+01 8.7499999528232859e+00 0 0 0 +18360 1 4.2891315183210757e+01 6.5311804153415025e+01 1.0499999984234110e+01 0 0 0 +17512 1 2.5187337805614498e+00 6.7699521561209067e+01 6.9999999688762982e+00 0 0 0 +17514 1 1.0571059432110013e+00 6.8342439100987463e+01 8.7500000014079191e+00 0 0 0 +17568 1 3.1035848374250317e+00 6.9424700744834595e+01 8.7499999844360588e+00 0 0 0 +18152 1 2.5187337087462995e+00 6.7699521601687181e+01 1.0499999996358785e+01 0 0 0 +17518 1 4.1395807882495195e+00 6.7140494482392413e+01 8.7499999651878060e+00 0 0 0 +17572 1 6.4095227318526486e+00 6.8249151527006987e+01 8.7500000031719640e+00 0 0 0 +17574 1 8.0950137371105448e+00 6.7691313537511917e+01 6.9999999721788706e+00 0 0 0 +17577 1 8.6590369297237491e+00 6.9348805275912369e+01 8.7499999994744240e+00 0 0 0 +18214 1 8.0950137213087068e+00 6.7691313497812885e+01 1.0499999984641796e+01 0 0 0 +17576 1 9.7824040467653361e+00 6.7131346188495627e+01 8.7499999836251217e+00 0 0 0 +17581 1 1.2026826757658924e+01 6.8226982087833406e+01 8.7499999970450038e+00 0 0 0 +17579 1 1.3710491320593079e+01 6.7665469313830329e+01 7.0000000156444981e+00 0 0 0 +17585 1 1.5393908079987101e+01 6.7103934706608527e+01 8.7500000151871777e+00 0 0 0 +17634 1 1.4271514689762133e+01 6.9322931650953592e+01 8.7500000330975531e+00 0 0 0 +18219 1 1.3710491320734995e+01 6.7665469344399284e+01 1.0500000011645614e+01 0 0 0 +17638 1 1.7638583583843207e+01 6.8199965510739290e+01 8.7500000017701449e+00 0 0 0 +17640 1 1.9322089574833878e+01 6.7638486708596375e+01 6.9999999819556074e+00 0 0 0 +18280 1 1.9322089561310332e+01 6.7638486706254469e+01 1.0499999993028421e+01 0 0 0 +17642 1 2.1005606623526138e+01 6.7077011748397737e+01 8.7499999645170679e+00 0 0 0 +17643 1 1.9883266348259585e+01 6.9295992092933986e+01 8.7499999832360373e+00 0 0 0 +17647 1 2.3250295514351826e+01 6.8173038508530041e+01 8.7499999921875560e+00 0 0 0 +17701 1 2.5494983704006543e+01 6.9269065281907885e+01 8.7499999545044425e+00 0 0 0 +17649 1 2.8300843684153062e+01 6.6488609358285359e+01 6.9999999585098074e+00 0 0 0 +17703 1 2.7178499757465914e+01 6.8707588836115249e+01 6.9999999630647238e+00 0 0 0 +17651 1 2.6617327774814751e+01 6.7050085866697387e+01 8.7499999565897681e+00 0 0 0 +17705 1 2.8862015707922065e+01 6.8146112408362754e+01 8.7499999561001847e+00 0 0 0 +18289 1 2.8300843709327633e+01 6.6488609321331680e+01 1.0499999977191495e+01 0 0 0 +18343 1 2.7178499796873393e+01 6.8707588807235368e+01 1.0499999975722117e+01 0 0 0 +17709 1 3.2229047544068848e+01 6.7023159238825798e+01 8.7499999963680555e+00 0 0 0 +17710 1 3.1106703529289678e+01 6.9242138889738442e+01 8.7499999752323561e+00 0 0 0 +17708 1 3.2790219542842145e+01 6.8680662440404248e+01 6.9999999788059215e+00 0 0 0 +17711 1 3.3912563503493409e+01 6.6461682823486015e+01 6.9999999804310233e+00 0 0 0 +17714 1 3.4473735383625041e+01 6.8119185989239128e+01 8.7499999837960605e+00 0 0 0 +18348 1 3.2790219490654714e+01 6.8680662442351533e+01 1.0499999991011293e+01 0 0 0 +18351 1 3.3912563442317115e+01 6.6461682811878973e+01 1.0500000004495023e+01 0 0 0 +17718 1 3.7840767257754500e+01 6.6996233257513865e+01 8.7500000097694546e+00 0 0 0 +17768 1 3.6718423167272334e+01 6.9215212764413820e+01 8.7500000191686116e+00 0 0 0 +18410 1 3.8401939144430280e+01 6.8653736388058960e+01 1.0500000003309506e+01 0 0 0 +18352 1 3.6157251318353154e+01 6.7557709586826391e+01 1.0500000006612964e+01 0 0 0 +18356 1 3.9524283232593028e+01 6.6434756931994869e+01 1.0500000007034886e+01 0 0 0 +17772 1 4.0085455121180715e+01 6.8092260041805147e+01 8.7499999793864909e+00 0 0 0 +18414 1 4.1768971127349253e+01 6.7530783635618519e+01 1.0499999990622554e+01 0 0 0 +24526 1 4.5136003281095931e+01 6.6407830993355887e+01 1.0499999972485234e+01 0 0 0 +17776 1 4.3452487176164048e+01 6.6969307363578807e+01 8.7499999501989123e+00 0 0 0 +17777 1 4.2330143134347821e+01 6.9188286776967203e+01 8.7499999591416060e+00 0 0 0 +18415 1 4.4013659175389584e+01 6.8626810501523067e+01 1.0499999970017424e+01 0 0 0 +17566 1 1.2264313804354918e+00 6.9977084312864420e+01 7.0000000004772831e+00 0 0 0 +17569 1 1.7224968835650212e+00 7.1576497237123760e+01 8.7499999960074195e+00 0 0 0 +18206 1 1.2264313776106677e+00 6.9977084381235542e+01 1.0499999988684211e+01 0 0 0 +17573 1 5.3078135576120919e+00 7.0481262288607653e+01 8.7500000092289678e+00 0 0 0 +17622 1 4.1395809040773361e+00 7.2674480276181583e+01 8.7500000189515923e+00 0 0 0 +17624 1 5.8404164467683648e+00 7.2128467983022020e+01 6.9999999918544846e+00 0 0 0 +18264 1 5.8404164128613596e+00 7.2128467974045620e+01 1.0499999993442463e+01 0 0 0 +17571 1 6.9829708172694138e+00 6.9912448311079899e+01 7.0000000010476802e+00 0 0 0 +17626 1 7.5396994937981177e+00 7.1571174281545822e+01 8.7499999770187120e+00 0 0 0 +18211 1 6.9829707934995184e+00 6.9912448275216775e+01 1.0499999984289431e+01 0 0 0 +17631 1 9.7824042417454962e+00 7.2665332104968570e+01 8.7500000064039494e+00 0 0 0 +17629 1 1.1466172670425168e+01 7.2103558530309542e+01 7.0000000276736456e+00 0 0 0 +17630 1 1.0904485699088958e+01 7.0445662827693639e+01 8.7500000091686960e+00 0 0 0 +17632 1 1.2587782881648666e+01 6.9884292707688871e+01 7.0000000205487893e+00 0 0 0 +18269 1 1.1466172673167600e+01 7.2103558545096092e+01 1.0500000012521861e+01 0 0 0 +18272 1 1.2587782904284985e+01 6.9884292727644976e+01 1.0500000004813089e+01 0 0 0 +17635 1 1.3149237468038416e+01 7.1541862599933580e+01 8.7500000432876437e+00 0 0 0 +17689 1 1.5393908253819461e+01 7.2637920690872505e+01 8.7499999982014938e+00 0 0 0 +17637 1 1.8199753693267194e+01 6.9857471968517515e+01 6.9999999713596193e+00 0 0 0 +17639 1 1.6516219639495862e+01 7.0418945631580243e+01 8.7499999968912121e+00 0 0 0 +17691 1 1.7077391662305775e+01 7.2076440560369790e+01 7.0000000007195622e+00 0 0 0 +17693 1 1.8760915838461180e+01 7.1514970810973239e+01 8.7499999627685625e+00 0 0 0 +18277 1 1.8199753719381164e+01 6.9857471994905708e+01 1.0500000000303702e+01 0 0 0 +18331 1 1.7077391675564019e+01 7.2076440568567079e+01 1.0499999979033072e+01 0 0 0 +17697 1 2.2127952633188912e+01 7.0392018402666821e+01 8.7499999993844071e+00 0 0 0 +17698 1 2.1005606719264758e+01 7.2610997596978237e+01 8.7499999896311724e+00 0 0 0 +17696 1 2.2689124043470400e+01 7.2049521577097593e+01 6.9999999742287411e+00 0 0 0 +17699 1 2.3811467706375467e+01 6.9830541683567020e+01 6.9999999858379436e+00 0 0 0 +17702 1 2.4372640013929203e+01 7.1488044895724826e+01 8.7499999748343118e+00 0 0 0 +18336 1 2.2689124030276261e+01 7.2049521547245504e+01 1.0500000002123048e+01 0 0 0 +18339 1 2.3811467710551749e+01 6.9830541674569517e+01 1.0499999996559689e+01 0 0 0 +17700 1 2.6056155674212921e+01 7.0926568381255564e+01 6.9999999675703615e+00 0 0 0 +17706 1 2.7739671594767682e+01 7.0365091928306654e+01 8.7499999764864089e+00 0 0 0 +17756 1 2.6617327796439145e+01 7.2584071544025605e+01 8.7499999885648680e+00 0 0 0 +18340 1 2.6056155749474062e+01 7.0926568392881336e+01 1.0500000001920776e+01 0 0 0 +17762 1 3.1667875424146505e+01 7.0899641953092456e+01 6.9999999675894697e+00 0 0 0 +17760 1 2.9984359524684194e+01 7.1461118476855319e+01 8.7499999514059361e+00 0 0 0 +17765 1 3.2229047465635247e+01 7.2557145050401019e+01 8.7499999446620595e+00 0 0 0 +18402 1 3.1667875419404567e+01 7.0899641934770358e+01 1.0499999973654131e+01 0 0 0 +17764 1 3.3351391454622942e+01 7.0338165578312939e+01 8.7499999694786279e+00 0 0 0 +18406 1 3.5034907272890841e+01 6.9776689073338915e+01 1.0499999992235235e+01 0 0 0 +17767 1 3.7279595209205773e+01 7.0872715927454891e+01 6.9999999850583379e+00 0 0 0 +17769 1 3.5596079361981616e+01 7.1434192290294234e+01 8.7500000084962206e+00 0 0 0 +17822 1 3.7840767221053198e+01 7.2530219015990610e+01 8.7499999822438248e+00 0 0 0 +18407 1 3.7279595190913355e+01 7.0872715924725640e+01 1.0499999999543007e+01 0 0 0 +17773 1 3.8963111113429683e+01 7.0311239473108728e+01 8.7499999851116588e+00 0 0 0 +17826 1 4.1207799107679428e+01 7.1407266253711654e+01 8.7499999682411005e+00 0 0 0 +18411 1 4.0646627120737961e+01 6.9749763218169178e+01 1.0499999995631939e+01 0 0 0 +18464 1 3.9524283194707415e+01 7.1968742624153222e+01 1.0499999991517294e+01 0 0 0 +17829 1 4.4574831236648173e+01 7.0284313602532137e+01 8.7499999514527520e+00 0 0 0 +17830 1 4.3452487111009425e+01 7.2503293099289579e+01 8.7499999283441436e+00 0 0 0 +18468 1 4.2891315165553841e+01 7.0845789857857937e+01 1.0499999973055937e+01 0 0 0 +24580 1 4.5136003204614497e+01 7.1941816772533954e+01 1.0499999967461688e+01 0 0 0 +17619 1 1.0571060297501422e+00 7.3876424925479981e+01 8.7499999610783163e+00 0 0 0 +17623 1 3.1035849825714954e+00 7.4958686626658377e+01 8.7499999676554552e+00 0 0 0 +17621 1 4.7485638938797043e+00 7.4350634937528213e+01 6.9999999728455720e+00 0 0 0 +17627 1 6.4095229170533621e+00 7.3783137369021276e+01 8.7499999758146938e+00 0 0 0 +17677 1 5.3078138031323894e+00 7.6015248225199556e+01 8.7499999371545023e+00 0 0 0 +18261 1 4.7485638841802702e+00 7.4350634906640920e+01 1.0499999968764341e+01 0 0 0 +17681 1 8.6590371960903667e+00 7.4882791280729421e+01 8.7499999957128765e+00 0 0 0 +17683 1 1.0342364023875756e+01 7.4322018066800496e+01 7.0000000218916947e+00 0 0 0 +17685 1 1.2026826960631764e+01 7.3760968118866828e+01 8.7500000437405259e+00 0 0 0 +17686 1 1.0904485968780346e+01 7.5979648880465319e+01 8.7500000330283338e+00 0 0 0 +18323 1 1.0342364024460339e+01 7.4322018096216027e+01 1.0500000008988529e+01 0 0 0 +17688 1 1.5955087446783914e+01 7.4295442477027706e+01 6.9999999919642617e+00 0 0 0 +17690 1 1.4271514932604065e+01 7.4856917701160654e+01 8.7500000329098508e+00 0 0 0 +18328 1 1.5955087495733856e+01 7.4295442529769588e+01 1.0500000008352364e+01 0 0 0 +17694 1 1.7638583779799315e+01 7.3733951470695416e+01 8.7499999774230517e+00 0 0 0 +17744 1 1.6516219906067167e+01 7.5952931717565377e+01 8.7500000082757481e+00 0 0 0 +17748 1 1.9883266533547737e+01 7.4829978062554119e+01 8.7499999809271038e+00 0 0 0 +17750 1 2.1566779666328330e+01 7.4268500610610701e+01 6.9999999838948197e+00 0 0 0 +17753 1 2.2127952841707575e+01 7.5926004340770987e+01 8.7499999992042579e+00 0 0 0 +18390 1 2.1566779677349913e+01 7.4268500644166835e+01 1.0499999989402797e+01 0 0 0 +17754 1 2.4933811761781612e+01 7.3145547976164934e+01 6.9999999798546595e+00 0 0 0 +17752 1 2.3250295625911999e+01 7.3707024315753173e+01 8.7499999850921366e+00 0 0 0 +17757 1 2.5494983835136242e+01 7.4803051064386921e+01 8.7500000176154469e+00 0 0 0 +18394 1 2.4933811821006298e+01 7.3145547979012207e+01 1.0500000000794795e+01 0 0 0 +17761 1 2.8862015675212007e+01 7.3680098122196469e+01 8.7499999628534422e+00 0 0 0 +17810 1 2.7739671753081275e+01 7.5899077696320006e+01 8.7499999591556872e+00 0 0 0 +17759 1 3.0545531563583438e+01 7.3118621571065162e+01 6.9999999420552665e+00 0 0 0 +17812 1 2.9423187715752185e+01 7.5337601190989076e+01 6.9999999381671865e+00 0 0 0 +17814 1 3.1106703536851068e+01 7.4776124651571891e+01 8.7499999550312708e+00 0 0 0 +18399 1 3.0545531551948343e+01 7.3118621560521149e+01 1.0499999977475577e+01 0 0 0 +18452 1 2.9423187760879426e+01 7.5337601183298503e+01 1.0499999966107017e+01 0 0 0 +17817 1 3.5034907280556993e+01 7.5310674827830070e+01 6.9999999898776251e+00 0 0 0 +17818 1 3.4473735291941431e+01 7.3653171749037440e+01 8.7499999747701569e+00 0 0 0 +17819 1 3.3351391492143790e+01 7.5872151414148988e+01 8.7499999855190094e+00 0 0 0 +18457 1 3.5034907223092908e+01 7.5310674855759373e+01 1.0499999987624504e+01 0 0 0 +17820 1 3.6157251248519735e+01 7.3091695325566391e+01 6.9999999973256193e+00 0 0 0 +17823 1 3.6718423137720428e+01 7.4749198528361475e+01 8.7499999860788407e+00 0 0 0 +18461 1 3.8401939141408938e+01 7.4187722153320991e+01 1.0500000001413367e+01 0 0 0 +18460 1 3.6157251211477572e+01 7.3091695350758613e+01 1.0499999984153849e+01 0 0 0 +17827 1 4.0085455090681798e+01 7.3626245767394010e+01 8.7499999756590157e+00 0 0 0 +17872 1 3.8963111110960867e+01 7.5845225216097248e+01 8.7500000128880533e+00 0 0 0 +18465 1 4.1768971071415010e+01 7.3064769363081837e+01 1.0499999966457628e+01 0 0 0 +18514 1 4.0646627113850613e+01 7.5283748960150461e+01 1.0499999978776950e+01 0 0 0 +17876 1 4.2330143097104916e+01 7.4722272566723532e+01 8.7499999480146133e+00 0 0 0 +17879 1 4.4574831197723093e+01 7.5818299490795283e+01 8.7499999219170128e+00 0 0 0 +18518 1 4.4013659122386876e+01 7.4160796348740490e+01 1.0499999953123885e+01 0 0 0 +17672 1 2.5187341462140256e+00 7.8767493381229926e+01 6.9999999788798322e+00 0 0 0 +17673 1 1.7224971188583931e+00 7.7110483227043730e+01 8.7499999583984689e+00 0 0 0 +18312 1 2.5187341272055987e+00 7.8767493378979637e+01 1.0499999932661956e+01 0 0 0 +17675 1 3.5610865237808822e+00 7.6564538079580871e+01 6.9999999669481543e+00 0 0 0 +17678 1 4.1395812241841599e+00 7.8208466282794674e+01 8.7499999107143154e+00 0 0 0 +18315 1 3.5610865475660884e+00 7.6564538046229515e+01 1.0499999941073256e+01 0 0 0 +17734 1 8.0950143302677073e+00 7.8759285497254126e+01 6.9999999633299739e+00 0 0 0 +17680 1 9.2228643498301022e+00 7.6541890538958171e+01 6.9999999955207715e+00 0 0 0 +17682 1 7.5396997946758635e+00 7.7105160285159329e+01 8.7499999744459576e+00 0 0 0 +18320 1 9.2228643287082868e+00 7.6541890560291691e+01 1.0499999996023433e+01 0 0 0 +18374 1 8.0950142841555373e+00 7.8759285533398895e+01 1.0499999976231177e+01 0 0 0 +17736 1 9.7824045967361037e+00 7.8199318238700798e+01 8.7500000069541919e+00 0 0 0 +17739 1 1.3710491853819004e+01 7.8733441468167669e+01 7.0000000310057935e+00 0 0 0 +17740 1 1.3149237774537804e+01 7.7075848730147968e+01 8.7500000127499078e+00 0 0 0 +17742 1 1.4832658758467764e+01 7.6514378955192413e+01 7.0000000133726612e+00 0 0 0 +17745 1 1.5393908566404823e+01 7.8171906790659548e+01 8.7500000163697731e+00 0 0 0 +18379 1 1.3710491901417114e+01 7.8733441476514699e+01 1.0500000031915175e+01 0 0 0 +18382 1 1.4832658819394229e+01 7.6514378967273970e+01 1.0500000007705538e+01 0 0 0 +17749 1 1.8760916096709323e+01 7.7048956844986435e+01 8.7499999885900674e+00 0 0 0 +17800 1 1.9322090031213879e+01 7.8706458724797230e+01 6.9999999731207980e+00 0 0 0 +18440 1 1.9322090010488754e+01 7.8706458727776081e+01 1.0499999985137915e+01 0 0 0 +17747 1 2.0444437264203433e+01 7.6487481665969014e+01 6.9999999750471655e+00 0 0 0 +17802 1 2.1005607011762724e+01 7.8144983656889309e+01 8.7499999766013890e+00 0 0 0 +18387 1 2.0444437237619667e+01 7.6487481680892969e+01 1.0499999984459897e+01 0 0 0 +17806 1 2.4372640280599420e+01 7.7022030801990994e+01 8.7500000329167236e+00 0 0 0 +17809 1 2.8300843883036979e+01 7.7556580860540450e+01 6.9999999381868543e+00 0 0 0 +17811 1 2.6617328073656463e+01 7.8118057426202313e+01 8.7499999815624783e+00 0 0 0 +18449 1 2.8300843935857653e+01 7.7556580845800156e+01 1.0499999985505413e+01 0 0 0 +17815 1 2.9984359721460962e+01 7.6995104321829416e+01 8.7499999361819221e+00 0 0 0 +17864 1 3.2229047700002070e+01 7.8091130864667520e+01 8.7499999437008498e+00 0 0 0 +17866 1 3.3912563557963324e+01 7.7529654476257406e+01 6.9999999636074657e+00 0 0 0 +18506 1 3.3912563494910742e+01 7.7529654468582606e+01 1.0499999971767574e+01 0 0 0 +17868 1 3.5596079468831299e+01 7.6968178079776735e+01 8.7499999825078962e+00 0 0 0 +17873 1 3.7840767331365903e+01 7.8064204799939333e+01 8.7500000247179113e+00 0 0 0 +17871 1 3.9524283191607985e+01 7.7502728427638260e+01 7.0000000106210285e+00 0 0 0 +17877 1 4.1207799126313915e+01 7.6941252070463463e+01 8.7499999899096643e+00 0 0 0 +18511 1 3.9524283258191062e+01 7.7502728425682619e+01 1.0499999994409325e+01 0 0 0 +24046 1 4.5136003174004266e+01 7.7475802762494766e+01 6.9999999138046300e+00 0 0 0 +17913 1 4.3452487112611024e+01 7.8037279022392170e+01 8.7499999274872344e+00 0 0 0 +18515 1 4.2891315134652423e+01 7.6379775679710718e+01 1.0499999972387409e+01 0 0 0 +17726 1 1.2264316117878147e+00 8.1045056233443887e+01 6.9999999976506047e+00 0 0 0 +17674 1 1.0571061811240046e+00 7.9410410906553949e+01 8.7499999972234601e+00 0 0 0 +17728 1 3.1035852301182887e+00 8.0492672584858141e+01 8.7499999392789434e+00 0 0 0 +18366 1 1.2264316282840650e+00 8.1045056220362952e+01 1.0500000000908736e+01 0 0 0 +17732 1 6.4095233217518954e+00 7.9317123461508260e+01 8.7499999577751542e+00 0 0 0 +17733 1 5.3078141832337957e+00 8.1549234293941367e+01 8.7499999579067058e+00 0 0 0 +17731 1 6.9829715019446450e+00 8.0980420366340283e+01 6.9999999699590711e+00 0 0 0 +17737 1 8.6590375950295737e+00 8.0416777428734861e+01 8.7499999856189490e+00 0 0 0 +18371 1 6.9829714490827657e+00 8.0980420374086719e+01 1.0499999947839678e+01 0 0 0 +17741 1 1.2026827376423029e+01 7.9294954277035657e+01 8.7500000127163737e+00 0 0 0 +17790 1 1.0904486430268333e+01 8.1513635124817625e+01 8.7500000084214573e+00 0 0 0 +17792 1 1.2587783572797822e+01 8.0952264982494995e+01 7.0000000201994048e+00 0 0 0 +18432 1 1.2587783609567941e+01 8.0952265009875276e+01 1.0500000022986736e+01 0 0 0 +17794 1 1.4271515332192267e+01 8.0390903879030844e+01 8.7500000179582624e+00 0 0 0 +17797 1 1.8199754303430737e+01 8.0925444186629676e+01 6.9999999568871756e+00 0 0 0 +17798 1 1.7638584110876408e+01 7.9267937633940548e+01 8.7499999850695680e+00 0 0 0 +17799 1 1.6516220325388648e+01 8.1486917912745653e+01 8.7499999680820082e+00 0 0 0 +18437 1 1.8199754318429715e+01 8.0925444204689242e+01 1.0499999997969821e+01 0 0 0 +17803 1 1.9883266890159788e+01 8.0363964210396446e+01 8.7499999955148962e+00 0 0 0 +17852 1 2.2127953253637379e+01 8.1459990486138111e+01 8.7500000276800076e+00 0 0 0 +17807 1 2.3250295953062594e+01 7.9241010340384790e+01 8.7500000287112396e+00 0 0 0 +17854 1 2.3811468305096724e+01 8.0898513579867583e+01 7.0000000325713359e+00 0 0 0 +17856 1 2.5494984244384206e+01 8.0337037018369557e+01 8.7499999919830511e+00 0 0 0 +18494 1 2.3811468292833101e+01 8.0898513584639389e+01 1.0500000017369839e+01 0 0 0 +17855 1 2.6056156381916491e+01 8.1994540173776656e+01 6.9999999918746942e+00 0 0 0 +17858 1 2.7178500202646436e+01 7.9775560455276548e+01 6.9999999654057152e+00 0 0 0 +17860 1 2.8862016065508111e+01 7.9214083993327023e+01 8.7499999426271984e+00 0 0 0 +17861 1 2.7739672218856612e+01 8.1433063596272206e+01 8.7499999728055826e+00 0 0 0 +18495 1 2.6056156451184691e+01 8.1994540183330713e+01 1.0500000010960008e+01 0 0 0 +18498 1 2.7178500257321513e+01 7.9775560433437306e+01 1.0499999967257683e+01 0 0 0 +17899 1 3.1667876079396198e+01 8.1967613614110874e+01 6.9999999245229754e+00 0 0 0 +17865 1 3.1106703954094829e+01 8.0310110538862418e+01 8.7499999318412218e+00 0 0 0 +18539 1 3.1667876042936054e+01 8.1967613618285426e+01 1.0499999941769191e+01 0 0 0 +17863 1 3.2790219875381901e+01 7.9748634087606732e+01 6.9999999330117344e+00 0 0 0 +17869 1 3.4473735586241546e+01 7.9187157626297065e+01 8.7499999620047841e+00 0 0 0 +17901 1 3.3351391957588945e+01 8.1406137246071495e+01 8.7499999435756841e+00 0 0 0 +18503 1 3.2790219803349487e+01 7.9748634106959727e+01 1.0499999971801239e+01 0 0 0 +17904 1 3.7279595629140296e+01 8.1940687588280568e+01 7.0000000176287545e+00 0 0 0 +17907 1 3.8401939315443713e+01 7.9721707964949047e+01 7.0000000137053826e+00 0 0 0 +17905 1 3.6718423441529843e+01 8.0283184378353525e+01 8.7500000203042845e+00 0 0 0 +18544 1 3.7279595605289202e+01 8.1940687586872500e+01 1.0499999997096797e+01 0 0 0 +18547 1 3.8401939339376213e+01 7.9721707949914403e+01 1.0500000005551538e+01 0 0 0 +17909 1 4.0085455192906991e+01 7.9160231593459045e+01 8.7500000099933590e+00 0 0 0 +17910 1 3.8963111385928954e+01 8.1379211119730442e+01 8.7500000157927200e+00 0 0 0 +17912 1 4.4013659105176806e+01 7.9694782298769596e+01 6.9999999429936128e+00 0 0 0 +17934 1 4.2891315153442619e+01 8.1913761691981435e+01 6.9999999362304397e+00 0 0 0 +17914 1 4.2330143172727141e+01 8.0256258490482608e+01 8.7499999734823835e+00 0 0 0 +17935 1 4.4574831200892540e+01 8.1352285487511125e+01 8.7499999435529769e+00 0 0 0 +17729 1 1.7224974420162753e+00 8.2644469228263532e+01 8.7500000026822864e+00 0 0 0 +17779 1 1.0571061790134400e+00 8.4944396837506716e+01 8.7499999998808864e+00 0 0 0 +17781 1 4.7485645316564256e+00 8.5418607039125476e+01 6.9999999410073555e+00 0 0 0 +17784 1 5.8404171458900027e+00 8.3196440068043032e+01 6.9999999569088605e+00 0 0 0 +17782 1 4.1395815220766101e+00 8.3742452312284257e+01 8.7500000017895392e+00 0 0 0 +17787 1 6.4095236079264755e+00 8.4851109585176985e+01 8.7499999558965449e+00 0 0 0 +18421 1 4.7485644912761256e+00 8.5418607007861397e+01 1.0499999997208143e+01 0 0 0 +18424 1 5.8404170824626389e+00 8.3196440081509635e+01 1.0499999965762262e+01 0 0 0 +17786 1 7.5397001973512845e+00 8.2639146478218237e+01 8.7499999445737888e+00 0 0 0 +17838 1 1.0342364802598441e+01 8.5389990526734536e+01 7.0000000419041575e+00 0 0 0 +17791 1 9.7824050033804539e+00 8.3733304482436097e+01 8.7499999878654435e+00 0 0 0 +17789 1 1.1466173463034171e+01 8.3171530921010543e+01 7.0000000419108419e+00 0 0 0 +17840 1 1.2026827780696877e+01 8.4828940562676479e+01 8.7500000206930775e+00 0 0 0 +18429 1 1.1466173458453271e+01 8.3171530934767418e+01 1.0500000000587654e+01 0 0 0 +18478 1 1.0342364771665537e+01 8.5389990531493893e+01 1.0499999983597414e+01 0 0 0 +17795 1 1.3149238229561556e+01 8.2609834971632452e+01 8.7500000346497977e+00 0 0 0 +17843 1 1.5955088314293826e+01 8.5363414994844788e+01 6.9999999654410532e+00 0 0 0 +17844 1 1.5393909069597166e+01 8.3705893113058295e+01 8.7499999865866247e+00 0 0 0 +18483 1 1.5955088327341878e+01 8.5363415027619496e+01 1.0500000002505956e+01 0 0 0 +17846 1 1.7077392428161332e+01 8.3144412923622895e+01 6.9999999772788941e+00 0 0 0 +17848 1 1.8760916538667523e+01 8.2582943137110163e+01 8.7499999622459068e+00 0 0 0 +17849 1 1.7638584605907219e+01 8.4801923950946971e+01 8.7499999618440949e+00 0 0 0 +18486 1 1.7077392413553305e+01 8.3144412959745338e+01 1.0499999993007753e+01 0 0 0 +17853 1 2.1005607487235906e+01 8.3678969921619199e+01 8.7500000132894566e+00 0 0 0 +17887 1 2.1566780589847657e+01 8.5336472968699709e+01 7.0000000233837829e+00 0 0 0 +18527 1 2.1566780568655826e+01 8.5336473029854943e+01 1.0500000018002607e+01 0 0 0 +17891 1 2.4933812693243855e+01 8.4213519980231069e+01 7.0000000288543536e+00 0 0 0 +17851 1 2.2689124825869001e+01 8.3117493706251878e+01 7.0000000172523267e+00 0 0 0 +17857 1 2.4372640760722813e+01 8.2556016872144085e+01 8.7500000128121815e+00 0 0 0 +17889 1 2.3250296543851725e+01 8.4774996548234057e+01 8.7500000399852951e+00 0 0 0 +18491 1 2.2689124779669957e+01 8.3117493721809112e+01 1.0500000038001289e+01 0 0 0 +18531 1 2.4933812721398240e+01 8.4213520006785018e+01 1.0500000025321860e+01 0 0 0 +17893 1 2.6617328678258829e+01 8.3652043386461386e+01 8.7499999911749615e+00 0 0 0 +17898 1 2.8862016715515026e+01 8.4748069883934917e+01 8.7499999436707050e+00 0 0 0 +17896 1 3.0545532523412607e+01 8.4186593290029279e+01 6.9999999142993534e+00 0 0 0 +17897 1 2.9984360275498734e+01 8.2529090141833677e+01 8.7499999199540532e+00 0 0 0 +17902 1 3.2229048299590474e+01 8.3625116736280191e+01 8.7499999236040136e+00 0 0 0 +18536 1 3.0545532501013856e+01 8.4186593269639317e+01 1.0499999959880608e+01 0 0 0 +17924 1 3.4473736168364148e+01 8.4721143473740071e+01 8.7499999725432396e+00 0 0 0 +17926 1 3.6157251988705156e+01 8.4159667066734940e+01 7.0000000057571361e+00 0 0 0 +17906 1 3.5596079923595191e+01 8.2502163963181957e+01 8.7500000119223529e+00 0 0 0 +17928 1 3.7840767761640585e+01 8.3598190741165197e+01 8.7500000227251817e+00 0 0 0 +18566 1 3.6157251928916665e+01 8.4159667064120143e+01 1.0499999979660366e+01 0 0 0 +17931 1 4.1768971256312938e+01 8.4132741278585371e+01 6.9999999813017215e+00 0 0 0 +17932 1 4.1207799300254813e+01 8.2475238026275278e+01 8.7499999859206081e+00 0 0 0 +17933 1 4.0085455529400782e+01 8.4694217605097265e+01 8.7500000023271731e+00 0 0 0 +24100 1 4.5136003183638728e+01 8.3009788757053400e+01 6.9999999163268392e+00 0 0 0 +17936 1 4.3452487204500287e+01 8.3571265023603615e+01 8.7499999435527833e+00 0 0 0 +17944 1 4.4013659231794072e+01 8.5228768326956853e+01 6.9999999219221305e+00 0 0 0 +17783 1 3.1035853944047012e+00 8.6026658592461061e+01 8.7499999791179928e+00 0 0 0 +17831 1 1.7224976705135655e+00 8.8178455240338607e+01 8.7499999916837048e+00 0 0 0 +17832 1 3.5610870804762071e+00 8.7632510114157796e+01 6.9999999459418225e+00 0 0 0 +17833 1 5.3078143482329292e+00 8.7083220419175547e+01 8.7499999401140798e+00 0 0 0 +18472 1 3.5610870605043941e+00 8.7632510079311501e+01 1.0500000005378331e+01 0 0 0 +17835 1 9.2228650111632948e+00 8.7609863017467333e+01 7.0000000123942900e+00 0 0 0 +17836 1 8.6590378815497093e+00 8.5950763664228759e+01 8.7499999783332001e+00 0 0 0 +17837 1 7.5397003302933197e+00 8.8173132669224799e+01 8.7499999854554815e+00 0 0 0 +18475 1 9.2228649533366802e+00 8.7609863038575625e+01 1.0499999997901364e+01 0 0 0 +17841 1 1.0904486704700057e+01 8.7047621390230489e+01 8.7500000131863143e+00 0 0 0 +17845 1 1.4271515792331483e+01 8.5924890213824199e+01 8.7500000002438139e+00 0 0 0 +17880 1 1.3149238547622028e+01 8.8143821287130052e+01 8.7499999896844081e+00 0 0 0 +17881 1 1.4832659607125819e+01 8.7582351520415827e+01 6.9999999943397322e+00 0 0 0 +18521 1 1.4832659632040635e+01 8.7582351539718417e+01 1.0499999990583703e+01 0 0 0 +17882 1 1.6516220783487768e+01 8.7020904275774058e+01 8.7499999719756261e+00 0 0 0 +17886 1 1.8760917015870522e+01 8.8116929458031706e+01 8.7499999686729062e+00 0 0 0 +17884 1 2.0444438264395277e+01 8.7555454179635589e+01 6.9999999742507368e+00 0 0 0 +17885 1 1.9883267430068486e+01 8.5897950543585168e+01 8.7499999871590806e+00 0 0 0 +17890 1 2.2127953857558428e+01 8.6993976759617098e+01 8.7500000258416595e+00 0 0 0 +18524 1 2.0444438202116881e+01 8.7555454244992873e+01 1.0500000025042834e+01 0 0 0 +17894 1 2.5494984902988470e+01 8.5871023107492050e+01 8.7500000393937629e+00 0 0 0 +17915 1 2.4372641461615519e+01 8.8090003029103499e+01 8.7500000527122825e+00 0 0 0 +17917 1 2.7739673021133306e+01 8.6967049595466762e+01 8.7499999686408216e+00 0 0 0 +17918 1 2.9423188959925621e+01 8.6405572981423305e+01 6.9999999504358401e+00 0 0 0 +17920 1 3.1106704670733318e+01 8.5844096385940603e+01 8.7499999409537708e+00 0 0 0 +17921 1 2.9984361090716646e+01 8.8063076145710482e+01 8.7499999501835131e+00 0 0 0 +18558 1 2.9423188981002468e+01 8.6405572959951414e+01 1.0499999964269046e+01 0 0 0 +17923 1 3.5034908339974251e+01 8.6378646608807955e+01 7.0000000130136391e+00 0 0 0 +17925 1 3.3351392686425541e+01 8.6940123181194892e+01 8.7500000021991369e+00 0 0 0 +18563 1 3.5034908245274231e+01 8.6378646636410664e+01 1.0499999991186153e+01 0 0 0 +17929 1 3.6718423999848454e+01 8.5817170319336370e+01 8.7500000096847721e+00 0 0 0 +17937 1 3.5596080630886945e+01 8.8036149922546059e+01 8.7500000381221881e+00 0 0 0 +17940 1 4.0646627571571607e+01 8.6351720894312265e+01 6.9999999880694563e+00 0 0 0 +17939 1 3.8963111849819732e+01 8.6913197103383268e+01 8.7500000243080525e+00 0 0 0 +17943 1 4.1207799720511538e+01 8.8009224057088147e+01 8.7499999923023619e+00 0 0 0 +17941 1 4.2891315451671652e+01 8.7447747749842662e+01 6.9999999490393634e+00 0 0 0 +17942 1 4.2330143403725579e+01 8.5790244526373172e+01 8.7499999479468737e+00 0 0 0 +17945 1 4.4574831388028599e+01 8.6886271492753494e+01 8.7499999130642383e+00 0 0 0 +17948 1 1.0571058891176048e+00 4.6206498963777413e+01 1.2249999884252995e+01 0 0 0 +17954 1 3.1035851220397670e+00 4.7288760021415449e+01 1.2249999943477064e+01 0 0 0 +18587 1 2.5187339471994026e+00 4.5563581252461589e+01 1.3999999974965176e+01 0 0 0 +17956 1 4.7485641207856428e+00 4.6680708124490117e+01 1.0499999966211846e+01 0 0 0 +17950 1 4.1395811205844186e+00 4.5004553858107144e+01 1.2249999959040901e+01 0 0 0 +17958 1 6.4095230986177292e+00 4.6113210280471272e+01 1.2249999985931863e+01 0 0 0 +17949 1 5.8404167139345304e+00 4.4458541257585544e+01 1.0499999965236771e+01 0 0 0 +17963 1 8.6590371357057947e+00 4.7212863562596496e+01 1.2250000022480112e+01 0 0 0 +18600 1 8.0950139539157178e+00 4.5555372107822883e+01 1.4000000058786240e+01 0 0 0 +17961 1 1.0342363852459302e+01 4.6652090169936258e+01 1.0499999991916946e+01 0 0 0 +17962 1 9.7824041001573079e+00 4.4995404522689064e+01 1.2250000008933709e+01 0 0 0 +17966 1 1.2026826585712726e+01 4.6091040002123357e+01 1.2250000048206280e+01 0 0 0 +17964 1 1.1466172364150022e+01 4.4433630725010985e+01 1.0499999991927316e+01 0 0 0 +17968 1 1.5393907551011667e+01 4.4967992196291981e+01 1.2250000020102002e+01 0 0 0 +17985 1 1.4271514288136775e+01 4.7186989132634267e+01 1.2250000017433591e+01 0 0 0 +17987 1 1.5955086726117727e+01 4.6625513791326007e+01 1.0500000021139224e+01 0 0 0 +18605 1 1.3710490966011044e+01 4.5529527049039103e+01 1.4000000035004014e+01 0 0 0 +17989 1 1.7638582990484931e+01 4.6064022641210805e+01 1.2249999992856168e+01 0 0 0 +18631 1 1.9322088991823144e+01 4.5502543650705384e+01 1.3999999987573041e+01 0 0 0 +17967 1 1.7077390925146936e+01 4.4406511893423477e+01 1.0500000029665891e+01 0 0 0 +17992 1 2.1566779014382863e+01 4.6598571456124972e+01 1.0500000014053001e+01 0 0 0 +17993 1 2.1005606093691533e+01 4.4941068518781968e+01 1.2249999986540034e+01 0 0 0 +17994 1 1.9883265798526406e+01 4.7160048967085736e+01 1.2249999990119278e+01 0 0 0 +17997 1 2.3250295064380431e+01 4.6037095107781631e+01 1.2250000014632809e+01 0 0 0 +18030 1 2.5494983364736644e+01 4.7133121848124205e+01 1.2250000009165769e+01 0 0 0 +17995 1 2.2689123497025708e+01 4.4379592362566399e+01 1.0499999984562221e+01 0 0 0 +17999 1 2.6617327420608373e+01 4.4914142144286700e+01 1.2250000022335625e+01 0 0 0 +18034 1 2.8862015407323970e+01 4.6010168699611214e+01 1.2250000022015477e+01 0 0 0 +18672 1 2.7178499460653931e+01 4.6571645282539343e+01 1.4000000047191508e+01 0 0 0 +18638 1 2.8300843361980832e+01 4.4352665467953251e+01 1.4000000071374945e+01 0 0 0 +18038 1 3.2229047381586398e+01 4.4887215291496453e+01 1.2250000028199805e+01 0 0 0 +18039 1 3.1106703361339015e+01 4.7106195145319731e+01 1.2250000026256194e+01 0 0 0 +18042 1 3.4473735449562696e+01 4.5983241994939085e+01 1.2250000025432888e+01 0 0 0 +18677 1 3.2790219469468006e+01 4.6544718553881914e+01 1.4000000016941812e+01 0 0 0 +18680 1 3.3912563478646113e+01 4.4325738798075065e+01 1.4000000014706982e+01 0 0 0 +18044 1 3.7840767623323259e+01 4.4860289264053527e+01 1.2250000011379875e+01 0 0 0 +18088 1 3.6718423428188927e+01 4.7079268829571774e+01 1.2250000007631291e+01 0 0 0 +18730 1 3.8401939519770664e+01 4.6517792532260430e+01 1.3999999996818378e+01 0 0 0 +18681 1 3.6157251543904231e+01 4.5421765562579033e+01 1.3999999987351419e+01 0 0 0 +18092 1 4.0085455547106527e+01 4.5956316324019220e+01 1.2250000006606006e+01 0 0 0 +18734 1 4.1768971578894671e+01 4.5394840055239357e+01 1.4000000026799471e+01 0 0 0 +18683 1 3.9524283686265996e+01 4.4298813002044490e+01 1.4000000006406330e+01 0 0 0 +18096 1 4.3452487655935151e+01 4.4833363893250095e+01 1.2249999988382626e+01 0 0 0 +18097 1 4.2330143530339214e+01 4.7052343421271196e+01 1.2250000005884543e+01 0 0 0 +18735 1 4.4013659586986137e+01 4.6490867254048858e+01 1.4000000024389553e+01 0 0 0 +17955 1 1.7224971704835670e+00 4.9440556556942710e+01 1.2249999978865922e+01 0 0 0 +18592 1 1.2264314132181182e+00 4.7841143953142094e+01 1.3999999930868281e+01 0 0 0 +17953 1 3.5610865835106851e+00 4.8894611078013597e+01 1.0499999995760428e+01 0 0 0 +17959 1 5.3078138690095988e+00 4.8345320992045067e+01 1.2249999974745185e+01 0 0 0 +17973 1 4.1395810606848968e+00 5.0538538831691305e+01 1.2249999969041147e+01 0 0 0 +18615 1 5.8404166863866349e+00 4.9992526341799852e+01 1.4000000028674195e+01 0 0 0 +17979 1 9.2228641852603257e+00 4.8871962503364280e+01 1.0499999975576189e+01 0 0 0 +17977 1 7.5396997289727636e+00 4.9435232428874620e+01 1.2250000008831847e+01 0 0 0 +18597 1 6.9829710856238503e+00 4.7776506775955141e+01 1.4000000052045515e+01 0 0 0 +17982 1 9.7824042398159570e+00 5.0529389825064548e+01 1.2250000021727171e+01 0 0 0 +17981 1 1.0904485658893311e+01 4.8309720651712261e+01 1.2250000021519174e+01 0 0 0 +18620 1 1.1466172519682944e+01 4.9967616138691476e+01 1.4000000056226378e+01 0 0 0 +18623 1 1.2587782651392676e+01 4.7748350389474865e+01 1.4000000058712857e+01 0 0 0 +17984 1 1.4832658080887288e+01 4.8844450146989949e+01 1.0499999995895609e+01 0 0 0 +17986 1 1.3149237186709199e+01 4.9405920054536736e+01 1.2249999994199664e+01 0 0 0 +18018 1 1.5393907808167631e+01 5.0501977766007855e+01 1.2249999991503680e+01 0 0 0 +17990 1 1.6516219119118944e+01 4.8283002762296675e+01 1.2250000042117600e+01 0 0 0 +18022 1 1.8760915295351690e+01 4.9379027680258403e+01 1.2250000006975917e+01 0 0 0 +18628 1 1.8199753134053857e+01 4.7721528989286121e+01 1.4000000008914364e+01 0 0 0 +18660 1 1.7077391146007738e+01 4.9940497506794792e+01 1.3999999997615975e+01 0 0 0 +18024 1 2.0444436518286007e+01 4.8817552475417095e+01 1.0500000003247081e+01 0 0 0 +18026 1 2.2127952175010748e+01 4.8256075121978746e+01 1.2249999985428667e+01 0 0 0 +18027 1 2.1005606254711235e+01 5.0475054369911305e+01 1.2250000008789538e+01 0 0 0 +18031 1 2.4372639672632989e+01 4.9352101614022402e+01 1.2250000023702194e+01 0 0 0 +18665 1 2.2689123625732741e+01 4.9913578316906865e+01 1.4000000023031527e+01 0 0 0 +18668 1 2.3811467307127106e+01 4.7694598329786217e+01 1.4000000008372442e+01 0 0 0 +18035 1 2.7739671338348742e+01 4.8229148487922060e+01 1.2250000028147921e+01 0 0 0 +18076 1 2.6617327536777236e+01 5.0448128311410478e+01 1.2250000010631251e+01 0 0 0 +18078 1 2.8300843479723628e+01 4.9886651671070759e+01 1.0499999981139261e+01 0 0 0 +18669 1 2.6056155399521675e+01 4.8790625030779111e+01 1.4000000036067332e+01 0 0 0 +18033 1 2.9423187469113227e+01 4.7667671838710369e+01 1.0499999993097852e+01 0 0 0 +18080 1 2.9984359403636152e+01 4.9325175035607252e+01 1.2250000007632961e+01 0 0 0 +18085 1 3.2229047507881162e+01 5.0421201461630112e+01 1.2250000019887008e+01 0 0 0 +18722 1 3.1667875371848858e+01 4.8763698344299101e+01 1.4000000009262596e+01 0 0 0 +18084 1 3.3351391506835299e+01 4.8202221774514399e+01 1.2250000012201181e+01 0 0 0 +18723 1 3.3912563521640244e+01 4.9859724913573849e+01 1.3999999982943015e+01 0 0 0 +18726 1 3.5034907421313221e+01 4.7640745121660693e+01 1.3999999984008594e+01 0 0 0 +18089 1 3.5596079609698151e+01 4.9298248440139993e+01 1.2249999982531087e+01 0 0 0 +18142 1 3.7840767528509083e+01 5.0394275357499680e+01 1.2249999985536220e+01 0 0 0 +18727 1 3.7279595509767056e+01 4.8736772108259800e+01 1.3999999989805019e+01 0 0 0 +18093 1 3.8963111461354281e+01 4.8175295761727270e+01 1.2250000005839119e+01 0 0 0 +18146 1 4.1207799426263009e+01 4.9271322885976460e+01 1.2250000011813253e+01 0 0 0 +18731 1 4.0646627470737684e+01 4.7613819636319015e+01 1.3999999998218771e+01 0 0 0 +18784 1 3.9524283456375578e+01 4.9832799112568495e+01 1.3999999988814741e+01 0 0 0 +18149 1 4.4574831542224111e+01 4.8148370480744155e+01 1.2250000018052669e+01 0 0 0 +18150 1 4.3452487351581425e+01 5.0367349988697612e+01 1.2250000007553576e+01 0 0 0 +18788 1 4.2891315417290635e+01 4.8709846618369468e+01 1.4000000016264794e+01 0 0 0 +17969 1 1.2264313782163931e+00 5.3375128876993607e+01 1.0499999979471404e+01 0 0 0 +17971 1 2.5187339261006829e+00 5.1097566217336514e+01 1.0499999988556796e+01 0 0 0 +17970 1 1.0571059252958472e+00 5.1740483914117398e+01 1.2249999991192723e+01 0 0 0 +17974 1 3.1035850249044654e+00 5.2822744879759981e+01 1.2249999982227266e+01 0 0 0 +17978 1 6.4095230517876152e+00 5.1647195329067564e+01 1.2250000034263792e+01 0 0 0 +18006 1 5.3078137409519703e+00 5.3879305974480992e+01 1.2250000021517863e+01 0 0 0 +18612 1 4.7485639734484000e+00 5.2214693067753849e+01 1.4000000019496438e+01 0 0 0 +17976 1 8.0950140534201136e+00 5.1089357263000196e+01 1.0499999990457693e+01 0 0 0 +18008 1 6.9829709990552784e+00 5.3310491858408696e+01 1.0499999998839119e+01 0 0 0 +18010 1 8.6590370806047563e+00 5.2746848742822117e+01 1.2250000014672450e+01 0 0 0 +18013 1 1.2587782789419009e+01 5.3282335780239727e+01 1.0499999956593433e+01 0 0 0 +18014 1 1.2026826734804960e+01 5.1625025389274150e+01 1.2249999968235272e+01 0 0 0 +18015 1 1.0904485656065331e+01 5.3843705957025286e+01 1.2250000002237796e+01 0 0 0 +18652 1 1.0342363849937316e+01 5.2186075490649920e+01 1.4000000049697212e+01 0 0 0 +18016 1 1.3710491225944574e+01 5.1063512517562472e+01 1.0499999974625602e+01 0 0 0 +18019 1 1.4271514514230399e+01 5.2720974634924744e+01 1.2249999990099473e+01 0 0 0 +18657 1 1.5955086974333716e+01 5.2159499382873975e+01 1.4000000000191564e+01 0 0 0 +18021 1 1.9322089227431182e+01 5.1036529428169068e+01 1.0500000021400252e+01 0 0 0 +18066 1 1.8199753410344204e+01 5.3255514703783611e+01 1.0500000009637201e+01 0 0 0 +18023 1 1.7638583257341605e+01 5.1598008312224088e+01 1.2249999998240808e+01 0 0 0 +18064 1 1.6516219362717514e+01 5.3816988375858436e+01 1.2249999957140922e+01 0 0 0 +18068 1 1.9883266050206522e+01 5.2694034763544003e+01 1.2250000008990627e+01 0 0 0 +18073 1 2.2127952409699883e+01 5.3790061073495828e+01 1.2250000030725591e+01 0 0 0 +18710 1 2.1566779224968212e+01 5.2132557360346581e+01 1.4000000010542825e+01 0 0 0 +18071 1 2.3811467527872743e+01 5.3228584357958439e+01 1.0500000024573506e+01 0 0 0 +18072 1 2.3250295239815642e+01 5.1571081113152495e+01 1.2250000005030573e+01 0 0 0 +18077 1 2.5494983509536183e+01 5.2667107949894998e+01 1.2249999997554635e+01 0 0 0 +18714 1 2.4933811454428863e+01 5.1009604786274977e+01 1.4000000017926340e+01 0 0 0 +18075 1 2.7178499620873534e+01 5.2105631412833006e+01 1.0499999987805815e+01 0 0 0 +18081 1 2.8862015561018186e+01 5.1544154894803498e+01 1.2250000020228997e+01 0 0 0 +18130 1 2.7739671525684557e+01 5.3763134636186187e+01 1.2250000006674679e+01 0 0 0 +18134 1 3.1106703516281659e+01 5.2640181291464714e+01 1.2249999984352513e+01 0 0 0 +18719 1 3.0545531518865896e+01 5.0982678202037384e+01 1.4000000013983552e+01 0 0 0 +18772 1 2.9423187613172509e+01 5.3201658011978957e+01 1.4000000010715292e+01 0 0 0 +18138 1 3.4473735518827908e+01 5.1517228087767904e+01 1.2249999984149271e+01 0 0 0 +18139 1 3.3351391638389515e+01 5.3736207865051355e+01 1.2249999967171560e+01 0 0 0 +18777 1 3.5034907517471233e+01 5.3174731237529556e+01 1.3999999969413846e+01 0 0 0 +18776 1 3.2790219604090233e+01 5.2078704704636522e+01 1.3999999980539924e+01 0 0 0 +18143 1 3.6718423441517601e+01 5.2613254931906468e+01 1.2249999994588919e+01 0 0 0 +18780 1 3.6157251510166070e+01 5.0955751637923598e+01 1.3999999976033244e+01 0 0 0 +18781 1 3.8401939372075717e+01 5.2051778619524057e+01 1.3999999965273732e+01 0 0 0 +18147 1 4.0085455331931136e+01 5.1490302429613834e+01 1.2249999991280266e+01 0 0 0 +18197 1 3.8963111333588117e+01 5.3709281867333779e+01 1.2249999984409806e+01 0 0 0 +18839 1 4.0646627282873119e+01 5.3147805761221683e+01 1.3999999991745520e+01 0 0 0 +18785 1 4.1768971295296090e+01 5.0928826139192850e+01 1.4000000005882850e+01 0 0 0 +18201 1 4.2330143287617965e+01 5.2586329480537188e+01 1.2250000015330141e+01 0 0 0 +18204 1 4.4574831328425688e+01 5.3682356441323087e+01 1.2250000007767417e+01 0 0 0 +18843 1 4.4013659274703564e+01 5.2024853229348253e+01 1.4000000026069895e+01 0 0 0 +18002 1 1.7224970395732602e+00 5.4974541360538346e+01 1.2249999973061851e+01 0 0 0 +18641 1 2.5187337892143482e+00 5.6631551058672457e+01 1.3999999987484632e+01 0 0 0 +18005 1 5.8404165790396672e+00 5.5526511372152044e+01 1.0500000014972526e+01 0 0 0 +18007 1 4.1395809269494146e+00 5.6072523794075543e+01 1.2250000042946889e+01 0 0 0 +18644 1 3.5610864044858270e+00 5.4428595958085985e+01 1.3999999991167694e+01 0 0 0 +18011 1 7.5396995596438527e+00 5.4969217561479638e+01 1.2250000010018740e+01 0 0 0 +18649 1 9.2228640520095571e+00 5.4405947739205125e+01 1.4000000054879255e+01 0 0 0 +18694 1 8.0950138680719625e+00 5.6623342499748546e+01 1.4000000049643273e+01 0 0 0 +18058 1 1.1466172488777604e+01 5.5501601461517481e+01 1.0499999964521669e+01 0 0 0 +18056 1 9.7824041128645280e+00 5.6063375092692603e+01 1.2249999994266203e+01 0 0 0 +18060 1 1.3149237254634802e+01 5.4939905455392349e+01 1.2249999982049712e+01 0 0 0 +18065 1 1.5393907930447774e+01 5.6035963291667734e+01 1.2249999970371652e+01 0 0 0 +18699 1 1.3710491238065877e+01 5.6597497973055226e+01 1.3999999980982796e+01 0 0 0 +18702 1 1.4832658229514953e+01 5.4378435640826304e+01 1.3999999979108681e+01 0 0 0 +18063 1 1.7077391344192694e+01 5.5474483185198721e+01 1.0500000007751209e+01 0 0 0 +18069 1 1.8760915536455045e+01 5.4913013439246896e+01 1.2250000010416551e+01 0 0 0 +18760 1 1.9322089400441101e+01 5.6570515162474585e+01 1.4000000000727493e+01 0 0 0 +18122 1 2.1005606466123581e+01 5.6009040224726675e+01 1.2250000021347091e+01 0 0 0 +18707 1 2.0444436764359221e+01 5.4351538306023009e+01 1.4000000026051318e+01 0 0 0 +18124 1 2.2689123869279765e+01 5.5447564278525554e+01 1.0500000001598041e+01 0 0 0 +18126 1 2.4372639866054342e+01 5.4886087644009137e+01 1.2249999998662096e+01 0 0 0 +18128 1 2.6056155586684643e+01 5.4324611094760790e+01 1.0499999993986403e+01 0 0 0 +18131 1 2.6617327721729801e+01 5.5982114379074936e+01 1.2250000023926797e+01 0 0 0 +18769 1 2.8300843637820709e+01 5.5420637786349040e+01 1.4000000032763021e+01 0 0 0 +18187 1 3.0545531682155005e+01 5.6516664229163602e+01 1.0499999973241270e+01 0 0 0 +18135 1 2.9984359563992779e+01 5.4859161125912820e+01 1.2250000000535389e+01 0 0 0 +18189 1 3.2229047642166549e+01 5.5955187505016383e+01 1.2249999975058472e+01 0 0 0 +18831 1 3.3912563619185171e+01 5.5393710966690016e+01 1.3999999981733817e+01 0 0 0 +18193 1 3.5596079675915504e+01 5.4832234546545784e+01 1.2249999981113822e+01 0 0 0 +18198 1 3.7840767454182092e+01 5.5928261441359446e+01 1.2249999996114488e+01 0 0 0 +18832 1 3.6157251517988968e+01 5.6489737700044536e+01 1.3999999959716305e+01 0 0 0 +18835 1 3.7279595464675175e+01 5.4270758218809533e+01 1.3999999959574160e+01 0 0 0 +18202 1 4.1207799285042640e+01 5.4805308964516357e+01 1.2250000001289250e+01 0 0 0 +18836 1 3.9524283347742646e+01 5.5366785197211108e+01 1.4000000002501164e+01 0 0 0 +18894 1 4.1768971155619028e+01 5.6462812152160161e+01 1.4000000015736378e+01 0 0 0 +25015 1 4.5136003288207810e+01 5.5339859607893835e+01 1.4000000022295817e+01 0 0 0 +18256 1 4.3452487212299850e+01 5.5901335923128485e+01 1.2250000021155904e+01 0 0 0 +18840 1 4.2891315252387272e+01 5.4243832660510023e+01 1.4000000002754724e+01 0 0 0 +18003 1 1.0571059630029420e+00 5.7274468706406182e+01 1.2249999950125297e+01 0 0 0 +18048 1 3.1035848880594532e+00 5.8356729824778995e+01 1.2250000016039110e+01 0 0 0 +18686 1 1.2264313295940821e+00 5.8909113645452308e+01 1.4000000017366251e+01 0 0 0 +18047 1 3.5610862673122869e+00 5.9962581001526530e+01 1.0500000004040224e+01 0 0 0 +18050 1 4.7485638630418041e+00 5.7748678118265957e+01 1.0500000001924299e+01 0 0 0 +18052 1 6.4095228661587589e+00 5.7181180466746362e+01 1.2250000012909974e+01 0 0 0 +18053 1 5.3078135736920444e+00 5.9413291142929502e+01 1.2250000004574543e+01 0 0 0 +18108 1 9.2228639337619409e+00 5.9939933081055436e+01 1.0499999975552420e+01 0 0 0 +18057 1 8.6590369422110243e+00 5.8280834042646347e+01 1.2250000029380942e+01 0 0 0 +18691 1 6.9829708183164332e+00 5.8844477107434841e+01 1.4000000044732895e+01 0 0 0 +18055 1 1.0342363762844496e+01 5.7720060797140725e+01 1.0499999987891872e+01 0 0 0 +18061 1 1.2026826702889469e+01 5.7159010785592749e+01 1.2250000009150858e+01 0 0 0 +18110 1 1.0904485579240218e+01 5.9377691366140695e+01 1.2250000014956377e+01 0 0 0 +18752 1 1.2587782772614224e+01 5.8816321230672912e+01 1.3999999999658176e+01 0 0 0 +18113 1 1.4832658279360420e+01 5.9912421269896925e+01 1.0500000001526107e+01 0 0 0 +18116 1 1.5955087075105398e+01 5.7693484990270399e+01 1.0499999995211741e+01 0 0 0 +18114 1 1.4271514536087388e+01 5.8254960161285098e+01 1.2249999972021303e+01 0 0 0 +18118 1 1.7638583399293569e+01 5.7131993982242982e+01 1.2249999977847834e+01 0 0 0 +18119 1 1.6516219457373339e+01 5.9350974039053277e+01 1.2250000030137926e+01 0 0 0 +18757 1 1.8199753520015545e+01 5.8789500412883207e+01 1.3999999991110236e+01 0 0 0 +18121 1 2.1566779396807490e+01 5.7666543227350125e+01 1.0500000020683567e+01 0 0 0 +18175 1 2.0444436891662221e+01 5.9885524097785876e+01 1.0499999991207922e+01 0 0 0 +18123 1 1.9883266193812929e+01 5.8228020547720696e+01 1.2250000005561517e+01 0 0 0 +18177 1 2.2127952524247178e+01 5.9324046887673880e+01 1.2249999977815955e+01 0 0 0 +18127 1 2.3250295416270841e+01 5.7105067029231250e+01 1.2250000014871222e+01 0 0 0 +18181 1 2.5494983663249268e+01 5.8201093871030956e+01 1.2250000014343435e+01 0 0 0 +18819 1 2.3811467651840786e+01 5.8762570236752580e+01 1.4000000016554846e+01 0 0 0 +18185 1 2.8862015706580266e+01 5.7078140912733225e+01 1.2249999994524890e+01 0 0 0 +18186 1 2.7739671632538155e+01 5.9297120519589136e+01 1.2250000005816581e+01 0 0 0 +18820 1 2.6056155669457144e+01 5.9858596974062834e+01 1.4000000035834514e+01 0 0 0 +18823 1 2.7178499759734795e+01 5.7639617430253928e+01 1.4000000026635279e+01 0 0 0 +18184 1 2.9423187752799056e+01 5.8735643935750851e+01 1.0499999985786335e+01 0 0 0 +18190 1 3.1106703646810761e+01 5.8174167276386939e+01 1.2249999991465392e+01 0 0 0 +18882 1 3.1667875588432853e+01 5.9831670353232269e+01 1.3999999999955243e+01 0 0 0 +18194 1 3.4473735576620534e+01 5.7051214134082954e+01 1.2249999979195957e+01 0 0 0 +18244 1 3.3351391656303427e+01 5.9270193846811381e+01 1.2249999988016274e+01 0 0 0 +18828 1 3.2790219693855605e+01 5.7612690679183075e+01 1.3999999988957525e+01 0 0 0 +18886 1 3.5034907475116611e+01 5.8708717231754015e+01 1.3999999975490093e+01 0 0 0 +18248 1 3.6718423370538737e+01 5.8147240997846808e+01 1.2249999977393323e+01 0 0 0 +18887 1 3.7279595389289327e+01 5.9804744238062945e+01 1.3999999985228404e+01 0 0 0 +18890 1 3.8401939309891027e+01 5.7585764698862960e+01 1.3999999981289722e+01 0 0 0 +18252 1 4.0085455242037860e+01 5.7024288487843734e+01 1.2250000020043533e+01 0 0 0 +18253 1 3.8963111252013682e+01 5.9243267891713550e+01 1.2249999997205533e+01 0 0 0 +18891 1 4.0646627179371137e+01 5.8681791703649075e+01 1.3999999985518045e+01 0 0 0 +18257 1 4.2330143165555633e+01 5.8120315402308727e+01 1.2250000023833177e+01 0 0 0 +18309 1 4.4574831243129381e+01 5.9216342232928099e+01 1.2250000025441516e+01 0 0 0 +18948 1 4.2891315130425234e+01 5.9777818468789071e+01 1.4000000032327490e+01 0 0 0 +18895 1 4.4013659218552718e+01 5.7558839132252857e+01 1.4000000038689912e+01 0 0 0 +18049 1 1.7224968781824741e+00 6.0508526252644678e+01 1.2250000027694384e+01 0 0 0 +18099 1 1.0571058793031054e+00 6.2808453731553854e+01 1.2250000057500783e+01 0 0 0 +18100 1 2.5187337111884083e+00 6.2165536132181202e+01 1.0499999964875007e+01 0 0 0 +18102 1 4.1395807663575166e+00 6.1606508956509956e+01 1.2249999972750025e+01 0 0 0 +18107 1 6.4095226833002146e+00 6.2715165830639108e+01 1.2250000006097975e+01 0 0 0 +18744 1 5.8404163431556322e+00 6.1060496642283674e+01 1.4000000013670181e+01 0 0 0 +18741 1 4.7485636446869099e+00 6.3282663458320528e+01 1.4000000001049200e+01 0 0 0 +18105 1 8.0950137163902891e+00 6.2157327856655421e+01 1.0499999975207961e+01 0 0 0 +18106 1 7.5396993820232217e+00 6.0503202883880007e+01 1.2250000026143420e+01 0 0 0 +18111 1 9.7824039952315367e+00 6.1597360533204935e+01 1.2250000036639989e+01 0 0 0 +18165 1 1.2026826647311747e+01 6.2692996339874426e+01 1.2250000002664937e+01 0 0 0 +18749 1 1.1466172448907407e+01 6.1035586935495310e+01 1.4000000034171999e+01 0 0 0 +18803 1 1.0342363656996621e+01 6.3254046304364238e+01 1.4000000028215801e+01 0 0 0 +18167 1 1.3710491263531674e+01 6.2131483607576683e+01 1.0500000002075780e+01 0 0 0 +18115 1 1.3149237259395582e+01 6.0473890995567679e+01 1.2249999992504131e+01 0 0 0 +18169 1 1.5393908001000785e+01 6.1569948973324088e+01 1.2250000016972187e+01 0 0 0 +18808 1 1.5955087140128420e+01 6.3227470684193285e+01 1.3999999999393623e+01 0 0 0 +18172 1 1.9322089518983173e+01 6.2104500951248717e+01 1.0500000007749852e+01 0 0 0 +18173 1 1.8760915637488626e+01 6.0446999174276989e+01 1.2250000011387765e+01 0 0 0 +18174 1 1.7638583507479428e+01 6.2665979736305076e+01 1.2250000013230135e+01 0 0 0 +18811 1 1.7077391448202814e+01 6.1008468858093302e+01 1.3999999969518019e+01 0 0 0 +18178 1 2.1005606588477036e+01 6.1543025992712145e+01 1.2249999984787554e+01 0 0 0 +18870 1 2.1566779495489552e+01 6.3200528979564282e+01 1.3999999977577504e+01 0 0 0 +18182 1 2.4372639966799174e+01 6.0420073462316182e+01 1.2250000019937829e+01 0 0 0 +18232 1 2.3250295493724408e+01 6.2639052794673205e+01 1.2249999975683357e+01 0 0 0 +18816 1 2.2689123954413400e+01 6.0981550062664006e+01 1.3999999995317566e+01 0 0 0 +18874 1 2.4933811692071274e+01 6.2077576541251787e+01 1.3999999990014102e+01 0 0 0 +18238 1 2.8300843709543628e+01 6.0954623579535166e+01 1.0499999970565387e+01 0 0 0 +18235 1 2.7178499799154846e+01 6.3173603149872726e+01 1.0499999973681060e+01 0 0 0 +18236 1 2.6617327770664907e+01 6.1516100172499328e+01 1.2249999976090663e+01 0 0 0 +18241 1 2.8862015730496008e+01 6.2612126689047152e+01 1.2250000009944070e+01 0 0 0 +18240 1 2.9984359637234196e+01 6.0393147003230332e+01 1.2249999995460877e+01 0 0 0 +18245 1 3.2229047639388888e+01 6.1489173408361793e+01 1.2250000027866074e+01 0 0 0 +18879 1 3.0545531690715613e+01 6.2050650059865312e+01 1.4000000022579222e+01 0 0 0 +18298 1 3.4473735480217698e+01 6.2585200088481990e+01 1.2249999983022985e+01 0 0 0 +18883 1 3.3912563579775593e+01 6.0927696926056385e+01 1.3999999977487816e+01 0 0 0 +18936 1 3.2790219616709287e+01 6.3146676593656522e+01 1.4000000001873232e+01 0 0 0 +18249 1 3.5596079592665809e+01 6.0366220545248709e+01 1.2249999963872833e+01 0 0 0 +18302 1 3.7840767359559692e+01 6.1462247445101369e+01 1.2249999987250046e+01 0 0 0 +18940 1 3.6157251422582263e+01 6.2023723691341552e+01 1.3999999970950382e+01 0 0 0 +18941 1 3.8401939205151137e+01 6.3119750596166533e+01 1.3999999964573574e+01 0 0 0 +18306 1 4.1207799171185897e+01 6.0339294838089202e+01 1.2250000024599325e+01 0 0 0 +18307 1 4.0085455141588547e+01 6.2558274341404449e+01 1.2249999989849126e+01 0 0 0 +18944 1 3.9524283248316138e+01 6.0900771148061338e+01 1.3999999977197980e+01 0 0 0 +18945 1 4.1768971096711603e+01 6.1996797929308002e+01 1.4000000010956736e+01 0 0 0 +25060 1 4.5136003205720563e+01 6.0873845323204570e+01 1.4000000040739108e+01 0 0 0 +18310 1 4.3452487153898247e+01 6.1435321680654575e+01 1.2250000031575910e+01 0 0 0 +19003 1 4.4013659144950388e+01 6.3092824775103139e+01 1.4000000036755909e+01 0 0 0 +18098 1 1.2264313369233140e+00 6.4443098827834874e+01 1.0499999987355377e+01 0 0 0 +18103 1 3.1035848219362805e+00 6.3890715145675891e+01 1.2249999990208453e+01 0 0 0 +18153 1 1.7224968222245494e+00 6.6042511582515729e+01 1.2249999999146015e+01 0 0 0 +18157 1 5.3078134443520915e+00 6.4947276582301797e+01 1.2249999994798094e+01 0 0 0 +18795 1 3.5610861790701280e+00 6.5496566422394622e+01 1.3999999979962508e+01 0 0 0 +18159 1 6.9829707023198360e+00 6.4378462536083958e+01 1.0499999962472138e+01 0 0 0 +18161 1 8.6590368022550610e+00 6.3814819504253691e+01 1.2250000003283523e+01 0 0 0 +18162 1 7.5396993008373663e+00 6.6037188421872727e+01 1.2249999992014157e+01 0 0 0 +18800 1 9.2228638232138795e+00 6.5473918640136773e+01 1.4000000029829579e+01 0 0 0 +18164 1 1.2587782749523086e+01 6.4350306856192432e+01 1.0499999996294981e+01 0 0 0 +18166 1 1.0904485522421780e+01 6.4911676927674378e+01 1.2250000021130305e+01 0 0 0 +18170 1 1.4271514565875092e+01 6.3788945836681670e+01 1.2250000041992717e+01 0 0 0 +18220 1 1.3149237263665206e+01 6.6007876676807925e+01 1.2250000035969910e+01 0 0 0 +18862 1 1.4832658290783527e+01 6.5446406950010413e+01 1.3999999997248986e+01 0 0 0 +18226 1 1.8199753620353434e+01 6.4323486187291465e+01 1.0499999997238449e+01 0 0 0 +18224 1 1.6516219507419059e+01 6.4884959781022431e+01 1.2249999989154455e+01 0 0 0 +18229 1 1.8760915722626809e+01 6.5980984948585530e+01 1.2249999994452706e+01 0 0 0 +18228 1 1.9883266293132966e+01 6.3762006323075930e+01 1.2249999987868033e+01 0 0 0 +18233 1 2.2127952609849203e+01 6.4858032648475188e+01 1.2249999993923804e+01 0 0 0 +18867 1 2.0444436961158608e+01 6.5419509856075280e+01 1.3999999994139786e+01 0 0 0 +18231 1 2.3811467735874899e+01 6.4296555969912291e+01 1.0499999975319868e+01 0 0 0 +18237 1 2.5494983714289372e+01 6.3735079611940250e+01 1.2249999953245423e+01 0 0 0 +18286 1 2.4372640004937661e+01 6.5954059188120894e+01 1.2249999952046721e+01 0 0 0 +18288 1 2.6056155714942797e+01 6.5392582670929343e+01 1.0499999967109153e+01 0 0 0 +18290 1 2.7739671631545836e+01 6.4831106257482560e+01 1.2249999982878231e+01 0 0 0 +18293 1 3.1667875525715335e+01 6.5365656171568730e+01 1.0499999997092415e+01 0 0 0 +18294 1 3.1106703590120862e+01 6.3708153093961315e+01 1.2249999999609271e+01 0 0 0 +18295 1 2.9984359590950774e+01 6.5927132763610359e+01 1.2250000010152894e+01 0 0 0 +18932 1 2.9423187705287344e+01 6.4269629721618628e+01 1.4000000017487080e+01 0 0 0 +18299 1 3.3351391564708848e+01 6.4804179757529312e+01 1.2249999981775179e+01 0 0 0 +18937 1 3.5034907406014248e+01 6.4242703208200709e+01 1.3999999983582965e+01 0 0 0 +18303 1 3.6718423258023513e+01 6.3681226939706839e+01 1.2250000003559112e+01 0 0 0 +18353 1 3.5596079472196855e+01 6.5900206479104185e+01 1.2250000009878029e+01 0 0 0 +18995 1 3.7279595287992315e+01 6.5338730146122657e+01 1.3999999969917265e+01 0 0 0 +18357 1 3.8963111170107247e+01 6.4777253743233842e+01 1.2249999972481357e+01 0 0 0 +18362 1 4.1207799175545937e+01 6.5873280575732196e+01 1.2249999992724264e+01 0 0 0 +18999 1 4.0646627135456455e+01 6.4215777507851143e+01 1.3999999996751731e+01 0 0 0 +18361 1 4.2330143158911014e+01 6.3654301132459636e+01 1.2249999997833756e+01 0 0 0 +18364 1 4.4574831248510939e+01 6.4750327895077788e+01 1.2249999995408906e+01 0 0 0 +19000 1 4.2891315179628847e+01 6.5311804186880977e+01 1.4000000006987115e+01 0 0 0 +18154 1 1.0571059423305857e+00 6.8342439177734391e+01 1.2249999979051800e+01 0 0 0 +18208 1 3.1035848761237403e+00 6.9424700784400102e+01 1.2250000017806800e+01 0 0 0 +18792 1 2.5187337446007478e+00 6.7699521626031910e+01 1.4000000029196741e+01 0 0 0 +18156 1 5.8404163250278645e+00 6.6594482160588171e+01 1.0499999982148573e+01 0 0 0 +18158 1 4.1395807615473821e+00 6.7140494493004454e+01 1.2250000012534471e+01 0 0 0 +18210 1 4.7485637188226670e+00 6.8816649080051960e+01 1.0499999988458457e+01 0 0 0 +18212 1 6.4095227071812531e+00 6.8249151481447484e+01 1.2249999987127740e+01 0 0 0 +18217 1 8.6590369055602743e+00 6.9348805252956140e+01 1.2250000000956646e+01 0 0 0 +18854 1 8.0950136966445179e+00 6.7691313510930797e+01 1.4000000008826657e+01 0 0 0 +18218 1 1.1466172458431684e+01 6.6569572597559400e+01 1.0499999990035576e+01 0 0 0 +18216 1 9.7824040026183443e+00 6.7131346179932464e+01 1.2249999989546978e+01 0 0 0 +18215 1 1.0342363761128947e+01 6.8788032035549648e+01 1.0500000005420659e+01 0 0 0 +18221 1 1.2026826718892787e+01 6.8226982074418217e+01 1.2250000025548150e+01 0 0 0 +18276 1 1.5955087237987573e+01 6.8761456510284546e+01 1.0499999995652876e+01 0 0 0 +18225 1 1.5393908040487940e+01 6.7103934712121998e+01 1.2250000012505382e+01 0 0 0 +18274 1 1.4271514661038987e+01 6.9322931642880775e+01 1.2249999972842810e+01 0 0 0 +18859 1 1.3710491269967052e+01 6.7665469322559858e+01 1.3999999990996844e+01 0 0 0 +18223 1 1.7077391510644159e+01 6.6542454648319691e+01 1.0500000005279198e+01 0 0 0 +18278 1 1.7638583556639698e+01 6.8199965514101933e+01 1.2249999983959908e+01 0 0 0 +18920 1 1.9322089546569398e+01 6.7638486700075546e+01 1.3999999999102331e+01 0 0 0 +18281 1 2.1566779533537474e+01 6.8734514761570949e+01 1.0500000000515083e+01 0 0 0 +18282 1 2.1005606623516005e+01 6.7077011757531380e+01 1.2250000000046645e+01 0 0 0 +18283 1 1.9883266339703770e+01 6.9295992105774545e+01 1.2250000003781947e+01 0 0 0 +18284 1 2.2689124024547624e+01 6.6515535817068411e+01 1.0499999970720326e+01 0 0 0 +18285 1 2.4933811726501258e+01 6.7611562244734401e+01 1.0499999979629834e+01 0 0 0 +18287 1 2.3250295506567866e+01 6.8173038514006379e+01 1.2249999993064122e+01 0 0 0 +18341 1 2.5494983704502729e+01 6.9269065288263164e+01 1.2250000015225107e+01 0 0 0 +18291 1 2.6617327783214279e+01 6.7050085849460842e+01 1.2249999998880783e+01 0 0 0 +18345 1 2.8862015685015145e+01 6.8146112391881744e+01 1.2249999989829064e+01 0 0 0 +18929 1 2.8300843659481909e+01 6.6488609308153087e+01 1.4000000016737795e+01 0 0 0 +18983 1 2.7178499747521940e+01 6.8707588836531841e+01 1.4000000016645558e+01 0 0 0 +18347 1 3.0545531633614711e+01 6.7584635836306290e+01 1.0499999977133175e+01 0 0 0 +18349 1 3.2229047528475256e+01 6.7023159255426734e+01 1.2249999979842444e+01 0 0 0 +18350 1 3.1106703510648568e+01 6.9242138879208738e+01 1.2249999977615529e+01 0 0 0 +18991 1 3.3912563469176114e+01 6.6461682849277906e+01 1.3999999989493995e+01 0 0 0 +18354 1 3.4473735352131605e+01 6.8119185977641294e+01 1.2249999999477367e+01 0 0 0 +18988 1 3.2790219507180936e+01 6.8680662434406514e+01 1.4000000005538412e+01 0 0 0 +18358 1 3.7840767282787823e+01 6.6996233266233673e+01 1.2249999996412937e+01 0 0 0 +18408 1 3.6718423157295057e+01 6.9215212786226232e+01 1.2249999967288343e+01 0 0 0 +18992 1 3.6157251301658185e+01 6.7557709558774462e+01 1.3999999976454097e+01 0 0 0 +19050 1 3.8401939167090909e+01 6.8653736398761140e+01 1.3999999985819692e+01 0 0 0 +18412 1 4.0085455128389107e+01 6.8092260051384955e+01 1.2250000006567873e+01 0 0 0 +19054 1 4.1768971111921033e+01 6.7530783635585507e+01 1.4000000004162795e+01 0 0 0 +18996 1 3.9524283229450361e+01 6.6434756914545545e+01 1.3999999989528149e+01 0 0 0 +18416 1 4.3452487180512051e+01 6.6969307350370428e+01 1.2250000009293284e+01 0 0 0 +18417 1 4.2330143152646137e+01 6.9188286787270812e+01 1.2249999999222821e+01 0 0 0 +25166 1 4.5136003242383474e+01 6.6407831021038362e+01 1.4000000028126143e+01 0 0 0 +19055 1 4.4013659209958440e+01 6.8626810506890919e+01 1.4000000023600366e+01 0 0 0 +18209 1 1.7224969123240952e+00 7.1576497293617280e+01 1.2250000049207829e+01 0 0 0 +18846 1 1.2264313826636652e+00 6.9977084395213112e+01 1.4000000047503887e+01 0 0 0 +18207 1 3.5610862920712258e+00 7.1030552147045725e+01 1.0500000007521887e+01 0 0 0 +18213 1 5.3078135361884211e+00 7.0481262305809977e+01 1.2249999999191672e+01 0 0 0 +18262 1 4.1395809112139190e+00 7.2674480310561364e+01 1.2249999970743961e+01 0 0 0 +18904 1 5.8404164633180624e+00 7.2128467986943178e+01 1.4000000015793077e+01 0 0 0 +18266 1 7.5396994727188922e+00 7.1571174279343253e+01 1.2250000016403176e+01 0 0 0 +18268 1 9.2228640159976703e+00 7.1007904490177836e+01 1.0499999991535146e+01 0 0 0 +18851 1 6.9829707761139703e+00 6.9912448293708479e+01 1.4000000017249160e+01 0 0 0 +18271 1 9.7824041950863609e+00 7.2665332127059628e+01 1.2250000027759706e+01 0 0 0 +18270 1 1.0904485678175680e+01 7.0445662794719723e+01 1.2250000008664188e+01 0 0 0 +18909 1 1.1466172634551459e+01 7.2103558534099619e+01 1.3999999989537637e+01 0 0 0 +18912 1 1.2587782841781772e+01 6.9884292685709994e+01 1.3999999981743901e+01 0 0 0 +18273 1 1.4832658477817024e+01 7.0980392846473123e+01 1.0499999996758493e+01 0 0 0 +18275 1 1.3149237446323859e+01 7.1541862590915599e+01 1.2249999985905067e+01 0 0 0 +18329 1 1.5393908255273733e+01 7.2637920669377380e+01 1.2250000001793538e+01 0 0 0 +18279 1 1.6516219643707263e+01 7.0418945616826690e+01 1.2250000013918955e+01 0 0 0 +18333 1 1.8760915825099328e+01 7.1514970794332328e+01 1.2250000005860844e+01 0 0 0 +18917 1 1.8199753663290686e+01 6.9857471987196305e+01 1.4000000004351753e+01 0 0 0 +18971 1 1.7077391645787454e+01 7.2076440518895524e+01 1.3999999985882942e+01 0 0 0 +18335 1 2.0444437046218589e+01 7.0953495691221050e+01 1.0499999983430000e+01 0 0 0 +18337 1 2.2127952617978057e+01 7.0392018402071812e+01 1.2249999983654158e+01 0 0 0 +18338 1 2.1005606710322684e+01 7.2610997594272632e+01 1.2250000000431205e+01 0 0 0 +18342 1 2.4372640036312610e+01 7.1488044893051395e+01 1.2250000042232596e+01 0 0 0 +18976 1 2.2689124032250461e+01 7.2049521581642495e+01 1.4000000016337555e+01 0 0 0 +18979 1 2.3811467709767328e+01 6.9830541675068631e+01 1.4000000012403039e+01 0 0 0 +18398 1 2.8300843659416142e+01 7.2022594980384952e+01 1.0499999975623970e+01 0 0 0 +18346 1 2.7739671597039756e+01 7.0365091909802288e+01 1.2250000013031627e+01 0 0 0 +18396 1 2.6617327793595592e+01 7.2584071528087506e+01 1.2249999996171967e+01 0 0 0 +18980 1 2.6056155680039875e+01 7.0926568333867905e+01 1.4000000011784353e+01 0 0 0 +18344 1 2.9423187672971803e+01 6.9803615394769267e+01 1.0499999979013850e+01 0 0 0 +18400 1 2.9984359534475498e+01 7.1461118478793182e+01 1.2249999993457749e+01 0 0 0 +18405 1 3.2229047449138847e+01 7.2557145049121118e+01 1.2250000013899925e+01 0 0 0 +19042 1 3.1667875402024727e+01 7.0899641971112970e+01 1.4000000001619656e+01 0 0 0 +18403 1 3.3912563360272451e+01 7.1995668653359374e+01 1.0499999980873458e+01 0 0 0 +18404 1 3.3351391422996365e+01 7.0338165599824720e+01 1.2249999987738491e+01 0 0 0 +19046 1 3.5034907217560850e+01 6.9776689044818852e+01 1.3999999990105630e+01 0 0 0 +18409 1 3.5596079345958010e+01 7.1434192297809986e+01 1.2249999948452929e+01 0 0 0 +18462 1 3.7840767205335574e+01 7.2530219026617786e+01 1.2249999985575961e+01 0 0 0 +19047 1 3.7279595198664751e+01 7.0872715933144192e+01 1.3999999986654107e+01 0 0 0 +18413 1 3.8963111120587683e+01 7.0311239472654478e+01 1.2249999993382023e+01 0 0 0 +18466 1 4.1207799122715457e+01 7.1407266254765005e+01 1.2250000012831274e+01 0 0 0 +19051 1 4.0646627125603899e+01 6.9749763199581466e+01 1.4000000006456178e+01 0 0 0 +19104 1 3.9524283152058523e+01 7.1968742641086394e+01 1.3999999983177593e+01 0 0 0 +25220 1 4.5136003182109128e+01 7.1941816819690203e+01 1.4000000036746611e+01 0 0 0 +18469 1 4.4574831232542095e+01 7.0284313615944569e+01 1.2249999984323866e+01 0 0 0 +18470 1 4.3452487117259608e+01 7.2503293091339899e+01 1.2250000011432721e+01 0 0 0 +19108 1 4.2891315115657719e+01 7.0845789878761749e+01 1.4000000032629728e+01 0 0 0 +18258 1 1.2264314965813807e+00 7.5511070251311764e+01 1.0499999986407994e+01 0 0 0 +18260 1 2.5187338936147299e+00 7.3233507413075316e+01 1.0500000016279834e+01 0 0 0 +18259 1 1.0571061104581740e+00 7.3876424976266733e+01 1.2250000062676627e+01 0 0 0 +18263 1 3.1035849930617294e+00 7.4958686616749787e+01 1.2249999990048899e+01 0 0 0 +18267 1 6.4095229295088574e+00 7.3783137389171841e+01 1.2250000003344498e+01 0 0 0 +18317 1 5.3078138293299739e+00 7.6015248270534940e+01 1.2249999993397939e+01 0 0 0 +18901 1 4.7485639248929621e+00 7.4350634961547499e+01 1.4000000030759301e+01 0 0 0 +18265 1 8.0950139273012773e+00 7.3225299424933326e+01 1.0500000006169181e+01 0 0 0 +18319 1 6.9829710659438229e+00 7.5446434261614840e+01 1.0499999968834787e+01 0 0 0 +18321 1 8.6590371540136211e+00 7.4882791278449403e+01 1.2249999997238081e+01 0 0 0 +18324 1 1.2587783143799392e+01 7.5418278766192159e+01 1.0500000034984453e+01 0 0 0 +18325 1 1.2026826961397839e+01 7.3760968112622024e+01 1.2249999990685826e+01 0 0 0 +18326 1 1.0904485963872958e+01 7.5979648886712624e+01 1.2250000028857038e+01 0 0 0 +18963 1 1.0342363991779434e+01 7.4322018090034064e+01 1.3999999994962394e+01 0 0 0 +18327 1 1.3710491526562043e+01 7.3199455347970314e+01 1.0500000012067861e+01 0 0 0 +18330 1 1.4271514935119932e+01 7.4856917688003207e+01 1.2250000035235258e+01 0 0 0 +18968 1 1.5955087455400864e+01 7.4295442481790673e+01 1.4000000005295167e+01 0 0 0 +18332 1 1.9322089733307376e+01 7.3172472630900813e+01 1.0499999983272799e+01 0 0 0 +18386 1 1.8199753938900422e+01 7.5391458011418933e+01 1.0499999973110224e+01 0 0 0 +18334 1 1.7638583768884633e+01 7.3733951475963536e+01 1.2250000008690055e+01 0 0 0 +18384 1 1.6516219917124076e+01 7.5952931676346509e+01 1.2249999993078248e+01 0 0 0 +18388 1 1.9883266517071519e+01 7.4829978061398265e+01 1.2249999990187565e+01 0 0 0 +18393 1 2.2127952829424348e+01 7.5926004333285661e+01 1.2250000005647577e+01 0 0 0 +19030 1 2.1566779649548483e+01 7.4268500610030401e+01 1.3999999988501974e+01 0 0 0 +18391 1 2.3811467917794463e+01 7.5364527534377174e+01 1.0500000010445939e+01 0 0 0 +18392 1 2.3250295617668730e+01 7.3707024335256477e+01 1.2250000006228859e+01 0 0 0 +18397 1 2.5494983831028282e+01 7.4803051061491331e+01 1.2249999982905736e+01 0 0 0 +19034 1 2.4933811765572496e+01 7.3145547969003388e+01 1.3999999990834286e+01 0 0 0 +18395 1 2.7178499851714147e+01 7.4241574556051461e+01 1.0499999986535743e+01 0 0 0 +18401 1 2.8862015712405235e+01 7.3680098113023092e+01 1.2250000008069000e+01 0 0 0 +18450 1 2.7739671770852539e+01 7.5899077706648839e+01 1.2249999991374096e+01 0 0 0 +18454 1 3.1106703537520637e+01 7.4776124656154650e+01 1.2249999986523157e+01 0 0 0 +19039 1 3.0545531585920038e+01 7.3118621574651769e+01 1.4000000023079792e+01 0 0 0 +19092 1 2.9423187761695445e+01 7.5337601184056084e+01 1.4000000018364721e+01 0 0 0 +18456 1 3.2790219477922292e+01 7.4214648252373578e+01 1.0499999977598884e+01 0 0 0 +18458 1 3.4473735268529516e+01 7.3653171781049537e+01 1.2249999957123542e+01 0 0 0 +18459 1 3.3351391486975118e+01 7.5872151412710423e+01 1.2249999961736627e+01 0 0 0 +19097 1 3.5034907265289398e+01 7.5310674866299181e+01 1.3999999980066720e+01 0 0 0 +18463 1 3.6718423131403362e+01 7.4749198549661131e+01 1.2249999986627644e+01 0 0 0 +19100 1 3.6157251217079725e+01 7.3091695374837101e+01 1.3999999968641747e+01 0 0 0 +19101 1 3.8401939083990882e+01 7.4187722138653712e+01 1.3999999957623830e+01 0 0 0 +18467 1 4.0085455082249439e+01 7.3626245776240751e+01 1.2249999978884485e+01 0 0 0 +18512 1 3.8963111128836296e+01 7.5845225211736192e+01 1.2249999962460105e+01 0 0 0 +19105 1 4.1768971056538312e+01 7.3064769357816232e+01 1.4000000010441111e+01 0 0 0 +19154 1 4.0646627086898100e+01 7.5283748977231951e+01 1.4000000000378273e+01 0 0 0 +18516 1 4.2330143119503887e+01 7.4722272572320051e+01 1.2249999984965367e+01 0 0 0 +18519 1 4.4574831173094530e+01 7.5818299501726528e+01 1.2249999974942371e+01 0 0 0 +19158 1 4.4013659108247417e+01 7.4160796292688261e+01 1.4000000038967618e+01 0 0 0 +18313 1 1.7224971959146138e+00 7.7110483213207203e+01 1.2249999974373253e+01 0 0 0 +18952 1 2.5187342041266301e+00 7.8767493348849115e+01 1.4000000031257908e+01 0 0 0 +18316 1 5.8404168010994884e+00 7.7662453975692657e+01 1.0499999960974534e+01 0 0 0 +18318 1 4.1395812635358800e+00 7.8208466277432734e+01 1.2249999997564940e+01 0 0 0 +18955 1 3.5610865874337772e+00 7.6564538065513688e+01 1.4000000009955851e+01 0 0 0 +18322 1 7.5396997595129740e+00 7.7105160312948669e+01 1.2249999984014194e+01 0 0 0 +18960 1 9.2228642955989422e+00 7.6541890575545438e+01 1.4000000020532489e+01 0 0 0 +19014 1 8.0950142725933212e+00 7.8759285539159706e+01 1.4000000013204716e+01 0 0 0 +18378 1 1.1466172992490819e+01 7.7637544679398928e+01 1.0500000029375819e+01 0 0 0 +18376 1 9.7824045580368200e+00 7.8199318279510990e+01 1.2250000005335364e+01 0 0 0 +18380 1 1.3149237770239409e+01 7.7075848721624567e+01 1.2250000047768967e+01 0 0 0 +18385 1 1.5393908591589645e+01 7.8171906795587617e+01 1.2250000034515523e+01 0 0 0 +19019 1 1.3710491873735172e+01 7.8733441487845880e+01 1.4000000025305381e+01 0 0 0 +19022 1 1.4832658775935915e+01 7.6514378919611673e+01 1.4000000021303523e+01 0 0 0 +18383 1 1.7077391960930662e+01 7.7610426652944156e+01 1.0500000002608665e+01 0 0 0 +18389 1 1.8760916091329410e+01 7.7048956863067971e+01 1.2250000002893833e+01 0 0 0 +19080 1 1.9322090022446336e+01 7.8706458732816373e+01 1.4000000013291112e+01 0 0 0 +18442 1 2.1005606989707029e+01 7.8144983665281501e+01 1.2249999997000561e+01 0 0 0 +19027 1 2.0444437244118532e+01 7.6487481690953928e+01 1.4000000000239819e+01 0 0 0 +18444 1 2.2689124340759609e+01 7.7583507569288727e+01 1.0499999981390356e+01 0 0 0 +18445 1 2.4933812119971293e+01 7.8679533912394547e+01 1.0499999998540387e+01 0 0 0 +18446 1 2.4372640282651560e+01 7.7022030782429326e+01 1.2249999959159819e+01 0 0 0 +18448 1 2.6056155914807420e+01 7.6460554167299620e+01 1.0499999990530810e+01 0 0 0 +18451 1 2.6617328111629131e+01 7.8118057394843447e+01 1.2249999998111653e+01 0 0 0 +19089 1 2.8300843914476786e+01 7.7556580808694321e+01 1.3999999994806050e+01 0 0 0 +18453 1 3.1667875544335001e+01 7.6433627779936117e+01 1.0499999963692726e+01 0 0 0 +18502 1 3.0545531897690196e+01 7.8652607447012429e+01 1.0499999964002699e+01 0 0 0 +18455 1 2.9984359725400001e+01 7.6995104313445978e+01 1.2250000004525599e+01 0 0 0 +18504 1 3.2229047687907837e+01 7.8091130907740279e+01 1.2249999968582216e+01 0 0 0 +19146 1 3.3912563527972772e+01 7.7529654508262553e+01 1.3999999993948983e+01 0 0 0 +18507 1 3.6157251436092672e+01 7.8625681198003946e+01 1.0500000002937441e+01 0 0 0 +18510 1 3.7279595267175601e+01 7.6406701701062332e+01 1.0500000003351010e+01 0 0 0 +18508 1 3.5596079459495876e+01 7.6968178110827040e+01 1.2249999988235279e+01 0 0 0 +18513 1 3.7840767345103153e+01 7.8064204814076646e+01 1.2249999970981913e+01 0 0 0 +18551 1 4.1768971150240830e+01 7.8598755212717393e+01 1.0499999986663509e+01 0 0 0 +18517 1 4.1207799173135264e+01 7.6941252068521976e+01 1.2249999989248698e+01 0 0 0 +19151 1 3.9524283257935110e+01 7.7502728439731086e+01 1.3999999986206825e+01 0 0 0 +24686 1 4.5136003195049085e+01 7.7475802708355829e+01 1.0499999940703686e+01 0 0 0 +18553 1 4.3452487123474732e+01 7.8037278986209827e+01 1.2250000003170131e+01 0 0 0 +19155 1 4.2891315107612279e+01 7.6379775744554678e+01 1.4000000009837413e+01 0 0 0 +18314 1 1.0571060497010598e+00 7.9410410885668441e+01 1.2249999975522613e+01 0 0 0 +18368 1 3.1035853314357844e+00 8.0492672615226937e+01 1.2250000010007275e+01 0 0 0 +19006 1 1.2264316553767487e+00 8.1045056185996259e+01 1.4000000024191566e+01 0 0 0 +18367 1 3.5610869222218131e+00 8.2098524090409555e+01 1.0499999990637622e+01 0 0 0 +18370 1 4.7485642955119465e+00 7.9884620967043205e+01 1.0499999948625746e+01 0 0 0 +18372 1 6.4095232921933967e+00 7.9317123449095504e+01 1.2249999958455241e+01 0 0 0 +18373 1 5.3078141553570628e+00 8.1549234299483658e+01 1.2249999979509695e+01 0 0 0 +18428 1 9.2228647422975811e+00 8.2075876775886144e+01 1.0499999975278227e+01 0 0 0 +18377 1 8.6590375535544180e+00 8.0416777445929185e+01 1.2249999993827734e+01 0 0 0 +19011 1 6.9829714504005107e+00 8.0980420392549007e+01 1.4000000017152376e+01 0 0 0 +18375 1 1.0342364406889198e+01 7.9856004255416664e+01 1.0500000022782171e+01 0 0 0 +18381 1 1.2026827336509131e+01 7.9294954279813624e+01 1.2250000052425134e+01 0 0 0 +18430 1 1.0904486389182400e+01 8.1513635110251556e+01 1.2250000000485150e+01 0 0 0 +19072 1 1.2587783543442139e+01 8.0952264988157822e+01 1.4000000005272421e+01 0 0 0 +18433 1 1.4832659215469276e+01 8.2048365184590523e+01 1.0500000025483612e+01 0 0 0 +18436 1 1.5955087863138520e+01 7.9829428676960319e+01 1.0500000008908057e+01 0 0 0 +18434 1 1.4271515332698767e+01 8.0390903895462031e+01 1.2250000020449809e+01 0 0 0 +18438 1 1.7638584095568834e+01 7.9267937633036681e+01 1.2249999998152729e+01 0 0 0 +18439 1 1.6516220317498234e+01 8.1486917911308566e+01 1.2250000041088796e+01 0 0 0 +19077 1 1.8199754296269749e+01 8.0925444222305003e+01 1.4000000042734461e+01 0 0 0 +18441 1 2.1566780005406002e+01 7.9802486742372238e+01 1.0500000003666354e+01 0 0 0 +18443 1 1.9883266877066887e+01 8.0363964228999777e+01 1.2250000004881745e+01 0 0 0 +18490 1 2.0444437681667189e+01 8.2021467924804952e+01 1.0500000002618055e+01 0 0 0 +18492 1 2.2127953241035144e+01 8.1459990491581877e+01 1.2249999984291046e+01 0 0 0 +18447 1 2.3250295939192931e+01 7.9241010350549146e+01 1.2249999986657427e+01 0 0 0 +18496 1 2.5494984248152914e+01 8.0337037023389740e+01 1.2249999997802721e+01 0 0 0 +19134 1 2.3811468309061453e+01 8.0898513570120343e+01 1.3999999966413336e+01 0 0 0 +18500 1 2.8862016081879908e+01 7.9214083956558454e+01 1.2249999987736398e+01 0 0 0 +18501 1 2.7739672251554225e+01 8.1433063602266799e+01 1.2250000003142048e+01 0 0 0 +19135 1 2.6056156420990412e+01 8.1994540119370754e+01 1.4000000000240885e+01 0 0 0 +19138 1 2.7178500243297627e+01 7.9775560439746698e+01 1.4000000002754300e+01 0 0 0 +18499 1 2.9423188222182652e+01 8.0871587041629937e+01 1.0499999957283835e+01 0 0 0 +18505 1 3.1106703962639639e+01 8.0310110522873273e+01 1.2249999985283923e+01 0 0 0 +19179 1 3.1667876065765633e+01 8.1967613648143242e+01 1.4000000024819565e+01 0 0 0 +18543 1 3.5034907646073563e+01 8.0844660728382934e+01 1.0499999983516402e+01 0 0 0 +18509 1 3.4473735561502018e+01 7.9187157635523647e+01 1.2249999993675459e+01 0 0 0 +18541 1 3.3351391934716929e+01 8.1406137275082557e+01 1.2249999989994642e+01 0 0 0 +19143 1 3.2790219853139213e+01 7.9748634106184440e+01 1.4000000007315592e+01 0 0 0 +18545 1 3.6718423427889256e+01 8.0283184406153921e+01 1.2249999958282846e+01 0 0 0 +19187 1 3.8401939357863675e+01 7.9721708000519513e+01 1.3999999963319766e+01 0 0 0 +18548 1 4.0646627275267065e+01 8.0817734859038595e+01 1.0500000006127651e+01 0 0 0 +18549 1 4.0085455232471311e+01 7.9160231617664394e+01 1.2249999992965130e+01 0 0 0 +18550 1 3.8963111428155251e+01 8.1379211111650520e+01 1.2249999994334466e+01 0 0 0 +18552 1 4.4013659140141307e+01 7.9694782279421673e+01 1.0499999940890216e+01 0 0 0 +18554 1 4.2330143202556691e+01 8.0256258462792957e+01 1.2249999985884925e+01 0 0 0 +18574 1 4.2891315240279148e+01 8.1913761661254298e+01 1.0499999971204804e+01 0 0 0 +18575 1 4.4574831227689110e+01 8.1352285481325310e+01 1.2249999985228284e+01 0 0 0 +18420 1 2.5187344115968822e+00 8.4301479366587245e+01 1.0500000011534095e+01 0 0 0 +18369 1 1.7224975307259611e+00 8.2644469215623261e+01 1.2250000049252680e+01 0 0 0 +18419 1 1.0571061573587712e+00 8.4944396797910869e+01 1.2250000093757105e+01 0 0 0 +18422 1 4.1395815703378505e+00 8.3742452316536912e+01 1.2249999972159717e+01 0 0 0 +18427 1 6.4095236042882622e+00 8.4851109596962047e+01 1.2250000008735329e+01 0 0 0 +19064 1 5.8404171763436912e+00 8.3196440067589620e+01 1.4000000035847998e+01 0 0 0 +19061 1 4.7485645797410312e+00 8.5418607045696021e+01 1.4000000067999073e+01 0 0 0 +18425 1 8.0950146370627731e+00 8.4293271750539375e+01 1.0499999971014049e+01 0 0 0 +18426 1 7.5397001694437682e+00 8.2639146485533203e+01 1.2250000004071408e+01 0 0 0 +18431 1 9.7824049449332122e+00 8.3733304511264080e+01 1.2250000002030257e+01 0 0 0 +18480 1 1.2026827758144650e+01 8.4828940570025665e+01 1.2249999969664804e+01 0 0 0 +19069 1 1.1466173397056258e+01 8.3171530959276893e+01 1.3999999980617972e+01 0 0 0 +19118 1 1.0342364761623735e+01 8.5389990537959434e+01 1.3999999958858069e+01 0 0 0 +18482 1 1.3710492348795695e+01 8.4267427781603942e+01 1.0500000008490407e+01 0 0 0 +18435 1 1.3149238216068563e+01 8.2609834977836044e+01 1.2249999994749201e+01 0 0 0 +18484 1 1.5393909037349637e+01 8.3705893101943985e+01 1.2250000010509773e+01 0 0 0 +19123 1 1.5955088272553224e+01 8.5363415048857263e+01 1.4000000029392980e+01 0 0 0 +18487 1 1.9322090514009613e+01 8.4240445058346410e+01 1.0500000002372682e+01 0 0 0 +18488 1 1.8760916522027305e+01 8.2582943144402634e+01 1.2250000018202753e+01 0 0 0 +18489 1 1.7638584573145419e+01 8.4801923982318826e+01 1.2250000039355957e+01 0 0 0 +19126 1 1.7077392396304852e+01 8.3144412942094604e+01 1.4000000034853809e+01 0 0 0 +18493 1 2.1005607480395270e+01 8.3678969907180587e+01 1.2250000002227097e+01 0 0 0 +19167 1 2.1566780562102164e+01 8.5336472982489241e+01 1.4000000002448779e+01 0 0 0 +18497 1 2.4372640778889835e+01 8.2556016852784410e+01 1.2250000029358056e+01 0 0 0 +18529 1 2.3250296540293583e+01 8.4774996533554727e+01 1.2249999996545483e+01 0 0 0 +19131 1 2.2689124824500240e+01 8.3117493709361227e+01 1.4000000000388193e+01 0 0 0 +19171 1 2.4933812725017390e+01 8.4213519962884561e+01 1.3999999993717239e+01 0 0 0 +18532 1 2.7178500936795555e+01 8.5309546427565650e+01 1.0499999999909077e+01 0 0 0 +18535 1 2.8300844499034383e+01 8.3090566708599326e+01 1.0499999982621862e+01 0 0 0 +18533 1 2.6617328713809311e+01 8.3652043371039852e+01 1.2250000003592886e+01 0 0 0 +18538 1 2.8862016752020679e+01 8.4748069868027656e+01 1.2250000009460075e+01 0 0 0 +18537 1 2.9984360291778909e+01 8.2529090163972569e+01 1.2249999989820356e+01 0 0 0 +18542 1 3.2229048279535178e+01 8.3625116763239575e+01 1.2250000009026138e+01 0 0 0 +19176 1 3.0545532560930084e+01 8.4186593295327242e+01 1.4000000048580626e+01 0 0 0 +18540 1 3.3912564049110657e+01 8.3063640341139276e+01 1.0499999970074692e+01 0 0 0 +18562 1 3.2790220485936310e+01 8.5282619972700019e+01 1.0499999973571114e+01 0 0 0 +18564 1 3.4473736145485205e+01 8.4721143506209017e+01 1.2249999971294617e+01 0 0 0 +18567 1 3.8401939800728833e+01 8.5255693940569458e+01 1.0499999996451665e+01 0 0 0 +18546 1 3.5596079901621678e+01 8.2502163990763606e+01 1.2249999947366936e+01 0 0 0 +18568 1 3.7840767769985078e+01 8.3598190742768210e+01 1.2249999975993266e+01 0 0 0 +18570 1 3.9524283573379392e+01 8.3036714361411782e+01 1.0499999994057434e+01 0 0 0 +18571 1 4.1768971344047138e+01 8.4132741214031910e+01 1.0499999971070260e+01 0 0 0 +18572 1 4.1207799345351795e+01 8.2475238004568439e+01 1.2249999998189947e+01 0 0 0 +18573 1 4.0085455574965607e+01 8.4694217589941886e+01 1.2249999960809935e+01 0 0 0 +24740 1 4.5136003212862704e+01 8.3009788735496898e+01 1.0499999966016526e+01 0 0 0 +18584 1 4.4013659288366689e+01 8.5228768303542793e+01 1.0499999961280748e+01 0 0 0 +18576 1 4.3452487248419317e+01 8.3571264989438788e+01 1.2250000013419358e+01 0 0 0 +18418 1 1.2264317153908946e+00 8.6579042174861485e+01 1.0500000030644348e+01 0 0 0 +18423 1 3.1035854500249420e+00 8.6026658597164428e+01 1.2250000035816591e+01 0 0 0 +18471 1 1.7224976655110118e+00 8.8178455232922730e+01 1.2250000002899672e+01 0 0 0 +18473 1 5.3078143399760265e+00 8.7083220398871447e+01 1.2250000044816002e+01 0 0 0 +19112 1 3.5610870867533104e+00 8.7632510075253691e+01 1.4000000070320064e+01 0 0 0 +18474 1 6.9829716761420704e+00 8.6514406569006809e+01 1.0499999975660918e+01 0 0 0 +18476 1 8.6590378655764315e+00 8.5950763667494229e+01 1.2249999979493024e+01 0 0 0 +18477 1 7.5397003416775741e+00 8.8173132670335036e+01 1.2249999998055113e+01 0 0 0 +19115 1 9.2228649892818826e+00 8.7609863026649620e+01 1.3999999999326958e+01 0 0 0 +18479 1 1.2587783950888989e+01 8.6486251297060718e+01 1.0500000009575137e+01 0 0 0 +18481 1 1.0904486686306676e+01 8.7047621394724956e+01 1.2249999972664837e+01 0 0 0 +18485 1 1.4271515752493807e+01 8.5924890235140310e+01 1.2250000012819378e+01 0 0 0 +18520 1 1.3149238521767931e+01 8.8143821299608987e+01 1.2249999997090564e+01 0 0 0 +19161 1 1.4832659558635875e+01 8.7582351559729446e+01 1.4000000013418660e+01 0 0 0 +18522 1 1.6516220764490342e+01 8.7020904271811119e+01 1.2250000011125719e+01 0 0 0 +18523 1 1.8199754801225957e+01 8.6459430583035527e+01 1.0499999998075834e+01 0 0 0 +18526 1 1.8760916989938085e+01 8.8116929490233943e+01 1.2250000028088383e+01 0 0 0 +19164 1 2.0444438227764959e+01 8.7555454213304117e+01 1.4000000021880092e+01 0 0 0 +18525 1 1.9883267397125746e+01 8.5897950571806334e+01 1.2250000022966612e+01 0 0 0 +18530 1 2.2127953831809343e+01 8.6993976755708829e+01 1.2250000020706798e+01 0 0 0 +18528 1 2.3811468965635097e+01 8.6432499760173954e+01 1.0500000030694462e+01 0 0 0 +18534 1 2.5494984941503748e+01 8.5871023081474206e+01 1.2249999990326620e+01 0 0 0 +18555 1 2.4372641493121904e+01 8.8090003019194924e+01 1.2249999972743662e+01 0 0 0 +18556 1 2.6056157164542832e+01 8.7528526208659443e+01 1.0500000010704202e+01 0 0 0 +18557 1 2.7739673034440791e+01 8.6967049574439770e+01 1.2249999988170476e+01 0 0 0 +19198 1 2.9423189002997482e+01 8.6405572964923650e+01 1.4000000035739752e+01 0 0 0 +18559 1 3.1667876832338997e+01 8.7501599559890280e+01 1.0499999970917781e+01 0 0 0 +18560 1 3.1106704680242355e+01 8.5844096412880205e+01 1.2249999993447187e+01 0 0 0 +18561 1 2.9984361105302458e+01 8.8063076112428348e+01 1.2250000000624498e+01 0 0 0 +18565 1 3.3351392656992509e+01 8.6940123185329270e+01 1.2249999973081378e+01 0 0 0 +18578 1 3.7279596233337664e+01 8.7474673551404578e+01 1.0500000013187753e+01 0 0 0 +18569 1 3.6718424003337269e+01 8.5817170338677826e+01 1.2249999982829785e+01 0 0 0 +18577 1 3.5596080610666746e+01 8.8036149933594501e+01 1.2249999997266679e+01 0 0 0 +18579 1 3.8963111906562460e+01 8.6913197091580713e+01 1.2249999969217704e+01 0 0 0 +18580 1 4.0646627657757705e+01 8.6351720868020209e+01 1.0499999976397064e+01 0 0 0 +18583 1 4.1207799784723619e+01 8.8009224027257275e+01 1.2249999961188930e+01 0 0 0 +18581 1 4.2891315508839185e+01 8.7447747687527041e+01 1.0499999957359087e+01 0 0 0 +18582 1 4.2330143454364460e+01 8.5790244492256889e+01 1.2249999988038892e+01 0 0 0 +18585 1 4.4574831394513865e+01 8.6886271492853254e+01 1.2249999985715100e+01 0 0 0 +18588 1 1.0571060770716478e+00 4.6206498854941003e+01 1.5749999909423760e+01 0 0 0 +18594 1 3.1035849447985959e+00 4.7288759897275156e+01 1.5749999954484482e+01 0 0 0 +16036 1 4.7485639004637239e+00 4.6680708107527714e+01 2.6294749488897651e-08 0 0 0 +18596 1 4.7485640036868029e+00 4.6680708087694015e+01 1.3999999969609711e+01 0 0 0 +18590 1 4.1395809676093824e+00 4.5004553841918479e+01 1.5749999951901859e+01 0 0 0 +18598 1 6.4095229666589093e+00 4.6113210317000238e+01 1.5750000041086578e+01 0 0 0 +16029 1 5.8404165210584633e+00 4.4458541315054298e+01 6.0855285255456693e-08 0 0 0 +18589 1 5.8404166078474669e+00 4.4458541271463758e+01 1.4000000006398979e+01 0 0 0 +18603 1 8.6590370607090357e+00 4.7212863625085006e+01 1.5750000074367154e+01 0 0 0 +16041 1 1.0342363775219713e+01 4.6652090241738925e+01 5.9524481343942170e-08 0 0 0 +18601 1 1.0342363785105340e+01 4.6652090197607414e+01 1.4000000092605715e+01 0 0 0 +18602 1 9.7824040783543680e+00 4.4995404566859449e+01 1.5750000081475132e+01 0 0 0 +18606 1 1.2026826566743026e+01 4.6091040025618248e+01 1.5750000053630430e+01 0 0 0 +16044 1 1.1466172388877862e+01 4.4433630769336574e+01 5.4722580244970231e-08 0 0 0 +18604 1 1.1466172362408097e+01 4.4433630727469392e+01 1.4000000068387374e+01 0 0 0 +16067 1 1.5955086788319571e+01 4.6625513742131275e+01 1.7499999998492033e+01 0 0 -1 +18627 1 1.5955086727430444e+01 4.6625513828956684e+01 1.4000000004106505e+01 0 0 0 +18608 1 1.5393907606756127e+01 4.4967992178978598e+01 1.5750000002560906e+01 0 0 0 +18625 1 1.4271514315666066e+01 4.7186989155084511e+01 1.5750000004605582e+01 0 0 0 +18629 1 1.7638583026331649e+01 4.6064022607932593e+01 1.5749999980745633e+01 0 0 0 +16047 1 1.7077390986217772e+01 4.4406511839370687e+01 1.7499999969798605e+01 0 0 -1 +18607 1 1.7077390943025318e+01 4.4406511895593091e+01 1.3999999999463499e+01 0 0 0 +16072 1 2.1566778976237114e+01 4.6598571443712679e+01 9.7382333308360103e-09 0 0 0 +18632 1 2.1566779043620734e+01 4.6598571471040522e+01 1.3999999993138312e+01 0 0 0 +18633 1 2.1005606067693034e+01 4.4941068486772345e+01 1.5749999995626277e+01 0 0 0 +18634 1 1.9883265795363325e+01 4.7160048936937393e+01 1.5749999998193614e+01 0 0 0 +16076 1 2.4933811292437788e+01 4.5475618711175677e+01 6.5448794828171231e-08 0 0 0 +18636 1 2.4933811329726250e+01 4.5475618677606271e+01 1.4000000044481002e+01 0 0 0 +18637 1 2.3250295038684015e+01 4.6037095110370529e+01 1.5750000034584920e+01 0 0 0 +18670 1 2.5494983334279269e+01 4.7133121866899792e+01 1.5750000056736722e+01 0 0 0 +16075 1 2.2689123448127692e+01 4.4379592351899767e+01 3.9096917703318468e-08 0 0 0 +18635 1 2.2689123487793065e+01 4.4379592340204873e+01 1.4000000007496032e+01 0 0 0 +18639 1 2.6617327416536408e+01 4.4914142150805262e+01 1.5750000076597948e+01 0 0 0 +18674 1 2.8862015416054639e+01 4.6010168712056476e+01 1.5750000073688376e+01 0 0 0 +16116 1 3.0545531440086080e+01 4.5448692019760649e+01 4.5898996603455089e-08 0 0 0 +18676 1 3.0545531380221014e+01 4.5448691975668773e+01 1.4000000043367082e+01 0 0 0 +18678 1 3.2229047449629213e+01 4.4887215330542148e+01 1.5750000017057401e+01 0 0 0 +18679 1 3.1106703393570040e+01 4.7106195164841694e+01 1.5750000037136088e+01 0 0 0 +18682 1 3.4473735477759348e+01 4.5983241975866868e+01 1.5749999994241440e+01 0 0 0 +16121 1 3.6157251578980315e+01 4.5421765537481704e+01 1.7499999993229373e+01 0 0 -1 +16170 1 3.8401939483786506e+01 4.6517792512058136e+01 8.9902023603372072e-09 0 0 0 +18684 1 3.7840767663030185e+01 4.4860289276673640e+01 1.5749999992797576e+01 0 0 0 +18728 1 3.6718423433796538e+01 4.7079268836537949e+01 1.5749999988489872e+01 0 0 0 +16174 1 4.1768971580026992e+01 4.5394840035221819e+01 1.5438416767210583e-08 0 0 0 +18732 1 4.0085455542102700e+01 4.5956316302095033e+01 1.5750000007057311e+01 0 0 0 +16123 1 3.9524283705825624e+01 4.4298813022475599e+01 1.7499999998530583e+01 0 0 -1 +16175 1 4.4013659573753614e+01 4.6490867175910765e+01 1.8932333034626936e-08 0 0 0 +18736 1 4.3452487653155067e+01 4.4833363868888213e+01 1.5750000040261904e+01 0 0 0 +18737 1 4.2330143516095269e+01 4.7052343384735266e+01 1.5750000024204644e+01 0 0 0 +18595 1 1.7224970806018176e+00 4.9440556458610715e+01 1.5749999963464102e+01 0 0 0 +16033 1 3.5610863981664620e+00 4.8894611025457969e+01 1.7499999991745373e+01 0 0 -1 +18593 1 3.5610865035292369e+00 4.8894611028331745e+01 1.3999999958576094e+01 0 0 0 +18599 1 5.3078137712885844e+00 4.8345320990471279e+01 1.5750000021519623e+01 0 0 0 +18613 1 4.1395809737561020e+00 5.0538538824333699e+01 1.5750000002082789e+01 0 0 0 +16059 1 9.2228640396450885e+00 4.8871962579201039e+01 8.0147124492668809e-08 0 0 0 +18619 1 9.2228641164700971e+00 4.8871962513216694e+01 1.4000000066835687e+01 0 0 0 +18617 1 7.5396996031788523e+00 4.9435232455633184e+01 1.5750000049013991e+01 0 0 0 +18622 1 9.7824041775862849e+00 5.0529389873423860e+01 1.5750000064827693e+01 0 0 0 +18621 1 1.0904485602160838e+01 4.8309720683869067e+01 1.5750000073843999e+01 0 0 0 +16064 1 1.4832658118101973e+01 4.8844450136526092e+01 2.2798865018103243e-09 0 0 0 +18624 1 1.4832658108936192e+01 4.8844450159830352e+01 1.4000000042262210e+01 0 0 0 +18626 1 1.3149237187660988e+01 4.9405920048095503e+01 1.5750000052262044e+01 0 0 0 +18658 1 1.5393907818913899e+01 5.0501977730592060e+01 1.5749999994498159e+01 0 0 0 +18630 1 1.6516219154436428e+01 4.8283002767979852e+01 1.5749999967811183e+01 0 0 0 +18662 1 1.8760915302693228e+01 4.9379027642545282e+01 1.5749999970345129e+01 0 0 0 +16104 1 2.0444436502122652e+01 4.8817552445595162e+01 3.0486724256206799e-09 0 0 0 +18664 1 2.0444436521089987e+01 4.8817552478167663e+01 1.3999999993321355e+01 0 0 0 +18666 1 2.2127952155087890e+01 4.8256075136208999e+01 1.5749999995842472e+01 0 0 0 +18667 1 2.1005606264382653e+01 5.0475054338860964e+01 1.5750000003104322e+01 0 0 0 +18671 1 2.4372639635455023e+01 4.9352101622117559e+01 1.5750000030810183e+01 0 0 0 +16158 1 2.8300843480265687e+01 4.9886651777654180e+01 5.0180673838440271e-08 0 0 0 +18675 1 2.7739671346035532e+01 4.8229148530664752e+01 1.5750000067372140e+01 0 0 0 +18716 1 2.6617327516230262e+01 5.0448128365050295e+01 1.5750000042950091e+01 0 0 0 +18718 1 2.8300843461941014e+01 4.9886651722278962e+01 1.4000000043270020e+01 0 0 0 +16113 1 2.9423187492914625e+01 4.7667671884588117e+01 4.2610881934024292e-08 0 0 0 +18673 1 2.9423187452771533e+01 4.7667671862433934e+01 1.4000000054188655e+01 0 0 0 +18720 1 2.9984359406289880e+01 4.9325175067659416e+01 1.5750000029657810e+01 0 0 0 +18725 1 3.2229047531762021e+01 5.0421201483730712e+01 1.5749999996147796e+01 0 0 0 +16163 1 3.3912563563727915e+01 4.9859724935441704e+01 1.7499999991471892e+01 0 0 -1 +16166 1 3.5034907451594982e+01 4.7640745162966901e+01 1.7499999980190708e+01 0 0 -1 +18724 1 3.3351391534854976e+01 4.8202221808502877e+01 1.5750000003730719e+01 0 0 0 +16167 1 3.7279595478878811e+01 4.8736772113788959e+01 1.7499999969778148e+01 0 0 -1 +18729 1 3.5596079632892653e+01 4.9298248468978500e+01 1.5749999989384220e+01 0 0 0 +18782 1 3.7840767464815322e+01 5.0394275343756775e+01 1.5749999990498210e+01 0 0 0 +16171 1 4.0646627460666679e+01 4.7613819627996733e+01 2.1712118325467600e-08 0 0 0 +16224 1 3.9524283410976572e+01 4.9832799085039767e+01 1.7499999996794905e+01 0 0 -1 +18733 1 3.8963111413329827e+01 4.8175295738828815e+01 1.5749999990827741e+01 0 0 0 +18786 1 4.1207799378706611e+01 4.9271322874343902e+01 1.5750000014163225e+01 0 0 0 +16228 1 4.2891315405979931e+01 4.8709846600467621e+01 1.9097434744708153e-08 0 0 0 +18789 1 4.4574831531405593e+01 4.8148370436091540e+01 1.5750000030087804e+01 0 0 0 +18790 1 4.3452487327597112e+01 5.0367349955550019e+01 1.5750000013352681e+01 0 0 0 +16049 1 1.2264313564209937e+00 5.3375128735833478e+01 1.7499999988914595e+01 0 0 -1 +16051 1 2.5187338183559791e+00 5.1097566141932575e+01 1.7499999996227331e+01 0 0 -1 +18609 1 1.2264313657067789e+00 5.3375128838147376e+01 1.3999999980538949e+01 0 0 0 +18611 1 2.5187338411363869e+00 5.1097566178729402e+01 1.3999999985937540e+01 0 0 0 +18610 1 1.0571059454384120e+00 5.1740483814343499e+01 1.5749999947571094e+01 0 0 0 +18614 1 3.1035849471551673e+00 5.2822744831854187e+01 1.5749999993263259e+01 0 0 0 +18618 1 6.4095229609899356e+00 5.1647195395317205e+01 1.5750000017097589e+01 0 0 0 +18646 1 5.3078136891931926e+00 5.3879305981310921e+01 1.5750000001186391e+01 0 0 0 +16056 1 8.0950139108667045e+00 5.1089357341183444e+01 6.5337989241243122e-08 0 0 0 +16088 1 6.9829709179953436e+00 5.3310491929047480e+01 2.2524098142184812e-08 0 0 0 +18616 1 8.0950139919648390e+00 5.1089357275265691e+01 1.4000000049939947e+01 0 0 0 +18648 1 6.9829709941684417e+00 5.3310491859477310e+01 1.4000000051439946e+01 0 0 0 +18650 1 8.6590370286303493e+00 5.2746848810966817e+01 1.5750000052470956e+01 0 0 0 +16093 1 1.2587782786929806e+01 5.3282335808673011e+01 4.1088135560585215e-08 0 0 0 +18653 1 1.2587782794551911e+01 5.3282335820554088e+01 1.4000000018705752e+01 0 0 0 +18654 1 1.2026826721517565e+01 5.1625025439082172e+01 1.5750000046563509e+01 0 0 0 +18655 1 1.0904485641120553e+01 5.3843706011715540e+01 1.5750000046026640e+01 0 0 0 +16096 1 1.3710491206046097e+01 5.1063512509993551e+01 2.7903897859005156e-08 0 0 0 +18656 1 1.3710491186957924e+01 5.1063512530144600e+01 1.4000000017853170e+01 0 0 0 +18659 1 1.4271514503092989e+01 5.2720974632822347e+01 1.5749999993309022e+01 0 0 0 +16101 1 1.9322089225515953e+01 5.1036529359519207e+01 8.4986204740289395e-09 0 0 0 +18661 1 1.9322089207758328e+01 5.1036529383261708e+01 1.3999999992882016e+01 0 0 0 +16146 1 1.8199753405017393e+01 5.3255514616942357e+01 5.2745185996627697e-09 0 0 0 +18663 1 1.7638583257429563e+01 5.1598008270008400e+01 1.5749999985146433e+01 0 0 0 +18704 1 1.6516219354667065e+01 5.3816988330796043e+01 1.5749999984644532e+01 0 0 0 +18706 1 1.8199753420792199e+01 5.3255514682486648e+01 1.3999999987974416e+01 0 0 0 +18708 1 1.9883266050594461e+01 5.2694034736585060e+01 1.5749999982846942e+01 0 0 0 +18713 1 2.2127952375678149e+01 5.3790061055179827e+01 1.5750000005893577e+01 0 0 0 +16151 1 2.3811467484759710e+01 5.3228584329358796e+01 2.7621918974318760e-08 0 0 0 +18711 1 2.3811467500523349e+01 5.3228584359523644e+01 1.4000000022949685e+01 0 0 0 +18712 1 2.3250295207046012e+01 5.1571081099121201e+01 1.5750000032758319e+01 0 0 0 +18717 1 2.5494983507332837e+01 5.2667107950941507e+01 1.5750000059549912e+01 0 0 0 +16155 1 2.7178499617195190e+01 5.2105631467500416e+01 5.6080988741769033e-08 0 0 0 +18715 1 2.7178499616985441e+01 5.2105631433351626e+01 1.4000000045185018e+01 0 0 0 +18721 1 2.8862015564016421e+01 5.1544154943370792e+01 1.5750000045294431e+01 0 0 0 +18770 1 2.7739671503288161e+01 5.3763134662916485e+01 1.5750000038284053e+01 0 0 0 +18774 1 3.1106703549930650e+01 5.2640181349284738e+01 1.5750000024875725e+01 0 0 0 +16217 1 3.5034907535869820e+01 5.3174731274065088e+01 1.7499999986078276e+01 0 0 -1 +16216 1 3.2790219634775781e+01 5.2078704753149594e+01 9.3729610739501368e-09 0 0 0 +18778 1 3.4473735544770769e+01 5.1517228122483729e+01 1.5749999963764465e+01 0 0 0 +18779 1 3.3351391660370304e+01 5.3736207881524003e+01 1.5750000001969996e+01 0 0 0 +16220 1 3.6157251530046352e+01 5.0955751650469765e+01 1.7499999976686681e+01 0 0 -1 +16221 1 3.8401939370157450e+01 5.2051778634076399e+01 1.7499999989973890e+01 0 0 -1 +18783 1 3.6718423411047759e+01 5.2613254950807978e+01 1.5749999967400727e+01 0 0 0 +16279 1 4.0646627228573543e+01 5.3147805733023731e+01 1.7499999978475991e+01 0 0 -1 +16225 1 4.1768971238978587e+01 5.0928826101890508e+01 5.4315840714025398e-09 0 0 0 +18787 1 4.0085455293173474e+01 5.1490302395486005e+01 1.5749999992858852e+01 0 0 0 +18837 1 3.8963111316396073e+01 5.3709281894635332e+01 1.5749999989130872e+01 0 0 0 +16283 1 4.4013659270301019e+01 5.2024853222972261e+01 3.7446383771566616e-09 0 0 0 +18841 1 4.2330143240811296e+01 5.2586329435296712e+01 1.5749999995083176e+01 0 0 0 +18844 1 4.4574831314656024e+01 5.3682356405442839e+01 1.5750000016441369e+01 0 0 0 +18642 1 1.7224969976030822e+00 5.4974541279561841e+01 1.5749999999251665e+01 0 0 0 +16085 1 5.8404164629338515e+00 5.5526511442342382e+01 1.6851533501949234e-08 0 0 0 +18645 1 5.8404164986845730e+00 5.5526511378776803e+01 1.4000000029884015e+01 0 0 0 +18647 1 4.1395808678419543e+00 5.6072523772728736e+01 1.5749999977683037e+01 0 0 0 +18651 1 7.5396995293744506e+00 5.4969217624530849e+01 1.5750000060686137e+01 0 0 0 +16138 1 1.1466172537211982e+01 5.5501601495134665e+01 3.7332533509015775e-08 0 0 0 +18696 1 9.7824041287749921e+00 5.6063375130356029e+01 1.5750000049131168e+01 0 0 0 +18698 1 1.1466172524835999e+01 5.5501601462511083e+01 1.4000000018886579e+01 0 0 0 +18700 1 1.3149237278116225e+01 5.4939905463174952e+01 1.5749999995458664e+01 0 0 0 +18705 1 1.5393907951179779e+01 5.6035963278463562e+01 1.5749999981892620e+01 0 0 0 +16143 1 1.7077391350208664e+01 5.5474483102904387e+01 1.7499999979960897e+01 0 0 -1 +18703 1 1.7077391339173207e+01 5.5474483165065763e+01 1.3999999979233126e+01 0 0 0 +18709 1 1.8760915529978828e+01 5.4913013388166888e+01 1.5749999986486941e+01 0 0 0 +18762 1 2.1005606443118428e+01 5.6009040193898841e+01 1.5750000006965577e+01 0 0 0 +16205 1 2.4933811626812766e+01 5.6543590779574281e+01 5.7466834846309212e-08 0 0 0 +18765 1 2.4933811657192894e+01 5.6543590781128451e+01 1.4000000033617765e+01 0 0 0 +16204 1 2.2689123812138394e+01 5.5447564245117100e+01 4.1497170144566553e-08 0 0 0 +18764 1 2.2689123815282130e+01 5.5447564242586445e+01 1.4000000018749308e+01 0 0 0 +18766 1 2.4372639858071039e+01 5.4886087642062165e+01 1.5750000041867086e+01 0 0 0 +16208 1 2.6056155596855426e+01 5.4324611150362784e+01 4.5773397516768455e-08 0 0 0 +18768 1 2.6056155609963135e+01 5.4324611166355290e+01 1.4000000043044707e+01 0 0 0 +18771 1 2.6617327719666015e+01 5.5982114379903749e+01 1.5750000042347120e+01 0 0 0 +16213 1 3.1667875585618773e+01 5.4297684441110171e+01 1.7829730580842806e-08 0 0 0 +16267 1 3.0545531698139428e+01 5.6516664256888362e+01 3.8368252575082806e-08 0 0 0 +18773 1 3.1667875530925109e+01 5.4297684427614961e+01 1.4000000004959798e+01 0 0 0 +18775 1 2.9984359593232004e+01 5.4859161152975844e+01 1.5750000022715673e+01 0 0 0 +18827 1 3.0545531666828865e+01 5.6516664195214396e+01 1.4000000020342922e+01 0 0 0 +18829 1 3.2229047663969418e+01 5.5955187535971874e+01 1.5749999992790070e+01 0 0 0 +16272 1 3.6157251541397166e+01 5.6489737693717409e+01 1.0311048015410051e-08 0 0 0 +16275 1 3.7279595465804803e+01 5.4270758243793708e+01 1.7499999995292239e+01 0 0 -1 +18833 1 3.5596079644628475e+01 5.4832234536151887e+01 1.5749999982788367e+01 0 0 0 +18838 1 3.7840767472232443e+01 5.5928261449020937e+01 1.5749999973170853e+01 0 0 0 +16276 1 3.9524283351153770e+01 5.5366785193598069e+01 1.7499999955881336e+01 0 0 -1 +16334 1 4.1768971159606203e+01 5.6462812143868625e+01 1.7499999977905329e+01 0 0 -1 +18842 1 4.1207799229139958e+01 5.4805308948848470e+01 1.5749999993227519e+01 0 0 0 +16280 1 4.2891315224700485e+01 5.4243832614643139e+01 1.7499999986743994e+01 0 0 -1 +22455 1 4.5136003274781174e+01 5.5339859561440605e+01 3.8998919649202435e-09 0 0 0 +18896 1 4.3452487195218268e+01 5.5901335908360466e+01 1.5750000014180678e+01 0 0 0 +18643 1 1.0571058982182133e+00 5.7274468616046569e+01 1.5750000026538274e+01 0 0 0 +18688 1 3.1035848655048821e+00 5.8356729803455316e+01 1.5750000004889111e+01 0 0 0 +16127 1 3.5610862141161657e+00 5.9962581001638064e+01 1.7499999997692864e+01 0 0 -1 +16130 1 4.7485637570120369e+00 5.7748678134573495e+01 1.2643994296013261e-08 0 0 0 +18687 1 3.5610862297406505e+00 5.9962580973981012e+01 1.4000000011625092e+01 0 0 0 +18690 1 4.7485637613337106e+00 5.7748678099437704e+01 1.4000000010924198e+01 0 0 0 +18692 1 6.4095228133484206e+00 5.7181180509483085e+01 1.5750000047798499e+01 0 0 0 +18693 1 5.3078135020220492e+00 5.9413291152787338e+01 1.5750000033796288e+01 0 0 0 +16188 1 9.2228639137245416e+00 5.9939933144254475e+01 3.7654530160580180e-08 0 0 0 +18697 1 8.6590369309381163e+00 5.8280834103174776e+01 1.5750000056635761e+01 0 0 0 +18748 1 9.2228639063825568e+00 5.9939933108272427e+01 1.4000000033836079e+01 0 0 0 +16135 1 1.0342363795555116e+01 5.7720060860197201e+01 3.0522297578272628e-08 0 0 0 +18695 1 1.0342363779637669e+01 5.7720060823272817e+01 1.4000000043090163e+01 0 0 0 +18701 1 1.2026826725891995e+01 5.7159010791109907e+01 1.5750000022227358e+01 0 0 0 +18750 1 1.0904485595648783e+01 5.9377691380812713e+01 1.5750000054369345e+01 0 0 0 +16193 1 1.4832658348252178e+01 5.9912421208670260e+01 1.7499999974435600e+01 0 0 -1 +16196 1 1.5955087114232699e+01 5.7693484906172912e+01 1.7499999979336515e+01 0 0 -1 +18753 1 1.4832658340006034e+01 5.9912421250490539e+01 1.3999999992518793e+01 0 0 0 +18754 1 1.4271514587969540e+01 5.8254960139784330e+01 1.5749999978304702e+01 0 0 0 +18756 1 1.5955087099303398e+01 5.7693484984497438e+01 1.3999999971692297e+01 0 0 0 +18758 1 1.7638583404683480e+01 5.7131993946432736e+01 1.5749999975344528e+01 0 0 0 +18759 1 1.6516219478501455e+01 5.9350974005959905e+01 1.5749999953707437e+01 0 0 0 +16201 1 2.1566779353973711e+01 5.7666543175058194e+01 1.7499999998176893e+01 0 0 -1 +16255 1 2.0444436847029436e+01 5.9885524057364165e+01 1.7499999993355182e+01 0 0 -1 +18761 1 2.1566779396737232e+01 5.7666543210651859e+01 1.4000000018221760e+01 0 0 0 +18763 1 1.9883266174050451e+01 5.8228020508109303e+01 1.5749999996069612e+01 0 0 0 +18815 1 2.0444436870194949e+01 5.9885524090500603e+01 1.3999999993286558e+01 0 0 0 +18817 1 2.2127952498241850e+01 5.9324046886158314e+01 1.5750000013640678e+01 0 0 0 +18767 1 2.3250295387985229e+01 5.7105067035657022e+01 1.5750000038927469e+01 0 0 0 +18821 1 2.5494983648718623e+01 5.8201093907224397e+01 1.5750000031176880e+01 0 0 0 +18825 1 2.8862015707197560e+01 5.7078140917851108e+01 1.5750000048350531e+01 0 0 0 +18826 1 2.7739671628112241e+01 5.9297120575329231e+01 1.5750000041427043e+01 0 0 0 +16264 1 2.9423187773627241e+01 5.8735643976785937e+01 3.0573925613452957e-08 0 0 0 +18824 1 2.9423187734807925e+01 5.8735643955433567e+01 1.4000000029932311e+01 0 0 0 +18830 1 3.1106703658237482e+01 5.8174167269663670e+01 1.5750000020482018e+01 0 0 0 +16326 1 3.5034907516701111e+01 5.8708717260548319e+01 1.7499999989601267e+01 0 0 -1 +18834 1 3.4473735576958831e+01 5.7051214108358359e+01 1.5749999980126693e+01 0 0 0 +18884 1 3.3351391683879356e+01 5.9270193862530540e+01 1.5749999991325589e+01 0 0 0 +16327 1 3.7279595384086932e+01 5.9804744211881072e+01 1.7499999948092086e+01 0 0 -1 +16330 1 3.8401939291519611e+01 5.7585764676448342e+01 1.7499999979259151e+01 0 0 -1 +18888 1 3.6718423366039850e+01 5.8147240987801574e+01 1.5749999986525111e+01 0 0 0 +16331 1 4.0646627161714491e+01 5.8681791686078121e+01 4.7500456901161670e-09 0 0 0 +18892 1 4.0085455195551802e+01 5.7024288450391438e+01 1.5749999985482196e+01 0 0 0 +18893 1 3.8963111189887137e+01 5.9243267843132145e+01 1.5749999976172846e+01 0 0 0 +16388 1 4.2891315130035714e+01 5.9777818437587243e+01 1.7499999997082284e+01 0 0 -1 +16335 1 4.4013659174132059e+01 5.7558839092891617e+01 1.7499999991226936e+01 0 0 -1 +18897 1 4.2330143169831800e+01 5.8120315374564456e+01 1.5750000015223163e+01 0 0 0 +18949 1 4.4574831224939416e+01 5.9216342180750956e+01 1.5750000051094025e+01 0 0 0 +16180 1 2.5187337108614090e+00 6.2165536098867513e+01 2.1418909312842516e-08 0 0 0 +18689 1 1.7224969224539481e+00 6.0508526205355608e+01 1.5750000022974506e+01 0 0 0 +18739 1 1.0571059191735399e+00 6.2808453653873165e+01 1.5749999998806327e+01 0 0 0 +18740 1 2.5187336691683444e+00 6.2165536127853201e+01 1.4000000023923535e+01 0 0 0 +18742 1 4.1395807463122436e+00 6.1606508971668966e+01 1.5750000033128480e+01 0 0 0 +18747 1 6.4095226287643703e+00 6.2715165907205154e+01 1.5750000025051721e+01 0 0 0 +16185 1 8.0950136562885842e+00 6.2157327927953382e+01 5.6629620104331480e-08 0 0 0 +18745 1 8.0950136721915182e+00 6.2157327850798360e+01 1.4000000016713194e+01 0 0 0 +18746 1 7.5396993326750534e+00 6.0503202915372526e+01 1.5750000036205055e+01 0 0 0 +18751 1 9.7824039975803299e+00 6.1597360545342156e+01 1.5750000057159442e+01 0 0 0 +18805 1 1.2026826677454697e+01 6.2692996324319019e+01 1.5750000052713624e+01 0 0 0 +16247 1 1.3710491293588351e+01 6.2131483538915994e+01 1.7499999978742409e+01 0 0 -1 +18755 1 1.3149237297220166e+01 6.0473890971565723e+01 1.5750000031051785e+01 0 0 0 +18807 1 1.3710491258830267e+01 6.2131483578492890e+01 1.4000000013777358e+01 0 0 0 +18809 1 1.5393908017411736e+01 6.1569948920932966e+01 1.5749999988087875e+01 0 0 0 +16252 1 1.9322089491826613e+01 6.2104500877841318e+01 1.7499999977711575e+01 0 0 -1 +18812 1 1.9322089497890925e+01 6.2104500921334115e+01 1.3999999981931264e+01 0 0 0 +18813 1 1.8760915643339906e+01 6.0446999131858085e+01 1.5749999964304566e+01 0 0 0 +18814 1 1.7638583504562163e+01 6.2665979690861207e+01 1.5749999978469466e+01 0 0 0 +18818 1 2.1005606552657945e+01 6.1543025968382047e+01 1.5750000008219669e+01 0 0 0 +18822 1 2.4372639947008949e+01 6.0420073472925878e+01 1.5750000006359825e+01 0 0 0 +18872 1 2.3250295457826834e+01 6.2639052801693069e+01 1.5749999997544155e+01 0 0 0 +16315 1 2.7178499757789865e+01 6.3173603186296695e+01 3.7196262070438024e-08 0 0 0 +16318 1 2.8300843701085970e+01 6.0954623690401952e+01 3.9180584110454220e-08 0 0 0 +18875 1 2.7178499786705984e+01 6.3173603150305141e+01 1.4000000015858840e+01 0 0 0 +18878 1 2.8300843705240563e+01 6.0954623635847234e+01 1.4000000037320651e+01 0 0 0 +18876 1 2.6617327743056858e+01 6.1516100203082075e+01 1.5750000031448003e+01 0 0 0 +18881 1 2.8862015726303703e+01 6.2612126742539346e+01 1.5750000030381184e+01 0 0 0 +18880 1 2.9984359635593204e+01 6.0393147042177070e+01 1.5750000009302020e+01 0 0 0 +18885 1 3.2229047648966990e+01 6.1489173428354562e+01 1.5749999972303536e+01 0 0 0 +16323 1 3.3912563631255615e+01 6.0927696953900501e+01 1.7499999987548399e+01 0 0 -1 +16376 1 3.2790219656500966e+01 6.3146676653986674e+01 1.7499999978922400e+01 0 0 -1 +18938 1 3.4473735517357532e+01 6.2585200116437115e+01 1.5749999954444315e+01 0 0 0 +16380 1 3.6157251443910909e+01 6.2023723688707200e+01 1.7499999958159041e+01 0 0 -1 +16381 1 3.8401939202816671e+01 6.3119750577826480e+01 1.7499999977014873e+01 0 0 -1 +18889 1 3.5596079630167054e+01 6.0366220541537118e+01 1.5749999971302969e+01 0 0 0 +18942 1 3.7840767315069321e+01 6.1462247390500096e+01 1.5749999972507153e+01 0 0 0 +16384 1 3.9524283219502074e+01 6.0900771086066214e+01 5.4696052131930628e-09 0 0 0 +16385 1 4.1768971047787332e+01 6.1996797884374260e+01 7.7941813003690186e-09 0 0 0 +18946 1 4.1207799148137248e+01 6.0339294818349707e+01 1.5750000005539681e+01 0 0 0 +18947 1 4.0085455116789852e+01 6.2558274283860698e+01 1.5749999981732293e+01 0 0 0 +16443 1 4.4013659122080696e+01 6.3092824800235434e+01 5.3879634975828594e-08 0 0 0 +22500 1 4.5136003220420605e+01 6.0873845284549596e+01 4.6166189093810317e-08 0 0 0 +18950 1 4.3452487102781014e+01 6.1435321638159046e+01 1.5750000021889020e+01 0 0 0 +16178 1 1.2264313268107501e+00 6.4443098748733462e+01 1.5629673555395129e-08 0 0 0 +18738 1 1.2264313237457125e+00 6.4443098820694530e+01 1.4000000023337027e+01 0 0 0 +18743 1 3.1035847726693158e+00 6.3890715116859816e+01 1.5750000016859218e+01 0 0 0 +18793 1 1.7224968393390701e+00 6.6042511562037831e+01 1.5750000028664189e+01 0 0 0 +18797 1 5.3078134110837256e+00 6.4947276584904941e+01 1.5749999994766908e+01 0 0 0 +16239 1 6.9829706404189693e+00 6.4378462601469280e+01 1.8965113923741228e-08 0 0 0 +18799 1 6.9829706626938677e+00 6.4378462552475170e+01 1.4000000012775439e+01 0 0 0 +18801 1 8.6590367709189859e+00 6.3814819555252392e+01 1.5750000055321815e+01 0 0 0 +18802 1 7.5396992805711225e+00 6.6037188467933618e+01 1.5750000054732618e+01 0 0 0 +16244 1 1.2587782751072531e+01 6.4350306837575033e+01 1.7616937242337372e-08 0 0 0 +18804 1 1.2587782744197071e+01 6.4350306876790853e+01 1.4000000026481796e+01 0 0 0 +18806 1 1.0904485501280954e+01 6.4911676962549933e+01 1.5750000054662584e+01 0 0 0 +18810 1 1.4271514562665384e+01 6.3788945790576989e+01 1.5750000003885921e+01 0 0 0 +18860 1 1.3149237245628902e+01 6.6007876669862981e+01 1.5750000009115213e+01 0 0 0 +16306 1 1.8199753592587157e+01 6.4323486093303089e+01 1.7499999986264758e+01 0 0 -1 +18864 1 1.6516219493559582e+01 6.4884959736872659e+01 1.5750000005162807e+01 0 0 0 +18866 1 1.8199753624601417e+01 6.4323486154291643e+01 1.3999999976871903e+01 0 0 0 +18869 1 1.8760915690379345e+01 6.5980984905512017e+01 1.5750000003419164e+01 0 0 0 +18868 1 1.9883266274822947e+01 6.3762006278318019e+01 1.5749999983980254e+01 0 0 0 +18873 1 2.2127952563678924e+01 6.4858032617024861e+01 1.5749999967458752e+01 0 0 0 +16311 1 2.3811467644822063e+01 6.4296555928191367e+01 4.6432155897946359e-09 0 0 0 +18871 1 2.3811467673685318e+01 6.4296555963729674e+01 1.3999999986842672e+01 0 0 0 +18877 1 2.5494983670485439e+01 6.3735079610039620e+01 1.5750000029402210e+01 0 0 0 +18926 1 2.4372639952184315e+01 6.5954059179978117e+01 1.5750000013589466e+01 0 0 0 +16368 1 2.6056155647610748e+01 6.5392582712400369e+01 3.0280588703135436e-08 0 0 0 +18928 1 2.6056155725984254e+01 6.5392582724829850e+01 1.4000000004855409e+01 0 0 0 +18930 1 2.7739671586326303e+01 6.4831106281868045e+01 1.5750000009151453e+01 0 0 0 +16373 1 3.1667875532158217e+01 6.5365656195907192e+01 1.7499999993636688e+01 0 0 -1 +18933 1 3.1667875496851991e+01 6.5365656185675334e+01 1.4000000017032347e+01 0 0 0 +18934 1 3.1106703608025825e+01 6.3708153141030245e+01 1.5750000005157370e+01 0 0 0 +18935 1 2.9984359564982828e+01 6.5927132778923237e+01 1.5750000006051204e+01 0 0 0 +18939 1 3.3351391581328123e+01 6.4804179755881520e+01 1.5749999987475979e+01 0 0 0 +16435 1 3.7279595295023093e+01 6.5338730125227002e+01 1.7499999973724528e+01 0 0 -1 +18943 1 3.6718423273028712e+01 6.3681226944283445e+01 1.5749999950035985e+01 0 0 0 +18993 1 3.5596079476030091e+01 6.5900206451537784e+01 1.5749999952123471e+01 0 0 0 +16439 1 4.0646627095943607e+01 6.4215777470755967e+01 1.7499999975106562e+01 0 0 -1 +18997 1 3.8963111167111954e+01 6.4777253725565217e+01 1.5749999973519882e+01 0 0 0 +19002 1 4.1207799131659094e+01 6.5873280534810348e+01 1.5750000003410895e+01 0 0 0 +16440 1 4.2891315134878951e+01 6.5311804125137314e+01 1.5049423041091359e-08 0 0 0 +19001 1 4.2330143095777743e+01 6.3654301087016478e+01 1.5750000025330820e+01 0 0 0 +19004 1 4.4574831235088766e+01 6.4750327880200814e+01 1.5750000057744376e+01 0 0 0 +18794 1 1.0571059936110001e+00 6.8342439141960469e+01 1.5750000065083892e+01 0 0 0 +18848 1 3.1035848224246396e+00 6.9424700733570432e+01 1.5750000033886861e+01 0 0 0 +16236 1 5.8404162426484749e+00 6.6594482221870081e+01 2.9993692862717580e-08 0 0 0 +16290 1 4.7485636701425200e+00 6.8816649088204613e+01 4.1816537788008645e-08 0 0 0 +18796 1 5.8404162438586233e+00 6.6594482156026217e+01 1.3999999987145431e+01 0 0 0 +18850 1 4.7485636487179628e+00 6.8816649072733910e+01 1.3999999989743813e+01 0 0 0 +18798 1 4.1395807157121274e+00 6.7140494491922524e+01 1.5750000005009909e+01 0 0 0 +18852 1 6.4095226905737235e+00 6.8249151514652112e+01 1.5750000033213837e+01 0 0 0 +18857 1 8.6590368893717784e+00 6.9348805293935825e+01 1.5750000023684100e+01 0 0 0 +16298 1 1.1466172448119670e+01 6.6569572608183208e+01 1.1914210062968777e-08 0 0 0 +18858 1 1.1466172448589512e+01 6.6569572591583352e+01 1.4000000026533941e+01 0 0 0 +16295 1 1.0342363746099627e+01 6.8788032075542290e+01 1.7499999992308776e+01 0 0 -1 +18856 1 9.7824039902252711e+00 6.7131346186841512e+01 1.5750000045950317e+01 0 0 0 +18855 1 1.0342363752508991e+01 6.8788032062682291e+01 1.4000000014596948e+01 0 0 0 +18861 1 1.2026826689528491e+01 6.8226982076781141e+01 1.5750000017165855e+01 0 0 0 +16356 1 1.5955087181047970e+01 6.8761456433141262e+01 1.7499999991681470e+01 0 0 -1 +18865 1 1.5393908021252976e+01 6.7103934706119048e+01 1.5750000009679583e+01 0 0 0 +18914 1 1.4271514639882867e+01 6.9322931636936005e+01 1.5750000000349823e+01 0 0 0 +18916 1 1.5955087219025248e+01 6.8761456486771422e+01 1.3999999986684557e+01 0 0 0 +16303 1 1.7077391467373527e+01 6.6542454586641924e+01 1.7499999979126734e+01 0 0 -1 +18863 1 1.7077391471193557e+01 6.6542454642028900e+01 1.3999999991138163e+01 0 0 0 +18918 1 1.7638583526212194e+01 6.8199965479003225e+01 1.5750000010107996e+01 0 0 0 +16361 1 2.1566779436775818e+01 6.8734514687018901e+01 2.1537722716402641e-09 0 0 0 +18921 1 2.1566779491955060e+01 6.8734514720567191e+01 1.3999999998104068e+01 0 0 0 +18922 1 2.1005606564248499e+01 6.7077011715911055e+01 1.5749999991308281e+01 0 0 0 +18923 1 1.9883266278456261e+01 6.9295992055748570e+01 1.5750000018964739e+01 0 0 0 +16365 1 2.4933811644476414e+01 6.7611562212790517e+01 1.2524335346597582e-08 0 0 0 +18925 1 2.4933811717400264e+01 6.7611562241614905e+01 1.4000000011540443e+01 0 0 0 +16364 1 2.2689123919349846e+01 6.6515535759621059e+01 1.0927948324024328e-08 0 0 0 +18924 1 2.2689123940377911e+01 6.6515535759334753e+01 1.3999999973041154e+01 0 0 0 +18927 1 2.3250295464969287e+01 6.8173038498375831e+01 1.5750000006726008e+01 0 0 0 +18981 1 2.5494983646844926e+01 6.9269065286377653e+01 1.5749999995241790e+01 0 0 0 +18931 1 2.6617327723900939e+01 6.7050085844651477e+01 1.5750000009087511e+01 0 0 0 +18985 1 2.8862015634879324e+01 6.8146112402661032e+01 1.5750000043930550e+01 0 0 0 +16427 1 3.0545531566622646e+01 6.7584635855936710e+01 3.5384321250830908e-08 0 0 0 +18987 1 3.0545531583374846e+01 6.7584635802239376e+01 1.4000000021797870e+01 0 0 0 +18989 1 3.2229047529230520e+01 6.7023159279848969e+01 1.5749999995351066e+01 0 0 0 +18990 1 3.1106703483612627e+01 6.9242138860971920e+01 1.5750000030993755e+01 0 0 0 +18994 1 3.4473735346621346e+01 6.8119185952899599e+01 1.5749999964703091e+01 0 0 0 +16490 1 3.8401939132717885e+01 6.8653736362499743e+01 1.7499999954954831e+01 0 0 -1 +16432 1 3.6157251329883906e+01 6.7557709535902731e+01 1.7499999979998062e+01 0 0 -1 +18998 1 3.7840767298018015e+01 6.6996233261866962e+01 1.5749999958957664e+01 0 0 0 +19048 1 3.6718423148472468e+01 6.9215212759757293e+01 1.5749999977905155e+01 0 0 0 +16494 1 4.1768971083945196e+01 6.7530783652089639e+01 6.5420522332715336e-09 0 0 0 +16436 1 3.9524283221875386e+01 6.6434756894855695e+01 1.7499999962912934e+01 0 0 -1 +19052 1 4.0085455116654408e+01 6.8092260058179747e+01 1.5749999986683187e+01 0 0 0 +16495 1 4.4013659172833599e+01 6.8626810549971950e+01 1.9552981456172347e-08 0 0 0 +22606 1 4.5136003255968568e+01 6.6407830988981502e+01 2.4889324379273603e-08 0 0 0 +19056 1 4.3452487168602445e+01 6.6969307343452925e+01 1.5750000010090089e+01 0 0 0 +19057 1 4.2330143139160491e+01 6.9188286821440002e+01 1.5750000026723342e+01 0 0 0 +18849 1 1.7224969398239303e+00 7.1576497243365807e+01 1.5750000070155730e+01 0 0 0 +16287 1 3.5610862800479159e+00 7.1030552131723582e+01 5.7251565266369653e-08 0 0 0 +18847 1 3.5610862855402714e+00 7.1030552110537045e+01 1.4000000021089690e+01 0 0 0 +18853 1 5.3078135255510128e+00 7.0481262322040479e+01 1.5750000037774708e+01 0 0 0 +18902 1 4.1395809389726450e+00 7.2674480301550801e+01 1.5750000072625220e+01 0 0 0 +16348 1 9.2228640118330958e+00 7.1007904518703711e+01 1.7499999999069864e+01 0 0 -1 +18906 1 7.5396994431237410e+00 7.1571174280051167e+01 1.5750000008012485e+01 0 0 0 +18908 1 9.2228639977509541e+00 7.1007904512935426e+01 1.3999999991354679e+01 0 0 0 +18911 1 9.7824042134707589e+00 7.2665332121092902e+01 1.5749999994571162e+01 0 0 0 +18910 1 1.0904485659399036e+01 7.0445662803371263e+01 1.5749999999856069e+01 0 0 0 +16353 1 1.4832658433606756e+01 7.0980392823400450e+01 1.7499999970281316e+01 0 0 -1 +18913 1 1.4832658488882966e+01 7.0980392854906725e+01 1.3999999989090236e+01 0 0 0 +18915 1 1.3149237431083209e+01 7.1541862576842419e+01 1.5750000007255537e+01 0 0 0 +18969 1 1.5393908218066880e+01 7.2637920618800848e+01 1.5750000001534660e+01 0 0 0 +18919 1 1.6516219595190631e+01 7.0418945611791614e+01 1.5749999991271590e+01 0 0 0 +18973 1 1.8760915770571689e+01 7.1514970752727649e+01 1.5750000005271637e+01 0 0 0 +16415 1 2.0444436955030127e+01 7.0953495619507976e+01 9.3270671186473919e-09 0 0 0 +18975 1 2.0444436974535549e+01 7.0953495663300899e+01 1.4000000001279467e+01 0 0 0 +18977 1 2.2127952572414909e+01 7.0392018393724328e+01 1.5750000024159936e+01 0 0 0 +18978 1 2.1005606668779606e+01 7.2610997571618341e+01 1.5750000020726709e+01 0 0 0 +18982 1 2.4372639966866888e+01 7.1488044897916225e+01 1.5749999993450702e+01 0 0 0 +16478 1 2.8300843610583406e+01 7.2022595054147743e+01 4.0384897204148729e-08 0 0 0 +19038 1 2.8300843662395987e+01 7.2022595009220709e+01 1.4000000034579505e+01 0 0 0 +18986 1 2.7739671565544324e+01 7.0365091930560041e+01 1.5750000030226333e+01 0 0 0 +19036 1 2.6617327756967800e+01 7.2584071572624168e+01 1.5750000023782910e+01 0 0 0 +16424 1 2.9423187623198441e+01 6.9803615415973510e+01 3.7156720367192975e-08 0 0 0 +18984 1 2.9423187640861091e+01 6.9803615418941192e+01 1.4000000032078626e+01 0 0 0 +19040 1 2.9984359496718536e+01 7.1461118505331299e+01 1.5750000029193194e+01 0 0 0 +19045 1 3.2229047440397210e+01 7.2557145035893768e+01 1.5749999992805273e+01 0 0 0 +16483 1 3.3912563362591023e+01 7.1995668634919213e+01 1.8550267100181372e-08 0 0 0 +19043 1 3.3912563310890249e+01 7.1995668647526514e+01 1.3999999975815859e+01 0 0 0 +16486 1 3.5034907246187423e+01 6.9776689020586588e+01 1.7499999981985713e+01 0 0 -1 +19044 1 3.3351391417329936e+01 7.0338165578847111e+01 1.5749999996233699e+01 0 0 0 +19049 1 3.5596079364941659e+01 7.1434192269411767e+01 1.5749999975604158e+01 0 0 0 +19102 1 3.7840767151279643e+01 7.2530218994793245e+01 1.5749999962485429e+01 0 0 0 +16491 1 4.0646627081085327e+01 6.9749763178755856e+01 1.7499999984326529e+01 0 0 -1 +16544 1 3.9524283088709069e+01 7.1968742634369292e+01 7.3653758647651557e-09 0 0 0 +19053 1 3.8963111074318455e+01 7.0311239436713436e+01 1.5749999967834441e+01 0 0 0 +19106 1 4.1207799101637789e+01 7.1407266255755502e+01 1.5749999996958817e+01 0 0 0 +22660 1 4.5136003222860211e+01 7.1941816802002549e+01 4.2843481651289039e-08 0 0 0 +16548 1 4.2891315125083352e+01 7.0845789885084216e+01 6.0695626302731398e-10 0 0 0 +19109 1 4.4574831229738876e+01 7.0284313633292527e+01 1.5750000057388608e+01 0 0 0 +19110 1 4.3452487086991553e+01 7.2503293107236615e+01 1.5750000026370047e+01 0 0 0 +16338 1 1.2264314790745012e+00 7.5511070187855154e+01 5.3604654937089435e-08 0 0 0 +16340 1 2.5187339024640170e+00 7.3233507366499637e+01 9.4709935893888542e-08 0 0 0 +18898 1 1.2264315029105985e+00 7.5511070232240215e+01 1.4000000029363878e+01 0 0 0 +18899 1 1.0571059613030658e+00 7.3876424909073307e+01 1.5750000037431526e+01 0 0 0 +18900 1 2.5187338593806166e+00 7.3233507411015083e+01 1.3999999997713953e+01 0 0 0 +18903 1 3.1035850400715725e+00 7.4958686639298904e+01 1.5750000052831282e+01 0 0 0 +18907 1 6.4095229037000037e+00 7.3783137418794396e+01 1.5750000020583292e+01 0 0 0 +18957 1 5.3078137847946412e+00 7.6015248222466326e+01 1.5750000023312026e+01 0 0 0 +16345 1 8.0950139251477626e+00 7.3225299435370360e+01 2.2254326381698775e-08 0 0 0 +16399 1 6.9829710548989912e+00 7.5446434267506390e+01 2.6335570169067068e-08 0 0 0 +18905 1 8.0950139019223837e+00 7.3225299411214507e+01 1.3999999989701022e+01 0 0 0 +18959 1 6.9829710294509342e+00 7.5446434266116796e+01 1.4000000003590239e+01 0 0 0 +18961 1 8.6590371577629028e+00 7.4882791293261945e+01 1.5750000016823504e+01 0 0 0 +16404 1 1.2587783120113610e+01 7.5418278737954978e+01 1.7499999974301645e+01 0 0 -1 +18964 1 1.2587783158390433e+01 7.5418278787841473e+01 1.4000000007644882e+01 0 0 0 +18965 1 1.2026826969706059e+01 7.3760968090619755e+01 1.5750000006037498e+01 0 0 0 +18966 1 1.0904485946247213e+01 7.5979648890786081e+01 1.5750000014088883e+01 0 0 0 +16407 1 1.3710491483017767e+01 7.3199455286248735e+01 1.7499999957342236e+01 0 0 -1 +18967 1 1.3710491526171500e+01 7.3199455314553802e+01 1.3999999984751607e+01 0 0 0 +18970 1 1.4271514903608361e+01 7.4856917656144105e+01 1.5749999998389974e+01 0 0 0 +16412 1 1.9322089644110768e+01 7.3172472577121255e+01 1.4429044625785536e-08 0 0 0 +16466 1 1.8199753882517800e+01 7.5391457944066360e+01 2.4935882692034284e-08 0 0 0 +18972 1 1.9322089671407586e+01 7.3172472596002279e+01 1.4000000000146391e+01 0 0 0 +18974 1 1.7638583730346369e+01 7.3733951433406034e+01 1.5750000025474867e+01 0 0 0 +19024 1 1.6516219873815942e+01 7.5952931654336084e+01 1.5750000032388153e+01 0 0 0 +19026 1 1.8199753932732342e+01 7.5391457987935397e+01 1.3999999990880477e+01 0 0 0 +19028 1 1.9883266486562174e+01 7.4829978031758060e+01 1.5750000022181016e+01 0 0 0 +19033 1 2.2127952782999358e+01 7.5926004321221072e+01 1.5749999962860276e+01 0 0 0 +16471 1 2.3811467831219030e+01 7.5364527501227229e+01 1.7499999958206832e+01 0 0 -1 +19031 1 2.3811467859455618e+01 7.5364527514636166e+01 1.3999999963283269e+01 0 0 0 +19032 1 2.3250295563558801e+01 7.3707024310551375e+01 1.5749999975923322e+01 0 0 0 +19037 1 2.5494983804016304e+01 7.4803051053931242e+01 1.5749999994843064e+01 0 0 0 +16475 1 2.7178499800714373e+01 7.4241574569413501e+01 1.7499999992238795e+01 0 0 -1 +19035 1 2.7178499850606787e+01 7.4241574533561646e+01 1.4000000018936442e+01 0 0 0 +19041 1 2.8862015688199968e+01 7.3680098144152467e+01 1.5750000037051178e+01 0 0 0 +19090 1 2.7739671721359400e+01 7.5899077693507238e+01 1.5749999998797078e+01 0 0 0 +19094 1 3.1106703545935435e+01 7.4776124681738608e+01 1.5750000019402489e+01 0 0 0 +16536 1 3.2790219499273761e+01 7.4214648245923286e+01 1.2067395971371297e-08 0 0 0 +19096 1 3.2790219458176232e+01 7.4214648233455364e+01 1.3999999999974927e+01 0 0 0 +19098 1 3.4473735292651646e+01 7.3653171790105020e+01 1.5749999978838982e+01 0 0 0 +19099 1 3.3351391510146485e+01 7.5872151398493074e+01 1.5750000001781601e+01 0 0 0 +16541 1 3.8401939068137288e+01 7.4187722123899803e+01 1.7499999976370034e+01 0 0 -1 +19103 1 3.6718423105893059e+01 7.4749198551462996e+01 1.5749999932224094e+01 0 0 0 +16545 1 4.1768970972630314e+01 7.3064769380604147e+01 2.7439842398280234e-08 0 0 0 +16594 1 4.0646626996475625e+01 7.5283748968417058e+01 1.7499999976437397e+01 0 0 -1 +19107 1 4.0085455024119838e+01 7.3626245777608958e+01 1.5749999990972999e+01 0 0 0 +19152 1 3.8963111095066914e+01 7.5845225255644777e+01 1.5749999964597810e+01 0 0 0 +16598 1 4.4013659058107770e+01 7.4160796371588219e+01 8.4866584870724182e-08 0 0 0 +19156 1 4.2330143023494536e+01 7.4722272584875569e+01 1.5750000050672416e+01 0 0 0 +19159 1 4.4574831155536778e+01 7.5818299525201937e+01 1.5750000091297279e+01 0 0 0 +18953 1 1.7224971817344956e+00 7.7110483193422027e+01 1.5750000021244871e+01 0 0 0 +16396 1 5.8404167571305114e+00 7.7662453962286961e+01 6.2639848863454972e-08 0 0 0 +18956 1 5.8404167320822378e+00 7.7662453954529369e+01 1.3999999998146802e+01 0 0 0 +18958 1 4.1395812147674746e+00 7.8208466241671061e+01 1.5750000011170716e+01 0 0 0 +18962 1 7.5396997713178218e+00 7.7105160319915868e+01 1.5750000055252606e+01 0 0 0 +16458 1 1.1466172965595275e+01 7.7637544653591064e+01 1.7499999978911898e+01 0 0 -1 +19016 1 9.7824045522703287e+00 7.8199318249006311e+01 1.5750000027950209e+01 0 0 0 +19018 1 1.1466172990633831e+01 7.7637544686844876e+01 1.4000000018028258e+01 0 0 0 +19020 1 1.3149237746227135e+01 7.7075848703060245e+01 1.5750000003306949e+01 0 0 0 +19025 1 1.5393908569374256e+01 7.8171906798366166e+01 1.5750000040531095e+01 0 0 0 +16463 1 1.7077391931727092e+01 7.7610426637973660e+01 1.5961809651798831e-08 0 0 0 +19023 1 1.7077391953366806e+01 7.7610426636908869e+01 1.4000000027431517e+01 0 0 0 +19029 1 1.8760916076895477e+01 7.7048956843946328e+01 1.5750000033167293e+01 0 0 0 +19082 1 2.1005606960887139e+01 7.8144983632420249e+01 1.5749999972048728e+01 0 0 0 +16525 1 2.4933812070558897e+01 7.8679533871283894e+01 1.7499999951227732e+01 0 0 -1 +19085 1 2.4933812115333069e+01 7.8679533895485264e+01 1.3999999976634857e+01 0 0 0 +16524 1 2.2689124278380081e+01 7.7583507525033909e+01 1.7499999965574553e+01 0 0 -1 +19084 1 2.2689124267805006e+01 7.7583507521326268e+01 1.3999999953701163e+01 0 0 0 +19086 1 2.4372640228561071e+01 7.7022030790131254e+01 1.5749999967134858e+01 0 0 0 +16528 1 2.6056155863243070e+01 7.6460554191102446e+01 1.7499999974197980e+01 0 0 -1 +19088 1 2.6056155943554888e+01 7.6460554200699903e+01 1.3999999973347920e+01 0 0 0 +19091 1 2.6617328062327442e+01 7.8118057384021057e+01 1.5749999975616047e+01 0 0 0 +16533 1 3.1667875567922660e+01 7.6433627764519443e+01 6.8644752104773943e-09 0 0 0 +16582 1 3.0545531882564848e+01 7.8652607408525199e+01 4.2287133794616238e-08 0 0 0 +19093 1 3.1667875536934346e+01 7.6433627778373989e+01 1.4000000026044829e+01 0 0 0 +19142 1 3.0545531869533303e+01 7.8652607402231382e+01 1.4000000018071537e+01 0 0 0 +19095 1 2.9984359726764090e+01 7.6995104287021775e+01 1.5750000021971825e+01 0 0 0 +19144 1 3.2229047726833009e+01 7.8091130897212963e+01 1.5750000022905537e+01 0 0 0 +16587 1 3.6157251490836252e+01 7.8625681181625993e+01 1.7499999964475176e+01 0 0 -1 +19147 1 3.6157251422661275e+01 7.8625681178733515e+01 1.3999999953729159e+01 0 0 0 +16590 1 3.7279595237480130e+01 7.6406701719067712e+01 1.7499999967331089e+01 0 0 -1 +19148 1 3.5596079462815879e+01 7.6968178080855012e+01 1.5749999938402416e+01 0 0 0 +19150 1 3.7279595233905894e+01 7.6406701709235946e+01 1.3999999951979966e+01 0 0 0 +19153 1 3.7840767362812890e+01 7.8064204844747024e+01 1.5749999946683431e+01 0 0 0 +16631 1 4.1768971032941437e+01 7.8598755295964168e+01 3.2757526469140430e-08 0 0 0 +19191 1 4.1768971114367041e+01 7.8598755220583328e+01 1.3999999988821161e+01 0 0 0 +19157 1 4.1207799070461860e+01 7.6941252069770115e+01 1.5749999991507650e+01 0 0 0 +25326 1 4.5136003157127959e+01 7.7475802761857764e+01 1.4000000041164066e+01 0 0 0 +16595 1 4.2891315043890138e+01 7.6379775715571597e+01 5.3671449506964564e-08 0 0 0 +19193 1 4.3452487098496142e+01 7.8037279007979279e+01 1.5750000045031465e+01 0 0 0 +18954 1 1.0571061440578977e+00 7.9410410845783886e+01 1.5750000019258749e+01 0 0 0 +19008 1 3.1035852755603588e+00 8.0492672548759174e+01 1.5750000032069337e+01 0 0 0 +16447 1 3.5610869538084629e+00 8.2098524038889551e+01 6.6214038696443822e-08 0 0 0 +16450 1 4.7485642821011878e+00 7.9884620935201426e+01 7.6616771593762678e-08 0 0 0 +19007 1 3.5610869398724412e+00 8.2098523989995925e+01 1.4000000036239554e+01 0 0 0 +19010 1 4.7485642476203624e+00 7.9884620932937281e+01 1.3999999997198328e+01 0 0 0 +19012 1 6.4095233039496264e+00 7.9317123440573951e+01 1.5750000058094844e+01 0 0 0 +19013 1 5.3078141852804528e+00 8.1549234285398811e+01 1.5750000076009002e+01 0 0 0 +16508 1 9.2228647641545596e+00 8.2075876775164460e+01 2.3091818235343453e-08 0 0 0 +19017 1 8.6590375582668333e+00 8.0416777444354466e+01 1.5750000030601768e+01 0 0 0 +19068 1 9.2228647080778021e+00 8.2075876798476145e+01 1.3999999986785301e+01 0 0 0 +16455 1 1.0342364386614056e+01 7.9856004251209811e+01 1.7499999988788140e+01 0 0 -1 +19015 1 1.0342364393776382e+01 7.9856004271270237e+01 1.4000000016300195e+01 0 0 0 +19021 1 1.2026827299130600e+01 7.9294954278204827e+01 1.5750000006717169e+01 0 0 0 +19070 1 1.0904486363959625e+01 8.1513635117350518e+01 1.5749999998033823e+01 0 0 0 +16513 1 1.4832659146240818e+01 8.2048365223224948e+01 1.7499999988204731e+01 0 0 -1 +16516 1 1.5955087798261321e+01 7.9829428661969914e+01 1.9118147065455560e-08 0 0 0 +19073 1 1.4832659211760093e+01 8.2048365218668607e+01 1.4000000032290933e+01 0 0 0 +19074 1 1.4271515292036185e+01 8.0390903910779159e+01 1.5750000013727641e+01 0 0 0 +19076 1 1.5955087837236695e+01 7.9829428691572659e+01 1.4000000028889467e+01 0 0 0 +19078 1 1.7638584087480574e+01 7.9267937615827051e+01 1.5750000052550359e+01 0 0 0 +19079 1 1.6516220284302953e+01 8.1486917941239980e+01 1.5750000025658155e+01 0 0 0 +16521 1 2.1566779996837873e+01 7.9802486678126471e+01 1.7499999991805147e+01 0 0 -1 +16570 1 2.0444437693550661e+01 8.2021467835226119e+01 4.4168864121729712e-09 0 0 0 +19081 1 2.1566779995997020e+01 7.9802486718388309e+01 1.3999999976493331e+01 0 0 0 +19083 1 1.9883266866852455e+01 8.0363964196286162e+01 1.5750000016436363e+01 0 0 0 +19130 1 2.0444437655916467e+01 8.2021467894263694e+01 1.4000000008503021e+01 0 0 0 +19132 1 2.2127953247764868e+01 8.1459990456730921e+01 1.5749999984752661e+01 0 0 0 +19087 1 2.3250295942567281e+01 7.9241010307708947e+01 1.5749999956142888e+01 0 0 0 +19136 1 2.5494984217057709e+01 8.0337036993704743e+01 1.5749999956483265e+01 0 0 0 +19140 1 2.8862016038833818e+01 7.9214083971252919e+01 1.5750000028071392e+01 0 0 0 +19141 1 2.7739672251351564e+01 8.1433063582552506e+01 1.5750000021879556e+01 0 0 0 +16579 1 2.9423188206646373e+01 8.0871587036440260e+01 4.0098203868410565e-08 0 0 0 +19139 1 2.9423188225037890e+01 8.0871587038495747e+01 1.4000000047116767e+01 0 0 0 +19145 1 3.1106703974426004e+01 8.0310110506381506e+01 1.5750000048220951e+01 0 0 0 +16623 1 3.5034907706761551e+01 8.0844660706841495e+01 1.7499999967092858e+01 0 0 -1 +19149 1 3.4473735593058954e+01 7.9187157618917254e+01 1.5749999962816586e+01 0 0 0 +19181 1 3.3351391977414934e+01 8.1406137285465448e+01 1.5750000000319714e+01 0 0 0 +19183 1 3.5034907621475099e+01 8.0844660721722306e+01 1.3999999979390090e+01 0 0 0 +19184 1 3.7279595647171632e+01 8.1940687606171949e+01 1.3999999952756092e+01 0 0 0 +19185 1 3.6718423456583800e+01 8.0283184416627336e+01 1.5749999958506207e+01 0 0 0 +16628 1 4.0646627216612472e+01 8.0817734882278643e+01 1.7499999973635934e+01 0 0 -1 +19188 1 4.0646627283419342e+01 8.0817734863491509e+01 1.3999999972990571e+01 0 0 0 +19189 1 4.0085455179836423e+01 7.9160231646212196e+01 1.5749999963434281e+01 0 0 0 +19190 1 3.8963111379177207e+01 8.1379211116027406e+01 1.5749999934213724e+01 0 0 0 +16012 1 4.2891315214344225e+01 8.1913761672815383e+01 1.4000000039960758e+01 0 0 0 +16011 1 4.4574831174715335e+01 8.1352285496238622e+01 1.5750000079600506e+01 0 0 0 +19192 1 4.4013659165855877e+01 7.9694782259685127e+01 1.4000000034869609e+01 0 0 0 +19194 1 4.2330143153874829e+01 8.0256258540678274e+01 1.5750000036881049e+01 0 0 0 +16500 1 2.5187344375002607e+00 8.4301479332344002e+01 4.9283691794244078e-08 0 0 0 +19060 1 2.5187343891190332e+00 8.4301479351935640e+01 1.4000000074444360e+01 0 0 0 +19009 1 1.7224975633719539e+00 8.2644469188763352e+01 1.5750000047159180e+01 0 0 0 +19059 1 1.0571062291184909e+00 8.4944396745886507e+01 1.5750000028012355e+01 0 0 0 +19062 1 4.1395816160245928e+00 8.3742452308786056e+01 1.5750000112678656e+01 0 0 0 +19067 1 6.4095236712938837e+00 8.4851109592309228e+01 1.5750000057712242e+01 0 0 0 +16505 1 8.0950147390767029e+00 8.4293271716579355e+01 6.0899235876377134e-08 0 0 0 +19065 1 8.0950146560360174e+00 8.4293271718999279e+01 1.3999999991794684e+01 0 0 0 +19066 1 7.5397001876775880e+00 8.2639146469014008e+01 1.5750000024202890e+01 0 0 0 +19071 1 9.7824049835615625e+00 8.3733304509749559e+01 1.5749999987351154e+01 0 0 0 +19120 1 1.2026827745140231e+01 8.4828940607093770e+01 1.5749999981361585e+01 0 0 0 +16562 1 1.3710492245741227e+01 8.4267427819869368e+01 1.7499999962612684e+01 0 0 -1 +19075 1 1.3149238168528461e+01 8.2609834997988983e+01 1.5750000013239951e+01 0 0 0 +19122 1 1.3710492312167522e+01 8.4267427804622614e+01 1.3999999992152398e+01 0 0 0 +19124 1 1.5393908979799097e+01 8.3705893108315394e+01 1.5750000011683833e+01 0 0 0 +16567 1 1.9322090524408189e+01 8.4240444973598457e+01 2.6326787860853074e-08 0 0 0 +19127 1 1.9322090472670016e+01 8.4240445034219604e+01 1.4000000026562239e+01 0 0 0 +19128 1 1.8760916511750160e+01 8.2582943082348351e+01 1.5750000018132786e+01 0 0 0 +19129 1 1.7638584543693632e+01 8.4801923941499737e+01 1.5750000029921075e+01 0 0 0 +19133 1 2.1005607507127348e+01 8.3678969849563060e+01 1.5750000009801935e+01 0 0 0 +19137 1 2.4372640766642295e+01 8.2556016825812833e+01 1.5749999963126713e+01 0 0 0 +19169 1 2.3250296549485494e+01 8.4774996459341480e+01 1.5749999963621677e+01 0 0 0 +16612 1 2.7178500943135127e+01 8.5309546413395680e+01 2.8908235805147342e-08 0 0 0 +16615 1 2.8300844500450705e+01 8.3090566766429063e+01 5.3310127867689516e-08 0 0 0 +19172 1 2.7178500964467627e+01 8.5309546383529593e+01 1.4000000020080174e+01 0 0 0 +19175 1 2.8300844520431838e+01 8.3090566734064168e+01 1.4000000037464913e+01 0 0 0 +19173 1 2.6617328698766556e+01 8.3652043380459034e+01 1.5750000015280504e+01 0 0 0 +19178 1 2.8862016776903427e+01 8.4748069901077116e+01 1.5750000065181212e+01 0 0 0 +19177 1 2.9984360292826175e+01 8.2529090189266242e+01 1.5750000060909706e+01 0 0 0 +19182 1 3.2229048331995372e+01 8.3625116763450521e+01 1.5750000013734208e+01 0 0 0 +16620 1 3.3912564147792338e+01 8.3063640364458735e+01 1.8903023146776832e-08 0 0 0 +19180 1 3.3912564034543578e+01 8.3063640360983101e+01 1.3999999981014929e+01 0 0 0 +16642 1 3.2790220601334710e+01 8.5282620008587301e+01 2.3413722516352209e-08 0 0 0 +16022 1 3.4473736227824936e+01 8.4721143554074885e+01 1.5749999983519096e+01 0 0 0 +16024 1 3.2790220500892360e+01 8.5282619975541138e+01 1.4000000002724327e+01 0 0 0 +16647 1 3.8401939798629016e+01 8.5255693968066538e+01 1.7499999943307326e+01 0 0 -1 +16020 1 3.6157251979993212e+01 8.4159667112720413e+01 1.3999999944656574e+01 0 0 0 +16018 1 3.7840767752437436e+01 8.3598190757278743e+01 1.5749999924669227e+01 0 0 0 +16019 1 3.8401939789405532e+01 8.5255693940031748e+01 1.3999999941850522e+01 0 0 0 +19186 1 3.5596079986812398e+01 8.2502163984578075e+01 1.5749999966346063e+01 0 0 0 +16015 1 4.1768971347491295e+01 8.4132741219561993e+01 1.3999999982513845e+01 0 0 0 +16650 1 3.9524283506712351e+01 8.3036714400178667e+01 1.7499999977397135e+01 0 0 -1 +16013 1 4.0085455528426436e+01 8.4694217617312759e+01 1.5749999960864596e+01 0 0 0 +16014 1 4.1207799319430912e+01 8.2475238025500531e+01 1.5749999991144225e+01 0 0 0 +16016 1 3.9524283569275767e+01 8.3036714361053257e+01 1.3999999950340527e+01 0 0 0 +25380 1 4.5136003190289365e+01 8.3009788751018448e+01 1.4000000044124715e+01 0 0 0 +16002 1 4.4013659277599388e+01 8.5228768261865170e+01 1.4000000041144116e+01 0 0 0 +16010 1 4.3452487208225115e+01 8.3571264988309025e+01 1.5750000036177470e+01 0 0 0 +16498 1 1.2264316881279844e+00 8.6579042098807918e+01 2.9576522564411789e-08 0 0 0 +19058 1 1.2264316912061373e+00 8.6579042119061100e+01 1.4000000050899580e+01 0 0 0 +19063 1 3.1035854234842057e+00 8.6026658536216502e+01 1.5750000093910460e+01 0 0 0 +19111 1 1.7224975776406799e+00 8.8178455171445407e+01 1.5750000034482994e+01 0 0 0 +19113 1 5.3078144086641901e+00 8.7083220343964300e+01 1.5750000074410380e+01 0 0 0 +16554 1 6.9829718143570902e+00 8.6514406526150751e+01 6.5239301960673401e-08 0 0 0 +19116 1 8.6590379374211892e+00 8.5950763673324545e+01 1.5750000017224840e+01 0 0 0 +19114 1 6.9829717072954551e+00 8.6514406530915394e+01 1.4000000036137870e+01 0 0 0 +19117 1 7.5397004386235995e+00 8.8173132660163446e+01 1.5750000066442471e+01 0 0 0 +19119 1 1.2587783935983316e+01 8.6486251350114259e+01 1.3999999978267830e+01 0 0 0 +19121 1 1.0904486708833238e+01 8.7047621442968222e+01 1.5749999978488288e+01 0 0 0 +16559 1 1.2587783907796513e+01 8.6486251355827477e+01 1.7499999973610176e+01 0 0 -1 +19125 1 1.4271515689739729e+01 8.5924890262303308e+01 1.5749999989017402e+01 0 0 0 +19160 1 1.3149238488531113e+01 8.8143821344041896e+01 1.5749999966877063e+01 0 0 0 +19162 1 1.6516220710013652e+01 8.7020904282470809e+01 1.5750000040971589e+01 0 0 0 +19163 1 1.8199754787773262e+01 8.6459430564539147e+01 1.4000000021716927e+01 0 0 0 +19166 1 1.8760917014688783e+01 8.8116929444944319e+01 1.5750000048384347e+01 0 0 0 +16603 1 1.8199754780807915e+01 8.6459430509893664e+01 2.3170983354248165e-08 0 0 0 +19165 1 1.9883267426284498e+01 8.5897950497655003e+01 1.5750000008184992e+01 0 0 0 +19170 1 2.2127953878661941e+01 8.6993976669629873e+01 1.5749999968476915e+01 0 0 0 +19195 1 2.4372641492865792e+01 8.8090002962110830e+01 1.5749999964135384e+01 0 0 0 +16608 1 2.3811468986642353e+01 8.6432499671292589e+01 1.7499999964247838e+01 0 0 -1 +19168 1 2.3811468967548418e+01 8.6432499726919957e+01 1.3999999988680059e+01 0 0 0 +19174 1 2.5494984949178601e+01 8.5871023049630210e+01 1.5749999992150869e+01 0 0 0 +16636 1 2.6056157174522397e+01 8.7528526195313162e+01 1.7499999990356194e+01 0 0 -1 +19197 1 2.7739673030509209e+01 8.6967049575816802e+01 1.5750000018093370e+01 0 0 0 +19196 1 2.6056157215467646e+01 8.7528526215831903e+01 1.3999999988854290e+01 0 0 0 +16639 1 3.1667876921649899e+01 8.7501599561730814e+01 3.4153273986703425e-08 0 0 0 +16025 1 2.9984361114287488e+01 8.8063076112372443e+01 1.5750000036665378e+01 0 0 0 +19200 1 3.1106704731389684e+01 8.5844096430948809e+01 1.5750000048990252e+01 0 0 0 +19199 1 3.1667876841347010e+01 8.7501599552718162e+01 1.4000000011688503e+01 0 0 0 +16021 1 3.3351392735353151e+01 8.6940123196228825e+01 1.5750000012501637e+01 0 0 0 +16023 1 3.5034908321938396e+01 8.6378646644022567e+01 1.3999999960861963e+01 0 0 0 +16008 1 3.7279596248983950e+01 8.7474673562511541e+01 1.3999999931022122e+01 0 0 0 +16009 1 3.5596080668798351e+01 8.8036149933722839e+01 1.5749999934505757e+01 0 0 0 +16017 1 3.6718424039324418e+01 8.5817170359957814e+01 1.5749999913859041e+01 0 0 0 +16658 1 3.7279596281676753e+01 8.7474673591705240e+01 1.7499999945752617e+01 0 0 -1 +16003 1 4.1207799741778061e+01 8.8009224067015211e+01 1.5749999984411620e+01 0 0 0 +16007 1 3.8963111909217098e+01 8.6913197126623444e+01 1.5749999946370270e+01 0 0 0 +16006 1 4.0646627659014747e+01 8.6351720871034331e+01 1.3999999970426211e+01 0 0 0 +16001 1 4.4574831380615258e+01 8.6886271528786935e+01 1.5750000079443542e+01 0 0 0 +16004 1 4.2330143385076035e+01 8.5790244541899426e+01 1.5750000034256392e+01 0 0 0 +16005 1 4.2891315525960238e+01 8.7447747725688188e+01 1.4000000008642392e+01 0 0 0 +23046 1 4.5136003441522384e+01 4.9805873677575057e+01 3.4999999687955134e+00 0 0 0 +23681 1 4.5136003763471983e+01 4.4271887599794937e+01 6.9999999684596936e+00 0 0 0 +23686 1 4.5136003471803299e+01 4.9805873726830406e+01 6.9999999470343601e+00 0 0 0 +24321 1 4.5136003734036983e+01 4.4271887642958070e+01 1.0499999996814063e+01 0 0 0 +24326 1 4.5136003470892874e+01 4.9805873727301744e+01 1.0499999982793131e+01 0 0 0 +24961 1 4.5136003743412573e+01 4.4271887613265029e+01 1.4000000011995944e+01 0 0 0 +24966 1 4.5136003448467036e+01 4.9805873703470510e+01 1.4000000026033513e+01 0 0 0 +22401 1 4.5136003757363220e+01 4.4271887587787042e+01 1.2336137444890483e-08 0 0 0 +22406 1 4.5136003442243350e+01 4.9805873666722746e+01 5.0359112435671705e-09 0 0 0 +16671 1 4.4653801830332303e-14 5.0224862446027458e+01 3.4999999729441460e+00 0 0 0 +16031 1 2.7954822357544165e-13 5.0224862492050207e+01 1.7499999950506314e+01 0 0 -1 +16765 1 4.6300073838672304e-14 6.1292832159144929e+01 3.4999999445992898e+00 0 0 0 +16925 1 2.8329324077917341e-13 7.2360803270367967e+01 3.4999999988562016e+00 0 0 0 +16285 1 2.4919022260982431e-13 7.2360803336431871e+01 3.6293272594863027e-08 0 0 0 +17085 1 6.4757886589720084e-14 8.3428775248202498e+01 3.4999999704830422e+00 0 0 0 +17306 1 2.7813743328679761e-13 4.4690877553166388e+01 7.0000000778423850e+00 0 0 0 +16666 1 1.4204814658689475e-13 4.4690877431875705e+01 3.5000000842165573e+00 0 0 0 +17360 1 2.5191511939111330e-13 5.5758847315380770e+01 7.0000000376088121e+00 0 0 0 +16720 1 4.1061938522930740e-13 5.5758847218356664e+01 3.5000000609696165e+00 0 0 0 +16871 1 7.2757093248370240e-14 6.6826817511396015e+01 3.5000000396435023e+00 0 0 0 +17671 1 4.0432245938104719e-13 7.7894789386948148e+01 6.9999999751207627e+00 0 0 0 +17031 1 5.7623749044964916e-13 7.7894789350999019e+01 3.5000000333485706e+00 0 0 0 +17311 1 2.2116277410838743e-13 5.0224862561370593e+01 7.0000000641115161e+00 0 0 0 +17951 1 1.7635917279889182e-13 5.0224862681782817e+01 1.0500000000041181e+01 0 0 0 +17565 1 2.0526273358550769e-13 7.2360803353221044e+01 7.0000000255089612e+00 0 0 0 +18365 1 1.6729860222556392e-13 8.3428775320886942e+01 1.0500000062757817e+01 0 0 0 +17725 1 1.1454497064781312e-13 8.3428775312657820e+01 7.0000000314103499e+00 0 0 0 +17946 1 3.4248973048854141e-13 4.4690877658512278e+01 1.0499999954909946e+01 0 0 0 +18591 1 5.6588480006131280e-13 5.0224862634753904e+01 1.3999999929951723e+01 0 0 0 +18000 1 5.1311018060880399e-13 5.5758847439213099e+01 1.0499999954686791e+01 0 0 0 +18685 1 1.7768407931836531e-13 6.1292832331954450e+01 1.4000000030562388e+01 0 0 0 +18151 1 4.5335909468936121e-13 6.6826817725816284e+01 1.0499999972189837e+01 0 0 0 +18845 1 3.9505150964709676e-13 7.2360803453398759e+01 1.4000000068411712e+01 0 0 0 +18311 1 2.6559574347469857e-13 7.7894789407894336e+01 1.0499999983711106e+01 0 0 0 +18586 1 7.6241312544289167e-13 4.4690877606365206e+01 1.3999999823821181e+01 0 0 0 +16026 1 8.7458930597635081e-14 4.4690877456719150e+01 1.7499999901609332e+01 0 0 -1 +18640 1 1.0525173576984933e-13 5.5758847410745837e+01 1.3999999956781851e+01 0 0 0 +16080 1 5.3774249859077769e-13 5.5758847259635608e+01 1.7499999988290359e+01 0 0 -1 +18791 1 6.8568553543655205e-13 6.6826817729590516e+01 1.4000000004429493e+01 0 0 0 +16231 1 1.8271654257533464e-13 6.6826817602201956e+01 3.6353075216766229e-08 0 0 0 +16391 1 6.4643630599345961e-13 7.7894789315058901e+01 1.7499999978728617e+01 0 0 -1 +19203 1 4.5697175495857778e+01 1.6575030832679742e+00 1.7500000488222460e+00 0 0 0 +19209 1 4.7941863555606218e+01 2.7535299033616361e+00 1.7500000216117981e+00 0 0 0 +19202 1 4.7380691467387820e+01 1.0960267992945190e+00 2.8431757133794576e-08 0 0 0 +19205 1 4.9064207451501588e+01 5.3455035079452673e-01 1.7499999869227842e+00 0 0 0 +19211 1 4.9625379532419629e+01 2.1920534650269494e+00 1.7499999971082953e+01 0 0 -1 +19213 1 5.1308895549693432e+01 1.6305772198281969e+00 1.7499999719014241e+00 0 0 0 +19217 1 5.4675927403888998e+01 5.0762459252929570e-01 1.7500000058297021e+00 0 0 0 +19218 1 5.3553583565238362e+01 2.7266039878962975e+00 1.7499999940417943e+00 0 0 0 +19221 1 5.6920615493774051e+01 1.6036514712889589e+00 1.7500000351384399e+00 0 0 0 +19856 1 5.5237099526608439e+01 2.1651278449613280e+00 3.5000000237332385e+00 0 0 0 +19216 1 5.5237099624673775e+01 2.1651278477739573e+00 1.1295069807965885e-08 0 0 0 +19223 1 6.0287647863643492e+01 4.8069893816206599e-01 1.7500000593162102e+00 0 0 0 +19240 1 5.9165303640980319e+01 2.6996783612482211e+00 1.7500000705449785e+00 0 0 0 +19242 1 6.0848819696441886e+01 2.1382020126917856e+00 8.3051297517109762e-08 0 0 0 +19882 1 6.0848819696139060e+01 2.1382019951575284e+00 3.4999999922838576e+00 0 0 0 +19244 1 6.2532335952064187e+01 1.5767256199500437e+00 1.7500000369569462e+00 0 0 0 +19248 1 6.5899367919272080e+01 4.5377269372328805e-01 1.7499999793102812e+00 0 0 0 +19249 1 6.4777023960243014e+01 2.6727522539001090e+00 1.7499999818625378e+00 0 0 0 +19252 1 6.8144055451554166e+01 1.5497989159499894e+00 1.7499999527663541e+00 0 0 0 +19285 1 7.0388741924523202e+01 2.6458248366503265e+00 1.7499999863540618e+00 0 0 0 +19891 1 6.9827571216474610e+01 9.8832146192081283e-01 3.5000000153284399e+00 0 0 0 +19251 1 6.9827571285221921e+01 9.8832141397482121e-01 1.7499999941305941e+01 0 0 -1 +19254 1 7.1511092651212763e+01 4.2684613145750105e-01 1.7499999892129399e+00 0 0 0 +19289 1 7.3755788962545495e+01 1.5228707988482233e+00 1.7499999893049878e+00 0 0 0 +19293 1 7.7122771303279620e+01 3.9995317503332239e-01 1.7500000135696967e+00 0 0 0 +19294 1 7.6000494026817293e+01 2.6188841740763174e+00 1.7499999792004450e+00 0 0 0 +19931 1 7.5439350197024751e+01 9.6142332222400806e-01 3.5000000043233812e+00 0 0 0 +19291 1 7.5439350291330314e+01 9.6142328215209727e-01 1.7499999994192240e+01 0 0 -1 +19297 1 7.9367523104373433e+01 1.4961522849278410e+00 1.7500000137979352e+00 0 0 0 +19299 1 8.2732309180708228e+01 3.7064027184707893e-01 1.7500000640807833e+00 0 0 0 +19343 1 8.1612971762044609e+01 2.5930093047709279e+00 1.7500000742809119e+00 0 0 0 +19936 1 8.1049144728475724e+01 9.3391028825039313e-01 3.5000000003265401e+00 0 0 0 +19296 1 8.1049144788282945e+01 9.3391029381141433e-01 1.0231544394972658e-07 0 0 0 +19347 1 8.4964194988220910e+01 1.4605520382757444e+00 1.7500000598231262e+00 0 0 0 +19989 1 8.6710922179899839e+01 9.1126210014295017e-01 3.4999999079336499e+00 0 0 0 +19349 1 8.6710922059183915e+01 9.1126227290490436e-01 5.6151487171671255e-08 0 0 0 +19351 1 8.8549511398479353e+01 3.6531717132920460e-01 1.7499998732847406e+00 0 0 0 +19352 1 8.7168423354721355e+01 2.5171135710022368e+00 1.7499999773840011e+00 0 0 0 +19210 1 4.6819519699298709e+01 4.9725093627278616e+00 1.7500000237601141e+00 0 0 0 +19207 1 4.6258347633604366e+01 3.3150062058115060e+00 5.3112628587150283e-08 0 0 0 +19208 1 4.8503035637517954e+01 4.4110330471806831e+00 1.4210559454353286e-08 0 0 0 +19214 1 5.0186551573621664e+01 3.8495566102259806e+00 1.7499999937961419e+00 0 0 0 +19228 1 4.9064207627349752e+01 6.0685360784690054e+00 1.7499999871730016e+00 0 0 0 +19232 1 5.2431239426285757e+01 4.9455833880461730e+00 1.7499999860666746e+00 0 0 0 +19237 1 5.4675927250311915e+01 6.0416102394583922e+00 1.7499999924409226e+00 0 0 0 +19874 1 5.4114755403940045e+01 4.3841071786333377e+00 3.5000000326346741e+00 0 0 0 +19234 1 5.4114755504476761e+01 4.3841071627593386e+00 1.7499999975284588e+01 0 0 -1 +19236 1 5.5798271474010143e+01 3.8226309118713169e+00 1.7500000201704566e+00 0 0 0 +19239 1 5.9726475537107000e+01 4.3571814625930827e+00 8.2334237191049314e-08 0 0 0 +19241 1 5.8042959399038274e+01 4.9186577932869637e+00 1.7500000638142907e+00 0 0 0 +19273 1 6.0287647450625215e+01 6.0146844684298841e+00 1.7500000746943247e+00 0 0 0 +19879 1 5.9726475498209105e+01 4.3571814460800615e+00 3.4999999939620712e+00 0 0 0 +19245 1 6.1409991616574793e+01 3.7957050785406197e+00 1.7500000466879264e+00 0 0 0 +19277 1 6.3654679606739634e+01 4.8917316289323249e+00 1.7500000172946786e+00 0 0 0 +19279 1 6.5338195854231685e+01 4.3302551901160218e+00 1.7499999964308248e+01 0 0 -1 +19281 1 6.7021712332531877e+01 3.7687787768052421e+00 1.7499999706949920e+00 0 0 0 +19282 1 6.5899367497819128e+01 5.9877581122894723e+00 1.7499999683865795e+00 0 0 0 +19919 1 6.5338195885664348e+01 4.3302551528303495e+00 3.5000000010326602e+00 0 0 0 +19920 1 6.7582883769336206e+01 5.4262812951923394e+00 3.4999999968159079e+00 0 0 0 +19280 1 6.7582883793373426e+01 5.4262813217237413e+00 1.7499999932437696e+01 0 0 -1 +19286 1 6.9266401402800042e+01 4.8648051459160602e+00 1.7499999611027985e+00 0 0 0 +19923 1 6.8705228514073028e+01 3.2073023740674431e+00 3.4999999918054452e+00 0 0 0 +19283 1 6.8705228552496990e+01 3.2073023475366602e+00 1.7499999942244152e+01 0 0 -1 +19290 1 7.2633424865173751e+01 3.7418509410754610e+00 1.7499999681845557e+00 0 0 0 +19331 1 7.1511092492478937e+01 5.9608314881694584e+00 1.7499999764765657e+00 0 0 0 +19973 1 7.3194616898042213e+01 5.3993616074237289e+00 3.4999999769676600e+00 0 0 0 +19333 1 7.3194617023568355e+01 5.3993615679960971e+00 1.7499999980295605e+01 0 0 -1 +19335 1 7.4878100529707751e+01 4.8378812162035096e+00 1.7499999751538220e+00 0 0 0 +19340 1 7.7122771366901802e+01 5.9339386636332847e+00 1.7499999404228226e+00 0 0 0 +19928 1 7.4316921339791847e+01 3.1803597014109237e+00 3.5000000040991073e+00 0 0 0 +19288 1 7.4316921448572117e+01 3.1803596584690026e+00 1.7499999958787193e+01 0 0 -1 +19339 1 7.8245182007280903e+01 3.7148331136586408e+00 1.7499999947641973e+00 0 0 0 +19344 1 8.0489604645429722e+01 4.8104684717677904e+00 1.7500000358974284e+00 0 0 0 +19978 1 7.8805836178499490e+01 5.3722423862464446e+00 3.5000000085696348e+00 0 0 0 +19981 1 7.9929644935840031e+01 3.1537828026549848e+00 3.5000000005489516e+00 0 0 0 +19338 1 7.8805836339564166e+01 5.3722423866746682e+00 1.7499999984334814e+01 0 0 -1 +19341 1 7.9929645074252221e+01 3.1537828003525168e+00 6.9749104587539313e-08 0 0 0 +19397 1 8.2732309238131691e+01 5.9046260067020615e+00 1.7500000949457142e+00 0 0 0 +19348 1 8.3862485839197831e+01 3.6926628700941850e+00 1.7500000841580725e+00 0 0 0 +19401 1 8.6132427537733790e+01 4.8013199943721467e+00 1.7500000423650741e+00 0 0 0 +19986 1 8.5523444824982434e+01 3.1251652205063611e+00 3.4999999422799286e+00 0 0 0 +20039 1 8.4431592165575125e+01 5.3473321763728068e+00 3.4999999745425656e+00 0 0 0 +19346 1 8.5523444795466688e+01 3.1251653520697746e+00 1.4225834055026100e-07 0 0 0 +19399 1 8.4431592194471435e+01 5.3473323050221824e+00 1.9249728128272429e-07 0 0 0 +19404 1 8.9214901869134749e+01 3.5993754460322034e+00 1.7499998930184764e+00 0 0 0 +19405 1 8.8549511240659712e+01 5.8993032258612725e+00 1.7499999845864482e+00 0 0 0 +641 1 9.0272007528377387e+01 5.1149969123787757e+00 3.4999998246994832e+00 -1 0 0 +22400 1 8.9214901227963736e+01 4.2337277946056091e+01 1.5749999981161817e+01 0 0 0 +19224 1 4.6258347882314894e+01 8.8489919400462487e+00 5.5376872691846412e-09 0 0 0 +19225 1 4.5697175802997883e+01 7.1914888798763874e+00 1.7500000100833419e+00 0 0 0 +19226 1 4.7380691710936802e+01 6.6300125317035103e+00 4.2975306558828456e-09 0 0 0 +19229 1 4.7941863716490403e+01 8.2875155487194316e+00 1.7499999883130135e+00 0 0 0 +19864 1 4.6258347859217338e+01 8.8489919354407149e+00 3.4999999881873891e+00 0 0 0 +19233 1 5.1308895534252017e+01 7.1645628233783754e+00 1.7499999666911008e+00 0 0 0 +19261 1 5.0186551589011337e+01 9.3835422065080909e+00 1.7499999774062074e+00 0 0 0 +19265 1 5.3553583394364324e+01 8.2605895465373873e+00 1.7499999703113127e+00 0 0 0 +19871 1 5.2992411380493806e+01 6.6030864689419566e+00 3.5000000216294276e+00 0 0 0 +19903 1 5.1870067439572352e+01 8.8220658912476289e+00 3.5000000107272866e+00 0 0 0 +19231 1 5.2992411450983909e+01 6.6030864510644083e+00 1.7499999955349704e+01 0 0 -1 +19263 1 5.1870067482784606e+01 8.8220658528474925e+00 1.7499999946690945e+01 0 0 -1 +19269 1 5.6920615190067387e+01 7.1376370646132967e+00 1.7500000452818072e+00 0 0 0 +19270 1 5.5798271110727946e+01 9.3566164383102670e+00 1.7500000079844591e+00 0 0 0 +19908 1 5.7481787019014824e+01 8.7951401609935083e+00 3.4999999958734773e+00 0 0 0 +19268 1 5.7481787121935376e+01 8.7951401539670044e+00 3.1749824967513266e-08 0 0 0 +19271 1 5.8604131436808622e+01 6.5761608518673542e+00 6.1452186714575126e-08 0 0 0 +19274 1 5.9165303201330815e+01 8.2336639259479991e+00 1.7500000462232537e+00 0 0 0 +19911 1 5.8604131364990913e+01 6.5761608444561306e+00 3.5000000142423158e+00 0 0 0 +19276 1 6.4215851546117733e+01 6.5492347012851955e+00 2.0130415321299031e-09 0 0 0 +19278 1 6.2532335445521937e+01 7.1107111248278736e+00 1.7500000444932053e+00 0 0 0 +19319 1 6.1409991056496821e+01 9.3296904706479324e+00 1.7500000524273722e+00 0 0 0 +19321 1 6.3093507153092702e+01 8.7682141399008113e+00 8.7146363304110409e-09 0 0 0 +19916 1 6.4215851555982283e+01 6.5492346734283542e+00 3.4999999944439351e+00 0 0 0 +19961 1 6.3093507150361674e+01 8.7682140781289561e+00 3.5000000261528297e+00 0 0 0 +19323 1 6.4777023466655933e+01 8.2067376430145753e+00 1.7500000238781168e+00 0 0 0 +19328 1 6.7021711781828202e+01 9.3027640684533530e+00 1.7499999839576021e+00 0 0 0 +19965 1 6.6460539678802860e+01 7.6452610905309095e+00 3.4999999932061368e+00 0 0 0 +19325 1 6.6460539713563989e+01 7.6452610779219183e+00 1.7499999971913621e+01 0 0 -1 +19327 1 6.8144055077125643e+01 7.0837842266051432e+00 1.7499999685168006e+00 0 0 0 +19332 1 7.0388741549882013e+01 8.1798100920614374e+00 1.7499999543008613e+00 0 0 0 +19336 1 7.3755788878224280e+01 7.0568562056726929e+00 1.7499999602602796e+00 0 0 0 +19385 1 7.2633424581568860e+01 9.2758362499391183e+00 1.7499999738785801e+00 0 0 0 +19970 1 7.2072254513728737e+01 7.6183300478830773e+00 3.4999999742335381e+00 0 0 0 +19330 1 7.2072254591350031e+01 7.6183300126520193e+00 1.7499999964132957e+01 0 0 -1 +19389 1 7.6000493947921470e+01 8.1528696521638100e+00 1.7499999545665743e+00 0 0 0 +19393 1 7.9367523095911395e+01 7.0301378670492722e+00 1.7500000038079286e+00 0 0 0 +19394 1 7.8245181860987373e+01 9.2488186325658521e+00 1.7499999667804120e+00 0 0 0 +20031 1 7.7684225800610221e+01 7.5915083086334185e+00 3.4999999992713864e+00 0 0 0 +19391 1 7.7684225961076322e+01 7.5915082894550494e+00 1.7499999962643237e+01 0 0 -1 +19398 1 8.1612971740573684e+01 8.1269950549362147e+00 1.7500000627718191e+00 0 0 0 +20036 1 8.3289037723853426e+01 7.5633519269481928e+00 3.4999999981691077e+00 0 0 0 +19396 1 8.3289037878770117e+01 7.5633520099583409e+00 2.0593756324555896e-07 0 0 0 +19402 1 8.4964194862416008e+01 6.9945379267976868e+00 1.7500001114217250e+00 0 0 0 +19452 1 8.3862485678323381e+01 9.2266488131682021e+00 1.7500001343545948e+00 0 0 0 +19456 1 8.7168423475019765e+01 8.0510998611682769e+00 1.7500001246273400e+00 0 0 0 +19459 1 8.9214901379848726e+01 9.1333616043284618e+00 1.7500001243595185e+00 0 0 0 +20098 1 8.9045576419117793e+01 7.4987161098120039e+00 3.4999998775419381e+00 0 0 0 +19458 1 8.9045576369212966e+01 7.4987163467954359e+00 1.7639157031582014e-07 0 0 0 +19257 1 4.6819519882953955e+01 1.0506495067919751e+01 1.7499999855746602e+00 0 0 0 +19896 1 4.7380691870996912e+01 1.2163998229905843e+01 3.5000000149507704e+00 0 0 0 +19260 1 5.0747723455226925e+01 1.1041045287404177e+01 1.7499999964168211e+01 0 0 -1 +19262 1 4.9064207667882052e+01 1.1602521692880114e+01 1.7499999966497095e+00 0 0 0 +19900 1 5.0747723436947574e+01 1.1041045311633406e+01 3.5000000136627030e+00 0 0 0 +19266 1 5.2431239275125158e+01 1.0479568968750668e+01 1.7499999723820299e+00 0 0 0 +19311 1 5.4675926913966585e+01 1.1575595720341163e+01 1.7499999790795864e+00 0 0 0 +19953 1 5.6359442912758702e+01 1.1014119529687973e+01 3.5000000006520389e+00 0 0 0 +19313 1 5.6359443001951696e+01 1.1014119485040759e+01 1.7499999988140086e+01 0 0 -1 +19315 1 5.8042958949620463e+01 1.0452643267426698e+01 1.7500000235797892e+00 0 0 0 +19320 1 6.0287646877555900e+01 1.1548669928108790e+01 1.7500000196531047e+00 0 0 0 +19318 1 6.1971162958483376e+01 1.0987193503494243e+01 2.0284544458179156e-08 0 0 0 +19324 1 6.3654679038605472e+01 1.0425716988019650e+01 1.7500000011588042e+00 0 0 0 +19958 1 6.1971162916613906e+01 1.0987193487480605e+01 3.4999999923690677e+00 0 0 0 +19377 1 6.5899366929744090e+01 1.1521743361689929e+01 1.7499999949375262e+00 0 0 0 +19381 1 6.9266400865558325e+01 1.0398790364716277e+01 1.7499999775509585e+00 0 0 0 +20020 1 6.9827570430227482e+01 1.2056291985636038e+01 3.4999999871560825e+00 0 0 0 +19380 1 6.9827570501026884e+01 1.2056291965939922e+01 1.7499999992927489e+01 0 0 -1 +19386 1 7.1511092037137985e+01 1.1494816742802536e+01 1.7499999678134788e+00 0 0 0 +20023 1 7.0949918228998499e+01 9.8373152270883111e+00 3.4999999994740949e+00 0 0 0 +19383 1 7.0949918328519843e+01 9.8373152185972383e+00 1.7499999961164793e+01 0 0 -1 +19390 1 7.4878100254466219e+01 1.0371866576368332e+01 1.7499999375943669e+00 0 0 0 +19444 1 7.7122771058177165e+01 1.1467924153476835e+01 1.7499999502210579e+00 0 0 0 +20028 1 7.6561517142298896e+01 9.8103317099983141e+00 3.4999999704787608e+00 0 0 0 +20082 1 7.5439349776116998e+01 1.2029394140787401e+01 3.4999999763682590e+00 0 0 0 +19388 1 7.6561517277505715e+01 9.8103317122777458e+00 1.7499999940504452e+01 0 0 -1 +19442 1 7.5439349901390415e+01 1.2029394141428261e+01 1.7499999952572960e+01 0 0 -1 +19448 1 8.0489604492535790e+01 1.0344454205369251e+01 1.7500000413961891e+00 0 0 0 +19453 1 8.2732308987280987e+01 1.1438611912987932e+01 1.7500001161906329e+00 0 0 0 +20087 1 8.1049144402759083e+01 1.2001881697603181e+01 3.5000000548981225e+00 0 0 0 +20090 1 8.2176994692694464e+01 9.7844867764120593e+00 3.5000000438166090e+00 0 0 0 +19447 1 8.1049144622558174e+01 1.2001881706734789e+01 5.4975361871526937e-08 0 0 0 +19450 1 8.2176994898746301e+01 9.7844868194712262e+00 1.4339993639271969e-07 0 0 0 +19457 1 8.6132427416570380e+01 1.0335306075725750e+01 1.7500002019265668e+00 0 0 0 +20149 1 8.6710921847663542e+01 1.1979234253777333e+01 3.5000000004012808e+00 0 0 0 +19509 1 8.6710921927167732e+01 1.1979234417848112e+01 3.1388251325836645e-07 0 0 0 +19511 1 8.8549511169925395e+01 1.1433289305261990e+01 1.7500002149052183e+00 0 0 0 +20095 1 8.7753274284549633e+01 9.7762790061380400e+00 3.4999998551461888e+00 0 0 0 +19455 1 8.7753274374049766e+01 9.7762791476312518e+00 3.6387051936147456e-07 0 0 0 +19258 1 4.5697176021429343e+01 1.2725474618254223e+01 1.7499999988591159e+00 0 0 0 +19303 1 4.7941863836811109e+01 1.3821501260096921e+01 1.7500000242804756e+00 0 0 0 +19941 1 4.6258348044211715e+01 1.4382977664214843e+01 3.4999999947500826e+00 0 0 0 +19307 1 5.1308895462445157e+01 1.2698548449477242e+01 1.7499999782022375e+00 0 0 0 +19308 1 5.0186551575967783e+01 1.4917527886876250e+01 1.7500000035099539e+00 0 0 0 +19942 1 4.8503035805238753e+01 1.5479004366115674e+01 3.5000000129080258e+00 0 0 0 +19945 1 4.9625379637149315e+01 1.3260024756108850e+01 3.5000000328281753e+00 0 0 0 +19305 1 4.9625379662558302e+01 1.3260024727942506e+01 1.7499999975833031e+01 0 0 -1 +19312 1 5.3553583152399604e+01 1.3794575152418082e+01 1.7499999743217711e+00 0 0 0 +20003 1 5.4114754919669998e+01 1.5452078344217426e+01 3.5000000032853902e+00 0 0 0 +19363 1 5.4114754968651425e+01 1.5452078317912800e+01 1.7499999953218623e+01 0 0 -1 +19316 1 5.6920614723347668e+01 1.2671622523510210e+01 1.7499999934493145e+00 0 0 0 +19365 1 5.5798270755189144e+01 1.4890601984354728e+01 1.7499999717572683e+00 0 0 0 +19950 1 5.5237098939149448e+01 1.3233098958720802e+01 3.4999999932569827e+00 0 0 0 +19310 1 5.5237098993426208e+01 1.3233098924123519e+01 1.7499999968407600e+01 0 0 -1 +19369 1 5.9165302643269129e+01 1.3767649314015605e+01 1.7500000060376275e+00 0 0 0 +20008 1 5.9726474413930184e+01 1.5425152355380602e+01 3.4999999546558977e+00 0 0 0 +20011 1 6.0848818594603351e+01 1.3206172899386967e+01 3.4999999705595366e+00 0 0 0 +19368 1 5.9726474470793647e+01 1.5425152363732552e+01 1.5231461200222277e-08 0 0 0 +19371 1 6.0848818639492052e+01 1.3206172895458215e+01 2.1599747515088107e-08 0 0 0 +19373 1 6.2532334849813402e+01 1.2644696470229698e+01 1.7500000140097798e+00 0 0 0 +19374 1 6.1409990473890574e+01 1.4863675890342986e+01 1.7500000057101994e+00 0 0 0 +19378 1 6.4777022812640254e+01 1.3740722906662016e+01 1.7499999974413780e+00 0 0 0 +19430 1 6.5338194709851393e+01 1.5398225736024406e+01 1.7499999990675111e+01 0 0 -1 +19432 1 6.7021711209801040e+01 1.4836749271928577e+01 1.7499999978862824e+00 0 0 0 +20070 1 6.5338194652513664e+01 1.5398225725289750e+01 3.5000000167643042e+00 0 0 0 +19382 1 6.8144054515828714e+01 1.2617769435325892e+01 1.7499999728635258e+00 0 0 0 +19436 1 7.0388741029959874e+01 1.3713795312510614e+01 1.7500000046048767e+00 0 0 0 +20074 1 6.8705227472538724e+01 1.4275272811404491e+01 3.4999999968772619e+00 0 0 0 +19434 1 6.8705227541038568e+01 1.4275272815807980e+01 1.7499999985180335e+01 0 0 -1 +19440 1 7.3755788409806200e+01 1.2590841502563507e+01 1.7499999591627111e+00 0 0 0 +19441 1 7.2633423995924275e+01 1.4809821527285292e+01 1.7499999776666002e+00 0 0 0 +19445 1 7.6000493442245244e+01 1.3686855042956132e+01 1.7499999280870115e+00 0 0 0 +20079 1 7.4316920616251792e+01 1.4248330399298531e+01 3.4999999756994056e+00 0 0 0 +19439 1 7.4316920701886033e+01 1.4248330406306760e+01 1.7499999955820581e+01 0 0 -1 +19449 1 7.9367522772192999e+01 1.2564123506472793e+01 1.7499999751091946e+00 0 0 0 +19499 1 7.8245181379277881e+01 1.4782804231842658e+01 1.7499999465503191e+00 0 0 0 +20141 1 7.9929644355111250e+01 1.4221754148128042e+01 3.5000000148311199e+00 0 0 0 +19501 1 7.9929644582926215e+01 1.4221754131711208e+01 1.7499999994139689e+01 0 0 -1 +19503 1 8.1612971301991806e+01 1.3660980876110767e+01 1.7500000546843879e+00 0 0 0 +19507 1 8.4964194666850759e+01 1.2528524055033248e+01 1.7500002007550413e+00 0 0 0 +19508 1 8.3862485250255773e+01 1.4760634800652896e+01 1.7500001439022004e+00 0 0 0 +20146 1 8.5523444220682009e+01 1.4193137367799745e+01 3.5000000386560335e+00 0 0 0 +19506 1 8.5523444419910007e+01 1.4193137362386222e+01 2.7204794945719797e-07 0 0 0 +19512 1 8.7168423020253854e+01 1.3585085766848390e+01 1.7500002318179373e+00 0 0 0 +19564 1 8.9214901824772696e+01 1.4667347676852911e+01 1.7500002577708642e+00 0 0 0 +19304 1 4.6819519989384098e+01 1.6040480750335625e+01 1.7500000204646304e+00 0 0 0 +19354 1 4.5697176037938519e+01 1.8259460298632852e+01 1.7499999830633115e+00 0 0 0 +19995 1 4.7380691873137202e+01 1.7697983915774962e+01 3.5000000216332512e+00 0 0 0 +19357 1 4.9064207701013117e+01 1.7136507413896521e+01 1.7499999997289593e+00 0 0 0 +19362 1 5.1308895322256589e+01 1.8232534156436522e+01 1.7499999884744388e+00 0 0 0 +19999 1 5.0747723389146749e+01 1.6575031012504635e+01 3.5000000101582995e+00 0 0 0 +19996 1 4.9625379562007751e+01 1.8794010478072359e+01 3.5000000222802012e+00 0 0 0 +19361 1 5.2431239107270443e+01 1.6013554627379722e+01 1.7499999765269638e+00 0 0 0 +19366 1 5.4675926675233832e+01 1.7109581412481511e+01 1.7499999653885809e+00 0 0 0 +20000 1 5.2992411007958125e+01 1.7671057746099400e+01 3.5000000206142734e+00 0 0 0 +19360 1 5.2992411038176982e+01 1.7671057725471414e+01 1.7499999938980096e+01 0 0 -1 +19420 1 5.6920614382822869e+01 1.8205608198533870e+01 1.7499999710417189e+00 0 0 0 +19370 1 5.8042958467994829e+01 1.5986628799946359e+01 1.7499999745545263e+00 0 0 0 +19424 1 6.0287646338258547e+01 1.7082655404201201e+01 1.7499999996704232e+00 0 0 0 +20062 1 5.8604130387402634e+01 1.7644131880830770e+01 3.4999999450896260e+00 0 0 0 +19422 1 5.8604130449126110e+01 1.7644131886576400e+01 1.9327631756637450e-08 0 0 0 +19428 1 6.3654678417548261e+01 1.5959702304538613e+01 1.7500000107399682e+00 0 0 0 +19429 1 6.2532334292557671e+01 1.8178681918364397e+01 1.7500000057594181e+00 0 0 0 +20067 1 6.4215850331710641e+01 1.7617205292356697e+01 3.5000000028297262e+00 0 0 0 +19427 1 6.4215850373374167e+01 1.7617205316916234e+01 8.4021497208484466e-09 0 0 0 +19433 1 6.5899366324458413e+01 1.7055728614498832e+01 1.7500000030301670e+00 0 0 0 +19485 1 6.6460538562055007e+01 1.8713231558237283e+01 6.9460917138355214e-09 0 0 0 +20125 1 6.6460538503580366e+01 1.8713231569885355e+01 3.5000000217433196e+00 0 0 0 +20071 1 6.7582882600810947e+01 1.6494251730509557e+01 3.5000000233586004e+00 0 0 0 +19431 1 6.7582882649840244e+01 1.6494251737226030e+01 1.4666600427913170e-09 0 0 0 +19437 1 6.9266400310770024e+01 1.5932775562554166e+01 1.7499999973407068e+00 0 0 0 +19487 1 6.8144053910095991e+01 1.8151754648995141e+01 1.7500000138232903e+00 0 0 0 +19490 1 7.2072253402639561e+01 1.8686300573707030e+01 1.5568029297427245e-08 0 0 0 +19491 1 7.1511091423390340e+01 1.7028801981325863e+01 1.7499999971732298e+00 0 0 0 +19496 1 7.3755787763057327e+01 1.8124826852543599e+01 1.7499999566326667e+00 0 0 0 +20130 1 7.2072253391639833e+01 1.8686300567518209e+01 3.4999999900714962e+00 0 0 0 +20133 1 7.3194615926391492e+01 1.6467332178542502e+01 3.4999999540217397e+00 0 0 0 +19493 1 7.3194615971876999e+01 1.6467332217537152e+01 2.7553829972210571e-09 0 0 0 +19495 1 7.4878099641928969e+01 1.5905851969309547e+01 1.7499999565757816e+00 0 0 0 +19500 1 7.7122770436594905e+01 1.7001909671080245e+01 1.7499999137069373e+00 0 0 0 +19551 1 7.7684224808045556e+01 1.8659479386704636e+01 1.7499999924565355e+01 0 0 -1 +19553 1 7.9367522077994352e+01 1.8098109180297975e+01 1.7499999348978033e+00 0 0 0 +19504 1 8.0489603912567006e+01 1.5878439928863020e+01 1.7499999884702282e+00 0 0 0 +20138 1 7.8805835339845970e+01 1.6440213605481354e+01 3.4999999924990628e+00 0 0 0 +20191 1 7.7684224727112195e+01 1.8659479390759071e+01 3.4999999742650614e+00 0 0 0 +19498 1 7.8805835493242142e+01 1.6440213605191730e+01 1.7499999919123248e+01 0 0 -1 +19556 1 8.3289036949376893e+01 1.8631323839568729e+01 1.0134657985210611e-07 0 0 0 +19557 1 8.2732308420582129e+01 1.6972597824378628e+01 1.7500000629275079e+00 0 0 0 +20196 1 8.3289036738312362e+01 1.8631323892881603e+01 3.4999999920203821e+00 0 0 0 +19561 1 8.6132426955056602e+01 1.5869292158449225e+01 1.7500001535413880e+00 0 0 0 +19562 1 8.4964194103348262e+01 1.8062510045327794e+01 1.7500001198543691e+00 0 0 0 +20199 1 8.4431591388668764e+01 1.6415304295474776e+01 3.5000000237524538e+00 0 0 0 +19559 1 8.4431591604336646e+01 1.6415304245692944e+01 1.8974527504972335e-07 0 0 0 +22397 1 8.7168422040658427e+01 4.1255016133079437e+01 1.5749999974648146e+01 0 0 0 +19565 1 8.8549510753421984e+01 1.6967275368017852e+01 1.7500002276213813e+00 0 0 0 +19618 1 8.9045576195329801e+01 1.8566688262247713e+01 3.6820332238551080e-07 0 0 0 +20258 1 8.9045576168485780e+01 1.8566688405845923e+01 3.5000000693528657e+00 0 0 0 +646 1 9.0272007528377387e+01 1.6182969311117123e+01 3.4999999973088776e+00 -1 0 0 +19358 1 4.7941863810086865e+01 1.9355486940195846e+01 1.7499999919460827e+00 0 0 0 +19408 1 4.6819519938766561e+01 2.1574466500960529e+01 1.7499999644289566e+00 0 0 0 +19993 1 4.6258347992153119e+01 1.9916963368338994e+01 3.4999999818331471e+00 0 0 0 +19412 1 5.0186551451934278e+01 2.0451513620724480e+01 1.7499999893516363e+00 0 0 0 +20050 1 4.8503035720451507e+01 2.1012990123031681e+01 3.4999999972614373e+00 0 0 0 +20051 1 5.0747723256036565e+01 2.2109016825908238e+01 3.5000000327616632e+00 0 0 0 +19416 1 5.3553582924268646e+01 1.9328560885323661e+01 1.7499999684278320e+00 0 0 0 +19417 1 5.2431238954868284e+01 2.1547540449264250e+01 1.7499999837584914e+00 0 0 0 +20054 1 5.1870067161244741e+01 1.9890037280812912e+01 3.5000000232464514e+00 0 0 0 +19421 1 5.5798270473468449e+01 2.0424587771762770e+01 1.7499999708248637e+00 0 0 0 +20059 1 5.7481786211365879e+01 1.9863111364330909e+01 3.4999999646690765e+00 0 0 0 +20113 1 5.6359442300805071e+01 2.2082090962436524e+01 3.4999999779008863e+00 0 0 0 +19419 1 5.7481786274940816e+01 1.9863111372445662e+01 1.7499999987188652e+01 0 0 -1 +19473 1 5.6359442360938480e+01 2.2082090946058326e+01 1.7499999971659765e+01 0 0 -1 +19425 1 5.9165302220867943e+01 1.9301634992042654e+01 1.7499999929496926e+00 0 0 0 +19475 1 5.8042958154987261e+01 2.1520614612636290e+01 1.7499999761346505e+00 0 0 0 +19479 1 6.1409990034320963e+01 2.0397661473943174e+01 1.7500000097648365e+00 0 0 0 +19484 1 6.3654678022016370e+01 2.1493687803560768e+01 1.7500000111562379e+00 0 0 0 +20121 1 6.3093506008816568e+01 1.9836184904427256e+01 3.5000000079362201e+00 0 0 0 +20118 1 6.1971161961214264e+01 2.2055164527552115e+01 3.4999999835321192e+00 0 0 0 +19481 1 6.3093506059956049e+01 1.9836184918377601e+01 1.9122877570345908e-08 0 0 0 +19478 1 6.1971162007490619e+01 2.2055164530922450e+01 1.0114511788505030e-08 0 0 0 +19483 1 6.4777022301579677e+01 1.9274708266727401e+01 1.7500000347176707e+00 0 0 0 +19488 1 6.7021710678720837e+01 2.0370734556249936e+01 1.7500000297889282e+00 0 0 0 +19492 1 7.0388740406718767e+01 1.9247780547425297e+01 1.7500000066742594e+00 0 0 0 +19541 1 6.9266399762408625e+01 2.1466760846603130e+01 1.7500000407876728e+00 0 0 0 +19543 1 7.0949917126379219e+01 2.0905285743593573e+01 1.5706989626148734e-08 0 0 0 +19545 1 7.2633423366013247e+01 2.0343806865014695e+01 1.7500000085019463e+00 0 0 0 +20183 1 7.0949917086031789e+01 2.0905285737120380e+01 3.5000000126965549e+00 0 0 0 +19548 1 7.6561515932558422e+01 2.0878302715441613e+01 1.7499999966269794e+01 0 0 -1 +19549 1 7.6000492783579944e+01 1.9220840555455908e+01 1.7499999507864890e+00 0 0 0 +19550 1 7.4878098979504429e+01 2.1439837408570753e+01 1.7499999851832535e+00 0 0 0 +20188 1 7.6561515931090057e+01 2.0878302703097095e+01 3.4999999728298792e+00 0 0 0 +19554 1 7.8245180624627196e+01 2.0316789831045021e+01 1.7499999399109365e+00 0 0 0 +19608 1 8.0489603201208183e+01 2.1412425739837165e+01 1.7499999679117351e+00 0 0 0 +19558 1 8.1612970638474366e+01 1.9194966736675422e+01 1.7499999763428158e+00 0 0 0 +19610 1 8.2176993679251822e+01 2.0852458538712760e+01 1.9614639292908418e-08 0 0 0 +20250 1 8.2176993514637886e+01 2.0852458599525551e+01 3.4999999964282051e+00 0 0 0 +19612 1 8.3862484639237593e+01 2.0294620796678814e+01 1.7500000398812192e+00 0 0 0 +19617 1 8.6132426463854642e+01 2.1403278147272552e+01 1.7500001118289605e+00 0 0 0 +19615 1 8.7753273747527231e+01 2.0844251050663729e+01 2.4608977779272303e-07 0 0 0 +19616 1 8.7168422799271497e+01 1.9119071972178880e+01 1.7500001929907854e+00 0 0 0 +19619 1 8.9214901397902494e+01 2.0201333747260588e+01 1.7500002545420450e+00 0 0 0 +20255 1 8.7753273548045684e+01 2.0844251224490279e+01 3.5000000097508415e+00 0 0 0 +19409 1 4.5697176003602003e+01 2.3793446142162367e+01 1.7499999496602847e+00 0 0 0 +19463 1 4.7941863782564795e+01 2.4889472876014850e+01 1.7499999755484223e+00 0 0 0 +20047 1 4.7380691839894219e+01 2.3231969746608531e+01 3.4999999832881095e+00 0 0 0 +19413 1 4.9064207587441409e+01 2.2670493212299643e+01 1.7499999848071546e+00 0 0 0 +19467 1 5.1308895250766895e+01 2.3766520082376445e+01 1.7499999897932179e+00 0 0 0 +20105 1 4.9625379523551153e+01 2.4327996388430130e+01 3.5000000227650951e+00 0 0 0 +19471 1 5.4675926437515699e+01 2.2643567248271012e+01 1.7499999783243929e+00 0 0 0 +19472 1 5.3553582844940237e+01 2.4862546901204741e+01 1.7499999837115026e+00 0 0 0 +20109 1 5.2992410856860850e+01 2.3205043623554737e+01 3.5000000100138577e+00 0 0 0 +19476 1 5.6920614165587700e+01 2.3739594083260354e+01 1.7499999724324395e+00 0 0 0 +20110 1 5.5237098523658901e+01 2.4301070615549460e+01 3.5000000018251876e+00 0 0 0 +19470 1 5.5237098533890958e+01 2.4301070611617021e+01 1.7499999944978409e+01 0 0 -1 +19480 1 6.0287646041618373e+01 2.2616641196648530e+01 1.7499999820940226e+00 0 0 0 +19529 1 5.9165302062046806e+01 2.4835620875790315e+01 1.7499999943341547e+00 0 0 0 +20171 1 6.0848817881819713e+01 2.4274144264492652e+01 3.4999999450957349e+00 0 0 0 +19531 1 6.0848817929711089e+01 2.4274144218407411e+01 7.1949951907426555e-09 0 0 0 +19533 1 6.2532334035415559e+01 2.3712667586338601e+01 1.7499999957867221e+00 0 0 0 +19537 1 6.5899365960672597e+01 2.2589714026372423e+01 1.7500000031962457e+00 0 0 0 +19538 1 6.4777022103880981e+01 2.4808693849104852e+01 1.7499999946501297e+00 0 0 0 +19540 1 6.9827569412923410e+01 2.3124262572682021e+01 2.4932363758728354e-08 0 0 0 +19542 1 6.8144053546998862e+01 2.3685740063807575e+01 1.7500000084525795e+00 0 0 0 +19596 1 7.0388740054173780e+01 2.4781766030657522e+01 1.7500000160974840e+00 0 0 0 +20180 1 6.9827569380998938e+01 2.3124262550890723e+01 3.5000000170785288e+00 0 0 0 +19546 1 7.1511090866268589e+01 2.2562787367607914e+01 1.7500000172084389e+00 0 0 0 +19600 1 7.3755787164190309e+01 2.3658812321863511e+01 1.7500000250802188e+00 0 0 0 +19602 1 7.5439348542970123e+01 2.3097365074585337e+01 6.9638178252451190e-09 0 0 0 +19604 1 7.7122769737372806e+01 2.2535895251880458e+01 1.7499999819737853e+00 0 0 0 +19605 1 7.6000492158845049e+01 2.4754826115687980e+01 1.7500000093969190e+00 0 0 0 +20242 1 7.5439348522907153e+01 2.3097365071727452e+01 3.5000000133945912e+00 0 0 0 +19609 1 7.9367521385150823e+01 2.3632094921487713e+01 1.7499999748979946e+00 0 0 0 +19607 1 8.1049143169954789e+01 2.3069853332361532e+01 1.7499999979132859e+01 0 0 -1 +19613 1 8.2732307757012720e+01 2.2506583773836798e+01 1.7499999989557680e+00 0 0 0 +19663 1 8.1612969962288219e+01 2.4728952603713829e+01 1.7500000037937742e+00 0 0 0 +20247 1 8.1049143113904151e+01 2.3069853356256306e+01 3.5000000345081097e+00 0 0 0 +19667 1 8.4964193531860005e+01 2.3596496030792931e+01 1.7500000380079193e+00 0 0 0 +19669 1 8.6710921039407665e+01 2.3047206309673481e+01 1.4795072430320040e-07 0 0 0 +20309 1 8.6710920866505901e+01 2.3047206466291009e+01 3.5000000130031133e+00 0 0 0 +19671 1 8.8549510415912295e+01 2.2501261331887115e+01 1.7500001655523834e+00 0 0 0 +19672 1 8.7168422393105800e+01 2.4653057908763575e+01 1.7500000663200723e+00 0 0 0 +19464 1 4.6819519936840400e+01 2.7108452478585217e+01 1.7499999651680493e+00 0 0 0 +20100 1 4.5136004040573617e+01 2.7669928953183131e+01 3.4999999837875841e+00 0 0 0 +20101 1 4.6258347981222812e+01 2.5450949255685440e+01 3.4999999366947283e+00 0 0 0 +19468 1 5.0186551467965650e+01 2.5985499670743614e+01 1.7499999926347634e+00 0 0 0 +19517 1 4.9064207667300245e+01 2.8204479349370775e+01 1.7499999902877506e+00 0 0 0 +20159 1 5.0747723324442894e+01 2.7643002948756390e+01 3.4999999844141927e+00 0 0 0 +20102 1 4.8503035746696369e+01 2.6546976132234938e+01 3.4999999703929374e+00 0 0 0 +19521 1 5.2431238971540580e+01 2.7081526555751136e+01 1.7499999836289726e+00 0 0 0 +19526 1 5.4675926569960119e+01 2.8177553475318682e+01 1.7499999703142330e+00 0 0 0 +20106 1 5.1870067134922252e+01 2.5424023296426583e+01 3.5000000032474894e+00 0 0 0 +20163 1 5.4114754700552652e+01 2.6520050244896701e+01 3.4999999980579877e+00 0 0 0 +19525 1 5.5798270418047380e+01 2.5958573820999931e+01 1.7499999556617076e+00 0 0 0 +19530 1 5.8042958143163716e+01 2.7054600630789601e+01 1.7499999464743090e+00 0 0 0 +19584 1 6.0287646122483380e+01 2.8150627148834072e+01 1.7499999563468736e+00 0 0 0 +20168 1 5.9726473993518667e+01 2.6493123998655403e+01 3.4999999483289055e+00 0 0 0 +19528 1 5.9726474031616739e+01 2.6493124007945905e+01 1.7499999984716354e+01 0 0 -1 +19534 1 6.1409989945735731e+01 2.5931647302184501e+01 1.7499999866291835e+00 0 0 0 +19588 1 6.3654678012085270e+01 2.7027673564017277e+01 1.7499999997133082e+00 0 0 0 +19592 1 6.7021710527797126e+01 2.5904720109699721e+01 1.7500000172402137e+00 0 0 0 +19593 1 6.5899365982508797e+01 2.8123699769039394e+01 1.7499999980403833e+00 0 0 0 +19591 1 6.7582882132662519e+01 2.7562222752403009e+01 1.7499999998028013e+01 0 0 -1 +20231 1 6.7582882113679062e+01 2.7562222736203235e+01 3.5000000081209341e+00 0 0 0 +20230 1 6.5338194142134441e+01 2.6466196763075708e+01 3.4999999935270480e+00 0 0 0 +19590 1 6.5338194166430114e+01 2.6466196754936213e+01 1.7499999992413436e+01 0 0 -1 +19594 1 6.8705226704233738e+01 2.5343243559474331e+01 1.7805527174043267e-08 0 0 0 +19597 1 6.9266399632474076e+01 2.7000746473184726e+01 1.7499999981909198e+00 0 0 0 +20234 1 6.8705226653152707e+01 2.5343243552055696e+01 3.5000000051993929e+00 0 0 0 +19601 1 7.2633422929262750e+01 2.5877792410910860e+01 1.7500000164748593e+00 0 0 0 +19651 1 7.1511090665188291e+01 2.8096773028882893e+01 1.7500000063955858e+00 0 0 0 +19653 1 7.3194614993697670e+01 2.7535303238953411e+01 4.0358856515545920e-08 0 0 0 +20293 1 7.3194614973935373e+01 2.7535303225814552e+01 3.4999999662110675e+00 0 0 0 +19599 1 7.4316919446427718e+01 2.5316301366945648e+01 2.1313685829607564e-08 0 0 0 +19655 1 7.4878098543215174e+01 2.6973823038209250e+01 1.7500000072227837e+00 0 0 0 +19660 1 7.7122769309183127e+01 2.8069880977972936e+01 1.7499999824373607e+00 0 0 0 +20239 1 7.4316919435494199e+01 2.5316301350895184e+01 3.5000000063191208e+00 0 0 0 +19658 1 7.8805834156282828e+01 2.7508185076093032e+01 1.7499999984222811e+01 0 0 -1 +19659 1 7.8245180064818058e+01 2.5850775569792205e+01 1.7500000059272374e+00 0 0 0 +19661 1 7.9929643101108695e+01 2.5289725653691885e+01 1.7499999989578424e+01 0 0 -1 +19664 1 8.0489602635730790e+01 2.6946411581201183e+01 1.7500000072319637e+00 0 0 0 +20298 1 7.8805834137128485e+01 2.7508185065894750e+01 3.5000000509420728e+00 0 0 0 +20301 1 7.9929643064756291e+01 2.5289725680239435e+01 3.5000000584292010e+00 0 0 0 +19717 1 8.2732307228794866e+01 2.8040569658571076e+01 1.7500000056864804e+00 0 0 0 +19666 1 8.5523443268444183e+01 2.5261109269929573e+01 4.4901037281478632e-08 0 0 0 +19668 1 8.3862484014501717e+01 2.5828606701371875e+01 1.7500000079732299e+00 0 0 0 +19721 1 8.6132425999864836e+01 2.6937264063810229e+01 1.7500000175284900e+00 0 0 0 +20306 1 8.5523443149422533e+01 2.5261109418081791e+01 3.5000000184441542e+00 0 0 0 +20359 1 8.4431590323496280e+01 2.7483276243132828e+01 3.5000000395981745e+00 0 0 0 +19719 1 8.4431590411427877e+01 2.7483276152716595e+01 7.4218153975046038e-09 0 0 0 +19724 1 8.9214901314982939e+01 2.5735319681982293e+01 1.7500000777752633e+00 0 0 0 +19725 1 8.8549509931187245e+01 2.8035247224670712e+01 1.7499999990720272e+00 0 0 0 +664 1 9.0272007528377102e+01 2.7250941317055293e+01 3.4999999597153200e+00 -1 0 0 +3204 1 9.0272007528376861e+01 4.3852899542812430e+01 1.7499999965186387e+01 -1 0 -1 +19514 1 4.5697175963970203e+01 2.9327432145094406e+01 1.7499999588725119e+00 0 0 0 +19518 1 4.7941863831540537e+01 3.0423459026688253e+01 1.7499999647345150e+00 0 0 0 +20153 1 4.6258347988753187e+01 3.0984935355758299e+01 3.4999999611826369e+00 0 0 0 +20155 1 4.7380691847304135e+01 2.8765955777327090e+01 3.4999999882142543e+00 0 0 0 +19522 1 5.1308895322495019e+01 2.9300506295464171e+01 1.7499999996353219e+00 0 0 0 +19572 1 5.0186551562608095e+01 3.1519485931901613e+01 1.7499999969066924e+00 0 0 0 +20156 1 4.9625379605480120e+01 2.9861982574145539e+01 3.4999999936909454e+00 0 0 0 +19576 1 5.3553583014274693e+01 3.0396533172636929e+01 1.7499999751294133e+00 0 0 0 +20160 1 5.2992410983517438e+01 2.8739029845343811e+01 3.5000000185428575e+00 0 0 0 +20214 1 5.1870067280191670e+01 3.0958009568361252e+01 3.5000000042808179e+00 0 0 0 +19580 1 5.6920614352164421e+01 2.9273580296831810e+01 1.7499999685584120e+00 0 0 0 +19581 1 5.5798270671151272e+01 3.1492560108942509e+01 1.7499999566363580e+00 0 0 0 +20218 1 5.5237098712951976e+01 2.9835056859872616e+01 3.4999999681441492e+00 0 0 0 +20219 1 5.7481786391363755e+01 3.0931083576644042e+01 3.4999999607966363e+00 0 0 0 +19579 1 5.7481786409621392e+01 3.0931083590089845e+01 1.7499999964854620e+01 0 0 -1 +19585 1 5.9165302288215656e+01 3.0369607034384753e+01 1.7499999859751600e+00 0 0 0 +20222 1 5.8604130251870899e+01 2.8712103856063116e+01 3.4999999440150718e+00 0 0 0 +19582 1 5.8604130299870604e+01 2.8712103822732885e+01 1.7499999981386708e+01 0 0 -1 +19589 1 6.2532334208165146e+01 2.9246653496378674e+01 1.7499999833760909e+00 0 0 0 +19639 1 6.1409990274136518e+01 3.1465633383733813e+01 1.7500000011296353e+00 0 0 0 +20227 1 6.4215850170461394e+01 2.8685176656448686e+01 3.4999999760361589e+00 0 0 0 +20281 1 6.3093506180072211e+01 3.0904156603050144e+01 3.5000000124321158e+00 0 0 0 +19587 1 6.4215850161845012e+01 2.8685176673805142e+01 1.8646157052609756e-08 0 0 0 +19641 1 6.3093506196049503e+01 3.0904156595941288e+01 5.2610711541466352e-09 0 0 0 +19643 1 6.4777022334370201e+01 3.0342679715746492e+01 1.7500000266580020e+00 0 0 0 +19645 1 6.6460538413993348e+01 2.9781202876181705e+01 2.3882143170463942e-08 0 0 0 +19648 1 6.7021710758868480e+01 3.1438706036303053e+01 1.7500000263225945e+00 0 0 0 +20285 1 6.6460538401160605e+01 2.9781202882259326e+01 3.5000000067572770e+00 0 0 0 +19647 1 6.8144053600004568e+01 2.9219725835553774e+01 1.7500000013328196e+00 0 0 0 +19652 1 7.0388740057433765e+01 3.0315751834159926e+01 1.7499999990469992e+00 0 0 0 +19650 1 7.2072252777737944e+01 2.9754271803673841e+01 1.9945035666559302e-08 0 0 0 +19656 1 7.3755786957439028e+01 2.9192798068209562e+01 1.7499999738512093e+00 0 0 0 +19705 1 7.2633422924378607e+01 3.1411778280264461e+01 1.7499999885610094e+00 0 0 0 +20290 1 7.2072252780280593e+01 2.9754271823783220e+01 3.4999999600254958e+00 0 0 0 +19709 1 7.6000491919549162e+01 3.0288811955561908e+01 1.7499999662053571e+00 0 0 0 +19711 1 7.7684223739399002e+01 2.9727450845936328e+01 1.7499999978759810e+01 0 0 -1 +19713 1 7.9367520960657444e+01 2.9166080757380971e+01 1.7499999883267865e+00 0 0 0 +19714 1 7.8245179753863184e+01 3.1384761461337135e+01 1.7499999583992705e+00 0 0 0 +20351 1 7.7684223727754045e+01 2.9727450844445915e+01 3.5000000069190138e+00 0 0 0 +19718 1 8.1612969586698100e+01 3.0262938526285318e+01 1.7499999868974692e+00 0 0 0 +20356 1 8.3289035751977735e+01 2.9699295769302026e+01 3.5000000429046008e+00 0 0 0 +19716 1 8.3289035813512243e+01 2.9699295704575576e+01 1.7499999989318049e+01 0 0 -1 +19722 1 8.4964193159477816e+01 2.9130481994737206e+01 1.7499999982993739e+00 0 0 0 +19767 1 8.3862483748674705e+01 3.1362592685198585e+01 1.7500000081208815e+00 0 0 0 +19771 1 8.7168422091075527e+01 3.0187043862532324e+01 1.7499999981354617e+00 0 0 0 +19774 1 8.9214901335348515e+01 3.1269305727769769e+01 1.7499999977762783e+00 0 0 0 +20413 1 8.9045575810866325e+01 2.9634660363865450e+01 3.4999999528462289e+00 0 0 0 +19773 1 8.9045575864844182e+01 2.9634660244871384e+01 6.5912540148253862e-08 0 0 0 +19568 1 4.6819519996472259e+01 3.2642438676317383e+01 1.7499999707012810e+00 0 0 0 +20207 1 4.7380691971990878e+01 3.4299942062918866e+01 3.4999999786362741e+00 0 0 0 +20206 1 4.5136004073451652e+01 3.3203915074813402e+01 3.4999999739445751e+00 0 0 0 +19573 1 4.9064207746985190e+01 3.3738465641407259e+01 1.7500000102296300e+00 0 0 0 +20210 1 4.8503035832115010e+01 3.2080962368209839e+01 3.4999999886274500e+00 0 0 0 +20211 1 5.0747723451077562e+01 3.3176989266979092e+01 3.5000000340364492e+00 0 0 0 +19577 1 5.2431239181224605e+01 3.2615512912353431e+01 1.7499999887185163e+00 0 0 0 +19631 1 5.4675926805259209e+01 3.3711539782219447e+01 1.7499999934886534e+00 0 0 0 +20215 1 5.4114754913183312e+01 3.2054036569453338e+01 3.4999999764644092e+00 0 0 0 +20269 1 5.2992411214444466e+01 3.4273016198398814e+01 3.4999999918031230e+00 0 0 0 +20273 1 5.6359442704174732e+01 3.3150063401618063e+01 3.4999999822067034e+00 0 0 0 +19635 1 5.8042958538595308e+01 3.2588586903224289e+01 1.7499999656108012e+00 0 0 0 +19640 1 6.0287646588886268e+01 3.3684613353864030e+01 1.7499999882231114e+00 0 0 0 +19644 1 6.3654678396914797e+01 3.2561659613159975e+01 1.7500000272170453e+00 0 0 0 +20278 1 6.1971162452940916e+01 3.3123136529282874e+01 3.4999999918449292e+00 0 0 0 +19638 1 6.1971162470946112e+01 3.3123136513816448e+01 2.4970567593112305e-08 0 0 0 +19697 1 6.5899366408281736e+01 3.3657685804474220e+01 1.7500000089399095e+00 0 0 0 +19700 1 6.9827569612219719e+01 3.4192234365221708e+01 2.4661467335358600e-08 0 0 0 +19701 1 6.9266399810526735e+01 3.2534732441512062e+01 1.7500000338845176e+00 0 0 0 +20340 1 6.9827569593463181e+01 3.4192234378375382e+01 3.5000000125654447e+00 0 0 0 +19703 1 7.0949916902795707e+01 3.1973257229506817e+01 1.3759787598268238e-08 0 0 0 +19706 1 7.1511090804259780e+01 3.3630759089901382e+01 1.7500000046974129e+00 0 0 0 +20343 1 7.0949916892728339e+01 3.1973257258706141e+01 3.4999999887085065e+00 0 0 0 +19708 1 7.6561515183482342e+01 3.1946274265483463e+01 9.3652181872336302e-09 0 0 0 +19710 1 7.4878098462712117e+01 3.2507808971247599e+01 1.7499999717170773e+00 0 0 0 +19757 1 7.5439348134273246e+01 3.4165336823429023e+01 1.0592639058672644e-08 0 0 0 +19759 1 7.7122769162511929e+01 3.3603866982943750e+01 1.7499999762214185e+00 0 0 0 +20348 1 7.6561515206245460e+01 3.1946274268009461e+01 3.4999999399020152e+00 0 0 0 +20397 1 7.5439348167309063e+01 3.4165336804017009e+01 3.4999999772506083e+00 0 0 0 +19763 1 8.0489602374365504e+01 3.2480397560921610e+01 1.7499999686991743e+00 0 0 0 +19768 1 8.2732307050873416e+01 3.3574555705238055e+01 1.7499999898304714e+00 0 0 0 +20402 1 8.1049142462668115e+01 3.4137825288836140e+01 3.5000000205953086e+00 0 0 0 +20405 1 8.2176992662090143e+01 3.1920430447177907e+01 3.5000000342892763e+00 0 0 0 +19762 1 8.1049142473274870e+01 3.4137825268098290e+01 1.7499999985155057e+01 0 0 -1 +19765 1 8.2176992713247742e+01 3.1920430429892132e+01 1.7499999982902636e+01 0 0 -1 +19772 1 8.6132425714320959e+01 3.2471250053708673e+01 1.7499999993363253e+00 0 0 0 +20446 1 8.6710920282151832e+01 3.4115178403291416e+01 3.5000000435984382e+00 0 0 0 +19806 1 8.6710920346202670e+01 3.4115178332422104e+01 2.9594007569725291e-08 0 0 0 +19808 1 8.8549509773809476e+01 3.3569233263143133e+01 1.7499999967142603e+00 0 0 0 +20410 1 8.7753272990252810e+01 3.1912223071748635e+01 3.5000000491680887e+00 0 0 0 +19770 1 8.7753273019702206e+01 3.1912223013273717e+01 2.9065858670252415e-08 0 0 0 +19569 1 4.5697176045889599e+01 3.4861418404833977e+01 1.7499999688107699e+00 0 0 0 +19623 1 4.7941863949277071e+01 3.5957445375807538e+01 1.7499999711957950e+00 0 0 0 +20261 1 4.6258348053077960e+01 3.6518921648106726e+01 3.4999999532429569e+00 0 0 0 +19627 1 5.1308895566916952e+01 3.4834492686473361e+01 1.7499999909029618e+00 0 0 0 +19628 1 5.0186551797798394e+01 3.7053472328295598e+01 1.7499999811857596e+00 0 0 0 +20262 1 4.8503035955165039e+01 3.7614948740983237e+01 3.4999999915024076e+00 0 0 0 +20265 1 4.9625379766198726e+01 3.5395968926010916e+01 3.5000000263073630e+00 0 0 0 +19632 1 5.3553583317635358e+01 3.5930519546358461e+01 1.7500000069792048e+00 0 0 0 +20266 1 5.1870067538632505e+01 3.6491995956982201e+01 3.4999999993283231e+00 0 0 0 +20323 1 5.4114755278315357e+01 3.7588022924720988e+01 3.5000000072288984e+00 0 0 0 +19636 1 5.6920614750465170e+01 3.4807566586083190e+01 1.7499999811039271e+00 0 0 0 +19685 1 5.5798271115670133e+01 3.7026546454016156e+01 1.7499999732656648e+00 0 0 0 +20327 1 5.7481786871888310e+01 3.6465069862957712e+01 3.4999999584034831e+00 0 0 0 +20270 1 5.5237099053070615e+01 3.5369043202230742e+01 3.4999999977777674e+00 0 0 0 +19689 1 5.9165302830431614e+01 3.5903593270061769e+01 1.7499999877513845e+00 0 0 0 +20328 1 5.9726474956229531e+01 3.7561096407627318e+01 3.4999999599273885e+00 0 0 0 +20331 1 6.0848818667250043e+01 3.5342116480547780e+01 3.4999999617494226e+00 0 0 0 +19688 1 5.9726474953063786e+01 3.7561096400380450e+01 4.8033894989287880e-09 0 0 0 +19691 1 6.0848818652960404e+01 3.5342116467208101e+01 3.8025172379706335e-09 0 0 0 +19693 1 6.2532334747359968e+01 3.4780639632588695e+01 1.7500000244366056e+00 0 0 0 +19694 1 6.1409990892067825e+01 3.6999619578229897e+01 1.7500000006179506e+00 0 0 0 +19698 1 6.4777022898545411e+01 3.5876665889271436e+01 1.7500000054458382e+00 0 0 0 +19747 1 6.7021711312115031e+01 3.6972692244805998e+01 1.7500000160763807e+00 0 0 0 +20385 1 6.5338195104676430e+01 3.7534168957396659e+01 3.4999999870472438e+00 0 0 0 +19745 1 6.5338195088039612e+01 3.7534168925685869e+01 1.7499999982179919e+01 0 0 -1 +19702 1 6.8144053973944878e+01 3.4753711949720056e+01 1.7500000300452765e+00 0 0 0 +19749 1 6.8705227289215060e+01 3.6411215642146168e+01 1.1357743957019112e-08 0 0 0 +19751 1 7.0388740418306753e+01 3.5849738042226747e+01 1.7500000180864594e+00 0 0 0 +20389 1 6.8705227240690903e+01 3.6411215673136233e+01 3.5000000116332259e+00 0 0 0 +19755 1 7.3755787019327627e+01 3.4726784146425871e+01 1.7500000074292434e+00 0 0 0 +19756 1 7.2633423191302199e+01 3.6945764521943779e+01 1.7500000411958843e+00 0 0 0 +19754 1 7.4316919437287766e+01 3.6384273366073181e+01 3.5391521468360019e-08 0 0 0 +19760 1 7.6000491923541958e+01 3.5822798070564133e+01 1.7500000115829510e+00 0 0 0 +20394 1 7.4316919457426962e+01 3.6384273356910867e+01 3.5000000086454235e+00 0 0 0 +19764 1 7.9367520818437043e+01 3.4700066845570284e+01 1.7499999663416279e+00 0 0 0 +19796 1 7.8245179798374622e+01 3.6918747681795338e+01 1.7500000046042345e+00 0 0 0 +19798 1 7.9929642637570893e+01 3.6357697738505109e+01 5.6793752539534721e-09 0 0 0 +20438 1 7.9929642683097100e+01 3.6357697749414001e+01 3.5000000013903372e+00 0 0 0 +19800 1 8.1612969470260936e+01 3.5796924661113152e+01 1.7500000024322311e+00 0 0 0 +19804 1 8.4964192980030475e+01 3.4664468018438505e+01 1.7500000061864818e+00 0 0 0 +19805 1 8.3862483627661888e+01 3.6896578822880983e+01 1.7500000047068578e+00 0 0 0 +20443 1 8.5523442756268864e+01 3.6329081443858449e+01 3.5000000617936728e+00 0 0 0 +19803 1 8.5523442785160569e+01 3.6329081403434856e+01 1.6208957503769602e-09 0 0 0 +19809 1 8.7168422022529128e+01 3.5721029936321415e+01 1.7500000057394285e+00 0 0 0 +19830 1 8.9214901216093409e+01 3.6803291737574511e+01 1.7499999960953248e+00 0 0 0 +20260 1 4.5136003983536838e+01 3.8737901321010625e+01 3.4999999964286679e+00 0 0 0 +19624 1 4.6819520015402354e+01 3.8176425004403704e+01 1.7499999907725903e+00 0 0 0 +19674 1 4.5697175887911868e+01 4.0395404633024697e+01 1.7499999946071016e+00 0 0 0 +20315 1 4.7380691948088803e+01 3.9833928390136705e+01 3.4999999971733171e+00 0 0 0 +19677 1 4.9064207915586849e+01 3.9272452050997863e+01 1.7499999887528450e+00 0 0 0 +19682 1 5.1308895755213385e+01 4.0368479016786736e+01 1.7500000036816485e+00 0 0 0 +20316 1 4.9625379855861524e+01 4.0929955285330756e+01 3.4999999725869606e+00 0 0 0 +20319 1 5.0747723696497722e+01 3.8710975673172470e+01 3.4999999707394469e+00 0 0 0 +19681 1 5.2431239460257004e+01 3.8149499276914405e+01 1.7499999967594524e+00 0 0 0 +19686 1 5.4675927302765565e+01 3.9245526172627947e+01 1.7499999913258100e+00 0 0 0 +20320 1 5.2992411526759732e+01 3.9807002551502990e+01 3.5000000283322121e+00 0 0 0 +19735 1 5.6920615278320646e+01 4.0341552879988285e+01 1.7500000010426420e+00 0 0 0 +20324 1 5.6359443182966587e+01 3.8684049705806331e+01 3.4999999458465343e+00 0 0 0 +20373 1 5.5237099492642791e+01 4.0903029513150429e+01 3.4999999767146281e+00 0 0 0 +19690 1 5.8042959036277352e+01 3.8122573141058567e+01 1.7499999882589286e+00 0 0 0 +19739 1 6.0287647207837836e+01 3.9218599544081634e+01 1.7499999788102076e+00 0 0 0 +20377 1 5.8604131271996522e+01 3.9780076333032746e+01 3.4999999467828724e+00 0 0 0 +19737 1 5.8604131295663798e+01 3.9780076345237099e+01 1.3997225676895380e-09 0 0 0 +19743 1 6.3654679054031959e+01 3.8095645791715945e+01 1.7499999760885718e+00 0 0 0 +19744 1 6.2532335399631030e+01 4.0314625835719696e+01 1.7499999738684158e+00 0 0 0 +20382 1 6.4215851330964071e+01 3.9753149002818908e+01 3.4999999630555783e+00 0 0 0 +19742 1 6.4215851302309986e+01 3.9753148960172453e+01 1.7499999990510705e+01 0 0 -1 +19748 1 6.5899367039368357e+01 3.9191672075790947e+01 1.7499999851467101e+00 0 0 0 +19782 1 6.6460539520070924e+01 4.0849175342389771e+01 1.7499999972844492e+01 0 0 -1 +19746 1 6.7582883067703776e+01 3.8630195060737755e+01 1.7499999979993373e+01 0 0 -1 +20422 1 6.6460539501344286e+01 4.0849175369544376e+01 3.4999999701032301e+00 0 0 0 +20386 1 6.7582883021501601e+01 3.8630195081577035e+01 3.5000000046965907e+00 0 0 0 +19752 1 6.9266400349243284e+01 3.8068718760787725e+01 1.7499999933915400e+00 0 0 0 +19784 1 6.8144054593432500e+01 4.0287698323596089e+01 1.7499999680713481e+00 0 0 0 +19787 1 7.2072253500690110e+01 4.0822244404493439e+01 3.3368766274008433e-08 0 0 0 +19788 1 7.1511091277931342e+01 3.9164745448951550e+01 1.7500000181160271e+00 0 0 0 +19790 1 7.3194615376241984e+01 3.8603275554812093e+01 5.7924228890054627e-08 0 0 0 +19793 1 7.3755787468252535e+01 4.0260770568306640e+01 1.7500000316700335e+00 0 0 0 +20427 1 7.2072253474948113e+01 4.0822244417924821e+01 3.5000000041703072e+00 0 0 0 +20430 1 7.3194615369406790e+01 3.8603275534349827e+01 3.5000000177300907e+00 0 0 0 +19792 1 7.4878098681331039e+01 3.8041795253086981e+01 1.7500000459088090e+00 0 0 0 +19797 1 7.7122769385354204e+01 3.9137853328707344e+01 1.7500000218272729e+00 0 0 0 +19795 1 7.8805834012551188e+01 3.8576157356434813e+01 6.4595095875479031e-09 0 0 0 +19817 1 7.7684223919351766e+01 4.0795423369887331e+01 1.9102168806826532e-08 0 0 0 +19819 1 7.9367521018717213e+01 4.0234053237138312e+01 1.7500000164610472e+00 0 0 0 +19801 1 8.0489602391049374e+01 3.8014383810327551e+01 1.7500000176474686e+00 0 0 0 +20435 1 7.8805834080615554e+01 3.8576157347767612e+01 3.5000000382998153e+00 0 0 0 +20457 1 7.7684223989749910e+01 4.0795423384826137e+01 3.5000000342714368e+00 0 0 0 +19822 1 8.3289035715004303e+01 4.0767268150726366e+01 1.7499999986050174e+01 0 0 -1 +19823 1 8.2732307058670443e+01 3.9108541964345015e+01 1.7499999926790148e+00 0 0 0 +20462 1 8.3289035745233349e+01 4.0767268174389805e+01 3.5000000238186999e+00 0 0 0 +19825 1 8.4431590113586225e+01 3.8551248409942119e+01 1.7499999993257365e+01 0 0 -1 +19827 1 8.6132425735588882e+01 3.8005236209661625e+01 1.7500000147037404e+00 0 0 0 +19828 1 8.4964193056270958e+01 4.0198454306737176e+01 1.7499999847238732e+00 0 0 0 +20465 1 8.4431590115435299e+01 3.8551248424977487e+01 3.5000000339185617e+00 0 0 0 +25058 1 8.4431590263010136e+01 4.4085234821470209e+01 1.3999999971743268e+01 0 0 0 +19831 1 8.8549509784491292e+01 3.9103219358015373e+01 1.7499999940507831e+00 0 0 0 +19839 1 8.9045575750806805e+01 4.0702632557046194e+01 1.7499999973211001e+01 0 0 -1 +20479 1 8.9045575757379837e+01 4.0702632505680135e+01 3.4999999824638106e+00 0 0 0 +22498 1 8.4431590276017857e+01 4.4085234820045990e+01 2.5554811600159155e-09 0 0 0 +19678 1 4.7941863924958184e+01 4.1491431663873129e+01 1.7499999822944849e+00 0 0 0 +19726 1 4.6819519859183714e+01 4.3710411254440679e+01 1.7499999993964008e+00 0 0 0 +20313 1 4.6258347901725834e+01 4.2052907919021550e+01 3.4999999977562877e+00 0 0 0 +19728 1 5.0186551841419082e+01 4.2587458613019166e+01 1.7499999938760402e+00 0 0 0 +20367 1 4.8503035893079350e+01 4.3148935020954234e+01 3.4999999771083652e+00 0 0 0 +23044 1 5.0747723695642343e+01 4.4244961901794447e+01 3.5000000173935564e+00 0 0 0 +19731 1 5.3553583679093911e+01 4.1464505888786157e+01 1.7499999841435236e+00 0 0 0 +19732 1 5.2431239681021182e+01 4.3683485547698091e+01 1.7499999996877731e+00 0 0 0 +20370 1 5.4114755570236930e+01 4.3122009195244146e+01 3.4999999695173298e+00 0 0 0 +20369 1 5.1870067719812482e+01 4.2025982276914647e+01 3.4999999888044386e+00 0 0 0 +19736 1 5.5798271506192066e+01 4.2560532714257207e+01 1.7500000042395329e+00 0 0 0 +20374 1 5.7481787374270830e+01 4.1999056087297227e+01 3.4999999900311760e+00 0 0 0 +19734 1 5.7481787397724915e+01 4.1999056135615952e+01 1.7499999994518376e+01 0 0 -1 +23059 1 5.6359443531758039e+01 4.4218035882537862e+01 3.5000000045837596e+00 0 0 0 +19740 1 5.9165303388729853e+01 4.1437579495714040e+01 1.7500000065098835e+00 0 0 0 +19775 1 5.8042959545199977e+01 4.3656559363276571e+01 1.7499999854627604e+00 0 0 0 +19777 1 6.1409991461763113e+01 4.2533605734063649e+01 1.7499999991739712e+00 0 0 0 +19781 1 6.3654679584966750e+01 4.3629632034127077e+01 1.7500000057190055e+00 0 0 0 +20418 1 6.3093507409345335e+01 4.1972128989356086e+01 3.4999999751306206e+00 0 0 0 +19778 1 6.3093507388809790e+01 4.1972128958062527e+01 1.7499999977549713e+01 0 0 -1 +23062 1 6.1971163625545849e+01 4.4191108877763192e+01 3.4999999875561660e+00 0 0 0 +22422 1 6.1971163623477921e+01 4.4191108878696205e+01 1.7499999996006963e+01 0 0 -1 +19780 1 6.4777023526723056e+01 4.1410652121171701e+01 1.7499999831566440e+00 0 0 0 +19785 1 6.7021711860041549e+01 4.2506678649672594e+01 1.7499999768621375e+00 0 0 0 +19789 1 7.0388740933291260e+01 4.1383724485391930e+01 1.7499999991493713e+00 0 0 0 +19810 1 6.9266400789718816e+01 4.3602705274531559e+01 1.7499999936169950e+00 0 0 0 +19811 1 7.0949917787531092e+01 4.3041230063952653e+01 1.0535387473330735e-08 0 0 0 +19812 1 7.2633423674991420e+01 4.2479751040125954e+01 1.7500000106551366e+00 0 0 0 +20451 1 7.0949917776499078e+01 4.3041230084287207e+01 3.4999999906014221e+00 0 0 0 +19814 1 7.6561515663458621e+01 4.3014247031822570e+01 2.7715841769294262e-08 0 0 0 +19815 1 7.6000492340450990e+01 4.1356784548848509e+01 1.7500000255958541e+00 0 0 0 +19816 1 7.4878099122343500e+01 4.3575781831088982e+01 1.7500000056691647e+00 0 0 0 +20454 1 7.6561515716933926e+01 4.3014247040707779e+01 3.5000000039075183e+00 0 0 0 +19820 1 7.8245180103053599e+01 4.2452734152093896e+01 1.7500000234712141e+00 0 0 0 +19832 1 8.0489602668080479e+01 4.3548370334958385e+01 1.7499999834550457e+00 0 0 0 +19824 1 8.1612969650536840e+01 4.1330911050348782e+01 1.7499999908174499e+00 0 0 0 +19833 1 8.2176992837570666e+01 4.2988403089612284e+01 1.7499999967966744e+01 0 0 -1 +20473 1 8.2176992867532832e+01 4.2988403110043635e+01 3.5000000281068893e+00 0 0 0 +19834 1 8.3862483834142964e+01 4.2430565215052802e+01 1.7499999878987871e+00 0 0 0 +19838 1 8.6132425825667767e+01 4.3539222546037635e+01 1.7499999958368757e+00 0 0 0 +19836 1 8.7753273026646355e+01 4.2980195462684968e+01 1.7499999948359633e+01 0 0 -1 +19837 1 8.7168422022462906e+01 4.1255016117749591e+01 1.7499999757324605e+00 0 0 0 +19840 1 8.9214901341297235e+01 4.2337277995354128e+01 1.7499999750740720e+00 0 0 0 +20476 1 8.7753273024998165e+01 4.2980195435561313e+01 3.5000000441699539e+00 0 0 0 +19842 1 4.7380691476826215e+01 1.0960267721522374e+00 3.5000000243778309e+00 0 0 0 +19843 1 4.5697175504056638e+01 1.6575030223734517e+00 5.2499999669122559e+00 0 0 0 +19849 1 4.7941863563173797e+01 2.7535298233289356e+00 5.2499999922770204e+00 0 0 0 +19845 1 4.9064207448410833e+01 5.3455036292099101e-01 5.2499999900481713e+00 0 0 0 +19851 1 4.9625379539270135e+01 2.1920534460813408e+00 3.5000000257976902e+00 0 0 0 +19853 1 5.1308895551885271e+01 1.6305772101627622e+00 5.2500000323880940e+00 0 0 0 +19855 1 5.2992411486219794e+01 1.0691008379457501e+00 3.5000000130841404e+00 0 0 0 +19857 1 5.4675927425016241e+01 5.0762462353819238e-01 5.2500000299659861e+00 0 0 0 +19858 1 5.3553583576547730e+01 2.7266039865926555e+00 5.2500000510558555e+00 0 0 0 +20495 1 5.2992411539379411e+01 1.0691008499319468e+00 7.0000000768754180e+00 0 0 0 +19861 1 5.6920615544606079e+01 1.6036514978936476e+00 5.2499999811277389e+00 0 0 0 +19860 1 5.8604131739973859e+01 1.0421752884560589e+00 3.5000000171315522e+00 0 0 0 +19863 1 6.0287647890972337e+01 4.8069892641891038e-01 5.2499999416502749e+00 0 0 0 +19880 1 5.9165303667261902e+01 2.6996783894393532e+00 5.2499999565535749e+00 0 0 0 +20500 1 5.8604131848096564e+01 1.0421753189739220e+00 6.9999999200039484e+00 0 0 0 +19884 1 6.2532335974914183e+01 1.5767256344686835e+00 5.2499999624609890e+00 0 0 0 +19886 1 6.4215852031634796e+01 1.0152492204189505e+00 3.4999999806271829e+00 0 0 0 +20526 1 6.4215852034881891e+01 1.0152492149882844e+00 7.0000000117919585e+00 0 0 0 +19887 1 6.6460540166848716e+01 2.1112757785326983e+00 3.4999999813206446e+00 0 0 0 +19888 1 6.5899367910391874e+01 4.5377264829762010e-01 5.2500000498000219e+00 0 0 0 +19889 1 6.4777024017583884e+01 2.6727522686381096e+00 5.2499999775951878e+00 0 0 0 +20527 1 6.6460540196684732e+01 2.1112757358833187e+00 7.0000000648031797e+00 0 0 0 +19892 1 6.8144055459797769e+01 1.5497988861851351e+00 5.2500000634133244e+00 0 0 0 +19925 1 7.0388741902204146e+01 2.6458247826278094e+00 5.2500000517922274e+00 0 0 0 +19927 1 7.2072254730055391e+01 2.0843447209609631e+00 3.5000000023870812e+00 0 0 0 +19894 1 7.1511092599934429e+01 4.2684613805466892e-01 5.2500000312155688e+00 0 0 0 +19929 1 7.3755788961834824e+01 1.5228708371012514e+00 5.2500000136352609e+00 0 0 0 +20567 1 7.2072254776379012e+01 2.0843446953692801e+00 7.0000000459632057e+00 0 0 0 +19933 1 7.7122771320583979e+01 3.9995321207492990e-01 5.2500000175473431e+00 0 0 0 +19934 1 7.6000493997267981e+01 2.6188842314384617e+00 5.2500000045615769e+00 0 0 0 +19932 1 7.7684225835972313e+01 2.0575227949387274e+00 3.5000000111508558e+00 0 0 0 +19937 1 7.9367523115845870e+01 1.4961523087887696e+00 5.2499999796954775e+00 0 0 0 +20572 1 7.7684225945973282e+01 2.0575228154042726e+00 6.9999999901742260e+00 0 0 0 +19985 1 8.3289037845130139e+01 2.0293661127474580e+00 3.5000000026282416e+00 0 0 0 +19939 1 8.2732309247893795e+01 3.7064024932003292e-01 5.2499998887932806e+00 0 0 0 +19983 1 8.1612971853484126e+01 2.5930092982467108e+00 5.2499999546076959e+00 0 0 0 +20625 1 8.3289037978415450e+01 2.0293661320839544e+00 6.9999998156355785e+00 0 0 0 +19987 1 8.4964195011322900e+01 1.4605519722548910e+00 5.2499998747259164e+00 0 0 0 +19990 1 8.9045576456860431e+01 1.9647300231356277e+00 3.4999998993566104e+00 0 0 0 +19991 1 8.8549511364675141e+01 3.6531702540211031e-01 5.2499999633670846e+00 0 0 0 +19992 1 8.7168423513905225e+01 2.5171135736363826e+00 5.2499998625357005e+00 0 0 0 +20630 1 8.9045576407049666e+01 1.9647300682768689e+00 6.9999999587472113e+00 0 0 0 +19847 1 4.6258347638893113e+01 3.3150061925860004e+00 3.5000000058197456e+00 0 0 0 +19850 1 4.6819519684448039e+01 4.9725093462283061e+00 5.2499999903058194e+00 0 0 0 +19848 1 4.8503035646905985e+01 4.4110330190566911e+00 3.5000000008336589e+00 0 0 0 +19870 1 5.0747723498607122e+01 5.5070597183554213e+00 3.5000000114239271e+00 0 0 0 +19854 1 5.0186551586457753e+01 3.8495565690893621e+00 5.2500000465352752e+00 0 0 0 +19868 1 4.9064207606770381e+01 6.0685360764417711e+00 5.2500000102516884e+00 0 0 0 +20510 1 5.0747723485745382e+01 5.5070596722955560e+00 7.0000000661184778e+00 0 0 0 +19852 1 5.1870067544229443e+01 3.2880802916227143e+00 3.5000000259578918e+00 0 0 0 +19872 1 5.2431239454867054e+01 4.9455833972644960e+00 5.2500000420865582e+00 0 0 0 +19877 1 5.4675927232728263e+01 6.0416102182002867e+00 5.2500000272726846e+00 0 0 0 +20492 1 5.1870067581740074e+01 3.2880802567087635e+00 7.0000000739480175e+00 0 0 0 +19875 1 5.6359443316813746e+01 5.4801340333827078e+00 3.5000000070195729e+00 0 0 0 +19878 1 5.7481787436685089e+01 3.2611546341316209e+00 3.5000000123949784e+00 0 0 0 +19876 1 5.5798271456099286e+01 3.8226309130838869e+00 5.2500000171223649e+00 0 0 0 +20515 1 5.6359443429695069e+01 5.4801339952251711e+00 6.9999999878931307e+00 0 0 0 +20518 1 5.7481787549458119e+01 3.2611546305002492e+00 6.9999999486379672e+00 0 0 0 +19881 1 5.8042959431021799e+01 4.9186578058956014e+00 5.2499999752864044e+00 0 0 0 +19913 1 6.0287647463158379e+01 6.0146845000629989e+00 5.2499999644184827e+00 0 0 0 +19883 1 6.3093507722034033e+01 3.2342286848917583e+00 3.4999999732963292e+00 0 0 0 +19885 1 6.1409991641046183e+01 3.7957050029871118e+00 5.2499999584311805e+00 0 0 0 +19915 1 6.1971163509847116e+01 5.4532080720841840e+00 3.4999999841002634e+00 0 0 0 +19917 1 6.3654679649380206e+01 4.8917316016958177e+00 5.2500000101169020e+00 0 0 0 +20523 1 6.3093507730873732e+01 3.2342287344689460e+00 6.9999999632260250e+00 0 0 0 +20555 1 6.1971163569205622e+01 5.4532080743702931e+00 6.9999999403558553e+00 0 0 0 +19921 1 6.7021712326080547e+01 3.7687787844105096e+00 5.2500000233350343e+00 0 0 0 +19922 1 6.5899367549227449e+01 5.9877580771909429e+00 5.2500000299936209e+00 0 0 0 +19926 1 6.9266401379521554e+01 4.8648051540763113e+00 5.2500000141523575e+00 0 0 0 +19924 1 7.0949918657809206e+01 4.3033299864082908e+00 3.4999999510042419e+00 0 0 0 +19930 1 7.2633424873073707e+01 3.7418509502927546e+00 5.2500000031830405e+00 0 0 0 +19971 1 7.1511092499857725e+01 5.9608315300519337e+00 5.2499999979437915e+00 0 0 0 +20564 1 7.0949918737793553e+01 4.3033299632272177e+00 7.0000000579993493e+00 0 0 0 +19977 1 7.6561517330884328e+01 4.2763462599636082e+00 3.5000000268688405e+00 0 0 0 +19975 1 7.4878100505811346e+01 4.8378812153717297e+00 5.2500000194407734e+00 0 0 0 +19980 1 7.7122771324979666e+01 5.9339386695065937e+00 5.2500000211798037e+00 0 0 0 +20617 1 7.6561517399481531e+01 4.2763462770317044e+00 7.0000000235258657e+00 0 0 0 +19979 1 7.8245181951287677e+01 3.7148331109779695e+00 5.2500000186661211e+00 0 0 0 +19984 1 8.0489604665344046e+01 4.8104684898460848e+00 5.2499999858770590e+00 0 0 0 +19982 1 8.2176994895061810e+01 4.2505009405038390e+00 3.5000000041677208e+00 0 0 0 +20037 1 8.2732309244052672e+01 5.9046259514385326e+00 5.2499999104233348e+00 0 0 0 +20622 1 8.2176995055925033e+01 4.2505009482922276e+00 6.9999998661796585e+00 0 0 0 +19988 1 8.3862485916499097e+01 3.6926628150410523e+00 5.2499998704180246e+00 0 0 0 +20041 1 8.6132427664161924e+01 4.8013199284058841e+00 5.2499998295944232e+00 0 0 0 +20043 1 8.7753274476586043e+01 4.2422929058833381e+00 3.4999999569379274e+00 0 0 0 +20044 1 8.9214901642219573e+01 3.5993753673172257e+00 5.2499998726747572e+00 0 0 0 +20045 1 8.8549511392413436e+01 5.8993031311777342e+00 5.2499998283378977e+00 0 0 0 +20683 1 8.7753274538288053e+01 4.2422929230023358e+00 6.9999997961197664e+00 0 0 0 +19866 1 4.7380691703270635e+01 6.6300125320834384e+00 3.5000000029893381e+00 0 0 0 +19865 1 4.5697175790414406e+01 7.1914888618003392e+00 5.2499999651582785e+00 0 0 0 +19869 1 4.7941863720422418e+01 8.2875155469980264e+00 5.2499999975905114e+00 0 0 0 +19867 1 4.9625379609613816e+01 7.7260390917417636e+00 3.5000000081020803e+00 0 0 0 +19873 1 5.1308895532167320e+01 7.1645628336083300e+00 5.2500000286911988e+00 0 0 0 +19901 1 5.0186551583888544e+01 9.3835422088884410e+00 5.2500000163068359e+00 0 0 0 +20507 1 4.9625379608664858e+01 7.7260390896483147e+00 7.0000000354782488e+00 0 0 0 +19905 1 5.3553583378383905e+01 8.2605895756469057e+00 5.2500000227079946e+00 0 0 0 +19907 1 5.5237099276472506e+01 7.6991134331783053e+00 3.5000000092562158e+00 0 0 0 +19909 1 5.6920615192827192e+01 7.1376370287623780e+00 5.2499999922247760e+00 0 0 0 +19910 1 5.5798271115308410e+01 9.3566164569907997e+00 5.2500000075197830e+00 0 0 0 +20547 1 5.5237099353712765e+01 7.6991134059693573e+00 7.0000000231079733e+00 0 0 0 +19912 1 6.0848819212733588e+01 7.6721875113153724e+00 3.5000000106372555e+00 0 0 0 +19914 1 5.9165303186451112e+01 8.2336638829925466e+00 5.2499999773211519e+00 0 0 0 +20552 1 6.0848819236987318e+01 7.6721874968795305e+00 6.9999999270945956e+00 0 0 0 +19918 1 6.2532335468055081e+01 7.1107111103815432e+00 5.2499999715651287e+00 0 0 0 +19959 1 6.1409991087965679e+01 9.3296904818512836e+00 5.2499999898138379e+00 0 0 0 +19963 1 6.4777023434519833e+01 8.2067376017708167e+00 5.2500000169613887e+00 0 0 0 +19968 1 6.7021711805945401e+01 9.3027640587733629e+00 5.2500000191538660e+00 0 0 0 +19966 1 6.8705228053812817e+01 8.7412876367803474e+00 3.4999999862997759e+00 0 0 0 +19969 1 6.9827570962519772e+01 6.5223067902837633e+00 3.4999999899132175e+00 0 0 0 +19967 1 6.8144055088524283e+01 7.0837842130618007e+00 5.2500000427406910e+00 0 0 0 +19972 1 7.0388741584055310e+01 8.1798101150296763e+00 5.2499999859131332e+00 0 0 0 +20606 1 6.8705228126869287e+01 8.7412876169268667e+00 7.0000000467695864e+00 0 0 0 +20609 1 6.9827571034446294e+01 6.5223067656985743e+00 7.0000000269844094e+00 0 0 0 +19976 1 7.3755788852166603e+01 7.0568562075854686e+00 5.2499999955232992e+00 0 0 0 +20025 1 7.2633424540892662e+01 9.2758362573159125e+00 5.2499999916778508e+00 0 0 0 +19974 1 7.5439350181609043e+01 6.4954087509137404e+00 3.4999999752361974e+00 0 0 0 +20027 1 7.4316921152132608e+01 8.7143450775908473e+00 3.4999999568180988e+00 0 0 0 +20029 1 7.6000493890178461e+01 8.1528696362795650e+00 5.2500000299477847e+00 0 0 0 +20614 1 7.5439350233723061e+01 6.4954087546052079e+00 7.0000000268966343e+00 0 0 0 +20667 1 7.4316921190782764e+01 8.7143450840008239e+00 7.0000000348512943e+00 0 0 0 +20032 1 7.9929644831602090e+01 8.6877684467198382e+00 3.5000000342043633e+00 0 0 0 +20033 1 7.9367523083778707e+01 7.0301378590336814e+00 5.2500000411762677e+00 0 0 0 +20034 1 7.8245181843040925e+01 9.2488186756225446e+00 5.2500000466389185e+00 0 0 0 +20672 1 7.9929644973546417e+01 8.6877684085257822e+00 7.0000000038685757e+00 0 0 0 +20035 1 8.1049144711815842e+01 6.4678959224176413e+00 3.5000000314010657e+00 0 0 0 +20038 1 8.1612971685838403e+01 8.1269949815880853e+00 5.2499999673255680e+00 0 0 0 +20675 1 8.1049144866015084e+01 6.4678959014893112e+00 6.9999999374985045e+00 0 0 0 +20040 1 8.6710922102861687e+01 6.4452481162534054e+00 3.4999999917394033e+00 0 0 0 +20094 1 8.5523444619527012e+01 8.6591512445076511e+00 3.5000000227924222e+00 0 0 0 +20042 1 8.4964194995144737e+01 6.9945378998372556e+00 5.2499998411301556e+00 0 0 0 +20092 1 8.3862485699552437e+01 9.2266487381466877e+00 5.2499999013686152e+00 0 0 0 +20680 1 8.6710922178741129e+01 6.4452481575072680e+00 6.9999997216105028e+00 0 0 0 +20734 1 8.5523444758856684e+01 8.6591511889651489e+00 6.9999997300316270e+00 0 0 0 +20096 1 8.7168423213708053e+01 8.0510994740322754e+00 5.2499998247716544e+00 0 0 0 +20099 1 8.9214902041910392e+01 9.1333614125027527e+00 5.2499998537839323e+00 0 0 0 +19897 1 4.6819519889157355e+01 1.0506495069173340e+01 5.2499999830383546e+00 0 0 0 +20536 1 4.7380691848912576e+01 1.2163998185911320e+01 6.9999999842870730e+00 0 0 0 +19899 1 4.8503035749474378e+01 9.9450186861008341e+00 3.4999999932245203e+00 0 0 0 +19902 1 4.9064207663697886e+01 1.1602521732710690e+01 5.2499999955273573e+00 0 0 0 +20539 1 4.8503035739150761e+01 9.9450186786915200e+00 6.9999999985906696e+00 0 0 0 +19904 1 5.4114755148911335e+01 9.9180927347424994e+00 3.4999999955108945e+00 0 0 0 +19949 1 5.2992411184213537e+01 1.2137072035243820e+01 3.5000000002595399e+00 0 0 0 +19906 1 5.2431239254432086e+01 1.0479568947390799e+01 5.2500000439249810e+00 0 0 0 +19951 1 5.4675926924112410e+01 1.1575595769906229e+01 5.2500000242289619e+00 0 0 0 +20544 1 5.4114755209869813e+01 9.9180927071460108e+00 7.0000000541606520e+00 0 0 0 +20589 1 5.2992411230310594e+01 1.2137072020257046e+01 7.0000000622628615e+00 0 0 0 +19954 1 5.8604130833080184e+01 1.2110146298319370e+01 3.4999999791914127e+00 0 0 0 +19957 1 5.9726474974802784e+01 9.8911669034816114e+00 3.4999999874588332e+00 0 0 0 +19955 1 5.8042958913980300e+01 1.0452643271409547e+01 5.2499999757859035e+00 0 0 0 +19960 1 6.0287646882261583e+01 1.1548669913940044e+01 5.2499999574242446e+00 0 0 0 +20594 1 5.8604130891507012e+01 1.2110146315424453e+01 6.9999999466684990e+00 0 0 0 +20597 1 5.9726475024515516e+01 9.8911668932509293e+00 6.9999999408327165e+00 0 0 0 +19964 1 6.3654679023138804e+01 1.0425716983844561e+01 5.2500000096610613e+00 0 0 0 +20015 1 6.4215850936232897e+01 1.2083219974799626e+01 3.4999999984312411e+00 0 0 0 +20655 1 6.4215850942948236e+01 1.2083219977787342e+01 7.0000000030191165e+00 0 0 0 +20019 1 6.7582883184278145e+01 1.0960266507635954e+01 3.4999999979733882e+00 0 0 0 +19962 1 6.5338195293187212e+01 9.8642404732029547e+00 3.4999999952615490e+00 0 0 0 +20017 1 6.5899366929483790e+01 1.1521743349169860e+01 5.2500000336370460e+00 0 0 0 +20602 1 6.5338195325777903e+01 9.8642404865194013e+00 7.0000000368406532e+00 0 0 0 +20659 1 6.7582883245675006e+01 1.0960266529322279e+01 7.0000000401247373e+00 0 0 0 +20021 1 6.9266400899628735e+01 1.0398790357952784e+01 5.2500000075509607e+00 0 0 0 +20024 1 7.3194616502054814e+01 1.0933346884413327e+01 3.4999999641900423e+00 0 0 0 +20026 1 7.1511091979172903e+01 1.1494816747039877e+01 5.2499999771034682e+00 0 0 0 +20664 1 7.3194616554065405e+01 1.0933346905305008e+01 6.9999999992412922e+00 0 0 0 +20030 1 7.4878100181803219e+01 1.0371866605616214e+01 5.2500000019939819e+00 0 0 0 +20084 1 7.7122771005128200e+01 1.1467924148941853e+01 5.2500000794196033e+00 0 0 0 +20086 1 7.8805835948609683e+01 1.0906227980954464e+01 3.5000000392287056e+00 0 0 0 +20088 1 8.0489604436310458e+01 1.0344454179910791e+01 5.2500000218592824e+00 0 0 0 +20726 1 7.8805836041107398e+01 1.0906227979391478e+01 7.0000000627927683e+00 0 0 0 +20093 1 8.2732308992328853e+01 1.1438611859707457e+01 5.2499999570572760e+00 0 0 0 +20091 1 8.4431591906088130e+01 1.0881318223235493e+01 3.5000000528900639e+00 0 0 0 +20097 1 8.6132427337210004e+01 1.0335305982147098e+01 5.2499998813201332e+00 0 0 0 +20731 1 8.4431592055578179e+01 1.0881318154709065e+01 6.9999997677125521e+00 0 0 0 +19835 1 8.5523442853139301e+01 4.1863067728866369e+01 3.4221123712541157e-09 0 0 0 +20151 1 8.8549511107801379e+01 1.1433289212797938e+01 5.2499998656959423e+00 0 0 0 +1289 1 9.0272007528377372e+01 1.0648982945802587e+01 6.9999997198377955e+00 -1 0 0 +19898 1 4.5697175998880063e+01 1.2725474595846666e+01 5.2500000028799763e+00 0 0 0 +19943 1 4.7941863844180041e+01 1.3821501215840065e+01 5.2499999972653271e+00 0 0 0 +20581 1 4.6258348019394468e+01 1.4382977633429217e+01 7.0000000018267725e+00 0 0 0 +19947 1 5.1308895436901594e+01 1.2698548453538098e+01 5.2500000304217522e+00 0 0 0 +19948 1 5.0186551576197715e+01 1.4917527865235055e+01 5.2500000464071350e+00 0 0 0 +20582 1 4.8503035806849262e+01 1.5479004335102177e+01 7.0000000198027266e+00 0 0 0 +20585 1 4.9625379631460149e+01 1.3260024736289351e+01 7.0000000132540716e+00 0 0 0 +19946 1 5.1870067329780952e+01 1.4356051538980312e+01 3.5000000204948210e+00 0 0 0 +19952 1 5.3553583162780562e+01 1.3794575137931785e+01 5.2500000447564208e+00 0 0 0 +20586 1 5.1870067374042378e+01 1.4356051475915264e+01 7.0000000625313294e+00 0 0 0 +20007 1 5.7481786561742197e+01 1.4329125638500184e+01 3.4999999640182686e+00 0 0 0 +19956 1 5.6920614744094202e+01 1.2671622530949806e+01 5.2499999780422337e+00 0 0 0 +20005 1 5.5798270758542486e+01 1.4890601976848238e+01 5.2499999913484761e+00 0 0 0 +20647 1 5.7481786633145241e+01 1.4329125631376618e+01 6.9999999657494998e+00 0 0 0 +20009 1 5.9165302625239775e+01 1.3767649350698225e+01 5.2499999500240015e+00 0 0 0 +20012 1 6.3093506519526997e+01 1.4302199434523994e+01 3.4999999687943277e+00 0 0 0 +20013 1 6.2532334822960074e+01 1.2644696473103636e+01 5.2499999783649702e+00 0 0 0 +20014 1 6.1409990434523138e+01 1.4863675865047334e+01 5.2499999445991605e+00 0 0 0 +20652 1 6.3093506510917415e+01 1.4302199469462128e+01 6.9999999790434213e+00 0 0 0 +20016 1 6.6460539076395349e+01 1.3179246324577699e+01 3.5000000050117377e+00 0 0 0 +20018 1 6.4777022841562683e+01 1.3740722934211808e+01 5.2499999837022369e+00 0 0 0 +20072 1 6.7021711176256986e+01 1.4836749276147073e+01 5.2500000140344527e+00 0 0 0 +20656 1 6.6460539126006964e+01 1.3179246314157179e+01 7.0000000258770170e+00 0 0 0 +20022 1 6.8144054494380910e+01 1.2617769423537887e+01 5.2500000215777973e+00 0 0 0 +20076 1 7.0388741006731976e+01 1.3713795274038041e+01 5.2500000022573525e+00 0 0 0 +20075 1 7.0949917674592342e+01 1.5371300428717907e+01 3.4999999517395799e+00 0 0 0 +20078 1 7.2072253980902005e+01 1.3152315282503322e+01 3.4999999659999039e+00 0 0 0 +20080 1 7.3755788359300283e+01 1.2590841503168491e+01 5.2499999915517916e+00 0 0 0 +20081 1 7.2633424004323700e+01 1.4809821500962389e+01 5.2499999619276263e+00 0 0 0 +20715 1 7.0949917754502678e+01 1.5371300425570881e+01 7.0000000002706004e+00 0 0 0 +20718 1 7.2072254013856707e+01 1.3152315261847011e+01 6.9999999888744737e+00 0 0 0 +20137 1 7.6561516576101312e+01 1.5344317180835796e+01 3.5000000099508788e+00 0 0 0 +20085 1 7.6000493387342132e+01 1.3686855077164980e+01 5.2500000223796510e+00 0 0 0 +20777 1 7.6561516583507981e+01 1.5344317202774837e+01 7.0000000424499200e+00 0 0 0 +20083 1 7.7684225372609447e+01 1.3125493825876276e+01 3.5000000085642533e+00 0 0 0 +20089 1 7.9367522704672297e+01 1.2564123491912905e+01 5.2500000679108156e+00 0 0 0 +20139 1 7.8245181259778647e+01 1.4782804223827853e+01 5.2500000603779782e+00 0 0 0 +20723 1 7.7684225432804752e+01 1.3125493824512658e+01 7.0000000716249398e+00 0 0 0 +20142 1 8.2176994189268683e+01 1.5318472681008087e+01 3.5000000289768525e+00 0 0 0 +20145 1 8.3289037368664111e+01 1.3097337919642939e+01 3.5000000774627140e+00 0 0 0 +20143 1 8.1612971300499439e+01 1.3660980856317142e+01 5.2500000299653244e+00 0 0 0 +20782 1 8.2176994358623944e+01 1.5318472638968078e+01 6.9999999341073904e+00 0 0 0 +20785 1 8.3289037542982257e+01 1.3097337871480134e+01 6.9999998298142305e+00 0 0 0 +20147 1 8.4964194568333227e+01 1.2528523929459102e+01 5.2499998989157355e+00 0 0 0 +20148 1 8.3862485230665015e+01 1.4760634772118946e+01 5.2499999345203969e+00 0 0 0 +20150 1 8.9045576339296360e+01 1.3032702262220287e+01 3.5000001180349920e+00 0 0 0 +20203 1 8.7753273982619220e+01 1.5310265163544360e+01 3.5000001868374757e+00 0 0 0 +20152 1 8.7168423306131800e+01 1.3585085929599588e+01 5.2499998581654488e+00 0 0 0 +20204 1 8.9214901243251219e+01 1.4667347682952295e+01 5.2499998510336328e+00 0 0 0 +20790 1 8.9045576347773363e+01 1.3032702190431761e+01 6.9999996346351869e+00 0 0 0 +20843 1 8.7753274063083964e+01 1.5310265109127235e+01 6.9999995216296886e+00 0 0 0 +19944 1 4.6819519970719739e+01 1.6040480775666428e+01 5.2500000034911185e+00 0 0 0 +19994 1 4.5697176013484714e+01 1.8259460334386265e+01 5.2499999907965371e+00 0 0 0 +20635 1 4.7380691862292103e+01 1.7697983924894960e+01 6.9999999818159901e+00 0 0 0 +19997 1 4.9064207629738810e+01 1.7136507426121632e+01 5.2500000340628450e+00 0 0 0 +20002 1 5.1308895331735350e+01 1.8232534172757912e+01 5.2500000455790596e+00 0 0 0 +20636 1 4.9625379539468099e+01 1.8794010462709434e+01 7.0000000478101905e+00 0 0 0 +20639 1 5.0747723369807815e+01 1.6575030977475841e+01 7.0000000598814545e+00 0 0 0 +20001 1 5.2431239142951597e+01 1.6013554622157351e+01 5.2500000384322281e+00 0 0 0 +20006 1 5.4675926653500412e+01 1.7109581382282375e+01 5.2500000144738213e+00 0 0 0 +20004 1 5.6359442550844577e+01 1.6548105112327683e+01 3.4999999533543913e+00 0 0 0 +20058 1 5.5237098665595511e+01 1.8767084656054070e+01 3.4999999837355475e+00 0 0 0 +20060 1 5.6920614369415667e+01 1.8205608153091440e+01 5.2499999723870276e+00 0 0 0 +20644 1 5.6359442645497495e+01 1.6548105080125016e+01 6.9999999991648041e+00 0 0 0 +20698 1 5.5237098729294175e+01 1.8767084614856991e+01 7.0000000253110928e+00 0 0 0 +20063 1 6.0848818080928986e+01 1.8740158461061167e+01 3.4999999656985947e+00 0 0 0 +20010 1 5.8042958463220344e+01 1.5986628789799964e+01 5.2499999618829625e+00 0 0 0 +20064 1 6.0287646312026041e+01 1.7082655410004637e+01 5.2499999367533032e+00 0 0 0 +20703 1 6.0848818085292294e+01 1.8740158421800675e+01 6.9999999345218429e+00 0 0 0 +20066 1 6.1971162309026894e+01 1.6521178870950045e+01 3.4999999640847674e+00 0 0 0 +20068 1 6.3654678403276392e+01 1.5959702311265998e+01 5.2499999869799963e+00 0 0 0 +20069 1 6.2532334258623166e+01 1.8178681906396200e+01 5.2499999691668053e+00 0 0 0 +20706 1 6.1971162317653679e+01 1.6521178893741585e+01 6.9999999414640417e+00 0 0 0 +20073 1 6.5899366326593764e+01 1.7055728596051207e+01 5.2500000264703965e+00 0 0 0 +20129 1 6.9827569848758898e+01 1.7590277196886476e+01 3.5000000127411268e+00 0 0 0 +20077 1 6.9266400308114456e+01 1.5932775571125074e+01 5.2499999935889958e+00 0 0 0 +20127 1 6.8144053937342775e+01 1.8151754613980419e+01 5.2500000252591210e+00 0 0 0 +20769 1 6.9827569918130919e+01 1.7590277167887688e+01 6.9999999616083146e+00 0 0 0 +20131 1 7.1511091433158498e+01 1.7028802004043865e+01 5.2499999778942987e+00 0 0 0 +20136 1 7.3755787769281866e+01 1.8124826856751532e+01 5.2499999711144767e+00 0 0 0 +20134 1 7.5439349184233635e+01 1.7563379547147154e+01 3.4999999663167909e+00 0 0 0 +20135 1 7.4878099616678256e+01 1.5905851947561922e+01 5.2500000011450778e+00 0 0 0 +20140 1 7.7122770381835934e+01 1.7001909655544686e+01 5.2500000204241069e+00 0 0 0 +20774 1 7.5439349188583506e+01 1.7563379577182769e+01 7.0000000032619303e+00 0 0 0 +20193 1 7.9367522069007521e+01 1.8098109198615131e+01 5.2500000494910406e+00 0 0 0 +20144 1 8.0489603874341427e+01 1.5878439954384389e+01 5.2500000389172623e+00 0 0 0 +20195 1 8.1049143767070731e+01 1.7535867522469484e+01 3.5000000089714880e+00 0 0 0 +20197 1 8.2732308383552805e+01 1.6972597833283636e+01 5.2499999633112662e+00 0 0 0 +20835 1 8.1049143895859430e+01 1.7535867490649622e+01 7.0000000061613532e+00 0 0 0 +20200 1 8.6710921376427322e+01 1.7513220433593222e+01 3.5000000633191548e+00 0 0 0 +20201 1 8.6132426996819618e+01 1.5869292122497880e+01 5.2499998797223411e+00 0 0 0 +20202 1 8.4964194100404043e+01 1.8062510085824709e+01 5.2499998948375053e+00 0 0 0 +20840 1 8.6710921478796081e+01 1.7513220367564475e+01 6.9999997347125031e+00 0 0 0 +20205 1 8.8549510772711471e+01 1.6967275333021860e+01 5.2499998765582871e+00 0 0 0 +19998 1 4.7941863770834871e+01 1.9355486948296797e+01 5.2500000179211828e+00 0 0 0 +20048 1 4.6819519896967641e+01 2.1574466555833798e+01 5.2499999887264428e+00 0 0 0 +20633 1 4.6258347957382547e+01 1.9916963402688005e+01 7.0000000045224766e+00 0 0 0 +20052 1 5.0186551438001040e+01 2.0451513649582434e+01 5.2500000338582504e+00 0 0 0 +20690 1 4.8503035685916451e+01 2.1012990162538500e+01 7.0000000260189088e+00 0 0 0 +20691 1 5.0747723241693414e+01 2.2109016834141173e+01 7.0000000331535599e+00 0 0 0 +20055 1 5.4114754681158296e+01 2.0986064142521140e+01 3.4999999887054662e+00 0 0 0 +20056 1 5.3553582935034036e+01 1.9328560878577619e+01 5.2500000260711364e+00 0 0 0 +20057 1 5.2431238928514865e+01 2.1547540418331234e+01 5.2500000632042534e+00 0 0 0 +20694 1 5.1870067169092913e+01 1.9890037262657387e+01 7.0000000501348527e+00 0 0 0 +20695 1 5.4114754738231071e+01 2.0986064113371913e+01 7.0000000599011285e+00 0 0 0 +20061 1 5.5798270500081372e+01 2.0424587738524057e+01 5.2500000058434342e+00 0 0 0 +20117 1 5.9726474028274630e+01 2.0959138063218099e+01 3.4999999668352713e+00 0 0 0 +20065 1 5.9165302193804436e+01 1.9301634971795270e+01 5.2499999296889444e+00 0 0 0 +20115 1 5.8042958117981428e+01 2.1520614564456061e+01 5.2499999626534253e+00 0 0 0 +20757 1 5.9726474039980403e+01 2.0959138051942322e+01 6.9999999220144611e+00 0 0 0 +20119 1 6.1409989983734910e+01 2.0397661481119279e+01 5.2499999555851806e+00 0 0 0 +20124 1 6.3654677977913117e+01 2.1493687823538064e+01 5.2499999948148810e+00 0 0 0 +20122 1 6.5338194191989516e+01 2.0932211097993324e+01 3.5000000231722823e+00 0 0 0 +20123 1 6.4777022253903382e+01 1.9274708246943398e+01 5.2500000132204461e+00 0 0 0 +20128 1 6.7021710663647085e+01 2.0370734553416494e+01 5.2500000345800837e+00 0 0 0 +20762 1 6.5338194208312885e+01 2.0932211094912081e+01 7.0000000224774048e+00 0 0 0 +20179 1 6.7582882153430901e+01 2.2028237048463502e+01 3.5000000254996300e+00 0 0 0 +20819 1 6.7582882180474371e+01 2.2028237041000445e+01 7.0000000215181775e+00 0 0 0 +20126 1 6.8705226932429014e+01 1.9809258053884275e+01 3.5000000063154912e+00 0 0 0 +20132 1 7.0388740455789119e+01 1.9247780546671951e+01 5.2499999681396963e+00 0 0 0 +20181 1 6.9266399801940807e+01 2.1466760848219401e+01 5.2500000031020395e+00 0 0 0 +20766 1 6.8705226988103718e+01 1.9809258038874308e+01 7.0000000240674858e+00 0 0 0 +20185 1 7.2633423384997258e+01 2.0343806854642587e+01 5.2499999623721143e+00 0 0 0 +20184 1 7.3194615311330963e+01 2.2001317583522660e+01 3.4999999875012526e+00 0 0 0 +20824 1 7.3194615323850272e+01 2.2001317620169779e+01 6.9999999543727762e+00 0 0 0 +20187 1 7.4316919987349735e+01 1.9782315809883158e+01 3.4999999709885583e+00 0 0 0 +20189 1 7.6000492764371089e+01 1.9220840531891181e+01 5.2500000136670630e+00 0 0 0 +20190 1 7.4878098974033136e+01 2.1439837434706572e+01 5.2499999867268663e+00 0 0 0 +20827 1 7.4316920011812812e+01 1.9782315829499854e+01 6.9999999761994163e+00 0 0 0 +20246 1 7.8805834676201670e+01 2.1974199290028611e+01 3.5000000323489515e+00 0 0 0 +20192 1 7.9929643691322610e+01 1.9755739889742916e+01 3.5000000052265228e+00 0 0 0 +20194 1 7.8245180674504198e+01 2.0316789870599404e+01 5.2500000391976753e+00 0 0 0 +20248 1 8.0489603223113448e+01 2.1412425754677173e+01 5.2500000311234807e+00 0 0 0 +20832 1 7.9929643803759603e+01 1.9755739864489627e+01 7.0000000533643592e+00 0 0 0 +20886 1 7.8805834739125160e+01 2.1974199308215184e+01 7.0000000845858450e+00 0 0 0 +20198 1 8.1612970607346867e+01 1.9194966709949526e+01 5.2499999931981893e+00 0 0 0 +20252 1 8.3862484582919066e+01 2.0294620782459244e+01 5.2499999434033304e+00 0 0 0 +20254 1 8.5523443660755547e+01 1.9727123444507722e+01 3.5000000016938873e+00 0 0 0 +20257 1 8.6132426381206869e+01 2.1403278169149697e+01 5.2499999268938984e+00 0 0 0 +20894 1 8.5523443767187104e+01 1.9727123345023603e+01 6.9999998278838378e+00 0 0 0 +20251 1 8.4431590792360964e+01 2.1949290316568199e+01 3.4999999784628835e+00 0 0 0 +20891 1 8.4431590921527686e+01 2.1949290213129135e+01 6.9999999368099264e+00 0 0 0 +20256 1 8.7168422655758619e+01 1.9119071896010482e+01 5.2499998837326309e+00 0 0 0 +20259 1 8.9214901603263272e+01 2.0201333775644141e+01 5.2499999370545734e+00 0 0 0 +1307 1 9.0272007528377074e+01 2.1716955221855052e+01 6.9999998336930940e+00 -1 0 0 +22398 1 8.6132425840285379e+01 4.3539222543732727e+01 1.5749999958922979e+01 0 0 0 +20049 1 4.5697175973480810e+01 2.3793446147210261e+01 5.2499999626989098e+00 0 0 0 +20103 1 4.7941863773898000e+01 2.4889472853780436e+01 5.2499999717081209e+00 0 0 0 +20687 1 4.7380691805530574e+01 2.3231969737853355e+01 7.0000000029111344e+00 0 0 0 +20053 1 4.9064207575136052e+01 2.2670493280480652e+01 5.2500000135557032e+00 0 0 0 +20107 1 5.1308895204319924e+01 2.3766520072677462e+01 5.2500000272013096e+00 0 0 0 +20745 1 4.9625379489228642e+01 2.4327996402365706e+01 6.9999999963197750e+00 0 0 0 +20111 1 5.4675926458619045e+01 2.2643567294290978e+01 5.2500000307174810e+00 0 0 0 +20112 1 5.3553582878825900e+01 2.4862546862207015e+01 5.2500000480834297e+00 0 0 0 +20749 1 5.2992410879560715e+01 2.3205043617309389e+01 7.0000000666098705e+00 0 0 0 +20116 1 5.6920614183331402e+01 2.3739594101665041e+01 5.2499999666885726e+00 0 0 0 +20750 1 5.5237098566675272e+01 2.4301070604584631e+01 7.0000000133204949e+00 0 0 0 +20114 1 5.8604130115597158e+01 2.3178117745145485e+01 3.4999999564452766e+00 0 0 0 +20120 1 6.0287646018694993e+01 2.2616641149045222e+01 5.2499999532588584e+00 0 0 0 +20169 1 5.9165302021188431e+01 2.4835620904177024e+01 5.2499999368346595e+00 0 0 0 +20754 1 5.8604130161362065e+01 2.3178117708510303e+01 6.9999999582325447e+00 0 0 0 +20175 1 6.4215850034462349e+01 2.3151190843353735e+01 3.5000000309339097e+00 0 0 0 +20173 1 6.2532334019390127e+01 2.3712667591392105e+01 5.2499999697090622e+00 0 0 0 +20815 1 6.4215850010872018e+01 2.3151190833474882e+01 6.9999999862308817e+00 0 0 0 +20176 1 6.6460538253435814e+01 2.4247217074004844e+01 3.5000000027596441e+00 0 0 0 +20177 1 6.5899365925581435e+01 2.2589714016844489e+01 5.2500000405846601e+00 0 0 0 +20178 1 6.4777022097313846e+01 2.4808693846438967e+01 5.2499999846690182e+00 0 0 0 +20816 1 6.6460538261455127e+01 2.4247217031973321e+01 7.0000000101613358e+00 0 0 0 +20182 1 6.8144053560815649e+01 2.3685740027648563e+01 5.2500000060309153e+00 0 0 0 +20236 1 7.0388740010740051e+01 2.4781765983005439e+01 5.2499999794600463e+00 0 0 0 +20186 1 7.1511090846977183e+01 2.2562787355048847e+01 5.2499999685079644e+00 0 0 0 +20238 1 7.2072252883569391e+01 2.4220286028736140e+01 3.4999999829879513e+00 0 0 0 +20240 1 7.3755787159002480e+01 2.3658812341033855e+01 5.2499999793611769e+00 0 0 0 +20878 1 7.2072252862317114e+01 2.4220286011116340e+01 6.9999999519905964e+00 0 0 0 +20244 1 7.7122769756280022e+01 2.2535895263822631e+01 5.2500000616889047e+00 0 0 0 +20245 1 7.6000492148869284e+01 2.4754826139983471e+01 5.2500000208242037e+00 0 0 0 +20243 1 7.7684224086981231e+01 2.4193465046460570e+01 3.5000000549364270e+00 0 0 0 +20249 1 7.9367521423296438e+01 2.3632094925171675e+01 5.2500000859215934e+00 0 0 0 +20883 1 7.7684224105728305e+01 2.4193465053113691e+01 7.0000000726444425e+00 0 0 0 +20305 1 8.3289036147076445e+01 2.4165309834042542e+01 3.5000000090031063e+00 0 0 0 +20253 1 8.2732307761285767e+01 2.2506583751017139e+01 5.2499999860447737e+00 0 0 0 +20303 1 8.1612970014235856e+01 2.4728952598476404e+01 5.2500000736365164e+00 0 0 0 +20945 1 8.3289036298119797e+01 2.4165309791564571e+01 7.0000000190502734e+00 0 0 0 +20307 1 8.4964193553526584e+01 2.3596496076946952e+01 5.2499999493624792e+00 0 0 0 +20310 1 8.9045575975244404e+01 2.4100674402810935e+01 3.5000000336253700e+00 0 0 0 +20311 1 8.8549510223211101e+01 2.2501261359855590e+01 5.2499999321282509e+00 0 0 0 +20312 1 8.7168422311725166e+01 2.4653057939650761e+01 5.2499999159611708e+00 0 0 0 +20950 1 8.9045575986150865e+01 2.4100674310903969e+01 6.9999998039093798e+00 0 0 0 +20104 1 4.6819519914786753e+01 2.7108452515086206e+01 5.2499999644687509e+00 0 0 0 +20740 1 4.5136004036641381e+01 2.7669928961206448e+01 6.9999999899404521e+00 0 0 0 +20741 1 4.6258347954721273e+01 2.5450949295920218e+01 6.9999999902197159e+00 0 0 0 +20108 1 5.0186551468229965e+01 2.5985499654817552e+01 5.2500000184222539e+00 0 0 0 +20157 1 4.9064207604431850e+01 2.8204479346019635e+01 5.2499999906499912e+00 0 0 0 +20742 1 4.8503035740620454e+01 2.6546976132142760e+01 7.0000000000206555e+00 0 0 0 +20799 1 5.0747723316150513e+01 2.7643002939449214e+01 7.0000000183917379e+00 0 0 0 +20161 1 5.2431239016158884e+01 2.7081526564830174e+01 5.2500000194147507e+00 0 0 0 +20166 1 5.4675926533012472e+01 2.8177553457380959e+01 5.2499999910187585e+00 0 0 0 +20803 1 5.4114754716815085e+01 2.6520050201810037e+01 7.0000000217011022e+00 0 0 0 +20746 1 5.1870067171028680e+01 2.5424023282165010e+01 7.0000000467959831e+00 0 0 0 +20164 1 5.6359442354321864e+01 2.7616077096590601e+01 3.4999999399911581e+00 0 0 0 +20167 1 5.7481786111088077e+01 2.5397097337189486e+01 3.4999999677082827e+00 0 0 0 +20165 1 5.5798270436788634e+01 2.5958573788197352e+01 5.2500000040269752e+00 0 0 0 +20804 1 5.6359442434952300e+01 2.7616077065722966e+01 7.0000000151399435e+00 0 0 0 +20807 1 5.7481786143388021e+01 2.5397097364182684e+01 6.9999999701195934e+00 0 0 0 +20170 1 5.8042958151775515e+01 2.7054600644076963e+01 5.2499999880048298e+00 0 0 0 +20224 1 6.0287646107232433e+01 2.8150627165060214e+01 5.2499999479754189e+00 0 0 0 +20172 1 6.3093505890784563e+01 2.5370170628809586e+01 3.4999999747929302e+00 0 0 0 +20226 1 6.1971162010562402e+01 2.7589150382093287e+01 3.4999999749263115e+00 0 0 0 +20174 1 6.1409989918981744e+01 2.5931647311277505e+01 5.2499999271524169e+00 0 0 0 +20228 1 6.3654678003776823e+01 2.7027673560371589e+01 5.2499999670310036e+00 0 0 0 +20812 1 6.3093505893298662e+01 2.5370170617087293e+01 6.9999999683343246e+00 0 0 0 +20866 1 6.1971162000391985e+01 2.7589150412848237e+01 6.9999999435545668e+00 0 0 0 +20232 1 6.7021710520846113e+01 2.5904720118403905e+01 5.2499999901896217e+00 0 0 0 +20233 1 6.5899366022672993e+01 2.8123699738863010e+01 5.2499999802825119e+00 0 0 0 +20237 1 6.9266399615831048e+01 2.7000746448360111e+01 5.2499999570795932e+00 0 0 0 +20235 1 7.0949916800642782e+01 2.6439271309725310e+01 3.4999999408156750e+00 0 0 0 +20241 1 7.2633422941400042e+01 2.5877792397164026e+01 5.2499999442953147e+00 0 0 0 +20291 1 7.1511090668119976e+01 2.8096773059095792e+01 5.2499999418815708e+00 0 0 0 +20875 1 7.0949916815561480e+01 2.6439271301684144e+01 6.9999999472867946e+00 0 0 0 +20297 1 7.6561515378069458e+01 2.6412288362605324e+01 3.5000000583584261e+00 0 0 0 +20295 1 7.4878098484185969e+01 2.6973823066890283e+01 5.2499999796677264e+00 0 0 0 +20300 1 7.7122769243735803e+01 2.8069880995484471e+01 5.2500000151117945e+00 0 0 0 +20937 1 7.6561515313036352e+01 2.6412288398943431e+01 7.0000000287896134e+00 0 0 0 +20299 1 7.8245180008913394e+01 2.5850775574509139e+01 5.2500000713724626e+00 0 0 0 +20304 1 8.0489602631365699e+01 2.6946411587399833e+01 5.2500000922999481e+00 0 0 0 +20302 1 8.2176992957299703e+01 2.6386444488823074e+01 3.5000000356286392e+00 0 0 0 +20357 1 8.2732307271619746e+01 2.8040569699004813e+01 5.2500000577040620e+00 0 0 0 +20942 1 8.2176993074158787e+01 2.6386444444586768e+01 7.0000000987719941e+00 0 0 0 +20308 1 8.3862484074192963e+01 2.5828606735417988e+01 5.2500000164227671e+00 0 0 0 +20361 1 8.6132425947823478e+01 2.6937264105725227e+01 5.2499999318650783e+00 0 0 0 +20363 1 8.7753273163204781e+01 2.6378237147154497e+01 3.4999999301885683e+00 0 0 0 +20364 1 8.9214901434025492e+01 2.5735319773734940e+01 5.2499998957662877e+00 0 0 0 +20365 1 8.8549509933514329e+01 2.8035247296889665e+01 5.2499998897520364e+00 0 0 0 +21003 1 8.7753273271934916e+01 2.6378237073108735e+01 6.9999999147358709e+00 0 0 0 +20154 1 4.5697175981072739e+01 2.9327432152508102e+01 5.2499999662444097e+00 0 0 0 +20158 1 4.7941863812781257e+01 3.0423458991452016e+01 5.2500000018073134e+00 0 0 0 +20793 1 4.6258347980716714e+01 3.0984935384445677e+01 6.9999999893687850e+00 0 0 0 +20795 1 4.7380691862447769e+01 2.8765955822230531e+01 6.9999999627416738e+00 0 0 0 +20162 1 5.1308895364202861e+01 2.9300506301674414e+01 5.2499999994729194e+00 0 0 0 +20212 1 5.0186551569997505e+01 3.1519485926027283e+01 5.2500000070381834e+00 0 0 0 +20796 1 4.9625379584801635e+01 2.9861982585759602e+01 7.0000000124081438e+00 0 0 0 +20216 1 5.3553583030550378e+01 3.0396533155519052e+01 5.2500000049792002e+00 0 0 0 +20800 1 5.2992410991001279e+01 2.8739029819068776e+01 7.0000000058307084e+00 0 0 0 +20854 1 5.1870067282294876e+01 3.0958009572993110e+01 7.0000000062070757e+00 0 0 0 +20220 1 5.6920614345684029e+01 2.9273580287033170e+01 5.2499999722541144e+00 0 0 0 +20221 1 5.5798270720998154e+01 3.1492560101733595e+01 5.2499999994587272e+00 0 0 0 +20859 1 5.7481786392351481e+01 3.0931083572751241e+01 6.9999999766951646e+00 0 0 0 +20858 1 5.5237098749299165e+01 2.9835056866164841e+01 7.0000000050412456e+00 0 0 0 +20223 1 6.0848818093875408e+01 2.9808130297962904e+01 3.4999999705767340e+00 0 0 0 +20225 1 5.9165302297706795e+01 3.0369607021743874e+01 5.2499999299951465e+00 0 0 0 +20863 1 6.0848818102101355e+01 2.9808130260146605e+01 6.9999999414979195e+00 0 0 0 +20229 1 6.2532334187322753e+01 2.9246653498899775e+01 5.2499999688781225e+00 0 0 0 +20279 1 6.1409990253396678e+01 3.1465633370861912e+01 5.2499999660091561e+00 0 0 0 +20283 1 6.4777022328455303e+01 3.0342679721649997e+01 5.2499999908120687e+00 0 0 0 +20288 1 6.7021710751851160e+01 3.1438706025445725e+01 5.2500000065241599e+00 0 0 0 +20925 1 6.6460538424607762e+01 2.9781202879679920e+01 6.9999999979307077e+00 0 0 0 +20286 1 6.8705226815993953e+01 3.0877229451965775e+01 3.4999999801350148e+00 0 0 0 +20287 1 6.8144053627561135e+01 2.9219725786614362e+01 5.2499999702822722e+00 0 0 0 +20289 1 6.9827569341947353e+01 2.8658248307091277e+01 3.4999999653134797e+00 0 0 0 +20292 1 7.0388740078295854e+01 3.0315751859241299e+01 5.2499999195443960e+00 0 0 0 +20926 1 6.8705226843206191e+01 3.0877229420263589e+01 6.9999999719886192e+00 0 0 0 +20929 1 6.9827569361138771e+01 2.8658248267384018e+01 6.9999999334908090e+00 0 0 0 +20296 1 7.3755786908091196e+01 2.9192798076110613e+01 5.2499999328656237e+00 0 0 0 +20345 1 7.2633422914325905e+01 3.1411778312167357e+01 5.2499999101933215e+00 0 0 0 +20294 1 7.5439348181398216e+01 2.8631350781698064e+01 3.4999999869979121e+00 0 0 0 +20347 1 7.4316919301715089e+01 3.0850287202159553e+01 3.4999999441967615e+00 0 0 0 +20349 1 7.6000491868708608e+01 3.0288811938154652e+01 5.2499999703796894e+00 0 0 0 +20987 1 7.4316919262281502e+01 3.0850287214304295e+01 6.9999999456996154e+00 0 0 0 +20934 1 7.5439348098575394e+01 2.8631350817323803e+01 6.9999999677090496e+00 0 0 0 +20352 1 7.9929642726109023e+01 3.0823711573608563e+01 3.5000000255183519e+00 0 0 0 +20353 1 7.9367520926662337e+01 2.9166080793969439e+01 5.2500000624328713e+00 0 0 0 +20354 1 7.8245179764829359e+01 3.1384761488762621e+01 5.2500000025630031e+00 0 0 0 +20992 1 7.9929642694534266e+01 3.0823711587111568e+01 7.0000000621097396e+00 0 0 0 +20355 1 8.1049142627827663e+01 2.8603839239162156e+01 3.5000000488077969e+00 0 0 0 +20358 1 8.1612969571153300e+01 3.0262938534141274e+01 5.2500000431862892e+00 0 0 0 +20995 1 8.1049142658836345e+01 2.8603839223211139e+01 7.0000001017190989e+00 0 0 0 +20360 1 8.6710920461648612e+01 2.8581192382389560e+01 3.4999999462502753e+00 0 0 0 +20409 1 8.5523442810844358e+01 3.0795095376482642e+01 3.4999999771080681e+00 0 0 0 +20362 1 8.4964193106149324e+01 2.9130481989982943e+01 5.2500000026566775e+00 0 0 0 +20407 1 8.3862483664776917e+01 3.1362592695068216e+01 5.2500000224659376e+00 0 0 0 +21000 1 8.6710920540967365e+01 2.8581192338698809e+01 6.9999999926490739e+00 0 0 0 +21049 1 8.5523442875522292e+01 3.0795095295912802e+01 7.0000000583340904e+00 0 0 0 +20411 1 8.7168422147981971e+01 3.0187043961893178e+01 5.2499999664306962e+00 0 0 0 +20414 1 8.9214901081963845e+01 3.1269305644299170e+01 5.2499999373336461e+00 0 0 0 +20208 1 4.6819519964058330e+01 3.2642438695622857e+01 5.2499999838165667e+00 0 0 0 +20846 1 4.5136004062006769e+01 3.3203915082260686e+01 6.9999999856459949e+00 0 0 0 +20847 1 4.7380691923439443e+01 3.4299942056307977e+01 7.0000000178147719e+00 0 0 0 +20213 1 4.9064207774767652e+01 3.3738465671233548e+01 5.2499999933815538e+00 0 0 0 +20851 1 5.0747723475712561e+01 3.3176989277493519e+01 6.9999999940860009e+00 0 0 0 +20850 1 4.8503035807634134e+01 3.2080962369522041e+01 7.0000000179565989e+00 0 0 0 +20217 1 5.2431239150536740e+01 3.2615512877357673e+01 5.2500000306167909e+00 0 0 0 +20271 1 5.4675926858761045e+01 3.3711539834187136e+01 5.2499999992639674e+00 0 0 0 +20855 1 5.4114754963642632e+01 3.2054036553564259e+01 7.0000000285723880e+00 0 0 0 +20909 1 5.2992411213329270e+01 3.4273016204329728e+01 7.0000000399293700e+00 0 0 0 +20913 1 5.6359442721396441e+01 3.3150063364794740e+01 6.9999999726497650e+00 0 0 0 +20274 1 5.8604130706359044e+01 3.4246090096488309e+01 3.4999999646144420e+00 0 0 0 +20277 1 5.9726474356775618e+01 3.2027110180149698e+01 3.4999999587908643e+00 0 0 0 +20275 1 5.8042958495274611e+01 3.2588586881807331e+01 5.2499999659535144e+00 0 0 0 +20280 1 6.0287646573815870e+01 3.3684613333477571e+01 5.2499999658253476e+00 0 0 0 +20917 1 5.9726474359710046e+01 3.2027110194647946e+01 6.9999999507127164e+00 0 0 0 +20914 1 5.8604130734449051e+01 3.4246090069662991e+01 6.9999999484998368e+00 0 0 0 +20335 1 6.4215850635996489e+01 3.4219162775118512e+01 3.5000000296511349e+00 0 0 0 +20284 1 6.3654678381867093e+01 3.2561659588766240e+01 5.2499999939806967e+00 0 0 0 +20975 1 6.4215850633065585e+01 3.4219162735181030e+01 6.9999999859146769e+00 0 0 0 +20282 1 6.5338194455726367e+01 3.2000182734152602e+01 3.5000000327286824e+00 0 0 0 +20337 1 6.5899366388529913e+01 3.3657685802764519e+01 5.2500000356419090e+00 0 0 0 +20339 1 6.7582882436270495e+01 3.3096208757691912e+01 3.5000000172983698e+00 0 0 0 +20922 1 6.5338194478118908e+01 3.2000182703764708e+01 6.9999999941337228e+00 0 0 0 +20979 1 6.7582882455640245e+01 3.3096208733089234e+01 6.9999999971218170e+00 0 0 0 +20341 1 6.9266399842324319e+01 3.2534732443649467e+01 5.2499999763928455e+00 0 0 0 +20344 1 7.3194615023011409e+01 3.3069289203683105e+01 3.4999999728810209e+00 0 0 0 +20346 1 7.1511090808217801e+01 3.3630759069404938e+01 5.2499999563931130e+00 0 0 0 +20984 1 7.3194614997380398e+01 3.3069289226390389e+01 6.9999999276430707e+00 0 0 0 +20350 1 7.4878098433603896e+01 3.2507808998314552e+01 5.2499999297335780e+00 0 0 0 +20399 1 7.7122769175020906e+01 3.3603866999705154e+01 5.2499999842009641e+00 0 0 0 +20401 1 7.8805833952988564e+01 3.3042171053697622e+01 3.4999999914360256e+00 0 0 0 +20403 1 8.0489602363604504e+01 3.2480397589654203e+01 5.2500000199754702e+00 0 0 0 +21041 1 7.8805833910040732e+01 3.3042171082115765e+01 7.0000000251840842e+00 0 0 0 +20408 1 8.2732306977111080e+01 3.3574555706766191e+01 5.2500000203228749e+00 0 0 0 +20406 1 8.4431590086713214e+01 3.3017262220449993e+01 3.4999999809712734e+00 0 0 0 +20412 1 8.6132425757805905e+01 3.2471250056619233e+01 5.2500000244342537e+00 0 0 0 +21046 1 8.4431590098573608e+01 3.3017262207463766e+01 7.0000000789829437e+00 0 0 0 +22395 1 8.5523442858719946e+01 4.1863067713986283e+01 1.3999999961006550e+01 0 0 0 +22394 1 8.3862483775918051e+01 4.2430565196896360e+01 1.5749999989974071e+01 0 0 0 +20448 1 8.8549509724980695e+01 3.3569233150580992e+01 5.2500000109286491e+00 0 0 0 +20209 1 4.5697176019739842e+01 3.4861418345974677e+01 5.2499999810453790e+00 0 0 0 +20263 1 4.7941863952916819e+01 3.5957445342393321e+01 5.2499999928591015e+00 0 0 0 +20901 1 4.6258348027864443e+01 3.6518921651757090e+01 6.9999999970097226e+00 0 0 0 +20267 1 5.1308895500303535e+01 3.4834492635210580e+01 5.2500000180190245e+00 0 0 0 +20268 1 5.0186551751657447e+01 3.7053472310767653e+01 5.2500000286617849e+00 0 0 0 +20902 1 4.8503035928737226e+01 3.7614948726481785e+01 7.0000000024320199e+00 0 0 0 +20905 1 4.9625379742217270e+01 3.5395968954226788e+01 6.9999999997694742e+00 0 0 0 +20272 1 5.3553583337996521e+01 3.5930519528268242e+01 5.2500000150162984e+00 0 0 0 +20963 1 5.4114755279346618e+01 3.7588022909088110e+01 6.9999999819076093e+00 0 0 0 +20906 1 5.1870067521640337e+01 3.6491995966496575e+01 7.0000000328860743e+00 0 0 0 +20276 1 5.6920614763723854e+01 3.4807566595821982e+01 5.2499999591481270e+00 0 0 0 +20325 1 5.5798271104783424e+01 3.7026546419822843e+01 5.2499999863118516e+00 0 0 0 +20910 1 5.5237099070535137e+01 3.5369043226624107e+01 6.9999999846853465e+00 0 0 0 +20967 1 5.7481786877062909e+01 3.6465069882390409e+01 6.9999999566268007e+00 0 0 0 +20329 1 5.9165302818936851e+01 3.5903593272917071e+01 5.2499999470767023e+00 0 0 0 +20968 1 5.9726474936360248e+01 3.7561096404996519e+01 6.9999999167721922e+00 0 0 0 +20971 1 6.0848818649691204e+01 3.5342116479145531e+01 6.9999999522741803e+00 0 0 0 +20332 1 6.3093506797778090e+01 3.6438142775265078e+01 3.4999999907069945e+00 0 0 0 +20333 1 6.2532334730976793e+01 3.4780639645339626e+01 5.2499999754548163e+00 0 0 0 +20334 1 6.1409990871654919e+01 3.6999619569421135e+01 5.2499999520220930e+00 0 0 0 +20972 1 6.3093506781177808e+01 3.6438142774524067e+01 6.9999999793520926e+00 0 0 0 +20336 1 6.6460538895014750e+01 3.5315189068478951e+01 3.5000000248781080e+00 0 0 0 +20338 1 6.4777022883938585e+01 3.5876665888630136e+01 5.2499999999356231e+00 0 0 0 +20387 1 6.7021711284788253e+01 3.6972692279759855e+01 5.2500000014357422e+00 0 0 0 +20976 1 6.6460538879872047e+01 3.5315188995960476e+01 7.0000000118488011e+00 0 0 0 +20342 1 6.8144053990529159e+01 3.4753711925610894e+01 5.2500000099243138e+00 0 0 0 +20391 1 7.0388740364456496e+01 3.5849738019532893e+01 5.2499999900422445e+00 0 0 0 +20390 1 7.0949917301995626e+01 3.7507243535416542e+01 3.4999999929215364e+00 0 0 0 +20393 1 7.2072252997187690e+01 3.5288257963063579e+01 3.4999999904231500e+00 0 0 0 +20395 1 7.3755787027035524e+01 3.4726784156316128e+01 5.2499999577089369e+00 0 0 0 +20396 1 7.2633423179684939e+01 3.6945764504812530e+01 5.2499999716965471e+00 0 0 0 +21030 1 7.0949917261260182e+01 3.7507243523237562e+01 6.9999999768261008e+00 0 0 0 +21033 1 7.2072252961877737e+01 3.5288257928387239e+01 6.9999999603533762e+00 0 0 0 +20400 1 7.6000491959045064e+01 3.5822798066201990e+01 5.2499999928762966e+00 0 0 0 +20434 1 7.6561515331805580e+01 3.7480260498485080e+01 3.5000000538092979e+00 0 0 0 +21074 1 7.6561515300235513e+01 3.7480260499880735e+01 6.9999999908861499e+00 0 0 0 +20398 1 7.7684223691845219e+01 3.5261436941204686e+01 3.5000000135893079e+00 0 0 0 +20404 1 7.9367520832894101e+01 3.4700066864781633e+01 5.2500000005264313e+00 0 0 0 +20436 1 7.8245179802229444e+01 3.6918747668988615e+01 5.2500000117653158e+00 0 0 0 +21038 1 7.7684223665622625e+01 3.5261436955416102e+01 7.0000000056542486e+00 0 0 0 +20439 1 8.2176992646690650e+01 3.7454416642914943e+01 3.4999999900034124e+00 0 0 0 +20440 1 8.1612969480634661e+01 3.5796924660558204e+01 5.2500000134382407e+00 0 0 0 +20442 1 8.3289035601845541e+01 3.5233281847211359e+01 3.5000000096985753e+00 0 0 0 +21079 1 8.2176992655775365e+01 3.7454416679366922e+01 7.0000000578921719e+00 0 0 0 +21082 1 8.3289035618438916e+01 3.5233281850991034e+01 7.0000000552072450e+00 0 0 0 +20444 1 8.4964193000304562e+01 3.4664468091891344e+01 5.2500000345013849e+00 0 0 0 +20445 1 8.3862483669843812e+01 3.6896578840569120e+01 5.2500000111218696e+00 0 0 0 +20447 1 8.9045575746866973e+01 3.5168646322148227e+01 3.4999999800918591e+00 0 0 0 +20449 1 8.7168421862935105e+01 3.5721029820956588e+01 5.2500000175138890e+00 0 0 0 +20469 1 8.7753272922043521e+01 3.7446209146736777e+01 3.4999999479948083e+00 0 0 0 +20470 1 8.9214901437728869e+01 3.6803291648456423e+01 5.2500000270377871e+00 0 0 0 +21087 1 8.9045575761721892e+01 3.5168646179925226e+01 7.0000000487025567e+00 0 0 0 +21109 1 8.7753272981523224e+01 3.7446209024151365e+01 7.0000001388112150e+00 0 0 0 +20900 1 4.5136003984404681e+01 3.8737901343907531e+01 6.9999999842568510e+00 0 0 0 +20264 1 4.6819520004670608e+01 3.8176425013011055e+01 5.2499999781154054e+00 0 0 0 +20314 1 4.5697175920593743e+01 4.0395404648645581e+01 5.2499999825689034e+00 0 0 0 +20955 1 4.7380691921597851e+01 3.9833928448217762e+01 6.9999999680419025e+00 0 0 0 +20317 1 4.9064207827062305e+01 3.9272452025211926e+01 5.2499999853418764e+00 0 0 0 +20322 1 5.1308895750174422e+01 4.0368479044242278e+01 5.2499999807478828e+00 0 0 0 +20956 1 4.9625379795595087e+01 4.0929955321587336e+01 7.0000000115640901e+00 0 0 0 +20959 1 5.0747723644643436e+01 3.8710975671433019e+01 7.0000000159175579e+00 0 0 0 +20321 1 5.2431239481139741e+01 3.8149499290783467e+01 5.2499999916672468e+00 0 0 0 +20326 1 5.4675927198105498e+01 3.9245526134263493e+01 5.2499999785354747e+00 0 0 0 +20960 1 5.2992411497560084e+01 3.9807002553905910e+01 6.9999999708516567e+00 0 0 0 +20375 1 5.6920615244474732e+01 4.0341552857453863e+01 5.2499999455070094e+00 0 0 0 +20964 1 5.6359443199346586e+01 3.8684049673857075e+01 6.9999999742133365e+00 0 0 0 +21013 1 5.5237099467005208e+01 4.0903029496055098e+01 6.9999999579012524e+00 0 0 0 +20378 1 6.0848819278574553e+01 4.0876102679287186e+01 3.4999999581825771e+00 0 0 0 +20330 1 5.8042959063574322e+01 3.8122573158434832e+01 5.2499999706302667e+00 0 0 0 +20379 1 6.0287647195742579e+01 3.9218599533040091e+01 5.2499999430720532e+00 0 0 0 +21017 1 5.8604131264703668e+01 3.9780076274274862e+01 6.9999999484583526e+00 0 0 0 +21018 1 6.0848819246873433e+01 4.0876102630831532e+01 6.9999999361626752e+00 0 0 0 +20381 1 6.1971163112003815e+01 3.8657122698163697e+01 3.4999999580268430e+00 0 0 0 +20383 1 6.3654679045554388e+01 3.8095645798600486e+01 5.2499999855891764e+00 0 0 0 +20384 1 6.2532335375267770e+01 4.0314625830458141e+01 5.2499999734515272e+00 0 0 0 +21021 1 6.1971163088872252e+01 3.8657122705871927e+01 6.9999999413771548e+00 0 0 0 +20388 1 6.5899367033863243e+01 3.9191672094727103e+01 5.2499999994984492e+00 0 0 0 +21062 1 6.6460539480413118e+01 4.0849175372691761e+01 7.0000000088743448e+00 0 0 0 +20392 1 6.9266400288496754e+01 3.8068718770514316e+01 5.2499999826218948e+00 0 0 0 +20424 1 6.8144054563403202e+01 4.0287698328593208e+01 5.2499999766926315e+00 0 0 0 +20426 1 6.9827570136223187e+01 3.9726220808233471e+01 3.4999999843478400e+00 0 0 0 +21066 1 6.9827570105946563e+01 3.9726220783841448e+01 6.9999999685446870e+00 0 0 0 +20428 1 7.1511091247434848e+01 3.9164745475921585e+01 5.2499999863348981e+00 0 0 0 +20433 1 7.3755787407279314e+01 4.0260770565584437e+01 5.2499999952625833e+00 0 0 0 +20431 1 7.5439348490757283e+01 3.9699323172273061e+01 3.5000000540784244e+00 0 0 0 +20432 1 7.4878098694356524e+01 3.8041795262601362e+01 5.2500000030053195e+00 0 0 0 +20437 1 7.7122769383032932e+01 3.9137853323330141e+01 5.2500000136144971e+00 0 0 0 +21071 1 7.5439348412471361e+01 3.9699323186992437e+01 6.9999999793412053e+00 0 0 0 +20459 1 7.9367521034598482e+01 4.0234053263530747e+01 5.2500000256646100e+00 0 0 0 +20441 1 8.0489602407191313e+01 3.8014383833904994e+01 5.2500000300215985e+00 0 0 0 +20461 1 8.1049142571500269e+01 3.9671811633021179e+01 3.5000000166263083e+00 0 0 0 +20463 1 8.2732307106379238e+01 3.9108542011992910e+01 5.2500000180484792e+00 0 0 0 +21101 1 8.1049142589595277e+01 3.9671811629414051e+01 7.0000000396887598e+00 0 0 0 +20466 1 8.6710920341979119e+01 3.9649164525322966e+01 3.4999999827658441e+00 0 0 0 +20467 1 8.6132425679049845e+01 3.8005236165269324e+01 5.2499999809047848e+00 0 0 0 +20468 1 8.4964193021358824e+01 4.0198454259121689e+01 5.2499999965806481e+00 0 0 0 +21106 1 8.6710920351041239e+01 3.9649164492060507e+01 7.0000000176411596e+00 0 0 0 +20471 1 8.8549509828239081e+01 3.9103219289008955e+01 5.2499999906901156e+00 0 0 0 +20318 1 4.7941863869753590e+01 4.1491431658514820e+01 5.2499999924995207e+00 0 0 0 +20366 1 4.6819519829222990e+01 4.3710411294695930e+01 5.2499999732096292e+00 0 0 0 +20953 1 4.6258347871684649e+01 4.2052907958107042e+01 6.9999999664822070e+00 0 0 0 +20368 1 5.0186551801724960e+01 4.2587458641239031e+01 5.2499999751816473e+00 0 0 0 +21007 1 4.8503035848507757e+01 4.3148935054557207e+01 6.9999999852757409e+00 0 0 0 +23684 1 5.0747723669496537e+01 4.4244961923590409e+01 6.9999999486596582e+00 0 0 0 +20371 1 5.3553583610322448e+01 4.1464505838099946e+01 5.2499999703827465e+00 0 0 0 +20372 1 5.2431239571774348e+01 4.3683485520290233e+01 5.2499999798895089e+00 0 0 0 +21009 1 5.1870067664838842e+01 4.2025982288768297e+01 6.9999999666970973e+00 0 0 0 +21010 1 5.4114755551859560e+01 4.3122009156046971e+01 6.9999999928378687e+00 0 0 0 +20376 1 5.5798271520149193e+01 4.2560532659435772e+01 5.2499999788185150e+00 0 0 0 +21014 1 5.7481787332494498e+01 4.1999056052274170e+01 6.9999999387560452e+00 0 0 0 +23699 1 5.6359443506393347e+01 4.4218035813919457e+01 6.9999999533993362e+00 0 0 0 +20416 1 5.9726475481933399e+01 4.3095082565833302e+01 3.4999999616667998e+00 0 0 0 +20380 1 5.9165303378642932e+01 4.1437579467882799e+01 5.2499999438233882e+00 0 0 0 +20415 1 5.8042959479482825e+01 4.3656559274903941e+01 5.2499999654567580e+00 0 0 0 +21056 1 5.9726475443283476e+01 4.3095082547712188e+01 6.9999999306891043e+00 0 0 0 +20417 1 6.1409991435456341e+01 4.2533605730331765e+01 5.2499999531068067e+00 0 0 0 +20421 1 6.3654679556912548e+01 4.3629632019656235e+01 5.2499999883755040e+00 0 0 0 +20419 1 6.5338195650894420e+01 4.3068155263294472e+01 3.4999999951795195e+00 0 0 0 +20420 1 6.4777023499736018e+01 4.1410652152340163e+01 5.2499999861995565e+00 0 0 0 +20425 1 6.7021711837061858e+01 4.2506678659350463e+01 5.2499999878267900e+00 0 0 0 +21059 1 6.5338195599952229e+01 4.3068155258748959e+01 6.9999999823396886e+00 0 0 0 +23090 1 6.7582883491686715e+01 4.4164181497507549e+01 3.4999999775213717e+00 0 0 0 +23730 1 6.7582883481323293e+01 4.4164181509517100e+01 6.9999999897928014e+00 0 0 0 +20423 1 6.8705227817193560e+01 4.1945202134503262e+01 3.4999999732226166e+00 0 0 0 +20429 1 7.0388740892731221e+01 4.1383724524997845e+01 5.2499999540946485e+00 0 0 0 +20450 1 6.9266400791842301e+01 4.3602705273514950e+01 5.2499999618947966e+00 0 0 0 +21063 1 6.8705227770524729e+01 4.1945202122813306e+01 6.9999999832184283e+00 0 0 0 +20452 1 7.2633423639136424e+01 4.2479751078692161e+01 5.2499999507552788e+00 0 0 0 +23093 1 7.3194615772488788e+01 4.4137262114307198e+01 3.4999999936106718e+00 0 0 0 +23733 1 7.3194615706736130e+01 4.4137262115942853e+01 6.9999999416051413e+00 0 0 0 +20453 1 7.4316919895414230e+01 4.1918259869188596e+01 3.5000000093140802e+00 0 0 0 +20455 1 7.6000492297169885e+01 4.1356784535211446e+01 5.2500000200590513e+00 0 0 0 +20456 1 7.4878099053948361e+01 4.3575781826957240e+01 5.2499999744772934e+00 0 0 0 +21093 1 7.4316919811297552e+01 4.1918259871622197e+01 6.9999999708708165e+00 0 0 0 +20458 1 7.9929642942519095e+01 4.1891684201654037e+01 3.5000000309446166e+00 0 0 0 +20460 1 7.8245180128826846e+01 4.2452734206952094e+01 5.2500000244125697e+00 0 0 0 +20472 1 8.0489602665405386e+01 4.3548370380424338e+01 5.2500000240346054e+00 0 0 0 +21098 1 7.9929642900581300e+01 4.1891684233037061e+01 7.0000000267414997e+00 0 0 0 +23135 1 7.8805834376442476e+01 4.4110143933529812e+01 3.5000000233088819e+00 0 0 0 +23775 1 7.8805834313377645e+01 4.4110143961341741e+01 7.0000000206073878e+00 0 0 0 +20464 1 8.1612969670308203e+01 4.1330911075177077e+01 5.2500000021483251e+00 0 0 0 +20475 1 8.5523442873595201e+01 4.1863067740692408e+01 3.4999999810701818e+00 0 0 0 +20474 1 8.3862483795687652e+01 4.2430565211707069e+01 5.2499999964179445e+00 0 0 0 +20478 1 8.6132425877596049e+01 4.3539222514033867e+01 5.2499999959310664e+00 0 0 0 +21115 1 8.5523442889620711e+01 4.1863067692326190e+01 7.0000000269761653e+00 0 0 0 +23138 1 8.4431590295237228e+01 4.4085234829108849e+01 3.4999999942498659e+00 0 0 0 +23778 1 8.4431590284236705e+01 4.4085234846127904e+01 7.0000000347675462e+00 0 0 0 +22384 1 8.1612969613059690e+01 4.1330911036899565e+01 1.5750000002316783e+01 0 0 0 +4484 1 9.0272007528377344e+01 4.3852899411690814e+01 7.0000000016490302e+00 -1 0 0 +20477 1 8.7168422085218140e+01 4.1255016110393022e+01 5.2499999909457236e+00 0 0 0 +20480 1 8.9214901170948366e+01 4.2337277896512077e+01 5.2499999773248378e+00 0 0 0 +20482 1 4.7380691460777385e+01 1.0960267195704005e+00 6.9999999446534309e+00 0 0 0 +20483 1 4.5697175496382691e+01 1.6575029876667200e+00 8.7499999161901965e+00 0 0 0 +20489 1 4.7941863546442811e+01 2.7535298345881305e+00 8.7499999636447683e+00 0 0 0 +20491 1 4.9625379533172371e+01 2.1920534245203549e+00 7.0000000150556616e+00 0 0 0 +20485 1 4.9064207441698365e+01 5.3455035082565650e-01 8.7500000187493399e+00 0 0 0 +20493 1 5.1308895583617819e+01 1.6305772054707250e+00 8.7500000549036141e+00 0 0 0 +20497 1 5.4675927572025380e+01 5.0762462547423626e-01 8.7500000283312716e+00 0 0 0 +20498 1 5.3553583689886118e+01 2.7266039780361391e+00 8.7500000380580545e+00 0 0 0 +20496 1 5.5237099631201886e+01 2.1651278468580357e+00 7.0000000265984443e+00 0 0 0 +20501 1 5.6920615702938314e+01 1.6036514830699302e+00 8.7499999828552610e+00 0 0 0 +21136 1 5.5237099826626363e+01 2.1651278315037028e+00 1.0500000007857174e+01 0 0 0 +20503 1 6.0287647978438294e+01 4.8069895460971068e-01 8.7499999300524252e+00 0 0 0 +20520 1 5.9165303795278824e+01 2.6996784158518672e+00 8.7499999226351850e+00 0 0 0 +20522 1 6.0848819756326172e+01 2.1382020433834059e+00 6.9999999042726797e+00 0 0 0 +21162 1 6.0848819798590725e+01 2.1382020623052238e+00 1.0499999967145129e+01 0 0 0 +20524 1 6.2532335967349105e+01 1.5767256575503166e+00 8.7499999692917836e+00 0 0 0 +20528 1 6.5899367886211110e+01 4.5377267450377540e-01 8.7500000809897891e+00 0 0 0 +20529 1 6.4777024011464874e+01 2.6727522415111507e+00 8.7500000652524186e+00 0 0 0 +20531 1 6.9827571277044626e+01 9.8832143511156001e-01 7.0000000635087476e+00 0 0 0 +20532 1 6.8144055515307116e+01 1.5497988579797155e+00 8.7500000969257723e+00 0 0 0 +20565 1 7.0388742026055169e+01 2.6458247574752307e+00 8.7500000468688999e+00 0 0 0 +21171 1 6.9827571391176988e+01 9.8832134793613857e-01 1.0500000072385337e+01 0 0 0 +20534 1 7.1511092752067867e+01 4.2684608632700838e-01 8.7500000613953031e+00 0 0 0 +20569 1 7.3755789083148599e+01 1.5228708080260276e+00 8.7500000309471098e+00 0 0 0 +20571 1 7.5439350285036014e+01 9.6142331728457164e-01 7.0000000078984881e+00 0 0 0 +20573 1 7.7122771488225098e+01 3.9995324032840135e-01 8.7499999891440901e+00 0 0 0 +20574 1 7.6000494154427145e+01 2.6188842421226082e+00 8.7500000293607680e+00 0 0 0 +21211 1 7.5439350418958426e+01 9.6142328564378499e-01 1.0499999995819568e+01 0 0 0 +20577 1 7.9367523327792824e+01 1.4961523545055695e+00 8.7499999517951554e+00 0 0 0 +20576 1 8.1049144864437352e+01 9.3391031215694587e-01 6.9999998935904797e+00 0 0 0 +20579 1 8.2732309366696811e+01 3.7064032566600480e-01 8.7499998620050299e+00 0 0 0 +20623 1 8.1612972052158625e+01 2.5930093464984001e+00 8.7499998907062952e+00 0 0 0 +21216 1 8.1049145020212961e+01 9.3391032225129478e-01 1.0499999936744185e+01 0 0 0 +20629 1 8.6710922124962792e+01 9.1126211557045811e-01 6.9999998936708385e+00 0 0 0 +20627 1 8.4964195053445053e+01 1.4605520667444145e+00 8.7499998435167718e+00 0 0 0 +21269 1 8.6710921987533595e+01 9.1126234940154949e-01 1.0500000014335825e+01 0 0 0 +20631 1 8.8549511161101009e+01 3.6531724684144529e-01 8.7500000702080722e+00 0 0 0 +20632 1 8.7168423372979916e+01 2.5171136624472319e+00 8.7499999108698407e+00 0 0 0 +20487 1 4.6258347633771557e+01 3.3150061517065832e+00 6.9999999574018039e+00 0 0 0 +20490 1 4.6819519690452132e+01 4.9725092992041615e+00 8.7499999500899381e+00 0 0 0 +20488 1 4.8503035643823402e+01 4.4110329843757770e+00 7.0000000166812972e+00 0 0 0 +20494 1 5.0186551595635606e+01 3.8495565672507546e+00 8.7500000164273786e+00 0 0 0 +20508 1 4.9064207606677797e+01 6.0685360505083725e+00 8.7499999933141623e+00 0 0 0 +20514 1 5.4114755496338702e+01 4.3841071721228069e+00 7.0000000373337814e+00 0 0 0 +20512 1 5.2431239511480975e+01 4.9455833493485395e+00 8.7500000518679535e+00 0 0 0 +20517 1 5.4675927401333141e+01 6.0416101658307273e+00 8.7500000264134457e+00 0 0 0 +20516 1 5.5798271641651340e+01 3.8226309074861797e+00 8.7499999936835522e+00 0 0 0 +20519 1 5.9726475591313317e+01 4.3571814311511901e+00 6.9999999164419497e+00 0 0 0 +20521 1 5.8042959583246258e+01 4.9186577672763097e+00 8.7499999377522784e+00 0 0 0 +20553 1 6.0287647542001977e+01 6.0146844781693680e+00 8.7499999305904375e+00 0 0 0 +21159 1 5.9726475683642960e+01 4.3571814650117267e+00 1.0499999940318400e+01 0 0 0 +20525 1 6.1409991688140472e+01 3.7957050730861241e+00 8.7499999264626958e+00 0 0 0 +20557 1 6.3654679641794559e+01 4.8917316576103298e+00 8.7499999818153338e+00 0 0 0 +20560 1 6.7582883832172058e+01 5.4262813044583700e+00 7.0000000406408525e+00 0 0 0 +20559 1 6.5338195919125980e+01 4.3302551980777393e+00 7.0000000146866981e+00 0 0 0 +20561 1 6.7021712391222167e+01 3.7687787414469716e+00 8.7500000939412015e+00 0 0 0 +20562 1 6.5899367583504670e+01 5.9877581040855050e+00 8.7500000385156333e+00 0 0 0 +21199 1 6.5338195930543776e+01 4.3302552103849079e+00 1.0500000046096389e+01 0 0 0 +21200 1 6.7582883910486302e+01 5.4262812986162023e+00 1.0500000074436111e+01 0 0 0 +20563 1 6.8705228588143456e+01 3.2073023432461825e+00 7.0000000830417317e+00 0 0 0 +20566 1 6.9266401519424008e+01 4.8648050980915993e+00 8.7500000659026735e+00 0 0 0 +21203 1 6.8705228641403352e+01 3.2073023158924570e+00 1.0500000060576902e+01 0 0 0 +20613 1 7.3194616956560054e+01 5.3993615819301937e+00 7.0000000126096857e+00 0 0 0 +20570 1 7.2633424978386671e+01 3.7418509101057360e+00 8.7500000227145378e+00 0 0 0 +20611 1 7.1511092610775250e+01 5.9608314594964478e+00 8.7500000289630666e+00 0 0 0 +21253 1 7.3194617104842777e+01 5.3993615265102326e+00 1.0500000029116331e+01 0 0 0 +20568 1 7.4316921388049650e+01 3.1803597150545695e+00 7.0000000041833470e+00 0 0 0 +20615 1 7.4878100645761279e+01 4.8378812157997872e+00 8.7500000299007521e+00 0 0 0 +20620 1 7.7122771508079069e+01 5.9339386968674415e+00 8.7500000672676919e+00 0 0 0 +21208 1 7.4316921543505231e+01 3.1803596701206724e+00 1.0500000016050997e+01 0 0 0 +20618 1 7.8805836300143227e+01 5.3722424059792990e+00 7.0000000288150179e+00 0 0 0 +20621 1 7.9929645093535001e+01 3.1537828069814959e+00 6.9999999724092774e+00 0 0 0 +20619 1 7.8245182194623553e+01 3.7148331510705126e+00 8.7500000117581820e+00 0 0 0 +20624 1 8.0489604924841885e+01 4.8104685056585108e+00 8.7499999371915784e+00 0 0 0 +21258 1 7.8805836517850693e+01 5.3722424019799213e+00 1.0500000003523080e+01 0 0 0 +21261 1 7.9929645317664750e+01 3.1537828218039454e+00 1.0499999944359246e+01 0 0 0 +20677 1 8.2732309503764895e+01 5.9046259796678546e+00 8.7499998412641045e+00 0 0 0 +20626 1 8.5523444889168630e+01 3.1251652490231967e+00 6.9999997996725938e+00 0 0 0 +20679 1 8.4431592296961057e+01 5.3473321835545891e+00 6.9999997914241234e+00 0 0 0 +20628 1 8.3862486068757590e+01 3.6926629171286405e+00 8.7499998252829041e+00 0 0 0 +20681 1 8.6132427702489082e+01 4.8013200286653941e+00 8.7499998632114302e+00 0 0 0 +21266 1 8.5523444916007833e+01 3.1251654208130941e+00 1.0499999932487610e+01 0 0 0 +21319 1 8.4431592431176441e+01 5.3473323009110318e+00 1.0499999878798091e+01 0 0 0 +25055 1 7.8805834239605147e+01 4.4110143926129219e+01 1.3999999974459737e+01 0 0 0 +20684 1 8.9214901783066793e+01 3.5993754716846409e+00 8.7499999653040401e+00 0 0 0 +20685 1 8.8549511284725227e+01 5.8993032411478685e+00 8.7499998785005726e+00 0 0 0 +22495 1 7.8805834352862576e+01 4.4110143916878634e+01 1.7499999973872516e+01 0 0 -1 +20506 1 4.7380691697173816e+01 6.6300125301634765e+00 6.9999999770535135e+00 0 0 0 +20504 1 4.6258347869177570e+01 8.8489919236288195e+00 6.9999999884791606e+00 0 0 0 +20505 1 4.5697175812987105e+01 7.1914888568081237e+00 8.7499999666090691e+00 0 0 0 +20509 1 4.7941863700221688e+01 8.2875155436205254e+00 8.7499999874939984e+00 0 0 0 +21144 1 4.6258347886346250e+01 8.8489919260752838e+00 1.0499999977413253e+01 0 0 0 +20513 1 5.1308895569329692e+01 7.1645628143760947e+00 8.7500000572871066e+00 0 0 0 +20541 1 5.0186551586772453e+01 9.3835421911520935e+00 8.7500000274377019e+00 0 0 0 +20511 1 5.2992411448084397e+01 6.6030864222680243e+00 7.0000000461760061e+00 0 0 0 +20543 1 5.1870067457274018e+01 8.8220658706113397e+00 7.0000000524157899e+00 0 0 0 +20545 1 5.3553583481006406e+01 8.2605895384468813e+00 8.7500000515261274e+00 0 0 0 +21183 1 5.1870067517147660e+01 8.8220658330623589e+00 1.0500000038173747e+01 0 0 0 +20548 1 5.7481787121961936e+01 8.7951401263172979e+00 6.9999999561707549e+00 0 0 0 +20549 1 5.6920615351508580e+01 7.1376370177975419e+00 8.7499999592722020e+00 0 0 0 +20550 1 5.5798271243886276e+01 9.3566163890177521e+00 8.7500000101212034e+00 0 0 0 +21188 1 5.7481787263073919e+01 8.7951400978180061e+00 1.0499999967134670e+01 0 0 0 +20551 1 5.8604131437414445e+01 6.5761608436009231e+00 6.9999999272952262e+00 0 0 0 +20554 1 5.9165303312490686e+01 8.2336638656352683e+00 8.7499999287273074e+00 0 0 0 +21191 1 5.8604131572574211e+01 6.5761608279715160e+00 1.0499999938620547e+01 0 0 0 +20601 1 6.3093507166304761e+01 8.7682141259826505e+00 6.9999999631669727e+00 0 0 0 +20556 1 6.4215851598462720e+01 6.5492346680590297e+00 6.9999999989730313e+00 0 0 0 +20558 1 6.2532335513794109e+01 7.1107111014729210e+00 8.7499999721237494e+00 0 0 0 +20599 1 6.1409991091290927e+01 9.3296904892135153e+00 8.7499999380479370e+00 0 0 0 +21196 1 6.4215851588940993e+01 6.5492347141045828e+00 1.0499999987341711e+01 0 0 0 +21241 1 6.3093507189842690e+01 8.7682141681963497e+00 1.0499999966497736e+01 0 0 0 +20605 1 6.6460539746768546e+01 7.6452610917171118e+00 7.0000000580360773e+00 0 0 0 +20603 1 6.4777023497348779e+01 8.2067376283690798e+00 8.7500000080681044e+00 0 0 0 +20608 1 6.7021711886319352e+01 9.3027640334589137e+00 8.7500000418377972e+00 0 0 0 +21245 1 6.6460539794774988e+01 7.6452611147704106e+00 1.0500000012239203e+01 0 0 0 +20607 1 6.8144055184993192e+01 7.0837841993453150e+00 8.7500000534643245e+00 0 0 0 +20612 1 7.0388741697322573e+01 8.1798100762287387e+00 8.7500000514616190e+00 0 0 0 +20610 1 7.2072254597459477e+01 7.6183300629308688e+00 6.9999999903118875e+00 0 0 0 +20616 1 7.3755788976286482e+01 7.0568562348371362e+00 8.7500000262131348e+00 0 0 0 +20665 1 7.2633424678162697e+01 9.2758362476920908e+00 8.7500000281981940e+00 0 0 0 +21250 1 7.2072254694644869e+01 7.6183300174949471e+00 1.0500000041353966e+01 0 0 0 +20669 1 7.6000494043184133e+01 8.1528696921466892e+00 8.7500000704306427e+00 0 0 0 +20671 1 7.7684225890421629e+01 7.5915083005691768e+00 7.0000000610470101e+00 0 0 0 +20673 1 7.9367523324770147e+01 7.0301378692107068e+00 8.7500000168528977e+00 0 0 0 +20674 1 7.8245182036860641e+01 9.2488186843881390e+00 8.7500000827824582e+00 0 0 0 +21311 1 7.7684226102396536e+01 7.5915082802133727e+00 1.0500000033929718e+01 0 0 0 +20676 1 8.3289037883254878e+01 7.5633518919722533e+00 6.9999998349772481e+00 0 0 0 +20678 1 8.1612972020200800e+01 8.1269950180692661e+00 8.7499999279182141e+00 0 0 0 +21316 1 8.3289038130826938e+01 7.5633519528571540e+00 1.0499999872263032e+01 0 0 0 +20682 1 8.4964195085119300e+01 6.9945379078764729e+00 8.7499997846579198e+00 0 0 0 +20732 1 8.3862485925929249e+01 9.2266487281157286e+00 8.7499998074031087e+00 0 0 0 +20738 1 8.9045576432182131e+01 7.4987160939338109e+00 6.9999998387064606e+00 0 0 0 +20736 1 8.7168423397406571e+01 8.0510996911552049e+00 8.7499997478179505e+00 0 0 0 +20739 1 8.9214901655172127e+01 9.1333615286589804e+00 8.7499997983074280e+00 0 0 0 +21378 1 8.9045576381245127e+01 7.4987163077165864e+00 1.0499999890829564e+01 0 0 0 +20537 1 4.6819519882658803e+01 1.0506495039233489e+01 8.7499999751379107e+00 0 0 0 +21176 1 4.7380691877516561e+01 1.2163998174316099e+01 1.0499999988847852e+01 0 0 0 +20540 1 5.0747723450138608e+01 1.1041045293502641e+01 7.0000000477241695e+00 0 0 0 +20542 1 4.9064207664696546e+01 1.1602521690062705e+01 8.7500000165683520e+00 0 0 0 +21180 1 5.0747723465689461e+01 1.1041045238987746e+01 1.0500000038251443e+01 0 0 0 +20546 1 5.2431239335374734e+01 1.0479568924956133e+01 8.7500000541715384e+00 0 0 0 +20591 1 5.4675927040804048e+01 1.1575595702471441e+01 8.7500000264476281e+00 0 0 0 +20593 1 5.6359442983770272e+01 1.1014119504999689e+01 6.9999999849164771e+00 0 0 0 +21233 1 5.6359443119429251e+01 1.1014119464660029e+01 1.0499999998539929e+01 0 0 0 +20595 1 5.8042959059913827e+01 1.0452643269159577e+01 8.7499999676774234e+00 0 0 0 +20600 1 6.0287646943156759e+01 1.1548669916481677e+01 8.7499999602513991e+00 0 0 0 +20598 1 6.1971162953370168e+01 1.0987193478367951e+01 6.9999999357635891e+00 0 0 0 +20604 1 6.3654679065699938e+01 1.0425716995715996e+01 8.7499999810135680e+00 0 0 0 +21238 1 6.1971162972425788e+01 1.0987193527773240e+01 1.0499999964538896e+01 0 0 0 +20657 1 6.5899366961927555e+01 1.1521743354259639e+01 8.7500000394806960e+00 0 0 0 +20660 1 6.9827570497848214e+01 1.2056291987113742e+01 6.9999999987029504e+00 0 0 0 +20661 1 6.9266400982845369e+01 1.0398790324175900e+01 8.7500000390193353e+00 0 0 0 +21300 1 6.9827570627581125e+01 1.2056291948449376e+01 1.0500000037755381e+01 0 0 0 +20663 1 7.0949918293060634e+01 9.8373152015281242e+00 6.9999999922369245e+00 0 0 0 +20666 1 7.1511092110416712e+01 1.1494816753073437e+01 8.7500000300772420e+00 0 0 0 +21303 1 7.0949918433372630e+01 9.8373152017090160e+00 1.0500000035808618e+01 0 0 0 +20668 1 7.6561517193098553e+01 9.8103317524741680e+00 7.0000000895681938e+00 0 0 0 +20722 1 7.5439349815784411e+01 1.2029394133605010e+01 7.0000000406922762e+00 0 0 0 +20670 1 7.4878100310366918e+01 1.0371866632440799e+01 8.7500000486289533e+00 0 0 0 +20724 1 7.7122771160937219e+01 1.1467924192585301e+01 8.7500000775671438e+00 0 0 0 +21308 1 7.6561517376657861e+01 9.8103317500960010e+00 1.0500000057142111e+01 0 0 0 +21362 1 7.5439349925134252e+01 1.2029394161647225e+01 1.0500000049490092e+01 0 0 0 +20728 1 8.0489604751251250e+01 1.0344454165003038e+01 8.7500000078041360e+00 0 0 0 +20727 1 8.1049144569119946e+01 1.2001881685062230e+01 6.9999999914665381e+00 0 0 0 +20730 1 8.2176994887136146e+01 9.7844867175971100e+00 6.9999999122028616e+00 0 0 0 +20733 1 8.2732309268555653e+01 1.1438611831594496e+01 8.7499998782182526e+00 0 0 0 +21367 1 8.1049144903156588e+01 1.2001881641212774e+01 1.0499999958176055e+01 0 0 0 +21370 1 8.2176995187550801e+01 9.7844867305295811e+00 1.0499999892717351e+01 0 0 0 +20789 1 8.6710921905652157e+01 1.1979234175433641e+01 6.9999997702539440e+00 0 0 0 +20737 1 8.6132427571349297e+01 1.0335306008255458e+01 8.7499997098049587e+00 0 0 0 +21429 1 8.6710922036735994e+01 1.1979234294964808e+01 1.0499999739628954e+01 0 0 0 +20735 1 8.7753274279340857e+01 9.7762789672592998e+00 6.9999998387115552e+00 0 0 0 +20791 1 8.8549511139443865e+01 1.1433289226674466e+01 8.7499996914561766e+00 0 0 0 +21375 1 8.7753274371562512e+01 9.7762791054967622e+00 1.0499999716227352e+01 0 0 0 +20538 1 4.5697176012921467e+01 1.2725474592843323e+01 8.7499999693784272e+00 0 0 0 +20583 1 4.7941863830670506e+01 1.3821501202309385e+01 8.7499999828751278e+00 0 0 0 +21221 1 4.6258348045276321e+01 1.4382977600936087e+01 1.0499999967277695e+01 0 0 0 +20587 1 5.1308895484461544e+01 1.2698548413682721e+01 8.7500000488523497e+00 0 0 0 +20588 1 5.0186551578994717e+01 1.4917527825516300e+01 8.7500000244759413e+00 0 0 0 +21222 1 4.8503035797431288e+01 1.5479004292236016e+01 1.0499999972686634e+01 0 0 0 +21225 1 4.9625379646724127e+01 1.3260024677782166e+01 1.0500000000210255e+01 0 0 0 +20643 1 5.4114754959683246e+01 1.5452078302599451e+01 7.0000000381260046e+00 0 0 0 +20592 1 5.3553583227716331e+01 1.3794575101840552e+01 8.7500000377906257e+00 0 0 0 +21283 1 5.4114755055149210e+01 1.5452078246149448e+01 1.0500000034820362e+01 0 0 0 +21226 1 5.1870067384609435e+01 1.4356051417784983e+01 1.0500000026800420e+01 0 0 0 +20590 1 5.5237098999060990e+01 1.3233098925150317e+01 7.0000000278405992e+00 0 0 0 +20596 1 5.6920614869288094e+01 1.2671622497975042e+01 8.7500000080344726e+00 0 0 0 +20645 1 5.5798270885981509e+01 1.4890601965324390e+01 8.7500000287388797e+00 0 0 0 +21230 1 5.5237099138982522e+01 1.3233098872491883e+01 1.0500000035455860e+01 0 0 0 +20648 1 5.9726474448434615e+01 1.5425152352753400e+01 6.9999999247648237e+00 0 0 0 +20651 1 6.0848818621689936e+01 1.3206172943631447e+01 6.9999999254994094e+00 0 0 0 +20649 1 5.9165302715191693e+01 1.3767649346790369e+01 8.7499999510964823e+00 0 0 0 +21288 1 5.9726474545782551e+01 1.5425152365493503e+01 1.0499999979020638e+01 0 0 0 +21291 1 6.0848818678460361e+01 1.3206172942173719e+01 1.0499999971527950e+01 0 0 0 +20653 1 6.2532334867824801e+01 1.2644696498790179e+01 8.7499999628451803e+00 0 0 0 +20654 1 6.1409990496202219e+01 1.4863675909868602e+01 8.7499999446585353e+00 0 0 0 +20710 1 6.5338194706102485e+01 1.5398225754867378e+01 6.9999999930434242e+00 0 0 0 +20658 1 6.4777022864448483e+01 1.3740722904156442e+01 8.7500000289242728e+00 0 0 0 +20712 1 6.7021711287102121e+01 1.4836749221195179e+01 8.7500000209254569e+00 0 0 0 +21350 1 6.5338194764558409e+01 1.5398225758921795e+01 1.0500000020234685e+01 0 0 0 +20714 1 6.8705227557137206e+01 1.4275272792059111e+01 7.0000000313186996e+00 0 0 0 +20662 1 6.8144054606137047e+01 1.2617769415495255e+01 8.7500000377045293e+00 0 0 0 +20716 1 7.0388741125726582e+01 1.3713795266759433e+01 8.7499999967441582e+00 0 0 0 +21354 1 6.8705227652572660e+01 1.4275272782268907e+01 1.0500000004443654e+01 0 0 0 +20720 1 7.3755788436799989e+01 1.2590841542484174e+01 8.7500000491625123e+00 0 0 0 +20721 1 7.2633424055883310e+01 1.4809821529627840e+01 8.7499999802090915e+00 0 0 0 +20719 1 7.4316920627571974e+01 1.4248330434311727e+01 7.0000000045133683e+00 0 0 0 +20725 1 7.6000493471977165e+01 1.3686855143287010e+01 8.7500000897883652e+00 0 0 0 +21359 1 7.4316920725565751e+01 1.4248330442509426e+01 1.0500000021160314e+01 0 0 0 +20781 1 7.9929644491593464e+01 1.4221754119080192e+01 7.0000000624932222e+00 0 0 0 +20729 1 7.9367522960300903e+01 1.2564123536702226e+01 8.7500000530917763e+00 0 0 0 +20779 1 7.8245181468490884e+01 1.4782804271648503e+01 8.7500000910404818e+00 0 0 0 +21421 1 7.9929644782154128e+01 1.4221754109789334e+01 1.0499999979053275e+01 0 0 0 +20783 1 8.1612971594270491e+01 1.3660980832902149e+01 8.7499999478807915e+00 0 0 0 +20786 1 8.5523444364252484e+01 1.4193137306677741e+01 6.9999997721447302e+00 0 0 0 +20787 1 8.4964194909692779e+01 1.2528523959273899e+01 8.7499997287328242e+00 0 0 0 +20788 1 8.3862485565226578e+01 1.4760634747892539e+01 8.7499998213257264e+00 0 0 0 +21426 1 8.5523444646832871e+01 1.4193137294235122e+01 1.0499999771975686e+01 0 0 0 +20792 1 8.7168423027024318e+01 1.3585085602963705e+01 8.7499996775278586e+00 0 0 0 +20844 1 8.9214901985457473e+01 1.4667347511578518e+01 8.7499996196538437e+00 0 0 0 +20584 1 4.6819519971624977e+01 1.6040480718989151e+01 8.7499999820691805e+00 0 0 0 +20634 1 4.5697175992813058e+01 1.8259460344575452e+01 8.7500000139919205e+00 0 0 0 +21275 1 4.7380691846821890e+01 1.7697983884079346e+01 1.0499999995297864e+01 0 0 0 +20637 1 4.9064207659674786e+01 1.7136507382046407e+01 8.7499999903990577e+00 0 0 0 +20642 1 5.1308895342481179e+01 1.8232534129669077e+01 8.7500000433282743e+00 0 0 0 +21276 1 4.9625379570850953e+01 1.8794010412142391e+01 1.0499999997102361e+01 0 0 0 +21279 1 5.0747723409003100e+01 1.6575030933189733e+01 1.0500000010779429e+01 0 0 0 +20640 1 5.2992411046696212e+01 1.7671057678221437e+01 7.0000000478217341e+00 0 0 0 +20641 1 5.2431239173448532e+01 1.6013554557774434e+01 8.7500000541458594e+00 0 0 0 +20646 1 5.4675926793128419e+01 1.7109581328270281e+01 8.7500000556059891e+00 0 0 0 +21280 1 5.2992411105493574e+01 1.7671057646755131e+01 1.0500000043963249e+01 0 0 0 +20700 1 5.6920614479511649e+01 1.8205608124578109e+01 8.7499999825529073e+00 0 0 0 +21338 1 5.5237098790786405e+01 1.8767084566343286e+01 1.0500000027601201e+01 0 0 0 +20702 1 5.8604130404333283e+01 1.7644131847712767e+01 6.9999999401481627e+00 0 0 0 +20650 1 5.8042958556774209e+01 1.5986628757008164e+01 8.7499999700247901e+00 0 0 0 +20704 1 6.0287646370627627e+01 1.7082655404643386e+01 8.7499999424281629e+00 0 0 0 +21342 1 5.8604130510048599e+01 1.7644131849441433e+01 1.0499999983288291e+01 0 0 0 +20707 1 6.4215850350278870e+01 1.7617205311848089e+01 6.9999999941346660e+00 0 0 0 +20708 1 6.3654678404271785e+01 1.5959702326009175e+01 8.7499999825965258e+00 0 0 0 +20709 1 6.2532334280191144e+01 1.8178681885760042e+01 8.7499999626405653e+00 0 0 0 +21347 1 6.4215850381040312e+01 1.7617205312493471e+01 1.0499999978968491e+01 0 0 0 +20765 1 6.6460538537944075e+01 1.8713231579544985e+01 7.0000000481981148e+00 0 0 0 +20711 1 6.7582882673413877e+01 1.6494251713193783e+01 6.9999999999243263e+00 0 0 0 +20713 1 6.5899366362086823e+01 1.7055728617247421e+01 8.7500000090221768e+00 0 0 0 +21351 1 6.7582882777128887e+01 1.6494251728728646e+01 1.0500000029517729e+01 0 0 0 +21405 1 6.6460538627753067e+01 1.8713231564960143e+01 1.0499999973829333e+01 0 0 0 +20717 1 6.9266400423082374e+01 1.5932775519133736e+01 8.7500000094290495e+00 0 0 0 +20767 1 6.8144054013702686e+01 1.8151754622163878e+01 8.7500000140460727e+00 0 0 0 +20770 1 7.2072253471442522e+01 1.8686300579451991e+01 6.9999999370992478e+00 0 0 0 +20773 1 7.3194615948751320e+01 1.6467332179385220e+01 6.9999999767163787e+00 0 0 0 +20771 1 7.1511091521881838e+01 1.7028801957101543e+01 8.7499999681659961e+00 0 0 0 +20776 1 7.3755787826080677e+01 1.8124826921206456e+01 8.7499999853391621e+00 0 0 0 +21410 1 7.2072253495160254e+01 1.8686300599421909e+01 1.0499999992002497e+01 0 0 0 +21413 1 7.3194616028137133e+01 1.6467332203807175e+01 1.0499999999921357e+01 0 0 0 +20775 1 7.4878099672416923e+01 1.5905852001122957e+01 8.7500000199518730e+00 0 0 0 +20780 1 7.7122770505428747e+01 1.7001909728448293e+01 8.7500000747370024e+00 0 0 0 +20831 1 7.7684224784817232e+01 1.8659479411510230e+01 7.0000000689925432e+00 0 0 0 +20778 1 7.8805835418075802e+01 1.6440213627459372e+01 7.0000000815836696e+00 0 0 0 +20833 1 7.9367522248533376e+01 1.8098109203312575e+01 8.7500000716716748e+00 0 0 0 +20784 1 8.0489604148128095e+01 1.5878439929202319e+01 8.7500000170065828e+00 0 0 0 +21418 1 7.8805835610106016e+01 1.6440213620553191e+01 1.0500000041515932e+01 0 0 0 +21471 1 7.7684224883348833e+01 1.8659479421439983e+01 1.0500000032734105e+01 0 0 0 +20836 1 8.3289036878853963e+01 1.8631323833405908e+01 6.9999999148929541e+00 0 0 0 +20837 1 8.2732308683889343e+01 1.6972597758153906e+01 8.7499999127205168e+00 0 0 0 +21476 1 8.3289037185618085e+01 1.8631323734807054e+01 1.0499999957499309e+01 0 0 0 +20839 1 8.4431591536585614e+01 1.6415304229987115e+01 6.9999998328825068e+00 0 0 0 +20841 1 8.6132427135978688e+01 1.5869292067048846e+01 8.7499997799627707e+00 0 0 0 +20842 1 8.4964194306732750e+01 1.8062509911118315e+01 8.7499998320754120e+00 0 0 0 +21479 1 8.4431591855543871e+01 1.6415304133449212e+01 1.0499999850078998e+01 0 0 0 +19818 1 7.9929642908506580e+01 4.1891684198913900e+01 1.7499999973859200e+01 0 0 -1 +1286 1 9.0272007528377316e+01 1.6182969133906020e+01 6.9999998037962303e+00 -1 0 0 +20845 1 8.8549510862164880e+01 1.6967275227553035e+01 8.7499996906665700e+00 0 0 0 +20898 1 8.9045576178584696e+01 1.8566688273213099e+01 6.9999997705183086e+00 0 0 0 +21538 1 8.9045576226416983e+01 1.8566688073256717e+01 1.0499999700840595e+01 0 0 0 +20638 1 4.7941863754802000e+01 1.9355486975298838e+01 8.7500000097514672e+00 0 0 0 +20688 1 4.6819519892426072e+01 2.1574466541313107e+01 8.7499999879353840e+00 0 0 0 +21273 1 4.6258347986931042e+01 1.9916963364095910e+01 1.0499999987087790e+01 0 0 0 +20692 1 5.0186551423004815e+01 2.0451513640468196e+01 8.7500000348026852e+00 0 0 0 +21331 1 5.0747723232167964e+01 2.2109016798318677e+01 1.0500000013626906e+01 0 0 0 +21330 1 4.8503035693893892e+01 2.1012990123216102e+01 1.0499999989903623e+01 0 0 0 +20696 1 5.3553583013302749e+01 1.9328560859492896e+01 8.7500000591168998e+00 0 0 0 +20697 1 5.2431238991880470e+01 2.1547540432393681e+01 8.7500000536886944e+00 0 0 0 +21334 1 5.1870067194112217e+01 1.9890037233782454e+01 1.0500000024925429e+01 0 0 0 +21335 1 5.4114754798412015e+01 2.0986064072156278e+01 1.0500000009881404e+01 0 0 0 +20699 1 5.7481786267293188e+01 1.9863111319872459e+01 6.9999999588507293e+00 0 0 0 +20753 1 5.6359442351384132e+01 2.2082090912512353e+01 6.9999999897472120e+00 0 0 0 +20701 1 5.5798270558736320e+01 2.0424587702722874e+01 8.7500000191929939e+00 0 0 0 +21339 1 5.7481786377315935e+01 1.9863111291003580e+01 1.0499999997204659e+01 0 0 0 +21393 1 5.6359442434970340e+01 2.2082090908647778e+01 1.0499999997364531e+01 0 0 0 +20705 1 5.9165302265754590e+01 1.9301634925727587e+01 8.7499999519126845e+00 0 0 0 +20755 1 5.8042958215707579e+01 2.1520614563960159e+01 8.7499999688779759e+00 0 0 0 +20761 1 6.3093505993083419e+01 1.9836184896959384e+01 6.9999999718660364e+00 0 0 0 +20759 1 6.1409989989229935e+01 2.0397661441115911e+01 8.7499999459970130e+00 0 0 0 +20764 1 6.3654677983512890e+01 2.1493687780415915e+01 8.7499999748398807e+00 0 0 0 +21401 1 6.3093506037884836e+01 1.9836184929224899e+01 1.0499999969045071e+01 0 0 0 +20758 1 6.1971161946385237e+01 2.2055164518654514e+01 6.9999999388116034e+00 0 0 0 +21398 1 6.1971161994286270e+01 2.2055164502284665e+01 1.0499999959465606e+01 0 0 0 +20763 1 6.4777022292314768e+01 1.9274708222202939e+01 8.7499999700309470e+00 0 0 0 +20768 1 6.7021710740371873e+01 2.0370734492526740e+01 8.7499999958825132e+00 0 0 0 +20772 1 7.0388740537069282e+01 1.9247780545632047e+01 8.7499999942282702e+00 0 0 0 +20821 1 6.9266399859365293e+01 2.1466760808805091e+01 8.7499999769533634e+00 0 0 0 +20823 1 7.0949917141937178e+01 2.0905285727459454e+01 6.9999999652642932e+00 0 0 0 +20825 1 7.2633423442747983e+01 2.0343806880893538e+01 8.7499999663941050e+00 0 0 0 +21463 1 7.0949917203725363e+01 2.0905285745266731e+01 1.0499999985982665e+01 0 0 0 +20828 1 7.6561515954973530e+01 2.0878302754886093e+01 7.0000000644889822e+00 0 0 0 +20829 1 7.6000492837827963e+01 1.9220840629704341e+01 8.7500000333154819e+00 0 0 0 +20830 1 7.4878099010380453e+01 2.1439837500306560e+01 8.7499999885245305e+00 0 0 0 +21468 1 7.6561515981666716e+01 2.0878302788779418e+01 1.0500000028258111e+01 0 0 0 +20834 1 7.8245180759025956e+01 2.0316789895125723e+01 8.7500000836915248e+00 0 0 0 +20888 1 8.0489603431399985e+01 2.1412425713727579e+01 8.7500000912410343e+00 0 0 0 +20890 1 8.2176993678158794e+01 2.0852458527532590e+01 7.0000000104643894e+00 0 0 0 +20838 1 8.1612970896308212e+01 1.9194966677442693e+01 8.7500000261410715e+00 0 0 0 +21530 1 8.2176993920314928e+01 2.0852458446618233e+01 1.0500000030037524e+01 0 0 0 +20892 1 8.3862484835751914e+01 2.0294620661841265e+01 8.7499999479706911e+00 0 0 0 +20897 1 8.6132426592009551e+01 2.1403277971953102e+01 8.7499998516597142e+00 0 0 0 +20895 1 8.7753273527356129e+01 2.0844251111632147e+01 6.9999998493756301e+00 0 0 0 +20896 1 8.7168422814156912e+01 1.9119071748868443e+01 8.7499997492234094e+00 0 0 0 +20899 1 8.9214901481222569e+01 2.0201333537689887e+01 8.7499997355019659e+00 0 0 0 +21535 1 8.7753273735317180e+01 2.0844250907590528e+01 1.0499999769286148e+01 0 0 0 +20689 1 4.5697175990880226e+01 2.3793446187857462e+01 8.7500000054139555e+00 0 0 0 +20743 1 4.7941863743266801e+01 2.4889472890783129e+01 8.7500000013402026e+00 0 0 0 +21327 1 4.7380691822150595e+01 2.3231969779262492e+01 1.0500000006290620e+01 0 0 0 +20693 1 4.9064207547306268e+01 2.2670493255435183e+01 8.7500000118301351e+00 0 0 0 +20747 1 5.1308895247776910e+01 2.3766520099329494e+01 8.7500000306163113e+00 0 0 0 +21385 1 4.9625379501967643e+01 2.4327996385156489e+01 1.0500000003416567e+01 0 0 0 +20751 1 5.4675926529399582e+01 2.2643567225967942e+01 8.7500000287177073e+00 0 0 0 +20752 1 5.3553582880119642e+01 2.4862546883999261e+01 8.7500000246789646e+00 0 0 0 +21389 1 5.2992410893749259e+01 2.3205043596056207e+01 1.0500000019460209e+01 0 0 0 +20756 1 5.6920614270790509e+01 2.3739594055010173e+01 8.7500000170771877e+00 0 0 0 +21390 1 5.5237098647516959e+01 2.4301070572816787e+01 1.0500000022934447e+01 0 0 0 +20760 1 6.0287646050041452e+01 2.2616641152590571e+01 8.7499999415381584e+00 0 0 0 +20809 1 5.9165302094862817e+01 2.4835620862887449e+01 8.7499999561707291e+00 0 0 0 +20811 1 6.0848817892729201e+01 2.4274144260925333e+01 6.9999999506416151e+00 0 0 0 +21394 1 5.8604130226365072e+01 2.3178117695062042e+01 1.0499999955955987e+01 0 0 0 +21451 1 6.0848817928244799e+01 2.4274144242780451e+01 1.0499999954460185e+01 0 0 0 +20813 1 6.2532334013760767e+01 2.3712667562582283e+01 8.7499999400294559e+00 0 0 0 +20817 1 6.5899365954563294e+01 2.2589713990153495e+01 8.7500000210763051e+00 0 0 0 +20818 1 6.4777022112259914e+01 2.4808693810925533e+01 8.7499999925029908e+00 0 0 0 +21456 1 6.6460538295503540e+01 2.4247217040244319e+01 1.0499999999726736e+01 0 0 0 +20820 1 6.9827569429832863e+01 2.3124262543564605e+01 6.9999999636784063e+00 0 0 0 +20822 1 6.8144053601483847e+01 2.3685739993258704e+01 8.7500000031247023e+00 0 0 0 +20876 1 7.0388740085155575e+01 2.4781765974205189e+01 8.7499999623229261e+00 0 0 0 +21460 1 6.9827569488470303e+01 2.3124262536838806e+01 1.0499999990575501e+01 0 0 0 +20826 1 7.1511090912218179e+01 2.2562787375065895e+01 8.7499999602422989e+00 0 0 0 +20880 1 7.3755787143192364e+01 2.3658812391140874e+01 8.7499999697065736e+00 0 0 0 +20882 1 7.5439348514851801e+01 2.3097365109932774e+01 7.0000000088648147e+00 0 0 0 +20884 1 7.7122769785511522e+01 2.2535895323179037e+01 8.7500000390135977e+00 0 0 0 +20885 1 7.6000492103614889e+01 2.4754826204006861e+01 8.7500000118366845e+00 0 0 0 +21522 1 7.5439348502787496e+01 2.3097365134717062e+01 1.0499999996087727e+01 0 0 0 +20889 1 7.9367521525687508e+01 2.3632094956836866e+01 8.7500000902324988e+00 0 0 0 +20887 1 8.1049143251526559e+01 2.3069853338662199e+01 7.0000000767092025e+00 0 0 0 +20893 1 8.2732307995454164e+01 2.2506583654715108e+01 8.7500000473702890e+00 0 0 0 +20943 1 8.1612970170599752e+01 2.4728952559419426e+01 8.7500000743189581e+00 0 0 0 +21527 1 8.1049143408422324e+01 2.3069853261023319e+01 1.0500000074623692e+01 0 0 0 +20949 1 8.6710920892871243e+01 2.3047206353189740e+01 6.9999998552439786e+00 0 0 0 +20947 1 8.4964193736160183e+01 2.3596495911632587e+01 8.7499999555727790e+00 0 0 0 +21589 1 8.6710921126281605e+01 2.3047206158160485e+01 1.0499999947086634e+01 0 0 0 +20951 1 8.8549510329359578e+01 2.2501261142053266e+01 8.7499997945809458e+00 0 0 0 +20952 1 8.7168422422284877e+01 2.4653057743702313e+01 8.7499999010081311e+00 0 0 0 +20744 1 4.6819519930766710e+01 2.7108452509183113e+01 8.7499999872797734e+00 0 0 0 +21380 1 4.5136004043890487e+01 2.7669929014650958e+01 1.0500000023240815e+01 0 0 0 +21381 1 4.6258348002803878e+01 2.5450949268914727e+01 1.0499999996729493e+01 0 0 0 +20748 1 5.0186551454271459e+01 2.5985499667745902e+01 8.7500000110902221e+00 0 0 0 +20797 1 4.9064207636831242e+01 2.8204479369253686e+01 8.7499999785054037e+00 0 0 0 +21439 1 5.0747723302930780e+01 2.7643002953654804e+01 1.0499999996224922e+01 0 0 0 +21382 1 4.8503035730421686e+01 2.6546976145222253e+01 1.0499999998105569e+01 0 0 0 +20801 1 5.2431238996203312e+01 2.7081526537698757e+01 8.7500000291123445e+00 0 0 0 +20806 1 5.4675926644193289e+01 2.8177553433257827e+01 8.7500000547677850e+00 0 0 0 +21386 1 5.1870067139600017e+01 2.5424023275237616e+01 1.0500000001236364e+01 0 0 0 +21443 1 5.4114754757663817e+01 2.6520050211961571e+01 1.0500000007960150e+01 0 0 0 +20805 1 5.5798270496795404e+01 2.5958573820236229e+01 8.7500000228386199e+00 0 0 0 +21444 1 5.6359442437459059e+01 2.7616077051784121e+01 1.0499999996836763e+01 0 0 0 +21447 1 5.7481786210383326e+01 2.5397097299931481e+01 1.0499999994423453e+01 0 0 0 +20808 1 5.9726474007283450e+01 2.6493124025222361e+01 6.9999999309490120e+00 0 0 0 +20810 1 5.8042958200145627e+01 2.7054600627463333e+01 8.7499999672907265e+00 0 0 0 +20864 1 6.0287646131188836e+01 2.8150627156716972e+01 8.7499999467543148e+00 0 0 0 +21448 1 5.9726474088533216e+01 2.6493123995041909e+01 1.0499999972344517e+01 0 0 0 +20814 1 6.1409989950666635e+01 2.5931647301370525e+01 8.7499999443503018e+00 0 0 0 +20868 1 6.3654678011573850e+01 2.7027673553585714e+01 8.7499999673037454e+00 0 0 0 +21452 1 6.3093505934356266e+01 2.5370170615500978e+01 1.0499999973222231e+01 0 0 0 +21506 1 6.1971162050179295e+01 2.7589150409929861e+01 1.0499999960041803e+01 0 0 0 +20871 1 6.7582882159412776e+01 2.7562222683579847e+01 6.9999999638484960e+00 0 0 0 +20870 1 6.5338194156884711e+01 2.6466196760141791e+01 6.9999999903980576e+00 0 0 0 +20872 1 6.7021710556256579e+01 2.5904720053989532e+01 8.7499999752462827e+00 0 0 0 +20873 1 6.5899366019808113e+01 2.8123699711765241e+01 8.7499999700916167e+00 0 0 0 +21510 1 6.5338194171597550e+01 2.6466196745042396e+01 1.0499999992227933e+01 0 0 0 +20874 1 6.8705226688803322e+01 2.5343243533102676e+01 6.9999999840144449e+00 0 0 0 +20877 1 6.9266399669238950e+01 2.7000746416118545e+01 8.7499999594541116e+00 0 0 0 +20933 1 7.3194614923443751e+01 2.7535303247078101e+01 6.9999999273968267e+00 0 0 0 +20881 1 7.2633422912859530e+01 2.5877792406776699e+01 8.7499999329580778e+00 0 0 0 +20931 1 7.1511090654129575e+01 2.8096773028492006e+01 8.7499999183749875e+00 0 0 0 +21515 1 7.0949916828120863e+01 2.6439271275076468e+01 1.0499999985586232e+01 0 0 0 +20879 1 7.4316919394488636e+01 2.5316301380672446e+01 6.9999999706780267e+00 0 0 0 +20935 1 7.4878098428956363e+01 2.6973823103877418e+01 8.7499999668710906e+00 0 0 0 +20940 1 7.7122769201038153e+01 2.8069881043228442e+01 8.7500000286438855e+00 0 0 0 +21519 1 7.4316919375059442e+01 2.5316301413103091e+01 1.0499999970437704e+01 0 0 0 +20938 1 7.8805834126000548e+01 2.7508185086570144e+01 7.0000000848693995e+00 0 0 0 +20941 1 7.9929643140735834e+01 2.5289725656776387e+01 7.0000001254008835e+00 0 0 0 +20939 1 7.8245180040345190e+01 2.5850775619083535e+01 8.7500000732377377e+00 0 0 0 +20944 1 8.0489602724382095e+01 2.6946411572120500e+01 8.7500000731050562e+00 0 0 0 +21578 1 7.8805834131680527e+01 2.7508185084612776e+01 1.0500000036735011e+01 0 0 0 +21581 1 7.9929643206205526e+01 2.5289725646883969e+01 1.0500000041002743e+01 0 0 0 +20997 1 8.2732307342123704e+01 2.8040569616376910e+01 8.7500000547588108e+00 0 0 0 +20946 1 8.5523443250925624e+01 2.5261109324150915e+01 6.9999999372658319e+00 0 0 0 +20999 1 8.4431590403616767e+01 2.7483276182639749e+01 6.9999999972881257e+00 0 0 0 +20948 1 8.3862484236237037e+01 2.5828606626119402e+01 8.7500000288645889e+00 0 0 0 +21001 1 8.6132426166706253e+01 2.6937263966889013e+01 8.7499999960915087e+00 0 0 0 +21586 1 8.5523443460685144e+01 2.5261109167394675e+01 1.0500000017335267e+01 0 0 0 +21639 1 8.4431590577057477e+01 2.7483276047436522e+01 1.0500000042438209e+01 0 0 0 +22392 1 8.0489602617919019e+01 4.3548370332148004e+01 1.5749999986513487e+01 0 0 0 +1304 1 9.0272007528377372e+01 2.7250941141758442e+01 6.9999998609817835e+00 -1 0 0 +21004 1 8.9214901364169421e+01 2.5735319499055375e+01 8.7499998079191759e+00 0 0 0 +21005 1 8.8549510077589716e+01 2.8035247053985145e+01 8.7499999186484114e+00 0 0 0 +20794 1 4.5697175953682006e+01 2.9327432199918036e+01 8.7500000218982610e+00 0 0 0 +20798 1 4.7941863819340391e+01 3.0423459059283317e+01 8.7500000001682530e+00 0 0 0 +21433 1 4.6258347994154882e+01 3.0984935398741957e+01 1.0500000010041575e+01 0 0 0 +21435 1 4.7380691836486115e+01 2.8765955840307612e+01 1.0500000022954358e+01 0 0 0 +20802 1 5.1308895338361026e+01 2.9300506296859190e+01 8.7500000011638388e+00 0 0 0 +20852 1 5.0186551560942888e+01 3.1519485937626005e+01 8.7500000075682305e+00 0 0 0 +21436 1 4.9625379616484743e+01 2.9861982588447795e+01 1.0499999987456123e+01 0 0 0 +20856 1 5.3553583066124041e+01 3.0396533182583781e+01 8.7500000416323704e+00 0 0 0 +21440 1 5.2992411025310197e+01 2.8739029831580886e+01 1.0500000038535205e+01 0 0 0 +21494 1 5.1870067288254177e+01 3.0958009580575062e+01 1.0500000008185001e+01 0 0 0 +20860 1 5.6920614396859087e+01 2.9273580261910212e+01 8.7499999997137863e+00 0 0 0 +20861 1 5.5798270722355745e+01 3.1492560098052238e+01 8.7500000053481060e+00 0 0 0 +21498 1 5.5237098746117809e+01 2.9835056832321353e+01 1.0500000027714748e+01 0 0 0 +21499 1 5.7481786474016232e+01 3.0931083551493550e+01 1.0500000009669115e+01 0 0 0 +20862 1 5.8604130266411246e+01 2.8712103808900341e+01 6.9999999669307300e+00 0 0 0 +20865 1 5.9165302320220313e+01 3.0369606996158698e+01 8.7499999769555732e+00 0 0 0 +21502 1 5.8604130325519051e+01 2.8712103830981178e+01 1.0499999979037337e+01 0 0 0 +21503 1 6.0848818131463851e+01 2.9808130279586894e+01 1.0499999974267674e+01 0 0 0 +20867 1 6.4215850180670060e+01 2.8685176658895454e+01 6.9999999730554769e+00 0 0 0 +20869 1 6.2532334217472240e+01 2.9246653465637564e+01 8.7499999450853387e+00 0 0 0 +20919 1 6.1409990242171105e+01 3.1465633353971871e+01 8.7499999547848457e+00 0 0 0 +20921 1 6.3093506170535548e+01 3.0904156571520247e+01 6.9999999630257035e+00 0 0 0 +20923 1 6.4777022335268839e+01 3.0342679672073416e+01 8.7499999327654230e+00 0 0 0 +20928 1 6.7021710804182078e+01 3.1438705953388627e+01 8.7499999582540369e+00 0 0 0 +20927 1 6.8144053664494336e+01 2.9219725777608687e+01 8.7499999798735999e+00 0 0 0 +20932 1 7.0388740100604593e+01 3.0315751812915405e+01 8.7499999577448104e+00 0 0 0 +21566 1 6.8705226874385261e+01 3.0877229360209995e+01 1.0499999971150022e+01 0 0 0 +21569 1 6.9827569372088504e+01 2.8658248265677884e+01 1.0499999973445272e+01 0 0 0 +20930 1 7.2072252801157646e+01 2.9754271814592091e+01 6.9999999066494318e+00 0 0 0 +20936 1 7.3755786879830893e+01 2.9192798123708563e+01 8.7499999313105121e+00 0 0 0 +20985 1 7.2633422906187477e+01 3.1411778298119774e+01 8.7499999450447046e+00 0 0 0 +20989 1 7.6000491812912955e+01 3.0288812016528027e+01 8.7499999875658521e+00 0 0 0 +21574 1 7.5439348085427937e+01 2.8631350840634862e+01 1.0499999986603591e+01 0 0 0 +21627 1 7.4316919209095204e+01 3.0850287237778197e+01 1.0499999968882198e+01 0 0 0 +20991 1 7.7684223673907454e+01 2.9727450878543891e+01 7.0000000348257414e+00 0 0 0 +20993 1 7.9367520929028402e+01 2.9166080819727970e+01 8.7500000606272899e+00 0 0 0 +20994 1 7.8245179699731324e+01 3.1384761528188822e+01 8.7500000325186562e+00 0 0 0 +21632 1 7.9929642725948696e+01 3.0823711614055572e+01 1.0500000036219268e+01 0 0 0 +20996 1 8.3289035780980015e+01 2.9699295727342243e+01 7.0000000476157807e+00 0 0 0 +20998 1 8.1612969604651965e+01 3.0262938521941496e+01 8.7500000724083140e+00 0 0 0 +21635 1 8.1049142728918753e+01 2.8603839209353790e+01 1.0500000036135775e+01 0 0 0 +21002 1 8.4964193282892538e+01 2.9130481923934479e+01 8.7500000365703325e+00 0 0 0 +21047 1 8.3862483787547120e+01 3.1362592652545146e+01 8.7500000613168538e+00 0 0 0 +21640 1 8.6710920654591050e+01 2.8581192098870400e+01 1.0499999974487213e+01 0 0 0 +21689 1 8.5523442948758714e+01 3.0795095155857290e+01 1.0499999998300067e+01 0 0 0 +21053 1 8.9045575837688517e+01 2.9634660195682208e+01 6.9999998849198990e+00 0 0 0 +21051 1 8.7168422005162370e+01 3.0187043619151193e+01 8.7499999793988934e+00 0 0 0 +21054 1 8.9214901539165567e+01 3.1269305446098631e+01 8.7499999969527007e+00 0 0 0 +21693 1 8.9045575897595839e+01 2.9634659983890810e+01 1.0500000006629170e+01 0 0 0 +20848 1 4.6819519962048858e+01 3.2642438706821068e+01 8.7499999972282261e+00 0 0 0 +21487 1 4.7380691923647973e+01 3.4299942143414086e+01 1.0500000002664954e+01 0 0 0 +21486 1 4.5136004042358067e+01 3.3203915156346014e+01 1.0500000023165878e+01 0 0 0 +20853 1 4.9064207715934202e+01 3.3738465674870334e+01 8.7500000163488334e+00 0 0 0 +21490 1 4.8503035809256062e+01 3.2080962403553954e+01 1.0499999996106013e+01 0 0 0 +21491 1 5.0747723436355621e+01 3.3176989297610845e+01 1.0500000010820747e+01 0 0 0 +20857 1 5.2431239207665648e+01 3.2615512915109406e+01 8.7500000200502015e+00 0 0 0 +20911 1 5.4675926865333743e+01 3.3711539797195002e+01 8.7500000061253882e+00 0 0 0 +21495 1 5.4114754957698189e+01 3.2054036546925481e+01 1.0499999989197464e+01 0 0 0 +21549 1 5.2992411216438953e+01 3.4273016216741951e+01 1.0500000005763772e+01 0 0 0 +21553 1 5.6359442772103726e+01 3.3150063408493949e+01 1.0500000003379085e+01 0 0 0 +20915 1 5.8042958548836488e+01 3.2588586884315454e+01 8.7499999970499989e+00 0 0 0 +20920 1 6.0287646574632447e+01 3.3684613315980023e+01 8.7499999429275839e+00 0 0 0 +21554 1 5.8604130723427140e+01 3.4246090073669684e+01 1.0499999974968039e+01 0 0 0 +21557 1 5.9726474379582598e+01 3.2027110133574745e+01 1.0499999968209259e+01 0 0 0 +20918 1 6.1971162433138694e+01 3.3123136492835059e+01 6.9999999564056550e+00 0 0 0 +20924 1 6.3654678379606416e+01 3.2561659546133406e+01 8.7499999538157276e+00 0 0 0 +21615 1 6.4215850659030608e+01 3.4219162739299506e+01 1.0499999970378250e+01 0 0 0 +20977 1 6.5899366391171981e+01 3.3657685750381503e+01 8.7500000022919195e+00 0 0 0 +21619 1 6.7582882448296928e+01 3.3096208671139188e+01 1.0499999979211575e+01 0 0 0 +21562 1 6.5338194499350962e+01 3.2000182699825245e+01 1.0499999982246045e+01 0 0 0 +20980 1 6.9827569607467908e+01 3.4192234358486658e+01 6.9999999680393046e+00 0 0 0 +20981 1 6.9266399853226076e+01 3.2534732395643793e+01 8.7499999455593471e+00 0 0 0 +20983 1 7.0949916915252516e+01 3.1973257259562505e+01 6.9999999283475773e+00 0 0 0 +20986 1 7.1511090813525755e+01 3.3630759059343795e+01 8.7499999425846013e+00 0 0 0 +21624 1 7.3194614962296455e+01 3.3069289211948430e+01 1.0499999964745125e+01 0 0 0 +20988 1 7.6561515159630048e+01 3.1946274298921779e+01 6.9999999996092424e+00 0 0 0 +20990 1 7.4878098391629734e+01 3.2507809026228585e+01 8.7499999610050576e+00 0 0 0 +21037 1 7.5439348129736828e+01 3.4165336839772685e+01 6.9999999703030786e+00 0 0 0 +21039 1 7.7122769131209282e+01 3.3603867043974695e+01 8.7499999918774751e+00 0 0 0 +21043 1 8.0489602358112705e+01 3.2480397592607517e+01 8.7500000728533589e+00 0 0 0 +21681 1 7.8805833917776539e+01 3.3042171118896718e+01 1.0500000026973748e+01 0 0 0 +21042 1 8.1049142455551575e+01 3.4137825309107598e+01 7.0000000316070041e+00 0 0 0 +21045 1 8.2176992663300169e+01 3.1920430455799323e+01 7.0000000452159137e+00 0 0 0 +21048 1 8.2732307063372104e+01 3.3574555717798845e+01 8.7500000718051769e+00 0 0 0 +21052 1 8.6132425723101179e+01 3.2471249936815660e+01 8.7500000146655168e+00 0 0 0 +21086 1 8.6710920272506257e+01 3.4115178293647851e+01 6.9999999976792120e+00 0 0 0 +21686 1 8.4431590150032662e+01 3.3017262128154677e+01 1.0500000032993118e+01 0 0 0 +21050 1 8.7753272984657769e+01 3.1912222968610148e+01 6.9999998767574310e+00 0 0 0 +21088 1 8.8549509813287486e+01 3.3569233044523017e+01 8.7500000444341897e+00 0 0 0 +1978 1 9.0272007528377117e+01 3.2784926829666979e+01 1.0499999976699206e+01 -1 0 0 +20849 1 4.5697176010764700e+01 3.4861418406074343e+01 8.7500000042309480e+00 0 0 0 +20903 1 4.7941863893020731e+01 3.5957445362210862e+01 8.7500000142626000e+00 0 0 0 +21541 1 4.6258348009771758e+01 3.6518921676749009e+01 1.0500000004343217e+01 0 0 0 +20907 1 5.1308895543177506e+01 3.4834492706943095e+01 8.7500000113845946e+00 0 0 0 +20908 1 5.0186551747762856e+01 3.7053472341313068e+01 8.7500000087302912e+00 0 0 0 +21542 1 4.8503035911673905e+01 3.7614948793498165e+01 1.0500000017247352e+01 0 0 0 +21545 1 4.9625379737515686e+01 3.5395968966085739e+01 1.0500000009062276e+01 0 0 0 +20912 1 5.3553583328686841e+01 3.5930519572309564e+01 8.7499999903490302e+00 0 0 0 +21546 1 5.1870067519890782e+01 3.6491995988057973e+01 1.0499999979326798e+01 0 0 0 +21603 1 5.4114755306558571e+01 3.7588022953326892e+01 1.0499999981138110e+01 0 0 0 +20916 1 5.6920614799181720e+01 3.4807566586426319e+01 8.7500000060753447e+00 0 0 0 +20965 1 5.5798271127807560e+01 3.7026546459044845e+01 8.7499999794129781e+00 0 0 0 +21607 1 5.7481786888730092e+01 3.6465069855378054e+01 1.0499999994428755e+01 0 0 0 +21550 1 5.5237099122842949e+01 3.5369043224931076e+01 1.0500000002467166e+01 0 0 0 +20969 1 5.9165302826499826e+01 3.5903593257404097e+01 8.7499999581118448e+00 0 0 0 +21608 1 5.9726474957038327e+01 3.7561096386074922e+01 1.0499999972958372e+01 0 0 0 +20973 1 6.2532334702237193e+01 3.4780639615518965e+01 8.7499999590072743e+00 0 0 0 +20974 1 6.1409990865872764e+01 3.6999619537337693e+01 8.7499999550972056e+00 0 0 0 +21612 1 6.3093506774601281e+01 3.6438142727030204e+01 1.0499999974511924e+01 0 0 0 +21025 1 6.5338195065357397e+01 3.7534168973987583e+01 7.0000000023849944e+00 0 0 0 +20978 1 6.4777022865331389e+01 3.5876665835105115e+01 8.7500000113374483e+00 0 0 0 +21027 1 6.7021711280157319e+01 3.6972692216380622e+01 8.7500000197354773e+00 0 0 0 +21616 1 6.6460538868612659e+01 3.5315188967012546e+01 1.0499999994236896e+01 0 0 0 +21665 1 6.5338195062266109e+01 3.7534168903244122e+01 1.0500000011737255e+01 0 0 0 +20982 1 6.8144053993700538e+01 3.4753711872080906e+01 8.7499999785937099e+00 0 0 0 +21029 1 6.8705227239146353e+01 3.6411215648917420e+01 7.0000000001757270e+00 0 0 0 +21031 1 7.0388740385337726e+01 3.5849737988590107e+01 8.7499999709070693e+00 0 0 0 +21035 1 7.3755786991125547e+01 3.4726784160633564e+01 8.7499999555142924e+00 0 0 0 +21036 1 7.2633423152358432e+01 3.6945764491297140e+01 8.7499999466286305e+00 0 0 0 +21670 1 7.0949917249486845e+01 3.7507243483260432e+01 1.0499999980281943e+01 0 0 0 +21673 1 7.2072252980256266e+01 3.5288257909095393e+01 1.0499999950620102e+01 0 0 0 +21034 1 7.4316919423845590e+01 3.6384273350982006e+01 6.9999999676518385e+00 0 0 0 +21040 1 7.6000491890127137e+01 3.5822798092157960e+01 8.7499999701363826e+00 0 0 0 +21714 1 7.6561515232094493e+01 3.7480260541143977e+01 1.0499999955080503e+01 0 0 0 +21044 1 7.9367520803161085e+01 3.4700066907812662e+01 8.7500000448778188e+00 0 0 0 +21076 1 7.8245179766494601e+01 3.6918747707586625e+01 8.7500000174874160e+00 0 0 0 +21078 1 7.9929642688499214e+01 3.6357697774748097e+01 7.0000000356256766e+00 0 0 0 +21678 1 7.7684223623703588e+01 3.5261437007075799e+01 1.0499999993773946e+01 0 0 0 +21080 1 8.1612969496288827e+01 3.5796924693310658e+01 8.7500000486703922e+00 0 0 0 +21719 1 8.2176992658599673e+01 3.7454416635144774e+01 1.0500000020261396e+01 0 0 0 +21722 1 8.3289035643374575e+01 3.5233281805841735e+01 1.0500000042329459e+01 0 0 0 +21083 1 8.5523442743651017e+01 3.6329081375122882e+01 6.9999999969069417e+00 0 0 0 +21084 1 8.4964192946085191e+01 3.4664467943405469e+01 8.7500000438252208e+00 0 0 0 +21085 1 8.3862483625121044e+01 3.6896578814961892e+01 8.7500000481175029e+00 0 0 0 +21089 1 8.7168422080008028e+01 3.5721029837844597e+01 8.7500000619452472e+00 0 0 0 +21110 1 8.9214901025710873e+01 3.6803291489227995e+01 8.7500000305443582e+00 0 0 0 +21727 1 8.9045575779785395e+01 3.5168646080403704e+01 1.0500000049637599e+01 0 0 0 +21749 1 8.7753272934943396e+01 3.7446208986135481e+01 1.0499999945330725e+01 0 0 0 +21540 1 4.5136003944650227e+01 3.8737901387813373e+01 1.0500000003484402e+01 0 0 0 +20904 1 4.6819519964901183e+01 3.8176425037106675e+01 8.7499999970623481e+00 0 0 0 +20954 1 4.5697175868152208e+01 4.0395404690214079e+01 8.7499999952278671e+00 0 0 0 +21595 1 4.7380691883402548e+01 3.9833928473810197e+01 1.0500000018733411e+01 0 0 0 +20957 1 4.9064207841552864e+01 3.9272452089053516e+01 8.7499999947407048e+00 0 0 0 +20962 1 5.1308895691668575e+01 4.0368479056534241e+01 8.7499999791682210e+00 0 0 0 +21596 1 4.9625379822882209e+01 4.0929955337962596e+01 1.0499999993380147e+01 0 0 0 +21599 1 5.0747723637031179e+01 3.8710975722136709e+01 1.0499999998470505e+01 0 0 0 +20961 1 5.2431239440421827e+01 3.8149499285402122e+01 8.7500000011608758e+00 0 0 0 +20966 1 5.4675927267698071e+01 3.9245526143705817e+01 8.7499999969700841e+00 0 0 0 +21600 1 5.2992411546210427e+01 3.9807002585043925e+01 1.0499999999670004e+01 0 0 0 +21015 1 5.6920615258315500e+01 4.0341552809931791e+01 8.7499999485405677e+00 0 0 0 +21604 1 5.6359443180808576e+01 3.8684049689285459e+01 1.0499999960501283e+01 0 0 0 +21653 1 5.5237099470994295e+01 4.0903029478674561e+01 1.0499999986433156e+01 0 0 0 +20970 1 5.8042959044977842e+01 3.8122573141803954e+01 8.7499999351014637e+00 0 0 0 +21019 1 6.0287647152718506e+01 3.9218599540601552e+01 8.7499999428313160e+00 0 0 0 +21658 1 6.0848819222041392e+01 4.0876102633414547e+01 1.0499999946794814e+01 0 0 0 +21657 1 5.8604131272196824e+01 3.9780076310632062e+01 1.0499999940557398e+01 0 0 0 +21022 1 6.4215851303344238e+01 3.9753149005354949e+01 6.9999999796574350e+00 0 0 0 +21023 1 6.3654679006825717e+01 3.8095645775197752e+01 8.7499999878192742e+00 0 0 0 +21024 1 6.2532335336339187e+01 4.0314625809599356e+01 8.7499999693821078e+00 0 0 0 +21661 1 6.1971163078946482e+01 3.8657122685832881e+01 1.0499999989052528e+01 0 0 0 +21028 1 6.5899367004255566e+01 3.9191672061925139e+01 8.7499999924674832e+00 0 0 0 +21026 1 6.7582882982802474e+01 3.8630195053188416e+01 7.0000000034740530e+00 0 0 0 +21032 1 6.9266400294363550e+01 3.8068718717899181e+01 8.7500000024173605e+00 0 0 0 +21064 1 6.8144054526725739e+01 4.0287698312917712e+01 8.7500000218416751e+00 0 0 0 +21706 1 6.9827570085172624e+01 3.9726220748717907e+01 1.0500000012083074e+01 0 0 0 +21067 1 7.2072253423630471e+01 4.0822244395367015e+01 6.9999999565009592e+00 0 0 0 +21068 1 7.1511091206905391e+01 3.9164745453884407e+01 8.7499999638309589e+00 0 0 0 +21070 1 7.3194615303749018e+01 3.8603275537451502e+01 6.9999999708735157e+00 0 0 0 +21073 1 7.3755787330459071e+01 4.0260770581367645e+01 8.7499999415302483e+00 0 0 0 +21072 1 7.4878098605419353e+01 3.8041795265816106e+01 8.7499999652604199e+00 0 0 0 +21077 1 7.7122769315059600e+01 3.9137853345755303e+01 8.7500000032645495e+00 0 0 0 +21711 1 7.5439348365332052e+01 3.9699323205950719e+01 1.0499999954592049e+01 0 0 0 +21075 1 7.8805834063157519e+01 3.8576157359519236e+01 7.0000000215244906e+00 0 0 0 +21097 1 7.7684223935910723e+01 4.0795423406204264e+01 7.0000000130474040e+00 0 0 0 +21099 1 7.9367520986347913e+01 4.0234053277459445e+01 8.7500000184271762e+00 0 0 0 +21081 1 8.0489602416734357e+01 3.8014383852061940e+01 8.7500000114676766e+00 0 0 0 +21102 1 8.3289035743734274e+01 4.0767268157766424e+01 7.0000000036739536e+00 0 0 0 +21103 1 8.2732307061269353e+01 3.9108541958611760e+01 8.7500000126094744e+00 0 0 0 +21741 1 8.1049142550466684e+01 3.9671811644538479e+01 1.0500000001590488e+01 0 0 0 +21105 1 8.4431590096460354e+01 3.8551248415374637e+01 6.9999999998123998e+00 0 0 0 +21107 1 8.6132425776177470e+01 3.8005236093318970e+01 8.7500000678611478e+00 0 0 0 +21108 1 8.4964193045678613e+01 4.0198454255730255e+01 8.7500000287036528e+00 0 0 0 +21746 1 8.6710920321996056e+01 3.9649164418017570e+01 1.0500000002635581e+01 0 0 0 +21111 1 8.8549509826481085e+01 3.9103219136510006e+01 8.7500000093747250e+00 0 0 0 +21119 1 8.9045575769179507e+01 4.0702632382087565e+01 6.9999999694674457e+00 0 0 0 +22380 1 7.8245180052344352e+01 4.2452734193596761e+01 1.5749999973648052e+01 0 0 0 +20958 1 4.7941863868415247e+01 4.1491431735602013e+01 8.7499999901945191e+00 0 0 0 +21006 1 4.6819519819663242e+01 4.3710411333450878e+01 8.7499999785197584e+00 0 0 0 +21593 1 4.6258347868209185e+01 4.2052907998003057e+01 1.0499999993743453e+01 0 0 0 +21008 1 5.0186551774641998e+01 4.2587458658569830e+01 8.7499999886829212e+00 0 0 0 +21647 1 4.8503035831825443e+01 4.3148935095907277e+01 1.0500000005503280e+01 0 0 0 +24324 1 5.0747723649743179e+01 4.4244961940808537e+01 1.0499999998157762e+01 0 0 0 +21011 1 5.3553583620979964e+01 4.1464505859167993e+01 8.7499999871623064e+00 0 0 0 +21012 1 5.2431239593210393e+01 4.3683485547095870e+01 8.7499999762854550e+00 0 0 0 +21650 1 5.4114755541631467e+01 4.3122009144283517e+01 1.0499999968016606e+01 0 0 0 +21649 1 5.1870067703240203e+01 4.2025982313448587e+01 1.0499999991449924e+01 0 0 0 +21016 1 5.5798271480206303e+01 4.2560532640365025e+01 8.7499999388906744e+00 0 0 0 +21654 1 5.7481787376904315e+01 4.1999056038274844e+01 1.0499999963340279e+01 0 0 0 +24339 1 5.6359443551908193e+01 4.4218035839137421e+01 1.0499999962998668e+01 0 0 0 +21020 1 5.9165303344729587e+01 4.1437579387009265e+01 8.7499999492472682e+00 0 0 0 +21055 1 5.8042959468150990e+01 4.3656559261639181e+01 8.7499999557164791e+00 0 0 0 +21696 1 5.9726475415835736e+01 4.3095082490439346e+01 1.0499999961948475e+01 0 0 0 +21058 1 6.3093507374711280e+01 4.1972128955655343e+01 6.9999999562083257e+00 0 0 0 +21057 1 6.1409991390048020e+01 4.2533605685896447e+01 8.7499999441730427e+00 0 0 0 +21061 1 6.3654679509167593e+01 4.3629631984695493e+01 8.7499999575372520e+00 0 0 0 +23702 1 6.1971163566260728e+01 4.4191108851434947e+01 6.9999999534657240e+00 0 0 0 +21060 1 6.4777023459129921e+01 4.1410652123455385e+01 8.7499999763266061e+00 0 0 0 +21065 1 6.7021711818654524e+01 4.2506678623852963e+01 8.7500000027808351e+00 0 0 0 +21699 1 6.5338195580627939e+01 4.3068155246052271e+01 1.0499999983071007e+01 0 0 0 +24370 1 6.7582883413486201e+01 4.4164181452663293e+01 1.0499999997395525e+01 0 0 0 +21069 1 7.0388740868651354e+01 4.1383724503208825e+01 8.7499999921607063e+00 0 0 0 +21090 1 6.9266400756606274e+01 4.3602705253381792e+01 8.7499999791309246e+00 0 0 0 +21703 1 6.8705227759390709e+01 4.1945202078769881e+01 1.0500000006778592e+01 0 0 0 +21091 1 7.0949917720352218e+01 4.3041230065926115e+01 6.9999999540418827e+00 0 0 0 +21092 1 7.2633423571120076e+01 4.2479751055526151e+01 8.7499999787690843e+00 0 0 0 +24373 1 7.3194615639130390e+01 4.4137262104784384e+01 1.0499999982539050e+01 0 0 0 +21094 1 7.6561515628634282e+01 4.3014247054116268e+01 7.0000000213702176e+00 0 0 0 +21095 1 7.6000492204270159e+01 4.1356784584042025e+01 8.7499999806594939e+00 0 0 0 +21096 1 7.4878098955497549e+01 4.3575781846296458e+01 8.7499999800907577e+00 0 0 0 +21733 1 7.4316919748200647e+01 4.1918259887102906e+01 1.0499999962268495e+01 0 0 0 +21100 1 7.8245180005075326e+01 4.2452734234020951e+01 8.7499999920770790e+00 0 0 0 +21112 1 8.0489602601679834e+01 4.3548370383648368e+01 8.7500000367846020e+00 0 0 0 +21738 1 7.9929642857072949e+01 4.1891684242135035e+01 1.0499999996727428e+01 0 0 0 +24415 1 7.8805834249070401e+01 4.4110143974590294e+01 1.0499999992120745e+01 0 0 0 +21113 1 8.2176992844701516e+01 4.2988403140637409e+01 7.0000000171747532e+00 0 0 0 +21104 1 8.1612969622782373e+01 4.1330911085377046e+01 8.7500000292160802e+00 0 0 0 +21114 1 8.3862483803174712e+01 4.2430565211843643e+01 8.7500000286264097e+00 0 0 0 +21118 1 8.6132425818873713e+01 4.3539222495559756e+01 8.7499999803938913e+00 0 0 0 +21755 1 8.5523442829075876e+01 4.1863067661562944e+01 1.0499999985024978e+01 0 0 0 +24418 1 8.4431590213390606e+01 4.4085234824080494e+01 1.0499999990516873e+01 0 0 0 +21116 1 8.7753273016097211e+01 4.2980195359166572e+01 6.9999999650446583e+00 0 0 0 +21117 1 8.7168422022122158e+01 4.1255016013141990e+01 8.7499999889841860e+00 0 0 0 +21120 1 8.9214901251039720e+01 4.2337277832444578e+01 8.7499999999722000e+00 0 0 0 +5124 1 9.0272007528377301e+01 4.3852899350383289e+01 1.0499999974251184e+01 -1 0 0 +21122 1 4.7380691469284173e+01 1.0960267314413443e+00 1.0499999971720433e+01 0 0 0 +21123 1 4.5697175517287086e+01 1.6575029968976103e+00 1.2249999968855045e+01 0 0 0 +21129 1 4.7941863527863497e+01 2.7535298457265216e+00 1.2249999968493437e+01 0 0 0 +21125 1 4.9064207409825066e+01 5.3455038424933898e-01 1.2249999973045934e+01 0 0 0 +21131 1 4.9625379519958059e+01 2.1920534328300341e+00 1.0499999991280943e+01 0 0 0 +21133 1 5.1308895598831910e+01 1.6305772288810825e+00 1.2249999993337427e+01 0 0 0 +21135 1 5.2992411610958413e+01 1.0691008389891872e+00 1.0500000042889166e+01 0 0 0 +21137 1 5.4675927645497090e+01 5.0762460921188490e-01 1.2250000018387274e+01 0 0 0 +21138 1 5.3553583756598755e+01 2.7266039660197725e+00 1.2250000000055353e+01 0 0 0 +21141 1 5.6920615801426486e+01 1.6036514713875296e+00 1.2249999996228045e+01 0 0 0 +21776 1 5.5237099772761439e+01 2.1651278180242373e+00 1.3999999995319810e+01 0 0 0 +21140 1 5.8604131955456118e+01 1.0421753108395320e+00 1.0499999975223691e+01 0 0 0 +21143 1 6.0287647978253609e+01 4.8069896348093122e-01 1.2250000037531009e+01 0 0 0 +21160 1 5.9165303836631438e+01 2.6996783937142759e+00 1.2250000027418793e+01 0 0 0 +21802 1 6.0848819743856495e+01 2.1382020608911021e+00 1.4000000074736240e+01 0 0 0 +21164 1 6.2532335933534100e+01 1.5767256954832112e+00 1.2250000026298144e+01 0 0 0 +21166 1 6.4215852015889666e+01 1.0152493001689784e+00 1.0500000027940381e+01 0 0 0 +21167 1 6.6460540198361102e+01 2.1112757944472227e+00 1.0500000059451166e+01 0 0 0 +21168 1 6.5899367891889611e+01 4.5377266913008246e-01 1.2250000036778351e+01 0 0 0 +21169 1 6.4777023970515060e+01 2.6727523011121517e+00 1.2250000039575420e+01 0 0 0 +21172 1 6.8144055556430402e+01 1.5497988345059492e+00 1.2250000041023554e+01 0 0 0 +21205 1 7.0388742098816451e+01 2.6458247194762849e+00 1.2250000040051926e+01 0 0 0 +21811 1 6.9827571389918134e+01 9.8832138051442731e-01 1.3999999988037723e+01 0 0 0 +21207 1 7.2072254946501900e+01 2.0843446297892787e+00 1.0500000006813032e+01 0 0 0 +21174 1 7.1511092825339901e+01 4.2684604617212329e-01 1.2250000004249097e+01 0 0 0 +21209 1 7.3755789200146253e+01 1.5228707714818128e+00 1.2249999979011221e+01 0 0 0 +21213 1 7.7122771583463361e+01 3.9995323464375898e-01 1.2249999982855567e+01 0 0 0 +21214 1 7.6000494290185728e+01 2.6188842098564815e+00 1.2249999993860621e+01 0 0 0 +21851 1 7.5439350472997589e+01 9.6142327381241610e-01 1.3999999978982167e+01 0 0 0 +21212 1 7.7684226144060091e+01 2.0575228002552848e+00 1.0499999987040439e+01 0 0 0 +21217 1 7.9367523436444330e+01 1.4961523475414507e+00 1.2249999981426502e+01 0 0 0 +21265 1 8.3289038063840820e+01 2.0293662117004017e+00 1.0499999901032906e+01 0 0 0 +21219 1 8.2732309355867841e+01 3.7064035352358299e-01 1.2250000007723898e+01 0 0 0 +21263 1 8.1612972135320234e+01 2.5930093800867686e+00 1.2249999981821666e+01 0 0 0 +21856 1 8.1049144975836242e+01 9.3391033522167255e-01 1.4000000053425392e+01 0 0 0 +21267 1 8.4964195025074886e+01 1.4605522070183992e+00 1.2250000039651150e+01 0 0 0 +21909 1 8.6710921901274361e+01 9.1126239452968016e-01 1.4000000076457956e+01 0 0 0 +21270 1 8.9045576336281769e+01 1.9647302816462773e+00 1.0500000102562758e+01 0 0 0 +21271 1 8.8549510924905519e+01 3.6531733990851201e-01 1.2250000082222671e+01 0 0 0 +21272 1 8.7168423212768715e+01 2.5171137738220546e+00 1.2250000076310444e+01 0 0 0 +21127 1 4.6258347621403949e+01 3.3150061015637480e+00 1.0499999945741795e+01 0 0 0 +21130 1 4.6819519689973149e+01 4.9725093172788704e+00 1.2249999964576070e+01 0 0 0 +21150 1 5.0747723543804966e+01 5.5070596948414661e+00 1.0500000027933693e+01 0 0 0 +21128 1 4.8503035617208795e+01 4.4110329800319672e+00 1.0499999968927723e+01 0 0 0 +21134 1 5.0186551594429261e+01 3.8495565852787741e+00 1.2249999972203128e+01 0 0 0 +21148 1 4.9064207608800487e+01 6.0685360605355507e+00 1.2249999984009440e+01 0 0 0 +21132 1 5.1870067629498408e+01 3.2880802485452927e+00 1.0500000027806754e+01 0 0 0 +21152 1 5.2431239567126049e+01 4.9455833563475515e+00 1.2249999982648143e+01 0 0 0 +21154 1 5.4114755625077308e+01 4.3841071241825240e+00 1.0500000013566336e+01 0 0 0 +21157 1 5.4675927481757732e+01 6.0416101628873644e+00 1.2249999987574464e+01 0 0 0 +21794 1 5.4114755619372737e+01 4.3841071377560352e+00 1.3999999988251885e+01 0 0 0 +21155 1 5.6359443593316399e+01 5.4801339672305982e+00 1.0499999989452565e+01 0 0 0 +21158 1 5.7481787699132575e+01 3.2611546119525245e+00 1.0499999971188641e+01 0 0 0 +21156 1 5.5798271750421875e+01 3.8226308674127756e+00 1.2250000001218497e+01 0 0 0 +21161 1 5.8042959658794835e+01 4.9186577689976003e+00 1.2250000012313286e+01 0 0 0 +21193 1 6.0287647576173434e+01 6.0146845044102344e+00 1.2249999989217756e+01 0 0 0 +21799 1 5.9726475636476735e+01 4.3571814657707204e+00 1.4000000059609794e+01 0 0 0 +21195 1 6.1971163577166926e+01 5.4532081635596166e+00 1.0499999949430805e+01 0 0 0 +21163 1 6.3093507735331848e+01 3.2342287471961191e+00 1.0500000013095892e+01 0 0 0 +21165 1 6.1409991686641490e+01 3.7957050854429273e+00 1.2250000038190418e+01 0 0 0 +21197 1 6.3654679622490420e+01 4.8917316765513430e+00 1.2250000016118639e+01 0 0 0 +21201 1 6.7021712391870267e+01 3.7687787796361492e+00 1.2250000010784232e+01 0 0 0 +21202 1 6.5899367590083955e+01 5.9877581030872165e+00 1.2250000019712209e+01 0 0 0 +21839 1 6.5338195891650869e+01 4.3302552297934396e+00 1.3999999995481781e+01 0 0 0 +21840 1 6.7582883881608524e+01 5.4262812913957825e+00 1.3999999986813469e+01 0 0 0 +21206 1 6.9266401560625241e+01 4.8648050805688934e+00 1.2250000035413624e+01 0 0 0 +21843 1 6.8705228671235133e+01 3.2073023268059280e+00 1.3999999982986106e+01 0 0 0 +21204 1 7.0949918846704691e+01 4.3033299162888952e+00 1.0500000029533537e+01 0 0 0 +21210 1 7.2633425099717726e+01 3.7418508802431245e+00 1.2250000031099743e+01 0 0 0 +21251 1 7.1511092693549884e+01 5.9608314532426432e+00 1.2250000021605574e+01 0 0 0 +21893 1 7.3194617128486954e+01 5.3993615421415395e+00 1.3999999997993593e+01 0 0 0 +21257 1 7.6561517587887380e+01 4.2763462530071283e+00 1.0500000008806225e+01 0 0 0 +21255 1 7.4878100761918944e+01 4.8378812155442326e+00 1.2249999997157444e+01 0 0 0 +21260 1 7.7122771660259161e+01 5.9339387023601029e+00 1.2249999988000576e+01 0 0 0 +21848 1 7.4316921582073093e+01 3.1803596358591300e+00 1.4000000002607280e+01 0 0 0 +21259 1 7.8245182340995669e+01 3.7148331446610015e+00 1.2249999972377758e+01 0 0 0 +21264 1 8.0489605088794292e+01 4.8104685347146816e+00 1.2250000003306694e+01 0 0 0 +21898 1 7.8805836578930709e+01 5.3722423782284565e+00 1.3999999972542154e+01 0 0 0 +21901 1 7.9929645299581694e+01 3.1537828129402024e+00 1.3999999995817419e+01 0 0 0 +21262 1 8.2176995263760958e+01 4.2505009806795515e+00 1.0499999909759227e+01 0 0 0 +21317 1 8.2732309621247722e+01 5.9046260483744675e+00 1.2249999992950544e+01 0 0 0 +21268 1 8.3862486092840953e+01 3.6926629963201885e+00 1.2250000014542724e+01 0 0 0 +21321 1 8.6132427631013783e+01 4.8013202200252385e+00 1.2250000001144972e+01 0 0 0 +21906 1 8.5523444806409600e+01 3.1251654523164296e+00 1.4000000138217391e+01 0 0 0 +21959 1 8.4431592342649196e+01 5.3473323647987963e+00 1.4000000125295974e+01 0 0 0 +22378 1 7.9929642829075689e+01 4.1891684197899053e+01 1.3999999981915842e+01 0 0 0 +21323 1 8.7753274367596646e+01 4.2422931361121607e+00 1.0499999919788573e+01 0 0 0 +21324 1 8.9214901959607730e+01 3.5993757524365835e+00 1.2250000122538541e+01 0 0 0 +21325 1 8.8549511150660010e+01 5.8993034889481972e+00 1.2250000041692326e+01 0 0 0 +21145 1 4.5697175810376287e+01 7.1914888253911622e+00 1.2249999984181972e+01 0 0 0 +21146 1 4.7380691682965470e+01 6.6300124859602310e+00 1.0499999974036628e+01 0 0 0 +21149 1 4.7941863708631686e+01 8.2875155359420667e+00 1.2249999989079004e+01 0 0 0 +21147 1 4.9625379622844093e+01 7.7260390387228348e+00 1.0500000015062964e+01 0 0 0 +21153 1 5.1308895600183931e+01 7.1645627859379220e+00 1.2249999987310302e+01 0 0 0 +21181 1 5.0186551609040094e+01 9.3835421760860598e+00 1.2250000009440152e+01 0 0 0 +21151 1 5.2992411538896022e+01 6.6030863957895676e+00 1.0500000039123437e+01 0 0 0 +21185 1 5.3553583556555452e+01 8.2605894826772914e+00 1.2249999996464444e+01 0 0 0 +21791 1 5.2992411542027867e+01 6.6030863986166475e+00 1.3999999966684257e+01 0 0 0 +21823 1 5.1870067523542225e+01 8.8220658067787099e+00 1.3999999993090771e+01 0 0 0 +21187 1 5.5237099488214213e+01 7.6991133332134583e+00 1.0500000007366884e+01 0 0 0 +21189 1 5.6920615454861469e+01 7.1376369898996881e+00 1.2250000010164191e+01 0 0 0 +21190 1 5.5798271353330634e+01 9.3566163661407540e+00 1.2250000008297093e+01 0 0 0 +21828 1 5.7481787260902010e+01 8.7951401002339331e+00 1.4000000006951806e+01 0 0 0 +21192 1 6.0848819304828559e+01 7.6721875343542631e+00 1.0499999939824763e+01 0 0 0 +21194 1 5.9165303372368768e+01 8.2336638756594986e+00 1.2249999998716362e+01 0 0 0 +21831 1 5.8604131556313426e+01 6.5761608432018965e+00 1.4000000025351950e+01 0 0 0 +21198 1 6.2532335499070612e+01 7.1107111676606136e+00 1.2249999990388257e+01 0 0 0 +21239 1 6.1409991146059113e+01 9.3296905043159892e+00 1.2249999977948971e+01 0 0 0 +21836 1 6.4215851582135414e+01 6.5492347672055748e+00 1.3999999997310420e+01 0 0 0 +21881 1 6.3093507183187910e+01 8.7682141741937567e+00 1.3999999977553626e+01 0 0 0 +21243 1 6.4777023498244006e+01 8.2067376618141665e+00 1.2250000001894662e+01 0 0 0 +21248 1 6.7021711927766717e+01 9.3027640557905844e+00 1.2250000023939817e+01 0 0 0 +21885 1 6.6460539783577673e+01 7.6452611463496707e+00 1.3999999978569241e+01 0 0 0 +21246 1 6.8705228260197387e+01 8.7412876135247757e+00 1.0500000036471038e+01 0 0 0 +21249 1 6.9827571172689744e+01 6.5223067469351204e+00 1.0500000038813349e+01 0 0 0 +21247 1 6.8144055234089976e+01 7.0837841735268769e+00 1.2250000010140178e+01 0 0 0 +21252 1 7.0388741779486907e+01 8.1798100465193464e+00 1.2250000018397678e+01 0 0 0 +21256 1 7.3755789076295514e+01 7.0568561900940789e+00 1.2250000052337095e+01 0 0 0 +21305 1 7.2633424761910518e+01 9.2758362504652698e+00 1.2250000026553256e+01 0 0 0 +21890 1 7.2072254738042076e+01 7.6183299927805299e+00 1.4000000038578417e+01 0 0 0 +21254 1 7.5439350418621459e+01 6.4954087451508444e+00 1.0500000048119604e+01 0 0 0 +21307 1 7.4316921315896479e+01 8.7143450737144512e+00 1.0500000033393805e+01 0 0 0 +21309 1 7.6000494180239372e+01 8.1528696902132989e+00 1.2250000020435271e+01 0 0 0 +21312 1 7.9929645267626981e+01 8.6877684212097392e+00 1.0499999998682483e+01 0 0 0 +21313 1 7.9367523521305770e+01 7.0301378967703050e+00 1.2249999980687795e+01 0 0 0 +21314 1 7.8245182232872736e+01 9.2488187007438221e+00 1.2250000015000616e+01 0 0 0 +21951 1 7.7684226161720247e+01 7.5915083074332292e+00 1.3999999970107233e+01 0 0 0 +21315 1 8.1049145167977443e+01 6.4678959271043421e+00 1.0499999948029339e+01 0 0 0 +21318 1 8.1612972202904714e+01 8.1269950532753512e+00 1.2249999985427335e+01 0 0 0 +21956 1 8.3289038110814971e+01 7.5633520284756717e+00 1.4000000107835341e+01 0 0 0 +21320 1 8.6710922141584803e+01 6.4452482933146102e+00 1.0499999911460959e+01 0 0 0 +21374 1 8.5523444876908954e+01 8.6591512901576024e+00 1.0499999838031412e+01 0 0 0 +21322 1 8.4964195188930375e+01 6.9945380715508021e+00 1.2249999996940076e+01 0 0 0 +21372 1 8.3862486113879143e+01 9.2266488346080617e+00 1.2249999969893631e+01 0 0 0 +21376 1 8.7168423224565188e+01 8.0510997379763722e+00 1.2249999991507613e+01 0 0 0 +21379 1 8.9214902008537024e+01 9.1333616855268076e+00 1.2249999936721165e+01 0 0 0 +22018 1 8.9045576362667049e+01 7.4987164480023472e+00 1.4000000104484359e+01 0 0 0 +21177 1 4.6819519889048131e+01 1.0506495040912737e+01 1.2249999987366518e+01 0 0 0 +21816 1 4.7380691861542338e+01 1.2163998174489370e+01 1.3999999989204282e+01 0 0 0 +21179 1 4.8503035718355875e+01 9.9450186689573457e+00 1.0500000010337716e+01 0 0 0 +21182 1 4.9064207666478048e+01 1.1602521672860163e+01 1.2249999978679686e+01 0 0 0 +21820 1 5.0747723478163962e+01 1.1041045241207151e+01 1.3999999974555594e+01 0 0 0 +21184 1 5.4114755331772919e+01 9.9180926405539029e+00 1.0500000027351046e+01 0 0 0 +21186 1 5.2431239364969215e+01 1.0479568895768779e+01 1.2250000006827843e+01 0 0 0 +21229 1 5.2992411272816966e+01 1.2137071951628334e+01 1.0500000042390411e+01 0 0 0 +21231 1 5.4675927111131983e+01 1.1575595669937545e+01 1.2250000019444638e+01 0 0 0 +21873 1 5.6359443123036307e+01 1.1014119430536232e+01 1.4000000006274643e+01 0 0 0 +21234 1 5.8604131003629583e+01 1.2110146280128358e+01 1.0499999962959055e+01 0 0 0 +21237 1 5.9726475116549295e+01 9.8911669006599627e+00 1.0499999937580203e+01 0 0 0 +21235 1 5.8042959139631449e+01 1.0452643231535289e+01 1.2249999984635945e+01 0 0 0 +21240 1 6.0287647008094680e+01 1.1548669918994070e+01 1.2249999997282657e+01 0 0 0 +21295 1 6.4215851012632143e+01 1.2083220049089958e+01 1.0499999979782226e+01 0 0 0 +21244 1 6.3654679071477254e+01 1.0425717010700874e+01 1.2249999998282249e+01 0 0 0 +21878 1 6.1971163005501140e+01 1.0987193536264439e+01 1.3999999999946093e+01 0 0 0 +21242 1 6.5338195385129481e+01 9.8642405239843640e+00 1.0500000011973105e+01 0 0 0 +21297 1 6.5899367020537582e+01 1.1521743347479591e+01 1.2249999990037894e+01 0 0 0 +21299 1 6.7582883360423409e+01 1.0960266505433907e+01 1.0500000029817731e+01 0 0 0 +21301 1 6.9266401061367972e+01 1.0398790321680256e+01 1.2250000016943861e+01 0 0 0 +21940 1 6.9827570639153222e+01 1.2056291971147202e+01 1.4000000017052983e+01 0 0 0 +21304 1 7.3194616672887520e+01 1.0933346901655213e+01 1.0500000048279421e+01 0 0 0 +21306 1 7.1511092188332469e+01 1.1494816736586834e+01 1.2250000028725585e+01 0 0 0 +21943 1 7.0949918443647022e+01 9.8373151784933626e+00 1.4000000022400215e+01 0 0 0 +21310 1 7.4878100421439939e+01 1.0371866654144689e+01 1.2250000048350090e+01 0 0 0 +21364 1 7.7122771321487846e+01 1.1467924231240643e+01 1.2250000005773741e+01 0 0 0 +21948 1 7.6561517412538805e+01 9.8103317191526891e+00 1.3999999974425746e+01 0 0 0 +22002 1 7.5439350022070798e+01 1.2029394165594704e+01 1.3999999974201710e+01 0 0 0 +21366 1 7.8805836315936872e+01 1.0906227978318508e+01 1.0500000034121580e+01 0 0 0 +21368 1 8.0489604962201014e+01 1.0344454205834662e+01 1.2249999955724087e+01 0 0 0 +21373 1 8.2732309493811357e+01 1.1438611874737211e+01 1.2249999954776444e+01 0 0 0 +22007 1 8.1049144932757514e+01 1.2001881682736791e+01 1.3999999998477396e+01 0 0 0 +22010 1 8.2176995196725585e+01 9.7844867834717846e+00 1.4000000061040170e+01 0 0 0 +21371 1 8.4431592266753213e+01 1.0881318193347120e+01 1.0499999849327699e+01 0 0 0 +21377 1 8.6132427591619958e+01 1.0335306141006470e+01 1.2250000005186170e+01 0 0 0 +22069 1 8.6710922002230092e+01 1.1979234326297265e+01 1.4000000164241884e+01 0 0 0 +1929 1 9.0272007528377387e+01 1.0648983072749356e+01 1.0499999838659454e+01 -1 0 0 +21431 1 8.8549511110628160e+01 1.1433289388564033e+01 1.2249999952571118e+01 0 0 0 +22015 1 8.7753274298060134e+01 9.7762792260126083e+00 1.4000000175809991e+01 0 0 0 +21178 1 4.5697176038411349e+01 1.2725474564189460e+01 1.2249999980806352e+01 0 0 0 +21223 1 4.7941863839297426e+01 1.3821501180936632e+01 1.2249999986789033e+01 0 0 0 +21861 1 4.6258348066868592e+01 1.4382977632780912e+01 1.3999999996777623e+01 0 0 0 +21227 1 5.1308895500420697e+01 1.2698548373400559e+01 1.2249999991020537e+01 0 0 0 +21228 1 5.0186551594699800e+01 1.4917527810040529e+01 1.2249999974113338e+01 0 0 0 +21862 1 4.8503035830080158e+01 1.5479004302627777e+01 1.3999999967076038e+01 0 0 0 +21865 1 4.9625379640440087e+01 1.3260024692946446e+01 1.3999999990784351e+01 0 0 0 +21232 1 5.3553583285239839e+01 1.3794575069536178e+01 1.2250000017952958e+01 0 0 0 +21923 1 5.4114755028788565e+01 1.5452078257340709e+01 1.3999999984073744e+01 0 0 0 +21287 1 5.7481786735287116e+01 1.4329125598440628e+01 1.0499999990545769e+01 0 0 0 +21236 1 5.6920614939791825e+01 1.2671622468813585e+01 1.2250000003807230e+01 0 0 0 +21285 1 5.5798270948345468e+01 1.4890601924037043e+01 1.2250000017316154e+01 0 0 0 +21870 1 5.5237099098688134e+01 1.3233098862883965e+01 1.3999999979217318e+01 0 0 0 +21289 1 5.9165302804370810e+01 1.3767649331436909e+01 1.2250000013476859e+01 0 0 0 +21931 1 6.0848818701041068e+01 1.3206172940489081e+01 1.4000000010364491e+01 0 0 0 +21928 1 5.9726474555096438e+01 1.5425152365344887e+01 1.4000000027148159e+01 0 0 0 +21292 1 6.3093506585560121e+01 1.4302199491621238e+01 1.0499999985842670e+01 0 0 0 +21293 1 6.2532334886407746e+01 1.2644696502070406e+01 1.2249999994383884e+01 0 0 0 +21294 1 6.1409990522875717e+01 1.4863675893118732e+01 1.2250000026337220e+01 0 0 0 +21296 1 6.6460539203278216e+01 1.3179246359327289e+01 1.0500000022176899e+01 0 0 0 +21298 1 6.4777022900724575e+01 1.3740722929903850e+01 1.2249999997610756e+01 0 0 0 +21352 1 6.7021711312073407e+01 1.4836749243288732e+01 1.2249999986108177e+01 0 0 0 +21990 1 6.5338194789039434e+01 1.5398225770677428e+01 1.3999999972240920e+01 0 0 0 +21302 1 6.8144054675405201e+01 1.2617769380246495e+01 1.2250000021019163e+01 0 0 0 +21356 1 7.0388741205187628e+01 1.3713795257488325e+01 1.2250000036976161e+01 0 0 0 +21994 1 6.8705227674385398e+01 1.4275272803128040e+01 1.4000000000415977e+01 0 0 0 +21355 1 7.0949917830301729e+01 1.5371300431636227e+01 1.0500000004258947e+01 0 0 0 +21358 1 7.2072254153618161e+01 1.3152315264035019e+01 1.0499999996805089e+01 0 0 0 +21360 1 7.3755788550264796e+01 1.2590841556451876e+01 1.2250000007007326e+01 0 0 0 +21361 1 7.2633424140563775e+01 1.4809821550338752e+01 1.2250000043359252e+01 0 0 0 +21417 1 7.6561516723599283e+01 1.5344317212525750e+01 1.0500000024963901e+01 0 0 0 +21365 1 7.6000493621753407e+01 1.3686855159011360e+01 1.2250000003384116e+01 0 0 0 +21999 1 7.4316920754740906e+01 1.4248330448091597e+01 1.4000000013969700e+01 0 0 0 +21363 1 7.7684225636023854e+01 1.3125493858086275e+01 1.0500000049139253e+01 0 0 0 +21369 1 7.9367523174880517e+01 1.2564123539679347e+01 1.2249999980148202e+01 0 0 0 +21419 1 7.8245181655383945e+01 1.4782804285118997e+01 1.2249999963290174e+01 0 0 0 +22061 1 7.9929644831076089e+01 1.4221754099505382e+01 1.3999999938107146e+01 0 0 0 +21422 1 8.2176994688828231e+01 1.5318472576177816e+01 1.0499999931379747e+01 0 0 0 +21425 1 8.3289037854679549e+01 1.3097337826749335e+01 1.0499999871454797e+01 0 0 0 +21423 1 8.1612971853127078e+01 1.3660980833426365e+01 1.2249999954517415e+01 0 0 0 +21427 1 8.4964194966473400e+01 1.2528523948991639e+01 1.2249999952274546e+01 0 0 0 +21428 1 8.3862485748763575e+01 1.4760634706277640e+01 1.2249999967469591e+01 0 0 0 +22066 1 8.5523444609325097e+01 1.4193137294460739e+01 1.4000000150282071e+01 0 0 0 +21430 1 8.9045576337317385e+01 1.3032702193857432e+01 1.0499999776705035e+01 0 0 0 +21483 1 8.7753274124811952e+01 1.5310265023212748e+01 1.0499999854257444e+01 0 0 0 +21432 1 8.7168423214007191e+01 1.3585085738429667e+01 1.2249999944642980e+01 0 0 0 +21484 1 8.9214901639651274e+01 1.4667347455985762e+01 1.2249999962247134e+01 0 0 0 +21224 1 4.6819519995236149e+01 1.6040480723815659e+01 1.2249999971634237e+01 0 0 0 +21274 1 4.5697176048862943e+01 1.8259460286054043e+01 1.2249999965696983e+01 0 0 0 +21915 1 4.7380691926388039e+01 1.7697983851808438e+01 1.3999999970682627e+01 0 0 0 +21277 1 4.9064207680051524e+01 1.7136507356887904e+01 1.2249999984257121e+01 0 0 0 +21282 1 5.1308895366458941e+01 1.8232534119445756e+01 1.2249999983664026e+01 0 0 0 +21916 1 4.9625379572189900e+01 1.8794010411055805e+01 1.3999999951258840e+01 0 0 0 +21919 1 5.0747723402667937e+01 1.6575030926309896e+01 1.3999999957216923e+01 0 0 0 +21281 1 5.2431239218363132e+01 1.6013554547380135e+01 1.2250000001836185e+01 0 0 0 +21286 1 5.4675926809811230e+01 1.7109581339406489e+01 1.2250000005165848e+01 0 0 0 +21920 1 5.2992411080567116e+01 1.7671057656745397e+01 1.3999999962164489e+01 0 0 0 +21284 1 5.6359442729266547e+01 1.6548105036096249e+01 1.0500000012738315e+01 0 0 0 +21340 1 5.6920614565474210e+01 1.8205608134548321e+01 1.2250000027715734e+01 0 0 0 +21290 1 5.8042958634908075e+01 1.5986628774379538e+01 1.2250000028990277e+01 0 0 0 +21343 1 6.0848818150625071e+01 1.8740158460839378e+01 1.0499999963073694e+01 0 0 0 +21344 1 6.0287646429089385e+01 1.7082655404156966e+01 1.2250000010610453e+01 0 0 0 +21982 1 5.8604130534964312e+01 1.7644131867767825e+01 1.4000000012330052e+01 0 0 0 +21346 1 6.1971162383676315e+01 1.6521178936975797e+01 1.0499999955670775e+01 0 0 0 +21348 1 6.3654678465920675e+01 1.5959702315479056e+01 1.2249999983986728e+01 0 0 0 +21349 1 6.2532334329477251e+01 1.8178681913210497e+01 1.2249999986812997e+01 0 0 0 +21987 1 6.4215850433462521e+01 1.7617205364045020e+01 1.4000000005157531e+01 0 0 0 +21353 1 6.5899366414470123e+01 1.7055728565059848e+01 1.2250000005786024e+01 0 0 0 +22045 1 6.6460538618769419e+01 1.8713231588399157e+01 1.3999999987016816e+01 0 0 0 +21991 1 6.7582882753711260e+01 1.6494251720565412e+01 1.3999999991966268e+01 0 0 0 +21409 1 6.9827570025565493e+01 1.7590277175156594e+01 1.0500000000970626e+01 0 0 0 +21357 1 6.9266400467015842e+01 1.5932775536374082e+01 1.2250000010914368e+01 0 0 0 +21407 1 6.8144054076618161e+01 1.8151754566835365e+01 1.2249999985488371e+01 0 0 0 +21411 1 7.1511091556384287e+01 1.7028802005578299e+01 1.2250000001967397e+01 0 0 0 +21416 1 7.3755787838878803e+01 1.8124826941509880e+01 1.2250000028537041e+01 0 0 0 +22050 1 7.2072253472636334e+01 1.8686300589468807e+01 1.4000000041262822e+01 0 0 0 +22053 1 7.3194616028171595e+01 1.6467332226262162e+01 1.4000000001732708e+01 0 0 0 +21414 1 7.5439349262115556e+01 1.7563379626983217e+01 1.0500000029080946e+01 0 0 0 +21415 1 7.4878099755536596e+01 1.5905852062774235e+01 1.2250000002099307e+01 0 0 0 +21420 1 7.7122770599758397e+01 1.7001909772017157e+01 1.2249999981384525e+01 0 0 0 +21473 1 7.9367522404383550e+01 1.8098109210972833e+01 1.2249999988146982e+01 0 0 0 +21424 1 8.0489604368767317e+01 1.5878439934905479e+01 1.2249999984839807e+01 0 0 0 +22111 1 7.7684224919686571e+01 1.8659479427495828e+01 1.3999999945203436e+01 0 0 0 +22058 1 7.8805835683149326e+01 1.6440213604962445e+01 1.3999999940300873e+01 0 0 0 +21475 1 8.1049144198266859e+01 1.7535867447105577e+01 1.0500000000929163e+01 0 0 0 +21477 1 8.2732308881850528e+01 1.6972597704755028e+01 1.2249999985176142e+01 0 0 0 +22116 1 8.3289037215424997e+01 1.8631323735747252e+01 1.4000000085390287e+01 0 0 0 +21480 1 8.6710921649155438e+01 1.7513220186689654e+01 1.0499999838939868e+01 0 0 0 +21481 1 8.6132427387425437e+01 1.5869292022266478e+01 1.2249999924862705e+01 0 0 0 +21482 1 8.4964194535608968e+01 1.8062509876725279e+01 1.2249999980406610e+01 0 0 0 +22119 1 8.4431591857357887e+01 1.6415304135941629e+01 1.4000000107060313e+01 0 0 0 +21485 1 8.8549510968617696e+01 1.6967275130733437e+01 1.2249999918862095e+01 0 0 0 +2566 1 9.0272007528377415e+01 1.6182968889785627e+01 1.4000000140047876e+01 -1 0 0 +22178 1 8.9045576237035448e+01 1.8566688070884581e+01 1.4000000110910026e+01 0 0 0 +21278 1 4.7941863782696188e+01 1.9355486911752429e+01 1.2249999967270018e+01 0 0 0 +21328 1 4.6819519922210041e+01 2.1574466515917493e+01 1.2250000005372515e+01 0 0 0 +21913 1 4.6258348010868282e+01 1.9916963343968316e+01 1.3999999975226082e+01 0 0 0 +21332 1 5.0186551467243788e+01 2.0451513610533791e+01 1.2249999974125990e+01 0 0 0 +21970 1 4.8503035741707045e+01 2.1012990073668874e+01 1.3999999970445435e+01 0 0 0 +21971 1 5.0747723262524438e+01 2.2109016807474191e+01 1.3999999946455953e+01 0 0 0 +21336 1 5.3553583038893386e+01 1.9328560830449074e+01 1.2249999988904829e+01 0 0 0 +21337 1 5.2431238985272309e+01 2.1547540422465321e+01 1.2249999983281285e+01 0 0 0 +21975 1 5.4114754772541765e+01 2.0986064092679076e+01 1.3999999972603934e+01 0 0 0 +21974 1 5.1870067212545671e+01 1.9890037206679519e+01 1.3999999957782777e+01 0 0 0 +21341 1 5.5798270625669076e+01 2.0424587717000755e+01 1.2250000011213821e+01 0 0 0 +21979 1 5.7481786369433571e+01 1.9863111321054642e+01 1.3999999997706267e+01 0 0 0 +22033 1 5.6359442421264966e+01 2.2082090892225523e+01 1.3999999987530753e+01 0 0 0 +21345 1 5.9165302322068051e+01 1.9301634944472742e+01 1.2250000008907078e+01 0 0 0 +21395 1 5.8042958281101413e+01 2.1520614534081432e+01 1.2249999987019859e+01 0 0 0 +21397 1 5.9726474124922241e+01 2.0959138009541615e+01 1.0499999958610296e+01 0 0 0 +21399 1 6.1409990072717150e+01 2.0397661443002409e+01 1.2249999964644006e+01 0 0 0 +21404 1 6.3654678018141013e+01 2.1493687766329028e+01 1.2249999984203566e+01 0 0 0 +22041 1 6.3093506101249034e+01 1.9836184917262749e+01 1.3999999973568942e+01 0 0 0 +22038 1 6.1971162045628475e+01 2.2055164529472631e+01 1.3999999999980965e+01 0 0 0 +21459 1 6.7582882234987139e+01 2.2028237018508332e+01 1.0499999995701870e+01 0 0 0 +21402 1 6.5338194267327481e+01 2.0932211112028863e+01 1.0499999998503865e+01 0 0 0 +21403 1 6.4777022331570734e+01 1.9274708231646716e+01 1.2249999996449452e+01 0 0 0 +21408 1 6.7021710772339148e+01 2.0370734512847797e+01 1.2249999991353867e+01 0 0 0 +21406 1 6.8705227087071577e+01 1.9809258023620060e+01 1.0499999993658980e+01 0 0 0 +21412 1 7.0388740564536704e+01 1.9247780523600788e+01 1.2249999997674996e+01 0 0 0 +21461 1 6.9266399896585042e+01 2.1466760808352674e+01 1.2250000003404418e+01 0 0 0 +21464 1 7.3194615331860163e+01 2.2001317638769422e+01 1.0499999989924373e+01 0 0 0 +21465 1 7.2633423453383116e+01 2.0343806923116571e+01 1.2249999988389284e+01 0 0 0 +22103 1 7.0949917182316682e+01 2.0905285737976328e+01 1.4000000024711291e+01 0 0 0 +21467 1 7.4316919998568039e+01 1.9782315877148001e+01 1.0499999986613457e+01 0 0 0 +21469 1 7.6000492862963185e+01 1.9220840651659120e+01 1.2249999988614055e+01 0 0 0 +21470 1 7.4878098996547138e+01 2.1439837536109877e+01 1.2249999997276044e+01 0 0 0 +22108 1 7.6561515964872342e+01 2.0878302758930317e+01 1.3999999970815779e+01 0 0 0 +21526 1 7.8805834848705899e+01 2.1974199305685463e+01 1.0500000063169265e+01 0 0 0 +21472 1 7.9929643999034852e+01 1.9755739844260102e+01 1.0500000054723891e+01 0 0 0 +21474 1 7.8245180833367201e+01 2.0316789919479021e+01 1.2250000013420411e+01 0 0 0 +21528 1 8.0489603510432005e+01 2.1412425714949649e+01 1.2250000012110652e+01 0 0 0 +21478 1 8.1612971067627967e+01 1.9194966636166495e+01 1.2250000015969226e+01 0 0 0 +22170 1 8.2176993916019882e+01 2.0852458455221079e+01 1.4000000060903149e+01 0 0 0 +21532 1 8.3862485071646105e+01 2.0294620601494305e+01 1.2250000037187345e+01 0 0 0 +21534 1 8.5523444010089008e+01 1.9727123173290142e+01 1.0499999918890159e+01 0 0 0 +21537 1 8.6132426772744864e+01 2.1403277885258561e+01 1.2250000045047525e+01 0 0 0 +21531 1 8.4431591147161555e+01 2.1949290060840305e+01 1.0500000014518742e+01 0 0 0 +21536 1 8.7168422770100690e+01 1.9119071488498520e+01 1.2249999966464445e+01 0 0 0 +21539 1 8.9214901822864661e+01 2.0201333311773173e+01 1.2249999853763100e+01 0 0 0 +1947 1 9.0272007528376818e+01 2.1716954820340913e+01 1.0499999796487947e+01 -1 0 0 +22175 1 8.7753273809980442e+01 2.0844250867111661e+01 1.4000000187459316e+01 0 0 0 +21329 1 4.5697175998916066e+01 2.3793446148641628e+01 1.2250000001317552e+01 0 0 0 +21383 1 4.7941863779595323e+01 2.4889472881513115e+01 1.2249999993234450e+01 0 0 0 +21967 1 4.7380691845898532e+01 2.3231969705795212e+01 1.3999999978674003e+01 0 0 0 +21333 1 4.9064207579180668e+01 2.2670493252371074e+01 1.2249999966775626e+01 0 0 0 +21387 1 5.1308895233749510e+01 2.3766520080018431e+01 1.2249999975853923e+01 0 0 0 +22025 1 4.9625379519110972e+01 2.4327996379592520e+01 1.3999999971560010e+01 0 0 0 +21391 1 5.4675926569591944e+01 2.2643567250688694e+01 1.2249999998692836e+01 0 0 0 +21392 1 5.3553582904716158e+01 2.4862546879552724e+01 1.2250000001722658e+01 0 0 0 +22029 1 5.2992410893178935e+01 2.3205043589054199e+01 1.3999999949481481e+01 0 0 0 +21396 1 5.6920614291280195e+01 2.3739594060463368e+01 1.2249999979223976e+01 0 0 0 +22030 1 5.5237098586465194e+01 2.4301070582598424e+01 1.3999999952798202e+01 0 0 0 +21400 1 6.0287646115847672e+01 2.2616641127469041e+01 1.2249999993187743e+01 0 0 0 +21449 1 5.9165302150633480e+01 2.4835620856636837e+01 1.2249999980806749e+01 0 0 0 +22091 1 6.0848817976873704e+01 2.4274144240073269e+01 1.3999999992853208e+01 0 0 0 +21453 1 6.2532334062645596e+01 2.3712667534836314e+01 1.2249999977766320e+01 0 0 0 +21455 1 6.4215850072233806e+01 2.3151190856457944e+01 1.0499999971910514e+01 0 0 0 +21457 1 6.5899366001968431e+01 2.2589713963586139e+01 1.2249999957236330e+01 0 0 0 +21458 1 6.4777022132845204e+01 2.4808693800574400e+01 1.2249999965147712e+01 0 0 0 +21462 1 6.8144053643378015e+01 2.3685739987014731e+01 1.2250000002498052e+01 0 0 0 +21516 1 7.0388740109354657e+01 2.4781765993114810e+01 1.2250000002972152e+01 0 0 0 +22100 1 6.9827569483711130e+01 2.3124262547133821e+01 1.4000000031431808e+01 0 0 0 +21518 1 7.2072252905612643e+01 2.4220286038701168e+01 1.0499999949103298e+01 0 0 0 +21466 1 7.1511090929785098e+01 2.2562787367509880e+01 1.2250000005401581e+01 0 0 0 +21520 1 7.3755787162449366e+01 2.3658812402692025e+01 1.2249999984468740e+01 0 0 0 +21524 1 7.7122769791941536e+01 2.2535895347643539e+01 1.2249999987883127e+01 0 0 0 +21525 1 7.6000492129088357e+01 2.4754826218641089e+01 1.2249999979126748e+01 0 0 0 +22162 1 7.5439348521863010e+01 2.3097365136478224e+01 1.3999999983765255e+01 0 0 0 +21523 1 7.7684224121521666e+01 2.4193465082941103e+01 1.0500000025180022e+01 0 0 0 +21529 1 7.9367521553928142e+01 2.3632094935451175e+01 1.2249999999978495e+01 0 0 0 +21585 1 8.3289036471578456e+01 2.4165309648283205e+01 1.0500000057300706e+01 0 0 0 +21533 1 8.2732308097660876e+01 2.2506583610237541e+01 1.2250000049462887e+01 0 0 0 +21583 1 8.1612970245223195e+01 2.4728952514558799e+01 1.2250000030073549e+01 0 0 0 +22167 1 8.1049143362605861e+01 2.3069853267262790e+01 1.4000000007663827e+01 0 0 0 +21587 1 8.4964193859254934e+01 2.3596495787586814e+01 1.2250000071833488e+01 0 0 0 +22229 1 8.6710921185079584e+01 2.3047206071032431e+01 1.4000000123632629e+01 0 0 0 +21590 1 8.9045576033868898e+01 2.4100674012859258e+01 1.0499999862731642e+01 0 0 0 +21591 1 8.8549510594853729e+01 2.2501261000165520e+01 1.2249999953859129e+01 0 0 0 +21592 1 8.7168422459918517e+01 2.4653057493986161e+01 1.2250000037025503e+01 0 0 0 +21384 1 4.6819519961224913e+01 2.7108452537674683e+01 1.2250000008138727e+01 0 0 0 +22020 1 4.5136004073014810e+01 2.7669928987828637e+01 1.3999999993209032e+01 0 0 0 +22021 1 4.6258348008903283e+01 2.5450949301910477e+01 1.4000000010419612e+01 0 0 0 +21388 1 5.0186551449907071e+01 2.5985499685012762e+01 1.2249999977622705e+01 0 0 0 +21437 1 4.9064207638341379e+01 2.8204479371031486e+01 1.2250000012089560e+01 0 0 0 +22079 1 5.0747723301556626e+01 2.7643002965002406e+01 1.3999999984083525e+01 0 0 0 +22022 1 4.8503035754835039e+01 2.6546976151584683e+01 1.3999999983401615e+01 0 0 0 +21441 1 5.2431239014594048e+01 2.7081526574258589e+01 1.2250000009927795e+01 0 0 0 +21446 1 5.4675926608089512e+01 2.8177553465411954e+01 1.2249999989924591e+01 0 0 0 +22026 1 5.1870067153389272e+01 2.5424023292731352e+01 1.3999999979256517e+01 0 0 0 +22083 1 5.4114754720860283e+01 2.6520050206160104e+01 1.3999999978560613e+01 0 0 0 +21445 1 5.5798270525143003e+01 2.5958573784540111e+01 1.2249999996110855e+01 0 0 0 +22084 1 5.6359442452023714e+01 2.7616077067102214e+01 1.3999999990506966e+01 0 0 0 +21450 1 5.8042958246641696e+01 2.7054600610513894e+01 1.2250000018819287e+01 0 0 0 +21504 1 6.0287646178431331e+01 2.8150627130574872e+01 1.2249999981113898e+01 0 0 0 +22088 1 5.9726474084306005e+01 2.6493123979952895e+01 1.3999999992087004e+01 0 0 0 +21454 1 6.1409989971785308e+01 2.5931647284410570e+01 1.2249999998196358e+01 0 0 0 +21508 1 6.3654678026759377e+01 2.7027673534072452e+01 1.2249999963444397e+01 0 0 0 +21512 1 6.7021710577535558e+01 2.5904720050988100e+01 1.2249999987790449e+01 0 0 0 +21513 1 6.5899366026688014e+01 2.8123699708928822e+01 1.2250000001244754e+01 0 0 0 +21511 1 6.7582882205266756e+01 2.7562222706150443e+01 1.0499999994716461e+01 0 0 0 +22151 1 6.7582882163260763e+01 2.7562222695833043e+01 1.4000000015471858e+01 0 0 0 +22150 1 6.5338194200431687e+01 2.6466196766990553e+01 1.3999999991935791e+01 0 0 0 +21514 1 6.8705226738509509e+01 2.5343243499290661e+01 1.0499999998851145e+01 0 0 0 +21517 1 6.9266399678638081e+01 2.7000746405773231e+01 1.2250000014539365e+01 0 0 0 +22154 1 6.8705226735022492e+01 2.5343243554325902e+01 1.4000000005324015e+01 0 0 0 +21521 1 7.2633422937870719e+01 2.5877792439106603e+01 1.2250000009563262e+01 0 0 0 +21571 1 7.1511090687006188e+01 2.8096773026975871e+01 1.2250000018224473e+01 0 0 0 +21573 1 7.3194614929404992e+01 2.7535303246265023e+01 1.0499999978892967e+01 0 0 0 +22213 1 7.3194614954340977e+01 2.7535303251475206e+01 1.4000000020611628e+01 0 0 0 +21577 1 7.6561515299505274e+01 2.6412288419226233e+01 1.0499999990154171e+01 0 0 0 +21575 1 7.4878098450121911e+01 2.6973823120765893e+01 1.2249999985164211e+01 0 0 0 +21580 1 7.7122769226740274e+01 2.8069881058940791e+01 1.2249999971043058e+01 0 0 0 +22159 1 7.4316919407142407e+01 2.5316301395817103e+01 1.4000000025980091e+01 0 0 0 +21579 1 7.8245180070441009e+01 2.5850775635836161e+01 1.2249999975147462e+01 0 0 0 +21584 1 8.0489602742211062e+01 2.6946411568546829e+01 1.2250000009477466e+01 0 0 0 +22218 1 7.8805834174057679e+01 2.7508185083063996e+01 1.3999999948364515e+01 0 0 0 +22221 1 7.9929643192056957e+01 2.5289725645453746e+01 1.3999999969724300e+01 0 0 0 +21582 1 8.2176993191795759e+01 2.6386444361907444e+01 1.0500000043569875e+01 0 0 0 +21637 1 8.2732307433338619e+01 2.8040569582404352e+01 1.2250000027393803e+01 0 0 0 +21588 1 8.3862484327970847e+01 2.5828606535669671e+01 1.2250000046189475e+01 0 0 0 +21641 1 8.6132426232322487e+01 2.6937263810276306e+01 1.2250000016171359e+01 0 0 0 +22226 1 8.5523443427960231e+01 2.5261109087046723e+01 1.4000000092817347e+01 0 0 0 +22279 1 8.4431590542370316e+01 2.7483276017858099e+01 1.4000000033301799e+01 0 0 0 +21643 1 8.7753273349497164e+01 2.6378236833254245e+01 1.0499999918390113e+01 0 0 0 +21644 1 8.9214901525606052e+01 2.5735319257686179e+01 1.2250000035897001e+01 0 0 0 +21645 1 8.8549510167739186e+01 2.8035246904820010e+01 1.2250000052805367e+01 0 0 0 +2584 1 9.0272007528377159e+01 2.7250940731620116e+01 1.4000000064013252e+01 -1 0 0 +21434 1 4.5697175989502590e+01 2.9327432201427275e+01 1.2249999984326015e+01 0 0 0 +21438 1 4.7941863814618117e+01 3.0423459055967314e+01 1.2249999992501124e+01 0 0 0 +22073 1 4.6258347988108390e+01 3.0984935430592078e+01 1.3999999993279229e+01 0 0 0 +22075 1 4.7380691894253339e+01 2.8765955817128290e+01 1.3999999999654413e+01 0 0 0 +21442 1 5.1308895340700062e+01 2.9300506322180503e+01 1.2250000002167791e+01 0 0 0 +21492 1 5.0186551563369136e+01 3.1519485974579705e+01 1.2249999992560150e+01 0 0 0 +22076 1 4.9625379589116179e+01 2.9861982600748366e+01 1.3999999991380491e+01 0 0 0 +21496 1 5.3553583053277144e+01 3.0396533167322893e+01 1.2249999987547945e+01 0 0 0 +22080 1 5.2992410960691402e+01 2.8739029827325499e+01 1.3999999980171760e+01 0 0 0 +22134 1 5.1870067269672212e+01 3.0958009582391423e+01 1.3999999996102741e+01 0 0 0 +21500 1 5.6920614430864845e+01 2.9273580280800392e+01 1.2250000025731357e+01 0 0 0 +21501 1 5.5798270748690911e+01 3.1492560095539254e+01 1.2250000025508761e+01 0 0 0 +22138 1 5.5237098770996909e+01 2.9835056863729701e+01 1.3999999989831032e+01 0 0 0 +22139 1 5.7481786452119493e+01 3.0931083551957187e+01 1.3999999991319482e+01 0 0 0 +21505 1 5.9165302349400278e+01 3.0369607003595465e+01 1.2249999984926736e+01 0 0 0 +22142 1 5.8604130328948550e+01 2.8712103815312588e+01 1.3999999983724377e+01 0 0 0 +21507 1 6.4215850181927777e+01 2.8685176620494182e+01 1.0499999963344786e+01 0 0 0 +21561 1 6.3093506185440091e+01 3.0904156593550109e+01 1.0499999965294814e+01 0 0 0 +21509 1 6.2532334234076828e+01 2.9246653470531250e+01 1.2249999961168289e+01 0 0 0 +21559 1 6.1409990279486372e+01 3.1465633346107907e+01 1.2249999965324388e+01 0 0 0 +22147 1 6.4215850214037047e+01 2.8685176687898462e+01 1.3999999995472169e+01 0 0 0 +22201 1 6.3093506229351853e+01 3.0904156580068221e+01 1.3999999980169253e+01 0 0 0 +21563 1 6.4777022345305895e+01 3.0342679679851411e+01 1.2249999984397407e+01 0 0 0 +21565 1 6.6460538468368000e+01 2.9781202842357015e+01 1.0499999973628002e+01 0 0 0 +21568 1 6.7021710792521986e+01 3.1438705948459248e+01 1.2249999980538691e+01 0 0 0 +22205 1 6.6460538419100445e+01 2.9781202859310248e+01 1.3999999986291565e+01 0 0 0 +21567 1 6.8144053658331558e+01 2.9219725748766042e+01 1.2249999975529230e+01 0 0 0 +21572 1 7.0388740101156714e+01 3.0315751795210744e+01 1.2249999993681399e+01 0 0 0 +21570 1 7.2072252770507873e+01 2.9754271820588528e+01 1.0499999971698578e+01 0 0 0 +21576 1 7.3755786870433965e+01 2.9192798103688428e+01 1.2250000026347893e+01 0 0 0 +21625 1 7.2633422887073380e+01 3.1411778288289696e+01 1.2249999999617858e+01 0 0 0 +22210 1 7.2072252772208770e+01 2.9754271780865697e+01 1.4000000043472875e+01 0 0 0 +21629 1 7.6000491823543328e+01 3.0288812017317081e+01 1.2249999995804083e+01 0 0 0 +21631 1 7.7684223631251683e+01 2.9727450899865396e+01 1.0500000016617344e+01 0 0 0 +21633 1 7.9367520962593915e+01 2.9166080808122846e+01 1.2250000004420420e+01 0 0 0 +21634 1 7.8245179700405060e+01 3.1384761536228762e+01 1.2250000030127387e+01 0 0 0 +22271 1 7.7684223706382042e+01 2.9727450905420120e+01 1.3999999980021249e+01 0 0 0 +21636 1 8.3289035879412310e+01 2.9699295652531220e+01 1.0500000060779566e+01 0 0 0 +21638 1 8.1612969681995068e+01 3.0262938500794046e+01 1.2250000011634587e+01 0 0 0 +22276 1 8.3289035897633937e+01 2.9699295641927534e+01 1.3999999993731024e+01 0 0 0 +21642 1 8.4964193283714835e+01 2.9130481775417675e+01 1.2250000020906263e+01 0 0 0 +21687 1 8.3862483829957426e+01 3.1362592566501100e+01 1.2250000037874374e+01 0 0 0 +21691 1 8.7168422263785516e+01 3.0187043630763860e+01 1.2250000046321370e+01 0 0 0 +21694 1 8.9214901135421528e+01 3.1269305342797825e+01 1.2250000019618009e+01 0 0 0 +22333 1 8.9045575893982871e+01 2.9634660000354817e+01 1.4000000060992848e+01 0 0 0 +21488 1 4.6819519962711510e+01 3.2642438735193934e+01 1.2250000024642340e+01 0 0 0 +22126 1 4.5136004054987637e+01 3.3203915123330638e+01 1.4000000007814569e+01 0 0 0 +22127 1 4.7380691938476623e+01 3.4299942114487777e+01 1.3999999995220247e+01 0 0 0 +21493 1 4.9064207751184583e+01 3.3738465705591743e+01 1.2249999978841066e+01 0 0 0 +22130 1 4.8503035825018664e+01 3.2080962406407380e+01 1.3999999982053186e+01 0 0 0 +22131 1 5.0747723449656668e+01 3.3176989315636206e+01 1.3999999975830045e+01 0 0 0 +21497 1 5.2431239184817663e+01 3.2615512933697566e+01 1.2249999994664316e+01 0 0 0 +21551 1 5.4675926881322248e+01 3.3711539828991484e+01 1.2250000013636752e+01 0 0 0 +22135 1 5.4114754956115497e+01 3.2054036567506962e+01 1.3999999989677704e+01 0 0 0 +22189 1 5.2992411221941744e+01 3.4273016228388293e+01 1.3999999962230792e+01 0 0 0 +22193 1 5.6359442724789027e+01 3.3150063378918013e+01 1.4000000007736022e+01 0 0 0 +21555 1 5.8042958566181319e+01 3.2588586872344024e+01 1.2249999993658475e+01 0 0 0 +21560 1 6.0287646600705727e+01 3.3684613305309909e+01 1.2250000003801308e+01 0 0 0 +21558 1 6.1971162455991809e+01 3.3123136463949656e+01 1.0499999960197568e+01 0 0 0 +21564 1 6.3654678392481564e+01 3.2561659534553336e+01 1.2249999964369616e+01 0 0 0 +22198 1 6.1971162479819412e+01 3.3123136503628906e+01 1.4000000001223212e+01 0 0 0 +21617 1 6.5899366409015968e+01 3.3657685721871133e+01 1.2249999945932961e+01 0 0 0 +21620 1 6.9827569628360237e+01 3.4192234307406963e+01 1.0499999979821395e+01 0 0 0 +21621 1 6.9266399856681232e+01 3.2534732367061949e+01 1.2250000000527402e+01 0 0 0 +22260 1 6.9827569608409391e+01 3.4192234301855116e+01 1.4000000010707698e+01 0 0 0 +21623 1 7.0949916927702503e+01 3.1973257217588088e+01 1.0499999974163597e+01 0 0 0 +21626 1 7.1511090812272869e+01 3.3630759023669277e+01 1.2249999991882623e+01 0 0 0 +22263 1 7.0949916897201732e+01 3.1973257192587784e+01 1.4000000022994632e+01 0 0 0 +21628 1 7.6561515095188327e+01 3.1946274320955748e+01 1.0500000001681967e+01 0 0 0 +21630 1 7.4878098377868668e+01 3.2507809034399394e+01 1.2250000005707493e+01 0 0 0 +21677 1 7.5439348063295810e+01 3.4165336847803403e+01 1.0499999984288101e+01 0 0 0 +21679 1 7.7122769076163536e+01 3.3603867064626321e+01 1.2250000031264221e+01 0 0 0 +22268 1 7.6561515136538645e+01 3.1946274311584602e+01 1.3999999980394948e+01 0 0 0 +22317 1 7.5439348086734057e+01 3.4165336848506449e+01 1.3999999993397477e+01 0 0 0 +21683 1 8.0489602402649211e+01 3.2480397615589951e+01 1.2250000019016463e+01 0 0 0 +21682 1 8.1049142451431507e+01 3.4137825307197595e+01 1.0500000065054909e+01 0 0 0 +21685 1 8.2176992717318697e+01 3.1920430422595803e+01 1.0500000062159517e+01 0 0 0 +21688 1 8.2732307060519631e+01 3.3574555667422082e+01 1.2250000057312604e+01 0 0 0 +22322 1 8.1049142488287757e+01 3.4137825284536433e+01 1.4000000004730412e+01 0 0 0 +22325 1 8.2176992755346191e+01 3.1920430417721928e+01 1.4000000007254497e+01 0 0 0 +21726 1 8.6710920373226202e+01 3.4115178221152362e+01 1.0500000084587629e+01 0 0 0 +21692 1 8.6132425880097173e+01 3.2471249861412005e+01 1.2250000069989479e+01 0 0 0 +22366 1 8.6710920381241522e+01 3.4115178221383360e+01 1.4000000022188431e+01 0 0 0 +21690 1 8.7753273082667263e+01 3.1912222829279045e+01 1.0500000140266998e+01 0 0 0 +21728 1 8.8549509871970571e+01 3.3569232949543483e+01 1.2250000054239193e+01 0 0 0 +22330 1 8.7753273058664604e+01 3.1912222838922293e+01 1.3999999990663140e+01 0 0 0 +21489 1 4.5697175980098820e+01 3.4861418441672726e+01 1.2250000006377144e+01 0 0 0 +21543 1 4.7941863918460314e+01 3.5957445425300037e+01 1.2250000004547299e+01 0 0 0 +22181 1 4.6258348014454292e+01 3.6518921744932044e+01 1.4000000016204476e+01 0 0 0 +21547 1 5.1308895539245597e+01 3.4834492707278613e+01 1.2249999971203412e+01 0 0 0 +21548 1 5.0186551746574551e+01 3.7053472389817301e+01 1.2249999986060287e+01 0 0 0 +22182 1 4.8503035931504378e+01 3.7614948805020056e+01 1.3999999984800866e+01 0 0 0 +22185 1 4.9625379754669822e+01 3.5395968991001638e+01 1.3999999986997532e+01 0 0 0 +21552 1 5.3553583343432621e+01 3.5930519576988623e+01 1.2250000000649543e+01 0 0 0 +22243 1 5.4114755309752674e+01 3.7588022945527904e+01 1.4000000004203306e+01 0 0 0 +22186 1 5.1870067558284042e+01 3.6491996022456831e+01 1.3999999976538883e+01 0 0 0 +21556 1 5.6920614796951121e+01 3.4807566594041326e+01 1.2249999979300370e+01 0 0 0 +21605 1 5.5798271151512630e+01 3.7026546455522954e+01 1.2249999987904920e+01 0 0 0 +22190 1 5.5237099073340310e+01 3.5369043226142203e+01 1.3999999987179397e+01 0 0 0 +22247 1 5.7481786909585942e+01 3.6465069877012247e+01 1.3999999998118712e+01 0 0 0 +21611 1 6.0848818639436701e+01 3.5342116461209145e+01 1.0499999967247584e+01 0 0 0 +21609 1 5.9165302826906384e+01 3.5903593257120690e+01 1.2249999995542691e+01 0 0 0 +22248 1 5.9726474933839754e+01 3.7561096383971247e+01 1.4000000011150627e+01 0 0 0 +22251 1 6.0848818678571511e+01 3.5342116470076157e+01 1.4000000009979644e+01 0 0 0 +21613 1 6.2532334720446123e+01 3.4780639581770373e+01 1.2249999992727076e+01 0 0 0 +21614 1 6.1409990839996873e+01 3.6999619534874547e+01 1.2250000000042649e+01 0 0 0 +21618 1 6.4777022879565678e+01 3.5876665809172749e+01 1.2249999966753737e+01 0 0 0 +21667 1 6.7021711286067770e+01 3.6972692173605459e+01 1.2250000017408011e+01 0 0 0 +22305 1 6.5338195092943792e+01 3.7534168906316133e+01 1.3999999992823799e+01 0 0 0 +21622 1 6.8144054014214589e+01 3.4753711833456435e+01 1.2249999996449787e+01 0 0 0 +21669 1 6.8705227262224383e+01 3.6411215585380191e+01 1.0499999993115869e+01 0 0 0 +21671 1 7.0388740401591804e+01 3.5849737966664264e+01 1.2250000008656254e+01 0 0 0 +22309 1 6.8705227268265091e+01 3.6411215596384828e+01 1.4000000009241223e+01 0 0 0 +21675 1 7.3755786963828854e+01 3.4726784161252773e+01 1.2249999974652459e+01 0 0 0 +21676 1 7.2633423148734195e+01 3.6945764504427117e+01 1.2249999997365967e+01 0 0 0 +21674 1 7.4316919360557321e+01 3.6384273360162453e+01 1.0499999944776054e+01 0 0 0 +21680 1 7.6000491845936210e+01 3.5822798110442271e+01 1.2249999991897509e+01 0 0 0 +22314 1 7.4316919380715987e+01 3.6384273397089636e+01 1.4000000006341729e+01 0 0 0 +21718 1 7.9929642638756462e+01 3.6357697775696202e+01 1.0500000032536855e+01 0 0 0 +21684 1 7.9367520796262966e+01 3.4700066914389055e+01 1.2250000020713719e+01 0 0 0 +21716 1 7.8245179722020751e+01 3.6918747734814524e+01 1.2249999982913875e+01 0 0 0 +22358 1 7.9929642648263652e+01 3.6357697781629902e+01 1.3999999995108508e+01 0 0 0 +21720 1 8.1612969474938765e+01 3.5796924656952712e+01 1.2250000055901918e+01 0 0 0 +21723 1 8.5523442799693441e+01 3.6329081351480156e+01 1.0500000084390313e+01 0 0 0 +21724 1 8.4964193076858535e+01 3.4664467956053862e+01 1.2250000072907614e+01 0 0 0 +21725 1 8.3862483685229122e+01 3.6896578784412739e+01 1.2250000059905322e+01 0 0 0 +22363 1 8.5523442785792994e+01 3.6329081312146009e+01 1.4000000030621157e+01 0 0 0 +21729 1 8.7168421931468714e+01 3.5721029665881801e+01 1.2250000067205406e+01 0 0 0 +21750 1 8.9214901455340893e+01 3.6803291546005838e+01 1.2250000098736633e+01 0 0 0 +22180 1 4.5136003956102520e+01 3.8737901389308867e+01 1.4000000024563732e+01 0 0 0 +21544 1 4.6819519982471817e+01 3.8176425082165295e+01 1.2250000016019779e+01 0 0 0 +21594 1 4.5697175875951459e+01 4.0395404716636214e+01 1.2249999997330219e+01 0 0 0 +22235 1 4.7380691933904345e+01 3.9833928477443010e+01 1.4000000012092316e+01 0 0 0 +21597 1 4.9064207852911650e+01 3.9272452098619041e+01 1.2250000014812906e+01 0 0 0 +21602 1 5.1308895745579328e+01 4.0368479080112529e+01 1.2250000003488163e+01 0 0 0 +22236 1 4.9625379855872637e+01 4.0929955333874446e+01 1.4000000000494937e+01 0 0 0 +22239 1 5.0747723693716701e+01 3.8710975725536080e+01 1.3999999987442651e+01 0 0 0 +21601 1 5.2431239485369844e+01 3.8149499331988935e+01 1.2249999999519297e+01 0 0 0 +21606 1 5.4675927286153446e+01 3.9245526174676691e+01 1.2249999958835824e+01 0 0 0 +22240 1 5.2992411546746588e+01 3.9807002585652398e+01 1.4000000002442009e+01 0 0 0 +21655 1 5.6920615269964742e+01 4.0341552858392838e+01 1.2250000000737181e+01 0 0 0 +22244 1 5.6359443228191246e+01 3.8684049721454969e+01 1.3999999994862199e+01 0 0 0 +22293 1 5.5237099548305480e+01 4.0903029549034954e+01 1.3999999999812692e+01 0 0 0 +21610 1 5.8042959052906518e+01 3.8122573121926784e+01 1.2250000019059518e+01 0 0 0 +21659 1 6.0287647175539142e+01 3.9218599500171848e+01 1.2249999984842113e+01 0 0 0 +22297 1 5.8604131274501363e+01 3.9780076306992726e+01 1.4000000013645847e+01 0 0 0 +21662 1 6.4215851235797771e+01 3.9753148939034389e+01 1.0499999994155319e+01 0 0 0 +21663 1 6.3654679001505130e+01 3.8095645751526604e+01 1.2249999983530616e+01 0 0 0 +21664 1 6.2532335338728259e+01 4.0314625771849059e+01 1.2249999971880676e+01 0 0 0 +22302 1 6.4215851302717624e+01 3.9753148974315856e+01 1.3999999978500711e+01 0 0 0 +21702 1 6.6460539477350281e+01 4.0849175346156343e+01 1.0500000010416237e+01 0 0 0 +21668 1 6.5899367000155195e+01 3.9191672018147329e+01 1.2250000036501623e+01 0 0 0 +21666 1 6.7582883012257341e+01 3.8630195029739880e+01 1.0500000016728979e+01 0 0 0 +22342 1 6.6460539462847251e+01 4.0849175305408743e+01 1.3999999997579836e+01 0 0 0 +22306 1 6.7582883001434368e+01 3.8630194982791551e+01 1.4000000017270205e+01 0 0 0 +21672 1 6.9266400333505729e+01 3.8068718695912274e+01 1.2250000010323724e+01 0 0 0 +21704 1 6.8144054557921834e+01 4.0287698266536879e+01 1.2250000012053521e+01 0 0 0 +21707 1 7.2072253379363275e+01 4.0822244406718362e+01 1.0499999969903763e+01 0 0 0 +21710 1 7.3194615277248815e+01 3.8603275522510877e+01 1.0499999952434827e+01 0 0 0 +21708 1 7.1511091225598079e+01 3.9164745418153352e+01 1.2250000027731794e+01 0 0 0 +21713 1 7.3755787341077877e+01 4.0260770578656150e+01 1.2250000003349379e+01 0 0 0 +22347 1 7.2072253443154096e+01 4.0822244386473585e+01 1.4000000041814953e+01 0 0 0 +22350 1 7.3194615321907776e+01 3.8603275530585023e+01 1.4000000002136158e+01 0 0 0 +21712 1 7.4878098578113750e+01 3.8041795299546088e+01 1.2249999982485438e+01 0 0 0 +21717 1 7.7122769255867524e+01 3.9137853373034872e+01 1.2249999949990274e+01 0 0 0 +21737 1 7.7684223839032512e+01 4.0795423384348815e+01 1.0499999972847194e+01 0 0 0 +21715 1 7.8805833978777059e+01 3.8576157382527647e+01 1.0499999993690325e+01 0 0 0 +21739 1 7.9367520925677098e+01 4.0234053267843912e+01 1.2249999999513118e+01 0 0 0 +21721 1 8.0489602352709468e+01 3.8014383842220369e+01 1.2250000045783976e+01 0 0 0 +22355 1 7.8805833986566867e+01 3.8576157380993891e+01 1.3999999974774529e+01 0 0 0 +22377 1 7.7684223862368484e+01 4.0795423419995522e+01 1.3999999960503272e+01 0 0 0 +21742 1 8.3289035721898671e+01 4.0767268154567297e+01 1.0500000019795600e+01 0 0 0 +21743 1 8.2732307062703910e+01 3.9108541959225455e+01 1.2250000051810552e+01 0 0 0 +22382 1 8.3289035702480831e+01 4.0767268127413566e+01 1.3999999986487616e+01 0 0 0 +21745 1 8.4431590145279003e+01 3.8551248369159417e+01 1.0500000043359098e+01 0 0 0 +21747 1 8.6132425698637405e+01 3.8005236097775921e+01 1.2250000019265883e+01 0 0 0 +21748 1 8.4964193020403613e+01 4.0198454228439644e+01 1.2250000015312196e+01 0 0 0 +22385 1 8.4431590094642331e+01 3.8551248364671196e+01 1.4000000017776484e+01 0 0 0 +19813 1 7.4316919885444435e+01 4.1918259869929997e+01 3.0766685199523636e-08 0 0 0 +21759 1 8.9045575775950923e+01 4.0702632355500768e+01 1.0500000002977776e+01 0 0 0 +21751 1 8.8549509794682095e+01 3.9103219225602288e+01 1.2250000036618980e+01 0 0 0 +22399 1 8.9045575750274224e+01 4.0702632436147070e+01 1.3999999987301926e+01 0 0 0 +2615 1 9.0272007528377173e+01 3.8318913153407443e+01 1.4000000006851756e+01 -1 0 0 +21598 1 4.7941863858722307e+01 4.1491431744501035e+01 1.2250000010307591e+01 0 0 0 +21646 1 4.6819519817682774e+01 4.3710411337894982e+01 1.2250000017525412e+01 0 0 0 +22233 1 4.6258347872957131e+01 4.2052907982207167e+01 1.4000000011493523e+01 0 0 0 +21648 1 5.0186551805112217e+01 4.2587458680933757e+01 1.2250000019831541e+01 0 0 0 +22287 1 4.8503035871381471e+01 4.3148935066526889e+01 1.4000000014570707e+01 0 0 0 +24964 1 5.0747723709863799e+01 4.4244961925076041e+01 1.4000000026905239e+01 0 0 0 +21651 1 5.3553583660923543e+01 4.1464505879271684e+01 1.2249999974705608e+01 0 0 0 +21652 1 5.2431239625720558e+01 4.3683485557316374e+01 1.2249999996574925e+01 0 0 0 +22289 1 5.1870067729172575e+01 4.2025982312923659e+01 1.4000000021351358e+01 0 0 0 +22290 1 5.4114755631082218e+01 4.3122009192280743e+01 1.3999999998351923e+01 0 0 0 +21656 1 5.5798271522015533e+01 4.2560532650777894e+01 1.2249999990184847e+01 0 0 0 +22294 1 5.7481787381801112e+01 4.1999056072715739e+01 1.4000000000921487e+01 0 0 0 +24979 1 5.6359443529319890e+01 4.4218035861009987e+01 1.4000000017993740e+01 0 0 0 +21660 1 5.9165303358506982e+01 4.1437579431049194e+01 1.2249999960646338e+01 0 0 0 +21695 1 5.8042959503210966e+01 4.3656559278876969e+01 1.2249999958076167e+01 0 0 0 +22338 1 6.3093507372258422e+01 4.1972128942063250e+01 1.3999999988179253e+01 0 0 0 +21697 1 6.1409991381632004e+01 4.2533605696889914e+01 1.2249999965901932e+01 0 0 0 +21698 1 6.3093507328997006e+01 4.1972128953068982e+01 1.0499999962659068e+01 0 0 0 +21701 1 6.3654679511422842e+01 4.3629631974395650e+01 1.2249999964545454e+01 0 0 0 +24342 1 6.1971163535063823e+01 4.4191108824031254e+01 1.0499999945319255e+01 0 0 0 +24982 1 6.1971163578699233e+01 4.4191108840871117e+01 1.3999999982854289e+01 0 0 0 +21700 1 6.4777023451153298e+01 4.1410652093347558e+01 1.2250000009557622e+01 0 0 0 +21705 1 6.7021711811547831e+01 4.2506678602789776e+01 1.2249999997840931e+01 0 0 0 +21709 1 7.0388740876038966e+01 4.1383724468300656e+01 1.2250000021957273e+01 0 0 0 +21730 1 6.9266400732608048e+01 4.3602705221764204e+01 1.2250000040751267e+01 0 0 0 +21731 1 7.0949917720911444e+01 4.3041230048457031e+01 1.0499999989965675e+01 0 0 0 +21732 1 7.2633423562850524e+01 4.2479751046575579e+01 1.2250000001423203e+01 0 0 0 +22371 1 7.0949917714884862e+01 4.3041230037150896e+01 1.4000000045130321e+01 0 0 0 +21734 1 7.6561515514697746e+01 4.3014247072814882e+01 1.0499999963942704e+01 0 0 0 +21735 1 7.6000492165248843e+01 4.1356784567023155e+01 1.2249999972012871e+01 0 0 0 +21736 1 7.4878098927147803e+01 4.3575781848157298e+01 1.2249999994737717e+01 0 0 0 +22374 1 7.6561515587112936e+01 4.3014247057973556e+01 1.3999999972666421e+01 0 0 0 +21740 1 7.8245179968253012e+01 4.2452734209943436e+01 1.2250000006723848e+01 0 0 0 +21752 1 8.0489602579785767e+01 4.3548370366116444e+01 1.2249999995123224e+01 0 0 0 +22393 1 8.2176992806229478e+01 4.2988403095717196e+01 1.3999999976797904e+01 0 0 0 +21744 1 8.1612969609935988e+01 4.1330911064688841e+01 1.2250000004668768e+01 0 0 0 +21753 1 8.2176992819534718e+01 4.2988403121240999e+01 1.0500000006689591e+01 0 0 0 +21754 1 8.3862483778015914e+01 4.2430565186812998e+01 1.2249999998312882e+01 0 0 0 +21758 1 8.6132425797285876e+01 4.3539222490713591e+01 1.2250000028043520e+01 0 0 0 +22396 1 8.7753272955101124e+01 4.2980195412587861e+01 1.3999999987801717e+01 0 0 0 +21756 1 8.7753273033019894e+01 4.2980195357917886e+01 1.0499999959954566e+01 0 0 0 +21757 1 8.7168422011392707e+01 4.1255016031301274e+01 1.2250000014023000e+01 0 0 0 +21760 1 8.9214901277765080e+01 4.2337277849329830e+01 1.2249999948897596e+01 0 0 0 +21762 1 4.7380691422676833e+01 1.0960267665433594e+00 1.4000000010804598e+01 0 0 0 +21763 1 4.5697175507996839e+01 1.6575030398898098e+00 1.5750000030260937e+01 0 0 0 +21769 1 4.7941863554690237e+01 2.7535298788258955e+00 1.5750000002791831e+01 0 0 0 +21771 1 4.9625379516561587e+01 2.1920534717829083e+00 1.3999999980930747e+01 0 0 0 +21765 1 4.9064207419743177e+01 5.3455041544665605e-01 1.5750000002870470e+01 0 0 0 +21773 1 5.1308895571304781e+01 1.6305772401927450e+00 1.5749999948820305e+01 0 0 0 +19215 1 5.2992411538916080e+01 1.0691008372355697e+00 1.7499999977078176e+01 0 0 -1 +21775 1 5.2992411634867942e+01 1.0691008481128923e+00 1.3999999968906454e+01 0 0 0 +21777 1 5.4675927565798695e+01 5.0762459648518421e-01 1.5749999980877122e+01 0 0 0 +21778 1 5.3553583679753245e+01 2.7266039809604190e+00 1.5749999944066538e+01 0 0 0 +21781 1 5.6920615682613814e+01 1.6036514616197066e+00 1.5750000073117896e+01 0 0 0 +19220 1 5.8604131791606100e+01 1.0421752787800627e+00 8.2877726015340158e-08 0 0 0 +21780 1 5.8604131945695556e+01 1.0421753194723569e+00 1.4000000072300818e+01 0 0 0 +21783 1 6.0287647898508546e+01 4.8069894812193764e-01 1.5750000116949192e+01 0 0 0 +21800 1 5.9165303745807321e+01 2.6996783690520223e+00 1.5750000100521426e+01 0 0 0 +19246 1 6.4215851999019307e+01 1.0152492459309752e+00 1.7499999995717502e+01 0 0 -1 +21804 1 6.2532335928828878e+01 1.5767256564205685e+00 1.5750000075768055e+01 0 0 0 +21806 1 6.4215851969135983e+01 1.0152492639440283e+00 1.4000000037626094e+01 0 0 0 +19247 1 6.6460540171601764e+01 2.1112757965971629e+00 1.7499999935261993e+01 0 0 -1 +21807 1 6.6460540186506066e+01 2.1112757660561194e+00 1.4000000006245505e+01 0 0 0 +21808 1 6.5899367896396399e+01 4.5377268956902361e-01 1.5749999969397468e+01 0 0 0 +21809 1 6.4777023964094866e+01 2.6727523045111350e+00 1.5750000026273803e+01 0 0 0 +21812 1 6.8144055515464856e+01 1.5497988807430543e+00 1.5749999938192131e+01 0 0 0 +21845 1 7.0388742042721049e+01 2.6458247511114137e+00 1.5749999952734145e+01 0 0 0 +19287 1 7.2072254839268297e+01 2.0843446853243388e+00 1.7499999990356159e+01 0 0 -1 +21847 1 7.2072254943037422e+01 2.0843446254470348e+00 1.3999999978234543e+01 0 0 0 +21814 1 7.1511092758200888e+01 4.2684606728975283e-01 1.5749999992401568e+01 0 0 0 +21849 1 7.3755789136914856e+01 1.5228707898756120e+00 1.5749999989907307e+01 0 0 0 +21853 1 7.7122771475836018e+01 3.9995318914157907e-01 1.5749999978820917e+01 0 0 0 +21854 1 7.6000494200425337e+01 2.6188841934033991e+00 1.5749999963865214e+01 0 0 0 +19292 1 7.7684225964939515e+01 2.0575227639299007e+00 1.7499999990255311e+01 0 0 -1 +21852 1 7.7684226139765656e+01 2.0575227694784464e+00 1.3999999985179748e+01 0 0 0 +21857 1 7.9367523281973320e+01 1.4961522959743683e+00 1.5750000022519110e+01 0 0 0 +19345 1 8.3289037855434657e+01 2.0293661652510493e+00 1.4534199266336145e-07 0 0 0 +21905 1 8.3289037998003764e+01 2.0293662442320257e+00 1.4000000118498049e+01 0 0 0 +21859 1 8.2732309253307051e+01 3.7064033211708725e-01 1.5750000149555405e+01 0 0 0 +21903 1 8.1612971982297310e+01 2.5930093583041280e+00 1.5750000078914121e+01 0 0 0 +21907 1 8.4964194940814309e+01 1.4605521543955602e+00 1.5750000145542808e+01 0 0 0 +19350 1 8.9045576406385194e+01 1.9647302094224643e+00 1.7499999869703974e+01 0 0 -1 +21910 1 8.9045576334142339e+01 1.9647303905868361e+00 1.4000000067961311e+01 0 0 0 +21911 1 8.8549511066865747e+01 3.6531729854663375e-01 1.5749999938725978e+01 0 0 0 +21912 1 8.7168423312057044e+01 2.5171138184341988e+00 1.5750000101908515e+01 0 0 0 +21767 1 4.6258347643829708e+01 3.3150061676443054e+00 1.3999999996395120e+01 0 0 0 +21770 1 4.6819519687063298e+01 4.9725093561837159e+00 1.5750000004465209e+01 0 0 0 +19230 1 5.0747723523085412e+01 5.5070597183985894e+00 1.7499999975952477e+01 0 0 -1 +21768 1 4.8503035637799350e+01 4.4110330184762576e+00 1.3999999964432428e+01 0 0 0 +21774 1 5.0186551586819014e+01 3.8495566003884067e+00 1.5749999935797465e+01 0 0 0 +21788 1 4.9064207606989029e+01 6.0685360914603068e+00 1.5749999965556682e+01 0 0 0 +21790 1 5.0747723518985310e+01 5.5070596706785979e+00 1.3999999954980696e+01 0 0 0 +19212 1 5.1870067558064072e+01 3.2880803037922259e+00 1.7499999957905050e+01 0 0 -1 +21772 1 5.1870067638060085e+01 3.2880802772969178e+00 1.3999999967991897e+01 0 0 0 +21792 1 5.2431239534721136e+01 4.9455833726377074e+00 1.5749999950974527e+01 0 0 0 +21797 1 5.4675927380001013e+01 6.0416101811048692e+00 1.5749999988315071e+01 0 0 0 +19235 1 5.6359443413855615e+01 5.4801340230389650e+00 3.9429547626923522e-08 0 0 0 +19238 1 5.7481787517552590e+01 3.2611545988032145e+00 7.8101429323851335e-08 0 0 0 +21795 1 5.6359443598672136e+01 5.4801339778484781e+00 1.4000000020227063e+01 0 0 0 +21796 1 5.5798271617296145e+01 3.8226308641902680e+00 1.5750000025626061e+01 0 0 0 +21798 1 5.7481787701987734e+01 3.2611546101283033e+00 1.4000000039473198e+01 0 0 0 +21801 1 5.8042959558977735e+01 4.9186578121010491e+00 1.5750000065263428e+01 0 0 0 +21833 1 6.0287647523890456e+01 6.0146845112908309e+00 1.5750000085456728e+01 0 0 0 +19243 1 6.3093507675059520e+01 3.2342287396416949e+00 3.6071416076310925e-08 0 0 0 +19275 1 6.1971163511980890e+01 5.4532081056114619e+00 7.4836933094957203e-08 0 0 0 +21803 1 6.3093507672780504e+01 3.2342288026887456e+00 1.4000000034257884e+01 0 0 0 +21805 1 6.1409991615099663e+01 3.7957050678411801e+00 1.5750000097366868e+01 0 0 0 +21835 1 6.1971163542935869e+01 5.4532081426568144e+00 1.4000000036526206e+01 0 0 0 +21837 1 6.3654679604211033e+01 4.8917316674257263e+00 1.5750000039969640e+01 0 0 0 +21841 1 6.7021712363082855e+01 3.7687787797437839e+00 1.5749999969859015e+01 0 0 0 +21842 1 6.5899367537663039e+01 5.9877581246261737e+00 1.5749999979013692e+01 0 0 0 +21846 1 6.9266401471242261e+01 4.8648051077353038e+00 1.5749999968596700e+01 0 0 0 +19284 1 7.0949918734811433e+01 4.3033299372913225e+00 1.7499999983574035e+01 0 0 -1 +21844 1 7.0949918867053341e+01 4.3033298906413595e+00 1.3999999985274371e+01 0 0 0 +21850 1 7.2633425034909237e+01 3.7418508935343344e+00 1.5749999978206839e+01 0 0 0 +21891 1 7.1511092623395186e+01 5.9608314901281254e+00 1.5749999980358041e+01 0 0 0 +19337 1 7.6561517481674272e+01 4.2763462483352352e+00 1.7499999937037941e+01 0 0 -1 +21897 1 7.6561517633332002e+01 4.2763462408847923e+00 1.3999999971523819e+01 0 0 0 +21895 1 7.4878100699840346e+01 4.8378811960035604e+00 1.5749999975863632e+01 0 0 0 +21900 1 7.7122771581715554e+01 5.9339386645402925e+00 1.5749999957546576e+01 0 0 0 +21899 1 7.8245182196313579e+01 3.7148331202161393e+00 1.5749999957997044e+01 0 0 0 +21904 1 8.0489604922496184e+01 4.8104685118565769e+00 1.5750000023601727e+01 0 0 0 +19342 1 8.2176994998864302e+01 4.2505009797262092e+00 1.3216221361744829e-07 0 0 0 +21902 1 8.2176995226878745e+01 4.2505010218261194e+00 1.4000000074924442e+01 0 0 0 +21957 1 8.2732309459305796e+01 5.9046260712769980e+00 1.5750000137603200e+01 0 0 0 +21908 1 8.3862485941618090e+01 3.6926629570435625e+00 1.5750000151356556e+01 0 0 0 +21961 1 8.6132427563755300e+01 4.8013201794579095e+00 1.5750000186537148e+01 0 0 0 +19403 1 8.7753274337613561e+01 4.2422930969352910e+00 4.6055639302267082e-08 0 0 0 +21963 1 8.7753274336903672e+01 4.2422932791707000e+00 1.4000000160647838e+01 0 0 0 +21964 1 8.9214901767267406e+01 3.5993757551563172e+00 1.5750000002064713e+01 0 0 0 +21965 1 8.8549511154025083e+01 5.8993034679785206e+00 1.5750000142011006e+01 0 0 0 +21784 1 4.6258347864529071e+01 8.8489918904115346e+00 1.4000000009457784e+01 0 0 0 +21786 1 4.7380691708828422e+01 6.6300125184199556e+00 1.4000000001144810e+01 0 0 0 +21785 1 4.5697175814586522e+01 7.1914888483009110e+00 1.5749999999093367e+01 0 0 0 +21789 1 4.7941863719111261e+01 8.2875155227580564e+00 1.5749999987106147e+01 0 0 0 +21787 1 4.9625379618045606e+01 7.7260390803189027e+00 1.3999999979620972e+01 0 0 0 +19227 1 4.9625379619217270e+01 7.7260390739174403e+00 1.7499999966496308e+01 0 0 -1 +21793 1 5.1308895581221783e+01 7.1645628255757101e+00 1.5749999949313279e+01 0 0 0 +21821 1 5.0186551607556396e+01 9.3835421638967471e+00 1.5749999953208921e+01 0 0 0 +21825 1 5.3553583493808183e+01 8.2605895294100140e+00 1.5749999967813570e+01 0 0 0 +19267 1 5.5237099355148793e+01 7.6991133977131154e+00 3.8160976600920549e-09 0 0 0 +21827 1 5.5237099523825741e+01 7.6991133533392446e+00 1.3999999987674633e+01 0 0 0 +21829 1 5.6920615366695827e+01 7.1376369848759289e+00 1.5750000037954154e+01 0 0 0 +21830 1 5.5798271262426510e+01 9.3566164144396797e+00 1.5749999996147196e+01 0 0 0 +19272 1 6.0848819225493642e+01 7.6721875571740714e+00 6.0588536854311315e-08 0 0 0 +21832 1 6.0848819297196364e+01 7.6721875593930209e+00 1.4000000019462394e+01 0 0 0 +21834 1 5.9165303302775563e+01 8.2336639117405905e+00 1.5750000067037670e+01 0 0 0 +21838 1 6.2532335460579979e+01 7.1107111704756916e+00 1.5750000049162908e+01 0 0 0 +21879 1 6.1409991128372191e+01 9.3296905059023150e+00 1.5750000057451867e+01 0 0 0 +21883 1 6.4777023467560625e+01 8.2067376461833721e+00 1.5749999974690224e+01 0 0 0 +21888 1 6.7021711869520743e+01 9.3027640416413462e+00 1.5749999951004996e+01 0 0 0 +19326 1 6.8705228136949799e+01 8.7412876063806255e+00 1.7499999954793974e+01 0 0 -1 +19329 1 6.9827571036487527e+01 6.5223067808065895e+00 1.7499999967477233e+01 0 0 -1 +21886 1 6.8705228223990673e+01 8.7412876139009246e+00 1.3999999990378193e+01 0 0 0 +21889 1 6.9827571155701364e+01 6.5223067205483085e+00 1.3999999993238713e+01 0 0 0 +21887 1 6.8144055151486199e+01 7.0837842187867253e+00 1.5749999969713846e+01 0 0 0 +21892 1 7.0388741705099449e+01 8.1798100640785965e+00 1.5750000005995526e+01 0 0 0 +21896 1 7.3755789011576596e+01 7.0568561811663431e+00 1.5749999964930863e+01 0 0 0 +21945 1 7.2633424690528528e+01 9.2758362401609453e+00 1.5750000009270424e+01 0 0 0 +19334 1 7.5439350318150105e+01 6.4954087035235126e+00 1.7499999946507916e+01 0 0 -1 +19387 1 7.4316921247047958e+01 8.7143450827794933e+00 1.7499999965783580e+01 0 0 -1 +21894 1 7.5439350429167916e+01 6.4954087042132382e+00 1.3999999985080596e+01 0 0 0 +21947 1 7.4316921374184943e+01 8.7143450649064853e+00 1.4000000008670838e+01 0 0 0 +21949 1 7.6000494104640325e+01 8.1528696736987527e+00 1.5749999927395972e+01 0 0 0 +19392 1 7.9929645038651046e+01 8.6877684451680235e+00 2.8283473341161880e-09 0 0 0 +21952 1 7.9929645297117929e+01 8.6877684299364031e+00 1.4000000007984328e+01 0 0 0 +21953 1 7.9367523380020131e+01 7.0301379078838586e+00 1.5749999975634848e+01 0 0 0 +21954 1 7.8245182134754870e+01 9.2488186867029381e+00 1.5749999926415251e+01 0 0 0 +19395 1 8.1049144882247901e+01 6.4678959527210260e+00 7.9023433130487319e-08 0 0 0 +21955 1 8.1049145167722912e+01 6.4678959437472221e+00 1.4000000023612273e+01 0 0 0 +21958 1 8.1612972019940756e+01 8.1269950803724615e+00 1.5750000069806097e+01 0 0 0 +19400 1 8.6710922037665796e+01 6.4452482667942927e+00 1.6018816140217496e-07 0 0 0 +19454 1 8.5523444684371100e+01 8.6591513804181215e+00 2.5643905843253378e-07 0 0 0 +21960 1 8.6710922104685906e+01 6.4452484628948330e+00 1.4000000143910810e+01 0 0 0 +21962 1 8.4964195056634338e+01 6.9945380839466340e+00 1.5750000242630556e+01 0 0 0 +22012 1 8.3862485939908524e+01 9.2266488911621831e+00 1.5750000200787747e+01 0 0 0 +22014 1 8.5523444895757564e+01 8.6591514276133950e+00 1.4000000130626606e+01 0 0 0 +22016 1 8.7168423279956002e+01 8.0510998511742855e+00 1.5750000229786925e+01 0 0 0 +22019 1 8.9214901816487497e+01 9.1333617163473910e+00 1.5750000210142089e+01 0 0 0 +19256 1 4.7380691853899478e+01 1.2163998211008860e+01 1.2375153346511070e-08 0 0 0 +21817 1 4.6819519882445384e+01 1.0506495043273960e+01 1.5750000024210127e+01 0 0 0 +19259 1 4.8503035738294074e+01 9.9450186579101292e+00 1.7499999995594809e+01 0 0 -1 +21819 1 4.8503035752110975e+01 9.9450186407023775e+00 1.4000000005655453e+01 0 0 0 +21822 1 4.9064207672821503e+01 1.1602521700891765e+01 1.5749999990207421e+01 0 0 0 +19264 1 5.4114755218574039e+01 9.9180926892883967e+00 1.7499999967855409e+01 0 0 -1 +19309 1 5.2992411227071898e+01 1.2137071985986218e+01 1.7499999971822188e+01 0 0 -1 +21824 1 5.4114755323047966e+01 9.9180926429741714e+00 1.3999999994224041e+01 0 0 0 +21869 1 5.2992411297028639e+01 1.2137071933527608e+01 1.3999999965604935e+01 0 0 0 +21826 1 5.2431239331291934e+01 1.0479568882146165e+01 1.5749999942159274e+01 0 0 0 +21871 1 5.4675927049775652e+01 1.1575595675581454e+01 1.5749999970346694e+01 0 0 0 +19314 1 5.8604130905698433e+01 1.2110146284084156e+01 1.0930126137509433e-08 0 0 0 +19317 1 5.9726475039845567e+01 9.8911669003349481e+00 5.4244765124167316e-08 0 0 0 +21874 1 5.8604131011243460e+01 1.2110146286609947e+01 1.4000000026529344e+01 0 0 0 +21875 1 5.8042959063542376e+01 1.0452643227996946e+01 1.5750000037721382e+01 0 0 0 +21877 1 5.9726475118232614e+01 9.8911669035148222e+00 1.4000000011530387e+01 0 0 0 +21880 1 6.0287646946828936e+01 1.1548669915867830e+01 1.5750000053282395e+01 0 0 0 +19375 1 6.4215850962991695e+01 1.2083219983965394e+01 1.7499999986718279e+01 0 0 -1 +21884 1 6.3654679052787287e+01 1.0425717037678785e+01 1.5750000002051886e+01 0 0 0 +21935 1 6.4215851002474864e+01 1.2083220019155407e+01 1.3999999996109027e+01 0 0 0 +19379 1 6.7582883258644287e+01 1.0960266520499300e+01 1.7499999976587528e+01 0 0 -1 +21939 1 6.7582883376176966e+01 1.0960266533788520e+01 1.3999999955884027e+01 0 0 0 +19322 1 6.5338195329831365e+01 9.8642405290499386e+00 1.7499999980711102e+01 0 0 -1 +21882 1 6.5338195382421986e+01 9.8642405279663681e+00 1.3999999972309947e+01 0 0 0 +21937 1 6.5899366982223412e+01 1.1521743361147296e+01 1.5749999970913054e+01 0 0 0 +21941 1 6.9266401024532271e+01 1.0398790336903817e+01 1.5749999980306500e+01 0 0 0 +19384 1 7.3194616596203147e+01 1.0933346861699111e+01 1.7499999971427673e+01 0 0 -1 +21944 1 7.3194616707725359e+01 1.0933346874532413e+01 1.4000000019819154e+01 0 0 0 +21946 1 7.1511092136257304e+01 1.1494816723072741e+01 1.5750000009851838e+01 0 0 0 +21950 1 7.4878100388204956e+01 1.0371866596452412e+01 1.5749999973802526e+01 0 0 0 +22004 1 7.7122771276482439e+01 1.1467924194211582e+01 1.5749999909478623e+01 0 0 0 +19446 1 7.8805836131060701e+01 1.0906228008657351e+01 1.7499999945163299e+01 0 0 -1 +22006 1 7.8805836352210889e+01 1.0906227980129028e+01 1.3999999959118567e+01 0 0 0 +22008 1 8.0489604811295180e+01 1.0344454222096850e+01 1.5750000004284013e+01 0 0 0 +22013 1 8.2732309286476067e+01 1.1438611904990371e+01 1.5750000139804659e+01 0 0 0 +19451 1 8.4431592031445746e+01 1.0881318293793392e+01 2.4589896696625146e-07 0 0 0 +22011 1 8.4431592298335062e+01 1.0881318268389471e+01 1.4000000108266528e+01 0 0 0 +22017 1 8.6132427523685877e+01 1.0335306195774420e+01 1.5750000188344735e+01 0 0 0 +2569 1 9.0272007528377145e+01 1.0648983138536172e+01 1.4000000060205894e+01 -1 0 0 +9 1 9.0272007528377017e+01 1.0648983222952605e+01 1.8204857354930937e-07 -1 0 0 +22071 1 8.8549511136227736e+01 1.1433289410203720e+01 1.5750000235649589e+01 0 0 0 +19301 1 4.6258348041301026e+01 1.4382977641963956e+01 2.0701818925772386e-08 0 0 0 +21818 1 4.5697176017676057e+01 1.2725474605075883e+01 1.5750000005635400e+01 0 0 0 +21863 1 4.7941863864665017e+01 1.3821501204978617e+01 1.5749999987236826e+01 0 0 0 +19302 1 4.8503035836541784e+01 1.5479004363208883e+01 5.8908078415242926e-09 0 0 0 +21867 1 5.1308895478672866e+01 1.2698548407917475e+01 1.5749999970198312e+01 0 0 0 +21868 1 5.0186551596550757e+01 1.4917527841961036e+01 1.5749999961193881e+01 0 0 0 +19306 1 5.1870067339145720e+01 1.4356051503621851e+01 1.7499999962201883e+01 0 0 -1 +21866 1 5.1870067410493114e+01 1.4356051434492990e+01 1.3999999981676440e+01 0 0 0 +21872 1 5.3553583224435215e+01 1.3794575110892680e+01 1.5749999946805078e+01 0 0 0 +19367 1 5.7481786641426609e+01 1.4329125611134621e+01 1.7499999993153661e+01 0 0 -1 +21927 1 5.7481786753198413e+01 1.4329125590357387e+01 1.4000000026071953e+01 0 0 0 +21876 1 5.6920614879768095e+01 1.2671622486397004e+01 1.5750000018693434e+01 0 0 0 +21925 1 5.5798270868311917e+01 1.4890601941214918e+01 1.5749999984687278e+01 0 0 0 +21929 1 5.9165302731811686e+01 1.3767649309075585e+01 1.5750000040248633e+01 0 0 0 +19372 1 6.3093506552006623e+01 1.4302199460004134e+01 1.3101239204615922e-08 0 0 0 +21932 1 6.3093506575925680e+01 1.4302199505439003e+01 1.4000000001849617e+01 0 0 0 +21933 1 6.2532334895702846e+01 1.2644696475340746e+01 1.5750000018437804e+01 0 0 0 +21934 1 6.1409990510108820e+01 1.4863675881672552e+01 1.5750000039678069e+01 0 0 0 +19376 1 6.6460539139383215e+01 1.3179246353020680e+01 1.7499999958475701e+01 0 0 -1 +21936 1 6.6460539215429733e+01 1.3179246340014810e+01 1.3999999998318170e+01 0 0 0 +21938 1 6.4777022883414205e+01 1.3740722913050879e+01 1.5750000005538329e+01 0 0 0 +21992 1 6.7021711283923878e+01 1.4836749243086031e+01 1.5749999992161950e+01 0 0 0 +21942 1 6.8144054602926090e+01 1.2617769422581471e+01 1.5749999971673480e+01 0 0 0 +21996 1 7.0388741143075137e+01 1.3713795289237874e+01 1.5749999989050774e+01 0 0 0 +19435 1 7.0949917728394581e+01 1.5371300444856296e+01 1.5384376439442349e-08 0 0 0 +19438 1 7.2072254091453161e+01 1.3152315293463891e+01 2.9040556626114267e-09 0 0 0 +21995 1 7.0949917844949383e+01 1.5371300422774416e+01 1.4000000024022215e+01 0 0 0 +21998 1 7.2072254155266052e+01 1.3152315293905129e+01 1.4000000016093081e+01 0 0 0 +22000 1 7.3755788528334463e+01 1.2590841558952933e+01 1.5749999987810195e+01 0 0 0 +22001 1 7.2633424115933835e+01 1.4809821535781776e+01 1.5750000001299462e+01 0 0 0 +19497 1 7.6561516696972618e+01 1.5344317204049938e+01 1.7499999886647270e+01 0 0 -1 +22057 1 7.6561516778111155e+01 1.5344317248206549e+01 1.3999999955655444e+01 0 0 0 +22005 1 7.6000493603590030e+01 1.3686855127441053e+01 1.5749999924865529e+01 0 0 0 +19443 1 7.7684225541985313e+01 1.3125493819592101e+01 1.7499999917872326e+01 0 0 -1 +22003 1 7.7684225700990638e+01 1.3125493830540121e+01 1.3999999951958053e+01 0 0 0 +22009 1 7.9367523049525133e+01 1.2564123519470250e+01 1.5749999928545018e+01 0 0 0 +22059 1 7.8245181565909419e+01 1.4782804266445902e+01 1.5749999886375877e+01 0 0 0 +19502 1 8.2176994404265912e+01 1.5318472637635507e+01 9.4733753286391220e-08 0 0 0 +19505 1 8.3289037557255156e+01 1.3097337919954475e+01 1.8094921827582766e-07 0 0 0 +22062 1 8.2176994729069136e+01 1.5318472593841047e+01 1.4000000014630666e+01 0 0 0 +22065 1 8.3289037881859684e+01 1.3097337887735629e+01 1.4000000057973898e+01 0 0 0 +22063 1 8.1612971670835762e+01 1.3660980854537323e+01 1.5750000012697937e+01 0 0 0 +22067 1 8.4964194876293931e+01 1.2528524043132574e+01 1.5750000209301707e+01 0 0 0 +22068 1 8.3862485585186064e+01 1.4760634746432117e+01 1.5750000131342862e+01 0 0 0 +19510 1 8.9045576356289317e+01 1.3032702311507478e+01 3.0446117094129477e-07 0 0 0 +19563 1 8.7753274010185066e+01 1.5310265157506967e+01 3.1660448129855467e-07 0 0 0 +22070 1 8.9045576334486256e+01 1.3032702284843028e+01 1.4000000131999146e+01 0 0 0 +22072 1 8.7168423084106095e+01 1.3585085748093938e+01 1.5750000285191598e+01 0 0 0 +22123 1 8.7753274210819853e+01 1.5310265055241793e+01 1.4000000095664676e+01 0 0 0 +22124 1 8.9214901827530809e+01 1.4667347596152970e+01 1.5750000276286986e+01 0 0 0 +19355 1 4.7380691913412235e+01 1.7697983878093194e+01 1.7499999972480264e+01 0 0 -1 +21864 1 4.6819520014772749e+01 1.6040480725105876e+01 1.5749999980274412e+01 0 0 0 +21914 1 4.5697176065822163e+01 1.8259460287408121e+01 1.5749999986179112e+01 0 0 0 +19356 1 4.9625379589549027e+01 1.8794010434195254e+01 1.7499999971396065e+01 0 0 -1 +19359 1 5.0747723404511376e+01 1.6575030981744963e+01 1.7499999983757998e+01 0 0 -1 +21917 1 4.9064207683492086e+01 1.7136507378241941e+01 1.5749999962804113e+01 0 0 0 +21922 1 5.1308895362017687e+01 1.8232534148908584e+01 1.5749999948723648e+01 0 0 0 +21921 1 5.2431239189217223e+01 1.6013554580945232e+01 1.5749999951307922e+01 0 0 0 +21926 1 5.4675926735587709e+01 1.7109581390286930e+01 1.5749999971848300e+01 0 0 0 +19364 1 5.6359442621264179e+01 1.6548105111038019e+01 1.7499999984184523e+01 0 0 -1 +19418 1 5.5237098707164272e+01 1.8767084651878523e+01 1.7499999956468098e+01 0 0 -1 +21924 1 5.6359442734385240e+01 1.6548105060259957e+01 1.4000000018152580e+01 0 0 0 +21978 1 5.5237098812442504e+01 1.8767084604354107e+01 1.3999999997998898e+01 0 0 0 +21980 1 5.6920614490284400e+01 1.8205608149809265e+01 1.5750000005570909e+01 0 0 0 +19423 1 6.0848818151875392e+01 1.8740158482946555e+01 2.0019673030446938e-08 0 0 0 +21983 1 6.0848818189634422e+01 1.8740158464061086e+01 1.4000000025747926e+01 0 0 0 +21930 1 5.8042958567286163e+01 1.5986628795668322e+01 1.5750000018544036e+01 0 0 0 +21984 1 6.0287646439322046e+01 1.7082655419356609e+01 1.5750000040160977e+01 0 0 0 +19426 1 6.1971162373537545e+01 1.6521178899446543e+01 2.4415477639649907e-08 0 0 0 +21986 1 6.1971162402998310e+01 1.6521178910497852e+01 1.4000000033949059e+01 0 0 0 +21988 1 6.3654678447768944e+01 1.5959702320310869e+01 1.5750000017596614e+01 0 0 0 +21989 1 6.2532334332592278e+01 1.8178681905010897e+01 1.5750000034183184e+01 0 0 0 +21993 1 6.5899366378000948e+01 1.7055728604515373e+01 1.5749999988097739e+01 0 0 0 +19489 1 6.9827569896540254e+01 1.7590277211787576e+01 1.6800388635829222e-08 0 0 0 +22049 1 6.9827569999067634e+01 1.7590277180380195e+01 1.4000000013199159e+01 0 0 0 +21997 1 6.9266400398636094e+01 1.5932775541562529e+01 1.5750000015846041e+01 0 0 0 +22047 1 6.8144054002413824e+01 1.8151754630636852e+01 1.5750000003251159e+01 0 0 0 +22051 1 7.1511091488791024e+01 1.7028802021069833e+01 1.5750000018564691e+01 0 0 0 +22056 1 7.3755787805526026e+01 1.8124826914277367e+01 1.5749999990326138e+01 0 0 0 +19494 1 7.5439349230324595e+01 1.7563379558790352e+01 1.7499999940167573e+01 0 0 -1 +22054 1 7.5439349258522981e+01 1.7563379599357095e+01 1.3999999984651332e+01 0 0 0 +22055 1 7.4878099754066639e+01 1.5905852028266914e+01 1.5749999955211884e+01 0 0 0 +22060 1 7.7122770555774622e+01 1.7001909707328167e+01 1.5749999910027659e+01 0 0 0 +22113 1 7.9367522304620579e+01 1.8098109210061054e+01 1.5749999907756921e+01 0 0 0 +22064 1 8.0489604222985378e+01 1.5878439928254563e+01 1.5749999936598623e+01 0 0 0 +19555 1 8.1049143965084440e+01 1.7535867499685228e+01 1.7499999990250327e+01 0 0 -1 +22115 1 8.1049144239510781e+01 1.7535867427554869e+01 1.3999999975257456e+01 0 0 0 +22117 1 8.2732308743706540e+01 1.6972597765750891e+01 1.5750000053714388e+01 0 0 0 +22120 1 8.6710921716036580e+01 1.7513220231608965e+01 1.4000000100753297e+01 0 0 0 +19560 1 8.6710921507669923e+01 1.7513220293021963e+01 2.8003076835148022e-07 0 0 0 +22121 1 8.6132427215133234e+01 1.5869292075561857e+01 1.5750000262973703e+01 0 0 0 +22122 1 8.4964194357605365e+01 1.8062509920725368e+01 1.5750000186952313e+01 0 0 0 +22125 1 8.8549510934514501e+01 1.6967275267582966e+01 1.5750000270697170e+01 0 0 0 +19353 1 4.6258348036070075e+01 1.9916963328209739e+01 1.7499999967458614e+01 0 0 -1 +21918 1 4.7941863823231010e+01 1.9355486881196072e+01 1.5749999960330952e+01 0 0 0 +21968 1 4.6819519960448488e+01 2.1574466483234442e+01 1.5749999961459732e+01 0 0 0 +19410 1 4.8503035754018747e+01 2.1012990073333942e+01 1.7499999972639291e+01 0 0 -1 +21972 1 5.0186551476438517e+01 2.0451513593454536e+01 1.5749999944503047e+01 0 0 0 +19411 1 5.0747723256253380e+01 2.2109016811446701e+01 1.7499999950605400e+01 0 0 -1 +19415 1 5.4114754701824282e+01 2.0986064130391018e+01 1.7499999964356167e+01 0 0 -1 +19414 1 5.1870067189300329e+01 1.9890037245029841e+01 1.7499999944890678e+01 0 0 -1 +21976 1 5.3553582998053741e+01 1.9328560868979615e+01 1.5749999955399975e+01 0 0 0 +21977 1 5.2431238962154026e+01 2.1547540410019671e+01 1.5749999925203158e+01 0 0 0 +21981 1 5.5798270560005726e+01 2.0424587762601121e+01 1.5749999970779035e+01 0 0 0 +19477 1 5.9726474113760055e+01 2.0959138074408120e+01 1.1539906807911393e-08 0 0 0 +22037 1 5.9726474158884528e+01 2.0959138060996978e+01 1.4000000027144308e+01 0 0 0 +21985 1 5.9165302311131555e+01 1.9301635006117678e+01 1.5750000043775808e+01 0 0 0 +22035 1 5.8042958244568695e+01 2.1520614560956535e+01 1.5750000007416149e+01 0 0 0 +22039 1 6.1409990084158174e+01 2.0397661482261867e+01 1.5750000038016799e+01 0 0 0 +22044 1 6.3654678039038856e+01 2.1493687824535861e+01 1.5750000000504611e+01 0 0 0 +19482 1 6.5338194252449696e+01 2.0932211135222232e+01 5.7002651487891853e-09 0 0 0 +22042 1 6.5338194281042988e+01 2.0932211096749541e+01 1.3999999971975233e+01 0 0 0 +22043 1 6.4777022350155022e+01 1.9274708216932364e+01 1.5749999982054032e+01 0 0 0 +22048 1 6.7021710742683425e+01 2.0370734504079465e+01 1.5749999983145514e+01 0 0 0 +19539 1 6.7582882194130633e+01 2.2028237053533438e+01 2.0789158838852018e-08 0 0 0 +22099 1 6.7582882294964477e+01 2.2028237037468561e+01 1.3999999971406737e+01 0 0 0 +19486 1 6.8705226971564727e+01 1.9809258032218203e+01 1.1317560222323664e-08 0 0 0 +22046 1 6.8705227045178390e+01 1.9809258055054375e+01 1.4000000012056820e+01 0 0 0 +22052 1 7.0388740495636000e+01 1.9247780541068682e+01 1.5750000039698703e+01 0 0 0 +22101 1 6.9266399857602366e+01 2.1466760831571126e+01 1.5750000006760510e+01 0 0 0 +22105 1 7.2633423399595316e+01 2.0343806893517041e+01 1.5750000040923064e+01 0 0 0 +19544 1 7.3194615299606454e+01 2.2001317587867568e+01 2.9580647264992876e-08 0 0 0 +22104 1 7.3194615323181623e+01 2.2001317631485200e+01 1.4000000021643817e+01 0 0 0 +19547 1 7.4316919977332489e+01 1.9782315833401285e+01 1.7499999994471398e+01 0 0 -1 +22107 1 7.4316920012164672e+01 1.9782315867678392e+01 1.4000000008442377e+01 0 0 0 +22109 1 7.6000492821350832e+01 1.9220840605099308e+01 1.5749999924947893e+01 0 0 0 +22110 1 7.4878098965471665e+01 2.1439837463904702e+01 1.5749999993238246e+01 0 0 0 +19552 1 7.9929643812498355e+01 1.9755739856069283e+01 1.7499999935422903e+01 0 0 -1 +22112 1 7.9929643988071589e+01 1.9755739832989111e+01 1.3999999991146122e+01 0 0 0 +22114 1 7.8245180754738314e+01 2.0316789888878063e+01 1.5749999908381143e+01 0 0 0 +22168 1 8.0489603378016824e+01 2.1412425713123966e+01 1.5749999955218028e+01 0 0 0 +19606 1 7.8805834713205172e+01 2.1974199292813967e+01 1.7499999943193725e+01 0 0 -1 +22166 1 7.8805834804812946e+01 2.1974199282594707e+01 1.3999999963152080e+01 0 0 0 +22118 1 8.1612970903671226e+01 1.9194966683188284e+01 1.5749999996056822e+01 0 0 0 +19614 1 8.5523443844891474e+01 1.9727123351888217e+01 2.0859293670127954e-07 0 0 0 +22172 1 8.3862484906416810e+01 2.0294620684721448e+01 1.5750000113839768e+01 0 0 0 +22174 1 8.5523444114998497e+01 1.9727123193374801e+01 1.4000000096906399e+01 0 0 0 +22177 1 8.6132426748559297e+01 2.1403277979017584e+01 1.5750000127526988e+01 0 0 0 +19611 1 8.4431590953333369e+01 2.1949290205827428e+01 1.1275290034973295e-07 0 0 0 +22171 1 8.4431591206530612e+01 2.1949290046447675e+01 1.4000000092525843e+01 0 0 0 +2587 1 9.0272007528377330e+01 2.1716954628808267e+01 1.4000000021430639e+01 -1 0 0 +22176 1 8.7168422894473977e+01 1.9119071731941887e+01 1.5750000235453891e+01 0 0 0 +22179 1 8.9214901470405593e+01 2.0201333398084742e+01 1.5750000268106218e+01 0 0 0 +27 1 9.0272007528377145e+01 2.1716955037933193e+01 2.2145351508129352e-07 -1 0 0 +19407 1 4.7380691858977436e+01 2.3231969733358003e+01 1.7499999961936325e+01 0 0 -1 +21969 1 4.5697176016424876e+01 2.3793446142921336e+01 1.5749999979188166e+01 0 0 0 +22023 1 4.7941863806055544e+01 2.4889472849786635e+01 1.5749999981871403e+01 0 0 0 +19465 1 4.9625379544246762e+01 2.4327996374831901e+01 1.7499999962757247e+01 0 0 -1 +21973 1 4.9064207601393797e+01 2.2670493231690813e+01 1.5749999966320555e+01 0 0 0 +22027 1 5.1308895239397572e+01 2.3766520078059109e+01 1.5749999957052689e+01 0 0 0 +19469 1 5.2992410872542806e+01 2.3205043601481080e+01 1.7499999967245852e+01 0 0 -1 +22031 1 5.4675926519844964e+01 2.2643567263500760e+01 1.5749999953902250e+01 0 0 0 +22032 1 5.3553582870687848e+01 2.4862546896892230e+01 1.5749999942866657e+01 0 0 0 +22036 1 5.6920614258238899e+01 2.3739594076871377e+01 1.5749999996702952e+01 0 0 0 +19474 1 5.8604130169860440e+01 2.3178117716960578e+01 1.7499999990049751e+01 0 0 -1 +22034 1 5.8604130247061775e+01 2.3178117691399944e+01 1.4000000009100550e+01 0 0 0 +22040 1 6.0287646094802959e+01 2.2616641136669045e+01 1.5750000022571818e+01 0 0 0 +22089 1 5.9165302113851006e+01 2.4835620849911560e+01 1.5750000000814412e+01 0 0 0 +19535 1 6.4215850084367403e+01 2.3151190846778004e+01 1.7499999994693194e+01 0 0 -1 +22095 1 6.4215850080896431e+01 2.3151190826365955e+01 1.3999999988138418e+01 0 0 0 +22093 1 6.2532334100483482e+01 2.3712667543577243e+01 1.5749999997644750e+01 0 0 0 +19536 1 6.6460538274129220e+01 2.4247217073784235e+01 1.7499999994964174e+01 0 0 -1 +22096 1 6.6460538323667720e+01 2.4247217053701565e+01 1.3999999991542468e+01 0 0 0 +22097 1 6.5899365988424066e+01 2.2589713992314181e+01 1.5749999989442072e+01 0 0 0 +22098 1 6.4777022124349216e+01 2.4808693828113459e+01 1.5750000008551682e+01 0 0 0 +22102 1 6.8144053614003155e+01 2.3685740026480843e+01 1.5750000001638609e+01 0 0 0 +22156 1 7.0388740090591980e+01 2.4781765991846921e+01 1.5750000038492932e+01 0 0 0 +19598 1 7.2072252914718263e+01 2.4220286043186462e+01 5.8957148496574519e-08 0 0 0 +22106 1 7.1511090881372837e+01 2.2562787376531475e+01 1.5750000042609873e+01 0 0 0 +22158 1 7.2072252904121100e+01 2.4220286039119163e+01 1.4000000033990309e+01 0 0 0 +22160 1 7.3755787180206397e+01 2.3658812394835941e+01 1.5750000022282263e+01 0 0 0 +22164 1 7.7122769773570326e+01 2.2535895303149264e+01 1.5749999945915707e+01 0 0 0 +22165 1 7.6000492167626092e+01 2.4754826169225179e+01 1.5749999977585896e+01 0 0 0 +19603 1 7.7684224095949446e+01 2.4193465035944481e+01 1.7499999972230661e+01 0 0 -1 +22163 1 7.7684224109278162e+01 2.4193465065192921e+01 1.3999999970326433e+01 0 0 0 +22169 1 7.9367521469418108e+01 2.3632094933022618e+01 1.5749999940772321e+01 0 0 0 +19665 1 8.3289036229564445e+01 2.4165309756207144e+01 3.9519470362847642e-08 0 0 0 +22173 1 8.2732307936588569e+01 2.2506583654866002e+01 1.5750000045057128e+01 0 0 0 +22223 1 8.1612970105821788e+01 2.4728952546211033e+01 1.5749999981546873e+01 0 0 0 +22225 1 8.3289036437756039e+01 2.4165309660738838e+01 1.4000000058104209e+01 0 0 0 +22227 1 8.4964193761748604e+01 2.3596495888235136e+01 1.5750000099802740e+01 0 0 0 +19670 1 8.9045576031863874e+01 2.4100674185879690e+01 1.8226774045615457e-07 0 0 0 +22230 1 8.9045576088455633e+01 2.4100673938433925e+01 1.4000000106187370e+01 0 0 0 +22231 1 8.8549510601733473e+01 2.2501261043579962e+01 1.5750000182197628e+01 0 0 0 +22232 1 8.7168422420295215e+01 2.4653057605032938e+01 1.5750000143013283e+01 0 0 0 +19460 1 4.5136004042487286e+01 2.7669928957538666e+01 1.7499999936467898e+01 0 0 -1 +19461 1 4.6258347999656301e+01 2.5450949252881355e+01 1.7499999975870089e+01 0 0 -1 +22024 1 4.6819519940363996e+01 2.7108452512897657e+01 1.5749999970572416e+01 0 0 0 +19519 1 5.0747723316335673e+01 2.7643002957133412e+01 5.7907953987523797e-09 0 0 0 +19462 1 4.8503035769901608e+01 2.6546976143268363e+01 1.7499999997857557e+01 0 0 -1 +22028 1 5.0186551468429577e+01 2.5985499687902720e+01 1.5749999966300471e+01 0 0 0 +22077 1 4.9064207637610309e+01 2.8204479368413846e+01 1.5749999985334918e+01 0 0 0 +19466 1 5.1870067126343073e+01 2.5424023302964354e+01 1.7499999972005000e+01 0 0 -1 +19523 1 5.4114754710243922e+01 2.6520050238590468e+01 1.7499999958109342e+01 0 0 -1 +22081 1 5.2431239007125704e+01 2.7081526575262110e+01 1.5749999970902794e+01 0 0 0 +22086 1 5.4675926557344752e+01 2.8177553474451091e+01 1.5749999978176508e+01 0 0 0 +19524 1 5.6359442382188625e+01 2.7616077065773535e+01 1.7499999971895512e+01 0 0 -1 +19527 1 5.7481786145964712e+01 2.5397097329397567e+01 1.7499999965165131e+01 0 0 -1 +22087 1 5.7481786227980997e+01 2.5397097310729784e+01 1.3999999992098228e+01 0 0 0 +22085 1 5.5798270471556926e+01 2.5958573796568096e+01 1.5749999966425676e+01 0 0 0 +22090 1 5.8042958200853747e+01 2.7054600620479029e+01 1.5749999972705043e+01 0 0 0 +22144 1 6.0287646182936889e+01 2.8150627143905730e+01 1.5750000004628053e+01 0 0 0 +19532 1 6.3093505933313331e+01 2.5370170616241168e+01 1.7499999993384066e+01 0 0 -1 +19586 1 6.1971162048750315e+01 2.7589150391877681e+01 8.4864879568158358e-09 0 0 0 +22092 1 6.3093505932443414e+01 2.5370170624173610e+01 1.3999999992612661e+01 0 0 0 +22146 1 6.1971162067262817e+01 2.7589150371386218e+01 1.3999999999321085e+01 0 0 0 +22094 1 6.1409989965588863e+01 2.5931647273573038e+01 1.5749999999229992e+01 0 0 0 +22148 1 6.3654678019694394e+01 2.7027673536780462e+01 1.5749999997596618e+01 0 0 0 +22152 1 6.7021710554583947e+01 2.5904720099963384e+01 1.5749999996199620e+01 0 0 0 +22153 1 6.5899366016099762e+01 2.8123699739004614e+01 1.5749999980509278e+01 0 0 0 +22157 1 6.9266399641161968e+01 2.7000746465834933e+01 1.5750000044780588e+01 0 0 0 +19595 1 7.0949916816923178e+01 2.6439271312123772e+01 5.1839105452700096e-08 0 0 0 +22155 1 7.0949916851692620e+01 2.6439271310439835e+01 1.4000000027336220e+01 0 0 0 +22161 1 7.2633422975385727e+01 2.5877792409351759e+01 1.5750000047764445e+01 0 0 0 +22211 1 7.1511090678830797e+01 2.8096773051452097e+01 1.5750000036182238e+01 0 0 0 +19657 1 7.6561515391373661e+01 2.6412288378220609e+01 1.7499999982223443e+01 0 0 -1 +22215 1 7.4878098532234233e+01 2.6973823087924522e+01 1.5750000017204613e+01 0 0 0 +22217 1 7.6561515350802665e+01 2.6412288408337524e+01 1.3999999974533479e+01 0 0 0 +22220 1 7.7122769273809638e+01 2.8069881019073001e+01 1.5749999980482848e+01 0 0 0 +22219 1 7.8245180057860352e+01 2.5850775583922935e+01 1.5749999945136748e+01 0 0 0 +22224 1 8.0489602698227785e+01 2.6946411556007995e+01 1.5749999929637957e+01 0 0 0 +19662 1 8.2176993010821988e+01 2.6386444430452247e+01 1.0545850415155655e-08 0 0 0 +22222 1 8.2176993153898295e+01 2.6386444370558664e+01 1.3999999995951617e+01 0 0 0 +22277 1 8.2732307367499928e+01 2.8040569608820835e+01 1.5749999982644203e+01 0 0 0 +22228 1 8.3862484199143282e+01 2.5828606582373212e+01 1.5750000021359581e+01 0 0 0 +22281 1 8.6132426129089765e+01 2.6937263878225892e+01 1.5750000075323550e+01 0 0 0 +19723 1 8.7753273249460733e+01 2.6378236968262108e+01 1.2793922721243689e-07 0 0 0 +22283 1 8.7753273379041858e+01 2.6378236795731873e+01 1.4000000091474009e+01 0 0 0 +22284 1 8.9214901486310069e+01 2.5735319416410949e+01 1.5750000123372297e+01 0 0 0 +22285 1 8.8549510108731226e+01 2.8035247028198999e+01 1.5750000081810860e+01 0 0 0 +19513 1 4.6258348014430439e+01 3.0984935365035305e+01 1.7499999978941212e+01 0 0 -1 +19515 1 4.7380691871792529e+01 2.8765955800247461e+01 1.7499999955118358e+01 0 0 -1 +22074 1 4.5697175993528511e+01 2.9327432172947155e+01 1.5749999991005295e+01 0 0 0 +22078 1 4.7941863841283123e+01 3.0423459016745088e+01 1.5749999989699113e+01 0 0 0 +19516 1 4.9625379590224910e+01 2.9861982596447746e+01 1.7499999992933883e+01 0 0 -1 +22082 1 5.1308895338304097e+01 2.9300506343088760e+01 1.5749999984508026e+01 0 0 0 +22132 1 5.0186551565678684e+01 3.1519485940102385e+01 1.5749999981070884e+01 0 0 0 +19520 1 5.2992410970926734e+01 2.8739029856526635e+01 1.7499999952194642e+01 0 0 -1 +19574 1 5.1870067279998999e+01 3.0958009580866072e+01 1.7499999976115944e+01 0 0 -1 +22136 1 5.3553583026682830e+01 3.0396533185074063e+01 1.5749999998160519e+01 0 0 0 +19578 1 5.5237098707465272e+01 2.9835056886379967e+01 1.7499999959177352e+01 0 0 -1 +22140 1 5.6920614402928898e+01 2.9273580275873083e+01 1.5749999970329588e+01 0 0 0 +22141 1 5.5798270712983054e+01 3.1492560125212869e+01 1.5749999974036207e+01 0 0 0 +19583 1 6.0848818146820356e+01 2.9808130291176589e+01 1.7499999985161800e+01 0 0 -1 +22143 1 6.0848818159379718e+01 2.9808130283150092e+01 1.4000000005797215e+01 0 0 0 +22145 1 5.9165302347932823e+01 3.0369607029951428e+01 1.5750000005935030e+01 0 0 0 +22149 1 6.2532334228141316e+01 2.9246653483076564e+01 1.5750000012467114e+01 0 0 0 +22199 1 6.1409990300409859e+01 3.1465633368788236e+01 1.5750000011944532e+01 0 0 0 +22203 1 6.4777022342706815e+01 3.0342679696975559e+01 1.5749999980265869e+01 0 0 0 +22208 1 6.7021710759143346e+01 3.1438705992598774e+01 1.5750000005102665e+01 0 0 0 +19646 1 6.8705226800298689e+01 3.0877229416904466e+01 2.1553411500008224e-08 0 0 0 +19649 1 6.9827569333894388e+01 2.8658248297274476e+01 2.1185080356644903e-08 0 0 0 +22206 1 6.8705226828514824e+01 3.0877229409011321e+01 1.4000000015205620e+01 0 0 0 +22207 1 6.8144053636319995e+01 2.9219725778108852e+01 1.5750000031519201e+01 0 0 0 +22209 1 6.9827569385405212e+01 2.8658248255102652e+01 1.4000000047075131e+01 0 0 0 +22212 1 7.0388740070725106e+01 3.0315751809536852e+01 1.5750000046659002e+01 0 0 0 +22216 1 7.3755786930258338e+01 2.9192798075535734e+01 1.5750000029483417e+01 0 0 0 +22265 1 7.2633422905548386e+01 3.1411778280340776e+01 1.5750000059297173e+01 0 0 0 +19654 1 7.5439348189583669e+01 2.8631350779010489e+01 1.7499999983084930e+01 0 0 -1 +19707 1 7.4316919291082172e+01 3.0850287188096228e+01 7.7507849027824705e-09 0 0 0 +22214 1 7.5439348101579867e+01 2.8631350815266231e+01 1.4000000012875100e+01 0 0 0 +22267 1 7.4316919240065928e+01 3.0850287198703583e+01 1.4000000020934056e+01 0 0 0 +22269 1 7.6000491873823776e+01 3.0288811939938988e+01 1.5749999987640281e+01 0 0 0 +19712 1 7.9929642758886800e+01 3.0823711582956960e+01 1.7499999945735635e+01 0 0 -1 +22272 1 7.9929642740646855e+01 3.0823711579930876e+01 1.4000000001162215e+01 0 0 0 +22273 1 7.9367520991381241e+01 2.9166080806627939e+01 1.5749999945319425e+01 0 0 0 +22274 1 7.8245179776171469e+01 3.1384761508769962e+01 1.5749999957934241e+01 0 0 0 +19715 1 8.1049142678898690e+01 2.8603839233249197e+01 1.7499999986979670e+01 0 0 -1 +22275 1 8.1049142731925770e+01 2.8603839191000844e+01 1.3999999961205699e+01 0 0 0 +22278 1 8.1612969640717111e+01 3.0262938498633932e+01 1.5749999976532074e+01 0 0 0 +19720 1 8.6710920552547876e+01 2.8581192269031032e+01 4.2275519973600240e-08 0 0 0 +19769 1 8.5523442914066123e+01 3.0795095269160779e+01 2.8568006626983333e-08 0 0 0 +22280 1 8.6710920690619702e+01 2.8581192087852930e+01 1.4000000074268366e+01 0 0 0 +22329 1 8.5523443005867264e+01 3.0795095164945206e+01 1.4000000026775488e+01 0 0 0 +22282 1 8.4964193268604092e+01 2.9130481844985855e+01 1.5750000027833046e+01 0 0 0 +22327 1 8.3862483808952916e+01 3.1362592609438082e+01 1.5749999999023050e+01 0 0 0 +22331 1 8.7168422148396459e+01 3.0187043655437840e+01 1.5750000047378938e+01 0 0 0 +22334 1 8.9214901391471685e+01 3.1269305496191944e+01 1.5750000082932660e+01 0 0 0 +19567 1 4.7380691955007869e+01 3.4299942129070871e+01 1.7499999966343481e+01 0 0 -1 +19566 1 4.5136004063779772e+01 3.3203915131189270e+01 1.7499999966563500e+01 0 0 -1 +22128 1 4.6819519989915506e+01 3.2642438741613965e+01 1.5749999967848144e+01 0 0 0 +19570 1 4.8503035832960073e+01 3.2080962353720096e+01 1.7499999991135613e+01 0 0 -1 +19571 1 5.0747723459410700e+01 3.3176989296794375e+01 1.7499999975989127e+01 0 0 -1 +22133 1 4.9064207769584257e+01 3.3738465715794653e+01 1.5749999978538902e+01 0 0 0 +19575 1 5.4114754899520662e+01 3.2054036555824645e+01 3.4489744393795263e-11 0 0 0 +19629 1 5.2992411202050867e+01 3.4273016198447628e+01 1.7499999998556707e+01 0 0 -1 +22137 1 5.2431239154441975e+01 3.2615512899243171e+01 1.5749999973917987e+01 0 0 0 +22191 1 5.4675926873439188e+01 3.3711539831708265e+01 1.5749999968534230e+01 0 0 0 +19633 1 5.6359442737438044e+01 3.3150063403908952e+01 1.7499999963710575e+01 0 0 -1 +19634 1 5.8604130718442732e+01 3.4246090091995583e+01 1.7499999997114966e+01 0 0 -1 +19637 1 5.9726474402687202e+01 3.2027110192429618e+01 8.2505380305519793e-09 0 0 0 +22194 1 5.8604130751219756e+01 3.4246090064142017e+01 1.4000000019381853e+01 0 0 0 +22197 1 5.9726474422864932e+01 3.2027110198278265e+01 1.4000000009543770e+01 0 0 0 +22195 1 5.8042958547000843e+01 3.2588586877924463e+01 1.5750000002686042e+01 0 0 0 +22200 1 6.0287646595757160e+01 3.3684613331032658e+01 1.5750000004578569e+01 0 0 0 +19695 1 6.4215850677481782e+01 3.4219162759308098e+01 8.5790290427212312e-09 0 0 0 +22255 1 6.4215850632350680e+01 3.4219162709290607e+01 1.3999999989845248e+01 0 0 0 +22204 1 6.3654678397621076e+01 3.2561659593259776e+01 1.5749999997903199e+01 0 0 0 +19642 1 6.5338194480410081e+01 3.2000182760023513e+01 9.9810293363589153e-09 0 0 0 +22202 1 6.5338194481654654e+01 3.2000182686211325e+01 1.3999999978453289e+01 0 0 0 +19699 1 6.7582882421351229e+01 3.3096208723615383e+01 2.4451946245562795e-08 0 0 0 +22257 1 6.5899366405328692e+01 3.3657685760428407e+01 1.5750000011129341e+01 0 0 0 +22259 1 6.7582882489339610e+01 3.3096208680660851e+01 1.3999999982622368e+01 0 0 0 +22261 1 6.9266399834355894e+01 3.2534732391868673e+01 1.5750000009184065e+01 0 0 0 +19704 1 7.3194614983160648e+01 3.3069289195758316e+01 7.3716961423997418e-09 0 0 0 +22264 1 7.3194614963547409e+01 3.3069289196167716e+01 1.4000000021318536e+01 0 0 0 +22266 1 7.1511090812147913e+01 3.3630759040129625e+01 1.5750000055746757e+01 0 0 0 +22270 1 7.4878098382560921e+01 3.2507808995186529e+01 1.5750000014719555e+01 0 0 0 +22319 1 7.7122769126302131e+01 3.3603867042183616e+01 1.5749999985132042e+01 0 0 0 +22321 1 7.8805833895601637e+01 3.3042171099593951e+01 1.4000000003908726e+01 0 0 0 +19761 1 7.8805833957449295e+01 3.3042171067211875e+01 1.7499999969116029e+01 0 0 -1 +22323 1 8.0489602392736927e+01 3.2480397566338297e+01 1.5749999991568570e+01 0 0 0 +22328 1 8.2732307077055253e+01 3.3574555660826235e+01 1.5750000019982272e+01 0 0 0 +19766 1 8.4431590161738228e+01 3.3017262175646820e+01 1.9894610403525803e-08 0 0 0 +22326 1 8.4431590226334109e+01 3.3017262108189207e+01 1.4000000045536691e+01 0 0 0 +22332 1 8.6132425824317139e+01 3.2471249947754750e+01 1.5750000021187631e+01 0 0 0 +22373 1 7.4316919783876955e+01 4.1918259855823017e+01 1.4000000003258540e+01 0 0 0 +22375 1 7.6000492242138748e+01 4.1356784535514691e+01 1.5750000014243087e+01 0 0 0 +22368 1 8.8549509839193988e+01 3.3569233110200486e+01 1.5750000049548504e+01 0 0 0 +19621 1 4.6258348052148300e+01 3.6518921672361415e+01 6.6196470527302154e-09 0 0 0 +22129 1 4.5697176014755208e+01 3.4861418430458578e+01 1.5750000011197164e+01 0 0 0 +22183 1 4.7941863950398684e+01 3.5957445405432225e+01 1.5749999988330298e+01 0 0 0 +19622 1 4.8503035983084281e+01 3.7614948771252749e+01 1.7499999989634215e+01 0 0 -1 +19625 1 4.9625379793157528e+01 3.5395968981690373e+01 1.7499999957844899e+01 0 0 -1 +22187 1 5.1308895522688395e+01 3.4834492704634094e+01 1.5749999983940244e+01 0 0 0 +22188 1 5.0186551790348908e+01 3.7053472367877909e+01 1.5749999977431552e+01 0 0 0 +19626 1 5.1870067534782571e+01 3.6491995977234772e+01 1.7499999998726008e+01 0 0 -1 +19683 1 5.4114755321613089e+01 3.7588022956328459e+01 1.7499999983592907e+01 0 0 -1 +22192 1 5.3553583342283204e+01 3.5930519566399767e+01 1.5749999968750414e+01 0 0 0 +19687 1 5.7481786873158192e+01 3.6465069867935398e+01 3.0512232740420586e-09 0 0 0 +19630 1 5.5237099070066854e+01 3.5369043223420604e+01 1.7499999975516729e+01 0 0 -1 +22196 1 5.6920614774536723e+01 3.4807566584018439e+01 1.5750000026142846e+01 0 0 0 +22245 1 5.5798271121026090e+01 3.7026546457046663e+01 1.5750000000283002e+01 0 0 0 +22249 1 5.9165302832695673e+01 3.5903593242554081e+01 1.5750000025941032e+01 0 0 0 +19692 1 6.3093506807996953e+01 3.6438142769602486e+01 1.7499999997951310e+01 0 0 -1 +22252 1 6.3093506772577072e+01 3.6438142726876578e+01 1.4000000005211213e+01 0 0 0 +22253 1 6.2532334754442410e+01 3.4780639603778120e+01 1.5749999991282152e+01 0 0 0 +22254 1 6.1409990863288179e+01 3.6999619524790269e+01 1.5750000017762270e+01 0 0 0 +19696 1 6.6460538886955675e+01 3.5315189016361103e+01 1.1017608159136216e-08 0 0 0 +22256 1 6.6460538913632178e+01 3.5315188975236204e+01 1.3999999987749275e+01 0 0 0 +22258 1 6.4777022889304092e+01 3.5876665847003252e+01 1.5750000007350362e+01 0 0 0 +22307 1 6.7021711324595429e+01 3.6972692206124037e+01 1.5749999979881338e+01 0 0 0 +22262 1 6.8144054016392658e+01 3.4753711880927071e+01 1.5750000000176486e+01 0 0 0 +22311 1 7.0388740406201620e+01 3.5849737983570897e+01 1.5750000039886146e+01 0 0 0 +19750 1 7.0949917314309985e+01 3.7507243523164753e+01 5.4815380678974179e-08 0 0 0 +19753 1 7.2072253001500471e+01 3.5288257929138723e+01 4.8171756361625739e-08 0 0 0 +22310 1 7.0949917314410769e+01 3.7507243497609871e+01 1.4000000009828838e+01 0 0 0 +22313 1 7.2072252966975526e+01 3.5288257912803388e+01 1.4000000007731380e+01 0 0 0 +22315 1 7.3755786981274412e+01 3.4726784165284627e+01 1.5750000040076827e+01 0 0 0 +22316 1 7.2633423195843065e+01 3.6945764507818637e+01 1.5750000032120422e+01 0 0 0 +19794 1 7.6561515291797235e+01 3.7480260522382579e+01 1.3211014504577179e-09 0 0 0 +22320 1 7.6000491884600748e+01 3.5822798111301580e+01 1.5750000007836267e+01 0 0 0 +22354 1 7.6561515214853074e+01 3.7480260532966668e+01 1.3999999987279768e+01 0 0 0 +19758 1 7.7684223652928097e+01 3.5261436966650010e+01 1.7499999983683580e+01 0 0 -1 +22318 1 7.7684223580160150e+01 3.5261436990231516e+01 1.3999999996912443e+01 0 0 0 +22324 1 7.9367520782811937e+01 3.4700066875421186e+01 1.5750000004697986e+01 0 0 0 +22356 1 7.8245179698127245e+01 3.6918747713327249e+01 1.5750000009934288e+01 0 0 0 +19802 1 8.3289035635609139e+01 3.5233281803019509e+01 6.9079746367606276e-09 0 0 0 +22359 1 8.2176992633777033e+01 3.7454416635879930e+01 1.4000000020174751e+01 0 0 0 +22362 1 8.3289035668593655e+01 3.5233281793720536e+01 1.4000000041648297e+01 0 0 0 +19799 1 8.2176992644861443e+01 3.7454416614412956e+01 1.8707922322391823e-08 0 0 0 +22360 1 8.1612969484234441e+01 3.5796924645670330e+01 1.5750000013709691e+01 0 0 0 +22364 1 8.4964193039170397e+01 3.4664467958512176e+01 1.5750000027813332e+01 0 0 0 +22365 1 8.3862483664000138e+01 3.6896578782423177e+01 1.5750000027061976e+01 0 0 0 +19807 1 8.9045575752779143e+01 3.5168646313400217e+01 1.7965245291406973e-08 0 0 0 +19829 1 8.7753272928872676e+01 3.7446209141634831e+01 1.3838342027838735e-08 0 0 0 +22367 1 8.9045575800982633e+01 3.5168646180819849e+01 1.4000000090717808e+01 0 0 0 +22389 1 8.7753272953001627e+01 3.7446209073421642e+01 1.4000000091606708e+01 0 0 0 +22369 1 8.7168422049123080e+01 3.5721029864471674e+01 1.5750000050511533e+01 0 0 0 +22390 1 8.9214901213711215e+01 3.6803291693674218e+01 1.5750000013619793e+01 0 0 0 +19620 1 4.5136003970920527e+01 3.8737901360856831e+01 1.7499999992505998e+01 0 0 -1 +19675 1 4.7380691946618931e+01 3.9833928427610736e+01 1.7499999970871240e+01 0 0 -1 +22184 1 4.6819519998458922e+01 3.8176425078871290e+01 1.5749999989119106e+01 0 0 0 +22234 1 4.5697175891324996e+01 4.0395404679968287e+01 1.5750000028423909e+01 0 0 0 +19676 1 4.9625379872793104e+01 4.0929955299053766e+01 1.1537569122310742e-08 0 0 0 +19679 1 5.0747723707732732e+01 3.8710975693911536e+01 1.1905850527682560e-08 0 0 0 +22237 1 4.9064207878118431e+01 3.9272452073880196e+01 1.5749999995367540e+01 0 0 0 +22242 1 5.1308895802195174e+01 4.0368479078764317e+01 1.5749999992751382e+01 0 0 0 +19680 1 5.2992411588262001e+01 3.9807002594774211e+01 1.7499999969562971e+01 0 0 -1 +22241 1 5.2431239536922227e+01 3.8149499333390537e+01 1.5749999975300073e+01 0 0 0 +22246 1 5.4675927260811775e+01 3.9245526161928034e+01 1.5750000018814761e+01 0 0 0 +19684 1 5.6359443186921347e+01 3.8684049705361794e+01 2.2575427749416122e-08 0 0 0 +19733 1 5.5237099514610925e+01 4.0903029548342808e+01 1.6679496894766999e-08 0 0 0 +22295 1 5.6920615303636190e+01 4.0341552888997803e+01 1.5750000002897051e+01 0 0 0 +19738 1 6.0848819287063058e+01 4.0876102674412870e+01 1.7499999990126401e+01 0 0 -1 +22298 1 6.0848819239817509e+01 4.0876102643729865e+01 1.4000000000115376e+01 0 0 0 +22250 1 5.8042959065984370e+01 3.8122573168084138e+01 1.5749999994130377e+01 0 0 0 +22299 1 6.0287647186450833e+01 3.9218599535835622e+01 1.5750000014157239e+01 0 0 0 +19741 1 6.1971163116623757e+01 3.8657122681379484e+01 1.7499999995565041e+01 0 0 -1 +22301 1 6.1971163073656847e+01 3.8657122660855123e+01 1.3999999995046471e+01 0 0 0 +22303 1 6.3654679038656568e+01 3.8095645730032629e+01 1.5750000005514320e+01 0 0 0 +22304 1 6.2532335359108664e+01 4.0314625803193174e+01 1.5750000004628836e+01 0 0 0 +22308 1 6.5899367039183360e+01 3.9191672034247240e+01 1.5749999965010236e+01 0 0 0 +19786 1 6.9827570148010807e+01 3.9726220762274870e+01 1.9605121082122423e-08 0 0 0 +22312 1 6.9266400342112945e+01 3.8068718723982670e+01 1.5750000042218570e+01 0 0 0 +22344 1 6.8144054577718450e+01 4.0287698257301471e+01 1.5750000026743514e+01 0 0 0 +22346 1 6.9827570163944259e+01 3.9726220736684517e+01 1.4000000025904203e+01 0 0 0 +22348 1 7.1511091280098626e+01 3.9164745440282772e+01 1.5750000035452883e+01 0 0 0 +22353 1 7.3755787402238269e+01 4.0260770572388452e+01 1.5750000032063365e+01 0 0 0 +19791 1 7.5439348467956449e+01 3.9699323199722024e+01 3.6512943779598572e-08 0 0 0 +22351 1 7.5439348350288469e+01 3.9699323211017216e+01 1.3999999974890363e+01 0 0 0 +22352 1 7.4878098628768029e+01 3.8041795284668275e+01 1.5750000015235232e+01 0 0 0 +22357 1 7.7122769300498788e+01 3.9137853341261014e+01 1.5750000021445157e+01 0 0 0 +22379 1 7.9367520958613753e+01 4.0234053259232617e+01 1.5749999981375831e+01 0 0 0 +22361 1 8.0489602349504793e+01 3.8014383813446280e+01 1.5749999989776537e+01 0 0 0 +19821 1 8.1049142541774927e+01 3.9671811619608036e+01 2.0339108175448928e-09 0 0 0 +22381 1 8.1049142518898094e+01 3.9671811596807970e+01 1.3999999978397463e+01 0 0 0 +22383 1 8.2732307069922726e+01 3.9108541960495153e+01 1.5750000000642768e+01 0 0 0 +19826 1 8.6710920311989810e+01 3.9649164543264497e+01 1.9711084320306327e-08 0 0 0 +22386 1 8.6710920325003912e+01 3.9649164496661818e+01 1.4000000004262143e+01 0 0 0 +22387 1 8.6132425712205560e+01 3.8005236143959756e+01 1.5750000047298048e+01 0 0 0 +22388 1 8.4964193026499927e+01 4.0198454248961788e+01 1.5750000018486695e+01 0 0 0 +22391 1 8.8549509762174054e+01 3.9103219325257136e+01 1.5750000004656769e+01 0 0 0 +19673 1 4.6258347894278181e+01 4.2052907922065593e+01 1.4638796841381918e-08 0 0 0 +22238 1 4.7941863900615949e+01 4.1491431687624917e+01 1.5750000007941091e+01 0 0 0 +22286 1 4.6819519839672914e+01 4.3710411304243010e+01 1.5750000009023369e+01 0 0 0 +19727 1 4.8503035908314708e+01 4.3148935007596634e+01 8.3194855449164606e-09 0 0 0 +22288 1 5.0186551858040197e+01 4.2587458648822214e+01 1.5750000004809628e+01 0 0 0 +22404 1 5.0747723739965430e+01 4.4244961915994743e+01 1.7499999991515004e+01 0 0 -1 +19729 1 5.1870067785337199e+01 4.2025982291469028e+01 2.2118911147117615e-09 0 0 0 +19730 1 5.4114755598643953e+01 4.3122009192180776e+01 5.0609354929065375e-08 0 0 0 +22291 1 5.3553583686543092e+01 4.1464505889557749e+01 1.5750000036302463e+01 0 0 0 +22292 1 5.2431239640888037e+01 4.3683485536438404e+01 1.5750000019559755e+01 0 0 0 +22296 1 5.5798271573033162e+01 4.2560532721241415e+01 1.5750000003851609e+01 0 0 0 +22419 1 5.6359443594493044e+01 4.4218035908642527e+01 2.4561472855566535e-09 0 0 0 +19776 1 5.9726475485348899e+01 4.3095082593626984e+01 1.9932233641384300e-08 0 0 0 +22335 1 5.8042959503211684e+01 4.3656559321366501e+01 1.5750000035208007e+01 0 0 0 +22300 1 5.9165303395460526e+01 4.1437579471765822e+01 1.5750000013423481e+01 0 0 0 +22336 1 5.9726475475749183e+01 4.3095082566724869e+01 1.3999999988129769e+01 0 0 0 +22341 1 6.3654679541709882e+01 4.3629632000596956e+01 1.5749999971093651e+01 0 0 0 +22337 1 6.1409991454814310e+01 4.2533605735417481e+01 1.5749999998222465e+01 0 0 0 +19779 1 6.5338195655786549e+01 4.3068155269794076e+01 1.7499999974440673e+01 0 0 -1 +22345 1 6.7021711829392089e+01 4.2506678598627744e+01 1.5749999988428565e+01 0 0 0 +22340 1 6.4777023494517834e+01 4.1410652097791292e+01 1.5749999954716568e+01 0 0 0 +22339 1 6.5338195579739946e+01 4.3068155218682939e+01 1.3999999970693514e+01 0 0 0 +22450 1 6.7582883448592682e+01 4.4164181488867314e+01 5.7491824634325894e-09 0 0 0 +25010 1 6.7582883456775420e+01 4.4164181477716603e+01 1.3999999983990675e+01 0 0 0 +19783 1 6.8705227813183626e+01 4.1945202088450209e+01 1.7499999999426162e+01 0 0 -1 +22370 1 6.9266400775094681e+01 4.3602705226555223e+01 1.5749999997338085e+01 0 0 0 +22349 1 7.0388740935194818e+01 4.1383724489897901e+01 1.5750000036850802e+01 0 0 0 +22343 1 6.8705227782917191e+01 4.1945202092032893e+01 1.4000000013375757e+01 0 0 0 +22372 1 7.2633423627372522e+01 4.2479751023711302e+01 1.5750000059096411e+01 0 0 0 +22453 1 7.3194615751668167e+01 4.4137262120573673e+01 2.5254021096543511e-08 0 0 0 +25013 1 7.3194615674933317e+01 4.4137262124934807e+01 1.4000000018913600e+01 0 0 0 +22376 1 7.4878099019974456e+01 4.3575781817387700e+01 1.5750000038503492e+01 0 0 0 +19206 1 4.5136003795556661e+01 5.5339857329877589e+00 1.7601005713146841e-08 0 0 0 +19895 1 4.5136004004955240e+01 1.1067971525197274e+01 3.4999999904973684e+00 0 0 0 +19940 1 4.5136004129432074e+01 1.6601957245842875e+01 3.5000000229994774e+00 0 0 0 +20046 1 4.5136004059550949e+01 2.2135943028012939e+01 3.4999999542396356e+00 0 0 0 +19846 1 4.5136003778412110e+01 5.5339857659724618e+00 3.5000000298193568e+00 0 0 0 +20535 1 4.5136004045542997e+01 1.1067971511942632e+01 6.9999999703036240e+00 0 0 0 +20580 1 4.5136004102412052e+01 1.6601957243892691e+01 7.0000000005552376e+00 0 0 0 +20686 1 4.5136004059890972e+01 2.2135943040022628e+01 6.9999999805416646e+00 0 0 0 +20486 1 4.5136003782930544e+01 5.5339857091507048e+00 6.9999999593498075e+00 0 0 0 +21175 1 4.5136004057379118e+01 1.1067971496091092e+01 1.0499999994414706e+01 0 0 0 +21220 1 4.5136004125195207e+01 1.6601957238106241e+01 1.0499999993310166e+01 0 0 0 +21326 1 4.5136004065197724e+01 2.2135943057734426e+01 1.0500000027956951e+01 0 0 0 +21126 1 4.5136003801831059e+01 5.5339856842041950e+00 1.0499999958987436e+01 0 0 0 +21815 1 4.5136004048519489e+01 1.1067971500194494e+01 1.3999999993925877e+01 0 0 0 +21860 1 4.5136004169142630e+01 1.6601957214177144e+01 1.3999999955752092e+01 0 0 0 +21966 1 4.5136004111835987e+01 2.2135943002003650e+01 1.3999999988702649e+01 0 0 0 +21766 1 4.5136003821220832e+01 5.5339856976052273e+00 1.3999999984365630e+01 0 0 0 +19255 1 4.5136004052614105e+01 1.1067971525615809e+01 1.3240633478517339e-08 0 0 0 +19300 1 4.5136004144858262e+01 1.6601957228505736e+01 1.7499999987794645e+01 0 0 -1 +19406 1 4.5136004094691096e+01 2.2135943007764688e+01 1.7499999962440480e+01 0 0 -1 +22403 1 4.5697175700226950e+01 4.5929390878494729e+01 1.7500000006524328e+00 0 0 0 +22409 1 4.7941863729976937e+01 4.7025417839886551e+01 1.7499999914287572e+00 0 0 0 +23042 1 4.7380691783595005e+01 4.5367914628009650e+01 3.4999999695881936e+00 0 0 0 +23041 1 4.5136003771807303e+01 4.4271887570540613e+01 3.4999999956300449e+00 0 0 0 +22405 1 4.9064207786345847e+01 4.4806438232869681e+01 1.7500000033759260e+00 0 0 0 +22413 1 5.1308895804283999e+01 4.5902465239302252e+01 1.7499999885568860e+00 0 0 0 +23051 1 4.9625379770568685e+01 4.6463941458753069e+01 3.4999999903217138e+00 0 0 0 +22417 1 5.4675927477072094e+01 4.4779512323599903e+01 1.7500000234374244e+00 0 0 0 +22418 1 5.3553583728021295e+01 4.6998491984796622e+01 1.7500000279070211e+00 0 0 0 +23055 1 5.2992411664078595e+01 4.5340988738711211e+01 3.4999999827835131e+00 0 0 0 +22421 1 5.6920615574639854e+01 4.5875538991186517e+01 1.7500000143466685e+00 0 0 0 +23056 1 5.5237099668741990e+01 4.6437015626199866e+01 3.5000000287597102e+00 0 0 0 +22423 1 6.0287647663864739e+01 4.4752585701210897e+01 1.7500000085681404e+00 0 0 0 +22440 1 5.9165303685604826e+01 4.6971565533805645e+01 1.7500000228678414e+00 0 0 0 +23082 1 6.0848819646906911e+01 4.6410088769471677e+01 3.4999999793531678e+00 0 0 0 +22442 1 6.0848819635187013e+01 4.6410088742510240e+01 1.8350719432776105e-08 0 0 0 +22444 1 6.2532335809561090e+01 4.5848611982607565e+01 1.7500000166047418e+00 0 0 0 +22448 1 6.5899367503941718e+01 4.4725658412382707e+01 1.7499999786578060e+00 0 0 0 +22449 1 6.4777023843861727e+01 4.6944638422139349e+01 1.7500000146005232e+00 0 0 0 +22451 1 6.9827570500059039e+01 4.5260207358434272e+01 1.6143785451093507e-08 0 0 0 +22452 1 6.8144054925446810e+01 4.5821684816462778e+01 1.7499999950339837e+00 0 0 0 +22485 1 7.0388741203383034e+01 4.6917711099328734e+01 1.7499999881922190e+00 0 0 0 +23091 1 6.9827570525256490e+01 4.5260207327372058e+01 3.4999999688982419e+00 0 0 0 +22454 1 7.1511091657941535e+01 4.4698732060844812e+01 1.7499999912598054e+00 0 0 0 +22489 1 7.3755787758427942e+01 4.5794757182762481e+01 1.7499999921922100e+00 0 0 0 +22491 1 7.5439348772425035e+01 4.5233309799363980e+01 2.4476527052982393e-08 0 0 0 +22493 1 7.7122769711720736e+01 4.4671839927533092e+01 1.7500000075756472e+00 0 0 0 +22494 1 7.6000492554881959e+01 4.6890771173759013e+01 1.7500000008310928e+00 0 0 0 +23131 1 7.5439348824568739e+01 4.5233309798442455e+01 3.4999999793261183e+00 0 0 0 +22497 1 7.9367521288991796e+01 4.5768039834379721e+01 1.7499999908299793e+00 0 0 0 +22496 1 8.1049142794850766e+01 4.5205798153599581e+01 1.7499999977054298e+01 0 0 -1 +22499 1 8.2732307303299223e+01 4.4642528456519969e+01 1.7499999847903520e+00 0 0 0 +22543 1 8.1612969840084304e+01 4.6864897630555667e+01 1.7499999937634636e+00 0 0 0 +23136 1 8.1049142815983217e+01 4.5205798186600973e+01 3.5000000370708091e+00 0 0 0 +22547 1 8.4964193194530964e+01 4.5732440705996524e+01 1.7500000021750601e+00 0 0 0 +22549 1 8.6710920468228537e+01 4.5183150947650901e+01 1.7499999977613388e+01 0 0 -1 +23189 1 8.6710920474684627e+01 4.5183150913965207e+01 3.5000000084941538e+00 0 0 0 +22551 1 8.8549509920814103e+01 4.4637205714873829e+01 1.7499999824252359e+00 0 0 0 +22552 1 8.7168422177196760e+01 4.6789002534338024e+01 1.7500000097996258e+00 0 0 0 +22410 1 4.6819519590007417e+01 4.9244397380442472e+01 1.7499999858003936e+00 0 0 0 +25600 1 8.9214901695444425e+01 8.6609164453738785e+01 1.5749999852204827e+01 0 0 0 +23047 1 4.6258347665522344e+01 4.7586894108189192e+01 3.4999999514234834e+00 0 0 0 +22414 1 5.0186551754941128e+01 4.8121444716263575e+01 1.7499999975698672e+00 0 0 0 +22428 1 4.9064207617464611e+01 5.0340424312536925e+01 1.7499999985717196e+00 0 0 0 +23070 1 5.0747723613652262e+01 4.9778947940834236e+01 3.4999999739787779e+00 0 0 0 +23048 1 4.8503035709501070e+01 4.8682921120198870e+01 3.4999999769746961e+00 0 0 0 +22432 1 5.2431239576235249e+01 4.9217471565542233e+01 1.7500000207504032e+00 0 0 0 +22437 1 5.4675927515166116e+01 5.0313498349085890e+01 1.7500000198146077e+00 0 0 0 +23052 1 5.1870067724445271e+01 4.7559968383423104e+01 3.4999999883229260e+00 0 0 0 +23074 1 5.4114755617965137e+01 4.8655995224838428e+01 3.5000000340766562e+00 0 0 0 +22436 1 5.5798271645256946e+01 4.8094518757135759e+01 1.7500000029484488e+00 0 0 0 +22441 1 5.8042959610173163e+01 4.9190545322438723e+01 1.7500000281679036e+00 0 0 0 +22473 1 6.0287647759947326e+01 5.0286571669954824e+01 1.7500000078341902e+00 0 0 0 +23079 1 5.9726475691797305e+01 4.8629068613588139e+01 3.5000000047384772e+00 0 0 0 +22439 1 5.9726475682102198e+01 4.8629068589484206e+01 2.3556633035455935e-08 0 0 0 +22445 1 6.1409991735634812e+01 4.8067591828816866e+01 1.7500000196122960e+00 0 0 0 +22477 1 6.3654679784911686e+01 4.9163618173213727e+01 1.7500000024952294e+00 0 0 0 +22481 1 6.7021712100733097e+01 4.8040665070029881e+01 1.7500000161235449e+00 0 0 0 +22482 1 6.5899367632519983e+01 5.0259644729803433e+01 1.7500000144375225e+00 0 0 0 +22480 1 6.7582883628835248e+01 4.9698167975879457e+01 1.0669067987370103e-08 0 0 0 +23120 1 6.7582883661669086e+01 4.9698167953970653e+01 3.5000000035968601e+00 0 0 0 +23119 1 6.5338195898838151e+01 4.8602141538638755e+01 3.4999999955415699e+00 0 0 0 +22479 1 6.5338195837376347e+01 4.8602141541187748e+01 1.6717535383636328e-08 0 0 0 +22483 1 6.8705228045280364e+01 4.7479188640481659e+01 1.7499999999355072e+01 0 0 -1 +22486 1 6.9266400974321058e+01 4.9136691832907538e+01 1.7499999937616406e+00 0 0 0 +23123 1 6.8705228070350842e+01 4.7479188641455501e+01 3.4999999940570334e+00 0 0 0 +22490 1 7.2633423863568623e+01 4.8013737707988618e+01 1.7499999960329560e+00 0 0 0 +22531 1 7.1511091743496479e+01 5.0232718659161677e+01 1.7499999899082002e+00 0 0 0 +22533 1 7.3194615843412322e+01 4.9671248785527652e+01 1.2856886636340901e-08 0 0 0 +23173 1 7.3194615915573820e+01 4.9671248757486019e+01 3.4999999678920592e+00 0 0 0 +22488 1 7.4316920067829017e+01 4.7452246516238922e+01 5.7809343283471234e-09 0 0 0 +22535 1 7.4878099202574830e+01 4.9109768486500947e+01 1.7499999962731307e+00 0 0 0 +22540 1 7.7122769810765661e+01 5.0205826604630090e+01 1.7499999900922598e+00 0 0 0 +23128 1 7.4316920116477277e+01 4.7452246505793653e+01 3.4999999711062317e+00 0 0 0 +22538 1 7.8805834445193682e+01 4.9644130574909433e+01 1.7499999985470648e+01 0 0 -1 +22539 1 7.8245180312404997e+01 4.7986720856655452e+01 1.7499999868706175e+00 0 0 0 +22541 1 7.9929643083192374e+01 4.7425670815196014e+01 1.7499999997452473e+01 0 0 -1 +22544 1 8.0489602802665914e+01 4.9082356958749187e+01 1.7499999948314342e+00 0 0 0 +23178 1 7.8805834502581035e+01 4.9644130591552461e+01 3.4999999992071293e+00 0 0 0 +23181 1 7.9929643129314300e+01 4.7425670842020693e+01 3.5000000043403028e+00 0 0 0 +22597 1 8.2732307420222270e+01 5.0176515011202461e+01 1.7499999991454500e+00 0 0 0 +22546 1 8.5523443035234990e+01 4.7397054185421688e+01 1.7499999992034873e+01 0 0 -1 +22548 1 8.3862483967077551e+01 4.7964551715563857e+01 1.7500000146146184e+00 0 0 0 +22599 1 8.4431590441707826e+01 4.9619221323025762e+01 7.7611493244062572e-09 0 0 0 +22601 1 8.6132426000477665e+01 4.9073209017525969e+01 1.7500000037423959e+00 0 0 0 +23186 1 8.5523443019804674e+01 4.7397054173914171e+01 3.5000000586115534e+00 0 0 0 +23239 1 8.4431590428479552e+01 4.9619221341265799e+01 3.5000000212306879e+00 0 0 0 +22604 1 8.9214901259794587e+01 4.7871264385309956e+01 1.7500000384933247e+00 0 0 0 +22605 1 8.8549510008257116e+01 5.0171192132312505e+01 1.7500000482788023e+00 0 0 0 +25597 1 8.7168423073429196e+01 8.5526902730904794e+01 1.5749999988069497e+01 0 0 0 +3841 1 9.0272007528377372e+01 4.9386885943240465e+01 3.5000000332170398e+00 -1 0 0 +22425 1 4.5697175353049303e+01 5.1463376874782760e+01 1.7499999804019872e+00 0 0 0 +22429 1 4.7941863485705078e+01 5.2559403767938875e+01 1.7500000126104818e+00 0 0 0 +23064 1 4.6258347395537598e+01 5.3120880044332388e+01 3.4999999729216156e+00 0 0 0 +23066 1 4.7380691525380961e+01 5.0901900660864698e+01 3.4999999607973669e+00 0 0 0 +22433 1 5.1308895609754011e+01 5.1436451156363546e+01 1.7500000252832526e+00 0 0 0 +22461 1 5.0186551546240906e+01 5.3655430598113796e+01 1.7500000233481803e+00 0 0 0 +23067 1 4.9625379565377628e+01 5.1997927400612831e+01 3.4999999879712784e+00 0 0 0 +22465 1 5.3553583613646566e+01 5.2532477897743291e+01 1.7500000207088604e+00 0 0 0 +23071 1 5.2992411598464713e+01 5.0874974705975262e+01 3.5000000518017278e+00 0 0 0 +23103 1 5.1870067578462063e+01 5.3093954271441028e+01 3.5000000201291033e+00 0 0 0 +22468 1 5.7481787464604658e+01 5.3067028067118855e+01 3.5456469807419325e-09 0 0 0 +22469 1 5.6920615525374849e+01 5.1409524928219213e+01 1.7500000228921462e+00 0 0 0 +22470 1 5.5798271479998256e+01 5.3628504646514912e+01 1.7500000125223041e+00 0 0 0 +23107 1 5.5237099628480159e+01 5.1971001565712513e+01 3.5000000215459623e+00 0 0 0 +23108 1 5.7481787504296392e+01 5.3067028066828321e+01 3.5000000240219271e+00 0 0 0 +22474 1 5.9165303623620972e+01 5.2505551497188669e+01 1.7500000068881967e+00 0 0 0 +23111 1 5.8604131703529887e+01 5.0848048427925498e+01 3.4999999935420107e+00 0 0 0 +22471 1 5.8604131690229266e+01 5.0848048400161893e+01 2.4477522494344312e-08 0 0 0 +22478 1 6.2532335862206523e+01 5.1382598057359623e+01 1.7500000202692476e+00 0 0 0 +22519 1 6.1409991620491901e+01 5.3601577797766240e+01 1.7500000097909620e+00 0 0 0 +23116 1 6.4215851867412695e+01 5.0821121450671576e+01 3.4999999925423948e+00 0 0 0 +23161 1 6.3093507679562997e+01 5.3040101241012806e+01 3.4999999981158507e+00 0 0 0 +22476 1 6.4215851823499833e+01 5.0821121391052792e+01 3.4460252253365719e-08 0 0 0 +22521 1 6.3093507629649636e+01 5.3040101212193662e+01 3.7028899062961307e-08 0 0 0 +22523 1 6.4777023854562799e+01 5.2478624614915717e+01 1.7500000242438254e+00 0 0 0 +22525 1 6.6460539855537291e+01 5.1917148101212184e+01 1.8173100179863958e-08 0 0 0 +22528 1 6.7021712032151115e+01 5.3574651441906028e+01 1.7500000217565792e+00 0 0 0 +23165 1 6.6460539908633464e+01 5.1917148099787596e+01 3.5000000094401447e+00 0 0 0 +22527 1 6.8144054998383169e+01 5.1355671273820462e+01 1.7500000057110809e+00 0 0 0 +22532 1 7.0388741190564204e+01 5.2451697630398584e+01 1.7500000124443973e+00 0 0 0 +22530 1 7.2072253751943776e+01 5.1890217632449286e+01 8.5447773314856869e-09 0 0 0 +22536 1 7.3755787810323554e+01 5.1328743843151528e+01 1.7499999969322224e+00 0 0 0 +22585 1 7.2633423810476543e+01 5.3547724263398770e+01 1.7500000058687559e+00 0 0 0 +23170 1 7.2072253814000675e+01 5.1890217627526553e+01 3.4999999950171499e+00 0 0 0 +22589 1 7.6000492567802965e+01 5.2424757842162840e+01 1.7499999885663775e+00 0 0 0 +22591 1 7.7684224216347687e+01 5.1863396655627852e+01 1.7499999975575307e+01 0 0 -1 +22593 1 7.9367521351608332e+01 5.1302026486634929e+01 1.7499999708790022e+00 0 0 0 +22594 1 7.8245180276574700e+01 5.3520707440367751e+01 1.7499999776542101e+00 0 0 0 +23231 1 7.7684224283736668e+01 5.1863396677193705e+01 3.4999999900098850e+00 0 0 0 +22596 1 8.3289036034216835e+01 5.1835241210847009e+01 1.0559301533121699e-09 0 0 0 +22598 1 8.1612969962893743e+01 5.2398884203077380e+01 1.7499999613419048e+00 0 0 0 +23236 1 8.3289036048488427e+01 5.1835241197632243e+01 3.4999999778504653e+00 0 0 0 +22602 1 8.4964193348960876e+01 5.1266427212177128e+01 1.7500000051670199e+00 0 0 0 +22652 1 8.3862484102048697e+01 5.3498538209176672e+01 1.7499999560805890e+00 0 0 0 +22656 1 8.7168422233247483e+01 5.2322988956882362e+01 1.7500000272747833e+00 0 0 0 +22658 1 8.9045575842448983e+01 5.1770605300022858e+01 4.6186175985179588e-08 0 0 0 +22659 1 8.9214901391076836e+01 5.3405250750726253e+01 1.7500000491467833e+00 0 0 0 +23298 1 8.9045575849116815e+01 5.1770605306295018e+01 3.5000000470363535e+00 0 0 0 +22457 1 4.6819519393838682e+01 5.4778383227388339e+01 1.7499999991906765e+00 0 0 0 +23096 1 4.7380691365690723e+01 5.6435886453818377e+01 3.4999999865629627e+00 0 0 0 +22462 1 4.9064207429795296e+01 5.5874410075473932e+01 1.7500000279731225e+00 0 0 0 +23099 1 4.8503035492886625e+01 5.4216906971522377e+01 3.4999999998716076e+00 0 0 0 +23100 1 5.0747723436066615e+01 5.5312933753156969e+01 3.5000000492113377e+00 0 0 0 +22466 1 5.2431239447918962e+01 5.4751457423891559e+01 1.7500000431157903e+00 0 0 0 +22511 1 5.4675927287120409e+01 5.5847484147867220e+01 1.7500000182002653e+00 0 0 0 +23104 1 5.4114755485273001e+01 5.4189981105019555e+01 3.5000000177252795e+00 0 0 0 +23149 1 5.2992411448512364e+01 5.6408960526495953e+01 3.5000000302460519e+00 0 0 0 +22513 1 5.6359443415692560e+01 5.5286007735695470e+01 1.7499999979714215e+01 0 0 -1 +23153 1 5.6359443441621494e+01 5.5286007758734932e+01 3.5000000223555974e+00 0 0 0 +22515 1 5.8042959488479497e+01 5.4724531248353436e+01 1.7499999798931420e+00 0 0 0 +22520 1 6.0287647560763652e+01 5.5820557632100844e+01 1.7500000002817724e+00 0 0 0 +22524 1 6.3654679646397376e+01 5.4697604300886802e+01 1.7500000287171746e+00 0 0 0 +23158 1 6.1971163617803427e+01 5.5259080961402944e+01 3.4999999914292452e+00 0 0 0 +22518 1 6.1971163590802597e+01 5.5259080947498603e+01 3.3669346129423517e-08 0 0 0 +22577 1 6.5899367436493776e+01 5.5793630998137075e+01 1.7500000307409751e+00 0 0 0 +22580 1 6.9827570347757700e+01 5.6328180354537935e+01 2.6550436190271624e-08 0 0 0 +22581 1 6.9266400823620472e+01 5.4670678294949930e+01 1.7500000207292192e+00 0 0 0 +23220 1 6.9827570413850310e+01 5.6328180330546324e+01 3.5000000269375096e+00 0 0 0 +22583 1 7.0949917829775231e+01 5.4109203231476698e+01 1.7499999995134914e+01 0 0 -1 +22586 1 7.1511091595784904e+01 5.5766705162890254e+01 1.7500000154009427e+00 0 0 0 +23223 1 7.0949917893196641e+01 5.4109203207961954e+01 3.5000000255873251e+00 0 0 0 +22588 1 7.6561515764874898e+01 5.4082220303904329e+01 1.7499999993151611e+01 0 0 -1 +22590 1 7.4878099151932986e+01 5.4643755060099643e+01 1.7499999932350705e+00 0 0 0 +22642 1 7.5439348692786652e+01 5.6301282972265206e+01 1.7499999987959995e+01 0 0 -1 +22644 1 7.7122769711518274e+01 5.5739813121977186e+01 1.7499999749863147e+00 0 0 0 +23228 1 7.6561515831436552e+01 5.4082220308412445e+01 3.4999999753543425e+00 0 0 0 +23282 1 7.5439348739617330e+01 5.6301282990342543e+01 3.4999999937363739e+00 0 0 0 +22648 1 8.0489602818612354e+01 5.4616343502692111e+01 1.7499999509541324e+00 0 0 0 +22647 1 8.1049142890404909e+01 5.6273771256622567e+01 1.7499999961036124e+01 0 0 -1 +22650 1 8.2176993071013982e+01 5.4056376185488126e+01 1.7499999964100066e+01 0 0 -1 +22653 1 8.2732307469456032e+01 5.5710501467516764e+01 1.7499999436919027e+00 0 0 0 +23287 1 8.1049142915556217e+01 5.6273771235978941e+01 3.4999999562083257e+00 0 0 0 +23290 1 8.2176993080900175e+01 5.4056376195731985e+01 3.4999999500112300e+00 0 0 0 +22657 1 8.6132426079733008e+01 5.4607195420205876e+01 1.7499999831430915e+00 0 0 0 +23349 1 8.6710920648165654e+01 5.6251123701140259e+01 3.4999999774190407e+00 0 0 0 +22709 1 8.6710920693822231e+01 5.6251123694444935e+01 1.7499999985307440e+01 0 0 -1 +22655 1 8.7753273264466841e+01 5.4048168259893330e+01 1.7499999961661377e+01 0 0 -1 +22711 1 8.8549510114614222e+01 5.5705178442798626e+01 1.7500000148812889e+00 0 0 0 +23295 1 8.7753273205356720e+01 5.4048168276042958e+01 3.5000000429000773e+00 0 0 0 +22458 1 4.5697175272401864e+01 5.6997362725373961e+01 1.7500000086872294e+00 0 0 0 +22503 1 4.7941863401395231e+01 5.8093389532070660e+01 1.7500000215421614e+00 0 0 0 +23141 1 4.6258347307521611e+01 5.8654865799282433e+01 3.4999999681727898e+00 0 0 0 +22507 1 5.1308895510400006e+01 5.6970436964860049e+01 1.7500000337377244e+00 0 0 0 +22508 1 5.0186551473587741e+01 5.9189416324206121e+01 1.7500000464900092e+00 0 0 0 +23142 1 4.8503035432189499e+01 5.9750892703423695e+01 3.5000000004859855e+00 0 0 0 +23145 1 4.9625379461438477e+01 5.7531913166817482e+01 3.5000000226303531e+00 0 0 0 +22512 1 5.3553583479610580e+01 5.8066463709494705e+01 1.7500000298832290e+00 0 0 0 +22563 1 5.4114755357782379e+01 5.9723966899021953e+01 1.7499999970062010e+01 0 0 -1 +23203 1 5.4114755358392365e+01 5.9723966927968569e+01 3.5000000502600654e+00 0 0 0 +23146 1 5.1870067467023212e+01 5.8627940048981500e+01 3.5000000334199446e+00 0 0 0 +22510 1 5.5237099433839639e+01 5.7504987386699433e+01 1.7499999985459123e+01 0 0 -1 +22516 1 5.6920615344617360e+01 5.6943510801122763e+01 1.7499999842633960e+00 0 0 0 +22565 1 5.5798271376228115e+01 5.9162490496776698e+01 1.7499999786866456e+00 0 0 0 +23150 1 5.5237099454867909e+01 5.7504987415531119e+01 3.5000000381559135e+00 0 0 0 +22569 1 5.9165303428949798e+01 5.8039537387077154e+01 1.7499999857077890e+00 0 0 0 +23208 1 5.9726475369719900e+01 5.9697040494968178e+01 3.4999999903967387e+00 0 0 0 +23211 1 6.0848819435734448e+01 5.7478060714114633e+01 3.4999999771062877e+00 0 0 0 +22568 1 5.9726475388853018e+01 5.9697040463156739e+01 6.9167692617913224e-09 0 0 0 +22571 1 6.0848819416401724e+01 5.7478060693115395e+01 2.5966738148869795e-08 0 0 0 +22573 1 6.2532335638925161e+01 5.6916584100587862e+01 1.7500000228375669e+00 0 0 0 +22574 1 6.1409991441151149e+01 5.9135563816707680e+01 1.7500000041034718e+00 0 0 0 +22578 1 6.4777023579324123e+01 5.8012610782941522e+01 1.7500000406054388e+00 0 0 0 +22632 1 6.7021711763299464e+01 5.9108637722453821e+01 1.7500000478766986e+00 0 0 0 +23270 1 6.5338195531201748e+01 5.9670113967328078e+01 3.5000000247484917e+00 0 0 0 +22630 1 6.5338195474241914e+01 5.9670113976607915e+01 4.9095666779259040e-08 0 0 0 +22582 1 6.8144054761503384e+01 5.6889657643118319e+01 1.7500000379616363e+00 0 0 0 +22634 1 6.8705227722578002e+01 5.8547161465834790e+01 1.5724242900520133e-08 0 0 0 +22636 1 7.0388740951363502e+01 5.7985684070741499e+01 1.7500000183199844e+00 0 0 0 +23274 1 6.8705227774275144e+01 5.8547161467408252e+01 3.5000000414303098e+00 0 0 0 +22640 1 7.3755787609906548e+01 5.6862730299945426e+01 1.7500000073263671e+00 0 0 0 +22641 1 7.2633423546666961e+01 5.9081710674236476e+01 1.7500000094749975e+00 0 0 0 +22639 1 7.4316919838302937e+01 5.8520219546539678e+01 1.7499999984436744e+01 0 0 -1 +22645 1 7.6000492389342639e+01 5.7958744251678631e+01 1.7499999984633614e+00 0 0 0 +23279 1 7.4316919872598817e+01 5.8520219555705062e+01 3.5000000032449856e+00 0 0 0 +22649 1 7.9367521292129823e+01 5.6836012942031175e+01 1.7499999605018668e+00 0 0 0 +22699 1 7.8245180165764907e+01 5.9054693809976989e+01 1.7499999897676952e+00 0 0 0 +22701 1 7.9929643048443651e+01 5.8493643816329026e+01 1.7499999990809847e+01 0 0 -1 +23341 1 7.9929643075076825e+01 5.8493643788999258e+01 3.4999999608677248e+00 0 0 0 +22703 1 8.1612969893958066e+01 5.7932870566202148e+01 1.7499999651186666e+00 0 0 0 +22707 1 8.4964193365170559e+01 5.6800413537907765e+01 1.7499999606467733e+00 0 0 0 +22708 1 8.3862484057419138e+01 5.9032524472747617e+01 1.7499999779710729e+00 0 0 0 +23346 1 8.5523443145144739e+01 5.8465026874489048e+01 3.4999999973942009e+00 0 0 0 +22706 1 8.5523443193212898e+01 5.8465026892825122e+01 1.7499999963915283e+01 0 0 -1 +22712 1 8.7168422266345004e+01 5.7856975171794573e+01 1.7499999902348402e+00 0 0 0 +22764 1 8.9214901383211227e+01 5.8939236755521904e+01 1.7500000250429653e+00 0 0 0 +22504 1 4.6819519326650379e+01 6.0312368970226785e+01 1.7499999980823771e+00 0 0 0 +22554 1 4.5697175189522277e+01 6.2531348400316524e+01 1.7500000172502337e+00 0 0 0 +23195 1 4.7380691326016525e+01 6.1969872177792993e+01 3.4999999687777592e+00 0 0 0 +22557 1 4.9064207389103807e+01 6.1408395840195439e+01 1.7500000184115403e+00 0 0 0 +22562 1 5.1308895413180302e+01 6.2504422716202981e+01 1.7500000081934963e+00 0 0 0 +23196 1 4.9625379393849137e+01 6.3065898916357142e+01 3.4999999862755860e+00 0 0 0 +23199 1 5.0747723367572370e+01 6.0846919497259023e+01 3.5000000159594489e+00 0 0 0 +22560 1 5.2992411333440991e+01 6.1942946339477032e+01 1.7499999969619065e+01 0 0 -1 +22561 1 5.2431239337560179e+01 6.0285443178696021e+01 1.7500000320870834e+00 0 0 0 +22566 1 5.4675927243814037e+01 6.1381470036398291e+01 1.7499999950999292e+00 0 0 0 +23200 1 5.2992411357328898e+01 6.1942946324098806e+01 3.5000000503363751e+00 0 0 0 +22620 1 5.6920615249337132e+01 6.2477496713887476e+01 1.7500000013643688e+00 0 0 0 +22570 1 5.8042959312209256e+01 6.0258517130744387e+01 1.7500000013926966e+00 0 0 0 +22622 1 5.8604131415859534e+01 6.1916020239126510e+01 1.7499999996691656e+01 0 0 -1 +22624 1 6.0287647436295508e+01 6.1354543588109777e+01 1.7500000030068676e+00 0 0 0 +23262 1 5.8604131388901713e+01 6.1916020254074773e+01 3.5000000054343325e+00 0 0 0 +22628 1 6.3654679418445546e+01 6.0231590388655199e+01 1.7500000236086413e+00 0 0 0 +22629 1 6.2532335487432597e+01 6.2450570191853565e+01 1.7500000371038735e+00 0 0 0 +23267 1 6.4215851452355324e+01 6.1889093737706155e+01 3.5000000192302170e+00 0 0 0 +22627 1 6.4215851431328090e+01 6.1889093688693677e+01 4.0949115954949470e-08 0 0 0 +22633 1 6.5899367219956176e+01 6.1327617203941912e+01 1.7500000381496088e+00 0 0 0 +22685 1 6.6460539455803897e+01 6.2985120614576175e+01 2.0136853505705139e-08 0 0 0 +22631 1 6.7582883215348346e+01 6.0766140611824589e+01 4.0925535147689643e-08 0 0 0 +23325 1 6.6460539468042086e+01 6.2985120625184983e+01 3.5000000310156429e+00 0 0 0 +23271 1 6.7582883231090094e+01 6.0766140617594729e+01 3.5000000259468562e+00 0 0 0 +22637 1 6.9266400574250625e+01 6.0204664629257742e+01 1.7500000201024906e+00 0 0 0 +22687 1 6.8144054565345243e+01 6.2423643923668024e+01 1.7500000204124408e+00 0 0 0 +22690 1 7.2072253385010882e+01 6.2958190355699770e+01 1.7499999993762014e+01 0 0 -1 +22691 1 7.1511091344121994e+01 6.1300691491198442e+01 1.7500000100598365e+00 0 0 0 +22693 1 7.3194615509262775e+01 6.0739221649328087e+01 4.9654513754288812e-09 0 0 0 +22696 1 7.3755787429667080e+01 6.2396716628547679e+01 1.7499999956720727e+00 0 0 0 +23330 1 7.2072253386368672e+01 6.2958190398984655e+01 3.5000000023131377e+00 0 0 0 +23333 1 7.3194615533645162e+01 6.0739221670743078e+01 3.5000000000617422e+00 0 0 0 +22695 1 7.4878098910128884e+01 6.0177741416928839e+01 1.7499999943813813e+00 0 0 0 +22700 1 7.7122769549875230e+01 6.1273799397661890e+01 1.7499999921142213e+00 0 0 0 +22698 1 7.8805834299308131e+01 6.0712103404254485e+01 1.7499999998503050e+01 0 0 -1 +22751 1 7.7684224009814500e+01 6.2931369310823889e+01 1.0357405854848935e-08 0 0 0 +22753 1 7.9367521195626665e+01 6.2369999110264004e+01 1.7500000071015795e+00 0 0 0 +22704 1 8.0489602732843267e+01 6.0150329763113312e+01 1.7499999984375576e+00 0 0 0 +23338 1 7.8805834323236226e+01 6.0712103379296749e+01 3.4999999829491490e+00 0 0 0 +23391 1 7.7684224018977048e+01 6.2931369305088268e+01 3.4999999857649162e+00 0 0 0 +22757 1 8.2732307403974531e+01 6.1244487590991099e+01 1.7500000104591369e+00 0 0 0 +23396 1 8.3289036021425261e+01 6.2903213553502560e+01 3.5000000065501338e+00 0 0 0 +22756 1 8.3289036021310068e+01 6.2903213577189440e+01 2.2734430334614849e-08 0 0 0 +22761 1 8.6132426135843630e+01 6.0141181518911687e+01 1.7500000008996019e+00 0 0 0 +22762 1 8.4964193369245763e+01 6.2334399513927821e+01 1.7500000150721764e+00 0 0 0 +23399 1 8.4431590477327163e+01 6.0687193866824437e+01 3.4999999937877080e+00 0 0 0 +22759 1 8.4431590510101032e+01 6.0687193897749438e+01 5.3896527384525073e-09 0 0 0 +22765 1 8.8549510161285028e+01 6.1239164364307932e+01 1.7500000123546928e+00 0 0 0 +23458 1 8.9045575936436549e+01 6.2838577280017375e+01 3.5000000052428701e+00 0 0 0 +21858 1 8.4431592052075672e+01 8.8357121455226363e+01 1.4000000125537071e+01 0 -1 0 +22818 1 8.9045575947661021e+01 6.2838577260369178e+01 1.7499999990235235e+01 0 0 -1 +19298 1 8.4431592070346070e+01 8.8357121383313540e+01 1.2988150643877816e-07 0 -1 0 +22558 1 4.7941863361420758e+01 6.3627375226088752e+01 1.7500000303648302e+00 0 0 0 +22608 1 4.6819519356071844e+01 6.5846354692557568e+01 1.7500000022814679e+00 0 0 0 +23193 1 4.6258347313134458e+01 6.4188851513633807e+01 3.4999999843470366e+00 0 0 0 +22612 1 5.0186551427699179e+01 6.4723402102205739e+01 1.7500000123137560e+00 0 0 0 +23251 1 5.0747723372956152e+01 6.6380905333790139e+01 3.5000000205402970e+00 0 0 0 +23250 1 4.8503035441287054e+01 6.5284878446532346e+01 3.5000000004099698e+00 0 0 0 +22611 1 5.0747723314979631e+01 6.6380905299349294e+01 1.7499999969982316e+01 0 0 -1 +22614 1 5.1870067383411168e+01 6.4161925830217371e+01 1.7499999998089535e+01 0 0 -1 +22616 1 5.3553583397482711e+01 6.3600449524393738e+01 1.7499999947299241e+00 0 0 0 +22617 1 5.2431239335368524e+01 6.5819429039258225e+01 1.7500000031160283e+00 0 0 0 +23254 1 5.1870067412834487e+01 6.4161925855697262e+01 3.5000000047911586e+00 0 0 0 +22619 1 5.7481787247766789e+01 6.4134999880695389e+01 1.7499999987629494e+01 0 0 -1 +22621 1 5.5798271294232258e+01 6.4696476377740851e+01 1.7500000031500327e+00 0 0 0 +23259 1 5.7481787233234940e+01 6.4134999890891351e+01 3.5000000147330752e+00 0 0 0 +22673 1 5.6359443291810528e+01 6.6353979552944125e+01 1.7499999966468316e+01 0 0 -1 +23313 1 5.6359443288941861e+01 6.6353979550558861e+01 3.5000000301469392e+00 0 0 0 +22625 1 5.9165303353692060e+01 6.3573523382998069e+01 1.7499999976574010e+00 0 0 0 +22675 1 5.8042959301568196e+01 6.5792503106205615e+01 1.7500000074125759e+00 0 0 0 +22679 1 6.1409991336129586e+01 6.4669549854248061e+01 1.7500000260385156e+00 0 0 0 +22684 1 6.3654679383748039e+01 6.5765576594800265e+01 1.7500000289607132e+00 0 0 0 +23318 1 6.1971163401962066e+01 6.6327053107394335e+01 3.5000000012075922e+00 0 0 0 +23321 1 6.3093507330592573e+01 6.4108073432885078e+01 3.5000000093917452e+00 0 0 0 +22681 1 6.3093507317849394e+01 6.4108073431332897e+01 4.7416400534220915e-08 0 0 0 +22678 1 6.1971163395314868e+01 6.6327053123185763e+01 4.2742997063504777e-08 0 0 0 +22683 1 6.4777023469639360e+01 6.3546597012030738e+01 1.7500000341645932e+00 0 0 0 +22688 1 6.7021711641986869e+01 6.4642624003799739e+01 1.7500000062210073e+00 0 0 0 +22692 1 7.0388740763919330e+01 6.3519670348688813e+01 1.7500000158908113e+00 0 0 0 +22741 1 6.9266400500922174e+01 6.5738650930836812e+01 1.7499999990204493e+00 0 0 0 +22743 1 7.0949917521955271e+01 6.5177175869390837e+01 1.7499999983456743e+01 0 0 -1 +22745 1 7.2633423462058190e+01 6.4615696939071725e+01 1.7500000094191364e+00 0 0 0 +23383 1 7.0949917511800422e+01 6.5177175861462203e+01 3.5000000443909980e+00 0 0 0 +22748 1 7.6561515561233776e+01 6.5150192808337408e+01 3.6469295219793534e-08 0 0 0 +22749 1 7.6000492259458767e+01 6.3492730496479332e+01 1.7499999971295561e+00 0 0 0 +22750 1 7.4878098872264729e+01 6.5711727591986318e+01 1.7499999993453486e+00 0 0 0 +23388 1 7.6561515564969483e+01 6.5150192800618157e+01 3.4999999474969758e+00 0 0 0 +22754 1 7.8245180078456841e+01 6.4588679918025207e+01 1.7500000015361623e+00 0 0 0 +22808 1 8.0489602740853442e+01 6.5684315726130876e+01 1.7500000003539646e+00 0 0 0 +22758 1 8.1612969881476261e+01 6.3466856596201012e+01 1.7500000133256137e+00 0 0 0 +22810 1 8.2176993025180849e+01 6.5124348352461709e+01 1.9222784139522364e-08 0 0 0 +23450 1 8.2176993038413741e+01 6.5124348348485313e+01 3.4999999930539718e+00 0 0 0 +22812 1 8.3862484102296165e+01 6.4566510298002143e+01 1.7500000217393465e+00 0 0 0 +22817 1 8.6132426182064521e+01 6.5675167167091544e+01 1.7500000121939454e+00 0 0 0 +22816 1 8.7168422353826045e+01 6.3390961040291209e+01 1.7500000128652253e+00 0 0 0 +22819 1 8.9214901342676100e+01 6.4473222480976304e+01 1.7499999726872204e+00 0 0 0 +23455 1 8.7753273374626659e+01 6.5116139970708815e+01 3.5000000213627462e+00 0 0 0 +22815 1 8.7753273350220240e+01 6.5116139944481617e+01 1.7499999984085544e+01 0 0 -1 +22609 1 4.5697175281860844e+01 6.8065334176596679e+01 1.7500000167237966e+00 0 0 0 +22663 1 4.7941863424139989e+01 6.9161361066539953e+01 1.7499999957820909e+00 0 0 0 +23247 1 4.7380691388837889e+01 6.7503857946891529e+01 3.4999999841217235e+00 0 0 0 +22613 1 4.9064207396773604e+01 6.6942381598910544e+01 1.7499999854246022e+00 0 0 0 +22667 1 5.1308895460929577e+01 6.8038408586993611e+01 1.7499999899859251e+00 0 0 0 +23305 1 4.9625379487491628e+01 6.8599884765885619e+01 3.4999999996481628e+00 0 0 0 +22665 1 4.9625379420784206e+01 6.8599884720762290e+01 1.7499999986300335e+01 0 0 -1 +22671 1 5.4675927182655705e+01 6.6915455903321103e+01 1.7499999948002807e+00 0 0 0 +22672 1 5.3553583479729610e+01 6.9134435476175028e+01 1.7499999838037161e+00 0 0 0 +22670 1 5.5237099412345742e+01 6.8572959208414190e+01 1.7499999976240190e+01 0 0 -1 +22676 1 5.6920615271256054e+01 6.8011482664402948e+01 1.7500000017520532e+00 0 0 0 +23310 1 5.5237099414661067e+01 6.8572959259316079e+01 3.5000000059789591e+00 0 0 0 +22680 1 6.0287647428599470e+01 6.6888529679055338e+01 1.7500000317946174e+00 0 0 0 +22729 1 5.9165303458567998e+01 6.9107509416807247e+01 1.7500000251308594e+00 0 0 0 +22731 1 6.0848819391806032e+01 6.8546032847834681e+01 5.6280080692171195e-08 0 0 0 +23371 1 6.0848819396398746e+01 6.8546032846168444e+01 3.4999999907622774e+00 0 0 0 +22733 1 6.2532335521856979e+01 6.7984556358271192e+01 1.7500000305224628e+00 0 0 0 +22737 1 6.5899367206247547e+01 6.6861603489840022e+01 1.7500000195358363e+00 0 0 0 +22738 1 6.4777023523424603e+01 6.9080583255969685e+01 1.7499999994317297e+00 0 0 0 +22740 1 6.9827570198352689e+01 6.7396152904366673e+01 1.7499999990893468e+01 0 0 -1 +22742 1 6.8144054597453746e+01 6.7957630226202227e+01 1.7500000204508097e+00 0 0 0 +22796 1 7.0388740886703914e+01 6.9053656626444464e+01 1.7500000423920030e+00 0 0 0 +23380 1 6.9827570159337952e+01 6.7396152935503224e+01 3.5000000326826326e+00 0 0 0 +22746 1 7.1511091354935203e+01 6.6834677737519627e+01 1.7500000014735251e+00 0 0 0 +22800 1 7.3755787465084410e+01 6.7930702757342829e+01 1.7500000166858811e+00 0 0 0 +22802 1 7.5439348554616828e+01 6.7369255376189201e+01 3.5814522077156496e-08 0 0 0 +22804 1 7.7122769555772393e+01 6.6807785465282208e+01 1.7500000006591738e+00 0 0 0 +22805 1 7.6000492344883909e+01 6.9026716500916976e+01 1.7500000266326585e+00 0 0 0 +23442 1 7.5439348582783154e+01 6.7369255363056396e+01 3.4999999978125920e+00 0 0 0 +22809 1 7.9367521257541085e+01 6.7903985013195637e+01 1.7499999789373426e+00 0 0 0 +22807 1 8.1049142895729020e+01 6.7341743236703010e+01 3.1062383740263561e-08 0 0 0 +22813 1 8.2732307487530662e+01 6.6778473362667199e+01 1.7499999938348865e+00 0 0 0 +22863 1 8.1612970000080566e+01 6.9000842300626331e+01 1.7499999848547321e+00 0 0 0 +23447 1 8.1049142915767447e+01 6.7341743218911276e+01 3.4999999540603866e+00 0 0 0 +22867 1 8.4964193490591924e+01 6.7868385089978119e+01 1.7499999955599421e+00 0 0 0 +22869 1 8.6710920738112222e+01 6.7319095199615589e+01 1.7499999958698954e+01 0 0 -1 +23509 1 8.6710920796666485e+01 6.7319095207626205e+01 3.5000000153548183e+00 0 0 0 +22871 1 8.8549510156060336e+01 6.6773149918336216e+01 1.7499999802602804e+00 0 0 0 +22872 1 8.7168422366740757e+01 6.8924946424753699e+01 1.7499999605072361e+00 0 0 0 +22664 1 4.6819519365752051e+01 7.1380340542228410e+01 1.7499999950494700e+00 0 0 0 +23301 1 4.6258347360695140e+01 6.9722837295198104e+01 3.4999999721880353e+00 0 0 0 +22668 1 5.0186551469121319e+01 7.0257387994377368e+01 1.7499999922506162e+00 0 0 0 +22717 1 4.9064207389587345e+01 7.2476367532383790e+01 1.7499999895130467e+00 0 0 0 +23302 1 4.8503035476124573e+01 7.0818864332923454e+01 3.4999999845204344e+00 0 0 0 +22662 1 4.8503035414601925e+01 7.0818864345184991e+01 1.7499999997995978e+01 0 0 -1 +22721 1 5.2431239382197802e+01 7.1353415001648798e+01 1.7499999491573333e+00 0 0 0 +22723 1 5.4114755413654450e+01 7.0791938754384063e+01 1.7499999932956833e+01 0 0 -1 +22726 1 5.4675927334560150e+01 7.2449441954093444e+01 1.7499999580252661e+00 0 0 0 +23363 1 5.4114755415810670e+01 7.0791938779050028e+01 3.5000000109398486e+00 0 0 0 +22725 1 5.5798271421869615e+01 7.0230462369176280e+01 1.7499999911435773e+00 0 0 0 +22728 1 5.9726475517252702e+01 7.0765012625958278e+01 5.2419281858881087e-08 0 0 0 +22730 1 5.8042959463300903e+01 7.1326489171722301e+01 1.7500000192975955e+00 0 0 0 +22784 1 6.0287647650731948e+01 7.2422515820230799e+01 1.7500000374335505e+00 0 0 0 +23368 1 5.9726475496666431e+01 7.0765012632974830e+01 3.5000000044693116e+00 0 0 0 +22734 1 6.1409991505318743e+01 7.0203536061581104e+01 1.7500000424579067e+00 0 0 0 +22788 1 6.3654679551443436e+01 7.1299562831132178e+01 1.7500000302582444e+00 0 0 0 +22790 1 6.5338195587847835e+01 7.0738086482425558e+01 1.7985413161696814e-08 0 0 0 +22792 1 6.7021711806598731e+01 7.0176610251857610e+01 1.7500000037041492e+00 0 0 0 +22793 1 6.5899367415993382e+01 7.2395589757771830e+01 1.7500000197158834e+00 0 0 0 +23430 1 6.5338195592205480e+01 7.0738086500028260e+01 3.4999999983421599e+00 0 0 0 +23431 1 6.7582883397927574e+01 7.1834113157129110e+01 3.5000000248027470e+00 0 0 0 +22791 1 6.7582883428952812e+01 7.1834113132653940e+01 1.7499999991894278e+01 0 0 -1 +22794 1 6.8705227751489772e+01 6.9615134022890004e+01 1.7499999996145540e+01 0 0 -1 +22797 1 6.9266400740677284e+01 7.1272637106517280e+01 1.7500000115459635e+00 0 0 0 +23434 1 6.8705227748113231e+01 6.9615134013709408e+01 3.5000000364350372e+00 0 0 0 +22801 1 7.2633423609286481e+01 7.0149683059569355e+01 1.7500000481045392e+00 0 0 0 +22851 1 7.1511091647366570e+01 7.2368663814230501e+01 1.7500000509845435e+00 0 0 0 +23493 1 7.3194615777721936e+01 7.1807193941720499e+01 3.5000000790869903e+00 0 0 0 +22853 1 7.3194615772186680e+01 7.1807193922098350e+01 4.6524102827900524e-08 0 0 0 +22799 1 7.4316919862749458e+01 6.9588191861973854e+01 2.6943486774848423e-08 0 0 0 +22855 1 7.4878099076873937e+01 7.1245713615786372e+01 1.7500000590754661e+00 0 0 0 +22860 1 7.7122769796688615e+01 7.2341771329762992e+01 1.7500000277617183e+00 0 0 0 +23439 1 7.4316919893945666e+01 6.9588191863125616e+01 3.5000000450774453e+00 0 0 0 +22859 1 7.8245180225218192e+01 7.0122665824909589e+01 1.7500000067073529e+00 0 0 0 +22861 1 7.9929643104919762e+01 6.9561615684231725e+01 5.4943593604033394e-08 0 0 0 +22864 1 8.0489602920832610e+01 7.1218301400569970e+01 1.7499999950203633e+00 0 0 0 +23501 1 7.9929643159320918e+01 6.9561615669551344e+01 3.4999999283601619e+00 0 0 0 +23498 1 7.8805834571643629e+01 7.1780075181372681e+01 3.4999999522581677e+00 0 0 0 +22858 1 7.8805834466113453e+01 7.1780075218411824e+01 8.8507994250490174e-08 0 0 0 +22917 1 8.2732307722837376e+01 7.2312458840026324e+01 1.7499999825577093e+00 0 0 0 +22866 1 8.5523443332336939e+01 6.9532998157764752e+01 1.7499999961369745e+01 0 0 -1 +22868 1 8.3862484280518032e+01 7.0100495804621616e+01 1.7499999770563945e+00 0 0 0 +22919 1 8.4431590718820601e+01 7.1755164992469446e+01 7.6778246227446988e-09 0 0 0 +22921 1 8.6132426397254434e+01 7.1209152540222050e+01 1.7499999438469636e+00 0 0 0 +23506 1 8.5523443364346420e+01 6.9532998153047444e+01 3.4999999943958446e+00 0 0 0 +23559 1 8.4431590784491860e+01 7.1755164962948413e+01 3.4999999484361650e+00 0 0 0 +22924 1 8.9214901497053347e+01 7.0007207759186585e+01 1.7499999434427393e+00 0 0 0 +22925 1 8.8549510366886494e+01 7.2307135209477167e+01 1.7499999240558806e+00 0 0 0 +25595 1 8.5523444385117159e+01 8.6134954512149491e+01 1.4000000103509466e+01 0 0 0 +25598 1 8.6132427339829476e+01 8.7811109098740545e+01 1.5750000053187856e+01 0 0 0 +22714 1 4.5697175184335229e+01 7.3599320023536833e+01 1.7500000394617459e+00 0 0 0 +22718 1 4.7941863334283035e+01 7.4695346996748782e+01 1.7500000287218367e+00 0 0 0 +23355 1 4.7380691351132100e+01 7.3037843822823362e+01 3.4999999825924046e+00 0 0 0 +23353 1 4.6258347276584537e+01 7.5256823202792120e+01 3.5000000002371618e+00 0 0 0 +22713 1 4.6258347229536824e+01 7.5256823226816508e+01 6.5039593067412187e-08 0 0 0 +22715 1 4.7380691298356716e+01 7.3037843799635823e+01 3.5864770798127783e-08 0 0 0 +22722 1 5.1308895479490666e+01 7.3572394554265728e+01 1.7499999565184117e+00 0 0 0 +22772 1 5.0186551460902166e+01 7.5791374000734208e+01 1.7499999797290244e+00 0 0 0 +22720 1 5.2992411418837591e+01 7.3010918223093469e+01 1.7499999927137985e+01 0 0 -1 +22776 1 5.3553583539006013e+01 7.4668421459642929e+01 1.7499999405521607e+00 0 0 0 +23360 1 5.2992411451826399e+01 7.3010918215953808e+01 3.4999999893403220e+00 0 0 0 +23414 1 5.1870067510872673e+01 7.5229897749645232e+01 3.4999999767371244e+00 0 0 0 +22774 1 5.1870067461849203e+01 7.5229897776529853e+01 1.7499999941979127e+01 0 0 -1 +22779 1 5.7481787591259909e+01 7.5202972010577412e+01 5.4476471349090884e-09 0 0 0 +22780 1 5.6920615484995871e+01 7.3545468757555724e+01 1.7499999865687803e+00 0 0 0 +22781 1 5.5798271565608765e+01 7.5764448417955094e+01 1.7499999706677614e+00 0 0 0 +23419 1 5.7481787540011808e+01 7.5202971989871131e+01 3.4999999906998487e+00 0 0 0 +22782 1 5.8604131681053936e+01 7.2983992375978431e+01 3.5544033130077862e-08 0 0 0 +22785 1 5.9165303699483509e+01 7.4641495599069344e+01 1.7500000320069995e+00 0 0 0 +23422 1 5.8604131640694987e+01 7.2983992388514096e+01 3.4999999946347056e+00 0 0 0 +22787 1 6.4215851675868791e+01 7.2957066236124717e+01 3.4514347859902099e-08 0 0 0 +22789 1 6.2532335773827803e+01 7.3518542634433018e+01 1.7500000328504501e+00 0 0 0 +22839 1 6.1409991740941841e+01 7.5737522265278628e+01 1.7500000518247838e+00 0 0 0 +22841 1 6.3093507705514128e+01 7.5176045931044627e+01 5.0743077551861580e-08 0 0 0 +23427 1 6.4215851713091254e+01 7.2957066230990321e+01 3.4999999953281722e+00 0 0 0 +23481 1 6.3093507722745017e+01 7.5176045923690012e+01 3.5000000121486550e+00 0 0 0 +22843 1 6.4777023826572261e+01 7.4614569537702977e+01 1.7500000182941755e+00 0 0 0 +22848 1 6.7021712121351172e+01 7.5710596452195716e+01 1.7499999839474301e+00 0 0 0 +23485 1 6.6460539806548937e+01 7.4053093141339758e+01 3.4999999912565212e+00 0 0 0 +22845 1 6.6460539804849788e+01 7.4053093141073020e+01 5.8634642746822035e-10 0 0 0 +22847 1 6.8144054900752664e+01 7.3491616401161650e+01 1.7500000170172316e+00 0 0 0 +22852 1 7.0388741237991312e+01 7.4587642644118674e+01 1.7500000301430629e+00 0 0 0 +22856 1 7.3755787834759772e+01 7.3464688760794445e+01 1.7500000737620525e+00 0 0 0 +22905 1 7.2633424072838523e+01 7.5683669019361901e+01 1.7500000512003351e+00 0 0 0 +23490 1 7.2072253836589994e+01 7.4026162605606416e+01 3.5000000822370634e+00 0 0 0 +22850 1 7.2072253865143438e+01 7.4026162562104844e+01 9.6017481718453508e-09 0 0 0 +22909 1 7.6000492727867538e+01 7.4560702425112765e+01 1.7500000664831077e+00 0 0 0 +22913 1 7.9367521542946264e+01 7.3437970721414516e+01 1.7500000353714869e+00 0 0 0 +22914 1 7.8245180603533015e+01 7.5656651519527898e+01 1.7500000599179435e+00 0 0 0 +23551 1 7.7684224464197385e+01 7.3999341106982698e+01 3.5000000182180577e+00 0 0 0 +22911 1 7.7684224373172697e+01 7.3999341110545785e+01 7.8778971943127347e-08 0 0 0 +22918 1 8.1612970363443424e+01 7.4534827787187439e+01 1.7500000166640206e+00 0 0 0 +23556 1 8.3289036505770426e+01 7.3971184575731243e+01 3.4999999280812690e+00 0 0 0 +22916 1 8.3289036383224470e+01 7.3971184606458380e+01 6.6291538740735210e-08 0 0 0 +22922 1 8.4964193728303414e+01 7.3402370396405743e+01 1.7499999589410682e+00 0 0 0 +22967 1 8.3862484650583113e+01 7.5634481142185578e+01 1.7500000042027695e+00 0 0 0 +22971 1 8.7168422665771672e+01 7.4458931746990956e+01 1.7499999301159361e+00 0 0 0 +22974 1 8.9214901453378857e+01 7.5541193077247769e+01 1.7499998585105565e+00 0 0 0 +23613 1 8.9045576073988229e+01 7.3906548016226054e+01 3.4999999558644870e+00 0 0 0 +22973 1 8.9045576051886869e+01 7.3906547914883717e+01 1.7499999881964886e+01 0 0 -1 +22767 1 4.7380691284863268e+01 7.8571829811225811e+01 5.6600210070810430e-08 0 0 0 +22768 1 4.6819519292312080e+01 7.6914326481781160e+01 1.7500000460044784e+00 0 0 0 +22773 1 4.9064207375369797e+01 7.8010353505843582e+01 1.7500000058523562e+00 0 0 0 +23411 1 5.0747723426710060e+01 7.7448877251849126e+01 3.5000000055152936e+00 0 0 0 +22771 1 5.0747723362497339e+01 7.7448877255957967e+01 1.7499999951241637e+01 0 0 -1 +22777 1 5.2431239445690871e+01 7.6887400996756043e+01 1.7499999456031030e+00 0 0 0 +22831 1 5.4675927454249525e+01 7.7983427915448488e+01 1.7499999716995167e+00 0 0 0 +22833 1 5.6359443655835577e+01 7.7421951647738723e+01 1.7499999974161014e+01 0 0 -1 +23473 1 5.6359443603421653e+01 7.7421951622027535e+01 3.4999999996528421e+00 0 0 0 +22835 1 5.8042959692334158e+01 7.6860475291790337e+01 1.7500000059332721e+00 0 0 0 +22840 1 6.0287647897402003e+01 7.7956502043065939e+01 1.7500000441778636e+00 0 0 0 +22838 1 6.1971163870220607e+01 7.7395025608537807e+01 6.5290084976285157e-08 0 0 0 +22844 1 6.3654679848533497e+01 7.6833549123112874e+01 1.7500000279690437e+00 0 0 0 +23478 1 6.1971163894603613e+01 7.7395025552873264e+01 3.5000000116524168e+00 0 0 0 +22897 1 6.5899367741536182e+01 7.7929575972158418e+01 1.7499999963837680e+00 0 0 0 +22901 1 6.9266401099061000e+01 7.6806623174479256e+01 1.7499999937543496e+00 0 0 0 +23540 1 6.9827570869446049e+01 7.8464125064836438e+01 3.5000000031325302e+00 0 0 0 +22900 1 6.9827570923389658e+01 7.8464125039617556e+01 1.7499999980279437e+01 0 0 -1 +22906 1 7.1511092109777692e+01 7.7902649767294307e+01 1.7500000048853179e+00 0 0 0 +23543 1 7.0949918110803210e+01 7.6245148042815842e+01 3.5000000523007309e+00 0 0 0 +22903 1 7.0949918179704454e+01 7.6245148019473206e+01 1.7499999987003058e+01 0 0 -1 +22910 1 7.4878099558361441e+01 7.6779699457617141e+01 1.7500000465250829e+00 0 0 0 +22959 1 7.7122770292950761e+01 7.7875757061268956e+01 1.7500000619462788e+00 0 0 0 +23548 1 7.6561516207419203e+01 7.6218164567159917e+01 3.5000000171155521e+00 0 0 0 +23597 1 7.5439349375557271e+01 7.8437227107226647e+01 3.5000000414349142e+00 0 0 0 +22908 1 7.6561516172648226e+01 7.6218164572104939e+01 9.6192061019643900e-08 0 0 0 +22957 1 7.5439349392156018e+01 7.8437227098981793e+01 3.7176913562209137e-08 0 0 0 +22963 1 8.0489603393126743e+01 7.6752286943188253e+01 1.7500000450654929e+00 0 0 0 +22968 1 8.2732308189991329e+01 7.7846444205054397e+01 1.7500000269140059e+00 0 0 0 +23602 1 8.1049143750802813e+01 7.8409714236458584e+01 3.4999999879600656e+00 0 0 0 +23605 1 8.2176993710592583e+01 7.6192319328986756e+01 3.4999999655079717e+00 0 0 0 +22962 1 8.1049143645075475e+01 7.8409714259348107e+01 1.1596882036321174e-07 0 0 0 +22965 1 8.2176993553709863e+01 7.6192319376135657e+01 9.7584102130826285e-08 0 0 0 +22972 1 8.6132426730407786e+01 7.6743137816858336e+01 1.7499999657561511e+00 0 0 0 +23646 1 8.6710921454189801e+01 7.8387065790833446e+01 3.4999999632296261e+00 0 0 0 +23006 1 8.6710921253075654e+01 7.8387065785485746e+01 1.7499999912534655e+01 0 0 -1 +23008 1 8.8549510685045490e+01 7.7841120567866639e+01 1.7499998572505726e+00 0 0 0 +23610 1 8.7753273843875462e+01 7.6184110618614312e+01 3.4999999456651389e+00 0 0 0 +22970 1 8.7753273738246293e+01 7.6184110543684540e+01 1.7499999873393794e+01 0 0 -1 +22769 1 4.5697175160419192e+01 7.9133306031515360e+01 1.7500000695319149e+00 0 0 0 +22821 1 4.6258347233007470e+01 8.0790809231092069e+01 8.2053317893774805e-08 0 0 0 +22823 1 4.7941863335066543e+01 8.0229333023285932e+01 1.7500000301363630e+00 0 0 0 +22827 1 5.1308895536526961e+01 7.9106380539026432e+01 1.7499999642735518e+00 0 0 0 +22828 1 5.0186551466452912e+01 8.1325359965898159e+01 1.7499999776798820e+00 0 0 0 +23465 1 4.9625379460678026e+01 7.9667856705803160e+01 3.5000000157547113e+00 0 0 0 +22822 1 4.8503035365979215e+01 8.1886836311741106e+01 1.3146985116005156e-08 0 0 0 +22825 1 4.9625379410377604e+01 7.9667856696421779e+01 1.7499999976138632e+01 0 0 -1 +22832 1 5.3553583673073319e+01 8.0202407445596137e+01 1.7499999773363211e+00 0 0 0 +23523 1 5.4114755594006340e+01 8.1859910687961474e+01 3.5000000141044856e+00 0 0 0 +22883 1 5.4114755652893017e+01 8.1859910714412436e+01 1.7499999946173023e+01 0 0 -1 +22830 1 5.5237099732735103e+01 7.9640931260105347e+01 1.7499999955728285e+01 0 0 -1 +22836 1 5.6920615653528266e+01 7.9079454763378862e+01 1.7500000013842383e+00 0 0 0 +22885 1 5.5798271717622278e+01 8.1298434400164112e+01 1.7499999878470289e+00 0 0 0 +23470 1 5.5237099684419867e+01 7.9640931232043982e+01 3.5000000112116147e+00 0 0 0 +22888 1 5.9726475951311663e+01 8.1832984893055240e+01 8.5653184232349328e-08 0 0 0 +22889 1 5.9165303913444774e+01 8.0175481667917651e+01 1.7500000667096705e+00 0 0 0 +22891 1 6.0848819897992861e+01 7.9614005242111261e+01 8.8606885740897284e-08 0 0 0 +23528 1 5.9726475912975424e+01 8.1832984854152940e+01 3.5000000437442149e+00 0 0 0 +23531 1 6.0848819881204662e+01 7.9614005229306258e+01 3.5000000274952572e+00 0 0 0 +22893 1 6.2532336054069333e+01 7.9052528824376850e+01 1.7500000552329944e+00 0 0 0 +22894 1 6.1409991981942753e+01 8.1271508446179865e+01 1.7500000654975765e+00 0 0 0 +22898 1 6.4777024082761358e+01 8.0148555684726901e+01 1.7500000112006799e+00 0 0 0 +22945 1 6.5338196136296233e+01 8.1806058814825590e+01 1.2138664587433197e-08 0 0 0 +22947 1 6.7021712445355121e+01 8.1244582486514275e+01 1.7500000059889558e+00 0 0 0 +23585 1 6.5338196180523454e+01 8.1806058802590442e+01 3.5000000232932713e+00 0 0 0 +22902 1 6.8144055259799217e+01 7.9025602495336656e+01 1.7499999855707578e+00 0 0 0 +22951 1 7.0388741675590637e+01 8.0121628628343061e+01 1.7500000025388633e+00 0 0 0 +23589 1 6.8705228472070871e+01 8.0683106136080241e+01 3.5000000075315771e+00 0 0 0 +22949 1 6.8705228473040989e+01 8.0683106120738017e+01 1.7499999988440596e+01 0 0 -1 +22955 1 7.3755788296114247e+01 7.8998674583740197e+01 1.7500000278310903e+00 0 0 0 +22956 1 7.2633424515577971e+01 8.1217654848787816e+01 1.7500000142853838e+00 0 0 0 +22960 1 7.6000493258414068e+01 8.0094688075834753e+01 1.7500000312572548e+00 0 0 0 +23594 1 7.4316920791531345e+01 8.0656163574889888e+01 3.5000000312540722e+00 0 0 0 +22954 1 7.4316920836949421e+01 8.0656163548515764e+01 7.7139275981263719e-09 0 0 0 +22964 1 7.9367522091108924e+01 7.8971956237742347e+01 1.7500000550278254e+00 0 0 0 +22996 1 7.8245181217397715e+01 8.1190637056211372e+01 1.7500000424893065e+00 0 0 0 +23638 1 7.9929644122462008e+01 8.0629586703525575e+01 3.4999999889329452e+00 0 0 0 +22998 1 7.9929644084442273e+01 8.0629586734147892e+01 1.1519018367623810e-07 0 0 0 +23000 1 8.1612970877181098e+01 8.0068813177503614e+01 1.7500000746132285e+00 0 0 0 +23004 1 8.4964194166967175e+01 7.8936355742702190e+01 1.7499999897802010e+00 0 0 0 +23005 1 8.3862485144650861e+01 8.1168466498329195e+01 1.7500000223997125e+00 0 0 0 +23643 1 8.5523444222252820e+01 8.0600968804080907e+01 3.4999999542080569e+00 0 0 0 +23003 1 8.5523444032563518e+01 8.0600968797732747e+01 1.7499999978878719e+01 0 0 -1 +23009 1 8.7168422917077663e+01 7.9992917060379526e+01 1.7499998707937889e+00 0 0 0 +23030 1 8.9214901532138583e+01 8.1075178449339759e+01 1.7499997369920370e+00 0 0 0 +22824 1 4.6819519280729494e+01 8.2448312480070868e+01 1.7500000136932823e+00 0 0 0 +22874 1 4.5697175198280213e+01 8.4667292025557316e+01 1.7500000278616954e+00 0 0 0 +22875 1 4.7380691270111598e+01 8.4105815785115723e+01 1.0826127898403224e-08 0 0 0 +22876 1 4.9625379381763025e+01 8.5201842608199158e+01 1.7499999962223555e+01 0 0 -1 +22877 1 4.9064207366283767e+01 8.3544339458388436e+01 1.7499999713371299e+00 0 0 0 +22882 1 5.1308895510895603e+01 8.4640366399088421e+01 1.7499999504651966e+00 0 0 0 +22881 1 5.2431239490013432e+01 8.2421386910302772e+01 1.7499999582268178e+00 0 0 0 +22886 1 5.4675927519931442e+01 8.3517413840102932e+01 1.7499999785372298e+00 0 0 0 +23520 1 5.2992411527343535e+01 8.4078890054662338e+01 3.5000000031859191e+00 0 0 0 +22880 1 5.2992411566872057e+01 8.4078890086867347e+01 1.7499999928139314e+01 0 0 -1 +22935 1 5.6920615699393174e+01 8.4613440704544260e+01 1.7500000455837035e+00 0 0 0 +22890 1 5.8042959806698917e+01 8.2394461290974192e+01 1.7500000550768613e+00 0 0 0 +22937 1 5.8604131993624193e+01 8.4051964457055476e+01 9.4068924379830282e-08 0 0 0 +22939 1 6.0287648024437559e+01 8.3490488038915316e+01 1.7500000814771794e+00 0 0 0 +23577 1 5.8604131917079563e+01 8.4051964462316320e+01 3.5000000298449958e+00 0 0 0 +22942 1 6.4215852123689260e+01 8.4025038456472842e+01 3.2061414380675133e-08 0 0 0 +22943 1 6.3654680047787181e+01 8.2367535198060409e+01 1.7500000489152601e+00 0 0 0 +22944 1 6.2532336143997632e+01 8.4586514836791324e+01 1.7500000641286717e+00 0 0 0 +23582 1 6.4215852159138763e+01 8.4025038437661095e+01 3.5000000292782714e+00 0 0 0 +22948 1 6.5899367950252667e+01 8.3463561935816088e+01 1.7500000105511910e+00 0 0 0 +23622 1 6.6460540290788686e+01 8.5121065126610304e+01 3.5000000363794341e+00 0 0 0 +23586 1 6.7582884057666021e+01 8.2902085209506765e+01 3.5000000393071518e+00 0 0 0 +22982 1 6.6460540283429211e+01 8.5121065111508798e+01 1.7499999971853715e+01 0 0 -1 +22946 1 6.7582884054163372e+01 8.2902085215889016e+01 1.7499999970159035e+01 0 0 -1 +22952 1 6.9266401490086920e+01 8.2340609087484935e+01 1.7499999922722473e+00 0 0 0 +22984 1 6.8144055510283380e+01 8.4559588292903641e+01 1.7500000070915944e+00 0 0 0 +22988 1 7.1511092486892537e+01 8.3436635532913499e+01 1.7500000239205660e+00 0 0 0 +22993 1 7.3755788795404726e+01 8.4532660287558485e+01 1.7500000134233153e+00 0 0 0 +23627 1 7.2072254653632115e+01 8.5094134203359260e+01 3.5000000432233338e+00 0 0 0 +23630 1 7.3194616699911549e+01 8.2875165595358538e+01 3.5000000242277269e+00 0 0 0 +22987 1 7.2072254701656618e+01 8.5094134138732983e+01 1.7499999989398994e+01 0 0 -1 +22990 1 7.3194616749809811e+01 8.2875165570750582e+01 2.2641450772671291e-08 0 0 0 +22992 1 7.4878100075454569e+01 8.2313685183287475e+01 1.7500000223299030e+00 0 0 0 +22997 1 7.7122770884673855e+01 8.3409742618389473e+01 1.7500000095073280e+00 0 0 0 +23019 1 7.9367522683112995e+01 8.4505941701785929e+01 1.7500000536838645e+00 0 0 0 +23001 1 8.0489603955240909e+01 8.2286272300986994e+01 1.7500000558646509e+00 0 0 0 +23635 1 7.8805835610764376e+01 8.2848046289274507e+01 3.4999999999457883e+00 0 0 0 +23657 1 7.7684225563600549e+01 8.5067312240045709e+01 3.5000000003963407e+00 0 0 0 +22995 1 7.8805835620661938e+01 8.2848046295494939e+01 6.9387319535497356e-08 0 0 0 +23017 1 7.7684225588470539e+01 8.5067312234087694e+01 4.8298595277375472e-08 0 0 0 +23022 1 8.3289037444916943e+01 8.5039155415012829e+01 1.3431456421710688e-07 0 0 0 +23023 1 8.2732308722130185e+01 8.3380429593356141e+01 1.7500000469054446e+00 0 0 0 +23662 1 8.3289037512381825e+01 8.5039155382898386e+01 3.4999999448069796e+00 0 0 0 +23025 1 8.4431591576019073e+01 8.2823135720298566e+01 7.3421171991247497e-08 0 0 0 +23027 1 8.6132427165388933e+01 8.2277123263333706e+01 1.7499999225218066e+00 0 0 0 +23028 1 8.4964194603709501e+01 8.4470341184874925e+01 1.7499999838989739e+00 0 0 0 +23665 1 8.4431591734851494e+01 8.2823135667008799e+01 3.4999999506755541e+00 0 0 0 +23031 1 8.8549511016972161e+01 8.3375106114727430e+01 1.7499997510532816e+00 0 0 0 +23039 1 8.9045576280682994e+01 8.4974519079641340e+01 1.7499999765967424e+01 0 0 -1 +23679 1 8.9045576336029228e+01 8.4974519025674127e+01 3.4999998153026057e+00 0 0 0 +23035 1 8.5523444487111391e+01 8.6134954415712826e+01 6.2263829647690727e-08 0 0 0 +25594 1 8.3862485583219794e+01 8.6702452145291147e+01 1.5750000138650666e+01 0 0 0 +22878 1 4.7941863321957051e+01 8.5763318944986878e+01 1.7499999935679629e+00 0 0 0 +22926 1 4.6819519413302821e+01 8.7982298442684083e+01 1.7500000097573400e+00 0 0 0 +22873 1 4.6258347303315681e+01 8.6324795220984413e+01 5.5636448354612944e-08 0 0 0 +22928 1 5.0186551455948006e+01 8.6859345816217385e+01 1.7499999507527542e+00 0 0 0 +22927 1 4.8503035414439921e+01 8.7420822197617383e+01 1.1149626799248150e-08 0 0 0 +19204 1 5.0747723414250189e+01 8.8516848972486841e+01 1.7499999951330551e+01 0 -1 -1 +19844 1 5.0747723416607840e+01 8.8516848948169198e+01 3.4999999978331986e+00 0 -1 0 +22931 1 5.3553583621002311e+01 8.5736393229616226e+01 1.7499999571150011e+00 0 0 0 +22932 1 5.2431239453981426e+01 8.7955372670229778e+01 1.7499999597156690e+00 0 0 0 +23569 1 5.1870067516252234e+01 8.6297869509265993e+01 3.4999999868297191e+00 0 0 0 +22929 1 5.1870067534509360e+01 8.6297869558309600e+01 1.7499999928603419e+01 0 0 -1 +22934 1 5.7481787751892682e+01 8.6270943897527943e+01 7.2403785425046525e-08 0 0 0 +22936 1 5.5798271625601338e+01 8.6832420200088436e+01 1.7500000189047584e+00 0 0 0 +23574 1 5.7481787658992225e+01 8.6270943884182785e+01 3.5000000143230658e+00 0 0 0 +19219 1 5.6359443657741501e+01 8.8489923327572043e+01 3.7104868806854877e-08 0 -1 0 +19859 1 5.6359443553650067e+01 8.8489923338333710e+01 3.5000000180311028e+00 0 -1 0 +22940 1 5.9165303895634509e+01 8.5709467627136718e+01 1.7500000715679656e+00 0 0 0 +22975 1 5.8042959713676623e+01 8.7928447093743216e+01 1.7500000561488631e+00 0 0 0 +22977 1 6.1409991934437208e+01 8.6805494303212143e+01 1.7500000653780574e+00 0 0 0 +22978 1 6.3093507969473642e+01 8.6244018010257250e+01 4.4727212355475709e-08 0 0 0 +22981 1 6.3654680012517382e+01 8.7901521019199748e+01 1.7500000133574816e+00 0 0 0 +23618 1 6.3093507999759957e+01 8.6244017978649993e+01 3.5000000286194486e+00 0 0 0 +19222 1 6.1971163920679473e+01 8.8462997491324955e+01 7.1610031441831811e-08 0 -1 0 +19862 1 6.1971163941462606e+01 8.8462997467087419e+01 3.4999999837743201e+00 0 -1 0 +22980 1 6.4777024212226863e+01 8.5682541594065924e+01 1.7500000243573615e+00 0 0 0 +22985 1 6.7021712527839597e+01 8.6778568240903638e+01 1.7499999874007881e+00 0 0 0 +22989 1 7.0388741904411219e+01 8.5655614275393162e+01 1.7500000042554515e+00 0 0 0 +23010 1 6.9266401548271347e+01 8.7874594666242899e+01 1.7499999814191449e+00 0 0 0 +23012 1 7.2633424862410934e+01 8.6751640445364131e+01 1.7500000240083002e+00 0 0 0 +23651 1 7.0949918731232088e+01 8.7313119501513967e+01 3.5000000600105170e+00 0 0 0 +23011 1 7.0949918796422196e+01 8.7313119478233929e+01 1.7499999961636298e+01 0 0 -1 +23015 1 7.6000493810522457e+01 8.5628673671770017e+01 1.7500000149449320e+00 0 0 0 +23016 1 7.4878100468602980e+01 8.7847670701330131e+01 1.7499999939469155e+00 0 0 0 +23654 1 7.6561517227585441e+01 8.7286135741624975e+01 3.4999999826944648e+00 0 0 0 +23014 1 7.6561517290340390e+01 8.7286135707234678e+01 2.8181954354031634e-08 0 0 0 +23020 1 7.8245181765037486e+01 8.6724622533143332e+01 1.7500000172135413e+00 0 0 0 +23032 1 8.0489604525847909e+01 8.7820257838107452e+01 1.7500000506549191e+00 0 0 0 +23024 1 8.1612971475884393e+01 8.5602798641352777e+01 1.7500000502533590e+00 0 0 0 +23673 1 8.2176994753823166e+01 8.7260290226642539e+01 3.4999999879510524e+00 0 0 0 +23033 1 8.2176994732055547e+01 8.7260290270432037e+01 1.4594339568691810e-07 0 0 0 +23034 1 8.3862485646884764e+01 8.6702452054469049e+01 1.7500000467931291e+00 0 0 0 +23038 1 8.6132427517305814e+01 8.7811108983346998e+01 1.7499999718159780e+00 0 0 0 +23036 1 8.7753274316121974e+01 8.7252081930674862e+01 1.7499999933936063e+01 0 0 -1 +23037 1 8.7168423259659960e+01 8.5526902659157884e+01 1.7499998806163675e+00 0 0 0 +23040 1 8.9214901640321017e+01 8.6609164318443746e+01 1.7499997654900203e+00 0 0 0 +23676 1 8.7753274466840409e+01 8.7252081790017300e+01 3.4999998998409905e+00 0 0 0 +23043 1 4.5697175668667398e+01 4.5929390858276157e+01 5.2499999705162876e+00 0 0 0 +23049 1 4.7941863737674190e+01 4.7025417857965742e+01 5.2499999519555693e+00 0 0 0 +25584 1 8.1612971480036222e+01 8.5602798680060403e+01 1.5750000116136601e+01 0 0 0 +23682 1 4.7380691739543238e+01 4.5367914654232742e+01 6.9999999785356133e+00 0 0 0 +23045 1 4.9064207800946882e+01 4.4806438281946150e+01 5.2499999624530007e+00 0 0 0 +23053 1 5.1308895715297545e+01 4.5902465177582073e+01 5.2499999710502179e+00 0 0 0 +23691 1 4.9625379728939720e+01 4.6463941475274382e+01 6.9999999552037817e+00 0 0 0 +23057 1 5.4675927494466571e+01 4.4779512343257515e+01 5.2499999771152783e+00 0 0 0 +23058 1 5.3553583727084316e+01 4.6998491941573704e+01 5.2500000015905410e+00 0 0 0 +23695 1 5.2992411613917795e+01 4.5340988725994201e+01 6.9999999990775130e+00 0 0 0 +23061 1 5.6920615533685535e+01 4.5875538969250222e+01 5.2499999752483104e+00 0 0 0 +23696 1 5.5237099648805966e+01 4.6437015600096899e+01 6.9999999741241163e+00 0 0 0 +23060 1 5.8604131665641624e+01 4.5314062467403041e+01 3.4999999930672345e+00 0 0 0 +23063 1 6.0287647629238677e+01 4.4752585658280687e+01 5.2499999795093331e+00 0 0 0 +23080 1 5.9165303674251838e+01 4.6971565521549778e+01 5.2499999703708582e+00 0 0 0 +23700 1 5.8604131655371475e+01 4.5314062388027835e+01 6.9999999580964243e+00 0 0 0 +23086 1 6.4215851748167623e+01 4.5287135248515497e+01 3.5000000006410663e+00 0 0 0 +23084 1 6.2532335785082466e+01 4.5848611980130080e+01 5.2499999822263206e+00 0 0 0 +23726 1 6.4215851702119181e+01 4.5287135215944339e+01 6.9999999672513260e+00 0 0 0 +23087 1 6.6460539870069837e+01 4.6383161782141123e+01 3.5000000102505502e+00 0 0 0 +23088 1 6.5899367474559625e+01 4.4725658422937514e+01 5.2500000008790808e+00 0 0 0 +23089 1 6.4777023841812849e+01 4.6944638424745335e+01 5.2499999817803298e+00 0 0 0 +23727 1 6.6460539836871064e+01 4.6383161740074847e+01 6.9999999903335839e+00 0 0 0 +23092 1 6.8144054940879528e+01 4.5821684803311491e+01 5.2500000025432838e+00 0 0 0 +23125 1 7.0388741194520733e+01 4.6917711071186858e+01 5.2499999661460990e+00 0 0 0 +23094 1 7.1511091654810443e+01 4.4698732025358403e+01 5.2499999460267261e+00 0 0 0 +23127 1 7.2072253783765532e+01 4.6356231024143526e+01 3.4999999543288745e+00 0 0 0 +23129 1 7.3755787740202223e+01 4.5794757196605865e+01 5.2499999529492802e+00 0 0 0 +23767 1 7.2072253735617920e+01 4.6356230979877921e+01 6.9999999599684024e+00 0 0 0 +23133 1 7.7122769700475970e+01 4.4671839953992738e+01 5.2500000026202978e+00 0 0 0 +23134 1 7.6000492559379467e+01 4.6890771194760646e+01 5.2499999969758049e+00 0 0 0 +23132 1 7.7684224234064047e+01 4.6329410008428063e+01 3.5000000117407546e+00 0 0 0 +23137 1 7.9367521262681890e+01 4.5768039879518831e+01 5.2500000137186911e+00 0 0 0 +23772 1 7.7684224146455080e+01 4.6329410043036781e+01 7.0000000074635160e+00 0 0 0 +23185 1 8.3289035925696268e+01 4.6301254676121943e+01 3.5000000290430973e+00 0 0 0 +23139 1 8.2732307263997001e+01 4.4642528475107042e+01 5.2500000129590578e+00 0 0 0 +23183 1 8.1612969848953625e+01 4.6864897671252429e+01 5.2500000208756212e+00 0 0 0 +23825 1 8.3289035889286794e+01 4.6301254721571006e+01 7.0000000265167479e+00 0 0 0 +23187 1 8.4964193188829853e+01 4.5732440738019761e+01 5.2500000235908333e+00 0 0 0 +23190 1 8.9045575798571150e+01 4.6236618881820476e+01 3.4999999950440701e+00 0 0 0 +23191 1 8.8549509910221161e+01 4.4637205615407780e+01 5.2499999878252863e+00 0 0 0 +23192 1 8.7168422139471033e+01 4.6789002508270116e+01 5.2500000099666755e+00 0 0 0 +23830 1 8.9045575807663937e+01 4.6236618783350487e+01 6.9999999947422804e+00 0 0 0 +23050 1 4.6819519598393768e+01 4.9244397395205915e+01 5.2499999430012805e+00 0 0 0 +21855 1 7.8805836358810822e+01 8.8382031808185445e+01 1.4000000013262056e+01 0 -1 0 +23687 1 4.6258347659687402e+01 4.7586894142654650e+01 6.9999999507916950e+00 0 0 0 +23054 1 5.0186551717369099e+01 4.8121444722192187e+01 5.2499999820602596e+00 0 0 0 +23068 1 4.9064207586386893e+01 5.0340424274550820e+01 5.2499999575181207e+00 0 0 0 +23688 1 4.8503035684922011e+01 4.8682921123250935e+01 6.9999999527692554e+00 0 0 0 +23710 1 5.0747723583152776e+01 4.9778947903288554e+01 6.9999999767707628e+00 0 0 0 +23072 1 5.2431239627221707e+01 4.9217471556706435e+01 5.2499999800279467e+00 0 0 0 +23077 1 5.4675927475585553e+01 5.0313498274545218e+01 5.2500000127364697e+00 0 0 0 +23714 1 5.4114755618486932e+01 4.8655995158718099e+01 6.9999999905329338e+00 0 0 0 +23692 1 5.1870067681507507e+01 4.7559968360481932e+01 6.9999999906545458e+00 0 0 0 +23075 1 5.6359443615852513e+01 4.9752021886168578e+01 3.5000000044534367e+00 0 0 0 +23078 1 5.7481787597769419e+01 4.7533042134730486e+01 3.5000000059727636e+00 0 0 0 +23076 1 5.5798271640952912e+01 4.8094518693264924e+01 5.2500000012046675e+00 0 0 0 +23715 1 5.6359443635559543e+01 4.9752021834605557e+01 7.0000000124400943e+00 0 0 0 +23718 1 5.7481787581923371e+01 4.7533042119152192e+01 6.9999999872302485e+00 0 0 0 +23081 1 5.8042959664724961e+01 4.9190545336098864e+01 5.2500000070040347e+00 0 0 0 +23113 1 6.0287647762761473e+01 5.0286571687093286e+01 5.2499999718684807e+00 0 0 0 +23083 1 6.3093507730517082e+01 4.7506115153662201e+01 3.4999999993103210e+00 0 0 0 +23115 1 6.1971163790569470e+01 4.9725094945108232e+01 3.4999999861243092e+00 0 0 0 +23085 1 6.1409991705346265e+01 4.8067591829798303e+01 5.2499999703176776e+00 0 0 0 +23117 1 6.3654679778038407e+01 4.9163618198794616e+01 5.2499999901463799e+00 0 0 0 +23723 1 6.3093507664030732e+01 4.7506115167742998e+01 6.9999999734487846e+00 0 0 0 +23755 1 6.1971163755907064e+01 4.9725094963629381e+01 6.9999999569195701e+00 0 0 0 +23121 1 6.7021712112761548e+01 4.8040665054072392e+01 5.2499999917103413e+00 0 0 0 +23122 1 6.5899367631381310e+01 5.0259644763060756e+01 5.2500000143013539e+00 0 0 0 +23126 1 6.9266400980096122e+01 4.9136691792009323e+01 5.2499999657845828e+00 0 0 0 +23124 1 7.0949917968211693e+01 4.8575216671719410e+01 3.4999999715566052e+00 0 0 0 +23130 1 7.2633423874220369e+01 4.8013737664759361e+01 5.2499999529025994e+00 0 0 0 +23171 1 7.1511091792510129e+01 5.0232718619847930e+01 5.2499999801035875e+00 0 0 0 +23764 1 7.0949917958131351e+01 4.8575216626796873e+01 6.9999999656168370e+00 0 0 0 +23175 1 7.4878099255179421e+01 4.9109768491769046e+01 5.2499999734593956e+00 0 0 0 +23177 1 7.6561515868572144e+01 4.8548233721290096e+01 3.5000000124384720e+00 0 0 0 +23180 1 7.7122769818139247e+01 5.0205826614123588e+01 5.2499999838172862e+00 0 0 0 +23817 1 7.6561515815791253e+01 4.8548233717395810e+01 6.9999999889488764e+00 0 0 0 +23179 1 7.8245180277991793e+01 4.7986720861006198e+01 5.2500000090442587e+00 0 0 0 +23184 1 8.0489602810274519e+01 4.9082357005534007e+01 5.2500000243533398e+00 0 0 0 +23182 1 8.2176993023742824e+01 4.8522389683224162e+01 3.5000000069081363e+00 0 0 0 +23237 1 8.2732307419447338e+01 5.0176515065062581e+01 5.2499999952731811e+00 0 0 0 +23822 1 8.2176992978062103e+01 4.8522389748133925e+01 7.0000000425283773e+00 0 0 0 +23188 1 8.3862483975813532e+01 4.7964551731947616e+01 5.2500000245419169e+00 0 0 0 +23241 1 8.6132425970807063e+01 4.9073208987625321e+01 5.2500000141753800e+00 0 0 0 +23243 1 8.7753273118099287e+01 4.8514181862047650e+01 3.5000000175293029e+00 0 0 0 +23244 1 8.9214901262212038e+01 4.7871264318882019e+01 5.2500000101344364e+00 0 0 0 +23245 1 8.8549510040915749e+01 5.0171192063103668e+01 5.2500000284898212e+00 0 0 0 +23883 1 8.7753273125848281e+01 4.8514181828060252e+01 6.9999999749349531e+00 0 0 0 +23065 1 4.5697175395799654e+01 5.1463376923979972e+01 5.2499999443879419e+00 0 0 0 +23069 1 4.7941863473924869e+01 5.2559403776785821e+01 5.2499999553913526e+00 0 0 0 +23704 1 4.6258347388583395e+01 5.3120880056821235e+01 6.9999999385565754e+00 0 0 0 +23706 1 4.7380691527833847e+01 5.0901900693775012e+01 6.9999999200267915e+00 0 0 0 +23073 1 5.1308895651250481e+01 5.1436451163121326e+01 5.2499999926407446e+00 0 0 0 +23101 1 5.0186551544623399e+01 5.3655430590370749e+01 5.2499999913150477e+00 0 0 0 +23707 1 4.9625379558920848e+01 5.1997927393847363e+01 6.9999999741650143e+00 0 0 0 +23105 1 5.3553583644493564e+01 5.2532477852732768e+01 5.2500000032310838e+00 0 0 0 +23711 1 5.2992411584296917e+01 5.0874974645061982e+01 6.9999999842651004e+00 0 0 0 +23743 1 5.1870067554367388e+01 5.3093954236810248e+01 6.9999999762383531e+00 0 0 0 +23109 1 5.6920615563155842e+01 5.1409524911349394e+01 5.2499999878390886e+00 0 0 0 +23110 1 5.5798271568026259e+01 5.3628504619646272e+01 5.2500000194705647e+00 0 0 0 +23747 1 5.5237099657099655e+01 5.1971001509560040e+01 7.0000000034555496e+00 0 0 0 +23112 1 6.0848819662251188e+01 5.1944074792242496e+01 3.4999999851007173e+00 0 0 0 +23114 1 5.9165303663427402e+01 5.2505551503454107e+01 5.2499999718820334e+00 0 0 0 +23752 1 6.0848819641585813e+01 5.1944074776051750e+01 6.9999999610703325e+00 0 0 0 +23118 1 6.2532335864324793e+01 5.1382598083429329e+01 5.2499999671952740e+00 0 0 0 +23159 1 6.1409991642782892e+01 5.3601577839554508e+01 5.2499999442015683e+00 0 0 0 +23163 1 6.4777023853739891e+01 5.2478624628393341e+01 5.2499999890911342e+00 0 0 0 +23168 1 6.7021712065282486e+01 5.3574651405787591e+01 5.2500000007276624e+00 0 0 0 +23166 1 6.8705228060462190e+01 5.3013175106864260e+01 3.5000000125338988e+00 0 0 0 +23167 1 6.8144055018144229e+01 5.1355671257474093e+01 5.2499999965312769e+00 0 0 0 +23169 1 6.9827570616161267e+01 5.0794193883504555e+01 3.4999999818207681e+00 0 0 0 +23172 1 7.0388741232872704e+01 5.2451697625570816e+01 5.2499999843361627e+00 0 0 0 +23806 1 6.8705228026103924e+01 5.3013175068831906e+01 6.9999999961479764e+00 0 0 0 +23809 1 6.9827570602524062e+01 5.0794193857974392e+01 6.9999999824517616e+00 0 0 0 +23176 1 7.3755787829240433e+01 5.1328743806729086e+01 5.2499999900815908e+00 0 0 0 +23225 1 7.2633423833648763e+01 5.3547724247955728e+01 5.2499999807598643e+00 0 0 0 +23174 1 7.5439348904071778e+01 5.0767296451307971e+01 3.5000000027700722e+00 0 0 0 +23227 1 7.4316920110098778e+01 5.2986233137397328e+01 3.4999999852357662e+00 0 0 0 +23229 1 7.6000492592886204e+01 5.2424757833054414e+01 5.2500000051050550e+00 0 0 0 +23814 1 7.5439348848403540e+01 5.0767296462247089e+01 6.9999999814182052e+00 0 0 0 +23867 1 7.4316920077515789e+01 5.2986233106977991e+01 6.9999999889750315e+00 0 0 0 +23232 1 7.9929643183512738e+01 5.2959657454326688e+01 3.4999999869366394e+00 0 0 0 +23233 1 7.9367521373662555e+01 5.1302026544510504e+01 5.2500000023351561e+00 0 0 0 +23234 1 7.8245180340121166e+01 5.3520707484441374e+01 5.2499999915373374e+00 0 0 0 +23872 1 7.9929643169166042e+01 5.2959657490326947e+01 6.9999999965715114e+00 0 0 0 +23235 1 8.1049142940527304e+01 5.0739784794879121e+01 3.4999999904307786e+00 0 0 0 +23238 1 8.1612969949872891e+01 5.2398884238296610e+01 5.2499999681516902e+00 0 0 0 +23875 1 8.1049142904540531e+01 5.0739784861280050e+01 7.0000000247394825e+00 0 0 0 +23240 1 8.6710920600087931e+01 5.0717137376462098e+01 3.5000000237245525e+00 0 0 0 +23294 1 8.5523443142998602e+01 5.2931040634103930e+01 3.4999999735501466e+00 0 0 0 +23242 1 8.4964193311334711e+01 5.1266427214479236e+01 5.2499999793897461e+00 0 0 0 +23292 1 8.3862484057078376e+01 5.3498538224364729e+01 5.2499999658183008e+00 0 0 0 +23880 1 8.6710920576617625e+01 5.0717137344285028e+01 7.0000000008346790e+00 0 0 0 +23934 1 8.5523443096346242e+01 5.2931040652783700e+01 6.9999999966664150e+00 0 0 0 +23296 1 8.7168422211622385e+01 5.2322988930292546e+01 5.2499999968680999e+00 0 0 0 +23299 1 8.9214901326558390e+01 5.3405250714731238e+01 5.2500000290190583e+00 0 0 0 +23097 1 4.6819519380891279e+01 5.4778383262282333e+01 5.2499999478892070e+00 0 0 0 +23736 1 4.7380691332911390e+01 5.6435886454960738e+01 6.9999999642387642e+00 0 0 0 +23102 1 4.9064207439742660e+01 5.5874410089948050e+01 5.2499999988938582e+00 0 0 0 +23739 1 4.8503035493423155e+01 5.4216906987342504e+01 6.9999999551781666e+00 0 0 0 +23740 1 5.0747723415019038e+01 5.5312933739182483e+01 6.9999999642901907e+00 0 0 0 +23106 1 5.2431239426007160e+01 5.4751457398623707e+01 5.2500000265636020e+00 0 0 0 +23151 1 5.4675927381844836e+01 5.5847484179799288e+01 5.2500000311081214e+00 0 0 0 +23744 1 5.4114755524615532e+01 5.4189981045953843e+01 7.0000000340505659e+00 0 0 0 +23789 1 5.2992411440106629e+01 5.6408960521633723e+01 7.0000000423480637e+00 0 0 0 +23154 1 5.8604131516160201e+01 5.6382034337480547e+01 3.4999999843562857e+00 0 0 0 +23157 1 5.9726475567847253e+01 5.4163054548700828e+01 3.4999999690881967e+00 0 0 0 +23155 1 5.8042959498428210e+01 5.4724531206915429e+01 5.2499999859104776e+00 0 0 0 +23160 1 6.0287647577006176e+01 5.5820557629959389e+01 5.2499999540236315e+00 0 0 0 +23794 1 5.8604131559058565e+01 5.6382034298299232e+01 6.9999999832302846e+00 0 0 0 +23797 1 5.9726475580666822e+01 5.4163054541722516e+01 6.9999999512778759e+00 0 0 0 +23215 1 6.4215851652985165e+01 5.6355107566164662e+01 3.5000000108901763e+00 0 0 0 +23164 1 6.3654679649221109e+01 5.4697604303254955e+01 5.2499999765904404e+00 0 0 0 +23855 1 6.4215851599098613e+01 5.6355107533967079e+01 6.9999999549662233e+00 0 0 0 +23162 1 6.5338195803732233e+01 5.4136127796152955e+01 3.5000000189958804e+00 0 0 0 +23217 1 6.5899367441228065e+01 5.5793630987455771e+01 5.2500000027371048e+00 0 0 0 +23219 1 6.7582883499086890e+01 5.5232154314108989e+01 3.5000000213463482e+00 0 0 0 +23859 1 6.7582883488300993e+01 5.5232154289221690e+01 7.0000000020862272e+00 0 0 0 +23802 1 6.5338195733310585e+01 5.4136127792108660e+01 6.9999999760070795e+00 0 0 0 +23221 1 6.9266400873138977e+01 5.4670678246492635e+01 5.2500000041995261e+00 0 0 0 +23224 1 7.3194615778967886e+01 5.5205235302218824e+01 3.5000000052480575e+00 0 0 0 +23226 1 7.1511091624461798e+01 5.5766705124980923e+01 5.2499999920373641e+00 0 0 0 +23864 1 7.3194615770226946e+01 5.5205235273092505e+01 6.9999999880230419e+00 0 0 0 +23230 1 7.4878099160527128e+01 5.4643755060883727e+01 5.2499999929138825e+00 0 0 0 +23284 1 7.7122769736049264e+01 5.5739813159303253e+01 5.2500000031222740e+00 0 0 0 +23286 1 7.8805834466401024e+01 5.5178117128702276e+01 3.4999999777517985e+00 0 0 0 +23288 1 8.0489602844280313e+01 5.4616343540630439e+01 5.2499999530540542e+00 0 0 0 +23926 1 7.8805834451657674e+01 5.5178117196372320e+01 7.0000000053122919e+00 0 0 0 +23293 1 8.2732307421874225e+01 5.5710501472641795e+01 5.2499999269173241e+00 0 0 0 +23291 1 8.4431590490079969e+01 5.5153207754882324e+01 3.4999999351317754e+00 0 0 0 +23297 1 8.6132426039681320e+01 5.4607195397620274e+01 5.2499999733136455e+00 0 0 0 +23931 1 8.4431590457519206e+01 5.5153207767710292e+01 6.9999999781218296e+00 0 0 0 +3849 1 9.0272007528377245e+01 5.4920872278307080e+01 3.5000000588397131e+00 -1 0 0 +23351 1 8.8549510008302846e+01 5.5705178377517278e+01 5.2500000137143035e+00 0 0 0 +4489 1 9.0272007528377259e+01 5.4920872222429978e+01 7.0000000174805930e+00 -1 0 0 +23098 1 4.5697175232491986e+01 5.6997362709604701e+01 5.2499999562408695e+00 0 0 0 +23143 1 4.7941863370296076e+01 5.8093389536474923e+01 5.2499999752995805e+00 0 0 0 +23781 1 4.6258347296642420e+01 5.8654865834046070e+01 6.9999999601286209e+00 0 0 0 +23147 1 5.1308895483434306e+01 5.6970436928989926e+01 5.2500000190802094e+00 0 0 0 +23148 1 5.0186551428310786e+01 5.9189416351233753e+01 5.2500000105050191e+00 0 0 0 +23782 1 4.8503035367050281e+01 5.9750892702201092e+01 6.9999999648708124e+00 0 0 0 +23785 1 4.9625379398665416e+01 5.7531913147193151e+01 6.9999999766517673e+00 0 0 0 +23152 1 5.3553583497756485e+01 5.8066463693160905e+01 5.2500000620319502e+00 0 0 0 +23786 1 5.1870067428224615e+01 5.8627940033717834e+01 7.0000000333691839e+00 0 0 0 +23156 1 5.6920615373664553e+01 5.6943510823069296e+01 5.2500000009870185e+00 0 0 0 +23205 1 5.5798271375356109e+01 5.9162490483445403e+01 5.2500000431673595e+00 0 0 0 +23207 1 5.7481787329632795e+01 5.8601013958353150e+01 3.4999999950956684e+00 0 0 0 +23847 1 5.7481787353159170e+01 5.8601013950873678e+01 7.0000000294862073e+00 0 0 0 +23209 1 5.9165303449263341e+01 5.8039537403094208e+01 5.2499999704295126e+00 0 0 0 +23212 1 6.3093507437522049e+01 5.8574087301208138e+01 3.4999999869261513e+00 0 0 0 +23213 1 6.2532335636760706e+01 5.6916584094439315e+01 5.2499999591784086e+00 0 0 0 +23214 1 6.1409991398009588e+01 5.9135563806629371e+01 5.2499999637818586e+00 0 0 0 +23852 1 6.3093507379320563e+01 5.8574087310422101e+01 6.9999999498350922e+00 0 0 0 +23216 1 6.6460539654129050e+01 5.7451134385406306e+01 3.5000000459792866e+00 0 0 0 +23218 1 6.4777023591416750e+01 5.8012610786017348e+01 5.2499999766486374e+00 0 0 0 +23272 1 6.7021711775105146e+01 5.9108637692016657e+01 5.2500000192004270e+00 0 0 0 +23856 1 6.6460539627316010e+01 5.7451134328263997e+01 7.0000000004931247e+00 0 0 0 +23222 1 6.8144054795205591e+01 5.6889657615784714e+01 5.2500000278212475e+00 0 0 0 +23276 1 7.0388740958446590e+01 5.7985684025048918e+01 5.2500000194428358e+00 0 0 0 +23275 1 7.0949917615714199e+01 5.9643189601863561e+01 3.5000000018428890e+00 0 0 0 +23278 1 7.2072253590328970e+01 5.7424204094495352e+01 3.4999999935351416e+00 0 0 0 +23280 1 7.3755787643729690e+01 5.6862730331837277e+01 5.2499999878780708e+00 0 0 0 +23281 1 7.2633423588506602e+01 5.9081710686257807e+01 5.2499999854753057e+00 0 0 0 +23915 1 7.0949917630924077e+01 5.9643189558329787e+01 7.0000000228861330e+00 0 0 0 +23918 1 7.2072253580722304e+01 5.7424204034425664e+01 7.0000000044073962e+00 0 0 0 +23285 1 7.6000492398693282e+01 5.7958744294056608e+01 5.2499999937367061e+00 0 0 0 +23337 1 7.6561515634674862e+01 5.9616206673999272e+01 3.5000000054721134e+00 0 0 0 +23977 1 7.6561515612297484e+01 5.9616206693188211e+01 6.9999999898714966e+00 0 0 0 +23283 1 7.7684224151091584e+01 5.7397383122464191e+01 3.4999999866734939e+00 0 0 0 +23289 1 7.9367521290036677e+01 5.6836012977260616e+01 5.2499999725028923e+00 0 0 0 +23339 1 7.8245180142231064e+01 5.9054693817209881e+01 5.2499999771310888e+00 0 0 0 +23923 1 7.7684224122214417e+01 5.7397383158669101e+01 6.9999999973733766e+00 0 0 0 +23342 1 8.2176993020105513e+01 5.9590362435806142e+01 3.4999999615179909e+00 0 0 0 +23343 1 8.1612969902389878e+01 5.7932870579781863e+01 5.2499999628319003e+00 0 0 0 +23345 1 8.3289036035215332e+01 5.7369227548781993e+01 3.4999999556538266e+00 0 0 0 +23982 1 8.2176992977464465e+01 5.9590362490042189e+01 6.9999999882329194e+00 0 0 0 +23985 1 8.3289036005325727e+01 5.7369227609916159e+01 6.9999999732169007e+00 0 0 0 +23347 1 8.4964193326403020e+01 5.6800413569643432e+01 5.2499999479695765e+00 0 0 0 +23348 1 8.3862484035820486e+01 5.9032524449643233e+01 5.2499999621063909e+00 0 0 0 +23350 1 8.9045575888770870e+01 5.7304591453523138e+01 3.5000000111041163e+00 0 0 0 +23352 1 8.7168422191793496e+01 5.7856975154744632e+01 5.2499999707652067e+00 0 0 0 +23403 1 8.7753273245162262e+01 5.9582154321332702e+01 3.4999999904839916e+00 0 0 0 +23404 1 8.9214901426474441e+01 5.8939236753358870e+01 5.2500000086891463e+00 0 0 0 +23990 1 8.9045575862616232e+01 5.7304591379993717e+01 6.9999999728155524e+00 0 0 0 +24043 1 8.7753273239420196e+01 5.9582154276258748e+01 7.0000000223002203e+00 0 0 0 +23144 1 4.6819519309094105e+01 6.0312368968095178e+01 5.2499999601968463e+00 0 0 0 +23194 1 4.5697175232821301e+01 6.2531348452257859e+01 5.2499999444524752e+00 0 0 0 +23835 1 4.7380691318055867e+01 6.1969872194993911e+01 6.9999999303840132e+00 0 0 0 +23197 1 4.9064207351987640e+01 6.1408395796678541e+01 5.2499999871207761e+00 0 0 0 +23202 1 5.1308895431874248e+01 6.2504422718559340e+01 5.2500000235622046e+00 0 0 0 +23836 1 4.9625379374350238e+01 6.3065898890261458e+01 6.9999999873092706e+00 0 0 0 +23839 1 5.0747723290688995e+01 6.0846919481241720e+01 7.0000000098136441e+00 0 0 0 +23201 1 5.2431239357927502e+01 6.0285443212612542e+01 5.2500000293360376e+00 0 0 0 +23206 1 5.4675927205890147e+01 6.1381469992123968e+01 5.2500000495629182e+00 0 0 0 +23204 1 5.6359443325920438e+01 6.0819993637366821e+01 3.5000000048078617e+00 0 0 0 +23258 1 5.5237099366470510e+01 6.3038973280907626e+01 3.5000000242199047e+00 0 0 0 +23260 1 5.6920615260291100e+01 6.2477496688498270e+01 5.2500000330797363e+00 0 0 0 +23844 1 5.6359443334378795e+01 6.0819993625253773e+01 7.0000000624820888e+00 0 0 0 +23898 1 5.5237099367445538e+01 6.3038973268908279e+01 7.0000000668435707e+00 0 0 0 +23263 1 6.0848819332064757e+01 6.3012046742228755e+01 3.4999999916549291e+00 0 0 0 +23210 1 5.8042959362408048e+01 6.0258517174453615e+01 5.2500000079815416e+00 0 0 0 +23264 1 6.0287647412241391e+01 6.1354543623467450e+01 5.2499999789524221e+00 0 0 0 +23903 1 6.0848819301539919e+01 6.3012046770882293e+01 6.9999999756792075e+00 0 0 0 +23266 1 6.1971163420302595e+01 6.0793066994126242e+01 3.4999999917051170e+00 0 0 0 +23268 1 6.3654679399940846e+01 6.0231590413106709e+01 5.2499999961154504e+00 0 0 0 +23269 1 6.2532335482519542e+01 6.2450570179394120e+01 5.2499999637299819e+00 0 0 0 +23906 1 6.1971163396250134e+01 6.0793066987799499e+01 6.9999999665126120e+00 0 0 0 +23273 1 6.5899367193218580e+01 6.1327617241469937e+01 5.2500000281440187e+00 0 0 0 +23277 1 6.9266400577883630e+01 6.0204664606146665e+01 5.2500000196686196e+00 0 0 0 +23327 1 6.8144054547086540e+01 6.2423643936690191e+01 5.2500000440925945e+00 0 0 0 +23329 1 6.9827570174170035e+01 6.1862166673038409e+01 3.5000000084670502e+00 0 0 0 +23969 1 6.9827570157691525e+01 6.1862166627998334e+01 7.0000000436495018e+00 0 0 0 +23331 1 7.1511091387588834e+01 6.1300691497924966e+01 5.2500000136330112e+00 0 0 0 +23336 1 7.3755787432813008e+01 6.2396716619401886e+01 5.2499999918320253e+00 0 0 0 +23334 1 7.5439348564708325e+01 6.1835269264551535e+01 3.4999999890130122e+00 0 0 0 +23335 1 7.4878098942765448e+01 6.0177741448850036e+01 5.2499999808985276e+00 0 0 0 +23340 1 7.7122769543597215e+01 6.1273799436895985e+01 5.2499999472307710e+00 0 0 0 +23974 1 7.5439348534590692e+01 6.1835269298754476e+01 6.9999999725390918e+00 0 0 0 +23393 1 7.9367521171506894e+01 6.2369999144250485e+01 5.2499999617180944e+00 0 0 0 +23344 1 8.0489602712284409e+01 6.0150329780197097e+01 5.2499999723432316e+00 0 0 0 +23395 1 8.1049142836777079e+01 6.1807757384551394e+01 3.4999999864653888e+00 0 0 0 +23397 1 8.2732307369506202e+01 6.1244487624792384e+01 5.2499999748605175e+00 0 0 0 +24035 1 8.1049142781889813e+01 6.1807757447119855e+01 6.9999999844101257e+00 0 0 0 +23400 1 8.6710920701105266e+01 6.1785109642254817e+01 3.5000000140640899e+00 0 0 0 +23401 1 8.6132426045861479e+01 6.0141181492013693e+01 5.2499999592148887e+00 0 0 0 +23402 1 8.4964193319289308e+01 6.2334399544656399e+01 5.2499999877007237e+00 0 0 0 +24040 1 8.6710920624668915e+01 6.1785109652426669e+01 7.0000000036814587e+00 0 0 0 +23405 1 8.8549510122384007e+01 6.1239164337896597e+01 5.2499999980891845e+00 0 0 0 +23198 1 4.7941863359101433e+01 6.3627375259174222e+01 5.2499999482307027e+00 0 0 0 +23248 1 4.6819519380176438e+01 6.5846354714197943e+01 5.2499999411532432e+00 0 0 0 +23833 1 4.6258347319117696e+01 6.4188851506253286e+01 6.9999999306999214e+00 0 0 0 +23252 1 5.0186551430474765e+01 6.4723402125894836e+01 5.2499999911267237e+00 0 0 0 +23890 1 4.8503035444726876e+01 6.5284878471134888e+01 6.9999999579673249e+00 0 0 0 +23891 1 5.0747723381257131e+01 6.6380905348645641e+01 7.0000000064218799e+00 0 0 0 +23255 1 5.4114755305954276e+01 6.5257952806108747e+01 3.5000000181973485e+00 0 0 0 +23256 1 5.3553583412281455e+01 6.3600449536167815e+01 5.2500000536762954e+00 0 0 0 +23257 1 5.2431239317685680e+01 6.5819429049518305e+01 5.2500000371920539e+00 0 0 0 +23895 1 5.4114755334868754e+01 6.5257952782038785e+01 7.0000000682080943e+00 0 0 0 +23894 1 5.1870067381466491e+01 6.4161925842427607e+01 7.0000000182420852e+00 0 0 0 +23261 1 5.5798271323502341e+01 6.4696476410571464e+01 5.2500000414621812e+00 0 0 0 +23265 1 5.9165303369909083e+01 6.3573523376476430e+01 5.2500000131471181e+00 0 0 0 +23315 1 5.8042959308679279e+01 6.5792503095582262e+01 5.2500000259784061e+00 0 0 0 +23317 1 5.9726475332798969e+01 6.5231026501153792e+01 3.5000000015142914e+00 0 0 0 +23957 1 5.9726475353341392e+01 6.5231026501719526e+01 6.9999999922713538e+00 0 0 0 +23319 1 6.1409991356919498e+01 6.4669549897282920e+01 5.2499999860974267e+00 0 0 0 +23324 1 6.3654679351607101e+01 6.5765576592189845e+01 5.2499999930351029e+00 0 0 0 +23322 1 6.5338195451609636e+01 6.5204100230699183e+01 3.4999999963316539e+00 0 0 0 +23323 1 6.4777023435737249e+01 6.3546596970544847e+01 5.2500000067151475e+00 0 0 0 +23328 1 6.7021711652399873e+01 6.4642623961435788e+01 5.2500000255974264e+00 0 0 0 +23379 1 6.7582883178706396e+01 6.6300126912584119e+01 3.5000000118125025e+00 0 0 0 +24019 1 6.7582883165651552e+01 6.6300126859611808e+01 7.0000000527823545e+00 0 0 0 +23962 1 6.5338195382513163e+01 6.5204100199742300e+01 7.0000000093958024e+00 0 0 0 +23326 1 6.8705227636607930e+01 6.4081147757033293e+01 3.5000000254736015e+00 0 0 0 +23332 1 7.0388740780264257e+01 6.3519670368598042e+01 5.2500000029305589e+00 0 0 0 +23381 1 6.9266400497769766e+01 6.5738650878941954e+01 5.2500000458007854e+00 0 0 0 +23966 1 6.8705227580206639e+01 6.4081147723274739e+01 7.0000000357467407e+00 0 0 0 +23385 1 7.2633423449412490e+01 6.4615696928173350e+01 5.2499999894643992e+00 0 0 0 +23384 1 7.3194615497933967e+01 6.6273207849994705e+01 3.5000000054389644e+00 0 0 0 +24024 1 7.3194615517113078e+01 6.6273207832019793e+01 6.9999999955384862e+00 0 0 0 +23387 1 7.4316919744982869e+01 6.4054205813999332e+01 3.4999999752479822e+00 0 0 0 +23389 1 7.6000492271189458e+01 6.3492730489789054e+01 5.2499999668090238e+00 0 0 0 +23390 1 7.4878098886221053e+01 6.5711727581467542e+01 5.2499999430743003e+00 0 0 0 +24027 1 7.4316919759245792e+01 6.4054205763740924e+01 6.9999999960139832e+00 0 0 0 +23392 1 7.9929643023954711e+01 6.4027629861178255e+01 3.4999999835081623e+00 0 0 0 +23394 1 7.8245180101129392e+01 6.4588679936290447e+01 5.2499999331968983e+00 0 0 0 +23448 1 8.0489602715754657e+01 6.5684315763162985e+01 5.2499999246098374e+00 0 0 0 +24032 1 7.9929642970270322e+01 6.4027629926447148e+01 6.9999999481547679e+00 0 0 0 +23446 1 7.8805834333854534e+01 6.6246089397269927e+01 3.4999999480098043e+00 0 0 0 +24086 1 7.8805834285375681e+01 6.6246089468524374e+01 6.9999999305277418e+00 0 0 0 +23398 1 8.1612969833830633e+01 6.3466856620274058e+01 5.2499999586270407e+00 0 0 0 +23454 1 8.5523443184245906e+01 6.3999012698165473e+01 3.5000000247437542e+00 0 0 0 +23451 1 8.4431590551208558e+01 6.6221179568584020e+01 3.5000000000463176e+00 0 0 0 +23452 1 8.3862484043868079e+01 6.4566510335122061e+01 5.2499999872610728e+00 0 0 0 +23457 1 8.6132426163051321e+01 6.5675167181765900e+01 5.2500000327353380e+00 0 0 0 +24094 1 8.5523443113157029e+01 6.3999012724905143e+01 7.0000000171104269e+00 0 0 0 +24091 1 8.4431590452072882e+01 6.6221179631568546e+01 6.9999999962179755e+00 0 0 0 +23456 1 8.7168422266427825e+01 6.3390960998342898e+01 5.2500000250981840e+00 0 0 0 +23459 1 8.9214901391906437e+01 6.4473222422740236e+01 5.2500000373030344e+00 0 0 0 +19295 1 7.8805836191674118e+01 8.8382031811159194e+01 3.5190520719652341e-08 0 -1 0 +3867 1 9.0272007528376562e+01 6.5988843892031170e+01 3.5000000215755627e+00 -1 0 0 +23249 1 4.5697175283555239e+01 6.8065334149428651e+01 5.2499999501686547e+00 0 0 0 +23303 1 4.7941863431282862e+01 6.9161361067328002e+01 5.2499999885750803e+00 0 0 0 +23887 1 4.7380691380096884e+01 6.7503857931088646e+01 6.9999999521110690e+00 0 0 0 +23253 1 4.9064207448879237e+01 6.6942381618949469e+01 5.2499999946156422e+00 0 0 0 +23307 1 5.1308895491312967e+01 6.8038408603478189e+01 5.2500000280292110e+00 0 0 0 +23945 1 4.9625379464469042e+01 6.8599884752592757e+01 7.0000000075170137e+00 0 0 0 +23309 1 5.2992411382457220e+01 6.7476932233292388e+01 3.5000000089504870e+00 0 0 0 +23311 1 5.4675927264843146e+01 6.6915455951381333e+01 5.2500000528620987e+00 0 0 0 +23312 1 5.3553583495674630e+01 6.9134435505892000e+01 5.2500000655233157e+00 0 0 0 +23949 1 5.2992411404766571e+01 6.7476932273958298e+01 7.0000000830915114e+00 0 0 0 +23316 1 5.6920615332056151e+01 6.8011482725457739e+01 5.2500000296027709e+00 0 0 0 +23314 1 5.8604131429670723e+01 6.7450006274080351e+01 3.5000000173589609e+00 0 0 0 +23320 1 6.0287647440731440e+01 6.6888529665237158e+01 5.2499999798323502e+00 0 0 0 +23369 1 5.9165303476082521e+01 6.9107509455511334e+01 5.2500000018323121e+00 0 0 0 +23954 1 5.8604131484940410e+01 6.7450006297300746e+01 7.0000000021885924e+00 0 0 0 +23375 1 6.4215851474599972e+01 6.7423079935307385e+01 3.5000000030254017e+00 0 0 0 +23373 1 6.2532335543797011e+01 6.7984556333663264e+01 5.2499999865799563e+00 0 0 0 +24015 1 6.4215851424745054e+01 6.7423079912389824e+01 6.9999999788311662e+00 0 0 0 +23376 1 6.6460539531146651e+01 6.8519106901549279e+01 3.5000000141900758e+00 0 0 0 +23377 1 6.5899367183497162e+01 6.6861603479025092e+01 5.2500000117953718e+00 0 0 0 +23378 1 6.4777023543155750e+01 6.9080583238489240e+01 5.2499999844708141e+00 0 0 0 +24016 1 6.6460539506884544e+01 6.8519106848476468e+01 7.0000000197492449e+00 0 0 0 +23382 1 6.8144054581089165e+01 6.7957630187366945e+01 5.2500000385686620e+00 0 0 0 +23436 1 7.0388740874690058e+01 6.9053656541105482e+01 5.2500000558490330e+00 0 0 0 +23386 1 7.1511091343878277e+01 6.6834677701772321e+01 5.2500000243544216e+00 0 0 0 +23438 1 7.2072253467881850e+01 6.8492176587726291e+01 3.5000000443055757e+00 0 0 0 +23440 1 7.3755787510673784e+01 6.7930702749754531e+01 5.2499999977293283e+00 0 0 0 +24078 1 7.2072253487262003e+01 6.8492176502406195e+01 7.0000000379179994e+00 0 0 0 +23444 1 7.7122769564770209e+01 6.6807785476053795e+01 5.2499999397408113e+00 0 0 0 +23445 1 7.6000492396238300e+01 6.9026716502026758e+01 5.2499999487650593e+00 0 0 0 +23443 1 7.7684224096473912e+01 6.8465355277106312e+01 3.4999999626167635e+00 0 0 0 +23449 1 7.9367521246008366e+01 6.7903985057989829e+01 5.2499999004730480e+00 0 0 0 +24083 1 7.7684224099222746e+01 6.8465355301663564e+01 6.9999999154475638e+00 0 0 0 +23453 1 8.2732307413884755e+01 6.6778473402429526e+01 5.2499999356632205e+00 0 0 0 +23503 1 8.1612969982656239e+01 6.9000842347613357e+01 5.2499999133193498e+00 0 0 0 +23505 1 8.3289036160212760e+01 6.8437199196631212e+01 3.4999999754914013e+00 0 0 0 +24145 1 8.3289036044778868e+01 6.8437199299229675e+01 6.9999999385017313e+00 0 0 0 +23507 1 8.4964193426544512e+01 6.7868385145837777e+01 5.2499999872714120e+00 0 0 0 +23510 1 8.9045575987791423e+01 6.8372562694979010e+01 3.5000000134629694e+00 0 0 0 +23511 1 8.8549510193298872e+01 6.6773149882764244e+01 5.2500000488881229e+00 0 0 0 +23512 1 8.7168422398959024e+01 6.8924946486197996e+01 5.2500000198075156e+00 0 0 0 +24150 1 8.9045575981696771e+01 6.8372562632323806e+01 7.0000000397761912e+00 0 0 0 +23304 1 4.6819519351866823e+01 7.1380340513661636e+01 5.2499999613724038e+00 0 0 0 +23941 1 4.6258347358859091e+01 6.9722837285365742e+01 6.9999999516491762e+00 0 0 0 +23308 1 5.0186551501210758e+01 7.0257388024903506e+01 5.2500000211376028e+00 0 0 0 +23357 1 4.9064207409119426e+01 7.2476367507213368e+01 5.2499999948256448e+00 0 0 0 +23359 1 5.0747723404703237e+01 7.1914891263204282e+01 3.4999999940124633e+00 0 0 0 +23999 1 5.0747723381542933e+01 7.1914891259518171e+01 7.0000000615758768e+00 0 0 0 +23942 1 4.8503035439132589e+01 7.0818864292948206e+01 6.9999999979026946e+00 0 0 0 +23306 1 5.1870067474836027e+01 6.9695911773668058e+01 3.5000000183155655e+00 0 0 0 +23361 1 5.2431239427639824e+01 7.1353415017725894e+01 5.2500000499649984e+00 0 0 0 +23366 1 5.4675927347754282e+01 7.2449441930724035e+01 5.2500000310963060e+00 0 0 0 +23946 1 5.1870067502058056e+01 6.9695911808293801e+01 7.0000000583746802e+00 0 0 0 +23364 1 5.6359443445001752e+01 7.1887965605660924e+01 3.4999999898111493e+00 0 0 0 +23365 1 5.5798271437208584e+01 7.0230462423862718e+01 5.2500000414469898e+00 0 0 0 +23367 1 5.7481787356363853e+01 6.9668985919033432e+01 3.5000000069381194e+00 0 0 0 +24004 1 5.6359443525288647e+01 7.1887965641973196e+01 7.0000000477501496e+00 0 0 0 +24007 1 5.7481787433334077e+01 6.9668985959891899e+01 7.0000000326548806e+00 0 0 0 +23370 1 5.8042959516894051e+01 7.1326489227633630e+01 5.2500000136606975e+00 0 0 0 +23424 1 6.0287647676157953e+01 7.2422515859389648e+01 5.2499999902926584e+00 0 0 0 +23372 1 6.3093507437505139e+01 6.9642059668330205e+01 3.4999999779344746e+00 0 0 0 +23374 1 6.1409991492082327e+01 7.0203536061703446e+01 5.2499999762737621e+00 0 0 0 +23426 1 6.1971163609281746e+01 7.1861039318260737e+01 3.4999999980029983e+00 0 0 0 +23428 1 6.3654679553594271e+01 7.1299562849958164e+01 5.2499999925075382e+00 0 0 0 +24012 1 6.3093507440459064e+01 6.9642059667722293e+01 6.9999999784722267e+00 0 0 0 +24066 1 6.1971163636632177e+01 7.1861039354561939e+01 6.9999999650552507e+00 0 0 0 +23432 1 6.7021711787705399e+01 7.0176610243340463e+01 5.2500000383845205e+00 0 0 0 +23433 1 6.5899367413425878e+01 7.2395589769958036e+01 5.2500000098494040e+00 0 0 0 +23437 1 6.9266400692320445e+01 7.1272637116876666e+01 5.2500000588852895e+00 0 0 0 +23435 1 7.0949917705950924e+01 7.0711162028550206e+01 3.5000000399946374e+00 0 0 0 +23441 1 7.2633423653931018e+01 7.0149683033445598e+01 5.2500000401817202e+00 0 0 0 +23491 1 7.1511091656921963e+01 7.2368663847708177e+01 5.2500000761343930e+00 0 0 0 +24075 1 7.0949917746445948e+01 7.0711161999371441e+01 7.0000000671165568e+00 0 0 0 +23497 1 7.6561515754267688e+01 7.0684178756887846e+01 3.5000000198924606e+00 0 0 0 +23495 1 7.4878099165071575e+01 7.1245713609580989e+01 5.2500000065372063e+00 0 0 0 +23500 1 7.7122769873998507e+01 7.2341771362430890e+01 5.2499999462740821e+00 0 0 0 +24137 1 7.6561515826962960e+01 7.0684178753744462e+01 6.9999999305949379e+00 0 0 0 +23499 1 7.8245180254255885e+01 7.0122665795719527e+01 5.2499999062926932e+00 0 0 0 +23504 1 8.0489602940313446e+01 7.1218301425136843e+01 5.2499998806168255e+00 0 0 0 +23502 1 8.2176993241895701e+01 7.0658333911978687e+01 3.4999999285654164e+00 0 0 0 +23557 1 8.2732307710599173e+01 7.2312458867857217e+01 5.2499998966009374e+00 0 0 0 +24142 1 8.2176993134181899e+01 7.0658334012370673e+01 6.9999999144989467e+00 0 0 0 +23508 1 8.3862484234618137e+01 7.0100495832071502e+01 5.2499999327988194e+00 0 0 0 +23561 1 8.6132426358501036e+01 7.1209152548683448e+01 5.2499999768899217e+00 0 0 0 +23563 1 8.7753273533350693e+01 7.0650125318500699e+01 3.5000000062000947e+00 0 0 0 +23564 1 8.9214901395320268e+01 7.0007207806049365e+01 5.2500000456195126e+00 0 0 0 +23565 1 8.8549510361502428e+01 7.2307135226771891e+01 5.2500000152294950e+00 0 0 0 +24203 1 8.7753273455575680e+01 7.0650125315904077e+01 6.9999999945851572e+00 0 0 0 +23354 1 4.5697175209847146e+01 7.3599320012379934e+01 5.2499999437899127e+00 0 0 0 +23358 1 4.7941863368841155e+01 7.4695346988696770e+01 5.2499999732833151e+00 0 0 0 +23356 1 4.9625379431459088e+01 7.4133870699055024e+01 3.4999999942557252e+00 0 0 0 +23362 1 5.1308895500990694e+01 7.3572394562076525e+01 5.2500000352256428e+00 0 0 0 +23412 1 5.0186551469047110e+01 7.5791373978850885e+01 5.2500000157061075e+00 0 0 0 +23996 1 4.9625379413176240e+01 7.4133870693368465e+01 7.0000000151681894e+00 0 0 0 +23416 1 5.3553583569266884e+01 7.4668421473473373e+01 5.2500000355876653e+00 0 0 0 +23418 1 5.5237099545001698e+01 7.4106945255800866e+01 3.4999999845555636e+00 0 0 0 +23420 1 5.6920615488583636e+01 7.3545468743249018e+01 5.2500000141684851e+00 0 0 0 +23421 1 5.5798271580816014e+01 7.5764448416028998e+01 5.2500000266299995e+00 0 0 0 +24058 1 5.5237099588075594e+01 7.4106945283255570e+01 7.0000000692793138e+00 0 0 0 +23423 1 6.0848819644774515e+01 7.4080019087678068e+01 3.4999999997978430e+00 0 0 0 +23425 1 5.9165303707377326e+01 7.4641495589808372e+01 5.2499999840285634e+00 0 0 0 +24063 1 6.0848819694185522e+01 7.4080019087892040e+01 6.9999999651357845e+00 0 0 0 +23429 1 6.2532335795726269e+01 7.3518542610193094e+01 5.2499999771038226e+00 0 0 0 +23479 1 6.1409991787440447e+01 7.5737522295741101e+01 5.2499999796461241e+00 0 0 0 +23483 1 6.4777023803792474e+01 7.4614569505994865e+01 5.2500000013476811e+00 0 0 0 +23488 1 6.7021712117219110e+01 7.5710596452726918e+01 5.2500000152439830e+00 0 0 0 +23486 1 6.8705228091755913e+01 7.5149120152753369e+01 3.5000000026773552e+00 0 0 0 +23489 1 6.9827570474909052e+01 7.2930139089541356e+01 3.5000000556008444e+00 0 0 0 +23487 1 6.8144054864709162e+01 7.3491616417351494e+01 5.2500000588518487e+00 0 0 0 +23492 1 7.0388741246914591e+01 7.4587642667069630e+01 5.2500000388785839e+00 0 0 0 +24126 1 6.8705228072273314e+01 7.5149120130900798e+01 7.0000000457487008e+00 0 0 0 +24129 1 6.9827570478728305e+01 7.2930139052745645e+01 7.0000000571774272e+00 0 0 0 +23496 1 7.3755787872967858e+01 7.3464688742890388e+01 5.2500000479622679e+00 0 0 0 +23545 1 7.2633424062935163e+01 7.5683669027037212e+01 5.2500000561354723e+00 0 0 0 +23494 1 7.5439348898488831e+01 7.2903241321425298e+01 3.5000000619638372e+00 0 0 0 +23547 1 7.4316920306133625e+01 7.5122177815037318e+01 3.5000000536605356e+00 0 0 0 +23549 1 7.6000492833824055e+01 7.4560702395012470e+01 5.2500000084812655e+00 0 0 0 +24134 1 7.5439349005847518e+01 7.2903241307419421e+01 6.9999999627408815e+00 0 0 0 +24187 1 7.4316920410203537e+01 7.5122177782993376e+01 7.0000000103804947e+00 0 0 0 +23552 1 7.9929643576354721e+01 7.5095601256198634e+01 3.4999999914494704e+00 0 0 0 +23553 1 7.9367521629347763e+01 7.3437970756809634e+01 5.2499999015420240e+00 0 0 0 +23554 1 7.8245180770888808e+01 7.5656651530249619e+01 5.2499999417451653e+00 0 0 0 +24192 1 7.9929643636490965e+01 7.5095601309633238e+01 6.9999998769286051e+00 0 0 0 +23555 1 8.1049143205313356e+01 7.2875728807699417e+01 3.4999999364869794e+00 0 0 0 +23558 1 8.1612970391699605e+01 7.4534827800825752e+01 5.2499998846692018e+00 0 0 0 +24195 1 8.1049143177806286e+01 7.2875728862235277e+01 6.9999998972725441e+00 0 0 0 +23560 1 8.6710921047727211e+01 7.2853080481559161e+01 3.4999999721976329e+00 0 0 0 +23609 1 8.5523443728659061e+01 7.5066983453334359e+01 3.4999999587960264e+00 0 0 0 +23562 1 8.4964193731651164e+01 7.3402370451500474e+01 5.2499999376338842e+00 0 0 0 +23607 1 8.3862484695355789e+01 7.5634481166704006e+01 5.2499999163911593e+00 0 0 0 +24200 1 8.6710920906376245e+01 7.2853080524878351e+01 7.0000000174858537e+00 0 0 0 +24249 1 8.5523443609537338e+01 7.5066983469916920e+01 6.9999999956828090e+00 0 0 0 +23611 1 8.7168422588016242e+01 7.4458931712134941e+01 5.2500000085285254e+00 0 0 0 +23614 1 8.9214901545488004e+01 7.5541193084212594e+01 5.2500000767300197e+00 0 0 0 +23407 1 4.7380691316599382e+01 7.8571829828427823e+01 3.5000000296700851e+00 0 0 0 +23408 1 4.6819519305282277e+01 7.6914326515791856e+01 5.2499999595837110e+00 0 0 0 +23410 1 4.8503035422255977e+01 7.6352850292022367e+01 3.5000000093108228e+00 0 0 0 +23413 1 4.9064207413966990e+01 7.8010353534966697e+01 5.2499999983654932e+00 0 0 0 +23415 1 5.4114755507241554e+01 7.6325924767831182e+01 3.4999999751709652e+00 0 0 0 +23417 1 5.2431239461627989e+01 7.6887400982521271e+01 5.2500000426342819e+00 0 0 0 +23469 1 5.2992411557648339e+01 7.8544904189851650e+01 3.4999999952278045e+00 0 0 0 +23471 1 5.4675927497303682e+01 7.7983427925642175e+01 5.2500000289781550e+00 0 0 0 +24109 1 5.2992411563602957e+01 7.8544904215087243e+01 7.0000000888067184e+00 0 0 0 +24055 1 5.4114755546999426e+01 7.6325924741714886e+01 7.0000000806763492e+00 0 0 0 +23474 1 5.8604131848005558e+01 7.8517978481274895e+01 3.5000000189404190e+00 0 0 0 +23475 1 5.8042959683612999e+01 7.6860475250944162e+01 5.2500000041138879e+00 0 0 0 +23477 1 5.9726475745975748e+01 7.6298998774275617e+01 3.5000000050941202e+00 0 0 0 +23480 1 6.0287647908015686e+01 7.7956501984051073e+01 5.2499999864337648e+00 0 0 0 +24114 1 5.8604131904849133e+01 7.8517978472327599e+01 6.9999999893290319e+00 0 0 0 +24117 1 5.9726475790053613e+01 7.6298998791986975e+01 6.9999999784257234e+00 0 0 0 +23484 1 6.3654679848040836e+01 7.6833549098265323e+01 5.2499999790159038e+00 0 0 0 +23535 1 6.4215852001313280e+01 7.8491052426290167e+01 3.5000000010840271e+00 0 0 0 +24175 1 6.4215852016589068e+01 7.8491052422167883e+01 6.9999999859800042e+00 0 0 0 +23539 1 6.7582883769158443e+01 7.7368099283686192e+01 3.4999999900312453e+00 0 0 0 +23482 1 6.5338195902648621e+01 7.6272072748521140e+01 3.4999999853968564e+00 0 0 0 +23537 1 6.5899367758532748e+01 7.7929575934219571e+01 5.2500000100748698e+00 0 0 0 +24122 1 6.5338195912191210e+01 7.6272072733712918e+01 6.9999999985699652e+00 0 0 0 +24179 1 6.7582883766800506e+01 7.7368099278442969e+01 7.0000000377814375e+00 0 0 0 +23541 1 6.9266401107311353e+01 7.6806623188711086e+01 5.2500000217276250e+00 0 0 0 +23544 1 7.3194616219070213e+01 7.7341179826951617e+01 3.5000000391528712e+00 0 0 0 +23546 1 7.1511092076524420e+01 7.7902649756215425e+01 5.2500000260062718e+00 0 0 0 +24184 1 7.3194616283435224e+01 7.7341179801465358e+01 7.0000000067662693e+00 0 0 0 +23550 1 7.4878099599563711e+01 7.6779699471141285e+01 5.2500000044469921e+00 0 0 0 +23599 1 7.7122770381416473e+01 7.7875757086602661e+01 5.2500000036483874e+00 0 0 0 +23601 1 7.8805835071985030e+01 7.7314060817225638e+01 3.5000000140230254e+00 0 0 0 +23603 1 8.0489603495439042e+01 7.6752286940903119e+01 5.2499999115453049e+00 0 0 0 +24241 1 7.8805835159413277e+01 7.7314060861082780e+01 6.9999999121953627e+00 0 0 0 +23608 1 8.2732308278605359e+01 7.7846444209530148e+01 5.2499998981608504e+00 0 0 0 +23606 1 8.4431591256619953e+01 7.7289150265889603e+01 3.4999999539742972e+00 0 0 0 +23612 1 8.6132426772367737e+01 7.6743137856887358e+01 5.2499999858725737e+00 0 0 0 +24246 1 8.4431591185253396e+01 7.7289150330869091e+01 6.9999999230913268e+00 0 0 0 +23648 1 8.8549510705823266e+01 7.7841120593311430e+01 5.2500000569861038e+00 0 0 0 +4538 1 9.0272007528376662e+01 7.7056814431061753e+01 7.0000001965065533e+00 -1 0 0 +3898 1 9.0272007528377188e+01 7.7056814475938040e+01 3.4999999800748212e+00 -1 0 0 +23461 1 4.6258347248409187e+01 8.0790809219857948e+01 3.4999999836089315e+00 0 0 0 +23409 1 4.5697175176143105e+01 7.9133306000710249e+01 5.2499999705612757e+00 0 0 0 +23463 1 4.7941863356182878e+01 8.0229333003076960e+01 5.2499999958778094e+00 0 0 0 +23462 1 4.8503035399575730e+01 8.1886836292379570e+01 3.4999999723299222e+00 0 0 0 +23467 1 5.1308895569894560e+01 7.9106380551277070e+01 5.2500000421007371e+00 0 0 0 +23468 1 5.0186551500758789e+01 8.1325359962324498e+01 5.2500000423443174e+00 0 0 0 +23466 1 5.1870067579139935e+01 8.0763883719293958e+01 3.5000000147812109e+00 0 0 0 +23472 1 5.3553583681694633e+01 8.0202407427456663e+01 5.2500000563675435e+00 0 0 0 +24106 1 5.1870067593548299e+01 8.0763883741871581e+01 7.0000000697826259e+00 0 0 0 +23476 1 5.6920615674147093e+01 7.9079454788256669e+01 5.2500000041393360e+00 0 0 0 +23525 1 5.5798271714709898e+01 8.1298434382996334e+01 5.2500000421007078e+00 0 0 0 +23527 1 5.7481787727085973e+01 8.0736958010110754e+01 3.5000000354081600e+00 0 0 0 +24167 1 5.7481787779836857e+01 8.0736958032697444e+01 6.9999999998900515e+00 0 0 0 +23529 1 5.9165303899258980e+01 8.0175481684827162e+01 5.2499999846041296e+00 0 0 0 +23532 1 6.3093507969733892e+01 8.0710032069250801e+01 3.5000000193603360e+00 0 0 0 +23533 1 6.2532336060199405e+01 7.9052528799891590e+01 5.2499999862396267e+00 0 0 0 +23534 1 6.1409991965825995e+01 8.1271508388187314e+01 5.2499999729029607e+00 0 0 0 +24172 1 6.3093507967923763e+01 8.0710032085857875e+01 6.9999999849515726e+00 0 0 0 +23536 1 6.6460540157982066e+01 7.9587079279615310e+01 3.4999999890369460e+00 0 0 0 +23538 1 6.4777024139013221e+01 8.0148555668264109e+01 5.2499999889757829e+00 0 0 0 +23587 1 6.7021712475063964e+01 8.1244582477436609e+01 5.2500000247658702e+00 0 0 0 +24176 1 6.6460540165181186e+01 7.9587079214308403e+01 7.0000000272764940e+00 0 0 0 +23542 1 6.8144055285615508e+01 7.9025602454071318e+01 5.2500000141901859e+00 0 0 0 +23591 1 7.0388741684963932e+01 8.0121628557663257e+01 5.2500000350411939e+00 0 0 0 +23590 1 7.0949918558233549e+01 8.1779133908200919e+01 3.4999999856916064e+00 0 0 0 +23593 1 7.2072254305612987e+01 7.9560148497674675e+01 3.5000000103976148e+00 0 0 0 +23595 1 7.3755788345065056e+01 7.8998674592502411e+01 5.2500000089108472e+00 0 0 0 +23596 1 7.2633424563353245e+01 8.1217654831012169e+01 5.2500000021427597e+00 0 0 0 +24230 1 7.0949918621718169e+01 8.1779133851814805e+01 7.0000000515299394e+00 0 0 0 +24233 1 7.2072254325398632e+01 7.9560148437408756e+01 7.0000000252751251e+00 0 0 0 +23634 1 7.6561516733566449e+01 8.1752150201214803e+01 3.5000000477301811e+00 0 0 0 +23600 1 7.6000493302496253e+01 8.0094688102811858e+01 5.2499999961737451e+00 0 0 0 +24274 1 7.6561516818322175e+01 8.1752150203260584e+01 6.9999999514119784e+00 0 0 0 +23598 1 7.7684224971253300e+01 7.9533326701353616e+01 3.5000000241354057e+00 0 0 0 +23604 1 7.9367522171745961e+01 7.8971956263367673e+01 5.2499999337974410e+00 0 0 0 +23636 1 7.8245181236081308e+01 8.1190637048618839e+01 5.2499999668447730e+00 0 0 0 +24238 1 7.7684225059086515e+01 7.9533326734710442e+01 6.9999999301697438e+00 0 0 0 +23639 1 8.2176994242737550e+01 8.1726304685702132e+01 3.4999999685758665e+00 0 0 0 +23642 1 8.3289037048755802e+01 7.9505169939415623e+01 3.4999999773874286e+00 0 0 0 +23640 1 8.1612971014792848e+01 8.0068813200864682e+01 5.2499999258347128e+00 0 0 0 +24279 1 8.2176994279641491e+01 8.1726304767119188e+01 6.9999998473573237e+00 0 0 0 +24282 1 8.3289037066153028e+01 7.9505170009869119e+01 6.9999998663359717e+00 0 0 0 +23644 1 8.4964194281536919e+01 7.8936355778468467e+01 5.2499999339358610e+00 0 0 0 +23645 1 8.3862485278668842e+01 8.1168466523812668e+01 5.2499998862645105e+00 0 0 0 +23647 1 8.9045576205129208e+01 7.9440533372275127e+01 3.4999999193512767e+00 0 0 0 +23649 1 8.7168422925913461e+01 7.9992917038390658e+01 5.2499999769170547e+00 0 0 0 +23669 1 8.7753274180215371e+01 8.1718096104862667e+01 3.4999998140133814e+00 0 0 0 +23670 1 8.9214901763258268e+01 8.1075178573392066e+01 5.2500000196090202e+00 0 0 0 +24309 1 8.7753274140131637e+01 8.1718096180564075e+01 7.0000000869482024e+00 0 0 0 +24287 1 8.9045576175298606e+01 7.9440533403678558e+01 7.0000001384754649e+00 0 0 0 +23464 1 4.6819519267846836e+01 8.2448312511880260e+01 5.2499999570512221e+00 0 0 0 +23514 1 4.5697175209613100e+01 8.4667291990223916e+01 5.2499999213245374e+00 0 0 0 +23515 1 4.7380691291948061e+01 8.4105815794529548e+01 3.4999999682755600e+00 0 0 0 +23516 1 4.9625379403432405e+01 8.5201842572228401e+01 3.4999999860533619e+00 0 0 0 +23519 1 5.0747723427242200e+01 8.2982863187116664e+01 3.4999999851808687e+00 0 0 0 +23517 1 4.9064207358582976e+01 8.3544339469205639e+01 5.2499999847427850e+00 0 0 0 +23522 1 5.1308895506916855e+01 8.4640366407568834e+01 5.2500000286448669e+00 0 0 0 +23521 1 5.2431239525447232e+01 8.2421386913657145e+01 5.2500000456809293e+00 0 0 0 +23526 1 5.4675927523074122e+01 8.3517413813041827e+01 5.2500000424061506e+00 0 0 0 +23573 1 5.5237099668260470e+01 8.5174917091631386e+01 3.5000000321397580e+00 0 0 0 +23524 1 5.6359443698837161e+01 8.2955937590192846e+01 3.5000000207362900e+00 0 0 0 +23575 1 5.6920615692715820e+01 8.4613440687145768e+01 5.2499999923508289e+00 0 0 0 +24164 1 5.6359443784758760e+01 8.2955937576216371e+01 7.0000000173398282e+00 0 0 0 +24213 1 5.5237099751332529e+01 8.5174917110815855e+01 7.0000000398404385e+00 0 0 0 +23530 1 5.8042959838402417e+01 8.2394461305509779e+01 5.2500000033009178e+00 0 0 0 +23578 1 6.0848819945992538e+01 8.5147991224228662e+01 3.5000000328971139e+00 0 0 0 +23579 1 6.0287648042475467e+01 8.3490488068333804e+01 5.2499999829948889e+00 0 0 0 +24218 1 6.0848819952278305e+01 8.5147991223440599e+01 6.9999999321881212e+00 0 0 0 +23581 1 6.1971164050268101e+01 8.2929011625146913e+01 3.5000000376351572e+00 0 0 0 +23583 1 6.3654680065816983e+01 8.2367535181363749e+01 5.2500000195890966e+00 0 0 0 +23584 1 6.2532336147001814e+01 8.4586514822294902e+01 5.2499999807685294e+00 0 0 0 +24221 1 6.1971164037865861e+01 8.2929011652075104e+01 6.9999999554328154e+00 0 0 0 +23588 1 6.5899367976716306e+01 8.3463561913054320e+01 5.2500000522543857e+00 0 0 0 +23626 1 6.9827571199820156e+01 8.3998110880825095e+01 3.5000000306447090e+00 0 0 0 +23592 1 6.9266401479681122e+01 8.2340609057785329e+01 5.2500000433397878e+00 0 0 0 +23624 1 6.8144055499195943e+01 8.4559588276323367e+01 5.2500000901459591e+00 0 0 0 +24266 1 6.9827571271017163e+01 8.3998110805291560e+01 7.0000000703307173e+00 0 0 0 +23628 1 7.1511092534460005e+01 8.3436635549595849e+01 5.2500000469075063e+00 0 0 0 +23633 1 7.3755788815242099e+01 8.4532660269216464e+01 5.2500000160395679e+00 0 0 0 +23631 1 7.5439349909916473e+01 8.3971212757210026e+01 3.5000000065819781e+00 0 0 0 +23632 1 7.4878100121206757e+01 8.2313685177525400e+01 5.2500000010358381e+00 0 0 0 +23637 1 7.7122770914977494e+01 8.3409742633824408e+01 5.2499999646860331e+00 0 0 0 +24271 1 7.5439350010683626e+01 8.3971212755086668e+01 6.9999999674922897e+00 0 0 0 +23659 1 7.9367522738211022e+01 8.4505941731351385e+01 5.2499999442988052e+00 0 0 0 +23641 1 8.0489604022924922e+01 8.2286272343123997e+01 5.2499999274128566e+00 0 0 0 +23661 1 8.1049144285635904e+01 8.3943699656125517e+01 3.4999999926531444e+00 0 0 0 +23663 1 8.2732308790589201e+01 8.3380429613758324e+01 5.2499998920626938e+00 0 0 0 +24301 1 8.1049144355403882e+01 8.3943699691163786e+01 6.9999998664183707e+00 0 0 0 +23666 1 8.6710921860881641e+01 8.3921051243362768e+01 3.4999998713438973e+00 0 0 0 +23667 1 8.6132427237832260e+01 8.2277123314769923e+01 5.2499999067963543e+00 0 0 0 +23668 1 8.4964194657435200e+01 8.4470341206354604e+01 5.2499998782622281e+00 0 0 0 +24306 1 8.6710921814129136e+01 8.3921051360437531e+01 6.9999999999665450e+00 0 0 0 +23671 1 8.8549511178462211e+01 8.3375106240263563e+01 5.2499999427306712e+00 0 0 0 +23513 1 4.6258347325663244e+01 8.6324795183162664e+01 3.4999999575717653e+00 0 0 0 +23518 1 4.7941863348937829e+01 8.5763318914067483e+01 5.2499999571647509e+00 0 0 0 +23566 1 4.6819519401647170e+01 8.7982298447226484e+01 5.2499999463478622e+00 0 0 0 +23567 1 4.8503035440987425e+01 8.7420822162859750e+01 3.4999999632935701e+00 0 0 0 +23568 1 5.0186551454012672e+01 8.6859345764437393e+01 5.2500000084400620e+00 0 0 0 +23570 1 5.4114755513280549e+01 8.7393896455826052e+01 3.5000000121244641e+00 0 0 0 +23571 1 5.3553583633727001e+01 8.5736393255574541e+01 5.2500000315000301e+00 0 0 0 +23572 1 5.2431239447395264e+01 8.7955372643270309e+01 5.2500000487307936e+00 0 0 0 +24210 1 5.4114755591209992e+01 8.7393896454214641e+01 7.0000000604718293e+00 0 0 0 +23576 1 5.5798271636868648e+01 8.6832420204881686e+01 5.2500000149608708e+00 0 0 0 +23580 1 5.9165303917424410e+01 8.5709467626871060e+01 5.2499999630609873e+00 0 0 0 +23615 1 5.8042959719134707e+01 8.7928447122081707e+01 5.2499999725987925e+00 0 0 0 +23616 1 5.9726475844565975e+01 8.7366970736984754e+01 3.5000000072585178e+00 0 0 0 +24256 1 5.9726475904742244e+01 8.7366970760072931e+01 6.9999999243126227e+00 0 0 0 +23617 1 6.1409991977809412e+01 8.6805494342464897e+01 5.2499999637225319e+00 0 0 0 +23621 1 6.3654680013197982e+01 8.7901521009202128e+01 5.2500000083070066e+00 0 0 0 +23619 1 6.5338196182556374e+01 8.7340044603390325e+01 3.5000000022750961e+00 0 0 0 +23620 1 6.4777024176959941e+01 8.5682541545861369e+01 5.2500000391716037e+00 0 0 0 +23625 1 6.7021712524302288e+01 8.6778568203123072e+01 5.2500000614471087e+00 0 0 0 +24259 1 6.5338196159084077e+01 8.7340044587487924e+01 7.0000000561871305e+00 0 0 0 +19890 1 6.7582884055109972e+01 8.8436070832273060e+01 3.5000000089666399e+00 0 -1 0 +20530 1 6.7582884079985263e+01 8.8436070836001235e+01 7.0000001056724024e+00 0 -1 0 +23623 1 6.8705228613236741e+01 8.6217091844012657e+01 3.5000000319638871e+00 0 0 0 +23629 1 7.0388741962929785e+01 8.5655614280961245e+01 5.2500000501154256e+00 0 0 0 +23650 1 6.9266401571129947e+01 8.7874594667296208e+01 5.2500000782676643e+00 0 0 0 +24263 1 6.8705228661534662e+01 8.6217091780740532e+01 7.0000001055145749e+00 0 0 0 +23652 1 7.2633424839789171e+01 8.6751640441436507e+01 5.2500000356248639e+00 0 0 0 +19893 1 7.3194616921018664e+01 8.8409151122091799e+01 3.5000000097327137e+00 0 -1 0 +20533 1 7.3194617022844696e+01 8.8409151113086963e+01 7.0000000224520873e+00 0 -1 0 +23653 1 7.4316921227901645e+01 8.6190149203493846e+01 3.5000000075366198e+00 0 0 0 +23655 1 7.6000493832541807e+01 8.5628673684844870e+01 5.2500000081094482e+00 0 0 0 +23656 1 7.4878100464689865e+01 8.7847670729050094e+01 5.2499999945234181e+00 0 0 0 +24293 1 7.4316921339890769e+01 8.6190149177714588e+01 7.0000000087912913e+00 0 0 0 +23658 1 7.9929644691767550e+01 8.6163572191037815e+01 3.5000000037124281e+00 0 0 0 +23660 1 7.8245181837537487e+01 8.6724622586978711e+01 5.2499999651725382e+00 0 0 0 +23672 1 8.0489604556045151e+01 8.7820257849956818e+01 5.2499999470622942e+00 0 0 0 +24298 1 7.9929644800369587e+01 8.6163572218039789e+01 6.9999998810512034e+00 0 0 0 +19935 1 7.8805836114148903e+01 8.8382031798602455e+01 3.5000000134800717e+00 0 -1 0 +20575 1 7.8805836242145432e+01 8.8382031820711262e+01 6.9999999452753396e+00 0 -1 0 +23664 1 8.1612971495103181e+01 8.5602798635970771e+01 5.2499999002462454e+00 0 0 0 +23674 1 8.3862485689964203e+01 8.6702452044682516e+01 5.2499998726462387e+00 0 0 0 +23675 1 8.5523444611368902e+01 8.6134954348806943e+01 3.4999999064159284e+00 0 0 0 +23678 1 8.6132427601418186e+01 8.7811108931395893e+01 5.2499999222509111e+00 0 0 0 +24315 1 8.5523444609124908e+01 8.6134954382026692e+01 6.9999999182093884e+00 0 0 0 +19938 1 8.4431592140739752e+01 8.8357121292612348e+01 3.4999999497106904e+00 0 -1 0 +20578 1 8.4431592167304373e+01 8.8357121326768251e+01 6.9999998493983888e+00 0 -1 0 +23677 1 8.7168423289986535e+01 8.5526902650226504e+01 5.2499999218469018e+00 0 0 0 +23680 1 8.9214901573530668e+01 8.6609164193702625e+01 5.2499999939866049e+00 0 0 0 +644 1 9.0272007528377117e+01 8.8124785697080497e+01 3.4999999211357187e+00 -1 -1 0 +1284 1 9.0272007528377372e+01 8.8124785717437916e+01 7.0000001343430522e+00 -1 -1 0 +23683 1 4.5697175662822907e+01 4.5929390924369969e+01 8.7499999705436000e+00 0 0 0 +23689 1 4.7941863690354268e+01 4.7025417869110647e+01 8.7499999717724943e+00 0 0 0 +24322 1 4.7380691745270823e+01 4.5367914713287625e+01 1.0499999984741780e+01 0 0 0 +25580 1 7.8245181928525625e+01 8.6724622566802282e+01 1.5750000017889029e+01 0 0 0 +23685 1 4.9064207717433270e+01 4.4806438307105431e+01 8.7499999922082061e+00 0 0 0 +23693 1 5.1308895720064285e+01 4.5902465218636991e+01 8.7499999850320673e+00 0 0 0 +24331 1 4.9625379713243554e+01 4.6463941477339908e+01 1.0500000003812266e+01 0 0 0 +23697 1 5.4675927449515335e+01 4.4779512273344373e+01 8.7499999578585204e+00 0 0 0 +23698 1 5.3553583692494136e+01 4.6998491936853128e+01 8.7499999606386716e+00 0 0 0 +24335 1 5.2992411600705637e+01 4.5340988721357533e+01 1.0499999994191052e+01 0 0 0 +23701 1 5.6920615534701525e+01 4.5875538902675778e+01 8.7499999769580246e+00 0 0 0 +24336 1 5.5237099678510013e+01 4.6437015577274451e+01 1.0499999978076682e+01 0 0 0 +23722 1 6.0848819609263593e+01 4.6410088757891302e+01 6.9999999554426378e+00 0 0 0 +23703 1 6.0287647596502183e+01 4.4752585619074445e+01 8.7499999233426831e+00 0 0 0 +23720 1 5.9165303656457965e+01 4.6971565484660466e+01 8.7499999590300739e+00 0 0 0 +24340 1 5.8604131617104763e+01 4.5314062372374615e+01 1.0499999959672481e+01 0 0 0 +24362 1 6.0848819574845486e+01 4.6410088723376234e+01 1.0499999955527016e+01 0 0 0 +23724 1 6.2532335709760332e+01 4.5848611968658545e+01 8.7499999536219324e+00 0 0 0 +24366 1 6.4215851694652400e+01 4.5287135240330059e+01 1.0499999971221714e+01 0 0 0 +23728 1 6.5899367424216237e+01 4.4725658402866586e+01 8.7500000021117881e+00 0 0 0 +23729 1 6.4777023782874963e+01 4.6944638409730437e+01 8.7499999947324660e+00 0 0 0 +24367 1 6.6460539753016505e+01 4.6383161740889960e+01 1.0499999985888916e+01 0 0 0 +23731 1 6.9827570481648721e+01 4.5260207314315302e+01 6.9999999628193423e+00 0 0 0 +23732 1 6.8144054898185431e+01 4.5821684774420739e+01 8.7499999734583032e+00 0 0 0 +23765 1 7.0388741162804919e+01 4.6917711045466248e+01 8.7499999751263076e+00 0 0 0 +23734 1 7.1511091582361161e+01 4.4698732019563892e+01 8.7499999780216609e+00 0 0 0 +23769 1 7.3755787655132039e+01 4.5794757185738980e+01 8.7499999790318608e+00 0 0 0 +24407 1 7.2072253688091735e+01 4.6356230983203737e+01 1.0499999989235002e+01 0 0 0 +23771 1 7.5439348744457973e+01 4.5233309821499368e+01 6.9999999807345219e+00 0 0 0 +23773 1 7.7122769589974538e+01 4.4671839963142375e+01 8.7499999938716435e+00 0 0 0 +23774 1 7.6000492443621496e+01 4.6890771201680920e+01 8.7499999857168351e+00 0 0 0 +23777 1 7.9367521180362672e+01 4.5768039926211031e+01 8.7500000344248754e+00 0 0 0 +24412 1 7.7684224086161663e+01 4.6329410062572904e+01 1.0500000001215263e+01 0 0 0 +23776 1 8.1049142777629967e+01 4.5205798220972113e+01 7.0000000361642662e+00 0 0 0 +23779 1 8.2732307245423726e+01 4.4642528507347222e+01 8.7500000407054159e+00 0 0 0 +23823 1 8.1612969790927181e+01 4.6864897717703073e+01 8.7500000373349778e+00 0 0 0 +24465 1 8.3289035848527604e+01 4.6301254719058591e+01 1.0500000014372361e+01 0 0 0 +23829 1 8.6710920441813315e+01 4.5183150883891422e+01 7.0000000211301820e+00 0 0 0 +23827 1 8.4964193172919849e+01 4.5732440721727805e+01 8.7500000118573240e+00 0 0 0 +23831 1 8.8549509906322371e+01 4.4637205564388680e+01 8.7499999941456839e+00 0 0 0 +23832 1 8.7168422048740126e+01 4.6789002420186314e+01 8.7500000222665903e+00 0 0 0 +24470 1 8.9045575791013462e+01 4.6236618735245024e+01 1.0500000015868634e+01 0 0 0 +23690 1 4.6819519579575129e+01 4.9244397421105603e+01 8.7499999559159178e+00 0 0 0 +25578 1 7.9929644849167261e+01 8.6163572225810654e+01 1.4000000064212710e+01 0 0 0 +24327 1 4.6258347631204195e+01 4.7586894141121384e+01 1.0499999982923869e+01 0 0 0 +23694 1 5.0186551689842553e+01 4.8121444711240088e+01 8.7499999739926970e+00 0 0 0 +23708 1 4.9064207591045388e+01 5.0340424296593071e+01 8.7499999591476083e+00 0 0 0 +24350 1 5.0747723544347629e+01 4.9778947917837314e+01 1.0499999977432740e+01 0 0 0 +24328 1 4.8503035669799146e+01 4.8682921149209349e+01 1.0499999991165055e+01 0 0 0 +23712 1 5.2431239557361764e+01 4.9217471504225948e+01 8.7499999759085991e+00 0 0 0 +23717 1 5.4675927503408467e+01 5.0313498245235373e+01 8.7500000076011251e+00 0 0 0 +24332 1 5.1870067656130743e+01 4.7559968342360520e+01 1.0499999980689164e+01 0 0 0 +24354 1 5.4114755601860018e+01 4.8655995161526526e+01 1.0499999987622392e+01 0 0 0 +23716 1 5.5798271638436866e+01 4.8094518673955015e+01 8.7499999785901519e+00 0 0 0 +24355 1 5.6359443580139136e+01 4.9752021784630607e+01 1.0499999977479566e+01 0 0 0 +24358 1 5.7481787551267779e+01 4.7533042075477894e+01 1.0499999991782355e+01 0 0 0 +23719 1 5.9726475660223564e+01 4.8629068612905243e+01 6.9999999547855705e+00 0 0 0 +23721 1 5.8042959624619108e+01 4.9190545279379826e+01 8.7499999528021650e+00 0 0 0 +23753 1 6.0287647723228531e+01 5.0286571675900205e+01 8.7499999614249919e+00 0 0 0 +24359 1 5.9726475660835789e+01 4.8629068570428146e+01 1.0499999977653783e+01 0 0 0 +23725 1 6.1409991670207489e+01 4.8067591807435640e+01 8.7499999506565267e+00 0 0 0 +23757 1 6.3654679711919165e+01 4.9163618200316179e+01 8.7499999851770802e+00 0 0 0 +24363 1 6.3093507632505315e+01 4.7506115126048684e+01 1.0499999966705619e+01 0 0 0 +24395 1 6.1971163720105395e+01 4.9725094940667852e+01 1.0500000001406745e+01 0 0 0 +23759 1 6.5338195846437088e+01 4.8602141588341958e+01 6.9999999894437854e+00 0 0 0 +23761 1 6.7021712040887834e+01 4.8040665046611679e+01 8.7500000040898449e+00 0 0 0 +23762 1 6.5899367563688600e+01 5.0259644755036661e+01 8.7499999628237148e+00 0 0 0 +23760 1 6.7582883605415304e+01 4.9698167932558377e+01 6.9999999991835837e+00 0 0 0 +24399 1 6.5338195777968323e+01 4.8602141548399352e+01 1.0499999984919420e+01 0 0 0 +23763 1 6.8705228056527048e+01 4.7479188599979793e+01 6.9999999763343013e+00 0 0 0 +23766 1 6.9266400926214146e+01 4.9136691770178260e+01 8.7500000099377502e+00 0 0 0 +23770 1 7.2633423810638547e+01 4.8013737621163976e+01 8.7499999653354212e+00 0 0 0 +23811 1 7.1511091726856378e+01 5.0232718598476978e+01 8.7499999776936548e+00 0 0 0 +23813 1 7.3194615871732594e+01 4.9671248725557469e+01 6.9999999615373829e+00 0 0 0 +24404 1 7.0949917864327674e+01 4.8575216627108524e+01 1.0499999996694243e+01 0 0 0 +23768 1 7.4316920066284752e+01 4.7452246490457000e+01 6.9999999650189171e+00 0 0 0 +23815 1 7.4878099155763508e+01 4.9109768469005793e+01 8.7499999871115097e+00 0 0 0 +23820 1 7.7122769755443684e+01 5.0205826627899064e+01 8.7500000222805543e+00 0 0 0 +24457 1 7.6561515723357402e+01 4.8548233739164495e+01 1.0499999989961772e+01 0 0 0 +23818 1 7.8805834463700805e+01 4.9644130637985505e+01 7.0000000228594024e+00 0 0 0 +23819 1 7.8245180208187023e+01 4.7986720900870182e+01 8.7500000292829174e+00 0 0 0 +23821 1 7.9929643085438798e+01 4.7425670910003078e+01 7.0000000439240786e+00 0 0 0 +23824 1 8.0489602762220954e+01 4.9082357049703162e+01 8.7500000273645870e+00 0 0 0 +23877 1 8.2732307363647124e+01 5.0176515093138903e+01 8.7500000256968367e+00 0 0 0 +24462 1 8.2176992939066707e+01 4.8522389751926355e+01 1.0500000020445230e+01 0 0 0 +23826 1 8.5523442983128845e+01 4.7397054170614332e+01 7.0000000193927532e+00 0 0 0 +23879 1 8.4431590385311026e+01 4.9619221365287416e+01 7.0000000198271408e+00 0 0 0 +23828 1 8.3862483915431127e+01 4.7964551790573445e+01 8.7500000277579861e+00 0 0 0 +23881 1 8.6132425930140954e+01 4.9073208993749617e+01 8.7500000321160929e+00 0 0 0 +23884 1 8.9214901399173044e+01 4.7871264206307032e+01 8.7499999895837828e+00 0 0 0 +23885 1 8.8549510017615916e+01 5.0171191988253625e+01 8.7499999850962453e+00 0 0 0 +24523 1 8.7753273073038628e+01 4.8514181794137258e+01 1.0500000075093533e+01 0 0 0 +25592 1 8.0489604639190759e+01 8.7820257876569613e+01 1.5750000084432775e+01 0 0 0 +23705 1 4.5697175395254590e+01 5.1463376941493387e+01 8.7499999521007279e+00 0 0 0 +23709 1 4.7941863483456501e+01 5.2559403804017357e+01 8.7499999469798873e+00 0 0 0 +24344 1 4.6258347417401104e+01 5.3120880097525557e+01 1.0499999974229196e+01 0 0 0 +24346 1 4.7380691503282605e+01 5.0901900667874663e+01 1.0499999986491879e+01 0 0 0 +23713 1 5.1308895588333158e+01 5.1436451110608601e+01 8.7499999579661996e+00 0 0 0 +23741 1 5.0186551519853424e+01 5.3655430571410164e+01 8.7499999568303046e+00 0 0 0 +24347 1 4.9625379534253909e+01 5.1997927370352606e+01 1.0499999959244947e+01 0 0 0 +23745 1 5.3553583635609755e+01 5.2532477805328313e+01 8.7499999981757313e+00 0 0 0 +24351 1 5.2992411569489221e+01 5.0874974648103311e+01 1.0499999983947045e+01 0 0 0 +24383 1 5.1870067539340667e+01 5.3093954226643085e+01 1.0499999969648689e+01 0 0 0 +23748 1 5.7481787534330117e+01 5.3067028037001094e+01 6.9999999902896244e+00 0 0 0 +23749 1 5.6920615575389547e+01 5.1409524846091280e+01 8.7499999785860503e+00 0 0 0 +23750 1 5.5798271544295517e+01 5.3628504553237732e+01 8.7499999827296673e+00 0 0 0 +24387 1 5.5237099600237130e+01 5.1971001442415712e+01 1.0499999989788375e+01 0 0 0 +24388 1 5.7481787526599341e+01 5.3067027977635234e+01 1.0499999997133727e+01 0 0 0 +23751 1 5.8604131734921992e+01 5.0848048375616976e+01 6.9999999944126685e+00 0 0 0 +23754 1 5.9165303649403434e+01 5.2505551421861021e+01 8.7499999771246131e+00 0 0 0 +24392 1 6.0848819603057230e+01 5.1944074751242390e+01 1.0499999984406521e+01 0 0 0 +24391 1 5.8604131713571270e+01 5.0848048357486043e+01 1.0499999981323734e+01 0 0 0 +23756 1 6.4215851848057682e+01 5.0821121474325473e+01 6.9999999699667441e+00 0 0 0 +23801 1 6.3093507667005561e+01 5.3040101241975009e+01 6.9999999531616437e+00 0 0 0 +23758 1 6.2532335809843381e+01 5.1382598096527879e+01 8.7499999690992460e+00 0 0 0 +23799 1 6.1409991600999689e+01 5.3601577798188991e+01 8.7499999622841038e+00 0 0 0 +23803 1 6.4777023779542688e+01 5.2478624636163211e+01 8.7499999622561564e+00 0 0 0 +23805 1 6.6460539865826490e+01 5.1917148082932769e+01 7.0000000031873251e+00 0 0 0 +23808 1 6.7021711983054445e+01 5.3574651403403344e+01 8.7500000012645742e+00 0 0 0 +23807 1 6.8144054944344290e+01 5.1355671230679739e+01 8.7500000095460404e+00 0 0 0 +23812 1 7.0388741155875124e+01 5.2451697583533402e+01 8.7499999807461766e+00 0 0 0 +24446 1 6.8705227931655941e+01 5.3013175061668932e+01 1.0499999993718024e+01 0 0 0 +24449 1 6.9827570494172889e+01 5.0794193822866170e+01 1.0500000003109758e+01 0 0 0 +23810 1 7.2072253799738448e+01 5.1890217567162289e+01 6.9999999702067264e+00 0 0 0 +23816 1 7.3755787758912888e+01 5.1328743800457147e+01 8.7499999674684474e+00 0 0 0 +23865 1 7.2633423792758592e+01 5.3547724214748385e+01 8.7499999953174470e+00 0 0 0 +23869 1 7.6000492539718493e+01 5.2424757860912315e+01 8.7500000024716176e+00 0 0 0 +24454 1 7.5439348783951019e+01 5.0767296467320762e+01 1.0499999991203046e+01 0 0 0 +24507 1 7.4316920004745867e+01 5.2986233111076785e+01 1.0499999976451987e+01 0 0 0 +23871 1 7.7684224269924371e+01 5.1863396731075646e+01 7.0000000092900629e+00 0 0 0 +23873 1 7.9367521326947283e+01 5.1302026579430489e+01 8.7500000264076405e+00 0 0 0 +23874 1 7.8245180256169078e+01 5.3520707530941138e+01 8.7500000093317567e+00 0 0 0 +24512 1 7.9929643121652603e+01 5.2959657548402618e+01 1.0500000030034826e+01 0 0 0 +23876 1 8.3289036003771628e+01 5.1835241264641368e+01 6.9999999994435305e+00 0 0 0 +23878 1 8.1612969919192622e+01 5.2398884298309135e+01 8.7500000211565236e+00 0 0 0 +24515 1 8.1049142866982905e+01 5.0739784883381176e+01 1.0500000031573705e+01 0 0 0 +23882 1 8.4964193251404211e+01 5.1266427222293515e+01 8.7500000265385438e+00 0 0 0 +23932 1 8.3862484013775770e+01 5.3498538254893816e+01 8.7500000132275115e+00 0 0 0 +24520 1 8.6710920520273305e+01 5.0717137329123489e+01 1.0500000012504310e+01 0 0 0 +24574 1 8.5523443039857696e+01 5.2931040621413381e+01 1.0500000020722464e+01 0 0 0 +23938 1 8.9045575861869992e+01 5.1770605191630864e+01 7.0000000000516547e+00 0 0 0 +23936 1 8.7168422187208762e+01 5.2322988907937166e+01 8.7499999846027929e+00 0 0 0 +23939 1 8.9214901254083728e+01 5.3405250599161008e+01 8.7499999864372651e+00 0 0 0 +23737 1 4.6819519384397957e+01 5.4778383268432776e+01 8.7499999670909361e+00 0 0 0 +24376 1 4.7380691363227946e+01 5.6435886469467995e+01 1.0499999968702561e+01 0 0 0 +23742 1 4.9064207375939567e+01 5.5874410080900269e+01 8.7499999682670708e+00 0 0 0 +24379 1 4.8503035460086998e+01 5.4216907000079587e+01 1.0499999965026898e+01 0 0 0 +24380 1 5.0747723374812274e+01 5.5312933717450434e+01 1.0499999963920548e+01 0 0 0 +23746 1 5.2431239432403878e+01 5.4751457381335058e+01 8.7499999816047449e+00 0 0 0 +23791 1 5.4675927331976922e+01 5.5847484096872968e+01 8.7499999955952763e+00 0 0 0 +24384 1 5.4114755455720818e+01 5.4189981009951552e+01 1.0499999968315992e+01 0 0 0 +24429 1 5.2992411373708393e+01 5.6408960467547473e+01 1.0499999974629876e+01 0 0 0 +23793 1 5.6359443474916517e+01 5.5286007704709348e+01 7.0000000014214816e+00 0 0 0 +24433 1 5.6359443480899834e+01 5.5286007678976169e+01 1.0500000003136298e+01 0 0 0 +23795 1 5.8042959523349140e+01 5.4724531187575188e+01 8.7499999928968446e+00 0 0 0 +23800 1 6.0287647573272373e+01 5.5820557595984411e+01 8.7499999523077463e+00 0 0 0 +24434 1 5.8604131539764204e+01 5.6382034240447616e+01 1.0500000008909931e+01 0 0 0 +24437 1 5.9726475544791775e+01 5.4163054470007239e+01 1.0500000005333302e+01 0 0 0 +23798 1 6.1971163602230085e+01 5.5259080954722634e+01 6.9999999458887237e+00 0 0 0 +23804 1 6.3654679586729451e+01 5.4697604298322979e+01 8.7499999468884990e+00 0 0 0 +24495 1 6.4215851559190085e+01 5.6355107581310342e+01 1.0499999981513934e+01 0 0 0 +24438 1 6.1971163549715648e+01 5.5259080930816275e+01 1.0499999982144367e+01 0 0 0 +23857 1 6.5899367362889464e+01 5.5793630980424368e+01 8.7499999863540729e+00 0 0 0 +24442 1 6.5338195678471948e+01 5.4136127789891106e+01 1.0499999988514190e+01 0 0 0 +24499 1 6.7582883360571529e+01 5.5232154245159208e+01 1.0499999994392940e+01 0 0 0 +23860 1 6.9827570395173382e+01 5.6328180281320556e+01 6.9999999965703630e+00 0 0 0 +23861 1 6.9266400808759172e+01 5.4670678201217605e+01 8.7499999798399859e+00 0 0 0 +23863 1 7.0949917862258133e+01 5.4109203143078169e+01 6.9999999887394226e+00 0 0 0 +23866 1 7.1511091576267262e+01 5.5766705082452063e+01 8.7499999954669825e+00 0 0 0 +24504 1 7.3194615687397302e+01 5.5205235248949037e+01 1.0499999982136705e+01 0 0 0 +23868 1 7.6561515815050910e+01 5.4082220343936200e+01 7.0000000196740508e+00 0 0 0 +23870 1 7.4878099105644566e+01 5.4643755072060358e+01 8.7499999867542666e+00 0 0 0 +23922 1 7.5439348742889791e+01 5.6301282993655860e+01 7.0000000110822711e+00 0 0 0 +23924 1 7.7122769683059033e+01 5.5739813195828035e+01 8.7499999987791082e+00 0 0 0 +23928 1 8.0489602820877820e+01 5.4616343609288414e+01 8.7500000423825917e+00 0 0 0 +24566 1 7.8805834412241254e+01 5.5178117222577598e+01 1.0500000012401582e+01 0 0 0 +23927 1 8.1049142906066564e+01 5.6273771308100635e+01 6.9999999882878985e+00 0 0 0 +23930 1 8.2176993079746083e+01 5.4056376241741162e+01 6.9999999823115733e+00 0 0 0 +23933 1 8.2732307414883110e+01 5.5710501537465341e+01 8.7500000241876439e+00 0 0 0 +23937 1 8.6132425978074806e+01 5.4607195372435150e+01 8.7499999488192479e+00 0 0 0 +23989 1 8.6710920553506739e+01 5.6251123670673152e+01 6.9999999603057264e+00 0 0 0 +24571 1 8.4431590392689273e+01 5.5153207802614375e+01 1.0500000018874555e+01 0 0 0 +23935 1 8.7753273117222861e+01 5.4048168208821039e+01 7.0000000060267205e+00 0 0 0 +5129 1 9.0272007528377316e+01 5.4920872092030045e+01 1.0499999922685916e+01 -1 0 0 +23991 1 8.8549509933092196e+01 5.5705178273308860e+01 8.7499999586383996e+00 0 0 0 +23738 1 4.5697175234912905e+01 5.6997362744197673e+01 8.7499999720718460e+00 0 0 0 +23783 1 4.7941863329121020e+01 5.8093389533221490e+01 8.7499999614486583e+00 0 0 0 +24421 1 4.6258347272697669e+01 5.8654865825042258e+01 1.0499999995590064e+01 0 0 0 +23787 1 5.1308895452219261e+01 5.6970436941488103e+01 8.7499999915490356e+00 0 0 0 +23788 1 5.0186551372998821e+01 5.9189416306088972e+01 8.7499999820522927e+00 0 0 0 +24422 1 4.8503035341939935e+01 5.9750892697493903e+01 1.0499999979880432e+01 0 0 0 +24425 1 4.9625379374813782e+01 5.7531913156824153e+01 1.0499999970243630e+01 0 0 0 +23792 1 5.3553583452137495e+01 5.8066463672467066e+01 8.7499999989504431e+00 0 0 0 +23843 1 5.4114755358604974e+01 5.9723966889393580e+01 7.0000000484206391e+00 0 0 0 +24483 1 5.4114755319545480e+01 5.9723966872974103e+01 1.0500000011659905e+01 0 0 0 +24426 1 5.1870067359346820e+01 5.8627939999680756e+01 1.0499999962830072e+01 0 0 0 +23790 1 5.5237099466160295e+01 5.7504987396423445e+01 7.0000000197708925e+00 0 0 0 +23796 1 5.6920615404347714e+01 5.6943510751238698e+01 8.7500000178911819e+00 0 0 0 +23845 1 5.5798271401085806e+01 5.9162490472876989e+01 8.7500000394041422e+00 0 0 0 +24430 1 5.5237099481744416e+01 5.7504987353394355e+01 1.0500000004223937e+01 0 0 0 +24487 1 5.7481787345226266e+01 5.8601013907057123e+01 1.0500000020235598e+01 0 0 0 +23848 1 5.9726475381625100e+01 5.9697040498177230e+01 6.9999999680521103e+00 0 0 0 +23851 1 6.0848819424476723e+01 5.7478060742941437e+01 6.9999999507419481e+00 0 0 0 +23849 1 5.9165303466146185e+01 5.8039537380600457e+01 8.7499999915333095e+00 0 0 0 +24488 1 5.9726475395277014e+01 5.9697040478143350e+01 1.0500000004905845e+01 0 0 0 +24491 1 6.0848819409231353e+01 5.7478060685855453e+01 1.0499999988686366e+01 0 0 0 +23853 1 6.2532335576096507e+01 5.6916584084890772e+01 8.7499999451637525e+00 0 0 0 +23854 1 6.1409991385184590e+01 5.9135563812748330e+01 8.7499999455090762e+00 0 0 0 +24492 1 6.3093507356255202e+01 5.8574087280100358e+01 1.0499999995173072e+01 0 0 0 +23910 1 6.5338195471434673e+01 5.9670113997475546e+01 6.9999999941631090e+00 0 0 0 +23858 1 6.4777023524006594e+01 5.8012610766590250e+01 8.7499999841984071e+00 0 0 0 +23912 1 6.7021711689247013e+01 5.9108637650053240e+01 8.7500000015339303e+00 0 0 0 +24496 1 6.6460539508063420e+01 5.7451134339408483e+01 1.0499999967572903e+01 0 0 0 +24550 1 6.5338195388483825e+01 5.9670113957755390e+01 1.0499999989156356e+01 0 0 0 +23862 1 6.8144054714091979e+01 5.6889657585115359e+01 8.7499999732696736e+00 0 0 0 +23914 1 6.8705227762736598e+01 5.8547161410474175e+01 7.0000000134323752e+00 0 0 0 +23916 1 7.0388740936457324e+01 5.7985683992378753e+01 8.7499999911220545e+00 0 0 0 +23920 1 7.3755787592739992e+01 5.6862730298788122e+01 8.7499999897655076e+00 0 0 0 +23921 1 7.2633423566524527e+01 5.9081710632509157e+01 8.7499999908435591e+00 0 0 0 +24555 1 7.0949917576233375e+01 5.9643189492246016e+01 1.0500000001600029e+01 0 0 0 +24558 1 7.2072253536679938e+01 5.7424204001551182e+01 1.0499999991503181e+01 0 0 0 +23919 1 7.4316919879901107e+01 5.8520219555670863e+01 6.9999999937036206e+00 0 0 0 +23925 1 7.6000492353740199e+01 5.7958744312315524e+01 8.7499999819280099e+00 0 0 0 +24617 1 7.6561515574913017e+01 5.9616206730174838e+01 1.0500000002489180e+01 0 0 0 +23929 1 7.9367521263908117e+01 5.6836013052437274e+01 8.7500000038603982e+00 0 0 0 +23979 1 7.8245180122287110e+01 5.9054693908616663e+01 8.7500000020549784e+00 0 0 0 +23981 1 7.9929643066847092e+01 5.8493643845234466e+01 7.0000000060310485e+00 0 0 0 +24563 1 7.7684224094532155e+01 5.7397383198961627e+01 1.0500000006850307e+01 0 0 0 +23983 1 8.1612969863987615e+01 5.7932870667430954e+01 8.7499999975035436e+00 0 0 0 +24622 1 8.2176992949000947e+01 5.9590362555994901e+01 1.0500000002552062e+01 0 0 0 +24625 1 8.3289035989664413e+01 5.7369227633751109e+01 1.0500000021583608e+01 0 0 0 +23986 1 8.5523443049856539e+01 5.8465026868031792e+01 6.9999999639808133e+00 0 0 0 +23987 1 8.4964193273803787e+01 5.6800413561126661e+01 8.7499999830668038e+00 0 0 0 +23988 1 8.3862483975198884e+01 5.9032524521199605e+01 8.7499999674026903e+00 0 0 0 +23992 1 8.7168422186677020e+01 5.7856975165815669e+01 8.7499999754899136e+00 0 0 0 +24044 1 8.9214901259943559e+01 5.8939236637074984e+01 8.7499999371969199e+00 0 0 0 +24630 1 8.9045575865041599e+01 5.7304591284143903e+01 1.0499999918860507e+01 0 0 0 +24683 1 8.7753273182345154e+01 5.9582154236387652e+01 1.0499999913703460e+01 0 0 0 +23784 1 4.6819519294687510e+01 6.0312368982707596e+01 8.7499999615800093e+00 0 0 0 +23834 1 4.5697175234953811e+01 6.2531348452532583e+01 8.7499999478285488e+00 0 0 0 +24475 1 4.7380691277302233e+01 6.1969872133997193e+01 1.0499999984923392e+01 0 0 0 +23837 1 4.9064207318294876e+01 6.1408395805574493e+01 8.7499999613238266e+00 0 0 0 +23842 1 5.1308895339148506e+01 6.2504422682909649e+01 8.7499999974112121e+00 0 0 0 +24476 1 4.9625379322003596e+01 6.3065898861098589e+01 1.0499999988232775e+01 0 0 0 +24479 1 5.0747723260639731e+01 6.0846919476887869e+01 1.0499999987150737e+01 0 0 0 +23840 1 5.2992411314313308e+01 6.1942946315743960e+01 7.0000000292063751e+00 0 0 0 +23841 1 5.2431239268857283e+01 6.0285443144542725e+01 8.7500000226552679e+00 0 0 0 +23846 1 5.4675927220368543e+01 6.1381469984799324e+01 8.7500000606848722e+00 0 0 0 +24480 1 5.2992411284584733e+01 6.1942946283819431e+01 1.0500000010608511e+01 0 0 0 +23900 1 5.6920615287474419e+01 6.2477496684945486e+01 8.7500000363846890e+00 0 0 0 +24484 1 5.6359443321416201e+01 6.0819993581231820e+01 1.0500000016896884e+01 0 0 0 +24538 1 5.5237099355496518e+01 6.3038973217408980e+01 1.0500000020275250e+01 0 0 0 +23850 1 5.8042959354305268e+01 6.0258517112206668e+01 8.7500000064673085e+00 0 0 0 +23902 1 5.8604131422890035e+01 6.1916020253484227e+01 7.0000000209533892e+00 0 0 0 +23904 1 6.0287647418911583e+01 6.1354543604248988e+01 8.7499999959647639e+00 0 0 0 +24542 1 5.8604131443691728e+01 6.1916020233582557e+01 1.0500000020970630e+01 0 0 0 +23907 1 6.4215851422437012e+01 6.1889093733653695e+01 6.9999999701480258e+00 0 0 0 +23908 1 6.3654679334629733e+01 6.0231590415844686e+01 8.7499999768508925e+00 0 0 0 +23909 1 6.2532335444388202e+01 6.2450570193775114e+01 8.7499999918826461e+00 0 0 0 +24546 1 6.1971163374475495e+01 6.0793067005915653e+01 1.0500000004179757e+01 0 0 0 +23913 1 6.5899367114177423e+01 6.1327617204508321e+01 8.7499999740836021e+00 0 0 0 +23965 1 6.6460539411255269e+01 6.2985120601953177e+01 7.0000000295835552e+00 0 0 0 +23911 1 6.7582883187495227e+01 6.0766140579766521e+01 7.0000000204380708e+00 0 0 0 +23917 1 6.9266400553862638e+01 6.0204664558725035e+01 8.7500000193928642e+00 0 0 0 +23967 1 6.8144054511774073e+01 6.2423643865438720e+01 8.7500000432967173e+00 0 0 0 +24609 1 6.9827570109538200e+01 6.1862166565953039e+01 1.0500000022511587e+01 0 0 0 +23970 1 7.2072253415563196e+01 6.2958190356639662e+01 7.0000000059553127e+00 0 0 0 +23971 1 7.1511091361807118e+01 6.1300691437467094e+01 8.7500000039058818e+00 0 0 0 +23973 1 7.3194615537501562e+01 6.0739221666101109e+01 6.9999999976779552e+00 0 0 0 +23976 1 7.3755787451482789e+01 6.2396716627456506e+01 8.7499999589286990e+00 0 0 0 +23975 1 7.4878098919831018e+01 6.0177741431307545e+01 8.7499999971198310e+00 0 0 0 +23980 1 7.7122769527059560e+01 6.1273799473859512e+01 8.7500000006517720e+00 0 0 0 +24614 1 7.5439348569329226e+01 6.1835269292092882e+01 1.0500000010268449e+01 0 0 0 +23978 1 7.8805834297900617e+01 6.0712103440685347e+01 6.9999999861056921e+00 0 0 0 +24031 1 7.7684224009454155e+01 6.2931369376420243e+01 6.9999999673366071e+00 0 0 0 +24033 1 7.9367521131969369e+01 6.2369999232049281e+01 8.7499999717813211e+00 0 0 0 +23984 1 8.0489602679204069e+01 6.0150329856695187e+01 8.7499999807043700e+00 0 0 0 +24036 1 8.3289035926184567e+01 6.2903213619442361e+01 6.9999999770421599e+00 0 0 0 +24037 1 8.2732307295004915e+01 6.1244487678179745e+01 8.7499999696435431e+00 0 0 0 +24675 1 8.1049142747793780e+01 6.1807757518451162e+01 1.0500000000753474e+01 0 0 0 +24039 1 8.4431590384976573e+01 6.0687193878184019e+01 6.9999999774602086e+00 0 0 0 +24041 1 8.6132426023743932e+01 6.0141181497537147e+01 8.7499999962904660e+00 0 0 0 +24042 1 8.4964193250770080e+01 6.2334399573914737e+01 8.7499999948617333e+00 0 0 0 +24680 1 8.6710920568466364e+01 6.1785109613655180e+01 1.0499999963176437e+01 0 0 0 +23018 1 7.9929644736821075e+01 8.6163572207295246e+01 7.6230673329291676e-08 0 0 0 +24045 1 8.8549510048234055e+01 6.1239164222725258e+01 8.7499999673554534e+00 0 0 0 +24098 1 8.9045575936324099e+01 6.2838577161710994e+01 7.0000000080360953e+00 0 0 0 +23838 1 4.7941863337182326e+01 6.3627375254044487e+01 8.7499999465100640e+00 0 0 0 +23888 1 4.6819519373555394e+01 6.5846354695051815e+01 8.7499999576223040e+00 0 0 0 +24473 1 4.6258347311347329e+01 6.4188851538134116e+01 1.0499999967141045e+01 0 0 0 +23892 1 5.0186551401007378e+01 6.4723402112865813e+01 8.7499999945702189e+00 0 0 0 +24531 1 5.0747723318526823e+01 6.6380905292485537e+01 1.0499999995916532e+01 0 0 0 +24530 1 4.8503035393372699e+01 6.5284878459308061e+01 1.0499999982347827e+01 0 0 0 +23896 1 5.3553583390306272e+01 6.3600449491450071e+01 8.7500000484960250e+00 0 0 0 +23897 1 5.2431239326023231e+01 6.5819429067406759e+01 8.7500000295464400e+00 0 0 0 +24534 1 5.1870067346104797e+01 6.4161925828419342e+01 1.0500000012162628e+01 0 0 0 +24535 1 5.4114755311886491e+01 6.5257952783192479e+01 1.0500000025983232e+01 0 0 0 +23899 1 5.7481787292090267e+01 6.4134999879253357e+01 7.0000000369101567e+00 0 0 0 +23901 1 5.5798271339340957e+01 6.4696476370710045e+01 8.7500000533405551e+00 0 0 0 +24539 1 5.7481787302443777e+01 6.4134999877963594e+01 1.0500000028285470e+01 0 0 0 +23953 1 5.6359443336742785e+01 6.6353979588140291e+01 7.0000000311347570e+00 0 0 0 +24593 1 5.6359443375670942e+01 6.6353979584032572e+01 1.0500000035584472e+01 0 0 0 +23905 1 5.9165303386499552e+01 6.3573523358784605e+01 8.7500000012087646e+00 0 0 0 +23955 1 5.8042959380294739e+01 6.5792503131104667e+01 8.7500000399035827e+00 0 0 0 +23961 1 6.3093507302882152e+01 6.4108073444743894e+01 6.9999999794647048e+00 0 0 0 +23959 1 6.1409991335223900e+01 6.4669549878110047e+01 8.7499999882181676e+00 0 0 0 +23964 1 6.3654679329584603e+01 6.5765576574936958e+01 8.7499999848493193e+00 0 0 0 +23958 1 6.1971163421924160e+01 6.6327053112174909e+01 6.9999999596965301e+00 0 0 0 +24601 1 6.3093507261726160e+01 6.4108073438232367e+01 1.0500000010688145e+01 0 0 0 +24598 1 6.1971163381965994e+01 6.6327053128032716e+01 1.0500000012347737e+01 0 0 0 +23963 1 6.4777023380226723e+01 6.3546596971442419e+01 8.7499999951925087e+00 0 0 0 +23968 1 6.7021711590156812e+01 6.4642623925552783e+01 8.7500000456524916e+00 0 0 0 +23972 1 7.0388740760316423e+01 6.3519670280009990e+01 8.7500000348739153e+00 0 0 0 +24021 1 6.9266400470625300e+01 6.5738650805396958e+01 8.7500000385483006e+00 0 0 0 +24606 1 6.8705227563833020e+01 6.4081147667922608e+01 1.0500000030017196e+01 0 0 0 +24023 1 7.0949917498946860e+01 6.5177175813920940e+01 7.0000000332492780e+00 0 0 0 +24025 1 7.2633423491110761e+01 6.4615696862406423e+01 8.7500000239061677e+00 0 0 0 +24028 1 7.6561515579190612e+01 6.5150192830939361e+01 6.9999999621654272e+00 0 0 0 +24029 1 7.6000492274019535e+01 6.3492730523974977e+01 8.7499999752350188e+00 0 0 0 +24030 1 7.4878098910680578e+01 6.5711727588144754e+01 8.7499999768974330e+00 0 0 0 +24667 1 7.4316919764353543e+01 6.4054205792530013e+01 1.0500000008908250e+01 0 0 0 +24034 1 7.8245180051288884e+01 6.4588680000765052e+01 8.7499999405528079e+00 0 0 0 +24088 1 8.0489602648703382e+01 6.5684315846792174e+01 8.7499999648945437e+00 0 0 0 +24672 1 7.9929642937935171e+01 6.4027630017667391e+01 1.0499999987955302e+01 0 0 0 +24726 1 7.8805834271328010e+01 6.6246089526455663e+01 1.0499999997769507e+01 0 0 0 +24038 1 8.1612969766614569e+01 6.3466856723763719e+01 8.7499999546068707e+00 0 0 0 +24090 1 8.2176992955517065e+01 6.5124348418883145e+01 6.9999999543703151e+00 0 0 0 +24092 1 8.3862483937506198e+01 6.4566510398896185e+01 8.7499999641177126e+00 0 0 0 +24097 1 8.6132426015587001e+01 6.5675167182695532e+01 8.7499999510631188e+00 0 0 0 +24734 1 8.5523443002679258e+01 6.3999012706156734e+01 1.0499999962253694e+01 0 0 0 +24731 1 8.4431590312054482e+01 6.6221179675670584e+01 1.0499999957901482e+01 0 0 0 +5147 1 9.0272007528377415e+01 6.5988843682361065e+01 1.0499999995121126e+01 -1 0 0 +24095 1 8.7753273270345233e+01 6.5116139934158483e+01 7.0000000109429612e+00 0 0 0 +24096 1 8.7168422147965586e+01 6.3390960941533038e+01 8.7499999819628442e+00 0 0 0 +24099 1 8.9214901447116432e+01 6.4473222311992942e+01 8.7500000534790328e+00 0 0 0 +23889 1 4.5697175274251364e+01 6.8065334141657729e+01 8.7499999334915746e+00 0 0 0 +23943 1 4.7941863387492049e+01 6.9161361058749989e+01 8.7499999585715234e+00 0 0 0 +24527 1 4.7380691388759196e+01 6.7503857897086732e+01 1.0499999973777706e+01 0 0 0 +23893 1 4.9064207403943087e+01 6.6942381592670458e+01 8.7499999983238368e+00 0 0 0 +23947 1 5.1308895482704003e+01 6.8038408612156843e+01 8.7500000425372484e+00 0 0 0 +24585 1 4.9625379413991766e+01 6.8599884742072334e+01 1.0500000010497882e+01 0 0 0 +23951 1 5.4675927255789532e+01 6.6915455950617016e+01 8.7500000616272970e+00 0 0 0 +23952 1 5.3553583526232664e+01 6.9134435515517936e+01 8.7500000614975537e+00 0 0 0 +24589 1 5.2992411374442000e+01 6.7476932238424794e+01 1.0500000014386410e+01 0 0 0 +23950 1 5.5237099470755268e+01 6.8572959289576929e+01 7.0000000579796477e+00 0 0 0 +23956 1 5.6920615400643641e+01 6.8011482735553528e+01 8.7500000399244673e+00 0 0 0 +24590 1 5.5237099542380101e+01 6.8572959268654117e+01 1.0500000041668146e+01 0 0 0 +23960 1 6.0287647478178755e+01 6.6888529689941620e+01 8.7499999999226148e+00 0 0 0 +24009 1 5.9165303558262003e+01 6.9107509494724709e+01 8.7500000145120840e+00 0 0 0 +24011 1 6.0848819425061933e+01 6.8546032907492403e+01 6.9999999702748479e+00 0 0 0 +24651 1 6.0848819441958419e+01 6.8546032894638032e+01 1.0500000001651628e+01 0 0 0 +24013 1 6.2532335532202914e+01 6.7984556369912397e+01 8.7499999855354371e+00 0 0 0 +24017 1 6.5899367140328479e+01 6.6861603437496981e+01 8.7500000422054907e+00 0 0 0 +24018 1 6.4777023505563207e+01 6.9080583221185009e+01 8.7500000367574113e+00 0 0 0 +24020 1 6.9827570161818699e+01 6.7396152857568339e+01 7.0000000457148062e+00 0 0 0 +24022 1 6.8144054563360285e+01 6.7957630127158922e+01 8.7500000336767929e+00 0 0 0 +24076 1 7.0388740890385208e+01 6.9053656500069508e+01 8.7500000215377973e+00 0 0 0 +24660 1 6.9827570176397955e+01 6.7396152807633342e+01 1.0500000024726063e+01 0 0 0 +24026 1 7.1511091371167069e+01 6.6834677639800319e+01 8.7500000194373051e+00 0 0 0 +24080 1 7.3755787536123549e+01 6.7930702688246200e+01 8.7499999812531417e+00 0 0 0 +24082 1 7.5439348622677244e+01 6.7369255352496296e+01 6.9999999692928947e+00 0 0 0 +24084 1 7.7122769562237423e+01 6.6807785513910915e+01 8.7499999354422417e+00 0 0 0 +24085 1 7.6000492424465477e+01 6.9026716502504556e+01 8.7499999326479490e+00 0 0 0 +24722 1 7.5439348604900275e+01 6.7369255332384711e+01 1.0499999979316168e+01 0 0 0 +24089 1 7.9367521192814152e+01 6.7903985151227900e+01 8.7499999277068046e+00 0 0 0 +24087 1 8.1049142826851451e+01 6.7341743339173263e+01 6.9999999180200287e+00 0 0 0 +24093 1 8.2732307320094193e+01 6.6778473502679958e+01 8.7499999657753502e+00 0 0 0 +24143 1 8.1612969853846792e+01 6.9000842459903367e+01 8.7499999313050889e+00 0 0 0 +24147 1 8.4964193311065657e+01 6.7868385188605217e+01 8.7499999634991941e+00 0 0 0 +24149 1 8.6710920699291222e+01 6.7319095204485137e+01 7.0000000378644867e+00 0 0 0 +24151 1 8.8549510072100077e+01 6.6773149788049338e+01 8.7500000106892610e+00 0 0 0 +24152 1 8.7168422199102011e+01 6.8924946414812780e+01 8.7500000145628363e+00 0 0 0 +24790 1 8.9045575947583359e+01 6.8372562507379087e+01 1.0499999964967438e+01 0 0 0 +23944 1 4.6819519316156040e+01 7.1380340496759644e+01 8.7499999549265350e+00 0 0 0 +24581 1 4.6258347288913228e+01 6.9722837265730448e+01 1.0499999968879283e+01 0 0 0 +23948 1 5.0186551450884139e+01 7.0257388012273154e+01 8.7500000296063902e+00 0 0 0 +23997 1 4.9064207355639994e+01 7.2476367503233348e+01 8.7500000024747635e+00 0 0 0 +24582 1 4.8503035373627320e+01 7.0818864318818825e+01 1.0499999981663727e+01 0 0 0 +24001 1 5.2431239393193650e+01 7.1353415018725443e+01 8.7500000874647128e+00 0 0 0 +24003 1 5.4114755460468686e+01 7.0791938802276562e+01 7.0000000651445458e+00 0 0 0 +24006 1 5.4675927421008048e+01 7.2449441972849769e+01 8.7500001055614884e+00 0 0 0 +24005 1 5.5798271543999235e+01 7.0230462461694557e+01 8.7500000665674449e+00 0 0 0 +24008 1 5.9726475569098454e+01 7.0765012665922228e+01 6.9999999600265568e+00 0 0 0 +24010 1 5.8042959587145944e+01 7.1326489232927784e+01 8.7500000201053094e+00 0 0 0 +24064 1 6.0287647738989662e+01 7.2422515881790801e+01 8.7499999859831856e+00 0 0 0 +24648 1 5.9726475628684653e+01 7.0765012686310598e+01 1.0500000011408416e+01 0 0 0 +24014 1 6.1409991545141700e+01 7.0203536103968247e+01 8.7499999630160339e+00 0 0 0 +24068 1 6.3654679531986176e+01 7.1299562873279100e+01 8.7500000093479713e+00 0 0 0 +24071 1 6.7582883375794978e+01 7.1834113119575235e+01 7.0000000374093485e+00 0 0 0 +24070 1 6.5338195588743574e+01 7.0738086498314203e+01 7.0000000049732147e+00 0 0 0 +24072 1 6.7021711753309546e+01 7.0176610206721776e+01 8.7500000497362809e+00 0 0 0 +24073 1 6.5899367389176092e+01 7.2395589758623913e+01 8.7500000058046048e+00 0 0 0 +24710 1 6.5338195548135175e+01 7.0738086483394838e+01 1.0500000023502123e+01 0 0 0 +24711 1 6.7582883413641540e+01 7.1834113097640682e+01 1.0500000033549739e+01 0 0 0 +24074 1 6.8705227728364193e+01 6.9615133972074801e+01 7.0000000603300228e+00 0 0 0 +24077 1 6.9266400724916963e+01 7.1272637056422198e+01 8.7500000475064219e+00 0 0 0 +24714 1 6.8705227730120299e+01 6.9615133927682109e+01 1.0500000017322469e+01 0 0 0 +24133 1 7.3194615846816191e+01 7.1807193896306686e+01 7.0000000249064955e+00 0 0 0 +24081 1 7.2633423708501098e+01 7.0149682989888774e+01 8.7499999805130066e+00 0 0 0 +24131 1 7.1511091713778399e+01 7.2368663778670452e+01 8.7500000042098129e+00 0 0 0 +24773 1 7.3194615900849556e+01 7.1807193835506865e+01 1.0499999951766315e+01 0 0 0 +24079 1 7.4316919954531230e+01 6.9588191829676632e+01 6.9999999797791403e+00 0 0 0 +24135 1 7.4878099222253894e+01 7.1245713574009315e+01 8.7499999472049286e+00 0 0 0 +24140 1 7.7122769926290715e+01 7.2341771385885835e+01 8.7499999347942943e+00 0 0 0 +24719 1 7.4316919971678786e+01 6.9588191826174764e+01 1.0499999964718301e+01 0 0 0 +24138 1 7.8805834594160814e+01 7.1780075228698493e+01 6.9999999057713893e+00 0 0 0 +24141 1 7.9929643133106850e+01 6.9561615723603055e+01 6.9999999070368331e+00 0 0 0 +24139 1 7.8245180255602278e+01 7.0122665867266534e+01 8.7499999252027969e+00 0 0 0 +24144 1 8.0489602858942675e+01 7.1218301526912725e+01 8.7499999180122803e+00 0 0 0 +24778 1 7.8805834517830704e+01 7.1780075289600205e+01 1.0499999983064077e+01 0 0 0 +24781 1 7.9929643045991753e+01 6.9561615798513174e+01 1.0499999987898876e+01 0 0 0 +24197 1 8.2732307542954786e+01 7.2312458954626067e+01 8.7499999317368928e+00 0 0 0 +24199 1 8.4431590640719577e+01 7.1755165030192984e+01 6.9999999546046832e+00 0 0 0 +24146 1 8.5523443228077483e+01 6.9532998198729800e+01 6.9999999868794660e+00 0 0 0 +24148 1 8.3862484054893812e+01 7.0100495947683982e+01 8.7499999525571130e+00 0 0 0 +24201 1 8.6132426170879128e+01 7.1209152584390850e+01 8.7500000305000061e+00 0 0 0 +24839 1 8.4431590502181706e+01 7.1755165097807321e+01 1.0500000003232516e+01 0 0 0 +24204 1 8.9214901546562203e+01 7.0007207700012898e+01 8.7500000297751956e+00 0 0 0 +24205 1 8.8549510184864531e+01 7.2307135140761105e+01 8.7500000536173594e+00 0 0 0 +25576 1 7.4878100624180433e+01 8.7847670665545920e+01 1.5750000004816483e+01 0 0 0 +25575 1 7.6000493922105221e+01 8.5628673668044200e+01 1.5749999995433422e+01 0 0 0 +23993 1 4.6258347260314466e+01 7.5256823180036335e+01 6.9999999307304810e+00 0 0 0 +23994 1 4.5697175188210522e+01 7.3599320004235736e+01 8.7499999190531756e+00 0 0 0 +23995 1 4.7380691317771920e+01 7.3037843827715349e+01 6.9999999463215712e+00 0 0 0 +23998 1 4.7941863297312814e+01 7.4695347004919867e+01 8.7499999497928282e+00 0 0 0 +24635 1 4.7380691254344562e+01 7.3037843763578223e+01 1.0499999977658184e+01 0 0 0 +24633 1 4.6258347234476176e+01 7.5256823230435216e+01 1.0499999936395538e+01 0 0 0 +24002 1 5.1308895435771710e+01 7.3572394551673554e+01 8.7500000546706325e+00 0 0 0 +24052 1 5.0186551412293625e+01 7.5791374004042666e+01 8.7500000283269763e+00 0 0 0 +24000 1 5.2992411453186534e+01 7.3010918213465516e+01 7.0000000696807350e+00 0 0 0 +24054 1 5.1870067484721190e+01 7.5229897755302389e+01 7.0000000551533512e+00 0 0 0 +24056 1 5.3553583584200275e+01 7.4668421471322759e+01 8.7500001000503449e+00 0 0 0 +24059 1 5.7481787620244759e+01 7.5202971999819709e+01 7.0000000122098145e+00 0 0 0 +24060 1 5.6920615594051561e+01 7.3545468782553186e+01 8.7500000550364110e+00 0 0 0 +24061 1 5.5798271647799027e+01 7.5764448415560111e+01 8.7500000708238392e+00 0 0 0 +24699 1 5.7481787717996824e+01 7.5202972009992195e+01 1.0500000050250870e+01 0 0 0 +24062 1 5.8604131703397243e+01 7.2983992399862160e+01 6.9999999999176667e+00 0 0 0 +24065 1 5.9165303793371884e+01 7.4641495600044223e+01 8.7500000046015636e+00 0 0 0 +24702 1 5.8604131793617604e+01 7.2983992438371928e+01 1.0500000028604468e+01 0 0 0 +24067 1 6.4215851707909351e+01 7.2957066245559403e+01 6.9999999757811260e+00 0 0 0 +24069 1 6.2532335818574410e+01 7.3518542636261728e+01 8.7499999885891828e+00 0 0 0 +24119 1 6.1409991802348443e+01 7.5737522290543851e+01 8.7499999715914711e+00 0 0 0 +24121 1 6.3093507742505466e+01 7.5176045933462873e+01 6.9999999693548505e+00 0 0 0 +24707 1 6.4215851676755079e+01 7.2957066225534334e+01 1.0500000010365053e+01 0 0 0 +24761 1 6.3093507738969258e+01 7.5176045955052658e+01 1.0500000005677272e+01 0 0 0 +24125 1 6.6460539801043225e+01 7.4053093151945916e+01 7.0000000371954805e+00 0 0 0 +24123 1 6.4777023807499219e+01 7.4614569529991883e+01 8.7500000103228821e+00 0 0 0 +24128 1 6.7021712112948180e+01 7.5710596437276294e+01 8.7500000496828036e+00 0 0 0 +24765 1 6.6460539788259155e+01 7.4053093149512023e+01 1.0500000039638273e+01 0 0 0 +24127 1 6.8144054876085661e+01 7.3491616387910327e+01 8.7500000525014503e+00 0 0 0 +24132 1 7.0388741270068962e+01 7.4587642620612996e+01 8.7500000339331017e+00 0 0 0 +24130 1 7.2072253906233684e+01 7.4026162590723345e+01 7.0000000282209491e+00 0 0 0 +24136 1 7.3755787969640124e+01 7.3464688743317822e+01 8.7499999495630068e+00 0 0 0 +24185 1 7.2633424166845785e+01 7.5683668982476973e+01 8.7500000075516819e+00 0 0 0 +24770 1 7.2072253951317151e+01 7.4026162535651380e+01 1.0499999979625688e+01 0 0 0 +24189 1 7.6000492928882124e+01 7.4560702417211672e+01 8.7499999347906048e+00 0 0 0 +24191 1 7.7684224567715361e+01 7.3999341116400572e+01 6.9999999262769235e+00 0 0 0 +24193 1 7.9367521605713122e+01 7.3437970817787317e+01 8.7499999113309066e+00 0 0 0 +24194 1 7.8245180801953182e+01 7.5656651578851395e+01 8.7499999047333237e+00 0 0 0 +24831 1 7.7684224542307618e+01 7.3999341121450470e+01 1.0499999945398240e+01 0 0 0 +24196 1 8.3289036410889523e+01 7.3971184629208153e+01 6.9999999153654855e+00 0 0 0 +24198 1 8.1612970306779147e+01 7.4534827910906628e+01 8.7499999218521811e+00 0 0 0 +24836 1 8.3289036219204888e+01 7.3971184704805410e+01 1.0500000004396464e+01 0 0 0 +24202 1 8.4964193528875469e+01 7.3402370496931212e+01 8.7499999919458045e+00 0 0 0 +24247 1 8.3862484509894912e+01 7.5634481232303216e+01 8.7499999507118158e+00 0 0 0 +24253 1 8.9045576045580731e+01 7.3906547927937623e+01 7.0000000985663684e+00 0 0 0 +24251 1 8.7168422420868595e+01 7.4458931707681870e+01 8.7500000566091050e+00 0 0 0 +24254 1 8.9214901521932944e+01 7.5541192993813027e+01 8.7500001802206366e+00 0 0 0 +24893 1 8.9045576004364037e+01 7.3906547790333548e+01 1.0500000058238612e+01 0 0 0 +24047 1 4.7380691296068960e+01 7.8571829829884578e+01 6.9999999451128740e+00 0 0 0 +24048 1 4.6819519285268584e+01 7.6914326491006321e+01 8.7499999437252463e+00 0 0 0 +24050 1 4.8503035408144328e+01 7.6352850298548248e+01 6.9999999714417545e+00 0 0 0 +24051 1 5.0747723433588568e+01 7.7448877277040282e+01 7.0000000414021271e+00 0 0 0 +24053 1 4.9064207359355130e+01 7.8010353533613213e+01 8.7500000076605939e+00 0 0 0 +24057 1 5.2431239466085522e+01 7.6887401021862772e+01 8.7500000744082342e+00 0 0 0 +24111 1 5.4675927532091201e+01 7.7983427933457463e+01 8.7500000877219861e+00 0 0 0 +24113 1 5.6359443668750075e+01 7.7421951627681437e+01 7.0000000303475067e+00 0 0 0 +24115 1 5.8042959788158427e+01 7.6860475298178315e+01 8.7500000178967454e+00 0 0 0 +24120 1 6.0287647973680635e+01 7.7956502015870086e+01 8.7499999597312001e+00 0 0 0 +24118 1 6.1971163914655229e+01 7.7395025553162057e+01 6.9999999538252293e+00 0 0 0 +24124 1 6.3654679854733331e+01 7.6833549093487193e+01 8.7499999911796387e+00 0 0 0 +24758 1 6.1971163915268683e+01 7.7395025593772516e+01 1.0500000001201096e+01 0 0 0 +24177 1 6.5899367756136186e+01 7.7929575944597488e+01 8.7500000309084989e+00 0 0 0 +24180 1 6.9827570916586780e+01 7.8464125043554063e+01 7.0000000194078043e+00 0 0 0 +24181 1 6.9266401112549730e+01 7.6806623132745656e+01 8.7500000592622271e+00 0 0 0 +24820 1 6.9827570956653091e+01 7.8464124969303697e+01 1.0500000052869348e+01 0 0 0 +24183 1 7.0949918148315874e+01 7.6245148010693313e+01 7.0000000322920455e+00 0 0 0 +24186 1 7.1511092163761845e+01 7.7902649707667948e+01 8.7500000262573536e+00 0 0 0 +24823 1 7.0949918212877961e+01 7.6245147972064316e+01 1.0500000018808841e+01 0 0 0 +24188 1 7.6561516330056378e+01 7.6218164584889493e+01 6.9999999774271640e+00 0 0 0 +24237 1 7.5439349477851565e+01 7.8437227104142252e+01 6.9999999885186668e+00 0 0 0 +24190 1 7.4878099722349575e+01 7.6779699466204960e+01 8.7499999624964548e+00 0 0 0 +24239 1 7.7122770486639027e+01 7.7875757108080592e+01 8.7499999245981233e+00 0 0 0 +24828 1 7.6561516361565353e+01 7.6218164608239064e+01 1.0499999947521610e+01 0 0 0 +24877 1 7.5439349529618354e+01 7.8437227070539308e+01 1.0499999949709686e+01 0 0 0 +24243 1 8.0489603499776138e+01 7.6752287022096269e+01 8.7499999026401092e+00 0 0 0 +24242 1 8.1049143816731430e+01 7.8409714319050295e+01 6.9999998745652618e+00 0 0 0 +24245 1 8.2176993695616332e+01 7.6192319402998805e+01 6.9999998806243857e+00 0 0 0 +24248 1 8.2732308215469587e+01 7.7846444322902130e+01 8.7499998933500400e+00 0 0 0 +24882 1 8.1049143746727964e+01 7.8409714380275958e+01 1.0499999936266294e+01 0 0 0 +24885 1 8.2176993546507845e+01 7.6192319479221268e+01 1.0499999969199825e+01 0 0 0 +24286 1 8.6710921357814186e+01 7.8387065824249618e+01 7.0000000026169005e+00 0 0 0 +24252 1 8.6132426550548757e+01 7.6743137846537110e+01 8.7500000122593580e+00 0 0 0 +24926 1 8.6710921119757586e+01 7.8387065840665286e+01 1.0500000051578612e+01 0 0 0 +24250 1 8.7753273694343832e+01 7.6184110585708012e+01 7.0000000741715853e+00 0 0 0 +24288 1 8.8549510475993387e+01 7.7841120508170462e+01 8.7500001360550712e+00 0 0 0 +24890 1 8.7753273508252576e+01 7.6184110546461781e+01 1.0500000039497685e+01 0 0 0 +24049 1 4.5697175176456277e+01 7.9133305993316043e+01 8.7499999139176960e+00 0 0 0 +24101 1 4.6258347265626313e+01 8.0790809225287788e+01 6.9999999448834842e+00 0 0 0 +24103 1 4.7941863315764287e+01 8.0229333040068255e+01 8.7499999507050514e+00 0 0 0 +24102 1 4.8503035386693028e+01 8.1886836282065744e+01 7.0000000051980296e+00 0 0 0 +24105 1 4.9625379443391829e+01 7.9667856719219131e+01 7.0000000109114371e+00 0 0 0 +24107 1 5.1308895539595547e+01 7.9106380576168178e+01 8.7500000600003744e+00 0 0 0 +24108 1 5.0186551454858481e+01 8.1325359999630876e+01 8.7500000312498418e+00 0 0 0 +24163 1 5.4114755673546540e+01 8.1859910716346008e+01 7.0000000661660495e+00 0 0 0 +24112 1 5.3553583735407223e+01 8.0202407458858232e+01 8.7500000721641786e+00 0 0 0 +24110 1 5.5237099755770799e+01 7.9640931256206130e+01 7.0000000613781008e+00 0 0 0 +24116 1 5.6920615767685824e+01 7.9079454784228545e+01 8.7500000338734303e+00 0 0 0 +24165 1 5.5798271844344917e+01 8.1298434414246515e+01 8.7500000193837781e+00 0 0 0 +24168 1 5.9726475964376256e+01 8.1832984876841408e+01 6.9999999448550208e+00 0 0 0 +24169 1 5.9165303991520496e+01 8.0175481705855276e+01 8.7499999701994131e+00 0 0 0 +24171 1 6.0848819916359282e+01 7.9614005245511038e+01 6.9999999570403748e+00 0 0 0 +24808 1 5.9726476027824226e+01 8.1832984903867768e+01 1.0499999960567736e+01 0 0 0 +24811 1 6.0848819937614849e+01 7.9614005282395041e+01 1.0499999975835294e+01 0 0 0 +24173 1 6.2532336056101911e+01 7.9052528828532928e+01 8.7499999616376147e+00 0 0 0 +24174 1 6.1409991992802794e+01 8.1271508441044503e+01 8.7499999300941624e+00 0 0 0 +24178 1 6.4777024116827761e+01 8.0148555652742431e+01 8.7500000233986110e+00 0 0 0 +24225 1 6.5338196176534126e+01 8.1806058818788657e+01 7.0000000262139404e+00 0 0 0 +24227 1 6.7021712477289753e+01 8.1244582426860006e+01 8.7500000628482937e+00 0 0 0 +24865 1 6.5338196143645419e+01 8.1806058808191608e+01 1.0500000018595882e+01 0 0 0 +24229 1 6.8705228530657848e+01 8.0683106095123435e+01 7.0000000448606201e+00 0 0 0 +24182 1 6.8144055301076207e+01 7.9025602409364666e+01 8.7500000566104656e+00 0 0 0 +24231 1 7.0388741768055823e+01 8.0121628511277123e+01 8.7500000189303950e+00 0 0 0 +24869 1 6.8705228528431149e+01 8.0683106039442762e+01 1.0500000051059446e+01 0 0 0 +24235 1 7.3755788437924608e+01 7.8998674539421870e+01 8.7500000014302337e+00 0 0 0 +24236 1 7.2633424651517657e+01 8.1217654754128546e+01 8.7500000089721439e+00 0 0 0 +24234 1 7.4316920875813054e+01 8.0656163558004465e+01 6.9999999799770931e+00 0 0 0 +24240 1 7.6000493403948710e+01 8.0094688103457017e+01 8.7499999525580296e+00 0 0 0 +24874 1 7.4316920958574102e+01 8.0656163522764899e+01 1.0499999979390287e+01 0 0 0 +24278 1 7.9929644214371322e+01 8.0629586765512983e+01 6.9999999061225493e+00 0 0 0 +24244 1 7.9367522240670112e+01 7.8971956358160597e+01 8.7499998895907591e+00 0 0 0 +24276 1 7.8245181369156896e+01 8.1190637116371462e+01 8.7499999158558186e+00 0 0 0 +24918 1 7.9929644213643840e+01 8.0629586838324499e+01 1.0499999903075150e+01 0 0 0 +24280 1 8.1612970996635170e+01 8.0068813301345159e+01 8.7499998636939811e+00 0 0 0 +24283 1 8.5523444195587359e+01 8.0600968863439149e+01 6.9999999165228450e+00 0 0 0 +24284 1 8.4964194113626590e+01 7.8936355827637485e+01 8.7499999375889033e+00 0 0 0 +24285 1 8.3862485165970185e+01 8.1168466629460625e+01 8.7499998873222413e+00 0 0 0 +24923 1 8.5523443992494208e+01 8.0600968919463455e+01 1.0500000005659107e+01 0 0 0 +24289 1 8.7168422830158136e+01 7.9992917122030207e+01 8.7500000654130723e+00 0 0 0 +24310 1 8.9214901570778792e+01 8.1075178573236713e+01 8.7500002025448875e+00 0 0 0 +24155 1 4.7380691276832991e+01 8.4105815810800081e+01 6.9999999413776957e+00 0 0 0 +24104 1 4.6819519264236284e+01 8.2448312486381710e+01 8.7499999564553068e+00 0 0 0 +24154 1 4.5697175211527885e+01 8.4667292004771426e+01 8.7499999357811138e+00 0 0 0 +24156 1 4.9625379387559256e+01 8.5201842586908185e+01 7.0000000123078348e+00 0 0 0 +24157 1 4.9064207320180174e+01 8.3544339469828600e+01 8.7500000168601719e+00 0 0 0 +24159 1 5.0747723401376085e+01 8.2982863168972557e+01 7.0000000710734964e+00 0 0 0 +24162 1 5.1308895522859487e+01 8.4640366425498755e+01 8.7500000809391345e+00 0 0 0 +24160 1 5.2992411576501816e+01 8.4078890057759082e+01 7.0000000835300265e+00 0 0 0 +24161 1 5.2431239532060651e+01 8.2421386945236506e+01 8.7500000834582288e+00 0 0 0 +24166 1 5.4675927640447206e+01 8.3517413844342542e+01 8.7500000583329669e+00 0 0 0 +24215 1 5.6920615852380351e+01 8.4613440738783453e+01 8.7499999785305445e+00 0 0 0 +24170 1 5.8042959942802050e+01 8.2394461305826511e+01 8.7499999516177489e+00 0 0 0 +24217 1 5.8604131989912695e+01 8.4051964471155202e+01 6.9999999555832471e+00 0 0 0 +24219 1 6.0287648069906751e+01 8.3490488079640542e+01 8.7499999119787084e+00 0 0 0 +24857 1 5.8604132100046648e+01 8.4051964503811291e+01 1.0499999958632898e+01 0 0 0 +24222 1 6.4215852140411513e+01 8.4025038437549426e+01 7.0000000108912390e+00 0 0 0 +24223 1 6.3654680024922648e+01 8.2367535208830859e+01 8.7499999834497721e+00 0 0 0 +24224 1 6.2532336137977275e+01 8.4586514842333841e+01 8.7499999596092284e+00 0 0 0 +24862 1 6.4215852077507847e+01 8.4025038430902825e+01 1.0500000000005150e+01 0 0 0 +24262 1 6.6460540296563906e+01 8.5121065103209943e+01 7.0000000858768585e+00 0 0 0 +24226 1 6.7582884075257013e+01 8.2902085165781173e+01 7.0000000593610716e+00 0 0 0 +24228 1 6.5899367953277107e+01 8.3463561889257065e+01 8.7500000283229138e+00 0 0 0 +24902 1 6.6460540282017092e+01 8.5121065099549796e+01 1.0500000035817987e+01 0 0 0 +24866 1 6.7582884118779660e+01 8.2902085132362657e+01 1.0500000053316912e+01 0 0 0 +24232 1 6.9266401574335262e+01 8.2340608976199860e+01 8.7500000592322991e+00 0 0 0 +24264 1 6.8144055557019115e+01 8.4559588211469489e+01 8.7500000839564311e+00 0 0 0 +24267 1 7.2072254776781548e+01 8.5094134150130444e+01 7.0000000176728694e+00 0 0 0 +24270 1 7.3194616790200314e+01 8.2875165555643122e+01 7.0000000047714073e+00 0 0 0 +24268 1 7.1511092637769408e+01 8.3436635456459541e+01 8.7500000204614654e+00 0 0 0 +24273 1 7.3755788942681193e+01 8.4532660251077388e+01 8.7499999834836544e+00 0 0 0 +24907 1 7.2072254860655164e+01 8.5094134067398343e+01 1.0500000010757981e+01 0 0 0 +24910 1 7.3194616892950563e+01 8.2875165472305241e+01 1.0499999988935290e+01 0 0 0 +24272 1 7.4878100235376920e+01 8.2313685148730983e+01 8.7499999786948859e+00 0 0 0 +24277 1 7.7122771035434482e+01 8.3409742670644164e+01 8.7499999648243261e+00 0 0 0 +24275 1 7.8805835704784485e+01 8.2848046325205246e+01 6.9999999216415096e+00 0 0 0 +24297 1 7.7684225652181595e+01 8.5067312267081547e+01 6.9999999518177987e+00 0 0 0 +24299 1 7.9367522827142196e+01 8.4505941780686626e+01 8.7499999120022043e+00 0 0 0 +24281 1 8.0489604083710717e+01 8.2286272423536744e+01 8.7499998617440511e+00 0 0 0 +24915 1 7.8805835753941182e+01 8.2848046373762998e+01 1.0499999925740969e+01 0 0 0 +24937 1 7.7684225759899675e+01 8.5067312254003681e+01 1.0499999946052062e+01 0 0 0 +24302 1 8.3289037541195370e+01 8.5039155410976221e+01 6.9999998326022661e+00 0 0 0 +24303 1 8.2732308755620124e+01 8.3380429676118951e+01 8.7499998469273557e+00 0 0 0 +24942 1 8.3289037479701108e+01 8.5039155480370283e+01 1.0499999937795026e+01 0 0 0 +24305 1 8.4431591726224482e+01 8.2823135741948434e+01 6.9999998535203281e+00 0 0 0 +24307 1 8.6132427107961732e+01 8.2277123376493535e+01 8.7500000091492858e+00 0 0 0 +24308 1 8.4964194640872279e+01 8.4470341323486750e+01 8.7499999187320014e+00 0 0 0 +24945 1 8.4431591579758930e+01 8.2823135815666973e+01 1.0499999962910749e+01 0 0 0 +4535 1 9.0272007528377202e+01 8.2590799978265878e+01 7.0000001654514996e+00 -1 0 0 +24311 1 8.8549510875887776e+01 8.3375106214283505e+01 8.7500001774737495e+00 0 0 0 +24319 1 8.9045576318548839e+01 8.4974519060139244e+01 7.0000001401693259e+00 0 0 0 +24959 1 8.9045576238942303e+01 8.4974519138140550e+01 1.0500000222135625e+01 0 0 0 +25573 1 7.4316921437791919e+01 8.6190149128726176e+01 1.3999999992734045e+01 0 0 0 +24153 1 4.6258347311992168e+01 8.6324795172671486e+01 6.9999999346969437e+00 0 0 0 +24158 1 4.7941863291927959e+01 8.5763318946448280e+01 8.7499999762988594e+00 0 0 0 +24206 1 4.6819519391929276e+01 8.7982298406357430e+01 8.7499999376055708e+00 0 0 0 +24207 1 4.8503035422157794e+01 8.7420822156998298e+01 6.9999999764275698e+00 0 0 0 +24208 1 5.0186551438713565e+01 8.6859345816182454e+01 8.7500000460866847e+00 0 0 0 +20484 1 5.0747723437245156e+01 8.8516848933881434e+01 7.0000000639663993e+00 0 -1 0 +24209 1 5.1870067520271860e+01 8.6297869518494664e+01 7.0000000623615453e+00 0 0 0 +24211 1 5.3553583713301443e+01 8.5736393259380094e+01 8.7500000789044030e+00 0 0 0 +24212 1 5.2431239515934173e+01 8.7955372682505171e+01 8.7500000715788957e+00 0 0 0 +24214 1 5.7481787771406736e+01 8.6270943914077122e+01 6.9999999640734538e+00 0 0 0 +24216 1 5.5798271805892306e+01 8.6832420206820217e+01 8.7500000083821607e+00 0 0 0 +24854 1 5.7481787927023149e+01 8.6270943912392028e+01 1.0499999970297306e+01 0 0 0 +20499 1 5.6359443668013093e+01 8.8489923343011867e+01 6.9999999883810737e+00 0 -1 0 +21139 1 5.6359443838671368e+01 8.8489923363513412e+01 1.0499999999583645e+01 0 -1 0 +24220 1 5.9165304020699097e+01 8.5709467639642526e+01 8.7499999222901774e+00 0 0 0 +24255 1 5.8042959873639148e+01 8.7928447147145434e+01 8.7499999438913534e+00 0 0 0 +24257 1 6.1409991958441083e+01 8.6805494360590686e+01 8.7499999340067571e+00 0 0 0 +24258 1 6.3093507989082461e+01 8.6244018028601175e+01 6.9999999710929819e+00 0 0 0 +24261 1 6.3654679976087138e+01 8.7901521021057391e+01 8.7499999909050636e+00 0 0 0 +24898 1 6.3093507934281639e+01 8.6244018044495107e+01 1.0499999984837338e+01 0 0 0 +20502 1 6.1971163978516095e+01 8.8462997464879138e+01 6.9999999271633699e+00 0 -1 0 +21142 1 6.1971163938013810e+01 8.8462997529852672e+01 1.0499999979119870e+01 0 -1 0 +24260 1 6.4777024150170462e+01 8.5682541569259726e+01 8.7500000171627654e+00 0 0 0 +24265 1 6.7021712533007062e+01 8.6778568172950997e+01 8.7500000968500160e+00 0 0 0 +24269 1 7.0388742036522558e+01 8.5655614183064102e+01 8.7500000671649847e+00 0 0 0 +24290 1 6.9266401613095027e+01 8.7874594592060390e+01 8.7500000939330036e+00 0 0 0 +24291 1 7.0949918795654241e+01 8.7313119445234918e+01 7.0000000541009042e+00 0 0 0 +24292 1 7.2633424999233867e+01 8.6751640398352151e+01 8.7500000379701355e+00 0 0 0 +24931 1 7.0949918927942534e+01 8.7313119406300970e+01 1.0500000035172912e+01 0 0 0 +24294 1 7.6561517327864848e+01 8.7286135756895277e+01 6.9999999954310397e+00 0 0 0 +24295 1 7.6000493977174088e+01 8.5628673720880073e+01 8.7499999659609102e+00 0 0 0 +24296 1 7.4878100629703482e+01 8.7847670724383562e+01 8.7499999902257919e+00 0 0 0 +24934 1 7.6561517476221184e+01 8.7286135748644355e+01 1.0499999974309683e+01 0 0 0 +24300 1 7.8245181963409621e+01 8.6724622601627303e+01 8.7499999516675189e+00 0 0 0 +24312 1 8.0489604721098814e+01 8.7820257893249675e+01 8.7499999072257584e+00 0 0 0 +24304 1 8.1612971588168875e+01 8.5602798709166095e+01 8.7499998811196829e+00 0 0 0 +24313 1 8.2176994835345766e+01 8.7260290251550458e+01 6.9999998458871913e+00 0 0 0 +24953 1 8.2176994876650198e+01 8.7260290297836562e+01 1.0499999914964627e+01 0 0 0 +24314 1 8.3862485682110389e+01 8.6702452111248121e+01 8.7499998777870029e+00 0 0 0 +24318 1 8.6132427407698998e+01 8.7811109055551640e+01 8.7499999373490081e+00 0 0 0 +24316 1 8.7753274316631561e+01 8.7252081851888931e+01 6.9999998809529753e+00 0 0 0 +24317 1 8.7168422957566321e+01 8.5526902602318600e+01 8.7500000434535448e+00 0 0 0 +24320 1 8.9214902045282088e+01 8.6609164420422431e+01 8.7500002345960457e+00 0 0 0 +24956 1 8.7753274125289821e+01 8.7252082035509403e+01 1.0500000189281375e+01 0 0 0 +23013 1 7.4316921290328509e+01 8.6190149172149447e+01 2.7590292717150078e-08 0 0 0 +24323 1 4.5697175643958744e+01 4.5929390930489426e+01 1.2250000011695780e+01 0 0 0 +24329 1 4.7941863694837458e+01 4.7025417890821153e+01 1.2250000022734694e+01 0 0 0 +24962 1 4.7380691749397116e+01 4.5367914667782948e+01 1.4000000013921635e+01 0 0 0 +24325 1 4.9064207754965786e+01 4.4806438311487753e+01 1.2249999998518820e+01 0 0 0 +24333 1 5.1308895731305299e+01 4.5902465218913875e+01 1.2249999992736512e+01 0 0 0 +24971 1 4.9625379737121960e+01 4.6463941475803928e+01 1.4000000030420107e+01 0 0 0 +24337 1 5.4675927482911085e+01 4.4779512307786135e+01 1.2250000016002863e+01 0 0 0 +24338 1 5.3553583688276902e+01 4.6998491946506569e+01 1.2250000005987506e+01 0 0 0 +24975 1 5.2992411669763186e+01 4.5340988757447739e+01 1.4000000006075895e+01 0 0 0 +24341 1 5.6920615547004388e+01 4.5875538927879099e+01 1.2249999954684716e+01 0 0 0 +24976 1 5.5237099647795858e+01 4.6437015594642226e+01 1.4000000015909590e+01 0 0 0 +24343 1 6.0287647605700315e+01 4.4752585606871733e+01 1.2249999972813807e+01 0 0 0 +24360 1 5.9165303637584245e+01 4.6971565485248028e+01 1.2249999988734213e+01 0 0 0 +25002 1 6.0848819604264932e+01 4.6410088740230712e+01 1.4000000012415951e+01 0 0 0 +24364 1 6.2532335718406536e+01 4.5848611954546364e+01 1.2249999976464496e+01 0 0 0 +24368 1 6.5899367413581857e+01 4.4725658389674479e+01 1.2249999952226824e+01 0 0 0 +24369 1 6.4777023760238777e+01 4.6944638394839416e+01 1.2249999951837266e+01 0 0 0 +24371 1 6.9827570460106870e+01 4.5260207301717948e+01 1.0499999987122251e+01 0 0 0 +24372 1 6.8144054861599884e+01 4.5821684770914139e+01 1.2250000007420079e+01 0 0 0 +24405 1 7.0388741111689271e+01 4.6917711056992133e+01 1.2250000023358256e+01 0 0 0 +25011 1 6.9827570439216188e+01 4.5260207312973918e+01 1.4000000025921894e+01 0 0 0 +24374 1 7.1511091580438659e+01 4.4698732013084587e+01 1.2250000020828635e+01 0 0 0 +24409 1 7.3755787614431469e+01 4.5794757168140329e+01 1.2250000011094768e+01 0 0 0 +24411 1 7.5439348627528659e+01 4.5233309802118136e+01 1.0499999984725667e+01 0 0 0 +24413 1 7.7122769545722718e+01 4.4671839960604537e+01 1.2250000013901625e+01 0 0 0 +24414 1 7.6000492395362912e+01 4.6890771196376221e+01 1.2250000020836147e+01 0 0 0 +25051 1 7.5439348681585088e+01 4.5233309818123551e+01 1.3999999993707281e+01 0 0 0 +24417 1 7.9367521154609918e+01 4.5768039905440006e+01 1.2250000002723052e+01 0 0 0 +24416 1 8.1049142718259020e+01 4.5205798233281058e+01 1.0500000016151873e+01 0 0 0 +24419 1 8.2732307223930292e+01 4.4642528494792380e+01 1.2250000008346476e+01 0 0 0 +24463 1 8.1612969772484263e+01 4.6864897677077813e+01 1.2250000031140621e+01 0 0 0 +25056 1 8.1049142739183807e+01 4.5205798188878504e+01 1.3999999967426215e+01 0 0 0 +24467 1 8.4964193126999803e+01 4.5732440721021469e+01 1.2250000019110464e+01 0 0 0 +24469 1 8.6710920435760656e+01 4.5183150892918064e+01 1.0499999969192743e+01 0 0 0 +25109 1 8.6710920416037098e+01 4.5183150884784325e+01 1.4000000012751210e+01 0 0 0 +24471 1 8.8549509876438606e+01 4.4637205586735568e+01 1.2249999987459939e+01 0 0 0 +24472 1 8.7168422146513734e+01 4.6789002531590334e+01 1.2250000003491678e+01 0 0 0 +24330 1 4.6819519576437578e+01 4.9244397416119597e+01 1.2250000006856169e+01 0 0 0 +21813 1 7.3194617158888491e+01 8.8409151026384862e+01 1.3999999984044877e+01 0 -1 0 +24967 1 4.6258347634889546e+01 4.7586894145817013e+01 1.4000000034707563e+01 0 0 0 +24334 1 5.0186551678091618e+01 4.8121444730710529e+01 1.2250000009122548e+01 0 0 0 +24348 1 4.9064207561900567e+01 5.0340424293356719e+01 1.2250000006352515e+01 0 0 0 +24968 1 4.8503035674895230e+01 4.8682921130750628e+01 1.4000000017176127e+01 0 0 0 +24990 1 5.0747723554045145e+01 4.9778947921043091e+01 1.4000000016213242e+01 0 0 0 +24352 1 5.2431239541748141e+01 4.9217471529696638e+01 1.2250000007961253e+01 0 0 0 +24357 1 5.4675927463289874e+01 5.0313498249129260e+01 1.2249999953266098e+01 0 0 0 +24994 1 5.4114755579691398e+01 4.8655995183659122e+01 1.4000000014667931e+01 0 0 0 +24972 1 5.1870067698462151e+01 4.7559968397383820e+01 1.4000000002665283e+01 0 0 0 +24356 1 5.5798271624443693e+01 4.8094518678406473e+01 1.2249999973872818e+01 0 0 0 +24995 1 5.6359443585770514e+01 4.9752021834312139e+01 1.3999999995097093e+01 0 0 0 +24361 1 5.8042959607681020e+01 4.9190545254722821e+01 1.2250000009980917e+01 0 0 0 +24393 1 6.0287647714279373e+01 5.0286571629851863e+01 1.2249999998625176e+01 0 0 0 +24999 1 5.9726475625365971e+01 4.8629068541215034e+01 1.4000000024444596e+01 0 0 0 +24365 1 6.1409991654530828e+01 4.8067591790135786e+01 1.2249999989481765e+01 0 0 0 +24397 1 6.3654679678667932e+01 4.9163618181202011e+01 1.2249999991008361e+01 0 0 0 +24400 1 6.7582883568965030e+01 4.9698167946498401e+01 1.0499999991040591e+01 0 0 0 +24401 1 6.7021711995255956e+01 4.8040665041732098e+01 1.2250000007729101e+01 0 0 0 +24402 1 6.5899367502099423e+01 5.0259644746906261e+01 1.2250000029727682e+01 0 0 0 +25040 1 6.7582883509228566e+01 4.9698167931052957e+01 1.4000000018665522e+01 0 0 0 +25039 1 6.5338195795571394e+01 4.8602141547864761e+01 1.3999999999224839e+01 0 0 0 +24403 1 6.8705227999029404e+01 4.7479188592229193e+01 1.0499999997464640e+01 0 0 0 +24406 1 6.9266400877398269e+01 4.9136691784489003e+01 1.2249999999001751e+01 0 0 0 +25043 1 6.8705227974734754e+01 4.7479188623369872e+01 1.4000000017306347e+01 0 0 0 +24453 1 7.3194615794863935e+01 4.9671248727059613e+01 1.0499999987452423e+01 0 0 0 +24410 1 7.2633423743137342e+01 4.8013737662878746e+01 1.2250000033220660e+01 0 0 0 +24451 1 7.1511091654492034e+01 5.0232718604227912e+01 1.2250000025473719e+01 0 0 0 +25093 1 7.3194615771289804e+01 4.9671248746600170e+01 1.4000000012149984e+01 0 0 0 +24408 1 7.4316919969388536e+01 4.7452246487728317e+01 1.0499999977988118e+01 0 0 0 +24455 1 7.4878099092261309e+01 4.9109768490734481e+01 1.2250000016704998e+01 0 0 0 +24460 1 7.7122769677679045e+01 5.0205826639489985e+01 1.2249999987910812e+01 0 0 0 +25048 1 7.4316919983738060e+01 4.7452246531285326e+01 1.4000000026976998e+01 0 0 0 +24458 1 7.8805834370462122e+01 4.9644130653820028e+01 1.0500000011356224e+01 0 0 0 +24459 1 7.8245180167600651e+01 4.7986720881430315e+01 1.2249999999636437e+01 0 0 0 +24461 1 7.9929643001087598e+01 4.7425670905163436e+01 1.0500000017708334e+01 0 0 0 +24464 1 8.0489602718179711e+01 4.9082357043603729e+01 1.2250000048202539e+01 0 0 0 +25098 1 7.8805834389817321e+01 4.9644130613724649e+01 1.3999999988992398e+01 0 0 0 +25101 1 7.9929643038088543e+01 4.7425670866893931e+01 1.3999999971924465e+01 0 0 0 +24517 1 8.2732307339922428e+01 5.0176515084638510e+01 1.2250000061939160e+01 0 0 0 +24466 1 8.5523442982458860e+01 4.7397054198341294e+01 1.0500000002233600e+01 0 0 0 +24468 1 8.3862483905785922e+01 4.7964551768308233e+01 1.2250000043933541e+01 0 0 0 +24519 1 8.4431590379022367e+01 4.9619221398261992e+01 1.0500000018715529e+01 0 0 0 +24521 1 8.6132425962432322e+01 4.9073208980049110e+01 1.2250000005369021e+01 0 0 0 +25106 1 8.5523442956578833e+01 4.7397054175685518e+01 1.4000000021385686e+01 0 0 0 +25159 1 8.4431590357966641e+01 4.9619221339279967e+01 1.4000000043401267e+01 0 0 0 +19253 1 7.3194617007735516e+01 8.8409151073014897e+01 6.8321526214276673e-10 0 -1 0 +24524 1 8.9214901124263761e+01 4.7871264231228999e+01 1.2250000040047087e+01 0 0 0 +24525 1 8.8549509988958988e+01 5.0171191975107661e+01 1.2250000002118565e+01 0 0 0 +25572 1 7.2633424959516574e+01 8.6751640378845522e+01 1.5749999994752338e+01 0 0 0 +24345 1 4.5697175395510961e+01 5.1463376925180164e+01 1.2250000012629361e+01 0 0 0 +24349 1 4.7941863465564282e+01 5.2559403783802026e+01 1.2249999998502540e+01 0 0 0 +24986 1 4.7380691499238367e+01 5.0901900690338451e+01 1.4000000025507584e+01 0 0 0 +24984 1 4.6258347416011325e+01 5.3120880032683083e+01 1.4000000016206810e+01 0 0 0 +24353 1 5.1308895575833660e+01 5.1436451123420433e+01 1.2249999989028694e+01 0 0 0 +24381 1 5.0186551499867122e+01 5.3655430576855380e+01 1.2249999988848828e+01 0 0 0 +24987 1 4.9625379538374332e+01 5.1997927396933171e+01 1.4000000001811648e+01 0 0 0 +24385 1 5.3553583572652023e+01 5.2532477819641450e+01 1.2249999962725415e+01 0 0 0 +24991 1 5.2992411519396626e+01 5.0874974664496577e+01 1.4000000007009479e+01 0 0 0 +25023 1 5.1870067482186691e+01 5.3093954247360564e+01 1.3999999989271908e+01 0 0 0 +24389 1 5.6920615516317724e+01 5.1409524852274018e+01 1.2250000004583940e+01 0 0 0 +24390 1 5.5798271509574967e+01 5.3628504523337128e+01 1.2249999990901024e+01 0 0 0 +25028 1 5.7481787463057906e+01 5.3067027986723453e+01 1.4000000002580004e+01 0 0 0 +25027 1 5.5237099583325673e+01 5.1971001524646518e+01 1.3999999994495839e+01 0 0 0 +24394 1 5.9165303616262101e+01 5.2505551425213703e+01 1.2249999994641712e+01 0 0 0 +25031 1 5.8604131662022617e+01 5.0848048332717617e+01 1.4000000029293840e+01 0 0 0 +24396 1 6.4215851725022006e+01 5.0821121421549122e+01 1.0500000002389871e+01 0 0 0 +24398 1 6.2532335777846910e+01 5.1382598043548462e+01 1.2250000001214564e+01 0 0 0 +24439 1 6.1409991563281878e+01 5.3601577782327979e+01 1.2250000016995696e+01 0 0 0 +24441 1 6.3093507587052294e+01 5.3040101233630857e+01 1.0499999982254925e+01 0 0 0 +25036 1 6.4215851782949088e+01 5.0821121434480212e+01 1.4000000018371836e+01 0 0 0 +25081 1 6.3093507588738944e+01 5.3040101211593978e+01 1.4000000050934675e+01 0 0 0 +24445 1 6.6460539795415670e+01 5.1917148107803676e+01 1.0500000001158284e+01 0 0 0 +24443 1 6.4777023720753490e+01 5.2478624612291661e+01 1.2250000022054353e+01 0 0 0 +24448 1 6.7021711900380609e+01 5.3574651427686966e+01 1.2249999988168375e+01 0 0 0 +25085 1 6.6460539756937976e+01 5.1917148075920643e+01 1.4000000017364931e+01 0 0 0 +24447 1 6.8144054883534039e+01 5.1355671250825658e+01 1.2249999999174435e+01 0 0 0 +24452 1 7.0388741075576149e+01 5.2451697586510257e+01 1.2250000013036463e+01 0 0 0 +24450 1 7.2072253714472993e+01 5.1890217572154867e+01 1.0499999983462027e+01 0 0 0 +24456 1 7.3755787694395920e+01 5.1328743804584548e+01 1.2250000011830029e+01 0 0 0 +24505 1 7.2633423721127855e+01 5.3547724223991111e+01 1.2249999978568828e+01 0 0 0 +25090 1 7.2072253691879496e+01 5.1890217605183317e+01 1.4000000024027525e+01 0 0 0 +24509 1 7.6000492460744482e+01 5.2424757844352158e+01 1.2249999986347827e+01 0 0 0 +24511 1 7.7684224178595557e+01 5.1863396708848711e+01 1.0500000006378825e+01 0 0 0 +24513 1 7.9367521267710629e+01 5.1302026567618377e+01 1.2250000033796601e+01 0 0 0 +24514 1 7.8245180217712374e+01 5.3520707516142842e+01 1.2250000020646491e+01 0 0 0 +25151 1 7.7684224169100759e+01 5.1863396710075314e+01 1.3999999974065272e+01 0 0 0 +24516 1 8.3289035981874335e+01 5.1835241275922698e+01 1.0500000036337251e+01 0 0 0 +24518 1 8.1612969896601825e+01 5.2398884293894575e+01 1.2250000062562597e+01 0 0 0 +25156 1 8.3289035981251288e+01 5.1835241242529122e+01 1.4000000034757608e+01 0 0 0 +24522 1 8.4964193269844984e+01 5.1266427249715889e+01 1.2250000027636865e+01 0 0 0 +24572 1 8.3862484024224131e+01 5.3498538263903527e+01 1.2250000049355574e+01 0 0 0 +24576 1 8.7168422121863657e+01 5.2322988856086418e+01 1.2250000011078992e+01 0 0 0 +24578 1 8.9045575856021870e+01 5.1770605135201968e+01 1.0499999941314192e+01 0 0 0 +24579 1 8.9214901401409563e+01 5.3405250576110802e+01 1.2249999887880143e+01 0 0 0 +25218 1 8.9045575852867060e+01 5.1770605186776145e+01 1.3999999987958326e+01 0 0 0 +24377 1 4.6819519391928694e+01 5.4778383255459971e+01 1.2249999993508082e+01 0 0 0 +25016 1 4.7380691357933991e+01 5.6435886468432962e+01 1.4000000014789507e+01 0 0 0 +24382 1 4.9064207400996160e+01 5.5874410089833646e+01 1.2249999960385296e+01 0 0 0 +25019 1 4.8503035473841940e+01 5.4216906969695501e+01 1.4000000020754445e+01 0 0 0 +25020 1 5.0747723385895647e+01 5.5312933732383748e+01 1.3999999988390885e+01 0 0 0 +24386 1 5.2431239377775682e+01 5.4751457357083865e+01 1.2249999955364661e+01 0 0 0 +24431 1 5.4675927302452685e+01 5.5847484106418435e+01 1.2249999991936514e+01 0 0 0 +25069 1 5.2992411389185747e+01 5.6408960494591931e+01 1.3999999964189584e+01 0 0 0 +25024 1 5.4114755443224830e+01 5.4189981028592427e+01 1.3999999976859197e+01 0 0 0 +25073 1 5.6359443392642888e+01 5.5286007666201705e+01 1.3999999994521062e+01 0 0 0 +24435 1 5.8042959498269667e+01 5.4724531150339139e+01 1.2249999982155996e+01 0 0 0 +24440 1 6.0287647550535461e+01 5.5820557557596892e+01 1.2250000012230373e+01 0 0 0 +24444 1 6.3654679540936876e+01 5.4697604295086059e+01 1.2250000012626332e+01 0 0 0 +25078 1 6.1971163554563795e+01 5.5259080913133893e+01 1.4000000053984122e+01 0 0 0 +24497 1 6.5899367300791837e+01 5.5793630969476041e+01 1.2249999969730716e+01 0 0 0 +24500 1 6.9827570338296368e+01 5.6328180247566507e+01 1.0499999992786059e+01 0 0 0 +24501 1 6.9266400714482344e+01 5.4670678228598561e+01 1.2249999999890129e+01 0 0 0 +25140 1 6.9827570276723705e+01 5.6328180303166597e+01 1.4000000000894161e+01 0 0 0 +24503 1 7.0949917813613681e+01 5.4109203140901130e+01 1.0499999977567358e+01 0 0 0 +24506 1 7.1511091516005138e+01 5.5766705091668527e+01 1.2249999980010344e+01 0 0 0 +25143 1 7.0949917749812087e+01 5.4109203156117694e+01 1.4000000014533729e+01 0 0 0 +24508 1 7.6561515728597627e+01 5.4082220353362793e+01 1.0499999980886313e+01 0 0 0 +24562 1 7.5439348660255447e+01 5.6301282971108186e+01 1.0499999986329390e+01 0 0 0 +24510 1 7.4878099041113629e+01 5.4643755059446747e+01 1.2249999979565583e+01 0 0 0 +24564 1 7.7122769642609740e+01 5.5739813201446310e+01 1.2250000009923118e+01 0 0 0 +25148 1 7.6561515721050938e+01 5.4082220324269649e+01 1.3999999974284931e+01 0 0 0 +25202 1 7.5439348659789317e+01 5.6301282988408524e+01 1.3999999966466977e+01 0 0 0 +24568 1 8.0489602783954453e+01 5.4616343610297164e+01 1.2250000030455517e+01 0 0 0 +24567 1 8.1049142887645544e+01 5.6273771340938140e+01 1.0500000031696544e+01 0 0 0 +24570 1 8.2176993049143761e+01 5.4056376309994846e+01 1.0500000046766395e+01 0 0 0 +24573 1 8.2732307407328705e+01 5.5710501559725493e+01 1.2250000031563886e+01 0 0 0 +25207 1 8.1049142861847770e+01 5.6273771340829754e+01 1.4000000016412688e+01 0 0 0 +25210 1 8.2176993040006380e+01 5.4056376240273174e+01 1.4000000037577284e+01 0 0 0 +24629 1 8.6710920556793397e+01 5.6251123692413906e+01 1.0499999983566969e+01 0 0 0 +24577 1 8.6132425998936085e+01 5.4607195392868348e+01 1.2250000044741794e+01 0 0 0 +25269 1 8.6710920628330925e+01 5.6251123651148049e+01 1.3999999972679765e+01 0 0 0 +24575 1 8.7753273160445247e+01 5.4048168169453014e+01 1.0499999922351247e+01 0 0 0 +24631 1 8.8549510016803055e+01 5.5705178281049513e+01 1.2249999921466783e+01 0 0 0 +25215 1 8.7753273173921869e+01 5.4048168204858584e+01 1.3999999997362663e+01 0 0 0 +24378 1 4.5697175257784636e+01 5.6997362742719375e+01 1.2250000034852434e+01 0 0 0 +24423 1 4.7941863349570113e+01 5.8093389526578257e+01 1.2250000010864268e+01 0 0 0 +25061 1 4.6258347317054735e+01 5.8654865820087721e+01 1.4000000047784642e+01 0 0 0 +24427 1 5.1308895413367317e+01 5.6970436905630450e+01 1.2249999957449784e+01 0 0 0 +24428 1 5.0186551362988311e+01 5.9189416314871679e+01 1.2249999988367518e+01 0 0 0 +25062 1 4.8503035389801177e+01 5.9750892686004171e+01 1.4000000030194920e+01 0 0 0 +25065 1 4.9625379405072330e+01 5.7531913147602111e+01 1.3999999998715749e+01 0 0 0 +24432 1 5.3553583436792557e+01 5.8066463638259719e+01 1.2249999987547552e+01 0 0 0 +25066 1 5.1870067394365378e+01 5.8627940021500507e+01 1.3999999973989372e+01 0 0 0 +25123 1 5.4114755313140655e+01 5.9723966855948404e+01 1.3999999963123400e+01 0 0 0 +24436 1 5.6920615367457430e+01 5.6943510718062711e+01 1.2249999971699406e+01 0 0 0 +24485 1 5.5798271375131165e+01 5.9162490423267847e+01 1.2249999976661091e+01 0 0 0 +25070 1 5.5237099403150751e+01 5.7504987337575244e+01 1.3999999963270982e+01 0 0 0 +24489 1 5.9165303447731354e+01 5.8039537348434258e+01 1.2250000018897227e+01 0 0 0 +25128 1 5.9726475373897379e+01 5.9697040432526265e+01 1.4000000042200178e+01 0 0 0 +25131 1 6.0848819405961947e+01 5.7478060696366363e+01 1.4000000048898015e+01 0 0 0 +24493 1 6.2532335559102165e+01 5.6916584088745218e+01 1.2250000008898610e+01 0 0 0 +24494 1 6.1409991396146218e+01 5.9135563781606066e+01 1.2250000024397664e+01 0 0 0 +24498 1 6.4777023454865983e+01 5.8012610779447016e+01 1.2249999969820662e+01 0 0 0 +24552 1 6.7021711644363180e+01 5.9108637670430994e+01 1.2249999995035093e+01 0 0 0 +25190 1 6.5338195412357578e+01 5.9670113982474390e+01 1.4000000014897322e+01 0 0 0 +24554 1 6.8705227681946695e+01 5.8547161386222690e+01 1.0499999993033008e+01 0 0 0 +24502 1 6.8144054649073865e+01 5.6889657579152129e+01 1.2250000004855936e+01 0 0 0 +24556 1 7.0388740881541793e+01 5.7985683963834781e+01 1.2249999992856631e+01 0 0 0 +25194 1 6.8705227654302462e+01 5.8547161418185262e+01 1.4000000007927145e+01 0 0 0 +24560 1 7.3755787550212844e+01 5.6862730269811706e+01 1.2249999982449987e+01 0 0 0 +24561 1 7.2633423523511809e+01 5.9081710615375250e+01 1.2250000009759445e+01 0 0 0 +24559 1 7.4316919830776257e+01 5.8520219550787353e+01 1.0499999987145552e+01 0 0 0 +24565 1 7.6000492327536080e+01 5.7958744300305455e+01 1.2250000013292459e+01 0 0 0 +25199 1 7.4316919815683491e+01 5.8520219530546115e+01 1.4000000008827886e+01 0 0 0 +24621 1 7.9929643024703793e+01 5.8493643919370022e+01 1.0500000016367759e+01 0 0 0 +24569 1 7.9367521231411544e+01 5.6836013068069960e+01 1.2250000027674703e+01 0 0 0 +24619 1 7.8245180094867649e+01 5.9054693912021989e+01 1.2250000005506539e+01 0 0 0 +25261 1 7.9929643036662554e+01 5.8493643893204833e+01 1.4000000000110338e+01 0 0 0 +24623 1 8.1612969861119566e+01 5.7932870695642336e+01 1.2250000052148318e+01 0 0 0 +24626 1 8.5523443088744131e+01 5.8465026894551563e+01 1.0500000000945471e+01 0 0 0 +24627 1 8.4964193308505727e+01 5.6800413587536625e+01 1.2250000035739792e+01 0 0 0 +24628 1 8.3862484011104669e+01 5.9032524558064644e+01 1.2250000039941876e+01 0 0 0 +25266 1 8.5523443110217073e+01 5.8465026892889057e+01 1.3999999997579526e+01 0 0 0 +24632 1 8.7168422155824814e+01 5.7856975093294942e+01 1.2249999955482934e+01 0 0 0 +24684 1 8.9214901415089926e+01 5.8939236596471723e+01 1.2249999930911409e+01 0 0 0 +24424 1 4.6819519286519494e+01 6.0312368977561931e+01 1.2250000007839056e+01 0 0 0 +24474 1 4.5697175213404897e+01 6.2531348415883627e+01 1.2250000036520500e+01 0 0 0 +25115 1 4.7380691292365945e+01 6.1969872188800601e+01 1.4000000048478658e+01 0 0 0 +24477 1 4.9064207291470744e+01 6.1408395790728271e+01 1.2250000017640982e+01 0 0 0 +24482 1 5.1308895331595387e+01 6.2504422676054830e+01 1.2250000000464727e+01 0 0 0 +25116 1 4.9625379321097341e+01 6.3065898877611453e+01 1.4000000012341680e+01 0 0 0 +25119 1 5.0747723274173950e+01 6.0846919454131537e+01 1.4000000002131344e+01 0 0 0 +24481 1 5.2431239261203757e+01 6.0285443153111522e+01 1.2249999974937246e+01 0 0 0 +24486 1 5.4675927186141394e+01 6.1381469952365023e+01 1.2249999966764079e+01 0 0 0 +25120 1 5.2992411276478222e+01 6.1942946279529352e+01 1.3999999974668794e+01 0 0 0 +24540 1 5.6920615288537782e+01 6.2477496672462806e+01 1.2250000016447235e+01 0 0 0 +24543 1 6.0848819325231126e+01 6.3012046759375622e+01 1.0500000009181489e+01 0 0 0 +24490 1 5.8042959370596947e+01 6.0258517090794768e+01 1.2250000020568340e+01 0 0 0 +24544 1 6.0287647435806939e+01 6.1354543580795252e+01 1.2250000010544831e+01 0 0 0 +25182 1 5.8604131422400854e+01 6.1916020207905270e+01 1.4000000009106126e+01 0 0 0 +24547 1 6.4215851323389941e+01 6.1889093699178048e+01 1.0499999991413224e+01 0 0 0 +24548 1 6.3654679320470805e+01 6.0231590380555076e+01 1.2250000001127331e+01 0 0 0 +24549 1 6.2532335423884014e+01 6.2450570183471832e+01 1.2250000017392923e+01 0 0 0 +25187 1 6.4215851394806052e+01 6.1889093722272058e+01 1.4000000065203906e+01 0 0 0 +24605 1 6.6460539369004209e+01 6.2985120588831897e+01 1.0500000022711228e+01 0 0 0 +24551 1 6.7582883155097818e+01 6.0766140557614776e+01 1.0500000020344606e+01 0 0 0 +24553 1 6.5899367099581639e+01 6.1327617173321464e+01 1.2250000038578925e+01 0 0 0 +25245 1 6.6460539366119775e+01 6.2985120567865273e+01 1.4000000019259039e+01 0 0 0 +25191 1 6.7582883108742394e+01 6.0766140540628193e+01 1.4000000005830497e+01 0 0 0 +24557 1 6.9266400501428791e+01 6.0204664535214512e+01 1.2249999997957413e+01 0 0 0 +24607 1 6.8144054473996633e+01 6.2423643832313573e+01 1.2250000003472833e+01 0 0 0 +24610 1 7.2072253390094545e+01 6.2958190322098574e+01 1.0500000025012538e+01 0 0 0 +24613 1 7.3194615531041052e+01 6.0739221598595840e+01 1.0500000014806488e+01 0 0 0 +24611 1 7.1511091342417728e+01 6.1300691394107872e+01 1.2250000033171604e+01 0 0 0 +24616 1 7.3755787445620584e+01 6.2396716579646977e+01 1.2250000049237359e+01 0 0 0 +25250 1 7.2072253411394684e+01 6.2958190308352826e+01 1.4000000034173111e+01 0 0 0 +25253 1 7.3194615493329266e+01 6.0739221616933520e+01 1.4000000005808602e+01 0 0 0 +24615 1 7.4878098896991062e+01 6.0177741430497534e+01 1.2250000009094034e+01 0 0 0 +24620 1 7.7122769510318264e+01 6.1273799485624735e+01 1.2250000000682133e+01 0 0 0 +24618 1 7.8805834248168878e+01 6.0712103503926500e+01 1.0500000001105395e+01 0 0 0 +24671 1 7.7684223970795657e+01 6.2931369379965929e+01 1.0500000001147798e+01 0 0 0 +24673 1 7.9367521120117445e+01 6.2369999249231093e+01 1.2250000027593652e+01 0 0 0 +24624 1 8.0489602666959044e+01 6.0150329901991483e+01 1.2250000031726524e+01 0 0 0 +25258 1 7.8805834276193693e+01 6.0712103481403837e+01 1.4000000008434462e+01 0 0 0 +25311 1 7.7684223993784741e+01 6.2931369394345928e+01 1.4000000032260516e+01 0 0 0 +24676 1 8.3289035887034345e+01 6.2903213664594901e+01 1.0499999990094356e+01 0 0 0 +24677 1 8.2732307311142591e+01 6.1244487721706115e+01 1.2250000018110779e+01 0 0 0 +25316 1 8.3289035922284839e+01 6.2903213637865406e+01 1.3999999999257556e+01 0 0 0 +24679 1 8.4431590390243755e+01 6.0687193952930336e+01 1.0499999999359007e+01 0 0 0 +24681 1 8.6132426038387052e+01 6.0141181507160056e+01 1.2249999970805053e+01 0 0 0 +24682 1 8.4964193225273107e+01 6.2334399566216319e+01 1.2249999972221275e+01 0 0 0 +25319 1 8.4431590419442841e+01 6.0687193917020380e+01 1.3999999997320849e+01 0 0 0 +25570 1 6.9266401665273705e+01 8.7874594631568343e+01 1.5749999953421487e+01 0 0 0 +24738 1 8.9045575927391795e+01 6.2838577077502272e+01 1.0499999984987133e+01 0 0 0 +5126 1 9.0272007528377202e+01 6.0454858055378615e+01 1.0499999947056295e+01 -1 0 0 +24685 1 8.8549510102570437e+01 6.1239164220551693e+01 1.2249999966589495e+01 0 0 0 +25378 1 8.9045575945690530e+01 6.2838577122822080e+01 1.3999999948403676e+01 0 0 0 +24478 1 4.7941863325078181e+01 6.3627375217965081e+01 1.2250000026703880e+01 0 0 0 +24528 1 4.6819519337115814e+01 6.5846354681004044e+01 1.2249999986479732e+01 0 0 0 +25113 1 4.6258347298959357e+01 6.4188851454456838e+01 1.4000000058167251e+01 0 0 0 +24532 1 5.0186551354904644e+01 6.4723402071317736e+01 1.2250000004439368e+01 0 0 0 +25170 1 4.8503035371734939e+01 6.5284878400437918e+01 1.4000000038888876e+01 0 0 0 +25171 1 5.0747723311755855e+01 6.6380905296326659e+01 1.3999999993316552e+01 0 0 0 +24536 1 5.3553583354130204e+01 6.3600449498884991e+01 1.2249999991925295e+01 0 0 0 +24537 1 5.2431239287227001e+01 6.5819429008210946e+01 1.2249999994241499e+01 0 0 0 +25174 1 5.1870067319800697e+01 6.4161925814665665e+01 1.3999999975731320e+01 0 0 0 +24541 1 5.5798271346750290e+01 6.4696476354203924e+01 1.2250000009976985e+01 0 0 0 +25179 1 5.7481787276052607e+01 6.4134999861550526e+01 1.3999999990301204e+01 0 0 0 +25233 1 5.6359443332468238e+01 6.6353979545344856e+01 1.3999999985374819e+01 0 0 0 +24545 1 5.9165303393183940e+01 6.3573523366096694e+01 1.2250000028198510e+01 0 0 0 +24595 1 5.8042959373880123e+01 6.5792503112849701e+01 1.2250000007416300e+01 0 0 0 +24597 1 5.9726475371206526e+01 6.5231026512154401e+01 1.0500000013161078e+01 0 0 0 +24599 1 6.1409991340728837e+01 6.4669549884543983e+01 1.2250000035074555e+01 0 0 0 +24604 1 6.3654679307585972e+01 6.5765576587016284e+01 1.2250000063302366e+01 0 0 0 +25241 1 6.3093507284861914e+01 6.4108073438007324e+01 1.4000000056500431e+01 0 0 0 +25238 1 6.1971163406062907e+01 6.6327053120561374e+01 1.4000000069818013e+01 0 0 0 +24602 1 6.5338195367389247e+01 6.5204100194495183e+01 1.0500000028287175e+01 0 0 0 +24603 1 6.4777023362923089e+01 6.3546596968462680e+01 1.2250000043200281e+01 0 0 0 +24608 1 6.7021711560468091e+01 6.4642623919627994e+01 1.2250000029966094e+01 0 0 0 +24659 1 6.7582883102775583e+01 6.6300126782278753e+01 1.0500000043786390e+01 0 0 0 +24612 1 7.0388740757713478e+01 6.3519670257392214e+01 1.2250000020452557e+01 0 0 0 +24661 1 6.9266400474815555e+01 6.5738650793105521e+01 1.2250000022464684e+01 0 0 0 +24663 1 7.0949917520217980e+01 6.5177175757930257e+01 1.0500000027048779e+01 0 0 0 +24665 1 7.2633423488542746e+01 6.4615696848990780e+01 1.2250000005902356e+01 0 0 0 +25303 1 7.0949917514651204e+01 6.5177175764013612e+01 1.4000000004922027e+01 0 0 0 +24664 1 7.3194615542456944e+01 6.6273207787557638e+01 1.0500000002025271e+01 0 0 0 +24668 1 7.6561515551852352e+01 6.5150192868787371e+01 1.0499999998326327e+01 0 0 0 +24669 1 7.6000492260269866e+01 6.3492730525519988e+01 1.2250000023409768e+01 0 0 0 +24670 1 7.4878098908745343e+01 6.5711727586178071e+01 1.2250000008787175e+01 0 0 0 +25308 1 7.6561515571387460e+01 6.5150192849097905e+01 1.4000000040698694e+01 0 0 0 +24674 1 7.8245180052178512e+01 6.4588680031535702e+01 1.2250000043717767e+01 0 0 0 +24728 1 8.0489602633283681e+01 6.5684315881081503e+01 1.2250000005697320e+01 0 0 0 +24730 1 8.2176992884468461e+01 6.5124348501883134e+01 1.0499999980503789e+01 0 0 0 +24678 1 8.1612969764575055e+01 6.3466856735845880e+01 1.2250000016686680e+01 0 0 0 +25370 1 8.2176992928009597e+01 6.5124348432927192e+01 1.4000000020223945e+01 0 0 0 +24732 1 8.3862483911270672e+01 6.4566510398580220e+01 1.2249999974779556e+01 0 0 0 +24737 1 8.6132425993922254e+01 6.5675167157779526e+01 1.2249999989599646e+01 0 0 0 +24735 1 8.7753273244654252e+01 6.5116139881050543e+01 1.0500000003554035e+01 0 0 0 +24736 1 8.7168422204179961e+01 6.3390960967971317e+01 1.2249999965011895e+01 0 0 0 +24739 1 8.9214901320729425e+01 6.4473222286791909e+01 1.2249999924583479e+01 0 0 0 +25375 1 8.7753273213224702e+01 6.5116139892621078e+01 1.3999999908441261e+01 0 0 0 +24529 1 4.5697175256462430e+01 6.8065334133129113e+01 1.2250000021647848e+01 0 0 0 +24583 1 4.7941863358406501e+01 6.9161361025393546e+01 1.2250000002655916e+01 0 0 0 +25167 1 4.7380691312323343e+01 6.7503857916570695e+01 1.4000000002565162e+01 0 0 0 +24533 1 4.9064207354775682e+01 6.6942381594807017e+01 1.2249999968428485e+01 0 0 0 +24587 1 5.1308895416866555e+01 6.8038408586687808e+01 1.2249999984253973e+01 0 0 0 +25225 1 4.9625379388129360e+01 6.8599884727303134e+01 1.3999999967252192e+01 0 0 0 +24591 1 5.4675927264242219e+01 6.6915455932149243e+01 1.2250000018033761e+01 0 0 0 +24592 1 5.3553583516419174e+01 6.9134435494277980e+01 1.2250000028343988e+01 0 0 0 +24596 1 5.6920615399257748e+01 6.8011482702469181e+01 1.2250000014523575e+01 0 0 0 +25230 1 5.5237099463263775e+01 6.8572959234878638e+01 1.3999999970642170e+01 0 0 0 +24594 1 5.8604131541070110e+01 6.7450006291501296e+01 1.0500000020457962e+01 0 0 0 +24600 1 6.0287647485552576e+01 6.6888529689340899e+01 1.2250000031002616e+01 0 0 0 +24649 1 5.9165303569828616e+01 6.9107509487258937e+01 1.2250000039563506e+01 0 0 0 +25291 1 6.0848819433812693e+01 6.8546032910491732e+01 1.4000000045421579e+01 0 0 0 +24653 1 6.2532335508783802e+01 6.7984556389329938e+01 1.2250000042650969e+01 0 0 0 +24655 1 6.4215851429970996e+01 6.7423079972855248e+01 1.0500000019763570e+01 0 0 0 +24656 1 6.6460539457953260e+01 6.8519106858859146e+01 1.0500000033414421e+01 0 0 0 +24657 1 6.5899367126451736e+01 6.6861603439812626e+01 1.2250000022954112e+01 0 0 0 +24658 1 6.4777023490516214e+01 6.9080583240083229e+01 1.2250000020593689e+01 0 0 0 +24662 1 6.8144054566328336e+01 6.7957630122948345e+01 1.2250000034648796e+01 0 0 0 +24716 1 7.0388740920325446e+01 6.9053656481802477e+01 1.2249999992255018e+01 0 0 0 +25300 1 6.9827570181177819e+01 6.7396152860697953e+01 1.3999999995563220e+01 0 0 0 +24666 1 7.1511091386919475e+01 6.6834677638055197e+01 1.2249999999273957e+01 0 0 0 +24718 1 7.2072253542607797e+01 6.8492176458935816e+01 1.0499999993777474e+01 0 0 0 +24720 1 7.3755787537153083e+01 6.7930702692291376e+01 1.2249999973153022e+01 0 0 0 +24724 1 7.7122769551399387e+01 6.6807785529297334e+01 1.2250000039980719e+01 0 0 0 +24725 1 7.6000492389711724e+01 6.9026716538515899e+01 1.2250000021085437e+01 0 0 0 +25362 1 7.5439348609321485e+01 6.7369255381596815e+01 1.4000000028144429e+01 0 0 0 +24723 1 7.7684224096340799e+01 6.8465355357811731e+01 1.0499999983662130e+01 0 0 0 +24729 1 7.9367521167804682e+01 6.7903985169485523e+01 1.2250000042445494e+01 0 0 0 +24785 1 8.3289035939071141e+01 6.8437199337567122e+01 1.0499999980275277e+01 0 0 0 +24727 1 8.1049142767026552e+01 6.7341743384349854e+01 1.0500000000763285e+01 0 0 0 +24733 1 8.2732307283968282e+01 6.6778473509561977e+01 1.2249999989152647e+01 0 0 0 +24783 1 8.1612969820717353e+01 6.9000842469819588e+01 1.2250000042678089e+01 0 0 0 +25367 1 8.1049142799595955e+01 6.7341743362060640e+01 1.4000000054210753e+01 0 0 0 +24787 1 8.4964193249296869e+01 6.7868385187226423e+01 1.2249999974751956e+01 0 0 0 +24789 1 8.6710920591617295e+01 6.7319095232187905e+01 1.0499999950127844e+01 0 0 0 +25429 1 8.6710920592894212e+01 6.7319095162772555e+01 1.3999999913547542e+01 0 0 0 +24791 1 8.8549509975269473e+01 6.6773149735666109e+01 1.2249999922760477e+01 0 0 0 +24792 1 8.7168422209886316e+01 6.8924946435359303e+01 1.2249999930454749e+01 0 0 0 +24584 1 4.6819519283123064e+01 7.1380340513572236e+01 1.2249999982332495e+01 0 0 0 +25221 1 4.6258347321364930e+01 6.9722837267222019e+01 1.4000000024449124e+01 0 0 0 +24588 1 5.0186551401959228e+01 7.0257387986195866e+01 1.2249999994348290e+01 0 0 0 +24637 1 4.9064207272934070e+01 7.2476367520547839e+01 1.2250000000994763e+01 0 0 0 +24639 1 5.0747723335422535e+01 7.1914891270713710e+01 1.0500000026243505e+01 0 0 0 +25222 1 4.8503035372695138e+01 7.0818864297485888e+01 1.3999999992820948e+01 0 0 0 +24643 1 5.4114755471114563e+01 7.0791938815014433e+01 1.0500000070328296e+01 0 0 0 +24586 1 5.1870067453058979e+01 6.9695911773648945e+01 1.0500000026881549e+01 0 0 0 +24641 1 5.2431239388513440e+01 7.1353415021707988e+01 1.2250000002132815e+01 0 0 0 +24646 1 5.4675927408269494e+01 7.2449441955172659e+01 1.2250000027533806e+01 0 0 0 +25283 1 5.4114755455172087e+01 7.0791938765837770e+01 1.3999999970280337e+01 0 0 0 +24644 1 5.6359443588982302e+01 7.1887965643155923e+01 1.0500000046822992e+01 0 0 0 +24645 1 5.5798271542498505e+01 7.0230462414287487e+01 1.2250000036441925e+01 0 0 0 +24647 1 5.7481787497444195e+01 6.9668985980374103e+01 1.0500000028334524e+01 0 0 0 +24650 1 5.8042959641672063e+01 7.1326489228922554e+01 1.2250000052562404e+01 0 0 0 +24704 1 6.0287647757216661e+01 7.2422515876788466e+01 1.2250000027333016e+01 0 0 0 +25288 1 5.9726475595482285e+01 7.0765012638846471e+01 1.4000000053960710e+01 0 0 0 +24652 1 6.3093507452216329e+01 6.9642059659447185e+01 1.0500000011978589e+01 0 0 0 +24654 1 6.1409991543402555e+01 7.0203536090389974e+01 1.2250000050328479e+01 0 0 0 +24706 1 6.1971163656471255e+01 7.1861039385762268e+01 1.0500000000813998e+01 0 0 0 +24708 1 6.3654679538924675e+01 7.1299562871150073e+01 1.2250000031222163e+01 0 0 0 +24712 1 6.7021711759194915e+01 7.0176610208911384e+01 1.2250000012605661e+01 0 0 0 +24713 1 6.5899367386791383e+01 7.2395589745243768e+01 1.2250000049838066e+01 0 0 0 +25351 1 6.7582883391474709e+01 7.1834113098302197e+01 1.4000000007275561e+01 0 0 0 +25350 1 6.5338195563260470e+01 7.0738086514485872e+01 1.4000000017522542e+01 0 0 0 +24717 1 6.9266400758912908e+01 7.1272637032837565e+01 1.2249999983078510e+01 0 0 0 +25354 1 6.8705227761749100e+01 6.9615133948590980e+01 1.3999999987485182e+01 0 0 0 +24715 1 7.0949917771768853e+01 7.0711161934777664e+01 1.0499999985598086e+01 0 0 0 +24721 1 7.2633423713836137e+01 7.0149682978070700e+01 1.2249999964221985e+01 0 0 0 +24771 1 7.1511091735313599e+01 7.2368663746245332e+01 1.2249999961354236e+01 0 0 0 +25413 1 7.3194615850873774e+01 7.1807193875546005e+01 1.3999999966621003e+01 0 0 0 +24777 1 7.6561515809807133e+01 7.0684178779543771e+01 1.0499999969924982e+01 0 0 0 +24775 1 7.4878099193300514e+01 7.1245713581816432e+01 1.2249999958263759e+01 0 0 0 +24780 1 7.7122769862603732e+01 7.2341771390535158e+01 1.2249999982054193e+01 0 0 0 +25359 1 7.4316919935374628e+01 6.9588191841685557e+01 1.4000000011498143e+01 0 0 0 +24779 1 7.8245180184745834e+01 7.0122665895565433e+01 1.2250000017075978e+01 0 0 0 +24784 1 8.0489602782344434e+01 7.1218301562444537e+01 1.2250000077696805e+01 0 0 0 +25418 1 7.8805834466865250e+01 7.1780075278696657e+01 1.4000000076927041e+01 0 0 0 +25421 1 7.9929643055942464e+01 6.9561615771314607e+01 1.4000000083113205e+01 0 0 0 +24782 1 8.2176993012333412e+01 7.0658334083322487e+01 1.0499999992204454e+01 0 0 0 +24837 1 8.2732307461544778e+01 7.2312458991792781e+01 1.2250000057304819e+01 0 0 0 +24786 1 8.5523443127277957e+01 6.9532998246536593e+01 1.0499999979661474e+01 0 0 0 +24788 1 8.3862484012899927e+01 7.0100495955512244e+01 1.2250000031290575e+01 0 0 0 +24841 1 8.6132426120515163e+01 7.1209152569959187e+01 1.2249999958629123e+01 0 0 0 +25426 1 8.5523443128968438e+01 6.9532998194425332e+01 1.3999999980054854e+01 0 0 0 +25479 1 8.4431590504388765e+01 7.1755165042548413e+01 1.4000000031003397e+01 0 0 0 +25549 1 7.0388742038951492e+01 8.5655614210537721e+01 1.5749999981010241e+01 0 0 0 +24843 1 8.7753273282044432e+01 7.0650125263368508e+01 1.0500000014599888e+01 0 0 0 +24844 1 8.9214901414001801e+01 7.0007207606015797e+01 1.2249999935170280e+01 0 0 0 +24845 1 8.8549510120581104e+01 7.2307135040978068e+01 1.2249999971893111e+01 0 0 0 +24634 1 4.5697175157896403e+01 7.3599319988498195e+01 1.2250000019685929e+01 0 0 0 +24638 1 4.7941863246727010e+01 7.4695346996172930e+01 1.2250000005613021e+01 0 0 0 +25273 1 4.6258347212099444e+01 7.5256823157580513e+01 1.4000000040367732e+01 0 0 0 +25275 1 4.7380691244885170e+01 7.3037843849407849e+01 1.4000000017674370e+01 0 0 0 +24636 1 4.9625379319116249e+01 7.4133870686232598e+01 1.0500000013336509e+01 0 0 0 +24642 1 5.1308895400828021e+01 7.3572394574293114e+01 1.2250000030688996e+01 0 0 0 +24692 1 5.0186551349653328e+01 7.5791374011702928e+01 1.2250000013301737e+01 0 0 0 +24640 1 5.2992411457173795e+01 7.3010918220085216e+01 1.0500000075123886e+01 0 0 0 +24694 1 5.1870067444414559e+01 7.5229897789332611e+01 1.0500000061148977e+01 0 0 0 +24696 1 5.3553583563086804e+01 7.4668421493492659e+01 1.2250000047559089e+01 0 0 0 +25280 1 5.2992411422838160e+01 7.3010918227250443e+01 1.3999999966569641e+01 0 0 0 +25334 1 5.1870067404671566e+01 7.5229897768464753e+01 1.3999999971393379e+01 0 0 0 +24698 1 5.5237099639118824e+01 7.4106945254237957e+01 1.0500000075387241e+01 0 0 0 +24700 1 5.6920615644046627e+01 7.3545468787535711e+01 1.2250000057458044e+01 0 0 0 +24701 1 5.5798271697113520e+01 7.5764448439960390e+01 1.2250000062144927e+01 0 0 0 +25339 1 5.7481787687926122e+01 7.5202972034565079e+01 1.4000000038535248e+01 0 0 0 +24703 1 6.0848819748475314e+01 7.4080019125036429e+01 1.0499999999576891e+01 0 0 0 +24705 1 5.9165303827243427e+01 7.4641495625890542e+01 1.2250000050718237e+01 0 0 0 +25342 1 5.8604131771826182e+01 7.2983992404239800e+01 1.4000000038851280e+01 0 0 0 +24709 1 6.2532335805335983e+01 7.3518542659496234e+01 1.2250000030492426e+01 0 0 0 +24759 1 6.1409991817827212e+01 7.5737522326661860e+01 1.2250000033088932e+01 0 0 0 +25347 1 6.4215851702688823e+01 7.2957066260578983e+01 1.4000000051619466e+01 0 0 0 +25401 1 6.3093507715503314e+01 7.5176045968311811e+01 1.4000000059893617e+01 0 0 0 +24763 1 6.4777023789588142e+01 7.4614569534961461e+01 1.2250000039918922e+01 0 0 0 +24768 1 6.7021712112487535e+01 7.5710596429725868e+01 1.2250000049906635e+01 0 0 0 +25405 1 6.6460539794425685e+01 7.4053093124655462e+01 1.4000000012248071e+01 0 0 0 +24766 1 6.8705228111841990e+01 7.5149120119704719e+01 1.0500000030279066e+01 0 0 0 +24769 1 6.9827570518993880e+01 7.2930139006214802e+01 1.0499999998089892e+01 0 0 0 +24767 1 6.8144054884961918e+01 7.3491616365181429e+01 1.2250000012594933e+01 0 0 0 +24772 1 7.0388741332710595e+01 7.4587642588956854e+01 1.2249999984073861e+01 0 0 0 +24776 1 7.3755787986303631e+01 7.3464688704157311e+01 1.2249999972613731e+01 0 0 0 +24825 1 7.2633424211431617e+01 7.5683668943755691e+01 1.2249999958050099e+01 0 0 0 +25410 1 7.2072253971300682e+01 7.4026162531363866e+01 1.3999999990190950e+01 0 0 0 +24774 1 7.5439349061713656e+01 7.2903241305290862e+01 1.0499999948725870e+01 0 0 0 +24827 1 7.4316920472321570e+01 7.5122177770401848e+01 1.0499999945914979e+01 0 0 0 +24829 1 7.6000492876131304e+01 7.4560702422481384e+01 1.2249999963605372e+01 0 0 0 +24832 1 7.9929643562523452e+01 7.5095601389999956e+01 1.0499999958151527e+01 0 0 0 +24833 1 7.9367521506513498e+01 7.3437970837914378e+01 1.2250000038338916e+01 0 0 0 +24834 1 7.8245180726275620e+01 7.5656651621906519e+01 1.2250000013261952e+01 0 0 0 +25471 1 7.7684224434795112e+01 7.3999341162022034e+01 1.4000000062318284e+01 0 0 0 +24835 1 8.1049143060321825e+01 7.2875728946256942e+01 1.0499999991595489e+01 0 0 0 +24838 1 8.1612970186656270e+01 7.4534827940855081e+01 1.2250000054408417e+01 0 0 0 +25476 1 8.3289036198072978e+01 7.3971184691196598e+01 1.4000000085285253e+01 0 0 0 +24840 1 8.6710920718605962e+01 7.2853080490998082e+01 1.0500000033401692e+01 0 0 0 +24889 1 8.5523443360393387e+01 7.5066983480263943e+01 1.0500000017908546e+01 0 0 0 +24842 1 8.4964193435451463e+01 7.3402370513941534e+01 1.2250000024967694e+01 0 0 0 +24887 1 8.3862484343716019e+01 7.5634481272870332e+01 1.2250000033909686e+01 0 0 0 +24891 1 8.7168422302516419e+01 7.4458931633251581e+01 1.2250000010382594e+01 0 0 0 +24894 1 8.9214901621663358e+01 7.5541192909583103e+01 1.2249999979159817e+01 0 0 0 +25533 1 8.9045576023226914e+01 7.3906547759224011e+01 1.3999999914294033e+01 0 0 0 +24687 1 4.7380691294498519e+01 7.8571829807893508e+01 1.0499999959554323e+01 0 0 0 +24688 1 4.6819519241268331e+01 7.6914326485656971e+01 1.2249999964806637e+01 0 0 0 +24690 1 4.8503035308750007e+01 7.6352850339160625e+01 1.0499999977313486e+01 0 0 0 +24691 1 5.0747723338168363e+01 7.7448877263006608e+01 1.0500000021103023e+01 0 0 0 +24693 1 4.9064207285135119e+01 7.8010353549487803e+01 1.2249999961509404e+01 0 0 0 +24695 1 5.4114755563345128e+01 7.6325924799243026e+01 1.0500000075131407e+01 0 0 0 +24697 1 5.2431239408814626e+01 7.6887401018134412e+01 1.2250000015474457e+01 0 0 0 +24749 1 5.2992411549626794e+01 7.8544904227866695e+01 1.0500000047354554e+01 0 0 0 +24751 1 5.4675927566373346e+01 7.7983427958758597e+01 1.2250000035708672e+01 0 0 0 +24753 1 5.6359443746062226e+01 7.7421951670090309e+01 1.0500000052804500e+01 0 0 0 +25393 1 5.6359443745116756e+01 7.7421951653586461e+01 1.4000000018172589e+01 0 0 0 +24754 1 5.8604131992102708e+01 7.8517978507363708e+01 1.0500000017245968e+01 0 0 0 +24755 1 5.8042959840060242e+01 7.6860475315194890e+01 1.2250000035029069e+01 0 0 0 +24757 1 5.9726475855145424e+01 7.6298998814446207e+01 1.0500000009804419e+01 0 0 0 +24760 1 6.0287647991288658e+01 7.7956502056487011e+01 1.2250000030197514e+01 0 0 0 +24764 1 6.3654679832392155e+01 7.6833549145665856e+01 1.2250000047924321e+01 0 0 0 +24815 1 6.4215852003654277e+01 7.8491052480681191e+01 1.0500000027549824e+01 0 0 0 +25398 1 6.1971163910614997e+01 7.7395025617924304e+01 1.4000000071822155e+01 0 0 0 +24819 1 6.7582883777869270e+01 7.7368099216784898e+01 1.0500000047227369e+01 0 0 0 +24762 1 6.5338195889683675e+01 7.6272072748797157e+01 1.0500000039131669e+01 0 0 0 +24817 1 6.5899367725201785e+01 7.7929575952243226e+01 1.2250000042662139e+01 0 0 0 +24821 1 6.9266401168227716e+01 7.6806623105807020e+01 1.2250000019885023e+01 0 0 0 +25460 1 6.9827570958258448e+01 7.8464125008065665e+01 1.4000000026251996e+01 0 0 0 +24824 1 7.3194616375361107e+01 7.7341179753059166e+01 1.0499999979082599e+01 0 0 0 +24826 1 7.1511092202265431e+01 7.7902649685467097e+01 1.2250000010371100e+01 0 0 0 +25463 1 7.0949918224748771e+01 7.6245147939104200e+01 1.3999999987044340e+01 0 0 0 +24830 1 7.4878099732529307e+01 7.6779699440458785e+01 1.2249999967259841e+01 0 0 0 +24879 1 7.7122770469310311e+01 7.7875757112817482e+01 1.2249999971293326e+01 0 0 0 +25468 1 7.6561516270406969e+01 7.6218164586558814e+01 1.4000000007260137e+01 0 0 0 +25517 1 7.5439349520339618e+01 7.8437227093334130e+01 1.3999999992473743e+01 0 0 0 +24881 1 7.8805835162168805e+01 7.7314060926928846e+01 1.0499999939346354e+01 0 0 0 +24883 1 8.0489603382034744e+01 7.6752287080710857e+01 1.2250000002031530e+01 0 0 0 +24888 1 8.2732308039741127e+01 7.7846444345224597e+01 1.2250000011774233e+01 0 0 0 +25525 1 8.2176993459044468e+01 7.6192319455920114e+01 1.4000000093750616e+01 0 0 0 +25522 1 8.1049143640670280e+01 7.8409714383087405e+01 1.4000000070139082e+01 0 0 0 +24886 1 8.4431590949962839e+01 7.7289150389763691e+01 1.0499999982177844e+01 0 0 0 +24892 1 8.6132426352736800e+01 7.6743137851425175e+01 1.2250000029273494e+01 0 0 0 +25566 1 8.6710921029122019e+01 7.8387065779097767e+01 1.3999999964271984e+01 0 0 0 +25543 1 6.8705228713153019e+01 8.6217091749139428e+01 1.3999999961922933e+01 0 0 0 +24928 1 8.8549510263196098e+01 7.7841120423576385e+01 1.2250000002408063e+01 0 0 0 +25530 1 8.7753273458449854e+01 7.6184110500756404e+01 1.3999999992082232e+01 0 0 0 +24741 1 4.6258347220792409e+01 8.0790809195684460e+01 1.0499999958242276e+01 0 0 0 +24689 1 4.5697175182659130e+01 7.9133305983675470e+01 1.2250000003859450e+01 0 0 0 +24743 1 4.7941863269370842e+01 8.0229333011580110e+01 1.2249999999318190e+01 0 0 0 +24742 1 4.8503035325314151e+01 8.1886836328233130e+01 1.0499999979001855e+01 0 0 0 +24745 1 4.9625379383343237e+01 7.9667856739601760e+01 1.0499999997038927e+01 0 0 0 +24747 1 5.1308895482409945e+01 7.9106380589375561e+01 1.2249999988086293e+01 0 0 0 +24748 1 5.0186551426142110e+01 8.1325360000495593e+01 1.2249999989846348e+01 0 0 0 +24746 1 5.1870067565008135e+01 8.0763883746251793e+01 1.0500000043718236e+01 0 0 0 +24752 1 5.3553583738063843e+01 8.0202407482337236e+01 1.2250000014850377e+01 0 0 0 +24803 1 5.4114755722768798e+01 8.1859910735159431e+01 1.0500000044630733e+01 0 0 0 +25443 1 5.4114755712089654e+01 8.1859910738253049e+01 1.3999999953994664e+01 0 0 0 +24750 1 5.5237099865610084e+01 7.9640931264891989e+01 1.0500000037004320e+01 0 0 0 +24756 1 5.6920615835006359e+01 7.9079454805334095e+01 1.2250000015168951e+01 0 0 0 +24805 1 5.5798271899225114e+01 8.1298434433701871e+01 1.2250000012688364e+01 0 0 0 +24807 1 5.7481787895102492e+01 8.0736958052670374e+01 1.0500000001136547e+01 0 0 0 +25390 1 5.5237099805765816e+01 7.9640931269581898e+01 1.3999999984456359e+01 0 0 0 +24809 1 5.9165304027723444e+01 8.0175481723303704e+01 1.2250000007995229e+01 0 0 0 +25448 1 5.9726476017450977e+01 8.1832984904445141e+01 1.4000000053399802e+01 0 0 0 +25451 1 6.0848819932431368e+01 7.9614005293689019e+01 1.4000000062978886e+01 0 0 0 +24812 1 6.3093507951977877e+01 8.0710032093321800e+01 1.0499999987668449e+01 0 0 0 +24813 1 6.2532336049514491e+01 7.9052528866614992e+01 1.2250000016470620e+01 0 0 0 +24814 1 6.1409991999235679e+01 8.1271508469532407e+01 1.2250000007174716e+01 0 0 0 +24816 1 6.6460540148330466e+01 7.9587079260383874e+01 1.0500000050699077e+01 0 0 0 +24818 1 6.4777024075944126e+01 8.0148555681890599e+01 1.2250000020286814e+01 0 0 0 +24867 1 6.7021712463422389e+01 8.1244582445446625e+01 1.2250000007679748e+01 0 0 0 +25505 1 6.5338196125882249e+01 8.1806058826954072e+01 1.4000000017001820e+01 0 0 0 +24822 1 6.8144055306067614e+01 7.9025602414652383e+01 1.2250000054403198e+01 0 0 0 +24871 1 7.0388741787655761e+01 8.0121628476939136e+01 1.2250000041682956e+01 0 0 0 +25509 1 6.8705228538223892e+01 8.0683106064433574e+01 1.4000000008192361e+01 0 0 0 +24870 1 7.0949918694516398e+01 8.1779133770526101e+01 1.0500000023177652e+01 0 0 0 +24873 1 7.2072254447061255e+01 7.9560148381119333e+01 1.0500000000284711e+01 0 0 0 +24875 1 7.3755788479356113e+01 7.8998674520698117e+01 1.2249999966206438e+01 0 0 0 +24876 1 7.2633424694944949e+01 8.1217654732368487e+01 1.2250000014624018e+01 0 0 0 +24914 1 7.6561516892326580e+01 8.1752150221009330e+01 1.0499999954753759e+01 0 0 0 +24880 1 7.6000493430157277e+01 8.0094688117359283e+01 1.2249999982326271e+01 0 0 0 +25514 1 7.4316920947323624e+01 8.0656163507847779e+01 1.4000000013658703e+01 0 0 0 +24878 1 7.7684225139156425e+01 7.9533326766634431e+01 1.0499999934675174e+01 0 0 0 +24884 1 7.9367522182049825e+01 7.8971956381877831e+01 1.2249999986845259e+01 0 0 0 +24916 1 7.8245181360682466e+01 8.1190637132414636e+01 1.2249999958486217e+01 0 0 0 +25558 1 7.9929644148974788e+01 8.0629586809093254e+01 1.4000000029919798e+01 0 0 0 +24922 1 8.3289036907341114e+01 7.9505170080659227e+01 1.0499999929039140e+01 0 0 0 +24919 1 8.2176994232891232e+01 8.1726304825486835e+01 1.0499999902567597e+01 0 0 0 +24920 1 8.1612970893503871e+01 8.0068813333925419e+01 1.2249999992921722e+01 0 0 0 +24924 1 8.4964193963521524e+01 7.8936355858783614e+01 1.2250000012786719e+01 0 0 0 +24925 1 8.3862485012647980e+01 8.1168466660194653e+01 1.2250000016518001e+01 0 0 0 +25563 1 8.5523443858034838e+01 8.0600968870483285e+01 1.4000000038934157e+01 0 0 0 +24927 1 8.9045576109509838e+01 7.9440533282697814e+01 1.0500000139859702e+01 0 0 0 +24949 1 8.7753273843486440e+01 8.1718096166192765e+01 1.0500000042998144e+01 0 0 0 +24929 1 8.7168422609212740e+01 7.9992917032094397e+01 1.2250000031766229e+01 0 0 0 +24950 1 8.9214901757321741e+01 8.1075178530558929e+01 1.2250000072944056e+01 0 0 0 +24744 1 4.6819519247785074e+01 8.2448312479807882e+01 1.2249999996042899e+01 0 0 0 +24794 1 4.5697175194496729e+01 8.4667291983320368e+01 1.2250000023852465e+01 0 0 0 +24795 1 4.7380691241980628e+01 8.4105815766835434e+01 1.0499999991361175e+01 0 0 0 +24796 1 4.9625379354901206e+01 8.5201842602698349e+01 1.0500000045515391e+01 0 0 0 +24799 1 5.0747723397415207e+01 8.2982863242468099e+01 1.0500000040519275e+01 0 0 0 +24797 1 4.9064207294083033e+01 8.3544339515208478e+01 1.2250000014443255e+01 0 0 0 +24802 1 5.1308895505045392e+01 8.4640366461518070e+01 1.2250000024281574e+01 0 0 0 +24800 1 5.2992411635422187e+01 8.4078890100299759e+01 1.0500000047242070e+01 0 0 0 +24801 1 5.2431239541430926e+01 8.2421386960035946e+01 1.2250000000207153e+01 0 0 0 +24806 1 5.4675927713208083e+01 8.3517413856316082e+01 1.2249999990003555e+01 0 0 0 +24804 1 5.6359443911506666e+01 8.2955937610425352e+01 1.0500000019061247e+01 0 0 0 +24853 1 5.5237099870375495e+01 8.5174917093363092e+01 1.0500000023166541e+01 0 0 0 +24855 1 5.6920615933196530e+01 8.4613440714273807e+01 1.2250000016543927e+01 0 0 0 +24810 1 5.8042960015493975e+01 8.2394461325210713e+01 1.2250000006213540e+01 0 0 0 +24858 1 6.0848819987144466e+01 8.5147991277678926e+01 1.0499999952119948e+01 0 0 0 +24859 1 6.0287648096604649e+01 8.3490488090063963e+01 1.2249999989346062e+01 0 0 0 +25497 1 5.8604132085284874e+01 8.4051964484813396e+01 1.4000000041299392e+01 0 0 0 +24861 1 6.1971164042013868e+01 8.2929011695109494e+01 1.0499999960158634e+01 0 0 0 +24863 1 6.3654679989449122e+01 8.2367535234947923e+01 1.2249999993832770e+01 0 0 0 +24864 1 6.2532336103634265e+01 8.4586514872764113e+01 1.2249999994605787e+01 0 0 0 +25502 1 6.4215852103792443e+01 8.4025038491461572e+01 1.4000000010119182e+01 0 0 0 +24868 1 6.5899367930471684e+01 8.3463561900935602e+01 1.2250000018467350e+01 0 0 0 +25506 1 6.7582884072628346e+01 8.2902085145137377e+01 1.3999999998037547e+01 0 0 0 +25542 1 6.6460540282568488e+01 8.5121065104247322e+01 1.3999999972684334e+01 0 0 0 +24906 1 6.9827571344753309e+01 8.3998110751846127e+01 1.0500000028725744e+01 0 0 0 +24872 1 6.9266401574432479e+01 8.2340608952820645e+01 1.2250000024742567e+01 0 0 0 +24904 1 6.8144055559390736e+01 8.4559588198910220e+01 1.2250000000483499e+01 0 0 0 +24908 1 7.1511092669333351e+01 8.3436635429724618e+01 1.2250000001282270e+01 0 0 0 +24913 1 7.3755789004994327e+01 8.4532660199914460e+01 1.2250000017485403e+01 0 0 0 +25547 1 7.2072254858866174e+01 8.5094134066103948e+01 1.4000000019620527e+01 0 0 0 +25550 1 7.3194616844897368e+01 8.2875165510399370e+01 1.4000000000982372e+01 0 0 0 +24911 1 7.5439350139585386e+01 8.3971212725074906e+01 1.0499999985249175e+01 0 0 0 +24912 1 7.4878100283096316e+01 8.2313685143371941e+01 1.2249999972359889e+01 0 0 0 +24917 1 7.7122771064593650e+01 8.3409742663240309e+01 1.2249999964357235e+01 0 0 0 +24939 1 7.9367522862245508e+01 8.4505941797957561e+01 1.2249999973098115e+01 0 0 0 +24921 1 8.0489604056877582e+01 8.2286272451015932e+01 1.2249999995193813e+01 0 0 0 +25555 1 7.8805835728159522e+01 8.2848046340591225e+01 1.4000000018768741e+01 0 0 0 +25577 1 7.7684225720821061e+01 8.5067312274323641e+01 1.4000000013910684e+01 0 0 0 +24941 1 8.1049144391579105e+01 8.3943699761551656e+01 1.0499999907182561e+01 0 0 0 +24943 1 8.2732308712651985e+01 8.3380429726014455e+01 1.2249999992452151e+01 0 0 0 +25582 1 8.3289037430289639e+01 8.5039155489381386e+01 1.4000000099028304e+01 0 0 0 +24946 1 8.6710921564383668e+01 8.3921051414142397e+01 1.0500000030988037e+01 0 0 0 +24947 1 8.6132426852155305e+01 8.2277123382001619e+01 1.2250000034615130e+01 0 0 0 +24948 1 8.4964194453317688e+01 8.4470341333923542e+01 1.2250000037129713e+01 0 0 0 +25585 1 8.4431591474937861e+01 8.2823135785905436e+01 1.4000000068389783e+01 0 0 0 +5815 1 9.0272007528377344e+01 8.2590800030812161e+01 1.3999999904814830e+01 -1 0 0 +24951 1 8.8549510655588733e+01 8.3375106205406738e+01 1.2250000095885264e+01 0 0 0 +25599 1 8.9045576216121887e+01 8.4974519134551016e+01 1.3999999948608204e+01 0 0 0 +24793 1 4.6258347306923149e+01 8.6324795191314180e+01 1.0499999959491895e+01 0 0 0 +24798 1 4.7941863286342503e+01 8.5763318969063974e+01 1.2250000031402150e+01 0 0 0 +24846 1 4.6819519381065561e+01 8.7982298434230273e+01 1.2250000003231698e+01 0 0 0 +24847 1 4.8503035375827444e+01 8.7420822202236067e+01 1.0500000015832580e+01 0 0 0 +24848 1 5.0186551427268839e+01 8.6859345846457501e+01 1.2250000026395195e+01 0 0 0 +21124 1 5.0747723420026858e+01 8.8516848953733884e+01 1.0500000038166821e+01 0 -1 0 +24850 1 5.4114755702677961e+01 8.7393896476358492e+01 1.0500000049574089e+01 0 0 0 +24849 1 5.1870067563248163e+01 8.6297869568018456e+01 1.0500000067027887e+01 0 0 0 +24851 1 5.3553583771393413e+01 8.5736393291997771e+01 1.2250000003611587e+01 0 0 0 +24852 1 5.2431239554748991e+01 8.7955372694031013e+01 1.2250000007423278e+01 0 0 0 +24856 1 5.5798271891550314e+01 8.6832420215578324e+01 1.2250000026124761e+01 0 0 0 +25494 1 5.7481787893765713e+01 8.6270943908786194e+01 1.4000000050945534e+01 0 0 0 +21779 1 5.6359443825435129e+01 8.8489923312567967e+01 1.4000000041422879e+01 0 -1 0 +24860 1 5.9165304056812772e+01 8.5709467649743090e+01 1.2250000007382827e+01 0 0 0 +24895 1 5.8042959946508368e+01 8.7928447125874271e+01 1.2250000002228292e+01 0 0 0 +24896 1 5.9726475975007006e+01 8.7366970777723637e+01 1.0499999955832909e+01 0 0 0 +24897 1 6.1409991955831558e+01 8.6805494372424363e+01 1.2250000016129031e+01 0 0 0 +24901 1 6.3654679942284389e+01 8.7901521050668450e+01 1.2250000045902643e+01 0 0 0 +25538 1 6.3093507938547958e+01 8.6244018049371149e+01 1.4000000027009067e+01 0 0 0 +21782 1 6.1971163930052633e+01 8.8462997517519611e+01 1.4000000074049680e+01 0 -1 0 +24899 1 6.5338196144728670e+01 8.7340044599137357e+01 1.0500000053934702e+01 0 0 0 +24900 1 6.4777024117990990e+01 8.5682541583452121e+01 1.2250000011824195e+01 0 0 0 +24905 1 6.7021712542192489e+01 8.6778568180995720e+01 1.2250000027918309e+01 0 0 0 +21170 1 6.7582884122850885e+01 8.8436070766348308e+01 1.0500000066815057e+01 0 -1 0 +24903 1 6.8705228729048926e+01 8.6217091742462287e+01 1.0500000047551291e+01 0 0 0 +24909 1 7.0388742100876186e+01 8.5655614153254945e+01 1.2249999997497017e+01 0 0 0 +24930 1 6.9266401694376299e+01 8.7874594574613170e+01 1.2250000003666376e+01 0 0 0 +24932 1 7.2633425075107311e+01 8.6751640365336129e+01 1.2249999987741013e+01 0 0 0 +25571 1 7.0949918907344653e+01 8.7313119372309686e+01 1.3999999976878915e+01 0 0 0 +21173 1 7.3194617159824560e+01 8.8409151044745954e+01 1.0500000009059297e+01 0 -1 0 +24933 1 7.4316921445774611e+01 8.6190149139491680e+01 1.0499999980921976e+01 0 0 0 +25574 1 7.6561517434708819e+01 8.7286135702244607e+01 1.4000000000790763e+01 0 0 0 +24935 1 7.6000494030722663e+01 8.5628673692283982e+01 1.2249999986271634e+01 0 0 0 +24936 1 7.4878100703962915e+01 8.7847670694212042e+01 1.2250000008483283e+01 0 0 0 +24938 1 7.9929644899805453e+01 8.6163572245045742e+01 1.0499999932258612e+01 0 0 0 +24940 1 7.8245182031322102e+01 8.6724622603424876e+01 1.2249999996762705e+01 0 0 0 +24952 1 8.0489604769266407e+01 8.7820257919957143e+01 1.2249999967460424e+01 0 0 0 +21215 1 7.8805836392820922e+01 8.8382031845301725e+01 1.0499999959882469e+01 0 -1 0 +25593 1 8.2176994821393180e+01 8.7260290313372494e+01 1.4000000089425397e+01 0 0 0 +24944 1 8.1612971574698804e+01 8.5602798731831911e+01 1.2249999994123531e+01 0 0 0 +24954 1 8.3862485585793024e+01 8.6702452167905207e+01 1.2250000027175922e+01 0 0 0 +24955 1 8.5523444443058494e+01 8.6134954476037322e+01 1.0499999964726461e+01 0 0 0 +24958 1 8.6132427314869389e+01 8.7811109143681193e+01 1.2250000056710171e+01 0 0 0 +21218 1 8.4431592100805332e+01 8.8357121429048874e+01 1.0499999926592263e+01 0 -1 0 +25596 1 8.7753274077696432e+01 8.7252082022973696e+01 1.4000000038270235e+01 0 0 0 +1924 1 9.0272007528377117e+01 8.8124786049601141e+01 1.0500000138346570e+01 -1 -1 0 +24957 1 8.7168423031773955e+01 8.5526902804663209e+01 1.2250000070100517e+01 0 0 0 +24960 1 8.9214901640467076e+01 8.6609164535790825e+01 1.2250000082218568e+01 0 0 0 +22402 1 4.7380691789842082e+01 4.5367914645876596e+01 1.2048680275711376e-08 0 0 0 +22983 1 6.8705228655816782e+01 8.6217091832607494e+01 1.7499999962712167e+01 0 0 -1 +24963 1 4.5697175656097137e+01 4.5929390896871460e+01 1.5750000020233239e+01 0 0 0 +24969 1 4.7941863721506586e+01 4.7025417866613907e+01 1.5750000021410633e+01 0 0 0 +22411 1 4.9625379790664333e+01 4.6463941470435373e+01 1.7499999992645872e+01 0 0 -1 +24965 1 4.9064207816486501e+01 4.4806438289617716e+01 1.5750000023570902e+01 0 0 0 +24973 1 5.1308895748756250e+01 4.5902465212510229e+01 1.5750000036820692e+01 0 0 0 +22415 1 5.2992411666167342e+01 4.5340988749492261e+01 4.0487019958845849e-08 0 0 0 +24977 1 5.4675927538224023e+01 4.4779512374429103e+01 1.5749999996871608e+01 0 0 0 +24978 1 5.3553583738482871e+01 4.6998491967570473e+01 1.5750000002703173e+01 0 0 0 +22416 1 5.5237099693095210e+01 4.6437015650452253e+01 1.5045085177689543e-08 0 0 0 +24981 1 5.6920615552845788e+01 4.5875538972466970e+01 1.5750000032568272e+01 0 0 0 +22420 1 5.8604131671460578e+01 4.5314062442280395e+01 2.7521394940777100e-08 0 0 0 +24980 1 5.8604131668903321e+01 4.5314062405398452e+01 1.4000000000426816e+01 0 0 0 +24983 1 6.0287647650420624e+01 4.4752585678530970e+01 1.5750000007408444e+01 0 0 0 +25000 1 5.9165303677143577e+01 4.6971565502118096e+01 1.5750000013213745e+01 0 0 0 +22446 1 6.4215851755558688e+01 4.5287135233132481e+01 1.7499999989339436e+01 0 0 -1 +25006 1 6.4215851660953305e+01 4.5287135196966162e+01 1.3999999986042553e+01 0 0 0 +25004 1 6.2532335779815654e+01 4.5848611965248203e+01 1.5749999995478442e+01 0 0 0 +22447 1 6.6460539832168479e+01 4.6383161748544893e+01 1.7499999987985461e+01 0 0 -1 +25007 1 6.6460539803218524e+01 4.6383161746947742e+01 1.3999999982367566e+01 0 0 0 +25008 1 6.5899367442857582e+01 4.4725658405428462e+01 1.5750000005495819e+01 0 0 0 +25009 1 6.4777023807748989e+01 4.6944638399805370e+01 1.5750000010822671e+01 0 0 0 +25012 1 6.8144054900893281e+01 4.5821684804716732e+01 1.5749999988920635e+01 0 0 0 +25045 1 7.0388741114056856e+01 4.6917711084420809e+01 1.5750000035537594e+01 0 0 0 +22487 1 7.2072253743705957e+01 4.6356231031194191e+01 2.3678104810187506e-08 0 0 0 +25014 1 7.1511091621595341e+01 4.4698732023617801e+01 1.5750000048815130e+01 0 0 0 +25047 1 7.2072253669737648e+01 4.6356231004947979e+01 1.4000000027257013e+01 0 0 0 +25049 1 7.3755787675792789e+01 4.5794757207042743e+01 1.5750000046762475e+01 0 0 0 +25053 1 7.7122769639009263e+01 4.4671839914812381e+01 1.5749999985173547e+01 0 0 0 +25054 1 7.6000492474543961e+01 4.6890771208091842e+01 1.5750000003982112e+01 0 0 0 +22492 1 7.7684224201233917e+01 4.6329410012513350e+01 1.7499999978727168e+01 0 0 -1 +25052 1 7.7684224069222481e+01 4.6329410031540370e+01 1.3999999985229083e+01 0 0 0 +25057 1 7.9367521208530306e+01 4.5768039846785641e+01 1.5749999999780229e+01 0 0 0 +22545 1 8.3289035898519316e+01 4.6301254660159522e+01 1.7499999992772398e+01 0 0 -1 +25059 1 8.2732307233154486e+01 4.4642528442351065e+01 1.5749999995554447e+01 0 0 0 +25103 1 8.1612969822239705e+01 4.6864897636963796e+01 1.5749999990405966e+01 0 0 0 +25105 1 8.3289035873326057e+01 4.6301254701017371e+01 1.3999999982251515e+01 0 0 0 +25107 1 8.4964193207208112e+01 4.5732440736366648e+01 1.5749999983129607e+01 0 0 0 +22550 1 8.9045575799153767e+01 4.6236618908582237e+01 2.9315302185750625e-08 0 0 0 +25110 1 8.9045575797225183e+01 4.6236618840632474e+01 1.4000000010369378e+01 0 0 0 +25111 1 8.8549509886050956e+01 4.4637205663855255e+01 1.5749999993827934e+01 0 0 0 +25112 1 8.7168422055802623e+01 4.6789002463314375e+01 1.5750000027900402e+01 0 0 0 +21810 1 6.7582884119231252e+01 8.8436070824149482e+01 1.3999999954224069e+01 0 -1 0 +22407 1 4.6258347646299470e+01 4.7586894103920116e+01 2.5001980930028367e-08 0 0 0 +24970 1 4.6819519579272317e+01 4.9244397386624577e+01 1.5750000028162594e+01 0 0 0 +22430 1 5.0747723584301028e+01 4.9778947963218805e+01 4.1713736464998874e-08 0 0 0 +22408 1 4.8503035714182673e+01 4.8682921138406776e+01 1.0157382490660893e-08 0 0 0 +24974 1 5.0186551719360416e+01 4.8121444738345843e+01 1.5750000015040744e+01 0 0 0 +24988 1 4.9064207570254688e+01 5.0340424283023872e+01 1.5750000030971284e+01 0 0 0 +22412 1 5.1870067719489597e+01 4.7559968378311972e+01 4.1400909367439453e-08 0 0 0 +22434 1 5.4114755622113556e+01 4.8655995240556784e+01 1.0611167056140403e-08 0 0 0 +24992 1 5.2431239586652509e+01 4.9217471596079044e+01 1.5750000012132029e+01 0 0 0 +24997 1 5.4675927426894972e+01 5.0313498287939076e+01 1.5750000020820751e+01 0 0 0 +22438 1 5.7481787562217903e+01 4.7533042142443961e+01 3.4938448578714087e-08 0 0 0 +22435 1 5.6359443560354002e+01 4.9752021855543767e+01 4.7780776668560065e-08 0 0 0 +24996 1 5.5798271603957950e+01 4.8094518719754340e+01 1.5750000027028104e+01 0 0 0 +24998 1 5.7481787586218573e+01 4.7533042103938527e+01 1.3999999998005459e+01 0 0 0 +25001 1 5.8042959626227407e+01 4.9190545314807864e+01 1.5750000001095559e+01 0 0 0 +25033 1 6.0287647711291470e+01 5.0286571639485921e+01 1.5750000039634811e+01 0 0 0 +22443 1 6.3093507720382078e+01 4.7506115130887949e+01 2.5159849315059546e-08 0 0 0 +22475 1 6.1971163760682828e+01 4.9725094898034328e+01 3.6812910053640735e-08 0 0 0 +25003 1 6.3093507647778296e+01 4.7506115116402810e+01 1.3999999999431505e+01 0 0 0 +25005 1 6.1409991682326336e+01 4.8067591778607337e+01 1.5750000027814874e+01 0 0 0 +25035 1 6.1971163707229408e+01 4.9725094896567327e+01 1.4000000024933371e+01 0 0 0 +25037 1 6.3654679738733286e+01 4.9163618149759273e+01 1.5750000031960134e+01 0 0 0 +25041 1 6.7021712041714380e+01 4.8040665053116321e+01 1.5749999981890246e+01 0 0 0 +25042 1 6.5899367551084580e+01 5.0259644745252935e+01 1.5749999994590800e+01 0 0 0 +25046 1 6.9266400876884092e+01 4.9136691823009897e+01 1.5750000036295779e+01 0 0 0 +22484 1 7.0949917918547584e+01 4.8575216698677167e+01 2.3213701183522062e-08 0 0 0 +25044 1 7.0949917877681628e+01 4.8575216675699693e+01 1.4000000013325977e+01 0 0 0 +25050 1 7.2633423791087125e+01 4.8013737698268535e+01 1.5750000032888432e+01 0 0 0 +25091 1 7.1511091687083180e+01 5.0232718658314916e+01 1.5750000021369175e+01 0 0 0 +22537 1 7.6561515822155343e+01 4.8548233717707632e+01 1.7499999964444761e+01 0 0 -1 +25095 1 7.4878099133898175e+01 4.9109768497360598e+01 1.5750000005088602e+01 0 0 0 +25097 1 7.6561515715954215e+01 4.8548233714978807e+01 1.4000000004584905e+01 0 0 0 +25100 1 7.7122769717126729e+01 5.0205826601773495e+01 1.5750000016014033e+01 0 0 0 +25099 1 7.8245180184071444e+01 4.7986720847295373e+01 1.5750000000961339e+01 0 0 0 +25104 1 8.0489602754793083e+01 4.9082356983877432e+01 1.5749999988818674e+01 0 0 0 +22542 1 8.2176993006297877e+01 4.8522389654963845e+01 6.4653278286641580e-09 0 0 0 +25102 1 8.2176992952988940e+01 4.8522389715146730e+01 1.4000000004916652e+01 0 0 0 +25157 1 8.2732307389946939e+01 5.0176515043392342e+01 1.5750000010553240e+01 0 0 0 +25108 1 8.3862483957788513e+01 4.7964551726747551e+01 1.5750000005915645e+01 0 0 0 +25161 1 8.6132425931948632e+01 4.9073209007372874e+01 1.5750000069580850e+01 0 0 0 +22603 1 8.7753273077647719e+01 4.8514181905603067e+01 9.8136041515317629e-08 0 0 0 +25163 1 8.7753273126710397e+01 4.8514181849278614e+01 1.3999999942429428e+01 0 0 0 +25164 1 8.9214901478364112e+01 4.7871264364381794e+01 1.5750000029144205e+01 0 0 0 +25165 1 8.8549510031256403e+01 5.0171192124663477e+01 1.5750000033408135e+01 0 0 0 +22424 1 4.6258347385228170e+01 5.3120880038524270e+01 1.2437787688668323e-08 0 0 0 +22426 1 4.7380691498666316e+01 5.0901900636706465e+01 8.7166576179242838e-09 0 0 0 +24985 1 4.5697175363048579e+01 5.1463376885400123e+01 1.5750000029403967e+01 0 0 0 +24989 1 4.7941863471556672e+01 5.2559403772431409e+01 1.5750000021009436e+01 0 0 0 +22427 1 4.9625379554056430e+01 5.1997927402802212e+01 3.8263088697476633e-08 0 0 0 +24993 1 5.1308895596829586e+01 5.1436451161525291e+01 1.5750000012920154e+01 0 0 0 +25021 1 5.0186551499516803e+01 5.3655430589060238e+01 1.5750000022566805e+01 0 0 0 +22431 1 5.2992411571085555e+01 5.0874974733179236e+01 3.6801566238864325e-09 0 0 0 +22463 1 5.1870067544988828e+01 5.3093954281503542e+01 2.7733499052828847e-08 0 0 0 +25025 1 5.3553583563692627e+01 5.2532477873346998e+01 1.5750000023454632e+01 0 0 0 +22467 1 5.5237099564387293e+01 5.1971001558815004e+01 3.0691090557866119e-08 0 0 0 +25029 1 5.6920615499057064e+01 5.1409524897683056e+01 1.5749999996827430e+01 0 0 0 +25030 1 5.5798271488647387e+01 5.3628504603832312e+01 1.5749999981036584e+01 0 0 0 +22472 1 6.0848819628369135e+01 5.1944074746759597e+01 3.7675143005344580e-08 0 0 0 +25032 1 6.0848819596010237e+01 5.1944074710297926e+01 1.4000000042416145e+01 0 0 0 +25034 1 5.9165303604586811e+01 5.2505551441875440e+01 1.5750000025652598e+01 0 0 0 +25038 1 6.2532335797090319e+01 5.1382598039681547e+01 1.5750000050390218e+01 0 0 0 +25079 1 6.1409991599425425e+01 5.3601577794751570e+01 1.5750000037609441e+01 0 0 0 +25083 1 6.4777023762792609e+01 5.2478624614908796e+01 1.5750000015027078e+01 0 0 0 +25088 1 6.7021711934292355e+01 5.3574651413502316e+01 1.5750000033449355e+01 0 0 0 +25086 1 6.8705227917496941e+01 5.3013175091894311e+01 1.4000000009415437e+01 0 0 0 +22526 1 6.8705227981071218e+01 5.3013175129436846e+01 2.2729672366494924e-08 0 0 0 +22529 1 6.9827570545223310e+01 5.0794193896997484e+01 1.6994821550042616e-08 0 0 0 +25087 1 6.8144054894660087e+01 5.1355671259835759e+01 1.5750000022322020e+01 0 0 0 +25089 1 6.9827570504251128e+01 5.0794193891694384e+01 1.4000000005710840e+01 0 0 0 +25092 1 7.0388741117460839e+01 5.2451697659391229e+01 1.5750000014052114e+01 0 0 0 +25096 1 7.3755787710593381e+01 5.1328743832088669e+01 1.5750000009785433e+01 0 0 0 +25145 1 7.2633423720628485e+01 5.3547724243770404e+01 1.5750000014622628e+01 0 0 0 +22534 1 7.5439348835943349e+01 5.0767296472861254e+01 1.7499999985411833e+01 0 0 -1 +22587 1 7.4316920051095536e+01 5.2986233133524330e+01 1.7499999994336388e+01 0 0 -1 +25094 1 7.5439348740030866e+01 5.0767296468007459e+01 1.3999999984630634e+01 0 0 0 +25147 1 7.4316919979809853e+01 5.2986233100962707e+01 1.3999999980041617e+01 0 0 0 +25149 1 7.6000492476678730e+01 5.2424757825045823e+01 1.5749999984204484e+01 0 0 0 +22592 1 7.9929643142087627e+01 5.2959657434630202e+01 1.7499999956143615e+01 0 0 -1 +25152 1 7.9929643093296434e+01 5.2959657476801191e+01 1.4000000013631045e+01 0 0 0 +25153 1 7.9367521292921865e+01 5.1302026518742039e+01 1.5749999990527117e+01 0 0 0 +25154 1 7.8245180239695330e+01 5.3520707481664999e+01 1.5749999978162737e+01 0 0 0 +22595 1 8.1049142900048139e+01 5.0739784779681749e+01 1.7499999992743387e+01 0 0 -1 +25155 1 8.1049142855111484e+01 5.0739784823043159e+01 1.4000000005131749e+01 0 0 0 +25158 1 8.1612969904908823e+01 5.2398884234276863e+01 1.5750000022058495e+01 0 0 0 +22600 1 8.6710920588763187e+01 5.0717137345891864e+01 4.4300161761157142e-08 0 0 0 +22654 1 8.5523443135029495e+01 5.2931040636110005e+01 1.3739391846456783e-08 0 0 0 +25160 1 8.6710920565999558e+01 5.0717137372000550e+01 1.4000000006413261e+01 0 0 0 +25162 1 8.4964193304595355e+01 5.1266427209325450e+01 1.5750000048082580e+01 0 0 0 +25212 1 8.3862484057892388e+01 5.3498538238447836e+01 1.5750000024908511e+01 0 0 0 +25214 1 8.5523443116442323e+01 5.2931040652974794e+01 1.4000000007820841e+01 0 0 0 +25216 1 8.7168422239154879e+01 5.2322988956172019e+01 1.5750000014580234e+01 0 0 0 +25219 1 8.9214901269804628e+01 5.3405250649431842e+01 1.5749999991023811e+01 0 0 0 +22456 1 4.7380691416161497e+01 5.6435886458566621e+01 2.8956236519661616e-08 0 0 0 +25017 1 4.6819519404010798e+01 5.4778383240717893e+01 1.5750000028294753e+01 0 0 0 +22459 1 4.8503035496007421e+01 5.4216906976873211e+01 1.9104170689843158e-08 0 0 0 +22460 1 5.0747723411211169e+01 5.5312933745924660e+01 2.4493346018061857e-08 0 0 0 +25022 1 4.9064207435475815e+01 5.5874410072682210e+01 1.5750000042913152e+01 0 0 0 +22464 1 5.4114755426359196e+01 5.4189981084089560e+01 3.3672105104187722e-08 0 0 0 +22509 1 5.2992411397593280e+01 5.6408960511902755e+01 1.9361600323009043e-08 0 0 0 +25026 1 5.2431239375929501e+01 5.4751457380633404e+01 1.5750000001951785e+01 0 0 0 +25071 1 5.4675927289003013e+01 5.5847484139888905e+01 1.5749999964640532e+01 0 0 0 +22514 1 5.8604131492697931e+01 5.6382034274870286e+01 5.7706444067662233e-09 0 0 0 +22517 1 5.9726475516556775e+01 5.4163054523189345e+01 4.1772338477130688e-08 0 0 0 +25074 1 5.8604131530060329e+01 5.6382034246845514e+01 1.4000000022410111e+01 0 0 0 +25075 1 5.8042959439159240e+01 5.4724531175876322e+01 1.5750000023332117e+01 0 0 0 +25077 1 5.9726475532084926e+01 5.4163054493654023e+01 1.4000000032547931e+01 0 0 0 +25080 1 6.0287647550209066e+01 5.5820557593597350e+01 1.5750000027126735e+01 0 0 0 +22575 1 6.4215851613466313e+01 5.6355107575149688e+01 5.0474458390681320e-08 0 0 0 +25084 1 6.3654679565330511e+01 5.4697604292965586e+01 1.5750000034007353e+01 0 0 0 +25135 1 6.4215851510129653e+01 5.6355107545708925e+01 1.4000000043241501e+01 0 0 0 +22522 1 6.5338195742197598e+01 5.4136127807938934e+01 4.3788279668888208e-08 0 0 0 +25139 1 6.7582883359403013e+01 5.5232154337200960e+01 1.3999999987775881e+01 0 0 0 +22579 1 6.7582883413873247e+01 5.5232154328672486e+01 4.9985519723350080e-08 0 0 0 +25082 1 6.5338195633120336e+01 5.4136127789523869e+01 1.4000000020121041e+01 0 0 0 +25137 1 6.5899367333965031e+01 5.5793631022196848e+01 1.5750000037799548e+01 0 0 0 +25141 1 6.9266400760817092e+01 5.4670678261592101e+01 1.5750000008780789e+01 0 0 0 +25144 1 7.3194615676381545e+01 5.5205235280793275e+01 1.3999999981981569e+01 0 0 0 +22584 1 7.3194615717026522e+01 5.5205235300908740e+01 5.6307456475224171e-09 0 0 0 +25146 1 7.1511091518962559e+01 5.5766705115659718e+01 1.5750000031384578e+01 0 0 0 +25150 1 7.4878099071071915e+01 5.4643755044117867e+01 1.5750000000194769e+01 0 0 0 +25204 1 7.7122769654663131e+01 5.5739813136637039e+01 1.5749999975886254e+01 0 0 0 +25206 1 7.8805834377148457e+01 5.5178117186037213e+01 1.3999999984827152e+01 0 0 0 +22646 1 7.8805834418434827e+01 5.5178117132742976e+01 1.7499999957084718e+01 0 0 -1 +25208 1 8.0489602780153803e+01 5.4616343542871533e+01 1.5750000003875535e+01 0 0 0 +25213 1 8.2732307425950495e+01 5.5710501511932343e+01 1.5750000030456729e+01 0 0 0 +25211 1 8.4431590486367242e+01 5.5153207784735287e+01 1.4000000013427121e+01 0 0 0 +22651 1 8.4431590496986146e+01 5.5153207759610105e+01 1.7499999991549029e+01 0 0 -1 +25217 1 8.6132426110644971e+01 5.4607195404873622e+01 1.5749999977843325e+01 0 0 0 +3209 1 9.0272007528377358e+01 5.4920872210249705e+01 1.7499999993134281e+01 -1 0 -1 +25271 1 8.8549510138722425e+01 5.5705178350858333e+01 1.5749999966517898e+01 0 0 0 +5769 1 9.0272007528377117e+01 5.4920872093229768e+01 1.3999999874964990e+01 -1 0 0 +22501 1 4.6258347322582168e+01 5.8654865819827428e+01 3.7509192196694130e-08 0 0 0 +25018 1 4.5697175271553306e+01 5.6997362737293081e+01 1.5750000014866130e+01 0 0 0 +25063 1 4.7941863389705489e+01 5.8093389535236682e+01 1.5750000034937155e+01 0 0 0 +22505 1 4.9625379454805241e+01 5.7531913152279643e+01 3.2138466110609443e-08 0 0 0 +22502 1 4.8503035423658638e+01 5.9750892720996745e+01 3.5826616340273176e-08 0 0 0 +25067 1 5.1308895451441906e+01 5.6970436924070455e+01 1.5750000010082033e+01 0 0 0 +25068 1 5.0186551429783599e+01 5.9189416331638363e+01 1.5750000013811087e+01 0 0 0 +22506 1 5.1870067448227978e+01 5.8627940029473280e+01 2.1774255287709821e-08 0 0 0 +25072 1 5.3553583446011430e+01 5.8066463651020364e+01 1.5749999959982201e+01 0 0 0 +22567 1 5.7481787295522807e+01 5.8601013921563251e+01 1.7499999987484987e+01 0 0 -1 +25076 1 5.6920615335475695e+01 5.6943510754508686e+01 1.5749999988948835e+01 0 0 0 +25125 1 5.5798271349528910e+01 5.9162490445283936e+01 1.5749999961900093e+01 0 0 0 +25127 1 5.7481787345458933e+01 5.8601013881861967e+01 1.3999999988008586e+01 0 0 0 +25129 1 5.9165303453165734e+01 5.8039537348248409e+01 1.5749999992574688e+01 0 0 0 +22572 1 6.3093507419885789e+01 5.8574087288260600e+01 7.7896061156934593e-08 0 0 0 +25132 1 6.3093507351964405e+01 5.8574087285224849e+01 1.4000000035808892e+01 0 0 0 +25133 1 6.2532335594889311e+01 5.6916584064794392e+01 1.5750000043730051e+01 0 0 0 +25134 1 6.1409991383994885e+01 5.9135563769139125e+01 1.5750000042547635e+01 0 0 0 +25136 1 6.6460539534151920e+01 5.7451134352706603e+01 1.4000000025456410e+01 0 0 0 +22576 1 6.6460539583573564e+01 5.7451134389934296e+01 2.8993337508609329e-08 0 0 0 +25138 1 6.4777023531235614e+01 5.8012610786145530e+01 1.5750000055869823e+01 0 0 0 +25192 1 6.7021711687550948e+01 5.9108637670278334e+01 1.5750000010534634e+01 0 0 0 +25142 1 6.8144054671339561e+01 5.6889657639686710e+01 1.5750000004108950e+01 0 0 0 +25196 1 7.0388740857743400e+01 5.7985684020660322e+01 1.5750000011452819e+01 0 0 0 +25195 1 7.0949917563066890e+01 5.9643189535894713e+01 1.3999999999364229e+01 0 0 0 +25198 1 7.2072253493701169e+01 5.7424204022730535e+01 1.3999999993482072e+01 0 0 0 +22635 1 7.0949917571034234e+01 5.9643189573540461e+01 2.3493246459338479e-08 0 0 0 +22638 1 7.2072253531554225e+01 5.7424204086284526e+01 2.1094216151595901e-08 0 0 0 +25200 1 7.3755787562192836e+01 5.6862730312983160e+01 1.5750000003769095e+01 0 0 0 +25201 1 7.2633423534037661e+01 5.9081710631315239e+01 1.5750000018389319e+01 0 0 0 +25257 1 7.6561515571200360e+01 5.9616206692282589e+01 1.4000000003307148e+01 0 0 0 +22697 1 7.6561515603977796e+01 5.9616206681064241e+01 1.7499999979181254e+01 0 0 -1 +25205 1 7.6000492343760385e+01 5.7958744274736347e+01 1.5749999995367752e+01 0 0 0 +25203 1 7.7684224055815690e+01 5.7397383173095243e+01 1.3999999980906278e+01 0 0 0 +22643 1 7.7684224116292739e+01 5.7397383119615192e+01 1.7499999971016219e+01 0 0 -1 +25209 1 7.9367521253236248e+01 5.6836012999075045e+01 1.5749999996165791e+01 0 0 0 +25259 1 7.8245180104526384e+01 5.9054693847242611e+01 1.5750000008432057e+01 0 0 0 +22702 1 8.2176993027466764e+01 5.9590362471977222e+01 3.4276581573067233e-09 0 0 0 +22705 1 8.3289036027164840e+01 5.7369227576449440e+01 1.7499999960469307e+01 0 0 -1 +25262 1 8.2176992987439746e+01 5.9590362545996356e+01 1.4000000013101511e+01 0 0 0 +25265 1 8.3289036011846392e+01 5.7369227659186052e+01 1.4000000022325837e+01 0 0 0 +25263 1 8.1612969897498800e+01 5.7932870635951289e+01 1.5750000007149980e+01 0 0 0 +25267 1 8.4964193342540042e+01 5.6800413583790579e+01 1.5750000001772218e+01 0 0 0 +25268 1 8.3862484068946586e+01 5.9032524501918928e+01 1.5750000004346028e+01 0 0 0 +22710 1 8.9045575904699234e+01 5.7304591425305738e+01 8.8242444462593994e-09 0 0 0 +22763 1 8.7753273297104059e+01 5.9582154306812221e+01 1.7499999982426132e+01 0 0 -1 +25270 1 8.9045575900221479e+01 5.7304591339700650e+01 1.3999999939319194e+01 0 0 0 +25323 1 8.7753273307570396e+01 5.9582154266831900e+01 1.3999999986582997e+01 0 0 0 +25272 1 8.7168422278686592e+01 5.7856975170029983e+01 1.5749999994702135e+01 0 0 0 +25324 1 8.9214901335418020e+01 5.8939236692037177e+01 1.5749999959334763e+01 0 0 0 +22555 1 4.7380691307377091e+01 6.1969872118511248e+01 4.6922018270834087e-08 0 0 0 +25064 1 4.6819519328542448e+01 6.0312368964717962e+01 1.5750000074819472e+01 0 0 0 +25114 1 4.5697175202480764e+01 6.2531348410115527e+01 1.5750000060475770e+01 0 0 0 +22556 1 4.9625379380121302e+01 6.3065898877413908e+01 5.6689657412789529e-08 0 0 0 +22559 1 5.0747723355288308e+01 6.0846919506489719e+01 2.8638808657888148e-08 0 0 0 +25117 1 4.9064207329167260e+01 6.1408395775665184e+01 1.5750000049906671e+01 0 0 0 +25122 1 5.1308895388123389e+01 6.2504422684550718e+01 1.5750000005614698e+01 0 0 0 +25121 1 5.2431239309964717e+01 6.0285443189381489e+01 1.5749999986092758e+01 0 0 0 +25126 1 5.4675927194151662e+01 6.1381469972220039e+01 1.5749999975262121e+01 0 0 0 +25178 1 5.5237099363562415e+01 6.3038973256911845e+01 1.3999999971378276e+01 0 0 0 +22564 1 5.6359443285658472e+01 6.0819993600169028e+01 1.7499999977328972e+01 0 0 -1 +22618 1 5.5237099342055288e+01 6.3038973255311284e+01 1.7499999980550836e+01 0 0 -1 +25124 1 5.6359443332586018e+01 6.0819993595648114e+01 1.3999999974200080e+01 0 0 0 +25180 1 5.6920615256268405e+01 6.2477496675907751e+01 1.5749999960489703e+01 0 0 0 +22623 1 6.0848819324565696e+01 6.3012046756753186e+01 4.4074305094454758e-08 0 0 0 +25130 1 5.8042959360108718e+01 6.0258517117713446e+01 1.5749999973835607e+01 0 0 0 +25183 1 6.0848819315611109e+01 6.3012046740947810e+01 1.4000000044843256e+01 0 0 0 +25184 1 6.0287647427365485e+01 6.1354543579700177e+01 1.5750000023754666e+01 0 0 0 +22626 1 6.1971163426150305e+01 6.0793066956672952e+01 5.1685894675301824e-08 0 0 0 +25186 1 6.1971163387503594e+01 6.0793066962640140e+01 1.4000000048146250e+01 0 0 0 +25188 1 6.3654679383972280e+01 6.0231590395880289e+01 1.5750000052427078e+01 0 0 0 +25189 1 6.2532335477218986e+01 6.2450570167243406e+01 1.5750000070050513e+01 0 0 0 +25193 1 6.5899367129045842e+01 6.1327617216684253e+01 1.5750000017704137e+01 0 0 0 +25249 1 6.9827570125677596e+01 6.1862166574317222e+01 1.4000000003473721e+01 0 0 0 +22689 1 6.9827570134233909e+01 6.1862166625873868e+01 5.0254023165052786e-09 0 0 0 +25197 1 6.9266400510477652e+01 6.0204664563502796e+01 1.5750000026899579e+01 0 0 0 +25247 1 6.8144054515558182e+01 6.2423643885778993e+01 1.5750000010142921e+01 0 0 0 +25251 1 7.1511091349461125e+01 6.1300691441959728e+01 1.5750000005130316e+01 0 0 0 +25256 1 7.3755787414510479e+01 6.2396716590016112e+01 1.5750000020396232e+01 0 0 0 +25254 1 7.5439348519667092e+01 6.1835269275992303e+01 1.4000000014042033e+01 0 0 0 +22694 1 7.5439348542897719e+01 6.1835269261065498e+01 2.4427961875517212e-09 0 0 0 +25255 1 7.4878098900208656e+01 6.0177741404119182e+01 1.5750000021635202e+01 0 0 0 +25260 1 7.7122769529494590e+01 6.1273799438719735e+01 1.5750000049805246e+01 0 0 0 +25313 1 7.9367521156449214e+01 6.2369999189294134e+01 1.5750000039835767e+01 0 0 0 +25264 1 8.0489602702014807e+01 6.0150329837364346e+01 1.5750000022326748e+01 0 0 0 +22755 1 8.1049142828849369e+01 6.1807757417376621e+01 1.9618369151430670e-08 0 0 0 +25315 1 8.1049142762268147e+01 6.1807757506671187e+01 1.4000000011703717e+01 0 0 0 +25317 1 8.2732307370111229e+01 6.1244487673278236e+01 1.5750000026623104e+01 0 0 0 +22760 1 8.6710920730355525e+01 6.1785109640800805e+01 1.7499999990127691e+01 0 0 -1 +25320 1 8.6710920680535395e+01 6.1785109646901688e+01 1.3999999989936414e+01 0 0 0 +25321 1 8.6132426136761566e+01 6.0141181505674936e+01 1.5750000024919350e+01 0 0 0 +25322 1 8.4964193340766428e+01 6.2334399561195617e+01 1.5750000025723310e+01 0 0 0 +25325 1 8.8549510209494926e+01 6.1239164289344970e+01 1.5749999987934135e+01 0 0 0 +22553 1 4.6258347274208944e+01 6.4188851508735127e+01 2.6798318231158191e-08 0 0 0 +25118 1 4.7941863309648411e+01 6.3627375234726081e+01 1.5750000029630781e+01 0 0 0 +25168 1 4.6819519325272886e+01 6.5846354659812164e+01 1.5750000054129456e+01 0 0 0 +22610 1 4.8503035399514957e+01 6.5284878449336361e+01 8.8250651231192023e-09 0 0 0 +25172 1 5.0186551356058594e+01 6.4723402093620422e+01 1.5750000015835226e+01 0 0 0 +25175 1 5.4114755292570891e+01 6.5257952750253963e+01 1.3999999974868997e+01 0 0 0 +22615 1 5.4114755282214411e+01 6.5257952773256719e+01 1.7499999982578842e+01 0 0 -1 +25176 1 5.3553583375037242e+01 6.3600449512881326e+01 1.5749999984191886e+01 0 0 0 +25177 1 5.2431239269689286e+01 6.5819429008863551e+01 1.5749999966738306e+01 0 0 0 +25181 1 5.5798271314035901e+01 6.4696476381222851e+01 1.5749999967020715e+01 0 0 0 +22677 1 5.9726475327000493e+01 6.5231026483559376e+01 4.4983746505522504e-08 0 0 0 +25185 1 5.9165303380607980e+01 6.3573523362538417e+01 1.5750000021645699e+01 0 0 0 +25235 1 5.8042959319617104e+01 6.5792503092970136e+01 1.5750000020379881e+01 0 0 0 +25237 1 5.9726475367507049e+01 6.5231026510240412e+01 1.4000000038267546e+01 0 0 0 +25239 1 6.1409991353635377e+01 6.4669549898483893e+01 1.5750000055144461e+01 0 0 0 +25244 1 6.3654679323896701e+01 6.5765576614205614e+01 1.5750000050269007e+01 0 0 0 +22682 1 6.5338195435817568e+01 6.5204100232303645e+01 4.5629167999550191e-08 0 0 0 +25242 1 6.5338195356050974e+01 6.5204100203403755e+01 1.4000000035018465e+01 0 0 0 +25243 1 6.4777023407224021e+01 6.3546596954978682e+01 1.5750000026424566e+01 0 0 0 +25248 1 6.7021711620152800e+01 6.4642623943025811e+01 1.5750000040953134e+01 0 0 0 +22739 1 6.7582883176751281e+01 6.6300126874758661e+01 1.3864980275002381e-08 0 0 0 +25299 1 6.7582883151233233e+01 6.6300126867889148e+01 1.4000000000510504e+01 0 0 0 +25246 1 6.8705227581197107e+01 6.4081147669900815e+01 1.4000000018070313e+01 0 0 0 +22686 1 6.8705227607198225e+01 6.4081147753460272e+01 1.7499999996987015e+01 0 0 -1 +25252 1 7.0388740764554640e+01 6.3519670308086823e+01 1.5750000009306039e+01 0 0 0 +25301 1 6.9266400506602196e+01 6.5738650859120426e+01 1.5750000002465809e+01 0 0 0 +25305 1 7.2633423457594930e+01 6.4615696888203487e+01 1.5750000018950123e+01 0 0 0 +22744 1 7.3194615503929725e+01 6.6273207855070211e+01 1.6939459612785868e-08 0 0 0 +25304 1 7.3194615534706458e+01 6.6273207820099941e+01 1.4000000008888158e+01 0 0 0 +25307 1 7.4316919759545968e+01 6.4054205750011405e+01 1.4000000019980108e+01 0 0 0 +22747 1 7.4316919756784628e+01 6.4054205787970005e+01 1.5578411449723717e-08 0 0 0 +25309 1 7.6000492256078928e+01 6.3492730497087564e+01 1.5750000034118505e+01 0 0 0 +25310 1 7.4878098885130186e+01 6.5711727595277438e+01 1.5750000048082640e+01 0 0 0 +22752 1 7.9929643028443294e+01 6.4027629880557711e+01 1.3225616157797049e-08 0 0 0 +25312 1 7.9929642960660516e+01 6.4027629958729676e+01 1.4000000046259052e+01 0 0 0 +25314 1 7.8245180077589040e+01 6.4588679973602652e+01 1.5750000048584221e+01 0 0 0 +25368 1 8.0489602689602293e+01 6.5684315788370114e+01 1.5750000061555966e+01 0 0 0 +22806 1 7.8805834318677299e+01 6.6246089428751006e+01 3.2872982558274089e-08 0 0 0 +25366 1 7.8805834265560904e+01 6.6246089493435719e+01 1.4000000047349870e+01 0 0 0 +25318 1 8.1612969810368227e+01 6.3466856664036456e+01 1.5750000048777078e+01 0 0 0 +22814 1 8.5523443164401726e+01 6.3999012682324647e+01 1.7499999997785828e+01 0 0 -1 +22811 1 8.4431590508213191e+01 6.6221179557687293e+01 4.0010981194882334e-09 0 0 0 +25374 1 8.5523443090029531e+01 6.3999012717410125e+01 1.3999999969996200e+01 0 0 0 +25372 1 8.3862484015352564e+01 6.4566510347843504e+01 1.5750000022518339e+01 0 0 0 +25377 1 8.6132426082060135e+01 6.5675167159156885e+01 1.5749999939204738e+01 0 0 0 +25371 1 8.4431590407838542e+01 6.6221179619537338e+01 1.3999999974761074e+01 0 0 0 +3227 1 9.0272007528377316e+01 6.5988843865149320e+01 1.7499999880080004e+01 -1 0 -1 +25376 1 8.7168422240817918e+01 6.3390960954224916e+01 1.5749999962535901e+01 0 0 0 +25379 1 8.9214901448101088e+01 6.4473222389862002e+01 1.5749999937415369e+01 0 0 0 +19250 1 6.7582884085029235e+01 8.8436070816897740e+01 1.7499999945411723e+01 0 -1 -1 +22607 1 4.7380691382498696e+01 6.7503857922495015e+01 2.9927221589787223e-08 0 0 0 +25169 1 4.5697175269906104e+01 6.8065334158321789e+01 1.5750000006649998e+01 0 0 0 +25223 1 4.7941863358093137e+01 6.9161361065268864e+01 1.5749999988085433e+01 0 0 0 +25173 1 4.9064207379381934e+01 6.6942381557971203e+01 1.5750000029625985e+01 0 0 0 +25227 1 5.1308895424227295e+01 6.8038408551493262e+01 1.5749999959748813e+01 0 0 0 +25229 1 5.2992411359488507e+01 6.7476932211559117e+01 1.3999999970480175e+01 0 0 0 +22669 1 5.2992411346684129e+01 6.7476932197140741e+01 1.7499999960148642e+01 0 0 -1 +25231 1 5.4675927219076300e+01 6.6915455901545911e+01 1.5749999964733654e+01 0 0 0 +25232 1 5.3553583464228907e+01 6.9134435434135753e+01 1.5749999941939318e+01 0 0 0 +25236 1 5.6920615354949220e+01 6.8011482678257025e+01 1.5750000009823705e+01 0 0 0 +22674 1 5.8604131428290664e+01 6.7450006249277095e+01 1.6141378011980123e-08 0 0 0 +25234 1 5.8604131503634051e+01 6.7450006276256815e+01 1.4000000043525077e+01 0 0 0 +25240 1 6.0287647440787559e+01 6.6888529669668074e+01 1.5750000057402691e+01 0 0 0 +25289 1 5.9165303497802242e+01 6.9107509419743394e+01 1.5750000045938126e+01 0 0 0 +25295 1 6.4215851399096508e+01 6.7423079925615497e+01 1.4000000066080030e+01 0 0 0 +22735 1 6.4215851458990926e+01 6.7423079973677076e+01 3.2730170573813666e-08 0 0 0 +25293 1 6.2532335527110412e+01 6.7984556356035711e+01 1.5750000065509269e+01 0 0 0 +22736 1 6.6460539516826159e+01 6.8519106929819969e+01 1.7499999993415575e+01 0 0 -1 +25296 1 6.6460539505006523e+01 6.8519106856897594e+01 1.4000000029593426e+01 0 0 0 +25297 1 6.5899367153412868e+01 6.6861603503677060e+01 1.5750000033531325e+01 0 0 0 +25298 1 6.4777023513392010e+01 6.9080583252267942e+01 1.5750000072015670e+01 0 0 0 +25302 1 6.8144054587746950e+01 6.7957630194839780e+01 1.5749999981682603e+01 0 0 0 +25356 1 7.0388740898394701e+01 6.9053656532862178e+01 1.5749999971871478e+01 0 0 0 +22798 1 7.2072253495369921e+01 6.8492176573166745e+01 2.3299385532027372e-08 0 0 0 +25306 1 7.1511091360294301e+01 6.6834677687734853e+01 1.5750000020160536e+01 0 0 0 +25358 1 7.2072253506987522e+01 6.8492176501292533e+01 1.3999999978133674e+01 0 0 0 +25360 1 7.3755787501419945e+01 6.7930702767102360e+01 1.5750000026669145e+01 0 0 0 +25364 1 7.7122769532185444e+01 6.6807785509984555e+01 1.5750000040349686e+01 0 0 0 +25365 1 7.6000492344777854e+01 6.9026716528223247e+01 1.5750000040716166e+01 0 0 0 +22803 1 7.7684224077130679e+01 6.8465355298072566e+01 3.9450139155405850e-08 0 0 0 +25363 1 7.7684224034790418e+01 6.8465355342994798e+01 1.4000000069869886e+01 0 0 0 +25369 1 7.9367521204103639e+01 6.7903985098472049e+01 1.5750000079947222e+01 0 0 0 +22865 1 8.3289036114626740e+01 6.8437199194430917e+01 1.5755148297103005e-09 0 0 0 +25373 1 8.2732307386768625e+01 6.6778473412034643e+01 1.5750000049502548e+01 0 0 0 +25423 1 8.1612969927313344e+01 6.9000842389106239e+01 1.5750000054578862e+01 0 0 0 +25425 1 8.3289035989646507e+01 6.8437199305590454e+01 1.4000000019488663e+01 0 0 0 +25427 1 8.4964193373464965e+01 6.7868385127473900e+01 1.5749999966059391e+01 0 0 0 +22870 1 8.9045575963302582e+01 6.8372562618491187e+01 1.7499999916972328e+01 0 0 -1 +25430 1 8.9045575941431764e+01 6.8372562522938921e+01 1.3999999895380709e+01 0 0 0 +25431 1 8.8549510043511475e+01 6.6773149823839987e+01 1.5749999909205711e+01 0 0 0 +25432 1 8.7168422292988097e+01 6.8924946436135116e+01 1.5749999928813683e+01 0 0 0 +22661 1 4.6258347326830325e+01 6.9722837319760885e+01 2.3449672426067991e-08 0 0 0 +25224 1 4.6819519301252711e+01 7.1380340524465012e+01 1.5750000050864495e+01 0 0 0 +25279 1 5.0747723290848327e+01 7.1914891252525607e+01 1.3999999981301510e+01 0 0 0 +22719 1 5.0747723378460009e+01 7.1914891268230903e+01 1.7499999943390964e+01 0 0 -1 +25228 1 5.0186551424097757e+01 7.0257388014222144e+01 1.5749999953036530e+01 0 0 0 +25277 1 4.9064207328747855e+01 7.2476367519102595e+01 1.5749999989698054e+01 0 0 0 +25226 1 5.1870067432598297e+01 6.9695911761048919e+01 1.3999999967422887e+01 0 0 0 +22666 1 5.1870067441187651e+01 6.9695911769563750e+01 1.7499999944358414e+01 0 0 -1 +25281 1 5.2431239362202490e+01 7.1353415006154151e+01 1.5749999950859110e+01 0 0 0 +25286 1 5.4675927376470931e+01 7.2449441923908694e+01 1.5749999980311618e+01 0 0 0 +25284 1 5.6359443579535082e+01 7.1887965615006109e+01 1.4000000027433243e+01 0 0 0 +25287 1 5.7481787467981178e+01 6.9668985917781100e+01 1.4000000019193523e+01 0 0 0 +22724 1 5.6359443463444599e+01 7.1887965602667336e+01 1.7499999970867030e+01 0 0 -1 +22727 1 5.7481787383790568e+01 6.9668985889813953e+01 3.0389557537091605e-09 0 0 0 +25285 1 5.5798271469397257e+01 7.0230462387232521e+01 1.5749999968843877e+01 0 0 0 +25290 1 5.8042959552759569e+01 7.1326489204871521e+01 1.5750000033439481e+01 0 0 0 +25344 1 6.0287647712657261e+01 7.2422515853694577e+01 1.5750000063357913e+01 0 0 0 +25292 1 6.3093507419551443e+01 6.9642059689709228e+01 1.4000000060875358e+01 0 0 0 +25346 1 6.1971163634391374e+01 7.1861039356868517e+01 1.4000000066059583e+01 0 0 0 +22732 1 6.3093507446445535e+01 6.9642059656979455e+01 7.2900967040823161e-08 0 0 0 +22786 1 6.1971163617041043e+01 7.1861039332733426e+01 5.7468692915563224e-08 0 0 0 +25294 1 6.1409991498765990e+01 7.0203536066777659e+01 1.5750000070564740e+01 0 0 0 +25348 1 6.3654679531665067e+01 7.1299562853906210e+01 1.5750000053566433e+01 0 0 0 +25352 1 6.7021711794716566e+01 7.0176610238353248e+01 1.5750000014910640e+01 0 0 0 +25353 1 6.5899367413985573e+01 7.2395589760831044e+01 1.5750000003963214e+01 0 0 0 +25357 1 6.9266400744597959e+01 7.1272637067125117e+01 1.5749999992663836e+01 0 0 0 +22795 1 7.0949917729430325e+01 7.0711162025006942e+01 3.2895400181587320e-08 0 0 0 +25355 1 7.0949917791614155e+01 7.0711161965958865e+01 1.3999999947103406e+01 0 0 0 +25361 1 7.2633423684720256e+01 7.0149683014317745e+01 1.5749999997237545e+01 0 0 0 +25411 1 7.1511091718041740e+01 7.2368663792242472e+01 1.5749999978902423e+01 0 0 0 +22857 1 7.6561515705125530e+01 7.0684178801616568e+01 5.9378919559094356e-08 0 0 0 +25415 1 7.4878099105567202e+01 7.1245713600928980e+01 1.5750000028438157e+01 0 0 0 +25417 1 7.6561515727557719e+01 7.0684178779062236e+01 1.4000000036507343e+01 0 0 0 +25420 1 7.7122769768446020e+01 7.2341771389032303e+01 1.5750000097407352e+01 0 0 0 +25419 1 7.8245180161381455e+01 7.0122665840622460e+01 1.5750000083045904e+01 0 0 0 +25424 1 8.0489602830859496e+01 7.1218301463577362e+01 1.5750000095393561e+01 0 0 0 +22862 1 8.2176993184881326e+01 7.0658333934956431e+01 3.5920479035667086e-08 0 0 0 +25422 1 8.2176993041711455e+01 7.0658334047883656e+01 1.4000000081737744e+01 0 0 0 +25477 1 8.2732307566983678e+01 7.2312458914828127e+01 1.5750000079905048e+01 0 0 0 +25428 1 8.3862484144159069e+01 7.0100495857572426e+01 1.5750000017048876e+01 0 0 0 +25481 1 8.6132426251003253e+01 7.1209152539674818e+01 1.5749999985064679e+01 0 0 0 +22923 1 8.7753273465570373e+01 7.0650125280787393e+01 1.7499999923749545e+01 0 0 -1 +25483 1 8.7753273395245714e+01 7.0650125240650979e+01 1.3999999911988610e+01 0 0 0 +25484 1 8.9214901466965244e+01 7.0007207663642475e+01 1.5749999858125474e+01 0 0 0 +25485 1 8.8549510278352514e+01 7.2307135095008221e+01 1.5749999906006822e+01 0 0 0 +25274 1 4.5697175167405391e+01 7.3599320004563509e+01 1.5750000050775730e+01 0 0 0 +25278 1 4.7941863265171435e+01 7.4695347009237693e+01 1.5750000013045662e+01 0 0 0 +22716 1 4.9625379373632441e+01 7.4133870702882277e+01 1.7499999989433498e+01 0 0 -1 +25276 1 4.9625379303311412e+01 7.4133870726631997e+01 1.4000000000499238e+01 0 0 0 +25282 1 5.1308895406686410e+01 7.3572394573296052e+01 1.5749999951969876e+01 0 0 0 +25332 1 5.0186551352895407e+01 7.5791374002805924e+01 1.5749999976947580e+01 0 0 0 +25336 1 5.3553583556112471e+01 7.4668421505013825e+01 1.5749999950912670e+01 0 0 0 +25338 1 5.5237099640794717e+01 7.4106945304284636e+01 1.4000000008187614e+01 0 0 0 +22778 1 5.5237099573026455e+01 7.4106945255616168e+01 1.7499999945167140e+01 0 0 -1 +25340 1 5.6920615555410400e+01 7.3545468750135925e+01 1.5750000011876915e+01 0 0 0 +25341 1 5.5798271635096675e+01 7.5764448451061995e+01 1.5749999979174103e+01 0 0 0 +25343 1 6.0848819714238140e+01 7.4080019117677779e+01 1.4000000068929252e+01 0 0 0 +22783 1 6.0848819672786277e+01 7.4080019111572000e+01 7.2796634498217827e-08 0 0 0 +25345 1 5.9165303774630083e+01 7.4641495624647902e+01 1.5750000059958996e+01 0 0 0 +25349 1 6.2532335786143328e+01 7.3518542642018573e+01 1.5750000091288008e+01 0 0 0 +25399 1 6.1409991801138638e+01 7.5737522332196548e+01 1.5750000074274698e+01 0 0 0 +25403 1 6.4777023792710196e+01 7.4614569515676237e+01 1.5750000030045543e+01 0 0 0 +25408 1 6.7021712119442100e+01 7.5710596450265385e+01 1.5750000020979831e+01 0 0 0 +22846 1 6.8705228113149573e+01 7.5149120140478871e+01 1.7499999994595086e+01 0 0 -1 +22849 1 6.9827570506203571e+01 7.2930139042124566e+01 1.7499999993975543e+01 0 0 -1 +25406 1 6.8705228125646983e+01 7.5149120085033857e+01 1.3999999996377161e+01 0 0 0 +25407 1 6.8144054918348488e+01 7.3491616366206785e+01 1.5749999981448058e+01 0 0 0 +25409 1 6.9827570543800078e+01 7.2930138997688644e+01 1.3999999964369398e+01 0 0 0 +25412 1 7.0388741327655424e+01 7.4587642591103901e+01 1.5749999994828865e+01 0 0 0 +25416 1 7.3755787880449162e+01 7.3464688713223367e+01 1.5749999995413857e+01 0 0 0 +25465 1 7.2633424126747343e+01 7.5683668961022036e+01 1.5749999997409514e+01 0 0 0 +22854 1 7.5439348864953601e+01 7.2903241320546911e+01 6.4837863078537339e-08 0 0 0 +22907 1 7.4316920321762993e+01 7.5122177799668179e+01 5.9741690705550354e-08 0 0 0 +25414 1 7.5439348923100582e+01 7.2903241307329353e+01 1.4000000010746145e+01 0 0 0 +25467 1 7.4316920417185699e+01 7.5122177751306523e+01 1.3999999968072849e+01 0 0 0 +25469 1 7.6000492760189260e+01 7.4560702396958803e+01 1.5750000035978982e+01 0 0 0 +22912 1 7.9929643480203026e+01 7.5095601301237096e+01 7.8927577362719603e-08 0 0 0 +25472 1 7.9929643450115918e+01 7.5095601363796746e+01 1.4000000117127133e+01 0 0 0 +25473 1 7.9367521462013272e+01 7.3437970823074892e+01 1.5750000107229601e+01 0 0 0 +25474 1 7.8245180635622177e+01 7.5656651562799979e+01 1.5750000083251487e+01 0 0 0 +22915 1 8.1049143106622026e+01 7.2875728846893765e+01 8.6473011862153726e-08 0 0 0 +25475 1 8.1049142997317048e+01 7.2875728932158822e+01 1.4000000101219321e+01 0 0 0 +25478 1 8.1612970186784210e+01 7.4534827868836203e+01 1.5750000124644076e+01 0 0 0 +22920 1 8.6710920961980150e+01 7.2853080446281481e+01 1.7499999941592783e+01 0 0 -1 +22969 1 8.5523443567732230e+01 7.5066983446292156e+01 1.7499999989983621e+01 0 0 -1 +25480 1 8.6710920787798770e+01 7.2853080498603461e+01 1.3999999961462557e+01 0 0 0 +25482 1 8.4964193565956009e+01 7.3402370461925329e+01 1.5750000043521361e+01 0 0 0 +25527 1 8.3862484433633867e+01 7.5634481216518310e+01 1.5750000081331910e+01 0 0 0 +25529 1 8.5523443368636364e+01 7.5066983483156633e+01 1.4000000018448063e+01 0 0 0 +25531 1 8.7168422486222170e+01 7.4458931705965369e+01 1.5749999921684461e+01 0 0 0 +25534 1 8.9214901433856497e+01 7.5541192937541283e+01 1.5749999820433274e+01 0 0 0 +25327 1 4.7380691222979856e+01 7.8571829822389418e+01 1.4000000012928455e+01 0 0 0 +25328 1 4.6819519233412343e+01 7.6914326485020140e+01 1.5750000082821423e+01 0 0 0 +22770 1 4.8503035356606688e+01 7.6352850305378951e+01 1.9135772078016089e-08 0 0 0 +25330 1 4.8503035302677965e+01 7.6352850283559619e+01 1.4000000026255465e+01 0 0 0 +25331 1 5.0747723321560123e+01 7.7448877289770593e+01 1.3999999962821702e+01 0 0 0 +25333 1 4.9064207312683628e+01 7.8010353519798755e+01 1.5750000020992491e+01 0 0 0 +22829 1 5.2992411517439166e+01 7.8544904190152124e+01 1.7499999932824679e+01 0 0 -1 +25389 1 5.2992411544786442e+01 7.8544904238472640e+01 1.3999999967695489e+01 0 0 0 +22775 1 5.4114755510234900e+01 7.6325924780662959e+01 1.7499999932299161e+01 0 0 -1 +25335 1 5.4114755547032829e+01 7.6325924778099946e+01 1.3999999997467294e+01 0 0 0 +25337 1 5.2431239400356574e+01 7.6887401009280353e+01 1.5749999943108595e+01 0 0 0 +25391 1 5.4675927521351277e+01 7.7983427950190475e+01 1.5749999955970340e+01 0 0 0 +25394 1 5.8604131996526490e+01 7.8517978532581267e+01 1.4000000045346427e+01 0 0 0 +25397 1 5.9726475852406402e+01 7.6298998840266194e+01 1.4000000060794195e+01 0 0 0 +22834 1 5.8604131897649097e+01 7.8517978490417988e+01 5.1713644921846935e-08 0 0 0 +22837 1 5.9726475772123962e+01 7.6298998816771999e+01 7.1400826584522292e-08 0 0 0 +25395 1 5.8042959777054129e+01 7.6860475298104191e+01 1.5750000043076007e+01 0 0 0 +25400 1 6.0287647949238206e+01 7.7956502058909194e+01 1.5750000078481753e+01 0 0 0 +25455 1 6.4215851954017396e+01 7.8491052459863809e+01 1.4000000049459075e+01 0 0 0 +22895 1 6.4215851980602309e+01 7.8491052469676347e+01 4.5803812298572666e-08 0 0 0 +25404 1 6.3654679811741417e+01 7.6833549160948536e+01 1.5750000048187838e+01 0 0 0 +22899 1 6.7582883761364968e+01 7.7368099250376758e+01 1.7499999991225792e+01 0 0 -1 +25402 1 6.5338195873617096e+01 7.6272072772225442e+01 1.4000000044367846e+01 0 0 0 +22842 1 6.5338195889111091e+01 7.6272072770492144e+01 2.1211047140923256e-08 0 0 0 +25457 1 6.5899367720432366e+01 7.7929575969511390e+01 1.5750000028728527e+01 0 0 0 +25459 1 6.7582883773133290e+01 7.7368099265640382e+01 1.4000000023239989e+01 0 0 0 +25461 1 6.9266401153433719e+01 7.6806623148479261e+01 1.5749999997487441e+01 0 0 0 +22904 1 7.3194616256625864e+01 7.7341179785346810e+01 3.0416497764917949e-08 0 0 0 +25464 1 7.3194616357419065e+01 7.7341179757193714e+01 1.3999999991604215e+01 0 0 0 +25466 1 7.1511092165521617e+01 7.7902649710762361e+01 1.5750000021056286e+01 0 0 0 +25470 1 7.4878099632995202e+01 7.6779699446440318e+01 1.5750000029892792e+01 0 0 0 +25519 1 7.7122770337898928e+01 7.7875757104802162e+01 1.5750000032928776e+01 0 0 0 +22961 1 7.8805834994679856e+01 7.7314060850732631e+01 9.0219408832581394e-08 0 0 0 +25521 1 7.8805835045507408e+01 7.7314060900192757e+01 1.4000000035803758e+01 0 0 0 +25523 1 8.0489603309053820e+01 7.6752287004690203e+01 1.5750000124128654e+01 0 0 0 +25528 1 8.2732308032405427e+01 7.7846444282136176e+01 1.5750000130810971e+01 0 0 0 +22966 1 8.4431591054992694e+01 7.7289150292354535e+01 4.9649660383010996e-08 0 0 0 +25526 1 8.4431590908731522e+01 7.7289150347501447e+01 1.4000000054155175e+01 0 0 0 +25532 1 8.6132426485381401e+01 7.6743137807877289e+01 1.5749999939123660e+01 0 0 0 +3258 1 9.0272007528377387e+01 7.7056814426790226e+01 1.7499999705697029e+01 -1 0 -1 +5818 1 9.0272007528377401e+01 7.7056814351901807e+01 1.3999999849308542e+01 -1 0 0 +25568 1 8.8549510370623153e+01 7.7841120410567854e+01 1.5749999815629513e+01 0 0 0 +25381 1 4.6258347249989335e+01 8.0790809191974176e+01 1.4000000021519003e+01 0 0 0 +25329 1 4.5697175159842303e+01 7.9133305976807918e+01 1.5750000042490592e+01 0 0 0 +25383 1 4.7941863295953283e+01 8.0229333008049778e+01 1.5750000009227344e+01 0 0 0 +25382 1 4.8503035332178143e+01 8.1886836291458906e+01 1.3999999992544604e+01 0 0 0 +25385 1 4.9625379344704463e+01 7.9667856726789267e+01 1.3999999972850830e+01 0 0 0 +25387 1 5.1308895483277993e+01 7.9106380564095900e+01 1.5749999951905172e+01 0 0 0 +25388 1 5.0186551429792004e+01 8.1325359986354869e+01 1.5749999946167632e+01 0 0 0 +22826 1 5.1870067527631115e+01 8.0763883736568673e+01 1.7499999931258724e+01 0 0 -1 +25386 1 5.1870067555398407e+01 8.0763883767024339e+01 1.3999999954550542e+01 0 0 0 +25392 1 5.3553583696737938e+01 8.0202407439331537e+01 1.5749999914368365e+01 0 0 0 +25447 1 5.7481787900375679e+01 8.0736958055136711e+01 1.4000000027914977e+01 0 0 0 +22887 1 5.7481787783840602e+01 8.0736958031907676e+01 3.9104435245462810e-08 0 0 0 +25396 1 5.6920615766283177e+01 7.9079454823884902e+01 1.5750000019218970e+01 0 0 0 +25445 1 5.5798271820275204e+01 8.1298434392772663e+01 1.5749999985169065e+01 0 0 0 +25449 1 5.9165303979761681e+01 8.0175481716187363e+01 1.5750000062969384e+01 0 0 0 +25452 1 6.3093507929859761e+01 8.0710032147422851e+01 1.4000000042829955e+01 0 0 0 +22892 1 6.3093507962859164e+01 8.0710032105285507e+01 7.9795167806651079e-08 0 0 0 +25453 1 6.2532336032915900e+01 7.9052528863250885e+01 1.5750000069202986e+01 0 0 0 +25454 1 6.1409991966350958e+01 8.1271508450364252e+01 1.5750000074913629e+01 0 0 0 +22896 1 6.6460540139954986e+01 7.9587079289341645e+01 1.7499999987568565e+01 0 0 -1 +25456 1 6.6460540128803345e+01 7.9587079246273603e+01 1.4000000036542524e+01 0 0 0 +25458 1 6.4777024068946233e+01 8.0148555725450805e+01 1.5750000047785852e+01 0 0 0 +25507 1 6.7021712442093602e+01 8.1244582487501205e+01 1.5750000000675442e+01 0 0 0 +25462 1 6.8144055282286871e+01 7.9025602458968208e+01 1.5749999995371009e+01 0 0 0 +25511 1 7.0388741729730143e+01 8.0121628521310285e+01 1.5749999991456278e+01 0 0 0 +22950 1 7.0949918573297595e+01 8.1779133874029398e+01 2.5766105693492136e-08 0 0 0 +22953 1 7.2072254349141645e+01 7.9560148460510575e+01 2.1189880072824963e-08 0 0 0 +25510 1 7.0949918688671900e+01 8.1779133793035015e+01 1.3999999992799122e+01 0 0 0 +25513 1 7.2072254418157840e+01 7.9560148384196069e+01 1.3999999995352843e+01 0 0 0 +25515 1 7.3755788410853043e+01 7.8998674566062377e+01 1.5750000005576494e+01 0 0 0 +25516 1 7.2633424630812556e+01 8.1217654789289284e+01 1.5750000001253117e+01 0 0 0 +22994 1 7.6561516766671787e+01 8.1752150202494406e+01 2.4932926834253522e-08 0 0 0 +25554 1 7.6561516866409960e+01 8.1752150202891627e+01 1.3999999988211345e+01 0 0 0 +25520 1 7.6000493335951305e+01 8.0094688095289797e+01 1.5750000016062085e+01 0 0 0 +22958 1 7.7684224963875721e+01 7.9533326709826980e+01 5.4518896064337241e-08 0 0 0 +25518 1 7.7684225047722521e+01 7.9533326750958864e+01 1.4000000015613246e+01 0 0 0 +25524 1 7.9367522079903580e+01 7.8971956309755669e+01 1.5750000084386741e+01 0 0 0 +25556 1 7.8245181253774732e+01 8.1190637085626690e+01 1.5750000035719292e+01 0 0 0 +22999 1 8.2176994150818643e+01 8.1726304726747671e+01 1.1689831680428142e-07 0 0 0 +23002 1 8.3289036891704683e+01 7.9505169940272637e+01 7.3841722070255855e-08 0 0 0 +25559 1 8.2176994141362954e+01 8.1726304810667330e+01 1.4000000079283838e+01 0 0 0 +25560 1 8.1612970848575543e+01 8.0068813264857496e+01 1.5750000090895776e+01 0 0 0 +25562 1 8.3289036797521007e+01 7.9505170058151776e+01 1.4000000081298529e+01 0 0 0 +25564 1 8.4964193973952518e+01 7.8936355806017119e+01 1.5750000037878937e+01 0 0 0 +25565 1 8.3862484989664864e+01 8.1168466553321792e+01 1.5750000080908437e+01 0 0 0 +23007 1 8.9045576158407883e+01 7.9440533254764105e+01 1.7499999727401416e+01 0 0 -1 +23029 1 8.7753273971689183e+01 8.1718096051641226e+01 1.7499999871705857e+01 0 0 -1 +25567 1 8.9045576101499364e+01 7.9440533215407015e+01 1.3999999894609656e+01 0 0 0 +25569 1 8.7168422698631630e+01 7.9992917042475213e+01 1.5749999913865997e+01 0 0 0 +25589 1 8.7753273796879853e+01 8.1718096144419363e+01 1.3999999999656433e+01 0 0 0 +25590 1 8.9214901663201175e+01 8.1075178496586602e+01 1.5749999755198250e+01 0 0 0 +25435 1 4.7380691247006460e+01 8.4105815833589304e+01 1.4000000055817312e+01 0 0 0 +25384 1 4.6819519251328934e+01 8.2448312507034444e+01 1.5750000069382844e+01 0 0 0 +25434 1 4.5697175215028395e+01 8.4667291980413808e+01 1.5750000062418888e+01 0 0 0 +22879 1 5.0747723404285715e+01 8.2982863202882172e+01 1.7499999947994489e+01 0 0 -1 +25436 1 4.9625379351113089e+01 8.5201842652376129e+01 1.3999999999599805e+01 0 0 0 +25437 1 4.9064207312103186e+01 8.3544339499847879e+01 1.5749999992567860e+01 0 0 0 +25439 1 5.0747723365377006e+01 8.2982863221827856e+01 1.3999999962423729e+01 0 0 0 +25442 1 5.1308895513675417e+01 8.4640366460463127e+01 1.5749999933283428e+01 0 0 0 +25440 1 5.2992411615842087e+01 8.4078890102732416e+01 1.3999999967602008e+01 0 0 0 +25441 1 5.2431239524214185e+01 8.2421386958346474e+01 1.5749999926147824e+01 0 0 0 +25446 1 5.4675927616370757e+01 8.3517413850213856e+01 1.5749999978476602e+01 0 0 0 +22933 1 5.5237099738525004e+01 8.5174917098225421e+01 1.7499999992335095e+01 0 0 -1 +22884 1 5.6359443761749937e+01 8.2955937588716210e+01 3.0153781693798010e-08 0 0 0 +25444 1 5.6359443921999834e+01 8.2955937606326046e+01 1.4000000003768429e+01 0 0 0 +25493 1 5.5237099902413973e+01 8.5174917137173182e+01 1.4000000003495630e+01 0 0 0 +25495 1 5.6920615828071988e+01 8.4613440693950324e+01 1.5750000031970284e+01 0 0 0 +22938 1 6.0848819950211855e+01 8.5147991247815213e+01 1.0464963651202197e-07 0 0 0 +25450 1 5.8042959948961538e+01 8.2394461331435551e+01 1.5750000049319807e+01 0 0 0 +25498 1 6.0848819972718040e+01 8.5147991254203575e+01 1.4000000068354431e+01 0 0 0 +25499 1 6.0287648073792845e+01 8.3490488079587678e+01 1.5750000089818128e+01 0 0 0 +22941 1 6.1971164044461702e+01 8.2929011642640731e+01 9.9409259490812474e-08 0 0 0 +25501 1 6.1971164019522647e+01 8.2929011678436837e+01 1.4000000043861904e+01 0 0 0 +25503 1 6.3654680012595250e+01 8.2367535216565301e+01 1.5750000045159556e+01 0 0 0 +25504 1 6.2532336105271654e+01 8.4586514861998381e+01 1.5750000078912988e+01 0 0 0 +25508 1 6.5899367941740962e+01 8.3463561936605629e+01 1.5749999983897162e+01 0 0 0 +22986 1 6.9827571232156828e+01 8.3998110842552379e+01 1.7499999987834379e+01 0 0 -1 +25546 1 6.9827571318224713e+01 8.3998110751507781e+01 1.3999999980923677e+01 0 0 0 +25512 1 6.9266401497751829e+01 8.2340609031764217e+01 1.5749999995437857e+01 0 0 0 +25544 1 6.8144055525278347e+01 8.4559588255958857e+01 1.5749999953438016e+01 0 0 0 +25548 1 7.1511092599257793e+01 8.3436635504399817e+01 1.5749999985481455e+01 0 0 0 +25553 1 7.3755788881784270e+01 8.4532660223391829e+01 1.5749999993769112e+01 0 0 0 +22991 1 7.5439349958959966e+01 8.3971212729838072e+01 2.3943798055370280e-08 0 0 0 +25551 1 7.5439350071046292e+01 8.3971212708664709e+01 1.3999999996929260e+01 0 0 0 +25552 1 7.4878100182040413e+01 8.2313685141505729e+01 1.5750000017782137e+01 0 0 0 +25557 1 7.7122770979378302e+01 8.3409742642019836e+01 1.5750000037301865e+01 0 0 0 +25579 1 7.9367522775544813e+01 8.4505941759932853e+01 1.5750000059244810e+01 0 0 0 +25561 1 8.0489603981917639e+01 8.2286272380865626e+01 1.5750000086656215e+01 0 0 0 +23021 1 8.1049144274131692e+01 8.3943699680097609e+01 1.1250878628743521e-07 0 0 0 +25581 1 8.1049144316132640e+01 8.3943699747920121e+01 1.4000000063174259e+01 0 0 0 +25583 1 8.2732308667452955e+01 8.3380429672685338e+01 1.5750000124124760e+01 0 0 0 +25586 1 8.6710921521604078e+01 8.3921051396787874e+01 1.4000000052690027e+01 0 0 0 +23026 1 8.6710921668422444e+01 8.3921051293660213e+01 1.7499999930822938e+01 0 0 -1 +25587 1 8.6132426912225000e+01 8.2277123317738358e+01 1.5749999992671977e+01 0 0 0 +25588 1 8.4964194498519561e+01 8.4470341289043944e+01 1.5750000109438290e+01 0 0 0 +25591 1 8.8549510791328458e+01 8.3375106157004424e+01 1.5749999857383237e+01 0 0 0 +25433 1 4.6258347297524224e+01 8.6324795170780988e+01 1.4000000044782240e+01 0 0 0 +25438 1 4.7941863307015346e+01 8.5763318944924094e+01 1.5750000016812118e+01 0 0 0 +25486 1 4.6819519370380661e+01 8.7982298472403798e+01 1.5750000066398826e+01 0 0 0 +25487 1 4.8503035386081699e+01 8.7420822192366941e+01 1.4000000023906802e+01 0 0 0 +25488 1 5.0186551438468321e+01 8.6859345834835509e+01 1.5749999965127978e+01 0 0 0 +21764 1 5.0747723429714640e+01 8.8516849002640015e+01 1.3999999971984401e+01 0 -1 0 +22930 1 5.4114755579934162e+01 8.7393896459690097e+01 1.7499999976870178e+01 0 0 -1 +25489 1 5.1870067545139918e+01 8.6297869558683630e+01 1.3999999984604971e+01 0 0 0 +25490 1 5.4114755706875890e+01 8.7393896479420306e+01 1.3999999986346856e+01 0 0 0 +25491 1 5.3553583718817777e+01 8.5736393279129445e+01 1.5749999958824327e+01 0 0 0 +25492 1 5.2431239497557520e+01 8.7955372674298758e+01 1.5749999945615459e+01 0 0 0 +25496 1 5.5798271790798687e+01 8.6832420202329359e+01 1.5750000003406218e+01 0 0 0 +22976 1 5.9726475862597404e+01 8.7366970738650593e+01 1.1318474335553219e-07 0 0 0 +25500 1 5.9165303992489861e+01 8.5709467648471502e+01 1.5750000096470911e+01 0 0 0 +25535 1 5.8042959835717987e+01 8.7928447079837994e+01 1.5750000094387238e+01 0 0 0 +25536 1 5.9726475959825123e+01 8.7366970765500724e+01 1.4000000072706667e+01 0 0 0 +25537 1 6.1409991953304505e+01 8.6805494349285269e+01 1.5750000096543440e+01 0 0 0 +25541 1 6.3654679947968994e+01 8.7901521069534184e+01 1.5750000033361832e+01 0 0 0 +25539 1 6.5338196131285343e+01 8.7340044625716331e+01 1.3999999999865596e+01 0 0 0 +25540 1 6.4777024149347355e+01 8.5682541580851279e+01 1.5749999992525726e+01 0 0 0 +25545 1 6.7021712536142175e+01 8.6778568205116073e+01 1.5749999962684962e+01 0 0 0 +22979 1 6.5338196162585234e+01 8.7340044627542582e+01 1.7499999978108907e+01 0 0 -1 diff --git a/examples/USER/misc/orient_eco/in.orient_eco b/examples/USER/misc/orient_eco/in.orient_eco new file mode 100644 index 0000000000..65f0d4ce8b --- /dev/null +++ b/examples/USER/misc/orient_eco/in.orient_eco @@ -0,0 +1,20 @@ + +units metal +atom_style atomic +read_data data.sigma5 + +pair_style eam +pair_coeff * * Ni_u3.eam +timestep 0.001 + +fix integrator all npt temp 750 750 0.1 iso 0 0 0.1 +fix eco all orient/eco 0.08 0.25 3.6 sigma5.ori + +thermo 100 +thermo_style custom step temp etotal press vol f_eco +velocity all create 750 18527782 + +#dump save all custom 100 orient_eco.dump xs ys zs f_eco[1] f_eco[2] +#dump_modify save sort id + +run 1000 diff --git a/examples/USER/misc/orient_eco/log.2Jun2020.orent_eco.g++.1 b/examples/USER/misc/orient_eco/log.2Jun2020.orent_eco.g++.1 new file mode 100644 index 0000000000..9c5e011a94 --- /dev/null +++ b/examples/USER/misc/orient_eco/log.2Jun2020.orent_eco.g++.1 @@ -0,0 +1,91 @@ +LAMMPS (2 Jun 2020) + using 1 OpenMP thread(s) per MPI task + +units metal +atom_style atomic +read_data data.sigma5 + orthogonal box = (-90.27200752837744 -4.427188724235731e-07 0.0) to (90.27200752837744 88.54377448471462 17.5) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 25600 atoms + read_data CPU = 0.020 secs + +pair_style eam +pair_coeff * * Ni_u3.eam +Reading potential file Ni_u3.eam with DATE: 2007-06-11 +timestep 0.001 + +fix integrator all npt temp 750 750 0.1 iso 0 0 0.1 +fix eco all orient/eco 0.08 0.25 3.6 sigma5.ori + +thermo 100 +thermo_style custom step temp etotal press vol f_eco +velocity all create 750 18527782 + +#dump save all custom 100 orient_eco.dump xs ys zs f_eco[1] f_eco[2] +#dump_modify save sort id + +run 1000 + fix orient/eco: cutoff=3.6 norm_fac=30.012843706295556 neighbors=18 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.8 + ghost atom cutoff = 6.8 + binsize = 3.4, bins = 54 27 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) fix orient/eco, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 42.15 | 42.15 | 42.15 Mbytes +Step Temp TotEng Press Volume f_eco + 0 750 -111027.95 15148.458 279755.85 8.7507522e-10 + 100 422.2475 -110928.85 214.27204 285332.91 -1.0089186 + 200 388.79514 -110721.02 -481.9574 286443.13 -0.78446905 + 300 441.87285 -110478.56 -174.88288 286640.75 -1.1348357 + 400 486.71094 -110211.6 65.075638 287023.56 -1.495318 + 500 531.12815 -109923.33 97.309245 287552.73 -2.9498072 + 600 569.82126 -109622.61 -85.73157 288229.35 -4.2855812 + 700 615.84724 -109317.16 -52.508824 288799.86 -6.5214427 + 800 666.09015 -109018.62 38.120383 289305.37 -8.4745641 + 900 705.03939 -108738.66 263.39673 289867.87 -12.4514 + 1000 735.59866 -108500.52 242.46405 290353.65 -15.427653 +Loop time of 109.966 on 1 procs for 1000 steps with 25600 atoms + +Performance: 0.786 ns/day, 30.546 hours/ns, 9.094 timesteps/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 27.002 | 27.002 | 27.002 | 0.0 | 24.55 +Neigh | 0.83228 | 0.83228 | 0.83228 | 0.0 | 0.76 +Comm | 0.12623 | 0.12623 | 0.12623 | 0.0 | 0.11 +Output | 0.00080323 | 0.00080323 | 0.00080323 | 0.0 | 0.00 +Modify | 81.917 | 81.917 | 81.917 | 0.0 | 74.49 +Other | | 0.08839 | | | 0.08 + +Nlocal: 25600 ave 25600 max 25600 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 28259 ave 28259 max 28259 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1.59326e+06 ave 1.59326e+06 max 1.59326e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 3.18651e+06 ave 3.18651e+06 max 3.18651e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 3186510 +Ave neighs/atom = 124.473 +Neighbor list builds = 10 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:01:50 diff --git a/examples/USER/misc/orient_eco/log.2Jun2020.orent_eco.g++.4 b/examples/USER/misc/orient_eco/log.2Jun2020.orent_eco.g++.4 new file mode 100644 index 0000000000..2aa8468231 --- /dev/null +++ b/examples/USER/misc/orient_eco/log.2Jun2020.orent_eco.g++.4 @@ -0,0 +1,91 @@ +LAMMPS (2 Jun 2020) + using 1 OpenMP thread(s) per MPI task + +units metal +atom_style atomic +read_data data.sigma5 + orthogonal box = (-90.27200752837744 -4.427188724235731e-07 0.0) to (90.27200752837744 88.54377448471462 17.5) + 4 by 1 by 1 MPI processor grid + reading atoms ... + 25600 atoms + read_data CPU = 0.025 secs + +pair_style eam +pair_coeff * * Ni_u3.eam +Reading potential file Ni_u3.eam with DATE: 2007-06-11 +timestep 0.001 + +fix integrator all npt temp 750 750 0.1 iso 0 0 0.1 +fix eco all orient/eco 0.08 0.25 3.6 sigma5.ori + +thermo 100 +thermo_style custom step temp etotal press vol f_eco +velocity all create 750 18527782 + +#dump save all custom 100 orient_eco.dump xs ys zs f_eco[1] f_eco[2] +#dump_modify save sort id + +run 1000 + fix orient/eco: cutoff=3.6 norm_fac=30.012843706295556 neighbors=18 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.8 + ghost atom cutoff = 6.8 + binsize = 3.4, bins = 54 27 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) fix orient/eco, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 11.69 | 11.7 | 11.72 Mbytes +Step Temp TotEng Press Volume f_eco + 0 750 -111027.95 15148.458 279755.85 8.749339e-10 + 100 422.2475 -110928.85 214.27204 285332.91 -1.0089186 + 200 388.79514 -110721.02 -481.9574 286443.13 -0.78446905 + 300 441.87285 -110478.56 -174.88288 286640.75 -1.1348357 + 400 486.71094 -110211.6 65.075638 287023.56 -1.495318 + 500 531.12815 -109923.33 97.309245 287552.73 -2.9498072 + 600 569.82126 -109622.61 -85.73157 288229.35 -4.2855812 + 700 615.84724 -109317.16 -52.508824 288799.86 -6.5214427 + 800 666.09015 -109018.62 38.120383 289305.37 -8.4745641 + 900 705.03939 -108738.66 263.39673 289867.87 -12.4514 + 1000 735.59866 -108500.52 242.46405 290353.65 -15.427653 +Loop time of 29.6634 on 4 procs for 1000 steps with 25600 atoms + +Performance: 2.913 ns/day, 8.240 hours/ns, 33.712 timesteps/s +98.6% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 7.0794 | 7.1053 | 7.1325 | 0.7 | 23.95 +Neigh | 0.20947 | 0.21088 | 0.21231 | 0.2 | 0.71 +Comm | 0.15708 | 0.18471 | 0.22338 | 6.7 | 0.62 +Output | 0.00032616 | 0.00064683 | 0.0015936 | 0.0 | 0.00 +Modify | 22.105 | 22.118 | 22.139 | 0.3 | 74.56 +Other | | 0.0437 | | | 0.15 + +Nlocal: 6400 ave 6421 max 6384 min +Histogram: 1 1 0 0 0 1 0 0 0 1 +Nghost: 9872.5 ave 9892 max 9855 min +Histogram: 1 0 0 1 0 1 0 0 0 1 +Neighs: 398314 ave 400737 max 395743 min +Histogram: 1 0 0 1 0 0 0 1 0 1 +FullNghs: 796628 ave 801194 max 792566 min +Histogram: 1 0 1 0 0 0 1 0 0 1 + +Total # of neighbors = 3186510 +Ave neighs/atom = 124.473 +Neighbor list builds = 10 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:29 diff --git a/examples/USER/misc/orient_eco/sigma5.ori b/examples/USER/misc/orient_eco/sigma5.ori new file mode 100644 index 0000000000..6dd1220d16 --- /dev/null +++ b/examples/USER/misc/orient_eco/sigma5.ori @@ -0,0 +1,6 @@ +1.671685 0.557228 1.76212 +0.557228 -1.671685 1.76212 +2.228913 -1.114456 0.000000 +0.557228 1.671685 1.76212 +1.671685 -0.557228 1.76212 +2.228913 1.114456 0.000000 diff --git a/examples/USER/sph/cavity_flow/cavity_flow.lmp b/examples/USER/sph/cavity_flow/cavity_flow.lmp index 5c1517687f..19d3a3c14f 100644 --- a/examples/USER/sph/cavity_flow/cavity_flow.lmp +++ b/examples/USER/sph/cavity_flow/cavity_flow.lmp @@ -1,6 +1,6 @@ dimension 2 units si -atom_style meso +atom_style sph # create simulation box region box block -0.050e-3 1.044e-3 -0.05e-3 1.044e-3 -1.0e-6 1.0e-6 units box @@ -28,7 +28,7 @@ group integrate_full union fluid driver mass 3 2.0e-7 mass 2 2.0e-7 mass 1 4.0e-7 -set group all meso/rho 1000.0 +set group all sph/rho 1000.0 # use Tait's EOS in combination with Morris' laminar viscosity. # We set rho_0 = 1000 kg/m^3, c = 0.1 m/s, h = 6.5e-5 m. @@ -37,8 +37,8 @@ pair_style hybrid sph/taitwater/morris pair_coeff * * sph/taitwater/morris 1000 0.1 1.0e-3 6.5e-5 pair_coeff 2 3 none # exclude interaction between walls and shear driver -compute rho_peratom all meso/rho/atom -compute e_peratom all meso/e/atom +compute rho_peratom all sph/rho/atom +compute e_peratom all sph/e/atom compute ke_peratom all ke/atom compute esph all reduce sum c_e_peratom compute ke all ke @@ -49,8 +49,8 @@ velocity driver set 0.001 0.0 0.0 units box fix freeze_fix driver setforce 0.0 0.0 0.0 # do full time integration for shear driver and fluid, but keep walls stationary -fix integrate_fix_full integrate_full meso -fix integrate_fix_stationary walls meso/stationary +fix integrate_fix_full integrate_full sph +fix integrate_fix_stationary walls sph/stationary dump dump_id all custom 100 dump.lammpstrj id type xs ys zs vx vy c_rho_peratom c_e_peratom dump_modify dump_id first yes diff --git a/examples/USER/sph/heatconduction/sph_heat_conduction_2d.lmp b/examples/USER/sph/heatconduction/sph_heat_conduction_2d.lmp index 808646059f..4d0db9c75a 100644 --- a/examples/USER/sph/heatconduction/sph_heat_conduction_2d.lmp +++ b/examples/USER/sph/heatconduction/sph_heat_conduction_2d.lmp @@ -1,4 +1,4 @@ -# mesoscopic heat conduction +# SPH heat conduction # heat flow from hot right region to cold left region # compare the temperature profile at the end opf the simulation, # contained in file dump.last, to analytic solution. @@ -6,7 +6,7 @@ # dimension 2 units si -atom_style meso +atom_style sph boundary f p p lattice sq 0.01 @@ -17,23 +17,23 @@ mass 1 1.0e-5 region left block EDGE 49.9 EDGE EDGE EDGE EDGE region right block 50 EDGE EDGE EDGE EDGE EDGE -set region left meso/e 1.0 # internal energies -set region right meso/e 2.0 -set group all meso/rho 0.1 # mesoscopic density is also needed for this pair style +set region left sph/e 1.0 # internal energies +set region right sph/e 2.0 +set group all sph/rho 0.1 # SPH density is also needed for this pair style # For correct temperature profiles, mescoscopic density and mass * number density must coincide! pair_style sph/heatconduction # i j diffusion coeff. cutoff pair_coeff 1 1 1.0e-4 2.0e-2 -compute ie_atom all meso/e/atom +compute ie_atom all sph/e/atom compute ie all reduce sum c_ie_atom thermo 10 thermo_style custom step temp c_ie timestep 0.25e-1 neighbor 0.2e-2 bin -fix integrate_fix all meso/stationary +fix integrate_fix all sph/stationary dump dump_fix all custom 10 dump.heat id type x y z c_ie_atom dump_modify dump_fix first yes diff --git a/examples/USER/sph/heatconduction/sph_heat_conduction_3d.lmp b/examples/USER/sph/heatconduction/sph_heat_conduction_3d.lmp index fc6fa07457..ee9a5a8661 100644 --- a/examples/USER/sph/heatconduction/sph_heat_conduction_3d.lmp +++ b/examples/USER/sph/heatconduction/sph_heat_conduction_3d.lmp @@ -1,11 +1,11 @@ -# mesoscopic heat conduction +# SPH heat conduction # heat flow from hot right region to cold left region # compare the temperature profile at the end opf the simulation, # contained in file dump.last, to analytic solution. # # units si -atom_style meso +atom_style sph newton on boundary f p p @@ -17,9 +17,9 @@ mass 1 1.0e-5 region left block EDGE 49.9 EDGE EDGE EDGE EDGE region right block 50 EDGE EDGE EDGE EDGE EDGE -set region left meso/e 1.0 # internal energies -set region right meso/e 2.0 -set group all meso/rho 10.0 # mesoscopic density is also needed for this pair style +set region left sph/e 1.0 # internal energies +set region right sph/e 2.0 +set group all sph/rho 10.0 # SPH density is also needed for this pair style # For correct temperature profiles, mescoscopic density and mass * number density must coincide! pair_style sph/heatconduction @@ -28,13 +28,13 @@ pair_coeff 1 1 1.0e-4 2.0e-2 neighbor 0.2e-2 bin neigh_modify every 20 delay 0 check no -compute ie_atom all meso/e/atom +compute ie_atom all sph/e/atom compute ie all reduce sum c_ie_atom thermo_style custom step temp c_ie thermo_modify norm no -fix integrate_fix all meso/stationary +fix integrate_fix all sph/stationary thermo 10 timestep 0.25e-1 diff --git a/examples/USER/sph/shock_tube/shock2d.lmp b/examples/USER/sph/shock_tube/shock2d.lmp index bd67362ca9..32cfd8067b 100755 --- a/examples/USER/sph/shock_tube/shock2d.lmp +++ b/examples/USER/sph/shock_tube/shock2d.lmp @@ -1,4 +1,4 @@ -atom_style meso +atom_style sph dimension 2 boundary s p p @@ -13,20 +13,20 @@ set region right type 2 mass 1 1 mass 2 0.25 -set type 1 meso/e 2.5 # internal energy corresponding to p=1, rho=1 -set type 2 meso/e 0.625 # internal energy corresponding to p=0.25, rho=0.25 -set type 1 meso/rho 1.0 -set type 2 meso/rho 0.25 +set type 1 sph/e 2.5 # internal energy corresponding to p=1, rho=1 +set type 2 sph/e 0.625 # internal energy corresponding to p=0.25, rho=0.25 +set type 1 sph/rho 1.0 +set type 2 sph/rho 0.25 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 meso/rho/atom -compute ieatom all meso/e/atom -compute emeso all reduce sum c_ieatom # total internal energy +compute rhoatom all shp/rho/atom +compute ieatom all sph/e/atom +compute esph all reduce sum c_ieatom # total internal energy compute ke all ke -variable etot equal c_ke+c_emeso # total energy +variable etot equal c_ke+c_esph # total energy # dump positions and local density dump dump_id all custom 100 dump.2d id type x z y c_rhoatom @@ -35,10 +35,10 @@ dump_modify dump_id first yes neighbor 0.5 bin neigh_modify every 5 delay 0 check yes thermo 10 -thermo_style custom step c_ke c_emeso v_etot +thermo_style custom step c_ke c_esph v_etot thermo_modify norm no -fix integration_fix all meso +fix integration_fix all sph fix 1 all setforce NULL 0.0 0.0 # treat as a quasi 1d problem timestep 0.05 log log.2d diff --git a/examples/USER/sph/shock_tube/shock3d.lmp b/examples/USER/sph/shock_tube/shock3d.lmp index 2da892d836..d82f081e85 100644 --- a/examples/USER/sph/shock_tube/shock3d.lmp +++ b/examples/USER/sph/shock_tube/shock3d.lmp @@ -1,4 +1,4 @@ -atom_style meso +atom_style sph boundary s p p region box block -100 150 -4 4 -4 4 units box @@ -12,20 +12,20 @@ set region right type 2 mass 1 1 mass 2 0.25 -set type 1 meso/e 2.5 # internal energy corresponding to p=1, rho=1 -set type 2 meso/e 0.625 # internal energy corresponding to p=0.25, rho=0.25 -set type 1 meso/rho 1.0 -set type 2 meso/rho 0.25 +set type 1 sph/e 2.5 # internal energy corresponding to p=1, rho=1 +set type 2 sph/e 0.625 # internal energy corresponding to p=0.25, rho=0.25 +set type 1 sph/rho 1.0 +set type 2 sph/rho 0.25 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 meso/rho/atom -compute ieatom all meso/e/atom -compute emeso all reduce sum c_ieatom # total internal energy +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 -variable etot equal c_ke+c_emeso # total energy +variable etot equal c_ke+c_esph # total energy # dump positions and local density dump dump_id all custom 100 dump.3d id type x z y c_rhoatom @@ -34,10 +34,10 @@ dump_modify dump_id first yes neighbor 0.5 bin neigh_modify every 5 delay 0 check yes thermo 10 -thermo_style custom step c_ke c_emeso v_etot +thermo_style custom step c_ke c_esph v_etot thermo_modify norm no -fix integration_fix all meso +fix integration_fix all sph fix 1 all setforce NULL 0.0 0.0 # treat as a quasi 1d problem timestep 0.05 log log.3d diff --git a/examples/USER/sph/water_collapse/water_collapse.lmp b/examples/USER/sph/water_collapse/water_collapse.lmp index 5e1359dae5..c1f3815947 100644 --- a/examples/USER/sph/water_collapse/water_collapse.lmp +++ b/examples/USER/sph/water_collapse/water_collapse.lmp @@ -1,5 +1,5 @@ processors * 1 1 # manually assign processors to spatial regions -atom_style meso +atom_style sph dimension 2 newton on boundary f f p @@ -22,8 +22,8 @@ pair_coeff 1 1 sph/rhosum ${h} fix gfix water gravity -9.81 vector 0 1 0 # add gravity. This fix also computes potential energy of mass in gravity field. fix 2d_fix all enforce2d -compute rho_peratom all meso/rho/atom -compute e_peratom all meso/e/atom +compute rho_peratom all sph/rho/atom +compute e_peratom all sph/e/atom compute esph all reduce sum c_e_peratom compute ke all ke variable etot equal c_esph+c_ke+f_gfix @@ -32,10 +32,10 @@ variable etot equal c_esph+c_ke+f_gfix fix dtfix all dt/reset 1 NULL ${dt} 0.0005 units box # use a variable timestep # time-integrate position, velocities, internal energy and density of water particles -fix integrate_water_fix water meso +fix integrate_water_fix water sph # time-integrate only internal energy and density of boundary particles -fix integrate_bc_fix bc meso/stationary +fix integrate_bc_fix bc sph/stationary dump dump_id all custom 100 dump.lammpstrj id type xs ys zs c_rho_peratom c_e_peratom fx fy dump_modify dump_id first yes thermo 10 diff --git a/examples/granular/in.pour.drum b/examples/granular/in.pour.drum index c30f30b377..54372cd391 100644 --- a/examples/granular/in.pour.drum +++ b/examples/granular/in.pour.drum @@ -92,6 +92,8 @@ fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindl # 'Turn' drum by switching the direction of gravity unfix grav +unfix ins1 +unfix ins2 fix grav all gravity 10 vector 0 -1 0 variable theta equal 2*PI*elapsed/20000.0 diff --git a/examples/hyper/log.2Jun2020.hyper.global.g++.4 b/examples/hyper/log.2Jun2020.hyper.global.g++.4 new file mode 100644 index 0000000000..5140d119fc --- /dev/null +++ b/examples/hyper/log.2Jun2020.hyper.global.g++.4 @@ -0,0 +1,1251 @@ +LAMMPS (2 Jun 2020) + using 1 OpenMP thread(s) per MPI task +# 3d EAM surface for global HD + +# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92 +# hop event on (100) surface is same distance +# exchange event is 2 atoms moving same distance + +variable Tequil index 500.0 +variable Vmax index 0.5 +variable qfactor index 0.3 +variable cutbond index 3.2 +variable cutevent index 1.1 +variable steps index 100000 +variable nevent index 1000 +variable zoom index 1.8 +variable seed index 826626413 +variable tol index 1.0e-15 + +units metal +atom_style atomic +atom_modify map array +boundary p p p + +lattice fcc 3.92 +Lattice spacing in x,y,z = 3.92 3.92 3.92 +region box block 0 6 0 6 0 4 +create_box 3 box +Created orthogonal box = (0.0 0.0 0.0) to (23.52 23.52 15.68) + 2 by 2 by 1 MPI processor grid +create_atoms 1 box +Created 576 atoms + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +change_box all z final -0.1 5.0 boundary p p f + orthogonal box = (0.0 0.0 -0.392) to (23.52 23.52 19.6) +WARNING: Reset image flags for non-periodic boundary (src/domain.cpp:1909) +create_atoms 2 single 3.5 3.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds + +# define frozen substrate and mobile atoms + +group adatom type 2 +1 atoms in group adatom +region base block INF INF INF INF 0 1.8 +set region base type 3 + 288 settings made for typegroup base type 3 +288 atoms in group base +group mobile type 1 2 +289 atoms in group mobile + +# pair style + +pair_style eam/alloy +pair_coeff * * ptvoterlammps.eam Pt Pt Pt + +neighbor 0.5 bin +neigh_modify every 1 delay 5 check yes + +fix 1 mobile nve +fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes +fix 2 mobile langevin 500.0 ${Tequil} 1.0 ${seed} zero yes +fix 2 mobile langevin 500.0 500.0 1.0 ${seed} zero yes +fix 2 mobile langevin 500.0 500.0 1.0 826626413 zero yes + +timestep 0.005 + +compute tmobile mobile temp + +thermo 100 +thermo_modify temp tmobile +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:486) + +# thermal equilibration + +run 1000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.07583 + ghost atom cutoff = 6.07583 + binsize = 3.03792, bins = 8 8 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair eam/alloy, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.328 | 3.328 | 3.328 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0 -3213.9136 0 -3213.9136 -51843.125 + 100 223.70164 -3209.0653 0 -3200.7375 -26575.84 + 200 345.18355 -3206.1371 0 -3193.2869 -42327.268 + 300 411.05681 -3203.8465 0 -3188.5442 -32455.226 + 400 446.05938 -3202.2976 0 -3185.6922 -35377.683 + 500 435.52439 -3200.2131 0 -3183.9999 -31477.028 + 600 474.70282 -3199.4049 0 -3181.7332 -34761.287 + 700 492.00191 -3201.1592 0 -3182.8435 -33036.989 + 800 440.88631 -3198.37 0 -3181.9572 -34669.762 + 900 475.14414 -3198.5845 0 -3180.8964 -31191.883 + 1000 476.87852 -3197.3442 0 -3179.5914 -33731.074 +Loop time of 0.195228 on 4 procs for 1000 steps with 577 atoms + +Performance: 2212.801 ns/day, 0.011 hours/ns, 5122.224 timesteps/s +90.5% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.14588 | 0.14716 | 0.14992 | 0.4 | 75.38 +Neigh | 0.009866 | 0.0099873 | 0.010199 | 0.1 | 5.12 +Comm | 0.022859 | 0.024568 | 0.027702 | 1.2 | 12.58 +Output | 0.00011969 | 0.0004012 | 0.0012434 | 0.0 | 0.21 +Modify | 0.0075953 | 0.010694 | 0.013921 | 2.6 | 5.48 +Other | | 0.002417 | | | 1.24 + +Nlocal: 144.25 ave 147 max 141 min +Histogram: 1 0 0 1 0 0 0 0 1 1 +Nghost: 527.5 ave 533 max 523 min +Histogram: 1 0 0 0 2 0 0 0 0 1 +Neighs: 3477.25 ave 3585 max 3399 min +Histogram: 1 0 1 0 1 0 0 0 0 1 + +Total # of neighbors = 13909 +Ave neighs/atom = 24.1057 +Neighbor list builds = 91 +Dangerous builds = 0 +reset_timestep 0 + +# pin base so will not move during quenches + +fix freeze base setforce 0.0 0.0 0.0 + +# event detection + +compute event all event/displace ${cutevent} +compute event all event/displace 1.1 + +# hyper/global + +fix HG mobile hyper/global ${cutbond} ${qfactor} ${Vmax} ${Tequil} +fix HG mobile hyper/global 3.2 ${qfactor} ${Vmax} ${Tequil} +fix HG mobile hyper/global 3.2 0.3 ${Vmax} ${Tequil} +fix HG mobile hyper/global 3.2 0.3 0.5 ${Tequil} +fix HG mobile hyper/global 3.2 0.3 0.5 500.0 + +# thermo output + +thermo_style custom step temp pe f_HG f_HG[*] +WARNING: New thermo_style command, previous thermo_modify settings will be lost (src/output.cpp:709) + +thermo_modify lost ignore +thermo_modify temp tmobile +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:486) + +thermo ${nevent} +thermo 1000 + +# dump output options + +region substrate block INF INF INF INF 1.8 3.8 +region adatoms block INF INF INF INF 3.8 INF +variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms) + +dump 1 all image 1000000 global.*.jpg v_acolor type zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 +dump 1 all image 1000000 global.*.jpg v_acolor type zoom 1.8 adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 +dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green + +# run + +hyper ${steps} ${nevent} HG event min ${tol} ${tol} 1000 1000 dump 1 +hyper 100000 ${nevent} HG event min ${tol} ${tol} 1000 1000 dump 1 +hyper 100000 1000 HG event min ${tol} ${tol} 1000 1000 dump 1 +hyper 100000 1000 HG event min 1.0e-15 ${tol} 1000 1000 dump 1 +hyper 100000 1000 HG event min 1.0e-15 1.0e-15 1000 1000 dump 1 +WARNING: Resetting reneighboring criteria during hyper (src/REPLICA/hyper.cpp:131) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.07583 + ghost atom cutoff = 6.07583 + binsize = 3.03792, bins = 8 8 7 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair eam/alloy, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard + (2) fix hyper/global, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 6.015 | 6.015 | 6.015 Mbytes +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 0 476.87852 -3197.3442 0 0 0 0 0 0 0 0 0 0 0 0 0 + 53 476.87852 -3217.9192 0 0 0 0 0 0 0 0 0 0 0 0 0 +Loop time of 0.016781 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 0 476.87852 -3197.3442 0.33187212 2213.7063 0.17396269 129 131 5.9965398 0 0 0 3.3552688 0 0 0 + 1000 487.34979 -3198.3697 0.19401776 90.283981 0.23468448 543 548 5.9965398 0.165 0 0 3.9974111 6134.6092 0 0 +Loop time of 0.145301 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 1000 487.34979 -3198.3697 0.19401776 90.283981 0.23468448 543 548 5.9965398 0.165 0 0 3.9974111 6134.6092 0 0 + 1059 487.34979 -3217.9192 0.19401776 90.283981 0.23468448 543 548 5.9965398 0.15580737 0 0 3.9974111 6134.6092 0 0 +Loop time of 0.0201806 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 1000 487.34979 -3198.3697 0.19401776 90.283981 0.23468448 543 548 5.9965398 0.165 0 0 3.9974111 6134.6092 0 0 + 2000 522.93873 -3197.4748 0.1540961 35.745266 0.24952495 120 131 5.9965398 0.1645 0 0 4.0370436 10213.644 0 0 +Loop time of 0.147897 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 2000 522.93873 -3197.4748 0.1540961 35.745266 0.24952495 120 131 5.9965398 0.1645 0 0 4.0370436 10213.644 0 0 + 2058 522.93873 -3217.9192 0.1540961 35.745266 0.24952495 120 131 5.9965398 0.15986395 0 0 4.0370436 10213.644 0 0 +Loop time of 0.0195917 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 2000 522.93873 -3197.4748 0.1540961 35.745266 0.24952495 120 131 5.9965398 0.1645 0 0 4.0370436 10213.644 0 0 + 3000 485.3853 -3198.0446 0.081070283 6.5637429 0.27460399 120 131 5.9965398 0.145 0 0 4.0370436 13331.739 0 0 +Loop time of 0.147192 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 3000 485.3853 -3198.0446 0.081070283 6.5637429 0.27460399 120 131 5.9965398 0.145 0 0 4.0370436 13331.739 0 0 + 3061 485.3853 -3217.9192 0.081070283 6.5637429 0.27460399 120 131 5.9965398 0.14211042 0 0 4.0370436 13331.739 0 0 +Loop time of 0.0219681 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 3000 485.3853 -3198.0446 0.081070283 6.5637429 0.27460399 120 131 5.9965398 0.145 0 0 4.0370436 13331.739 0 0 + 4000 518.88739 -3198.6269 0 1 0.33014438 548 555 5.9965398 0.1715 0 0 4.0370436 14346.606 0 0 +Loop time of 0.146592 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 4000 518.88739 -3198.6269 0 1 0.33014438 548 555 5.9965398 0.1715 0 0 4.0370436 14346.606 0 0 + 4057 518.88739 -3217.9192 0 1 0.33014438 548 555 5.9965398 0.16909046 0 0 4.0370436 14346.606 0 0 +Loop time of 0.0203461 on 4 procs for 57 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 4000 518.88739 -3198.6269 0 1 0.33014438 548 555 5.9965398 0.1715 0 0 4.0370436 14346.606 0 0 + 5000 514.60377 -3197.5544 0.049185081 3.131578 0.28486257 283 288 5.9965398 0.2044 0 0 4.0370436 15492.612 0 0 +Loop time of 0.146422 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 5000 514.60377 -3197.5544 0.049185081 3.131578 0.28486257 283 288 5.9965398 0.2044 0 0 4.0370436 15492.612 0 0 + 5052 514.60377 -3217.9192 0.049185081 3.131578 0.28486257 283 288 5.9965398 0.20229612 0 0 4.0370436 15492.612 0 0 +Loop time of 0.0185522 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 5000 514.60377 -3197.5544 0.049185081 3.131578 0.28486257 283 288 5.9965398 0.2044 0 0 4.0370436 15492.612 0 0 + 6000 506.58554 -3198.6556 0.030839451 2.0457268 0.29060093 543 544 5.9965398 0.19533333 0 0 4.0370436 19375.801 0 0 +Loop time of 0.152313 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 6000 506.58554 -3198.6556 0.030839451 2.0457268 0.29060093 543 544 5.9965398 0.19533333 0 0 4.0370436 19375.801 0 0 + 6059 506.58554 -3217.9192 0.030839451 2.0457268 0.29060093 543 544 5.9965398 0.19343126 0 0 4.0370436 19375.801 0 0 +Loop time of 0.0202745 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 6000 506.58554 -3198.6556 0.030839451 2.0457268 0.29060093 543 544 5.9965398 0.19533333 0 0 4.0370436 19375.801 0 0 + 7000 501.46891 -3198.8168 0.19756174 98.024002 0.23332142 404 411 5.9965398 0.19728571 0 0 4.0370436 20874.431 0 0 +Loop time of 0.146604 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 7000 501.46891 -3198.8168 0.19756174 98.024002 0.23332142 404 411 5.9965398 0.19728571 0 0 4.0370436 20874.431 0 0 + 7061 501.46891 -3217.9192 0.19756174 98.024002 0.23332142 404 411 5.9965398 0.19558136 0 0 4.0370436 20874.431 0 0 +Loop time of 0.0208374 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 7000 501.46891 -3198.8168 0.19756174 98.024002 0.23332142 404 411 5.9965398 0.19728571 0 0 4.0370436 20874.431 0 0 + 8000 554.51151 -3197.0193 0.14419359 28.405722 0.25307144 566 567 5.9965398 0.191125 0 0 4.0370436 23877.855 0 0 +Loop time of 0.14606 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 8000 554.51151 -3197.0193 0.14419359 28.405722 0.25307144 566 567 5.9965398 0.191125 0 0 4.0370436 23877.855 0 0 + 8060 554.51151 -3217.9192 0.14419359 28.405722 0.25307144 566 567 5.9965398 0.18970223 0 0 4.0370436 23877.855 0 0 +Loop time of 0.0208338 on 4 procs for 60 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 8000 554.51151 -3197.0193 0.14419359 28.405722 0.25307144 566 567 5.9965398 0.191125 0 0 4.0370436 23877.855 0 0 + 9000 463.4842 -3196.912 0.21724312 154.77893 0.22560194 268 279 5.9965398 0.19755556 0 0 4.0370436 25828.393 0 0 +Loop time of 0.146869 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 9000 463.4842 -3196.912 0.21724312 154.77893 0.22560194 268 279 5.9965398 0.19755556 0 0 4.0370436 25828.393 0 0 + 9058 463.4842 -3217.9192 0.21724312 154.77893 0.22560194 268 279 5.9965398 0.19629057 0 0 4.0370436 25828.393 0 0 +Loop time of 0.020185 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 9000 463.4842 -3196.912 0.21724312 154.77893 0.22560194 268 279 5.9965398 0.19755556 0 0 4.0370436 25828.393 0 0 + 10000 522.84322 -3198.0918 0.14965464 32.244128 0.25112181 400 411 5.9965398 0.1939 0 0 4.0593269 33904.005 0 0 +Loop time of 0.145414 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 10000 522.84322 -3198.0918 0.14965464 32.244128 0.25112181 400 411 5.9965398 0.1939 0 0 4.0593269 33904.005 0 0 + 10054 522.84322 -3217.9192 0.14965464 32.244128 0.25112181 400 411 5.9965398 0.19285856 0 0 4.0593269 33904.005 0 0 +Loop time of 0.0188997 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 10000 522.84322 -3198.0918 0.14965464 32.244128 0.25112181 400 411 5.9965398 0.1939 0 0 4.0593269 33904.005 0 0 + 11000 496.84666 -3197.603 0.099165645 9.9895191 0.26860786 566 567 5.9965398 0.18272727 0 0 4.0593269 42381.675 0 0 +Loop time of 0.147122 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 11000 496.84666 -3197.603 0.099165645 9.9895191 0.26860786 566 567 5.9965398 0.18272727 0 0 4.0593269 42381.675 0 0 + 11052 496.84666 -3217.9192 0.099165645 9.9895191 0.26860786 566 567 5.9965398 0.18186754 0 0 4.0593269 42381.675 0 0 +Loop time of 0.01815 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 11000 496.84666 -3197.603 0.099165645 9.9895191 0.26860786 566 567 5.9965398 0.18272727 0 0 4.0593269 42381.675 0 0 + 12000 505.35386 -3197.4499 0 1 0.3380327 543 544 5.9965398 0.1845 0 0 4.0593269 45849.92 0 0 +Loop time of 0.149886 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 12000 505.35386 -3197.4499 0 1 0.3380327 543 544 5.9965398 0.1845 0 0 4.0593269 45849.92 0 0 + 12062 505.35386 -3217.9192 0 1 0.3380327 543 544 5.9965398 0.18355165 0 0 4.0593269 45849.92 0 0 +Loop time of 0.021822 on 4 procs for 62 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 12000 505.35386 -3197.4499 0 1 0.3380327 543 544 5.9965398 0.1845 0 0 4.0593269 45849.92 0 0 + 13000 480.8416 -3198.2763 0.309288 1310.6367 0.1852786 400 411 5.9965398 0.18761538 0 0 4.0593269 47530.263 0 0 +Loop time of 0.149809 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 13000 480.8416 -3198.2763 0.309288 1310.6367 0.1852786 400 411 5.9965398 0.18761538 0 0 4.0593269 47530.263 0 0 + 13059 480.8416 -3217.9192 0.309288 1310.6367 0.1852786 400 411 5.9965398 0.18676775 0 0 4.0593269 47530.263 0 0 +Loop time of 0.0209084 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 13000 480.8416 -3198.2763 0.309288 1310.6367 0.1852786 400 411 5.9965398 0.18761538 0 0 4.0593269 47530.263 0 0 + 14000 500.22368 -3198.4114 0.29111143 859.54923 0.19390705 283 276 5.9965398 0.18785714 0 0 4.0593269 53252.052 0 0 +Loop time of 0.145794 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 14000 500.22368 -3198.4114 0.29111143 859.54923 0.19390705 283 276 5.9965398 0.18785714 0 0 4.0593269 53252.052 0 0 + 14055 500.22368 -3217.9192 0.29111143 859.54923 0.19390705 283 276 5.9965398 0.18712202 0 0 4.0593269 53252.052 0 0 +Loop time of 0.0188122 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 14000 500.22368 -3198.4114 0.29111143 859.54923 0.19390705 283 276 5.9965398 0.18785714 0 0 4.0593269 53252.052 0 0 + 15000 538.71132 -3198.8617 0.3801243 6783.9082 0.14689325 44 77 5.9965398 0.18586667 0 0 4.0593269 57737.583 0 0 +Loop time of 0.147841 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 15000 538.71132 -3198.8617 0.3801243 6783.9082 0.14689325 44 77 5.9965398 0.18586667 0 0 4.0593269 57737.583 0 0 + 15057 538.71132 -3217.9192 0.3801243 6783.9082 0.14689325 44 77 5.9965398 0.18516305 0 0 4.0593269 57737.583 0 0 +Loop time of 0.0198176 on 4 procs for 57 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 15000 538.71132 -3198.8617 0.3801243 6783.9082 0.14689325 44 77 5.9965398 0.18586667 0 0 4.0593269 57737.583 0 0 + 16000 543.33859 -3199.9956 0.19111474 84.401396 0.23579514 132 139 5.9965398 0.181125 0 0 4.0593269 63865.395 0 0 +Loop time of 0.146735 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 16000 543.33859 -3199.9956 0.19111474 84.401396 0.23579514 132 139 5.9965398 0.181125 0 0 4.0593269 63865.395 0 0 + 16055 543.33859 -3217.9192 0.19111474 84.401396 0.23579514 132 139 5.9965398 0.18050452 0 0 4.0593269 63865.395 0 0 +Loop time of 0.0192626 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 16000 543.33859 -3199.9956 0.19111474 84.401396 0.23579514 132 139 5.9965398 0.181125 0 0 4.0593269 63865.395 0 0 + 17000 490.07066 -3199.3253 0 1 0.5532913 542 548 5.9965398 0.18670588 0.00011764706 0 4.3314109 65817.26 0 0 +Loop time of 0.149352 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 17000 490.07066 -3199.3253 0 1 0.5532913 542 548 5.9965398 0.18670588 0.00011764706 0 4.3314109 65817.26 0 0 + 17062 490.07066 -3217.9192 0 1 0.5532913 542 548 5.9965398 0.18602743 0.00011721955 0 4.3314109 65817.26 0 0 +Loop time of 0.0210718 on 4 procs for 62 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 17000 490.07066 -3199.3253 0 1 0.37750286 546 577 5.9965398 0.18670588 0.00011764706 2.3326658 4.3314109 65817.26 1 2 + 18000 505.37149 -3196.5764 0.05904738 3.9370481 0.28172943 577 559 5.9965398 0.1985 0.00011111111 2.3326658 4.3314109 66073.732 1 2 +Loop time of 0.1473 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 18000 505.37149 -3196.5764 0.05904738 3.9370481 0.28172943 577 559 5.9965398 0.1985 0.00011111111 2.3326658 4.3314109 66073.732 1 2 + 18054 505.37149 -3217.9192 0.05904738 3.9370481 0.28172943 577 559 5.9965398 0.19790628 0.00011077877 2.3326658 4.3314109 66073.732 1 2 +Loop time of 0.0193232 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 18000 505.37149 -3196.5764 0.05904738 3.9370481 0.28172943 577 559 5.9965398 0.1985 0.00011111111 2.3326658 4.3314109 66073.732 1 2 + 19000 503.43264 -3199.2564 0.34097427 2734.4218 0.16918815 120 131 5.9965398 0.20194737 0.00010526316 2.3326658 4.3314109 67732.221 1 2 +Loop time of 0.151556 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 19000 503.43264 -3199.2564 0.34097427 2734.4218 0.16918815 120 131 5.9965398 0.20194737 0.00010526316 2.3326658 4.3314109 67732.221 1 2 + 19051 503.43264 -3217.9192 0.34097427 2734.4218 0.16918815 120 131 5.9965398 0.20140675 0.00010498137 2.3326658 4.3314109 67732.221 1 2 +Loop time of 0.0205157 on 4 procs for 51 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 19000 503.43264 -3199.2564 0.34097427 2734.4218 0.16918815 120 131 5.9965398 0.20194737 0.00010526316 2.3326658 4.3314109 67732.221 1 2 + 20000 559.61766 -3198.5969 0.16649032 47.659186 0.24501376 547 577 5.9965398 0.199 0.0001 2.3326658 4.3314109 69744.058 1 2 +Loop time of 0.156098 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 20000 559.61766 -3198.5969 0.16649032 47.659186 0.24501376 547 577 5.9965398 0.199 0.0001 2.3326658 4.3314109 69744.058 1 2 + 20053 559.61766 -3217.9192 0.16649032 47.659186 0.24501376 547 577 5.9965398 0.19847404 9.97357e-05 2.3326658 4.3314109 69744.058 1 2 +Loop time of 0.0182987 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 20000 559.61766 -3198.5969 0.16649032 47.659186 0.24501376 547 577 5.9965398 0.199 0.0001 2.3326658 4.3314109 69744.058 1 2 + 21000 503.72669 -3199.3736 0.012368068 1.3324917 0.29626635 422 428 5.9965398 0.20119048 9.5238095e-05 2.3326658 4.3314109 71770.464 1 2 +Loop time of 0.154307 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 21000 503.72669 -3199.3736 0.012368068 1.3324917 0.29626635 422 428 5.9965398 0.20119048 9.5238095e-05 2.3326658 4.3314109 71770.464 1 2 + 21058 503.72669 -3217.9192 0.012368068 1.3324917 0.29626635 422 428 5.9965398 0.20063634 9.4975781e-05 2.3326658 4.3314109 71770.464 1 2 +Loop time of 0.0207435 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 21000 503.72669 -3199.3736 0.012368068 1.3324917 0.29626635 422 428 5.9965398 0.20119048 9.5238095e-05 2.3326658 4.3314109 71770.464 1 2 + 22000 486.98754 -3197.1447 0.23977869 261.13202 0.21642513 279 272 5.9965398 0.19681818 9.0909091e-05 2.3326658 4.3314109 75656.753 1 2 +Loop time of 0.157122 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 22000 486.98754 -3197.1447 0.23977869 261.13202 0.21642513 279 272 5.9965398 0.19681818 9.0909091e-05 2.3326658 4.3314109 75656.753 1 2 + 22058 486.98754 -3217.9192 0.23977869 261.13202 0.21642513 279 272 5.9965398 0.19630066 9.0670052e-05 2.3326658 4.3314109 75656.753 1 2 +Loop time of 0.0203064 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 22000 486.98754 -3197.1447 0.23977869 261.13202 0.21642513 279 272 5.9965398 0.19681818 9.0909091e-05 2.3326658 4.3314109 75656.753 1 2 + 23000 511.33335 -3198.5706 0 1 0.30898744 559 552 5.9965398 0.19234783 8.6956522e-05 2.3326658 4.3314109 82685.638 1 2 +Loop time of 0.174749 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 23000 511.33335 -3198.5706 0 1 0.30898744 559 552 5.9965398 0.19234783 8.6956522e-05 2.3326658 4.3314109 82685.638 1 2 + 23061 511.33335 -3217.9192 0 1 0.30898744 559 552 5.9965398 0.19183904 8.6726508e-05 2.3326658 4.3314109 82685.638 1 2 +Loop time of 0.0211805 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 23000 511.33335 -3198.5706 0 1 0.30898744 559 552 5.9965398 0.19234783 8.6956522e-05 2.3326658 4.3314109 82685.638 1 2 + 24000 439.83658 -3199.3369 0.11373595 14.008983 0.26368073 559 552 5.9965398 0.19383333 8.3333333e-05 2.3326658 4.3314109 86916.692 1 2 +Loop time of 0.153472 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 24000 439.83658 -3199.3369 0.11373595 14.008983 0.26368073 559 552 5.9965398 0.19383333 8.3333333e-05 2.3326658 4.3314109 86916.692 1 2 + 24058 439.83658 -3217.9192 0.11373595 14.008983 0.26368073 559 552 5.9965398 0.19336603 8.313243e-05 2.3326658 4.3314109 86916.692 1 2 +Loop time of 0.020292 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 24000 439.83658 -3199.3369 0.11373595 14.008983 0.26368073 559 552 5.9965398 0.19383333 8.3333333e-05 2.3326658 4.3314109 86916.692 1 2 + 25000 482.02958 -3198.1109 0.063469298 4.3625623 0.28031326 542 555 5.9965398 0.20524 8e-05 2.3326658 4.3314109 87784.27 1 2 +Loop time of 0.148144 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 25000 482.02958 -3198.1109 0.063469298 4.3625623 0.28031326 542 555 5.9965398 0.20524 8e-05 2.3326658 4.3314109 87784.27 1 2 + 25059 482.02958 -3217.9192 0.063469298 4.3625623 0.28031326 542 555 5.9965398 0.20475677 7.9811645e-05 2.3326658 4.3314109 87784.27 1 2 +Loop time of 0.0205369 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 25000 482.02958 -3198.1109 0.063469298 4.3625623 0.28031326 542 555 5.9965398 0.20524 8e-05 2.3326658 4.3314109 87784.27 1 2 + 26000 486.52764 -3198.3906 0.116385 14.89731 0.262775 397 400 5.9965398 0.20761538 7.6923077e-05 2.3326658 4.3314109 91753.377 1 2 +Loop time of 0.14674 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 26000 486.52764 -3198.3906 0.116385 14.89731 0.262775 397 400 5.9965398 0.20761538 7.6923077e-05 2.3326658 4.3314109 91753.377 1 2 + 26053 486.52764 -3217.9192 0.116385 14.89731 0.262775 397 400 5.9965398 0.20719303 7.6766591e-05 2.3326658 4.3314109 91753.377 1 2 +Loop time of 0.0185652 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 26000 486.52764 -3198.3906 0.116385 14.89731 0.262775 397 400 5.9965398 0.20761538 7.6923077e-05 2.3326658 4.3314109 91753.377 1 2 + 27000 491.56858 -3198.0209 0.10940684 12.669841 0.26515424 547 577 5.9965398 0.20855556 7.4074074e-05 2.3326658 4.3314109 94297.122 1 2 +Loop time of 0.14728 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 27000 491.56858 -3198.0209 0.10940684 12.669841 0.26515424 547 577 5.9965398 0.20855556 7.4074074e-05 2.3326658 4.3314109 94297.122 1 2 + 27056 491.56858 -3217.9192 0.10940684 12.669841 0.26515424 547 577 5.9965398 0.20812389 7.3920757e-05 2.3326658 4.3314109 94297.122 1 2 +Loop time of 0.0191085 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 27000 491.56858 -3198.0209 0.10940684 12.669841 0.26515424 547 577 5.9965398 0.20855556 7.4074074e-05 2.3326658 4.3314109 94297.122 1 2 + 28000 519.4954 -3196.0664 0.025007775 1.7867632 0.29240144 577 559 5.9965398 0.21421429 7.1428571e-05 2.3326658 4.3314109 94378.053 1 2 +Loop time of 0.146811 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 28000 519.4954 -3196.0664 0.025007775 1.7867632 0.29240144 577 559 5.9965398 0.21421429 7.1428571e-05 2.3326658 4.3314109 94378.053 1 2 + 28060 519.4954 -3217.9192 0.025007775 1.7867632 0.29240144 577 559 5.9965398 0.21375624 7.1275837e-05 2.3326658 4.3314109 94378.053 1 2 +Loop time of 0.0211228 on 4 procs for 60 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 28000 519.4954 -3196.0664 0.025007775 1.7867632 0.29240144 577 559 5.9965398 0.21421429 7.1428571e-05 2.3326658 4.3314109 94378.053 1 2 + 29000 454.14475 -3200.2181 0.36135143 4387.9126 0.15797703 265 562 5.9965398 0.22003448 6.8965517e-05 2.3326658 4.3314109 95605.534 1 2 +Loop time of 0.149433 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 29000 454.14475 -3200.2181 0.36135143 4387.9126 0.15797703 265 562 5.9965398 0.22003448 6.8965517e-05 2.3326658 4.3314109 95605.534 1 2 + 29053 454.14475 -3217.9192 0.36135143 4387.9126 0.15797703 265 562 5.9965398 0.21963308 6.8839707e-05 2.3326658 4.3314109 95605.534 1 2 +Loop time of 0.0191249 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 29000 454.14475 -3200.2181 0.36135143 4387.9126 0.15797703 265 562 5.9965398 0.22003448 6.8965517e-05 2.3326658 4.3314109 95605.534 1 2 + 30000 463.0948 -3197.3905 0.065836434 4.6089425 0.27955222 281 279 5.9965398 0.21493333 6.6666667e-05 2.3326658 4.3314109 104759.4 1 2 +Loop time of 0.145204 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 30000 463.0948 -3197.3905 0.065836434 4.6089425 0.27955222 281 279 5.9965398 0.21493333 6.6666667e-05 2.3326658 4.3314109 104759.4 1 2 + 30057 463.0948 -3217.9192 0.065836434 4.6089425 0.27955222 281 279 5.9965398 0.21452573 6.654024e-05 2.3326658 4.3314109 104759.4 1 2 +Loop time of 0.0197849 on 4 procs for 57 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 30000 463.0948 -3197.3905 0.065836434 4.6089425 0.27955222 281 279 5.9965398 0.21493333 6.6666667e-05 2.3326658 4.3314109 104759.4 1 2 + 31000 470.20997 -3198.7725 0.30650691 1228.7122 0.18662464 116 123 5.9965398 0.21122581 0.00022580645 2.3326658 4.3314109 107768.77 1 2 +Loop time of 0.149046 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 31000 470.20997 -3198.7725 0.30650691 1228.7122 0.18662464 116 123 5.9965398 0.21122581 0.00022580645 2.3326658 4.3314109 107768.77 1 2 + 31053 470.20997 -3217.9192 0.30650691 1228.7122 0.18662464 116 123 5.9965398 0.21086529 0.00022542105 2.3326658 4.3314109 107768.77 1 2 +Loop time of 0.0194628 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 31000 470.20997 -3198.7725 0.30650691 1228.7122 0.18662464 116 123 5.9965398 0.21122581 0.00022580645 2.3326658 4.3314109 107768.77 1 2 + 32000 467.3025 -3198.6724 0.20477341 115.88383 0.23052285 560 571 5.9965398 0.20815625 0.00021875 2.3326658 4.3314109 112711.61 1 2 +Loop time of 0.146647 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 32000 467.3025 -3198.6724 0.20477341 115.88383 0.23052285 560 571 5.9965398 0.20815625 0.00021875 2.3326658 4.3314109 112711.61 1 2 + 32053 467.3025 -3217.9192 0.20477341 115.88383 0.23052285 560 571 5.9965398 0.20781206 0.00021838829 2.3326658 4.3314109 112711.61 1 2 +Loop time of 0.0189477 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 32000 467.3025 -3198.6724 0.20477341 115.88383 0.23052285 560 571 5.9965398 0.20815625 0.00021875 2.3326658 4.3314109 112711.61 1 2 + 33000 492.40434 -3197.9325 0.30066167 1072.8346 0.18942254 283 288 5.9965398 0.20536364 0.00021212121 2.3326658 4.3314109 118244.09 1 2 +Loop time of 0.14777 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 33000 492.40434 -3197.9325 0.30066167 1072.8346 0.18942254 283 288 5.9965398 0.20536364 0.00021212121 2.3326658 4.3314109 118244.09 1 2 + 33052 492.40434 -3217.9192 0.30066167 1072.8346 0.18942254 283 288 5.9965398 0.20504054 0.00021178749 2.3326658 4.3314109 118244.09 1 2 +Loop time of 0.0184236 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 33000 492.40434 -3197.9325 0.30066167 1072.8346 0.18942254 283 288 5.9965398 0.20536364 0.00021212121 2.3326658 4.3314109 118244.09 1 2 + 34000 486.83952 -3198.5172 0.20144987 107.28106 0.23181679 264 275 5.9965398 0.20773529 0.00020588235 2.3326658 4.3314109 121750.06 1 2 +Loop time of 0.147566 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 34000 486.83952 -3198.5172 0.20144987 107.28106 0.23181679 264 275 5.9965398 0.20773529 0.00020588235 2.3326658 4.3314109 121750.06 1 2 + 34053 486.83952 -3217.9192 0.20144987 107.28106 0.23181679 264 275 5.9965398 0.20741198 0.00020556192 2.3326658 4.3314109 121750.06 1 2 +Loop time of 0.0189959 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 34000 486.83952 -3198.5172 0.20144987 107.28106 0.23181679 264 275 5.9965398 0.20773529 0.00020588235 2.3326658 4.3314109 121750.06 1 2 + 35000 541.61221 -3198.9881 0.33208019 2224.4219 0.17385502 85 383 5.9965398 0.20451429 0.0002 2.3326658 4.3314109 125636.89 1 2 +Loop time of 0.150541 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 35000 541.61221 -3198.9881 0.33208019 2224.4219 0.17385502 85 383 5.9965398 0.20451429 0.0002 2.3326658 4.3314109 125636.89 1 2 + 35053 541.61221 -3217.9192 0.33208019 2224.4219 0.17385502 85 383 5.9965398 0.20420506 0.0001996976 2.3326658 4.3314109 125636.89 1 2 +Loop time of 0.018761 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 35000 541.61221 -3198.9881 0.33208019 2224.4219 0.17385502 85 383 5.9965398 0.20451429 0.0002 2.3326658 4.3314109 125636.89 1 2 + 36000 495.57311 -3198.5397 0 1 0.35521767 279 284 5.9965398 0.20219444 0.00019444444 2.3326658 4.3314109 129998.42 1 2 +Loop time of 0.152818 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 36000 495.57311 -3198.5397 0 1 0.35521767 279 284 5.9965398 0.20219444 0.00019444444 2.3326658 4.3314109 129998.42 1 2 + 36054 495.57311 -3217.9192 0 1 0.35521767 279 284 5.9965398 0.20189161 0.00019415321 2.3326658 4.3314109 129998.42 1 2 +Loop time of 0.0188267 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 36000 495.57311 -3198.5397 0 1 0.35521767 279 284 5.9965398 0.20219444 0.00019444444 2.3326658 4.3314109 129998.42 1 2 + 37000 526.07108 -3199.8791 0 1 0.31298637 415 420 5.9965398 0.19894595 0.00018918919 2.3326658 4.3314109 138599.17 1 2 +Loop time of 0.146616 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 37000 526.07108 -3199.8791 0 1 0.31298637 415 420 5.9965398 0.19894595 0.00018918919 2.3326658 4.3314109 138599.17 1 2 + 37059 526.07108 -3217.9192 0 1 0.31298637 415 420 5.9965398 0.19862921 0.00018888799 2.3326658 4.3314109 138599.17 1 2 +Loop time of 0.020471 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 37000 526.07108 -3199.8791 0 1 0.31298637 415 420 5.9965398 0.19894595 0.00018918919 2.3326658 4.3314109 138599.17 1 2 + 38000 546.57696 -3198.709 0.29924515 1038.1377 0.19009438 570 576 5.9965398 0.196 0.00018421053 2.3326658 4.3314109 145249.68 1 2 +Loop time of 0.147942 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 38000 546.57696 -3198.709 0.29924515 1038.1377 0.19009438 570 576 5.9965398 0.196 0.00018421053 2.3326658 4.3314109 145249.68 1 2 + 38054 546.57696 -3217.9192 0.29924515 1038.1377 0.19009438 570 576 5.9965398 0.19572187 0.00018394912 2.3326658 4.3314109 145249.68 1 2 +Loop time of 0.0191819 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 38000 546.57696 -3198.709 0.29924515 1038.1377 0.19009438 570 576 5.9965398 0.196 0.00018421053 2.3326658 4.3314109 145249.68 1 2 + 39000 499.91506 -3199.9649 0.19715714 97.107823 0.23347744 424 423 5.9965398 0.19302564 0.00017948718 2.3326658 4.3314109 147736.34 1 2 +Loop time of 0.147371 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 39000 499.91506 -3199.9649 0.19715714 97.107823 0.23347744 424 423 5.9965398 0.19302564 0.00017948718 2.3326658 4.3314109 147736.34 1 2 + 39052 499.91506 -3217.9192 0.19715714 97.107823 0.23347744 424 423 5.9965398 0.19276862 0.00017924818 2.3326658 4.3314109 147736.34 1 2 +Loop time of 0.0177755 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 39000 499.91506 -3199.9649 0.19715714 97.107823 0.23347744 424 423 5.9965398 0.19302564 0.00017948718 2.3326658 4.3314109 147736.34 1 2 + 40000 474.08403 -3199.5942 0.16043015 41.405965 0.2472298 125 116 5.9965398 0.1896 0.000175 2.3326658 4.3314109 154329.28 1 2 +Loop time of 0.145757 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 40000 474.08403 -3199.5942 0.16043015 41.405965 0.2472298 125 116 5.9965398 0.1896 0.000175 2.3326658 4.3314109 154329.28 1 2 + 40054 474.08403 -3217.9192 0.16043015 41.405965 0.2472298 125 116 5.9965398 0.18934439 0.00017476407 2.3326658 4.3314109 154329.28 1 2 +Loop time of 0.0190914 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 40000 474.08403 -3199.5942 0.16043015 41.405965 0.2472298 125 116 5.9965398 0.1896 0.000175 2.3326658 4.3314109 154329.28 1 2 + 41000 478.39587 -3197.4644 0.19799057 99.004491 0.23315595 123 128 5.9965398 0.18921951 0.00017073171 2.3326658 4.3314109 160000.98 1 2 +Loop time of 0.148949 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 41000 478.39587 -3197.4644 0.19799057 99.004491 0.23315595 123 128 5.9965398 0.18921951 0.00017073171 2.3326658 4.3314109 160000.98 1 2 + 41061 478.39587 -3217.9192 0.19799057 99.004491 0.23315595 123 128 5.9965398 0.18893841 0.00017047807 2.3326658 4.3314109 160000.98 1 2 +Loop time of 0.0214614 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 41000 478.39587 -3197.4644 0.19799057 99.004491 0.23315595 123 128 5.9965398 0.18921951 0.00017073171 2.3326658 4.3314109 160000.98 1 2 + 42000 514.00749 -3200.9466 0.23889092 255.80664 0.21679399 577 559 5.9965398 0.18911905 0.00016666667 2.3326658 4.3314109 161054.99 1 2 +Loop time of 0.147446 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 42000 514.00749 -3200.9466 0.23889092 255.80664 0.21679399 577 559 5.9965398 0.18911905 0.00016666667 2.3326658 4.3314109 161054.99 1 2 + 42059 514.00749 -3217.9192 0.23889092 255.80664 0.21679399 577 559 5.9965398 0.18885375 0.00016643287 2.3326658 4.3314109 161054.99 1 2 +Loop time of 0.020681 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 42000 514.00749 -3200.9466 0.23889092 255.80664 0.21679399 577 559 5.9965398 0.18911905 0.00016666667 2.3326658 4.3314109 161054.99 1 2 + 43000 539.25745 -3197.7124 0.2272214 195.11394 0.22158553 559 552 5.9965398 0.1902093 0.0001627907 2.3326658 4.3314109 165820.17 1 2 +Loop time of 0.145577 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 43000 539.25745 -3197.7124 0.2272214 195.11394 0.22158553 559 552 5.9965398 0.1902093 0.0001627907 2.3326658 4.3314109 165820.17 1 2 + 43057 539.25745 -3217.9192 0.2272214 195.11394 0.22158553 559 552 5.9965398 0.1899575 0.00016257519 2.3326658 4.3314109 165820.17 1 2 +Loop time of 0.0196458 on 4 procs for 57 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 43000 539.25745 -3197.7124 0.2272214 195.11394 0.22158553 559 552 5.9965398 0.1902093 0.0001627907 2.3326658 4.3314109 165820.17 1 2 + 44000 490.05902 -3198.6993 0 1 0.92846783 546 552 5.9965398 0.20618182 0.00015909091 2.3326658 5.5445865 165830.19 1 2 +Loop time of 0.149024 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 44000 490.05902 -3198.6993 0 1 0.92846783 546 552 5.9965398 0.20618182 0.00015909091 2.3326658 5.5445865 165830.19 1 2 + 44059 490.05902 -3217.9192 0 1 0.92846783 546 552 5.9965398 0.20590572 0.00015887787 2.3326658 5.5445865 165830.19 1 2 +Loop time of 0.0206496 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 44000 490.05902 -3198.6993 0.35638881 3910.5432 0.16077939 230 236 5.9965398 0.20618182 0.00015909091 2.332667 5.5445865 165830.19 2 4 + 45000 483.33637 -3198.8192 0.028253093 1.9265413 0.29140083 111 116 5.9965398 0.20375556 0.00015555556 2.332667 5.5445865 171051.31 2 4 +Loop time of 0.147292 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 45000 483.33637 -3198.8192 0.028253093 1.9265413 0.29140083 111 116 5.9965398 0.20375556 0.00015555556 2.332667 5.5445865 171051.31 2 4 + 45054 483.33637 -3217.9192 0.028253093 1.9265413 0.29140083 111 116 5.9965398 0.20351134 0.00015536911 2.332667 5.5445865 171051.31 2 4 +Loop time of 0.0189967 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 45000 483.33637 -3198.8192 0.028253093 1.9265413 0.29140083 111 116 5.9965398 0.20375556 0.00015555556 2.332667 5.5445865 171051.31 2 4 + 46000 477.60275 -3197.5319 0.2869403 780.23907 0.19583346 257 140 5.9965398 0.20502174 0.00015217391 2.332667 5.5445865 173658.75 2 4 +Loop time of 0.146994 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 46000 477.60275 -3197.5319 0.2869403 780.23907 0.19583346 257 140 5.9965398 0.20502174 0.00015217391 2.332667 5.5445865 173658.75 2 4 + 46054 477.60275 -3217.9192 0.2869403 780.23907 0.19583346 257 140 5.9965398 0.20478134 0.00015199548 2.332667 5.5445865 173658.75 2 4 +Loop time of 0.0192491 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 46000 477.60275 -3197.5319 0.2869403 780.23907 0.19583346 257 140 5.9965398 0.20502174 0.00015217391 2.332667 5.5445865 173658.75 2 4 + 47000 521.34153 -3198.5751 0 1 0.35188792 115 116 5.9965398 0.20693617 0.00014893617 2.332667 5.5445865 174765.77 2 4 +Loop time of 0.150082 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 47000 521.34153 -3198.5751 0 1 0.35188792 115 116 5.9965398 0.20693617 0.00014893617 2.332667 5.5445865 174765.77 2 4 + 47053 521.34153 -3217.9192 0 1 0.35188792 115 116 5.9965398 0.20670308 0.00014876841 2.332667 5.5445865 174765.77 2 4 +Loop time of 0.0192085 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 47000 521.34153 -3198.5751 0 1 0.35188792 115 116 5.9965398 0.20693617 0.00014893617 2.332667 5.5445865 174765.77 2 4 + 48000 541.31479 -3198.7131 0 1 0.33712983 563 256 5.9965398 0.20533333 0.00014583333 2.332667 5.5445865 182326.46 2 4 +Loop time of 0.147438 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 48000 541.31479 -3198.7131 0 1 0.33712983 563 256 5.9965398 0.20533333 0.00014583333 2.332667 5.5445865 182326.46 2 4 + 48060 541.31479 -3217.9192 0 1 0.33712983 563 256 5.9965398 0.20507699 0.00014565127 2.332667 5.5445865 182326.46 2 4 +Loop time of 0.0201835 on 4 procs for 60 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 48000 541.31479 -3198.7131 0 1 0.33712983 563 256 5.9965398 0.20533333 0.00014583333 2.332667 5.5445865 182326.46 2 4 + 49000 452.11261 -3198.407 0 1 0.31483556 548 563 5.9965398 0.20673469 0.00014285714 2.332667 5.5445865 185690.59 2 4 +Loop time of 0.151182 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 49000 452.11261 -3198.407 0 1 0.31483556 548 563 5.9965398 0.20673469 0.00014285714 2.332667 5.5445865 185690.59 2 4 + 49054 452.11261 -3217.9192 0 1 0.31483556 548 563 5.9965398 0.20650711 0.00014269988 2.332667 5.5445865 185690.59 2 4 +Loop time of 0.0202584 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 49000 452.11261 -3198.407 0 1 0.31483556 548 563 5.9965398 0.20673469 0.00014285714 2.332667 5.5445865 185690.59 2 4 + 50000 467.29807 -3198.3148 0.06855095 4.9086536 0.27867693 548 563 5.9965398 0.20636 0.0003 2.332667 5.5445865 193139.54 2 4 +Loop time of 0.146241 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 50000 467.29807 -3198.3148 0.06855095 4.9086536 0.27867693 548 563 5.9965398 0.20636 0.0003 2.332667 5.5445865 193139.54 2 4 + 50063 467.29807 -3217.9192 0.06855095 4.9086536 0.27867693 548 563 5.9965398 0.20610031 0.00029962248 2.332667 5.5445865 193139.54 2 4 +Loop time of 0.0221142 on 4 procs for 63 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 50000 467.29807 -3198.3148 0.06855095 4.9086536 0.27867693 548 563 5.9965398 0.20636 0.0003 2.332667 5.5445865 193139.54 2 4 + 51000 501.62342 -3201.5498 0.40026778 10827.223 0.13398433 406 112 5.9965398 0.20668627 0.00029411765 2.332667 5.5445865 196921.52 2 4 +Loop time of 0.14753 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 51000 501.62342 -3201.5498 0.40026778 10827.223 0.13398433 406 112 5.9965398 0.20668627 0.00029411765 2.332667 5.5445865 196921.52 2 4 + 51051 501.62342 -3217.9192 0.40026778 10827.223 0.13398433 406 112 5.9965398 0.20647979 0.00029382382 2.332667 5.5445865 196921.52 2 4 +Loop time of 0.0181563 on 4 procs for 51 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 51000 501.62342 -3201.5498 0.40026778 10827.223 0.13398433 406 112 5.9965398 0.20668627 0.00029411765 2.332667 5.5445865 196921.52 2 4 + 52000 530.03691 -3199.0384 0.33213868 2227.444 0.17382473 128 127 5.9965398 0.20465385 0.00028846154 2.332667 5.5445865 201405.55 2 4 +Loop time of 0.146685 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 52000 530.03691 -3199.0384 0.33213868 2227.444 0.17382473 128 127 5.9965398 0.20465385 0.00028846154 2.332667 5.5445865 201405.55 2 4 + 52052 530.03691 -3217.9192 0.33213868 2227.444 0.17382473 128 127 5.9965398 0.2044494 0.00028817337 2.332667 5.5445865 201405.55 2 4 +Loop time of 0.0245662 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 52000 530.03691 -3199.0384 0.33213868 2227.444 0.17382473 128 127 5.9965398 0.20465385 0.00028846154 2.332667 5.5445865 201405.55 2 4 + 53000 476.23675 -3197.8718 0.16551582 46.593376 0.24537146 285 276 5.9965398 0.20318868 0.00028301887 2.332667 5.5445865 206506.23 2 4 +Loop time of 0.168646 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 53000 476.23675 -3197.8718 0.16551582 46.593376 0.24537146 285 276 5.9965398 0.20318868 0.00028301887 2.332667 5.5445865 206506.23 2 4 + 53053 476.23675 -3217.9192 0.16551582 46.593376 0.24537146 285 276 5.9965398 0.20298569 0.00028273613 2.332667 5.5445865 206506.23 2 4 +Loop time of 0.0190916 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 53000 476.23675 -3197.8718 0.16551582 46.593376 0.24537146 285 276 5.9965398 0.20318868 0.00028301887 2.332667 5.5445865 206506.23 2 4 + 54000 494.85478 -3197.5779 0.022382673 1.6811527 0.29320832 268 279 5.9965398 0.20059259 0.00027777778 2.332667 5.5445865 213644.3 2 4 +Loop time of 0.147166 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 54000 494.85478 -3197.5779 0.022382673 1.6811527 0.29320832 268 279 5.9965398 0.20059259 0.00027777778 2.332667 5.5445865 213644.3 2 4 + 54053 494.85478 -3217.9192 0.022382673 1.6811527 0.29320832 268 279 5.9965398 0.20039591 0.00027750541 2.332667 5.5445865 213644.3 2 4 +Loop time of 0.0190244 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 54000 494.85478 -3197.5779 0.022382673 1.6811527 0.29320832 268 279 5.9965398 0.20059259 0.00027777778 2.332667 5.5445865 213644.3 2 4 + 55000 502.92342 -3199.4636 0.3276566 2007.3793 0.1761301 400 411 5.9965398 0.19972727 0.00027272727 2.332667 5.5445865 215172.4 2 4 +Loop time of 0.145777 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 55000 502.92342 -3199.4636 0.3276566 2007.3793 0.1761301 400 411 5.9965398 0.19972727 0.00027272727 2.332667 5.5445865 215172.4 2 4 + 55061 502.92342 -3217.9192 0.3276566 2007.3793 0.1761301 400 411 5.9965398 0.199506 0.00027242513 2.332667 5.5445865 215172.4 2 4 +Loop time of 0.021274 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 55000 502.92342 -3199.4636 0.3276566 2007.3793 0.1761301 400 411 5.9965398 0.19972727 0.00027272727 2.332667 5.5445865 215172.4 2 4 + 56000 521.1487 -3198.5105 0 1 0.31151142 428 547 5.9965398 0.19716071 0.00026785714 2.332667 5.5445865 220366.14 2 4 +Loop time of 0.149004 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 56000 521.1487 -3198.5105 0 1 0.31151142 428 547 5.9965398 0.19716071 0.00026785714 2.332667 5.5445865 220366.14 2 4 + 56055 521.1487 -3217.9192 0 1 0.31151142 428 547 5.9965398 0.19696726 0.00026759433 2.332667 5.5445865 220366.14 2 4 +Loop time of 0.019273 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 56000 521.1487 -3198.5105 0 1 0.31151142 428 547 5.9965398 0.19716071 0.00026785714 2.332667 5.5445865 220366.14 2 4 + 57000 481.95031 -3199.5907 0.41736767 16101.867 0.12195827 412 411 5.9965398 0.19584211 0.00026315789 2.332667 5.5445865 229464.45 2 4 +Loop time of 0.146342 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 57000 481.95031 -3199.5907 0.41736767 16101.867 0.12195827 412 411 5.9965398 0.19584211 0.00026315789 2.332667 5.5445865 229464.45 2 4 + 57056 481.95031 -3217.9192 0.41736767 16101.867 0.12195827 412 411 5.9965398 0.19564989 0.00026289961 2.332667 5.5445865 229464.45 2 4 +Loop time of 0.0195522 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 57000 481.95031 -3199.5907 0.41736767 16101.867 0.12195827 412 411 5.9965398 0.19584211 0.00026315789 2.332667 5.5445865 229464.45 2 4 + 58000 525.04435 -3200.0547 0.0014425542 1.034047 0.29956692 551 256 5.9965398 0.19605172 0.00025862069 2.332667 5.5445865 234898.73 2 4 +Loop time of 0.149326 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 58000 525.04435 -3200.0547 0.0014425542 1.034047 0.29956692 551 256 5.9965398 0.19605172 0.00025862069 2.332667 5.5445865 234898.73 2 4 + 58058 525.04435 -3217.9192 0.0014425542 1.034047 0.29956692 551 256 5.9965398 0.19585587 0.00025836233 2.332667 5.5445865 234898.73 2 4 +Loop time of 0.0206398 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 58000 525.04435 -3200.0547 0.0014425542 1.034047 0.29956692 551 256 5.9965398 0.19605172 0.00025862069 2.332667 5.5445865 234898.73 2 4 + 59000 481.80944 -3197.6876 0.037642135 2.3956071 0.28848642 132 143 5.9965398 0.19559322 0.00025423729 2.332667 5.5445865 238986.94 2 4 +Loop time of 0.14619 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 59000 481.80944 -3197.6876 0.037642135 2.3956071 0.28848642 132 143 5.9965398 0.19559322 0.00025423729 2.332667 5.5445865 238986.94 2 4 + 59052 481.80944 -3217.9192 0.037642135 2.3956071 0.28848642 132 143 5.9965398 0.19542098 0.00025401341 2.332667 5.5445865 238986.94 2 4 +Loop time of 0.0187398 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 59000 481.80944 -3197.6876 0.037642135 2.3956071 0.28848642 132 143 5.9965398 0.19559322 0.00025423729 2.332667 5.5445865 238986.94 2 4 + 60000 486.86094 -3197.1192 0.16900791 50.526918 0.24408723 283 284 5.9965398 0.19436667 0.00025 2.332667 5.5445865 242682.27 2 4 +Loop time of 0.148527 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 60000 486.86094 -3197.1192 0.16900791 50.526918 0.24408723 283 284 5.9965398 0.19436667 0.00025 2.332667 5.5445865 242682.27 2 4 + 60053 486.86094 -3217.9192 0.16900791 50.526918 0.24408723 283 284 5.9965398 0.19419513 0.00024977936 2.332667 5.5445865 242682.27 2 4 +Loop time of 0.0185421 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 60000 486.86094 -3197.1192 0.16900791 50.526918 0.24408723 283 284 5.9965398 0.19436667 0.00025 2.332667 5.5445865 242682.27 2 4 + 61000 506.68298 -3198.7212 0.086903353 7.5152988 0.27268553 432 547 5.9965398 0.19522951 0.00024590164 2.332667 5.5445865 245274.71 2 4 +Loop time of 0.146228 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 61000 506.68298 -3198.7212 0.086903353 7.5152988 0.27268553 432 547 5.9965398 0.19522951 0.00024590164 2.332667 5.5445865 245274.71 2 4 + 61053 506.68298 -3217.9192 0.086903353 7.5152988 0.27268553 432 547 5.9965398 0.19506003 0.00024568817 2.332667 5.5445865 245274.71 2 4 +Loop time of 0.0195987 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 61000 506.68298 -3198.7212 0.086903353 7.5152988 0.27268553 432 547 5.9965398 0.19522951 0.00024590164 2.332667 5.5445865 245274.71 2 4 + 62000 505.72288 -3199.108 0 1 0.31500636 551 548 5.9965398 0.1965 0.00024193548 2.332667 5.5445865 246486.72 2 4 +Loop time of 0.148492 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 62000 505.72288 -3199.108 0 1 0.31500636 551 548 5.9965398 0.1965 0.00024193548 2.332667 5.5445865 246486.72 2 4 + 62055 505.72288 -3217.9192 0 1 0.31500636 551 548 5.9965398 0.19632584 0.00024172105 2.332667 5.5445865 246486.72 2 4 +Loop time of 0.020478 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 62000 505.72288 -3199.108 0 1 0.31500636 551 548 5.9965398 0.1965 0.00024193548 2.332667 5.5445865 246486.72 2 4 + 63000 512.7617 -3199.9408 0.11525868 14.512929 0.26316048 551 548 5.9965398 0.198 0.00023809524 2.332667 5.5445865 246977.1 2 4 +Loop time of 0.146232 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 63000 512.7617 -3199.9408 0.11525868 14.512929 0.26316048 551 548 5.9965398 0.198 0.00023809524 2.332667 5.5445865 246977.1 2 4 + 63061 512.7617 -3217.9192 0.11525868 14.512929 0.26316048 551 548 5.9965398 0.19780847 0.00023786492 2.332667 5.5445865 246977.1 2 4 +Loop time of 0.0210125 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 63000 512.7617 -3199.9408 0.11525868 14.512929 0.26316048 551 548 5.9965398 0.198 0.00023809524 2.332667 5.5445865 246977.1 2 4 + 64000 486.25689 -3198.5189 0.35129177 3474.2507 0.16360771 544 555 5.9965398 0.1988125 0.001109375 2.332667 5.5445865 249201.34 2 4 +Loop time of 0.155832 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 64000 486.25689 -3198.5189 0.35129177 3474.2507 0.16360771 544 555 5.9965398 0.1988125 0.001109375 2.332667 5.5445865 249201.34 2 4 + 64053 486.25689 -3217.9192 0.35129177 3474.2507 0.16360771 544 555 5.9965398 0.19864799 0.0011084571 2.332667 5.5445865 249201.34 2 4 +Loop time of 0.0204544 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 64000 486.25689 -3198.5189 0.35129177 3474.2507 0.16360771 544 555 5.9965398 0.1988125 0.001109375 2.332667 5.5445865 249201.34 2 4 + 65000 548.53783 -3200.1855 0.047969556 3.0444672 0.28524635 551 548 5.9965398 0.19770769 0.0010923077 2.332667 5.5445865 254327.62 2 4 +Loop time of 0.14987 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 65000 548.53783 -3200.1855 0.047969556 3.0444672 0.28524635 551 548 5.9965398 0.19770769 0.0010923077 2.332667 5.5445865 254327.62 2 4 + 65061 548.53783 -3217.9192 0.047969556 3.0444672 0.28524635 551 548 5.9965398 0.19752233 0.0010912836 2.332667 5.5445865 254327.62 2 4 +Loop time of 0.0217812 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 65000 548.53783 -3200.1855 0.047969556 3.0444672 0.28524635 551 548 5.9965398 0.19770769 0.0010923077 2.332667 5.5445865 254327.62 2 4 + 66000 530.28774 -3198.7237 0.35744103 4007.2176 0.16018931 402 403 5.9965398 0.20060606 0.0010757576 2.332667 5.5445865 255407.47 2 4 +Loop time of 0.147202 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 66000 530.28774 -3198.7237 0.35744103 4007.2176 0.16018931 402 403 5.9965398 0.20060606 0.0010757576 2.332667 5.5445865 255407.47 2 4 + 66058 530.28774 -3217.9192 0.35744103 4007.2176 0.16018931 402 403 5.9965398 0.20042993 0.001074813 2.332667 5.5445865 255407.47 2 4 +Loop time of 0.0205493 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 66000 530.28774 -3198.7237 0.35744103 4007.2176 0.16018931 402 403 5.9965398 0.20060606 0.0010757576 2.332667 5.5445865 255407.47 2 4 + 67000 514.44507 -3197.2465 0.33994158 2669.6633 0.1697366 79 117 5.9965398 0.19949254 0.0010597015 2.332667 5.5445865 258118.06 2 4 +Loop time of 0.146892 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 67000 514.44507 -3197.2465 0.33994158 2669.6633 0.1697366 79 117 5.9965398 0.19949254 0.0010597015 2.332667 5.5445865 258118.06 2 4 + 67053 514.44507 -3217.9192 0.33994158 2669.6633 0.1697366 79 117 5.9965398 0.19933485 0.0010588639 2.332667 5.5445865 258118.06 2 4 +Loop time of 0.0191221 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 67000 514.44507 -3197.2465 0.33994158 2669.6633 0.1697366 79 117 5.9965398 0.19949254 0.0010597015 2.332667 5.5445865 258118.06 2 4 + 68000 494.25025 -3198.3063 0.3603828 4290.3691 0.1585279 73 76 5.9965398 0.198 0.0010441176 2.332667 5.5445865 261601.61 2 4 +Loop time of 0.146714 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 68000 494.25025 -3198.3063 0.3603828 4290.3691 0.1585279 73 76 5.9965398 0.198 0.0010441176 2.332667 5.5445865 261601.61 2 4 + 68051 494.25025 -3217.9192 0.3603828 4290.3691 0.1585279 73 76 5.9965398 0.19785161 0.0010433351 2.332667 5.5445865 261601.61 2 4 +Loop time of 0.0185863 on 4 procs for 51 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 68000 494.25025 -3198.3063 0.3603828 4290.3691 0.1585279 73 76 5.9965398 0.198 0.0010441176 2.332667 5.5445865 261601.61 2 4 + 69000 477.30539 -3197.981 0.24885139 322.336 0.21261879 570 572 5.9965398 0.1974058 0.0011449275 2.332667 5.5445865 269691.31 2 4 +Loop time of 0.146795 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 69000 477.30539 -3197.981 0.24885139 322.336 0.21261879 570 572 5.9965398 0.1974058 0.0011449275 2.332667 5.5445865 269691.31 2 4 + 69054 477.30539 -3217.9192 0.24885139 322.336 0.21261879 570 572 5.9965398 0.19725143 0.0011440322 2.332667 5.5445865 269691.31 2 4 +Loop time of 0.0192543 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 69000 477.30539 -3197.981 0.24885139 322.336 0.21261879 570 572 5.9965398 0.1974058 0.0011449275 2.332667 5.5445865 269691.31 2 4 + 70000 494.06575 -3200.0312 0.16385959 44.836337 0.2459782 563 256 5.9965398 0.19577143 0.0011285714 2.332667 5.5445865 277199.96 2 4 +Loop time of 0.147705 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 70000 494.06575 -3200.0312 0.16385959 44.836337 0.2459782 563 256 5.9965398 0.19577143 0.0011285714 2.332667 5.5445865 277199.96 2 4 + 70054 494.06575 -3217.9192 0.16385959 44.836337 0.2459782 563 256 5.9965398 0.19562052 0.0011277015 2.332667 5.5445865 277199.96 2 4 +Loop time of 0.0190155 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 70000 494.06575 -3200.0312 0.16385959 44.836337 0.2459782 563 256 5.9965398 0.19577143 0.0011285714 2.332667 5.5445865 277199.96 2 4 + 71000 521.52358 -3198.0632 0.14648679 29.958507 0.25225459 563 256 5.9965398 0.19690141 0.0011126761 2.332667 5.5445865 277540.94 2 4 +Loop time of 0.146516 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 71000 521.52358 -3198.0632 0.14648679 29.958507 0.25225459 563 256 5.9965398 0.19690141 0.0011126761 2.332667 5.5445865 277540.94 2 4 + 71054 521.52358 -3217.9192 0.14648679 29.958507 0.25225459 563 256 5.9965398 0.19675177 0.0011118304 2.332667 5.5445865 277540.94 2 4 +Loop time of 0.0187534 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 71000 521.52358 -3198.0632 0.14648679 29.958507 0.25225459 563 256 5.9965398 0.19690141 0.0011126761 2.332667 5.5445865 277540.94 2 4 + 72000 477.57283 -3199.7245 0 1 0.30404328 563 256 5.9965398 0.19827778 0.0013333333 2.332667 5.5445865 280791.76 2 4 +Loop time of 0.146056 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 72000 477.57283 -3199.7245 0 1 0.30404328 563 256 5.9965398 0.19827778 0.0013333333 2.332667 5.5445865 280791.76 2 4 + 72053 477.57283 -3217.9192 0 1 0.30404328 563 256 5.9965398 0.19813193 0.0013323526 2.332667 5.5445865 280791.76 2 4 +Loop time of 0.0185455 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 72000 477.57283 -3199.7245 0 1 0.30404328 563 256 5.9965398 0.19827778 0.0013333333 2.332667 5.5445865 280791.76 2 4 + 73000 491.49087 -3198.3904 0.19822154 99.536632 0.23306678 89 87 5.9965398 0.19736986 0.0013150685 2.332667 5.5445865 287754.81 2 4 +Loop time of 0.147198 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 73000 491.49087 -3198.3904 0.19822154 99.536632 0.23306678 89 87 5.9965398 0.19736986 0.0013150685 2.332667 5.5445865 287754.81 2 4 + 73053 491.49087 -3217.9192 0.19822154 99.536632 0.23306678 89 87 5.9965398 0.19722667 0.0013141144 2.332667 5.5445865 287754.81 2 4 +Loop time of 0.0186561 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 73000 491.49087 -3198.3904 0.19822154 99.536632 0.23306678 89 87 5.9965398 0.19736986 0.0013150685 2.332667 5.5445865 287754.81 2 4 + 74000 492.96166 -3196.9654 0.18723782 77.138643 0.2372703 548 563 5.9965398 0.19921622 0.0012972973 2.332667 5.5445865 289420.74 2 4 +Loop time of 0.147452 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 74000 492.96166 -3196.9654 0.18723782 77.138643 0.2372703 548 563 5.9965398 0.19921622 0.0012972973 2.332667 5.5445865 289420.74 2 4 + 74061 492.96166 -3217.9192 0.18723782 77.138643 0.2372703 548 563 5.9965398 0.19905213 0.0012962288 2.332667 5.5445865 289420.74 2 4 +Loop time of 0.0211116 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 74000 492.96166 -3196.9654 0.18723782 77.138643 0.2372703 548 563 5.9965398 0.19921622 0.0012972973 2.332667 5.5445865 289420.74 2 4 + 75000 529.20732 -3198.9061 0.05344088 3.4566846 0.2835148 116 123 5.9965398 0.19838667 0.00128 2.332667 5.5445865 293504.18 2 4 +Loop time of 0.147695 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 75000 529.20732 -3198.9061 0.05344088 3.4566846 0.2835148 116 123 5.9965398 0.19838667 0.00128 2.332667 5.5445865 293504.18 2 4 + 75063 529.20732 -3217.9192 0.05344088 3.4566846 0.2835148 116 123 5.9965398 0.19822016 0.0012789257 2.332667 5.5445865 293504.18 2 4 +Loop time of 0.0224035 on 4 procs for 63 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 75000 529.20732 -3198.9061 0.05344088 3.4566846 0.2835148 116 123 5.9965398 0.19838667 0.00128 2.332667 5.5445865 293504.18 2 4 + 76000 498.66616 -3197.8484 0.083711316 6.978659 0.27373703 548 563 5.9965398 0.19861842 0.0012631579 2.332667 5.5445865 297498.83 2 4 +Loop time of 0.151858 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 76000 498.66616 -3197.8484 0.083711316 6.978659 0.27373703 548 563 5.9965398 0.19861842 0.0012631579 2.332667 5.5445865 297498.83 2 4 + 76054 498.66616 -3217.9192 0.083711316 6.978659 0.27373703 548 563 5.9965398 0.1984774 0.001262261 2.332667 5.5445865 297498.83 2 4 +Loop time of 0.0206581 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 76000 498.66616 -3197.8484 0.083711316 6.978659 0.27373703 548 563 5.9965398 0.19861842 0.0012631579 2.332667 5.5445865 297498.83 2 4 + 77000 486.32916 -3197.1136 0.058197108 3.8601161 0.28200092 277 280 5.9965398 0.19701299 0.0012467532 2.332667 5.5445865 302372 2 4 +Loop time of 0.178096 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 77000 486.32916 -3197.1136 0.058197108 3.8601161 0.28200092 277 280 5.9965398 0.19701299 0.0012467532 2.332667 5.5445865 302372 2 4 + 77055 486.32916 -3217.9192 0.058197108 3.8601161 0.28200092 277 280 5.9965398 0.19687236 0.0012458633 2.332667 5.5445865 302372 2 4 +Loop time of 0.0196412 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 77000 486.32916 -3197.1136 0.058197108 3.8601161 0.28200092 277 280 5.9965398 0.19701299 0.0012467532 2.332667 5.5445865 302372 2 4 + 78000 505.40944 -3199.8936 0.093303231 8.7187478 0.270565 88 121 5.9965398 0.19614103 0.0012307692 2.332667 5.5445865 305826.62 2 4 +Loop time of 0.15925 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 78000 505.40944 -3199.8936 0.093303231 8.7187478 0.270565 88 121 5.9965398 0.19614103 0.0012307692 2.332667 5.5445865 305826.62 2 4 + 78057 505.40944 -3217.9192 0.093303231 8.7187478 0.270565 88 121 5.9965398 0.1959978 0.0012298705 2.332667 5.5445865 305826.62 2 4 +Loop time of 0.0351628 on 4 procs for 57 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 78000 505.40944 -3199.8936 0.093303231 8.7187478 0.270565 88 121 5.9965398 0.19614103 0.0012307692 2.332667 5.5445865 305826.62 2 4 + 79000 526.28218 -3198.7939 0.010254625 1.2687088 0.29690768 543 544 5.9965398 0.19472152 0.0012151899 2.332667 5.5445865 309786.25 2 4 +Loop time of 0.248652 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 79000 526.28218 -3198.7939 0.010254625 1.2687088 0.29690768 543 544 5.9965398 0.19472152 0.0012151899 2.332667 5.5445865 309786.25 2 4 + 79061 526.28218 -3217.9192 0.010254625 1.2687088 0.29690768 543 544 5.9965398 0.19457128 0.0012142523 2.332667 5.5445865 309786.25 2 4 +Loop time of 0.0293576 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 79000 526.28218 -3198.7939 0.010254625 1.2687088 0.29690768 543 544 5.9965398 0.19472152 0.0012151899 2.332667 5.5445865 309786.25 2 4 + 80000 513.93228 -3198.9101 0.28635286 769.67342 0.19610325 120 127 5.9965398 0.1928875 0.0012 2.332667 5.5445865 318100.87 2 4 +Loop time of 0.188747 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 80000 513.93228 -3198.9101 0.28635286 769.67342 0.19610325 120 127 5.9965398 0.1928875 0.0012 2.332667 5.5445865 318100.87 2 4 + 80051 513.93228 -3217.9192 0.28635286 769.67342 0.19610325 120 127 5.9965398 0.19276461 0.0011992355 2.332667 5.5445865 318100.87 2 4 +Loop time of 0.0326888 on 4 procs for 51 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 80000 513.93228 -3198.9101 0.28635286 769.67342 0.19610325 120 127 5.9965398 0.1928875 0.0012 2.332667 5.5445865 318100.87 2 4 + 81000 472.77787 -3200.6856 0 1 0.30460187 563 256 5.9965398 0.19223457 0.0011851852 2.332667 5.5445865 322608.51 2 4 +Loop time of 0.276107 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 81000 472.77787 -3200.6856 0 1 0.30460187 563 256 5.9965398 0.19223457 0.0011851852 2.332667 5.5445865 322608.51 2 4 + 81055 472.77787 -3217.9192 0 1 0.30460187 563 256 5.9965398 0.19210413 0.001184381 2.332667 5.5445865 322608.51 2 4 +Loop time of 0.0217792 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 81000 472.77787 -3200.6856 0 1 0.30460187 563 256 5.9965398 0.19223457 0.0011851852 2.332667 5.5445865 322608.51 2 4 + 82000 487.68015 -3197.7729 0.1267439 18.946144 0.25920281 562 575 5.9965398 0.19207317 0.0011707317 2.332667 5.5445865 328159.62 2 4 +Loop time of 0.192733 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 82000 487.68015 -3197.7729 0.1267439 18.946144 0.25920281 562 575 5.9965398 0.19207317 0.0011707317 2.332667 5.5445865 328159.62 2 4 + 82066 487.68015 -3217.9192 0.1267439 18.946144 0.25920281 562 575 5.9965398 0.1919187 0.0011697902 2.332667 5.5445865 328159.62 2 4 +Loop time of 0.0283784 on 4 procs for 66 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 82000 487.68015 -3197.7729 0.1267439 18.946144 0.25920281 562 575 5.9965398 0.19207317 0.0011707317 2.332667 5.5445865 328159.62 2 4 + 83000 475.5591 -3197.0536 0.050428691 3.2232817 0.28446939 410 416 5.9965398 0.1906988 0.001253012 2.332667 5.5445865 333013.8 2 4 +Loop time of 0.168478 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 83000 475.5591 -3197.0536 0.050428691 3.2232817 0.28446939 410 416 5.9965398 0.1906988 0.001253012 2.332667 5.5445865 333013.8 2 4 + 83053 475.5591 -3217.9192 0.050428691 3.2232817 0.28446939 410 416 5.9965398 0.1905771 0.0012522124 2.332667 5.5445865 333013.8 2 4 +Loop time of 0.0209876 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 83000 475.5591 -3197.0536 0.050428691 3.2232817 0.28446939 410 416 5.9965398 0.1906988 0.001253012 2.332667 5.5445865 333013.8 2 4 + 84000 521.96002 -3198.5655 0.30743246 1255.3918 0.18617776 274 276 5.9965398 0.18882143 0.0012380952 2.332667 5.5445865 339522.55 2 4 +Loop time of 0.196029 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 84000 521.96002 -3198.5655 0.30743246 1255.3918 0.18617776 274 276 5.9965398 0.18882143 0.0012380952 2.332667 5.5445865 339522.55 2 4 + 84055 521.96002 -3217.9192 0.30743246 1255.3918 0.18617776 274 276 5.9965398 0.18869788 0.0012372851 2.332667 5.5445865 339522.55 2 4 +Loop time of 0.0294663 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 84000 521.96002 -3198.5655 0.30743246 1255.3918 0.18617776 274 276 5.9965398 0.18882143 0.0012380952 2.332667 5.5445865 339522.55 2 4 + 85000 512.56855 -3199.3238 0.31996602 1679.2366 0.18001699 110 116 5.9965398 0.18802353 0.0012470588 2.332667 5.5445865 343955.55 2 4 +Loop time of 0.253235 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 85000 512.56855 -3199.3238 0.31996602 1679.2366 0.18001699 110 116 5.9965398 0.18802353 0.0012470588 2.332667 5.5445865 343955.55 2 4 + 85058 512.56855 -3217.9192 0.31996602 1679.2366 0.18001699 110 116 5.9965398 0.18789532 0.0012462085 2.332667 5.5445865 343955.55 2 4 +Loop time of 0.0273268 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 85000 512.56855 -3199.3238 0.31996602 1679.2366 0.18001699 110 116 5.9965398 0.18802353 0.0012470588 2.332667 5.5445865 343955.55 2 4 + 86000 502.24946 -3198.3217 0.28404879 729.59623 0.19715785 569 560 5.9965398 0.18894186 0.0012325581 2.332667 5.5445865 345831.54 2 4 +Loop time of 0.227089 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 86000 502.24946 -3198.3217 0.28404879 729.59623 0.19715785 569 560 5.9965398 0.18894186 0.0012325581 2.332667 5.5445865 345831.54 2 4 + 86064 502.24946 -3217.9192 0.28404879 729.59623 0.19715785 569 560 5.9965398 0.18880136 0.0012316416 2.332667 5.5445865 345831.54 2 4 +Loop time of 0.0555945 on 4 procs for 64 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 86000 502.24946 -3198.3217 0.28404879 729.59623 0.19715785 569 560 5.9965398 0.18894186 0.0012325581 2.332667 5.5445865 345831.54 2 4 + 87000 533.23227 -3199.0076 0.38185976 7062.731 0.14582607 266 268 5.9965398 0.18741379 0.0012183908 2.332667 5.5445865 352138.83 2 4 +Loop time of 0.200219 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 87000 533.23227 -3199.0076 0.38185976 7062.731 0.14582607 266 268 5.9965398 0.18741379 0.0012183908 2.332667 5.5445865 352138.83 2 4 + 87051 533.23227 -3217.9192 0.38185976 7062.731 0.14582607 266 268 5.9965398 0.18730399 0.001217677 2.332667 5.5445865 352138.83 2 4 +Loop time of 0.0225247 on 4 procs for 51 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 87000 533.23227 -3199.0076 0.38185976 7062.731 0.14582607 266 268 5.9965398 0.18741379 0.0012183908 2.332667 5.5445865 352138.83 2 4 + 88000 500.37277 -3198.2649 0.11994657 16.181057 0.26155232 121 419 5.9965398 0.18643182 0.0012045455 2.332667 5.5445865 360427.01 2 4 +Loop time of 0.160607 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 88000 500.37277 -3198.2649 0.11994657 16.181057 0.26155232 121 419 5.9965398 0.18643182 0.0012045455 2.332667 5.5445865 360427.01 2 4 + 88052 500.37277 -3217.9192 0.11994657 16.181057 0.26155232 121 419 5.9965398 0.18632172 0.0012038341 2.332667 5.5445865 360427.01 2 4 +Loop time of 0.0185262 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 88000 500.37277 -3198.2649 0.11994657 16.181057 0.26155232 121 419 5.9965398 0.18643182 0.0012045455 2.332667 5.5445865 360427.01 2 4 + 89000 510.3713 -3198.1715 0.079294834 6.2987714 0.27518526 124 135 5.9965398 0.1861236 0.0011910112 2.332667 5.5445865 368061.42 2 4 +Loop time of 0.157259 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 89000 510.3713 -3198.1715 0.079294834 6.2987714 0.27518526 124 135 5.9965398 0.1861236 0.0011910112 2.332667 5.5445865 368061.42 2 4 + 89059 510.3713 -3217.9192 0.079294834 6.2987714 0.27518526 124 135 5.9965398 0.18600029 0.0011902222 2.332667 5.5445865 368061.42 2 4 +Loop time of 0.0206097 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 89000 510.3713 -3198.1715 0.079294834 6.2987714 0.27518526 124 135 5.9965398 0.1861236 0.0011910112 2.332667 5.5445865 368061.42 2 4 + 90000 445.05079 -3197.1115 0.03145569 2.0751956 0.29041001 287 288 5.9965398 0.18517778 0.0011777778 2.332667 5.5445865 374425.2 2 4 +Loop time of 0.149199 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 90000 445.05079 -3197.1115 0.03145569 2.0751956 0.29041001 287 288 5.9965398 0.18517778 0.0011777778 2.332667 5.5445865 374425.2 2 4 + 90054 445.05079 -3217.9192 0.03145569 2.0751956 0.29041001 287 288 5.9965398 0.18506674 0.0011770715 2.332667 5.5445865 374425.2 2 4 +Loop time of 0.0193175 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 90000 445.05079 -3197.1115 0.03145569 2.0751956 0.29041001 287 288 5.9965398 0.18517778 0.0011777778 2.332667 5.5445865 374425.2 2 4 + 91000 471.80198 -3197.5975 0.18766746 77.911686 0.23710727 551 256 5.9965398 0.18674725 0.0011648352 2.332667 5.5445865 374977.4 2 4 +Loop time of 0.147735 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 91000 471.80198 -3197.5975 0.18766746 77.911686 0.23710727 551 256 5.9965398 0.18674725 0.0011648352 2.332667 5.5445865 374977.4 2 4 + 91054 471.80198 -3217.9192 0.18766746 77.911686 0.23710727 551 256 5.9965398 0.1866365 0.0011641444 2.332667 5.5445865 374977.4 2 4 +Loop time of 0.0194244 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 91000 471.80198 -3197.5975 0.18766746 77.911686 0.23710727 551 256 5.9965398 0.18674725 0.0011648352 2.332667 5.5445865 374977.4 2 4 + 92000 482.89055 -3197.7684 0 1 0.90550005 550 256 5.9965398 0.19525 0.0011521739 2.332667 5.5445865 374983.58 2 4 +Loop time of 0.16266 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 92000 482.89055 -3197.7684 0 1 0.90550005 550 256 5.9965398 0.19525 0.0011521739 2.332667 5.5445865 374983.58 2 4 + 92053 482.89055 -3217.9192 0 1 0.90550005 550 256 5.9965398 0.19513758 0.0011515105 2.332667 5.5445865 374983.58 2 4 +Loop time of 0.0194454 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 92000 482.89055 -3197.7684 0.37282949 5727.3228 0.1512967 126 128 5.9965398 0.19525 0.0011521739 2.332667 5.5445865 374983.58 3 6 + 93000 518.34364 -3197.7169 0.33208414 2224.6263 0.17385297 404 415 5.9965398 0.19386022 0.0011397849 2.332667 5.5445865 379383.21 3 6 +Loop time of 0.14771 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 93000 518.34364 -3197.7169 0.33208414 2224.6263 0.17385297 404 415 5.9965398 0.19386022 0.0011397849 2.332667 5.5445865 379383.21 3 6 + 93052 518.34364 -3217.9192 0.33208414 2224.6263 0.17385297 404 415 5.9965398 0.19375188 0.001139148 2.332667 5.5445865 379383.21 3 6 +Loop time of 0.0189104 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 93000 518.34364 -3197.7169 0.33208414 2224.6263 0.17385297 404 415 5.9965398 0.19386022 0.0011397849 2.332667 5.5445865 379383.21 3 6 + 94000 485.54152 -3199.6114 0.33161662 2200.6179 0.17409483 254 255 5.9965398 0.19275532 0.0011276596 2.332667 5.5445865 386607.7 3 6 +Loop time of 0.152505 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 94000 485.54152 -3199.6114 0.33161662 2200.6179 0.17409483 254 255 5.9965398 0.19275532 0.0011276596 2.332667 5.5445865 386607.7 3 6 + 94054 485.54152 -3217.9192 0.33161662 2200.6179 0.17409483 254 255 5.9965398 0.19264465 0.0011270121 2.332667 5.5445865 386607.7 3 6 +Loop time of 0.0200894 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 94000 485.54152 -3199.6114 0.33161662 2200.6179 0.17409483 254 255 5.9965398 0.19275532 0.0011276596 2.332667 5.5445865 386607.7 3 6 + 95000 468.35272 -3199.3653 0.12708244 19.095595 0.25908524 255 260 5.9965398 0.19384211 0.0011157895 2.332667 5.5445865 388255.15 3 6 +Loop time of 0.170403 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 95000 468.35272 -3199.3653 0.12708244 19.095595 0.25908524 255 260 5.9965398 0.19384211 0.0011157895 2.332667 5.5445865 388255.15 3 6 + 95058 468.35272 -3217.9192 0.12708244 19.095595 0.25908524 255 260 5.9965398 0.19372383 0.0011151087 2.332667 5.5445865 388255.15 3 6 +Loop time of 0.0303804 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 95000 468.35272 -3199.3653 0.12708244 19.095595 0.25908524 255 260 5.9965398 0.19384211 0.0011157895 2.332667 5.5445865 388255.15 3 6 + 96000 489.04774 -3198.5653 0.20052634 105.00604 0.23217506 132 143 5.9965398 0.19276042 0.0012291667 2.332667 5.5445865 394084.75 3 6 +Loop time of 0.243084 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 96000 489.04774 -3198.5653 0.20052634 105.00604 0.23217506 132 143 5.9965398 0.19276042 0.0012291667 2.332667 5.5445865 394084.75 3 6 + 96055 489.04774 -3217.9192 0.20052634 105.00604 0.23217506 132 143 5.9965398 0.19265004 0.0012284629 2.332667 5.5445865 394084.75 3 6 +Loop time of 0.0209683 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 96000 489.04774 -3198.5653 0.20052634 105.00604 0.23217506 132 143 5.9965398 0.19276042 0.0012291667 2.332667 5.5445865 394084.75 3 6 + 97000 468.88641 -3198.7099 0.24800267 316.04874 0.21297774 138 139 5.9965398 0.19249485 0.0012268041 2.332667 5.5445865 399765.39 3 6 +Loop time of 0.159347 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 97000 468.88641 -3198.7099 0.24800267 316.04874 0.21297774 138 139 5.9965398 0.19249485 0.0012268041 2.332667 5.5445865 399765.39 3 6 + 97061 468.88641 -3217.9192 0.24800267 316.04874 0.21297774 138 139 5.9965398 0.19237387 0.0012260331 2.332667 5.5445865 399765.39 3 6 +Loop time of 0.0222729 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 97000 468.88641 -3198.7099 0.24800267 316.04874 0.21297774 138 139 5.9965398 0.19249485 0.0012268041 2.332667 5.5445865 399765.39 3 6 + 98000 511.90651 -3198.375 0.28991077 835.9276 0.19446352 575 280 5.9965398 0.19118367 0.0012142857 2.332667 5.5445865 405890.91 3 6 +Loop time of 0.179737 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 98000 511.90651 -3198.375 0.28991077 835.9276 0.19446352 575 280 5.9965398 0.19118367 0.0012142857 2.332667 5.5445865 405890.91 3 6 + 98057 511.90651 -3217.9192 0.28991077 835.9276 0.19446352 575 280 5.9965398 0.19107254 0.0012135799 2.332667 5.5445865 405890.91 3 6 +Loop time of 0.0226798 on 4 procs for 57 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 98000 511.90651 -3198.375 0.28991077 835.9276 0.19446352 575 280 5.9965398 0.19118367 0.0012142857 2.332667 5.5445865 405890.91 3 6 + 99000 515.7066 -3198.7898 0.029498662 1.9830474 0.29101588 267 260 5.9965398 0.19046465 0.0012020202 2.332667 5.5445865 410566.28 3 6 +Loop time of 0.162221 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 99000 515.7066 -3198.7898 0.029498662 1.9830474 0.29101588 267 260 5.9965398 0.19046465 0.0012020202 2.332667 5.5445865 410566.28 3 6 + 99056 515.7066 -3217.9192 0.029498662 1.9830474 0.29101588 267 260 5.9965398 0.19035697 0.0012013407 2.332667 5.5445865 410566.28 3 6 +Loop time of 0.029222 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 99000 515.7066 -3198.7898 0.029498662 1.9830474 0.29101588 267 260 5.9965398 0.19046465 0.0012020202 2.332667 5.5445865 410566.28 3 6 + 100000 470.91344 -3199.3671 0.38510929 7615.9914 0.14380656 217 515 5.9965398 0.19106 0.00119 2.332667 5.5445865 413625.31 3 6 +Loop time of 0.200459 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 100000 470.91344 -3199.3671 0.38510929 7615.9914 0.14380656 217 515 5.9965398 0.19106 0.00119 2.332667 5.5445865 413625.31 3 6 + 100051 470.91344 -3217.9192 0.38510929 7615.9914 0.14380656 217 515 5.9965398 0.19096261 0.0011893934 2.332667 5.5445865 413625.31 3 6 +Loop time of 0.0181701 on 4 procs for 51 steps with 577 atoms + +Final hyper stats ... + +Cummulative quantities for fix hyper: + hyper time = 413625 + time boost factor = 827.251 + event timesteps = 3 + # of atoms in events = 6 +Quantities for this hyper run: + event timesteps = 3 + # of atoms in events = 6 + max length of any bond = 5.54459 + max drift distance of any atom = 2.33267 + fraction of biased bonds with zero bias = 0.19106 + fraction of biased bonds with negative strain = 0.00119 +Current quantities: + ave bonds/atom = 5.99654 + +Loop time of 18.1545 on 4 procs for 100000 steps with 577 atoms + +Performance: 2379.577 ns/day, 0.010 hours/ns, 5508.280 timesteps/s +97.2% CPU use with 4 MPI tasks x 1 OpenMP threads + +Hyper stats: + Dynamics time (%) = 15.7932 (86.9934) + Quench time (%) = 2.11457 (11.6476) + Other time (%) = 0.613371 (3.37862) + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 12.753 | 12.889 | 13.038 | 3.0 | 71.00 +Neigh | 1.1332 | 1.1557 | 1.1781 | 1.5 | 6.37 +Comm | 1.4019 | 1.4415 | 1.5107 | 3.5 | 7.94 +Output | 0.0022557 | 0.0055519 | 0.015418 | 7.6 | 0.03 +Modify | 1.9349 | 2.049 | 2.182 | 6.2 | 11.29 +Other | | 0.6134 | | | 3.38 + +Nlocal: 144.25 ave 149 max 141 min +Histogram: 1 1 0 0 0 1 0 0 0 1 +Nghost: 532.75 ave 536 max 528 min +Histogram: 1 0 0 0 0 1 0 0 1 1 +Neighs: 3377.5 ave 3479 max 3296 min +Histogram: 1 0 0 1 1 0 0 0 0 1 + +Total # of neighbors = 13510 +Ave neighs/atom = 23.4142 +Neighbor list builds = 10038 +Dangerous builds = 0 +Total wall time: 0:00:18 diff --git a/examples/hyper/log.2Jun2020.hyper.local.g++.4 b/examples/hyper/log.2Jun2020.hyper.local.g++.4 new file mode 100644 index 0000000000..85a9333376 --- /dev/null +++ b/examples/hyper/log.2Jun2020.hyper.local.g++.4 @@ -0,0 +1,647 @@ +LAMMPS (2 Jun 2020) + using 1 OpenMP thread(s) per MPI task +# 3d EAM surface for local HD + +# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92 +# hop event on (100) surface is same distance +# exchange event is 2 atoms moving same distance + +variable Tequil index 400.0 +variable Vmax index 0.4 +variable qfactor index 0.3 +variable cutbond index 3.2 +variable Dcut index 10.0 +variable cutevent index 1.1 +variable alpha index 200.0 +variable boost index 4000.0 +variable ghostcut index 12.0 +variable steps index 2000 +variable nevent index 100 +variable nx index 2 +variable ny index 2 +variable zoom index 1.8 +variable seed index 3875984 +variable tol index 1.0e-15 +variable add index 50 + +units metal +atom_style atomic +atom_modify map array +boundary p p p +comm_modify cutoff ${ghostcut} +comm_modify cutoff 12.0 + +lattice fcc 3.92 +Lattice spacing in x,y,z = 3.92 3.92 3.92 +region box block 0 6 0 6 0 4 +create_box 2 box +Created orthogonal box = (0.0 0.0 0.0) to (23.52 23.52 15.68) + 2 by 2 by 1 MPI processor grid +create_atoms 1 box +Created 576 atoms + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +change_box all z final -0.1 5.0 boundary p p f + orthogonal box = (0.0 0.0 -0.392) to (23.52 23.52 19.6) +WARNING: Reset image flags for non-periodic boundary (src/domain.cpp:1909) + +# replicate in xy + +replicate ${nx} ${ny} 1 +replicate 2 ${ny} 1 +replicate 2 2 1 + orthogonal box = (0.0 0.0 -0.392) to (47.04 47.04 19.6) + 2 by 2 by 1 MPI processor grid + 2304 atoms + replicate CPU = 0.000324488 secs + +# add adatoms + +include adatoms.list.${add} +include adatoms.list.50 +create_atoms 1 single 5 9 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 4.5 7.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 6 6 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 5 6 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 4.5 1.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 6.5 7.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 10.5 5.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 2.5 1.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 3.5 4.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 0 10 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 11 10 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 6.5 10.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 3.5 5.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 7.5 10.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 1.5 1.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 1.5 6.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 7 2 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 4 0 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 9 0 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 4 9 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 10 7 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 4 4 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 9.5 2.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 1 5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 7 10 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 0 4 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 1 10 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 7.5 6.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 4 10 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 6.5 3.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 3 6 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 8.5 4.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 6.5 0.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 1 4 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 8.5 11.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 3 9 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 2 3 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 6.5 8.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 1 0 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 0.5 10.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 4 11 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 3 5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 0 1 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 2 11 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 2 0 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 7.5 11.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 1 7 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 3.5 10.5 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 0 2 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds +create_atoms 1 single 8 4 4 +Created 1 atoms + create_atoms CPU = 0.000 seconds + +# define frozen substrate and mobile atoms + +region base block INF INF INF INF 0 1.8 +set region base type 2 + 1152 settings made for typegroup base type 2 +1152 atoms in group base +group mobile type 1 +1202 atoms in group mobile + +# pair style + +pair_style eam/alloy +pair_coeff * * ptvoterlammps.eam Pt Pt + +neighbor 0.5 bin +neigh_modify every 1 delay 5 check yes + +fix 1 mobile nve +fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes +fix 2 mobile langevin 400.0 ${Tequil} 1.0 ${seed} zero yes +fix 2 mobile langevin 400.0 400.0 1.0 ${seed} zero yes +fix 2 mobile langevin 400.0 400.0 1.0 3875984 zero yes + +timestep 0.005 + +compute tmobile mobile temp + +thermo 100 +thermo_modify temp tmobile +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:486) + +# thermal equilibration + +run 1000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.07583 + ghost atom cutoff = 12 + binsize = 3.03792, bins = 16 16 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair eam/alloy, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.443 | 3.443 | 3.443 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0 -13067.188 0 -13067.188 -53763.139 + 100 216.49187 -13065.694 0 -13032.085 -24077.115 + 200 285.11905 -13057.047 0 -13012.785 -38815.844 + 300 321.67264 -13048.005 0 -12998.068 -29296.124 + 400 352.90893 -13045.707 0 -12990.92 -34630.884 + 500 371.9393 -13041.234 0 -12983.494 -28913.827 + 600 379.08135 -13040.06 0 -12981.211 -33399.8 + 700 388.73836 -13039.691 0 -12979.343 -29446.954 + 800 402.13628 -13040.606 0 -12978.178 -33026.861 + 900 389.43806 -13036.884 0 -12976.427 -30328.658 + 1000 388.66198 -13037.479 0 -12977.142 -30859.145 +Loop time of 0.572404 on 4 procs for 1000 steps with 2354 atoms + +Performance: 754.712 ns/day, 0.032 hours/ns, 1747.018 timesteps/s +96.8% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.45189 | 0.4594 | 0.46833 | 0.9 | 80.26 +Neigh | 0.039092 | 0.039772 | 0.040386 | 0.3 | 6.95 +Comm | 0.040249 | 0.051709 | 0.060548 | 3.4 | 9.03 +Output | 0.00014281 | 0.0002625 | 0.00061965 | 0.0 | 0.05 +Modify | 0.017148 | 0.017244 | 0.017364 | 0.1 | 3.01 +Other | | 0.004017 | | | 0.70 + +Nlocal: 588.5 ave 592 max 581 min +Histogram: 1 0 0 0 0 0 0 1 0 2 +Nghost: 1964 ave 1973 max 1959 min +Histogram: 2 0 0 1 0 0 0 0 0 1 +Neighs: 14148.8 ave 14283 max 13931 min +Histogram: 1 0 0 0 0 0 1 1 0 1 + +Total # of neighbors = 56595 +Ave neighs/atom = 24.0421 +Neighbor list builds = 91 +Dangerous builds = 0 +reset_timestep 0 + +# pin base so will not move during quenches + +fix freeze base setforce 0.0 0.0 0.0 + +# event detection + +compute event all event/displace ${cutevent} +compute event all event/displace 1.1 + +# hyper/local + +fix HL mobile hyper/local ${cutbond} ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} +fix HL mobile hyper/local 3.2 ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} +fix HL mobile hyper/local 3.2 0.3 ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} +fix HL mobile hyper/local 3.2 0.3 0.4 ${Tequil} ${Dcut} ${alpha} ${boost} +fix HL mobile hyper/local 3.2 0.3 0.4 400.0 ${Dcut} ${alpha} ${boost} +fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 ${alpha} ${boost} +fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 ${boost} +fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 4000.0 + +# thermo output + +thermo_style custom step temp pe f_HL f_HL[*] +WARNING: New thermo_style command, previous thermo_modify settings will be lost (src/output.cpp:709) + +thermo_modify lost ignore +thermo_modify temp tmobile +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:486) + +thermo ${nevent} +thermo 100 + +# dump + +region substrate block INF INF INF INF 1.8 3.8 +region adatoms block INF INF INF INF 3.8 INF +variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms) + +dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 +dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom 1.8 adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 +dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green + +# run + +hyper ${steps} ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1 +hyper 2000 ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1 +hyper 2000 100 HL event min ${tol} ${tol} 1000 1000 dump 1 +hyper 2000 100 HL event min 1.0e-15 ${tol} 1000 1000 dump 1 +hyper 2000 100 HL event min 1.0e-15 1.0e-15 1000 1000 dump 1 +WARNING: Resetting reneighboring criteria during hyper (src/REPLICA/hyper.cpp:131) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.07583 + ghost atom cutoff = 12 + binsize = 3.03792, bins = 16 16 7 + 3 neighbor lists, perpetual/occasional/extra = 1 2 0 + (1) pair eam/alloy, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard + (2) fix hyper/local, occasional + attributes: full, newton on, cut 10 + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (3) fix hyper/local, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 6.786 | 6.786 | 6.786 Mbytes +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 0 388.66198 -13037.479 0 1 0 0 0.4 1 0 0 0 0 0 0 0 0 0 0 1e+20 0 0 0 0 0 0 0 0 0 0 1 0 + 68 388.66198 -13101.057 0 1 0 0 0.4 1 0 0 0 0 0 0 0 0 0 0 1e+20 0 0 0 0 0 0 1360 0 0 0 1 0 +Loop time of 0.078882 on 4 procs for 68 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 0 388.66198 -13037.479 2.1560986 0 7 0.19075505 0.4 0 0 0 5.9276206 1380.4406 0 0 0 0 3.2725891 0 1e+20 0 0 0 0 0 0 0 0 0 0 10345.213 0 + 100 388.08547 -13035.803 1.9458797 5579.52 7 0.22444002 0.4 0.99435481 0.98307948 1.0037683 5.9276206 1380.4406 7612.921 5.23 0 0 3.4801431 0.99683836 0.98307948 1.0037683 0 0 0 0 0 2000 0 0 0 4811.1645 0 +Loop time of 0.0768972 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 100 388.08547 -13035.803 1.9458797 5579.52 7 0.22444002 0.4 0.99435481 0.98307948 1.0037683 5.9276206 1380.4406 7612.921 5.23 0 0 3.4801431 0.99683836 0.98307948 1.0037683 0 0 0 0 0 2000 0 0 0 4811.1645 0 + 171 388.08547 -13101.057 1.9458797 5579.52 7 0.22444002 0.4 0.99435481 0.98307948 1.0037683 5.9276206 1380.4406 7612.921 3.0584795 0 0 3.4801431 0.99683836 0.98307948 1.0037683 0 0 0 0 0 3420 0 0 0 4811.1645 0 +Loop time of 0.0822812 on 4 procs for 71 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 100 388.08547 -13035.803 1.9458309 5579.52 7 0.22444002 0.4 0.99435481 0.98307948 1.0037683 5.9276206 1380.4406 7612.921 5.23 0 0 3.4801431 0.99683836 0.98307948 1.0037683 0 0 0 0 0 2000 0 0 0 4806.677 0 + 200 401.00579 -13036.475 1.7413518 5055.0046 7 0.31164106 0.4 0.99292126 0.97454567 1.0099107 5.9276206 1380.4406 6265.1974 5.8 0.026724138 0 3.7115994 0.99518634 0.97454567 1.0099107 0 0 0 0 0 4000 0 0 0 5975.1486 1 +Loop time of 0.0801389 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 200 401.00579 -13036.475 1.7413518 5055.0046 7 0.31164106 0.4 0.99292126 0.97454567 1.0099107 5.9276206 1380.4406 6265.1974 5.8 0.026724138 0 3.7115994 0.99518634 0.97454567 1.0099107 0 0 0 0 0 4000 0 0 0 5975.1486 1 + 270 401.00579 -13101.057 1.7413518 5055.0046 7 0.31164106 0.4 0.99292126 0.97454567 1.0099107 5.9276206 1380.4406 6265.1974 4.2962963 0.026724138 0 3.7115994 0.99518634 0.97454567 1.0099107 0 0 0 0 0 5400 0 0 0 5975.1486 1 +Loop time of 0.0823423 on 4 procs for 70 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 200 401.00579 -13036.475 1.7412451 5055.0046 7 0.31164106 0.4 0.99292126 0.97454567 1.0099107 5.9276206 1380.4406 6265.1974 5.8 0.026724138 0 3.7115994 0.99518634 0.97454567 1.0099107 0 0 0 0 0 4000 0 0 0 5960.9703 1 + 300 393.06665 -13036.447 1.2104123 4309.6701 6 0.25677049 0.4 0.99077715 0.96163085 1.0121227 5.9276206 1380.4406 5967.5417 5.82 0.03722795 0.0011454754 3.7958861 0.99407566 0.96163085 1.0121227 0 0 0 0 0 6000 0 0 0 2438.7867 0 +Loop time of 0.07828 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 300 393.06665 -13036.447 1.2104123 4309.6701 6 0.25677049 0.4 0.99077715 0.96163085 1.0121227 5.9276206 1380.4406 5967.5417 5.82 0.03722795 0.0011454754 3.7958861 0.99407566 0.96163085 1.0121227 0 0 0 0 0 6000 0 0 0 2438.7867 0 + 371 393.06665 -13101.057 1.2104123 4309.6701 6 0.25677049 0.4 0.99077715 0.96163085 1.0121227 5.9276206 1380.4406 5967.5417 4.7061995 0.03722795 0.0011454754 3.7958861 0.99407566 0.96163085 1.0121227 0 0 0 0 0 7420 0 0 0 2438.7867 0 +Loop time of 0.0849175 on 4 procs for 71 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 300 393.06665 -13036.447 1.210401 4309.6701 6 0.25677049 0.4 0.99077715 0.96163085 1.0121227 5.9276206 1380.4406 5967.5417 5.82 0.03722795 0.0011454754 3.7958861 0.99407566 0.96163085 1.0121227 0 0 0 0 0 6000 0 0 0 2432.9129 0 + 400 395.31214 -13036.548 0.97543536 3697.18 5 0.29627573 0.4 0.99121527 0.95719757 1.0171656 5.9276206 1380.4406 5405.5572 5.8525 0.064502349 0.00085433575 3.8763827 0.99330778 0.95719757 1.0171656 0 0 0 0 0 8000 0 0 0 1494.721 0 +Loop time of 0.0789399 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 400 395.31214 -13036.548 0.97543536 3697.18 5 0.29627573 0.4 0.99121527 0.95719757 1.0171656 5.9276206 1380.4406 5405.5572 5.8525 0.064502349 0.00085433575 3.8763827 0.99330778 0.95719757 1.0171656 0 0 0 0 0 8000 0 0 0 1494.721 0 + 472 395.31214 -13101.057 0.97543536 3697.18 5 0.29627573 0.4 0.99121527 0.95719757 1.0171656 5.9276206 1380.4406 5405.5572 4.9597458 0.064502349 0.00085433575 3.8763827 0.99330778 0.95719757 1.0171656 0 0 0 0 0 9440 0 0 0 1494.721 0 +Loop time of 0.0826263 on 4 procs for 72 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 400 395.31214 -13036.548 0.97546459 3697.18 5 0.29627573 0.4 0.99121527 0.95719757 1.0171656 5.9276206 1380.4406 5405.5572 5.8525 0.064502349 0.00085433575 3.8763827 0.99330778 0.95719757 1.0171656 0 0 0 0 0 8000 0 0 0 1495.2683 0 + 500 407.51943 -13034.684 1.5129292 3762.6056 7 0.32103986 0.4 0.99260954 0.95025478 1.023175 5.9276206 1380.4406 4945.9788 5.798 0.092100724 0.00068989307 3.8763827 0.99301979 0.95024238 1.023175 0 0 0 0 0 10000 0 0 0 2846.6451 1 +Loop time of 0.0785343 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 500 407.51943 -13034.684 1.5129292 3762.6056 7 0.32103986 0.4 0.99260954 0.95025478 1.023175 5.9276206 1380.4406 4945.9788 5.798 0.092100724 0.00068989307 3.8763827 0.99301979 0.95024238 1.023175 0 0 0 0 0 10000 0 0 0 2846.6451 1 + 570 407.51943 -13101.057 1.5129292 3762.6056 7 0.32103986 0.4 0.99260954 0.95025478 1.023175 5.9276206 1380.4406 4945.9788 5.0859649 0.092100724 0.00068989307 3.8763827 0.99301979 0.95024238 1.023175 0 0 0 0 0 11400 0 0 0 2846.6451 1 +Loop time of 0.0831875 on 4 procs for 70 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 500 407.51943 -13034.684 1.5129263 3762.6056 7 0.32103986 0.4 0.99260954 0.95025478 1.023175 5.9276206 1380.4406 4945.9788 5.798 0.092100724 0.00068989307 3.8763827 0.99301979 0.95024238 1.023175 0 0 0 0 0 10000 0 0 0 2845.3486 1 + 600 403.68879 -13034.437 1.6119602 3538.1789 8 0.37263827 0.4 0.99175914 0.94814388 1.0294169 5.9276206 1380.4406 4879.0252 5.805 0.091587712 0.0054550675 3.8763827 0.99287249 0.94770585 1.0294169 0 0 0 0 0 12000 0 0 0 4550.0103 1 +Loop time of 0.0778956 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 600 403.68879 -13034.437 1.6119602 3538.1789 8 0.37263827 0.4 0.99175914 0.94814388 1.0294169 5.9276206 1380.4406 4879.0252 5.805 0.091587712 0.0054550675 3.8763827 0.99287249 0.94770585 1.0294169 0 0 0 0 0 12000 0 0 0 4550.0103 1 + 673 403.68879 -13101.057 1.6119602 3538.1789 8 0.37263827 0.4 0.99175914 0.94814388 1.0294169 5.9276206 1380.4406 4879.0252 5.1753343 0.091587712 0.0054550675 3.8763827 0.99287249 0.94770585 1.0294169 0 0 0 0 0 13460 0 0 0 4550.0103 1 +Loop time of 0.0866084 on 4 procs for 73 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 600 403.68879 -13034.437 1.6118577 3538.1789 8 0.37263827 0.4 0.99175914 0.94814388 1.0294169 5.9276206 1380.4406 4879.0252 5.805 0.091587712 0.0054550675 3.8763827 0.99287249 0.94770585 1.0294169 0 0 0 0 0 12000 0 0 0 4540.524 1 + 700 402.40951 -13034.611 0.81457022 3996.0376 5 0.31795282 0.4 0.99307568 0.9469785 1.0356629 5.9276206 1380.4406 4633.0803 5.7657143 0.10332012 0.0047076313 3.8763827 0.9927955 0.94558506 1.0356629 0 0 0 0 0 14000 0 0 0 2433.3681 2 +Loop time of 0.0783963 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 700 402.40951 -13034.611 0.81457022 3996.0376 5 0.31795282 0.4 0.99307568 0.9469785 1.0356629 5.9276206 1380.4406 4633.0803 5.7657143 0.10332012 0.0047076313 3.8763827 0.9927955 0.94558506 1.0356629 0 0 0 0 0 14000 0 0 0 2433.3681 2 + 773 402.40951 -13101.057 0.81457022 3996.0376 5 0.31795282 0.4 0.99307568 0.9469785 1.0356629 5.9276206 1380.4406 4633.0803 5.221216 0.10332012 0.0047076313 3.8763827 0.9927955 0.94558506 1.0356629 0 0 0 0 0 15460 0 0 0 2433.3681 2 +Loop time of 0.0879632 on 4 procs for 73 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 700 402.40951 -13034.611 0.8145522 3996.0376 5 0.31795282 0.4 0.99307568 0.9469785 1.0356629 5.9276206 1380.4406 4633.0803 5.7657143 0.10332012 0.0047076313 3.8763827 0.9927955 0.94558506 1.0356629 0 0 0 0 0 14000 0 0 0 2429.4864 2 + 800 404.0219 -13035.35 2.0280594 2522.768 9 0.29614163 0.4 0.99235515 0.94241897 1.041911 5.9276206 1380.4406 4611.5881 5.75 0.1123913 0.0041304348 3.8763827 0.99277876 0.94229366 1.041911 0 0 0 0 0 16000 0 0 0 3341.5414 0 +Loop time of 0.0830372 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 800 404.0219 -13035.35 2.0280594 2522.768 9 0.29614163 0.4 0.99235515 0.94241897 1.041911 5.9276206 1380.4406 4611.5881 5.75 0.1123913 0.0041304348 3.8763827 0.99277876 0.94229366 1.041911 0 0 0 0 0 16000 0 0 0 3341.5414 0 + 875 404.0219 -13101.057 2.0280594 2522.768 9 0.29614163 0.4 0.99235515 0.94241897 1.041911 5.9276206 1380.4406 4611.5881 5.2571429 0.1123913 0.0041304348 3.8763827 0.99277876 0.94229366 1.041911 0 0 0 0 0 17500 0 0 0 3341.5414 0 +Loop time of 0.106053 on 4 procs for 75 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 800 404.0219 -13035.35 2.0280349 2522.768 9 0.29614163 0.4 0.99235515 0.94241897 1.041911 5.9276206 1380.4406 4611.5881 5.75 0.1123913 0.0041304348 3.8763827 0.99277876 0.94229366 1.041911 0 0 0 0 0 16000 0 0 0 3339.579 0 + 900 399.91074 -13034.973 0.95275442 3161.8387 5 0.36638548 0.4 0.99295506 0.93909912 1.0481595 5.9276206 1380.4406 4500.9735 5.7177778 0.12436844 0.0038865138 3.8763827 0.99275079 0.93842885 1.0481595 0 0 0 0 0 18000 0 0 0 1628.7316 2 +Loop time of 0.0954949 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 900 399.91074 -13034.973 0.95275442 3161.8387 5 0.36638548 0.4 0.99295506 0.93909912 1.0481595 5.9276206 1380.4406 4500.9735 5.7177778 0.12436844 0.0038865138 3.8763827 0.99275079 0.93842885 1.0481595 0 0 0 0 0 18000 0 0 0 1628.7316 2 + 976 399.91074 -13102.244 0.95275442 3161.8387 5 0.36638548 0.4 0.99295506 0.93909912 1.0481595 5.9276206 1380.4406 4500.9735 5.272541 0.12436844 0.0038865138 3.8763827 0.99275079 0.93842885 1.0481595 0 0 0 0 0 19520 0 0 0 1628.7316 2 +Loop time of 0.0902783 on 4 procs for 76 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 900 399.91074 -13034.973 0.95307991 3160.9514 5 0.42271366 0.4 0.99267641 0.93909912 1.0481595 5.9292845 1379.4982 4500.9735 5.7177778 0.12436844 0.0038865138 3.8763827 0.99275079 0.93842885 1.0481595 2.7471779 0 0 0 0 18000 1 1 4 1627.8857 2 + 1000 417.82316 -13039.554 1.4089391 6086.7002 6 0.2668611 0.4 0.99526586 0.94236305 1.0494983 5.9292845 1379.4982 4302.6407 5.774 0.12573606 0.0034638033 3.8763827 0.99291291 0.93842885 1.0529963 2.7471779 0 0 0 0 20000 1 1 4 10750.027 0 +Loop time of 0.0780252 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1000 417.82316 -13039.554 1.4089391 6086.7002 6 0.2668611 0.4 0.99526586 0.94236305 1.0494983 5.9292845 1379.4982 4302.6407 5.774 0.12573606 0.0034638033 3.8763827 0.99291291 0.93842885 1.0529963 2.7471779 0 0 0 0 20000 1 1 4 10750.027 0 + 1069 417.82316 -13102.244 1.4089391 6086.7002 6 0.2668611 0.4 0.99526586 0.94236305 1.0494983 5.9292845 1379.4982 4302.6407 5.4013096 0.12573606 0.0034638033 3.8763827 0.99291291 0.93842885 1.0529963 2.7471779 0 0 0 0 21380 1 1 4 10750.027 0 +Loop time of 0.0806106 on 4 procs for 69 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1000 417.82316 -13039.554 1.4087876 6086.7002 6 0.2668611 0.4 0.99526586 0.94236305 1.0494983 5.9292845 1379.4982 4302.6407 5.774 0.12573606 0.0034638033 3.8763827 0.99291291 0.93842885 1.0529963 2.7471779 0 0 0 0 20000 1 1 4 10700.259 0 + 1100 388.96194 -13034.299 1.2536756 3347.844 7 0.31351452 0.4 0.99338469 0.94091364 1.0522698 5.9292845 1379.4982 4384.5779 5.7981818 0.11774851 0.0039197241 3.8763827 0.99302197 0.93842885 1.0529963 2.7471779 0 0 0 0 22000 1 1 4 3842.8412 1 +Loop time of 0.078698 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1100 388.96194 -13034.299 1.2536756 3347.844 7 0.31351452 0.4 0.99338469 0.94091364 1.0522698 5.9292845 1379.4982 4384.5779 5.7981818 0.11774851 0.0039197241 3.8763827 0.99302197 0.93842885 1.0529963 2.7471779 0 0 0 0 22000 1 1 4 3842.8412 1 + 1169 388.96194 -13102.244 1.2536756 3347.844 7 0.31351452 0.4 0.99338469 0.94091364 1.0522698 5.9292845 1379.4982 4384.5779 5.4559453 0.11774851 0.0039197241 3.8763827 0.99302197 0.93842885 1.0529963 2.7471779 0 0 0 0 23380 1 1 4 3842.8412 1 +Loop time of 0.0793428 on 4 procs for 69 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1100 388.96194 -13034.299 1.2536216 3347.844 7 0.31351452 0.4 0.99338469 0.94091364 1.0522698 5.9292845 1379.4982 4384.5779 5.7981818 0.11774851 0.0039197241 3.8763827 0.99302197 0.93842885 1.0529963 2.7471779 0 0 0 0 22000 1 1 4 3837.378 1 + 1200 416.13133 -13039.115 1.136132 3568.4524 6 0.35533996 0.4 0.99425562 0.9364246 1.0585182 5.9292845 1379.4982 4306.0803 5.8033333 0.12464101 0.0035898909 4.0254085 0.99310701 0.9364246 1.0585182 2.7471779 0 0 0 0 24000 1 1 4 2979.741 3 +Loop time of 0.0783656 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1200 416.13133 -13039.115 1.136132 3568.4524 6 0.35533996 0.4 0.99425562 0.9364246 1.0585182 5.9292845 1379.4982 4306.0803 5.8033333 0.12464101 0.0035898909 4.0254085 0.99310701 0.9364246 1.0585182 2.7471779 0 0 0 0 24000 1 1 4 2979.741 3 + 1273 416.13133 -13102.244 1.136132 3568.4524 6 0.35533996 0.4 0.99425562 0.9364246 1.0585182 5.9292845 1379.4982 4306.0803 5.470542 0.12464101 0.0035898909 4.0254085 0.99310701 0.9364246 1.0585182 2.7471779 0 0 0 0 25460 1 1 4 2979.741 3 +Loop time of 0.0876518 on 4 procs for 73 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1200 416.13133 -13039.115 1.1361057 3568.4524 6 0.35533996 0.4 0.99425562 0.9364246 1.0585182 5.9292845 1379.4982 4306.0803 5.8033333 0.12464101 0.0035898909 4.0254085 0.99310701 0.9364246 1.0585182 2.7471779 0 0 0 0 24000 1 1 4 2976.9031 3 + 1300 410.00168 -13035.264 0.69108116 2815.6646 5 0.33760803 0.4 0.99554496 0.93639346 1.064754 5.9292845 1379.4982 4219.0606 5.7769231 0.12822903 0.0045272969 4.0475228 0.99322786 0.93631673 1.064754 2.7471779 0 0 0 0 26000 1 1 4 3571.3217 2 +Loop time of 0.0806069 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1300 410.00168 -13035.264 0.69108116 2815.6646 5 0.33760803 0.4 0.99554496 0.93639346 1.064754 5.9292845 1379.4982 4219.0606 5.7769231 0.12822903 0.0045272969 4.0475228 0.99322786 0.93631673 1.064754 2.7471779 0 0 0 0 26000 1 1 4 3571.3217 2 + 1372 410.00168 -13102.244 0.69108116 2815.6646 5 0.33760803 0.4 0.99554496 0.93639346 1.064754 5.9292845 1379.4982 4219.0606 5.4737609 0.12822903 0.0045272969 4.0475228 0.99322786 0.93631673 1.064754 2.7471779 0 0 0 0 27440 1 1 4 3571.3217 2 +Loop time of 0.101343 on 4 procs for 72 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1300 410.00168 -13035.264 0.69104928 2815.6646 5 0.33760803 0.4 0.99554496 0.93639346 1.064754 5.9292845 1379.4982 4219.0606 5.7769231 0.12822903 0.0045272969 4.0475228 0.99322786 0.93631673 1.064754 2.7471779 0 0 0 0 26000 1 1 4 3567.5136 2 + 1400 423.4606 -13036.225 1.703102 2579.4314 7 0.24557477 0.4 0.99782055 0.93345496 1.0682561 5.9292845 1379.4982 4099.3865 5.7721429 0.12609826 0.0042074001 4.0475228 0.99346354 0.93345496 1.0682561 2.7471779 0 0 0 0 28000 1 1 4 2627.7529 0 +Loop time of 0.0779268 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1400 423.4606 -13036.225 1.703102 2579.4314 7 0.24557477 0.4 0.99782055 0.93345496 1.0682561 5.9292845 1379.4982 4099.3865 5.7721429 0.12609826 0.0042074001 4.0475228 0.99346354 0.93345496 1.0682561 2.7471779 0 0 0 0 28000 1 1 4 2627.7529 0 + 1472 423.4606 -13102.244 1.703102 2579.4314 7 0.24557477 0.4 0.99782055 0.93345496 1.0682561 5.9292845 1379.4982 4099.3865 5.4898098 0.12609826 0.0042074001 4.0475228 0.99346354 0.93345496 1.0682561 2.7471779 0 0 0 0 29440 1 1 4 2627.7529 0 +Loop time of 0.0863118 on 4 procs for 72 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1400 423.4606 -13036.225 1.7031193 2579.4314 7 0.24557477 0.4 0.99782055 0.93345496 1.0682561 5.9292845 1379.4982 4099.3865 5.7721429 0.12609826 0.0042074001 4.0475228 0.99346354 0.93345496 1.0682561 2.7471779 0 0 0 0 28000 1 1 4 2626.4636 0 + 1500 417.42191 -13035.425 0.63879915 3265.9276 5 0.29228757 0.4 1.0007582 0.93528148 1.0742773 5.9292845 1379.4982 3967.4215 5.808 0.12396694 0.003902663 4.0475228 0.99383929 0.9320167 1.0742773 2.7471779 0 0 0 0 30000 1 1 4 1469.864 0 +Loop time of 0.078608 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1500 417.42191 -13035.425 0.63879915 3265.9276 5 0.29228757 0.4 1.0007582 0.93528148 1.0742773 5.9292845 1379.4982 3967.4215 5.808 0.12396694 0.003902663 4.0475228 0.99383929 0.9320167 1.0742773 2.7471779 0 0 0 0 30000 1 1 4 1469.864 0 + 1575 417.42191 -13102.244 0.63879915 3265.9276 5 0.29228757 0.4 1.0007582 0.93528148 1.0742773 5.9292845 1379.4982 3967.4215 5.5314286 0.12396694 0.003902663 4.0475228 0.99383929 0.9320167 1.0742773 2.7471779 0 0 0 0 31500 1 1 4 1469.864 0 +Loop time of 0.0875254 on 4 procs for 75 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1500 417.42191 -13035.425 0.63881053 3265.9276 5 0.29228757 0.4 1.0007582 0.93528148 1.0742773 5.9292845 1379.4982 3967.4215 5.808 0.12396694 0.003902663 4.0475228 0.99383929 0.9320167 1.0742773 2.7471779 0 0 0 0 30000 1 1 4 1469.1489 0 + 1600 401.08407 -13036.858 2.3070534 2462.029 9 0.26709092 0.4 1.0019205 0.93145421 1.0802698 5.9292845 1379.4982 3922.9667 5.83625 0.12368816 0.0036410366 4.0475228 0.9942857 0.93077554 1.0802698 2.7471779 0 0 0 0 32000 1 1 4 5228.0098 0 +Loop time of 0.0780517 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1600 401.08407 -13036.858 2.3070534 2462.029 9 0.26709092 0.4 1.0019205 0.93145421 1.0802698 5.9292845 1379.4982 3922.9667 5.83625 0.12368816 0.0036410366 4.0475228 0.9942857 0.93077554 1.0802698 2.7471779 0 0 0 0 32000 1 1 4 5228.0098 0 + 1667 401.08407 -13102.244 2.3070534 2462.029 9 0.26709092 0.4 1.0019205 0.93145421 1.0802698 5.9292845 1379.4982 3922.9667 5.6016797 0.12368816 0.0036410366 4.0475228 0.9942857 0.93077554 1.0802698 2.7471779 0 0 0 0 33340 1 1 4 5228.0098 0 +Loop time of 0.0795826 on 4 procs for 67 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1600 401.08407 -13036.858 2.3069745 2462.029 9 0.26709092 0.4 1.0019205 0.93145421 1.0802698 5.9292845 1379.4982 3922.9667 5.83625 0.12368816 0.0036410366 4.0475228 0.9942857 0.93077554 1.0802698 2.7471779 0 0 0 0 32000 1 1 4 5216.9826 0 + 1700 390.57304 -13035.592 0.75779993 1179.4046 6 0.28725951 0.4 1.0026134 0.9311732 1.0858013 5.9292845 1379.4982 3901.4109 5.8264706 0.12155477 0.003634528 4.0475228 0.99473366 0.93050239 1.0858013 2.7471779 0 0 0 0 34000 1 1 4 400.12853 0 +Loop time of 0.0782826 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1700 390.57304 -13035.592 0.75779993 1179.4046 6 0.28725951 0.4 1.0026134 0.9311732 1.0858013 5.9292845 1379.4982 3901.4109 5.8264706 0.12155477 0.003634528 4.0475228 0.99473366 0.93050239 1.0858013 2.7471779 0 0 0 0 34000 1 1 4 400.12853 0 + 1769 390.57304 -13102.244 0.75779993 1179.4046 6 0.28725951 0.4 1.0026134 0.9311732 1.0858013 5.9292845 1379.4982 3901.4109 5.5992086 0.12155477 0.003634528 4.0475228 0.99473366 0.93050239 1.0858013 2.7471779 0 0 0 0 35380 1 1 4 400.12853 0 +Loop time of 0.0823042 on 4 procs for 69 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1700 390.57304 -13035.592 0.75783515 1179.4046 6 0.28725951 0.4 1.0026134 0.9311732 1.0858013 5.9292845 1379.4982 3901.4109 5.8264706 0.12155477 0.003634528 4.0475228 0.99473366 0.93050239 1.0858013 2.7471779 0 0 0 0 34000 1 1 4 400.32271 0 + 1800 398.05229 -13039.968 1.4993394 4237.7772 6 0.25966095 0.4 1.0035311 0.929455 1.0894688 5.9292845 1379.4982 3874.257 5.8227778 0.11487453 0.0034347868 4.0475228 0.99520141 0.929455 1.0894875 2.7471779 0 0 0 0 36000 1 1 4 5377.4056 0 +Loop time of 0.07784 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1800 398.05229 -13039.968 1.4993394 4237.7772 6 0.25966095 0.4 1.0035311 0.929455 1.0894688 5.9292845 1379.4982 3874.257 5.8227778 0.11487453 0.0034347868 4.0475228 0.99520141 0.929455 1.0894875 2.7471779 0 0 0 0 36000 1 1 4 5377.4056 0 + 1870 398.05229 -13102.244 1.4993394 4237.7772 6 0.25966095 0.4 1.0035311 0.929455 1.0894688 5.9292845 1379.4982 3874.257 5.6048128 0.11487453 0.0034347868 4.0475228 0.99520141 0.929455 1.0894875 2.7471779 0 0 0 0 37400 1 1 4 5377.4056 0 +Loop time of 0.0836493 on 4 procs for 70 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1800 398.05229 -13039.968 1.4993215 4237.7772 6 0.25966095 0.4 1.0035311 0.929455 1.0894688 5.9292845 1379.4982 3874.257 5.8227778 0.11487453 0.0034347868 4.0475228 0.99520141 0.929455 1.0894875 2.7471779 0 0 0 0 36000 1 1 4 5369.6279 0 + 1900 413.06274 -13039.873 1.3826465 7339.1562 5 0.22717549 0.4 0.999658 0.92261066 1.0792934 5.9292845 1379.4982 4011.3391 5.8310526 0.11065981 0.0032493907 4.0475228 0.99552368 0.92261066 1.0894875 2.7471779 0 0 0 0 38000 1 1 4 10818.73 0 +Loop time of 0.0805019 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1900 413.06274 -13039.873 1.3826465 7339.1562 5 0.22717549 0.4 0.999658 0.92261066 1.0792934 5.9292845 1379.4982 4011.3391 5.8310526 0.11065981 0.0032493907 4.0475228 0.99552368 0.92261066 1.0894875 2.7471779 0 0 0 0 38000 1 1 4 10818.73 0 + 1969 413.06274 -13102.244 1.3826465 7339.1562 5 0.22717549 0.4 0.999658 0.92261066 1.0792934 5.9292845 1379.4982 4011.3391 5.6267141 0.11065981 0.0032493907 4.0475228 0.99552368 0.92261066 1.0894875 2.7471779 0 0 0 0 39380 1 1 4 10818.73 0 +Loop time of 0.0814294 on 4 procs for 69 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 1900 413.06274 -13039.873 1.3825572 7339.1562 5 0.22717549 0.4 0.999658 0.92261066 1.0792934 5.9292845 1379.4982 4011.3391 5.8310526 0.11065981 0.0032493907 4.0475228 0.99552368 0.92261066 1.0894875 2.7471779 0 0 0 0 38000 1 1 4 10781.258 0 + 2000 399.72382 -13038.217 1.1754671 2735.2303 6 0.31028081 0.4 0.99858834 0.92453074 1.0748234 5.9292845 1379.4982 4045.0012 5.811 0.10841507 0.0030975736 4.0475228 0.99572029 0.922532 1.0894875 2.7471779 0 0 0 0 40000 1 1 4 2622.0819 1 +Loop time of 0.0794099 on 4 procs for 100 steps with 2354 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] + 2000 399.72382 -13038.217 1.1754671 2735.2303 6 0.31028081 0.4 0.99858834 0.92453074 1.0748234 5.9292845 1379.4982 4045.0012 5.811 0.10841507 0.0030975736 4.0475228 0.99572029 0.922532 1.0894875 2.7471779 0 0 0 0 40000 1 1 4 2622.0819 1 + 2071 399.72382 -13102.244 1.1754671 2735.2303 6 0.31028081 0.4 0.99858834 0.92453074 1.0748234 5.9292845 1379.4982 4045.0012 5.6117817 0.10841507 0.0030975736 4.0475228 0.99572029 0.922532 1.0894875 2.7471779 0 0 0 0 41420 1 1 4 2622.0819 1 +Loop time of 0.0837786 on 4 procs for 71 steps with 2354 atoms + +Final hyper stats ... + +Cummulative quantities for fix hyper: + hyper time = 40000 + time boost factor = 4000 + event timesteps = 1 + # of atoms in events = 1 +Quantities for this hyper run: + event timesteps = 1 + # of atoms in events = 1 + max length of any bond = 4.04752 + max drift distance of any atom = 2.74718 + fraction of biased bonds with zero bias = 0.108415 + fraction of biased bonds with negative strain = 0.00309757 +Current quantities: + ave bonds/atom = 5.92928 +Cummulative quantities specific to fix hyper/local: + # of new bonds formed = 4 + max bonds/atom = 12 +Quantities for this hyper run specific to fix hyper/local: + ave boost for all bonds/step = 4045 + ave biased bonds/step = 5.811 + ave bias coeff of all bonds = 0.99572 + min bias coeff of any bond = 0.922532 + max bias coeff of any bond = 1.08949 + max dist from my subbox of any non-maxstrain bond ghost atom = 0 + max dist from my box of any bond ghost atom = 0 + count of bond ghost neighbors not found on reneighbor steps = 0 + bias overlaps = 0 + CPU time for bond builds = 0.00247526 +Current quantities specific to fix hyper/local: + neighbor bonds/bond = 1379.5 + ave boost coeff for all bonds = 0.998588 + +Loop time of 3.52992 on 4 procs for 2000 steps with 2354 atoms + +Performance: 244.765 ns/day, 0.098 hours/ns, 566.585 timesteps/s +114.7% CPU use with 4 MPI tasks x 1 OpenMP threads + +Hyper stats: + Dynamics time (%) = 1.59393 (45.1549) + Quench time (%) = 1.71979 (48.7203) + Other time (%) = 0.219256 (6.21136) + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.4735 | 2.4914 | 2.5135 | 1.0 | 70.58 +Neigh | 0.11535 | 0.11805 | 0.12056 | 0.7 | 3.34 +Comm | 0.20734 | 0.21636 | 0.22119 | 1.1 | 6.13 +Output | 0.00089145 | 0.0014108 | 0.0029645 | 2.4 | 0.04 +Modify | 0.47314 | 0.48343 | 0.49869 | 1.4 | 13.70 +Other | | 0.2193 | | | 6.21 + +Nlocal: 588.5 ave 607 max 577 min +Histogram: 1 0 2 0 0 0 0 0 0 1 +Nghost: 1965.75 ave 1977 max 1947 min +Histogram: 1 0 0 0 0 0 1 0 1 1 +Neighs: 13775.8 ave 14221 max 13511 min +Histogram: 1 1 0 1 0 0 0 0 0 1 +FullNghs: 136920 ave 139934 max 133922 min +Histogram: 1 0 0 1 0 0 1 0 0 1 + +Total # of neighbors = 547678 +Ave neighs/atom = 232.658 +Neighbor list builds = 193 +Dangerous builds = 0 +Total wall time: 0:00:04 diff --git a/examples/hyper/log.9Jan20.hyper.global.g++.4 b/examples/hyper/log.9Jan20.hyper.global.g++.4 deleted file mode 100644 index 46fb8b9c6a..0000000000 --- a/examples/hyper/log.9Jan20.hyper.global.g++.4 +++ /dev/null @@ -1,1250 +0,0 @@ -LAMMPS (09 Jan 2020) -# 3d EAM surface for global HD - -# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92 -# hop event on (100) surface is same distance -# exchange event is 2 atoms moving same distance - -variable Tequil index 500.0 -variable Vmax index 0.5 -variable qfactor index 0.3 -variable cutbond index 3.2 -variable cutevent index 1.1 -variable steps index 100000 -variable nevent index 1000 -variable zoom index 1.8 -variable seed index 826626413 -variable tol index 1.0e-15 - -units metal -atom_style atomic -atom_modify map array -boundary p p p - -lattice fcc 3.92 -Lattice spacing in x,y,z = 3.92 3.92 3.92 -region box block 0 6 0 6 0 4 -create_box 3 box -Created orthogonal box = (0 0 0) to (23.52 23.52 15.68) - 2 by 2 by 1 MPI processor grid -create_atoms 1 box -Created 576 atoms - create_atoms CPU = 0.000653982 secs - -mass * 1.0 - -change_box all z final -0.1 5.0 boundary p p f - orthogonal box = (0 0 -0.392) to (23.52 23.52 19.6) -create_atoms 2 single 3.5 3.5 4 -Created 1 atoms - create_atoms CPU = 5.60284e-05 secs - -# define frozen substrate and mobile atoms - -group adatom type 2 -1 atoms in group adatom -region base block INF INF INF INF 0 1.8 -set region base type 3 - 288 settings made for type -group base type 3 -288 atoms in group base -group mobile type 1 2 -289 atoms in group mobile - -# pair style - -pair_style eam/alloy -pair_coeff * * ptvoterlammps.eam Pt Pt Pt - -neighbor 0.5 bin -neigh_modify every 1 delay 5 check yes - -fix 1 mobile nve -fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes -fix 2 mobile langevin 500.0 ${Tequil} 1.0 ${seed} zero yes -fix 2 mobile langevin 500.0 500.0 1.0 ${seed} zero yes -fix 2 mobile langevin 500.0 500.0 1.0 826626413 zero yes - -timestep 0.005 - -compute tmobile mobile temp - -thermo 100 -thermo_modify temp tmobile -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:485) - -# thermal equilibration - -run 1000 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.07583 - ghost atom cutoff = 6.07583 - binsize = 3.03792, bins = 8 8 7 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair eam/alloy, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/3d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 3.328 | 3.328 | 3.328 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0 -3213.9136 0 -3213.9136 -51843.125 - 100 223.70164 -3209.0653 0 -3200.7375 -26575.84 - 200 345.18355 -3206.1371 0 -3193.2869 -42327.268 - 300 411.05681 -3203.8465 0 -3188.5442 -32455.226 - 400 446.05938 -3202.2976 0 -3185.6922 -35377.683 - 500 435.52439 -3200.2131 0 -3183.9999 -31477.028 - 600 474.70282 -3199.4049 0 -3181.7332 -34761.287 - 700 492.00191 -3201.1592 0 -3182.8435 -33036.989 - 800 440.88631 -3198.37 0 -3181.9572 -34669.762 - 900 475.14414 -3198.5845 0 -3180.8964 -31191.883 - 1000 476.87852 -3197.3442 0 -3179.5914 -33731.074 -Loop time of 0.32812 on 4 procs for 1000 steps with 577 atoms - -Performance: 1316.591 ns/day, 0.018 hours/ns, 3047.663 timesteps/s -99.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 | 0.24701 | 0.2559 | 0.26123 | 1.1 | 77.99 -Neigh | 0.016621 | 0.017332 | 0.018001 | 0.5 | 5.28 -Comm | 0.036607 | 0.039526 | 0.046 | 1.9 | 12.05 -Output | 0 | 0.00011289 | 0.00027895 | 0.0 | 0.03 -Modify | 0.010864 | 0.011739 | 0.013 | 0.8 | 3.58 -Other | | 0.003509 | | | 1.07 - -Nlocal: 144.25 ave 147 max 141 min -Histogram: 1 0 0 1 0 0 0 0 1 1 -Nghost: 527.5 ave 533 max 523 min -Histogram: 1 0 0 0 2 0 0 0 0 1 -Neighs: 3477.25 ave 3585 max 3399 min -Histogram: 1 0 1 0 1 0 0 0 0 1 - -Total # of neighbors = 13909 -Ave neighs/atom = 24.1057 -Neighbor list builds = 91 -Dangerous builds = 0 -reset_timestep 0 - -# pin base so will not move during quenches - -fix freeze base setforce 0.0 0.0 0.0 - -# event detection - -compute event all event/displace ${cutevent} -compute event all event/displace 1.1 - -# hyper/global - -fix HG mobile hyper/global ${cutbond} ${qfactor} ${Vmax} ${Tequil} -fix HG mobile hyper/global 3.2 ${qfactor} ${Vmax} ${Tequil} -fix HG mobile hyper/global 3.2 0.3 ${Vmax} ${Tequil} -fix HG mobile hyper/global 3.2 0.3 0.5 ${Tequil} -fix HG mobile hyper/global 3.2 0.3 0.5 500.0 - -# thermo output - -thermo_style custom step temp pe f_HG f_HG[*] -WARNING: New thermo_style command, previous thermo_modify settings will be lost (../output.cpp:708) - -thermo_modify lost ignore -thermo_modify temp tmobile -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:485) - -thermo ${nevent} -thermo 1000 - -# dump output options - -region substrate block INF INF INF INF 1.8 3.8 -region adatoms block INF INF INF INF 3.8 INF -variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms) - -dump 1 all image 1000000 global.*.jpg v_acolor type zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 -dump 1 all image 1000000 global.*.jpg v_acolor type zoom 1.8 adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 -dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green - -# run - -hyper ${steps} ${nevent} HG event min ${tol} ${tol} 1000 1000 dump 1 -hyper 100000 ${nevent} HG event min ${tol} ${tol} 1000 1000 dump 1 -hyper 100000 1000 HG event min ${tol} ${tol} 1000 1000 dump 1 -hyper 100000 1000 HG event min 1.0e-15 ${tol} 1000 1000 dump 1 -hyper 100000 1000 HG event min 1.0e-15 1.0e-15 1000 1000 dump 1 -WARNING: Resetting reneighboring criteria during hyper (../hyper.cpp:131) -Neighbor list info ... - update every 1 steps, delay 0 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.07583 - ghost atom cutoff = 6.07583 - binsize = 3.03792, bins = 8 8 7 - 2 neighbor lists, perpetual/occasional/extra = 1 1 0 - (1) pair eam/alloy, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/3d/newton - bin: standard - (2) fix hyper/global, occasional, copy from (1) - attributes: half, newton on - pair build: copy - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 6.015 | 6.015 | 6.015 Mbytes -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 0 476.87852 -3197.3442 0 0 0 0 0 0 0 0 0 0 0 0 0 - 53 476.87852 -3217.9192 0 0 0 0 0 0 0 0 0 0 0 0 0 -Loop time of 0.03334 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 0 476.87852 -3197.3442 0.33187212 2213.7063 0.17396269 129 131 5.9965398 0 0 0 3.3552688 0 0 0 - 1000 487.34979 -3198.3697 0.19401776 90.283981 0.23468448 543 548 5.9965398 0.165 0 0 3.9974111 6134.6092 0 0 -Loop time of 0.316692 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 1000 487.34979 -3198.3697 0.19401776 90.283981 0.23468448 543 548 5.9965398 0.165 0 0 3.9974111 6134.6092 0 0 - 1059 487.34979 -3217.9192 0.19401776 90.283981 0.23468448 543 548 5.9965398 0.15580737 0 0 3.9974111 6134.6092 0 0 -Loop time of 0.0318432 on 4 procs for 59 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 1000 487.34979 -3198.3697 0.19401776 90.283981 0.23468448 543 548 5.9965398 0.165 0 0 3.9974111 6134.6092 0 0 - 2000 522.93873 -3197.4748 0.1540961 35.745265 0.24952495 120 131 5.9965398 0.1645 0 0 4.0370436 10213.644 0 0 -Loop time of 0.28388 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 2000 522.93873 -3197.4748 0.1540961 35.745265 0.24952495 120 131 5.9965398 0.1645 0 0 4.0370436 10213.644 0 0 - 2057 522.93873 -3217.9192 0.1540961 35.745265 0.24952495 120 131 5.9965398 0.15994166 0 0 4.0370436 10213.644 0 0 -Loop time of 0.0298612 on 4 procs for 57 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 2000 522.93873 -3197.4748 0.1540961 35.745265 0.24952495 120 131 5.9965398 0.1645 0 0 4.0370436 10213.644 0 0 - 3000 485.3853 -3198.0446 0.081070047 6.563707 0.27460406 120 131 5.9965398 0.145 0 0 4.0370436 13331.739 0 0 -Loop time of 0.278586 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 3000 485.3853 -3198.0446 0.081070047 6.563707 0.27460406 120 131 5.9965398 0.145 0 0 4.0370436 13331.739 0 0 - 3059 485.3853 -3217.9192 0.081070047 6.563707 0.27460406 120 131 5.9965398 0.14220333 0 0 4.0370436 13331.739 0 0 -Loop time of 0.0294401 on 4 procs for 59 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 3000 485.3853 -3198.0446 0.081070047 6.563707 0.27460406 120 131 5.9965398 0.145 0 0 4.0370436 13331.739 0 0 - 4000 522.88476 -3199.0496 0.020170911 1.5970319 0.29388643 548 555 5.9965398 0.17575 0 0 4.0370436 14355.723 0 0 -Loop time of 0.276319 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 4000 522.88476 -3199.0496 0.020170911 1.5970319 0.29388643 548 555 5.9965398 0.17575 0 0 4.0370436 14355.723 0 0 - 4060 522.88476 -3217.9192 0.020170911 1.5970319 0.29388643 548 555 5.9965398 0.17315271 0 0 4.0370436 14355.723 0 0 -Loop time of 0.0318875 on 4 procs for 60 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 4000 522.88476 -3199.0496 0.020170911 1.5970319 0.29388643 548 555 5.9965398 0.17575 0 0 4.0370436 14355.723 0 0 - 5000 462.24647 -3197.3076 0.11575138 14.679837 0.26299192 130 132 5.9965398 0.1664 0 0 4.0370436 19342.466 0 0 -Loop time of 0.27626 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 5000 462.24647 -3197.3076 0.11575138 14.679837 0.26299192 130 132 5.9965398 0.1664 0 0 4.0370436 19342.466 0 0 - 5054 462.24647 -3217.9192 0.11575138 14.679837 0.26299192 130 132 5.9965398 0.16462208 0 0 4.0370436 19342.466 0 0 -Loop time of 0.028037 on 4 procs for 54 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 5000 462.24647 -3197.3076 0.11575138 14.679837 0.26299192 130 132 5.9965398 0.1664 0 0 4.0370436 19342.466 0 0 - 6000 463.33022 -3196.1897 0.37378421 5855.6457 0.15072771 122 123 5.9965398 0.15583333 0 0 4.0370436 22854.021 0 0 -Loop time of 0.349943 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 6000 463.33022 -3196.1897 0.37378421 5855.6457 0.15072771 122 123 5.9965398 0.15583333 0 0 4.0370436 22854.021 0 0 - 6054 463.33022 -3217.9192 0.37378421 5855.6457 0.15072771 122 123 5.9965398 0.15444334 0 0 4.0370436 22854.021 0 0 -Loop time of 0.045652 on 4 procs for 54 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 6000 463.33022 -3196.1897 0.37378421 5855.6457 0.15072771 122 123 5.9965398 0.15583333 0 0 4.0370436 22854.021 0 0 - 7000 496.34089 -3198.1795 0.29031005 843.70994 0.19427864 547 552 5.9965398 0.14885714 0 0 4.1079381 27854.511 0 0 -Loop time of 0.325437 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 7000 496.34089 -3198.1795 0.29031005 843.70994 0.19427864 547 552 5.9965398 0.14885714 0 0 4.1079381 27854.511 0 0 - 7055 496.34089 -3217.9192 0.29031005 843.70994 0.19427864 547 552 5.9965398 0.14769667 0 0 4.1079381 27854.511 0 0 -Loop time of 0.0330945 on 4 procs for 55 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 7000 496.34089 -3198.1795 0.29031005 843.70994 0.19427864 547 552 5.9965398 0.14885714 0 0 4.1079381 27854.511 0 0 - 8000 468.63017 -3197.6685 0 1 0.31412476 275 556 5.9965398 0.14075 0.00175 0 4.1079381 31930.231 0 0 -Loop time of 0.315618 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 8000 468.63017 -3197.6685 0 1 0.31412476 275 556 5.9965398 0.14075 0.00175 0 4.1079381 31930.231 0 0 - 8056 468.63017 -3217.9192 0 1 0.31412476 275 556 5.9965398 0.1397716 0.0017378352 0 4.1079381 31930.231 0 0 -Loop time of 0.0316615 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 8000 468.63017 -3197.6685 0 1 0.31412476 275 556 5.9965398 0.14075 0.00175 0 4.1079381 31930.231 0 0 - 9000 467.53307 -3198.3982 0 1 0.3075376 543 544 5.9965398 0.14888889 0.0015555556 0 4.1079381 35292.432 0 0 -Loop time of 0.297179 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 9000 467.53307 -3198.3982 0 1 0.3075376 543 544 5.9965398 0.14888889 0.0015555556 0 4.1079381 35292.432 0 0 - 9051 467.53307 -3217.9192 0 1 0.3075376 543 544 5.9965398 0.14804994 0.0015467904 0 4.1079381 35292.432 0 0 -Loop time of 0.0277896 on 4 procs for 51 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 9000 467.53307 -3198.3982 0 1 0.3075376 543 544 5.9965398 0.14888889 0.0015555556 0 4.1079381 35292.432 0 0 - 10000 496.73768 -3197.9106 0.11921512 15.908682 0.26180389 543 548 5.9965398 0.1531 0.0014 0 4.1079381 40303.236 0 0 -Loop time of 0.277951 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 10000 496.73768 -3197.9106 0.11921512 15.908682 0.26180389 543 548 5.9965398 0.1531 0.0014 0 4.1079381 40303.236 0 0 - 10061 496.73768 -3217.9192 0.11921512 15.908682 0.26180389 543 548 5.9965398 0.15217175 0.0013915118 0 4.1079381 40303.236 0 0 -Loop time of 0.0319217 on 4 procs for 61 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 10000 496.73768 -3197.9106 0.11921512 15.908682 0.26180389 543 548 5.9965398 0.1531 0.0014 0 4.1079381 40303.236 0 0 - 11000 526.76049 -3199.3263 0.24399827 287.99939 0.21466325 408 419 5.9965398 0.15945455 0.0012727273 0 4.1079381 42710.668 0 0 -Loop time of 0.275999 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 11000 526.76049 -3199.3263 0.24399827 287.99939 0.21466325 408 419 5.9965398 0.15945455 0.0012727273 0 4.1079381 42710.668 0 0 - 11058 526.76049 -3217.9192 0.24399827 287.99939 0.21466325 408 419 5.9965398 0.15861819 0.0012660517 0 4.1079381 42710.668 0 0 -Loop time of 0.0311032 on 4 procs for 58 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 11000 526.76049 -3199.3263 0.24399827 287.99939 0.21466325 408 419 5.9965398 0.15945455 0.0012727273 0 4.1079381 42710.668 0 0 - 12000 488.24107 -3198.2441 0.34073209 2719.0951 0.16931693 409 400 5.9965398 0.15558333 0.0011666667 0 4.1079381 47154.117 0 0 -Loop time of 0.274665 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 12000 488.24107 -3198.2441 0.34073209 2719.0951 0.16931693 409 400 5.9965398 0.15558333 0.0011666667 0 4.1079381 47154.117 0 0 - 12053 488.24107 -3217.9192 0.34073209 2719.0951 0.16931693 409 400 5.9965398 0.1548992 0.0011615365 0 4.1079381 47154.117 0 0 -Loop time of 0.0280858 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 12000 488.24107 -3198.2441 0.34073209 2719.0951 0.16931693 409 400 5.9965398 0.15558333 0.0011666667 0 4.1079381 47154.117 0 0 - 13000 467.87203 -3197.0681 0 1 0.32542353 275 556 5.9965398 0.14869231 0.0015384615 0 4.1079381 54700.864 0 0 -Loop time of 0.28023 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 13000 467.87203 -3197.0681 0 1 0.32542353 275 556 5.9965398 0.14869231 0.0015384615 0 4.1079381 54700.864 0 0 - 13055 467.87203 -3217.9192 0 1 0.32542353 275 556 5.9965398 0.14806588 0.0015319801 0 4.1079381 54700.864 0 0 -Loop time of 0.028371 on 4 procs for 55 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 13000 467.87203 -3197.0681 0 1 0.32542353 275 556 5.9965398 0.14869231 0.0015384615 0 4.1079381 54700.864 0 0 - 14000 494.97859 -3197.9767 0.061678009 4.1849114 0.2808878 544 555 5.9965398 0.16885714 0.0014285714 0 4.1079381 55284.212 0 0 -Loop time of 0.388833 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 14000 494.97859 -3197.9767 0.061678009 4.1849114 0.2808878 544 555 5.9965398 0.16885714 0.0014285714 0 4.1079381 55284.212 0 0 - 14059 494.97859 -3217.9192 0.061678009 4.1849114 0.2808878 544 555 5.9965398 0.16814852 0.0014225763 0 4.1079381 55284.212 0 0 -Loop time of 0.049931 on 4 procs for 59 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 14000 494.97859 -3197.9767 0.061678009 4.1849114 0.2808878 544 555 5.9965398 0.16885714 0.0014285714 0 4.1079381 55284.212 0 0 - 15000 487.47593 -3196.3193 0 1 0.30681413 124 135 5.9965398 0.16526667 0.0013333333 0 4.1079381 58845.637 0 0 -Loop time of 0.335819 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 15000 487.47593 -3196.3193 0 1 0.30681413 124 135 5.9965398 0.16526667 0.0013333333 0 4.1079381 58845.637 0 0 - 15056 487.47593 -3217.9192 0 1 0.30681413 124 135 5.9965398 0.16465197 0.0013283741 0 4.1079381 58845.637 0 0 -Loop time of 0.0342811 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 15000 487.47593 -3196.3193 0 1 0.30681413 124 135 5.9965398 0.16526667 0.0013333333 0 4.1079381 58845.637 0 0 - 16000 514.29619 -3198.6976 0.15192442 33.988268 0.25030702 287 568 5.9965398 0.160375 0.00125 0 4.1079381 65959.225 0 0 -Loop time of 0.329229 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 16000 514.29619 -3198.6976 0.15192442 33.988268 0.25030702 287 568 5.9965398 0.160375 0.00125 0 4.1079381 65959.225 0 0 - 16057 514.29619 -3217.9192 0.15192442 33.988268 0.25030702 287 568 5.9965398 0.15980569 0.0012455627 0 4.1079381 65959.225 0 0 -Loop time of 0.0350134 on 4 procs for 57 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 16000 514.29619 -3198.6976 0.15192442 33.988268 0.25030702 287 568 5.9965398 0.160375 0.00125 0 4.1079381 65959.225 0 0 - 17000 518.58789 -3197.5021 0.1333678 22.094631 0.25689258 116 123 5.9965398 0.16088235 0.0011764706 0 4.1079381 70525.413 0 0 -Loop time of 0.306954 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 17000 518.58789 -3197.5021 0.1333678 22.094631 0.25689258 116 123 5.9965398 0.16088235 0.0011764706 0 4.1079381 70525.413 0 0 - 17052 518.58789 -3217.9192 0.1333678 22.094631 0.25689258 116 123 5.9965398 0.16039174 0.0011728829 0 4.1079381 70525.413 0 0 -Loop time of 0.0273 on 4 procs for 52 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 17000 518.58789 -3197.5021 0.1333678 22.094631 0.25689258 116 123 5.9965398 0.16088235 0.0011764706 0 4.1079381 70525.413 0 0 - 18000 505.83228 -3198.9838 0.08205079 6.7148239 0.27428244 552 563 5.9965398 0.15644444 0.0011111111 0 4.1079381 73252.823 0 0 -Loop time of 0.280026 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 18000 505.83228 -3198.9838 0.08205079 6.7148239 0.27428244 552 563 5.9965398 0.15644444 0.0011111111 0 4.1079381 73252.823 0 0 - 18056 505.83228 -3217.9192 0.08205079 6.7148239 0.27428244 552 563 5.9965398 0.15595924 0.001107665 0 4.1079381 73252.823 0 0 -Loop time of 0.0300361 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 18000 505.83228 -3198.9838 0.08205079 6.7148239 0.27428244 552 563 5.9965398 0.15644444 0.0011111111 0 4.1079381 73252.823 0 0 - 19000 527.41862 -3198.5008 0.040305357 2.5483534 0.28765437 424 263 5.9965398 0.15589474 0.0010526316 0 4.1079381 75984.28 0 0 -Loop time of 0.274299 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 19000 527.41862 -3198.5008 0.040305357 2.5483534 0.28765437 424 263 5.9965398 0.15589474 0.0010526316 0 4.1079381 75984.28 0 0 - 19052 527.41862 -3217.9192 0.040305357 2.5483534 0.28765437 424 263 5.9965398 0.15546924 0.0010497586 0 4.1079381 75984.28 0 0 -Loop time of 0.0271357 on 4 procs for 52 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 19000 527.41862 -3198.5008 0.040305357 2.5483534 0.28765437 424 263 5.9965398 0.15589474 0.0010526316 0 4.1079381 75984.28 0 0 - 20000 451.64207 -3198.7796 0.047092391 2.9831142 0.28552298 570 403 5.9965398 0.15125 0.001 0 4.1079381 81688.471 0 0 -Loop time of 0.275093 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 20000 451.64207 -3198.7796 0.047092391 2.9831142 0.28552298 570 403 5.9965398 0.15125 0.001 0 4.1079381 81688.471 0 0 - 20053 451.64207 -3217.9192 0.047092391 2.9831142 0.28552298 570 403 5.9965398 0.15085025 0.000997357 0 4.1079381 81688.471 0 0 -Loop time of 0.0279682 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 20000 451.64207 -3198.7796 0.047092391 2.9831142 0.28552298 570 403 5.9965398 0.15125 0.001 0 4.1079381 81688.471 0 0 - 21000 469.69339 -3200.6427 0 1 0.3308786 267 268 5.9965398 0.14852381 0.00095238095 0 4.1079381 87660.496 0 0 -Loop time of 0.274319 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 21000 469.69339 -3200.6427 0 1 0.3308786 267 268 5.9965398 0.14852381 0.00095238095 0 4.1079381 87660.496 0 0 - 21050 469.69339 -3217.9192 0 1 0.3308786 267 268 5.9965398 0.14817102 0.00095011876 0 4.1079381 87660.496 0 0 -Loop time of 0.0260295 on 4 procs for 50 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 21000 469.69339 -3200.6427 0 1 0.3308786 267 268 5.9965398 0.14852381 0.00095238095 0 4.1079381 87660.496 0 0 - 22000 473.26326 -3199.3284 0 1 0.31249141 544 555 5.9965398 0.14786364 0.00090909091 0 4.1079381 91920.285 0 0 -Loop time of 0.274912 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 22000 473.26326 -3199.3284 0 1 0.31249141 544 555 5.9965398 0.14786364 0.00090909091 0 4.1079381 91920.285 0 0 - 22054 473.26326 -3217.9192 0 1 0.31249141 544 555 5.9965398 0.14750159 0.00090686497 0 4.1079381 91920.285 0 0 -Loop time of 0.0287687 on 4 procs for 54 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 22000 473.26326 -3199.3284 0 1 0.31249141 544 555 5.9965398 0.14786364 0.00090909091 0 4.1079381 91920.285 0 0 - 23000 496.07543 -3198.2605 0.30577111 1207.9075 0.18697914 572 403 5.9965398 0.15665217 0.0011304348 0 4.1079381 92558.536 0 0 -Loop time of 0.316591 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 23000 496.07543 -3198.2605 0.30577111 1207.9075 0.18697914 572 403 5.9965398 0.15665217 0.0011304348 0 4.1079381 92558.536 0 0 - 23056 496.07543 -3217.9192 0.30577111 1207.9075 0.18697914 572 403 5.9965398 0.15627169 0.0011276891 0 4.1079381 92558.536 0 0 -Loop time of 0.0309402 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 23000 496.07543 -3198.2605 0.30577111 1207.9075 0.18697914 572 403 5.9965398 0.15665217 0.0011304348 0 4.1079381 92558.536 0 0 - 24000 465.43821 -3199.468 0 1 0.31415739 543 544 5.9965398 0.15466667 0.0010833333 0 4.1079381 97530.178 0 0 -Loop time of 0.281169 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 24000 465.43821 -3199.468 0 1 0.31415739 543 544 5.9965398 0.15466667 0.0010833333 0 4.1079381 97530.178 0 0 - 24054 465.43821 -3217.9192 0 1 0.31415739 543 544 5.9965398 0.15431945 0.0010809013 0 4.1079381 97530.178 0 0 -Loop time of 0.0290642 on 4 procs for 54 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 24000 465.43821 -3199.468 0 1 0.31415739 543 544 5.9965398 0.15466667 0.0010833333 0 4.1079381 97530.178 0 0 - 25000 489.80528 -3200.439 0.25812453 399.74019 0.20865662 543 544 5.9965398 0.15368 0.00104 0 4.1079381 103216.01 0 0 -Loop time of 0.27509 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 25000 489.80528 -3200.439 0.25812453 399.74019 0.20865662 543 544 5.9965398 0.15368 0.00104 0 4.1079381 103216.01 0 0 - 25060 489.80528 -3217.9192 0.25812453 399.74019 0.20865662 543 544 5.9965398 0.15331205 0.00103751 0 4.1079381 103216.01 0 0 -Loop time of 0.0317346 on 4 procs for 60 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 25000 489.80528 -3200.439 0.25812453 399.74019 0.20865662 543 544 5.9965398 0.15368 0.00104 0 4.1079381 103216.01 0 0 - 26000 454.33199 -3197.9264 0.15449017 36.073692 0.24938278 283 272 5.9965398 0.15788462 0.001 0 4.1079381 106857.47 0 0 -Loop time of 0.27335 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 26000 454.33199 -3197.9264 0.15449017 36.073692 0.24938278 283 272 5.9965398 0.15788462 0.001 0 4.1079381 106857.47 0 0 - 26053 454.33199 -3217.9192 0.15449017 36.073692 0.24938278 283 272 5.9965398 0.15756343 0.00099796569 0 4.1079381 106857.47 0 0 -Loop time of 0.0280918 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 26000 454.33199 -3197.9264 0.15449017 36.073692 0.24938278 283 272 5.9965398 0.15788462 0.001 0 4.1079381 106857.47 0 0 - 27000 493.26662 -3198.8515 0.17523126 58.378293 0.24178166 260 271 5.9965398 0.15388889 0.00096296296 0 4.1079381 114287.4 0 0 -Loop time of 0.275087 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 27000 493.26662 -3198.8515 0.17523126 58.378293 0.24178166 260 271 5.9965398 0.15388889 0.00096296296 0 4.1079381 114287.4 0 0 - 27056 493.26662 -3217.9192 0.17523126 58.378293 0.24178166 260 271 5.9965398 0.15357037 0.00096096984 0 4.1079381 114287.4 0 0 -Loop time of 0.0291138 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 27000 493.26662 -3198.8515 0.17523126 58.378293 0.24178166 260 271 5.9965398 0.15388889 0.00096296296 0 4.1079381 114287.4 0 0 - 28000 516.59709 -3198.7939 0.017083929 1.486614 0.29483028 543 548 5.9965398 0.15278571 0.00092857143 0 4.1079381 117735.24 0 0 -Loop time of 0.275233 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 28000 516.59709 -3198.7939 0.017083929 1.486614 0.29483028 543 548 5.9965398 0.15278571 0.00092857143 0 4.1079381 117735.24 0 0 - 28054 516.59709 -3217.9192 0.017083929 1.486614 0.29483028 543 548 5.9965398 0.15249162 0.00092678406 0 4.1079381 117735.24 0 0 -Loop time of 0.0280442 on 4 procs for 54 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 28000 516.59709 -3198.7939 0.017083929 1.486614 0.29483028 543 548 5.9965398 0.15278571 0.00092857143 0 4.1079381 117735.24 0 0 - 29000 498.78313 -3197.7551 0 1 0.43523955 543 544 5.9965398 0.15648276 0.00089655172 0 4.3557073 122569.32 0 0 -Loop time of 0.276333 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 29000 498.78313 -3197.7551 0 1 0.43523955 543 544 5.9965398 0.15648276 0.00089655172 0 4.3557073 122569.32 0 0 - 29059 498.78313 -3217.9192 0 1 0.43523955 543 544 5.9965398 0.15616504 0.00089473141 0 4.3557073 122569.32 0 0 -Loop time of 0.0308874 on 4 procs for 59 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 29000 498.78313 -3197.7551 0 1 0.43523955 543 544 5.9965398 0.15648276 0.00089655172 0 4.3557073 122569.32 0 0 - 30000 466.86137 -3199.5233 0.23621441 240.39961 0.21790229 126 127 5.9965398 0.15756667 0.00086666667 0 4.3557073 127229.34 0 0 -Loop time of 0.276663 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 30000 466.86137 -3199.5233 0.23621441 240.39961 0.21790229 126 127 5.9965398 0.15756667 0.00086666667 0 4.3557073 127229.34 0 0 - 30059 466.86137 -3217.9192 0.23621441 240.39961 0.21790229 126 127 5.9965398 0.15725739 0.00086496557 0 4.3557073 127229.34 0 0 -Loop time of 0.0316901 on 4 procs for 59 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 30000 466.86137 -3199.5233 0.23621441 240.39961 0.21790229 126 127 5.9965398 0.15756667 0.00086666667 0 4.3557073 127229.34 0 0 - 31000 471.12992 -3199.7598 0 1 0.30984418 567 572 5.9965398 0.15541935 0.00087096774 0 4.3557073 131258.9 0 0 -Loop time of 0.284434 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 31000 471.12992 -3199.7598 0 1 0.30984418 567 572 5.9965398 0.15541935 0.00087096774 0 4.3557073 131258.9 0 0 - 31053 471.12992 -3217.9192 0 1 0.30984418 567 572 5.9965398 0.15515409 0.00086948121 0 4.3557073 131258.9 0 0 -Loop time of 0.0288937 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 31000 471.12992 -3199.7598 0 1 0.30984418 567 572 5.9965398 0.15541935 0.00087096774 0 4.3557073 131258.9 0 0 - 32000 510.4372 -3198.4263 0.38770138 8088.2308 0.14217507 511 546 5.9965398 0.15328125 0.00084375 0 4.3557073 136077.46 0 0 -Loop time of 0.28104 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 32000 510.4372 -3198.4263 0.38770138 8088.2308 0.14217507 511 546 5.9965398 0.15328125 0.00084375 0 4.3557073 136077.46 0 0 - 32057 510.4372 -3217.9192 0.38770138 8088.2308 0.14217507 511 546 5.9965398 0.1530087 0.00084224974 0 4.3557073 136077.46 0 0 -Loop time of 0.0306076 on 4 procs for 57 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 32000 510.4372 -3198.4263 0.38770138 8088.2308 0.14217507 511 546 5.9965398 0.15328125 0.00084375 0 4.3557073 136077.46 0 0 - 33000 517.9664 -3198.8477 0.065094278 4.5302347 0.27979105 136 255 5.9965398 0.15212121 0.00081818182 0 4.3557073 140653.16 0 0 -Loop time of 0.283846 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 33000 517.9664 -3198.8477 0.065094278 4.5302347 0.27979105 136 255 5.9965398 0.15212121 0.00081818182 0 4.3557073 140653.16 0 0 - 33055 517.9664 -3217.9192 0.065094278 4.5302347 0.27979105 136 255 5.9965398 0.1518681 0.00081682045 0 4.3557073 140653.16 0 0 -Loop time of 0.0292696 on 4 procs for 55 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 33000 517.9664 -3198.8477 0.065094278 4.5302347 0.27979105 136 255 5.9965398 0.15212121 0.00081818182 0 4.3557073 140653.16 0 0 - 34000 539.21923 -3197.9619 0.10137745 10.515709 0.26786575 119 400 5.9965398 0.15088235 0.00079411765 0 4.3557073 146106.36 0 0 -Loop time of 0.289097 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 34000 539.21923 -3197.9619 0.10137745 10.515709 0.26786575 119 400 5.9965398 0.15088235 0.00079411765 0 4.3557073 146106.36 0 0 - 34053 539.21923 -3217.9192 0.10137745 10.515709 0.26786575 119 400 5.9965398 0.15064752 0.00079288168 0 4.3557073 146106.36 0 0 -Loop time of 0.0301806 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 34000 539.21923 -3197.9619 0.10137745 10.515709 0.26786575 119 400 5.9965398 0.15088235 0.00079411765 0 4.3557073 146106.36 0 0 - 35000 495.28481 -3198.2101 0.03728079 2.3756005 0.28859913 543 544 5.9965398 0.14882857 0.00077142857 0 4.3557073 152132.21 0 0 -Loop time of 0.353728 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 35000 495.28481 -3198.2101 0.03728079 2.3756005 0.28859913 543 544 5.9965398 0.14882857 0.00077142857 0 4.3557073 152132.21 0 0 - 35061 495.28481 -3217.9192 0.03728079 2.3756005 0.28859913 543 544 5.9965398 0.14856964 0.00077008642 0 4.3557073 152132.21 0 0 -Loop time of 0.0376461 on 4 procs for 61 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 35000 495.28481 -3198.2101 0.03728079 2.3756005 0.28859913 543 544 5.9965398 0.14882857 0.00077142857 0 4.3557073 152132.21 0 0 - 36000 522.02047 -3197.5464 0.023049198 1.7073613 0.29300366 132 139 5.9965398 0.14975 0.00075 0 4.3557073 155779.35 0 0 -Loop time of 0.280524 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 36000 522.02047 -3197.5464 0.023049198 1.7073613 0.29300366 132 139 5.9965398 0.14975 0.00075 0 4.3557073 155779.35 0 0 - 36058 522.02047 -3217.9192 0.023049198 1.7073613 0.29300366 132 139 5.9965398 0.14950912 0.00074879361 0 4.3557073 155779.35 0 0 -Loop time of 0.0309134 on 4 procs for 58 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 36000 522.02047 -3197.5464 0.023049198 1.7073613 0.29300366 132 139 5.9965398 0.14975 0.00075 0 4.3557073 155779.35 0 0 - 37000 493.66881 -3198.2972 0.29065621 850.51576 0.19411822 110 121 5.9965398 0.14783784 0.00072972973 0 4.3557073 159446.9 0 0 -Loop time of 0.269231 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 37000 493.66881 -3198.2972 0.29065621 850.51576 0.19411822 110 121 5.9965398 0.14783784 0.00072972973 0 4.3557073 159446.9 0 0 - 37055 493.66881 -3217.9192 0.29065621 850.51576 0.19411822 110 121 5.9965398 0.14761841 0.00072864661 0 4.3557073 159446.9 0 0 -Loop time of 0.0280798 on 4 procs for 55 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 37000 493.66881 -3198.2972 0.29065621 850.51576 0.19411822 110 121 5.9965398 0.14783784 0.00072972973 0 4.3557073 159446.9 0 0 - 38000 471.56021 -3200.0689 0.21390468 143.23918 0.22692985 546 559 5.9965398 0.1505 0.00071052632 0 4.3557073 161793.64 0 0 -Loop time of 0.272717 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 38000 471.56021 -3200.0689 0.21390468 143.23918 0.22692985 546 559 5.9965398 0.1505 0.00071052632 0 4.3557073 161793.64 0 0 - 38050 471.56021 -3217.9192 0.21390468 143.23918 0.22692985 546 559 5.9965398 0.15030223 0.00070959264 0 4.3557073 161793.64 0 0 -Loop time of 0.0257647 on 4 procs for 50 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 38000 471.56021 -3200.0689 0.21390468 143.23918 0.22692985 546 559 5.9965398 0.1505 0.00071052632 0 4.3557073 161793.64 0 0 - 39000 488.60708 -3198.2279 0.29546108 950.85261 0.19187758 410 412 5.9965398 0.14884615 0.00069230769 0 4.3557073 167145.63 0 0 -Loop time of 0.269089 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 39000 488.60708 -3198.2279 0.29546108 950.85261 0.19187758 410 412 5.9965398 0.14884615 0.00069230769 0 4.3557073 167145.63 0 0 - 39062 488.60708 -3217.9192 0.29546108 950.85261 0.19187758 410 412 5.9965398 0.1486099 0.00069120885 0 4.3557073 167145.63 0 0 -Loop time of 0.031392 on 4 procs for 62 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 39000 488.60708 -3198.2279 0.29546108 950.85261 0.19187758 410 412 5.9965398 0.14884615 0.00069230769 0 4.3557073 167145.63 0 0 - 40000 507.73002 -3196.8491 0.012490865 1.3362947 0.29622904 543 544 5.9965398 0.15095 0.000675 0 4.3557073 171194.28 0 0 -Loop time of 0.272165 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 40000 507.73002 -3196.8491 0.012490865 1.3362947 0.29622904 543 544 5.9965398 0.15095 0.000675 0 4.3557073 171194.28 0 0 - 40064 507.73002 -3217.9192 0.012490865 1.3362947 0.29622904 543 544 5.9965398 0.15070887 0.00067392173 0 4.3557073 171194.28 0 0 -Loop time of 0.0340878 on 4 procs for 64 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 40000 507.73002 -3196.8491 0.012490865 1.3362947 0.29622904 543 544 5.9965398 0.15095 0.000675 0 4.3557073 171194.28 0 0 - 41000 479.11448 -3200.241 0 1 0.94094448 542 544 5.9965398 0.16480488 0.00065853659 0 5.4178316 171224.32 0 0 -Loop time of 0.276958 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 41000 479.11448 -3200.241 0 1 0.94094448 542 544 5.9965398 0.16480488 0.00065853659 0 5.4178316 171224.32 0 0 - 41055 479.11448 -3217.9192 0 1 0.94094448 542 544 5.9965398 0.16458409 0.00065765437 0 5.4178316 171224.32 0 0 -Loop time of 0.0284102 on 4 procs for 55 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 41000 479.11448 -3200.241 0.31626598 1541.0515 0.18185743 398 404 5.9965398 0.16480488 0.00065853659 2.3326665 5.4178316 171224.32 1 2 - 42000 495.84675 -3198.6432 0.1729929 55.422961 0.24261343 275 264 5.9965398 0.1692381 0.0011190476 2.3326665 5.4178316 174484.67 1 2 -Loop time of 0.271138 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 42000 495.84675 -3198.6432 0.1729929 55.422961 0.24261343 275 264 5.9965398 0.1692381 0.0011190476 2.3326665 5.4178316 174484.67 1 2 - 42056 495.84675 -3217.9192 0.1729929 55.422961 0.24261343 275 264 5.9965398 0.16901274 0.0011175575 2.3326665 5.4178316 174484.67 1 2 -Loop time of 0.02821 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 42000 495.84675 -3198.6432 0.1729929 55.422961 0.24261343 275 264 5.9965398 0.1692381 0.0011190476 2.3326665 5.4178316 174484.67 1 2 - 43000 533.30453 -3198.6415 0 1 0.34377427 263 577 5.9965398 0.17646512 0.0010930233 2.3326665 5.4178316 175038.14 1 2 -Loop time of 0.271924 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 43000 533.30453 -3198.6415 0 1 0.34377427 263 577 5.9965398 0.17646512 0.0010930233 2.3326665 5.4178316 175038.14 1 2 - 43054 533.30453 -3217.9192 0 1 0.34377427 263 577 5.9965398 0.17624379 0.0010916523 2.3326665 5.4178316 175038.14 1 2 -Loop time of 0.028114 on 4 procs for 54 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 43000 533.30453 -3198.6415 0 1 0.34377427 263 577 5.9965398 0.17646512 0.0010930233 2.3326665 5.4178316 175038.14 1 2 - 44000 497.19886 -3199.3252 0 1 0.32411085 262 264 5.9965398 0.17947727 0.0010681818 2.3326665 5.4178316 175732.69 1 2 -Loop time of 0.278251 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 44000 497.19886 -3199.3252 0 1 0.32411085 262 264 5.9965398 0.17947727 0.0010681818 2.3326665 5.4178316 175732.69 1 2 - 44056 497.19886 -3217.9192 0 1 0.32411085 262 264 5.9965398 0.17924914 0.001066824 2.3326665 5.4178316 175732.69 1 2 -Loop time of 0.031158 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 44000 497.19886 -3199.3252 0 1 0.32411085 262 264 5.9965398 0.17947727 0.0010681818 2.3326665 5.4178316 175732.69 1 2 - 45000 501.66497 -3198.3133 0 1 0.89133337 262 264 5.9965398 0.18806667 0.0010444444 2.3326665 5.4178316 175885.32 1 2 -Loop time of 0.272196 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 45000 501.66497 -3198.3133 0 1 0.89133337 262 264 5.9965398 0.18806667 0.0010444444 2.3326665 5.4178316 175885.32 1 2 - 45053 501.66497 -3217.9192 0 1 0.89133337 262 264 5.9965398 0.18784543 0.0010432158 2.3326665 5.4178316 175885.32 1 2 -Loop time of 0.0270572 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 45000 501.66497 -3198.3133 0.31380779 1455.5922 0.18306993 549 547 5.9965398 0.18806667 0.0010444444 2.332667 5.4178316 175885.32 2 4 - 46000 512.99827 -3198.7869 0.30973921 1324.4339 0.18505929 547 552 5.9965398 0.18545652 0.0010217391 2.332667 5.4178316 180703.66 2 4 -Loop time of 0.270344 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 46000 512.99827 -3198.7869 0.30973921 1324.4339 0.18505929 547 552 5.9965398 0.18545652 0.0010217391 2.332667 5.4178316 180703.66 2 4 - 46058 512.99827 -3217.9192 0.30973921 1324.4339 0.18505929 547 552 5.9965398 0.18522298 0.0010204525 2.332667 5.4178316 180703.66 2 4 -Loop time of 0.0301486 on 4 procs for 58 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 46000 512.99827 -3198.7869 0.30973921 1324.4339 0.18505929 547 552 5.9965398 0.18545652 0.0010217391 2.332667 5.4178316 180703.66 2 4 - 47000 508.06284 -3198.0819 0.17828926 62.67216 0.24064067 271 544 5.9965398 0.18404255 0.001 2.332667 5.4178316 186245.92 2 4 -Loop time of 0.272036 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 47000 508.06284 -3198.0819 0.17828926 62.67216 0.24064067 271 544 5.9965398 0.18404255 0.001 2.332667 5.4178316 186245.92 2 4 - 47062 508.06284 -3217.9192 0.17828926 62.67216 0.24064067 271 544 5.9965398 0.18380009 0.00099868259 2.332667 5.4178316 186245.92 2 4 -Loop time of 0.0319475 on 4 procs for 62 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 47000 508.06284 -3198.0819 0.17828926 62.67216 0.24064067 271 544 5.9965398 0.18404255 0.001 2.332667 5.4178316 186245.92 2 4 - 48000 512.83356 -3200.0643 0 1 0.96810224 258 544 5.9965398 0.1921875 0.00097916667 2.332667 5.5485401 188226.87 2 4 -Loop time of 0.271987 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 48000 512.83356 -3200.0643 0 1 0.96810224 258 544 5.9965398 0.1921875 0.00097916667 2.332667 5.5485401 188226.87 2 4 - 48051 512.83356 -3217.9192 0 1 0.96810224 258 544 5.9965398 0.19198352 0.00097812741 2.332667 5.5485401 188226.87 2 4 -Loop time of 0.0269855 on 4 procs for 51 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 48000 512.83356 -3200.0643 0.36239559 4495.5483 0.15738105 280 407 5.9965398 0.1921875 0.00097916667 2.332667 5.5485401 188226.87 3 6 - 49000 490.9639 -3198.6936 0.21113624 134.32512 0.22802517 114 115 5.9965398 0.18993878 0.00095918367 2.332667 5.5485401 191519.1 3 6 -Loop time of 0.267575 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 49000 490.9639 -3198.6936 0.21113624 134.32512 0.22802517 114 115 5.9965398 0.18993878 0.00095918367 2.332667 5.5485401 191519.1 3 6 - 49054 490.9639 -3217.9192 0.21113624 134.32512 0.22802517 114 115 5.9965398 0.18972969 0.00095812778 2.332667 5.5485401 191519.1 3 6 -Loop time of 0.027882 on 4 procs for 54 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 49000 490.9639 -3198.6936 0.21113624 134.32512 0.22802517 114 115 5.9965398 0.18993878 0.00095918367 2.332667 5.5485401 191519.1 3 6 - 50000 502.62206 -3199.7905 0.22799901 198.66723 0.22126947 119 400 5.9965398 0.1885 0.00094 2.332667 5.5485401 195910.67 3 6 -Loop time of 0.270223 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 50000 502.62206 -3199.7905 0.22799901 198.66723 0.22126947 119 400 5.9965398 0.1885 0.00094 2.332667 5.5485401 195910.67 3 6 - 50059 502.62206 -3217.9192 0.22799901 198.66723 0.22126947 119 400 5.9965398 0.18827783 0.00093889211 2.332667 5.5485401 195910.67 3 6 -Loop time of 0.0310777 on 4 procs for 59 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 50000 502.62206 -3199.7905 0.22799901 198.66723 0.22126947 119 400 5.9965398 0.1885 0.00094 2.332667 5.5485401 195910.67 3 6 - 51000 508.29336 -3198.9059 0.14109933 26.437299 0.25416947 264 275 5.9965398 0.18907843 0.00092156863 2.332667 5.5485401 199067.94 3 6 -Loop time of 0.271223 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 51000 508.29336 -3198.9059 0.14109933 26.437299 0.25416947 264 275 5.9965398 0.18907843 0.00092156863 2.332667 5.5485401 199067.94 3 6 - 51055 508.29336 -3217.9192 0.14109933 26.437299 0.25416947 264 275 5.9965398 0.18887474 0.00092057585 2.332667 5.5485401 199067.94 3 6 -Loop time of 0.0279394 on 4 procs for 55 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 51000 508.29336 -3198.9059 0.14109933 26.437299 0.25416947 264 275 5.9965398 0.18907843 0.00092156863 2.332667 5.5485401 199067.94 3 6 - 52000 506.84322 -3198.7391 0 1 0.35895473 264 275 5.9965398 0.19369231 0.00090384615 2.332667 5.5485401 199119.85 3 6 -Loop time of 0.269166 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 52000 506.84322 -3198.7391 0 1 0.35895473 264 275 5.9965398 0.19369231 0.00090384615 2.332667 5.5485401 199119.85 3 6 - 52061 506.84322 -3217.9192 0 1 0.35895473 264 275 5.9965398 0.19346536 0.00090278712 2.332667 5.5485401 199119.85 3 6 -Loop time of 0.0310147 on 4 procs for 61 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 52000 506.84322 -3198.7391 0 1 0.35895473 264 275 5.9965398 0.19369231 0.00090384615 2.332667 5.5485401 199119.85 3 6 - 53000 477.74415 -3199.3706 0 1 0.31797782 264 275 5.9965398 0.1960566 0.00088679245 2.332667 5.5485401 200597.61 3 6 -Loop time of 0.270989 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 53000 477.74415 -3199.3706 0 1 0.31797782 264 275 5.9965398 0.1960566 0.00088679245 2.332667 5.5485401 200597.61 3 6 - 53056 477.74415 -3217.9192 0 1 0.31797782 264 275 5.9965398 0.19584967 0.00088585645 2.332667 5.5485401 200597.61 3 6 -Loop time of 0.02994 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 53000 477.74415 -3199.3706 0 1 0.31797782 264 275 5.9965398 0.1960566 0.00088679245 2.332667 5.5485401 200597.61 3 6 - 54000 467.64603 -3198.6476 0.12868765 19.820426 0.25852702 575 280 5.9965398 0.19614815 0.00087037037 2.332667 5.5485401 203111.2 3 6 -Loop time of 0.273062 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 54000 467.64603 -3198.6476 0.12868765 19.820426 0.25852702 575 280 5.9965398 0.19614815 0.00087037037 2.332667 5.5485401 203111.2 3 6 - 54051 467.64603 -3217.9192 0.12868765 19.820426 0.25852702 575 280 5.9965398 0.19596307 0.00086954913 2.332667 5.5485401 203111.2 3 6 -Loop time of 0.0263515 on 4 procs for 51 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 54000 467.64603 -3198.6476 0.12868765 19.820426 0.25852702 575 280 5.9965398 0.19614815 0.00087037037 2.332667 5.5485401 203111.2 3 6 - 55000 504.56378 -3198.2318 0.01979034 1.582988 0.29400296 556 567 5.9965398 0.1934 0.00085454545 2.332667 5.5485401 209967.08 3 6 -Loop time of 0.27205 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 55000 504.56378 -3198.2318 0.01979034 1.582988 0.29400296 556 567 5.9965398 0.1934 0.00085454545 2.332667 5.5485401 209967.08 3 6 - 55057 504.56378 -3217.9192 0.01979034 1.582988 0.29400296 556 567 5.9965398 0.19319977 0.00085366075 2.332667 5.5485401 209967.08 3 6 -Loop time of 0.0298902 on 4 procs for 57 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 55000 504.56378 -3198.2318 0.01979034 1.582988 0.29400296 556 567 5.9965398 0.1934 0.00085454545 2.332667 5.5485401 209967.08 3 6 - 56000 564.45428 -3198.7813 0.20223936 109.26492 0.23151007 78 91 5.9965398 0.19246429 0.00083928571 2.332667 5.5485401 215831.27 3 6 -Loop time of 0.270962 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 56000 564.45428 -3198.7813 0.20223936 109.26492 0.23151007 78 91 5.9965398 0.19246429 0.00083928571 2.332667 5.5485401 215831.27 3 6 - 56052 564.45428 -3217.9192 0.20223936 109.26492 0.23151007 78 91 5.9965398 0.19228573 0.0008385071 2.332667 5.5485401 215831.27 3 6 -Loop time of 0.0278887 on 4 procs for 52 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 56000 564.45428 -3198.7813 0.20223936 109.26492 0.23151007 78 91 5.9965398 0.19246429 0.00083928571 2.332667 5.5485401 215831.27 3 6 - 57000 515.72168 -3198.6584 0.31159686 1382.7848 0.18415364 544 577 5.9965398 0.19210526 0.0008245614 2.332667 5.5485401 222695.11 3 6 -Loop time of 0.276217 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 57000 515.72168 -3198.6584 0.31159686 1382.7848 0.18415364 544 577 5.9965398 0.19210526 0.0008245614 2.332667 5.5485401 222695.11 3 6 - 57059 515.72168 -3217.9192 0.31159686 1382.7848 0.18415364 544 577 5.9965398 0.19190662 0.00082370879 2.332667 5.5485401 222695.11 3 6 -Loop time of 0.0303024 on 4 procs for 59 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 57000 515.72168 -3198.6584 0.31159686 1382.7848 0.18415364 544 577 5.9965398 0.19210526 0.0008245614 2.332667 5.5485401 222695.11 3 6 - 58000 493.40021 -3198.8621 0 1 0.30931038 275 577 5.9965398 0.18989655 0.00081034483 2.332667 5.5485401 225894.02 3 6 -Loop time of 0.272211 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 58000 493.40021 -3198.8621 0 1 0.30931038 275 577 5.9965398 0.18989655 0.00081034483 2.332667 5.5485401 225894.02 3 6 - 58055 493.40021 -3217.9192 0 1 0.30931038 275 577 5.9965398 0.18971665 0.00080957713 2.332667 5.5485401 225894.02 3 6 -Loop time of 0.029048 on 4 procs for 55 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 58000 493.40021 -3198.8621 0 1 0.30931038 275 577 5.9965398 0.18989655 0.00081034483 2.332667 5.5485401 225894.02 3 6 - 59000 459.13337 -3198.423 0.32299123 1801.3772 0.17849812 117 288 5.9965398 0.189 0.00079661017 2.332667 5.5485401 232785.62 3 6 -Loop time of 0.274027 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 59000 459.13337 -3198.423 0.32299123 1801.3772 0.17849812 117 288 5.9965398 0.189 0.00079661017 2.332667 5.5485401 232785.62 3 6 - 59052 459.13337 -3217.9192 0.32299123 1801.3772 0.17849812 117 288 5.9965398 0.18883357 0.00079590869 2.332667 5.5485401 232785.62 3 6 -Loop time of 0.0262677 on 4 procs for 52 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 59000 459.13337 -3198.423 0.32299123 1801.3772 0.17849812 117 288 5.9965398 0.189 0.00079661017 2.332667 5.5485401 232785.62 3 6 - 60000 491.26878 -3198.9291 0.28012983 666.16416 0.19893876 560 567 5.9965398 0.18678333 0.00078333333 2.332667 5.5485401 236949.88 3 6 -Loop time of 0.277467 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 60000 491.26878 -3198.9291 0.28012983 666.16416 0.19893876 560 567 5.9965398 0.18678333 0.00078333333 2.332667 5.5485401 236949.88 3 6 - 60051 491.26878 -3217.9192 0.28012983 666.16416 0.19893876 560 567 5.9965398 0.1866247 0.00078266807 2.332667 5.5485401 236949.88 3 6 -Loop time of 0.0262483 on 4 procs for 51 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 60000 491.26878 -3198.9291 0.28012983 666.16416 0.19893876 560 567 5.9965398 0.18678333 0.00078333333 2.332667 5.5485401 236949.88 3 6 - 61000 469.65564 -3198.3735 0.086199081 7.3934564 0.27291787 562 564 5.9965398 0.18445902 0.0007704918 2.332667 5.5485401 245720.88 3 6 -Loop time of 0.273261 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 61000 469.65564 -3198.3735 0.086199081 7.3934564 0.27291787 562 564 5.9965398 0.18445902 0.0007704918 2.332667 5.5485401 245720.88 3 6 - 61053 469.65564 -3217.9192 0.086199081 7.3934564 0.27291787 562 564 5.9965398 0.18429889 0.00076982294 2.332667 5.5485401 245720.88 3 6 -Loop time of 0.0271676 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 61000 469.65564 -3198.3735 0.086199081 7.3934564 0.27291787 562 564 5.9965398 0.18445902 0.0007704918 2.332667 5.5485401 245720.88 3 6 - 62000 520.14843 -3198.5458 0.35275062 3593.8982 0.16280322 116 123 5.9965398 0.18312903 0.00075806452 2.332667 5.5485401 250136.37 3 6 -Loop time of 0.274032 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 62000 520.14843 -3198.5458 0.35275062 3593.8982 0.16280322 116 123 5.9965398 0.18312903 0.00075806452 2.332667 5.5485401 250136.37 3 6 - 62056 520.14843 -3217.9192 0.35275062 3593.8982 0.16280322 116 123 5.9965398 0.18296377 0.00075738043 2.332667 5.5485401 250136.37 3 6 -Loop time of 0.028944 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 62000 520.14843 -3198.5458 0.35275062 3593.8982 0.16280322 116 123 5.9965398 0.18312903 0.00075806452 2.332667 5.5485401 250136.37 3 6 - 63000 506.90141 -3196.9575 0.019630501 1.5771264 0.29405188 577 555 5.9965398 0.18190476 0.00074603175 2.332667 5.5485401 257004.48 3 6 -Loop time of 0.275961 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 63000 506.90141 -3196.9575 0.019630501 1.5771264 0.29405188 577 555 5.9965398 0.18190476 0.00074603175 2.332667 5.5485401 257004.48 3 6 - 63059 506.90141 -3217.9192 0.019630501 1.5771264 0.29405188 577 555 5.9965398 0.18173457 0.00074533374 2.332667 5.5485401 257004.48 3 6 -Loop time of 0.0309695 on 4 procs for 59 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 63000 506.90141 -3196.9575 0.019630501 1.5771264 0.29405188 577 555 5.9965398 0.18190476 0.00074603175 2.332667 5.5485401 257004.48 3 6 - 64000 435.29185 -3197.3025 0.08981574 8.0408468 0.27172259 266 267 5.9965398 0.18060937 0.000734375 2.332667 5.5485401 261196.79 3 6 -Loop time of 0.277091 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 64000 435.29185 -3197.3025 0.08981574 8.0408468 0.27172259 266 267 5.9965398 0.18060937 0.000734375 2.332667 5.5485401 261196.79 3 6 - 64053 435.29185 -3217.9192 0.08981574 8.0408468 0.27172259 266 267 5.9965398 0.18045993 0.00073376735 2.332667 5.5485401 261196.79 3 6 -Loop time of 0.0271819 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 64000 435.29185 -3197.3025 0.08981574 8.0408468 0.27172259 266 267 5.9965398 0.18060937 0.000734375 2.332667 5.5485401 261196.79 3 6 - 65000 484.45338 -3198.1013 0.27900382 648.98038 0.19944752 85 87 5.9965398 0.17955385 0.00072307692 2.332667 5.5485401 267611.45 3 6 -Loop time of 0.274965 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 65000 484.45338 -3198.1013 0.27900382 648.98038 0.19944752 85 87 5.9965398 0.17955385 0.00072307692 2.332667 5.5485401 267611.45 3 6 - 65053 484.45338 -3217.9192 0.27900382 648.98038 0.19944752 85 87 5.9965398 0.17940756 0.00072248782 2.332667 5.5485401 267611.45 3 6 -Loop time of 0.0277953 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 65000 484.45338 -3198.1013 0.27900382 648.98038 0.19944752 85 87 5.9965398 0.17955385 0.00072307692 2.332667 5.5485401 267611.45 3 6 - 66000 497.23553 -3199.036 0.25525209 373.95984 0.20989193 412 411 5.9965398 0.17804545 0.00071212121 2.332667 5.5485401 274383.49 3 6 -Loop time of 0.273037 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 66000 497.23553 -3199.036 0.25525209 373.95984 0.20989193 412 411 5.9965398 0.17804545 0.00071212121 2.332667 5.5485401 274383.49 3 6 - 66058 497.23553 -3217.9192 0.25525209 373.95984 0.20989193 412 411 5.9965398 0.17788913 0.00071149596 2.332667 5.5485401 274383.49 3 6 -Loop time of 0.0307388 on 4 procs for 58 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 66000 497.23553 -3199.036 0.25525209 373.95984 0.20989193 412 411 5.9965398 0.17804545 0.00071212121 2.332667 5.5485401 274383.49 3 6 - 67000 488.34684 -3198.7152 0.27967841 659.2212 0.19914288 264 275 5.9965398 0.17935821 0.00070149254 2.332667 5.5485401 274635.62 3 6 -Loop time of 0.277291 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 67000 488.34684 -3198.7152 0.27967841 659.2212 0.19914288 264 275 5.9965398 0.17935821 0.00070149254 2.332667 5.5485401 274635.62 3 6 - 67055 488.34684 -3217.9192 0.27967841 659.2212 0.19914288 264 275 5.9965398 0.1792111 0.00070091716 2.332667 5.5485401 274635.62 3 6 -Loop time of 0.0298107 on 4 procs for 55 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 67000 488.34684 -3198.7152 0.27967841 659.2212 0.19914288 264 275 5.9965398 0.17935821 0.00070149254 2.332667 5.5485401 274635.62 3 6 - 68000 547.06201 -3198.7151 0.11427629 14.185774 0.26349624 261 263 5.9965398 0.17882353 0.00069117647 2.332667 5.5485401 277575.99 3 6 -Loop time of 0.278847 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 68000 547.06201 -3198.7151 0.11427629 14.185774 0.26349624 261 263 5.9965398 0.17882353 0.00069117647 2.332667 5.5485401 277575.99 3 6 - 68060 547.06201 -3217.9192 0.11427629 14.185774 0.26349624 261 263 5.9965398 0.17866588 0.00069056715 2.332667 5.5485401 277575.99 3 6 -Loop time of 0.0320448 on 4 procs for 60 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 68000 547.06201 -3198.7151 0.11427629 14.185774 0.26349624 261 263 5.9965398 0.17882353 0.00069117647 2.332667 5.5485401 277575.99 3 6 - 69000 508.94771 -3198.9475 0.10069537 10.350552 0.26809482 264 275 5.9965398 0.18095652 0.00068115942 2.332667 5.5485401 279847.52 3 6 -Loop time of 0.276989 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 69000 508.94771 -3198.9475 0.10069537 10.350552 0.26809482 264 275 5.9965398 0.18095652 0.00068115942 2.332667 5.5485401 279847.52 3 6 - 69056 508.94771 -3217.9192 0.10069537 10.350552 0.26809482 264 275 5.9965398 0.18080978 0.00068060704 2.332667 5.5485401 279847.52 3 6 -Loop time of 0.0288935 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 69000 508.94771 -3198.9475 0.10069537 10.350552 0.26809482 264 275 5.9965398 0.18095652 0.00068115942 2.332667 5.5485401 279847.52 3 6 - 70000 499.92534 -3198.5636 0.3528879 3605.3669 0.16272731 283 288 5.9965398 0.18142857 0.00072857143 2.332667 5.5485401 281504.52 3 6 -Loop time of 0.277847 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 70000 499.92534 -3198.5636 0.3528879 3605.3669 0.16272731 283 288 5.9965398 0.18142857 0.00072857143 2.332667 5.5485401 281504.52 3 6 - 70054 499.92534 -3217.9192 0.3528879 3605.3669 0.16272731 283 288 5.9965398 0.18128872 0.00072800982 2.332667 5.5485401 281504.52 3 6 -Loop time of 0.028778 on 4 procs for 54 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 70000 499.92534 -3198.5636 0.3528879 3605.3669 0.16272731 283 288 5.9965398 0.18142857 0.00072857143 2.332667 5.5485401 281504.52 3 6 - 71000 506.70688 -3197.313 0.082678879 6.813425 0.27407627 541 543 5.9965398 0.18050704 0.00071830986 2.332667 5.5485401 286003.61 3 6 -Loop time of 0.277017 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 71000 506.70688 -3197.313 0.082678879 6.813425 0.27407627 541 543 5.9965398 0.18050704 0.00071830986 2.332667 5.5485401 286003.61 3 6 - 71059 506.70688 -3217.9192 0.082678879 6.813425 0.27407627 541 543 5.9965398 0.18035717 0.00071771345 2.332667 5.5485401 286003.61 3 6 -Loop time of 0.0308528 on 4 procs for 59 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 71000 506.70688 -3197.313 0.082678879 6.813425 0.27407627 541 543 5.9965398 0.18050704 0.00071830986 2.332667 5.5485401 286003.61 3 6 - 72000 464.23294 -3197.7357 0 1 0.31542276 275 577 5.9965398 0.18266667 0.00070833333 2.332667 5.5485401 286734.83 3 6 -Loop time of 0.277141 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 72000 464.23294 -3197.7357 0 1 0.31542276 275 577 5.9965398 0.18266667 0.00070833333 2.332667 5.5485401 286734.83 3 6 - 72053 464.23294 -3217.9192 0 1 0.31542276 275 577 5.9965398 0.1825323 0.0007078123 2.332667 5.5485401 286734.83 3 6 -Loop time of 0.0284171 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 72000 464.23294 -3197.7357 0 1 0.31542276 275 577 5.9965398 0.18266667 0.00070833333 2.332667 5.5485401 286734.83 3 6 - 73000 529.30216 -3198.1231 0.1005148 10.307265 0.26815543 411 416 5.9965398 0.18394521 0.00069863014 2.332667 5.5485401 287872.93 3 6 -Loop time of 0.278715 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 73000 529.30216 -3198.1231 0.1005148 10.307265 0.26815543 411 416 5.9965398 0.18394521 0.00069863014 2.332667 5.5485401 287872.93 3 6 - 73054 529.30216 -3217.9192 0.1005148 10.307265 0.26815543 411 416 5.9965398 0.18380924 0.00069811372 2.332667 5.5485401 287872.93 3 6 -Loop time of 0.0280678 on 4 procs for 54 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 73000 529.30216 -3198.1231 0.1005148 10.307265 0.26815543 411 416 5.9965398 0.18394521 0.00069863014 2.332667 5.5485401 287872.93 3 6 - 74000 490.65557 -3199.6766 0.14904687 31.792497 0.25133954 111 116 5.9965398 0.18322973 0.00068918919 2.332667 5.5485401 294766.16 3 6 -Loop time of 0.274991 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 74000 490.65557 -3199.6766 0.14904687 31.792497 0.25133954 111 116 5.9965398 0.18322973 0.00068918919 2.332667 5.5485401 294766.16 3 6 - 74055 490.65557 -3217.9192 0.14904687 31.792497 0.25133954 111 116 5.9965398 0.18309365 0.00068867733 2.332667 5.5485401 294766.16 3 6 -Loop time of 0.0289814 on 4 procs for 55 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 74000 490.65557 -3199.6766 0.14904687 31.792497 0.25133954 111 116 5.9965398 0.18322973 0.00068918919 2.332667 5.5485401 294766.16 3 6 - 75000 475.22638 -3198.1558 0.37341486 5805.6632 0.15094809 563 564 5.9965398 0.18212 0.00073333333 2.332667 5.5485401 302150.54 3 6 -Loop time of 0.273758 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 75000 475.22638 -3198.1558 0.37341486 5805.6632 0.15094809 563 564 5.9965398 0.18212 0.00073333333 2.332667 5.5485401 302150.54 3 6 - 75053 475.22638 -3217.9192 0.37341486 5805.6632 0.15094809 563 564 5.9965398 0.18199139 0.00073281548 2.332667 5.5485401 302150.54 3 6 -Loop time of 0.0272248 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 75000 475.22638 -3198.1558 0.37341486 5805.6632 0.15094809 563 564 5.9965398 0.18212 0.00073333333 2.332667 5.5485401 302150.54 3 6 - 76000 523.91803 -3198.8966 0.038679316 2.4539737 0.28816267 263 264 5.9965398 0.18286842 0.00072368421 2.332667 5.5485401 304160.3 3 6 -Loop time of 0.272244 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 76000 523.91803 -3198.8966 0.038679316 2.4539737 0.28816267 263 264 5.9965398 0.18286842 0.00072368421 2.332667 5.5485401 304160.3 3 6 - 76058 523.91803 -3217.9192 0.038679316 2.4539737 0.28816267 263 264 5.9965398 0.18272897 0.00072313235 2.332667 5.5485401 304160.3 3 6 -Loop time of 0.0292178 on 4 procs for 58 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 76000 523.91803 -3198.8966 0.038679316 2.4539737 0.28816267 263 264 5.9965398 0.18286842 0.00072368421 2.332667 5.5485401 304160.3 3 6 - 77000 511.16512 -3199.1926 0 1 0.31251901 264 275 5.9965398 0.18790909 0.00071428571 2.332667 5.5485401 304174.43 3 6 -Loop time of 0.276803 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 77000 511.16512 -3199.1926 0 1 0.31251901 264 275 5.9965398 0.18790909 0.00071428571 2.332667 5.5485401 304174.43 3 6 - 77059 511.16512 -3217.9192 0 1 0.31251901 264 275 5.9965398 0.18776522 0.00071373882 2.332667 5.5485401 304174.43 3 6 -Loop time of 0.0309293 on 4 procs for 59 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 77000 511.16512 -3199.1926 0 1 0.31251901 264 275 5.9965398 0.18790909 0.00071428571 2.332667 5.5485401 304174.43 3 6 - 78000 554.58169 -3199.0107 0.022175428 1.6730858 0.29327193 263 264 5.9965398 0.19037179 0.00094871795 2.332667 5.5485401 304438.98 3 6 -Loop time of 0.277125 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 78000 554.58169 -3199.0107 0.022175428 1.6730858 0.29327193 263 264 5.9965398 0.19037179 0.00094871795 2.332667 5.5485401 304438.98 3 6 - 78062 554.58169 -3217.9192 0.022175428 1.6730858 0.29327193 263 264 5.9965398 0.19022059 0.00094796444 2.332667 5.5485401 304438.98 3 6 -Loop time of 0.032167 on 4 procs for 62 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 78000 554.58169 -3199.0107 0.022175428 1.6730858 0.29327193 263 264 5.9965398 0.19037179 0.00094871795 2.332667 5.5485401 304438.98 3 6 - 79000 523.97176 -3198.2366 0.1672356 48.490735 0.24473985 556 567 5.9965398 0.19017722 0.00093670886 2.332667 5.5485401 306076.23 3 6 -Loop time of 0.27817 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 79000 523.97176 -3198.2366 0.1672356 48.490735 0.24473985 556 567 5.9965398 0.19017722 0.00093670886 2.332667 5.5485401 306076.23 3 6 - 79057 523.97176 -3217.9192 0.1672356 48.490735 0.24473985 556 567 5.9965398 0.1900401 0.00093603349 2.332667 5.5485401 306076.23 3 6 -Loop time of 0.0299338 on 4 procs for 57 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 79000 523.97176 -3198.2366 0.1672356 48.490735 0.24473985 556 567 5.9965398 0.19017722 0.00093670886 2.332667 5.5485401 306076.23 3 6 - 80000 479.09781 -3197.6134 0 1 0.30854872 263 577 5.9965398 0.1902125 0.000925 2.332667 5.5485401 308522.09 3 6 -Loop time of 0.277236 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 80000 479.09781 -3197.6134 0 1 0.30854872 263 577 5.9965398 0.1902125 0.000925 2.332667 5.5485401 308522.09 3 6 - 80059 479.09781 -3217.9192 0 1 0.30854872 263 577 5.9965398 0.19007232 0.00092431832 2.332667 5.5485401 308522.09 3 6 -Loop time of 0.0311648 on 4 procs for 59 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 80000 479.09781 -3197.6134 0 1 0.30854872 263 577 5.9965398 0.1902125 0.000925 2.332667 5.5485401 308522.09 3 6 - 81000 517.52613 -3198.2236 0.29863857 1023.6251 0.19038135 254 256 5.9965398 0.18996296 0.00091358025 2.332667 5.5485401 311171.12 3 6 -Loop time of 0.277146 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 81000 517.52613 -3198.2236 0.29863857 1023.6251 0.19038135 254 256 5.9965398 0.18996296 0.00091358025 2.332667 5.5485401 311171.12 3 6 - 81056 517.52613 -3217.9192 0.29863857 1023.6251 0.19038135 254 256 5.9965398 0.18983172 0.00091294907 2.332667 5.5485401 311171.12 3 6 -Loop time of 0.0298678 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 81000 517.52613 -3198.2236 0.29863857 1023.6251 0.19038135 254 256 5.9965398 0.18996296 0.00091358025 2.332667 5.5485401 311171.12 3 6 - 82000 503.95678 -3197.7481 0.091495497 8.3605139 0.27116565 263 264 5.9965398 0.18862195 0.0010365854 2.332667 5.5485401 315319.38 3 6 -Loop time of 0.276186 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 82000 503.95678 -3197.7481 0.091495497 8.3605139 0.27116565 263 264 5.9965398 0.18862195 0.0010365854 2.332667 5.5485401 315319.38 3 6 - 82055 503.95678 -3217.9192 0.091495497 8.3605139 0.27116565 263 264 5.9965398 0.18849552 0.0010358906 2.332667 5.5485401 315319.38 3 6 -Loop time of 0.0282569 on 4 procs for 55 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 82000 503.95678 -3197.7481 0.091495497 8.3605139 0.27116565 263 264 5.9965398 0.18862195 0.0010365854 2.332667 5.5485401 315319.38 3 6 - 83000 537.67639 -3197.6886 0 1 0.32414276 263 264 5.9965398 0.1896988 0.0010240964 2.332667 5.5485401 316613.84 3 6 -Loop time of 0.278013 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 83000 537.67639 -3197.6886 0 1 0.32414276 263 264 5.9965398 0.1896988 0.0010240964 2.332667 5.5485401 316613.84 3 6 - 83064 537.67639 -3217.9192 0 1 0.32414276 263 264 5.9965398 0.18955263 0.0010233073 2.332667 5.5485401 316613.84 3 6 -Loop time of 0.0331041 on 4 procs for 64 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 83000 537.67639 -3197.6886 0 1 0.32414276 263 264 5.9965398 0.1896988 0.0010240964 2.332667 5.5485401 316613.84 3 6 - 84000 510.26841 -3199.5428 0.23554832 236.71181 0.21817723 142 424 5.9965398 0.19 0.0010119048 2.332667 5.5485401 318598.08 3 6 -Loop time of 0.277083 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 84000 510.26841 -3199.5428 0.23554832 236.71181 0.21817723 142 424 5.9965398 0.19 0.0010119048 2.332667 5.5485401 318598.08 3 6 - 84052 510.26841 -3217.9192 0.23554832 236.71181 0.21817723 142 424 5.9965398 0.18988245 0.0010112787 2.332667 5.5485401 318598.08 3 6 -Loop time of 0.0273927 on 4 procs for 52 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 84000 510.26841 -3199.5428 0.23554832 236.71181 0.21817723 142 424 5.9965398 0.19 0.0010119048 2.332667 5.5485401 318598.08 3 6 - 85000 472.16876 -3197.5248 0 1 0.34247044 264 275 5.9965398 0.18970588 0.001 2.332667 5.5485401 323882.61 3 6 -Loop time of 0.277162 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 85000 472.16876 -3197.5248 0 1 0.34247044 264 275 5.9965398 0.18970588 0.001 2.332667 5.5485401 323882.61 3 6 - 85055 472.16876 -3217.9192 0 1 0.34247044 264 275 5.9965398 0.18958321 0.00099935336 2.332667 5.5485401 323882.61 3 6 -Loop time of 0.028803 on 4 procs for 55 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 85000 472.16876 -3197.5248 0 1 0.34247044 264 275 5.9965398 0.18970588 0.001 2.332667 5.5485401 323882.61 3 6 - 86000 509.30024 -3198.3226 0.20619306 119.76563 0.22996793 275 276 5.9965398 0.19110465 0.00098837209 2.332667 5.5485401 325788.44 3 6 -Loop time of 0.279566 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 86000 509.30024 -3198.3226 0.20619306 119.76563 0.22996793 275 276 5.9965398 0.19110465 0.00098837209 2.332667 5.5485401 325788.44 3 6 - 86053 509.30024 -3217.9192 0.20619306 119.76563 0.22996793 275 276 5.9965398 0.19098695 0.00098776336 2.332667 5.5485401 325788.44 3 6 -Loop time of 0.0286081 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 86000 509.30024 -3198.3226 0.20619306 119.76563 0.22996793 275 276 5.9965398 0.19110465 0.00098837209 2.332667 5.5485401 325788.44 3 6 - 87000 478.57944 -3199.3497 0.19192384 86.001287 0.23548611 260 271 5.9965398 0.1897931 0.00097701149 2.332667 5.5485401 330047.59 3 6 -Loop time of 0.275685 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 87000 478.57944 -3199.3497 0.19192384 86.001287 0.23548611 260 271 5.9965398 0.1897931 0.00097701149 2.332667 5.5485401 330047.59 3 6 - 87058 478.57944 -3217.9192 0.19192384 86.001287 0.23548611 260 271 5.9965398 0.18966666 0.00097636059 2.332667 5.5485401 330047.59 3 6 -Loop time of 0.0299653 on 4 procs for 58 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 87000 478.57944 -3199.3497 0.19192384 86.001287 0.23548611 260 271 5.9965398 0.1897931 0.00097701149 2.332667 5.5485401 330047.59 3 6 - 88000 515.63138 -3198.9629 0.35491784 3779.2911 0.16160071 543 577 5.9965398 0.18827273 0.00096590909 2.332667 5.5485401 337304.34 3 6 -Loop time of 0.273963 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 88000 515.63138 -3198.9629 0.35491784 3779.2911 0.16160071 543 577 5.9965398 0.18827273 0.00096590909 2.332667 5.5485401 337304.34 3 6 - 88050 515.63138 -3217.9192 0.35491784 3779.2911 0.16160071 543 577 5.9965398 0.18816581 0.00096536059 2.332667 5.5485401 337304.34 3 6 -Loop time of 0.0262729 on 4 procs for 50 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 88000 515.63138 -3198.9629 0.35491784 3779.2911 0.16160071 543 577 5.9965398 0.18827273 0.00096590909 2.332667 5.5485401 337304.34 3 6 - 89000 520.37063 -3197.8234 0 1 0.92013924 262 275 5.9965398 0.19148315 0.0011123596 2.332667 5.5485401 339909.57 3 6 -Loop time of 0.276247 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 89000 520.37063 -3197.8234 0 1 0.92013924 262 275 5.9965398 0.19148315 0.0011123596 2.332667 5.5485401 339909.57 3 6 - 89052 520.37063 -3217.9192 0 1 0.92013924 262 275 5.9965398 0.19137133 0.00111171 2.332667 5.5485401 339909.57 3 6 -Loop time of 0.0270152 on 4 procs for 52 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 89000 520.37063 -3197.8234 0.34652166 3110.1454 0.16621101 111 112 5.9965398 0.19148315 0.0011123596 2.332667 5.5485401 339909.57 4 8 - 90000 455.69218 -3197.8262 0.30521336 1192.3721 0.18724742 416 415 5.9965398 0.1905 0.0011 2.332667 5.5485401 345606.41 4 8 -Loop time of 0.272635 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 90000 455.69218 -3197.8262 0.30521336 1192.3721 0.18724742 416 415 5.9965398 0.1905 0.0011 2.332667 5.5485401 345606.41 4 8 - 90058 455.69218 -3217.9192 0.30521336 1192.3721 0.18724742 416 415 5.9965398 0.19037731 0.0010992916 2.332667 5.5485401 345606.41 4 8 -Loop time of 0.0304691 on 4 procs for 58 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 90000 455.69218 -3197.8262 0.30521336 1192.3721 0.18724742 416 415 5.9965398 0.1905 0.0011 2.332667 5.5485401 345606.41 4 8 - 91000 506.17768 -3197.1344 0.035696451 2.2898339 0.28909279 547 548 5.9965398 0.18983516 0.0010879121 2.332667 5.5485401 350825.27 4 8 -Loop time of 0.272004 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 91000 506.17768 -3197.1344 0.035696451 2.2898339 0.28909279 547 548 5.9965398 0.18983516 0.0010879121 2.332667 5.5485401 350825.27 4 8 - 91051 506.17768 -3217.9192 0.035696451 2.2898339 0.28909279 547 548 5.9965398 0.18972883 0.0010873027 2.332667 5.5485401 350825.27 4 8 -Loop time of 0.0266677 on 4 procs for 51 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 91000 506.17768 -3197.1344 0.035696451 2.2898339 0.28909279 547 548 5.9965398 0.18983516 0.0010879121 2.332667 5.5485401 350825.27 4 8 - 92000 478.3025 -3197.9483 0 1 0.30393958 544 556 5.9965398 0.19196739 0.001076087 2.332667 5.5485401 352816.62 4 8 -Loop time of 0.271163 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 92000 478.3025 -3197.9483 0 1 0.30393958 544 556 5.9965398 0.19196739 0.001076087 2.332667 5.5485401 352816.62 4 8 - 92060 478.3025 -3217.9192 0 1 0.30393958 544 556 5.9965398 0.19184228 0.0010753856 2.332667 5.5485401 352816.62 4 8 -Loop time of 0.0311572 on 4 procs for 60 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 92000 478.3025 -3197.9483 0 1 0.30393958 544 556 5.9965398 0.19196739 0.001076087 2.332667 5.5485401 352816.62 4 8 - 93000 485.23153 -3199.9299 0.16699022 48.215364 0.24483006 544 556 5.9965398 0.1942043 0.0010645161 2.332667 5.5485401 354391.05 4 8 -Loop time of 0.272074 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 93000 485.23153 -3199.9299 0.16699022 48.215364 0.24483006 544 556 5.9965398 0.1942043 0.0010645161 2.332667 5.5485401 354391.05 4 8 - 93056 485.23153 -3217.9192 0.16699022 48.215364 0.24483006 544 556 5.9965398 0.19408743 0.0010638755 2.332667 5.5485401 354391.05 4 8 -Loop time of 0.0298992 on 4 procs for 56 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 93000 485.23153 -3199.9299 0.16699022 48.215364 0.24483006 544 556 5.9965398 0.1942043 0.0010645161 2.332667 5.5485401 354391.05 4 8 - 94000 499.72991 -3199.3195 0 1 0.30394408 544 556 5.9965398 0.19443617 0.0010531915 2.332667 5.5485401 360147.54 4 8 -Loop time of 0.272173 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 94000 499.72991 -3199.3195 0 1 0.30394408 544 556 5.9965398 0.19443617 0.0010531915 2.332667 5.5485401 360147.54 4 8 - 94061 499.72991 -3217.9192 0 1 0.30394408 544 556 5.9965398 0.19431008 0.0010525085 2.332667 5.5485401 360147.54 4 8 -Loop time of 0.0319443 on 4 procs for 61 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 94000 499.72991 -3199.3195 0 1 0.30394408 544 556 5.9965398 0.19443617 0.0010531915 2.332667 5.5485401 360147.54 4 8 - 95000 509.83941 -3199.0903 0.078854869 6.234781 0.27532912 555 556 5.9965398 0.19681053 0.0010421053 2.332667 5.5485401 360599.28 4 8 -Loop time of 0.273026 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 95000 509.83941 -3199.0903 0.078854869 6.234781 0.27532912 555 556 5.9965398 0.19681053 0.0010421053 2.332667 5.5485401 360599.28 4 8 - 95060 509.83941 -3217.9192 0.078854869 6.234781 0.27532912 555 556 5.9965398 0.1966863 0.0010414475 2.332667 5.5485401 360599.28 4 8 -Loop time of 0.031275 on 4 procs for 60 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 95000 509.83941 -3199.0903 0.078854869 6.234781 0.27532912 555 556 5.9965398 0.19681053 0.0010421053 2.332667 5.5485401 360599.28 4 8 - 96000 486.83779 -3197.2106 0.31070799 1354.5503 0.18458755 136 431 5.9965398 0.19620833 0.00103125 2.332667 5.5485401 365489.89 4 8 -Loop time of 0.272012 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 96000 486.83779 -3197.2106 0.31070799 1354.5503 0.18458755 136 431 5.9965398 0.19620833 0.00103125 2.332667 5.5485401 365489.89 4 8 - 96053 486.83779 -3217.9192 0.31070799 1354.5503 0.18458755 136 431 5.9965398 0.19610007 0.001030681 2.332667 5.5485401 365489.89 4 8 -Loop time of 0.0279008 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 96000 486.83779 -3197.2106 0.31070799 1354.5503 0.18458755 136 431 5.9965398 0.19620833 0.00103125 2.332667 5.5485401 365489.89 4 8 - 97000 499.91835 -3199.2446 0.2280334 198.82589 0.22125548 280 111 5.9965398 0.19491753 0.0010206186 2.332667 5.5485401 372336.45 4 8 -Loop time of 0.271972 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 97000 499.91835 -3199.2446 0.2280334 198.82589 0.22125548 280 111 5.9965398 0.19491753 0.0010206186 2.332667 5.5485401 372336.45 4 8 - 97052 499.91835 -3217.9192 0.2280334 198.82589 0.22125548 280 111 5.9965398 0.19481309 0.0010200717 2.332667 5.5485401 372336.45 4 8 -Loop time of 0.0270085 on 4 procs for 52 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 97000 499.91835 -3199.2446 0.2280334 198.82589 0.22125548 280 111 5.9965398 0.19491753 0.0010206186 2.332667 5.5485401 372336.45 4 8 - 98000 547.56456 -3197.2191 0.27848637 641.23302 0.19968088 430 136 5.9965398 0.1957449 0.0010102041 2.332667 5.5485401 377711.41 4 8 -Loop time of 0.275821 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 98000 547.56456 -3197.2191 0.27848637 641.23302 0.19968088 430 136 5.9965398 0.1957449 0.0010102041 2.332667 5.5485401 377711.41 4 8 - 98054 547.56456 -3217.9192 0.27848637 641.23302 0.19968088 430 136 5.9965398 0.1956371 0.0010096477 2.332667 5.5485401 377711.41 4 8 -Loop time of 0.0288118 on 4 procs for 54 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 98000 547.56456 -3197.2191 0.27848637 641.23302 0.19968088 430 136 5.9965398 0.1957449 0.0010102041 2.332667 5.5485401 377711.41 4 8 - 99000 504.19627 -3196.6567 0 1 0.33814873 287 276 5.9965398 0.19517172 0.001 2.332667 5.5485401 381676.19 4 8 -Loop time of 0.273905 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 99000 504.19627 -3196.6567 0 1 0.33814873 287 276 5.9965398 0.19517172 0.001 2.332667 5.5485401 381676.19 4 8 - 99053 504.19627 -3217.9192 0 1 0.33814873 287 276 5.9965398 0.19506729 0.00099946493 2.332667 5.5485401 381676.19 4 8 -Loop time of 0.0270357 on 4 procs for 53 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 99000 504.19627 -3196.6567 0 1 0.33814873 287 276 5.9965398 0.19517172 0.001 2.332667 5.5485401 381676.19 4 8 - 100000 542.04702 -3198.2211 0.37630331 6208.2061 0.14921597 563 564 5.9965398 0.19442 0.00099 2.332667 5.5485401 385211.4 4 8 -Loop time of 0.273417 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] - 100000 542.04702 -3198.2211 0.37630331 6208.2061 0.14921597 563 564 5.9965398 0.19442 0.00099 2.332667 5.5485401 385211.4 4 8 - 100060 542.04702 -3217.9192 0.37630331 6208.2061 0.14921597 563 564 5.9965398 0.19430342 0.00098940636 2.332667 5.5485401 385211.4 4 8 -Loop time of 0.0298654 on 4 procs for 60 steps with 577 atoms - -Final hyper stats ... - -Cummulative quantities for fix hyper: - hyper time = 385211 - time boost factor = 770.423 - event timesteps = 4 - # of atoms in events = 8 -Quantities for this hyper run: - event timesteps = 4 - # of atoms in events = 8 - max length of any bond = 5.54854 - max drift distance of any atom = 2.33267 - fraction of biased bonds with zero bias = 0.19442 - fraction of biased bonds with negative strain = 0.00099 -Current quantities: - ave bonds/atom = 5.99654 - -Loop time of 31.4977 on 4 procs for 100000 steps with 577 atoms - -Performance: 1371.531 ns/day, 0.017 hours/ns, 3174.839 timesteps/s -101.1% CPU use with 4 MPI tasks x no OpenMP threads - -Hyper stats: - Dynamics time (%) = 28.1374 (89.3318) - Quench time (%) = 2.9881 (9.48673) - Other time (%) = 0.783587 (2.48776) - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 23.341 | 23.526 | 23.801 | 3.6 | 74.69 -Neigh | 1.4987 | 1.5551 | 1.628 | 4.0 | 4.94 -Comm | 3.1241 | 3.1892 | 3.2505 | 3.2 | 10.13 -Output | 0 | 0.0014506 | 0.0033743 | 3.9 | 0.00 -Modify | 2.2355 | 2.4419 | 2.5791 | 8.1 | 7.75 -Other | | 0.7836 | | | 2.49 - -Nlocal: 144.25 ave 152 max 139 min -Histogram: 1 1 0 0 1 0 0 0 0 1 -Nghost: 533.25 ave 538 max 526 min -Histogram: 1 0 0 0 0 1 0 0 0 2 -Neighs: 3368.25 ave 3528 max 3240 min -Histogram: 1 1 0 0 0 0 1 0 0 1 - -Total # of neighbors = 13473 -Ave neighs/atom = 23.3501 -Neighbor list builds = 10072 -Dangerous builds = 0 -Total wall time: 0:00:31 diff --git a/examples/hyper/log.9Jan20.hyper.local.g++.4 b/examples/hyper/log.9Jan20.hyper.local.g++.4 deleted file mode 100644 index 6ef7a76365..0000000000 --- a/examples/hyper/log.9Jan20.hyper.local.g++.4 +++ /dev/null @@ -1,646 +0,0 @@ -LAMMPS (09 Jan 2020) -# 3d EAM surface for local HD - -# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92 -# hop event on (100) surface is same distance -# exchange event is 2 atoms moving same distance - -variable Tequil index 400.0 -variable Vmax index 0.4 -variable qfactor index 0.3 -variable cutbond index 3.2 -variable Dcut index 10.0 -variable cutevent index 1.1 -variable alpha index 200.0 -variable boost index 4000.0 -variable ghostcut index 12.0 -variable steps index 2000 -variable nevent index 100 -variable nx index 2 -variable ny index 2 -variable zoom index 1.8 -variable seed index 3875984 -variable tol index 1.0e-15 -variable add index 50 - -units metal -atom_style atomic -atom_modify map array -boundary p p p -comm_modify cutoff ${ghostcut} -comm_modify cutoff 12.0 - -lattice fcc 3.92 -Lattice spacing in x,y,z = 3.92 3.92 3.92 -region box block 0 6 0 6 0 4 -create_box 2 box -Created orthogonal box = (0 0 0) to (23.52 23.52 15.68) - 2 by 2 by 1 MPI processor grid -create_atoms 1 box -Created 576 atoms - create_atoms CPU = 0 secs - -mass * 1.0 - -change_box all z final -0.1 5.0 boundary p p f - orthogonal box = (0 0 -0.392) to (23.52 23.52 19.6) - -# replicate in xy - -replicate ${nx} ${ny} 1 -replicate 2 ${ny} 1 -replicate 2 2 1 - orthogonal box = (0 0 -0.392) to (47.04 47.04 19.6) - 2 by 2 by 1 MPI processor grid - 2304 atoms - replicate CPU = 0.00200009 secs - -# add adatoms - -include adatoms.list.${add} -include adatoms.list.50 -create_atoms 1 single 5 9 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 4.5 7.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 6 6 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 5 6 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 4.5 1.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 6.5 7.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 10.5 5.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 2.5 1.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 3.5 4.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 0 10 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 11 10 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 6.5 10.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 3.5 5.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 7.5 10.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 1.5 1.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 1.5 6.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 7 2 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 4 0 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 9 0 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 4 9 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 10 7 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 4 4 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 9.5 2.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 1 5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 7 10 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 0 4 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 1 10 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 7.5 6.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 4 10 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 6.5 3.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 3 6 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 8.5 4.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 6.5 0.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 1 4 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 8.5 11.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 3 9 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 2 3 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 6.5 8.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 1 0 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 0.5 10.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 4 11 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 3 5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 0 1 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 2 11 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 2 0 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 7.5 11.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 1 7 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 3.5 10.5 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 0 2 4 -Created 1 atoms - create_atoms CPU = 0 secs -create_atoms 1 single 8 4 4 -Created 1 atoms - create_atoms CPU = 0 secs - -# define frozen substrate and mobile atoms - -region base block INF INF INF INF 0 1.8 -set region base type 2 - 1152 settings made for type -group base type 2 -1152 atoms in group base -group mobile type 1 -1202 atoms in group mobile - -# pair style - -pair_style eam/alloy -pair_coeff * * ptvoterlammps.eam Pt Pt - -neighbor 0.5 bin -neigh_modify every 1 delay 5 check yes - -fix 1 mobile nve -fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes -fix 2 mobile langevin 400.0 ${Tequil} 1.0 ${seed} zero yes -fix 2 mobile langevin 400.0 400.0 1.0 ${seed} zero yes -fix 2 mobile langevin 400.0 400.0 1.0 3875984 zero yes - -timestep 0.005 - -compute tmobile mobile temp - -thermo 100 -thermo_modify temp tmobile -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:485) - -# thermal equilibration - -run 1000 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.07583 - ghost atom cutoff = 12 - binsize = 3.03792, bins = 16 16 7 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair eam/alloy, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/3d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 3.082 | 3.082 | 3.082 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0 -13067.188 0 -13067.188 -53763.139 - 100 216.49187 -13065.694 0 -13032.085 -24077.115 - 200 285.11905 -13057.047 0 -13012.785 -38815.844 - 300 321.67264 -13048.005 0 -12998.068 -29296.124 - 400 352.90893 -13045.707 0 -12990.92 -34630.884 - 500 371.9393 -13041.234 0 -12983.494 -28913.827 - 600 379.08135 -13040.06 0 -12981.211 -33399.8 - 700 388.73836 -13039.691 0 -12979.343 -29446.954 - 800 402.13628 -13040.606 0 -12978.178 -33026.861 - 900 389.43806 -13036.884 0 -12976.427 -30328.658 - 1000 388.66198 -13037.479 0 -12977.142 -30859.145 -Loop time of 1.28003 on 4 procs for 1000 steps with 2354 atoms - -Performance: 337.492 ns/day, 0.071 hours/ns, 781.232 timesteps/s -100.0% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 1.054 | 1.077 | 1.094 | 1.6 | 84.14 -Neigh | 0.054002 | 0.056502 | 0.060002 | 1.0 | 4.41 -Comm | 0.087002 | 0.11025 | 0.133 | 5.6 | 8.61 -Output | 0 | 0 | 0 | 0.0 | 0.00 -Modify | 0.031003 | 0.031502 | 0.032002 | 0.3 | 2.46 -Other | | 0.00475 | | | 0.37 - -Nlocal: 588.5 ave 592 max 581 min -Histogram: 1 0 0 0 0 0 0 1 0 2 -Nghost: 1964 ave 1973 max 1959 min -Histogram: 2 0 0 1 0 0 0 0 0 1 -Neighs: 14148.8 ave 14283 max 13931 min -Histogram: 1 0 0 0 0 0 1 1 0 1 - -Total # of neighbors = 56595 -Ave neighs/atom = 24.0421 -Neighbor list builds = 91 -Dangerous builds = 0 -reset_timestep 0 - -# pin base so will not move during quenches - -fix freeze base setforce 0.0 0.0 0.0 - -# event detection - -compute event all event/displace ${cutevent} -compute event all event/displace 1.1 - -# hyper/local - -fix HL mobile hyper/local ${cutbond} ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} -fix HL mobile hyper/local 3.2 ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} -fix HL mobile hyper/local 3.2 0.3 ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} -fix HL mobile hyper/local 3.2 0.3 0.4 ${Tequil} ${Dcut} ${alpha} ${boost} -fix HL mobile hyper/local 3.2 0.3 0.4 400.0 ${Dcut} ${alpha} ${boost} -fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 ${alpha} ${boost} -fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 ${boost} -fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 4000.0 - -# thermo output - -thermo_style custom step temp pe f_HL f_HL[*] -WARNING: New thermo_style command, previous thermo_modify settings will be lost (../output.cpp:708) - -thermo_modify lost ignore -thermo_modify temp tmobile -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:485) - -thermo ${nevent} -thermo 100 - -# dump - -region substrate block INF INF INF INF 1.8 3.8 -region adatoms block INF INF INF INF 3.8 INF -variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms) - -dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 -dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom 1.8 adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 -dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green - -# run - -hyper ${steps} ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1 -hyper 2000 ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1 -hyper 2000 100 HL event min ${tol} ${tol} 1000 1000 dump 1 -hyper 2000 100 HL event min 1.0e-15 ${tol} 1000 1000 dump 1 -hyper 2000 100 HL event min 1.0e-15 1.0e-15 1000 1000 dump 1 -WARNING: Resetting reneighboring criteria during hyper (../hyper.cpp:131) -Neighbor list info ... - update every 1 steps, delay 0 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.07583 - ghost atom cutoff = 12 - binsize = 3.03792, bins = 16 16 7 - 3 neighbor lists, perpetual/occasional/extra = 1 2 0 - (1) pair eam/alloy, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/3d/newton - bin: standard - (2) fix hyper/local, occasional - attributes: full, newton on, cut 10 - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard - (3) fix hyper/local, occasional, copy from (1) - attributes: half, newton on - pair build: copy - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 6.666 | 6.666 | 6.666 Mbytes -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 0 388.66198 -13037.479 0 1 0 0 0.4 1 0 0 0 0 0 0 0 0 0 0 1e+20 0 0 0 0 0 0 0 0 0 0 1 0 - 77 388.66198 -13101.057 0 1 0 0 0.4 1 0 0 0 0 0 0 0 0 0 0 1e+20 0 0 0 0 0 0 1540 0 0 0 1 0 -Loop time of 0.179004 on 4 procs for 77 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 0 388.66198 -13037.479 2.1560984 0 7 0.19075508 0.4 0 0 0 5.9276206 1380.4406 0 0 0 0 3.2725891 0 1e+20 0 0 0 0 0 0 0 0 0 0 10345.205 0 - 100 398.83324 -13036.879 2.1057282 8397.3244 7 0.17605069 0.4 0.99370412 0.98222607 1.0036767 5.9276206 1380.4406 8029.3662 4.83 0 0 3.3896963 0.9967648 0.98222607 1.0036767 0 0 0 0 0 2000 0 0 0 8152.8259 0 -Loop time of 0.127003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 100 398.83324 -13036.879 2.1057282 8397.3244 7 0.17605069 0.4 0.99370412 0.98222607 1.0036767 5.9276206 1380.4406 8029.3662 4.83 0 0 3.3896963 0.9967648 0.98222607 1.0036767 0 0 0 0 0 2000 0 0 0 8152.8259 0 - 167 398.83324 -13101.057 2.1057282 8397.3244 7 0.17605069 0.4 0.99370412 0.98222607 1.0036767 5.9276206 1380.4406 8029.3662 2.8922156 0 0 3.3896963 0.9967648 0.98222607 1.0036767 0 0 0 0 0 3340 0 0 0 8152.8259 0 -Loop time of 0.127003 on 4 procs for 67 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 100 398.83324 -13036.879 2.1055533 8397.3244 7 0.17605069 0.4 0.99370412 0.98222607 1.0036767 5.9276206 1380.4406 8029.3662 4.83 0 0 3.3896963 0.9967648 0.98222607 1.0036767 0 0 0 0 0 2000 0 0 0 8129.9856 0 - 200 389.68041 -13036.5 1.3143359 4136.9005 6 0.31228203 0.4 0.99085481 0.96933773 1.0092702 5.9276206 1380.4406 6926.4597 5.43 0.035911602 0.00092081031 3.7338089 0.99450416 0.96933773 1.0092702 0 0 0 0 0 4000 0 0 0 3361.4715 1 -Loop time of 0.127003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 200 389.68041 -13036.5 1.3143359 4136.9005 6 0.31228203 0.4 0.99085481 0.96933773 1.0092702 5.9276206 1380.4406 6926.4597 5.43 0.035911602 0.00092081031 3.7338089 0.99450416 0.96933773 1.0092702 0 0 0 0 0 4000 0 0 0 3361.4715 1 - 270 389.68041 -13101.057 1.3143359 4136.9005 6 0.31228203 0.4 0.99085481 0.96933773 1.0092702 5.9276206 1380.4406 6926.4597 4.0222222 0.035911602 0.00092081031 3.7338089 0.99450416 0.96933773 1.0092702 0 0 0 0 0 5400 0 0 0 3361.4715 1 -Loop time of 0.134003 on 4 procs for 70 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 200 389.68041 -13036.5 1.3143057 4136.9005 6 0.31228203 0.4 0.99085481 0.96933773 1.0092702 5.9276206 1380.4406 6926.4597 5.43 0.035911602 0.00092081031 3.7338089 0.99450416 0.96933773 1.0092702 0 0 0 0 0 4000 0 0 0 3356.2384 1 - 300 410.34512 -13036.301 1.3677603 4656.4226 6 0.33838934 0.4 0.99110308 0.96057751 1.0154382 5.9276206 1380.4406 5898.0094 5.44 0.036764706 0.0006127451 3.7338089 0.9934181 0.96057751 1.0154382 0 0 0 0 0 6000 0 0 0 4213.1218 1 -Loop time of 0.129003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 300 410.34512 -13036.301 1.3677603 4656.4226 6 0.33838934 0.4 0.99110308 0.96057751 1.0154382 5.9276206 1380.4406 5898.0094 5.44 0.036764706 0.0006127451 3.7338089 0.9934181 0.96057751 1.0154382 0 0 0 0 0 6000 0 0 0 4213.1218 1 - 375 410.34512 -13101.057 1.3677603 4656.4226 6 0.33838934 0.4 0.99110308 0.96057751 1.0154382 5.9276206 1380.4406 5898.0094 4.352 0.036764706 0.0006127451 3.7338089 0.9934181 0.96057751 1.0154382 0 0 0 0 0 7500 0 0 0 4213.1218 1 -Loop time of 0.143004 on 4 procs for 75 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 300 410.34512 -13036.301 1.3677058 4656.4226 6 0.33838934 0.4 0.99110308 0.96057751 1.0154382 5.9276206 1380.4406 5898.0094 5.44 0.036764706 0.0006127451 3.7338089 0.9934181 0.96057751 1.0154382 0 0 0 0 0 6000 0 0 0 4207.0688 1 - 400 408.54896 -13036.835 1.090295 4172.0981 6 0.46750515 0.4 0.99130905 0.95644819 1.0207114 5.9276206 1380.4406 5390.5516 5.365 0.095060578 0.00046598322 3.9885296 0.9928942 0.95644819 1.0207114 0 0 0 0 0 8000 0 0 0 3865.6547 3 -Loop time of 0.126003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 400 408.54896 -13036.835 1.090295 4172.0981 6 0.46750515 0.4 0.99130905 0.95644819 1.0207114 5.9276206 1380.4406 5390.5516 5.365 0.095060578 0.00046598322 3.9885296 0.9928942 0.95644819 1.0207114 0 0 0 0 0 8000 0 0 0 3865.6547 3 - 471 408.54896 -13101.694 1.090295 4172.0981 6 0.46750515 0.4 0.99130905 0.95644819 1.0207114 5.9276206 1380.4406 5390.5516 4.5562633 0.095060578 0.00046598322 3.9885296 0.9928942 0.95644819 1.0207114 0 0 0 0 0 9420 0 0 0 3865.6547 3 -Loop time of 0.131003 on 4 procs for 71 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 400 408.54896 -13036.835 1.090341 4171.5126 6 0.33910027 0.4 0.99116994 0.95644819 1.0207114 5.9284526 1380.3372 5390.5516 5.365 0.095060578 0.00046598322 3.9885296 0.9928942 0.95644819 1.0207114 2.7381277 0 0 0 0 8000 1 1 3 3863.7908 2 - 500 408.04798 -13035.819 1.887274 2622.1876 8 0.25727119 0.4 0.99128739 0.95020853 1.0240862 5.9284526 1380.3372 5115.3824 5.63 0.077087034 0.00071047957 3.9885296 0.99251152 0.95020853 1.0240862 2.7381277 0 0 0 0 10000 1 1 3 4184.3452 0 -Loop time of 0.128003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 500 408.04798 -13035.819 1.887274 2622.1876 8 0.25727119 0.4 0.99128739 0.95020853 1.0240862 5.9284526 1380.3372 5115.3824 5.63 0.077087034 0.00071047957 3.9885296 0.99251152 0.95020853 1.0240862 2.7381277 0 0 0 0 10000 1 1 3 4184.3452 0 - 569 408.04798 -13101.694 1.887274 2622.1876 8 0.25727119 0.4 0.99128739 0.95020853 1.0240862 5.9284526 1380.3372 5115.3824 4.9472759 0.077087034 0.00071047957 3.9885296 0.99251152 0.95020853 1.0240862 2.7381277 0 0 0 0 11380 1 1 3 4184.3452 0 -Loop time of 0.135003 on 4 procs for 69 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 500 408.04798 -13035.819 1.8872278 2622.1876 8 0.25727119 0.4 0.99128739 0.95020853 1.0240862 5.9284526 1380.3372 5115.3824 5.63 0.077087034 0.00071047957 3.9885296 0.99251152 0.95020853 1.0240862 2.7381277 0 0 0 0 10000 1 1 3 4177.8105 0 - 600 419.0918 -13035.34 1.0950129 5050.5345 5 0.30933918 0.4 0.99315523 0.94243697 1.0303 5.9284526 1380.3372 4730.2494 5.7483333 0.082052769 0.00057987823 4.0620002 0.99251861 0.94243697 1.0303 2.7381277 0 0 0 0 12000 1 1 3 4375.7612 1 -Loop time of 0.128003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 600 419.0918 -13035.34 1.0950129 5050.5345 5 0.30933918 0.4 0.99315523 0.94243697 1.0303 5.9284526 1380.3372 4730.2494 5.7483333 0.082052769 0.00057987823 4.0620002 0.99251861 0.94243697 1.0303 2.7381277 0 0 0 0 12000 1 1 3 4375.7612 1 - 669 419.0918 -13101.694 1.0950129 5050.5345 5 0.30933918 0.4 0.99315523 0.94243697 1.0303 5.9284526 1380.3372 4730.2494 5.1554559 0.082052769 0.00057987823 4.0620002 0.99251861 0.94243697 1.0303 2.7381277 0 0 0 0 13380 1 1 3 4375.7612 1 -Loop time of 0.131003 on 4 procs for 69 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 600 419.0918 -13035.34 1.0949592 5050.5345 5 0.30933918 0.4 0.99315523 0.94243697 1.0303 5.9284526 1380.3372 4730.2494 5.7483333 0.082052769 0.00057987823 4.0620002 0.99251861 0.94243697 1.0303 2.7381277 0 0 0 0 12000 1 1 3 4366.2434 1 - 700 404.99792 -13038.375 1.7496634 5457.7386 6 0.20603012 0.4 0.99311471 0.93767338 1.0364661 5.9284526 1380.3372 4629.6326 5.7757143 0.077170418 0.00049468217 4.0620002 0.99261201 0.93732488 1.0364661 2.7381277 0 0 0 0 14000 1 1 3 5897.4776 0 -Loop time of 0.128003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 700 404.99792 -13038.375 1.7496634 5457.7386 6 0.20603012 0.4 0.99311471 0.93767338 1.0364661 5.9284526 1380.3372 4629.6326 5.7757143 0.077170418 0.00049468217 4.0620002 0.99261201 0.93732488 1.0364661 2.7381277 0 0 0 0 14000 1 1 3 5897.4776 0 - 775 404.99792 -13101.694 1.7496634 5457.7386 6 0.20603012 0.4 0.99311471 0.93767338 1.0364661 5.9284526 1380.3372 4629.6326 5.2167742 0.077170418 0.00049468217 4.0620002 0.99261201 0.93732488 1.0364661 2.7381277 0 0 0 0 15500 1 1 3 5897.4776 0 -Loop time of 0.166004 on 4 procs for 75 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 700 404.99792 -13038.375 1.7495648 5457.7386 6 0.20603012 0.4 0.99311471 0.93767338 1.0364661 5.9284526 1380.3372 4629.6326 5.7757143 0.077170418 0.00049468217 4.0620002 0.99261201 0.93732488 1.0364661 2.7381277 0 0 0 0 14000 1 1 3 5888.5728 0 - 800 421.10795 -13037.462 1.8512835 3051.7064 8 0.31933951 0.4 0.9902351 0.93814672 1.0426311 5.9284526 1380.3372 4781.2974 5.8125 0.070322581 0.00043010753 4.0620002 0.99242754 0.93732488 1.0426311 2.7381277 0 0 0 0 16000 1 1 3 3122.0342 1 -Loop time of 0.245005 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 800 421.10795 -13037.462 1.8512835 3051.7064 8 0.31933951 0.4 0.9902351 0.93814672 1.0426311 5.9284526 1380.3372 4781.2974 5.8125 0.070322581 0.00043010753 4.0620002 0.99242754 0.93732488 1.0426311 2.7381277 0 0 0 0 16000 1 1 3 3122.0342 1 - 869 421.10795 -13101.694 1.8512835 3051.7064 8 0.31933951 0.4 0.9902351 0.93814672 1.0426311 5.9284526 1380.3372 4781.2974 5.3509781 0.070322581 0.00043010753 4.0620002 0.99242754 0.93732488 1.0426311 2.7381277 0 0 0 0 17380 1 1 3 3122.0342 1 -Loop time of 0.180005 on 4 procs for 69 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 800 421.10795 -13037.462 1.8512626 3051.7064 8 0.31933951 0.4 0.9902351 0.93814672 1.0426311 5.9284526 1380.3372 4781.2974 5.8125 0.070322581 0.00043010753 4.0620002 0.99242754 0.93732488 1.0426311 2.7381277 0 0 0 0 16000 1 1 3 3118.9745 1 - 900 424.48211 -13036.231 1.5461807 1757.5544 7 0.25079261 0.4 0.99160613 0.94071212 1.0485957 5.9284526 1380.3372 4596.991 5.8511111 0.073300418 0.00037979491 4.0620002 0.99224254 0.93732488 1.0485957 2.7381277 0 0 0 0 18000 1 1 3 1803.828 0 -Loop time of 0.158003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 900 424.48211 -13036.231 1.5461807 1757.5544 7 0.25079261 0.4 0.99160613 0.94071212 1.0485957 5.9284526 1380.3372 4596.991 5.8511111 0.073300418 0.00037979491 4.0620002 0.99224254 0.93732488 1.0485957 2.7381277 0 0 0 0 18000 1 1 3 1803.828 0 - 969 424.48211 -13101.694 1.5461807 1757.5544 7 0.25079261 0.4 0.99160613 0.94071212 1.0485957 5.9284526 1380.3372 4596.991 5.4344685 0.073300418 0.00037979491 4.0620002 0.99224254 0.93732488 1.0485957 2.7381277 0 0 0 0 19380 1 1 3 1803.828 0 -Loop time of 0.165004 on 4 procs for 69 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 900 424.48211 -13036.231 1.5462201 1757.5544 7 0.25079261 0.4 0.99160613 0.94071212 1.0485957 5.9284526 1380.3372 4596.991 5.8511111 0.073300418 0.00037979491 4.0620002 0.99224254 0.93732488 1.0485957 2.7381277 0 0 0 0 18000 1 1 3 1803.5841 0 - 1000 392.14281 -13033.226 1.3114425 4884.4012 6 0.28781471 0.4 0.99342697 0.93855058 1.0449678 5.9284526 1380.3372 4420.7581 5.862 0.076765609 0.00034118048 4.0620002 0.99230204 0.93732488 1.0514799 2.7381277 0 0 0 0 20000 1 1 3 6648.5089 0 -Loop time of 0.159004 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1000 392.14281 -13033.226 1.3114425 4884.4012 6 0.28781471 0.4 0.99342697 0.93855058 1.0449678 5.9284526 1380.3372 4420.7581 5.862 0.076765609 0.00034118048 4.0620002 0.99230204 0.93732488 1.0514799 2.7381277 0 0 0 0 20000 1 1 3 6648.5089 0 - 1070 392.14281 -13101.694 1.3114425 4884.4012 6 0.28781471 0.4 0.99342697 0.93855058 1.0449678 5.9284526 1380.3372 4420.7581 5.4785047 0.076765609 0.00034118048 4.0620002 0.99230204 0.93732488 1.0514799 2.7381277 0 0 0 0 21400 1 1 3 6648.5089 0 -Loop time of 0.167004 on 4 procs for 70 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1000 392.14281 -13033.226 1.3113308 4884.4012 6 0.28781471 0.4 0.99342697 0.93855058 1.0449678 5.9284526 1380.3372 4420.7581 5.862 0.076765609 0.00034118048 4.0620002 0.99230204 0.93732488 1.0514799 2.7381277 0 0 0 0 20000 1 1 3 6627.3707 0 - 1100 403.51397 -13035.66 0.54686506 3968.0952 5 0.36081738 0.4 0.99442104 0.93685489 1.0457452 5.9284526 1380.3372 4324.6709 5.89 0.077944127 0.00030868961 4.0620002 0.99241625 0.93604385 1.0514799 2.7381277 0 0 0 0 22000 1 1 3 1724.5221 2 -Loop time of 0.143003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1100 403.51397 -13035.66 0.54686506 3968.0952 5 0.36081738 0.4 0.99442104 0.93685489 1.0457452 5.9284526 1380.3372 4324.6709 5.89 0.077944127 0.00030868961 4.0620002 0.99241625 0.93604385 1.0514799 2.7381277 0 0 0 0 22000 1 1 3 1724.5221 2 - 1170 403.51397 -13101.694 0.54686506 3968.0952 5 0.36081738 0.4 0.99442104 0.93685489 1.0457452 5.9284526 1380.3372 4324.6709 5.5376068 0.077944127 0.00030868961 4.0620002 0.99241625 0.93604385 1.0514799 2.7381277 0 0 0 0 23400 1 1 3 1724.5221 2 -Loop time of 0.134003 on 4 procs for 70 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1100 403.51397 -13035.66 0.54686188 3968.0952 5 0.36081738 0.4 0.99442104 0.93685489 1.0457452 5.9284526 1380.3372 4324.6709 5.89 0.077944127 0.00030868961 4.0620002 0.99241625 0.93604385 1.0514799 2.7381277 0 0 0 0 22000 1 1 3 1722.7748 2 - 1200 407.58933 -13037.757 0.83605065 5192.3954 5 0.3055123 0.4 0.99647568 0.93650885 1.0519936 5.9284526 1380.3372 4188.034 5.8883333 0.092838947 0.0022643646 4.0620002 0.99266277 0.9344152 1.0519936 2.7381277 0 0 0 0 24000 1 1 3 3708.6014 1 -Loop time of 0.127003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1200 407.58933 -13037.757 0.83605065 5192.3954 5 0.3055123 0.4 0.99647568 0.93650885 1.0519936 5.9284526 1380.3372 4188.034 5.8883333 0.092838947 0.0022643646 4.0620002 0.99266277 0.9344152 1.0519936 2.7381277 0 0 0 0 24000 1 1 3 3708.6014 1 - 1275 407.58933 -13101.694 0.83605065 5192.3954 5 0.3055123 0.4 0.99647568 0.93650885 1.0519936 5.9284526 1380.3372 4188.034 5.5419608 0.092838947 0.0022643646 4.0620002 0.99266277 0.9344152 1.0519936 2.7381277 0 0 0 0 25500 1 1 3 3708.6014 1 -Loop time of 0.147004 on 4 procs for 75 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1200 407.58933 -13037.757 0.83600436 5192.3954 5 0.3055123 0.4 0.99647568 0.93650885 1.0519936 5.9284526 1380.3372 4188.034 5.8883333 0.092838947 0.0022643646 4.0620002 0.99266277 0.9344152 1.0519936 2.7381277 0 0 0 0 24000 1 1 3 3695.4259 1 - 1300 397.34752 -13035.27 1.143529 3889.5642 6 0.59455796 0.4 0.99734951 0.93577374 1.0582257 5.9284526 1380.3372 4130.5503 5.9123077 0.094977882 0.002081707 4.1048198 0.99297572 0.9344152 1.0582257 2.7381277 0 0 0 0 26000 1 1 3 2236.4525 2 -Loop time of 0.129003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1300 397.34752 -13035.27 1.143529 3889.5642 6 0.59455796 0.4 0.99734951 0.93577374 1.0582257 5.9284526 1380.3372 4130.5503 5.9123077 0.094977882 0.002081707 4.1048198 0.99297572 0.9344152 1.0582257 2.7381277 0 0 0 0 26000 1 1 3 2236.4525 2 - 1379 397.34752 -13102.882 1.143529 3889.5642 6 0.59455796 0.4 0.99734951 0.93577374 1.0582257 5.9284526 1380.3372 4130.5503 5.5736041 0.094977882 0.002081707 4.1048198 0.99297572 0.9344152 1.0582257 2.7381277 0 0 0 0 27580 1 1 3 2236.4525 2 -Loop time of 0.130003 on 4 procs for 79 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1300 397.34752 -13035.27 0.8513344 3888.4728 5 0.43479061 0.4 0.99706967 0.93577374 1.0582257 5.9301165 1379.4348 4130.5503 5.9123077 0.094977882 0.002081707 4.1048198 0.99297572 0.9344152 1.0582257 2.7473869 0 0 0 0 26000 2 2 7 1674.6282 2 - 1400 406.75788 -13035.822 0.98339012 2583.5703 5 0.26687439 0.4 0.99725016 0.93341809 1.0565516 5.9301165 1379.4348 4125.2065 5.9 0.09503632 0.001937046 4.1048198 0.99327179 0.93335055 1.0582257 2.7473869 0 0 0 0 28000 2 2 7 1900.8002 0 -Loop time of 0.145003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1400 406.75788 -13035.822 0.98339012 2583.5703 5 0.26687439 0.4 0.99725016 0.93341809 1.0565516 5.9301165 1379.4348 4125.2065 5.9 0.09503632 0.001937046 4.1048198 0.99327179 0.93335055 1.0582257 2.7473869 0 0 0 0 28000 2 2 7 1900.8002 0 - 1471 406.75788 -13102.882 0.98339012 2583.5703 5 0.26687439 0.4 0.99725016 0.93341809 1.0565516 5.9301165 1379.4348 4125.2065 5.6152277 0.09503632 0.001937046 4.1048198 0.99327179 0.93335055 1.0582257 2.7473869 0 0 0 0 29420 2 2 7 1900.8002 0 -Loop time of 0.134003 on 4 procs for 71 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1400 406.75788 -13035.822 0.98339747 2583.5703 5 0.26687439 0.4 0.99725016 0.93341809 1.0565516 5.9301165 1379.4348 4125.2065 5.9 0.09503632 0.001937046 4.1048198 0.99327179 0.93335055 1.0582257 2.7473869 0 0 0 0 28000 2 2 7 1898.7054 0 - 1500 403.04712 -13038.033 1.7734093 2587.2539 8 0.26021596 0.4 0.99949004 0.93136824 1.0627109 5.9301165 1379.4348 4021.2913 5.914 0.094465111 0.0018036298 4.1048198 0.99360825 0.93115568 1.0627109 2.7473869 0 0 0 0 30000 2 2 7 4239.5287 0 -Loop time of 0.124003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1500 403.04712 -13038.033 1.7734093 2587.2539 8 0.26021596 0.4 0.99949004 0.93136824 1.0627109 5.9301165 1379.4348 4021.2913 5.914 0.094465111 0.0018036298 4.1048198 0.99360825 0.93115568 1.0627109 2.7473869 0 0 0 0 30000 2 2 7 4239.5287 0 - 1568 403.04712 -13102.882 1.7734093 2587.2539 8 0.26021596 0.4 0.99949004 0.93136824 1.0627109 5.9301165 1379.4348 4021.2913 5.6575255 0.094465111 0.0018036298 4.1048198 0.99360825 0.93115568 1.0627109 2.7473869 0 0 0 0 31360 2 2 7 4239.5287 0 -Loop time of 0.135003 on 4 procs for 68 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1500 403.04712 -13038.033 1.7733495 2587.2539 8 0.26021596 0.4 0.99949004 0.93136824 1.0627109 5.9301165 1379.4348 4021.2913 5.914 0.094465111 0.0018036298 4.1048198 0.99360825 0.93115568 1.0627109 2.7473869 0 0 0 0 30000 2 2 7 4227.4184 0 - 1600 413.63587 -13039.863 0.67705876 2150.6698 5 0.32653141 0.4 1.0004587 0.9309105 1.06525 5.9301165 1379.4348 3981.2133 5.93375 0.090478197 0.0016852749 4.1048198 0.99397193 0.92879897 1.06525 2.7473869 0 0 0 0 32000 2 2 7 822.48747 1 -Loop time of 0.132003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1600 413.63587 -13039.863 0.67705876 2150.6698 5 0.32653141 0.4 1.0004587 0.9309105 1.06525 5.9301165 1379.4348 3981.2133 5.93375 0.090478197 0.0016852749 4.1048198 0.99397193 0.92879897 1.06525 2.7473869 0 0 0 0 32000 2 2 7 822.48747 1 - 1669 413.63587 -13102.882 0.67705876 2150.6698 5 0.32653141 0.4 1.0004587 0.9309105 1.06525 5.9301165 1379.4348 3981.2133 5.6884362 0.090478197 0.0016852749 4.1048198 0.99397193 0.92879897 1.06525 2.7473869 0 0 0 0 33380 2 2 7 822.48747 1 -Loop time of 0.135003 on 4 procs for 69 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1600 413.63587 -13039.863 0.67707996 2150.6698 5 0.32653141 0.4 1.0004587 0.9309105 1.06525 5.9301165 1379.4348 3981.2133 5.93375 0.090478197 0.0016852749 4.1048198 0.99397193 0.92879897 1.06525 2.7473869 0 0 0 0 32000 2 2 7 822.44597 1 - 1700 410.04422 -13040.035 1.0190943 1598.6072 7 0.29206253 0.4 1.0030056 0.92869822 1.0714971 5.9301165 1379.4348 3886.4362 5.9435294 0.093527316 0.0015835313 4.1048198 0.99441728 0.92869822 1.0714971 2.7473869 0 0 0 0 34000 2 2 7 1041.7855 0 -Loop time of 0.129003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1700 410.04422 -13040.035 1.0190943 1598.6072 7 0.29206253 0.4 1.0030056 0.92869822 1.0714971 5.9301165 1379.4348 3886.4362 5.9435294 0.093527316 0.0015835313 4.1048198 0.99441728 0.92869822 1.0714971 2.7473869 0 0 0 0 34000 2 2 7 1041.7855 0 - 1770 410.04422 -13102.882 1.0190943 1598.6072 7 0.29206253 0.4 1.0030056 0.92869822 1.0714971 5.9301165 1379.4348 3886.4362 5.7084746 0.093527316 0.0015835313 4.1048198 0.99441728 0.92869822 1.0714971 2.7473869 0 0 0 0 35400 2 2 7 1041.7855 0 -Loop time of 0.145004 on 4 procs for 70 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1700 410.04422 -13040.035 1.0191295 1598.6072 7 0.29206253 0.4 1.0030056 0.92869822 1.0714971 5.9301165 1379.4348 3886.4362 5.9435294 0.093527316 0.0015835313 4.1048198 0.99441728 0.92869822 1.0714971 2.7473869 0 0 0 0 34000 2 2 7 1041.6898 0 - 1800 413.56333 -13039.872 1.6705072 5357.337 7 0.28802305 0.4 1.0045556 0.92823157 1.0777313 5.9301165 1379.4348 3837.633 5.9366667 0.095545574 0.0014972862 4.1048198 0.99496874 0.92821036 1.0777313 2.7473869 0 0 0 0 36000 2 2 7 7008.708 0 -Loop time of 0.157003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1800 413.56333 -13039.872 1.6705072 5357.337 7 0.28802305 0.4 1.0045556 0.92823157 1.0777313 5.9301165 1379.4348 3837.633 5.9366667 0.095545574 0.0014972862 4.1048198 0.99496874 0.92821036 1.0777313 2.7473869 0 0 0 0 36000 2 2 7 7008.708 0 - 1868 413.56333 -13102.882 1.6705072 5357.337 7 0.28802305 0.4 1.0045556 0.92823157 1.0777313 5.9301165 1379.4348 3837.633 5.7205567 0.095545574 0.0014972862 4.1048198 0.99496874 0.92821036 1.0777313 2.7473869 0 0 0 0 37360 2 2 7 7008.708 0 -Loop time of 0.143003 on 4 procs for 68 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1800 413.56333 -13039.872 1.6703547 5357.337 7 0.28802305 0.4 1.0045556 0.92823157 1.0777313 5.9301165 1379.4348 3837.633 5.9366667 0.095545574 0.0014972862 4.1048198 0.99496874 0.92821036 1.0777313 2.7473869 0 0 0 0 36000 2 2 7 6990.9088 0 - 1900 389.96327 -13036.384 0.50418526 2970.8471 5 0.2897091 0.4 1.0069357 0.92635421 1.083738 5.9301165 1379.4348 3766.0095 5.9652632 0.092376919 0.0014116817 4.1048198 0.9955231 0.92635421 1.083738 2.7473869 0 0 0 0 38000 2 2 7 102.84786 0 -Loop time of 0.161004 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1900 389.96327 -13036.384 0.50418526 2970.8471 5 0.2897091 0.4 1.0069357 0.92635421 1.083738 5.9301165 1379.4348 3766.0095 5.9652632 0.092376919 0.0014116817 4.1048198 0.9955231 0.92635421 1.083738 2.7473869 0 0 0 0 38000 2 2 7 102.84786 0 - 1970 389.96327 -13102.882 0.50418526 2970.8471 5 0.2897091 0.4 1.0069357 0.92635421 1.083738 5.9301165 1379.4348 3766.0095 5.7532995 0.092376919 0.0014116817 4.1048198 0.9955231 0.92635421 1.083738 2.7473869 0 0 0 0 39400 2 2 7 102.84786 0 -Loop time of 0.221005 on 4 procs for 70 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 1900 389.96327 -13036.384 0.50421483 2970.8471 5 0.2897091 0.4 1.0069357 0.92635421 1.083738 5.9301165 1379.4348 3766.0095 5.9652632 0.092376919 0.0014116817 4.1048198 0.9955231 0.92635421 1.083738 2.7473869 0 0 0 0 38000 2 2 7 102.91265 0 - 2000 397.57054 -13037.793 1.296998 2702.0288 7 0.3344139 0.4 1.0080872 0.9254519 1.089981 5.9301165 1379.4348 3740.858 5.9815 0.094708685 0.0013374572 4.1048198 0.99612398 0.9252451 1.089981 2.7473869 0 0 0 0 40000 2 2 7 2970.9196 1 -Loop time of 0.125003 on 4 procs for 100 steps with 2354 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] f_HL[24] f_HL[25] f_HL[26] f_HL[27] f_HL[28] - 2000 397.57054 -13037.793 1.296998 2702.0288 7 0.3344139 0.4 1.0080872 0.9254519 1.089981 5.9301165 1379.4348 3740.858 5.9815 0.094708685 0.0013374572 4.1048198 0.99612398 0.9252451 1.089981 2.7473869 0 0 0 0 40000 2 2 7 2970.9196 1 - 2074 397.57054 -13102.882 1.296998 2702.0288 7 0.3344139 0.4 1.0080872 0.9254519 1.089981 5.9301165 1379.4348 3740.858 5.768081 0.094708685 0.0013374572 4.1048198 0.99612398 0.9252451 1.089981 2.7473869 0 0 0 0 41480 2 2 7 2970.9196 1 -Loop time of 0.138003 on 4 procs for 74 steps with 2354 atoms - -Final hyper stats ... - -Cummulative quantities for fix hyper: - hyper time = 40000 - time boost factor = 4000 - event timesteps = 2 - # of atoms in events = 2 -Quantities for this hyper run: - event timesteps = 2 - # of atoms in events = 2 - max length of any bond = 4.10482 - max drift distance of any atom = 2.74739 - fraction of biased bonds with zero bias = 0.0947087 - fraction of biased bonds with negative strain = 0.00133746 -Current quantities: - ave bonds/atom = 5.93012 -Cummulative quantities specific to fix hyper/local: - # of new bonds formed = 7 - max bonds/atom = 12 -Quantities for this hyper run specific to fix hyper/local: - ave boost for all bonds/step = 3740.86 - ave biased bonds/step = 5.9815 - ave bias coeff of all bonds = 0.996124 - min bias coeff of any bond = 0.925245 - max bias coeff of any bond = 1.08998 - max dist from my subbox of any non-maxstrain bond ghost atom = 0 - max dist from my box of any bond ghost atom = 0 - count of bond ghost neighbors not found on reneighbor steps = 0 - bias overlaps = 0 - CPU time for bond builds = 0.00900006 -Current quantities specific to fix hyper/local: - neighbor bonds/bond = 1379.43 - ave boost coeff for all bonds = 1.00809 - -Loop time of 6.39915 on 4 procs for 2000 steps with 2354 atoms - -Performance: 135.018 ns/day, 0.178 hours/ns, 312.542 timesteps/s -124.8% CPU use with 4 MPI tasks x no OpenMP threads - -Hyper stats: - Dynamics time (%) = 2.82706 (44.1788) - Quench time (%) = 2.94107 (45.9603) - Other time (%) = 0.559511 (8.74353) - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 4.2581 | 4.3754 | 4.4861 | 4.4 | 68.37 -Neigh | 0.165 | 0.171 | 0.178 | 1.1 | 2.67 -Comm | 0.40501 | 0.50426 | 0.58801 | 9.7 | 7.88 -Output | 0 | 0.00049996 | 0.0019999 | 0.0 | 0.01 -Modify | 0.74901 | 0.78851 | 0.82701 | 3.4 | 12.32 -Other | | 0.5595 | | | 8.74 - -Nlocal: 588.5 ave 610 max 570 min -Histogram: 1 0 0 0 2 0 0 0 0 1 -Nghost: 1965.75 ave 1984 max 1944 min -Histogram: 1 0 0 0 0 1 1 0 0 1 -Neighs: 13783.2 ave 14264 max 13396 min -Histogram: 1 0 0 1 1 0 0 0 0 1 -FullNghs: 136894 ave 139463 max 134036 min -Histogram: 1 0 0 0 1 0 1 0 0 1 - -Total # of neighbors = 547576 -Ave neighs/atom = 232.615 -Neighbor list builds = 192 -Dangerous builds = 0 -Total wall time: 0:00:08 diff --git a/examples/qeq/in.qeq.buck b/examples/qeq/in.qeq.buck index f7ec2bb808..2258a9e2ae 100644 --- a/examples/qeq/in.qeq.buck +++ b/examples/qeq/in.qeq.buck @@ -24,7 +24,7 @@ compute charge2 type2 property/atom q compute q2 type2 reduce ave c_charge2 variable qtot equal count(type1)*c_q1+count(type2)*c_q2 -thermo_style custom step pe c_q1 c_q2 v_qtot spcpu +thermo_style custom step pe c_q1 c_q2 v_qtot thermo 10 timestep 0.0001 diff --git a/examples/streitz/in.streitz.wolf b/examples/streitz/in.streitz.wolf index ff4479448e..cdf7cf33c9 100644 --- a/examples/streitz/in.streitz.wolf +++ b/examples/streitz/in.streitz.wolf @@ -39,7 +39,7 @@ neigh_modify every 10 delay 0 check yes timestep 0.0004 thermo_style custom step temp etotal pe evdwl ecoul elong & - c_q1 c_q2 v_qsum press spcpu + c_q1 c_q2 v_qsum press thermo_modify norm yes thermo 10 diff --git a/lib/kokkos/CHANGELOG.md b/lib/kokkos/CHANGELOG.md index 149e63ca91..9595b03ff9 100644 --- a/lib/kokkos/CHANGELOG.md +++ b/lib/kokkos/CHANGELOG.md @@ -1,5 +1,18 @@ # Change Log +## [3.1.1](https://github.com/kokkos/kokkos/tree/3.1.1) (2020-04-14) +[Full Changelog](https://github.com/kokkos/kokkos/compare/3.1.00...3.1.1) + +**Fixed bugs:** + +- Fix complex_double misalignment in reduce, clang+CUDA [\#2989](https://github.com/kokkos/kokkos/issues/2989) +- Fix compilation fails when profiling disabled and CUDA enabled [\#3001](https://github.com/kokkos/kokkos/issues/3001) +- Fix cuda reduction of non-trivial scalars of size 4 [\#2990](https://github.com/kokkos/kokkos/issues/2990) +- Configure and install version file when building in Trilinos [\#2957](https://github.com/kokkos/kokkos/pull/2957) +- Fix OpenMPTarget build missing include and namespace [\#3000](https://github.com/kokkos/kokkos/issues/3000) +- fix typo in KOKKOS_SET_EXE_PROPERTY() [\#2959](https://github.com/kokkos/kokkos/issues/2959) +- Fix non-zero span subviews of zero sized subviews [\#2979](https://github.com/kokkos/kokkos/issues/2979) + ## [3.1.00](https://github.com/kokkos/kokkos/tree/3.1.00) (2020-04-14) [Full Changelog](https://github.com/kokkos/kokkos/compare/3.0.00...3.1.00) diff --git a/lib/kokkos/CMakeLists.txt b/lib/kokkos/CMakeLists.txt index db88879039..0e2aaa1897 100644 --- a/lib/kokkos/CMakeLists.txt +++ b/lib/kokkos/CMakeLists.txt @@ -103,7 +103,7 @@ ENDIF() set(Kokkos_VERSION_MAJOR 3) set(Kokkos_VERSION_MINOR 1) -set(Kokkos_VERSION_PATCH 0) +set(Kokkos_VERSION_PATCH 1) 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}") diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index e1fdd0620e..cf5f06c64c 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -4,23 +4,27 @@ ifndef KOKKOS_PATH KOKKOS_PATH=../../lib/kokkos endif + CXXFLAGS=$(CCFLAGS) +ifeq ($(mode),shared) +CXXFLAGS += $(SHFLAGS) +endif KOKKOS_VERSION_MAJOR = 3 KOKKOS_VERSION_MINOR = 1 -KOKKOS_VERSION_PATCH = 0 +KOKKOS_VERSION_PATCH = 1 KOKKOS_VERSION = $(shell echo $(KOKKOS_VERSION_MAJOR)*10000+$(KOKKOS_VERSION_MINOR)*100+$(KOKKOS_VERSION_PATCH) | bc) # Options: Cuda,HIP,ROCm,OpenMP,Pthread,Serial KOKKOS_DEVICES ?= "OpenMP" #KOKKOS_DEVICES ?= "Pthread" -# Options: +# Options: # Intel: KNC,KNL,SNB,HSW,BDW,SKX # NVIDIA: Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal60,Pascal61,Volta70,Volta72,Turing75 # ARM: ARMv80,ARMv81,ARMv8-ThunderX,ARMv8-TX2 # IBM: BGQ,Power7,Power8,Power9 # AMD-GPUS: Vega900,Vega906 -# AMD-CPUS: AMDAVX,Ryzen,EPYC +# AMD-CPUS: AMDAVX,EPYC KOKKOS_ARCH ?= "" # Options: yes,no KOKKOS_DEBUG ?= "no" @@ -47,11 +51,15 @@ KOKKOS_HIP_OPTIONS ?= "" # Options: enable_async_dispatch KOKKOS_HPX_OPTIONS ?= "" +# Helper functions for conversion to upper case +uppercase_TABLE:=a,A b,B c,C d,D e,E f,F g,G h,H i,I j,J k,K l,L m,M n,N o,O p,P q,Q r,R s,S t,T u,U v,V w,W x,X y,Y z,Z +uppercase_internal=$(if $1,$$(subst $(firstword $1),$(call uppercase_internal,$(wordlist 2,$(words $1),$1),$2)),$2) +uppercase=$(eval uppercase_RESULT:=$(call uppercase_internal,$(uppercase_TABLE),$1))$(uppercase_RESULT) # Return a 1 if a string contains a substring and 0 if not # Note the search string should be without '"' # Example: $(call kokkos_has_string,"hwloc,librt",hwloc) # Will return a 1 -kokkos_has_string=$(if $(findstring $2,$1),1,0) +kokkos_has_string=$(if $(findstring $(call uppercase,$2),$(call uppercase,$1)),1,0) # Returns 1 if the path exists, 0 otherwise # Example: $(call kokkos_path_exists,/path/to/file) # Will return a 1 if /path/to/file exists @@ -336,9 +344,9 @@ KOKKOS_INTERNAL_USE_ARCH_NVIDIA := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_KEPLE + $(KOKKOS_INTERNAL_USE_ARCH_KEPLER37) \ + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL61) \ + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL60) \ - + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA70) \ - + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA72) \ - + $(KOKKOS_INTERNAL_USE_ARCH_TURING75) \ + + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA70) \ + + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA72) \ + + $(KOKKOS_INTERNAL_USE_ARCH_TURING75) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL50) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL52) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL53)) @@ -353,9 +361,9 @@ ifeq ($(KOKKOS_INTERNAL_USE_ARCH_NVIDIA), 0) + $(KOKKOS_INTERNAL_USE_ARCH_KEPLER37) \ + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL61) \ + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL60) \ - + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA70) \ - + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA72) \ - + $(KOKKOS_INTERNAL_USE_ARCH_TURING75) \ + + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA70) \ + + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA72) \ + + $(KOKKOS_INTERNAL_USE_ARCH_TURING75) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL50) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL52) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL53)) @@ -386,7 +394,6 @@ KOKKOS_INTERNAL_USE_ARCH_IBM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_ # AMD based. KOKKOS_INTERNAL_USE_ARCH_AMDAVX := $(call kokkos_has_string,$(KOKKOS_ARCH),AMDAVX) -KOKKOS_INTERNAL_USE_ARCH_RYZEN := $(call kokkos_has_string,$(KOKKOS_ARCH),Ryzen) KOKKOS_INTERNAL_USE_ARCH_EPYC := $(call kokkos_has_string,$(KOKKOS_ARCH),EPYC) KOKKOS_INTERNAL_USE_ARCH_VEGA900 := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega900) KOKKOS_INTERNAL_USE_ARCH_VEGA906 := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega906) @@ -466,7 +473,7 @@ tmp := $(call kokkos_append_header,'\#endif') tmp := $(call kokkos_append_header,"") tmp := $(call kokkos_append_header,"\#define KOKKOS_VERSION $(KOKKOS_VERSION)") tmp := $(call kokkos_append_header,"") - + tmp := $(call kokkos_append_header,"/* Execution Spaces */") ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) @@ -1015,8 +1022,8 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA_ARCH), 1) ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) KOKKOS_INTERNAL_CUDA_ARCH_FLAG=-arch else ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - KOKKOS_INTERNAL_CUDA_ARCH_FLAG=--cuda-gpu-arch - KOKKOS_CXXFLAGS += -x cuda + KOKKOS_INTERNAL_CUDA_ARCH_FLAG=--cuda-gpu-arch + KOKKOS_CXXFLAGS += -x cuda else $(error Makefile.kokkos: CUDA is enabled but the compiler is neither NVCC nor Clang (got version string $(KOKKOS_CXX_VERSION)) ) endif diff --git a/lib/kokkos/cmake/kokkos_install.cmake b/lib/kokkos/cmake/kokkos_install.cmake index 6a39590f03..97bb2bd0b0 100644 --- a/lib/kokkos/cmake/kokkos_install.cmake +++ b/lib/kokkos/cmake/kokkos_install.cmake @@ -1,3 +1,4 @@ +INCLUDE(CMakePackageConfigHelpers) IF (NOT KOKKOS_HAS_TRILINOS) INCLUDE(GNUInstallDirs) @@ -11,7 +12,6 @@ IF (NOT KOKKOS_HAS_TRILINOS) "${Kokkos_BINARY_DIR}/KokkosConfig.cmake" INSTALL_DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/cmake) - INCLUDE(CMakePackageConfigHelpers) CONFIGURE_PACKAGE_CONFIG_FILE( cmake/KokkosConfigCommon.cmake.in "${Kokkos_BINARY_DIR}/KokkosConfigCommon.cmake" @@ -35,6 +35,13 @@ ELSE() CONFIGURE_FILE(cmake/KokkosTrilinosConfig.cmake.in ${Kokkos_BINARY_DIR}/KokkosTrilinosConfig.cmake @ONLY) file(READ ${Kokkos_BINARY_DIR}/KokkosTrilinosConfig.cmake KOKKOS_TRILINOS_CONFIG) file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/KokkosConfig_install.cmake" "${KOKKOS_TRILINOS_CONFIG}") + + WRITE_BASIC_PACKAGE_VERSION_FILE("${CMAKE_CURRENT_BINARY_DIR}/KokkosConfigVersion.cmake" + VERSION "${Kokkos_VERSION}" + COMPATIBILITY SameMajorVersion) + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/KokkosConfigVersion.cmake + DESTINATION "${${PROJECT_NAME}_INSTALL_LIB_DIR}/cmake/${PACKAGE_NAME}") ENDIF() INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/KokkosCore_config.h DESTINATION ${KOKKOS_HEADER_DIR}) diff --git a/lib/kokkos/cmake/kokkos_tribits.cmake b/lib/kokkos/cmake/kokkos_tribits.cmake index 1c3b704ada..6ee1409aa7 100644 --- a/lib/kokkos/cmake/kokkos_tribits.cmake +++ b/lib/kokkos/cmake/kokkos_tribits.cmake @@ -170,7 +170,7 @@ FUNCTION(KOKKOS_SET_EXE_PROPERTY ROOT_NAME) IF (NOT TARGET ${TARGET_NAME}) MESSAGE(SEND_ERROR "No target ${TARGET_NAME} exists - cannot set target properties") ENDIF() - SET_PROPERTY(TARGET ${TARGET_PROPERTY} PROPERTY ${ARGN}) + SET_PROPERTY(TARGET ${TARGET_NAME} PROPERTY ${ARGN}) ENDFUNCTION() MACRO(KOKKOS_SETUP_BUILD_ENVIRONMENT) diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp index 7d996fba04..8795eb5a38 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp @@ -97,7 +97,9 @@ __device__ inline // Depending on the ValueType _shared__ memory must be aligned up to 8byte // boundaries The reason not to use ValueType directly is that for types with // constructors it could lead to race conditions - __shared__ double sh_result[(sizeof(ValueType) + 7) / 8 * STEP_WIDTH]; + alignas(alignof(ValueType) > alignof(double) ? alignof(ValueType) + : alignof(double)) + __shared__ double sh_result[(sizeof(ValueType) + 7) / 8 * STEP_WIDTH]; ValueType* result = (ValueType*)&sh_result; const int step = 32 / blockDim.x; int shift = STEP_WIDTH; @@ -282,7 +284,9 @@ __device__ inline // Depending on the ValueType _shared__ memory must be aligned up to 8byte // boundaries The reason not to use ValueType directly is that for types with // constructors it could lead to race conditions - __shared__ double sh_result[(sizeof(ValueType) + 7) / 8 * STEP_WIDTH]; + alignas(alignof(ValueType) > alignof(double) ? alignof(ValueType) + : alignof(double)) + __shared__ double sh_result[(sizeof(ValueType) + 7) / 8 * STEP_WIDTH]; ValueType* result = (ValueType*)&sh_result; const int step = 32 / blockDim.x; int shift = STEP_WIDTH; diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp index f75d2e56f7..62966f859d 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp @@ -81,18 +81,19 @@ struct in_place_shfl_op { union conv_type { Scalar orig; shfl_type conv; + // This should be fine, members get explicitly reset, which changes the + // active member + KOKKOS_FUNCTION conv_type() { conv = 0; } }; conv_type tmp_in; tmp_in.orig = in; - conv_type tmp_out; - tmp_out.conv = tmp_in.conv; + shfl_type tmp_out; + tmp_out = reinterpret_cast(tmp_in.orig); conv_type res; //------------------------------------------------ - res.conv = self().do_shfl_op( - mask, reinterpret_cast(tmp_out.conv), lane_or_delta, - width); + res.conv = self().do_shfl_op(mask, tmp_out, lane_or_delta, width); //------------------------------------------------ - out = res.orig; + out = reinterpret_cast(res.conv); } // TODO: figure out why 64-bit shfl fails in Clang diff --git a/lib/kokkos/core/src/Kokkos_CudaSpace.hpp b/lib/kokkos/core/src/Kokkos_CudaSpace.hpp index 53e3b77786..7db5dd9561 100644 --- a/lib/kokkos/core/src/Kokkos_CudaSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_CudaSpace.hpp @@ -56,6 +56,8 @@ #include +#include + #include #ifdef KOKKOS_IMPL_DEBUG_CUDA_PIN_UVM_TO_HOST diff --git a/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp b/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp index d113f24422..e853b8228d 100644 --- a/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp +++ b/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp @@ -59,7 +59,7 @@ #include #include #include - +#include #include /*--------------------------------------------------------------------------*/ @@ -124,8 +124,9 @@ class OpenMPTarget { namespace Profiling { namespace Experimental { template <> -struct DeviceTypeTraits { - static constexpr DeviceType id = DeviceType::OpenMPTarget; +struct DeviceTypeTraits<::Kokkos::Experimental::OpenMPTarget> { + static constexpr DeviceType id = + ::Kokkos::Profiling::Experimental::DeviceType::OpenMPTarget; }; } // namespace Experimental } // namespace Profiling diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp index a8dc1fb84a..c8230169e7 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp @@ -1286,8 +1286,8 @@ struct ViewOffset< /* Span of the range space */ KOKKOS_INLINE_FUNCTION constexpr size_type span() const { - return m_stride * m_dim.N1 * m_dim.N2 * m_dim.N3 * m_dim.N4 * m_dim.N5 * - m_dim.N6 * m_dim.N7; + return (m_dim.N0 > size_type(0) ? m_stride : size_type(0)) * m_dim.N1 * + m_dim.N2 * m_dim.N3 * m_dim.N4 * m_dim.N5 * m_dim.N6 * m_dim.N7; } KOKKOS_INLINE_FUNCTION constexpr bool span_is_contiguous() const { @@ -1882,7 +1882,9 @@ struct ViewOffset< /* Span of the range space */ KOKKOS_INLINE_FUNCTION - constexpr size_type span() const { return m_dim.N0 * m_stride; } + constexpr size_type span() const { + return size() > 0 ? m_dim.N0 * m_stride : 0; + } KOKKOS_INLINE_FUNCTION constexpr bool span_is_contiguous() const { return m_stride == m_dim.N7 * m_dim.N6 * m_dim.N5 * m_dim.N4 * m_dim.N3 * @@ -2398,14 +2400,16 @@ struct ViewOffset { /* Span of the range space, largest stride * dimension */ KOKKOS_INLINE_FUNCTION constexpr size_type span() const { - return Max(m_dim.N0 * m_stride.S0, - Max(m_dim.N1 * m_stride.S1, - Max(m_dim.N2 * m_stride.S2, - Max(m_dim.N3 * m_stride.S3, - Max(m_dim.N4 * m_stride.S4, - Max(m_dim.N5 * m_stride.S5, - Max(m_dim.N6 * m_stride.S6, - m_dim.N7 * m_stride.S7))))))); + return size() == size_type(0) + ? size_type(0) + : Max(m_dim.N0 * m_stride.S0, + Max(m_dim.N1 * m_stride.S1, + Max(m_dim.N2 * m_stride.S2, + Max(m_dim.N3 * m_stride.S3, + Max(m_dim.N4 * m_stride.S4, + Max(m_dim.N5 * m_stride.S5, + Max(m_dim.N6 * m_stride.S6, + m_dim.N7 * m_stride.S7))))))); } KOKKOS_INLINE_FUNCTION constexpr bool span_is_contiguous() const { diff --git a/lib/kokkos/master_history.txt b/lib/kokkos/master_history.txt index f6eb95292c..11e803e760 100644 --- a/lib/kokkos/master_history.txt +++ b/lib/kokkos/master_history.txt @@ -19,3 +19,4 @@ tag: 2.8.00 date: 02:05:2019 master: 34931a36 develop: d1659d1d tag: 2.9.00 date: 06:24:2019 master: 5d6e7fb3 develop: 4c6cb80a tag: 3.0.00 date: 01:31:2020 master: 2983b80d release-candidate-3.0: fdc904a6 tag: 3.1.00 date: 04:14:2020 master: cd1b1d0a develop: fd90af43 +tag: 3.1.1 date: 05:04:2020 master: 785d19f2 release: 2be028bc diff --git a/lib/latte/Install.py b/lib/latte/Install.py index 25c12aeb40..94879ff4a0 100644 --- a/lib/latte/Install.py +++ b/lib/latte/Install.py @@ -17,7 +17,7 @@ parser = ArgumentParser(prog='Install.py', # settings -version = '1.2.1' +version = '1.2.2' suffix = 'gfortran' # known checksums for different LATTE versions. used to validate the download. @@ -25,6 +25,7 @@ checksums = { \ '1.1.0' : '533635721ee222d0ed2925a18fb5b294', \ '1.2.0' : '68bf0db879da5e068a71281020239ae7', \ '1.2.1' : '85ac414fdada2d04619c8f936344df14', \ + '1.2.2' : '820e73a457ced178c08c71389a385de7', \ } # help message @@ -33,12 +34,12 @@ HELP = """ Syntax from src dir: make lib-latte args="-b" or: make lib-latte args="-p /usr/local/latte" or: make lib-latte args="-m gfortran" - or: make lib-latte args="-b -v 1.2.1" + or: make lib-latte args="-b -v 1.2.2" Syntax from lib dir: python Install.py -b or: python Install.py -p /usr/local/latte or: python Install.py -m gfortran - or: python Install.py -v 1.2.1 -b + or: python Install.py -v 1.2.2 -b Example: diff --git a/potentials/ffield.comb b/potentials/ffield.comb index 0ff3c16835..9edc478afd 100644 --- a/potentials/ffield.comb +++ b/potentials/ffield.comb @@ -19,13 +19,13 @@ # 27 entries for a system containing three elements A, B and C # These entries are in LAMMPS "metal" units # -Hf Hf Hf 1 0 1 0 1.011011 0.046511 0.959614 0.959614 55.9421 55.9421 3.85 0.20 2.069563 2.069563 707.53 707.53 0 0 0.008 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 0.26152 -0.25918 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0 +Hf Hf Hf 1 0 1 0 1.011011 0.046511 0.959614 0.959614 55.9421 55.9421 3.85 0.20 2.069563 2.069563 707.53 707.53 0 0 0.008 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 0.26152 -0.25918 0 3.139520 0 0.009410 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0 Ti Ti Ti 1 0 1 0 1.255016 0.089078 1.226342 1.226342 99.3916 99.3916 3.43 0.05 2.082408 2.082408 546.386 546.386 0 0 0.0084 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -4 4 2.508854 -2.511416 0 2.46820415900968 0 0.151351003255176 0 0.873685 0.392632 0.392632 1.78349 1.78349 12 0 O O O 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 2.8 0.2 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0 Cu Cu Cu 1 0 1 0 1 0.140835 1.681711 1.681711 146.987 146.987 3.0 0.05 2.794608 2.794608 952.693 952.693 0.077 0.0095 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -6 2 0.1677645 -0.161007 0 5.946437 0 0 0 0.454784 0.72571 0.72571 0.274649 0.274649 12 0 Si Si Si 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.7322 471.18 471.18 2.90 0.10 2.4799 2.4799 1830.8 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 1.651725 -1.658949 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -0.499378 2.999911 2.999911 12 0 -Zr Zr Zr 1 0 1 0 1 0 0.929 0.929 39.9454 39.9454 3.8 0.31 1.857 1.857 382.6 382.6 0 0 0 0 0 0 1 1 1 1 -4 4 1.64 -1.5 -4 4 1.64 -1.5 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0 -U U U 1 0 1 0 4.346966 0.77617 0.832 0.832 162.6 162.6 3.9 0.15 1.835 1.835 795.6 795.6 0 0 0 0 0 0 1 1 1 1 -4 4 2 -2 -4 4 2 -2 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0 +Zr Zr Zr 1 0 1 0 1 0 0.929 0.929 39.9454 39.9454 3.8 0.31 1.857 1.857 382.6 382.6 0 0 0 0 0 0 1 1 1 1 -4 4 1.64 -1.5 -4 4 1.64 -1.5 0 3.139520 0 0.009410 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0 +U U U 1 0 1 0 4.346966 0.77617 0.832 0.832 162.6 162.6 3.9 0.15 1.835 1.835 795.6 795.6 0 0 0 0 0 0 1 1 1 1 -4 4 2 -2 -4 4 2 -2 0 3.139520 0 0.009410 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0 # Si O O 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 2.68 471.18 260.893 2.80 0.25 2.4799 5.36 1830.8 3326.69 0 0 0 109.47 0.3122 0 1 1 1 1 -4 4 1.651725 -1.658949 -1.8349 5.5046 0.00148 -0.00112 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.922011 2.999911 0.971086 12 0 O Si Si 1 6.6 1 -0.229 1 2 2.68 1.7322 260.893 471.18 2.80 0.25 5.36 2.4799 3326.69 1830.8 0 0 0 143.73 2.6 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 1.651725 -1.658949 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -0.499378 0.971086 2.999911 12 0 diff --git a/src/.gitignore b/src/.gitignore index fabd3b4e4b..ac7bf1b794 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -37,6 +37,7 @@ /kokkos_type.h /kokkos_few.h /kokkos_base.h +/kokkos_base_fft.h /manifold*.cpp /manifold*.h @@ -84,6 +85,15 @@ /intel_preprocess.h /intel_simd.h +/atom_vec_sph.cpp +/atom_vec_sph.h +/compute_sph_*.cpp +/compute_sph_*.h +/fix_sph.cpp +/fix_sph.h +/fix_sph_stationary.cpp +/fix_sph_stationary.h + /atom_vec_edpd.cpp /atom_vec_edpd.h /atom_vec_mdpd.cpp @@ -247,8 +257,6 @@ /atom_vec_full_hars.h /atom_vec_granular.cpp /atom_vec_granular.h -/atom_vec_meso.cpp -/atom_vec_meso.h /atom_vec_molecular.cpp /atom_vec_molecular.h /atom_vec_peri.cpp @@ -385,6 +393,8 @@ /compute_temp_rotate.h /compute_ti.cpp /compute_ti.h +/compute_viscosity_cos.cpp +/compute_viscosity_cos.h /compute_voronoi_atom.cpp /compute_voronoi_atom.h /dihedral_charmm.cpp @@ -465,6 +475,8 @@ /fft3d.h /fft3d_wrap.cpp /fft3d_wrap.h +/fix_accelerate_cos.cpp +/fix_accelerate_cos.h /fix_adapt_fep.cpp /fix_adapt_fep.h /fix_addtorque.cpp @@ -625,6 +637,8 @@ /fix_oneway.h /fix_orient_bcc.cpp /fix_orient_bcc.h +/fix_orient_eco.cpp +/fix_orient_eco.h /fix_orient_fcc.cpp /fix_orient_fcc.h /fix_peri_neigh.cpp @@ -635,6 +649,8 @@ /fix_poems.h /fix_pour.cpp /fix_pour.h +/fix_propel_self.cpp +/fix_propel_self.h /fix_qeq_comb.cpp /fix_qeq_comb.h /fix_qeq_reax.cpp @@ -838,6 +854,10 @@ /pair_coul_msm.h /pair_coul_shield.cpp /pair_coul_shield.h +/pair_coul_slater_cut.cpp +/pair_coul_slater_cut.h +/pair_coul_slater_long.cpp +/pair_coul_slater_long.h /pair_dipole_cut.cpp /pair_dipole_cut.h /pair_dipole_sf.cpp @@ -1101,6 +1121,8 @@ /fix_python_invoke.h /pair_python.cpp /pair_python.h +/reader_adios.cpp +/reader_adios.h /reader_molfile.cpp /reader_molfile.h /reaxc_allocate.cpp @@ -1325,6 +1347,8 @@ /pair_lennard_mdf.h /pair_lj_cut_coul_long_cs.cpp /pair_lj_cut_coul_long_cs.h +/pair_lj_class2_coul_long_cs.cpp +/pair_lj_class2_coul_long_cs.h /pair_lj_mdf.cpp /pair_lj_mdf.h /pair_mgpt.cpp diff --git a/src/CLASS2/bond_class2.cpp b/src/CLASS2/bond_class2.cpp index 097c8fe387..7feec1a4b3 100644 --- a/src/CLASS2/bond_class2.cpp +++ b/src/CLASS2/bond_class2.cpp @@ -224,7 +224,7 @@ double BondClass2::single(int type, double rsq, int /*i*/, int /*j*/, double &ff /* ---------------------------------------------------------------------- */ -void *BondClass2::extract( char *str, int &dim ) +void *BondClass2::extract(const char *str, int &dim) { dim = 1; if (strcmp(str,"r0")==0) return (void*) r0; diff --git a/src/CLASS2/bond_class2.h b/src/CLASS2/bond_class2.h index fb7eb884df..f83fecfce0 100644 --- a/src/CLASS2/bond_class2.h +++ b/src/CLASS2/bond_class2.h @@ -35,7 +35,7 @@ class BondClass2 : public Bond { virtual void read_restart(FILE *); void write_data(FILE *); double single(int, double, int, int, double &); - virtual void *extract(char *, int &); + virtual void *extract(const char *, int &); protected: double *r0,*k2,*k3,*k4; diff --git a/src/DIPOLE/atom_vec_dipole.cpp b/src/DIPOLE/atom_vec_dipole.cpp index 0b6a27888f..b6895be301 100644 --- a/src/DIPOLE/atom_vec_dipole.cpp +++ b/src/DIPOLE/atom_vec_dipole.cpp @@ -31,880 +31,47 @@ AtomVecDipole::AtomVecDipole(LAMMPS *lmp) : AtomVec(lmp) molecular = 0; mass_type = 1; - comm_x_only = 0; - comm_f_only = 1; - size_forward = 6; - size_reverse = 3; - size_border = 11; - size_velocity = 3; - size_data_atom = 9; - size_data_vel = 4; - xcol_data = 4; - atom->q_flag = atom->mu_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "q mu"; + fields_copy = (char *) "q mu"; + fields_comm = (char *) "mu3"; + fields_comm_vel = (char *) "mu3"; + fields_reverse = (char *) ""; + fields_border = (char *) "q mu"; + fields_border_vel = (char *) "q mu"; + fields_exchange = (char *) "q mu"; + fields_restart = (char *) "q mu"; + fields_create = (char *) "q mu"; + fields_data_atom = (char *) "id type q x mu3"; + fields_data_vel = (char *) "id v"; + + setup_fields(); } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecDipole::grow(int n) +void AtomVecDipole::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - q = memory->grow(atom->q,nmax,"atom:q"); - mu = memory->grow(atom->mu,nmax,4,"atom:mu"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + mu = atom->mu; } /* ---------------------------------------------------------------------- - reset local array ptrs + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecDipole::grow_reset() +void AtomVecDipole::data_atom_post(int ilocal) { - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - q = atom->q; mu = atom->mu; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecDipole::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - q[j] = q[i]; - mu[j][0] = mu[i][0]; - mu[j][1] = mu[i][1]; - mu[j][2] = mu[i][2]; - mu[j][3] = mu[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDipole::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDipole::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDipole::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDipole::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - mu[i][3] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDipole::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - mu[i][3] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - mu[i][3] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- - pack all atom quantities for shipping to another proc - xyz must be 1st 3 values, so that comm::exchange can test on them -------------------------------------------------------------------------- */ - -int AtomVecDipole::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = q[i]; - buf[m++] = mu[i][0]; - buf[m++] = mu[i][1]; - buf[m++] = mu[i][2]; - buf[m++] = mu[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - q[nlocal] = buf[m++]; - mu[nlocal][0] = buf[m++]; - mu[nlocal][1] = buf[m++]; - mu[nlocal][2] = buf[m++]; - mu[nlocal][3] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecDipole::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 16 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecDipole::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = q[i]; - buf[m++] = mu[i][0]; - buf[m++] = mu[i][1]; - buf[m++] = mu[i][2]; - buf[m++] = mu[i][3]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecDipole::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - q[nlocal] = buf[m++]; - mu[nlocal][0] = buf[m++]; - mu[nlocal][1] = buf[m++]; - mu[nlocal][2] = buf[m++]; - mu[nlocal][3] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecDipole::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - q[nlocal] = 0.0; - mu[nlocal][0] = 0.0; - mu[nlocal][1] = 0.0; - mu[nlocal][2] = 0.0; - mu[nlocal][3] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecDipole::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - q[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - mu[nlocal][0] = utils::numeric(FLERR,values[6],true,lmp); - mu[nlocal][1] = utils::numeric(FLERR,values[7],true,lmp); - mu[nlocal][2] = utils::numeric(FLERR,values[8],true,lmp); - mu[nlocal][3] = sqrt(mu[nlocal][0]*mu[nlocal][0] + - mu[nlocal][1]*mu[nlocal][1] + - mu[nlocal][2]*mu[nlocal][2]); - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecDipole::data_atom_hybrid(int nlocal, char **values) -{ - q[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - mu[nlocal][0] = utils::numeric(FLERR,values[1],true,lmp); - mu[nlocal][1] = utils::numeric(FLERR,values[2],true,lmp); - mu[nlocal][2] = utils::numeric(FLERR,values[3],true,lmp); - mu[nlocal][3] = sqrt(mu[nlocal][0]*mu[nlocal][0] + - mu[nlocal][1]*mu[nlocal][1] + - mu[nlocal][2]*mu[nlocal][2]); - return 4; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDipole::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = q[i]; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = mu[i][0]; - buf[i][7] = mu[i][1]; - buf[i][8] = mu[i][2]; - buf[i][9] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][11] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecDipole::pack_data_hybrid(int i, double *buf) -{ - buf[0] = q[i]; - buf[1] = mu[i][0]; - buf[2] = mu[i][1]; - buf[3] = mu[i][2]; - return 4; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDipole::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT \ - " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e " - "%-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4], - buf[i][5],buf[i][6],buf[i][7],buf[i][8], - (int) ubuf(buf[i][9]).i,(int) ubuf(buf[i][10]).i, - (int) ubuf(buf[i][11]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecDipole::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2],buf[3]); - return 4; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecDipole::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("q")) bytes += memory->usage(q,nmax); - if (atom->memcheck("mu")) bytes += memory->usage(mu,nmax,4); - - return bytes; + double *mu_one = mu[ilocal]; + mu_one[3] = + sqrt(mu_one[0]*mu_one[0] + mu_one[1]*mu_one[1] + mu_one[2]*mu_one[2]); } diff --git a/src/DIPOLE/atom_vec_dipole.h b/src/DIPOLE/atom_vec_dipole.h index c6ee23def1..2030892a43 100644 --- a/src/DIPOLE/atom_vec_dipole.h +++ b/src/DIPOLE/atom_vec_dipole.h @@ -27,43 +27,12 @@ namespace LAMMPS_NS { class AtomVecDipole : public AtomVec { public: AtomVecDipole(class LAMMPS *); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); + + void grow_pointers(); + void data_atom_post(int); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *q,**mu; + double **mu; }; } @@ -73,13 +42,4 @@ class AtomVecDipole : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/Depend.sh b/src/Depend.sh index b7ee740c52..a6351e7b13 100755 --- a/src/Depend.sh +++ b/src/Depend.sh @@ -69,6 +69,7 @@ if (test $1 = "DIPOLE") then fi if (test $1 = "GRANULAR") then + depend KOKKOS depend USER-OMP fi diff --git a/src/GPU/fix_gpu.cpp b/src/GPU/fix_gpu.cpp index cb2930a3ea..ecde8ea093 100644 --- a/src/GPU/fix_gpu.cpp +++ b/src/GPU/fix_gpu.cpp @@ -225,12 +225,6 @@ void FixGPU::init() error->all(FLERR,"GPU package does not (yet) work with " "atom_style template"); - // neighbor list builds on the GPU with triclinic box is not yet supported - - if ((_gpu_mode == GPU_NEIGH || _gpu_mode == GPU_HYB_NEIGH) && - domain->triclinic) - error->all(FLERR,"Cannot use package gpu neigh yes with triclinic box"); - // give a warning if no pair style is defined if (!force->pair) diff --git a/src/GPU/pair_beck_gpu.cpp b/src/GPU/pair_beck_gpu.cpp index f4b73ba5a6..28386f5fd5 100644 --- a/src/GPU/pair_beck_gpu.cpp +++ b/src/GPU/pair_beck_gpu.cpp @@ -94,10 +94,21 @@ void PairBeckGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = beck_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_born_coul_long_cs_gpu.cpp b/src/GPU/pair_born_coul_long_cs_gpu.cpp index bab66e0351..8bc99a3d49 100644 --- a/src/GPU/pair_born_coul_long_cs_gpu.cpp +++ b/src/GPU/pair_born_coul_long_cs_gpu.cpp @@ -116,9 +116,20 @@ void PairBornCoulLongCSGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = bornclcs_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_born_coul_long_gpu.cpp b/src/GPU/pair_born_coul_long_gpu.cpp index 1b548edab6..5dd4c3421f 100644 --- a/src/GPU/pair_born_coul_long_gpu.cpp +++ b/src/GPU/pair_born_coul_long_gpu.cpp @@ -111,9 +111,20 @@ void PairBornCoulLongGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = borncl_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_born_coul_wolf_cs_gpu.cpp b/src/GPU/pair_born_coul_wolf_cs_gpu.cpp index 4e488abc15..4ba28c25aa 100644 --- a/src/GPU/pair_born_coul_wolf_cs_gpu.cpp +++ b/src/GPU/pair_born_coul_wolf_cs_gpu.cpp @@ -104,10 +104,21 @@ void PairBornCoulWolfCSGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = borncwcs_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success, diff --git a/src/GPU/pair_born_coul_wolf_gpu.cpp b/src/GPU/pair_born_coul_wolf_gpu.cpp index c5243dc443..b5e0edea6d 100644 --- a/src/GPU/pair_born_coul_wolf_gpu.cpp +++ b/src/GPU/pair_born_coul_wolf_gpu.cpp @@ -102,10 +102,21 @@ void PairBornCoulWolfGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = borncw_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success, diff --git a/src/GPU/pair_born_gpu.cpp b/src/GPU/pair_born_gpu.cpp index b71a296d66..a5e94389b6 100644 --- a/src/GPU/pair_born_gpu.cpp +++ b/src/GPU/pair_born_gpu.cpp @@ -97,10 +97,21 @@ void PairBornGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = born_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_buck_coul_cut_gpu.cpp b/src/GPU/pair_buck_coul_cut_gpu.cpp index 5d27ee8c51..1a5479ea1d 100644 --- a/src/GPU/pair_buck_coul_cut_gpu.cpp +++ b/src/GPU/pair_buck_coul_cut_gpu.cpp @@ -98,10 +98,21 @@ void PairBuckCoulCutGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = buckc_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success, diff --git a/src/GPU/pair_buck_coul_long_gpu.cpp b/src/GPU/pair_buck_coul_long_gpu.cpp index 7e59562ebf..221e178b57 100644 --- a/src/GPU/pair_buck_coul_long_gpu.cpp +++ b/src/GPU/pair_buck_coul_long_gpu.cpp @@ -107,9 +107,20 @@ void PairBuckCoulLongGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = buckcl_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_buck_gpu.cpp b/src/GPU/pair_buck_gpu.cpp index b4d5677d53..07107750e6 100644 --- a/src/GPU/pair_buck_gpu.cpp +++ b/src/GPU/pair_buck_gpu.cpp @@ -95,10 +95,21 @@ void PairBuckGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = buck_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_colloid_gpu.cpp b/src/GPU/pair_colloid_gpu.cpp index 230adb3db0..a7cafbe75a 100644 --- a/src/GPU/pair_colloid_gpu.cpp +++ b/src/GPU/pair_colloid_gpu.cpp @@ -95,10 +95,21 @@ void PairColloidGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = colloid_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_coul_cut_gpu.cpp b/src/GPU/pair_coul_cut_gpu.cpp index 0242c98343..bacbdbb1a0 100644 --- a/src/GPU/pair_coul_cut_gpu.cpp +++ b/src/GPU/pair_coul_cut_gpu.cpp @@ -95,9 +95,20 @@ void PairCoulCutGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = coul_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_coul_debye_gpu.cpp b/src/GPU/pair_coul_debye_gpu.cpp index 198f7f5f67..96be67a1fa 100644 --- a/src/GPU/pair_coul_debye_gpu.cpp +++ b/src/GPU/pair_coul_debye_gpu.cpp @@ -96,9 +96,20 @@ void PairCoulDebyeGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = cdebye_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_coul_dsf_gpu.cpp b/src/GPU/pair_coul_dsf_gpu.cpp index 67d025ff70..244941c117 100644 --- a/src/GPU/pair_coul_dsf_gpu.cpp +++ b/src/GPU/pair_coul_dsf_gpu.cpp @@ -107,9 +107,20 @@ void PairCoulDSFGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = cdsf_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_coul_long_cs_gpu.cpp b/src/GPU/pair_coul_long_cs_gpu.cpp index afd0d6cf56..bcbf7216e2 100644 --- a/src/GPU/pair_coul_long_cs_gpu.cpp +++ b/src/GPU/pair_coul_long_cs_gpu.cpp @@ -109,9 +109,20 @@ void PairCoulLongCSGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = clcs_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_coul_long_gpu.cpp b/src/GPU/pair_coul_long_gpu.cpp index 485e45ddc6..fcfb20f3ce 100644 --- a/src/GPU/pair_coul_long_gpu.cpp +++ b/src/GPU/pair_coul_long_gpu.cpp @@ -104,9 +104,20 @@ void PairCoulLongGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = cl_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_dpd_gpu.cpp b/src/GPU/pair_dpd_gpu.cpp index 9e14164c57..a2e20d016c 100644 --- a/src/GPU/pair_dpd_gpu.cpp +++ b/src/GPU/pair_dpd_gpu.cpp @@ -237,9 +237,20 @@ void PairDPDGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = dpd_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_dpd_tstat_gpu.cpp b/src/GPU/pair_dpd_tstat_gpu.cpp index 920eb8dd8a..991c6d900f 100644 --- a/src/GPU/pair_dpd_tstat_gpu.cpp +++ b/src/GPU/pair_dpd_tstat_gpu.cpp @@ -254,9 +254,20 @@ void PairDPDTstatGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = dpd_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_eam_alloy_gpu.cpp b/src/GPU/pair_eam_alloy_gpu.cpp index 8fa6e64c36..1fbdbf9ba8 100644 --- a/src/GPU/pair_eam_alloy_gpu.cpp +++ b/src/GPU/pair_eam_alloy_gpu.cpp @@ -31,11 +31,11 @@ #include "domain.h" #include "utils.h" #include "suffix.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - // External functions from cuda library for atom decomposition int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, @@ -106,9 +106,20 @@ void PairEAMAlloyGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = eam_alloy_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, @@ -358,94 +369,107 @@ void PairEAMAlloyGPU::read_file(char *filename) { Setfl *file = setfl; - // open potential file + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(lmp, filename, "EAM"); - int me = comm->me; - FILE *fptr; - char line[MAXLINE]; + try { + reader.skip_line(); + reader.skip_line(); + reader.skip_line(); - if (me == 0) { - fptr = fopen(filename,"r"); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EAM potential file %s",filename); - error->one(FLERR,str); + // extract element names from nelements line + ValueTokenizer values = reader.next_values(1); + file->nelements = values.next_int(); + + if (values.count() != file->nelements + 1) + error->one(FLERR,"Incorrect element names in EAM potential file"); + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + const std::string word = values.next_string(); + const int n = word.length() + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i], word.c_str()); + } + + // + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + + for (int i = 0; i < file->nelements; i++) { + values = reader.next_values(2); + values.next_int(); // ignore + file->mass[i] = values.next_double(); + + reader.next_dvector(&file->frho[i][1], file->nrho); + reader.next_dvector(&file->rhor[i][1], file->nr); + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->z2r[i][j][1], file->nr); + } + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - // read and broadcast header - // extract element names from nelements line + // broadcast potential information + MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world); - int n; - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - n = strlen(line) + 1; + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + // allocate memory on other procs + if (comm->me != 0) { + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr; + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - sscanf(line,"%d",&file->nelements); - int nwords = atom->count_words(line); - if (nwords != file->nelements + 1) - error->all(FLERR,"Incorrect element names in EAM potential file"); - - char **words = new char*[file->nelements+1]; - nwords = 0; - strtok(line," \t\n\r\f"); - while ( (words[nwords++] = strtok(NULL," \t\n\r\f")) ) continue; - - file->elements = new char*[file->nelements]; + // broadcast file->elements string array for (int i = 0; i < file->nelements; i++) { - n = strlen(words[i]) + 1; - file->elements[i] = new char[n]; - strcpy(file->elements[i],words[i]); - } - delete [] words; - - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + int n; + if (comm->me == 0) n = strlen(file->elements[i]) + 1; + MPI_Bcast(&n, 1, MPI_INT, 0, world); + if (comm->me != 0) file->elements[i] = new char[n]; + MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world); } - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + // broadcast file->mass, frho, rhor + for (int i = 0; i < file->nelements; i++) { + MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->rhor[i][1], file->nr, MPI_DOUBLE, 0, world); + } - file->mass = new double[file->nelements]; - memory->create(file->frho,file->nelements,file->nrho+1,"pair:frho"); - memory->create(file->rhor,file->nelements,file->nr+1,"pair:rhor"); - memory->create(file->z2r,file->nelements,file->nelements,file->nr+1, - "pair:z2r"); - - int i,j,tmp; - for (i = 0; i < file->nelements; i++) { - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - sscanf(line,"%d %lg",&tmp,&file->mass[i]); + // broadcast file->z2r + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world); } - MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); - MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); - if (me == 0) grab(fptr,file->nr,&file->rhor[i][1]); - MPI_Bcast(&file->rhor[i][1],file->nr,MPI_DOUBLE,0,world); } - - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); - MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); - } - - // close the potential file - - if (me == 0) fclose(fptr); } /* ---------------------------------------------------------------------- diff --git a/src/GPU/pair_eam_fs_gpu.cpp b/src/GPU/pair_eam_fs_gpu.cpp index b04ec6d445..a316d08c54 100644 --- a/src/GPU/pair_eam_fs_gpu.cpp +++ b/src/GPU/pair_eam_fs_gpu.cpp @@ -30,11 +30,12 @@ #include "gpu_extra.h" #include "domain.h" #include "suffix.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - // External functions from cuda library for atom decomposition int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, @@ -105,9 +106,20 @@ void PairEAMFSGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = eam_fs_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, @@ -357,99 +369,113 @@ void PairEAMFSGPU::read_file(char *filename) { Fs *file = fs; - // open potential file + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(lmp, filename, "EAM"); - int me = comm->me; - FILE *fptr; - char line[MAXLINE]; + try { + reader.skip_line(); + reader.skip_line(); + reader.skip_line(); - if (me == 0) { - fptr = force->open_potential(filename); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EAM potential file %s",filename); - error->one(FLERR,str); + // extract element names from nelements line + ValueTokenizer values = reader.next_values(1); + file->nelements = values.next_int(); + + if (values.count() != file->nelements + 1) + error->one(FLERR,"Incorrect element names in EAM potential file"); + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + const std::string word = values.next_string(); + const int n = word.length() + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i], word.c_str()); + } + + // + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + + for (int i = 0; i < file->nelements; i++) { + values = reader.next_values(2); + values.next_int(); // ignore + file->mass[i] = values.next_double(); + + reader.next_dvector(&file->frho[i][1], file->nrho); + + for (int j = 0; j < file->nelements; j++) { + reader.next_dvector(&file->rhor[i][j][1], file->nr); + } + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->z2r[i][j][1], file->nr); + } + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - // read and broadcast header - // extract element names from nelements line + // broadcast potential information + MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world); - int n; - if (me == 0) { - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - n = strlen(line) + 1; + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + // allocate memory on other procs + if (comm->me != 0) { + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr; + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - sscanf(line,"%d",&file->nelements); - int nwords = atom->count_words(line); - if (nwords != file->nelements + 1) - error->all(FLERR,"Incorrect element names in EAM potential file"); - - char **words = new char*[file->nelements+1]; - nwords = 0; - strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - file->elements = new char*[file->nelements]; + // broadcast file->elements string array for (int i = 0; i < file->nelements; i++) { - n = strlen(words[i]) + 1; - file->elements[i] = new char[n]; - strcpy(file->elements[i],words[i]); - } - delete [] words; - - if (me == 0) { - fgets(line,MAXLINE,fptr); - sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + int n; + if (comm->me == 0) n = strlen(file->elements[i]) + 1; + MPI_Bcast(&n, 1, MPI_INT, 0, world); + if (comm->me != 0) file->elements[i] = new char[n]; + MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world); } - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + // broadcast file->mass, frho, rhor + for (int i = 0; i < file->nelements; i++) { + MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world); - file->mass = new double[file->nelements]; - memory->create(file->frho,file->nelements,file->nrho+1, - "pair:frho"); - memory->create(file->rhor,file->nelements,file->nelements, - file->nr+1,"pair:rhor"); - memory->create(file->z2r,file->nelements,file->nelements, - file->nr+1,"pair:z2r"); - - int i,j,tmp; - for (i = 0; i < file->nelements; i++) { - if (me == 0) { - fgets(line,MAXLINE,fptr); - sscanf(line,"%d %lg",&tmp,&file->mass[i]); - } - MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); - MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); - - for (j = 0; j < file->nelements; j++) { - if (me == 0) grab(fptr,file->nr,&file->rhor[i][j][1]); - MPI_Bcast(&file->rhor[i][j][1],file->nr,MPI_DOUBLE,0,world); + for (int j = 0; j < file->nelements; j++) { + MPI_Bcast(&file->rhor[i][j][1], file->nr, MPI_DOUBLE, 0, world); } } - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); - MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); + // broadcast file->z2r + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world); } - - // close the potential file - - if (me == 0) fclose(fptr); + } } /* ---------------------------------------------------------------------- diff --git a/src/GPU/pair_eam_gpu.cpp b/src/GPU/pair_eam_gpu.cpp index e1068677ff..1aac379c35 100644 --- a/src/GPU/pair_eam_gpu.cpp +++ b/src/GPU/pair_eam_gpu.cpp @@ -108,9 +108,20 @@ void PairEAMGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = eam_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_gauss_gpu.cpp b/src/GPU/pair_gauss_gpu.cpp index 17125f9875..eb83d5af44 100644 --- a/src/GPU/pair_gauss_gpu.cpp +++ b/src/GPU/pair_gauss_gpu.cpp @@ -92,10 +92,21 @@ void PairGaussGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = gauss_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_gayberne_gpu.cpp b/src/GPU/pair_gayberne_gpu.cpp index 445c74487f..83b24f8774 100644 --- a/src/GPU/pair_gayberne_gpu.cpp +++ b/src/GPU/pair_gayberne_gpu.cpp @@ -119,9 +119,20 @@ void PairGayBerneGPU::compute(int eflag, int vflag) } if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = gb_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj96_cut_gpu.cpp b/src/GPU/pair_lj96_cut_gpu.cpp index f6f9bd379b..7b0d45a437 100644 --- a/src/GPU/pair_lj96_cut_gpu.cpp +++ b/src/GPU/pair_lj96_cut_gpu.cpp @@ -92,9 +92,20 @@ void PairLJ96CutGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = lj96_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_charmm_coul_long_gpu.cpp b/src/GPU/pair_lj_charmm_coul_long_gpu.cpp index 6eda677928..b08ad5e232 100644 --- a/src/GPU/pair_lj_charmm_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_charmm_coul_long_gpu.cpp @@ -109,9 +109,20 @@ void PairLJCharmmCoulLongGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = crml_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_class2_coul_long_gpu.cpp b/src/GPU/pair_lj_class2_coul_long_gpu.cpp index 96ba4e0a09..46ecaea9b8 100644 --- a/src/GPU/pair_lj_class2_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_class2_coul_long_gpu.cpp @@ -106,9 +106,20 @@ void PairLJClass2CoulLongGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = c2cl_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_class2_gpu.cpp b/src/GPU/pair_lj_class2_gpu.cpp index 643e3ff090..a7ca661927 100644 --- a/src/GPU/pair_lj_class2_gpu.cpp +++ b/src/GPU/pair_lj_class2_gpu.cpp @@ -91,9 +91,20 @@ void PairLJClass2GPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = lj96_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_cubic_gpu.cpp b/src/GPU/pair_lj_cubic_gpu.cpp index 64fd6119c3..38f6e1f908 100644 --- a/src/GPU/pair_lj_cubic_gpu.cpp +++ b/src/GPU/pair_lj_cubic_gpu.cpp @@ -96,10 +96,21 @@ void PairLJCubicGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ljcb_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_lj_cut_coul_cut_gpu.cpp b/src/GPU/pair_lj_cut_coul_cut_gpu.cpp index e52a971786..54f0e92bd5 100644 --- a/src/GPU/pair_lj_cut_coul_cut_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_cut_gpu.cpp @@ -97,9 +97,20 @@ void PairLJCutCoulCutGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ljc_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_cut_coul_debye_gpu.cpp b/src/GPU/pair_lj_cut_coul_debye_gpu.cpp index 4c8920450f..e7b1ac5002 100644 --- a/src/GPU/pair_lj_cut_coul_debye_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_debye_gpu.cpp @@ -99,9 +99,20 @@ void PairLJCutCoulDebyeGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ljcd_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp b/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp index acfbcd847e..5d1f4f70be 100644 --- a/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp @@ -108,9 +108,20 @@ void PairLJCutCoulDSFGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ljd_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_cut_coul_long_gpu.cpp b/src/GPU/pair_lj_cut_coul_long_gpu.cpp index 24ce118c6d..dff2ba28d4 100644 --- a/src/GPU/pair_lj_cut_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_long_gpu.cpp @@ -109,9 +109,20 @@ void PairLJCutCoulLongGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ljcl_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_cut_coul_msm_gpu.cpp b/src/GPU/pair_lj_cut_coul_msm_gpu.cpp index 0e700f6fb2..2f965d6476 100644 --- a/src/GPU/pair_lj_cut_coul_msm_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_msm_gpu.cpp @@ -98,10 +98,21 @@ void PairLJCutCoulMSMGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ljcm_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success, diff --git a/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp b/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp index 6c53b02227..43c2a1e9b7 100644 --- a/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp +++ b/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp @@ -99,9 +99,20 @@ void PairLJCutDipoleCutGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = dpl_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_cut_dipole_long_gpu.cpp b/src/GPU/pair_lj_cut_dipole_long_gpu.cpp index 0535735820..9416ede516 100644 --- a/src/GPU/pair_lj_cut_dipole_long_gpu.cpp +++ b/src/GPU/pair_lj_cut_dipole_long_gpu.cpp @@ -110,9 +110,20 @@ void PairLJCutDipoleLongGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = dplj_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_cut_gpu.cpp b/src/GPU/pair_lj_cut_gpu.cpp index c6f61a7e96..27924361f2 100644 --- a/src/GPU/pair_lj_cut_gpu.cpp +++ b/src/GPU/pair_lj_cut_gpu.cpp @@ -96,10 +96,21 @@ void PairLJCutGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ljl_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_lj_cut_tip4p_long_gpu.cpp b/src/GPU/pair_lj_cut_tip4p_long_gpu.cpp index a7875f15c4..c0304f19ae 100644 --- a/src/GPU/pair_lj_cut_tip4p_long_gpu.cpp +++ b/src/GPU/pair_lj_cut_tip4p_long_gpu.cpp @@ -119,10 +119,21 @@ void PairLJCutTIP4PLongGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ljtip4p_long_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->get_map_array(), atom->get_map_size(), atom->sametag, atom->get_max_same(), atom->nspecial, diff --git a/src/GPU/pair_lj_expand_coul_long_gpu.cpp b/src/GPU/pair_lj_expand_coul_long_gpu.cpp index a906f57707..54eb4d47e6 100644 --- a/src/GPU/pair_lj_expand_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_expand_coul_long_gpu.cpp @@ -109,9 +109,20 @@ void PairLJExpandCoulLongGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ljecl_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_expand_gpu.cpp b/src/GPU/pair_lj_expand_gpu.cpp index db88e8dae8..32c35420a2 100644 --- a/src/GPU/pair_lj_expand_gpu.cpp +++ b/src/GPU/pair_lj_expand_gpu.cpp @@ -95,9 +95,20 @@ void PairLJExpandGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = lje_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_gromacs_gpu.cpp b/src/GPU/pair_lj_gromacs_gpu.cpp index 6989d73d50..d7122cb5f3 100644 --- a/src/GPU/pair_lj_gromacs_gpu.cpp +++ b/src/GPU/pair_lj_gromacs_gpu.cpp @@ -97,10 +97,21 @@ void PairLJGromacsGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ljgrm_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_lj_sdk_coul_long_gpu.cpp b/src/GPU/pair_lj_sdk_coul_long_gpu.cpp index 3bcaa78d46..cd76bbd2e9 100644 --- a/src/GPU/pair_lj_sdk_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_sdk_coul_long_gpu.cpp @@ -112,9 +112,20 @@ void PairLJSDKCoulLongGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = sdkl_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_sdk_gpu.cpp b/src/GPU/pair_lj_sdk_gpu.cpp index c0a3e8ec39..5f07bdbb6c 100644 --- a/src/GPU/pair_lj_sdk_gpu.cpp +++ b/src/GPU/pair_lj_sdk_gpu.cpp @@ -97,9 +97,20 @@ void PairLJSDKGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = sdk_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp b/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp index d001c282e2..a9ddf81bf0 100644 --- a/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp +++ b/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp @@ -98,9 +98,20 @@ void PairLJSFDipoleSFGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = dplsf_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_mie_cut_gpu.cpp b/src/GPU/pair_mie_cut_gpu.cpp index 84cc903dee..4db07ab79e 100644 --- a/src/GPU/pair_mie_cut_gpu.cpp +++ b/src/GPU/pair_mie_cut_gpu.cpp @@ -93,10 +93,21 @@ void PairMIECutGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = mie_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_morse_gpu.cpp b/src/GPU/pair_morse_gpu.cpp index 5bcda54d85..fc966f6533 100644 --- a/src/GPU/pair_morse_gpu.cpp +++ b/src/GPU/pair_morse_gpu.cpp @@ -91,10 +91,21 @@ void PairMorseGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = mor_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_resquared_gpu.cpp b/src/GPU/pair_resquared_gpu.cpp index b03834d5d1..0bcabb451c 100644 --- a/src/GPU/pair_resquared_gpu.cpp +++ b/src/GPU/pair_resquared_gpu.cpp @@ -121,9 +121,20 @@ void PairRESquaredGPU::compute(int eflag, int vflag) } if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = re_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_soft_gpu.cpp b/src/GPU/pair_soft_gpu.cpp index 04efb1e96a..48a4f689ff 100644 --- a/src/GPU/pair_soft_gpu.cpp +++ b/src/GPU/pair_soft_gpu.cpp @@ -96,10 +96,21 @@ void PairSoftGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = soft_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_sw_gpu.cpp b/src/GPU/pair_sw_gpu.cpp index 8e75aff545..4c4502828d 100644 --- a/src/GPU/pair_sw_gpu.cpp +++ b/src/GPU/pair_sw_gpu.cpp @@ -103,10 +103,21 @@ void PairSWGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = sw_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_table_gpu.cpp b/src/GPU/pair_table_gpu.cpp index 563b070bda..858a2107dc 100644 --- a/src/GPU/pair_table_gpu.cpp +++ b/src/GPU/pair_table_gpu.cpp @@ -99,9 +99,20 @@ void PairTableGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = table_gpu_compute_n(neighbor->ago, inum, nall, atom->x, - atom->type, domain->sublo, domain->subhi, + atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, diff --git a/src/GPU/pair_tersoff_gpu.cpp b/src/GPU/pair_tersoff_gpu.cpp index 33bac49e5e..d7b1ef5dd5 100644 --- a/src/GPU/pair_tersoff_gpu.cpp +++ b/src/GPU/pair_tersoff_gpu.cpp @@ -107,10 +107,21 @@ void PairTersoffGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = tersoff_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_tersoff_mod_gpu.cpp b/src/GPU/pair_tersoff_mod_gpu.cpp index ebcdf0f7dd..1b35045902 100644 --- a/src/GPU/pair_tersoff_mod_gpu.cpp +++ b/src/GPU/pair_tersoff_mod_gpu.cpp @@ -100,10 +100,21 @@ void PairTersoffMODGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = tersoff_mod_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_tersoff_zbl_gpu.cpp b/src/GPU/pair_tersoff_zbl_gpu.cpp index 09b5a7f838..ae50552f14 100644 --- a/src/GPU/pair_tersoff_zbl_gpu.cpp +++ b/src/GPU/pair_tersoff_zbl_gpu.cpp @@ -108,10 +108,21 @@ void PairTersoffZBLGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = tersoff_zbl_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_ufm_gpu.cpp b/src/GPU/pair_ufm_gpu.cpp index 49ed6289e1..cea898b050 100644 --- a/src/GPU/pair_ufm_gpu.cpp +++ b/src/GPU/pair_ufm_gpu.cpp @@ -98,10 +98,21 @@ void PairUFMGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ufml_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_vashishta_gpu.cpp b/src/GPU/pair_vashishta_gpu.cpp index 6f0d938440..ccd2773130 100644 --- a/src/GPU/pair_vashishta_gpu.cpp +++ b/src/GPU/pair_vashishta_gpu.cpp @@ -104,10 +104,21 @@ void PairVashishtaGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = vashishta_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_yukawa_colloid_gpu.cpp b/src/GPU/pair_yukawa_colloid_gpu.cpp index 7bbed7d89b..c3439e3306 100644 --- a/src/GPU/pair_yukawa_colloid_gpu.cpp +++ b/src/GPU/pair_yukawa_colloid_gpu.cpp @@ -94,11 +94,22 @@ void PairYukawaColloidGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = ykcolloid_gpu_compute_n(neighbor->ago, inum, nall, atom->x, atom->type, - domain->sublo, - domain->subhi, atom->tag, + sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, diff --git a/src/GPU/pair_yukawa_gpu.cpp b/src/GPU/pair_yukawa_gpu.cpp index 9d702daf20..b9b9d6e0a4 100644 --- a/src/GPU/pair_yukawa_gpu.cpp +++ b/src/GPU/pair_yukawa_gpu.cpp @@ -93,10 +93,21 @@ void PairYukawaGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = yukawa_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pair_zbl_gpu.cpp b/src/GPU/pair_zbl_gpu.cpp index 23c3c077fa..d0cbfa1d7c 100644 --- a/src/GPU/pair_zbl_gpu.cpp +++ b/src/GPU/pair_zbl_gpu.cpp @@ -96,10 +96,21 @@ void PairZBLGPU::compute(int eflag, int vflag) bool success = true; int *ilist, *numneigh, **firstneigh; if (gpu_mode != GPU_FORCE) { + double sublo[3],subhi[3]; + if (domain->triclinic == 0) { + sublo[0] = domain->sublo[0]; + sublo[1] = domain->sublo[1]; + sublo[2] = domain->sublo[2]; + subhi[0] = domain->subhi[0]; + subhi[1] = domain->subhi[1]; + subhi[2] = domain->subhi[2]; + } else { + domain->bbox(domain->sublo_lamda,domain->subhi_lamda,sublo,subhi); + } inum = atom->nlocal; firstneigh = zbl_gpu_compute_n(neighbor->ago, inum, nall, - atom->x, atom->type, domain->sublo, - domain->subhi, atom->tag, atom->nspecial, + atom->x, atom->type, sublo, + subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success); diff --git a/src/GPU/pppm_gpu.cpp b/src/GPU/pppm_gpu.cpp index bbb270ff8e..7c58f6d406 100644 --- a/src/GPU/pppm_gpu.cpp +++ b/src/GPU/pppm_gpu.cpp @@ -91,7 +91,6 @@ void PPPM_GPU_API(forces)(double **f); PPPMGPU::PPPMGPU(LAMMPS *lmp) : PPPM(lmp) { - triclinic_support = 0; density_brick_gpu = vd_brick = NULL; kspace_split = false; im_real_space = false; @@ -210,15 +209,17 @@ void PPPMGPU::compute(int eflag, int vflag) cg_peratom->setup(); } - bool success = true; - int flag=PPPM_GPU_API(spread)(nago, atom->nlocal, atom->nlocal + - atom->nghost, atom->x, atom->type, success, - atom->q, domain->boxlo, delxinv, delyinv, - delzinv); - if (!success) - error->one(FLERR,"Insufficient memory on accelerator"); - if (flag != 0) - error->one(FLERR,"Out of range atoms - cannot compute PPPM"); + if (triclinic == 0) { + bool success = true; + int flag=PPPM_GPU_API(spread)(nago, atom->nlocal, atom->nlocal + + atom->nghost, atom->x, atom->type, success, + atom->q, domain->boxlo, delxinv, delyinv, + delzinv); + if (!success) + error->one(FLERR,"Insufficient memory on accelerator"); + if (flag != 0) + error->one(FLERR,"Out of range atoms - cannot compute PPPM"); + } // convert atoms from box to lamda coords @@ -229,9 +230,10 @@ void PPPMGPU::compute(int eflag, int vflag) } // If need per-atom energies/virials, also do particle map on host - // concurrently with GPU calculations + // concurrently with GPU calculations, + // or if the box is triclinic, particle map is done on host - if (evflag_atom) { + if (evflag_atom || triclinic) { // extend size of per-atom arrays if necessary @@ -244,14 +246,24 @@ void PPPMGPU::compute(int eflag, int vflag) particle_map(); } + // if the box is triclinic, + // map my particle charge onto my local 3d density grid on the host + + if (triclinic) make_rho(); + double t3 = MPI_Wtime(); // all procs communicate density values from their ghost cells // to fully sum contribution in their 3d bricks // remap from 3d decomposition to FFT decomposition - cg->reverse_comm(this,REVERSE_RHO_GPU); - brick2fft_gpu(); + if (triclinic == 0) { + cg->reverse_comm(this,REVERSE_RHO_GPU); + brick2fft_gpu(); + } else { + cg->reverse_comm(this,REVERSE_RHO); + PPPM::brick2fft(); + } // compute potential gradient on my FFT grid and // portion of e_long on this proc's FFT grid @@ -279,7 +291,8 @@ void PPPMGPU::compute(int eflag, int vflag) // calculate the force on my particles FFT_SCALAR qscale = force->qqrd2e * scale; - PPPM_GPU_API(interp)(qscale); + if (triclinic == 0) PPPM_GPU_API(interp)(qscale); + else fieldforce(); // per-atom energy/virial // energy includes self-energy correction diff --git a/src/GRANULAR/fix_pour.cpp b/src/GRANULAR/fix_pour.cpp index 25806a1ac8..73b42b9653 100644 --- a/src/GRANULAR/fix_pour.cpp +++ b/src/GRANULAR/fix_pour.cpp @@ -40,6 +40,7 @@ using namespace MathConst; enum{ATOM,MOLECULE}; enum{ONE,RANGE,POLY}; +enum{CONSTANT,EQUAL}; // same as FixGravity #define EPSILON 0.001 #define SMALL 1.0e-10 @@ -318,6 +319,10 @@ void FixPour::init() if (ifix == -1) error->all(FLERR,"No fix gravity defined for fix pour"); + int varflag = ((FixGravity *) modify->fix[ifix])->varflag; + if (varflag != CONSTANT) + error->all(FLERR,"Fix gravity for fix pour must be constant"); + double xgrav = ((FixGravity *) modify->fix[ifix])->xgrav; double ygrav = ((FixGravity *) modify->fix[ifix])->ygrav; double zgrav = ((FixGravity *) modify->fix[ifix])->zgrav; diff --git a/src/GRANULAR/fix_wall_gran.cpp b/src/GRANULAR/fix_wall_gran.cpp index e5ed1579ba..c856b8ff5f 100644 --- a/src/GRANULAR/fix_wall_gran.cpp +++ b/src/GRANULAR/fix_wall_gran.cpp @@ -370,7 +370,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) : vshear = force->numeric(FLERR,arg[iarg+2]); wshear = 1; iarg += 3; - } else if (strcmp(arg[iarg],"store_contacts") == 0) { + } else if (strcmp(arg[iarg],"contacts") == 0) { peratom_flag = 1; size_peratom_cols = 8; peratom_freq = 1; @@ -426,10 +426,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) : } if (peratom_flag) { - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) - for (int m = 0; m < size_peratom_cols; m++) - array_atom[i][m] = 0.0; + clear_stored_contacts(); } time_origin = update->ntimestep; @@ -596,6 +593,10 @@ void FixWallGran::post_force(int /*vflag*/) rwall = 0.0; + if (peratom_flag) { + clear_stored_contacts(); + } + for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -668,7 +669,7 @@ void FixWallGran::post_force(int /*vflag*/) // store contact info if (peratom_flag) { - array_atom[i][0] = (double)atom->tag[i]; + array_atom[i][0] = 1.0; array_atom[i][4] = x[i][0] - dx; array_atom[i][5] = x[i][1] - dy; array_atom[i][6] = x[i][2] - dz; @@ -702,6 +703,15 @@ void FixWallGran::post_force(int /*vflag*/) } } +void FixWallGran::clear_stored_contacts() { + const int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + for (int m = 0; m < size_peratom_cols; m++) { + array_atom[i][m] = 0.0; + } + } +} + /* ---------------------------------------------------------------------- */ void FixWallGran::post_force_respa(int vflag, int ilevel, int /*iloop*/) diff --git a/src/GRANULAR/fix_wall_gran.h b/src/GRANULAR/fix_wall_gran.h index f147e29433..3aa518209a 100644 --- a/src/GRANULAR/fix_wall_gran.h +++ b/src/GRANULAR/fix_wall_gran.h @@ -110,6 +110,8 @@ class FixWallGran : public Fix { // store particle interactions int store; + + void clear_stored_contacts(); }; } diff --git a/src/GRANULAR/fix_wall_gran_region.cpp b/src/GRANULAR/fix_wall_gran_region.cpp index 95553b83b7..7ccd90ebf8 100644 --- a/src/GRANULAR/fix_wall_gran_region.cpp +++ b/src/GRANULAR/fix_wall_gran_region.cpp @@ -178,6 +178,10 @@ void FixWallGranRegion::post_force(int /*vflag*/) region->set_velocity(); } + if (peratom_flag) { + clear_stored_contacts(); + } + for (i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { if (!region->match(x[i][0],x[i][1],x[i][2])) continue; diff --git a/src/KIM/kim_init.cpp b/src/KIM/kim_init.cpp index 1d3830c275..57112997ab 100644 --- a/src/KIM/kim_init.cpp +++ b/src/KIM/kim_init.cpp @@ -57,6 +57,8 @@ ------------------------------------------------------------------------- */ #include "kim_init.h" +#include "fix_store_kim.h" +#include "kim_units.h" #include #include #include @@ -71,8 +73,8 @@ #include "input.h" #include "variable.h" #include "citeme.h" -#include "fix_store_kim.h" -#include "kim_units.h" +#include "utils.h" +#include "fmt/format.h" extern "C" { #include "KIM_SimulatorHeaders.h" @@ -275,7 +277,7 @@ void KimInit::determine_model_type_and_units(char * model_name, std::string mesg("Incompatible units for KIM Simulator Model, " "required units = "); mesg += *model_units; - error->all(FLERR,mesg.c_str()); + error->all(FLERR,mesg); } } } @@ -302,7 +304,7 @@ void KimInit::do_init(char *model_name, char *user_units, char *model_units, KIM fix_store->setptr("model_units", (void *) model_units); // Begin output to log file - kim_init_log_delimiter("begin"); + input->write_echo("#=== BEGIN kim-init ==========================================\n"); int kimerror; KIM_SimulatorModel * simulatorModel; @@ -328,8 +330,7 @@ void KimInit::do_init(char *model_name, char *user_units, char *model_units, KIM mesg += "\n"; mesg += "#\n"; - if (screen) fputs(mesg.c_str(),screen); - if (logfile) fputs(mesg.c_str(),logfile); + utils::logmesg(lmp,mesg); } fix_store->setptr("simulator_model", (void *) simulatorModel); @@ -346,7 +347,7 @@ void KimInit::do_init(char *model_name, char *user_units, char *model_units, KIM std::string cmd("units "); cmd += model_units; - input->one(cmd.c_str()); + input->one(cmd); if (model_type == SM) { int sim_fields, sim_lines; @@ -423,37 +424,14 @@ void KimInit::do_init(char *model_name, char *user_units, char *model_units, KIM mesg += "\n"; } } - else - mesg += "No mutable parameters. \n"; + else mesg += "No mutable parameters. \n"; KIM_Model_Destroy(&pkim); - - if (comm->me == 0) - { - input->write_echo(mesg.c_str()); - } + input->write_echo(mesg); } // End output to log file - kim_init_log_delimiter("end"); - -} - -/* ---------------------------------------------------------------------- */ - -void KimInit::kim_init_log_delimiter(std::string const &begin_end) const -{ - if (comm->me == 0) { - std::string mesg; - if (begin_end == "begin") - mesg = - "#=== BEGIN kim-init ==========================================\n"; - else if (begin_end == "end") - mesg = - "#=== END kim-init ============================================\n\n"; - - input->write_echo(mesg.c_str()); - } + input->write_echo("#=== END kim-init ============================================\n\n"); } /* ---------------------------------------------------------------------- */ @@ -493,14 +471,8 @@ void KimInit::do_variables(char *user_units, char *model_units) (char *)"efield", (char *)"density"}; - if (comm->me == 0) { - std::string mesg("# Conversion factors from "); - mesg += from; - mesg += " to "; - mesg += to; - mesg += ":\n"; - input->write_echo(mesg.c_str()); - } + input->write_echo(fmt::format("# Conversion factors from {} to {}:\n", + from,to)); for (int i = 0; i < nunits; i++) { var_str = std::string("_u_") + std::string(units[i]); @@ -514,58 +486,43 @@ void KimInit::do_variables(char *user_units, char *model_units) from, to, conversion_factor); - if (ier != 0) { - std::string err = std::string("Unable to obtain conversion factor: ") + - "unit = " + units[i] + "; " - "from = " + from + "; " - "to = " + to + "."; - error->all(FLERR,err.c_str()); - } + if (ier != 0) + error->all(FLERR,fmt::format("Unable to obtain conversion factor: " + "unit = {}; from = {}; to = {}.", + units[i], from, to)); + variable->internal_set(v_unit,conversion_factor); - if (comm->me == 0) { - std::stringstream mesg; - mesg << "variable " << std::setw(15) << std::left << var_str - << " internal " - << std::setprecision(12) << std::scientific << conversion_factor - << std::endl; - input->write_echo(mesg.str().c_str()); - } + input->write_echo(fmt::format("variable {:<15s} internal {:<15.12e}\n", + var_str, conversion_factor)); } - if (comm->me == 0) input->write_echo("#\n"); + input->write_echo("#\n"); } /* ---------------------------------------------------------------------- */ -void KimInit::write_log_cite(char * model_name) +void KimInit::write_log_cite(const std::string &model_name) { KIM_Collections * coll; int err = KIM_Collections_Create(&coll); if (err) return; int extent; - if (model_type == MO) - { + if (model_type == MO) { err = KIM_Collections_CacheListOfItemMetadataFiles( - coll,KIM_COLLECTION_ITEM_TYPE_portableModel,model_name,&extent); - } - else if (model_type == SM) - { + coll,KIM_COLLECTION_ITEM_TYPE_portableModel,model_name.c_str(),&extent); + } else if (model_type == SM) { err = KIM_Collections_CacheListOfItemMetadataFiles( - coll,KIM_COLLECTION_ITEM_TYPE_simulatorModel,model_name,&extent); - } - else - { + coll,KIM_COLLECTION_ITEM_TYPE_simulatorModel,model_name.c_str(),&extent); + } else { error->all(FLERR,"Unknown model type."); } - if (err) - { + if (err) { KIM_Collections_Destroy(&coll); return; } - for (int i = 0; i < extent;++i) - { + for (int i = 0; i < extent;++i) { char const * fileName; int availableAsString; char const * fileString; @@ -573,8 +530,7 @@ void KimInit::write_log_cite(char * model_name) coll,i,&fileName,NULL,NULL,&availableAsString,&fileString); if (err) continue; - if (0 == strncmp("kimcite",fileName,7)) - { + if (0 == strncmp("kimcite",fileName,7)) { if ((lmp->citeme) && (availableAsString)) lmp->citeme->add(fileString); } } diff --git a/src/KIM/kim_init.h b/src/KIM/kim_init.h index 7d06896215..a38757b375 100644 --- a/src/KIM/kim_init.h +++ b/src/KIM/kim_init.h @@ -83,10 +83,9 @@ class KimInit : protected Pointers { bool unit_conversion_mode; void determine_model_type_and_units(char *, char *, char **, KIM_Model *&); - void write_log_cite(char *); + void write_log_cite(const std::string &); void do_init(char *, char *, char *, KIM_Model *&); void do_variables(char*, char*); - void kim_init_log_delimiter(std::string const &begin_end) const; }; } diff --git a/src/KIM/kim_interactions.cpp b/src/KIM/kim_interactions.cpp index d0aa0e3c4e..ad858bd913 100644 --- a/src/KIM/kim_interactions.cpp +++ b/src/KIM/kim_interactions.cpp @@ -99,24 +99,6 @@ void KimInteractions::command(int narg, char **arg) /* ---------------------------------------------------------------------- */ -void KimInteractions::kim_interactions_log_delimiter( - std::string const begin_end) const -{ - if (comm->me == 0) { - std::string mesg; - if (begin_end == "begin") - mesg = - "#=== BEGIN kim_interactions ==================================\n"; - else if (begin_end == "end") - mesg = - "#=== END kim_interactions ====================================\n\n"; - - input->write_echo(mesg.c_str()); - } -} - -/* ---------------------------------------------------------------------- */ - void KimInteractions::do_setup(int narg, char **arg) { bool fixed_types; @@ -145,7 +127,7 @@ void KimInteractions::do_setup(int narg, char **arg) } else error->all(FLERR,"Must use 'kim_init' before 'kim_interactions'"); // Begin output to log file - kim_interactions_log_delimiter("begin"); + input->write_echo("#=== BEGIN kim_interactions ==================================\n"); if (simulatorModel) { @@ -167,7 +149,7 @@ void KimInteractions::do_setup(int narg, char **arg) simulatorModel,"atom-type-num-list",atom_type_num_list.c_str()); KIM_SimulatorModel_CloseTemplateMap(simulatorModel); - int len = strlen(atom_type_sym_list.c_str())+1; + int len = atom_type_sym_list.size()+1; char *strbuf = new char[len]; char *strword; @@ -192,7 +174,7 @@ void KimInteractions::do_setup(int narg, char **arg) std::string msg("Species '"); msg += strword; msg += "' is not supported by this KIM Simulator Model"; - error->all(FLERR,msg.c_str()); + error->all(FLERR,msg); } strword = strtok(NULL," \t"); } @@ -276,13 +258,12 @@ void KimInteractions::do_setup(int narg, char **arg) cmd2 += " "; } - input->one(cmd1.c_str()); - input->one(cmd2.c_str()); + input->one(cmd1); + input->one(cmd2); } // End output to log file - kim_interactions_log_delimiter("end"); - + input->write_echo("#=== END kim_interactions ====================================\n\n"); } /* ---------------------------------------------------------------------- */ @@ -377,7 +358,7 @@ void KimInteractions::KIM_SET_TYPE_PARAMETERS(char const *const input_line) cons /* ---------------------------------------------------------------------- */ -int KimInteractions::species_to_atomic_no(std::string const species) const +int KimInteractions::species_to_atomic_no(const std::string &species) const { if (species == "H") return 1; else if (species == "He") return 2; diff --git a/src/KIM/kim_interactions.h b/src/KIM/kim_interactions.h index ffec48adab..0bcfd91307 100644 --- a/src/KIM/kim_interactions.h +++ b/src/KIM/kim_interactions.h @@ -76,9 +76,8 @@ class KimInteractions : protected Pointers { void command(int, char **); private: void do_setup(int, char **); - int species_to_atomic_no(std::string const species) const; + int species_to_atomic_no(const std::string &species) const; void KIM_SET_TYPE_PARAMETERS(char const *const input_line) const; - void kim_interactions_log_delimiter(std::string const begin_end) const; }; } diff --git a/src/KIM/kim_param.cpp b/src/KIM/kim_param.cpp index f5a154f2d9..319ca8da98 100644 --- a/src/KIM/kim_param.cpp +++ b/src/KIM/kim_param.cpp @@ -56,6 +56,8 @@ ------------------------------------------------------------------------- */ #include "kim_param.h" +#include "fix_store_kim.h" +#include "pair_kim.h" #include #include #include @@ -66,8 +68,7 @@ #include "modify.h" #include "variable.h" #include "force.h" -#include "fix_store_kim.h" -#include "pair_kim.h" +#include "fmt/format.h" extern "C" { @@ -157,13 +158,12 @@ void KimParam::command(int narg, char **arg) if (narg < 4) error->all(FLERR, "Illegal kim_param command"); - kim_param_get = (strcmp(arg[0], "get") == 0); - kim_param_set = (strcmp(arg[0], "set") == 0); + std::string kim_param_get_set = arg[0]; - if (!kim_param_get && !kim_param_set) { + if ((kim_param_get_set != "get") && (kim_param_get_set != "set")) { std::string msg("Incorrect arguments in kim_param command.\n"); msg += "'kim_param get/set' is mandatory."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } // Check if we called a kim_init command @@ -193,7 +193,8 @@ void KimParam::command(int narg, char **arg) else error->all(FLERR, "Must use 'kim_init' before 'kim_param'"); - kim_param_log_delimiter("begin"); + input->write_echo(fmt::format("#=== BEGIN kim-param {} ===================" + "==================\n",kim_param_get_set)); KIM_Model *pkim = NULL; @@ -211,7 +212,7 @@ void KimParam::command(int narg, char **arg) if (!pkim) error->all(FLERR, "Unable to get the KIM Portable Model."); - if (kim_param_set) { + if (kim_param_get_set == "set") { atom_type_list = pairKIM->get_atom_type_list(); if (atom_type_list.empty()) error->all(FLERR, "The requested atom type list is empty."); @@ -220,12 +221,12 @@ void KimParam::command(int narg, char **arg) error->all(FLERR, "Pair style is defined," " but there is no match for kim style in lammps."); } else { - if (kim_param_set) { + if (kim_param_get_set == "set") { std::string msg("Wrong kim_param set command.\n"); msg += "To set the new parameter values, pair style must be assigned.\n"; msg += "Must use 'kim_interactions' or"; msg += "'pair_style kim ' before 'kim_param set'"; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } else { KIM_LengthUnit lengthUnit; KIM_EnergyUnit energyUnit; @@ -259,7 +260,7 @@ void KimParam::command(int narg, char **arg) KIM_Model_GetNumberOfParameters(pkim, &numberOfParameters); if (numberOfParameters) { // Get the parameters - if (kim_param_get) { + if (kim_param_get_set == "get") { // Parameter name char *paramname = NULL; // Variable name @@ -296,7 +297,7 @@ void KimParam::command(int narg, char **arg) msg += "This Model does not have the requested '"; msg += paramname; msg += "' parameter."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } // Get the index_range for the requested parameter @@ -313,7 +314,7 @@ void KimParam::command(int narg, char **arg) msg += "Expected integer parameter(s) instead of '"; msg += argtostr; msg += "' in index_range."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } std::string::size_type npos = argtostr.find(':'); @@ -330,7 +331,7 @@ void KimParam::command(int narg, char **arg) msg += "' parameter with extent of '"; msg += SNUM(extent); msg += "' ."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } } else { std::stringstream str(argtostr); @@ -342,7 +343,7 @@ void KimParam::command(int narg, char **arg) msg += "' with the extent of '"; msg += SNUM(extent); msg += "' ."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } nubound = nlbound; } @@ -350,7 +351,7 @@ void KimParam::command(int narg, char **arg) std::string msg("Wrong number of arguments in "); msg += "kim_param get command.\n"; msg += "Index range after parameter name is mandatory."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } int const nvars = nubound - nlbound + 1; @@ -363,7 +364,7 @@ void KimParam::command(int narg, char **arg) std::string msg("Wrong number of arguments in "); msg += "kim_param get command.\n"; msg += "The LAMMPS variable name is mandatory."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } // indicator flag for list request @@ -400,7 +401,7 @@ void KimParam::command(int narg, char **arg) msg += "' variable names or '"; msg += varname; msg += " split' is mandatory."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } } else { std::string msg("Wrong number of arguments in "); @@ -410,7 +411,7 @@ void KimParam::command(int narg, char **arg) msg += "' variable names or '"; msg += varname; msg += " split/list' is mandatory."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } } else { varsname = new char *[1]; @@ -524,7 +525,7 @@ void KimParam::command(int narg, char **arg) set_cmd += " "; set_cmd += arg[i]; } - input->one(set_cmd.c_str()); + input->one(set_cmd); } } else error->all(FLERR, "This model has No mutable parameters."); @@ -532,38 +533,17 @@ void KimParam::command(int narg, char **arg) if (!isPairStyleAssigned) KIM_Model_Destroy(&pkim); - kim_param_log_delimiter("end"); + input->write_echo(fmt::format("#=== END kim-param {} =====================" + "==================\n",kim_param_get_set)); } /* ---------------------------------------------------------------------- */ -void KimParam::kim_param_log_delimiter(std::string const &begin_end) const +void KimParam::echo_var_assign(const std::string &name, + const std::string &value) const { - if (comm->me == 0) { - std::string msg; - if (begin_end == "begin") { - msg = "#=== BEGIN kim-param "; - msg += kim_param_get ? "get " : "set "; - msg += "=====================================\n"; - } else if (begin_end == "end") { - msg = "#=== END kim-param "; - msg += kim_param_get ? "get " : "set "; - msg += "=======================================\n\n"; - } - input->write_echo(msg.c_str()); - } -} - -/* ---------------------------------------------------------------------- */ - -void KimParam::echo_var_assign(std::string const &name, - std::string const &value) const -{ - if (comm->me == 0) { - std::string msg; - msg += "variable " + name + " string " + value + "\n"; - input->write_echo(msg.c_str()); - } + input->write_echo(fmt::format("variable {} string {}\n", + name, value)); } #undef SNUM diff --git a/src/KIM/kim_param.h b/src/KIM/kim_param.h index 5a9298628d..61eb09b216 100644 --- a/src/KIM/kim_param.h +++ b/src/KIM/kim_param.h @@ -80,10 +80,7 @@ public: void command(int, char **); private: - void kim_param_log_delimiter(std::string const &begin_end) const; - - void echo_var_assign(std::string const &name, std::string const &value) - const; + void echo_var_assign(const std::string &name, const std::string &value) const; private: bool kim_param_get; diff --git a/src/KIM/kim_property.cpp b/src/KIM/kim_property.cpp index d2f1d145c9..1020f380b7 100644 --- a/src/KIM/kim_property.cpp +++ b/src/KIM/kim_property.cpp @@ -100,13 +100,13 @@ void kimProperty::command(int narg, char **arg) std::string msg("Error incorrect arguments in kim_property command.\n"); msg += "`kim_property create/destroy/modify/remove/dump` "; msg += "is mandatory."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } if (comm->me == 0) { std::string msg; msg = "#=== kim-property ===========================================\n"; - input->write_echo(msg.c_str()); + input->write_echo(msg); } // Get the kim_str ptr to the data associated with a kim_property_str @@ -464,7 +464,8 @@ void kimProperty::command(int narg, char **arg) error->one(FLERR, "Error Python `kim_property_dump` function " "evaluation failed!"); } - } + } else + pValue = NULL; // Destroy the variable kim_str_cmd[1] = const_cast("delete"); diff --git a/src/KIM/kim_query.cpp b/src/KIM/kim_query.cpp index 12c93c80c2..b8a125f640 100644 --- a/src/KIM/kim_query.cpp +++ b/src/KIM/kim_query.cpp @@ -56,6 +56,7 @@ ------------------------------------------------------------------------- */ #include "kim_query.h" +#include "fix_store_kim.h" #include #include #include @@ -67,7 +68,7 @@ #include "variable.h" #include "version.h" #include "info.h" -#include "fix_store_kim.h" +#include "fmt/format.h" #if defined(LMP_KIM_CURL) #include @@ -153,7 +154,7 @@ void KimQuery::command(int narg, char **arg) error->all(FLERR,errmsg); } - kim_query_log_delimiter("begin"); + input->write_echo("#=== BEGIN kim-query =========================================\n"); char **varcmd = new char*[3]; varcmd[1] = (char *) "string"; @@ -186,7 +187,7 @@ void KimQuery::command(int narg, char **arg) input->variable->set(3,varcmd); echo_var_assign(varname, value_string); } - kim_query_log_delimiter("end"); + input->write_echo("#=== END kim-query ===========================================\n\n"); delete[] varcmd; delete[] value; @@ -342,29 +343,8 @@ char *do_query(char *qfunction, char * model_name, int narg, char **arg, /* ---------------------------------------------------------------------- */ -void KimQuery::kim_query_log_delimiter(std::string const begin_end) const +void KimQuery::echo_var_assign(const std::string & name, + const std::string & value) const { - if (comm->me == 0) { - std::string mesg; - if (begin_end == "begin") - mesg = - "#=== BEGIN kim-query =========================================\n"; - else if (begin_end == "end") - mesg = - "#=== END kim-query ===========================================\n\n"; - - input->write_echo(mesg.c_str()); - } -} - -/* ---------------------------------------------------------------------- */ - -void KimQuery::echo_var_assign(std::string const & name, - std::string const & value) const -{ - if (comm->me == 0) { - std::string mesg; - mesg += "variable " + name + " string " + value + "\n"; - input->write_echo(mesg.c_str()); - } + input->write_echo(fmt::format("variable {} string {}\n",name,value)); } diff --git a/src/KIM/kim_query.h b/src/KIM/kim_query.h index 33a37f5131..6888f911f4 100644 --- a/src/KIM/kim_query.h +++ b/src/KIM/kim_query.h @@ -73,8 +73,7 @@ class KimQuery : protected Pointers { KimQuery(class LAMMPS *lmp) : Pointers(lmp) {}; void command(int, char **); private: - void kim_query_log_delimiter(std::string const begin_end) const; - void echo_var_assign(std::string const & name, std::string const & value) + void echo_var_assign(const std::string &name, const std::string &value) const; }; diff --git a/src/KIM/kim_units.cpp b/src/KIM/kim_units.cpp index b059ec0d73..8db1eeff17 100644 --- a/src/KIM/kim_units.cpp +++ b/src/KIM/kim_units.cpp @@ -1370,9 +1370,9 @@ double get_unit_conversion_factor(unit_type &unit_type_enum, // Wrapper to the routine that gets the unit conversion. Translates strings // to enumerations and then call get_unit_conversion_factor() -int lammps_unit_conversion(string const &unit_type_str, - string const &from_system_str, - string const &to_system_str, +int lammps_unit_conversion(const string &unit_type_str, + const string &from_system_str, + const string &to_system_str, double &conversion_factor) { // initialize diff --git a/src/KIM/kim_units.h b/src/KIM/kim_units.h index 97e81a6222..60909e3ce1 100644 --- a/src/KIM/kim_units.h +++ b/src/KIM/kim_units.h @@ -53,7 +53,7 @@ Designed for use with the kim-api-2.0.2 (and newer) package ------------------------------------------------------------------------- */ -int lammps_unit_conversion(std::string const &unit_type_str, - std::string const &from_system_str, - std::string const &to_system_str, +int lammps_unit_conversion(const std::string &unit_type_str, + const std::string &from_system_str, + const std::string &to_system_str, double &conversion_factor); diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index 8ff0ddf455..76c18bb38a 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -429,7 +429,7 @@ void PairKIM::coeff(int narg, char **arg) } else { std::string msg("create_kim_particle_codes: symbol not found: "); msg += lmps_unique_elements[i]; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } } // Set the new values for PM parameters @@ -441,7 +441,7 @@ void PairKIM::coeff(int narg, char **arg) if (!numberOfParameters) { std::string msg("Incorrect args for pair coefficients \n"); msg += "This model has No mutable parameters."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } int kimerror; @@ -477,7 +477,7 @@ void PairKIM::coeff(int narg, char **arg) msg += "This Model does not have the requested '"; msg += paramname; msg += "' parameter."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } // Get the index_range for the requested parameter @@ -493,7 +493,7 @@ void PairKIM::coeff(int narg, char **arg) msg += "Expected integer parameter(s) instead of '"; msg += argtostr; msg += "' in index_range."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } std::string::size_type npos = argtostr.find(':'); @@ -510,7 +510,7 @@ void PairKIM::coeff(int narg, char **arg) msg += "' parameter with extent of '"; msg += SNUM(extent); msg += "' ."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } } else { std::stringstream str(argtostr); @@ -522,7 +522,7 @@ void PairKIM::coeff(int narg, char **arg) msg += "' parameter with extent of '"; msg += SNUM(extent); msg += "' ."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } nubound = nlbound; } @@ -530,7 +530,7 @@ void PairKIM::coeff(int narg, char **arg) std::string msg = "Wrong number of arguments for pair coefficients.\n"; msg += "Index range after parameter name is mandatory."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } // Parameter values @@ -561,7 +561,7 @@ void PairKIM::coeff(int narg, char **arg) msg += "' values are requested for '"; msg += paramname; msg += "' parameter."; - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } } @@ -1122,7 +1122,7 @@ void PairKIM::set_kim_model_has_flags() KIM_SUPPORT_STATUS_required)) { std::string msg("KIM Model requires unsupported compute argument: "); msg += KIM_ComputeArgumentName_ToString(computeArgumentName); - error->all(FLERR, msg.c_str()); + error->all(FLERR, msg); } } diff --git a/src/KOKKOS/atom_kokkos.cpp b/src/KOKKOS/atom_kokkos.cpp index 4637a9a21c..e826a7c392 100644 --- a/src/KOKKOS/atom_kokkos.cpp +++ b/src/KOKKOS/atom_kokkos.cpp @@ -237,7 +237,7 @@ void AtomKokkos::grow(unsigned int mask){ sync(Device, mask); modified(Device, mask); memoryKK->grow_kokkos(k_special,special,nmax,maxspecial,"atom:special"); - avec->grow_reset(); + avec->grow_pointers(); sync(Host, mask); } } @@ -340,7 +340,8 @@ void AtomKokkos::sync_modify(ExecutionSpace execution_space, modified(execution_space,datamask_modify); } -AtomVec *AtomKokkos::new_avec(const char *style, int trysuffix, int &sflag) +AtomVec *AtomKokkos::new_avec(const std::string &style, + int trysuffix, int &sflag) { AtomVec* avec = Atom::new_avec(style,trysuffix,sflag); if (!avec->kokkosable) diff --git a/src/KOKKOS/atom_kokkos.h b/src/KOKKOS/atom_kokkos.h index 0ae032032a..82ea55beb1 100644 --- a/src/KOKKOS/atom_kokkos.h +++ b/src/KOKKOS/atom_kokkos.h @@ -74,7 +74,7 @@ class AtomKokkos : public Atom { virtual void deallocate_topology(); void sync_modify(ExecutionSpace, unsigned int, unsigned int); private: - class AtomVec *new_avec(const char *, int, int &); + class AtomVec *new_avec(const std::string &, int, int &); }; template diff --git a/src/KOKKOS/atom_vec_angle_kokkos.cpp b/src/KOKKOS/atom_vec_angle_kokkos.cpp index 5b934e2434..e9fee6d8f6 100644 --- a/src/KOKKOS/atom_vec_angle_kokkos.cpp +++ b/src/KOKKOS/atom_vec_angle_kokkos.cpp @@ -98,7 +98,7 @@ void AtomVecAngleKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_angle_atom3,atomKK->angle_atom3,nmax,atomKK->angle_per_atom, "atom:angle_atom3"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -110,7 +110,7 @@ void AtomVecAngleKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecAngleKokkos::grow_reset() +void AtomVecAngleKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_angle_kokkos.h b/src/KOKKOS/atom_vec_angle_kokkos.h index abdd48fce5..4fc71725b0 100644 --- a/src/KOKKOS/atom_vec_angle_kokkos.h +++ b/src/KOKKOS/atom_vec_angle_kokkos.h @@ -58,7 +58,7 @@ class AtomVecAngleKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, const int & iswap, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_atomic_kokkos.cpp b/src/KOKKOS/atom_vec_atomic_kokkos.cpp index df30b50dd0..7a66dc753a 100644 --- a/src/KOKKOS/atom_vec_atomic_kokkos.cpp +++ b/src/KOKKOS/atom_vec_atomic_kokkos.cpp @@ -74,7 +74,7 @@ void AtomVecAtomicKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_v,atomKK->v,nmax,"atom:v"); memoryKK->grow_kokkos(atomKK->k_f,atomKK->f,nmax,"atom:f"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -86,7 +86,7 @@ void AtomVecAtomicKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecAtomicKokkos::grow_reset() +void AtomVecAtomicKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_atomic_kokkos.h b/src/KOKKOS/atom_vec_atomic_kokkos.h index e4d2654e2c..212132ef60 100644 --- a/src/KOKKOS/atom_vec_atomic_kokkos.h +++ b/src/KOKKOS/atom_vec_atomic_kokkos.h @@ -48,7 +48,7 @@ class AtomVecAtomicKokkos : public AtomVecKokkos { void write_data(FILE *, int, double **); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, int pbc_flag, int *pbc, ExecutionSpace space); diff --git a/src/KOKKOS/atom_vec_bond_kokkos.cpp b/src/KOKKOS/atom_vec_bond_kokkos.cpp index b614d94bce..157f194125 100644 --- a/src/KOKKOS/atom_vec_bond_kokkos.cpp +++ b/src/KOKKOS/atom_vec_bond_kokkos.cpp @@ -84,7 +84,7 @@ void AtomVecBondKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_bond_type,atomKK->bond_type,nmax,atomKK->bond_per_atom,"atom:bond_type"); memoryKK->grow_kokkos(atomKK->k_bond_atom,atomKK->bond_atom,nmax,atomKK->bond_per_atom,"atom:bond_atom"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -96,7 +96,7 @@ void AtomVecBondKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecBondKokkos::grow_reset() +void AtomVecBondKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_bond_kokkos.h b/src/KOKKOS/atom_vec_bond_kokkos.h index 7ec15450ef..f38ade8f64 100644 --- a/src/KOKKOS/atom_vec_bond_kokkos.h +++ b/src/KOKKOS/atom_vec_bond_kokkos.h @@ -52,7 +52,7 @@ class AtomVecBondKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, int pbc_flag, int *pbc, ExecutionSpace space); diff --git a/src/KOKKOS/atom_vec_charge_kokkos.cpp b/src/KOKKOS/atom_vec_charge_kokkos.cpp index a9cee3aca8..8f468b8e46 100644 --- a/src/KOKKOS/atom_vec_charge_kokkos.cpp +++ b/src/KOKKOS/atom_vec_charge_kokkos.cpp @@ -79,7 +79,7 @@ void AtomVecChargeKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_q,atomKK->q,nmax,"atom:q"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -91,7 +91,7 @@ void AtomVecChargeKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecChargeKokkos::grow_reset() +void AtomVecChargeKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_charge_kokkos.h b/src/KOKKOS/atom_vec_charge_kokkos.h index e9ff70bbe1..39d641b844 100644 --- a/src/KOKKOS/atom_vec_charge_kokkos.h +++ b/src/KOKKOS/atom_vec_charge_kokkos.h @@ -53,7 +53,7 @@ class AtomVecChargeKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, int pbc_flag, int *pbc, ExecutionSpace space); diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp index dfc122b1ef..5319744c22 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.cpp +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -93,7 +93,7 @@ void AtomVecDPDKokkos::grow(int n) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); } @@ -101,7 +101,7 @@ void AtomVecDPDKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecDPDKokkos::grow_reset() +void AtomVecDPDKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.h b/src/KOKKOS/atom_vec_dpd_kokkos.h index cec1b82357..e969a28cb8 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.h +++ b/src/KOKKOS/atom_vec_dpd_kokkos.h @@ -61,7 +61,7 @@ class AtomVecDPDKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, const int & iswap, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_full_kokkos.cpp b/src/KOKKOS/atom_vec_full_kokkos.cpp index b5239867fb..5d5833af07 100644 --- a/src/KOKKOS/atom_vec_full_kokkos.cpp +++ b/src/KOKKOS/atom_vec_full_kokkos.cpp @@ -123,7 +123,7 @@ void AtomVecFullKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_improper_atom4,atomKK->improper_atom4,nmax, atomKK->improper_per_atom,"atom:improper_atom4"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -135,7 +135,7 @@ void AtomVecFullKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecFullKokkos::grow_reset() +void AtomVecFullKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_full_kokkos.h b/src/KOKKOS/atom_vec_full_kokkos.h index 33760a8b5f..a2d4fa9cf4 100644 --- a/src/KOKKOS/atom_vec_full_kokkos.h +++ b/src/KOKKOS/atom_vec_full_kokkos.h @@ -52,7 +52,7 @@ class AtomVecFullKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, int pbc_flag, int *pbc, ExecutionSpace space); diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.cpp b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp index 40303051b2..8f8a0c8c00 100644 --- a/src/KOKKOS/atom_vec_hybrid_kokkos.cpp +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp @@ -163,7 +163,7 @@ void AtomVecHybridKokkos::grow(int n) // for sub-styles, do this in case // multiple sub-style reallocs of same array occurred - grow_reset(); + grow_pointers(); if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) @@ -174,7 +174,7 @@ void AtomVecHybridKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecHybridKokkos::grow_reset() +void AtomVecHybridKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; @@ -216,7 +216,7 @@ void AtomVecHybridKokkos::grow_reset() d_angmom = atomKK->k_angmom.d_view; h_angmom = atomKK->k_angmom.h_view; - for (int k = 0; k < nstyles; k++) styles[k]->grow_reset(); + for (int k = 0; k < nstyles; k++) styles[k]->grow_pointers(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.h b/src/KOKKOS/atom_vec_hybrid_kokkos.h index 4cfb186b17..02f9044d73 100644 --- a/src/KOKKOS/atom_vec_hybrid_kokkos.h +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.h @@ -36,7 +36,7 @@ class AtomVecHybridKokkos : public AtomVecKokkos { void process_args(int, char **); void init(); void grow(int); - void grow_reset(); + void grow_pointers(); void copy(int, int, int); void clear_bonus(); void force_clear(int, size_t); diff --git a/src/KOKKOS/atom_vec_kokkos.cpp b/src/KOKKOS/atom_vec_kokkos.cpp index 7d5df17544..b0fca4e316 100644 --- a/src/KOKKOS/atom_vec_kokkos.cpp +++ b/src/KOKKOS/atom_vec_kokkos.cpp @@ -16,6 +16,7 @@ #include "comm_kokkos.h" #include "domain.h" #include "atom_masks.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -992,3 +993,49 @@ void AtomVecKokkos::unpack_reverse(int n, int *list, double *buf) if(n > 0) modified(Host,F_MASK); } + +/* ---------------------------------------------------------------------- + * unpack one line from Velocities section of data file + * ------------------------------------------------------------------------- */ + +void AtomVecKokkos::data_vel(int m, char **values) +{ + double **v = atom->v; + v[m][0] = utils::numeric(FLERR,values[0],true,lmp); + v[m][1] = utils::numeric(FLERR,values[1],true,lmp); + v[m][2] = utils::numeric(FLERR,values[2],true,lmp); + + modified(Host,V_MASK); +} + +/* ---------------------------------------------------------------------- + * pack velocity info for data file + * ------------------------------------------------------------------------- */ + +void AtomVecKokkos::pack_vel(double **buf) +{ + double **v = atom->v; + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + + sync(Host,V_MASK|TAG_MASK); + + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(tag[i]).d; + buf[i][1] = v[i][0]; + buf[i][2] = v[i][1]; + buf[i][3] = v[i][2]; + } +} + +/* ---------------------------------------------------------------------- + * write velocity info to data file + * ------------------------------------------------------------------------- */ + +void AtomVecKokkos::write_vel(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++) + fprintf(fp,TAGINT_FORMAT " %-1.16e %-1.16e %-1.16e\n", + (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3]); +} + diff --git a/src/KOKKOS/atom_vec_kokkos.h b/src/KOKKOS/atom_vec_kokkos.h index 2111e73208..b93fb42e75 100644 --- a/src/KOKKOS/atom_vec_kokkos.h +++ b/src/KOKKOS/atom_vec_kokkos.h @@ -41,6 +41,9 @@ class AtomVecKokkos : public AtomVec { virtual void unpack_comm_vel(int, int, double *); virtual int pack_reverse(int, int, double *); virtual void unpack_reverse(int, int *, double *); + virtual void data_vel(int, char **); + virtual void pack_vel(double **); + virtual void write_vel(FILE *, int, double **); virtual void sync(ExecutionSpace space, unsigned int mask) = 0; virtual void modified(ExecutionSpace space, unsigned int mask) = 0; diff --git a/src/KOKKOS/atom_vec_molecular_kokkos.cpp b/src/KOKKOS/atom_vec_molecular_kokkos.cpp index fec0183971..7832d6f9b0 100644 --- a/src/KOKKOS/atom_vec_molecular_kokkos.cpp +++ b/src/KOKKOS/atom_vec_molecular_kokkos.cpp @@ -121,7 +121,7 @@ void AtomVecMolecularKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_improper_atom4,atomKK->improper_atom4,nmax, atomKK->improper_per_atom,"atom:improper_atom4"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -133,7 +133,7 @@ void AtomVecMolecularKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecMolecularKokkos::grow_reset() +void AtomVecMolecularKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_molecular_kokkos.h b/src/KOKKOS/atom_vec_molecular_kokkos.h index 06444510e0..cede4f42a8 100644 --- a/src/KOKKOS/atom_vec_molecular_kokkos.h +++ b/src/KOKKOS/atom_vec_molecular_kokkos.h @@ -58,7 +58,7 @@ class AtomVecMolecularKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, const int & iswap, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_sphere_kokkos.cpp b/src/KOKKOS/atom_vec_sphere_kokkos.cpp index 27a4bd0274..b1099d0fa6 100644 --- a/src/KOKKOS/atom_vec_sphere_kokkos.cpp +++ b/src/KOKKOS/atom_vec_sphere_kokkos.cpp @@ -119,7 +119,7 @@ void AtomVecSphereKokkos::grow(int n) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); } @@ -127,7 +127,7 @@ void AtomVecSphereKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecSphereKokkos::grow_reset() +void AtomVecSphereKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_sphere_kokkos.h b/src/KOKKOS/atom_vec_sphere_kokkos.h index 28c8a3c8f6..3f6d34e8b2 100644 --- a/src/KOKKOS/atom_vec_sphere_kokkos.h +++ b/src/KOKKOS/atom_vec_sphere_kokkos.h @@ -33,7 +33,7 @@ class AtomVecSphereKokkos : public AtomVecKokkos { ~AtomVecSphereKokkos() {} void init(); void grow(int); - void grow_reset(); + void grow_pointers(); void copy(int, int, int); int pack_comm(int, int *, double *, int, int *); int pack_comm_vel(int, int *, double *, int, int *); diff --git a/src/KOKKOS/neigh_list_kokkos.h b/src/KOKKOS/neigh_list_kokkos.h index f8195a01f4..edd775f7f9 100644 --- a/src/KOKKOS/neigh_list_kokkos.h +++ b/src/KOKKOS/neigh_list_kokkos.h @@ -31,7 +31,7 @@ class AtomNeighbors num_neighs(_num_neighs), _firstneigh(firstneigh), _stride(stride) {}; KOKKOS_INLINE_FUNCTION int& operator()(const int &i) const { - return _firstneigh[i*_stride]; + return _firstneigh[(bigint) i*_stride]; } private: @@ -51,7 +51,7 @@ class AtomNeighborsConst _firstneigh(firstneigh), num_neighs(_num_neighs), _stride(stride) {}; KOKKOS_INLINE_FUNCTION const int& operator()(const int &i) const { - return _firstneigh[i*_stride]; + return _firstneigh[(bigint) i*_stride]; } private: diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.cpp b/src/KOKKOS/pair_eam_alloy_kokkos.cpp index 1963722d86..2d0d229e00 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.cpp +++ b/src/KOKKOS/pair_eam_alloy_kokkos.cpp @@ -29,11 +29,12 @@ #include "memory_kokkos.h" #include "error.h" #include "atom_masks.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - // Cannot use virtual inheritance on the GPU, so must duplicate code /* ---------------------------------------------------------------------- */ @@ -982,94 +983,107 @@ void PairEAMAlloyKokkos::read_file(char *filename) { Setfl *file = setfl; - // open potential file + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(lmp, filename, "EAM"); - int me = comm->me; - FILE *fptr; - char line[MAXLINE]; + try { + reader.skip_line(); + reader.skip_line(); + reader.skip_line(); - if (me == 0) { - fptr = force->open_potential(filename); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EAM potential file %s",filename); - error->one(FLERR,str); + // extract element names from nelements line + ValueTokenizer values = reader.next_values(1); + file->nelements = values.next_int(); + + if (values.count() != file->nelements + 1) + error->one(FLERR,"Incorrect element names in EAM potential file"); + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + const std::string word = values.next_string(); + const int n = word.length() + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i], word.c_str()); + } + + // + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + + for (int i = 0; i < file->nelements; i++) { + values = reader.next_values(2); + values.next_int(); // ignore + file->mass[i] = values.next_double(); + + reader.next_dvector(&file->frho[i][1], file->nrho); + reader.next_dvector(&file->rhor[i][1], file->nr); + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->z2r[i][j][1], file->nr); + } + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - // read and broadcast header - // extract element names from nelements line + // broadcast potential information + MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world); - int n; - if (me == 0) { - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - n = strlen(line) + 1; + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + // allocate memory on other procs + if (comm->me != 0) { + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr; + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - sscanf(line,"%d",&file->nelements); - int nwords = atom->count_words(line); - if (nwords != file->nelements + 1) - error->all(FLERR,"Incorrect element names in EAM potential file"); - - char **words = new char*[file->nelements+1]; - nwords = 0; - strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - file->elements = new char*[file->nelements]; + // broadcast file->elements string array for (int i = 0; i < file->nelements; i++) { - n = strlen(words[i]) + 1; - file->elements[i] = new char[n]; - strcpy(file->elements[i],words[i]); - } - delete [] words; - - if (me == 0) { - fgets(line,MAXLINE,fptr); - sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + int n; + if (comm->me == 0) n = strlen(file->elements[i]) + 1; + MPI_Bcast(&n, 1, MPI_INT, 0, world); + if (comm->me != 0) file->elements[i] = new char[n]; + MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world); } - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + // broadcast file->mass, frho, rhor + for (int i = 0; i < file->nelements; i++) { + MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->rhor[i][1], file->nr, MPI_DOUBLE, 0, world); + } - file->mass = new double[file->nelements]; - memory->create(file->frho,file->nelements,file->nrho+1,"pair:frho"); - memory->create(file->rhor,file->nelements,file->nr+1,"pair:rhor"); - memory->create(file->z2r,file->nelements,file->nelements,file->nr+1, - "pair:z2r"); - - int i,j,tmp; - for (i = 0; i < file->nelements; i++) { - if (me == 0) { - fgets(line,MAXLINE,fptr); - sscanf(line,"%d %lg",&tmp,&file->mass[i]); + // broadcast file->z2r + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world); } - MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); - MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); - if (me == 0) grab(fptr,file->nr,&file->rhor[i][1]); - MPI_Bcast(&file->rhor[i][1],file->nr,MPI_DOUBLE,0,world); } - - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); - MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); - } - - // close the potential file - - if (me == 0) fclose(fptr); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_eam_fs_kokkos.cpp b/src/KOKKOS/pair_eam_fs_kokkos.cpp index a33923887b..8b1e6b348a 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.cpp +++ b/src/KOKKOS/pair_eam_fs_kokkos.cpp @@ -29,11 +29,12 @@ #include "memory_kokkos.h" #include "error.h" #include "atom_masks.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - // Cannot use virtual inheritance on the GPU, so must duplicate code /* ---------------------------------------------------------------------- */ @@ -982,99 +983,113 @@ void PairEAMFSKokkos::read_file(char *filename) { Fs *file = fs; - // open potential file + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(lmp, filename, "EAM"); - int me = comm->me; - FILE *fptr; - char line[MAXLINE]; + try { + reader.skip_line(); + reader.skip_line(); + reader.skip_line(); - if (me == 0) { - fptr = force->open_potential(filename); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EAM potential file %s",filename); - error->one(FLERR,str); + // extract element names from nelements line + ValueTokenizer values = reader.next_values(1); + file->nelements = values.next_int(); + + if (values.count() != file->nelements + 1) + error->one(FLERR,"Incorrect element names in EAM potential file"); + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + const std::string word = values.next_string(); + const int n = word.length() + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i], word.c_str()); + } + + // + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + + for (int i = 0; i < file->nelements; i++) { + values = reader.next_values(2); + values.next_int(); // ignore + file->mass[i] = values.next_double(); + + reader.next_dvector(&file->frho[i][1], file->nrho); + + for (int j = 0; j < file->nelements; j++) { + reader.next_dvector(&file->rhor[i][j][1], file->nr); + } + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->z2r[i][j][1], file->nr); + } + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - // read and broadcast header - // extract element names from nelements line + // broadcast potential information + MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world); - int n; - if (me == 0) { - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - n = strlen(line) + 1; + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + // allocate memory on other procs + if (comm->me != 0) { + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr; + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - sscanf(line,"%d",&file->nelements); - int nwords = atom->count_words(line); - if (nwords != file->nelements + 1) - error->all(FLERR,"Incorrect element names in EAM potential file"); - - char **words = new char*[file->nelements+1]; - nwords = 0; - strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - file->elements = new char*[file->nelements]; + // broadcast file->elements string array for (int i = 0; i < file->nelements; i++) { - n = strlen(words[i]) + 1; - file->elements[i] = new char[n]; - strcpy(file->elements[i],words[i]); - } - delete [] words; - - if (me == 0) { - fgets(line,MAXLINE,fptr); - sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + int n; + if (comm->me == 0) n = strlen(file->elements[i]) + 1; + MPI_Bcast(&n, 1, MPI_INT, 0, world); + if (comm->me != 0) file->elements[i] = new char[n]; + MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world); } - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + // broadcast file->mass, frho, rhor + for (int i = 0; i < file->nelements; i++) { + MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world); - file->mass = new double[file->nelements]; - memory->create(file->frho,file->nelements,file->nrho+1, - "pair:frho"); - memory->create(file->rhor,file->nelements,file->nelements, - file->nr+1,"pair:rhor"); - memory->create(file->z2r,file->nelements,file->nelements, - file->nr+1,"pair:z2r"); - - int i,j,tmp; - for (i = 0; i < file->nelements; i++) { - if (me == 0) { - fgets(line,MAXLINE,fptr); - sscanf(line,"%d %lg",&tmp,&file->mass[i]); - } - MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); - MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); - - for (j = 0; j < file->nelements; j++) { - if (me == 0) grab(fptr,file->nr,&file->rhor[i][j][1]); - MPI_Bcast(&file->rhor[i][j][1],file->nr,MPI_DOUBLE,0,world); + for (int j = 0; j < file->nelements; j++) { + MPI_Bcast(&file->rhor[i][j][1], file->nr, MPI_DOUBLE, 0, world); } } - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); - MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); + // broadcast file->z2r + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world); } - - // close the potential file - - if (me == 0) fclose(fptr); + } } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index a64df08127..8c98e32d5b 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -32,6 +32,7 @@ #include "neigh_request.h" #include "atom_kokkos.h" #include "kokkos.h" +#include "utils.h" #ifdef _OPENMP #include @@ -1752,7 +1753,7 @@ void PairExp6rxKokkos::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -1771,7 +1772,7 @@ void PairExp6rxKokkos::read_file(char *file) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index c28c858113..2934ddf621 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -51,7 +51,8 @@ struct DoCoul<1> { //Specialisation for Neighborlist types Half, HalfThread, Full template -struct PairComputeFunctor { +class PairComputeFunctor { + public: typedef typename PairStyle::device_type device_type ; typedef ArrayTypes AT; diff --git a/src/KOKKOS/pair_snap_kokkos.h b/src/KOKKOS/pair_snap_kokkos.h index f5e5c63454..d6b028640d 100644 --- a/src/KOKKOS/pair_snap_kokkos.h +++ b/src/KOKKOS/pair_snap_kokkos.h @@ -112,7 +112,7 @@ public: void operator() (TagPairSNAPComputeDeidrjCPU,const typename Kokkos::TeamPolicy::member_type& team) const; KOKKOS_INLINE_FUNCTION - void operator() (TagPairSNAPBeta,const typename Kokkos::TeamPolicy::member_type& team) const; + void operator() (TagPairSNAPBeta,const int& ii) const; template KOKKOS_INLINE_FUNCTION diff --git a/src/KOKKOS/pair_snap_kokkos_impl.h b/src/KOKKOS/pair_snap_kokkos_impl.h index e838b6a070..ad1f8e9f57 100644 --- a/src/KOKKOS/pair_snap_kokkos_impl.h +++ b/src/KOKKOS/pair_snap_kokkos_impl.h @@ -284,13 +284,8 @@ void PairSNAPKokkos::compute(int eflag_in, int vflag_in) } //Compute beta = dE_i/dB_i for all i in list - { - int vector_length = vector_length_default; - int team_size = team_size_default; - check_team_size_for(chunk_size,team_size,vector_length); - typename Kokkos::TeamPolicy policy_beta(chunk_size,team_size,vector_length); - Kokkos::parallel_for("ComputeBeta",policy_beta,*this); - } + typename Kokkos::RangePolicy policy_beta(0,chunk_size); + Kokkos::parallel_for("ComputeBeta",policy_beta,*this); //ZeroYi { @@ -424,10 +419,8 @@ void PairSNAPKokkos::compute(int eflag_in, int vflag_in) template KOKKOS_INLINE_FUNCTION -void PairSNAPKokkos::operator() (TagPairSNAPBeta,const typename Kokkos::TeamPolicy::member_type& team) const { +void PairSNAPKokkos::operator() (TagPairSNAPBeta,const int& ii) const { - // TODO: use RangePolicy instead, or thread over ncoeff? - int ii = team.league_rank(); const int i = d_ilist[ii + chunk_offset]; const int itype = type[i]; const int ielem = d_map[itype]; diff --git a/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp b/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp index 0371ac42c5..36d8126eec 100644 --- a/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp +++ b/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp @@ -739,37 +739,18 @@ void PairLJCharmmfswCoulLong::init_style() int irequest; + int respa = 0; if (update->whichflag == 1 && strstr(update->integrate_style,"respa")) { - int respa = 0; if (((Respa *) update->integrate)->level_inner >= 0) respa = 1; if (((Respa *) update->integrate)->level_middle >= 0) respa = 2; + } - if (respa == 0) irequest = neighbor->request(this,instance_me); - else if (respa == 1) { - irequest = neighbor->request(this,instance_me); - neighbor->requests[irequest]->id = 1; - neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->respainner = 1; - irequest = neighbor->request(this,instance_me); - neighbor->requests[irequest]->id = 3; - neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->respaouter = 1; - } else { - irequest = neighbor->request(this,instance_me); - neighbor->requests[irequest]->id = 1; - neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->respainner = 1; - irequest = neighbor->request(this,instance_me); - neighbor->requests[irequest]->id = 2; - neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->respamiddle = 1; - irequest = neighbor->request(this,instance_me); - neighbor->requests[irequest]->id = 3; - neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->respaouter = 1; - } - - } else irequest = neighbor->request(this,instance_me); + irequest = neighbor->request(this,instance_me); + if (respa >= 1) { + neighbor->requests[irequest]->respaouter = 1; + neighbor->requests[irequest]->respainner = 1; + } + if (respa == 2) neighbor->requests[irequest]->respamiddle = 1; // require cut_lj_inner < cut_lj diff --git a/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl b/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl index 07dedba32a..ead00277c6 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl @@ -93,6 +93,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl b/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl index d415f69397..44c83ff1e0 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl b/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl index b75d9ee06a..4174c9c5e7 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl @@ -93,6 +93,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl b/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl index 73cd0d6bed..5cb6fa0cde 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.astra_arm b/src/MAKE/MACHINES/Makefile.astra_arm index 3ea3e00935..f64f4da891 100644 --- a/src/MAKE/MACHINES/Makefile.astra_arm +++ b/src/MAKE/MACHINES/Makefile.astra_arm @@ -91,6 +91,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.astra_gcc b/src/MAKE/MACHINES/Makefile.astra_gcc index d607fbec84..e67bf467c4 100644 --- a/src/MAKE/MACHINES/Makefile.astra_gcc +++ b/src/MAKE/MACHINES/Makefile.astra_gcc @@ -91,6 +91,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.beacon b/src/MAKE/MACHINES/Makefile.beacon deleted file mode 100644 index 87ef35b248..0000000000 --- a/src/MAKE/MACHINES/Makefile.beacon +++ /dev/null @@ -1,119 +0,0 @@ -# beacon = RedHat Linux box, Intel icc, MPICH2, FFTW - -SHELL = /bin/sh - -# --------------------------------------------------------------------- -# compiler/linker settings -# specify flags and libraries needed for your compiler - -CC = mpiicpc -openmp -DLMP_INTEL_OFFLOAD -DLAMMPS_MEMALIGN=64 -MIC_OPT = -offload-option,mic,compiler,"-fp-model fast=2 -mGLOB_default_function_attrs=\"gather_scatter_loop_unroll=4\"" -CCFLAGS = -O3 -xAVX -fno-alias -ansi-alias -restrict -override-limits $(MIC_OPT) -SHFLAGS = -fPIC -DEPFLAGS = -M - -LINK = mpiicpc -openmp -LINKFLAGS = -O3 -xAVX -LIB = -ltbbmalloc -SIZE = size - -ARCHIVE = ar -ARFLAGS = -rc -SHLIBFLAGS = -shared - -# --------------------------------------------------------------------- -# LAMMPS-specific settings, all OPTIONAL -# specify settings for LAMMPS features you will use -# if you change any -D setting, do full re-compile after "make clean" - -# LAMMPS ifdef settings -# see possible settings in Section 3.5 of the manual - -LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG - -# MPI library -# see discussion in Section 3.4 of the manual -# MPI wrapper compiler/linker can provide this info -# can point to dummy MPI library in src/STUBS as in Makefile.serial -# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts -# INC = path for mpi.h, MPI compiler settings -# PATH = path for MPI library -# LIB = name of MPI library - -MPI_INC = -DMPICH_SKIP_MPICXX -MPI_PATH = -MPI_LIB = - -# FFT library -# see discussion in Section 3.5.2 of manual -# can be left blank to use provided KISS FFT library -# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings -# PATH = path for FFT library -# LIB = name of FFT library - -FFT_INC = -DFFT_MKL -DFFT_SINGLE -I$(MKLROOT) -FFT_PATH = -FFT_LIB = -L$(MKLROOT) -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core - -# JPEG and/or PNG library -# see discussion in Section 3.5.4 of manual -# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC -# INC = path(s) for jpeglib.h and/or png.h -# PATH = path(s) for JPEG library and/or PNG library -# LIB = name(s) of JPEG library and/or PNG library - -JPG_INC = -JPG_PATH = -JPG_LIB = -ljpeg - -# --------------------------------------------------------------------- -# build rules and dependencies -# do not edit this section - -include Makefile.package.settings -include Makefile.package - -EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) -EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) -EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) -EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) -EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) - -# Path to src files - -vpath %.cpp .. -vpath %.h .. - -# Link target - -$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ - $(SIZE) $@ - -# Library targets - -$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) - @rm -f $(ARLIB) - @ln -s ../$(ARLIB) $(ARLIB) - -$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ - $(OBJ) $(EXTRA_LIB) $(LIB) - @rm -f $(SHLIB) - @ln -s ../$(SHLIB) $(SHLIB) - -# Compilation rules - -%.o:%.cpp - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -# Individual dependencies - -depend : fastdep.exe $(SRC) - @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 - -fastdep.exe: ../DEPEND/fastdep.c - cc -O -o $@ $< - -sinclude .depend diff --git a/src/MAKE/MACHINES/Makefile.bgl b/src/MAKE/MACHINES/Makefile.bgl index 06d243e83a..170b18d173 100644 --- a/src/MAKE/MACHINES/Makefile.bgl +++ b/src/MAKE/MACHINES/Makefile.bgl @@ -98,6 +98,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.bgq b/src/MAKE/MACHINES/Makefile.bgq index 3d8ea41f5f..f0401e0758 100644 --- a/src/MAKE/MACHINES/Makefile.bgq +++ b/src/MAKE/MACHINES/Makefile.bgq @@ -33,6 +33,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.chama b/src/MAKE/MACHINES/Makefile.chama index a8a9cebfdb..ba6dceba58 100644 --- a/src/MAKE/MACHINES/Makefile.chama +++ b/src/MAKE/MACHINES/Makefile.chama @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.cori2 b/src/MAKE/MACHINES/Makefile.cori2 index 86d38d7726..ca902617fd 100644 --- a/src/MAKE/MACHINES/Makefile.cori2 +++ b/src/MAKE/MACHINES/Makefile.cori2 @@ -13,9 +13,9 @@ SHELL = /bin/sh # compiler/linker settings # specify flags and libraries needed for your compiler -CC = CC +CC = CC -std=c++11 OPTFLAGS = -xMIC-AVX512 -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -CCFLAGS = -qopenmp -qno-offload -fno-alias -ansi-alias -restrict \ +CCFLAGS = -qopenmp -qno-offload -ansi-alias -restrict \ -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG -DLMP_INTEL_NO_TBB \ $(OPTFLAGS) SHFLAGS = -fPIC @@ -85,6 +85,8 @@ include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) +EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) # Path to src files @@ -100,6 +102,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.cygwin b/src/MAKE/MACHINES/Makefile.cygwin index 5cd6e79b69..4c47860a56 100644 --- a/src/MAKE/MACHINES/Makefile.cygwin +++ b/src/MAKE/MACHINES/Makefile.cygwin @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.glory b/src/MAKE/MACHINES/Makefile.glory index a128f88515..d21fe668ec 100644 --- a/src/MAKE/MACHINES/Makefile.glory +++ b/src/MAKE/MACHINES/Makefile.glory @@ -109,6 +109,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.icex b/src/MAKE/MACHINES/Makefile.icex index 6c3db3fb43..dc2019a8f4 100644 --- a/src/MAKE/MACHINES/Makefile.icex +++ b/src/MAKE/MACHINES/Makefile.icex @@ -94,6 +94,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.jaguar b/src/MAKE/MACHINES/Makefile.jaguar deleted file mode 100644 index 4a78205c61..0000000000 --- a/src/MAKE/MACHINES/Makefile.jaguar +++ /dev/null @@ -1,118 +0,0 @@ -# jaguar = ORNL Jaguar Cray XT5, CC, native MPICH, FFTW - -SHELL = /bin/sh - -# --------------------------------------------------------------------- -# compiler/linker settings -# specify flags and libraries needed for your compiler - -CXX = CC -CCFLAGS = -g -O -SHFLAGS = -fPIC -DEPFLAGS = -M - -LINK = $(CXX) -LINKFLAGS = -g -O -LIB = -SIZE = size - -ARCHIVE = ar -ARFLAGS = -rc -SHLIBFLAGS = -shared - -# --------------------------------------------------------------------- -# LAMMPS-specific settings, all OPTIONAL -# specify settings for LAMMPS features you will use -# if you change any -D setting, do full re-compile after "make clean" - -# LAMMPS ifdef settings -# see possible settings in Section 3.5 of the manual - -LMP_INC = -DLAMMPS_GZIP -DNODE_PARTITION - -# MPI library -# see discussion in Section 3.4 of the manual -# MPI wrapper compiler/linker can provide this info -# can point to dummy MPI library in src/STUBS as in Makefile.serial -# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts -# INC = path for mpi.h, MPI compiler settings -# PATH = path for MPI library -# LIB = name of MPI library - -MPI_INC = -DMPICH_SKIP_MPICXX -MPI_PATH = -MPI_LIB = -lmpich -lpthread - -# FFT library -# see discussion in Section 3.5.2 of manual -# can be left blank to use provided KISS FFT library -# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings -# PATH = path for FFT library -# LIB = name of FFT library - -FFT_INC = -DFFT_FFTW3 -I$(FFTW_INC) -FFT_PATH = -L$(FFTW_DIR) -FFT_LIB = -lfftw3 - -# JPEG and/or PNG library -# see discussion in Section 3.5.4 of manual -# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC -# INC = path(s) for jpeglib.h and/or png.h -# PATH = path(s) for JPEG library and/or PNG library -# LIB = name(s) of JPEG library and/or PNG library - -JPG_INC = -JPG_PATH = -JPG_LIB = - -# --------------------------------------------------------------------- -# build rules and dependencies -# do not edit this section - -include Makefile.package.settings -include Makefile.package - -EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) -EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) -EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) -EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) -EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) - -# Path to src files - -vpath %.cpp .. -vpath %.h .. - -# Link target - -$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ - $(SIZE) $@ - -# Library targets - -$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) - @rm -f $(ARLIB) - @ln -s ../$(ARLIB) $(ARLIB) - -$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ - $(OBJ) $(EXTRA_LIB) $(LIB) - @rm -f $(SHLIB) - @ln -s ../$(SHLIB) $(SHLIB) - -# Compilation rules - -%.o:%.cpp - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -# Individual dependencies - -depend : fastdep.exe $(SRC) - @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 - -fastdep.exe: ../DEPEND/fastdep.c - cc -O -o $@ $< - -sinclude .depend diff --git a/src/MAKE/MACHINES/Makefile.mac b/src/MAKE/MACHINES/Makefile.mac index 1bbd805c65..67381fe622 100644 --- a/src/MAKE/MACHINES/Makefile.mac +++ b/src/MAKE/MACHINES/Makefile.mac @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.mac_mpi b/src/MAKE/MACHINES/Makefile.mac_mpi index 7c4fa6aa6d..0b6b4b5ba2 100644 --- a/src/MAKE/MACHINES/Makefile.mac_mpi +++ b/src/MAKE/MACHINES/Makefile.mac_mpi @@ -93,6 +93,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.mingw32-cross b/src/MAKE/MACHINES/Makefile.mingw32-cross index c463d7df26..d1269668fd 100644 --- a/src/MAKE/MACHINES/Makefile.mingw32-cross +++ b/src/MAKE/MACHINES/Makefile.mingw32-cross @@ -97,6 +97,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi b/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi index 7badd3bb79..6b8e4bdee5 100644 --- a/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi +++ b/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi @@ -97,6 +97,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.mingw64-cross b/src/MAKE/MACHINES/Makefile.mingw64-cross index 66de4dedaf..bf3416de6a 100644 --- a/src/MAKE/MACHINES/Makefile.mingw64-cross +++ b/src/MAKE/MACHINES/Makefile.mingw64-cross @@ -97,6 +97,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi b/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi index 40c52b6a73..7d80d2c4e1 100644 --- a/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi +++ b/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi @@ -97,6 +97,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.myrinet b/src/MAKE/MACHINES/Makefile.myrinet index 82030fbeae..a74aee3eaf 100644 --- a/src/MAKE/MACHINES/Makefile.myrinet +++ b/src/MAKE/MACHINES/Makefile.myrinet @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.power b/src/MAKE/MACHINES/Makefile.power index d4d0f67fa5..1671fd6273 100644 --- a/src/MAKE/MACHINES/Makefile.power +++ b/src/MAKE/MACHINES/Makefile.power @@ -93,6 +93,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.redsky b/src/MAKE/MACHINES/Makefile.redsky index 461139e2e9..7f8456284e 100644 --- a/src/MAKE/MACHINES/Makefile.redsky +++ b/src/MAKE/MACHINES/Makefile.redsky @@ -112,6 +112,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.stampede b/src/MAKE/MACHINES/Makefile.stampede deleted file mode 100644 index 5966907d44..0000000000 --- a/src/MAKE/MACHINES/Makefile.stampede +++ /dev/null @@ -1,119 +0,0 @@ -# stampede = Intel Compiler, MKL FFT, Offload to Xeon Phi - -SHELL = /bin/sh - -# --------------------------------------------------------------------- -# compiler/linker settings -# specify flags and libraries needed for your compiler - -CC = mpicc -qopenmp -DLMP_INTEL_OFFLOAD -DLAMMPS_MEMALIGN=64 -MIC_OPT = -qoffload-option,mic,compiler,"-fp-model fast=2 -mGLOB_default_function_attrs=\"gather_scatter_loop_unroll=4\"" -CCFLAGS = -O3 -xhost -fp-model precise -restrict -qoverride-limits $(MIC_OPT) -SHFLAGS = -fPIC -DEPFLAGS = -M - -LINK = mpicc -qopenmp -LINKFLAGS = -O3 -xhost -LIB = -ltbbmalloc -SIZE = size - -ARCHIVE = ar -ARFLAGS = -rc -SHLIBFLAGS = -shared - -# --------------------------------------------------------------------- -# LAMMPS-specific settings, all OPTIONAL -# specify settings for LAMMPS features you will use -# if you change any -D setting, do full re-compile after "make clean" - -# LAMMPS ifdef settings -# see possible settings in Section 3.5 of the manual - -LMP_INC = -DLAMMPS_GZIP - -# MPI library -# see discussion in Section 3.4 of the manual -# MPI wrapper compiler/linker can provide this info -# can point to dummy MPI library in src/STUBS as in Makefile.serial -# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts -# INC = path for mpi.h, MPI compiler settings -# PATH = path for MPI library -# LIB = name of MPI library - -MPI_INC = -DMPICH_SKIP_MPICXX -MPI_PATH = -MPI_LIB = - -# FFT library -# see discussion in Section 3.5.2 of manual -# can be left blank to use provided KISS FFT library -# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings -# PATH = path for FFT library -# LIB = name of FFT library - -FFT_INC = -DFFT_MKL -I$(TACC_MKL_INC) -FFT_PATH = -FFT_LIB = -L$(TACC_MKL_LIB) -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core - -# JPEG and/or PNG library -# see discussion in Section 3.5.4 of manual -# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC -# INC = path(s) for jpeglib.h and/or png.h -# PATH = path(s) for JPEG library and/or PNG library -# LIB = name(s) of JPEG library and/or PNG library - -JPG_INC = -JPG_PATH = -JPG_LIB = -ljpeg - -# --------------------------------------------------------------------- -# build rules and dependencies -# do not edit this section - -include Makefile.package.settings -include Makefile.package - -EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) -EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) -EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) -EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) -EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) - -# Path to src files - -vpath %.cpp .. -vpath %.h .. - -# Link target - -$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ - $(SIZE) $@ - -# Library targets - -$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) - @rm -f $(ARLIB) - @ln -s ../$(ARLIB) $(ARLIB) - -$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ - $(OBJ) $(EXTRA_LIB) $(LIB) - @rm -f $(SHLIB) - @ln -s ../$(SHLIB) $(SHLIB) - -# Compilation rules - -%.o:%.cpp - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -# Individual dependencies - -depend : fastdep.exe $(SRC) - @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 - -fastdep.exe: ../DEPEND/fastdep.c - cc -O -o $@ $< - -sinclude .depend diff --git a/src/MAKE/MACHINES/Makefile.storm b/src/MAKE/MACHINES/Makefile.storm index 3178d840e9..55c92c9e9e 100644 --- a/src/MAKE/MACHINES/Makefile.storm +++ b/src/MAKE/MACHINES/Makefile.storm @@ -93,6 +93,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.lassen_kokkos b/src/MAKE/MACHINES/Makefile.summit_kokkos similarity index 94% rename from src/MAKE/MACHINES/Makefile.lassen_kokkos rename to src/MAKE/MACHINES/Makefile.summit_kokkos index 982d53933e..95ee7e39a8 100644 --- a/src/MAKE/MACHINES/Makefile.lassen_kokkos +++ b/src/MAKE/MACHINES/Makefile.summit_kokkos @@ -1,4 +1,4 @@ -# lassen_kokkos = KOKKOS/CUDA, V100 GPU and Power9, IBM Spectrum MPI, nvcc compiler with gcc +# summit_kokkos = KOKKOS/CUDA, V100 GPU and Power9, IBM Spectrum MPI, nvcc compiler with gcc SHELL = /bin/sh @@ -7,8 +7,7 @@ SHELL = /bin/sh # specify flags and libraries needed for your compiler KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd) -export MPICH_CXX = $(KOKKOS_ABSOLUTE_PATH)/bin/nvcc_wrapper -export OMPI_CXX = $(KOKKOS_ABSOLUTE_PATH)/bin/nvcc_wrapper + CC = $(KOKKOS_ABSOLUTE_PATH)/bin/nvcc_wrapper CCFLAGS = -g -O3 SHFLAGS = -fPIC @@ -100,6 +99,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.tacc b/src/MAKE/MACHINES/Makefile.tacc index 2cf263a8db..5a6f7d6a27 100644 --- a/src/MAKE/MACHINES/Makefile.tacc +++ b/src/MAKE/MACHINES/Makefile.tacc @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.theta b/src/MAKE/MACHINES/Makefile.theta index 52f8260711..62e125152d 100644 --- a/src/MAKE/MACHINES/Makefile.theta +++ b/src/MAKE/MACHINES/Makefile.theta @@ -9,8 +9,8 @@ SHELL = /bin/sh CC = CC -mkl OPTFLAGS = -xMIC-AVX512 -O3 -fp-model fast=2 -no-prec-div -qoverride-limits -CCFLAGS = -g -qopenmp -DLAMMPS_MEMALIGN=64 -qno-offload \ - -fno-alias -ansi-alias -restrict $(OPTFLAGS) +CCFLAGS = -g -qopenmp -qno-offload -ansi-alias -restrict \ + -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG $(OPTFLAGS) CCFLAGS += -std=c++11 SHFLAGS = -fPIC DEPFLAGS = -M @@ -97,6 +97,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.ubuntu b/src/MAKE/MACHINES/Makefile.ubuntu index 2764f457a7..6c419ffdfa 100644 --- a/src/MAKE/MACHINES/Makefile.ubuntu +++ b/src/MAKE/MACHINES/Makefile.ubuntu @@ -96,6 +96,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.ubuntu_simple b/src/MAKE/MACHINES/Makefile.ubuntu_simple index e162830ec5..98897f964f 100644 --- a/src/MAKE/MACHINES/Makefile.ubuntu_simple +++ b/src/MAKE/MACHINES/Makefile.ubuntu_simple @@ -95,6 +95,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.white b/src/MAKE/MACHINES/Makefile.white index b07e14a30e..ff2103008c 100644 --- a/src/MAKE/MACHINES/Makefile.white +++ b/src/MAKE/MACHINES/Makefile.white @@ -96,6 +96,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.xe6 b/src/MAKE/MACHINES/Makefile.xe6 index 0971965bbf..a6db78a053 100644 --- a/src/MAKE/MACHINES/Makefile.xe6 +++ b/src/MAKE/MACHINES/Makefile.xe6 @@ -93,6 +93,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.xt3 b/src/MAKE/MACHINES/Makefile.xt3 index 5752e61692..a6ffe94ddd 100644 --- a/src/MAKE/MACHINES/Makefile.xt3 +++ b/src/MAKE/MACHINES/Makefile.xt3 @@ -94,6 +94,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/MACHINES/Makefile.xt5 b/src/MAKE/MACHINES/Makefile.xt5 index 9c4cbe6ee6..1a85e40333 100644 --- a/src/MAKE/MACHINES/Makefile.xt5 +++ b/src/MAKE/MACHINES/Makefile.xt5 @@ -93,6 +93,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/Makefile.mpi b/src/MAKE/Makefile.mpi index b79cfbb3fd..db134de68a 100644 --- a/src/MAKE/Makefile.mpi +++ b/src/MAKE/Makefile.mpi @@ -7,7 +7,7 @@ SHELL = /bin/sh # specify flags and libraries needed for your compiler CC = mpicxx -CCFLAGS = -g -O3 +CCFLAGS = -g -O3 SHFLAGS = -fPIC DEPFLAGS = -M @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/Makefile.serial b/src/MAKE/Makefile.serial index 01a160df33..a0b2959c4b 100644 --- a/src/MAKE/Makefile.serial +++ b/src/MAKE/Makefile.serial @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.big b/src/MAKE/OPTIONS/Makefile.big index 56b0c48249..bdc093c6ae 100644 --- a/src/MAKE/OPTIONS/Makefile.big +++ b/src/MAKE/OPTIONS/Makefile.big @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.fftw b/src/MAKE/OPTIONS/Makefile.fftw index 1abb96f6dd..dd539fb5dc 100644 --- a/src/MAKE/OPTIONS/Makefile.fftw +++ b/src/MAKE/OPTIONS/Makefile.fftw @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.g++_mpich b/src/MAKE/OPTIONS/Makefile.g++_mpich index fa30f64f0b..4ea855cfeb 100644 --- a/src/MAKE/OPTIONS/Makefile.g++_mpich +++ b/src/MAKE/OPTIONS/Makefile.g++_mpich @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.g++_mpich_link b/src/MAKE/OPTIONS/Makefile.g++_mpich_link index 42d66b2317..7b92a3e77a 100644 --- a/src/MAKE/OPTIONS/Makefile.g++_mpich_link +++ b/src/MAKE/OPTIONS/Makefile.g++_mpich_link @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.g++_openmpi b/src/MAKE/OPTIONS/Makefile.g++_openmpi index f52aa49ad7..548994f832 100644 --- a/src/MAKE/OPTIONS/Makefile.g++_openmpi +++ b/src/MAKE/OPTIONS/Makefile.g++_openmpi @@ -93,6 +93,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.g++_openmpi_link b/src/MAKE/OPTIONS/Makefile.g++_openmpi_link index 0aaa8bbede..6fc71fe2a5 100644 --- a/src/MAKE/OPTIONS/Makefile.g++_openmpi_link +++ b/src/MAKE/OPTIONS/Makefile.g++_openmpi_link @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.g++_serial b/src/MAKE/OPTIONS/Makefile.g++_serial index 93e1c502d9..65de6a2c2c 100644 --- a/src/MAKE/OPTIONS/Makefile.g++_serial +++ b/src/MAKE/OPTIONS/Makefile.g++_serial @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.gpu b/src/MAKE/OPTIONS/Makefile.gpu index 7cec50fbd8..26c98c120d 100644 --- a/src/MAKE/OPTIONS/Makefile.gpu +++ b/src/MAKE/OPTIONS/Makefile.gpu @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.hip b/src/MAKE/OPTIONS/Makefile.hip index 062b92fb6d..8be9e7260f 100644 --- a/src/MAKE/OPTIONS/Makefile.hip +++ b/src/MAKE/OPTIONS/Makefile.hip @@ -98,6 +98,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.icc_mpich b/src/MAKE/OPTIONS/Makefile.icc_mpich index 81256f85b6..cf76506da5 100644 --- a/src/MAKE/OPTIONS/Makefile.icc_mpich +++ b/src/MAKE/OPTIONS/Makefile.icc_mpich @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.icc_mpich_link b/src/MAKE/OPTIONS/Makefile.icc_mpich_link index 5a8ae8b228..3994968430 100644 --- a/src/MAKE/OPTIONS/Makefile.icc_mpich_link +++ b/src/MAKE/OPTIONS/Makefile.icc_mpich_link @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.icc_openmpi b/src/MAKE/OPTIONS/Makefile.icc_openmpi index 1ed258e717..72e3d44093 100644 --- a/src/MAKE/OPTIONS/Makefile.icc_openmpi +++ b/src/MAKE/OPTIONS/Makefile.icc_openmpi @@ -93,6 +93,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.icc_openmpi_link b/src/MAKE/OPTIONS/Makefile.icc_openmpi_link index 33a5c529b8..e44486aeb5 100644 --- a/src/MAKE/OPTIONS/Makefile.icc_openmpi_link +++ b/src/MAKE/OPTIONS/Makefile.icc_openmpi_link @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.icc_serial b/src/MAKE/OPTIONS/Makefile.icc_serial index 6880e9e2dc..a81c73c718 100644 --- a/src/MAKE/OPTIONS/Makefile.icc_serial +++ b/src/MAKE/OPTIONS/Makefile.icc_serial @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.intel_coprocessor b/src/MAKE/OPTIONS/Makefile.intel_coprocessor index 7964b1303e..b11256baa1 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_coprocessor +++ b/src/MAKE/OPTIONS/Makefile.intel_coprocessor @@ -8,15 +8,17 @@ SHELL = /bin/sh CC = mpiicpc -std=c++11 MIC_OPT = -qoffload-option,mic,compiler,"-fp-model fast=2 -mGLOB_default_function_attrs=\"gather_scatter_loop_unroll=4\"" -CCFLAGS = -g -O3 -qopenmp -DLMP_INTEL_OFFLOAD -DLAMMPS_MEMALIGN=64 \ - -xHost -fno-alias -ansi-alias -restrict -DLMP_INTEL_USELRT \ - -qoverride-limits $(MIC_OPT) -DLMP_USE_MKL_RNG +OPTFLAGS = -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits \ + -qopt-zmm-usage=high $(MIC_OPT) +CCFLAGS = -qopenmp -qoffload -ansi-alias -restrict \ + -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG -DLMP_INTEL_OFFLOAD \ + $(OPTFLAGS) -I$(MKLROOT)/include SHFLAGS = -fPIC DEPFLAGS = -M LINK = mpiicpc -std=c++11 -LINKFLAGS = -g -O3 -xHost -qopenmp -qoffload -LIB = -ltbbmalloc +LINKFLAGS = -O2 -xHost -qopenmp -qoffload -L$(MKLROOT)/lib/intel64/ +LIB = -ltbbmalloc -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core SIZE = size ARCHIVE = ar @@ -31,7 +33,7 @@ SHLIBFLAGS = -shared # LAMMPS ifdef settings # see possible settings in Section 3.5 of the manual -LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG +LMP_INC = -DLAMMPS_GZIP # MPI library # see discussion in Section 3.4 of the manual @@ -55,7 +57,7 @@ MPI_LIB = FFT_INC = -DFFT_MKL -DFFT_SINGLE FFT_PATH = -FFT_LIB = -L$(MKLROOT)/lib/intel64/ -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core +FFT_LIB = # JPEG and/or PNG library # see discussion in Section 3.5.4 of manual @@ -66,7 +68,7 @@ FFT_LIB = -L$(MKLROOT)/lib/intel64/ -lmkl_intel_ilp64 -lmkl_sequential -lmkl_cor JPG_INC = JPG_PATH = -JPG_LIB = -ljpeg +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies @@ -95,6 +97,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu b/src/MAKE/OPTIONS/Makefile.intel_cpu deleted file mode 100644 index 8d887a0d7b..0000000000 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu +++ /dev/null @@ -1,122 +0,0 @@ -# intel_cpu = USER-INTEL package, Intel MPI, MKL FFT - -SHELL = /bin/sh - -# --------------------------------------------------------------------- -# compiler/linker settings -# specify flags and libraries needed for your compiler - -CC = mpiicpc -std=c++11 -OPTFLAGS = -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits \ - -qopt-zmm-usage=high -CCFLAGS = -qopenmp -qno-offload -ansi-alias -restrict \ - -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG $(OPTFLAGS) \ - -I$(MKLROOT)/include -SHFLAGS = -fPIC -DEPFLAGS = -M - -LINK = mpiicpc -std=c++11 -LINKFLAGS = -qopenmp $(OPTFLAGS) -L$(MKLROOT)/lib/intel64/ -LIB = -ltbbmalloc -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -SIZE = size - -ARCHIVE = ar -ARFLAGS = -rc -SHLIBFLAGS = -shared - -# --------------------------------------------------------------------- -# LAMMPS-specific settings, all OPTIONAL -# specify settings for LAMMPS features you will use -# if you change any -D setting, do full re-compile after "make clean" - -# LAMMPS ifdef settings -# see possible settings in Section 3.5 of the manual - -LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG - -# MPI library -# see discussion in Section 3.4 of the manual -# MPI wrapper compiler/linker can provide this info -# can point to dummy MPI library in src/STUBS as in Makefile.serial -# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts -# INC = path for mpi.h, MPI compiler settings -# PATH = path for MPI library -# LIB = name of MPI library - -MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = - -# FFT library -# see discussion in Section 3.5.2 of manual -# can be left blank to use provided KISS FFT library -# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings -# PATH = path for FFT library -# LIB = name of FFT library - -FFT_INC = -DFFT_MKL -DFFT_SINGLE -FFT_PATH = -FFT_LIB = - -# JPEG and/or PNG library -# see discussion in Section 3.5.4 of manual -# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC -# INC = path(s) for jpeglib.h and/or png.h -# PATH = path(s) for JPEG library and/or PNG library -# LIB = name(s) of JPEG library and/or PNG library - -JPG_INC = -JPG_PATH = -JPG_LIB = -ljpeg - -# --------------------------------------------------------------------- -# build rules and dependencies -# do not edit this section - -include Makefile.package.settings -include Makefile.package - -EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) -EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) -EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) -EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) -EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) - -# Path to src files - -vpath %.cpp .. -vpath %.h .. - -# Link target - -$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ - $(SIZE) $@ - -# Library targets - -$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) - @rm -f $(ARLIB) - @ln -s ../$(ARLIB) $(ARLIB) - -$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ - $(OBJ) $(EXTRA_LIB) $(LIB) - @rm -f $(SHLIB) - @ln -s ../$(SHLIB) $(SHLIB) - -# Compilation rules - -%.o:%.cpp - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -# Individual dependencies - -depend : fastdep.exe $(SRC) - @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 - -fastdep.exe: ../DEPEND/fastdep.c - cc -O -o $@ $< - -sinclude .depend diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi b/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi index f085aac55a..4adc427d91 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi +++ b/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi @@ -96,6 +96,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich b/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich index 7f6b687334..762899722c 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich +++ b/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich @@ -96,6 +96,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi b/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi index 5401101546..9adb5b1af2 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi +++ b/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi @@ -97,6 +97,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.jpeg b/src/MAKE/OPTIONS/Makefile.jpeg index 7d4e029033..e8f1f3e96a 100644 --- a/src/MAKE/OPTIONS/Makefile.jpeg +++ b/src/MAKE/OPTIONS/Makefile.jpeg @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.knl b/src/MAKE/OPTIONS/Makefile.knl index 92030fb953..091fd7558f 100644 --- a/src/MAKE/OPTIONS/Makefile.knl +++ b/src/MAKE/OPTIONS/Makefile.knl @@ -95,6 +95,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi b/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi index b9b262ed1d..3971cc6c06 100644 --- a/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi +++ b/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi @@ -97,6 +97,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.kokkos_mpi_only b/src/MAKE/OPTIONS/Makefile.kokkos_mpi_only index 8cc4375b59..0b2e42487f 100644 --- a/src/MAKE/OPTIONS/Makefile.kokkos_mpi_only +++ b/src/MAKE/OPTIONS/Makefile.kokkos_mpi_only @@ -93,6 +93,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.kokkos_omp b/src/MAKE/OPTIONS/Makefile.kokkos_omp index 750751b73c..3e8f7ba634 100644 --- a/src/MAKE/OPTIONS/Makefile.kokkos_omp +++ b/src/MAKE/OPTIONS/Makefile.kokkos_omp @@ -93,6 +93,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.kokkos_phi b/src/MAKE/OPTIONS/Makefile.kokkos_phi index 4e85b9e5b8..0e2bec0a5a 100644 --- a/src/MAKE/OPTIONS/Makefile.kokkos_phi +++ b/src/MAKE/OPTIONS/Makefile.kokkos_phi @@ -94,6 +94,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.mgptfast b/src/MAKE/OPTIONS/Makefile.mgptfast index 6baae1e2ee..dc8682c3a6 100644 --- a/src/MAKE/OPTIONS/Makefile.mgptfast +++ b/src/MAKE/OPTIONS/Makefile.mgptfast @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.omp b/src/MAKE/OPTIONS/Makefile.omp index 80afad79ae..a6b45f7a31 100644 --- a/src/MAKE/OPTIONS/Makefile.omp +++ b/src/MAKE/OPTIONS/Makefile.omp @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.opt b/src/MAKE/OPTIONS/Makefile.opt index 662f25eee6..8919e6e1d9 100644 --- a/src/MAKE/OPTIONS/Makefile.opt +++ b/src/MAKE/OPTIONS/Makefile.opt @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.pgi_mpich_link b/src/MAKE/OPTIONS/Makefile.pgi_mpich_link index 57101c55ae..daa8a79166 100644 --- a/src/MAKE/OPTIONS/Makefile.pgi_mpich_link +++ b/src/MAKE/OPTIONS/Makefile.pgi_mpich_link @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MAKE/OPTIONS/Makefile.png b/src/MAKE/OPTIONS/Makefile.png index 442dddeb66..9fd7b9b79c 100644 --- a/src/MAKE/OPTIONS/Makefile.png +++ b/src/MAKE/OPTIONS/Makefile.png @@ -92,6 +92,7 @@ $(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) @rm -f $(ARLIB) @ln -s ../$(ARLIB) $(ARLIB) diff --git a/src/MANYBODY/pair_adp.cpp b/src/MANYBODY/pair_adp.cpp index e730466fcb..6bc0ab587b 100644 --- a/src/MANYBODY/pair_adp.cpp +++ b/src/MANYBODY/pair_adp.cpp @@ -29,11 +29,11 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - /* ---------------------------------------------------------------------- */ PairADP::PairADP(LAMMPS *lmp) : Pair(lmp) @@ -96,7 +96,7 @@ PairADP::~PairADP() if (setfl) { for (int i = 0; i < setfl->nelements; i++) delete [] setfl->elements[i]; delete [] setfl->elements; - delete [] setfl->mass; + memory->destroy(setfl->mass); memory->destroy(setfl->frho); memory->destroy(setfl->rhor); memory->destroy(setfl->z2r); @@ -453,7 +453,7 @@ void PairADP::coeff(int narg, char **arg) if (setfl) { for (i = 0; i < setfl->nelements; i++) delete [] setfl->elements[i]; delete [] setfl->elements; - delete [] setfl->mass; + memory->destroy(setfl->mass); memory->destroy(setfl->frho); memory->destroy(setfl->rhor); memory->destroy(setfl->z2r); @@ -541,110 +541,125 @@ void PairADP::read_file(char *filename) { Setfl *file = setfl; - // open potential file + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(lmp, filename, "ADP"); - int me = comm->me; - FILE *fp; - char line[MAXLINE]; + try { + reader.skip_line(); + reader.skip_line(); + reader.skip_line(); - if (me == 0) { - fp = force->open_potential(filename); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open ADP potential file %s",filename); - error->one(FLERR,str); + // extract element names from nelements line + ValueTokenizer values = reader.next_values(1); + file->nelements = values.next_int(); + + if (values.count() != file->nelements + 1) + error->one(FLERR,"Incorrect element names in ADP potential file"); + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + const std::string word = values.next_string(); + const int n = word.length() + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i], word.c_str()); + } + + // + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + memory->create(file->u2r, file->nelements, file->nelements, file->nr + 1, "pair:u2r"); + memory->create(file->w2r, file->nelements, file->nelements, file->nr + 1, "pair:w2r"); + + for (int i = 0; i < file->nelements; i++) { + values = reader.next_values(2); + values.next_int(); // ignore + file->mass[i] = values.next_double(); + + reader.next_dvector(&file->frho[i][1], file->nrho); + reader.next_dvector(&file->rhor[i][1], file->nr); + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->z2r[i][j][1], file->nr); + } + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->u2r[i][j][1], file->nr); + } + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->w2r[i][j][1], file->nr); + } + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - // read and broadcast header - // extract element names from nelements line + // broadcast potential information + MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world); - int n; - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fp,filename,error); - n = strlen(line) + 1; + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + // allocate memory on other procs + if (comm->me != 0) { + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr; + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + memory->create(file->u2r, file->nelements, file->nelements, file->nr + 1, "pair:u2r"); + memory->create(file->w2r, file->nelements, file->nelements, file->nr + 1, "pair:w2r"); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - sscanf(line,"%d",&file->nelements); - int nwords = atom->count_words(line); - if (nwords != file->nelements + 1) - error->all(FLERR,"Incorrect element names in ADP potential file"); - - char **words = new char*[file->nelements+1]; - nwords = 0; - strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - file->elements = new char*[file->nelements]; + // broadcast file->elements string array for (int i = 0; i < file->nelements; i++) { - n = strlen(words[i]) + 1; - file->elements[i] = new char[n]; - strcpy(file->elements[i],words[i]); - } - delete [] words; - - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fp,filename,error); - sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + int n; + if (comm->me == 0) n = strlen(file->elements[i]) + 1; + MPI_Bcast(&n, 1, MPI_INT, 0, world); + if (comm->me != 0) file->elements[i] = new char[n]; + MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world); } - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); - - file->mass = new double[file->nelements]; - memory->create(file->frho,file->nelements,file->nrho+1,"pair:frho"); - memory->create(file->rhor,file->nelements,file->nr+1,"pair:rhor"); - memory->create(file->z2r,file->nelements,file->nelements,file->nr+1, - "pair:z2r"); - memory->create(file->u2r,file->nelements,file->nelements,file->nr+1, - "pair:u2r"); - memory->create(file->w2r,file->nelements,file->nelements,file->nr+1, - "pair:w2r"); - - int i,j,tmp; - for (i = 0; i < file->nelements; i++) { - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fp,filename,error); - sscanf(line,"%d %lg",&tmp,&file->mass[i]); - } + // broadcast file->mass, frho, rhor + for (int i = 0; i < file->nelements; i++) { MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); - - if (me == 0) grab(fp,filename,file->nrho,&file->frho[i][1]); MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); - if (me == 0) grab(fp,filename,file->nr,&file->rhor[i][1]); MPI_Bcast(&file->rhor[i][1],file->nr,MPI_DOUBLE,0,world); } - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fp,filename,file->nr,&file->z2r[i][j][1]); + // broadcast file->z2r, u2r, w2r + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); - } - - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fp,filename,file->nr,&file->u2r[i][j][1]); MPI_Bcast(&file->u2r[i][j][1],file->nr,MPI_DOUBLE,0,world); - } - - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fp,filename,file->nr,&file->w2r[i][j][1]); MPI_Bcast(&file->w2r[i][j][1],file->nr,MPI_DOUBLE,0,world); } - - // close the potential file - - if (me == 0) fclose(fp); + } } /* ---------------------------------------------------------------------- @@ -912,26 +927,6 @@ void PairADP::interpolate(int n, double delta, double *f, double **spline) } } -/* ---------------------------------------------------------------------- - grab n values from file fp and put them in list - values can be several to a line - only called by proc 0 -------------------------------------------------------------------------- */ - -void PairADP::grab(FILE *fp, char *filename, int n, double *list) -{ - char *ptr; - char line[MAXLINE]; - - int i = 0; - while (i < n) { - utils::sfgets(FLERR,line,MAXLINE,fp,filename,error); - ptr = strtok(line," \t\n\r\f"); - if (ptr) list[i++] = atof(ptr); - while ((ptr = strtok(NULL," \t\n\r\f"))) list[i++] = atof(ptr); - } -} - /* ---------------------------------------------------------------------- */ int PairADP::pack_forward_comm(int n, int *list, double *buf, diff --git a/src/MANYBODY/pair_adp.h b/src/MANYBODY/pair_adp.h index 360e910c2a..65596113ba 100644 --- a/src/MANYBODY/pair_adp.h +++ b/src/MANYBODY/pair_adp.h @@ -82,7 +82,6 @@ class PairADP : public Pair { void allocate(); void array2spline(); void interpolate(int, double, double *, double **); - void grab(FILE *, char *, int, double *); void read_file(char *); void file2array(); diff --git a/src/MANYBODY/pair_airebo.cpp b/src/MANYBODY/pair_airebo.cpp index 84565a2e50..df90609e7d 100644 --- a/src/MANYBODY/pair_airebo.cpp +++ b/src/MANYBODY/pair_airebo.cpp @@ -35,11 +35,13 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace MathSpecial; -#define MAXLINE 1024 #define TOL 1.0e-9 #define PGDELTA 1 @@ -3331,9 +3333,6 @@ double PairAIREBO::TijSpline(double Nij, double Nji, void PairAIREBO::read_file(char *filename) { - int i,j,k,l,limit; - char s[MAXLINE]; - // REBO Parameters (AIREBO) double rcmin_CC,rcmin_CH,rcmin_HH,rcmax_CC,rcmax_CH, @@ -3357,562 +3356,298 @@ void PairAIREBO::read_file(char *filename) double epsilonM_CC,epsilonM_CH,epsilonM_HH,alphaM_CC,alphaM_CH,alphaM_HH; double reqM_CC,reqM_CH,reqM_HH; - MPI_Comm_rank(world,&me); - // read file on proc 0 - int cerror = 0; - int numpar = 0; - FILE *fp = NULL; + if (comm->me == 0) { + std::string potential_name; + std::string header; + switch (variant) { + case AIREBO: + potential_name = "AIREBO"; + header = "# AIREBO "; + break; - if (me == 0) { - fp = force->open_potential(filename); - if (fp == NULL) { - char str[128]; - switch (variant) { + case REBO_2: + potential_name = "REBO2"; + header = "# REBO2 "; + break; - case AIREBO: - snprintf(str,128,"Cannot open AIREBO potential file %s",filename); - break; + case AIREBO_M: + potential_name = "Cannot open AIREBO-M"; + header = "# AIREBO-M "; + break; - case REBO_2: - snprintf(str,128,"Cannot open REBO2 potential file %s",filename); - break; - - case AIREBO_M: - snprintf(str,128,"Cannot open AIREBO-M potential file %s",filename); - break; - - default: - snprintf(str,128,"Unknown REBO style variant %d",variant); - } - error->one(FLERR,str); + default: + error->one(FLERR, fmt::format("Unknown REBO style variant {}",variant)); } + PotentialFileReader reader(lmp, filename, potential_name); + reader.ignore_comments(false); + // skip initial comment line and check for potential file style identifier comment - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); + reader.skip_line(); + char * line = reader.next_line(); - if (((variant == AIREBO) && (strncmp(s,"# AIREBO ",9) != 0)) - || ((variant == REBO_2) && (strncmp(s,"# REBO2 ",8) != 0)) - || ((variant == AIREBO_M) && (strncmp(s,"# AIREBO-M ",11) != 0))) { - error->one(FLERR,"Potential file does not match AIREBO/REBO style variant"); + if (std::string(line).find(header) == std::string::npos) { + error->one(FLERR, fmt::format("Potential file does not match AIREBO/REBO style variant: {}: {}", header, line)); } // skip remaining comments - - while (1) { - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (s[0] != '#') break; - } + reader.ignore_comments(true); // read parameters - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcmin_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcmin_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcmin_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcmax_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcmax_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcmax_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcmaxp_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcmaxp_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcmaxp_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&smin)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Nmin)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Nmax)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&NCmin)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&NCmax)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Q_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Q_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Q_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&alpha_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&alpha_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&alpha_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&A_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&A_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&A_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&BIJc_CC1)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&BIJc_CC2)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&BIJc_CC3)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&BIJc_CH1)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&BIJc_CH2)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&BIJc_CH3)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&BIJc_HH1)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&BIJc_HH2)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&BIJc_HH3)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Beta_CC1)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Beta_CC2)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Beta_CC3)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Beta_CH1)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Beta_CH2)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Beta_CH3)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Beta_HH1)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Beta_HH2)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Beta_HH3)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rho_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rho_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rho_HH)) ++cerror; + std::vector params { + &rcmin_CC, + &rcmin_CH, + &rcmin_HH, + &rcmax_CC, + &rcmax_CH, + &rcmax_HH, + &rcmaxp_CC, + &rcmaxp_CH, + &rcmaxp_HH, + &smin, + &Nmin, + &Nmax, + &NCmin, + &NCmax, + &Q_CC, + &Q_CH, + &Q_HH, + &alpha_CC, + &alpha_CH, + &alpha_HH, + &A_CC, + &A_CH, + &A_HH, + &BIJc_CC1, + &BIJc_CC2, + &BIJc_CC3, + &BIJc_CH1, + &BIJc_CH2, + &BIJc_CH3, + &BIJc_HH1, + &BIJc_HH2, + &BIJc_HH3, + &Beta_CC1, + &Beta_CC2, + &Beta_CC3, + &Beta_CH1, + &Beta_CH2, + &Beta_CH3, + &Beta_HH1, + &Beta_HH2, + &Beta_HH3, + &rho_CC, + &rho_CH, + &rho_HH, - // LJ parameters - - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcLJmin_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcLJmin_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcLJmin_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcLJmax_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcLJmax_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&rcLJmax_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&bLJmin_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&bLJmin_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&bLJmin_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&bLJmax_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&bLJmax_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&bLJmax_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&epsilon_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&epsilon_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&epsilon_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&sigma_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&sigma_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&sigma_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&epsilonT_CCCC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&epsilonT_CCCH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&epsilonT_HCCH)) ++cerror; + // LJ parameters + &rcLJmin_CC, + &rcLJmin_CH, + &rcLJmin_HH, + &rcLJmax_CC, + &rcLJmax_CH, + &rcLJmax_HH, + &bLJmin_CC, + &bLJmin_CH, + &bLJmin_HH, + &bLJmax_CC, + &bLJmax_CH, + &bLJmax_HH, + &epsilon_CC, + &epsilon_CH, + &epsilon_HH, + &sigma_CC, + &sigma_CH, + &sigma_HH, + &epsilonT_CCCC, + &epsilonT_CCCH, + &epsilonT_HCCH + }; if (morseflag) { // lines for reading in MORSE parameters from CH.airebo_m file - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&epsilonM_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&epsilonM_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&epsilonM_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&alphaM_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&alphaM_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&alphaM_HH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&reqM_CC)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&reqM_CH)) ++cerror; - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&reqM_HH)) ++cerror; + params.push_back(&epsilonM_CC); + params.push_back(&epsilonM_CH); + params.push_back(&epsilonM_HH); + params.push_back(&alphaM_CC); + params.push_back(&alphaM_CH); + params.push_back(&alphaM_HH); + params.push_back(&reqM_CC); + params.push_back(&reqM_CH); + params.push_back(&reqM_HH); } - } + std::string current_section; - // check for errors parsing global parameters + try { + ///////////////////////////////////////////////////////////////////////// + // global parameters + current_section = "global parameters"; - MPI_Bcast(&cerror,1,MPI_INT,0,world); - if (cerror > 0) { - char msg[128]; - snprintf(msg,128,"Could not parse %d of %d parameters from file %s", - cerror,numpar,filename); - error->all(FLERR,msg); - } - - cerror = numpar = 0; - - if (me == 0) { - - // gC spline - - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - - // number-1 = # of domains for the spline - - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%d",&limit)) ++cerror; - - for (i = 0; i < limit; i++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&gCdom[i])) ++cerror; - } - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - for (i = 0; i < limit-1; i++) { - for (j = 0; j < 6; j++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&gC1[i][j])) ++cerror; + for(int i = 0; i < params.size(); i++) { + *params[i] = reader.next_double(); } - } - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - for (i = 0; i < limit-1; i++) { - for (j = 0; j < 6; j++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&gC2[i][j])) ++cerror; + + + ///////////////////////////////////////////////////////////////////////// + // gC spline + current_section = "gC spline"; + + // number-1 = # of domains for the spline + + int limit = reader.next_int(); + reader.next_dvector(gCdom, limit); + + for (int i = 0; i < limit-1; i++) { + reader.next_dvector(&gC1[i][0], 6); } - } - // gH spline - - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%d",&limit)) ++cerror; - - for (i = 0; i < limit; i++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&gHdom[i])) ++cerror; - } - - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - - for (i = 0; i < limit-1; i++) { - for (j = 0; j < 6; j++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&gH[i][j])) ++cerror; + for (int i = 0; i < limit-1; i++) { + reader.next_dvector(&gC2[i][0], 6); } - } - // pCC spline + ///////////////////////////////////////////////////////////////////////// + // gH spline + current_section = "gH spline"; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); + limit = reader.next_int(); + reader.next_dvector(gHdom, limit); - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%d",&limit)) ++cerror; - - for (i = 0; i < limit/2; i++) { - for (j = 0; j < limit/2; j++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&pCCdom[i][j])) ++cerror; + for (int i = 0; i < limit-1; i++) { + reader.next_dvector(&gH[i][0], 6); } - } - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - for (i = 0; i < (int) pCCdom[0][1]; i++) { - for (j = 0; j < (int) pCCdom[1][1]; j++) { - for (k = 0; k < 16; k++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&pCC[i][j][k])) ++cerror; + ///////////////////////////////////////////////////////////////////////// + // pCC spline + current_section = "pCC spline"; + + limit = reader.next_int(); + + for (int i = 0; i < limit/2; i++) { + reader.next_dvector(&pCCdom[i][0], limit/2); + } + + for (int i = 0; i < (int) pCCdom[0][1]; i++) { + for (int j = 0; j < (int) pCCdom[1][1]; j++) { + reader.next_dvector(&pCC[i][j][0], 16); } } - } - // pCH spline + ///////////////////////////////////////////////////////////////////////// + // pCH spline + current_section = "pCH spline"; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); + limit = reader.next_int(); - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%d",&limit)) ++cerror; - - for (i = 0; i < limit/2; i++) { - for (j = 0; j < limit/2; j++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&pCHdom[i][j])) ++cerror; - } - } - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - - for (i = 0; i < (int) pCHdom[0][1]; i++) { - for (j = 0; j < (int) pCHdom[1][1]; j++) { - for (k = 0; k < 16; k++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&pCH[i][j][k])) ++cerror; + for (int i = 0; i < limit/2; i++) { + for (int j = 0; j < limit/2; j++) { + pCHdom[i][j] = reader.next_double(); } } - } - // piCC cpline - - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%d",&limit)) ++cerror; - - for (i = 0; i < limit/2; i++) { - for (j = 0; j < limit/3; j++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&piCCdom[i][j])) ++cerror; + for (int i = 0; i < (int) pCHdom[0][1]; i++) { + for (int j = 0; j < (int) pCHdom[1][1]; j++) { + reader.next_dvector(&pCH[i][j][0], 16); + } } - } - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - for (i = 0; i < (int) piCCdom[0][1]; i++) { - for (j = 0; j < (int) piCCdom[1][1]; j++) { - for (k = 0; k < (int) piCCdom[2][1]; k++) { - for (l = 0; l < 64; l = l+1) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&piCC[i][j][k][l])) ++cerror; + ///////////////////////////////////////////////////////////////////////// + // piCC spline + current_section = "piCC spline"; + + limit = reader.next_int(); + + for (int i = 0; i < limit/2; i++) { + for (int j = 0; j < limit/3; j++) { + piCCdom[i][j] = reader.next_double(); + } + } + + for (int i = 0; i < (int) piCCdom[0][1]; i++) { + for (int j = 0; j < (int) piCCdom[1][1]; j++) { + for (int k = 0; k < (int) piCCdom[2][1]; k++) { + reader.next_dvector(&piCC[i][j][k][0], 64); } } } - } - // piCH spline + ///////////////////////////////////////////////////////////////////////// + // piCH spline + current_section = "piCH spline"; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); + limit = reader.next_int(); - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%d",&limit)) ++cerror; - - for (i = 0; i < limit/2; i++) { - for (j = 0; j < limit/3; j++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&piCHdom[i][j])) ++cerror; + for (int i = 0; i < limit/2; i++) { + for (int j = 0; j < limit/3; j++) { + piCHdom[i][j] = reader.next_double(); + } } - } - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - for (i = 0; i < (int) piCHdom[0][1]; i++) { - for (j = 0; j < (int) piCHdom[1][1]; j++) { - for (k = 0; k < (int) piCHdom[2][1]; k++) { - for (l = 0; l < 64; l = l+1) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&piCH[i][j][k][l])) ++cerror; + for (int i = 0; i < (int) piCHdom[0][1]; i++) { + for (int j = 0; j < (int) piCHdom[1][1]; j++) { + for (int k = 0; k < (int) piCHdom[2][1]; k++) { + reader.next_dvector(&piCH[i][j][k][0], 64); } } } - } - // piHH spline + ///////////////////////////////////////////////////////////////////////// + // piHH spline + current_section = "piHH spline"; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); + limit = reader.next_int(); - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%d",&limit)) ++cerror; - - for (i = 0; i < limit/2; i++) { - for (j = 0; j < limit/3; j++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&piHHdom[i][j])) ++cerror; + for (int i = 0; i < limit/2; i++) { + for (int j = 0; j < limit/3; j++) { + piHHdom[i][j] = reader.next_double(); + } } - } - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - for (i = 0; i < (int) piHHdom[0][1]; i++) { - for (j = 0; j < (int) piHHdom[1][1]; j++) { - for (k = 0; k < (int) piHHdom[2][1]; k++) { - for (l = 0; l < 64; l = l+1) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&piHH[i][j][k][l])) ++cerror; + for (int i = 0; i < (int) piHHdom[0][1]; i++) { + for (int j = 0; j < (int) piHHdom[1][1]; j++) { + for (int k = 0; k < (int) piHHdom[2][1]; k++) { + reader.next_dvector(&piHH[i][j][k][0], 64); } } } - } - // Tij spline + ///////////////////////////////////////////////////////////////////////// + // Tij spline + current_section = "Tij spline"; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); + limit = reader.next_int(); - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%d",&limit)) ++cerror; - - for (i = 0; i < limit/2; i++) { - for (j = 0; j < limit/3; j++) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Tijdom[i][j])) ++cerror; + for (int i = 0; i < limit/2; i++) { + for (int j = 0; j < limit/3; j++) { + Tijdom[i][j] = reader.next_double(); + } } - } - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - for (i = 0; i < (int) Tijdom[0][1]; i++) { - for (j = 0; j < (int) Tijdom[1][1]; j++) { - for (k = 0; k < (int) Tijdom[2][1]; k++) { - for (l = 0; l < 64; l = l+1) { - ++numpar; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - if (1 != sscanf(s,"%lg",&Tijc[i][j][k][l])) ++cerror; + for (int i = 0; i < (int) Tijdom[0][1]; i++) { + for (int j = 0; j < (int) Tijdom[1][1]; j++) { + for (int k = 0; k < (int) Tijdom[2][1]; k++) { + reader.next_dvector(&Tijc[i][j][k][0], 64); } } } + } catch (TokenizerException & e) { + std::string msg = fmt::format("ERROR reading {} section in {} file\n" + "REASON: {}\n", + current_section, potential_name, e.what()); + error->one(FLERR, msg); + } catch (FileReaderException & fre) { + error->one(FLERR, fre.what()); + std::string msg = fmt::format("ERROR reading {} section in {} file\n" + "REASON: {}\n", + current_section, potential_name, fre.what()); + error->one(FLERR, msg); } - fclose(fp); - } - - // check for errors parsing spline data - - MPI_Bcast(&cerror,1,MPI_INT,0,world); - if (cerror > 0) { - char msg[128]; - snprintf(msg,128,"Could not parse %d of %d spline data from file %s", - cerror,numpar,filename); - error->all(FLERR,msg); - } - - // store read-in values in arrays - - if (me == 0) { + // store read-in values in arrays // REBO diff --git a/src/MANYBODY/pair_airebo.h b/src/MANYBODY/pair_airebo.h index 04d3fc399f..ab02533cec 100644 --- a/src/MANYBODY/pair_airebo.h +++ b/src/MANYBODY/pair_airebo.h @@ -42,7 +42,7 @@ class PairAIREBO : public Pair { protected: int *map; // 0 (C), 1 (H), or -1 (NULL) for each type - int me,variant; + int variant; int ljflag,torflag; // 0/1 if LJ/Morse,torsion terms included int morseflag; // 1 if Morse instead of LJ for non-bonded diff --git a/src/MANYBODY/pair_bop.cpp b/src/MANYBODY/pair_bop.cpp index 10ab1d7080..d922cf6d33 100644 --- a/src/MANYBODY/pair_bop.cpp +++ b/src/MANYBODY/pair_bop.cpp @@ -46,10 +46,11 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 #define EPSILON 1.0e-6 /* ---------------------------------------------------------------------- */ @@ -294,7 +295,6 @@ void PairBOP::compute(int eflag, int vflag) int nlocal = atom->nlocal; int nall = nlocal + atom->nghost; int cnt1; - MPI_Comm_rank(world,&me); inum = list->inum; ilist = list->ilist; @@ -616,7 +616,6 @@ void PairBOP::coeff(int narg, char **arg) { int i,j; int n = atom->ntypes; - MPI_Comm_rank(world,&me); delete[] map; map = new int[n+1]; @@ -645,7 +644,7 @@ void PairBOP::coeff(int narg, char **arg) read_table(arg[2]); // match element names to BOP word types - if (me == 0) { + if (comm->me == 0) { for (i = 3; i < narg; i++) { if (strcmp(arg[i],"NULL") == 0) { map[i-2] = -1; @@ -659,7 +658,7 @@ void PairBOP::coeff(int narg, char **arg) } MPI_Bcast(&map[1],atom->ntypes,MPI_INT,0,world); - if (me == 0) { + if (comm->me == 0) { if (elements) { for (i = 0; i < bop_types; i++) delete [] elements[i]; delete [] elements; @@ -1035,145 +1034,6 @@ void PairBOP::gneigh() /* ---------------------------------------------------------------------- */ -void PairBOP::theta() -{ - int i,j,ii,jj,kk; - int itype,jtype,i12; - int temp_ij,temp_ik,temp_ijk; - int n,nlocal,nall,ks; - int nlisti; - int *ilist; - int *iilist; - int **firstneigh; - double rj2,rk2,rsq,ps; - double rj1k1,rj2k2; - double **x = atom->x; - int *type = atom->type; - - nlocal = atom->nlocal; - nall = nlocal+atom->nghost; - ilist = list->ilist; - firstneigh = list->firstneigh; - if(update_list!=0) - memory_theta_grow(); - else - memory_theta_create(); - for (ii = 0; ii < nall; ii++) { - if(ii=npairs) { - error->one(FLERR,"Too many atom pairs for pair bop"); - } - disij[0][temp_ij]=x[j][0]-x[i][0]; - disij[1][temp_ij]=x[j][1]-x[i][1]; - disij[2][temp_ij]=x[j][2]-x[i][2]; - rsq=disij[0][temp_ij]*disij[0][temp_ij] - +disij[1][temp_ij]*disij[1][temp_ij] - +disij[2][temp_ij]*disij[2][temp_ij]; - rij[temp_ij]=sqrt(rsq); - if(rij[temp_ij]<=rcut[i12]) - neigh_flag[temp_ij]=1; - else - neigh_flag[temp_ij]=0; - if(rij[temp_ij]<=rcut3[i12]) - neigh_flag3[temp_ij]=1; - else - neigh_flag3[temp_ij]=0; - ps=rij[temp_ij]*rdr[i12]+1.0; - ks=(int)ps; - if(nr-11.0) - ps=1.0; - betaS[temp_ij]=((pBetaS3[i12][ks-1]*ps+pBetaS2[i12][ks-1])*ps+pBetaS1[i12][ks-1])*ps+pBetaS[i12][ks-1]; - dBetaS[temp_ij]=(pBetaS6[i12][ks-1]*ps+pBetaS5[i12][ks-1])*ps - +pBetaS4[i12][ks-1]; - betaP[temp_ij]=((pBetaP3[i12][ks-1]*ps+pBetaP2[i12][ks-1])*ps - +pBetaP1[i12][ks-1])*ps+pBetaP[i12][ks-1]; - dBetaP[temp_ij]=(pBetaP6[i12][ks-1]*ps+pBetaP5[i12][ks-1])*ps - +pBetaP4[i12][ks-1]; - repul[temp_ij]=((pRepul3[i12][ks-1]*ps+pRepul2[i12][ks-1])*ps - +pRepul1[i12][ks-1])*ps+pRepul[i12][ks-1]; - dRepul[temp_ij]=(pRepul6[i12][ks-1]*ps+pRepul5[i12][ks-1])*ps - +pRepul4[i12][ks-1]; - } - } - for (ii = 0; ii < nall; ii++) { - n=0; - if(ii=cos_total) { - error->one(FLERR,"Too many atom triplets for pair bop"); - } - temp_ik=BOP_index[i]+kk; - temp_ijk=cos_index[i]+n; - if(temp_ijk>=cos_total) { - error->one(FLERR,"Too many atom triplets for pair bop"); - } - rk2=rij[temp_ik]*rij[temp_ik]; - rj1k1=rij[temp_ij]*rij[temp_ik]; - rj2k2=rj1k1*rj1k1; - if(temp_ijk>=cos_total) { - error->one(FLERR,"Too many atom triplets for pair bop"); - } - cosAng[temp_ijk]=(disij[0][temp_ij]*disij[0][temp_ik]+disij[1][temp_ij] - *disij[1][temp_ik]+disij[2][temp_ij]*disij[2][temp_ik])/rj1k1; - dcAng[temp_ijk][0][0]=(disij[0][temp_ik]*rj1k1-cosAng[temp_ijk] - *disij[0][temp_ij]*rk2)/(rj2k2); - dcAng[temp_ijk][1][0]=(disij[1][temp_ik]*rj1k1-cosAng[temp_ijk] - *disij[1][temp_ij]*rk2)/(rj2k2); - dcAng[temp_ijk][2][0]=(disij[2][temp_ik]*rj1k1-cosAng[temp_ijk] - *disij[2][temp_ij]*rk2)/(rj2k2); - dcAng[temp_ijk][0][1]=(disij[0][temp_ij]*rj1k1-cosAng[temp_ijk] - *disij[0][temp_ik]*rj2)/(rj2k2); - dcAng[temp_ijk][1][1]=(disij[1][temp_ij]*rj1k1-cosAng[temp_ijk] - *disij[1][temp_ik]*rj2)/(rj2k2); - dcAng[temp_ijk][2][1]=(disij[2][temp_ij]*rj1k1-cosAng[temp_ijk] - *disij[2][temp_ik]*rj2)/(rj2k2); - n++; - } - } - } -} - -/* ---------------------------------------------------------------------- */ - -void PairBOP::theta_mod() -{ - if(update_list!=0) - memory_theta_grow(); - else - memory_theta_create(); -} - -/* ---------------------------------------------------------------------- */ - /* The formulation differs slightly to avoid negative square roots in the calculation of Sigma^(1/2) of (a) Eq. 6 and (b) Eq. 11 */ @@ -1276,7 +1136,6 @@ double PairBOP::sigmaBo(int itmp, int jtmp) nlocal = atom->nlocal; ilist = list->ilist; firstneigh = list->firstneigh; - MPI_Comm_rank(world,&me); if(nb_sg==0) { nb_sg=(maxneigh)*(maxneigh/2); @@ -5012,101 +4871,11 @@ double PairBOP::PiBo(int itmp, int jtmp) } /* ---------------------------------------------------------------------- - read BOP potential file + allocate BOP tables ------------------------------------------------------------------------- */ -/* ---------------------------------------------------------------------- */ - -void _noopt PairBOP::read_table(char *filename) +void PairBOP::allocate_tables() { - int i,j,k,n,m; - int buf1,pass; - int nws,ws; - double buf2; - char s[MAXLINE],buf[2]; - - MPI_Comm_rank(world,&me); - if (me == 0) { - FILE *fp = force->open_potential(filename); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open BOP potential file %s",filename); - error->one(FLERR,str); - } - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); // skip first comment line - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%d",&bop_types); - elements = new char*[bop_types]; - for(i=0;iall(FLERR,"Incorrect table format check for element types"); - } - sscanf(s,"%d %lf %s",&buf1,&buf2,buf); - n= strlen(buf)+1; - elements[i] = new char[n]; - strcpy(elements[i],buf); - } - nws=0; - ws=1; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - for(j=0;j<(int)strlen(s);j++) { - if(ws==1) { - if(isspace(s[j])) { - ws=1; - } else { - ws=0; - } - } else { - if(isspace(s[j])) { - ws=1; - nws++; - } else { - ws=0; - } - } - } - if (nws==3) { - sscanf(s,"%d %d %d",&nr,&ntheta,&nBOt); - npower=2; - if(ntheta<=10) npower=ntheta; - } else if (nws==2) { - sscanf(s,"%d %d",&nr,&nBOt); - ntheta=0; - npower=3; - } else { - error->one(FLERR,"Unsupported BOP potential file format"); - } - fclose(fp); - npairs=bop_types*(bop_types+1)/2; - } - - MPI_Bcast(&nr,1,MPI_INT,0,world); - MPI_Bcast(&nBOt,1,MPI_INT,0,world); - MPI_Bcast(&ntheta,1,MPI_INT,0,world); - MPI_Bcast(&bop_types,1,MPI_INT,0,world); - MPI_Bcast(&npairs,1,MPI_INT,0,world); - MPI_Bcast(&npower,1,MPI_INT,0,world); - memory->destroy(pi_a); memory->destroy(pro_delta); memory->destroy(pi_delta); @@ -5150,330 +4919,347 @@ void _noopt PairBOP::read_table(char *filename) memory->create(gfunc5,bop_types,bop_types,bop_types,ntheta,"BOP:gfunc5"); memory->create(gfunc6,bop_types,bop_types,bop_types,ntheta,"BOP:gfunc6"); memory->create(gpara,bop_types,bop_types,bop_types,npower+1,"BOP:gpara"); +} - allocate(); - if (me == 0) { - FILE *fp = force->open_potential(filename); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open BOP potential file %s",filename); - error->one(FLERR,str); - } - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); // skip first comment line - for(i=0;icutmax) - cutmax=rcut[i]; - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf",&sigma_c[i],&sigma_a[i],&pi_c[i],&pi_a[i]); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf",&sigma_delta[i],&pi_delta[i]); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf",&sigma_f[i],&sigma_k[i],&small3[i]); - } - if(nws==3) { - for(i=0;ime == 0) { + try { + PotentialFileReader reader(lmp, filename, "BOP"); + + bop_types = reader.next_int(); + elements = new char*[bop_types]; + for(int i=0; i < bop_types; i++) { + ValueTokenizer values = reader.next_values(3); + values.next_int(); + values.next_double(); + std::string name = values.next_string(); + + elements[i] = new char[name.length()+1]; + strcpy(elements[i], name.c_str()); + } + + ValueTokenizer values = reader.next_values(2); + int format = values.count(); + + switch(format) { + case 3: + nr = values.next_int(); + ntheta = values.next_int(); + nBOt = values.next_int(); + if(ntheta <= 10) + npower = ntheta; + else + npower = 2; + break; + + case 2: + nr = values.next_int(); + nBOt = values.next_int(); + ntheta = 0; + npower = 3; + break; + + default: + error->one(FLERR,"Unsupported BOP potential file format"); + } + + npairs = bop_types*(bop_types+1)/2; + + allocate_tables(); + allocate(); + + values = reader.next_values(7); + + small1 = values.next_double(); + small2 = values.next_double(); + small3g = values.next_double(); + small4 = values.next_double(); + small5 = values.next_double(); + small6 = values.next_double(); + small7 = values.next_double(); + + for(int i = 0; i < bop_types; i++) { + pi_p[i] = reader.next_double(); + } + + cutmax = 0.0; + + for(int i = 0; i < npairs; i++) { + rcut[i] = reader.next_double(); + if (rcut[i] > cutmax) + cutmax = rcut[i]; + + values = reader.next_values(4); + sigma_c[i] = values.next_double(); + sigma_a[i] = values.next_double(); + pi_c[i] = values.next_double(); + pi_a[i] = values.next_double(); + + values = reader.next_values(2); + sigma_delta[i] = values.next_double(); + pi_delta[i] = values.next_double(); + + values = reader.next_values(3); + sigma_f[i] = values.next_double(); + sigma_k[i] = values.next_double(); + small3[i] = values.next_double(); + } + + if(format == 3) { + for(int i = 0; i < bop_types; i++) + for(int j = 0; j < bop_types; j++) + for(int k = j; k < bop_types; k++) { + if(npower <= 2) { + reader.next_dvector(&gfunc[j][i][k][0], ntheta); + } else { + reader.next_dvector(&gpara[j][i][k][0], npower+1); + } + } + } else { + for(int i = 0; i < bop_types; i++) + for(int j = 0; j < bop_types; j++) + for(int k = 0; k < bop_types; k++) { + reader.next_dvector(&gpara[i][j][k][0], 3); + gpara[j][i][k][3] = 0; + } + } + + for(int i = 0; i < npairs; i++) { + reader.next_dvector(&pRepul[i][0], nr); + } + + for(int i = 0; i < npairs; i++) { + reader.next_dvector(&pBetaS[i][0], nr); + } + + for(int i = 0; i < npairs; i++) { + reader.next_dvector(&pBetaP[i][0], nr); + } + + for(int i = 0; i < npairs; i++) { + reader.next_dvector(&FsigBO[i][0], nBOt); + } + + for(int i = 0; i < bop_types; i++) { + pro_delta[i] = reader.next_double(); + } + + for(int i = 0; i < bop_types; i++) { + pro[i] = reader.next_double(); + } + + for(int i=0;ircutall) + rcutall=rcut[i]; + if(rcut3[i]>rcutall) + rcutall=rcut3[i]; + rcutsq[i]=rcut[i]*rcut[i]; + dr[i]=rcut[i]/((double)nr-1.0); + rdr[i]=1.0/dr[i]; + if (format == 3) { + rcutsq3[i]=rcut3[i]*rcut3[i]; + dr3[i]=rcut3[i]/((double)nr-1.0); + rdr3[i]=1.0/dr3[i]; + } + } + + rctroot=rcutall; + dtheta=2.0/((double)ntheta-1.0); + rdtheta=1.0/dtheta; + dBO=1.0/((double)nBOt-1.0); + rdBO=1.0/(double)dBO; + + for (int i = 0; i < npairs; i++) { + pBetaS1[i][0]=pBetaS[i][1]-pBetaS[i][0]; + pBetaS1[i][1]=0.5*(pBetaS[i][2]-pBetaS[i][0]); + pBetaS1[i][nr-2]=0.5*(pBetaS[i][nr-1]-pBetaS[i][nr-3]); + pBetaS1[i][nr-1]=pBetaS[i][nr-1]-pBetaS[i][nr-2]; + pBetaP1[i][0]=pBetaP[i][1]-pBetaP[i][0]; + pBetaP1[i][1]=0.5*(pBetaP[i][2]-pBetaP[i][0]); + pBetaP1[i][nr-2]=0.5*(pBetaP[i][nr-1]-pBetaP[i][nr-3]); + pBetaP1[i][nr-1]=pBetaP[i][nr-1]-pBetaP[i][nr-2]; + pRepul1[i][0]=pRepul[i][1]-pRepul[i][0]; + pRepul1[i][1]=0.5*(pRepul[i][2]-pRepul[i][0]); + pRepul1[i][nr-2]=0.5*(pRepul[i][nr-1]-pRepul[i][nr-3]); + pRepul1[i][nr-1]=pRepul[i][nr-1]-pRepul[i][nr-2]; + FsigBO1[i][0]=FsigBO[i][1]-FsigBO[i][0]; + FsigBO1[i][1]=0.5*(FsigBO[i][2]-FsigBO[i][0]); + FsigBO1[i][nBOt-2]=0.5*(FsigBO[i][nBOt-1]-FsigBO[i][nBOt-3]); + FsigBO1[i][nBOt-1]=FsigBO[i][nBOt-1]-FsigBO[i][nBOt-2]; + pLong1[i][0]=pLong[i][1]-pLong[i][0]; + pLong1[i][1]=0.5*(pLong[i][2]-pLong[i][0]); + pLong1[i][nBOt-2]=0.5*(pLong[i][nr-1]-pLong[i][nr-3]); + pLong1[i][nBOt-1]=pLong[i][nr-1]-pLong[i][nr-2]; + for (int k = 2; k < nr-2; k++) { + pBetaS1[i][k]=((pBetaS[i][k-2]-pBetaS[i][k+2]) + +8.0*(pBetaS[i][k+1]-pBetaS[i][k-1]))/12.0; + pBetaP1[i][k]=((pBetaP[i][k-2]-pBetaP[i][k+2]) + +8.0*(pBetaP[i][k+1]-pBetaP[i][k-1]))/12.0; + pRepul1[i][k]=((pRepul[i][k-2]-pRepul[i][k+2]) + +8.0*(pRepul[i][k+1]-pRepul[i][k-1]))/12.0; + pLong1[i][k]=((pLong[i][k-2]-pLong[i][k+2]) + +8.0*(pLong[i][k+1]-pLong[i][k-1]))/12.0; + } + for (int k=2; k < nr-2; k++) { + FsigBO1[i][k]=((FsigBO[i][k-2]-FsigBO[i][k+2]) + +8.0*(FsigBO[i][k+1]-FsigBO[i][k-1]))/12.0; + } + for (int k = 0; k < nr-1; k++) { + pBetaS2[i][k]=3.0*(pBetaS[i][k+1]-pBetaS[i][k]) + -2.0*pBetaS1[i][k]-pBetaS1[i][k+1]; + pBetaS3[i][k]=pBetaS1[i][k]+pBetaS1[i][k+1] + -2.0*(pBetaS[i][k+1]-pBetaS[i][k]); + pBetaP2[i][k]=3.0*(pBetaP[i][k+1]-pBetaP[i][k]) + -2.0*pBetaP1[i][k]-pBetaP1[i][k+1]; + pBetaP3[i][k]=pBetaP1[i][k]+pBetaP1[i][k+1] + -2.0*(pBetaP[i][k+1]-pBetaP[i][k]); + pRepul2[i][k]=3.0*(pRepul[i][k+1]-pRepul[i][k]) + -2.0*pRepul1[i][k]-pRepul1[i][k+1]; + pRepul3[i][k]=pRepul1[i][k]+pRepul1[i][k+1] + -2.0*(pRepul[i][k+1]-pRepul[i][k]); + pLong2[i][k]=3.0*(pLong[i][k+1]-pLong[i][k]) + -2.0*pLong1[i][k]-pLong1[i][k+1]; + pLong3[i][k]=pLong1[i][k]+pLong1[i][k+1] + -2.0*(pLong[i][k+1]-pLong[i][k]); + } + + for (int k = 0; k < nBOt-1; k++) { + FsigBO2[i][k]=3.0*(FsigBO[i][k+1]-FsigBO[i][k]) + -2.0*FsigBO1[i][k]-FsigBO1[i][k+1]; + FsigBO3[i][k]=FsigBO1[i][k]+FsigBO1[i][k+1] + -2.0*(FsigBO[i][k+1]-FsigBO[i][k]); + } + + pBetaS2[i][nr-1]=0.0; + pBetaS3[i][nr-1]=0.0; + pBetaP2[i][nr-1]=0.0; + pBetaP3[i][nr-1]=0.0; + pRepul2[i][nr-1]=0.0; + pRepul3[i][nr-1]=0.0; + pLong2[i][nr-1]=0.0; + pLong3[i][nr-1]=0.0; + FsigBO2[i][nBOt-1]=0.0; + FsigBO3[i][nBOt-1]=0.0; + + for (int k=0; k < nr; k++) { + pBetaS4[i][k]=pBetaS1[i][k]/dr[i]; + pBetaS5[i][k]=2.0*pBetaS2[i][k]/dr[i]; + pBetaS6[i][k]=3.0*pBetaS3[i][k]/dr[i]; + pBetaP4[i][k]=pBetaP1[i][k]/dr[i]; + pBetaP5[i][k]=2.0*pBetaP2[i][k]/dr[i]; + pBetaP6[i][k]=3.0*pBetaP3[i][k]/dr[i]; + pRepul4[i][k]=pRepul1[i][k]/dr[i]; + pRepul5[i][k]=2.0*pRepul2[i][k]/dr[i]; + pRepul6[i][k]=3.0*pRepul3[i][k]/dr[i]; + if (format == 3) { + pLong4[i][k]=pLong1[i][k]/dr3[i]; + pLong5[i][k]=2.0*pLong2[i][k]/dr3[i]; + pLong6[i][k]=3.0*pLong3[i][k]/dr3[i]; + } + } + for (int k=0; k < nBOt; k++) { + FsigBO4[i][k]=FsigBO1[i][k]/dBO; + FsigBO5[i][k]=2.0*FsigBO2[i][k]/dBO; + FsigBO6[i][k]=3.0*FsigBO3[i][k]/dBO; + } + } + + if (npower <= 2) { + for (int i = 0; i < bop_types; i++) { + for (int j = 0; j < bop_types; j++) { + for (int k = j; k < bop_types; k++) { + gfunc1[j][i][k][0] = gfunc[j][i][k][1] - gfunc[j][i][k][0]; + gfunc1[j][i][k][1] = 0.5 * (gfunc[j][i][k][2] - gfunc[j][i][k][0]); + gfunc1[j][i][k][ntheta - 2] = 0.5 * (gfunc[j][i][k][ntheta - 1] - gfunc[j][i][k][ntheta - 3]); + gfunc1[j][i][k][ntheta - 1] = 0.5 * (gfunc[j][i][k][ntheta - 1] - gfunc[j][i][k][ntheta - 2]); + + for (int m = 2; m < ntheta - 2; m++) { + gfunc1[j][i][k][m] = ((gfunc[j][i][k][m - 2] - gfunc[j][i][k][m + 2]) + + 8.0 * (gfunc[j][i][k][m + 1] - gfunc[j][i][k][m + 1] - gfunc[j][i][k][m - 1])) / + 12.0; + } + + for (int m = 0; m < ntheta - 1; m++) { + gfunc2[j][i][k][m] = 3.0 * (gfunc[j][i][k][m + 1] - gfunc[j][i][k][m]) - + 2.0 * gfunc1[j][i][k][m] - gfunc1[j][i][k][m + 1]; + gfunc3[j][i][k][m] = gfunc1[j][i][k][m] + gfunc1[j][i][k][m + 1] - + 2.0 * (gfunc[j][i][k][m + 1] - gfunc[j][i][k][m]); + } + + gfunc2[j][i][k][ntheta - 1] = 0.0; + gfunc3[j][i][k][ntheta - 1] = 0.0; + + for (int m = 0; m < ntheta; m++) { + gfunc4[j][i][k][ntheta - 1] = gfunc1[j][i][k][m] / dtheta; + gfunc5[j][i][k][ntheta - 1] = 2.0 * gfunc2[j][i][k][m] / dtheta; + gfunc6[j][i][k][ntheta - 1] = 3.0 * gfunc3[j][i][k][m] / dtheta; + } + } + } + } + } + + for (int i = 0; i < bop_types; i++) { + for (int j = 0; j < bop_types; j++) { + for (int k = 0; k < j; k++) { + if (npower <= 2) { + for (int n = 0; n < ntheta; n++) { + gfunc[j][i][k][n] = gfunc[k][i][j][n]; + gfunc1[j][i][k][n] = gfunc1[k][i][j][n]; + gfunc2[j][i][k][n] = gfunc2[k][i][j][n]; + gfunc3[j][i][k][n] = gfunc3[k][i][j][n]; + gfunc4[j][i][k][n] = gfunc4[k][i][j][n]; + gfunc5[j][i][k][n] = gfunc5[k][i][j][n]; + gfunc6[j][i][k][n] = gfunc6[k][i][j][n]; } } else { - if(npower==3) { - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf",&gpara[j][i][k][0],&gpara[j][i][k][1],&gpara[j][i][k][2],&gpara[j][i][k][3]); + for (int n = 0; n < npower + 1; n++) { + gpara[j][i][k][n] = gpara[k][i][j][n]; } - else if(npower==4) { - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf%lf",&gpara[j][i][k][0],&gpara[j][i][k][1],&gpara[j][i][k][2],&gpara[j][i][k][3],&gpara[j][i][k][4]); - } - else if(npower==5) { - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf%lf",&gpara[j][i][k][0],&gpara[j][i][k][1],&gpara[j][i][k][2],&gpara[j][i][k][3],&gpara[j][i][k][4]); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf",&gpara[j][i][k][5]); - } - else if(npower==6) { - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf%lf",&gpara[j][i][k][0],&gpara[j][i][k][1],&gpara[j][i][k][2],&gpara[j][i][k][3],&gpara[j][i][k][4]); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf",&gpara[j][i][k][5],&gpara[j][i][k][6]); - } - else if(npower==7) { - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf%lf",&gpara[j][i][k][0],&gpara[j][i][k][1],&gpara[j][i][k][2],&gpara[j][i][k][3],&gpara[j][i][k][4]); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf",&gpara[j][i][k][5],&gpara[j][i][k][6],&gpara[j][i][k][7]); - } - else if(npower==8) { - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf%lf",&gpara[j][i][k][0],&gpara[j][i][k][1],&gpara[j][i][k][2],&gpara[j][i][k][3],&gpara[j][i][k][4]); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf",&gpara[j][i][k][5],&gpara[j][i][k][6],&gpara[j][i][k][7],&gpara[j][i][k][8]); - } - else if(npower==9) { - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf%lf",&gpara[j][i][k][0],&gpara[j][i][k][1],&gpara[j][i][k][2],&gpara[j][i][k][3],&gpara[j][i][k][4]); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf%lf",&gpara[j][i][k][5],&gpara[j][i][k][6],&gpara[j][i][k][7],&gpara[j][i][k][8],&gpara[j][i][k][9]); - } - else if(npower==10) { - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf%lf",&gpara[j][i][k][0],&gpara[j][i][k][1],&gpara[j][i][k][2],&gpara[j][i][k][3],&gpara[j][i][k][4]); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf%lf%lf%lf%lf",&gpara[j][i][k][5],&gpara[j][i][k][6],&gpara[j][i][k][7],&gpara[j][i][k][8],&gpara[j][i][k][9]); - utils::sfgets(FLERR,s,MAXLINE,fp,filename,error); - sscanf(s,"%lf",&gpara[j][i][k][10]); - } - } - } - } else { - for(i=0;ircutall) - rcutall=rcut[i]; - if(rcut3[i]>rcutall) - rcutall=rcut3[i]; - rcutsq[i]=rcut[i]*rcut[i]; - rcutsq3[i]=rcut3[i]*rcut3[i]; - dr[i]=rcut[i]/((double)nr-1.0); - rdr[i]=1.0/dr[i]; - dr3[i]=rcut3[i]/((double)nr-1.0); - rdr3[i]=1.0/dr3[i]; - } - rctroot=rcutall; - dtheta=2.0/((double)ntheta-1.0); - rdtheta=1.0/dtheta; - dBO=1.0/((double)nBOt-1.0); - rdBO=1.0/(double)dBO; - for(i=0;ione(FLERR, e.what()); + } catch (FileReaderException & fre) { + error->one(FLERR, fre.what()); } - for(i=0;ime != 0){ + allocate_tables(); + allocate(); + } + MPI_Bcast(&rdBO,1,MPI_DOUBLE,0,world); MPI_Bcast(&dBO,1,MPI_DOUBLE,0,world); MPI_Bcast(&rdtheta,1,MPI_DOUBLE,0,world); @@ -5556,26 +5342,6 @@ void _noopt PairBOP::read_table(char *filename) } } -/* ---------------------------------------------------------------------- */ - -double PairBOP::cutoff(double rp,double vrcut,int mode,double r) -{ - double tmp,tmp_beta,tmp_alpha,cut_store; - - if(mode==1) { - tmp=(rsmall-rbig)*(r-rp)/(vrcut-rp)+rbig; - cut_store=(erfc(tmp)-erfc(rsmall))/(erfc(rbig)-erfc(rsmall)); - } - else { - tmp_beta=log(log(rbig)/log(rsmall))/log(rp/vrcut); - tmp_alpha=-log(rbig)/pow(rp,tmp_beta); - cut_store=(exp(-tmp_alpha*pow(r,tmp_beta))-exp(-tmp_alpha*pow(vrcut - ,tmp_beta)))/(exp(-tmp_alpha*pow(rp,tmp_beta))-exp(-tmp_alpha - *pow(vrcut,tmp_beta))); - } - return(cut_store); -} - /* ---------------------------------------------------------------------- memory usage of local atom-based arrays ------------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_bop.h b/src/MANYBODY/pair_bop.h index ea8da2844e..2d6962e27c 100644 --- a/src/MANYBODY/pair_bop.h +++ b/src/MANYBODY/pair_bop.h @@ -41,7 +41,6 @@ class PairBOP : public Pair { double memory_usage(); private: - int me; int maxneigh; // maximum size of neighbor list on this processor int maxneigh3; // maximum size of neighbor list on this processor int update_list; // check for changing maximum size of neighbor list @@ -199,17 +198,15 @@ class PairBOP : public Pair { void setPrepul(); void setSign(); void gneigh(); - void theta(); - void theta_mod(); double sigmaBo(int, int); double PiBo(int, int); void memory_theta_create(); void memory_theta_destroy(); void memory_theta_grow(); - double cutoff(double, double, int, double); void read_table(char *); void allocate(); + void allocate_tables(); void create_pi(int); void create_sigma(int); void destroy_pi(); diff --git a/src/MANYBODY/pair_comb.cpp b/src/MANYBODY/pair_comb.cpp index 2fc4caec7b..201b325bf3 100644 --- a/src/MANYBODY/pair_comb.cpp +++ b/src/MANYBODY/pair_comb.cpp @@ -34,11 +34,13 @@ #include "math_const.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; using namespace MathConst; -#define MAXLINE 1024 #define DELTA 4 #define PGDELTA 1 #define MAXNEIGH 24 @@ -580,192 +582,148 @@ double PairComb::init_one(int i, int j) void PairComb::read_file(char *file) { - int params_per_line = 49; - char **words = new char*[params_per_line+1]; - memory->sfree(params); - params = NULL; + params = nullptr; nparams = 0; maxparam = 0; // open file on proc 0 - - FILE *fp; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open COMB potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(lmp, file, "COMB"); + char * line; - // read each line out of file, skipping blank lines or leading '#' - // store line of params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next line + int ielement, jelement, kelement; - // strip comment, skip line if blank + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; + // load up parameter settings and error check their values - // concatenate additional lines until have params_per_line words + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].powerm = values.next_double(); + params[nparams].c = values.next_double(); + params[nparams].d = values.next_double(); + params[nparams].h = values.next_double(); + params[nparams].powern = values.next_double(); + params[nparams].beta = values.next_double(); + params[nparams].lam21 = values.next_double(); + params[nparams].lam22 = values.next_double(); + params[nparams].bigb1 = values.next_double(); + params[nparams].bigb2 = values.next_double(); + params[nparams].bigr = values.next_double(); + params[nparams].bigd = values.next_double(); + params[nparams].lam11 = values.next_double(); + params[nparams].lam12 = values.next_double(); + params[nparams].biga1 = values.next_double(); + params[nparams].biga2 = values.next_double(); + params[nparams].plp1 = values.next_double(); + params[nparams].plp3 = values.next_double(); + params[nparams].plp6 = values.next_double(); + params[nparams].a123 = values.next_double(); + params[nparams].aconf = values.next_double(); + params[nparams].addrep = values.next_double(); + params[nparams].romigb = values.next_double(); + params[nparams].romigc = values.next_double(); + params[nparams].romigd = values.next_double(); + params[nparams].romiga = values.next_double(); + params[nparams].QL1 = values.next_double(); + params[nparams].QU1 = values.next_double(); + params[nparams].DL1 = values.next_double(); + params[nparams].DU1 = values.next_double(); + params[nparams].QL2 = values.next_double(); + params[nparams].QU2 = values.next_double(); + params[nparams].DL2 = values.next_double(); + params[nparams].DU2 = values.next_double(); + params[nparams].chi = values.next_double(); + params[nparams].dj = values.next_double(); + params[nparams].dk = values.next_double(); + params[nparams].dl = values.next_double(); + params[nparams].dm = values.next_double(); + params[nparams].esm1 = values.next_double(); + params[nparams].cmn1 = values.next_double(); + params[nparams].cml1 = values.next_double(); + params[nparams].cmn2 = values.next_double(); + params[nparams].cml2 = values.next_double(); + params[nparams].coulcut = values.next_double(); + params[nparams].hfocor = values.next_double(); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + params[nparams].powermint = int(params[nparams].powerm); + + // parameter sanity checks + + if (params[nparams].lam11 < 0.0 || params[nparams].lam12 < 0.0 || + params[nparams].c < 0.0 || params[nparams].d < 0.0 || + params[nparams].powern < 0.0 || params[nparams].beta < 0.0 || + params[nparams].lam21 < 0.0 || params[nparams].lam22 < 0.0 || + params[nparams].bigb1< 0.0 || params[nparams].bigb2< 0.0 || + params[nparams].biga1< 0.0 || params[nparams].biga2< 0.0 || + params[nparams].bigr < 0.0 || params[nparams].bigd < 0.0 || + params[nparams].bigd > params[nparams].bigr || + params[nparams].powerm - params[nparams].powermint != 0.0 || + (params[nparams].powermint != 3 && params[nparams].powermint != 1) || + params[nparams].plp1 < 0.0 || params[nparams].plp3 < 0.0 || + params[nparams].plp6 < 0.0 || + params[nparams].a123 > 360.0 || params[nparams].aconf < 0.0 || + params[nparams].addrep < 0.0 || params[nparams].romigb < 0.0 || + params[nparams].romigc < 0.0 || params[nparams].romigd < 0.0 || + params[nparams].romiga < 0.0 || + params[nparams].QL1 > 0.0 || params[nparams].QU1 < 0.0 || + params[nparams].DL1 < 0.0 || params[nparams].DU1 > 0.0 || + params[nparams].QL2 > 0.0 || params[nparams].QU2 < 0.0 || + params[nparams].DL2 < 0.0 || params[nparams].DU2 > 0.0 || + params[nparams].chi < 0.0 || + // params[nparams].dj < 0.0 || params[nparams].dk < 0.0 || + // params[nparams].dl < 0.0 || params[nparams].dm < 0.0 || + params[nparams].esm1 < 0.0) + error->one(FLERR,"Illegal COMB parameter"); + + if (params[nparams].lam11 < params[nparams].lam21 || + params[nparams].lam12 < params[nparams].lam22 || + params[nparams].biga1< params[nparams].bigb1 || + params[nparams].biga2< params[nparams].bigb2) + error->one(FLERR,"Illegal COMB parameter"); + + nparams++; } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in COMB potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next line - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].powerm = atof(words[3]); - params[nparams].c = atof(words[4]); - params[nparams].d = atof(words[5]); - params[nparams].h = atof(words[6]); - params[nparams].powern = atof(words[7]); - params[nparams].beta = atof(words[8]); - params[nparams].lam21 = atof(words[9]); - params[nparams].lam22 = atof(words[10]); - params[nparams].bigb1 = atof(words[11]); - params[nparams].bigb2 = atof(words[12]); - params[nparams].bigr = atof(words[13]); - params[nparams].bigd = atof(words[14]); - params[nparams].lam11 = atof(words[15]); - params[nparams].lam12 = atof(words[16]); - params[nparams].biga1 = atof(words[17]); - params[nparams].biga2 = atof(words[18]); - params[nparams].plp1 = atof(words[19]); - params[nparams].plp3 = atof(words[20]); - params[nparams].plp6 = atof(words[21]); - params[nparams].a123 = atof(words[22]); - params[nparams].aconf= atof(words[23]); - params[nparams].addrep = atof(words[24]); - params[nparams].romigb = atof(words[25]); - params[nparams].romigc = atof(words[26]); - params[nparams].romigd = atof(words[27]); - params[nparams].romiga = atof(words[28]); - params[nparams].QL1 = atof(words[29]); - params[nparams].QU1 = atof(words[30]); - params[nparams].DL1 = atof(words[31]); - params[nparams].DU1 = atof(words[32]); - params[nparams].QL2 = atof(words[33]); - params[nparams].QU2 = atof(words[34]); - params[nparams].DL2 = atof(words[35]); - params[nparams].DU2 = atof(words[36]); - params[nparams].chi = atof(words[37]); - params[nparams].dj = atof(words[38]); - params[nparams].dk = atof(words[39]); - params[nparams].dl = atof(words[40]); - params[nparams].dm = atof(words[41]); - params[nparams].esm1 = atof(words[42]); - params[nparams].cmn1 = atof(words[43]); - params[nparams].cml1 = atof(words[44]); - params[nparams].cmn2 = atof(words[45]); - params[nparams].cml2 = atof(words[46]); - params[nparams].coulcut = atof(words[47]); - params[nparams].hfocor = atof(words[48]); - - params[nparams].powermint = int(params[nparams].powerm); - - // parameter sanity checks - - if (params[nparams].lam11 < 0.0 || params[nparams].lam12 < 0.0 || - params[nparams].c < 0.0 || params[nparams].d < 0.0 || - params[nparams].powern < 0.0 || params[nparams].beta < 0.0 || - params[nparams].lam21 < 0.0 || params[nparams].lam22 < 0.0 || - params[nparams].bigb1< 0.0 || params[nparams].bigb2< 0.0 || - params[nparams].biga1< 0.0 || params[nparams].biga2< 0.0 || - params[nparams].bigr < 0.0 || params[nparams].bigd < 0.0 || - params[nparams].bigd > params[nparams].bigr || - params[nparams].powerm - params[nparams].powermint != 0.0 || - (params[nparams].powermint != 3 && params[nparams].powermint != 1) || - params[nparams].plp1 < 0.0 || params[nparams].plp3 < 0.0 || - params[nparams].plp6 < 0.0 || - params[nparams].a123 > 360.0 || params[nparams].aconf < 0.0 || - params[nparams].addrep < 0.0 || params[nparams].romigb < 0.0 || - params[nparams].romigc < 0.0 || params[nparams].romigd < 0.0 || - params[nparams].romiga < 0.0 || - params[nparams].QL1 > 0.0 || params[nparams].QU1 < 0.0 || - params[nparams].DL1 < 0.0 || params[nparams].DU1 > 0.0 || - params[nparams].QL2 > 0.0 || params[nparams].QU2 < 0.0 || - params[nparams].DL2 < 0.0 || params[nparams].DU2 > 0.0 || - params[nparams].chi < 0.0 || -// params[nparams].dj < 0.0 || params[nparams].dk < 0.0 || -// params[nparams].dl < 0.0 || params[nparams].dm < 0.0 || - params[nparams].esm1 < 0.0) - error->all(FLERR,"Illegal COMB parameter"); - - if (params[nparams].lam11 < params[nparams].lam21 || - params[nparams].lam12 < params[nparams].lam22 || - params[nparams].biga1< params[nparams].bigb1 || - params[nparams].biga2< params[nparams].bigb2) - error->all(FLERR,"Illegal COMB parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_comb.h b/src/MANYBODY/pair_comb.h index 19788dfab1..7a3d279033 100644 --- a/src/MANYBODY/pair_comb.h +++ b/src/MANYBODY/pair_comb.h @@ -38,6 +38,8 @@ class PairComb : public Pair { virtual double yasu_char(double *, int &); double enegtot; + static const int NPARAMS_PER_LINE = 49; + protected: struct Param { double lam11,lam12,lam21,lam22; diff --git a/src/MANYBODY/pair_comb3.cpp b/src/MANYBODY/pair_comb3.cpp index bf66ea550a..a71edccab0 100644 --- a/src/MANYBODY/pair_comb3.cpp +++ b/src/MANYBODY/pair_comb3.cpp @@ -34,11 +34,12 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; using namespace MathConst; -#define MAXLINE 1024 #define DELTA 4 #define PGDELTA 1 #define MAXNEIGH 24 @@ -311,221 +312,153 @@ double PairComb3::init_one(int i, int j) void PairComb3::read_lib() { - const unsigned int MAXLIB = 1024; - int i,j,k,l,nwords,m; + int i,j,k,l,m; int ii,jj,kk,ll,mm,iii; - char s[MAXLIB]; - char **words = new char*[80]; - // open libraray file on proc 0 + // open library file on proc 0 if (comm->me == 0) { - const char filename[] = "lib.comb3"; - FILE *fp = force->open_potential(filename); - if (fp == NULL) error->one(FLERR,"Cannot open COMB3 lib.comb3 file"); + try { + PotentialFileReader reader(lmp, "lib.comb3", "COMB3"); + reader.next_dvector(ccutoff, 6); + reader.next_dvector(ch_a, 7); - // read and store at the same time - utils::sfgets(FLERR,s,MAXLIB,fp,filename,error); - utils::sfgets(FLERR,s,MAXLIB,fp,filename,error); - nwords = 0; - words[nwords++] = strtok(s," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue; - ccutoff[0] = atof(words[0]); - ccutoff[1] = atof(words[1]); - ccutoff[2] = atof(words[2]); - ccutoff[3] = atof(words[3]); - ccutoff[4] = atof(words[4]); - ccutoff[5] = atof(words[5]); + ValueTokenizer values = reader.next_values(3); + nsplpcn = values.next_int(); + nsplrad = values.next_int(); + nspltor = values.next_int(); - utils::sfgets(FLERR,s,MAXLIB,fp,filename,error); - nwords = 0; - words[nwords++] = strtok(s," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue; - ch_a[0] = atof(words[0]); - ch_a[1] = atof(words[1]); - ch_a[2] = atof(words[2]); - ch_a[3] = atof(words[3]); - ch_a[4] = atof(words[4]); - ch_a[5] = atof(words[5]); - ch_a[6] = atof(words[6]); + values = reader.next_values(3); + maxx = values.next_int(); + maxy = values.next_int(); + maxz = values.next_int(); - utils::sfgets(FLERR,s,MAXLIB,fp,filename,error); - nwords = 0; - words[nwords++] = strtok(s," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue; - nsplpcn = atoi(words[0]); - nsplrad = atoi(words[1]); - nspltor = atoi(words[2]); + values = reader.next_values(3); + maxxc = values.next_int(); + maxyc = values.next_int(); + maxconj = values.next_int(); - utils::sfgets(FLERR,s,MAXLIB,fp,filename,error); - nwords = 0; - words[nwords++] = strtok(s," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue; - maxx = atoi(words[0]); - maxy = atoi(words[1]); - maxz = atoi(words[2]); + for (l = 0; l < nsplpcn; l++) { + values = reader.next_values(3); + values.skip(1); + maxxcn[l] = values.next_int(); + vmaxxcn[l] = values.next_double(); + dvmaxxcn[l] = values.next_double(); + } - utils::sfgets(FLERR,s,MAXLIB,fp,filename,error); - nwords = 0; - words[nwords++] = strtok(s," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue; - maxxc = atoi(words[0]); - maxyc = atoi(words[1]); - maxconj = atoi(words[2]); + ntab = reader.next_int(); - for (l=0; lone(FLERR, fre.what()); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); + } } k = 0; @@ -584,211 +517,163 @@ void PairComb3::read_lib() MPI_Bcast(&iin2[0][0],32,MPI_INT,0,world); MPI_Bcast(&iin3[0][0],192,MPI_INT,0,world); - delete [] words; } /* ---------------------------------------------------------------------- */ void PairComb3::read_file(char *file) { - int params_per_line = 74; - char **words = new char*[params_per_line+1]; - - if (params) delete [] params; - params = NULL; + memory->sfree(params); + params = nullptr; nparams = 0; + maxparam = 0; // open file on proc 0 - - FILE *fp; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open COMB3 potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(lmp, file, "COMB3"); + char * line; - // read each line out of file, skipping blank lines or leading '#' - // store line of params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; - nwords=0; - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - // strip comment, skip line if blank + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next line + int ielement, jelement, kelement; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - nwords = atom->count_words(line); - if (nwords == 0) continue; + // load up parameter settings and error check their values - // concatenate additional lines until have params_per_line words + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } - while (nwords < params_per_line) { - n = strlen(line); - - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].ielementgp = values.next_int(); + params[nparams].jelementgp = values.next_int(); + params[nparams].kelementgp = values.next_int(); + params[nparams].ang_flag = values.next_int(); + params[nparams].pcn_flag = values.next_int(); + params[nparams].rad_flag = values.next_int(); + params[nparams].tor_flag = values.next_int(); + params[nparams].vdwflag = values.next_double(); + params[nparams].powerm = values.next_double(); + params[nparams].veps = values.next_double(); + params[nparams].vsig = values.next_double(); + params[nparams].paaa = values.next_double(); + params[nparams].pbbb = values.next_double(); + params[nparams].lami = values.next_double(); + params[nparams].alfi = values.next_double(); + params[nparams].powern = values.next_double(); + params[nparams].QL = values.next_double(); + params[nparams].QU = values.next_double(); + params[nparams].DL = values.next_double(); + params[nparams].DU = values.next_double(); + params[nparams].qmin = values.next_double(); + params[nparams].qmax = values.next_double(); + params[nparams].chi = values.next_double(); + params[nparams].dj = values.next_double(); + params[nparams].dk = values.next_double(); + params[nparams].dl = values.next_double(); + params[nparams].esm = values.next_double(); + params[nparams].cmn1 = values.next_double(); + params[nparams].cmn2 = values.next_double(); + params[nparams].pcmn1 = values.next_double(); + params[nparams].pcmn2 = values.next_double(); + params[nparams].coulcut = values.next_double(); + params[nparams].polz = values.next_double(); + params[nparams].curl = values.next_double(); + params[nparams].curlcut1 = values.next_double(); + params[nparams].curlcut2 = values.next_double(); + params[nparams].curl0 = values.next_double(); + params[nparams].alpha1 = values.next_double(); + params[nparams].bigB1 = values.next_double(); + params[nparams].alpha2 = values.next_double(); + params[nparams].bigB2 = values.next_double(); + params[nparams].alpha3 = values.next_double(); + params[nparams].bigB3 = values.next_double(); + params[nparams].lambda = values.next_double(); + params[nparams].bigA = values.next_double(); + params[nparams].beta = values.next_double(); + params[nparams].bigr = values.next_double(); + params[nparams].bigd = values.next_double(); + params[nparams].pcos6 = values.next_double(); + params[nparams].pcos5 = values.next_double(); + params[nparams].pcos4 = values.next_double(); + params[nparams].pcos3 = values.next_double(); + params[nparams].pcos2 = values.next_double(); + params[nparams].pcos1 = values.next_double(); + params[nparams].pcos0 = values.next_double(); + params[nparams].pcna = values.next_double(); + params[nparams].pcnb = values.next_double(); + params[nparams].pcnc = values.next_double(); + params[nparams].pcnd = values.next_double(); + params[nparams].p6p0 = values.next_double(); + params[nparams].p6p1 = values.next_double(); + params[nparams].p6p2 = values.next_double(); + params[nparams].p6p3 = values.next_double(); + params[nparams].p6p4 = values.next_double(); + params[nparams].p6p5 = values.next_double(); + params[nparams].p6p6 = values.next_double(); + params[nparams].ptork1 = values.next_double(); + params[nparams].ptork2 = values.next_double(); + params[nparams].addrepr = values.next_double(); + params[nparams].addrep = values.next_double(); + params[nparams].pcross = values.next_double(); + params[nparams].powermint = int(params[nparams].powerm); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + // parameter sanity checks + + if (params[nparams].lambda < 0.0 || params[nparams].powern < 0.0 || + params[nparams].beta < 0.0 || params[nparams].alpha1 < 0.0 || + params[nparams].bigB1< 0.0 || params[nparams].bigA< 0.0 || + params[nparams].bigB2< 0.0 || params[nparams].alpha2 <0.0 || + params[nparams].bigB3< 0.0 || params[nparams].alpha3 <0.0 || + params[nparams].bigr < 0.0 || params[nparams].bigd < 0.0 || + params[nparams].bigd > params[nparams].bigr || + params[nparams].powerm - params[nparams].powermint != 0.0 || + params[nparams].addrepr < 0.0 || params[nparams].powermint < 1.0 || + params[nparams].QL > 0.0 || params[nparams].QU < 0.0 || + params[nparams].DL < 0.0 || params[nparams].DU > 0.0 || + params[nparams].pcross < 0.0 || + params[nparams].esm < 0.0 || params[nparams].veps < 0.0 || + params[nparams].vsig < 0.0 || params[nparams].vdwflag < 0.0 + ) + error->one(FLERR,"Illegal COMB3 parameter"); + + nparams++; } - if (nwords != params_per_line){ - error->all(FLERR,"Incorrect format in COMB3 potential file"); -} - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((nwords <= params_per_line) - && (words[nwords++] = strtok(NULL," \t\n\r\f"))) { - continue; - } - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next line - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].ielementgp = atoi(words[3]); - params[nparams].jelementgp = atoi(words[4]); - params[nparams].kelementgp = atoi(words[5]); - params[nparams].ang_flag = atoi(words[6]); - params[nparams].pcn_flag = atoi(words[7]); - params[nparams].rad_flag = atoi(words[8]); - params[nparams].tor_flag = atoi(words[9]); - params[nparams].vdwflag = atof(words[10]); - params[nparams].powerm = atof(words[11]); - params[nparams].veps = atof(words[12]); - params[nparams].vsig = atof(words[13]); - params[nparams].paaa = atof(words[14]); - params[nparams].pbbb = atof(words[15]); - params[nparams].lami = atof(words[16]); - params[nparams].alfi = atof(words[17]); - params[nparams].powern = atof(words[18]); - params[nparams].QL = atof(words[19]); - params[nparams].QU = atof(words[20]); - params[nparams].DL = atof(words[21]); - params[nparams].DU = atof(words[22]); - params[nparams].qmin = atof(words[23]); - params[nparams].qmax = atof(words[24]); - params[nparams].chi = atof(words[25]); - params[nparams].dj = atof(words[26]); - params[nparams].dk = atof(words[27]); - params[nparams].dl = atof(words[28]); - params[nparams].esm = atof(words[29]); - params[nparams].cmn1 = atof(words[30]); - params[nparams].cmn2 = atof(words[31]); - params[nparams].pcmn1 = atof(words[32]); - params[nparams].pcmn2 = atof(words[33]); - params[nparams].coulcut = atof(words[34]); - params[nparams].polz = atof(words[35]); - params[nparams].curl = atof(words[36]); - params[nparams].curlcut1 = atof(words[37]); - params[nparams].curlcut2 = atof(words[38]); - params[nparams].curl0 = atof(words[39]); - params[nparams].alpha1 = atof(words[40]); - params[nparams].bigB1 = atof(words[41]); - params[nparams].alpha2 = atof(words[42]); - params[nparams].bigB2 = atof(words[43]); - params[nparams].alpha3 = atof(words[44]); - params[nparams].bigB3 = atof(words[45]); - params[nparams].lambda = atof(words[46]); - params[nparams].bigA = atof(words[47]); - params[nparams].beta = atof(words[48]); - params[nparams].bigr = atof(words[49]); - params[nparams].bigd = atof(words[50]); - params[nparams].pcos6 = atof(words[51]); - params[nparams].pcos5 = atof(words[52]); - params[nparams].pcos4 = atof(words[53]); - params[nparams].pcos3 = atof(words[54]); - params[nparams].pcos2 = atof(words[55]); - params[nparams].pcos1 = atof(words[56]); - params[nparams].pcos0 = atof(words[57]); - params[nparams].pcna = atof(words[58]); - params[nparams].pcnb = atof(words[59]); - params[nparams].pcnc = atof(words[60]); - params[nparams].pcnd = atof(words[61]); - params[nparams].p6p0 = atof(words[62]); - params[nparams].p6p1 = atof(words[63]); - params[nparams].p6p2 = atof(words[64]); - params[nparams].p6p3 = atof(words[65]); - params[nparams].p6p4 = atof(words[66]); - params[nparams].p6p5 = atof(words[67]); - params[nparams].p6p6 = atof(words[68]); - params[nparams].ptork1=atof(words[69]); - params[nparams].ptork2=atof(words[70]); - params[nparams].addrepr=atof(words[71]); - params[nparams].addrep=atof(words[72]); - params[nparams].pcross = atof(words[73]); - params[nparams].powermint = int(params[nparams].powerm); - - // parameter sanity checks - - if (params[nparams].lambda < 0.0 || params[nparams].powern < 0.0 || - params[nparams].beta < 0.0 || params[nparams].alpha1 < 0.0 || - params[nparams].bigB1< 0.0 || params[nparams].bigA< 0.0 || - params[nparams].bigB2< 0.0 || params[nparams].alpha2 <0.0 || - params[nparams].bigB3< 0.0 || params[nparams].alpha3 <0.0 || - params[nparams].bigr < 0.0 || params[nparams].bigd < 0.0 || - params[nparams].bigd > params[nparams].bigr || - params[nparams].powerm - params[nparams].powermint != 0.0 || - params[nparams].addrepr < 0.0 || params[nparams].powermint < 1.0 || - params[nparams].QL > 0.0 || params[nparams].QU < 0.0 || - params[nparams].DL < 0.0 || params[nparams].DU > 0.0 || - params[nparams].pcross < 0.0 || - params[nparams].esm < 0.0 || params[nparams].veps < 0.0 || - params[nparams].vsig < 0.0 || params[nparams].vdwflag < 0.0 - ) - error->all(FLERR,"Illegal COMB3 parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_comb3.h b/src/MANYBODY/pair_comb3.h index 210f843139..567859127b 100644 --- a/src/MANYBODY/pair_comb3.h +++ b/src/MANYBODY/pair_comb3.h @@ -37,8 +37,10 @@ class PairComb3 : public Pair { virtual double combqeq(double *, int &); double enegtot; - // general potential parameters + static const int NPARAMS_PER_LINE = 74; + protected: + // general potential parameters struct Param { int ielement,jelement,kelement,powermint; int ielementgp,jelementgp,kelementgp; //element group diff --git a/src/MANYBODY/pair_eam.cpp b/src/MANYBODY/pair_eam.cpp index a1bc6e1eb4..ec409d1786 100644 --- a/src/MANYBODY/pair_eam.cpp +++ b/src/MANYBODY/pair_eam.cpp @@ -29,6 +29,8 @@ #include "error.h" #include "update.h" #include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; @@ -462,54 +464,57 @@ void PairEAM::read_file(char *filename) { Funcfl *file = &funcfl[nfuncfl-1]; - int me = comm->me; - FILE *fptr; - char line[MAXLINE]; + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(lmp, filename, "EAM"); - if (me == 0) { - fptr = force->open_potential(filename); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EAM potential file %s",filename); - error->one(FLERR,str); + try { + char * line = nullptr; + + reader.skip_line(); + + ValueTokenizer values = reader.next_values(2); + values.next_int(); // ignore + file->mass = values.next_double(); + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->frho, (file->nrho+1), "pair:frho"); + memory->create(file->rhor, (file->nr+1), "pair:rhor"); + memory->create(file->zr, (file->nr+1), "pair:zr"); + + reader.next_dvector(&file->frho[1], file->nrho); + reader.next_dvector(&file->zr[1], file->nr); + reader.next_dvector(&file->rhor[1], file->nr); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - int tmp,nwords; - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - sscanf(line,"%d %lg",&tmp,&file->mass); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - nwords = sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + MPI_Bcast(&file->mass, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + if(comm->me != 0) { + memory->create(file->frho, (file->nrho+1), "pair:frho"); + memory->create(file->rhor, (file->nr+1), "pair:rhor"); + memory->create(file->zr, (file->nr+1), "pair:zr"); } - MPI_Bcast(&nwords,1,MPI_INT,0,world); - MPI_Bcast(&file->mass,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); - - if ((nwords != 5) || (file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) - error->all(FLERR,"Invalid EAM potential file"); - - memory->create(file->frho,(file->nrho+1),"pair:frho"); - memory->create(file->rhor,(file->nr+1),"pair:rhor"); - memory->create(file->zr,(file->nr+1),"pair:zr"); - - if (me == 0) grab(fptr,file->nrho,&file->frho[1]); - MPI_Bcast(&file->frho[1],file->nrho,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nr,&file->zr[1]); - MPI_Bcast(&file->zr[1],file->nr,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nr,&file->rhor[1]); - MPI_Bcast(&file->rhor[1],file->nr,MPI_DOUBLE,0,world); - - if (me == 0) fclose(fptr); + MPI_Bcast(&file->frho[1], file->nrho, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->zr[1], file->nr, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->rhor[1], file->nr, MPI_DOUBLE, 0, world); } /* ---------------------------------------------------------------------- @@ -782,26 +787,6 @@ void PairEAM::interpolate(int n, double delta, double *f, double **spline) } } -/* ---------------------------------------------------------------------- - grab n values from file fp and put them in list - values can be several to a line - only called by proc 0 -------------------------------------------------------------------------- */ - -void PairEAM::grab(FILE *fptr, int n, double *list) -{ - char *ptr; - char line[MAXLINE]; - - int i = 0; - while (i < n) { - utils::sfgets(FLERR,line,MAXLINE,fptr,NULL,error); - ptr = strtok(line," \t\n\r\f"); - if (ptr) list[i++] = atof(ptr); - while ((ptr = strtok(NULL," \t\n\r\f"))) list[i++] = atof(ptr); - } -} - /* ---------------------------------------------------------------------- */ double PairEAM::single(int i, int j, int itype, int jtype, diff --git a/src/MANYBODY/pair_eam.h b/src/MANYBODY/pair_eam.h index d98dba1e66..ed525a471c 100644 --- a/src/MANYBODY/pair_eam.h +++ b/src/MANYBODY/pair_eam.h @@ -107,7 +107,6 @@ class PairEAM : public Pair { virtual void allocate(); virtual void array2spline(); void interpolate(int, double, double *, double **); - void grab(FILE *, int, double *); virtual void read_file(char *); virtual void file2array(); diff --git a/src/MANYBODY/pair_eam_alloy.cpp b/src/MANYBODY/pair_eam_alloy.cpp index a9622f9e07..d164682e9e 100644 --- a/src/MANYBODY/pair_eam_alloy.cpp +++ b/src/MANYBODY/pair_eam_alloy.cpp @@ -24,11 +24,11 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - /* ---------------------------------------------------------------------- */ PairEAMAlloy::PairEAMAlloy(LAMMPS *lmp) : PairEAM(lmp) @@ -61,7 +61,7 @@ void PairEAMAlloy::coeff(int narg, char **arg) if (setfl) { for (i = 0; i < setfl->nelements; i++) delete [] setfl->elements[i]; delete [] setfl->elements; - delete [] setfl->mass; + memory->destroy(setfl->mass); memory->destroy(setfl->frho); memory->destroy(setfl->rhor); memory->destroy(setfl->z2r); @@ -117,98 +117,107 @@ void PairEAMAlloy::read_file(char *filename) { Setfl *file = setfl; - // open potential file + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(lmp, filename, "EAM"); - int me = comm->me; - FILE *fptr; - char line[MAXLINE]; + try { + reader.skip_line(); + reader.skip_line(); + reader.skip_line(); - if (me == 0) { - fptr = force->open_potential(filename); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EAM potential file %s",filename); - error->one(FLERR,str); + // extract element names from nelements line + ValueTokenizer values = reader.next_values(1); + file->nelements = values.next_int(); + + if (values.count() != file->nelements + 1) + error->one(FLERR,"Incorrect element names in EAM potential file"); + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + const std::string word = values.next_string(); + const int n = word.length() + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i], word.c_str()); + } + + // + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + + for (int i = 0; i < file->nelements; i++) { + values = reader.next_values(2); + values.next_int(); // ignore + file->mass[i] = values.next_double(); + + reader.next_dvector(&file->frho[i][1], file->nrho); + reader.next_dvector(&file->rhor[i][1], file->nr); + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->z2r[i][j][1], file->nr); + } + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - // read and broadcast header - // extract element names from nelements line + // broadcast potential information + MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world); - int n; - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - n = strlen(line) + 1; + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + // allocate memory on other procs + if (comm->me != 0) { + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr; + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - sscanf(line,"%d",&file->nelements); - int nwords = atom->count_words(line); - if (nwords != file->nelements + 1) - error->all(FLERR,"Incorrect element names in EAM potential file"); - - char **words = new char*[file->nelements+1]; - nwords = 0; - strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - file->elements = new char*[file->nelements]; + // broadcast file->elements string array for (int i = 0; i < file->nelements; i++) { - n = strlen(words[i]) + 1; - file->elements[i] = new char[n]; - strcpy(file->elements[i],words[i]); - } - delete [] words; - - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - nwords = sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + int n; + if (comm->me == 0) n = strlen(file->elements[i]) + 1; + MPI_Bcast(&n, 1, MPI_INT, 0, world); + if (comm->me != 0) file->elements[i] = new char[n]; + MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world); } - MPI_Bcast(&nwords,1,MPI_INT,0,world); - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + // broadcast file->mass, frho, rhor + for (int i = 0; i < file->nelements; i++) { + MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->rhor[i][1], file->nr, MPI_DOUBLE, 0, world); + } - if ((nwords != 5) || (file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) - error->all(FLERR,"Invalid EAM potential file"); - - file->mass = new double[file->nelements]; - memory->create(file->frho,file->nelements,file->nrho+1,"pair:frho"); - memory->create(file->rhor,file->nelements,file->nr+1,"pair:rhor"); - memory->create(file->z2r,file->nelements,file->nelements,file->nr+1, - "pair:z2r"); - - int i,j,tmp; - for (i = 0; i < file->nelements; i++) { - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - sscanf(line,"%d %lg",&tmp,&file->mass[i]); + // broadcast file->z2r + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world); } - MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); - MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); - if (me == 0) grab(fptr,file->nr,&file->rhor[i][1]); - MPI_Bcast(&file->rhor[i][1],file->nr,MPI_DOUBLE,0,world); } - - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); - MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); - } - - // close the potential file - - if (me == 0) fclose(fptr); } /* ---------------------------------------------------------------------- diff --git a/src/MANYBODY/pair_eam_cd.cpp b/src/MANYBODY/pair_eam_cd.cpp index 28004eae7f..076f6d5e7d 100644 --- a/src/MANYBODY/pair_eam_cd.cpp +++ b/src/MANYBODY/pair_eam_cd.cpp @@ -28,6 +28,7 @@ #include "neigh_list.h" #include "memory.h" #include "error.h" +#include "tokenizer.h" using namespace LAMMPS_NS; @@ -512,16 +513,20 @@ void PairEAMCD::read_h_coeff(char *filename) while(fgets(nextline, MAXLINE, fptr) != NULL) { strcpy(line, nextline); } - char* ptr = strtok(line, " \t\n\r\f"); - int degree = atoi(ptr); + + ValueTokenizer values(line); + int degree = values.next_int(); nhcoeff = degree+1; + + if (values.count() != nhcoeff + 1 || nhcoeff < 1) + error->one(FLERR, "Failed to read h(x) function coefficients in EAM file."); + hcoeff = new double[nhcoeff]; + int i = 0; - while((ptr = strtok(NULL," \t\n\r\f")) != NULL && i < nhcoeff) { - hcoeff[i++] = atof(ptr); + while(values.has_next()) { + hcoeff[i++] = values.next_double(); } - if (i != nhcoeff || nhcoeff < 1) - error->one(FLERR,"Failed to read h(x) function coefficients from EAM file."); // Close the potential file. diff --git a/src/MANYBODY/pair_eam_fs.cpp b/src/MANYBODY/pair_eam_fs.cpp index c91e7b5298..5d2339c4b5 100644 --- a/src/MANYBODY/pair_eam_fs.cpp +++ b/src/MANYBODY/pair_eam_fs.cpp @@ -24,11 +24,11 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - /* ---------------------------------------------------------------------- */ PairEAMFS::PairEAMFS(LAMMPS *lmp) : PairEAM(lmp) @@ -61,7 +61,7 @@ void PairEAMFS::coeff(int narg, char **arg) if (fs) { for (i = 0; i < fs->nelements; i++) delete [] fs->elements[i]; delete [] fs->elements; - delete [] fs->mass; + memory->destroy(fs->mass); memory->destroy(fs->frho); memory->destroy(fs->rhor); memory->destroy(fs->z2r); @@ -117,103 +117,115 @@ void PairEAMFS::read_file(char *filename) { Fs *file = fs; - // open potential file + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(lmp, filename, "EAM"); - int me = comm->me; - FILE *fptr; - char line[MAXLINE]; + try { + char * line = nullptr; - if (me == 0) { - fptr = force->open_potential(filename); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EAM potential file %s",filename); - error->one(FLERR,str); + reader.skip_line(); + reader.skip_line(); + reader.skip_line(); + + // extract element names from nelements line + ValueTokenizer values = reader.next_values(1); + file->nelements = values.next_int(); + + if (values.count() != file->nelements + 1) + error->one(FLERR,"Incorrect element names in EAM potential file"); + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + const std::string word = values.next_string(); + const int n = word.length() + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i], word.c_str()); + } + + // + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + + for (int i = 0; i < file->nelements; i++) { + values = reader.next_values(2); + values.next_int(); // ignore + file->mass[i] = values.next_double(); + + reader.next_dvector(&file->frho[i][1], file->nrho); + + for (int j = 0; j < file->nelements; j++) { + reader.next_dvector(&file->rhor[i][j][1], file->nr); + } + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->z2r[i][j][1], file->nr); + } + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - // read and broadcast header - // extract element names from nelements line + // broadcast potential information + MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world); - int n; - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - n = strlen(line) + 1; + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + // allocate memory on other procs + if (comm->me != 0) { + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr; + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - sscanf(line,"%d",&file->nelements); - int nwords = atom->count_words(line); - if (nwords != file->nelements + 1) - error->all(FLERR,"Incorrect element names in EAM potential file"); - - char **words = new char*[file->nelements+1]; - nwords = 0; - strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - file->elements = new char*[file->nelements]; + // broadcast file->elements string array for (int i = 0; i < file->nelements; i++) { - n = strlen(words[i]) + 1; - file->elements[i] = new char[n]; - strcpy(file->elements[i],words[i]); - } - delete [] words; - - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - nwords = sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + int n; + if (comm->me == 0) n = strlen(file->elements[i]) + 1; + MPI_Bcast(&n, 1, MPI_INT, 0, world); + if (comm->me != 0) file->elements[i] = new char[n]; + MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world); } - MPI_Bcast(&nwords,1,MPI_INT,0,world); - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + // broadcast file->mass, frho, rhor + for (int i = 0; i < file->nelements; i++) { + MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world); - if ((nwords != 5) || (file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) - error->all(FLERR,"Invalid EAM potential file"); - - file->mass = new double[file->nelements]; - memory->create(file->frho,file->nelements,file->nrho+1, - "pair:frho"); - memory->create(file->rhor,file->nelements,file->nelements, - file->nr+1,"pair:rhor"); - memory->create(file->z2r,file->nelements,file->nelements, - file->nr+1,"pair:z2r"); - - int i,j,tmp; - for (i = 0; i < file->nelements; i++) { - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - sscanf(line,"%d %lg",&tmp,&file->mass[i]); - } - MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); - MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); - - for (j = 0; j < file->nelements; j++) { - if (me == 0) grab(fptr,file->nr,&file->rhor[i][j][1]); - MPI_Bcast(&file->rhor[i][j][1],file->nr,MPI_DOUBLE,0,world); + for (int j = 0; j < file->nelements; j++) { + MPI_Bcast(&file->rhor[i][j][1], file->nr, MPI_DOUBLE, 0, world); } } - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); - MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); + // broadcast file->z2r + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world); } - - // close the potential file - - if (me == 0) fclose(fptr); + } } /* ---------------------------------------------------------------------- diff --git a/src/MANYBODY/pair_eim.cpp b/src/MANYBODY/pair_eim.cpp index dc1c7fa019..0d552caebc 100644 --- a/src/MANYBODY/pair_eim.cpp +++ b/src/MANYBODY/pair_eim.cpp @@ -27,11 +27,12 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" +#include "fmt/format.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - /* ---------------------------------------------------------------------- */ PairEIM::PairEIM(LAMMPS *lmp) : Pair(lmp) @@ -451,20 +452,6 @@ double PairEIM::init_one(int i, int j) void PairEIM::read_file(char *filename) { - // open potential file - - int me = comm->me; - FILE *fptr; - - if (me == 0) { - fptr = force->open_potential(filename); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EIM potential file %s",filename); - error->one(FLERR,str); - } - } - int npair = nelements*(nelements+1)/2; setfl->ielement = new int[nelements]; setfl->mass = new double[nelements]; @@ -488,52 +475,55 @@ void PairEIM::read_file(char *filename) setfl->rs = new double[npair]; setfl->tp = new int[npair]; - if (me == 0) - if (!grabglobal(fptr)) - error->one(FLERR,"Could not grab global entry from EIM potential file"); - MPI_Bcast(&setfl->division,1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->rbig,1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->rsmall,1,MPI_DOUBLE,0,world); + // read potential file + if( comm->me == 0) { + EIMPotentialFileReader reader(lmp, filename); - for (int i = 0; i < nelements; i++) { - if (me == 0) - if (!grabsingle(fptr,i)) - error->one(FLERR,"Could not grab element entry from EIM potential file"); - MPI_Bcast(&setfl->ielement[i],1,MPI_INT,0,world); - MPI_Bcast(&setfl->mass[i],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->negativity[i],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->ra[i],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->ri[i],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->Ec[i],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->q0[i],1,MPI_DOUBLE,0,world); - } + reader.get_global(setfl); - for (int i = 0; i < nelements; i++) { - for (int j = i; j < nelements; j++) { - int ij; - if (i == j) ij = i; - else if (i < j) ij = nelements*(i+1) - (i+1)*(i+2)/2 + j; - else ij = nelements*(j+1) - (j+1)*(j+2)/2 + i; - if (me == 0) - if (grabpair(fptr,i,j) == 0) - error->one(FLERR,"Could not grab pair entry from EIM potential file"); - MPI_Bcast(&setfl->rcutphiA[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->rcutphiR[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->Eb[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->r0[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->alpha[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->beta[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->rcutq[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->Asigma[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->rq[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->rcutsigma[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->Ac[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->zeta[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->rs[ij],1,MPI_DOUBLE,0,world); - MPI_Bcast(&setfl->tp[ij],1,MPI_INT,0,world); + for (int i = 0; i < nelements; i++) { + reader.get_element(setfl, i, elements[i]); + } + + for (int i = 0; i < nelements; i++) { + for (int j = i; j < nelements; j++) { + int ij; + if (i == j) ij = i; + else if (i < j) ij = nelements*(i+1) - (i+1)*(i+2)/2 + j; + else ij = nelements*(j+1) - (j+1)*(j+2)/2 + i; + reader.get_pair(setfl, ij, elements[i], elements[j]); + } } } + // broadcast potential information to other procs + MPI_Bcast(&setfl->division, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&setfl->rbig, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&setfl->rsmall, 1, MPI_DOUBLE, 0, world); + + MPI_Bcast(setfl->ielement, nelements, MPI_INT, 0, world); + MPI_Bcast(setfl->mass, nelements, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->negativity, nelements, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->ra, nelements, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->ri, nelements, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->Ec, nelements, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->q0, nelements, MPI_DOUBLE, 0, world); + + MPI_Bcast(setfl->rcutphiA, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->rcutphiR, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->Eb, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->r0, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->alpha, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->beta, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->rcutq, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->Asigma, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->rq, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->rcutsigma, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->Ac, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->zeta, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->rs, npair, MPI_DOUBLE, 0, world); + MPI_Bcast(setfl->tp, npair, MPI_INT, 0, world); + setfl->nr = 5000; setfl->cut = 0.0; for (int i = 0; i < npair; i++) { @@ -602,10 +592,6 @@ void PairEIM::read_file(char *filename) } } } - - // close the potential file - - if (me == 0) fclose(fptr); } /* ---------------------------------------------------------------------- @@ -879,114 +865,6 @@ void PairEIM::interpolate(int n, double delta, double *f, } } -/* ---------------------------------------------------------------------- - grab global line from file and store info in setfl - return 0 if error -------------------------------------------------------------------------- */ - -int PairEIM::grabglobal(FILE *fptr) -{ - char line[MAXLINE]; - - char *pch = NULL, *data = NULL; - while (pch == NULL) { - if (fgets(line,MAXLINE,fptr) == NULL) break; - pch = strstr(line,"global"); - if (pch != NULL) { - data = strtok (line," \t\n\r\f"); - data = strtok (NULL,"?"); - sscanf(data,"%lg %lg %lg",&setfl->division,&setfl->rbig,&setfl->rsmall); - } - } - if (pch == NULL) return 0; - return 1; -} - -/* ---------------------------------------------------------------------- - grab elemental line from file and store info in setfl - return 0 if error -------------------------------------------------------------------------- */ - -int PairEIM::grabsingle(FILE *fptr, int i) -{ - char line[MAXLINE]; - - rewind(fptr); - - char *pch1 = NULL, *pch2 = NULL, *data = NULL; - while (pch1 == NULL || pch2 == NULL) { - if (fgets(line,MAXLINE,fptr) == NULL) break; - pch1 = strtok (line," \t\n\r\f"); - pch1 = strstr(pch1,"element:"); - if (pch1 != NULL) { - pch2 = strtok(NULL, " \t\n\r\f"); - if (pch2 != NULL) { - data = strtok (NULL, "?"); - if (strcmp(pch2,elements[i]) == 0) { - sscanf(data,"%d %lg %lg %lg %lg %lg %lg",&setfl->ielement[i], - &setfl->mass[i],&setfl->negativity[i],&setfl->ra[i], - &setfl->ri[i],&setfl->Ec[i],&setfl->q0[i]); - } else pch2 = NULL; - } - } - } - if (pch1 == NULL || pch2 == NULL) return 0; - return 1; -} - -/* ---------------------------------------------------------------------- - grab pair line from file and store info in setfl - return 0 if error -------------------------------------------------------------------------- */ - -int PairEIM::grabpair(FILE *fptr, int i, int j) -{ - char line[MAXLINE]; - - rewind(fptr); - - int ij; - if (i == j) ij = i; - else if (i < j) ij = nelements*(i+1) - (i+1)*(i+2)/2 + j; - else ij = nelements*(j+1) - (j+1)*(j+2)/2 + i; - - char *pch1 = NULL, *pch2 = NULL, *pch3 = NULL, *data = NULL; - while (pch1 == NULL || pch2 == NULL || pch3 == NULL) { - if (fgets(line,MAXLINE,fptr) == NULL) break; - pch1 = strtok (line," \t\n\r\f"); - pch1 = strstr(pch1,"pair:"); - if (pch1 != NULL) { - pch2 = strtok (NULL, " \t\n\r\f"); - if (pch2 != NULL) pch3 = strtok (NULL, " \t\n\r\f"); - if (pch3 != NULL) data = strtok (NULL, "?"); - if ((pch2 != NULL) && (pch3 != NULL)) { - if ((strcmp(pch2,elements[i]) == 0 && - strcmp(pch3,elements[j]) == 0) || - (strcmp(pch2,elements[j]) == 0 && - strcmp(pch3,elements[i]) == 0)) { - sscanf(data,"%lg %lg %lg %lg %lg", - &setfl->rcutphiA[ij],&setfl->rcutphiR[ij], - &setfl->Eb[ij],&setfl->r0[ij],&setfl->alpha[ij]); - utils::sfgets(FLERR,line,MAXLINE,fptr,NULL,error); - sscanf(line,"%lg %lg %lg %lg %lg", - &setfl->beta[ij],&setfl->rcutq[ij],&setfl->Asigma[ij], - &setfl->rq[ij],&setfl->rcutsigma[ij]); - utils::sfgets(FLERR,line,MAXLINE,fptr,NULL,error); - sscanf(line,"%lg %lg %lg %d", - &setfl->Ac[ij],&setfl->zeta[ij],&setfl->rs[ij], - &setfl->tp[ij]); - } else { - pch1 = NULL; - pch2 = NULL; - pch3 = NULL; - } - } - } - } - if (pch1 == NULL || pch2 == NULL || pch3 == NULL) return 0; - return 1; -} - /* ---------------------------------------------------------------------- cutoff function ------------------------------------------------------------------------- */ @@ -1171,3 +1049,219 @@ double PairEIM::memory_usage() bytes += 2 * nmax * sizeof(double); return bytes; } + +EIMPotentialFileReader::EIMPotentialFileReader(LAMMPS * lmp, const std::string & filename) : + Pointers(lmp), filename(filename) +{ + if (comm->me != 0) { + error->one(FLERR, "EIMPotentialFileReader should only be called by proc 0!"); + } + + FILE * fp = force->open_potential(filename.c_str()); + + if (fp == NULL) { + error->one(FLERR, fmt::format("cannot open EIM potential file {}", filename)); + } + + parse(fp); + + fclose(fp); +} + +std::pair EIMPotentialFileReader::get_pair(const std::string & a, const std::string & b) { + if (a < b) { + return std::make_pair(a, b); + } + return std::make_pair(b, a); +} + +char * EIMPotentialFileReader::next_line(FILE * fp) { + // concatenate lines if they end with '&' + // strip comments after '#' + int n = 0; + int nwords = 0; + bool concat = false; + + char *ptr = fgets(line, MAXLINE, fp); + + if (ptr == nullptr) { + // EOF + return nullptr; + } + + // strip comment + if ((ptr = strchr(line, '#'))) *ptr = '\0'; + + // strip ampersand + if ((ptr = strrchr(line, '&'))) { + concat = true; + *ptr = '\0'; + } + + nwords = utils::count_words(line); + + if (nwords > 0) { + n = strlen(line); + } + + while(n == 0 || concat) { + char *ptr = fgets(&line[n], MAXLINE - n, fp); + + if (ptr == nullptr) { + // EOF + return line; + } + + // strip comment + if ((ptr = strchr(line, '#'))) *ptr = '\0'; + + // strip ampersand + if ((ptr = strrchr(line, '&'))) { + concat = true; + *ptr = '\0'; + } else { + concat = false; + } + + nwords = utils::count_words(line); + + // skip line if blank + if (nwords > 0) { + n = strlen(line); + } + } + + return line; +} + +void EIMPotentialFileReader::parse(FILE * fp) +{ + char * line = nullptr; + bool found_global = false; + + while((line = next_line(fp))) { + ValueTokenizer values(line); + std::string type = values.next_string(); + + if (type == "global:") { + if (values.count() != 4) { + error->one(FLERR, "Invalid global line in EIM potential file"); + } + + division = values.next_double(); + rbig = values.next_double(); + rsmall = values.next_double(); + + found_global = true; + } else if (type == "element:") { + if (values.count() != 9) { + error->one(FLERR, "Invalid element line in EIM potential file"); + } + + std::string name = values.next_string(); + + ElementData data; + data.ielement = values.next_int(); + data.mass = values.next_double(); + data.negativity = values.next_double(); + data.ra = values.next_double(); + data.ri = values.next_double(); + data.Ec = values.next_double(); + data.q0 = values.next_double(); + + if (elements.find(name) == elements.end()) { + elements[name] = data; + } else { + error->one(FLERR, "Duplicate pair line in EIM potential file"); + } + + } else if (type == "pair:") { + if (values.count() != 17) { + error->one(FLERR, "Invalid element line in EIM potential file"); + } + + std::string elementA = values.next_string(); + std::string elementB = values.next_string(); + + PairData data; + data.rcutphiA = values.next_double(); + data.rcutphiR = values.next_double(); + data.Eb = values.next_double(); + data.r0 = values.next_double(); + data.alpha = values.next_double(); + data.beta = values.next_double(); + data.rcutq = values.next_double(); + data.Asigma = values.next_double(); + data.rq = values.next_double(); + data.rcutsigma = values.next_double(); + data.Ac = values.next_double(); + data.zeta = values.next_double(); + data.rs = values.next_double(); + + // should be next_int, but since existing potential files have 1.0000e+00 format + // we're doing this instead to keep compatibility + data.tp = (int)values.next_double(); + + auto p = get_pair(elementA, elementB); + + if (pairs.find(p) == pairs.end()) { + pairs[p] = data; + } else { + error->one(FLERR, "Duplicate pair line in EIM potential file"); + } + } + } + + if (!found_global) { + error->one(FLERR, "Missing global line in EIM potential file"); + } +} + +void EIMPotentialFileReader::get_global(PairEIM::Setfl * setfl) { + setfl->division = division; + setfl->rbig = rbig; + setfl->rsmall = rsmall; +} + +void EIMPotentialFileReader::get_element(PairEIM::Setfl * setfl, int i, const std::string & name) { + if (elements.find(name) == elements.end()) { + char str[128]; + snprintf(str, 128, "Element %s not defined in EIM potential file", name.c_str()); + error->one(FLERR, str); + } + + ElementData & data = elements[name]; + setfl->ielement[i] = data.ielement; + setfl->mass[i] = data.mass; + setfl->negativity[i] = data.negativity; + setfl->ra[i] = data.ra; + setfl->ri[i] = data.ri; + setfl->Ec[i] = data.Ec; + setfl->q0[i] = data.q0; +} + +void EIMPotentialFileReader::get_pair(PairEIM::Setfl * setfl, int ij, const std::string & elemA, const std::string & elemB) { + auto p = get_pair(elemA, elemB); + + if (pairs.find(p) == pairs.end()) { + char str[128]; + snprintf(str, 128, "Pair (%s, %s) not defined in EIM potential file", elemA.c_str(), elemB.c_str()); + error->one(FLERR, str); + } + + PairData & data = pairs[p]; + setfl->rcutphiA[ij] = data.rcutphiA; + setfl->rcutphiR[ij] = data.rcutphiR; + setfl->Eb[ij] = data.Eb; + setfl->r0[ij] = data.r0; + setfl->alpha[ij] = data.alpha; + setfl->beta[ij] = data.beta; + setfl->rcutq[ij] = data.rcutq; + setfl->Asigma[ij] = data.Asigma; + setfl->rq[ij] = data.rq; + setfl->rcutsigma[ij] = data.rcutsigma; + setfl->Ac[ij] = data.Ac; + setfl->zeta[ij] = data.zeta; + setfl->rs[ij] = data.rs; + setfl->tp[ij] = data.tp; +} diff --git a/src/MANYBODY/pair_eim.h b/src/MANYBODY/pair_eim.h index f9fb2d5a77..986db52453 100644 --- a/src/MANYBODY/pair_eim.h +++ b/src/MANYBODY/pair_eim.h @@ -21,6 +21,8 @@ PairStyle(eim,PairEIM) #define LMP_PAIR_EIM_H #include "pair.h" +#include +#include namespace LAMMPS_NS { @@ -40,16 +42,6 @@ class PairEIM : public Pair { void unpack_reverse_comm(int, int *, double *); double memory_usage(); - protected: - double **cutforcesq,cutmax; - int nmax; - double *rho,*fp; - int rhofp; - int *map; // which element each atom type maps to - - int nelements; // # of elements to read from potential file - char **elements; // element names - struct Setfl { double division,rbig,rsmall; int nr; @@ -62,6 +54,17 @@ class PairEIM : public Pair { double ***Fij,***Gij,***phiij; double **cuts; }; + + protected: + double **cutforcesq,cutmax; + int nmax; + double *rho,*fp; + int rhofp; + int *map; // which element each atom type maps to + + int nelements; // # of elements to read from potential file + char **elements; // element names + Setfl *setfl; // potentials as array data @@ -80,9 +83,6 @@ class PairEIM : public Pair { void allocate(); void array2spline(); void interpolate(int, double, double *, double **, double); - int grabglobal(FILE *); - int grabsingle(FILE *, int); - int grabpair(FILE *, int, int); double funccutoff(double, double, double); double funcphi(int, int, double); @@ -94,6 +94,59 @@ class PairEIM : public Pair { void file2array(); }; +class EIMPotentialFileReader : protected Pointers { + std::string filename; + static const int MAXLINE = 1024; + char line[MAXLINE]; + + void parse(FILE * fp); + char * next_line(FILE * fp); + std::pair get_pair(const std::string & a, const std::string & b); + +public: + EIMPotentialFileReader(class LAMMPS* lmp, const std::string & filename); + + void get_global(PairEIM::Setfl * setfl); + void get_element(PairEIM::Setfl * setfl, int i, const std::string & name); + void get_pair(PairEIM::Setfl * setfl, int ij, const std::string & elemA, const std::string & elemB); + +private: + // potential parameters + double division; + double rbig; + double rsmall; + + struct ElementData { + int ielement; + double mass; + double negativity; + double ra; + double ri; + double Ec; + double q0; + }; + + struct PairData { + double rcutphiA; + double rcutphiR; + double Eb; + double r0; + double alpha; + double beta; + double rcutq; + double Asigma; + double rq; + double rcutsigma; + double Ac; + double zeta; + double rs; + int tp; + }; + + std::map elements; + std::map, PairData> pairs; +}; + } #endif diff --git a/src/MANYBODY/pair_gw.cpp b/src/MANYBODY/pair_gw.cpp index 667311812b..e9604523b5 100644 --- a/src/MANYBODY/pair_gw.cpp +++ b/src/MANYBODY/pair_gw.cpp @@ -29,13 +29,15 @@ #include "comm.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" #include "math_const.h" using namespace LAMMPS_NS; using namespace MathConst; -#define MAXLINE 1024 #define DELTA 4 /* ---------------------------------------------------------------------- */ @@ -366,138 +368,93 @@ double PairGW::init_one(int i, int j) void PairGW::read_file(char *file) { - int params_per_line = 17; - char **words = new char*[params_per_line+1]; - memory->sfree(params); params = NULL; nparams = maxparam = 0; // open file on proc 0 - FILE *fp; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open GW potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(lmp, file, "GW"); + char * line; - // read each line out of file, skipping blank lines or leading '#' - // store line of params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next entry in file + int ielement, jelement, kelement; - // strip comment, skip line if blank + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; + // load up parameter settings and error check their values - // concatenate additional lines until have params_per_line words + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].powerm = values.next_double(); + params[nparams].gamma = values.next_double(); + params[nparams].lam3 = values.next_double(); + params[nparams].c = values.next_double(); + params[nparams].d = values.next_double(); + params[nparams].h = values.next_double(); + params[nparams].powern = values.next_double(); + params[nparams].beta = values.next_double(); + params[nparams].lam2 = values.next_double(); + params[nparams].bigb = values.next_double(); + params[nparams].bigr = values.next_double(); + params[nparams].bigd = values.next_double(); + params[nparams].lam1 = values.next_double(); + params[nparams].biga = values.next_double(); + params[nparams].powermint = int(params[nparams].powerm); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + // currently only allow m exponent of 1 or 3 + if (params[nparams].c < 0.0 || params[nparams].d < 0.0 || + params[nparams].powern < 0.0 || params[nparams].beta < 0.0 || + params[nparams].lam2 < 0.0 || params[nparams].bigb < 0.0 || + params[nparams].bigr < 0.0 ||params[nparams].bigd < 0.0 || + params[nparams].bigd > params[nparams].bigr || + params[nparams].lam1 < 0.0 || params[nparams].biga < 0.0 || + params[nparams].powerm - params[nparams].powermint != 0.0 || + (params[nparams].powermint != 3 && params[nparams].powermint != 1) || + params[nparams].gamma < 0.0) + error->one(FLERR,"Illegal GW parameter"); + + nparams++; } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in GW potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next line - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].powerm = atof(words[3]); - params[nparams].gamma = atof(words[4]); - params[nparams].lam3 = atof(words[5]); - params[nparams].c = atof(words[6]); - params[nparams].d = atof(words[7]); - params[nparams].h = atof(words[8]); - params[nparams].powern = atof(words[9]); - params[nparams].beta = atof(words[10]); - params[nparams].lam2 = atof(words[11]); - params[nparams].bigb = atof(words[12]); - params[nparams].bigr = atof(words[13]); - params[nparams].bigd = atof(words[14]); - params[nparams].lam1 = atof(words[15]); - params[nparams].biga = atof(words[16]); - - // currently only allow m exponent of 1 or 3 - - params[nparams].powermint = int(params[nparams].powerm); - - if (params[nparams].c < 0.0 || params[nparams].d < 0.0 || - params[nparams].powern < 0.0 || params[nparams].beta < 0.0 || - params[nparams].lam2 < 0.0 || params[nparams].bigb < 0.0 || - params[nparams].bigr < 0.0 ||params[nparams].bigd < 0.0 || - params[nparams].bigd > params[nparams].bigr || - params[nparams].lam1 < 0.0 || params[nparams].biga < 0.0 || - params[nparams].powerm - params[nparams].powermint != 0.0 || - (params[nparams].powermint != 3 && params[nparams].powermint != 1) || - params[nparams].gamma < 0.0) - error->all(FLERR,"Illegal GW parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_gw.h b/src/MANYBODY/pair_gw.h index ae15b7d275..77ff5c0399 100644 --- a/src/MANYBODY/pair_gw.h +++ b/src/MANYBODY/pair_gw.h @@ -34,6 +34,8 @@ class PairGW : public Pair { void init_style(); double init_one(int, int); + static const int NPARAMS_PER_LINE = 17; + protected: struct Param { double lam1,lam2,lam3; diff --git a/src/MANYBODY/pair_gw_zbl.cpp b/src/MANYBODY/pair_gw_zbl.cpp index d39bf53b99..96fc742b42 100644 --- a/src/MANYBODY/pair_gw_zbl.cpp +++ b/src/MANYBODY/pair_gw_zbl.cpp @@ -27,6 +27,9 @@ #include "comm.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" #include "math_const.h" using namespace LAMMPS_NS; @@ -60,146 +63,101 @@ PairGWZBL::PairGWZBL(LAMMPS *lmp) : PairGW(lmp) void PairGWZBL::read_file(char *file) { - int params_per_line = 21; - char **words = new char*[params_per_line+1]; - memory->sfree(params); params = NULL; nparams = maxparam = 0; // open file on proc 0 - FILE *fp; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open GW potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(lmp, file, "GW/ZBL"); + char * line; - // read each line out of file, skipping blank lines or leading '#' - // store line of params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next entry in file + int ielement, jelement, kelement; - // strip comment, skip line if blank + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; + // load up parameter settings and error check their values - // concatenate additional lines until have params_per_line words + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].powerm = values.next_double(); + params[nparams].gamma = values.next_double(); + params[nparams].lam3 = values.next_double(); + params[nparams].c = values.next_double(); + params[nparams].d = values.next_double(); + params[nparams].h = values.next_double(); + params[nparams].powern = values.next_double(); + params[nparams].beta = values.next_double(); + params[nparams].lam2 = values.next_double(); + params[nparams].bigb = values.next_double(); + params[nparams].bigr = values.next_double(); + params[nparams].bigd = values.next_double(); + params[nparams].lam1 = values.next_double(); + params[nparams].biga = values.next_double(); + params[nparams].Z_i = values.next_double(); + params[nparams].Z_j = values.next_double(); + params[nparams].ZBLcut = values.next_double(); + params[nparams].ZBLexpscale = values.next_double(); + params[nparams].powermint = int(params[nparams].powerm); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + // currently only allow m exponent of 1 or 3 + if ( + params[nparams].lam3 < 0.0 || params[nparams].c < 0.0 || + params[nparams].d < 0.0 || params[nparams].powern < 0.0 || + params[nparams].beta < 0.0 || params[nparams].lam2 < 0.0 || + params[nparams].bigb < 0.0 || params[nparams].bigr < 0.0 || + params[nparams].bigd < 0.0 || + params[nparams].bigd > params[nparams].bigr || + params[nparams].lam3 < 0.0 || params[nparams].biga < 0.0 || + params[nparams].powerm - params[nparams].powermint != 0.0 || + (params[nparams].powermint != 3 && params[nparams].powermint != 1) || + params[nparams].gamma < 0.0 || + params[nparams].Z_i < 1.0 || params[nparams].Z_j < 1.0 || + params[nparams].ZBLcut < 0.0 || params[nparams].ZBLexpscale < 0.0) + error->one(FLERR,"Illegal GW parameter"); + + nparams++; } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in GW potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next line - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].powerm = atof(words[3]); - params[nparams].gamma = atof(words[4]); - params[nparams].lam3 = atof(words[5]); - params[nparams].c = atof(words[6]); - params[nparams].d = atof(words[7]); - params[nparams].h = atof(words[8]); - params[nparams].powern = atof(words[9]); - params[nparams].beta = atof(words[10]); - params[nparams].lam2 = atof(words[11]); - params[nparams].bigb = atof(words[12]); - params[nparams].bigr = atof(words[13]); - params[nparams].bigd = atof(words[14]); - params[nparams].lam1 = atof(words[15]); - params[nparams].biga = atof(words[16]); - params[nparams].Z_i = atof(words[17]); - params[nparams].Z_j = atof(words[18]); - params[nparams].ZBLcut = atof(words[19]); - params[nparams].ZBLexpscale = atof(words[20]); - - // currently only allow m exponent of 1 or 3 - - params[nparams].powermint = int(params[nparams].powerm); - - if ( - params[nparams].lam3 < 0.0 || params[nparams].c < 0.0 || - params[nparams].d < 0.0 || params[nparams].powern < 0.0 || - params[nparams].beta < 0.0 || params[nparams].lam2 < 0.0 || - params[nparams].bigb < 0.0 || params[nparams].bigr < 0.0 || - params[nparams].bigd < 0.0 || - params[nparams].bigd > params[nparams].bigr || - params[nparams].lam3 < 0.0 || params[nparams].biga < 0.0 || - params[nparams].powerm - params[nparams].powermint != 0.0 || - (params[nparams].powermint != 3 && params[nparams].powermint != 1) || - params[nparams].gamma < 0.0 || - params[nparams].Z_i < 1.0 || params[nparams].Z_j < 1.0 || - params[nparams].ZBLcut < 0.0 || params[nparams].ZBLexpscale < 0.0) - error->all(FLERR,"Illegal GW parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_gw_zbl.h b/src/MANYBODY/pair_gw_zbl.h index 62b3f9a43f..95129c4eb8 100644 --- a/src/MANYBODY/pair_gw_zbl.h +++ b/src/MANYBODY/pair_gw_zbl.h @@ -29,6 +29,8 @@ class PairGWZBL : public PairGW { PairGWZBL(class LAMMPS *); ~PairGWZBL() {} + static const int NPARAMS_PER_LINE = 21; + private: double global_a_0; // Bohr radius for Coulomb repulsion double global_epsilon_0; // permittivity of vacuum for Coulomb repulsion diff --git a/src/MANYBODY/pair_nb3b_harmonic.cpp b/src/MANYBODY/pair_nb3b_harmonic.cpp index 92456790cc..7491c375db 100644 --- a/src/MANYBODY/pair_nb3b_harmonic.cpp +++ b/src/MANYBODY/pair_nb3b_harmonic.cpp @@ -29,10 +29,12 @@ #include "neigh_list.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 #define DELTA 4 #define SMALL 0.001 #define PI 3.141592653589793238462643383279 @@ -282,117 +284,73 @@ double PairNb3bHarmonic::init_one(int i, int j) void PairNb3bHarmonic::read_file(char *file) { - int params_per_line = 6; - char **words = new char*[params_per_line+1]; - memory->sfree(params); - params = NULL; + params = nullptr; nparams = maxparam = 0; // open file on proc 0 - FILE *fp = NULL; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open nb3b/harmonic potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(lmp, file, "nb3b/harmonic"); + char * line; - // read each set of params from potential file - // one set of params can span multiple lines - // store params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next entry in file + int ielement, jelement, kelement; - // strip comment, skip line if blank + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; + // load up parameter settings and error check their values - // concatenate additional lines until have params_per_line words + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].k_theta = values.next_double(); + params[nparams].theta0 = values.next_double(); + params[nparams].cutoff = values.next_double(); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + if (params[nparams].k_theta < 0.0 || params[nparams].theta0 < 0.0 || + params[nparams].cutoff < 0.0) + error->one(FLERR,"Illegal nb3b/harmonic parameter"); + + nparams++; } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in nb3b/harmonic potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next entry in file - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].k_theta = atof(words[3]); - params[nparams].theta0 = atof(words[4]); - params[nparams].cutoff = atof(words[5]); - - if (params[nparams].k_theta < 0.0 || params[nparams].theta0 < 0.0 || - params[nparams].cutoff < 0.0) - error->all(FLERR,"Illegal nb3b/harmonic parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_nb3b_harmonic.h b/src/MANYBODY/pair_nb3b_harmonic.h index 75a378e35b..0267b6d0e2 100644 --- a/src/MANYBODY/pair_nb3b_harmonic.h +++ b/src/MANYBODY/pair_nb3b_harmonic.h @@ -34,6 +34,8 @@ class PairNb3bHarmonic : public Pair { double init_one(int, int); void init_style(); + static const int NPARAMS_PER_LINE = 6; + protected: struct Param { double k_theta, theta0, cutoff; diff --git a/src/MANYBODY/pair_polymorphic.cpp b/src/MANYBODY/pair_polymorphic.cpp index 7d4eb06d3c..a3f6d08522 100644 --- a/src/MANYBODY/pair_polymorphic.cpp +++ b/src/MANYBODY/pair_polymorphic.cpp @@ -30,6 +30,8 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; @@ -562,108 +564,97 @@ double PairPolymorphic::init_one(int i, int j) void PairPolymorphic::read_file(char *file) { - char line[MAXLINE],*ptr; - int n; + PotentialFileReader * reader = nullptr; - // open file on proc 0 - FILE *fp=NULL; + // read potential if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open polymorphic potential file %s",file); - error->one(FLERR,str); - } - // move past comments to first data line - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - while (line == strchr(line,'#')) utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - n = strlen(line) + 1; - } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - ptr = strtok(line," \t\n\r\f"); // 1st line, 1st token - int ntypes = atoi(ptr); - if (ntypes != nelements) - error->all(FLERR,"Incorrect number of elements in potential file"); - match = new int[nelements]; - ptr = strtok(NULL," \t\n\r\f"); // 1st line, 2nd token - eta = atoi(ptr); + try { + reader = new PotentialFileReader(lmp, file, "polymorphic"); - // map the elements in the potential file to LAMMPS atom types - for (int i = 0; i < nelements; i++) { - if (comm->me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - n = strlen(line) + 1; + ValueTokenizer values = reader->next_values(2); + + int ntypes = values.next_int(); + + if (ntypes != nelements) + error->one(FLERR,"Incorrect number of elements in potential file"); + + eta = values.next_int(); + + // map the elements in the potential file to LAMMPS atom types + match = new int[nelements]; + + for (int i = 0; i < nelements; i++) { + values = reader->next_values(3); + values.next_double(); // atomic number + values.next_double(); // atomic mass + std::string name = values.next_string(); + + int j; + for (j = 0; j < nelements; j++) { + if (name == elements[j]) break; + } + if (j == nelements) error->one(FLERR,"Element not defined in potential file"); + match[i] = j; + } + + // sizes + // Note: the format of this line has changed between the + // 2015-06-06 and 2015-12-09 versions of the pair style. + try { + values = reader->next_values(4); + nr = ng = nx = 0; + nr = values.next_int(); + ng = values.next_int(); + nx = values.next_int(); + maxX = values.next_double(); + + if ((ng == 0) || (nr == 0) || (nx == 0)) + error->one(FLERR,"Error reading potential file header"); + } catch (TokenizerException & e) { + error->one(FLERR,"Potential file incompatible with this pair style version"); + } + + // cutoffs + npair = nelements*(nelements+1)/2; + ntriple = nelements*nelements*nelements; + pairParameters = (PairParameters*) memory->srealloc(pairParameters,npair*sizeof(PairParameters), "pair:pairParameters"); + tripletParameters = (TripletParameters*) memory->srealloc(tripletParameters,ntriple*sizeof(TripletParameters), "pair:tripletParameters"); + + for (int i = 0; i < npair; i++) { + PairParameters & p = pairParameters[i]; + values = reader->next_values(2); + p.cut = values.next_double(); + p.cutsq = p.cut*p.cut; + p.xi = values.next_double(); + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - ptr = strtok(line," \t\n\r\f"); // 1st token - ptr = strtok(NULL," \t\n\r\f"); // 2st token - ptr = strtok(NULL," \t\n\r\f"); // 3st token - int j; - for (j = 0; j < nelements; j++) { - if (strcmp(ptr,elements[j]) == 0) break; - } - if (j == nelements) - error->all(FLERR,"Element not defined in potential file"); - match[i] = j; - } - // sizes - if (comm->me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - n = strlen(line) + 1; } - // Note: the format of this line has changed between the - // 2015-06-06 and 2015-12-09 versions of the pair style. + MPI_Bcast(&nr, 1, MPI_INT, 0, world); + MPI_Bcast(&ng, 1, MPI_INT, 0, world); + MPI_Bcast(&nx, 1, MPI_INT, 0, world); + MPI_Bcast(&maxX, 1, MPI_DOUBLE, 0, world); - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - nr = ng = nx = 0; - ptr = strtok(line," \t\n\r\f"); // 1st token - if (ptr) nr = atoi(ptr); - ptr = strtok(NULL," \t\n\r\f"); // 2nd token - if (ptr) ng = atoi(ptr); - ptr = strtok(NULL," \t\n\r\f"); // 3rd token - if (ptr) nx = atoi(ptr); - ptr = strtok(NULL," \t\n\r\f"); // 4th token - if (ptr) maxX = atof(ptr); - if (ptr == NULL) - error->all(FLERR,"Potential file incompatible with this pair style version"); - if ((ng == 0) || (nr == 0) || (nx == 0)) - error->all(FLERR,"Error reading potential file header"); + MPI_Bcast(&npair, 1, MPI_INT, 0, world); + MPI_Bcast(&ntriple, 1, MPI_INT, 0, world); - npair = nelements*(nelements+1)/2; - ntriple = nelements*nelements*nelements; - pairParameters = (PairParameters*) - memory->srealloc(pairParameters,npair*sizeof(PairParameters), - "pair:pairParameters"); - tripletParameters = (TripletParameters*) - memory->srealloc(tripletParameters,ntriple*sizeof(TripletParameters), - "pair:tripletParameters"); - - // cutoffs - for (int i = 0; i < npair; i++) { - PairParameters & p = pairParameters[i]; - if (comm->me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - n = strlen(line) + 1; - } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - ptr = strtok(line," \t\n\r\f"); // 1st token - p.cut = atof(ptr); - p.cutsq = p.cut*p.cut; - ptr = strtok(NULL," \t\n\r\f"); // 2nd token - p.xi = atof(ptr); + if(comm->me != 0) { + match = new int[nelements]; + pairParameters = (PairParameters*) memory->srealloc(pairParameters,npair*sizeof(PairParameters), "pair:pairParameters"); + tripletParameters = (TripletParameters*) memory->srealloc(tripletParameters,ntriple*sizeof(TripletParameters), "pair:tripletParameters"); } + MPI_Bcast(match, nelements, MPI_INT, 0, world); + MPI_Bcast(pairParameters, npair*sizeof(PairParameters), MPI_BYTE, 0, world); + // start reading tabular functions double * singletable = new double[nr]; for (int i = 0; i < npair; i++) { // U PairParameters & p = pairParameters[i]; if (comm->me == 0) { - grab(fp,nr,singletable); + reader->next_dvector(singletable, nr); } MPI_Bcast(singletable,nr,MPI_DOUBLE,0,world); p.U = new tabularFunction(nr,0.0,p.cut); @@ -672,7 +663,7 @@ void PairPolymorphic::read_file(char *file) for (int i = 0; i < npair; i++) { // V PairParameters & p = pairParameters[i]; if (comm->me == 0) { - grab(fp,nr,singletable); + reader->next_dvector(singletable, nr); } MPI_Bcast(singletable,nr,MPI_DOUBLE,0,world); p.V = new tabularFunction(nr,0.0,p.cut); @@ -681,7 +672,7 @@ void PairPolymorphic::read_file(char *file) for (int i = 0; i < npair; i++) { // W PairParameters & p = pairParameters[i]; if (comm->me == 0) { - grab(fp,nr,singletable); + reader->next_dvector(singletable, nr); } MPI_Bcast(singletable,nr,MPI_DOUBLE,0,world); p.W = new tabularFunction(nr,0.0,p.cut); @@ -698,7 +689,7 @@ void PairPolymorphic::read_file(char *file) if (eta != 3) { for (int j = 0; j < nelements; j++) { // P if (comm->me == 0) { - grab(fp,nr,singletable); + reader->next_dvector(singletable, nr); } MPI_Bcast(singletable,nr,MPI_DOUBLE,0,world); for (int i = 0; i < nelements; i++) { @@ -710,7 +701,7 @@ void PairPolymorphic::read_file(char *file) for (int j = 0; j < nelements-1; j++) { // P for (int k = j+1; k < nelements; k++) { if (comm->me == 0) { - grab(fp,nr,singletable); + reader->next_dvector(singletable, nr); } MPI_Bcast(singletable,nr,MPI_DOUBLE,0,world); for (int i = 0; i < nelements; i++) { @@ -728,7 +719,7 @@ void PairPolymorphic::read_file(char *file) for (int i = 0; i < ntriple; i++) { // P TripletParameters & p = tripletParameters[i]; if (comm->me == 0) { - grab(fp,nr,singletable); + reader->next_dvector(singletable, nr); } MPI_Bcast(singletable,nr,MPI_DOUBLE,0,world); p.P = new tabularFunction(nr,-cutmax,cutmax); @@ -740,7 +731,7 @@ void PairPolymorphic::read_file(char *file) for (int i = 0; i < ntriple; i++) { // G TripletParameters & p = tripletParameters[i]; if (comm->me == 0) { - grab(fp,ng,singletable); + reader->next_dvector(singletable, ng); } MPI_Bcast(singletable,ng,MPI_DOUBLE,0,world); p.G = new tabularFunction(ng,-1.0,1.0); @@ -751,7 +742,7 @@ void PairPolymorphic::read_file(char *file) for (int i = 0; i < npair; i++) { // F PairParameters & p = pairParameters[i]; if (comm->me == 0) { - grab(fp,nx,singletable); + reader->next_dvector(singletable, nx); } MPI_Bcast(singletable,nx,MPI_DOUBLE,0,world); p.F = new tabularFunction(nx,0.0,maxX); @@ -759,7 +750,7 @@ void PairPolymorphic::read_file(char *file) } delete[] singletable; if (comm->me == 0) { - fclose(fp); + delete reader; } // recalculate cutoffs of all params @@ -905,27 +896,6 @@ void PairPolymorphic::costheta_d(double *rij_hat, double rij, vec3_scale(-1.0,dri,dri); } -/* ---------------------------------------------------------------------- - * grab n values from file fp and put them in list - * values can be several to a line - * only called by proc 0 - * ------------------------------------------------------------------------- */ - -void PairPolymorphic::grab(FILE *fp, int n, double *list) -{ - char *ptr; - char line[MAXLINE]; - - int i = 0; - while (i < n) { - utils::sfgets(FLERR,line,MAXLINE,fp,NULL,error); - ptr = strtok(line," \t\n\r\f"); - list[i++] = atof(ptr); - while ((ptr = strtok(NULL," \t\n\r\f"))) - list[i++] = atof(ptr); - } -} - /* ---------------------------------------------------------------------- */ void PairPolymorphic::write_tables(int npts) diff --git a/src/MANYBODY/pair_polymorphic.h b/src/MANYBODY/pair_polymorphic.h index 744e7b402c..b4ff169b76 100644 --- a/src/MANYBODY/pair_polymorphic.h +++ b/src/MANYBODY/pair_polymorphic.h @@ -304,7 +304,6 @@ class PairPolymorphic : public Pair { int *match; void allocate(); - void grab(FILE *, int, double *); virtual void read_file(char *); void setup_params(); diff --git a/src/MANYBODY/pair_sw.cpp b/src/MANYBODY/pair_sw.cpp index f1d1a6fa9f..0aed2ec68b 100644 --- a/src/MANYBODY/pair_sw.cpp +++ b/src/MANYBODY/pair_sw.cpp @@ -28,10 +28,12 @@ #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 #define DELTA 4 /* ---------------------------------------------------------------------- */ @@ -346,128 +348,84 @@ double PairSW::init_one(int i, int j) void PairSW::read_file(char *file) { - int params_per_line = 14; - char **words = new char*[params_per_line+1]; - memory->sfree(params); - params = NULL; + params = nullptr; nparams = maxparam = 0; // open file on proc 0 - FILE *fp; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open Stillinger-Weber potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(lmp, file, "Stillinger-Weber"); + char * line; - // read each set of params from potential file - // one set of params can span multiple lines - // store params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next entry in file + int ielement, jelement, kelement; - // strip comment, skip line if blank + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; + // load up parameter settings and error check their values - // concatenate additional lines until have params_per_line words + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].epsilon = values.next_double(); + params[nparams].sigma = values.next_double(); + params[nparams].littlea = values.next_double(); + params[nparams].lambda = values.next_double(); + params[nparams].gamma = values.next_double(); + params[nparams].costheta = values.next_double(); + params[nparams].biga = values.next_double(); + params[nparams].bigb = values.next_double(); + params[nparams].powerp = values.next_double(); + params[nparams].powerq = values.next_double(); + params[nparams].tol = values.next_double(); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + if (params[nparams].epsilon < 0.0 || params[nparams].sigma < 0.0 || + params[nparams].littlea < 0.0 || params[nparams].lambda < 0.0 || + params[nparams].gamma < 0.0 || params[nparams].biga < 0.0 || + params[nparams].bigb < 0.0 || params[nparams].powerp < 0.0 || + params[nparams].powerq < 0.0 || params[nparams].tol < 0.0) + error->one(FLERR,"Illegal Stillinger-Weber parameter"); + + nparams++; } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in Stillinger-Weber potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next entry in file - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].epsilon = atof(words[3]); - params[nparams].sigma = atof(words[4]); - params[nparams].littlea = atof(words[5]); - params[nparams].lambda = atof(words[6]); - params[nparams].gamma = atof(words[7]); - params[nparams].costheta = atof(words[8]); - params[nparams].biga = atof(words[9]); - params[nparams].bigb = atof(words[10]); - params[nparams].powerp = atof(words[11]); - params[nparams].powerq = atof(words[12]); - params[nparams].tol = atof(words[13]); - - if (params[nparams].epsilon < 0.0 || params[nparams].sigma < 0.0 || - params[nparams].littlea < 0.0 || params[nparams].lambda < 0.0 || - params[nparams].gamma < 0.0 || params[nparams].biga < 0.0 || - params[nparams].bigb < 0.0 || params[nparams].powerp < 0.0 || - params[nparams].powerq < 0.0 || params[nparams].tol < 0.0) - error->all(FLERR,"Illegal Stillinger-Weber parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_sw.h b/src/MANYBODY/pair_sw.h index 8d921a26e8..441b1c0303 100644 --- a/src/MANYBODY/pair_sw.h +++ b/src/MANYBODY/pair_sw.h @@ -34,6 +34,8 @@ class PairSW : public Pair { virtual double init_one(int, int); virtual void init_style(); + static const int NPARAMS_PER_LINE = 14; + struct Param { double epsilon,sigma; double littlea,lambda,gamma,costheta; diff --git a/src/MANYBODY/pair_tersoff.cpp b/src/MANYBODY/pair_tersoff.cpp index 5f53760e71..4ba7471e60 100644 --- a/src/MANYBODY/pair_tersoff.cpp +++ b/src/MANYBODY/pair_tersoff.cpp @@ -28,6 +28,9 @@ #include "comm.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" #include "math_const.h" #include "math_special.h" @@ -36,7 +39,6 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define MAXLINE 1024 #define DELTA 4 /* ---------------------------------------------------------------------- */ @@ -391,144 +393,100 @@ double PairTersoff::init_one(int i, int j) void PairTersoff::read_file(char *file) { - int params_per_line = 17; - char **words = new char*[params_per_line+1]; - memory->sfree(params); - params = NULL; + params = nullptr; nparams = maxparam = 0; // open file on proc 0 - FILE *fp; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open Tersoff potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(lmp, file, "Tersoff"); + char * line; - // read each line out of file, skipping blank lines or leading '#' - // store line of params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next entry in file + int ielement, jelement, kelement; - // strip comment, skip line if blank + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; - // concatenate additional lines until have params_per_line words + // load up parameter settings and error check their values - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } + + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].powerm = values.next_double(); + params[nparams].gamma = values.next_double(); + params[nparams].lam3 = values.next_double(); + params[nparams].c = values.next_double(); + params[nparams].d = values.next_double(); + params[nparams].h = values.next_double(); + params[nparams].powern = values.next_double(); + params[nparams].beta = values.next_double(); + params[nparams].lam2 = values.next_double(); + params[nparams].bigb = values.next_double(); + params[nparams].bigr = values.next_double(); + params[nparams].bigd = values.next_double(); + params[nparams].lam1 = values.next_double(); + params[nparams].biga = values.next_double(); + params[nparams].powermint = int(params[nparams].powerm); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + // currently only allow m exponent of 1 or 3 + if (params[nparams].c < 0.0 || + params[nparams].d < 0.0 || + params[nparams].powern < 0.0 || + params[nparams].beta < 0.0 || + params[nparams].lam2 < 0.0 || + params[nparams].bigb < 0.0 || + params[nparams].bigr < 0.0 || + params[nparams].bigd < 0.0 || + params[nparams].bigd > params[nparams].bigr || + params[nparams].lam1 < 0.0 || + params[nparams].biga < 0.0 || + params[nparams].powerm - params[nparams].powermint != 0.0 || + (params[nparams].powermint != 3 && + params[nparams].powermint != 1) || + params[nparams].gamma < 0.0) + error->one(FLERR,"Illegal Tersoff parameter"); + + nparams++; } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in Tersoff potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next line - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].powerm = atof(words[3]); - params[nparams].gamma = atof(words[4]); - params[nparams].lam3 = atof(words[5]); - params[nparams].c = atof(words[6]); - params[nparams].d = atof(words[7]); - params[nparams].h = atof(words[8]); - params[nparams].powern = atof(words[9]); - params[nparams].beta = atof(words[10]); - params[nparams].lam2 = atof(words[11]); - params[nparams].bigb = atof(words[12]); - params[nparams].bigr = atof(words[13]); - params[nparams].bigd = atof(words[14]); - params[nparams].lam1 = atof(words[15]); - params[nparams].biga = atof(words[16]); - - // currently only allow m exponent of 1 or 3 - - params[nparams].powermint = int(params[nparams].powerm); - - if (params[nparams].c < 0.0 || - params[nparams].d < 0.0 || - params[nparams].powern < 0.0 || - params[nparams].beta < 0.0 || - params[nparams].lam2 < 0.0 || - params[nparams].bigb < 0.0 || - params[nparams].bigr < 0.0 || - params[nparams].bigd < 0.0 || - params[nparams].bigd > params[nparams].bigr || - params[nparams].lam1 < 0.0 || - params[nparams].biga < 0.0 || - params[nparams].powerm - params[nparams].powermint != 0.0 || - (params[nparams].powermint != 3 && - params[nparams].powermint != 1) || - params[nparams].gamma < 0.0) - error->all(FLERR,"Illegal Tersoff parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ @@ -566,10 +524,14 @@ void PairTersoff::setup_params() params[m].cut = params[m].bigr + params[m].bigd; params[m].cutsq = params[m].cut*params[m].cut; - params[m].c1 = pow(2.0*params[m].powern*1.0e-16,-1.0/params[m].powern); - params[m].c2 = pow(2.0*params[m].powern*1.0e-8,-1.0/params[m].powern); - params[m].c3 = 1.0/params[m].c2; - params[m].c4 = 1.0/params[m].c1; + if (params[m].powern > 0.0) { + params[m].c1 = pow(2.0*params[m].powern*1.0e-16,-1.0/params[m].powern); + params[m].c2 = pow(2.0*params[m].powern*1.0e-8,-1.0/params[m].powern); + params[m].c3 = 1.0/params[m].c2; + params[m].c4 = 1.0/params[m].c1; + } else { + params[m].c1 = params[m].c2 = params[m].c3 = params[m].c4 = 0.0; + } } // set cutmax to max of all params diff --git a/src/MANYBODY/pair_tersoff.h b/src/MANYBODY/pair_tersoff.h index 83ac73d5b8..8ebbc83544 100644 --- a/src/MANYBODY/pair_tersoff.h +++ b/src/MANYBODY/pair_tersoff.h @@ -34,7 +34,10 @@ class PairTersoff : public Pair { virtual void init_style(); double init_one(int, int); + static const int NPARAMS_PER_LINE = 17; + protected: + struct Param { double lam1,lam2,lam3; double c,d,h; diff --git a/src/MANYBODY/pair_tersoff_mod.cpp b/src/MANYBODY/pair_tersoff_mod.cpp index 9d4bdb7fd0..441ba6f21e 100644 --- a/src/MANYBODY/pair_tersoff_mod.cpp +++ b/src/MANYBODY/pair_tersoff_mod.cpp @@ -28,12 +28,14 @@ #include "math_special.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define MAXLINE 1024 #define DELTA 4 /* ---------------------------------------------------------------------- */ @@ -44,145 +46,101 @@ PairTersoffMOD::PairTersoffMOD(LAMMPS *lmp) : PairTersoff(lmp) {} void PairTersoffMOD::read_file(char *file) { - int params_per_line = 20; - char **words = new char*[params_per_line+1]; - memory->sfree(params); - params = NULL; + params = nullptr; nparams = maxparam = 0; // open file on proc 0 - FILE *fp; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open Tersoff potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(lmp, file, "Tersoff"); + char * line; - // read each line out of file, skipping blank lines or leading '#' - // store line of params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next entry in file + int ielement, jelement, kelement; - // strip comment, skip line if blank + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; - // concatenate additional lines until have params_per_line words + // load up parameter settings and error check their values - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } + + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].powerm = values.next_double(); + params[nparams].lam3 = values.next_double(); + params[nparams].h = values.next_double(); + params[nparams].powern = values.next_double(); + params[nparams].beta = values.next_double(); + params[nparams].lam2 = values.next_double(); + params[nparams].bigb = values.next_double(); + params[nparams].bigr = values.next_double(); + params[nparams].bigd = values.next_double(); + params[nparams].lam1 = values.next_double(); + params[nparams].biga = values.next_double(); + params[nparams].powern_del = values.next_double(); + params[nparams].c1 = values.next_double(); + params[nparams].c2 = values.next_double(); + params[nparams].c3 = values.next_double(); + params[nparams].c4 = values.next_double(); + params[nparams].c5 = values.next_double(); + params[nparams].powermint = int(params[nparams].powerm); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + // currently only allow m exponent of 1 or 3 + if (params[nparams].powern < 0.0 || + params[nparams].beta < 0.0 || + params[nparams].lam2 < 0.0 || + params[nparams].bigb < 0.0 || + params[nparams].bigr < 0.0 || + params[nparams].bigd < 0.0 || + params[nparams].bigd > params[nparams].bigr || + params[nparams].lam1 < 0.0 || + params[nparams].biga < 0.0 || + params[nparams].powerm - params[nparams].powermint != 0.0 || + (params[nparams].powermint != 3 && + params[nparams].powermint != 1) + ) + error->one(FLERR,"Illegal Tersoff parameter"); + + nparams++; } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in Tersoff potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next line - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].powerm = atof(words[3]); - params[nparams].lam3 = atof(words[4]); - params[nparams].h = atof(words[5]); - params[nparams].powern = atof(words[6]); - params[nparams].beta = atof(words[7]); - params[nparams].lam2 = atof(words[8]); - params[nparams].bigb = atof(words[9]); - params[nparams].bigr = atof(words[10]); - params[nparams].bigd = atof(words[11]); - params[nparams].lam1 = atof(words[12]); - params[nparams].biga = atof(words[13]); - params[nparams].powern_del = atof(words[14]); - params[nparams].c1 = atof(words[15]); - params[nparams].c2 = atof(words[16]); - params[nparams].c3 = atof(words[17]); - params[nparams].c4 = atof(words[18]); - params[nparams].c5 = atof(words[19]); - - // currently only allow m exponent of 1 or 3 - - params[nparams].powermint = int(params[nparams].powerm); - - if (params[nparams].powern < 0.0 || - params[nparams].beta < 0.0 || - params[nparams].lam2 < 0.0 || - params[nparams].bigb < 0.0 || - params[nparams].bigr < 0.0 || - params[nparams].bigd < 0.0 || - params[nparams].bigd > params[nparams].bigr || - params[nparams].lam1 < 0.0 || - params[nparams].biga < 0.0 || - params[nparams].powerm - params[nparams].powermint != 0.0 || - (params[nparams].powermint != 3 && - params[nparams].powermint != 1) - ) - error->all(FLERR,"Illegal Tersoff parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ @@ -220,8 +178,10 @@ void PairTersoffMOD::setup_params() params[m].cut = params[m].bigr + params[m].bigd; params[m].cutsq = params[m].cut*params[m].cut; - params[m].ca1 = pow(2.0*params[m].powern_del*1.0e-16,-1.0/params[m].powern); - params[m].ca4 = 1.0/params[m].ca1; + if (params[m].powern > 0.0) { + params[m].ca1 = pow(2.0*params[m].powern_del*1.0e-16,-1.0/params[m].powern); + params[m].ca4 = 1.0/params[m].ca1; + } else params[m].ca1 = params[m].ca4 = 0.0; } // set cutmax to max of all params diff --git a/src/MANYBODY/pair_tersoff_mod.h b/src/MANYBODY/pair_tersoff_mod.h index 162603bc5c..2cdbae9518 100644 --- a/src/MANYBODY/pair_tersoff_mod.h +++ b/src/MANYBODY/pair_tersoff_mod.h @@ -30,6 +30,8 @@ class PairTersoffMOD : public PairTersoff { PairTersoffMOD(class LAMMPS *); ~PairTersoffMOD() {} + static const int NPARAMS_PER_LINE = 20; + protected: virtual void read_file(char *); virtual void setup_params(); diff --git a/src/MANYBODY/pair_tersoff_mod_c.cpp b/src/MANYBODY/pair_tersoff_mod_c.cpp index 6c2c4f4e7a..33e88c70b8 100644 --- a/src/MANYBODY/pair_tersoff_mod_c.cpp +++ b/src/MANYBODY/pair_tersoff_mod_c.cpp @@ -25,157 +25,115 @@ #include "comm.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 #define DELTA 4 /* ---------------------------------------------------------------------- */ void PairTersoffMODC::read_file(char *file) { - int params_per_line = 21; - char **words = new char*[params_per_line+1]; - memory->sfree(params); - params = NULL; + params = nullptr; nparams = maxparam = 0; // open file on proc 0 - FILE *fp; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open Tersoff potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(lmp, file, "Tersoff"); + char * line; - // read each line out of file, skipping blank lines or leading '#' - // store line of params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next entry in file + int ielement, jelement, kelement; - // strip comment, skip line if blank + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; - // concatenate additional lines until have params_per_line words + // load up parameter settings and error check their values - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } + + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].powerm = values.next_double(); + params[nparams].lam3 = values.next_double(); + params[nparams].h = values.next_double(); + params[nparams].powern = values.next_double(); + params[nparams].beta = values.next_double(); + params[nparams].lam2 = values.next_double(); + params[nparams].bigb = values.next_double(); + params[nparams].bigr = values.next_double(); + params[nparams].bigd = values.next_double(); + params[nparams].lam1 = values.next_double(); + params[nparams].biga = values.next_double(); + params[nparams].powern_del = values.next_double(); + params[nparams].c1 = values.next_double(); + params[nparams].c2 = values.next_double(); + params[nparams].c3 = values.next_double(); + params[nparams].c4 = values.next_double(); + params[nparams].c5 = values.next_double(); + params[nparams].c0 = values.next_double(); + params[nparams].powermint = int(params[nparams].powerm); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + // currently only allow m exponent of 1 or 3 + if ( + params[nparams].powern < 0.0 || + params[nparams].beta < 0.0 || + params[nparams].lam2 < 0.0 || + params[nparams].bigb < 0.0 || + params[nparams].bigr < 0.0 || + params[nparams].bigd < 0.0 || + params[nparams].bigd > params[nparams].bigr || + params[nparams].lam1 < 0.0 || + params[nparams].biga < 0.0 || + params[nparams].powerm - params[nparams].powermint != 0.0 || + (params[nparams].powermint != 3 && + params[nparams].powermint != 1) + ) + error->one(FLERR,"Illegal Tersoff parameter"); + + nparams++; } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in Tersoff potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next line - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].powerm = atof(words[3]); - params[nparams].lam3 = atof(words[4]); - params[nparams].h = atof(words[5]); - params[nparams].powern = atof(words[6]); - params[nparams].beta = atof(words[7]); - params[nparams].lam2 = atof(words[8]); - params[nparams].bigb = atof(words[9]); - params[nparams].bigr = atof(words[10]); - params[nparams].bigd = atof(words[11]); - params[nparams].lam1 = atof(words[12]); - params[nparams].biga = atof(words[13]); - params[nparams].powern_del = atof(words[14]); - params[nparams].c1 = atof(words[15]); - params[nparams].c2 = atof(words[16]); - params[nparams].c3 = atof(words[17]); - params[nparams].c4 = atof(words[18]); - params[nparams].c5 = atof(words[19]); - params[nparams].c0 = atof(words[20]); - - // currently only allow m exponent of 1 or 3 - - params[nparams].powermint = int(params[nparams].powerm); - - if ( - params[nparams].powern < 0.0 || - params[nparams].beta < 0.0 || - params[nparams].lam2 < 0.0 || - params[nparams].bigb < 0.0 || - params[nparams].bigr < 0.0 || - params[nparams].bigd < 0.0 || - params[nparams].bigd > params[nparams].bigr || - params[nparams].lam1 < 0.0 || - params[nparams].biga < 0.0 || - params[nparams].powerm - params[nparams].powermint != 0.0 || - (params[nparams].powermint != 3 && - params[nparams].powermint != 1) - ) - error->all(FLERR,"Illegal Tersoff parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_tersoff_mod_c.h b/src/MANYBODY/pair_tersoff_mod_c.h index e7e32a0a66..bad5f988be 100644 --- a/src/MANYBODY/pair_tersoff_mod_c.h +++ b/src/MANYBODY/pair_tersoff_mod_c.h @@ -29,6 +29,8 @@ class PairTersoffMODC : public PairTersoffMOD { PairTersoffMODC(class LAMMPS *lmp) : PairTersoffMOD(lmp) {}; ~PairTersoffMODC() {} + static const int NPARAMS_PER_LINE = 21; + protected: void read_file(char *); void repulsive(Param *, double, double &, int, double &); diff --git a/src/MANYBODY/pair_tersoff_zbl.cpp b/src/MANYBODY/pair_tersoff_zbl.cpp index d5e3fb1b0f..2b464061ca 100644 --- a/src/MANYBODY/pair_tersoff_zbl.cpp +++ b/src/MANYBODY/pair_tersoff_zbl.cpp @@ -29,12 +29,14 @@ #include "error.h" #include "math_const.h" #include "math_special.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define MAXLINE 1024 #define DELTA 4 /* ---------------------------------------------------------------------- */ @@ -62,152 +64,108 @@ PairTersoffZBL::PairTersoffZBL(LAMMPS *lmp) : PairTersoff(lmp) void PairTersoffZBL::read_file(char *file) { - int params_per_line = 21; - char **words = new char*[params_per_line+1]; - memory->sfree(params); - params = NULL; + params = nullptr; nparams = maxparam = 0; // open file on proc 0 - FILE *fp; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open Tersoff potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(lmp, file, "Tersoff"); + char * line; - // read each line out of file, skipping blank lines or leading '#' - // store line of params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next entry in file + int ielement, jelement, kelement; - // strip comment, skip line if blank + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; - // concatenate additional lines until have params_per_line words + // load up parameter settings and error check their values - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } + + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].powerm = values.next_double(); + params[nparams].gamma = values.next_double(); + params[nparams].lam3 = values.next_double(); + params[nparams].c = values.next_double(); + params[nparams].d = values.next_double(); + params[nparams].h = values.next_double(); + params[nparams].powern = values.next_double(); + params[nparams].beta = values.next_double(); + params[nparams].lam2 = values.next_double(); + params[nparams].bigb = values.next_double(); + params[nparams].bigr = values.next_double(); + params[nparams].bigd = values.next_double(); + params[nparams].lam1 = values.next_double(); + params[nparams].biga = values.next_double(); + params[nparams].Z_i = values.next_double(); + params[nparams].Z_j = values.next_double(); + params[nparams].ZBLcut = values.next_double(); + params[nparams].ZBLexpscale = values.next_double(); + params[nparams].powermint = int(params[nparams].powerm); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + // currently only allow m exponent of 1 or 3 + if (params[nparams].c < 0.0 || + params[nparams].d < 0.0 || + params[nparams].powern < 0.0 || + params[nparams].beta < 0.0 || + params[nparams].lam2 < 0.0 || + params[nparams].bigb < 0.0 || + params[nparams].bigr < 0.0 || + params[nparams].bigd < 0.0 || + params[nparams].bigd > params[nparams].bigr || + params[nparams].lam1 < 0.0 || + params[nparams].biga < 0.0 || + params[nparams].powerm - params[nparams].powermint != 0.0 || + (params[nparams].powermint != 3 && + params[nparams].powermint != 1) || + params[nparams].gamma < 0.0 || + params[nparams].Z_i < 1.0 || + params[nparams].Z_j < 1.0 || + params[nparams].ZBLcut < 0.0 || + params[nparams].ZBLexpscale < 0.0) + error->one(FLERR,"Illegal Tersoff parameter"); + + nparams++; } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in Tersoff potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next line - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].powerm = atof(words[3]); - params[nparams].gamma = atof(words[4]); - params[nparams].lam3 = atof(words[5]); - params[nparams].c = atof(words[6]); - params[nparams].d = atof(words[7]); - params[nparams].h = atof(words[8]); - params[nparams].powern = atof(words[9]); - params[nparams].beta = atof(words[10]); - params[nparams].lam2 = atof(words[11]); - params[nparams].bigb = atof(words[12]); - params[nparams].bigr = atof(words[13]); - params[nparams].bigd = atof(words[14]); - params[nparams].lam1 = atof(words[15]); - params[nparams].biga = atof(words[16]); - params[nparams].Z_i = atof(words[17]); - params[nparams].Z_j = atof(words[18]); - params[nparams].ZBLcut = atof(words[19]); - params[nparams].ZBLexpscale = atof(words[20]); - - // currently only allow m exponent of 1 or 3 - - params[nparams].powermint = int(params[nparams].powerm); - - if (params[nparams].c < 0.0 || - params[nparams].d < 0.0 || - params[nparams].powern < 0.0 || - params[nparams].beta < 0.0 || - params[nparams].lam2 < 0.0 || - params[nparams].bigb < 0.0 || - params[nparams].bigr < 0.0 || - params[nparams].bigd < 0.0 || - params[nparams].bigd > params[nparams].bigr || - params[nparams].lam1 < 0.0 || - params[nparams].biga < 0.0 || - params[nparams].powerm - params[nparams].powermint != 0.0 || - (params[nparams].powermint != 3 && - params[nparams].powermint != 1) || - params[nparams].gamma < 0.0 || - params[nparams].Z_i < 1.0 || - params[nparams].Z_j < 1.0 || - params[nparams].ZBLcut < 0.0 || - params[nparams].ZBLexpscale < 0.0) - error->all(FLERR,"Illegal Tersoff parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_tersoff_zbl.h b/src/MANYBODY/pair_tersoff_zbl.h index 34bec05195..be3f496b62 100644 --- a/src/MANYBODY/pair_tersoff_zbl.h +++ b/src/MANYBODY/pair_tersoff_zbl.h @@ -29,6 +29,8 @@ class PairTersoffZBL : public PairTersoff { PairTersoffZBL(class LAMMPS *); ~PairTersoffZBL() {} + static const int NPARAMS_PER_LINE = 21; + protected: double global_a_0; // Bohr radius for Coulomb repulsion double global_epsilon_0; // permittivity of vacuum for Coulomb repulsion diff --git a/src/MANYBODY/pair_vashishta.cpp b/src/MANYBODY/pair_vashishta.cpp index 13b44c58a4..37fea2582f 100644 --- a/src/MANYBODY/pair_vashishta.cpp +++ b/src/MANYBODY/pair_vashishta.cpp @@ -29,10 +29,12 @@ #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 #define DELTA 4 /* ---------------------------------------------------------------------- */ @@ -352,132 +354,88 @@ double PairVashishta::init_one(int i, int j) void PairVashishta::read_file(char *file) { - int params_per_line = 17; - char **words = new char*[params_per_line+1]; - memory->sfree(params); - params = NULL; + params = nullptr; nparams = maxparam = 0; // open file on proc 0 - FILE *fp; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open Vashishta potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(lmp, file, "Vashishta"); + char * line; - // read each set of params from potential file - // one set of params can span multiple lines - // store params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next entry in file + int ielement, jelement, kelement; - // strip comment, skip line if blank + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; + // load up parameter settings and error check their values - // concatenate additional lines until have params_per_line words + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].bigh = values.next_double(); + params[nparams].eta = values.next_double(); + params[nparams].zi = values.next_double(); + params[nparams].zj = values.next_double(); + params[nparams].lambda1 = values.next_double(); + params[nparams].bigd = values.next_double(); + params[nparams].lambda4 = values.next_double(); + params[nparams].bigw = values.next_double(); + params[nparams].cut = values.next_double(); + params[nparams].bigb = values.next_double(); + params[nparams].gamma = values.next_double(); + params[nparams].r0 = values.next_double(); + params[nparams].bigc = values.next_double(); + params[nparams].costheta = values.next_double(); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + if (params[nparams].bigb < 0.0 || params[nparams].gamma < 0.0 || + params[nparams].r0 < 0.0 || params[nparams].bigc < 0.0 || + params[nparams].bigh < 0.0 || params[nparams].eta < 0.0 || + params[nparams].lambda1 < 0.0 || params[nparams].bigd < 0.0 || + params[nparams].lambda4 < 0.0 || params[nparams].bigw < 0.0 || + params[nparams].cut < 0.0) + error->one(FLERR,"Illegal Vashishta parameter"); + + nparams++; } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in Vashishta potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next entry in file - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].bigh = atof(words[3]); - params[nparams].eta = atof(words[4]); - params[nparams].zi = atof(words[5]); - params[nparams].zj = atof(words[6]); - params[nparams].lambda1 = atof(words[7]); - params[nparams].bigd = atof(words[8]); - params[nparams].lambda4 = atof(words[9]); - params[nparams].bigw = atof(words[10]); - params[nparams].cut = atof(words[11]); - params[nparams].bigb = atof(words[12]); - params[nparams].gamma = atof(words[13]); - params[nparams].r0 = atof(words[14]); - params[nparams].bigc = atof(words[15]); - params[nparams].costheta = atof(words[16]); - - if (params[nparams].bigb < 0.0 || params[nparams].gamma < 0.0 || - params[nparams].r0 < 0.0 || params[nparams].bigc < 0.0 || - params[nparams].bigh < 0.0 || params[nparams].eta < 0.0 || - params[nparams].lambda1 < 0.0 || params[nparams].bigd < 0.0 || - params[nparams].lambda4 < 0.0 || params[nparams].bigw < 0.0 || - params[nparams].cut < 0.0) - error->all(FLERR,"Illegal Vashishta parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_vashishta.h b/src/MANYBODY/pair_vashishta.h index 5ec47cf92d..bd250d328a 100644 --- a/src/MANYBODY/pair_vashishta.h +++ b/src/MANYBODY/pair_vashishta.h @@ -34,6 +34,8 @@ class PairVashishta : public Pair { double init_one(int, int); void init_style(); + static const int NPARAMS_PER_LINE = 17; + struct Param { double bigb,gamma,r0,bigc,costheta; double bigh,eta,zi,zj; diff --git a/src/MOLECULE/angle_cosine_periodic.cpp b/src/MOLECULE/angle_cosine_periodic.cpp index 95f299683e..b305ece7dd 100644 --- a/src/MOLECULE/angle_cosine_periodic.cpp +++ b/src/MOLECULE/angle_cosine_periodic.cpp @@ -295,5 +295,5 @@ double AngleCosinePeriodic::single(int type, int i1, int i2, int i3) if (c < -1.0) c = -1.0; c = cos(acos(c)*multiplicity[type]); - return k[type]*(1.0-b[type]*powsign(multiplicity[type])*c); + return 2.0*k[type]*(1.0-b[type]*powsign(multiplicity[type])*c); } diff --git a/src/MOLECULE/angle_table.cpp b/src/MOLECULE/angle_table.cpp index b6439084a6..4890a11975 100644 --- a/src/MOLECULE/angle_table.cpp +++ b/src/MOLECULE/angle_table.cpp @@ -29,14 +29,15 @@ #include "memory.h" #include "error.h" #include "utils.h" -#include "utils.h" +#include "tokenizer.h" +#include "table_file_reader.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace MathConst; enum{LINEAR,SPLINE}; -#define MAXLINE 1024 #define SMALL 0.001 #define TINY 1.E-10 @@ -381,61 +382,45 @@ void AngleTable::free_table(Table *tb) void AngleTable::read_table(Table *tb, char *file, char *keyword) { - char line[MAXLINE]; + TableFileReader reader(lmp, file, "angle"); - // open file + char * line = reader.find_section_start(keyword); - FILE *fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open file %s",file); - error->one(FLERR,str); - } - - // loop until section found with matching keyword - - while (1) { - if (fgets(line,MAXLINE,fp) == NULL) - error->one(FLERR,"Did not find keyword in table file"); - if (strspn(line," \t\n") == strlen(line)) continue; // blank line - if (line[0] == '#') continue; // comment - char *word = strtok(line," \t\n\r"); - if (strcmp(word,keyword) == 0) break; // matching keyword - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); // no match, skip section - param_extract(tb,line); - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - for (int i = 0; i < tb->ninput; i++) - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); + if (!line) { + error->one(FLERR,"Did not find keyword in table file"); } // read args on 2nd line of section // allocate table arrays for file values - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - param_extract(tb,line); - memory->create(tb->afile,tb->ninput,"angle:afile"); - memory->create(tb->efile,tb->ninput,"angle:efile"); - memory->create(tb->ffile,tb->ninput,"angle:ffile"); + line = reader.next_line(); + param_extract(tb, line); + memory->create(tb->afile, tb->ninput, "angle:afile"); + memory->create(tb->efile, tb->ninput, "angle:efile"); + memory->create(tb->ffile, tb->ninput, "angle:ffile"); // read a,e,f table values from file int cerror = 0; - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); + reader.skip_line(); for (int i = 0; i < tb->ninput; i++) { - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - if (3 != sscanf(line,"%*d %lg %lg %lg", - &tb->afile[i],&tb->efile[i],&tb->ffile[i])) ++cerror; + line = reader.next_line(4); + try { + ValueTokenizer values(line); + values.next_int(); + tb->afile[i] = values.next_double(); + tb->efile[i] = values.next_double(); + tb->ffile[i] = values.next_double(); + } catch (TokenizerException & e) { + ++cerror; + } } - fclose(fp); - // warn if data was read incompletely, e.g. columns were missing if (cerror) { - char str[128]; - sprintf(str,"%d of %d lines in table were incomplete or could not be" - " parsed completely",cerror,tb->ninput); - error->warning(FLERR,str); + std::string str = fmt::format("{} of {} lines in table were incomplete or could not be parsed completely", cerror, tb->ninput); + error->warning(FLERR,str.c_str()); } } @@ -521,26 +506,28 @@ void AngleTable::param_extract(Table *tb, char *line) tb->fpflag = 0; tb->theta0 = MY_PI; - char *word = strtok(line," \t\n\r\f"); - while (word) { - if (strcmp(word,"N") == 0) { - word = strtok(NULL," \t\n\r\f"); - tb->ninput = atoi(word); - } else if (strcmp(word,"FP") == 0) { - tb->fpflag = 1; - word = strtok(NULL," \t\n\r\f"); - tb->fplo = atof(word); - word = strtok(NULL," \t\n\r\f"); - tb->fphi = atof(word); - tb->fplo *= (180.0/MY_PI)*(180.0/MY_PI); - tb->fphi *= (180.0/MY_PI)*(180.0/MY_PI); - } else if (strcmp(word,"EQ") == 0) { - word = strtok(NULL," \t\n\r\f"); - tb->theta0 = atof(word)/180.0*MY_PI; - } else { - error->one(FLERR,"Invalid keyword in angle table parameters"); + try { + ValueTokenizer values(line); + + while (values.has_next()) { + std::string word = values.next_string(); + + if (word == "N") { + tb->ninput = values.next_int(); + } else if (word == "FP") { + tb->fpflag = 1; + tb->fplo = values.next_double(); + tb->fphi = values.next_double(); + tb->fplo *= (180.0/MY_PI)*(180.0/MY_PI); + tb->fphi *= (180.0/MY_PI)*(180.0/MY_PI); + } else if (word == "EQ") { + tb->theta0 = values.next_double()/180.0*MY_PI; + } else { + error->one(FLERR,"Invalid keyword in angle table parameters"); + } } - word = strtok(NULL," \t\n\r\f"); + } catch(TokenizerException & e) { + error->one(FLERR, e.what()); } if (tb->ninput == 0) error->one(FLERR,"Angle table parameters did not set N"); diff --git a/src/MOLECULE/atom_vec_angle.cpp b/src/MOLECULE/atom_vec_angle.cpp index 4eba471b8f..1e00a73617 100644 --- a/src/MOLECULE/atom_vec_angle.cpp +++ b/src/MOLECULE/atom_vec_angle.cpp @@ -13,13 +13,6 @@ #include "atom_vec_angle.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -31,895 +24,142 @@ AtomVecAngle::AtomVecAngle(LAMMPS *lmp) : AtomVec(lmp) bonds_allow = angles_allow = 1; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 7; - size_velocity = 3; - size_data_atom = 6; - size_data_vel = 4; - xcol_data = 4; - atom->molecule_flag = 1; -} -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file -void AtomVecAngle::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); + fields_grow = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 nspecial special"; + fields_copy = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 nspecial special"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; + fields_border = (char *) "molecule"; + fields_border_vel = (char *) "molecule"; + fields_exchange = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 nspecial special"; + fields_restart = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3"; + fields_create = (char *) "molecule num_bond num_angle nspecial"; + fields_data_atom = (char *) "id molecule type x"; + fields_data_vel = (char *) "id v"; - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); + setup_fields(); - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - - nspecial = memory->grow(atom->nspecial,nmax,3,"atom:nspecial"); - special = memory->grow(atom->special,nmax,atom->maxspecial,"atom:special"); - - num_bond = memory->grow(atom->num_bond,nmax,"atom:num_bond"); - bond_type = memory->grow(atom->bond_type,nmax,atom->bond_per_atom, - "atom:bond_type"); - bond_atom = memory->grow(atom->bond_atom,nmax,atom->bond_per_atom, - "atom:bond_atom"); - - num_angle = memory->grow(atom->num_angle,nmax,"atom:num_angle"); - angle_type = memory->grow(atom->angle_type,nmax,atom->angle_per_atom, - "atom:angle_type"); - angle_atom1 = memory->grow(atom->angle_atom1,nmax,atom->angle_per_atom, - "atom:angle_atom1"); - angle_atom2 = memory->grow(atom->angle_atom2,nmax,atom->angle_per_atom, - "atom:angle_atom2"); - angle_atom3 = memory->grow(atom->angle_atom3,nmax,atom->angle_per_atom, - "atom:angle_atom3"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecAngle::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; - nspecial = atom->nspecial; special = atom->special; - num_bond = atom->num_bond; bond_type = atom->bond_type; - bond_atom = atom->bond_atom; - num_angle = atom->num_angle; angle_type = atom->angle_type; - angle_atom1 = atom->angle_atom1; angle_atom2 = atom->angle_atom2; - angle_atom3 = atom->angle_atom3; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecAngle::copy(int i, int j, int delflag) -{ - int k; - - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - molecule[j] = molecule[i]; - - num_bond[j] = num_bond[i]; - for (k = 0; k < num_bond[j]; k++) { - bond_type[j][k] = bond_type[i][k]; - bond_atom[j][k] = bond_atom[i][k]; - } - - num_angle[j] = num_angle[i]; - for (k = 0; k < num_angle[j]; k++) { - angle_type[j][k] = angle_type[i][k]; - angle_atom1[j][k] = angle_atom1[i][k]; - angle_atom2[j][k] = angle_atom2[i][k]; - angle_atom3[j][k] = angle_atom3[i][k]; - } - - nspecial[j][0] = nspecial[i][0]; - nspecial[j][1] = nspecial[i][1]; - nspecial[j][2] = nspecial[i][2]; - for (k = 0; k < nspecial[j][2]; k++) special[j][k] = special[i][k]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); + bond_per_atom = angle_per_atom = 0; + bond_negative = angle_negative = NULL; } /* ---------------------------------------------------------------------- */ -int AtomVecAngle::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +AtomVecAngle::~AtomVecAngle() { - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAngle::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAngle::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAngle::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAngle::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAngle::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - molecule[i] = (tagint) ubuf(buf[m++]).i; - return m; + delete [] bond_negative; + delete [] angle_negative; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -int AtomVecAngle::pack_exchange(int i, double *buf) +void AtomVecAngle::grow_pointers() { - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(bond_type[i][k]).d; - buf[m++] = ubuf(bond_atom[i][k]).d; - } - - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(angle_type[i][k]).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; - } - - buf[m++] = ubuf(nspecial[i][0]).d; - buf[m++] = ubuf(nspecial[i][1]).d; - buf[m++] = ubuf(nspecial[i][2]).d; - for (k = 0; k < nspecial[i][2]; k++) buf[m++] = ubuf(special[i][k]).d; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::unpack_exchange(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][1] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][2] = (int) ubuf(buf[m++]).i; - for (k = 0; k < nspecial[nlocal][2]; k++) - special[nlocal][k] = (tagint) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; + num_bond = atom->num_bond; + bond_type = atom->bond_type; + num_angle = atom->num_angle; + angle_type = atom->angle_type; + nspecial = atom->nspecial; } /* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes + modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecAngle::size_restart() +void AtomVecAngle::pack_restart_pre(int ilocal) { - int i; + // insure negative vectors are needed length - int nlocal = atom->nlocal; - int n = 0; - for (i = 0; i < nlocal; i++) - n += 14 + 2*num_bond[i] + 4*num_angle[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecAngle::pack_restart(int i, double *buf) -{ - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(MAX(bond_type[i][k],-bond_type[i][k])).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (bond_per_atom < atom->bond_per_atom) { + delete [] bond_negative; + bond_per_atom = atom->bond_per_atom; + bond_negative = new int[bond_per_atom]; + } + if (angle_per_atom < atom->angle_per_atom) { + delete [] angle_negative; + angle_per_atom = atom->angle_per_atom; + angle_negative = new int[angle_per_atom]; } - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(MAX(angle_type[i][k],-angle_type[i][k])).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; + // flip any negative types to positive and flag which ones + + int any_bond_negative = 0; + for (int m = 0; m < num_bond[ilocal]; m++) { + if (bond_type[ilocal][m] < 0) { + bond_negative[m] = 1; + bond_type[ilocal][m] = -bond_type[ilocal][m]; + any_bond_negative = 1; + } else bond_negative[m] = 0; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecAngle::unpack_restart(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecAngle::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - molecule[nlocal] = 0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecAngle::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecAngle::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecAngle::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + int any_angle_negative = 0; + for (int m = 0; m < num_angle[ilocal]; m++) { + if (angle_type[ilocal][m] < 0) { + angle_negative[m] = 1; + angle_type[ilocal][m] = -angle_type[ilocal][m]; + any_angle_negative = 1; + } else angle_negative[m] = 0; } } /* ---------------------------------------------------------------------- - pack hybrid atom info for data file + unmodify values packed by AtomVec::pack_restart() ------------------------------------------------------------------------- */ -int AtomVecAngle::pack_data_hybrid(int i, double *buf) +void AtomVecAngle::pack_restart_post(int ilocal) { - buf[0] = ubuf(molecule[i]).d; - return 1; + // restore the flagged types to their negative values + + if (any_bond_negative) { + for (int m = 0; m < num_bond[ilocal]; m++) + if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; + } + + if (any_angle_negative) { + for (int m = 0; m < num_angle[ilocal]; m++) + if (angle_negative[m]) angle_type[ilocal][m] = -angle_type[ilocal][m]; + } } /* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags + initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ -void AtomVecAngle::write_data(FILE *fp, int n, double **buf) +void AtomVecAngle::unpack_restart_init(int ilocal) { - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- - write hybrid atom info to data file + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecAngle::write_data_hybrid(FILE *fp, double *buf) +void AtomVecAngle::data_atom_post(int ilocal) { - fprintf(fp," " TAGINT_FORMAT,(tagint) ubuf(buf[0]).i); - return 1; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecAngle::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("nspecial")) bytes += memory->usage(nspecial,nmax,3); - if (atom->memcheck("special")) - bytes += memory->usage(special,nmax,atom->maxspecial); - - if (atom->memcheck("num_bond")) bytes += memory->usage(num_bond,nmax); - if (atom->memcheck("bond_type")) - bytes += memory->usage(bond_type,nmax,atom->bond_per_atom); - if (atom->memcheck("bond_atom")) - bytes += memory->usage(bond_atom,nmax,atom->bond_per_atom); - - if (atom->memcheck("num_angle")) bytes += memory->usage(num_angle,nmax); - if (atom->memcheck("angle_type")) - bytes += memory->usage(angle_type,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom1")) - bytes += memory->usage(angle_atom1,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom2")) - bytes += memory->usage(angle_atom2,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom3")) - bytes += memory->usage(angle_atom3,nmax,atom->angle_per_atom); - - return bytes; + num_bond[ilocal] = 0; + num_angle[ilocal] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_angle.h b/src/MOLECULE/atom_vec_angle.h index 9030cce0d8..0ce0b4baab 100644 --- a/src/MOLECULE/atom_vec_angle.h +++ b/src/MOLECULE/atom_vec_angle.h @@ -27,50 +27,22 @@ namespace LAMMPS_NS { class AtomVecAngle : public AtomVec { public: AtomVecAngle(class LAMMPS *); - virtual ~AtomVecAngle() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); + ~AtomVecAngle(); - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - tagint *molecule; + void grow_pointers(); + void pack_restart_pre(int); + void pack_restart_post(int); + void unpack_restart_init(int); + void data_atom_post(int); + + private: + int *num_bond,*num_angle; + int **bond_type,**angle_type; int **nspecial; - tagint **special; - int *num_bond; - int **bond_type; - tagint **bond_atom; - int *num_angle; - int **angle_type; - tagint **angle_atom1,**angle_atom2,**angle_atom3; + + int any_bond_negative,any_angle_negative; + int bond_per_atom,angle_per_atom; + int *bond_negative,*angle_negative; }; } @@ -80,13 +52,4 @@ class AtomVecAngle : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/MOLECULE/atom_vec_bond.cpp b/src/MOLECULE/atom_vec_bond.cpp index 0bcd614f94..2fa445c8ee 100644 --- a/src/MOLECULE/atom_vec_bond.cpp +++ b/src/MOLECULE/atom_vec_bond.cpp @@ -13,13 +13,6 @@ #include "atom_vec_bond.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -31,829 +24,114 @@ AtomVecBond::AtomVecBond(LAMMPS *lmp) : AtomVec(lmp) bonds_allow = 1; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 7; - size_velocity = 3; - size_data_atom = 6; - size_data_vel = 4; - xcol_data = 4; - atom->molecule_flag = 1; -} -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file -void AtomVecBond::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); + fields_grow = (char *) + "molecule num_bond bond_type bond_atom nspecial special"; + fields_copy = (char *) + "molecule num_bond bond_type bond_atom nspecial special"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; + fields_border = (char *) "molecule"; + fields_border_vel = (char *) "molecule"; + fields_exchange = (char *) + "molecule num_bond bond_type bond_atom nspecial special"; + fields_restart = (char *) "molecule num_bond bond_type bond_atom"; + fields_create = (char *) "molecule num_bond nspecial"; + fields_data_atom = (char *) "id molecule type x"; + fields_data_vel = (char *) "id v"; - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); + setup_fields(); - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - - nspecial = memory->grow(atom->nspecial,nmax,3,"atom:nspecial"); - special = memory->grow(atom->special,nmax,atom->maxspecial,"atom:special"); - - num_bond = memory->grow(atom->num_bond,nmax,"atom:num_bond"); - bond_type = memory->grow(atom->bond_type,nmax,atom->bond_per_atom, - "atom:bond_type"); - bond_atom = memory->grow(atom->bond_atom,nmax,atom->bond_per_atom, - "atom:bond_atom"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecBond::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; - nspecial = atom->nspecial; special = atom->special; - num_bond = atom->num_bond; bond_type = atom->bond_type; - bond_atom = atom->bond_atom; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecBond::copy(int i, int j, int delflag) -{ - int k; - - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - molecule[j] = molecule[i]; - - num_bond[j] = num_bond[i]; - for (k = 0; k < num_bond[j]; k++) { - bond_type[j][k] = bond_type[i][k]; - bond_atom[j][k] = bond_atom[i][k]; - } - - nspecial[j][0] = nspecial[i][0]; - nspecial[j][1] = nspecial[i][1]; - nspecial[j][2] = nspecial[i][2]; - for (k = 0; k < nspecial[j][2]; k++) special[j][k] = special[i][k]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); + bond_per_atom = 0; + bond_negative = NULL; } /* ---------------------------------------------------------------------- */ -int AtomVecBond::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +AtomVecBond::~AtomVecBond() { - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBond::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBond::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBond::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBond::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBond::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - molecule[i] = (tagint) ubuf(buf[m++]).i; - return m; + delete [] bond_negative; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -int AtomVecBond::pack_exchange(int i, double *buf) +void AtomVecBond::grow_pointers() { - int k; + num_bond = atom->num_bond; + bond_type = atom->bond_type; + nspecial = atom->nspecial; +} - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; +/* ---------------------------------------------------------------------- + modify values for AtomVec::pack_restart() to pack +------------------------------------------------------------------------- */ - buf[m++] = ubuf(molecule[i]).d; +void AtomVecBond::pack_restart_pre(int ilocal) +{ + // insure bond_negative vector is needed length - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(bond_type[i][k]).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (bond_per_atom < atom->bond_per_atom) { + delete [] bond_negative; + bond_per_atom = atom->bond_per_atom; + bond_negative = new int[bond_per_atom]; } - buf[m++] = ubuf(nspecial[i][0]).d; - buf[m++] = ubuf(nspecial[i][1]).d; - buf[m++] = ubuf(nspecial[i][2]).d; - for (k = 0; k < nspecial[i][2]; k++) buf[m++] = ubuf(special[i][k]).d; + // flip any negative types to positive and flag which ones - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::unpack_exchange(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][1] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][2] = (int) ubuf(buf[m++]).i; - for (k = 0; k < nspecial[nlocal][2]; k++) - special[nlocal][k] = (tagint) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecBond::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 0; - for (i = 0; i < nlocal; i++) - n += 13 + 2*num_bond[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecBond::pack_restart(int i, double *buf) -{ - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(MAX(bond_type[i][k],-bond_type[i][k])).d; - buf[m++] = ubuf(bond_atom[i][k]).d; - } - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecBond::unpack_restart(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecBond::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - molecule[nlocal] = 0; - num_bond[nlocal] = 0; - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecBond::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - num_bond[nlocal] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecBond::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - num_bond[nlocal] = 0; - - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecBond::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + any_bond_negative = 0; + for (int m = 0; m < num_bond[ilocal]; m++) { + if (bond_type[ilocal][m] < 0) { + bond_negative[m] = 1; + bond_type[ilocal][m] = -bond_type[ilocal][m]; + any_bond_negative = 1; + } else bond_negative[m] = 0; } } /* ---------------------------------------------------------------------- - pack hybrid atom info for data file + unmodify values packed by AtomVec::pack_restart() ------------------------------------------------------------------------- */ -int AtomVecBond::pack_data_hybrid(int i, double *buf) +void AtomVecBond::pack_restart_post(int ilocal) { - buf[0] = ubuf(molecule[i]).d; - return 1; + // restore the flagged types to their negative values + + if (any_bond_negative) { + for (int m = 0; m < num_bond[ilocal]; m++) + if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; + } } /* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags + initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ -void AtomVecBond::write_data(FILE *fp, int n, double **buf) +void AtomVecBond::unpack_restart_init(int ilocal) { - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- - write hybrid atom info to data file + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecBond::write_data_hybrid(FILE *fp, double *buf) +void AtomVecBond::data_atom_post(int ilocal) { - fprintf(fp," " TAGINT_FORMAT,(tagint) ubuf(buf[0]).i); - return 1; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecBond::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("nspecial")) bytes += memory->usage(nspecial,nmax,3); - if (atom->memcheck("special")) - bytes += memory->usage(special,nmax,atom->maxspecial); - - if (atom->memcheck("num_bond")) bytes += memory->usage(num_bond,nmax); - if (atom->memcheck("bond_type")) - bytes += memory->usage(bond_type,nmax,atom->bond_per_atom); - if (atom->memcheck("bond_atom")) - bytes += memory->usage(bond_atom,nmax,atom->bond_per_atom); - - return bytes; + num_bond[ilocal] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_bond.h b/src/MOLECULE/atom_vec_bond.h index d7370d4659..403167ac11 100644 --- a/src/MOLECULE/atom_vec_bond.h +++ b/src/MOLECULE/atom_vec_bond.h @@ -27,46 +27,22 @@ namespace LAMMPS_NS { class AtomVecBond : public AtomVec { public: AtomVecBond(class LAMMPS *); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); + ~AtomVecBond(); + + void grow_pointers(); + void pack_restart_pre(int); + void pack_restart_post(int); + void unpack_restart_init(int); + void data_atom_post(int); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - tagint *molecule; - int **nspecial; - tagint **special; int *num_bond; int **bond_type; - tagint **bond_atom; + int **nspecial; + + int any_bond_negative; + int bond_per_atom; + int *bond_negative; }; } @@ -76,13 +52,4 @@ class AtomVecBond : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/MOLECULE/atom_vec_full.cpp b/src/MOLECULE/atom_vec_full.cpp index 76c60ba121..866cf796c9 100644 --- a/src/MOLECULE/atom_vec_full.cpp +++ b/src/MOLECULE/atom_vec_full.cpp @@ -13,13 +13,6 @@ #include "atom_vec_full.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -31,1078 +24,210 @@ AtomVecFull::AtomVecFull(LAMMPS *lmp) : AtomVec(lmp) bonds_allow = angles_allow = dihedrals_allow = impropers_allow = 1; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 8; - size_velocity = 3; - size_data_atom = 7; - size_data_vel = 4; - xcol_data = 5; - atom->molecule_flag = atom->q_flag = 1; -} -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file -void AtomVecFull::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); + fields_grow = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_copy = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; + fields_border = (char *) "q molecule"; + fields_border_vel = (char *) "q molecule"; + fields_exchange = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_restart = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4"; + fields_create = (char *) + "q molecule num_bond num_angle num_dihedral num_improper nspecial"; + fields_data_atom = (char *) "id molecule type q x"; + fields_data_vel = (char *) "id v"; - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); + setup_fields(); - q = memory->grow(atom->q,nmax,"atom:q"); - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - - nspecial = memory->grow(atom->nspecial,nmax,3,"atom:nspecial"); - special = memory->grow(atom->special,nmax,atom->maxspecial,"atom:special"); - - num_bond = memory->grow(atom->num_bond,nmax,"atom:num_bond"); - bond_type = memory->grow(atom->bond_type,nmax,atom->bond_per_atom, - "atom:bond_type"); - bond_atom = memory->grow(atom->bond_atom,nmax,atom->bond_per_atom, - "atom:bond_atom"); - - num_angle = memory->grow(atom->num_angle,nmax,"atom:num_angle"); - angle_type = memory->grow(atom->angle_type,nmax,atom->angle_per_atom, - "atom:angle_type"); - angle_atom1 = memory->grow(atom->angle_atom1,nmax,atom->angle_per_atom, - "atom:angle_atom1"); - angle_atom2 = memory->grow(atom->angle_atom2,nmax,atom->angle_per_atom, - "atom:angle_atom2"); - angle_atom3 = memory->grow(atom->angle_atom3,nmax,atom->angle_per_atom, - "atom:angle_atom3"); - - num_dihedral = memory->grow(atom->num_dihedral,nmax,"atom:num_dihedral"); - dihedral_type = memory->grow(atom->dihedral_type,nmax, - atom->dihedral_per_atom,"atom:dihedral_type"); - dihedral_atom1 = - memory->grow(atom->dihedral_atom1,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom1"); - dihedral_atom2 = - memory->grow(atom->dihedral_atom2,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom2"); - dihedral_atom3 = - memory->grow(atom->dihedral_atom3,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom3"); - dihedral_atom4 = - memory->grow(atom->dihedral_atom4,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom4"); - - num_improper = memory->grow(atom->num_improper,nmax,"atom:num_improper"); - improper_type = - memory->grow(atom->improper_type,nmax,atom->improper_per_atom, - "atom:improper_type"); - improper_atom1 = - memory->grow(atom->improper_atom1,nmax,atom->improper_per_atom, - "atom:improper_atom1"); - improper_atom2 = - memory->grow(atom->improper_atom2,nmax,atom->improper_per_atom, - "atom:improper_atom2"); - improper_atom3 = - memory->grow(atom->improper_atom3,nmax,atom->improper_per_atom, - "atom:improper_atom3"); - improper_atom4 = - memory->grow(atom->improper_atom4,nmax,atom->improper_per_atom, - "atom:improper_atom4"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecFull::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - q = atom->q; molecule = atom->molecule; - nspecial = atom->nspecial; special = atom->special; - num_bond = atom->num_bond; bond_type = atom->bond_type; - bond_atom = atom->bond_atom; - num_angle = atom->num_angle; angle_type = atom->angle_type; - angle_atom1 = atom->angle_atom1; angle_atom2 = atom->angle_atom2; - angle_atom3 = atom->angle_atom3; - num_dihedral = atom->num_dihedral; dihedral_type = atom->dihedral_type; - dihedral_atom1 = atom->dihedral_atom1; dihedral_atom2 = atom->dihedral_atom2; - dihedral_atom3 = atom->dihedral_atom3; dihedral_atom4 = atom->dihedral_atom4; - num_improper = atom->num_improper; improper_type = atom->improper_type; - improper_atom1 = atom->improper_atom1; improper_atom2 = atom->improper_atom2; - improper_atom3 = atom->improper_atom3; improper_atom4 = atom->improper_atom4; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecFull::copy(int i, int j, int delflag) -{ - int k; - - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - q[j] = q[i]; - molecule[j] = molecule[i]; - - num_bond[j] = num_bond[i]; - for (k = 0; k < num_bond[j]; k++) { - bond_type[j][k] = bond_type[i][k]; - bond_atom[j][k] = bond_atom[i][k]; - } - - num_angle[j] = num_angle[i]; - for (k = 0; k < num_angle[j]; k++) { - angle_type[j][k] = angle_type[i][k]; - angle_atom1[j][k] = angle_atom1[i][k]; - angle_atom2[j][k] = angle_atom2[i][k]; - angle_atom3[j][k] = angle_atom3[i][k]; - } - - num_dihedral[j] = num_dihedral[i]; - for (k = 0; k < num_dihedral[j]; k++) { - dihedral_type[j][k] = dihedral_type[i][k]; - dihedral_atom1[j][k] = dihedral_atom1[i][k]; - dihedral_atom2[j][k] = dihedral_atom2[i][k]; - dihedral_atom3[j][k] = dihedral_atom3[i][k]; - dihedral_atom4[j][k] = dihedral_atom4[i][k]; - } - - num_improper[j] = num_improper[i]; - for (k = 0; k < num_improper[j]; k++) { - improper_type[j][k] = improper_type[i][k]; - improper_atom1[j][k] = improper_atom1[i][k]; - improper_atom2[j][k] = improper_atom2[i][k]; - improper_atom3[j][k] = improper_atom3[i][k]; - improper_atom4[j][k] = improper_atom4[i][k]; - } - - nspecial[j][0] = nspecial[i][0]; - nspecial[j][1] = nspecial[i][1]; - nspecial[j][2] = nspecial[i][2]; - for (k = 0; k < nspecial[j][2]; k++) special[j][k] = special[i][k]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); + bond_per_atom = angle_per_atom = dihedral_per_atom = improper_per_atom = 0; + bond_negative = angle_negative = dihedral_negative = improper_negative = NULL; } /* ---------------------------------------------------------------------- */ -int AtomVecFull::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +AtomVecFull::~AtomVecFull() { - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecFull::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecFull::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecFull::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecFull::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - molecule[i] = (tagint) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecFull::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - molecule[i] = (tagint) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - q[i] = buf[m++]; - molecule[i] = (tagint) ubuf(buf[m++]).i; - } - return m; + delete [] bond_negative; + delete [] angle_negative; + delete [] dihedral_negative; + delete [] improper_negative; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -int AtomVecFull::pack_exchange(int i, double *buf) +void AtomVecFull::grow_pointers() { - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = q[i]; - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(bond_type[i][k]).d; - buf[m++] = ubuf(bond_atom[i][k]).d; - } - - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(angle_type[i][k]).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; - } - - buf[m++] = ubuf(num_dihedral[i]).d; - for (k = 0; k < num_dihedral[i]; k++) { - buf[m++] = ubuf(dihedral_type[i][k]).d; - buf[m++] = ubuf(dihedral_atom1[i][k]).d; - buf[m++] = ubuf(dihedral_atom2[i][k]).d; - buf[m++] = ubuf(dihedral_atom3[i][k]).d; - buf[m++] = ubuf(dihedral_atom4[i][k]).d; - } - - buf[m++] = ubuf(num_improper[i]).d; - for (k = 0; k < num_improper[i]; k++) { - buf[m++] = ubuf(improper_type[i][k]).d; - buf[m++] = ubuf(improper_atom1[i][k]).d; - buf[m++] = ubuf(improper_atom2[i][k]).d; - buf[m++] = ubuf(improper_atom3[i][k]).d; - buf[m++] = ubuf(improper_atom4[i][k]).d; - } - - buf[m++] = ubuf(nspecial[i][0]).d; - buf[m++] = ubuf(nspecial[i][1]).d; - buf[m++] = ubuf(nspecial[i][2]).d; - for (k = 0; k < nspecial[i][2]; k++) buf[m++] = ubuf(special[i][k]).d; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::unpack_exchange(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - q[nlocal] = buf[m++]; - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_dihedral[nlocal]; k++) { - dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; - dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_improper[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_improper[nlocal]; k++) { - improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; - improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][1] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][2] = (int) ubuf(buf[m++]).i; - for (k = 0; k < nspecial[nlocal][2]; k++) - special[nlocal][k] = (tagint) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; + num_bond = atom->num_bond; + bond_type = atom->bond_type; + num_angle = atom->num_angle; + angle_type = atom->angle_type; + num_dihedral = atom->num_dihedral; + dihedral_type = atom->dihedral_type; + num_improper = atom->num_improper; + improper_type = atom->improper_type; + nspecial = atom->nspecial; } /* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes + modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecFull::size_restart() +void AtomVecFull::pack_restart_pre(int ilocal) { - int i; + // insure negative vectors are needed length - int nlocal = atom->nlocal; - int n = 0; - for (i = 0; i < nlocal; i++) - n += 17 + 2*num_bond[i] + 4*num_angle[i] + - 5*num_dihedral[i] + 5*num_improper[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecFull::pack_restart(int i, double *buf) -{ - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = q[i]; - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(MAX(bond_type[i][k],-bond_type[i][k])).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (bond_per_atom < atom->bond_per_atom) { + delete [] bond_negative; + bond_per_atom = atom->bond_per_atom; + bond_negative = new int[bond_per_atom]; + } + if (angle_per_atom < atom->angle_per_atom) { + delete [] angle_negative; + angle_per_atom = atom->angle_per_atom; + angle_negative = new int[angle_per_atom]; + } + if (dihedral_per_atom < atom->dihedral_per_atom) { + delete [] dihedral_negative; + dihedral_per_atom = atom->dihedral_per_atom; + dihedral_negative = new int[dihedral_per_atom]; + } + if (improper_per_atom < atom->improper_per_atom) { + delete [] improper_negative; + improper_per_atom = atom->improper_per_atom; + improper_negative = new int[improper_per_atom]; } - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(MAX(angle_type[i][k],-angle_type[i][k])).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; + // flip any negative types to positive and flag which ones + + any_bond_negative = 0; + for (int m = 0; m < num_bond[ilocal]; m++) { + if (bond_type[ilocal][m] < 0) { + bond_negative[m] = 1; + bond_type[ilocal][m] = -bond_type[ilocal][m]; + any_bond_negative = 1; + } else bond_negative[m] = 0; } - buf[m++] = ubuf(num_dihedral[i]).d; - for (k = 0; k < num_dihedral[i]; k++) { - buf[m++] = ubuf(MAX(dihedral_type[i][k],-dihedral_type[i][k])).d; - buf[m++] = ubuf(dihedral_atom1[i][k]).d; - buf[m++] = ubuf(dihedral_atom2[i][k]).d; - buf[m++] = ubuf(dihedral_atom3[i][k]).d; - buf[m++] = ubuf(dihedral_atom4[i][k]).d; + any_angle_negative = 0; + for (int m = 0; m < num_angle[ilocal]; m++) { + if (angle_type[ilocal][m] < 0) { + angle_negative[m] = 1; + angle_type[ilocal][m] = -angle_type[ilocal][m]; + any_angle_negative = 1; + } else angle_negative[m] = 0; } - buf[m++] = ubuf(num_improper[i]).d; - for (k = 0; k < num_improper[i]; k++) { - buf[m++] = ubuf(MAX(improper_type[i][k],-improper_type[i][k])).d; - buf[m++] = ubuf(improper_atom1[i][k]).d; - buf[m++] = ubuf(improper_atom2[i][k]).d; - buf[m++] = ubuf(improper_atom3[i][k]).d; - buf[m++] = ubuf(improper_atom4[i][k]).d; + any_dihedral_negative = 0; + for (int m = 0; m < num_dihedral[ilocal]; m++) { + if (dihedral_type[ilocal][m] < 0) { + dihedral_negative[m] = 1; + dihedral_type[ilocal][m] = -dihedral_type[ilocal][m]; + any_dihedral_negative = 1; + } else dihedral_negative[m] = 0; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecFull::unpack_restart(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - q[nlocal] = buf[m++]; - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_dihedral[nlocal]; k++) { - dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; - dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_improper[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_improper[nlocal]; k++) { - improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; - improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecFull::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - q[nlocal] = 0.0; - molecule[nlocal] = 0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecFull::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - q[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecFull::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - q[nlocal] = utils::numeric(FLERR,values[1],true,lmp); - - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - - return 2; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecFull::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - buf[i][3] = q[i]; - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + any_improper_negative = 0; + for (int m = 0; m < num_improper[ilocal]; m++) { + if (improper_type[ilocal][m] < 0) { + improper_negative[m] = 1; + improper_type[ilocal][m] = -improper_type[ilocal][m]; + any_improper_negative = 1; + } else improper_negative[m] = 0; } } /* ---------------------------------------------------------------------- - pack hybrid atom info for data file + unmodify values packed by AtomVec::pack_restart() ------------------------------------------------------------------------- */ -int AtomVecFull::pack_data_hybrid(int i, double *buf) +void AtomVecFull::pack_restart_post(int ilocal) { - buf[0] = ubuf(molecule[i]).d; - buf[1] = q[i]; - return 2; + // restore the flagged types to their negative values + + if (any_bond_negative) { + for (int m = 0; m < num_bond[ilocal]; m++) + if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; + } + + if (any_angle_negative) { + for (int m = 0; m < num_angle[ilocal]; m++) + if (angle_negative[m]) angle_type[ilocal][m] = -angle_type[ilocal][m]; + } + + if (any_dihedral_negative) { + for (int m = 0; m < num_dihedral[ilocal]; m++) + if (dihedral_negative[m]) + dihedral_type[ilocal][m] = -dihedral_type[ilocal][m]; + } + + if (any_improper_negative) { + for (int m = 0; m < num_improper[ilocal]; m++) + if (improper_negative[m]) + improper_type[ilocal][m] = -improper_type[ilocal][m]; + } } /* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags + initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ -void AtomVecFull::write_data(FILE *fp, int n, double **buf) +void AtomVecFull::unpack_restart_init(int ilocal) { - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i, - (int) ubuf(buf[i][9]).i); + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- - write hybrid atom info to data file + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecFull::write_data_hybrid(FILE *fp, double *buf) +void AtomVecFull::data_atom_post(int ilocal) { - fprintf(fp," " TAGINT_FORMAT " %-1.16e",(tagint) ubuf(buf[0]).i,buf[1]); - return 2; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecFull::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("q")) bytes += memory->usage(q,nmax); - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("nspecial")) bytes += memory->usage(nspecial,nmax,3); - if (atom->memcheck("special")) - bytes += memory->usage(special,nmax,atom->maxspecial); - - if (atom->memcheck("num_bond")) bytes += memory->usage(num_bond,nmax); - if (atom->memcheck("bond_type")) - bytes += memory->usage(bond_type,nmax,atom->bond_per_atom); - if (atom->memcheck("bond_atom")) - bytes += memory->usage(bond_atom,nmax,atom->bond_per_atom); - - if (atom->memcheck("num_angle")) bytes += memory->usage(num_angle,nmax); - if (atom->memcheck("angle_type")) - bytes += memory->usage(angle_type,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom1")) - bytes += memory->usage(angle_atom1,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom2")) - bytes += memory->usage(angle_atom2,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom3")) - bytes += memory->usage(angle_atom3,nmax,atom->angle_per_atom); - - if (atom->memcheck("num_dihedral")) bytes += memory->usage(num_dihedral,nmax); - if (atom->memcheck("dihedral_type")) - bytes += memory->usage(dihedral_type,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom1")) - bytes += memory->usage(dihedral_atom1,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom2")) - bytes += memory->usage(dihedral_atom2,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom3")) - bytes += memory->usage(dihedral_atom3,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom4")) - bytes += memory->usage(dihedral_atom4,nmax,atom->dihedral_per_atom); - - if (atom->memcheck("num_improper")) bytes += memory->usage(num_improper,nmax); - if (atom->memcheck("improper_type")) - bytes += memory->usage(improper_type,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom1")) - bytes += memory->usage(improper_atom1,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom2")) - bytes += memory->usage(improper_atom2,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom3")) - bytes += memory->usage(improper_atom3,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom4")) - bytes += memory->usage(improper_atom4,nmax,atom->improper_per_atom); - - return bytes; + num_bond[ilocal] = 0; + num_angle[ilocal] = 0; + num_dihedral[ilocal] = 0; + num_improper[ilocal] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_full.h b/src/MOLECULE/atom_vec_full.h index abaf570b17..1abd3351d3 100644 --- a/src/MOLECULE/atom_vec_full.h +++ b/src/MOLECULE/atom_vec_full.h @@ -27,57 +27,23 @@ namespace LAMMPS_NS { class AtomVecFull : public AtomVec { public: AtomVecFull(class LAMMPS *); - virtual ~AtomVecFull() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); + ~AtomVecFull(); - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *q; - tagint *molecule; + void grow_pointers(); + void pack_restart_pre(int); + void pack_restart_post(int); + void unpack_restart_init(int); + void data_atom_post(int); + + private: + int *num_bond,*num_angle,*num_dihedral,*num_improper; + int **bond_type,**angle_type,**dihedral_type,**improper_type; int **nspecial; - tagint **special; - int *num_bond; - int **bond_type; - tagint **bond_atom; - int *num_angle; - int **angle_type; - tagint **angle_atom1,**angle_atom2,**angle_atom3; - int *num_dihedral; - int **dihedral_type; - tagint **dihedral_atom1,**dihedral_atom2,**dihedral_atom3,**dihedral_atom4; - int *num_improper; - int **improper_type; - tagint **improper_atom1,**improper_atom2,**improper_atom3,**improper_atom4; + + int any_bond_negative,any_angle_negative, + any_dihedral_negative,any_improper_negative; + int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; + int *bond_negative,*angle_negative,*dihedral_negative,*improper_negative; }; } @@ -87,13 +53,4 @@ class AtomVecFull : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/MOLECULE/atom_vec_molecular.cpp b/src/MOLECULE/atom_vec_molecular.cpp index 73cec70456..e90bec5108 100644 --- a/src/MOLECULE/atom_vec_molecular.cpp +++ b/src/MOLECULE/atom_vec_molecular.cpp @@ -13,13 +13,6 @@ #include "atom_vec_molecular.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -31,1056 +24,210 @@ AtomVecMolecular::AtomVecMolecular(LAMMPS *lmp) : AtomVec(lmp) bonds_allow = angles_allow = dihedrals_allow = impropers_allow = 1; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 7; - size_velocity = 3; - size_data_atom = 6; - size_data_vel = 4; - xcol_data = 4; - atom->molecule_flag = 1; -} -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file -void AtomVecMolecular::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); + fields_grow = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_copy = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; + fields_border = (char *) "molecule"; + fields_border_vel = (char *) "molecule"; + fields_exchange = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_restart = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4"; + fields_create = (char *) + "molecule num_bond num_angle num_dihedral num_improper nspecial"; + fields_data_atom = (char *) "id molecule type x"; + fields_data_vel = (char *) "id v"; - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); + setup_fields(); - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - - nspecial = memory->grow(atom->nspecial,nmax,3,"atom:nspecial"); - special = memory->grow(atom->special,nmax,atom->maxspecial,"atom:special"); - - num_bond = memory->grow(atom->num_bond,nmax,"atom:num_bond"); - bond_type = memory->grow(atom->bond_type,nmax,atom->bond_per_atom, - "atom:bond_type"); - bond_atom = memory->grow(atom->bond_atom,nmax,atom->bond_per_atom, - "atom:bond_atom"); - - num_angle = memory->grow(atom->num_angle,nmax,"atom:num_angle"); - angle_type = memory->grow(atom->angle_type,nmax,atom->angle_per_atom, - "atom:angle_type"); - angle_atom1 = memory->grow(atom->angle_atom1,nmax,atom->angle_per_atom, - "atom:angle_atom1"); - angle_atom2 = memory->grow(atom->angle_atom2,nmax,atom->angle_per_atom, - "atom:angle_atom2"); - angle_atom3 = memory->grow(atom->angle_atom3,nmax,atom->angle_per_atom, - "atom:angle_atom3"); - - num_dihedral = memory->grow(atom->num_dihedral,nmax,"atom:num_dihedral"); - dihedral_type = memory->grow(atom->dihedral_type,nmax, - atom->dihedral_per_atom,"atom:dihedral_type"); - dihedral_atom1 = - memory->grow(atom->dihedral_atom1,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom1"); - dihedral_atom2 = - memory->grow(atom->dihedral_atom2,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom2"); - dihedral_atom3 = - memory->grow(atom->dihedral_atom3,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom3"); - dihedral_atom4 = - memory->grow(atom->dihedral_atom4,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom4"); - - num_improper = memory->grow(atom->num_improper,nmax,"atom:num_improper"); - improper_type = - memory->grow(atom->improper_type,nmax,atom->improper_per_atom, - "atom:improper_type"); - improper_atom1 = - memory->grow(atom->improper_atom1,nmax,atom->improper_per_atom, - "atom:improper_atom1"); - improper_atom2 = - memory->grow(atom->improper_atom2,nmax,atom->improper_per_atom, - "atom:improper_atom2"); - improper_atom3 = - memory->grow(atom->improper_atom3,nmax,atom->improper_per_atom, - "atom:improper_atom3"); - improper_atom4 = - memory->grow(atom->improper_atom4,nmax,atom->improper_per_atom, - "atom:improper_atom4"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecMolecular::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; - nspecial = atom->nspecial; special = atom->special; - num_bond = atom->num_bond; bond_type = atom->bond_type; - bond_atom = atom->bond_atom; - num_angle = atom->num_angle; angle_type = atom->angle_type; - angle_atom1 = atom->angle_atom1; angle_atom2 = atom->angle_atom2; - angle_atom3 = atom->angle_atom3; - num_dihedral = atom->num_dihedral; dihedral_type = atom->dihedral_type; - dihedral_atom1 = atom->dihedral_atom1; dihedral_atom2 = atom->dihedral_atom2; - dihedral_atom3 = atom->dihedral_atom3; dihedral_atom4 = atom->dihedral_atom4; - num_improper = atom->num_improper; improper_type = atom->improper_type; - improper_atom1 = atom->improper_atom1; improper_atom2 = atom->improper_atom2; - improper_atom3 = atom->improper_atom3; improper_atom4 = atom->improper_atom4; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecMolecular::copy(int i, int j, int delflag) -{ - int k; - - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - molecule[j] = molecule[i]; - - num_bond[j] = num_bond[i]; - for (k = 0; k < num_bond[j]; k++) { - bond_type[j][k] = bond_type[i][k]; - bond_atom[j][k] = bond_atom[i][k]; - } - - num_angle[j] = num_angle[i]; - for (k = 0; k < num_angle[j]; k++) { - angle_type[j][k] = angle_type[i][k]; - angle_atom1[j][k] = angle_atom1[i][k]; - angle_atom2[j][k] = angle_atom2[i][k]; - angle_atom3[j][k] = angle_atom3[i][k]; - } - - num_dihedral[j] = num_dihedral[i]; - for (k = 0; k < num_dihedral[j]; k++) { - dihedral_type[j][k] = dihedral_type[i][k]; - dihedral_atom1[j][k] = dihedral_atom1[i][k]; - dihedral_atom2[j][k] = dihedral_atom2[i][k]; - dihedral_atom3[j][k] = dihedral_atom3[i][k]; - dihedral_atom4[j][k] = dihedral_atom4[i][k]; - } - - num_improper[j] = num_improper[i]; - for (k = 0; k < num_improper[j]; k++) { - improper_type[j][k] = improper_type[i][k]; - improper_atom1[j][k] = improper_atom1[i][k]; - improper_atom2[j][k] = improper_atom2[i][k]; - improper_atom3[j][k] = improper_atom3[i][k]; - improper_atom4[j][k] = improper_atom4[i][k]; - } - - nspecial[j][0] = nspecial[i][0]; - nspecial[j][1] = nspecial[i][1]; - nspecial[j][2] = nspecial[i][2]; - for (k = 0; k < nspecial[j][2]; k++) special[j][k] = special[i][k]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); + bond_per_atom = angle_per_atom = dihedral_per_atom = improper_per_atom = 0; + bond_negative = angle_negative = dihedral_negative = improper_negative = NULL; } /* ---------------------------------------------------------------------- */ -int AtomVecMolecular::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +AtomVecMolecular::~AtomVecMolecular() { - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMolecular::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMolecular::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMolecular::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMolecular::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMolecular::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - molecule[i] = (tagint) ubuf(buf[m++]).i; - return m; + delete [] bond_negative; + delete [] angle_negative; + delete [] dihedral_negative; + delete [] improper_negative; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -int AtomVecMolecular::pack_exchange(int i, double *buf) +void AtomVecMolecular::grow_pointers() { - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(bond_type[i][k]).d; - buf[m++] = ubuf(bond_atom[i][k]).d; - } - - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(angle_type[i][k]).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; - } - - buf[m++] = ubuf(num_dihedral[i]).d; - for (k = 0; k < num_dihedral[i]; k++) { - buf[m++] = ubuf(dihedral_type[i][k]).d; - buf[m++] = ubuf(dihedral_atom1[i][k]).d; - buf[m++] = ubuf(dihedral_atom2[i][k]).d; - buf[m++] = ubuf(dihedral_atom3[i][k]).d; - buf[m++] = ubuf(dihedral_atom4[i][k]).d; - } - - buf[m++] = ubuf(num_improper[i]).d; - for (k = 0; k < num_improper[i]; k++) { - buf[m++] = ubuf(improper_type[i][k]).d; - buf[m++] = ubuf(improper_atom1[i][k]).d; - buf[m++] = ubuf(improper_atom2[i][k]).d; - buf[m++] = ubuf(improper_atom3[i][k]).d; - buf[m++] = ubuf(improper_atom4[i][k]).d; - } - - buf[m++] = ubuf(nspecial[i][0]).d; - buf[m++] = ubuf(nspecial[i][1]).d; - buf[m++] = ubuf(nspecial[i][2]).d; - for (k = 0; k < nspecial[i][2]; k++) buf[m++] = ubuf(special[i][k]).d; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::unpack_exchange(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_dihedral[nlocal]; k++) { - dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; - dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_improper[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_improper[nlocal]; k++) { - improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; - improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][1] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][2] = (int) ubuf(buf[m++]).i; - for (k = 0; k < nspecial[nlocal][2]; k++) - special[nlocal][k] = (int) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; + num_bond = atom->num_bond; + bond_type = atom->bond_type; + num_angle = atom->num_angle; + angle_type = atom->angle_type; + num_dihedral = atom->num_dihedral; + dihedral_type = atom->dihedral_type; + num_improper = atom->num_improper; + improper_type = atom->improper_type; + nspecial = atom->nspecial; } /* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes + modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecMolecular::size_restart() +void AtomVecMolecular::pack_restart_pre(int ilocal) { - int i; + // insure negative vectors are needed length - int nlocal = atom->nlocal; - int n = 0; - for (i = 0; i < nlocal; i++) - n += 16 + 2*num_bond[i] + 4*num_angle[i] + - 5*num_dihedral[i] + 5*num_improper[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_restart(int i, double *buf) -{ - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(MAX(bond_type[i][k],-bond_type[i][k])).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (bond_per_atom < atom->bond_per_atom) { + delete [] bond_negative; + bond_per_atom = atom->bond_per_atom; + bond_negative = new int[bond_per_atom]; + } + if (angle_per_atom < atom->angle_per_atom) { + delete [] angle_negative; + angle_per_atom = atom->angle_per_atom; + angle_negative = new int[angle_per_atom]; + } + if (dihedral_per_atom < atom->dihedral_per_atom) { + delete [] dihedral_negative; + dihedral_per_atom = atom->dihedral_per_atom; + dihedral_negative = new int[dihedral_per_atom]; + } + if (improper_per_atom < atom->improper_per_atom) { + delete [] improper_negative; + improper_per_atom = atom->improper_per_atom; + improper_negative = new int[improper_per_atom]; } - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(MAX(angle_type[i][k],-angle_type[i][k])).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; + // flip any negative types to positive and flag which ones + + any_bond_negative = 0; + for (int m = 0; m < num_bond[ilocal]; m++) { + if (bond_type[ilocal][m] < 0) { + bond_negative[m] = 1; + bond_type[ilocal][m] = -bond_type[ilocal][m]; + any_bond_negative = 1; + } else bond_negative[m] = 0; } - buf[m++] = ubuf(num_dihedral[i]).d; - for (k = 0; k < num_dihedral[i]; k++) { - buf[m++] = ubuf(MAX(dihedral_type[i][k],-dihedral_type[i][k])).d; - buf[m++] = ubuf(dihedral_atom1[i][k]).d; - buf[m++] = ubuf(dihedral_atom2[i][k]).d; - buf[m++] = ubuf(dihedral_atom3[i][k]).d; - buf[m++] = ubuf(dihedral_atom4[i][k]).d; + any_angle_negative = 0; + for (int m = 0; m < num_angle[ilocal]; m++) { + if (angle_type[ilocal][m] < 0) { + angle_negative[m] = 1; + angle_type[ilocal][m] = -angle_type[ilocal][m]; + any_angle_negative = 1; + } else angle_negative[m] = 0; } - buf[m++] = ubuf(num_improper[i]).d; - for (k = 0; k < num_improper[i]; k++) { - buf[m++] = ubuf(MAX(improper_type[i][k],-improper_type[i][k])).d; - buf[m++] = ubuf(improper_atom1[i][k]).d; - buf[m++] = ubuf(improper_atom2[i][k]).d; - buf[m++] = ubuf(improper_atom3[i][k]).d; - buf[m++] = ubuf(improper_atom4[i][k]).d; + any_dihedral_negative = 0; + for (int m = 0; m < num_dihedral[ilocal]; m++) { + if (dihedral_type[ilocal][m] < 0) { + dihedral_negative[m] = 1; + dihedral_type[ilocal][m] = -dihedral_type[ilocal][m]; + any_dihedral_negative = 1; + } else dihedral_negative[m] = 0; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecMolecular::unpack_restart(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_dihedral[nlocal]; k++) { - dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; - dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_improper[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_improper[nlocal]; k++) { - improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; - improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecMolecular::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - molecule[nlocal] = 0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecMolecular::data_atom(double *coord, imageint imagetmp, - char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecMolecular::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecMolecular::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + any_improper_negative = 0; + for (int m = 0; m < num_improper[ilocal]; m++) { + if (improper_type[ilocal][m] < 0) { + improper_negative[m] = 1; + improper_type[ilocal][m] = -improper_type[ilocal][m]; + any_improper_negative = 1; + } else improper_negative[m] = 0; } } /* ---------------------------------------------------------------------- - pack hybrid atom info for data file + unmodify values packed by AtomVec::pack_restart() ------------------------------------------------------------------------- */ -int AtomVecMolecular::pack_data_hybrid(int i, double *buf) +void AtomVecMolecular::pack_restart_post(int ilocal) { - buf[0] = ubuf(molecule[i]).d; - return 1; + // restore the flagged types to their negative values + + if (any_bond_negative) { + for (int m = 0; m < num_bond[ilocal]; m++) + if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; + } + + if (any_angle_negative) { + for (int m = 0; m < num_angle[ilocal]; m++) + if (angle_negative[m]) angle_type[ilocal][m] = -angle_type[ilocal][m]; + } + + if (any_dihedral_negative) { + for (int m = 0; m < num_dihedral[ilocal]; m++) + if (dihedral_negative[m]) + dihedral_type[ilocal][m] = -dihedral_type[ilocal][m]; + } + + if (any_improper_negative) { + for (int m = 0; m < num_improper[ilocal]; m++) + if (improper_negative[m]) + improper_type[ilocal][m] = -improper_type[ilocal][m]; + } } /* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags + initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ -void AtomVecMolecular::write_data(FILE *fp, int n, double **buf) +void AtomVecMolecular::unpack_restart_init(int ilocal) { - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- - write hybrid atom info to data file + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecMolecular::write_data_hybrid(FILE *fp, double *buf) +void AtomVecMolecular::data_atom_post(int ilocal) { - fprintf(fp," " TAGINT_FORMAT,(tagint) ubuf(buf[0]).i); - return 1; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecMolecular::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("nspecial")) bytes += memory->usage(nspecial,nmax,3); - if (atom->memcheck("special")) - bytes += memory->usage(special,nmax,atom->maxspecial); - - if (atom->memcheck("num_bond")) bytes += memory->usage(num_bond,nmax); - if (atom->memcheck("bond_type")) - bytes += memory->usage(bond_type,nmax,atom->bond_per_atom); - if (atom->memcheck("bond_atom")) - bytes += memory->usage(bond_atom,nmax,atom->bond_per_atom); - - if (atom->memcheck("num_angle")) bytes += memory->usage(num_angle,nmax); - if (atom->memcheck("angle_type")) - bytes += memory->usage(angle_type,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom1")) - bytes += memory->usage(angle_atom1,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom2")) - bytes += memory->usage(angle_atom2,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom3")) - bytes += memory->usage(angle_atom3,nmax,atom->angle_per_atom); - - if (atom->memcheck("num_dihedral")) bytes += memory->usage(num_dihedral,nmax); - if (atom->memcheck("dihedral_type")) - bytes += memory->usage(dihedral_type,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom1")) - bytes += memory->usage(dihedral_atom1,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom2")) - bytes += memory->usage(dihedral_atom2,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom3")) - bytes += memory->usage(dihedral_atom3,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom4")) - bytes += memory->usage(dihedral_atom4,nmax,atom->dihedral_per_atom); - - if (atom->memcheck("num_improper")) bytes += memory->usage(num_improper,nmax); - if (atom->memcheck("improper_type")) - bytes += memory->usage(improper_type,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom1")) - bytes += memory->usage(improper_atom1,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom2")) - bytes += memory->usage(improper_atom2,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom3")) - bytes += memory->usage(improper_atom3,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom4")) - bytes += memory->usage(improper_atom4,nmax,atom->improper_per_atom); - - return bytes; + num_bond[ilocal] = 0; + num_angle[ilocal] = 0; + num_dihedral[ilocal] = 0; + num_improper[ilocal] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_molecular.h b/src/MOLECULE/atom_vec_molecular.h index 19104c3987..bcfa13d9d3 100644 --- a/src/MOLECULE/atom_vec_molecular.h +++ b/src/MOLECULE/atom_vec_molecular.h @@ -27,55 +27,23 @@ namespace LAMMPS_NS { class AtomVecMolecular : public AtomVec { public: AtomVecMolecular(class LAMMPS *); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); + ~AtomVecMolecular(); + + void grow_pointers(); + void pack_restart_pre(int); + void pack_restart_post(int); + void unpack_restart_init(int); + void data_atom_post(int); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - tagint *molecule; + int *num_bond,*num_angle,*num_dihedral,*num_improper; + int **bond_type,**angle_type,**dihedral_type,**improper_type; int **nspecial; - tagint **special; - int *num_bond; - int **bond_type; - tagint **bond_atom; - int *num_angle; - int **angle_type; - tagint **angle_atom1,**angle_atom2,**angle_atom3; - int *num_dihedral; - int **dihedral_type; - tagint **dihedral_atom1,**dihedral_atom2,**dihedral_atom3,**dihedral_atom4; - int *num_improper; - int **improper_type; - tagint **improper_atom1,**improper_atom2,**improper_atom3,**improper_atom4; + + int any_bond_negative,any_angle_negative, + any_dihedral_negative,any_improper_negative; + int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; + int *bond_negative,*angle_negative,*dihedral_negative,*improper_negative; }; } @@ -85,13 +53,4 @@ class AtomVecMolecular : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/MOLECULE/atom_vec_template.cpp b/src/MOLECULE/atom_vec_template.cpp index c9ccfc6d2b..97d4c865ba 100644 --- a/src/MOLECULE/atom_vec_template.cpp +++ b/src/MOLECULE/atom_vec_template.cpp @@ -31,16 +31,27 @@ AtomVecTemplate::AtomVecTemplate(LAMMPS *lmp) : AtomVec(lmp) molecular = 2; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 9; - size_velocity = 3; - size_data_atom = 8; - size_data_vel = 4; - xcol_data = 6; - atom->molecule_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = (char *) "molecule molindex molatom"; + fields_copy = (char *) "molecule molindex molatom"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; + fields_border = (char *) "molecule molindex molatom"; + fields_border_vel = (char *) "molecule molindex molatom"; + fields_exchange = (char *) "molecule molindex molatom"; + fields_restart = (char *) "molecule molindex molatom"; + fields_create = (char *) "molecule molindex molatom"; + fields_data_atom = (char *) "id molecule molindex molatom type x"; + fields_data_vel = (char *) ""; + + setup_fields(); } /* ---------------------------------------------------------------------- @@ -86,785 +97,38 @@ void AtomVecTemplate::process_args(int narg, char **arg) } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecTemplate::grow(int n) +void AtomVecTemplate::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - molindex = memory->grow(atom->molindex,nmax,"atom:molindex"); - molatom = memory->grow(atom->molatom,nmax,"atom:molatom"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + molindex = atom->molindex; + molatom = atom->molatom; } /* ---------------------------------------------------------------------- - reset local array ptrs + initialize non-zero atom quantities ------------------------------------------------------------------------- */ -void AtomVecTemplate::grow_reset() +void AtomVecTemplate::create_atom_post(int ilocal) { - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; - molindex = atom->molindex; molatom = atom->molatom; + molindex[ilocal] = -1; + molatom[ilocal] = -1; } /* ---------------------------------------------------------------------- - copy atom I info to atom J + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecTemplate::copy(int i, int j, int delflag) +void AtomVecTemplate::data_atom_post(int ilocal) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; + int molindex_one = molindex[ilocal]; + int molatom_one = molatom[ilocal]; - molecule[j] = molecule[i]; - molindex[j] = molindex[i]; - molatom[j] = molatom[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTemplate::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTemplate::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTemplate::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTemplate::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - molindex[i] = (int) ubuf(buf[m++]).i; - molatom[i] = (int) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTemplate::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - molindex[i] = (int) ubuf(buf[m++]).i; - molatom[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - molecule[i] = (tagint) ubuf(buf[m++]).i; - molindex[i] = (int) ubuf(buf[m++]).i; - molatom[i] = (int) ubuf(buf[m++]).i; - } - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = ubuf(molindex[i]).d; - buf[m++] = ubuf(molatom[i]).d; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - molindex[nlocal] = (int) ubuf(buf[m++]).i; - molatom[nlocal] = (int) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecTemplate::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 14 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = ubuf(molindex[i]).d; - buf[m++] = ubuf(molatom[i]).d; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecTemplate::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - molindex[nlocal] = (int) ubuf(buf[m++]).i; - molatom[nlocal] = (int) ubuf(buf[m++]).i; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecTemplate::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - molecule[nlocal] = 0; - molindex[nlocal] = -1; - molatom[nlocal] = -1; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecTemplate::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - if (tag[nlocal] <= 0) - error->one(FLERR,"Invalid atom ID in Atoms section of data file"); - - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - molindex[nlocal] = utils::inumeric(FLERR,values[2],true,lmp) - 1; - molatom[nlocal] = utils::inumeric(FLERR,values[3],true,lmp) - 1; - - if (molindex[nlocal] < 0 || molindex[nlocal] >= nset) + if (molindex_one < 0 || molindex_one >= nset) error->one(FLERR,"Invalid template index in Atoms section of data file"); - if (molatom[nlocal] < 0 || - molatom[nlocal] >= onemols[molindex[nlocal]]->natoms) + if (molatom_one < 0 || molatom_one >= onemols[molindex_one]->natoms) error->one(FLERR,"Invalid template atom in Atoms section of data file"); - - type[nlocal] = utils::inumeric(FLERR,values[4],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecTemplate::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molindex[nlocal] = utils::inumeric(FLERR,values[1],true,lmp) - 1; - molatom[nlocal] = utils::inumeric(FLERR,values[2],true,lmp) - 1; - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecTemplate::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(molindex[i]+1).d; - buf[i][3] = ubuf(molatom[i]+1).d; - buf[i][4] = ubuf(type[i]).d; - buf[i][5] = x[i][0]; - buf[i][6] = x[i][1]; - buf[i][7] = x[i][2]; - buf[i][8] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_data_hybrid(int i, double *buf) -{ - buf[0] = ubuf(molecule[i]).d; - buf[1] = ubuf(molindex[i]+1).d; - buf[2] = ubuf(molatom[i]+1).d; - return 3; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecTemplate::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %d %d %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i,(int) ubuf(buf[i][3]).i, - (int) ubuf(buf[i][4]).i, - buf[i][5],buf[i][6],buf[i][7], - (int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i, - (int) ubuf(buf[i][10]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecTemplate::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," " TAGINT_FORMAT " %d %d", - (tagint) ubuf(buf[0]).i,(int) ubuf(buf[1]).i,(int) ubuf(buf[2]).i); - return 3; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecTemplate::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("molindex")) bytes += memory->usage(molindex,nmax); - if (atom->memcheck("molatom")) bytes += memory->usage(molatom,nmax); - - return bytes; } diff --git a/src/MOLECULE/atom_vec_template.h b/src/MOLECULE/atom_vec_template.h index eee7fa9723..3bf2ec6273 100644 --- a/src/MOLECULE/atom_vec_template.h +++ b/src/MOLECULE/atom_vec_template.h @@ -27,43 +27,13 @@ namespace LAMMPS_NS { class AtomVecTemplate : public AtomVec { public: AtomVecTemplate(class LAMMPS *); - virtual ~AtomVecTemplate() {} - void process_args(int, char **); - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, tagint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - protected: - tagint *tag; - int *type,*mask; - tagint *image; - double **x,**v,**f; - tagint *molecule; + void grow_pointers(); + void process_args(int, char **); + void create_atom_post(int); + void data_atom_post(int); + + private: int *molindex,*molatom; }; @@ -88,15 +58,6 @@ E: Atom style template molecule must have atom types The defined molecule(s) does not specify atom types. -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom ID in Atoms section of data file - -Atom IDs must be positive integers. - E: Invalid template index in Atoms section of data file The template indices must be between 1 to N, where N is the number of @@ -107,8 +68,4 @@ E: Invalid template atom in Atoms section of data file The atom indices must be between 1 to N, where N is the number of atoms in the template molecule the atom belongs to. -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/MOLECULE/bond_fene.cpp b/src/MOLECULE/bond_fene.cpp index e3c47b6241..91c0877478 100644 --- a/src/MOLECULE/bond_fene.cpp +++ b/src/MOLECULE/bond_fene.cpp @@ -276,7 +276,7 @@ double BondFENE::single(int type, double rsq, int /*i*/, int /*j*/, /* ---------------------------------------------------------------------- */ -void *BondFENE::extract( char *str, int &dim ) +void *BondFENE::extract(const char *str, int &dim) { dim = 1; if (strcmp(str,"kappa")==0) return (void*) k; diff --git a/src/MOLECULE/bond_fene.h b/src/MOLECULE/bond_fene.h index 77c7db1200..78ce169870 100644 --- a/src/MOLECULE/bond_fene.h +++ b/src/MOLECULE/bond_fene.h @@ -36,7 +36,7 @@ class BondFENE : public Bond { void read_restart(FILE *); void write_data(FILE *); double single(int, double, int, int, double &); - virtual void *extract(char *, int &); + virtual void *extract(const char *, int &); protected: double TWO_1_3; diff --git a/src/MOLECULE/bond_gromos.cpp b/src/MOLECULE/bond_gromos.cpp index 6732cc4457..27447d7298 100644 --- a/src/MOLECULE/bond_gromos.cpp +++ b/src/MOLECULE/bond_gromos.cpp @@ -189,7 +189,7 @@ void BondGromos::write_data(FILE *fp) /* ---------------------------------------------------------------------- */ double BondGromos::single(int type, double rsq, int /*i*/, int /*j*/, - double &fforce) + double &fforce) { double dr = rsq - r0[type]*r0[type]; fforce = -4.0*k[type] * dr; @@ -199,7 +199,7 @@ double BondGromos::single(int type, double rsq, int /*i*/, int /*j*/, /* ---------------------------------------------------------------------- Return ptr to internal members upon request. ------------------------------------------------------------------------ */ -void *BondGromos::extract( char *str, int &dim ) +void *BondGromos::extract(const char *str, int &dim) { dim = 1; if (strcmp(str,"kappa")==0) return (void*) k; diff --git a/src/MOLECULE/bond_gromos.h b/src/MOLECULE/bond_gromos.h index 966b914437..95ecf8db10 100644 --- a/src/MOLECULE/bond_gromos.h +++ b/src/MOLECULE/bond_gromos.h @@ -35,7 +35,7 @@ class BondGromos : public Bond { void read_restart(FILE *); void write_data(FILE *); double single(int, double, int, int, double &); - virtual void *extract(char *, int &); + virtual void *extract(const char *, int &); protected: double *k,*r0; diff --git a/src/MOLECULE/bond_harmonic.cpp b/src/MOLECULE/bond_harmonic.cpp index 569c92f99d..5ea60cda46 100644 --- a/src/MOLECULE/bond_harmonic.cpp +++ b/src/MOLECULE/bond_harmonic.cpp @@ -190,7 +190,7 @@ void BondHarmonic::write_data(FILE *fp) /* ---------------------------------------------------------------------- */ double BondHarmonic::single(int type, double rsq, int /*i*/, int /*j*/, - double &fforce) + double &fforce) { double r = sqrt(rsq); double dr = r - r0[type]; @@ -203,7 +203,7 @@ double BondHarmonic::single(int type, double rsq, int /*i*/, int /*j*/, /* ---------------------------------------------------------------------- Return ptr to internal members upon request. ------------------------------------------------------------------------ */ -void *BondHarmonic::extract( char *str, int &dim ) +void *BondHarmonic::extract(const char *str, int &dim) { dim = 1; if (strcmp(str,"kappa")==0) return (void*) k; diff --git a/src/MOLECULE/bond_harmonic.h b/src/MOLECULE/bond_harmonic.h index 576e63629b..39b4f68af5 100644 --- a/src/MOLECULE/bond_harmonic.h +++ b/src/MOLECULE/bond_harmonic.h @@ -35,7 +35,7 @@ class BondHarmonic : public Bond { virtual void read_restart(FILE *); void write_data(FILE *); double single(int, double, int, int, double &); - virtual void *extract(char *, int &); + virtual void *extract(const char *, int &); protected: double *k,*r0; diff --git a/src/MOLECULE/bond_morse.cpp b/src/MOLECULE/bond_morse.cpp index 0a92229879..c644d2be1c 100644 --- a/src/MOLECULE/bond_morse.cpp +++ b/src/MOLECULE/bond_morse.cpp @@ -209,7 +209,7 @@ double BondMorse::single(int type, double rsq, int /*i*/, int /*j*/, /* ---------------------------------------------------------------------- */ -void *BondMorse::extract(char *str, int &dim ) +void *BondMorse::extract(const char *str, int &dim) { dim = 1; if (strcmp(str,"r0")==0) return (void*) r0; diff --git a/src/MOLECULE/bond_morse.h b/src/MOLECULE/bond_morse.h index cbab0aed1d..6d7ec8f8aa 100644 --- a/src/MOLECULE/bond_morse.h +++ b/src/MOLECULE/bond_morse.h @@ -35,7 +35,7 @@ class BondMorse : public Bond { void read_restart(FILE *); void write_data(FILE *); double single(int, double, int, int, double &); - virtual void *extract(char *, int &); + virtual void *extract(const char *, int &); protected: double *d0,*alpha,*r0; diff --git a/src/MOLECULE/bond_nonlinear.cpp b/src/MOLECULE/bond_nonlinear.cpp index 8f0616e03e..1451fa29c2 100644 --- a/src/MOLECULE/bond_nonlinear.cpp +++ b/src/MOLECULE/bond_nonlinear.cpp @@ -206,7 +206,7 @@ double BondNonlinear::single(int type, double rsq, int /*i*/, int /*j*/, /* ---------------------------------------------------------------------- */ -void *BondNonlinear::extract( char *str, int &dim ) +void *BondNonlinear::extract(const char *str, int &dim) { dim = 1; if (strcmp(str,"epsilon")==0) return (void*) epsilon; diff --git a/src/MOLECULE/bond_nonlinear.h b/src/MOLECULE/bond_nonlinear.h index 76dffdba31..29191698d3 100644 --- a/src/MOLECULE/bond_nonlinear.h +++ b/src/MOLECULE/bond_nonlinear.h @@ -35,7 +35,7 @@ class BondNonlinear : public Bond { void read_restart(FILE *); void write_data(FILE *); double single(int, double, int, int, double &); - virtual void *extract(char *, int &); + virtual void *extract(const char *, int &); protected: double *epsilon,*r0,*lamda; diff --git a/src/MOLECULE/bond_table.cpp b/src/MOLECULE/bond_table.cpp index 20e4e311c8..3a1529a155 100644 --- a/src/MOLECULE/bond_table.cpp +++ b/src/MOLECULE/bond_table.cpp @@ -27,12 +27,14 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "tokenizer.h" +#include "table_file_reader.h" +#include "fmt/format.h" using namespace LAMMPS_NS; enum{NONE,LINEAR,SPLINE}; -#define MAXLINE 1024 #define BIGNUM 1.0e300 /* ---------------------------------------------------------------------- */ @@ -307,38 +309,19 @@ void BondTable::free_table(Table *tb) void BondTable::read_table(Table *tb, char *file, char *keyword) { - char line[MAXLINE]; + TableFileReader reader(lmp, file, "bond"); double emin = BIGNUM; - // open file + char * line = reader.find_section_start(keyword); - FILE *fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open file %s",file); - error->one(FLERR,str); - } - - // loop until section found with matching keyword - - while (1) { - if (fgets(line,MAXLINE,fp) == NULL) - error->one(FLERR,"Did not find keyword in table file"); - if (strspn(line," \t\n\r") == strlen(line)) continue; // blank line - if (line[0] == '#') continue; // comment - char *word = strtok(line," \t\n\r"); - if (strcmp(word,keyword) == 0) break; // matching keyword - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); // no match, skip section - param_extract(tb,line); - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - for (int i = 0; i < tb->ninput; i++) - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); + if (!line) { + error->one(FLERR,"Did not find keyword in table file"); } // read args on 2nd line of section // allocate table arrays for file values - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); + line = reader.next_line(); param_extract(tb,line); memory->create(tb->rfile,tb->ninput,"bond:rfile"); memory->create(tb->efile,tb->ninput,"bond:efile"); @@ -349,18 +332,24 @@ void BondTable::read_table(Table *tb, char *file, char *keyword) int cerror = 0; int r0idx = -1; - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); + reader.skip_line(); for (int i = 0; i < tb->ninput; i++) { - if (NULL == fgets(line,MAXLINE,fp)) - error->one(FLERR,"Premature end of file in bond table"); - if (3 != sscanf(line,"%*d %lg %lg %lg", - &tb->rfile[i],&tb->efile[i],&tb->ffile[i])) ++cerror; + line = reader.next_line(4); + try { + ValueTokenizer values(line); + values.next_int(); + tb->rfile[i] = values.next_double(); + tb->efile[i] = values.next_double(); + tb->ffile[i] = values.next_double(); + } catch (TokenizerException & e) { + ++cerror; + } + if (tb->efile[i] < emin) { emin = tb->efile[i]; r0idx = i; } } - fclose(fp); // infer r0 from minimum of potential, if not given explicitly @@ -389,19 +378,15 @@ void BondTable::read_table(Table *tb, char *file, char *keyword) } if (ferror) { - char str[128]; - sprintf(str,"%d of %d force values in table are inconsistent with -dE/dr.\n" - " Should only be flagged at inflection points",ferror,tb->ninput); - error->warning(FLERR,str); + error->warning(FLERR, fmt::format("{} of {} force values in table are inconsistent with -dE/dr.\n" + " Should only be flagged at inflection points",ferror,tb->ninput)); } // warn if data was read incompletely, e.g. columns were missing if (cerror) { - char str[128]; - sprintf(str,"%d of %d lines in table were incomplete or could not be" - " parsed completely",cerror,tb->ninput); - error->warning(FLERR,str); + error->warning(FLERR, fmt::format("{} of {} lines in table were incomplete or could not be" + " parsed completely",cerror,tb->ninput)); } } @@ -488,24 +473,26 @@ void BondTable::param_extract(Table *tb, char *line) tb->fpflag = 0; tb->r0 = 0.0; - char *word = strtok(line," \t\n\r\f"); - while (word) { - if (strcmp(word,"N") == 0) { - word = strtok(NULL," \t\n\r\f"); - tb->ninput = atoi(word); - } else if (strcmp(word,"FP") == 0) { - tb->fpflag = 1; - word = strtok(NULL," \t\n\r\f"); - tb->fplo = atof(word); - word = strtok(NULL," \t\n\r\f"); - tb->fphi = atof(word); - } else if (strcmp(word,"EQ") == 0) { - word = strtok(NULL," \t\n\r\f"); - tb->r0 = atof(word); - } else { - error->one(FLERR,"Invalid keyword in bond table parameters"); + try { + ValueTokenizer values(line); + + while (values.has_next()) { + std::string word = values.next_string(); + + if (word == "N") { + tb->ninput = values.next_int(); + } else if (word == "FP") { + tb->fpflag = 1; + tb->fplo = values.next_double(); + tb->fphi = values.next_double(); + } else if (word == "EQ") { + tb->r0 = values.next_double(); + } else { + error->one(FLERR,"Invalid keyword in bond table parameters"); + } } - word = strtok(NULL," \t\n\r\f"); + } catch(TokenizerException & e) { + error->one(FLERR, e.what()); } if (tb->ninput == 0) error->one(FLERR,"Bond table parameters did not set N"); @@ -639,42 +626,3 @@ void BondTable::uf_lookup(int type, double x, double &u, double &f) tb->deltasq6; } } - -/* ---------------------------------------------------------------------- - calculate potential u at distance x - insure x is between bond min/max -------------------------------------------------------------------------- */ - -void BondTable::u_lookup(int type, double x, double &u) -{ - if (!std::isfinite(x)) { - error->one(FLERR,"Illegal bond in bond style table"); - } - - double fraction,a,b; - char estr[128]; - const Table *tb = &tables[tabindex[type]]; - const int itable = static_cast ((x - tb->lo) * tb->invdelta); - if (itable < 0) { - sprintf(estr,"Bond length < table inner cutoff: " - "type %d length %g",type,x); - error->one(FLERR,estr); - } else if (itable >= tablength) { - sprintf(estr,"Bond length > table outer cutoff: " - "type %d length %g",type,x); - error->one(FLERR,estr); - } - - if (tabstyle == LINEAR) { - fraction = (x - tb->r[itable]) * tb->invdelta; - u = tb->e[itable] + fraction*tb->de[itable]; - } else if (tabstyle == SPLINE) { - fraction = (x - tb->r[itable]) * tb->invdelta; - - b = (x - tb->r[itable]) * tb->invdelta; - a = 1.0 - b; - u = a * tb->e[itable] + b * tb->e[itable+1] + - ((a*a*a-a)*tb->e2[itable] + (b*b*b-b)*tb->e2[itable+1]) * - tb->deltasq6; - } -} diff --git a/src/MOLECULE/fix_cmap.cpp b/src/MOLECULE/fix_cmap.cpp index fb0a550898..a1b4d23b05 100644 --- a/src/MOLECULE/fix_cmap.cpp +++ b/src/MOLECULE/fix_cmap.cpp @@ -41,6 +41,7 @@ #include "math_const.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -1066,7 +1067,7 @@ void FixCMAP::read_data_section(char *keyword, int n, char *buf, next = strchr(buf,'\n'); *next = '\0'; - int nwords = atom->count_words(buf); + int nwords = utils::count_words(utils::trim_comment(buf)); *next = '\n'; if (nwords != 7) { diff --git a/src/MPIIO/restart_mpiio.cpp b/src/MPIIO/restart_mpiio.cpp index db511c7bc0..66c7d8a417 100644 --- a/src/MPIIO/restart_mpiio.cpp +++ b/src/MPIIO/restart_mpiio.cpp @@ -22,6 +22,14 @@ using namespace LAMMPS_NS; +// the (rather old) version of ROMIO in MPICH for Windows +// uses "char *" instead of "const char *". This works around it. +#if defined(_WIN32) +#define ROMIO_COMPAT_CAST (char *) +#else +#define ROMIO_COMPAT_CAST +#endif + /* ---------------------------------------------------------------------- */ RestartMPIIO::RestartMPIIO(LAMMPS *lmp) : Pointers(lmp) @@ -36,9 +44,9 @@ RestartMPIIO::RestartMPIIO(LAMMPS *lmp) : Pointers(lmp) for some file servers it is most efficient to only read or only write ------------------------------------------------------------------------- */ -void RestartMPIIO::openForRead(char *filename) +void RestartMPIIO::openForRead(const char *filename) { - int err = MPI_File_open(world, filename, MPI_MODE_RDONLY , + int err = MPI_File_open(world, ROMIO_COMPAT_CAST filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &mpifh); if (err != MPI_SUCCESS) { char str[MPI_MAX_ERROR_STRING+128]; @@ -56,9 +64,9 @@ void RestartMPIIO::openForRead(char *filename) for some file servers it is most efficient to only read or only write ------------------------------------------------------------------------- */ -void RestartMPIIO::openForWrite(char *filename) +void RestartMPIIO::openForWrite(const char *filename) { - int err = MPI_File_open(world, filename, MPI_MODE_WRONLY, + int err = MPI_File_open(world, ROMIO_COMPAT_CAST filename, MPI_MODE_WRONLY, MPI_INFO_NULL, &mpifh); if (err != MPI_SUCCESS) { char str[MPI_MAX_ERROR_STRING+128]; diff --git a/src/MPIIO/restart_mpiio.h b/src/MPIIO/restart_mpiio.h index bf1df656f6..4cc7558d46 100644 --- a/src/MPIIO/restart_mpiio.h +++ b/src/MPIIO/restart_mpiio.h @@ -28,8 +28,8 @@ class RestartMPIIO : protected Pointers { RestartMPIIO(class LAMMPS *); ~RestartMPIIO() {} - void openForRead(char *); - void openForWrite(char *); + void openForRead(const char *); + void openForWrite(const char *); void write(MPI_Offset, int, double *); void read(MPI_Offset, bigint, double *); void close(); diff --git a/src/PERI/atom_vec_peri.cpp b/src/PERI/atom_vec_peri.cpp index 3e3312bf01..5ce74575ba 100644 --- a/src/PERI/atom_vec_peri.cpp +++ b/src/PERI/atom_vec_peri.cpp @@ -19,14 +19,9 @@ #include #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" #include "citeme.h" #include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -49,859 +44,72 @@ AtomVecPeri::AtomVecPeri(LAMMPS *lmp) : AtomVec(lmp) molecular = 0; - comm_x_only = 0; - comm_f_only = 1; - size_forward = 4; - size_reverse = 3; - size_border = 12; - size_velocity = 3; - size_data_atom = 7; - size_data_vel = 4; - xcol_data = 5; - + atom->rmass_flag = 1; atom->peri_flag = 1; - atom->vfrac_flag = atom->rmass_flag = 1; + atom->vfrac_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "rmass vfrac s0 x0"; + fields_copy = (char *) "rmass vfrac s0 x0"; + fields_comm = (char *) "s0"; + fields_comm_vel = (char *) "s0"; + fields_reverse = (char *) ""; + fields_border = (char *) "rmass vfrac s0 x0"; + fields_border_vel = (char *) "rmass vfrac s0 x0"; + fields_exchange = (char *) "rmass vfrac s0 x0"; + fields_restart = (char *) "rmass vfrac s0 x0"; + fields_create = (char *) "rmass vfrac s0 x0"; + fields_data_atom = (char *) "id type vfrac rmass x"; + fields_data_vel = (char *) "id v"; + + setup_fields(); } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecPeri::grow(int n) +void AtomVecPeri::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - vfrac = memory->grow(atom->vfrac,nmax,"atom:vfrac"); - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - s0 = memory->grow(atom->s0,nmax,"atom:s0"); - x0 = memory->grow(atom->x0,nmax,3,"atom:x0"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + rmass = atom->rmass; + vfrac = atom->vfrac; + s0 = atom->s0; + x0 = atom->x0; } /* ---------------------------------------------------------------------- - reset local array ptrs + initialize non-zero atom quantities ------------------------------------------------------------------------- */ -void AtomVecPeri::grow_reset() +void AtomVecPeri::create_atom_post(int ilocal) { - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - vfrac = atom->vfrac; rmass = atom->rmass; - s0 = atom->s0; x0 = atom->x0; + vfrac[ilocal] = 1.0; + rmass[ilocal] = 1.0; + s0[ilocal] = DBL_MAX; + x0[ilocal][0] = x[ilocal][0]; + x0[ilocal][1] = x[ilocal][1]; + x0[ilocal][2] = x[ilocal][2]; } /* ---------------------------------------------------------------------- - copy atom I info to atom J + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecPeri::copy(int i, int j, int delflag) +void AtomVecPeri::data_atom_post(int ilocal) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; + s0[ilocal] = DBL_MAX; + x0[ilocal][0] = x[ilocal][0]; + x0[ilocal][1] = x[ilocal][1]; + x0[ilocal][2] = x[ilocal][2]; - vfrac[j] = vfrac[i]; - rmass[j] = rmass[i]; - s0[j] = s0[i]; - x0[j][0] = x0[i][0]; - x0[j][1] = x0[i][1]; - x0[j][2] = x0[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) - -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = s0[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = s0[j]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) - -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = s0[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = s0[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = s0[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = s0[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecPeri::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - s0[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecPeri::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - s0[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - s0[i] = buf[m++]; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecPeri::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecPeri::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - vfrac[i] = buf[m++]; - rmass[i] = buf[m++]; - s0[i] = buf[m++]; - x0[i][0] = buf[m++]; - x0[i][1] = buf[m++]; - x0[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecPeri::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - vfrac[i] = buf[m++]; - rmass[i] = buf[m++]; - s0[i] = buf[m++]; - x0[i][0] = buf[m++]; - x0[i][1] = buf[m++]; - x0[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - vfrac[i] = buf[m++]; - rmass[i] = buf[m++]; - s0[i] = buf[m++]; - x0[i][0] = buf[m++]; - x0[i][1] = buf[m++]; - x0[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecPeri::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = vfrac[i]; - buf[m++] = rmass[i]; - buf[m++] = s0[i]; - buf[m++] = x0[i][0]; - buf[m++] = x0[i][1]; - buf[m++] = x0[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - vfrac[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - s0[nlocal] = buf[m++]; - x0[nlocal][0] = buf[m++]; - x0[nlocal][1] = buf[m++]; - x0[nlocal][2] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecPeri::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 17 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecPeri::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = vfrac[i]; - buf[m++] = rmass[i]; - buf[m++] = s0[i]; - buf[m++] = x0[i][0]; - buf[m++] = x0[i][1]; - buf[m++] = x0[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecPeri::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - vfrac[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - s0[nlocal] = buf[m++]; - x0[nlocal][0] = buf[m++]; - x0[nlocal][1] = buf[m++]; - x0[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecPeri::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - vfrac[nlocal] = 1.0; - rmass[nlocal] = 1.0; - s0[nlocal] = DBL_MAX; - x0[nlocal][0] = coord[0]; - x0[nlocal][1] = coord[1]; - x0[nlocal][2] = coord[2]; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecPeri::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - vfrac[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - rmass[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - if (rmass[nlocal] <= 0.0) error->one(FLERR,"Invalid mass value"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - s0[nlocal] = DBL_MAX; - x0[nlocal][0] = coord[0]; - x0[nlocal][1] = coord[1]; - x0[nlocal][2] = coord[2]; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecPeri::data_atom_hybrid(int nlocal, char **values) -{ - vfrac[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - rmass[nlocal] = utils::numeric(FLERR,values[1],true,lmp); - if (rmass[nlocal] <= 0.0) error->one(FLERR,"Invalid mass value"); - - s0[nlocal] = DBL_MAX; - x0[nlocal][0] = x[nlocal][0]; - x0[nlocal][1] = x[nlocal][1]; - x0[nlocal][2] = x[nlocal][2]; - - return 2; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecPeri::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = vfrac[i]; - buf[i][3] = rmass[i]; - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecPeri::pack_data_hybrid(int i, double *buf) -{ - buf[0] = vfrac[i]; - buf[1] = rmass[i]; - return 2; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecPeri::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i, - (int) ubuf(buf[i][9]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecPeri::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e",buf[0],buf[1]); - return 2; + if (rmass[ilocal] <= 0.0) + error->one(FLERR,"Invalid mass in Atoms section of data file"); } /* ---------------------------------------------------------------------- @@ -942,27 +150,3 @@ void AtomVecPeri::pack_property_atom(int index, double *buf, } } } - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecPeri::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("vfrac")) bytes += memory->usage(vfrac,nmax); - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("s0")) bytes += memory->usage(s0,nmax); - if (atom->memcheck("x0")) bytes += memory->usage(x0,nmax,3); - - return bytes; -} diff --git a/src/PERI/atom_vec_peri.h b/src/PERI/atom_vec_peri.h index 0fc30d6dc2..5739ea55c1 100644 --- a/src/PERI/atom_vec_peri.h +++ b/src/PERI/atom_vec_peri.h @@ -27,45 +27,17 @@ namespace LAMMPS_NS { class AtomVecPeri : public AtomVec { public: AtomVecPeri(class LAMMPS *); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); + + void grow_pointers(); + void create_atom_post(int); + void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); - bigint memory_usage(); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *vfrac,*rmass,*s0,**x0; + double *rmass,*vfrac,*s0; + double **x0; + }; } @@ -75,17 +47,4 @@ class AtomVecPeri : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - -E: Invalid mass value - -Self-explanatory. - */ diff --git a/src/Purge.list b/src/Purge.list index 634c38c58d..ebe1a9c484 100644 --- a/src/Purge.list +++ b/src/Purge.list @@ -49,6 +49,19 @@ packages_ntopo.h # other auto-generated files lmpinstalledpkgs.h lmpgitversion.h +# renamed on 8 May 2020 +fix_meso.cpp +fix_meso.h +fix_meso_stationary.cpp +fix_meso_stationary.h +atom_vec_meso.cpp +atom_vec_meso.h +compute_meso_e_atom.cpp +compute_meso_e_atom.h +compute_meso_rho_atom.cpp +compute_meso_rho_atom.h +compute_meso_t_atom.cpp +compute_meso_t_atom.h # removed on 15 March 2019 fix_wall_gran_omp.h fix_wall_gran_omp.cpp diff --git a/src/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index 84ba33e28a..63fa3caefe 100644 --- a/src/QEQ/fix_qeq.cpp +++ b/src/QEQ/fix_qeq.cpp @@ -27,6 +27,7 @@ #include "force.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -738,7 +739,7 @@ void FixQEq::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // must have 6 parameters per line. diff --git a/src/REPLICA/fix_hyper_local.cpp b/src/REPLICA/fix_hyper_local.cpp index eebcd08bdd..9625eb158e 100644 --- a/src/REPLICA/fix_hyper_local.cpp +++ b/src/REPLICA/fix_hyper_local.cpp @@ -473,7 +473,6 @@ void FixHyperLocal::pre_reverse(int /* eflag */, int /* vflag */) // compute estrain = current abs value strain of each owned bond // blist = bondlist from last event - // mark atom I ineligible if it has no bonds // also store: // maxhalf = which owned bond is maxstrain for each old atom I // maxhalfstrain = abs value strain of that bond for each old atom I @@ -486,12 +485,10 @@ void FixHyperLocal::pre_reverse(int /* eflag */, int /* vflag */) m = 0; for (iold = 0; iold < nlocal_old; iold++) { - nbond = numbond[iold]; - if (!nbond) { - eligible[iold] = 0; - continue; - } halfstrain = 0.0; + ijhalf = -1; + nbond = numbond[iold]; + for (ibond = 0; ibond < nbond; ibond++) { i = blist[m].i; j = blist[m].j; @@ -512,6 +509,7 @@ void FixHyperLocal::pre_reverse(int /* eflag */, int /* vflag */) } m++; } + maxhalf[iold] = ijhalf; maxhalfstrain[iold] = halfstrain; } @@ -542,6 +540,7 @@ void FixHyperLocal::pre_reverse(int /* eflag */, int /* vflag */) // if J is unknown (drifted ghost), // assume it was part of an event and its strain = qfactor // mark atom I ineligible for biasing if: + // its maxstrain = 0.0, b/c it is in no bonds (typically not in LHD group) // its maxhalfstrain < maxstrain (J atom owns the IJ bond) // its maxstrain < maxstrain_domain // ncount > 1 (break tie by making all atoms with tie value ineligible) @@ -564,7 +563,13 @@ void FixHyperLocal::pre_reverse(int /* eflag */, int /* vflag */) for (ii = 0; ii < inum; ii++) { iold = ilist[ii]; - if (eligible[iold] == 0) continue; + i = old2now[iold]; + + if (maxstrain[i] == 0.0) { + eligible[iold] = 0; + continue; + } + jlist = firstneigh[iold]; jnum = numneigh[iold]; @@ -574,7 +579,6 @@ void FixHyperLocal::pre_reverse(int /* eflag */, int /* vflag */) // in that case, assume it performed an event, its strain = qfactor // this assumes cutghost is sufficiently longer than Dcut - i = old2now[iold]; emax = selfstrain = maxstrain[i]; ncount = 0; diff --git a/src/REPLICA/neb.cpp b/src/REPLICA/neb.cpp index dafc0c0875..5a1f942815 100644 --- a/src/REPLICA/neb.cpp +++ b/src/REPLICA/neb.cpp @@ -33,6 +33,7 @@ #include "error.h" #include "force.h" #include "math_const.h" +#include "utils.h" using namespace LAMMPS_NS; using namespace MathConst; @@ -447,7 +448,7 @@ void NEB::readfile(char *file, int flag) buf = buffer; next = strchr(buf,'\n'); *next = '\0'; - int nwords = atom->count_words(buf); + int nwords = utils::count_words(utils::trim_comment(buf)); *next = '\n'; if (nwords != ATTRIBUTE_PERLINE) diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index d77bf988a6..e13099d4e3 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -35,6 +35,7 @@ #include "memory.h" #include "error.h" #include "rigid_const.h" +#include "utils.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -2330,7 +2331,7 @@ void FixRigid::readfile(int which, double *vec, buf = buffer; next = strchr(buf,'\n'); *next = '\0'; - int nwords = atom->count_words(buf); + int nwords = utils::count_words(utils::trim_comment(buf)); *next = '\n'; if (nwords != ATTRIBUTE_PERBODY) @@ -2405,7 +2406,7 @@ void FixRigid::readfile(int which, double *vec, only proc 0 writes list of global bodies to file ------------------------------------------------------------------------- */ -void FixRigid::write_restart_file(char *file) +void FixRigid::write_restart_file(const char *file) { if (me) return; diff --git a/src/RIGID/fix_rigid.h b/src/RIGID/fix_rigid.h index c261d89cce..cd32d0ca72 100644 --- a/src/RIGID/fix_rigid.h +++ b/src/RIGID/fix_rigid.h @@ -36,7 +36,7 @@ class FixRigid : public Fix { virtual void final_integrate(); void initial_integrate_respa(int, int, int); void final_integrate_respa(int, int); - void write_restart_file(char *); + void write_restart_file(const char *); virtual double compute_scalar(); double memory_usage(); diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index 9974a7f888..4fa35cf5fd 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -39,6 +39,7 @@ #include "memory.h" #include "error.h" #include "rigid_const.h" +#include "utils.h" #include @@ -2488,7 +2489,7 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) buf = buffer; next = strchr(buf,'\n'); *next = '\0'; - int nwords = atom->count_words(buf); + int nwords = utils::trim_and_count_words(buf); *next = '\n'; if (nwords != ATTRIBUTE_PERBODY) @@ -2561,7 +2562,7 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) each proc contributes info for rigid bodies it owns ------------------------------------------------------------------------- */ -void FixRigidSmall::write_restart_file(char *file) +void FixRigidSmall::write_restart_file(const char *file) { FILE *fp; diff --git a/src/RIGID/fix_rigid_small.h b/src/RIGID/fix_rigid_small.h index 974f5711e2..d6e97c06fd 100644 --- a/src/RIGID/fix_rigid_small.h +++ b/src/RIGID/fix_rigid_small.h @@ -38,7 +38,7 @@ class FixRigidSmall : public Fix { virtual void final_integrate(); void initial_integrate_respa(int, int, int); void final_integrate_respa(int, int); - void write_restart_file(char *); + void write_restart_file(const char *); void grow_arrays(int); void copy_arrays(int, int, int); diff --git a/src/SNAP/compute_snap.cpp b/src/SNAP/compute_snap.cpp index 43b6a419da..17127107ac 100644 --- a/src/SNAP/compute_snap.cpp +++ b/src/SNAP/compute_snap.cpp @@ -33,7 +33,8 @@ enum{SCALAR,VECTOR,ARRAY}; ComputeSnap::ComputeSnap(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), cutsq(NULL), list(NULL), snap(NULL), - radelem(NULL), wjelem(NULL), snap_peratom(NULL), snapall(NULL) + snapall(NULL), snap_peratom(NULL), radelem(NULL), wjelem(NULL), + snaptr(NULL) { array_flag = 1; @@ -41,9 +42,6 @@ ComputeSnap::ComputeSnap(LAMMPS *lmp, int narg, char **arg) : double rfac0, rmin0; int twojmax, switchflag, bzeroflag; - radelem = NULL; - wjelem = NULL; - int ntypes = atom->ntypes; int nargmin = 6+2*ntypes; @@ -413,7 +411,6 @@ void ComputeSnap::compute_array() const int typeoffset_local = ndims_peratom*nperdim*itype; const int typeoffset_global = nperdim*itype; for (int icoeff = 0; icoeff < nperdim; icoeff++) { - int irow = 1; for (int i = 0; i < ntotal; i++) { double *snadi = snap_peratom[i]+typeoffset_local; int iglobal = atom->tag[i]; diff --git a/src/SNAP/pair_snap.cpp b/src/SNAP/pair_snap.cpp index 8c252cca1d..389fde28a0 100644 --- a/src/SNAP/pair_snap.cpp +++ b/src/SNAP/pair_snap.cpp @@ -25,6 +25,7 @@ #include "sna.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -526,7 +527,7 @@ void PairSNAP::read_files(char *coefffilename, char *paramfilename) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != 2) error->all(FLERR,"Incorrect format in SNAP coefficient file"); @@ -567,7 +568,7 @@ void PairSNAP::read_files(char *coefffilename, char *paramfilename) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); - nwords = atom->count_words(line); + nwords = utils::trim_and_count_words(line); if (nwords != 3) error->all(FLERR,"Incorrect format in SNAP coefficient file"); @@ -609,7 +610,7 @@ void PairSNAP::read_files(char *coefffilename, char *paramfilename) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); - nwords = atom->count_words(line); + nwords = utils::trim_and_count_words(line); if (nwords != 1) error->all(FLERR,"Incorrect format in SNAP coefficient file"); @@ -666,7 +667,7 @@ void PairSNAP::read_files(char *coefffilename, char *paramfilename) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; if (nwords != 2) diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp index 28c52bb39d..ef0a79a8d3 100644 --- a/src/SPIN/atom_vec_spin.cpp +++ b/src/SPIN/atom_vec_spin.cpp @@ -27,13 +27,6 @@ #include #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "error.h" -#include "fix.h" -#include "memory.h" -#include "modify.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -45,918 +38,65 @@ AtomVecSpin::AtomVecSpin(LAMMPS *lmp) : AtomVec(lmp) mass_type = 1; forceclearflag = 1; - comm_x_only = 0; - comm_f_only = 0; - size_forward = 7; - size_reverse = 9; - size_border = 10; - size_velocity = 3; - size_data_atom = 9; - size_data_vel = 4; - xcol_data = 4; - atom->sp_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "sp fm fm_long"; + fields_copy = (char *) "sp"; + fields_comm = (char *) "sp"; + fields_comm_vel = (char *) "sp"; + fields_reverse = (char *) "fm fm_long"; + fields_border = (char *) "sp"; + fields_border_vel = (char *) "sp"; + fields_exchange = (char *) "sp"; + fields_restart = (char *) "sp"; + fields_create = (char *) "sp"; + fields_data_atom = (char *) "id type x sp"; + fields_data_vel = (char *) "id v"; + + setup_fields(); } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecSpin::grow(int n) +void AtomVecSpin::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - - // allocating mech. quantities - - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - // allocating mag. quantities - - sp = memory->grow(atom->sp,nmax,4,"atom:sp"); - fm = memory->grow(atom->fm,nmax*comm->nthreads,3,"atom:fm"); - fm_long = memory->grow(atom->fm_long,nmax*comm->nthreads,3,"atom:fm_long"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + sp = atom->sp; + fm = atom->fm; + fm_long = atom->fm_long; } /* ---------------------------------------------------------------------- - reset local array ptrs + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector + include f b/c this is invoked from within SPIN pair styles ------------------------------------------------------------------------- */ -void AtomVecSpin::grow_reset() +void AtomVecSpin::force_clear(int n, size_t nbytes) { - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - sp = atom->sp; fm = atom->fm; fm_long = atom->fm_long; + memset(&f[n][0],0,3*nbytes); + memset(&fm[n][0],0,3*nbytes); + memset(&fm_long[n][0],0,3*nbytes); } /* ---------------------------------------------------------------------- - copy atom I info to atom J + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecSpin::copy(int i, int j, int delflag) +void AtomVecSpin::data_atom_post(int ilocal) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - sp[j][0] = sp[i][0]; - sp[j][1] = sp[i][1]; - sp[j][2] = sp[i][2]; - sp[j][3] = sp[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); + double *sp_one = sp[ilocal]; + double norm = + 1.0/sqrt(sp_one[0]*sp_one[0] + sp_one[1]*sp_one[1] + sp_one[2]*sp_one[2]); + sp_one[0] *= norm; + sp_one[1] *= norm; + sp_one[2] *= norm; } - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = sp[j][3]; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSpin::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - sp[i][3] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSpin::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - sp[i][3] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - sp[i][3] = buf[m++]; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = fm[i][0]; - buf[m++] = fm[i][1]; - buf[m++] = fm[i][2]; - buf[m++] = fm_long[i][0]; - buf[m++] = fm_long[i][1]; - buf[m++] = fm_long[i][2]; - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSpin::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - fm[j][0] += buf[m++]; - fm[j][1] += buf[m++]; - fm[j][2] += buf[m++]; - fm_long[j][0] += buf[m++]; - fm_long[j][1] += buf[m++]; - fm_long[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = sp[j][3]; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSpin::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - sp[i][3] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); - -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSpin::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - sp[i][3] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); - -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - sp[i][3] = buf[m++]; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - } - - return m; -} - -/* ---------------------------------------------------------------------- - pack all atom quantities for shipping to another proc - xyz must be 1st 3 values, so that comm::exchange can test on them -------------------------------------------------------------------------- */ - -int AtomVecSpin::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = sp[i][0]; - buf[m++] = sp[i][1]; - buf[m++] = sp[i][2]; - buf[m++] = sp[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - sp[nlocal][0] = buf[m++]; - sp[nlocal][1] = buf[m++]; - sp[nlocal][2] = buf[m++]; - sp[nlocal][3] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecSpin::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 15 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecSpin::pack_restart(int i, double *buf) -{ - int m = 1; - - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = sp[i][0]; - buf[m++] = sp[i][1]; - buf[m++] = sp[i][2]; - buf[m++] = sp[i][3]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecSpin::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - sp[nlocal][0] = buf[m++]; - sp[nlocal][1] = buf[m++]; - sp[nlocal][2] = buf[m++]; - sp[nlocal][3] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecSpin::create_atom(int itype, double *coord) -{ - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - sp[nlocal][0] = 0.0; - sp[nlocal][1] = 0.0; - sp[nlocal][2] = 0.0; - sp[nlocal][3] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecSpin::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - sp[nlocal][3] = utils::numeric(FLERR,values[2],true,lmp); - sp[nlocal][0] = utils::numeric(FLERR,values[6],true,lmp); - sp[nlocal][1] = utils::numeric(FLERR,values[7],true,lmp); - sp[nlocal][2] = utils::numeric(FLERR,values[8],true,lmp); - double inorm = 1.0/sqrt(sp[nlocal][0]*sp[nlocal][0] + - sp[nlocal][1]*sp[nlocal][1] + - sp[nlocal][2]*sp[nlocal][2]); - sp[nlocal][0] *= inorm; - sp[nlocal][1] *= inorm; - sp[nlocal][2] *= inorm; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecSpin::data_atom_hybrid(int nlocal, char **values) -{ - sp[nlocal][3] = utils::numeric(FLERR,values[0],true,lmp); - sp[nlocal][0] = utils::numeric(FLERR,values[1],true,lmp); - sp[nlocal][1] = utils::numeric(FLERR,values[2],true,lmp); - sp[nlocal][2] = utils::numeric(FLERR,values[3],true,lmp); - double inorm = 1.0/sqrt(sp[nlocal][0]*sp[nlocal][0] + - sp[nlocal][1]*sp[nlocal][1] + - sp[nlocal][2]*sp[nlocal][2]); - sp[nlocal][0] *= inorm; - sp[nlocal][1] *= inorm; - sp[nlocal][2] *= inorm; - - return 4; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecSpin::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = sp[i][3]; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = sp[i][0]; - buf[i][7] = sp[i][1]; - buf[i][8] = sp[i][2]; - buf[i][9] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][11] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecSpin::pack_data_hybrid(int i, double *buf) -{ - buf[0] = sp[i][3]; - buf[1] = sp[i][0]; - buf[2] = sp[i][1]; - buf[3] = sp[i][2]; - return 4; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecSpin::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT \ - " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e " - "%-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4], - buf[i][5],buf[i][6],buf[i][7],buf[i][8], - (int) ubuf(buf[i][9]).i,(int) ubuf(buf[i][10]).i, - (int) ubuf(buf[i][11]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecSpin::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2],buf[3]); - return 4; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecSpin::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("sp")) bytes += memory->usage(sp,nmax,4); - if (atom->memcheck("fm")) bytes += memory->usage(fm,nmax*comm->nthreads,3); - if (atom->memcheck("fm_long")) bytes += memory->usage(fm_long,nmax*comm->nthreads,3); - - return bytes; -} - -/* ---------------------------------------------------------------------- - clear all forces (mech and mag) -------------------------------------------------------------------------- */ - -void AtomVecSpin::force_clear(int /*n*/, size_t nbytes) -{ - memset(&atom->f[0][0],0,3*nbytes); - memset(&atom->fm[0][0],0,3*nbytes); - memset(&atom->fm_long[0][0],0,3*nbytes); -} - - diff --git a/src/SPIN/atom_vec_spin.h b/src/SPIN/atom_vec_spin.h index 6ce2c9dc7d..f24791605d 100644 --- a/src/SPIN/atom_vec_spin.h +++ b/src/SPIN/atom_vec_spin.h @@ -27,53 +27,13 @@ namespace LAMMPS_NS { class AtomVecSpin : public AtomVec { public: AtomVecSpin(class LAMMPS *); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - - // clear magnetic and mechanic forces + void grow_pointers(); void force_clear(int, size_t); - + void data_atom_post(int); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; // lattice quantities - - // spin quantities - double **sp; // sp[i][0-2] direction of the spin i - // sp[i][3] atomic magnetic moment of the spin i - double **fm; // fm[i][0-2] direction of magnetic precession - double **fm_long; // storage of long-range spin prec. components + double **sp,**fm,**fm_long; }; } @@ -83,13 +43,4 @@ class AtomVecSpin : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/SPIN/neb_spin.cpp b/src/SPIN/neb_spin.cpp index 075850d1af..168e288181 100644 --- a/src/SPIN/neb_spin.cpp +++ b/src/SPIN/neb_spin.cpp @@ -441,7 +441,7 @@ void NEBSpin::readfile(char *file, int flag) buf = buffer; next = strchr(buf,'\n'); *next = '\0'; - int nwords = atom->count_words(buf); + int nwords = utils::trim_and_count_words(buf); *next = '\n'; if (nwords != ATTRIBUTE_PERLINE) diff --git a/src/STUBS/mpi.c b/src/STUBS/mpi.c index a5a00f86a5..38fbbac3af 100644 --- a/src/STUBS/mpi.c +++ b/src/STUBS/mpi.c @@ -353,7 +353,7 @@ int MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count) int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *comm_out) { - *comm_out = comm; + *comm_out = comm+1; return 0; } @@ -361,7 +361,7 @@ int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *comm_out) int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *comm_out) { - *comm_out = comm; + *comm_out = comm+1; return 0; } @@ -377,7 +377,7 @@ MPI_Fint MPI_Comm_c2f(MPI_Comm comm) { return comm; }; MPI_Comm MPI_Comm_f2c(MPI_Fint comm) { return comm; }; -//* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- */ int MPI_Comm_group(MPI_Comm comm, MPI_Group *group) { diff --git a/src/USER-AWPMD/atom_vec_wavepacket.cpp b/src/USER-AWPMD/atom_vec_wavepacket.cpp index bce334a7b3..0d11e983ad 100644 --- a/src/USER-AWPMD/atom_vec_wavepacket.cpp +++ b/src/USER-AWPMD/atom_vec_wavepacket.cpp @@ -18,13 +18,7 @@ #include "atom_vec_wavepacket.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -32,1079 +26,83 @@ using namespace LAMMPS_NS; AtomVecWavepacket::AtomVecWavepacket(LAMMPS *lmp) : AtomVec(lmp) { - comm_x_only = comm_f_only = 0; - mass_type = 1; molecular = 0; forceclearflag = 1; - size_forward = 4; // coords[3]+radius[1] - size_reverse = 10; // force[3]+erforce[1]+ervelforce[1]+vforce[3]+csforce[2] - size_border = 10; // coords[3]+tag[1]+type[1]+mask[1]+q[1]+spin[1]+eradius[1]+etag[1] - size_velocity = 6; // +velocities[3]+ ervel[1]+cs[2] - size_data_atom = 11; // for input file: 1-tag 2-type 3-q 4-spin 5-eradius 6-etag 7-cs_re 8-cs_im 9-x 10-y 11-z - size_data_vel = 5; // for input file: vx vy vz ervel - xcol_data = 9; // starting column for x data - atom->wavepacket_flag = 1; - atom->electron_flag = 1; // compatible with eff + + atom->electron_flag = 1; // compatible with eff atom->q_flag = atom->spin_flag = atom->eradius_flag = atom->ervel_flag = atom->erforce_flag = 1; + atom->cs_flag = atom->csforce_flag = + atom->vforce_flag = atom->ervelforce_flag = atom->etag_flag = 1; - atom->cs_flag = atom->csforce_flag = atom->vforce_flag = atom->ervelforce_flag = atom->etag_flag = 1; + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) + "q spin eradius ervel erforce cs csforce " + "vforce ervelforce etag"; + fields_copy = (char *) "q spin eradius ervel cs etag"; + fields_comm = (char *) "eradius"; + fields_comm_vel = (char *) "eradius ervel cs"; + fields_reverse = (char *) "erforce ervelforce vforce csforce"; + fields_border = (char *) "q spin eradius etag"; + fields_border_vel = (char *) "q spin eradius etag ervel cs"; + fields_exchange = (char *) "q spin eradius ervel etag cs"; + fields_restart = (char *) "q spin eradius ervel etag cs"; + fields_create = (char *) "q spin eradius ervel etag cs"; + fields_data_atom = (char *) "id type q spin eradius etag cs x"; + fields_data_vel = (char *) "id v ervel"; + + setup_fields(); } /* ---------------------------------------------------------------------- - grow atom-electron arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecWavepacket::grow(int n) +void AtomVecWavepacket::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - q = memory->grow(atom->q,nmax,"atom:q"); - spin = memory->grow(atom->spin,nmax,"atom:spin"); - eradius = memory->grow(atom->eradius,nmax,"atom:eradius"); - ervel = memory->grow(atom->ervel,nmax,"atom:ervel"); - erforce = memory->grow(atom->erforce,nmax*comm->nthreads,"atom:erforce"); - - cs = memory->grow(atom->cs,2*nmax,"atom:cs"); - csforce = memory->grow(atom->csforce,2*nmax,"atom:csforce"); - vforce = memory->grow(atom->vforce,3*nmax,"atom:vforce"); - ervelforce = memory->grow(atom->ervelforce,nmax,"atom:ervelforce"); - etag = memory->grow(atom->etag,nmax,"atom:etag"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; q = atom->q; - eradius = atom->eradius; ervel = atom->ervel; erforce = atom->erforce; - - cs = atom->cs; - csforce = atom->csforce; - vforce = atom->vforce; - ervelforce = atom->ervelforce; - etag = atom->etag; + spin = atom->spin; + eradius = atom->eradius; + ervel = atom->ervel; + erforce = atom->erforce; } /* ---------------------------------------------------------------------- - copy atom I info to atom J + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector ------------------------------------------------------------------------- */ -void AtomVecWavepacket::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - q[j] = q[i]; - spin[j] = spin[i]; - eradius[j] = eradius[i]; - ervel[j] = ervel[i]; - - cs[2*j] = cs[2*i]; - cs[2*j+1] = cs[2*i+1]; - etag[j] = etag[i]; - - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - void AtomVecWavepacket::force_clear(int n, size_t nbytes) { memset(&erforce[n],0,nbytes); } -/* ---------------------------------------------------------------------- */ -// this will be used as partial pack for unsplit Hartree packets (v, ervel not regarded as separate variables) +/* ---------------------------------------------------------------------- + initialize non-zero atom quantities + make each atom a proton +------------------------------------------------------------------------- */ -int AtomVecWavepacket::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +void AtomVecWavepacket::create_atom_post(int ilocal) { - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = eradius[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ -// this is a complete pack of all 'position' variables of AWPMD - -int AtomVecWavepacket::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = eradius[j]; - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecWavepacket::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - eradius[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecWavepacket::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - eradius[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - - ervel[i] = buf[m++]; - cs[2*i] = buf[m++]; - cs[2*i+1] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++){ - eradius[i] = buf[m++]; - ervel[i] = buf[m++]; - cs[2*i] = buf[m++]; - cs[2*i+1] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { //10 - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = erforce[i]; - - buf[m++] = ervelforce[i]; - buf[m++] = vforce[3*i]; - buf[m++] = vforce[3*i+1]; - buf[m++] = vforce[3*i+2]; - buf[m++] = csforce[2*i]; - buf[m++] = csforce[2*i+1]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++){ - buf[m++] = erforce[i]; - - buf[m++] = ervelforce[i]; - buf[m++] = vforce[3*i]; - buf[m++] = vforce[3*i+1]; - buf[m++] = vforce[3*i+2]; - buf[m++] = csforce[2*i]; - buf[m++] = csforce[2*i+1]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecWavepacket::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - erforce[j] += buf[m++]; - - ervelforce[j] += buf[m++]; - vforce[3*j] += buf[m++]; - vforce[3*j+1] += buf[m++]; - vforce[3*j+2] += buf[m++]; - csforce[2*j] += buf[m++]; - csforce[2*j+1] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - erforce[j] += buf[m++]; - - ervelforce[j] += buf[m++]; - vforce[3*j] += buf[m++]; - vforce[3*j+1] += buf[m++]; - vforce[3*j+2] += buf[m++]; - csforce[2*j] += buf[m++]; - csforce[2*j+1] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ -// will be used for Hartree unsplit version (the etag is added however) -int AtomVecWavepacket::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = ubuf(etag[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = ubuf(etag[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = ubuf(etag[j]).d; - - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (domain->triclinic == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = ubuf(etag[j]).d; - - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = ubuf(etag[j]).d; - - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - - buf[m++] = ubuf(etag[j]).d; - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecWavepacket::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - etag[i] = (int) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecWavepacket::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - etag[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - ervel[i] = buf[m++]; - cs[2*i] = buf[m++]; - cs[2*i+1] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - etag[i] = (int) ubuf(buf[m++]).i; - ervel[i] = buf[m++]; - cs[2*i] = buf[m++]; - cs[2*i+1] = buf[m++]; - } - return m; + q[ilocal] = 1.0; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecWavepacket::pack_exchange(int i, double *buf) +void AtomVecWavepacket::data_atom_post(int ilocal) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = q[i]; - buf[m++] = ubuf(spin[i]).d; - buf[m++] = eradius[i]; - buf[m++] = ervel[i]; - - buf[m++] = ubuf(etag[i]).d; - buf[m++] = cs[2*i]; - buf[m++] = cs[2*i+1]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - q[nlocal] = buf[m++]; - spin[nlocal] = (int) ubuf(buf[m++]).i; - eradius[nlocal] = buf[m++]; - ervel[nlocal] = buf[m++]; - - etag[nlocal] = (int) ubuf(buf[m++]).i; - cs[2*nlocal] = buf[m++]; - cs[2*nlocal+1] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 18 * nlocal; // Associated with pack_restart - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = q[i]; - buf[m++] = ubuf(spin[i]).d; - buf[m++] = eradius[i]; - buf[m++] = ervel[i]; - - buf[m++] = ubuf(etag[i]).d; - buf[m++] = cs[2*i]; - buf[m++] = cs[2*i+1]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - q[nlocal] = buf[m++]; - spin[nlocal] = (int) ubuf(buf[m++]).i; - eradius[nlocal] = buf[m++]; - ervel[nlocal] = buf[m++]; - - etag[nlocal] = (int) ubuf(buf[m++]).i; - cs[2*nlocal] = buf[m++]; - cs[2*nlocal+1] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults - AWPMD: creates a proton -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - q[nlocal] = 1.; - spin[nlocal] = 0; - eradius[nlocal] = 0.0; - ervel[nlocal] = 0.0; - - etag[nlocal] = 0; - cs[2*nlocal] = 0.; - cs[2*nlocal+1] = 0.; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities - AWPMD: 0-tag 1-type 2-q 3-spin 4-eradius 5-etag 6-cs_re 7-cs_im -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::data_atom(double *coord, imageint imagetmp, - char **values) -{ - int nlocal = atom->nlocal; - - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - q[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - spin[nlocal] = utils::inumeric(FLERR,values[3],true,lmp); - eradius[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - if (eradius[nlocal] < 0.0) - error->one(FLERR,"Invalid eradius in Atoms section of data file"); - - etag[nlocal] = utils::inumeric(FLERR,values[5],true,lmp); - cs[2*nlocal] = utils::numeric(FLERR,values[6],true,lmp); - cs[2*nlocal+1] = utils::numeric(FLERR,values[7],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - ervel[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::data_atom_hybrid(int nlocal, char **values) -{ - q[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - spin[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - eradius[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - if (eradius[nlocal] < 0.0) - error->one(FLERR,"Invalid eradius in Atoms section of data file"); - - etag[nlocal] = utils::inumeric(FLERR,values[3],true,lmp); - cs[2*nlocal] = utils::inumeric(FLERR,values[4],true,lmp); - cs[2*nlocal+1] = utils::numeric(FLERR,values[5],true,lmp); - - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - ervel[nlocal] = 0.0; - - return 3; -} - -/* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::data_vel(int m, char **values) -{ - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - ervel[m] = utils::numeric(FLERR,values[3],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::data_vel_hybrid(int m, char **values) -{ - ervel[m] = utils::numeric(FLERR,values[0],true,lmp); - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = q[i]; - buf[i][3] = ubuf(spin[i]).d; - buf[i][4] = eradius[i]; - buf[i][5] = ubuf(etag[i]).d; - buf[i][6] = cs[2*i]; - buf[i][7] = cs[2*i+1]; - buf[i][8] = x[i][0]; - buf[i][9] = x[i][1]; - buf[i][10] = x[i][2]; - buf[i][11] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][12] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][13] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_data_hybrid(int i, double *buf) -{ - buf[0] = q[i]; - buf[1] = ubuf(spin[i]).d; - buf[2] = eradius[i]; - buf[3] = ubuf(etag[i]).d; - buf[4] = cs[2*i]; - buf[5] = cs[2*i+1]; - return 6; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %d %-1.16e %d %-1.16e %-1.16e %-1.16e " - "%-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],(int) ubuf(buf[i][3]).i,buf[i][4], - (int) ubuf(buf[i][5]).i,buf[i][6],buf[i][8], - buf[i][8],buf[i][9],buf[i][10], - (int) ubuf(buf[i][11]).i,(int) ubuf(buf[i][12]).i, - (int) ubuf(buf[i][13]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %d %-1.16e %d %-1.16e %-1.16e", - buf[0],(int) ubuf(buf[1]).i,buf[2],(int) ubuf(buf[3]).i, - buf[4],buf[5]); - return 6; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = ervel[i]; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid velocity info for data file -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = ervel[i]; - return 1; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %-1.16e %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3],buf[i][4]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e",buf[0]); - return 1; + ervel[ilocal] = 0.0; } /* ---------------------------------------------------------------------- @@ -1129,10 +127,9 @@ int AtomVecWavepacket::property_atom(char *name) void AtomVecWavepacket::pack_property_atom(int index, double *buf, int nvalues, int groupbit) { - int *mask = atom->mask; int nlocal = atom->nlocal; - int n = 0; + int n = 0; if (index == 0) { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = spin[i]; @@ -1159,35 +156,3 @@ void AtomVecWavepacket::pack_property_atom(int index, double *buf, } } } - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecWavepacket::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("q")) bytes += memory->usage(q,nmax); - if (atom->memcheck("spin")) bytes += memory->usage(spin,nmax); - if (atom->memcheck("eradius")) bytes += memory->usage(eradius,nmax); - if (atom->memcheck("ervel")) bytes += memory->usage(ervel,nmax); - if (atom->memcheck("erforce")) - bytes += memory->usage(erforce,nmax*comm->nthreads); - - if (atom->memcheck("ervelforce")) bytes += memory->usage(ervelforce,nmax); - if (atom->memcheck("cs")) bytes += memory->usage(cs,2*nmax); - if (atom->memcheck("csforce")) bytes += memory->usage(csforce,2*nmax); - if (atom->memcheck("vforce")) bytes += memory->usage(vforce,3*nmax); - if (atom->memcheck("etag")) bytes += memory->usage(etag,nmax); - - return bytes; -} diff --git a/src/USER-AWPMD/atom_vec_wavepacket.h b/src/USER-AWPMD/atom_vec_wavepacket.h index d1a0c7c7f2..123414eeb7 100644 --- a/src/USER-AWPMD/atom_vec_wavepacket.h +++ b/src/USER-AWPMD/atom_vec_wavepacket.h @@ -11,11 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -/* ---------------------------------------------------------------------- - Contributing author: Ilya Valuev (JIHT RAS) -------------------------------------------------------------------------- */ - - #ifdef ATOM_CLASS AtomStyle(wavepacket,AtomVecWavepacket) @@ -32,77 +27,17 @@ namespace LAMMPS_NS { class AtomVecWavepacket : public AtomVec { public: AtomVecWavepacket(class LAMMPS *); - ~AtomVecWavepacket() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); + + void grow_pointers(); void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); + void create_atom_post(int); + void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); - bigint memory_usage(); -private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - - ///\en spin: -1 or 1 for electron, 0 for ion (compatible with eff) + private: int *spin; - ///\en charge: must be specified in the corresponding units (-1 for electron in real units, eff compatible) - double *q; - ///\en width of the wavepacket (compatible with eff) - double *eradius; - ///\en width velocity for the wavepacket (compatible with eff) - double *ervel; - ///\en (generalized) force on width (compatible with eff) - double *erforce; - - // AWPMD- specific: - ///\en electron tag: must be the same for the WPs belonging to the same electron - int *etag; - ///\en wavepacket split coefficients: cre, cim, size is 2*N - double *cs; - ///\en force on wavepacket split coefficients: re, im, size is 2*N - double *csforce; - ///\en (generalized) force on velocity, size is 3*N - double *vforce; - ///\en (generalized) force on radius velocity, size is N - double *ervelforce; + double *q,*eradius,*ervel,*erforce; }; } diff --git a/src/USER-AWPMD/fix_nve_awpmd.cpp b/src/USER-AWPMD/fix_nve_awpmd.cpp index b4a1cbf72a..2aa2e7680b 100644 --- a/src/USER-AWPMD/fix_nve_awpmd.cpp +++ b/src/USER-AWPMD/fix_nve_awpmd.cpp @@ -74,8 +74,6 @@ void FixNVEAwpmd::init() void FixNVEAwpmd::initial_integrate(int /* vflag */) { - - // update v,vr and x,radius of atoms in group double **x = atom->x; @@ -84,7 +82,7 @@ void FixNVEAwpmd::initial_integrate(int /* vflag */) double *ervel = atom->ervel; double **f = atom->f; double *erforce = atom->erforce; - double *vforce=atom->vforce; + double **vforce=atom->vforce; double *ervelforce=atom->ervelforce; double *mass = atom->mass; @@ -101,7 +99,7 @@ void FixNVEAwpmd::initial_integrate(int /* vflag */) double dtfm = dtf / mass[type[i]]; double dtfmr=dtfm; for(int j=0;j<3;j++){ - x[i][j] += dtv*vforce[3*i+j]; + x[i][j] += dtv*vforce[i][j]; v[i][j] += dtfm*f[i][j]; } eradius[i]+= dtv*ervelforce[i]; diff --git a/src/USER-AWPMD/pair_awpmd_cut.cpp b/src/USER-AWPMD/pair_awpmd_cut.cpp index 092327c367..e382a1cb9c 100644 --- a/src/USER-AWPMD/pair_awpmd_cut.cpp +++ b/src/USER-AWPMD/pair_awpmd_cut.cpp @@ -259,7 +259,7 @@ void PairAWPMDCut::compute(int eflag, int vflag) Vector_3 xx=Vector_3(x[i][0],x[i][1],x[i][2]); Vector_3 rv=m*Vector_3(v[i][0],v[i][1],v[i][2]); double pv=ermscale*m*atom->ervel[i]; - Vector_2 cc=Vector_2(atom->cs[2*i],atom->cs[2*i+1]); + Vector_2 cc=Vector_2(atom->cs[i][0],atom->cs[i][1]); gmap[i]=wpmd->add_split(xx,rv,atom->eradius[i],pv,cc,1.,atom->q[i],itag[i] : -atom->tag[i]); // resetting for the case constraints were applied v[i][0]=rv[0]/m; @@ -284,7 +284,7 @@ void PairAWPMDCut::compute(int eflag, int vflag) } else { // electron int iel=gmap[i]; int s=spin[i] >0 ? 0 : 1; - wpmd->get_wp_force(s,iel,(Vector_3 *)f[i],(Vector_3 *)(atom->vforce+3*i),atom->erforce+i,atom->ervelforce+i,(Vector_2 *)(atom->csforce+2*i)); + wpmd->get_wp_force(s,iel,(Vector_3 *)f[i],(Vector_3 *)(atom->vforce[i]),atom->erforce+i,atom->ervelforce+i,(Vector_2 *)(atom->csforce[i])); } } @@ -671,11 +671,11 @@ void PairAWPMDCut::min_xf_get(int /* ignore */) double *eradius = atom->eradius; double *erforce = atom->erforce; double **v=atom->v; - double *vforce=atom->vforce; + double **vforce=atom->vforce; double *ervel=atom->ervel; double *ervelforce=atom->ervelforce; - double *cs=atom->cs; - double *csforce=atom->csforce; + double **cs=atom->cs; + double **csforce=atom->csforce; int *spin = atom->spin; int nlocal = atom->nlocal; @@ -686,14 +686,14 @@ void PairAWPMDCut::min_xf_get(int /* ignore */) min_varforce[7*i] = eradius[i]*erforce[i]; for(int j=0;j<3;j++){ min_var[7*i+1+3*j] = v[i][j]; - min_varforce[7*i+1+3*j] = vforce[3*i+j]; + min_varforce[7*i+1+3*j] = vforce[i][j]; } min_var[7*i+4] = ervel[i]; min_varforce[7*i+4] = ervelforce[i]; - min_var[7*i+5] = cs[2*i]; - min_varforce[7*i+5] = csforce[2*i]; - min_var[7*i+6] = cs[2*i+1]; - min_varforce[7*i+6] = csforce[2*i+1]; + min_var[7*i+5] = cs[i][0]; + min_varforce[7*i+5] = csforce[i][0]; + min_var[7*i+6] = cs[i][1]; + min_varforce[7*i+6] = csforce[i][1]; } else { for(int j=0;j<7;j++) @@ -710,7 +710,7 @@ void PairAWPMDCut::min_x_set(int /* ignore */) double *eradius = atom->eradius; double **v=atom->v; double *ervel=atom->ervel; - double *cs=atom->cs; + double **cs=atom->cs; int *spin = atom->spin; int nlocal = atom->nlocal; @@ -721,8 +721,8 @@ void PairAWPMDCut::min_x_set(int /* ignore */) for(int j=0;j<3;j++) v[i][j]=min_var[7*i+1+3*j]; ervel[i]=min_var[7*i+4]; - cs[2*i]=min_var[7*i+5]; - cs[2*i+1]=min_var[7*i+6]; + cs[i][0]=min_var[7*i+5]; + cs[i][1]=min_var[7*i+6]; } } } diff --git a/src/USER-CGDNA/pair_oxrna2_xstk.cpp b/src/USER-CGDNA/pair_oxrna2_xstk.cpp index f5207c53e7..73a73c1ea0 100644 --- a/src/USER-CGDNA/pair_oxrna2_xstk.cpp +++ b/src/USER-CGDNA/pair_oxrna2_xstk.cpp @@ -112,7 +112,6 @@ void PairOxrna2Xstk::compute(int eflag, int vflag) double theta1,t1dir[3],cost1; double theta2,t2dir[3],cost2; double theta3,t3dir[3],cost3; - double theta4,theta4p,t4dir[3],cost4; double theta7,theta7p,t7dir[3],cost7; double theta8,theta8p,t8dir[3],cost8; diff --git a/src/USER-DPD/atom_vec_dpd.cpp b/src/USER-DPD/atom_vec_dpd.cpp index d1768d473e..34efd9bc2b 100644 --- a/src/USER-DPD/atom_vec_dpd.cpp +++ b/src/USER-DPD/atom_vec_dpd.cpp @@ -17,13 +17,7 @@ #include "atom_vec_dpd.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -34,64 +28,37 @@ AtomVecDPD::AtomVecDPD(LAMMPS *lmp) : AtomVec(lmp) molecular = 0; mass_type = 1; - comm_x_only = comm_f_only = 0; // we communicate not only x forward but also dpdTheta - size_forward = 7; // 3 + dpdTheta + uCond + uMech + uChem - size_reverse = 3; // 3 - size_border = 12; // 6 + dpdTheta + uCond + uMech + uChem + uCG + uCGnew - size_velocity = 3; - size_data_atom = 6; // we read id + type + dpdTheta + x + y + z - size_data_vel = 4; - xcol_data = 4; // 1=id 2=type 3=dpdTheta 4=x - atom->rho_flag = 1; atom->dpd_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "rho dpdTheta uCond uMech uChem uCG uCGnew duChem"; + fields_copy = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; + fields_comm = (char *) "dpdTheta uCond uMech uChem"; + fields_comm_vel = (char *) "dpdTheta uCond uMech uChem"; + fields_reverse = (char *) ""; + fields_border = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; + fields_border_vel = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; + fields_exchange = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; + fields_restart = (char *) "dpdTheta uCond uMech uChem"; + fields_create = (char *) "rho dpdTheta uCond uMech uChem uCG uCGnew duChem"; + fields_data_atom = (char *) "id type dpdTheta x"; + fields_data_vel = (char *) "id v"; + + setup_fields(); } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecDPD::grow(int n) +void AtomVecDPD::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - rho = memory->grow(atom->rho, nmax, "atom:rho"); - dpdTheta = memory->grow(atom->dpdTheta, nmax, "atom:dpdTheta"); - uCond = memory->grow(atom->uCond,nmax,"atom:uCond"); - uMech = memory->grow(atom->uMech,nmax,"atom:uMech"); - uChem = memory->grow(atom->uChem,nmax,"atom:uChem"); - uCG = memory->grow(atom->uCG,nmax,"atom:uCG"); - uCGnew = memory->grow(atom->uCGnew,nmax,"atom:uCGnew"); - duChem = memory->grow(atom->duChem,nmax,"atom:duChem"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecDPD::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; rho = atom->rho; dpdTheta = atom->dpdTheta; uCond = atom->uCond; @@ -99,839 +66,33 @@ void AtomVecDPD::grow_reset() uChem = atom->uChem; uCG = atom->uCG; uCGnew = atom->uCGnew; - duChem = atom->duChem; } /* ---------------------------------------------------------------------- - copy atom I info to atom J + initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ -void AtomVecDPD::copy(int i, int j, int delflag) +void AtomVecDPD::unpack_restart_init(int ilocal) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - dpdTheta[j] = dpdTheta[i]; - uCond[j] = uCond[i]; - uMech[j] = uMech[i]; - uChem[j] = uChem[i]; - uCG[j] = uCG[i]; - uCGnew[j] = uCGnew[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPD::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPD::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPD::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPD::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - uCG[i] = buf[m++]; - uCGnew[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPD::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - uCG[i] = buf[m++]; - uCGnew[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - uCG[i] = buf[m++]; - uCGnew[i] = buf[m++]; - } - return m; + uCG[ilocal] = 0.0; + uCGnew[ilocal] = 0.0; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecDPD::pack_exchange(int i, double *buf) +void AtomVecDPD::data_atom_post(int ilocal) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = dpdTheta[i]; - buf[m++] = uCond[i]; - buf[m++] = uMech[i]; - buf[m++] = uChem[i]; - buf[m++] = uCG[i]; - buf[m++] = uCGnew[i]; + rho[ilocal] = 0.0; + uCond[ilocal] = 0.0; + uMech[ilocal] = 0.0; + uChem[ilocal] = 0.0; + uCG[ilocal] = 0.0; + uCGnew[ilocal] = 0.0; - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - dpdTheta[nlocal] = buf[m++]; - uCond[nlocal] = buf[m++]; - uMech[nlocal] = buf[m++]; - uChem[nlocal] = buf[m++]; - uCG[nlocal] = buf[m++]; - uCGnew[nlocal] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecDPD::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 15 * nlocal; // 11 + dpdTheta + uCond + uMech + uChem - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecDPD::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = dpdTheta[i]; - buf[m++] = uCond[i]; - buf[m++] = uMech[i]; - buf[m++] = uChem[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecDPD::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - dpdTheta[nlocal] = buf[m++]; - uCond[nlocal] = buf[m++]; - uMech[nlocal] = buf[m++]; - uChem[nlocal] = buf[m++]; - uCG[nlocal] = 0.0; - uCGnew[nlocal] = 0.0; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecDPD::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - rho[nlocal] = 0.0; - dpdTheta[nlocal] = 0.0; - uCond[nlocal] = 0.0; - uMech[nlocal] = 0.0; - uChem[nlocal] = 0.0; - uCG[nlocal] = 0.0; - uCGnew[nlocal] = 0.0; - duChem[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecDPD::data_atom(double *coord, tagint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - dpdTheta[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - if (dpdTheta[nlocal] <= 0) - error->one(FLERR,"Internal temperature in Atoms section of date file must be > zero"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - rho[nlocal] = 0.0; - uCond[nlocal] = 0.0; - uMech[nlocal] = 0.0; - uChem[nlocal] = 0.0; - uCG[nlocal] = 0.0; - uCGnew[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecDPD::data_atom_hybrid(int nlocal, char **values) -{ - dpdTheta[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDPD::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = dpdTheta[i]; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecDPD::pack_data_hybrid(int i, double *buf) -{ - buf[0] = dpdTheta[i]; - return 1; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDPD::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecDPD::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e",buf[0]); - return 1; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecDPD::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - if (atom->memcheck("rho")) bytes += memory->usage(rho,nmax); - if (atom->memcheck("dpdTheta")) bytes += memory->usage(dpdTheta,nmax); - if (atom->memcheck("uCond")) bytes += memory->usage(uCond,nmax); - if (atom->memcheck("uMech")) bytes += memory->usage(uMech,nmax); - if (atom->memcheck("uChem")) bytes += memory->usage(uChem,nmax); - if (atom->memcheck("uCG")) bytes += memory->usage(uCG,nmax); - if (atom->memcheck("uCGnew")) bytes += memory->usage(uCGnew,nmax); - if (atom->memcheck("duChem")) bytes += memory->usage(duChem,nmax); - - return bytes; + if (dpdTheta[ilocal] <= 0) + error->one(FLERR,"Internal temperature in Atoms section of date file " + "must be > zero"); } diff --git a/src/USER-DPD/atom_vec_dpd.h b/src/USER-DPD/atom_vec_dpd.h index 234d2ccce7..61abc658b8 100644 --- a/src/USER-DPD/atom_vec_dpd.h +++ b/src/USER-DPD/atom_vec_dpd.h @@ -27,46 +27,15 @@ namespace LAMMPS_NS { class AtomVecDPD : public AtomVec { public: AtomVecDPD(class LAMMPS *); - virtual ~AtomVecDPD() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - double *uCond,*uMech,*uChem,*uCG,*uCGnew,*rho,*dpdTheta; - double *duChem; - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; + void grow_pointers(); + void unpack_restart_init(int); + void data_atom_post(int); +private: + double *rho,*dpdTheta; + double *uCond,*uMech,*uChem; + double *uCG,*uCGnew; }; } @@ -76,15 +45,6 @@ class AtomVecDPD : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - E: Internal temperature in Atoms section of data file must be > zero All internal temperatures must be > zero diff --git a/src/USER-DPD/fix_eos_table_rx.cpp b/src/USER-DPD/fix_eos_table_rx.cpp index 3fe2f479bf..d9641f2aab 100644 --- a/src/USER-DPD/fix_eos_table_rx.cpp +++ b/src/USER-DPD/fix_eos_table_rx.cpp @@ -337,7 +337,7 @@ void FixEOStableRX::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -356,7 +356,7 @@ void FixEOStableRX::read_file(char *file) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != min_params_per_line && nwords != max_params_per_line) @@ -475,7 +475,7 @@ void FixEOStableRX::read_table(Table *tb, Table *tb2, char *file, char *keyword) for (int i = 0; i < ninputs; i++) { utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - nwords = atom->count_words(line); + nwords = utils::count_words(utils::trim_comment(line)); if(nwords != nspecies+2){ printf("nwords=%d nspecies=%d\n",nwords,nspecies); error->all(FLERR,"Illegal fix eos/table/rx command"); diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index 3d870cc902..cfa309d053 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -31,6 +31,7 @@ #include "neigh_request.h" #include "math_special.h" #include "pair_dpd_fdt_energy.h" +#include "utils.h" #include // std::vector<> #include // std::max @@ -123,7 +124,7 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : else { std::string errmsg = "Illegal command " + std::string(word) + " expected \"sparse\" or \"dense\"\n"; - error->all(FLERR, errmsg.c_str()); + error->all(FLERR, errmsg); } if (comm->me == 0 and Verbosity > 1){ @@ -133,7 +134,7 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : else msg += std::string("dense"); - error->message(FLERR, msg.c_str()); + error->message(FLERR, msg); } } @@ -148,7 +149,7 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : odeIntegrationFlag = ODE_LAMMPS_RKF45; else { std::string errmsg = "Illegal ODE integration type: " + std::string(word); - error->all(FLERR, errmsg.c_str()); + error->all(FLERR, errmsg); } } @@ -296,7 +297,7 @@ void FixRX::post_constructor() // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // words = ptrs to all words in line @@ -884,7 +885,7 @@ void FixRX::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; nreactions++; @@ -938,7 +939,7 @@ void FixRX::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // words = ptrs to all words in line diff --git a/src/USER-DPD/pair_exp6_rx.cpp b/src/USER-DPD/pair_exp6_rx.cpp index 4aee497b64..f13f911326 100644 --- a/src/USER-DPD/pair_exp6_rx.cpp +++ b/src/USER-DPD/pair_exp6_rx.cpp @@ -756,7 +756,7 @@ void PairExp6rx::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -775,7 +775,7 @@ void PairExp6rx::read_file(char *file) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) @@ -865,7 +865,7 @@ void PairExp6rx::read_file2(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -884,7 +884,7 @@ void PairExp6rx::read_file2(char *file) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) diff --git a/src/USER-EFF/atom_vec_electron.cpp b/src/USER-EFF/atom_vec_electron.cpp index 552a89c04a..0912fb0498 100644 --- a/src/USER-EFF/atom_vec_electron.cpp +++ b/src/USER-EFF/atom_vec_electron.cpp @@ -18,14 +18,8 @@ #include "atom_vec_electron.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" #include "citeme.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -46,929 +40,76 @@ AtomVecElectron::AtomVecElectron(LAMMPS *lmp) : AtomVec(lmp) { if (lmp->citeme) lmp->citeme->add(cite_user_eff_package); - comm_x_only = comm_f_only = 0; - mass_type = 1; molecular = 0; forceclearflag = 1; - size_forward = 4; - size_reverse = 4; - size_border = 9; - size_velocity = 3; - size_data_atom = 8; - size_data_vel = 5; - xcol_data = 6; - - atom->ecp_flag = 0; - atom->electron_flag = 1; atom->q_flag = atom->spin_flag = atom->eradius_flag = atom->ervel_flag = atom->erforce_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "q spin eradius ervel erforce"; + fields_copy = (char *) "q spin eradius ervel"; + fields_comm = (char *) "eradius"; + fields_comm_vel = (char *) "eradius"; + fields_reverse = (char *) "erforce"; + fields_border = (char *) "q spin eradius"; + fields_border_vel = (char *) "q spin eradius"; + fields_exchange = (char *) "q spin eradius ervel"; + fields_restart = (char *) "q spin eradius ervel"; + fields_create = (char *) "q spin eradius ervel"; + fields_data_atom = (char *) "id type q spin eradius x"; + fields_data_vel = (char *) "id v ervel"; + + setup_fields(); } /* ---------------------------------------------------------------------- - grow atom-electron arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecElectron::grow(int n) +void AtomVecElectron::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - q = memory->grow(atom->q,nmax,"atom:q"); - spin = memory->grow(atom->spin,nmax,"atom:spin"); - eradius = memory->grow(atom->eradius,nmax,"atom:eradius"); - ervel = memory->grow(atom->ervel,nmax,"atom:ervel"); - erforce = memory->grow(atom->erforce,nmax*comm->nthreads,"atom:erforce"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + spin = atom->spin; + eradius = atom->eradius; + ervel = atom->ervel; + erforce = atom->erforce; } /* ---------------------------------------------------------------------- - reset local array ptrs + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector ------------------------------------------------------------------------- */ -void AtomVecElectron::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - q = atom->q; - eradius = atom->eradius; ervel = atom->ervel; erforce = atom->erforce; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecElectron::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - q[j] = q[i]; - spin[j] = spin[i]; - eradius[j] = eradius[i]; - ervel[j] = ervel[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - void AtomVecElectron::force_clear(int n, size_t nbytes) { memset(&erforce[n],0,nbytes); } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + initialize non-zero atom quantities +------------------------------------------------------------------------- */ -int AtomVecElectron::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +void AtomVecElectron::create_atom_post(int ilocal) { - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = eradius[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = eradius[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecElectron::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - eradius[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecElectron::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - eradius[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - eradius[i] = buf[m++]; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = erforce[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - buf[m++] = erforce[i]; - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecElectron::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - erforce[j] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - erforce[j] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (domain->triclinic == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecElectron::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecElectron::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - } - return m; + spin[ilocal] = 1; + eradius[ilocal] = 1.0; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecElectron::pack_exchange(int i, double *buf) +void AtomVecElectron::data_atom_post(int ilocal) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = q[i]; - buf[m++] = ubuf(spin[i]).d; - buf[m++] = eradius[i]; - buf[m++] = ervel[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - q[nlocal] = buf[m++]; - spin[nlocal] = (int) ubuf(buf[m++]).i; - eradius[nlocal] = buf[m++]; - ervel[nlocal] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecElectron::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 15 * nlocal; // Associated with pack_restart - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecElectron::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = q[i]; - buf[m++] = ubuf(spin[i]).d; - buf[m++] = eradius[i]; - buf[m++] = ervel[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecElectron::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - q[nlocal] = buf[m++]; - spin[nlocal] = (int) ubuf(buf[m++]).i; - eradius[nlocal] = buf[m++]; - ervel[nlocal] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecElectron::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - q[nlocal] = 0.0; - spin[nlocal] = 1; - eradius[nlocal] = 1.0; - ervel[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecElectron::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - q[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - spin[nlocal] = utils::inumeric(FLERR,values[3],true,lmp); - if (spin[nlocal] == 3) atom->ecp_flag = 1; - - eradius[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - ervel[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecElectron::data_atom_hybrid(int nlocal, char **values) -{ - q[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - spin[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - eradius[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - if (eradius[nlocal] < 0.0) - error->one(FLERR,"Invalid eradius in Atoms section of data file"); - - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - ervel[nlocal] = 0.0; - - return 3; -} - -/* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file -------------------------------------------------------------------------- */ - -void AtomVecElectron::data_vel(int m, char **values) -{ - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - ervel[m] = utils::numeric(FLERR,values[3],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file -------------------------------------------------------------------------- */ - -int AtomVecElectron::data_vel_hybrid(int m, char **values) -{ - ervel[m] = utils::numeric(FLERR,values[0],true,lmp); - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecElectron::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = q[i]; - buf[i][3] = ubuf(spin[i]).d; - buf[i][4] = eradius[i]; - buf[i][5] = x[i][0]; - buf[i][6] = x[i][1]; - buf[i][7] = x[i][2]; - buf[i][8] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecElectron::pack_data_hybrid(int i, double *buf) -{ - buf[0] = q[i]; - buf[1] = ubuf(spin[i]).d; - buf[2] = eradius[i]; - return 3; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecElectron::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i,buf[i][2], - (int) ubuf(buf[i][3]).i,buf[i][4],buf[i][5],buf[i][6],buf[i][7], - (int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i, - (int) ubuf(buf[i][10]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecElectron::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %d %-1.16e",buf[0],(int) ubuf(buf[1]).i,buf[2]); - return 3; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecElectron::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = ervel[i]; - } -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -int AtomVecElectron::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = ervel[i]; - return 1; -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecElectron::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %-1.16e %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3],buf[i][4]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -int AtomVecElectron::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e",buf[0]); - return 1; + ervel[ilocal] = 0.0; } /* ---------------------------------------------------------------------- @@ -1023,29 +164,3 @@ void AtomVecElectron::pack_property_atom(int index, double *buf, } } } - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecElectron::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("q")) bytes += memory->usage(q,nmax); - if (atom->memcheck("spin")) bytes += memory->usage(spin,nmax); - if (atom->memcheck("eradius")) bytes += memory->usage(eradius,nmax); - if (atom->memcheck("ervel")) bytes += memory->usage(ervel,nmax); - if (atom->memcheck("erforce")) - bytes += memory->usage(erforce,nmax*comm->nthreads); - - return bytes; -} diff --git a/src/USER-EFF/atom_vec_electron.h b/src/USER-EFF/atom_vec_electron.h index 6e79775c3d..9175ca52f7 100644 --- a/src/USER-EFF/atom_vec_electron.h +++ b/src/USER-EFF/atom_vec_electron.h @@ -27,56 +27,17 @@ namespace LAMMPS_NS { class AtomVecElectron : public AtomVec { public: AtomVecElectron(class LAMMPS *); - ~AtomVecElectron() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); + + void grow_pointers(); void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); + void create_atom_post(int); + void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); - bigint memory_usage(); - private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; +private: int *spin; - double *q,*eradius,*ervel,*erforce; + double *eradius,*ervel,*erforce; }; } diff --git a/src/USER-EFF/pair_eff_cut.cpp b/src/USER-EFF/pair_eff_cut.cpp index e7aed14030..f9333f4bec 100644 --- a/src/USER-EFF/pair_eff_cut.cpp +++ b/src/USER-EFF/pair_eff_cut.cpp @@ -801,7 +801,7 @@ void PairEffCut::settings(int narg, char **arg) int atype; int iarg = 1; - int ecp_found = 0; + ecp_found = 0; while (iarg < narg) { if (strcmp(arg[iarg],"limit/eradius") == 0) { @@ -821,17 +821,15 @@ void PairEffCut::settings(int narg, char **arg) else if (strcmp(arg[iarg+1],"O") == 0) ecp_type[atype] = 8; else if (strcmp(arg[iarg+1],"Al") == 0) ecp_type[atype] = 13; else if (strcmp(arg[iarg+1],"Si") == 0) ecp_type[atype] = 14; - else error->all(FLERR, "Note: there are no default parameters for this atom ECP\n"); + else error->all(FLERR, "No default parameters for this atom ECP\n"); iarg += 2; ecp_found = 1; } - } + } else error->all(FLERR,"Illegal pair style command"); } - if (!ecp_found && atom->ecp_flag) - error->all(FLERR,"Need to specify ECP type on pair_style command"); - // Need to introduce 2 new constants w/out changing update.cpp + if (force->qqr2e==332.06371) { // i.e. Real units chosen h2e = 627.509; // hartree->kcal/mol hhmss2e = 175.72044219620075; // hartree->kcal/mol * (Bohr->Angstrom)^2 @@ -872,9 +870,24 @@ void PairEffCut::init_style() if (update->whichflag == 1) { if (force->qqr2e == 332.06371 && update->dt == 1.0) - error->all(FLERR,"You must lower the default real units timestep for pEFF "); + error->all(FLERR,"Must lower the default real units timestep for pEFF "); } + // check if any atom's spin = 3 and ECP type was not set + + int *spin = atom->spin; + int nlocal = atom->nlocal; + + int flag = 0; + for (int i = 0; i < nlocal; i++) + if (spin[i] == 3) flag = 1; + + int flagall; + MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); + + if (flagall && !ecp_found) + error->all(FLERR,"Need to specify ECP type on pair_style command"); + // need a half neigh list and optionally a granular history neigh list neighbor->request(this,instance_me); diff --git a/src/USER-EFF/pair_eff_cut.h b/src/USER-EFF/pair_eff_cut.h index 63dabe5db8..bd04344373 100644 --- a/src/USER-EFF/pair_eff_cut.h +++ b/src/USER-EFF/pair_eff_cut.h @@ -46,10 +46,12 @@ class PairEffCut : public Pair { private: int limit_eradius_flag, pressure_with_evirials_flag; + int ecp_found; double cut_global; double **cut; int ecp_type[100]; - double PAULI_CORE_A[100], PAULI_CORE_B[100], PAULI_CORE_C[100], PAULI_CORE_D[100], PAULI_CORE_E[100]; + double PAULI_CORE_A[100],PAULI_CORE_B[100],PAULI_CORE_C[100]; + double PAULI_CORE_D[100],PAULI_CORE_E[100]; double hhmss2e, h2e; int nmax; diff --git a/src/USER-INTEL/pair_eam_alloy_intel.cpp b/src/USER-INTEL/pair_eam_alloy_intel.cpp index da8a180fff..16a55e4b2b 100644 --- a/src/USER-INTEL/pair_eam_alloy_intel.cpp +++ b/src/USER-INTEL/pair_eam_alloy_intel.cpp @@ -24,11 +24,12 @@ #include "force.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - /* ---------------------------------------------------------------------- */ PairEAMAlloyIntel::PairEAMAlloyIntel(LAMMPS *lmp) : PairEAMIntel(lmp) @@ -116,94 +117,107 @@ void PairEAMAlloyIntel::read_file(char *filename) { Setfl *file = setfl; - // open potential file + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(lmp, filename, "EAM"); - int me = comm->me; - FILE *fptr; - char line[MAXLINE]; + try { + reader.skip_line(); + reader.skip_line(); + reader.skip_line(); - if (me == 0) { - fptr = force->open_potential(filename); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EAM potential file %s",filename); - error->one(FLERR,str); + // extract element names from nelements line + ValueTokenizer values = reader.next_values(1); + file->nelements = values.next_int(); + + if (values.count() != file->nelements + 1) + error->one(FLERR,"Incorrect element names in EAM potential file"); + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + const std::string word = values.next_string(); + const int n = word.length() + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i], word.c_str()); + } + + // + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + + for (int i = 0; i < file->nelements; i++) { + values = reader.next_values(2); + values.next_int(); // ignore + file->mass[i] = values.next_double(); + + reader.next_dvector(&file->frho[i][1], file->nrho); + reader.next_dvector(&file->rhor[i][1], file->nr); + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->z2r[i][j][1], file->nr); + } + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - // read and broadcast header - // extract element names from nelements line + // broadcast potential information + MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world); - int n; - if (me == 0) { - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - n = strlen(line) + 1; + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + // allocate memory on other procs + if (comm->me != 0) { + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr; + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - sscanf(line,"%d",&file->nelements); - int nwords = atom->count_words(line); - if (nwords != file->nelements + 1) - error->all(FLERR,"Incorrect element names in EAM potential file"); - - char **words = new char*[file->nelements+1]; - nwords = 0; - strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - file->elements = new char*[file->nelements]; + // broadcast file->elements string array for (int i = 0; i < file->nelements; i++) { - n = strlen(words[i]) + 1; - file->elements[i] = new char[n]; - strcpy(file->elements[i],words[i]); - } - delete [] words; - - if (me == 0) { - fgets(line,MAXLINE,fptr); - sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + int n; + if (comm->me == 0) n = strlen(file->elements[i]) + 1; + MPI_Bcast(&n, 1, MPI_INT, 0, world); + if (comm->me != 0) file->elements[i] = new char[n]; + MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world); } - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + // broadcast file->mass, frho, rhor + for (int i = 0; i < file->nelements; i++) { + MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->rhor[i][1], file->nr, MPI_DOUBLE, 0, world); + } - file->mass = new double[file->nelements]; - memory->create(file->frho,file->nelements,file->nrho+1,"pair:frho"); - memory->create(file->rhor,file->nelements,file->nr+1,"pair:rhor"); - memory->create(file->z2r,file->nelements,file->nelements,file->nr+1, - "pair:z2r"); - - int i,j,tmp; - for (i = 0; i < file->nelements; i++) { - if (me == 0) { - fgets(line,MAXLINE,fptr); - sscanf(line,"%d %lg",&tmp,&file->mass[i]); + // broadcast file->z2r + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world); } - MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); - MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); - if (me == 0) grab(fptr,file->nr,&file->rhor[i][1]); - MPI_Bcast(&file->rhor[i][1],file->nr,MPI_DOUBLE,0,world); } - - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); - MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); - } - - // close the potential file - - if (me == 0) fclose(fptr); } /* ---------------------------------------------------------------------- diff --git a/src/USER-INTEL/pair_eam_fs_intel.cpp b/src/USER-INTEL/pair_eam_fs_intel.cpp index 043f77db3e..e68d5687cf 100644 --- a/src/USER-INTEL/pair_eam_fs_intel.cpp +++ b/src/USER-INTEL/pair_eam_fs_intel.cpp @@ -24,11 +24,12 @@ #include "force.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - /* ---------------------------------------------------------------------- */ PairEAMFSIntel::PairEAMFSIntel(LAMMPS *lmp) : PairEAMIntel(lmp) @@ -116,99 +117,113 @@ void PairEAMFSIntel::read_file(char *filename) { Fs *file = fs; - // open potential file + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(lmp, filename, "EAM"); - int me = comm->me; - FILE *fptr; - char line[MAXLINE]; + try { + reader.skip_line(); + reader.skip_line(); + reader.skip_line(); - if (me == 0) { - fptr = force->open_potential(filename); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EAM potential file %s",filename); - error->one(FLERR,str); + // extract element names from nelements line + ValueTokenizer values = reader.next_values(1); + file->nelements = values.next_int(); + + if (values.count() != file->nelements + 1) + error->one(FLERR,"Incorrect element names in EAM potential file"); + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + const std::string word = values.next_string(); + const int n = word.length() + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i], word.c_str()); + } + + // + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + + for (int i = 0; i < file->nelements; i++) { + values = reader.next_values(2); + values.next_int(); // ignore + file->mass[i] = values.next_double(); + + reader.next_dvector(&file->frho[i][1], file->nrho); + + for (int j = 0; j < file->nelements; j++) { + reader.next_dvector(&file->rhor[i][j][1], file->nr); + } + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->z2r[i][j][1], file->nr); + } + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - // read and broadcast header - // extract element names from nelements line + // broadcast potential information + MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world); - int n; - if (me == 0) { - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - fgets(line,MAXLINE,fptr); - n = strlen(line) + 1; + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + // allocate memory on other procs + if (comm->me != 0) { + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr; + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - sscanf(line,"%d",&file->nelements); - int nwords = atom->count_words(line); - if (nwords != file->nelements + 1) - error->all(FLERR,"Incorrect element names in EAM potential file"); - - char **words = new char*[file->nelements+1]; - nwords = 0; - strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - file->elements = new char*[file->nelements]; + // broadcast file->elements string array for (int i = 0; i < file->nelements; i++) { - n = strlen(words[i]) + 1; - file->elements[i] = new char[n]; - strcpy(file->elements[i],words[i]); - } - delete [] words; - - if (me == 0) { - fgets(line,MAXLINE,fptr); - sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + int n; + if (comm->me == 0) n = strlen(file->elements[i]) + 1; + MPI_Bcast(&n, 1, MPI_INT, 0, world); + if (comm->me != 0) file->elements[i] = new char[n]; + MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world); } - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + // broadcast file->mass, frho, rhor + for (int i = 0; i < file->nelements; i++) { + MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world); - file->mass = new double[file->nelements]; - memory->create(file->frho,file->nelements,file->nrho+1, - "pair:frho"); - memory->create(file->rhor,file->nelements,file->nelements, - file->nr+1,"pair:rhor"); - memory->create(file->z2r,file->nelements,file->nelements, - file->nr+1,"pair:z2r"); - - int i,j,tmp; - for (i = 0; i < file->nelements; i++) { - if (me == 0) { - fgets(line,MAXLINE,fptr); - sscanf(line,"%d %lg",&tmp,&file->mass[i]); - } - MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); - MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); - - for (j = 0; j < file->nelements; j++) { - if (me == 0) grab(fptr,file->nr,&file->rhor[i][j][1]); - MPI_Bcast(&file->rhor[i][j][1],file->nr,MPI_DOUBLE,0,world); + for (int j = 0; j < file->nelements; j++) { + MPI_Bcast(&file->rhor[i][j][1], file->nr, MPI_DOUBLE, 0, world); } } - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); - MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); + // broadcast file->z2r + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world); } - - // close the potential file - - if (me == 0) fclose(fptr); + } } /* ---------------------------------------------------------------------- diff --git a/src/USER-INTEL/pair_eam_intel.cpp b/src/USER-INTEL/pair_eam_intel.cpp index 984823f07e..994f0d3910 100644 --- a/src/USER-INTEL/pair_eam_intel.cpp +++ b/src/USER-INTEL/pair_eam_intel.cpp @@ -711,6 +711,8 @@ void PairEAMIntel::pack_force_const(ForceConst &fc, if (type2rhor[i][j] >= 0) { const int joff = ioff + j * fc.rhor_jstride(); for (int k = 0; k < nr + 1; k++) { + if ((type2rhor[j][i] < 0) || (type2rhor[i][j] < 0)) + continue; if (type2rhor[j][i] != type2rhor[i][j]) _onetype = 0; else if (_onetype < 0) diff --git a/src/USER-MEAMC/pair_meamc.cpp b/src/USER-MEAMC/pair_meamc.cpp index c49b5abf0b..6cd8ec6136 100644 --- a/src/USER-MEAMC/pair_meamc.cpp +++ b/src/USER-MEAMC/pair_meamc.cpp @@ -28,6 +28,7 @@ #include "neigh_request.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -383,7 +384,7 @@ void PairMEAMC::read_files(char *globalfile, char *userfile) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - int nwords = atom->count_words(line); + int nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -396,7 +397,7 @@ void PairMEAMC::read_files(char *globalfile, char *userfile) break; } if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) @@ -561,7 +562,7 @@ void PairMEAMC::read_files(char *globalfile, char *userfile) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - if (atom->count_words(line) == 0) continue; + if (utils::count_words(line) == 0) continue; // params = ptrs to all fields in line diff --git a/src/USER-MESODPD/atom_vec_edpd.cpp b/src/USER-MESODPD/atom_vec_edpd.cpp index edc7a34331..d08a626fad 100644 --- a/src/USER-MESODPD/atom_vec_edpd.cpp +++ b/src/USER-MESODPD/atom_vec_edpd.cpp @@ -10,6 +10,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ + #include "atom_vec_edpd.h" #include #include "atom.h" @@ -28,817 +29,89 @@ using namespace LAMMPS_NS; AtomVecEDPD::AtomVecEDPD(LAMMPS *lmp) : AtomVec(lmp) { - if(strcmp(update->unit_style,"lj") != 0) - error->all(FLERR,"Atom style edpd requires lj units"); - molecular = 0; mass_type = 1; forceclearflag = 1; - comm_x_only = comm_f_only = 0; - comm->ghost_velocity = 1; - - size_forward = 3 + 5; // edpd_temp + vest[4] - size_reverse = 3 + 1; // edpd_flux - size_border = 6 + 6; // edpd_temp + edpd_cv + vest[4] - size_velocity = 3; - size_data_atom = 5 + 2; // we read id + type + edpd_temp + edpd_cv + xyz[3] - size_data_vel = 4; - xcol_data = 5; - atom->edpd_flag = 1; atom->vest_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "edpd_cv edpd_temp edpd_flux vest vest_temp"; + fields_copy = (char *) "edpd_cv edpd_temp edpd_flux vest vest_temp"; + fields_comm = (char *) "edpd_temp vest vest_temp"; + fields_comm_vel = (char *) "edpd_temp vest vest_temp"; + fields_reverse = (char *) "edpd_flux"; + fields_border = (char *) "edpd_cv edpd_temp vest vest_temp"; + fields_border_vel = (char *) "edpd_cv edpd_temp vest vest_temp"; + fields_exchange = (char *) "edpd_cv edpd_temp vest vest_temp"; + fields_restart = (char * ) "edpd_cv edpd_temp vest vest_temp"; + fields_create = (char *) "edpd_cv edpd_temp edpd_flux vest vest_temp"; + fields_data_atom = (char *) "id type edpd_temp edpd_cv x"; + fields_data_vel = (char *) "id v"; + + setup_fields(); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecEDPD::init() +{ + AtomVec::init(); + + if (strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style edpd requires lj units"); } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecEDPD::grow(int n) +void AtomVecEDPD::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - edpd_cv= memory->grow(atom->edpd_cv, nmax, "atom:edpd_cv"); - edpd_temp = memory->grow(atom->edpd_temp, nmax, "atom:edpd_temp"); - edpd_flux = memory->grow(atom->edpd_flux, nmax*comm->nthreads,"atom:edpd_flux"); - vest = memory->grow(atom->vest, nmax, 4, "atom:vest"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecEDPD::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - edpd_cv = atom->cv; edpd_temp = atom->edpd_temp; edpd_flux = atom->edpd_flux; + edpd_cv = atom->edpd_cv; + edpd_temp = atom->edpd_temp; + edpd_flux = atom->edpd_flux; vest = atom->vest; + vest_temp = atom->vest_temp; } /* ---------------------------------------------------------------------- - copy atom I info to atom J + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector ------------------------------------------------------------------------- */ -void AtomVecEDPD::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - edpd_temp[j] = edpd_temp[i]; - edpd_flux[j] = edpd_flux[i]; - edpd_cv[j] = edpd_cv[i]; - vest[j][0] = vest[i][0]; - vest[j][1] = vest[i][1]; - vest[j][2] = vest[i][2]; - vest[j][3] = vest[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - - void AtomVecEDPD::force_clear(int n, size_t nbytes) { memset(&edpd_flux[n],0,nbytes); } +/* ---------------------------------------------------------------------- + initialize non-zero atom quantities +------------------------------------------------------------------------- */ -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +void AtomVecEDPD::create_atom_post(int ilocal) { - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = edpd_temp[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = edpd_temp[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = edpd_temp[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = edpd_temp[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = edpd_temp[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEDPD::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - edpd_temp[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - vest[i][3] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEDPD::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - edpd_temp[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - vest[i][3] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = edpd_flux[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEDPD::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - edpd_flux[j] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = edpd_temp[j]; - buf[m++] = edpd_cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = edpd_temp[j]; - buf[m++] = edpd_cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = edpd_temp[j]; - buf[m++] = edpd_cv[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = edpd_temp[j]; - buf[m++] = edpd_cv[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = edpd_temp[j]; - buf[m++] = edpd_cv[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - buf[m++] = vest[j][0] + dvx; - buf[m++] = vest[j][1] + dvy; - buf[m++] = vest[j][2] + dvz; - buf[m++] = vest[j][3]; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEDPD::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - edpd_temp[i] = buf[m++]; - edpd_cv[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - vest[i][3] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEDPD::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - edpd_temp[i] = buf[m++]; - edpd_cv[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - vest[i][3] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); + edpd_temp[ilocal] = 1.0; + edpd_cv[ilocal]= 1.0e5; + vest_temp[ilocal] = edpd_temp[ilocal]; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecEDPD::pack_exchange(int i, double *buf) +void AtomVecEDPD::data_atom_post(int ilocal) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = edpd_temp[i]; - buf[m++] = edpd_cv[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - buf[m++] = vest[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - edpd_temp[nlocal] = buf[m++]; - edpd_cv[nlocal] = buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - vest[nlocal][3] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecEDPD::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = (11 + 6) * nlocal; // 11 + edpd_temp + edpd_cv + vest[4] - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = edpd_temp[i]; - buf[m++] = edpd_cv[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - buf[m++] = vest[i][3]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecEDPD::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - edpd_temp[nlocal] = buf[m++]; - edpd_cv[nlocal]= buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - vest[nlocal][3] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecEDPD::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - edpd_temp[nlocal] = 1.0; - edpd_flux[nlocal] = 0.0; - edpd_cv[nlocal]= 1.0E5; - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - vest[nlocal][3] = edpd_temp[nlocal]; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecEDPD::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - edpd_temp[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - edpd_cv[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - vest[nlocal][3] = edpd_temp[nlocal]; - edpd_flux[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecEDPD::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = edpd_temp[i]; - buf[i][3] = edpd_cv[i]; - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecEDPD::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i); -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecEDPD::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - if (atom->memcheck("edpd_temp")) bytes += memory->usage(edpd_temp,nmax); - if (atom->memcheck("edpd_flux")) bytes += memory->usage(edpd_flux,nmax*comm->nthreads); - if (atom->memcheck("edpd_cv")) bytes += memory->usage(edpd_cv,nmax); - if (atom->memcheck("vest")) bytes += memory->usage(vest,nmax,4); - - return bytes; + edpd_flux[ilocal] = 0.0; + vest[ilocal][0] = 0.0; + vest[ilocal][1] = 0.0; + vest[ilocal][2] = 0.0; + vest_temp[ilocal] = edpd_temp[ilocal]; } diff --git a/src/USER-MESODPD/atom_vec_edpd.h b/src/USER-MESODPD/atom_vec_edpd.h index 36a4cae97b..a69c44a035 100644 --- a/src/USER-MESODPD/atom_vec_edpd.h +++ b/src/USER-MESODPD/atom_vec_edpd.h @@ -27,39 +27,17 @@ namespace LAMMPS_NS { class AtomVecEDPD : public AtomVec { public: AtomVecEDPD(class LAMMPS *); - virtual ~AtomVecEDPD() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - void force_clear(int, size_t); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - void pack_data(double **); - void write_data(FILE *, int, double **); - bigint memory_usage(); + void init(); - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double **vest; // store intermediate velocity for using mvv integrator - double *edpd_temp,*edpd_flux,*edpd_cv; // temperature, heat flux, and heat capacity + void grow_pointers(); + void force_clear(int, size_t); + void create_atom_post(int); + void data_atom_post(int); + + private: + double *edpd_cv,*edpd_temp,*edpd_flux; + double **vest; + double *vest_temp; }; } diff --git a/src/USER-MESODPD/atom_vec_mdpd.cpp b/src/USER-MESODPD/atom_vec_mdpd.cpp index 4c9db36645..0acaaf6253 100644 --- a/src/USER-MESODPD/atom_vec_mdpd.cpp +++ b/src/USER-MESODPD/atom_vec_mdpd.cpp @@ -14,14 +14,8 @@ #include "atom_vec_mdpd.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" #include "update.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -29,865 +23,77 @@ using namespace LAMMPS_NS; AtomVecMDPD::AtomVecMDPD(LAMMPS *lmp) : AtomVec(lmp) { - if(strcmp(update->unit_style,"lj") != 0) - error->all(FLERR,"Atom style mdpd requires lj units"); - molecular = 0; mass_type = 1; forceclearflag = 1; - comm_x_only = comm_f_only = 0; - comm->ghost_velocity = 1; - - size_forward = 3 + 4; // 3 + rho + vest[3], that means we may only communicate 4 in hybrid - size_reverse = 3 + 1; // 3 + drho - size_border = 6 + 4; // 6 + rho + vest[3] - size_velocity = 3; - size_data_atom = 6; - size_data_vel = 4; - xcol_data = 4; - atom->rho_flag = 1; atom->vest_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "rho drho vest"; + fields_copy = (char *) "rho drho vest"; + fields_comm = (char *) "rho vest"; + fields_comm_vel = (char *) "rho vest"; + fields_reverse = (char *) "drho"; + fields_border = (char *) "rho vest"; + fields_border_vel = (char *) "rho vest"; + fields_exchange = (char *) "rho vest"; + fields_restart = (char * ) "rho vest"; + fields_create = (char *) "rho drho vest"; + fields_data_atom = (char *) "id type rho x"; + fields_data_vel = (char *) "id v"; + + setup_fields(); } -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n - ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- */ -void AtomVecMDPD::grow(int n) +void AtomVecMDPD::init() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); + AtomVec::init(); - tag = memory->grow(atom->tag, nmax, "atom:tag"); - type = memory->grow(atom->type, nmax, "atom:type"); - mask = memory->grow(atom->mask, nmax, "atom:mask"); - image = memory->grow(atom->image, nmax, "atom:image"); - x = memory->grow(atom->x, nmax, 3, "atom:x"); - v = memory->grow(atom->v, nmax, 3, "atom:v"); - f = memory->grow(atom->f, nmax*comm->nthreads, 3, "atom:f"); - - rho = memory->grow(atom->rho, nmax, "atom:rho"); - drho = memory->grow(atom->drho, nmax*comm->nthreads, "atom:drho"); - vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + if (strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style mdpd requires lj units"); } /* ---------------------------------------------------------------------- - reset local array ptrs - ------------------------------------------------------------------------- */ + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ -void AtomVecMDPD::grow_reset() { - tag = atom->tag; - type = atom->type; - mask = atom->mask; - image = atom->image; - x = atom->x; - v = atom->v; - f = atom->f; +void AtomVecMDPD::grow_pointers() +{ rho = atom->rho; drho = atom->drho; vest = atom->vest; } -/* ---------------------------------------------------------------------- */ - -void AtomVecMDPD::copy(int i, int j, int delflag) { - //printf("in AtomVecMDPD::copy\n"); - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - rho[j] = rho[i]; - drho[j] = drho[i]; - vest[j][0] = vest[i][0]; - vest[j][1] = vest[i][1]; - vest[j][2] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i, j,delflag); -} - -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector +------------------------------------------------------------------------- */ void AtomVecMDPD::force_clear(int n, size_t nbytes) { memset(&drho[n],0,nbytes); } -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_comm_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMDPD::pack_comm_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::unpack_comm_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_comm_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_border_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMDPD::pack_border_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::unpack_border_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_border_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_reverse_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMDPD::pack_reverse_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = drho[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::unpack_reverse_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMDPD::unpack_reverse_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - drho[j] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_comm(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMDPD::pack_comm\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; - dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; - dz = pbc[2] * domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_comm_vel(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMDPD::pack_comm_vel\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; - dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; - dz = pbc[2] * domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMDPD::unpack_comm(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_comm\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMDPD::unpack_comm_vel(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_comm_vel\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_reverse(int n, int first, double *buf) { - //printf("in AtomVecMDPD::pack_reverse\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = drho[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMDPD::unpack_reverse(int n, int *list, double *buf) { - //printf("in AtomVecMDPD::unpack_reverse\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - drho[j] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_border(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMDPD::pack_border\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_border_vel(int n, int *list, double *buf, int pbc_flag, - int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - dvx = pbc[0] * h_rate[0] + pbc[5] * h_rate[5] + pbc[4] * h_rate[4]; - dvy = pbc[1] * h_rate[1] + pbc[3] * h_rate[3]; - dvz = pbc[2] * h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - buf[m++] = rho[j]; - buf[m++] = vest[j][0] + dvx; - buf[m++] = vest[j][1] + dvy; - buf[m++] = vest[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMDPD::unpack_border(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_border\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) - grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMDPD::unpack_border_vel(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_border_vel\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) - grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them - ------------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_exchange(int i, double *buf) { - //printf("in AtomVecMDPD::pack_exchange\n"); - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = rho[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::unpack_exchange(double *buf) { - //printf("in AtomVecMDPD::unpack_exchange\n"); - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - rho[nlocal] = buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> unpack_exchange(nlocal, - &buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes - ------------------------------------------------------------------------- */ - -int AtomVecMDPD::size_restart() { - int i; - - int nlocal = atom->nlocal; - int n = 15 * nlocal; // 11 + rho + vest[3] - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive - ------------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_restart(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = rho[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - ------------------------------------------------------------------------- */ - -int AtomVecMDPD::unpack_restart(double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra, nmax, atom->nextra_store, "atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - rho[nlocal] = buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) - extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults - ------------------------------------------------------------------------- */ - -void AtomVecMDPD::create_atom(int itype, double *coord) { - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - rho[nlocal] = 0.0; - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - drho[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities - ------------------------------------------------------------------------- */ - -void AtomVecMDPD::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - rho[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - drho[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style - ------------------------------------------------------------------------- */ - -int AtomVecMDPD::data_atom_hybrid(int nlocal, char **values) -{ - rho[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecMDPD::pack_data(double **buf) +void AtomVecMDPD::data_atom_post(int ilocal) { - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = rho[i]; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_data_hybrid(int i, double *buf) -{ - buf[0] = rho[i]; - return 3; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecMDPD::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %-1.16e " - "%d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecMDPD::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e",buf[0]); - return 3; + drho[ilocal] = 0.0; + vest[ilocal][0] = 0.0; + vest[ilocal][1] = 0.0; + vest[ilocal][2] = 0.0; } /* ---------------------------------------------------------------------- @@ -912,8 +118,8 @@ void AtomVecMDPD::pack_property_atom(int index, double *buf, { int *mask = atom->mask; int nlocal = atom->nlocal; - int n = 0; + int n = 0; if (index == 0) { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = rho[i]; @@ -928,24 +134,3 @@ void AtomVecMDPD::pack_property_atom(int index, double *buf, } } } - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory - ------------------------------------------------------------------------- */ - -bigint AtomVecMDPD::memory_usage() { - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag, nmax); - if (atom->memcheck("type")) bytes += memory->usage(type, nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask, nmax); - if (atom->memcheck("image")) bytes += memory->usage(image, nmax); - if (atom->memcheck("x")) bytes += memory->usage(x, nmax, 3); - if (atom->memcheck("v")) bytes += memory->usage(v, nmax, 3); - if (atom->memcheck("f")) bytes += memory->usage(f, nmax*comm->nthreads, 3); - if (atom->memcheck("rho")) bytes += memory->usage(rho, nmax); - if (atom->memcheck("drho")) bytes += memory->usage(drho, nmax*comm->nthreads); - if (atom->memcheck("vest")) bytes += memory->usage(vest, nmax, 3); - - return bytes; -} diff --git a/src/USER-MESODPD/atom_vec_mdpd.h b/src/USER-MESODPD/atom_vec_mdpd.h index 9e9ffcdcf2..55f5e9bb2d 100644 --- a/src/USER-MESODPD/atom_vec_mdpd.h +++ b/src/USER-MESODPD/atom_vec_mdpd.h @@ -27,50 +27,17 @@ namespace LAMMPS_NS { class AtomVecMDPD : public AtomVec { public: AtomVecMDPD(class LAMMPS *); - ~AtomVecMDPD() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); + void init(); + + void grow_pointers(); void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_comm_hybrid(int, int *, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_border_hybrid(int, int *, double *); - int unpack_border_hybrid(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); + void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); - bigint memory_usage(); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *rho, *drho; - double **vest; // estimated velocity during force computation + double *rho,*drho; + double **vest; }; } diff --git a/src/USER-MESODPD/atom_vec_tdpd.cpp b/src/USER-MESODPD/atom_vec_tdpd.cpp index 74ac47066b..f50fe168d6 100644 --- a/src/USER-MESODPD/atom_vec_tdpd.cpp +++ b/src/USER-MESODPD/atom_vec_tdpd.cpp @@ -14,12 +14,7 @@ #include "atom_vec_tdpd.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" #include "update.h" -#include "memory.h" #include "error.h" #include "utils.h" @@ -29,29 +24,30 @@ using namespace LAMMPS_NS; AtomVecTDPD::AtomVecTDPD(LAMMPS *lmp) : AtomVec(lmp) { - if(strcmp(update->unit_style,"lj") != 0) - error->all(FLERR,"Atom style edpd requires lj units"); - molecular = 0; mass_type = 1; forceclearflag = 1; - comm_x_only = comm_f_only = 0; - comm->ghost_velocity = 1; - - cc_species = 0; // for now, reset in process_args() - - size_forward = 3 + cc_species + 3; //vest[3] - size_reverse = 3 + cc_species; - size_border = 6 + cc_species + 3; //vest[3] - size_velocity = 3; - // for data_atom, we read id + type + xyz[3] + cc[i] where i=1,cc_species - size_data_atom = 5 + cc_species; - size_data_vel = 4; - xcol_data = 3; - atom->tdpd_flag = 1; atom->vest_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "cc cc_flux vest"; + fields_copy = (char *) "cc vest"; + fields_comm = (char *) "cc vest"; + fields_comm_vel = (char *) "cc vest"; + fields_reverse = (char *) "cc_flux"; + fields_border = (char *) "cc vest"; + fields_border_vel = (char *) "cc vest"; + fields_exchange = (char *) "cc vest"; + fields_restart = (char * ) "cc vest"; + fields_create = (char *) "cc vest"; + fields_data_atom = (char *) "id type x cc"; + fields_data_vel = (char *) "id v"; } /* ---------------------------------------------------------------------- @@ -66,812 +62,54 @@ void AtomVecTDPD::process_args(int narg, char **arg) atom->cc_species = utils::inumeric(FLERR,arg[0],false,lmp); cc_species = atom->cc_species; - // reset sizes that depend on cc_species + atom->add_peratom_change_columns("cc",cc_species); + atom->add_peratom_change_columns("cc_flux",cc_species); - size_forward = 3 + cc_species + 3; - size_reverse = 3 + cc_species; - size_border = 6 + cc_species + 3; - size_data_atom = 5 + cc_species; + // delay setting up of fields until now + + setup_fields(); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTDPD::init() +{ + AtomVec::init(); + + if (strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style tdpd requires lj units"); } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecTDPD::grow(int n) +void AtomVecTDPD::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - cc = memory->grow(atom->cc,nmax*comm->nthreads,cc_species,"atom:cc"); - cc_flux = memory->grow(atom->cc_flux,nmax*comm->nthreads,cc_species, - "atom:cc_flux"); - vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecTDPD::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - cc = atom->cc; cc_flux = atom->cc_flux; + cc_flux = atom->cc_flux; vest = atom->vest; } + /* ---------------------------------------------------------------------- - copy atom I info to atom J + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector ------------------------------------------------------------------------- */ -void AtomVecTDPD::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - for(int k = 0; k < cc_species; k++) - cc[j][k] = cc[i][k]; - - vest[j][0] = vest[i][0]; - vest[j][1] = vest[i][1]; - vest[j][2] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - - void AtomVecTDPD::force_clear(int n, size_t nbytes) { memset(&cc_flux[n][0],0,cc_species*nbytes); } - -/* ---------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,k,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - - for(k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - - for(k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,k,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - for(k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - for(k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - for(k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTDPD::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - - for(int k = 0; k < cc_species; k++) - cc[i][k] = buf[m++]; - - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTDPD::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - for(int k = 0; k < cc_species; k++) - cc[i][k] = buf[m++]; - - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc_flux[i][k]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTDPD::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - for(int k = 0; k < cc_species; k++) - cc_flux[j][k] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTDPD::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - for(int k = 0; k < cc_species; k++) - cc[i][k] = buf[m++]; - - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTDPD::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - for(int k = 0; k < cc_species; k++) - cc[i][k] = buf[m++]; - - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecTDPD::pack_exchange(int i, double *buf) +void AtomVecTDPD::data_atom_post(int ilocal) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[i][k]; - - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTDPD::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - for(int k = 0; k < cc_species; k++) - cc[nlocal][k] = buf[m++]; - - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecTDPD::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = (11 + cc_species + 3) * nlocal; // 11 + cc[i] + vest[3] - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[i][k]; - - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecTDPD::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - for(int k = 0; k < cc_species; k++) - cc[nlocal][k] = buf[m++]; - - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecTDPD::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - for(int k = 0; k < cc_species; k++) - cc[nlocal][k] = 0.0; - - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecTDPD::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - for(int k = 0; k < cc_species; k++) - cc[nlocal][k] = utils::numeric(FLERR,values[5+k],true,lmp); - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecTDPD::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = x[i][0]; - buf[i][3] = x[i][1]; - buf[i][4] = x[i][2]; - buf[i][5] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][6] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - for(int k = 0; k < cc_species; k++) - buf[i][8+k] = cc[i][k]; - } -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecTDPD::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++){ - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %d %d %d", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4], - (int) ubuf(buf[i][5]).i,(int) ubuf(buf[i][6]).i, - (int) ubuf(buf[i][7]).i); - for(int k = 0; k < cc_species; k++) - fprintf(fp," %-1.16e",buf[i][8+k]); - fprintf(fp,"\n"); - } -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecTDPD::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - if (atom->memcheck("cc")) bytes += memory->usage(cc,nmax*comm->nthreads,cc_species); - if (atom->memcheck("cc_flux")) bytes += memory->usage(cc_flux,nmax*comm->nthreads,cc_species); - if (atom->memcheck("vest")) bytes += memory->usage(vest, nmax); - - return bytes; + atom->vest[ilocal][0] = 0.0; + atom->vest[ilocal][1] = 0.0; + atom->vest[ilocal][2] = 0.0; } diff --git a/src/USER-MESODPD/atom_vec_tdpd.h b/src/USER-MESODPD/atom_vec_tdpd.h index 86e9ae4bb8..971696cc5c 100644 --- a/src/USER-MESODPD/atom_vec_tdpd.h +++ b/src/USER-MESODPD/atom_vec_tdpd.h @@ -27,40 +27,17 @@ namespace LAMMPS_NS { class AtomVecTDPD : public AtomVec { public: AtomVecTDPD(class LAMMPS *); - virtual ~AtomVecTDPD() {} void process_args(int, char **); - void grow(int); - void grow_reset(); - void copy(int, int, int); + void init(); + + void grow_pointers(); void force_clear(int, size_t); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - void pack_data(double **); - void write_data(FILE *, int, double **); - bigint memory_usage(); + void data_atom_post(int); protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double **vest; // store intermediate velocity for using mvv integrator - double **cc,**cc_flux; + double **cc_flux; + double **vest; + int cc_species; }; diff --git a/src/USER-MESODPD/fix_mvv_edpd.cpp b/src/USER-MESODPD/fix_mvv_edpd.cpp index bd9cd9cc2a..3294d8d682 100644 --- a/src/USER-MESODPD/fix_mvv_edpd.cpp +++ b/src/USER-MESODPD/fix_mvv_edpd.cpp @@ -88,6 +88,7 @@ void FixMvvEDPD::initial_integrate(int /*vflag*/) double *edpd_flux = atom->edpd_flux; double *edpd_cv = atom->edpd_cv; double **vest = atom->vest; + double *vest_temp = atom->vest_temp; double *rmass = atom->rmass; double *mass = atom->mass; int *type = atom->type; @@ -105,7 +106,7 @@ void FixMvvEDPD::initial_integrate(int /*vflag*/) vest[i][0] = v[i][0] + dtfm * f[i][0]; vest[i][1] = v[i][1] + dtfm * f[i][1]; vest[i][2] = v[i][2] + dtfm * f[i][2]; - vest[i][3] = edpd_temp[i] + dtT * edpd_flux[i]; + vest_temp[i] = edpd_temp[i] + dtT * edpd_flux[i]; x[i][0] += dtv * vest[i][0]; x[i][1] += dtv * vest[i][1]; @@ -131,6 +132,7 @@ void FixMvvEDPD::final_integrate() double *edpd_flux = atom->edpd_flux; double *edpd_cv = atom->edpd_cv; double **vest = atom->vest; + double *vest_temp = atom->vest_temp; double *rmass = atom->rmass; double *mass = atom->mass; int *type = atom->type; @@ -148,7 +150,7 @@ void FixMvvEDPD::final_integrate() v[i][0] = vest[i][0] + dtfm * f[i][0]; v[i][1] = vest[i][1] + dtfm * f[i][1]; v[i][2] = vest[i][2] + dtfm * f[i][2]; - edpd_temp[i] = vest[i][3] + dtT * edpd_flux[i]; + edpd_temp[i] = vest_temp[i] + dtT * edpd_flux[i]; } } diff --git a/src/USER-MISC/README b/src/USER-MISC/README index 27b6efb518..950ef3845d 100644 --- a/src/USER-MISC/README +++ b/src/USER-MISC/README @@ -60,6 +60,7 @@ fix imd, Axel Kohlmeyer, akohlmey at gmail.com, 9 Nov 2009 fix ipi, Michele Ceriotti (EPFL Lausanne), michele.ceriotti at gmail.com, 24 Nov 2014 fix npt/cauchy, R. E. Miller (Carleton University), F. Pavia and S. Pattamatta, 12 Jan 2020 fix nvk, Efrem Braun (UC Berkeley), efrem.braun at gmail.com, https://github.com/lammps/lammps/pull/310 +fix orient/eco Adrian A. Schratt and Volker Mohles (Ruhr-Uni Bochum), volker.mohles at rub.de, 6 Jun 2020 fix pimd, Yuxing Peng (U Chicago), yuxing at uchicago.edu, 24 Nov 2014 fix propel/self, Stefan Paquay (Brandeis U), stefanpaquay at gmail.com, 20 Jan 2020 fix rhok, Ulf Pedersen (Roskilde U), ulf at urp.dk, 25 Sep 2017 diff --git a/src/USER-MISC/compute_viscosity_cos.cpp b/src/USER-MISC/compute_viscosity_cos.cpp index 64103d2653..7311f991cc 100644 --- a/src/USER-MISC/compute_viscosity_cos.cpp +++ b/src/USER-MISC/compute_viscosity_cos.cpp @@ -256,7 +256,7 @@ void ComputeViscosityCos::remove_bias_all() { assume remove_bias() was previously called ------------------------------------------------------------------------- */ -void ComputeViscosityCos::restore_bias(int i, double *v) { +void ComputeViscosityCos::restore_bias(int /* i */, double *v) { v[0] += vbias[0]; v[1] += vbias[1]; v[2] += vbias[2]; @@ -267,7 +267,7 @@ void ComputeViscosityCos::restore_bias(int i, double *v) { assume remove_bias_thr() was previously called with the same buffer b ------------------------------------------------------------------------- */ -void ComputeViscosityCos::restore_bias_thr(int i, double *v, double *b) { +void ComputeViscosityCos::restore_bias_thr(int /* i */, double *v, double *b) { v[0] += b[0]; v[1] += b[1]; v[2] += b[2]; diff --git a/src/USER-MISC/dihedral_nharmonic.cpp b/src/USER-MISC/dihedral_nharmonic.cpp index 238c17d812..81010a040e 100644 --- a/src/USER-MISC/dihedral_nharmonic.cpp +++ b/src/USER-MISC/dihedral_nharmonic.cpp @@ -47,7 +47,7 @@ DihedralNHarmonic::~DihedralNHarmonic() if (allocated) { memory->destroy(setflag); for (int i = 1; i <= atom->ndihedraltypes; i++) - delete [] a[i]; + if ( a[i] ) delete [] a[i]; delete [] a; delete [] nterms; } @@ -263,6 +263,7 @@ void DihedralNHarmonic::allocate() nterms = new int[n+1]; a = new double *[n+1]; + for (int i = 1; i <= n; i++) a[i] = 0; memory->create(setflag,n+1,"dihedral:setflag"); for (int i = 1; i <= n; i++) setflag[i] = 0; diff --git a/src/USER-MISC/dihedral_table.cpp b/src/USER-MISC/dihedral_table.cpp index 7478f70aa9..9fd3679106 100644 --- a/src/USER-MISC/dihedral_table.cpp +++ b/src/USER-MISC/dihedral_table.cpp @@ -36,6 +36,9 @@ #include "utils.h" #include "dihedral_table.h" #include "utils.h" +#include "tokenizer.h" +#include "table_file_reader.h" +#include "fmt/format.h" #include "math_const.h" #include "math_extra.h" @@ -458,8 +461,7 @@ static double Phi(double const *x1, //array holding x,y,z coords atom 1 DihedralTable::DihedralTable(LAMMPS *lmp) : Dihedral(lmp) { ntables = 0; - tables = NULL; - checkU_fname = checkF_fname = NULL; + tables = nullptr; } /* ---------------------------------------------------------------------- */ @@ -468,8 +470,6 @@ DihedralTable::~DihedralTable() { for (int m = 0; m < ntables; m++) free_table(&tables[m]); memory->sfree(tables); - memory->sfree(checkU_fname); - memory->sfree(checkF_fname); if (allocated) { memory->destroy(setflag); @@ -832,13 +832,13 @@ void DihedralTable::coeff(int narg, char **arg) string err_msg; err_msg = string("Invalid dihedral table length (") + string(arg[2]) + string(")."); - error->one(FLERR,err_msg.c_str()); + error->one(FLERR,err_msg); } else if ((tb->ninput == 2) && (tabstyle == SPLINE)) { string err_msg; err_msg = string("Invalid dihedral spline table length. (Try linear)\n (") + string(arg[2]) + string(")."); - error->one(FLERR,err_msg.c_str()); + error->one(FLERR,err_msg); } // check for monotonicity @@ -851,7 +851,7 @@ void DihedralTable::coeff(int narg, char **arg) string(arg[2]) + string(", ")+i_str.str()+string("th entry)"); if (i==0) err_msg += string("\n(This is probably a mistake with your table format.)\n"); - error->all(FLERR,err_msg.c_str()); + error->all(FLERR,err_msg); } } @@ -863,7 +863,7 @@ void DihedralTable::coeff(int narg, char **arg) string err_msg; err_msg = string("Dihedral table angle range must be < 360 degrees (") +string(arg[2]) + string(")."); - error->all(FLERR,err_msg.c_str()); + error->all(FLERR,err_msg); } } else { @@ -871,7 +871,7 @@ void DihedralTable::coeff(int narg, char **arg) string err_msg; err_msg = string("Dihedral table angle range must be < 2*PI radians (") + string(arg[2]) + string(")."); - error->all(FLERR,err_msg.c_str()); + error->all(FLERR,err_msg); } } @@ -940,7 +940,7 @@ void DihedralTable::coeff(int narg, char **arg) // Optional: allow the user to print out the interpolated spline tables if (me == 0) { - if (checkU_fname && (strlen(checkU_fname) != 0)) + if (!checkU_fname.empty()) { ofstream checkU_file; checkU_file.open(checkU_fname, ios::out); @@ -953,7 +953,7 @@ void DihedralTable::coeff(int narg, char **arg) } checkU_file.close(); } - if (checkF_fname && (strlen(checkF_fname) != 0)) + if (!checkF_fname.empty()) { ofstream checkF_file; checkF_file.open(checkF_fname, ios::out); @@ -1084,42 +1084,21 @@ void DihedralTable::free_table(Table *tb) /* ---------------------------------------------------------------------- read table file, only called by proc 0 ------------------------------------------------------------------------- */ -static const int MAXLINE=2048; void DihedralTable::read_table(Table *tb, char *file, char *keyword) { - char line[MAXLINE]; + TableFileReader reader(lmp, file, "dihedral"); - // open file + char * line = reader.find_section_start(keyword); - FILE *fp = force->open_potential(file); - if (fp == NULL) { - string err_msg = string("Cannot open file ") + string(file); - error->one(FLERR,err_msg.c_str()); + if (!line) { + error->one(FLERR,"Did not find keyword in table file"); } - // loop until section found with matching keyword - - while (1) { - if (fgets(line,MAXLINE,fp) == NULL) { - string err_msg=string("Did not find keyword \"") - +string(keyword)+string("\" in dihedral table file."); - error->one(FLERR, err_msg.c_str()); - } - if (strspn(line," \t\n\r") == strlen(line)) continue; // blank line - if (line[0] == '#') continue; // comment - char *word = strtok(line," \t\n\r"); - if (strcmp(word,keyword) == 0) break; // matching keyword - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); // no match, skip section - param_extract(tb,line); - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - for (int i = 0; i < tb->ninput; i++) - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - } // read args on 2nd line of section // allocate table arrays for file values - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); + line = reader.next_line(); param_extract(tb,line); memory->create(tb->phifile,tb->ninput,"dihedral:phifile"); memory->create(tb->efile,tb->ninput,"dihedral:efile"); @@ -1127,41 +1106,24 @@ void DihedralTable::read_table(Table *tb, char *file, char *keyword) // read a,e,f table values from file - int itmp; for (int i = 0; i < tb->ninput; i++) { - utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - - // Skip blank lines and delete text following a '#' character - char *pe = strchr(line, '#'); - if (pe != NULL) *pe = '\0'; //terminate string at '#' character - char *pc = line; - while ((*pc != '\0') && isspace(*pc)) - pc++; - if (*pc != '\0') { //If line is not a blank line - stringstream line_ss(line); + try { if (tb->f_unspecified) { - line_ss >> itmp; - line_ss >> tb->phifile[i]; - line_ss >> tb->efile[i]; + ValueTokenizer values = reader.next_values(3); + values.next_int(); + tb->phifile[i] = values.next_double(); + tb->efile[i] = values.next_double(); } else { - line_ss >> itmp; - line_ss >> tb->phifile[i]; - line_ss >> tb->efile[i]; - line_ss >> tb->ffile[i]; + ValueTokenizer values = reader.next_values(4); + values.next_int(); + tb->phifile[i] = values.next_double(); + tb->efile[i] = values.next_double(); + tb->ffile[i] = values.next_double(); } - if (! line_ss) { - stringstream err_msg; - err_msg << "Read error in table "<< keyword<<", near line "<f_unspecified) && (i==0)) - err_msg << "\n (This sometimes occurs if users forget to specify the \"NOF\" option.)\n"; - error->one(FLERR, err_msg.str().c_str()); - } - } else //if it is a blank line, then skip it. - i--; + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); + } } //for (int i = 0; (i < tb->ninput) && fp; i++) { - - fclose(fp); } /* ---------------------------------------------------------------------- @@ -1252,7 +1214,7 @@ void DihedralTable::spline_table(Table *tb) if ((num_disagreements > tb->ninput/2) && (num_disagreements > 2)) { string msg("Dihedral table has inconsistent forces and energies. (Try \"NOF\".)\n"); - error->all(FLERR,msg.c_str()); + error->all(FLERR, msg); } } // check for consistency if (! tb->f_unspecified) @@ -1353,44 +1315,40 @@ void DihedralTable::param_extract(Table *tb, char *line) tb->f_unspecified = false; //default tb->use_degrees = true; //default - char *word = strtok(line," \t\n\r\f"); - while (word) { - if (strcmp(word,"N") == 0) { - word = strtok(NULL," \t\n\r\f"); - tb->ninput = atoi(word); + try { + ValueTokenizer values(line); + + while (values.has_next()) { + std::string word = values.next_string(); + if (word == "N") { + tb->ninput = values.next_int(); + } + else if (word == "NOF") { + tb->f_unspecified = true; + } + else if ((word == "DEGREES") || (word == "degrees")) { + tb->use_degrees = true; + } + else if ((word == "RADIANS") || (word == "radians")) { + tb->use_degrees = false; + } + else if (word == "CHECKU") { + checkU_fname = values.next_string(); + } + else if (word == "CHECKF") { + checkF_fname = values.next_string(); + } + // COMMENTING OUT: equilibrium angles are not supported + //else if (word == "EQ") { + // tb->theta0 = values.next_double(); + //} + else { + string err_msg = fmt::format("Invalid keyword in dihedral angle table parameters ({})", word); + error->one(FLERR,err_msg); + } } - else if (strcmp(word,"NOF") == 0) { - tb->f_unspecified = true; - } - else if ((strcmp(word,"DEGREES") == 0) || (strcmp(word,"degrees") == 0)) { - tb->use_degrees = true; - } - else if ((strcmp(word,"RADIANS") == 0) || (strcmp(word,"radians") == 0)) { - tb->use_degrees = false; - } - else if (strcmp(word,"CHECKU") == 0) { - word = strtok(NULL," \t\n\r\f"); - memory->sfree(checkU_fname); - memory->create(checkU_fname,strlen(word)+1,"dihedral_table:checkU"); - strcpy(checkU_fname, word); - } - else if (strcmp(word,"CHECKF") == 0) { - word = strtok(NULL," \t\n\r\f"); - memory->sfree(checkF_fname); - memory->create(checkF_fname,strlen(word)+1,"dihedral_table:checkF"); - strcpy(checkF_fname, word); - } - // COMMENTING OUT: equilibrium angles are not supported - //else if (strcmp(word,"EQ") == 0) { - // word = strtok(NULL," \t\n\r\f"); - // tb->theta0 = atof(word); - //} - else { - string err_msg("Invalid keyword in dihedral angle table parameters"); - err_msg += string(" (") + string(word) + string(")"); - error->one(FLERR,err_msg.c_str()); - } - word = strtok(NULL," \t\n\r\f"); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } if (tb->ninput == 0) diff --git a/src/USER-MISC/dihedral_table.h b/src/USER-MISC/dihedral_table.h index a7b8417b48..8a397b20f2 100644 --- a/src/USER-MISC/dihedral_table.h +++ b/src/USER-MISC/dihedral_table.h @@ -24,6 +24,7 @@ DihedralStyle(table,DihedralTable) #ifndef LMP_DIHEDRAL_TABLE_H #define LMP_DIHEDRAL_TABLE_H #include "dihedral.h" +#include namespace LAMMPS_NS { @@ -43,8 +44,8 @@ class DihedralTable : public Dihedral { protected: int tabstyle,tablength; // double *phi0; <- equilibrium angles not supported - char *checkU_fname; - char *checkF_fname; + std::string checkU_fname; + std::string checkF_fname; struct Table { int ninput; diff --git a/src/USER-MISC/dihedral_table_cut.cpp b/src/USER-MISC/dihedral_table_cut.cpp index 194c25f536..e2283633bc 100644 --- a/src/USER-MISC/dihedral_table_cut.cpp +++ b/src/USER-MISC/dihedral_table_cut.cpp @@ -824,13 +824,13 @@ void DihedralTableCut::coeff(int narg, char **arg) string err_msg; err_msg = string("Invalid dihedral table length (") + string(arg[5]) + string(")."); - error->one(FLERR,err_msg.c_str()); + error->one(FLERR,err_msg); } else if ((tb->ninput == 2) && (tabstyle == SPLINE)) { string err_msg; err_msg = string("Invalid dihedral spline table length. (Try linear)\n (") + string(arg[5]) + string(")."); - error->one(FLERR,err_msg.c_str()); + error->one(FLERR,err_msg); } // check for monotonicity @@ -843,7 +843,7 @@ void DihedralTableCut::coeff(int narg, char **arg) string(arg[5]) + string(", ")+i_str.str()+string("th entry)"); if (i==0) err_msg += string("\n(This is probably a mistake with your table format.)\n"); - error->all(FLERR,err_msg.c_str()); + error->all(FLERR,err_msg); } } @@ -855,7 +855,7 @@ void DihedralTableCut::coeff(int narg, char **arg) string err_msg; err_msg = string("Dihedral table angle range must be < 360 degrees (") +string(arg[5]) + string(")."); - error->all(FLERR,err_msg.c_str()); + error->all(FLERR,err_msg); } } else { @@ -863,7 +863,7 @@ void DihedralTableCut::coeff(int narg, char **arg) string err_msg; err_msg = string("Dihedral table angle range must be < 2*PI radians (") + string(arg[5]) + string(")."); - error->all(FLERR,err_msg.c_str()); + error->all(FLERR,err_msg); } } @@ -1081,7 +1081,7 @@ void DihedralTableCut::read_table(Table *tb, char *file, char *keyword) FILE *fp = force->open_potential(file); if (fp == NULL) { string err_msg = string("Cannot open file ") + string(file); - error->one(FLERR,err_msg.c_str()); + error->one(FLERR,err_msg); } // loop until section found with matching keyword @@ -1090,7 +1090,7 @@ void DihedralTableCut::read_table(Table *tb, char *file, char *keyword) if (fgets(line,MAXLINE,fp) == NULL) { string err_msg=string("Did not find keyword \"") +string(keyword)+string("\" in dihedral table file."); - error->one(FLERR, err_msg.c_str()); + error->one(FLERR, err_msg); } if (strspn(line," \t\n\r") == strlen(line)) continue; // blank line if (line[0] == '#') continue; // comment @@ -1376,7 +1376,7 @@ void DihedralTableCut::param_extract(Table *tb, char *line) else { string err_msg("Invalid keyword in dihedral angle table parameters"); err_msg += string(" (") + string(word) + string(")"); - error->one(FLERR,err_msg.c_str()); + error->one(FLERR, err_msg); } word = strtok(NULL," \t\n\r\f"); } diff --git a/src/USER-MISC/fix_accelerate_cos.cpp b/src/USER-MISC/fix_accelerate_cos.cpp index 0d3b66d3f5..88e33023fd 100644 --- a/src/USER-MISC/fix_accelerate_cos.cpp +++ b/src/USER-MISC/fix_accelerate_cos.cpp @@ -58,7 +58,7 @@ void FixAccelerateCos::setup(int vflag) { /* ---------------------------------------------------------------------- */ -void FixAccelerateCos::post_force(int vflag) { +void FixAccelerateCos::post_force(int /* vflag */) { double **x = atom->x; double **f = atom->f; int *type = atom->type; diff --git a/src/USER-MISC/fix_gle.cpp b/src/USER-MISC/fix_gle.cpp index b8bdc66d08..a1cf1ac2e9 100644 --- a/src/USER-MISC/fix_gle.cpp +++ b/src/USER-MISC/fix_gle.cpp @@ -29,6 +29,7 @@ #include "random_mars.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -251,7 +252,7 @@ FixGLE::FixGLE(LAMMPS *lmp, int narg, char **arg) : if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; ptr = strtok(line," \t\n\r\f"); @@ -323,7 +324,7 @@ FixGLE::FixGLE(LAMMPS *lmp, int narg, char **arg) : if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; ptr = strtok(line," \t\n\r\f"); diff --git a/src/USER-MISC/fix_orient_eco.cpp b/src/USER-MISC/fix_orient_eco.cpp new file mode 100644 index 0000000000..add32e7215 --- /dev/null +++ b/src/USER-MISC/fix_orient_eco.cpp @@ -0,0 +1,586 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratdir_veces + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. + ------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: Adrian A. Schratt and Volker Mohles (ICAMS) +------------------------------------------------------------------------- */ + +#include "fix_orient_eco.h" +#include +#include +#include +#include "atom.h" +#include "citeme.h" +#include "comm.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "math_const.h" +#include "memory.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "pair.h" +#include "respa.h" +#include "update.h" +#include "utils.h" +#include "fmt/format.h" + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathConst; + +static const char cite_fix_orient_eco[] = + "fix orient/eco command:\n\n" + "@Article{Schratt20,\n" + " author = {A. A. Schratt, V. Mohles},\n" + " title = {Efficient calculation of the ECO driving force for atomistic simulations of grain boundary motion},\n" + " journal = {Computational Materials Science},\n" + " volume = {182},\n" + " year = {2020},\n" + " pages = {109774},\n" + " doi = {j.commatsci.2020.109774},\n" + " url = {https://doi.org/10.1016/j.commatsci.2020.109774}\n" + "}\n\n"; + +struct FixOrientECO::Nbr { + double duchi; // potential derivative + double real_phi[2][3]; // real part of wave function + double imag_phi[2][3]; // imaginary part of wave function +}; + +/* ---------------------------------------------------------------------- */ + +FixOrientECO::FixOrientECO(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), + dir_filename(NULL), order(NULL), nbr(NULL), list(NULL) +{ + if (lmp->citeme) lmp->citeme->add(cite_fix_orient_eco); + + // get rank of this processor + MPI_Comm_rank(world, &me); + + // check for illegal command + if (narg != 7) error->all(FLERR, "Illegal fix orient/eco command"); + + // set fix flags + scalar_flag = 1; // computes scalar + global_freq = 1; // values can be computed at every timestep + extscalar = 1; // scalar scales with # of atoms + peratom_flag = 1; // quantities are per atom quantities + size_peratom_cols = 2; // # of per atom quantities + peratom_freq = 1; // + + // parse input parameters + u_0 = force->numeric(FLERR, arg[3]); + sign = (u_0 >= 0.0 ? 1 : -1); + eta = force->numeric(FLERR, arg[4]); + r_cut = force->numeric(FLERR, arg[5]); + + // read reference orientations from file + // work on rank 0 only + int n = strlen(arg[6]) + 1; + dir_filename = new char[n]; + strcpy(dir_filename, arg[6]); + if (me == 0) { + char line[IMGMAX]; + char *result; + int count; + + FILE *infile = force->open_potential(dir_filename); + if (infile == NULL) + error->one(FLERR,fmt::format("Cannot open fix orient/eco file {}: {}", + dir_filename, utils::getsyserror())); + for (int i = 0; i < 6; ++i) { + result = fgets(line, IMGMAX, infile); + if (!result) error->one(FLERR, "Fix orient/eco file read failed"); + count = sscanf(line, "%lg %lg %lg", &dir_vec[i][0], &dir_vec[i][1], &dir_vec[i][2]); + if (count != 3) error->one(FLERR, "Fix orient/eco file read failed"); + } + fclose(infile); + + // calculate reciprocal lattice vectors + get_reciprocal(); + + squared_cutoff = r_cut * r_cut; + inv_squared_cutoff = 1.0 / squared_cutoff; + half_u = 0.5 * u_0; + inv_eta = 1.0 / eta; + } + + // initializations + MPI_Bcast(&dir_vec[0][0], 18, MPI_DOUBLE, 0, world); // communicate direct lattice vectors + MPI_Bcast(&reciprocal_vectors[0][0][0], 18, MPI_DOUBLE, 0, world); // communicate reciprocal vectors + MPI_Bcast(&squared_cutoff, 1, MPI_DOUBLE, 0, world); // communicate squared cutoff radius + MPI_Bcast(&inv_squared_cutoff, 1, MPI_DOUBLE, 0, world); // communicate inverse squared cutoff radius + MPI_Bcast(&half_u, 1, MPI_DOUBLE, 0, world); // communicate half potential energy + MPI_Bcast(&inv_eta, 1, MPI_DOUBLE, 0, world); // communicate inverse threshold + + // set comm size needed by this Fix + if (u_0 != 0) comm_forward = sizeof(Nbr) / sizeof(double); + + added_energy = 0.0; // initial energy + + nmax = atom->nmax; + nbr = (Nbr *) memory->smalloc(nmax * sizeof(Nbr), "orient/eco:nbr"); + memory->create(order, nmax, 2, "orient/eco:order"); + array_atom = order; + + // zero the array since a variable may access it before first run + for (int i = 0; i < atom->nlocal; ++i) order[i][0] = order[i][1] = 0.0; +} + +/* ---------------------------------------------------------------------- */ + +FixOrientECO::~FixOrientECO() { + memory->destroy(order); + memory->sfree(nbr); + delete[] dir_filename; +} + +/* ---------------------------------------------------------------------- */ + +int FixOrientECO::setmask() { + int mask = 0; + mask |= POST_FORCE; + mask |= THERMO_ENERGY; + mask |= POST_FORCE_RESPA; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixOrientECO::init() { + // get this processors rank + MPI_Comm_rank(world, &me); + + // compute normalization factor + int neigh = get_norm(); + if (me == 0) { + utils::logmesg(lmp,fmt::format(" fix orient/eco: cutoff={} norm_fac={} " + "neighbors={}\n", r_cut, norm_fac, neigh)); + } + + inv_norm_fac = 1.0 / norm_fac; + + // check parameters + if (r_cut > force->pair->cutforce) { + error->all(FLERR, "Cutoff radius used by fix orient/eco must be smaller than force cutoff"); + } + + // communicate normalization factor + MPI_Bcast(&norm_fac, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&inv_norm_fac, 1, MPI_DOUBLE, 0, world); + + if (strstr(update->integrate_style, "respa")) { + ilevel_respa = ((Respa *) update->integrate)->nlevels - 1; + if (respa_level >= 0) ilevel_respa = MIN(respa_level, ilevel_respa); + } + + // need a full neighbor list + // perpetual list, built whenever re-neighboring occurs + + int irequest = neighbor->request(this, instance_me); + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->fix = 1; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; +} + +/* ---------------------------------------------------------------------- */ + +void FixOrientECO::init_list(int /* id */, NeighList *ptr) { + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void FixOrientECO::setup(int vflag) { + if (strstr(update->integrate_style, "verlet")) + post_force(vflag); + else { + ((Respa *) update->integrate)->copy_flevel_f(ilevel_respa); + post_force_respa(vflag,ilevel_respa, 0); + ((Respa *) update->integrate)->copy_f_flevel(ilevel_respa); + } +} + +/* ---------------------------------------------------------------------- */ + +void FixOrientECO::post_force(int /* vflag */) { + // set local variables + int ii, i, jj, j; // loop variables and atom IDs + int k; // variable to loop over 3 reciprocal directions + int lambda; // variable to loop over 2 crystals + int dim; // variable to loop over 3 spatial components + double dx, dy, dz; // stores current interatomic vector + double squared_distance; // stores current squared distance + double chi; // stores current order parameter + double weight; // stores current weight function + double scalar_product; // stores current scalar product + double omega; // phase of sine transition + double omega_pre = MY_PI2 * inv_eta; // prefactor for omega + double duchi_pre = half_u * MY_PI * inv_eta * inv_norm_fac; // prefactor for duchi + double sin_om; // stores the value of the sine transition + + // initialize added energy at this step + added_energy = 0.0; + + // set local pointers and neighbor lists + double **x = atom->x; + double **f = atom->f; + int *mask = atom->mask; + int nall = atom->nlocal + atom->nghost; + + int inum = list->inum; + int jnum; + int *ilist = list->ilist; + int *jlist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // insure nbr and order data structures are adequate size + if (nall > nmax) { + nmax = nall; + memory->destroy(nbr); + memory->destroy(order); + nbr = (Nbr *) memory->smalloc(nmax * sizeof(Nbr), "orient/eco:nbr"); + memory->create(order, nmax, 2, "orient/eco:order"); + array_atom = order; + } + + // loop over owned atoms and compute order parameter + for (ii = 0; ii < inum; ++ii) { + i = ilist[ii]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // initializations + chi = 0.0; + for (k = 0; k < 3; ++k) { + nbr[i].real_phi[0][k] = nbr[i].real_phi[1][k] = 0.0; + nbr[i].imag_phi[0][k] = nbr[i].imag_phi[1][k] = 0.0; + } + + // loop over all neighbors of atom i + for (jj = 0; jj < jnum; ++jj) { + j = jlist[jj]; + j &= NEIGHMASK; + + // vector difference + dx = x[i][0] - x[j][0]; + dy = x[i][1] - x[j][1]; + dz = x[i][2] - x[j][2]; + squared_distance = dx * dx + dy * dy + dz * dz; + + if (squared_distance < squared_cutoff) { + squared_distance *= inv_squared_cutoff; + weight = squared_distance * (squared_distance - 2.0) + 1.0; + + for (lambda = 0; lambda < 2; ++lambda) { + for (k = 0; k < 3; ++k) { + scalar_product = reciprocal_vectors[lambda][k][0] * dx + reciprocal_vectors[lambda][k][1] * dy + reciprocal_vectors[lambda][k][2] * dz; + nbr[i].real_phi[lambda][k] += weight * cos(scalar_product); + nbr[i].imag_phi[lambda][k] += weight * sin(scalar_product); + } + } + } + } + + // collect contributions + for (k = 0; k < 3; ++k) { + chi += (nbr[i].real_phi[0][k] * nbr[i].real_phi[0][k] + nbr[i].imag_phi[0][k] * nbr[i].imag_phi[0][k] - + nbr[i].real_phi[1][k] * nbr[i].real_phi[1][k] - nbr[i].imag_phi[1][k] * nbr[i].imag_phi[1][k]); + } + chi *= inv_norm_fac; + order[i][0] = chi; + + // compute normalized order parameter + // and potential energy + if (chi > eta) { + added_energy += half_u; + nbr[i].duchi = 0.0; + order[i][1] = sign; + } else if (chi < -eta) { + added_energy -= half_u; + nbr[i].duchi = 0.0; + order[i][1] = -sign; + } else { + omega = omega_pre * chi; + sin_om = sin(omega); + + added_energy += half_u * sin_om; + nbr[i].duchi = duchi_pre * cos(omega); + order[i][1] = sign * sin_om; + } + + // compute product with potential derivative + for (k = 0; k < 3; ++k) { + for (lambda = 0; lambda < 2; ++lambda) { + nbr[i].real_phi[lambda][k] *= nbr[i].duchi; + nbr[i].imag_phi[lambda][k] *= nbr[i].duchi; + } + } + } + + // set additional local variables + double gradient_ii_cos[2][3][3]; // gradient ii cosine term + double gradient_ii_sin[2][3][3]; // gradient ii sine term + double gradient_ij_vec[2][3][3]; // gradient ij vector term + double gradient_ij_sca[2][3]; // gradient ij scalar term + double weight_gradient_prefactor; // gradient prefactor + double weight_gradient[3]; // gradient of weight + double cos_scalar_product; // cosine of scalar product + double sin_scalar_product; // sine of scalar product + double gcos_scalar_product; // gradient weight function * cosine of scalar product + double gsin_scalar_product; // gradient weight function * sine of scalar product + + // compute force only if synthetic + // potential is not zero + if (u_0 != 0.0) { + // communicate to acquire nbr data for ghost atoms + comm->forward_comm_fix(this); + + // loop over all atoms + for (ii = 0; ii < inum; ++ii) { + i = ilist[ii]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + const bool no_boundary_atom = (nbr[i].duchi == 0.0); + + // skip atoms not in group + if (!(mask[i] & groupbit)) continue; + + // initializations + for (k = 0; k < 3; ++k) { + for (lambda = 0; lambda < 2; ++lambda) { + for (dim = 0; dim < 3; ++dim) { + gradient_ii_cos[lambda][k][dim] = 0.0; + gradient_ii_sin[lambda][k][dim] = 0.0; + gradient_ij_vec[lambda][k][dim] = 0.0; + } + gradient_ij_sca[lambda][k] = 0.0; + } + } + // loop over all neighbors of atom i + // for those within squared_cutoff, compute force + for (jj = 0; jj < jnum; ++jj) { + j = jlist[jj]; + j &= NEIGHMASK; + + // do not compute force on atom i if it is far from boundary + if ((nbr[j].duchi == 0.0) && no_boundary_atom) continue; + + // vector difference + dx = x[i][0] - x[j][0]; + dy = x[i][1] - x[j][1]; + dz = x[i][2] - x[j][2]; + squared_distance = dx * dx + dy * dy + dz * dz; + + if (squared_distance < squared_cutoff) { + // compute force on atom i + // need weight and its gradient + squared_distance *= inv_squared_cutoff; + weight = squared_distance * (squared_distance - 2.0) + 1.0; + weight_gradient_prefactor = 4.0 * (squared_distance - 1.0) * inv_squared_cutoff; + weight_gradient[0] = weight_gradient_prefactor * dx; + weight_gradient[1] = weight_gradient_prefactor * dy; + weight_gradient[2] = weight_gradient_prefactor * dz; + + // (1) compute scalar product and sine and cosine of it + // (2) compute product of sine and cosine with gradient of weight function + // (3) compute gradient_ii_cos and gradient_ii_sin by summing up result of (2) + // (4) compute gradient_ij_vec and gradient_ij_sca + for (lambda = 0; lambda < 2; ++lambda) { + for (k = 0; k < 3; ++k) { + scalar_product = reciprocal_vectors[lambda][k][0] * dx + reciprocal_vectors[lambda][k][1] * dy + reciprocal_vectors[lambda][k][2] * dz; + cos_scalar_product = cos(scalar_product); + sin_scalar_product = sin(scalar_product); + for (dim = 0; dim < 3; ++dim) { + gradient_ii_cos[lambda][k][dim] += (gcos_scalar_product = weight_gradient[dim] * cos_scalar_product); + gradient_ii_sin[lambda][k][dim] += (gsin_scalar_product = weight_gradient[dim] * sin_scalar_product); + gradient_ij_vec[lambda][k][dim] += (nbr[j].real_phi[lambda][k] * gcos_scalar_product - nbr[j].imag_phi[lambda][k] * gsin_scalar_product); + } + gradient_ij_sca[lambda][k] += weight * (nbr[j].real_phi[lambda][k] * sin_scalar_product + nbr[j].imag_phi[lambda][k] * cos_scalar_product); + } + } + } + } + + // sum contributions + for (k = 0; k < 3; ++k) { + for (dim = 0; dim < 3; ++dim) { + f[i][dim] -= (nbr[i].real_phi[0][k] * gradient_ii_cos[0][k][dim] + nbr[i].imag_phi[0][k] * gradient_ii_sin[0][k][dim] + gradient_ij_vec[0][k][dim] + reciprocal_vectors[1][k][dim] * gradient_ij_sca[1][k]); + f[i][dim] += (nbr[i].real_phi[1][k] * gradient_ii_cos[1][k][dim] + nbr[i].imag_phi[1][k] * gradient_ii_sin[1][k][dim] + gradient_ij_vec[1][k][dim] + reciprocal_vectors[0][k][dim] * gradient_ij_sca[0][k]); + } + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixOrientECO::post_force_respa(int vflag, int ilevel, int /* iloop */) { + if (ilevel == ilevel_respa) post_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +double FixOrientECO::compute_scalar() { + double added_energy_total; + MPI_Allreduce(&added_energy, &added_energy_total, 1, MPI_DOUBLE, MPI_SUM, world); + return added_energy_total; +} + +/* ---------------------------------------------------------------------- */ + +int FixOrientECO::pack_forward_comm(int n, int *list, double *buf, int /*pbc_flag*/, int */*pbc*/) { + int i, j; + int m = 0; + + for (i = 0; i < n; ++i) { + j = list[i]; + *((Nbr*)&buf[m]) = nbr[j]; + m += sizeof(Nbr)/sizeof(double); + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void FixOrientECO::unpack_forward_comm(int n, int first, double *buf) { + int i; + int last = first + n; + int m = 0; + + for (i = first; i < last; ++i) { + nbr[i] = *((Nbr*) &buf[m]); + m += sizeof(Nbr) / sizeof(double); + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays + ------------------------------------------------------------------------- */ + +double FixOrientECO::memory_usage() { + double bytes = nmax * sizeof(Nbr); + bytes += 2 * nmax * sizeof(double); + return bytes; +} + +/* ---------------------------------------------------------------------- + reciprocal lattice vectors from file input + ------------------------------------------------------------------------- */ + +void FixOrientECO::get_reciprocal() { + // volume of unit cell A + double vol = 0.5 * (dir_vec[0][0] * (dir_vec[1][1] * dir_vec[2][2] - dir_vec[2][1] * dir_vec[1][2]) + dir_vec[1][0] * (dir_vec[2][1] * dir_vec[0][2] - dir_vec[0][1] * dir_vec[2][2]) + dir_vec[2][0] * (dir_vec[0][1] * dir_vec[1][2] - dir_vec[1][1] * dir_vec[0][2])) / MY_PI; + double i_vol = 1.0 / vol; + + // grain A: reciprocal_vectors 0 + reciprocal_vectors[0][0][0] = (dir_vec[1][1] * dir_vec[2][2] - dir_vec[2][1] * dir_vec[1][2]) * i_vol; + reciprocal_vectors[0][0][1] = (dir_vec[1][2] * dir_vec[2][0] - dir_vec[2][2] * dir_vec[1][0]) * i_vol; + reciprocal_vectors[0][0][2] = (dir_vec[1][0] * dir_vec[2][1] - dir_vec[2][0] * dir_vec[1][1]) * i_vol; + + // grain A: reciprocal_vectors 1 + reciprocal_vectors[0][1][0] = (dir_vec[2][1] * dir_vec[0][2] - dir_vec[0][1] * dir_vec[2][2]) * i_vol; + reciprocal_vectors[0][1][1] = (dir_vec[2][2] * dir_vec[0][0] - dir_vec[0][2] * dir_vec[2][0]) * i_vol; + reciprocal_vectors[0][1][2] = (dir_vec[2][0] * dir_vec[0][1] - dir_vec[0][0] * dir_vec[2][1]) * i_vol; + + // grain A: reciprocal_vectors 2 + reciprocal_vectors[0][2][0] = (dir_vec[0][1] * dir_vec[1][2] - dir_vec[1][1] * dir_vec[0][2]) * i_vol; + reciprocal_vectors[0][2][1] = (dir_vec[0][2] * dir_vec[1][0] - dir_vec[1][2] * dir_vec[0][0]) * i_vol; + reciprocal_vectors[0][2][2] = (dir_vec[0][0] * dir_vec[1][1] - dir_vec[1][0] * dir_vec[0][1]) * i_vol; + + // volume of unit cell B + vol = 0.5 * (dir_vec[3][0] * (dir_vec[4][1] * dir_vec[5][2] - dir_vec[5][1] * dir_vec[4][2]) + dir_vec[4][0] * (dir_vec[5][1] * dir_vec[3][2] - dir_vec[3][1] * dir_vec[5][2]) + dir_vec[5][0] * (dir_vec[3][1] * dir_vec[4][2] - dir_vec[4][1] * dir_vec[3][2])) / MY_PI; + i_vol = 1.0 / vol; + + // grain B: reciprocal_vectors 0 + reciprocal_vectors[1][0][0] = (dir_vec[4][1] * dir_vec[5][2] - dir_vec[5][1] * dir_vec[4][2]) * i_vol; + reciprocal_vectors[1][0][1] = (dir_vec[4][2] * dir_vec[5][0] - dir_vec[5][2] * dir_vec[4][0]) * i_vol; + reciprocal_vectors[1][0][2] = (dir_vec[4][0] * dir_vec[5][1] - dir_vec[5][0] * dir_vec[4][1]) * i_vol; + + // grain B: reciprocal_vectors 1 + reciprocal_vectors[1][1][0] = (dir_vec[5][1] * dir_vec[3][2] - dir_vec[3][1] * dir_vec[5][2]) * i_vol; + reciprocal_vectors[1][1][1] = (dir_vec[5][2] * dir_vec[3][0] - dir_vec[3][2] * dir_vec[5][0]) * i_vol; + reciprocal_vectors[1][1][2] = (dir_vec[5][0] * dir_vec[3][1] - dir_vec[3][0] * dir_vec[5][1]) * i_vol; + + // grain B: reciprocal_vectors 2 + reciprocal_vectors[1][2][0] = (dir_vec[3][1] * dir_vec[4][2] - dir_vec[4][1] * dir_vec[3][2]) * i_vol; + reciprocal_vectors[1][2][1] = (dir_vec[3][2] * dir_vec[4][0] - dir_vec[4][2] * dir_vec[3][0]) * i_vol; + reciprocal_vectors[1][2][2] = (dir_vec[3][0] * dir_vec[4][1] - dir_vec[4][0] * dir_vec[3][1]) * i_vol; +} + +/* ---------------------------------------------------------------------- + normalization factor + ------------------------------------------------------------------------- */ + +int FixOrientECO::get_norm() { + // set up local variables + double delta[3]; // relative position + double squared_distance; // squared distance of atoms i and j + double weight; // weight function for atoms i and j + double wsum = 0.0; // sum of all weight functions + double scalar_product; // scalar product + double reesum[3] = {0.0, 0.0, 0.0}; // sum of real part + double imesum[3] = {0.0, 0.0, 0.0}; // sum of imaginary part + + int max_co = 4; // will produce wrong results for rcut > 3 * lattice constant + + int neigh = 0; // count number of neighbors used + + // loop over ideal lattice positions + int i, k, idx[3]; + for (idx[0] = -max_co; idx[0] <= max_co; ++idx[0]) { + for (idx[1] = -max_co; idx[1] <= max_co; ++idx[1]) { + for (idx[2] = -max_co; idx[2] <= max_co; ++idx[2]) { + // distance of atoms + for (i = 0; i < 3; ++i) { + delta[i] = dir_vec[0][i] * idx[0] + dir_vec[1][i] * idx[1] + dir_vec[2][i] * idx[2]; + } + squared_distance = delta[0] * delta[0] + delta[1] * delta[1] + delta[2] * delta[2]; + + // check if atom is within cutoff region + if ((squared_distance != 0.0) and (squared_distance < squared_cutoff)) { + ++neigh; + squared_distance *= inv_squared_cutoff; + + // weight + weight = squared_distance * (squared_distance - 2.0) + 1.0; + wsum += weight; + + // three reciprocal directions + for (k = 0; k < 3; ++k) { + scalar_product = reciprocal_vectors[1][k][0] * delta[0] + reciprocal_vectors[1][k][1] * delta[1] + reciprocal_vectors[1][k][2] * delta[2]; + reesum[k] += weight * cos(scalar_product); + imesum[k] -= weight * sin(scalar_product); + } + } + } + } + } + + // compute normalization + norm_fac = 3.0 * wsum * wsum; + for (k = 0; k < 3; ++k) { + norm_fac -= reesum[k] * reesum[k] + imesum[k] * imesum[k]; + } + return neigh; +} + + + diff --git a/src/USER-MISC/fix_orient_eco.h b/src/USER-MISC/fix_orient_eco.h new file mode 100644 index 0000000000..9ae48be1f3 --- /dev/null +++ b/src/USER-MISC/fix_orient_eco.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. + ------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(orient/eco,FixOrientECO) + +#else + +#ifndef LMP_FIX_ORIENT_ECO_H +#define LMP_FIX_ORIENT_ECO_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixOrientECO : public Fix { + public: + FixOrientECO(class LAMMPS *, int, char **); + ~FixOrientECO(); + int setmask(); + void init(); + void init_list(int, class NeighList *); + void setup(int); + void post_force(int); + void post_force_respa(int, int, int); + double compute_scalar(); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + double memory_usage(); + + private: + struct Nbr; // forward declaration. private struct for managing precomputed terms + + int me; // this processors rank + int nmax; // maximal # of owned + ghost atoms on this processor + int ilevel_respa; // used for RESPA integrator only + + int sign; // from sign of u + double u_0; // synthetic potential energy + double half_u; // half synthetic potential energy + double eta; // threshold for thermal effects + double inv_eta; // inverse threshold for thermal effects + double r_cut; // cutoff radius + double squared_cutoff; // squared cutoff radius + double inv_squared_cutoff; // inverse squared cutoff radius + char *dir_filename; // filename of reference grain input + double dir_vec[6][3]; // direct lattice vectors + double reciprocal_vectors[2][3][3]; // reciprocal lattice vectors + + double added_energy; // energy added by fix + + double **order; // order parameter and normalized order + // parameter per atom + + double norm_fac; // normalization constant + double inv_norm_fac; // inverse normalization constant + + Nbr *nbr; // pointer on array of precomputed terms + class NeighList *list; // LAMMPS' neighbor list + + void get_reciprocal(); // calculate reciprocal lattice vectors + int get_norm(); // compute normalization factor +}; + +} + +#endif // LMP_FIX_ORIENT_ECO_H +#endif // FIX_CLASS + diff --git a/src/USER-MISC/pair_agni.cpp b/src/USER-MISC/pair_agni.cpp index a03e24ed35..4941f2c7b3 100644 --- a/src/USER-MISC/pair_agni.cpp +++ b/src/USER-MISC/pair_agni.cpp @@ -31,6 +31,7 @@ #include "citeme.h" #include "math_special.h" #include "math_const.h" +#include "utils.h" using namespace LAMMPS_NS; using namespace MathSpecial; @@ -387,7 +388,7 @@ void PairAGNI::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; if (nwords > MAXWORD) diff --git a/src/USER-MISC/pair_drip.cpp b/src/USER-MISC/pair_drip.cpp index bb28d056ac..e6b0e5acc6 100644 --- a/src/USER-MISC/pair_drip.cpp +++ b/src/USER-MISC/pair_drip.cpp @@ -254,7 +254,7 @@ void PairDRIP::read_file(char *filename) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -273,7 +273,7 @@ void PairDRIP::read_file(char *filename) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) diff --git a/src/USER-MISC/pair_edip.cpp b/src/USER-MISC/pair_edip.cpp index 8dee4a606b..d873a04c39 100644 --- a/src/USER-MISC/pair_edip.cpp +++ b/src/USER-MISC/pair_edip.cpp @@ -35,6 +35,7 @@ #include "comm.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -905,7 +906,7 @@ void PairEDIP::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -924,7 +925,7 @@ void PairEDIP::read_file(char *file) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) diff --git a/src/USER-MISC/pair_edip_multi.cpp b/src/USER-MISC/pair_edip_multi.cpp index 9f953610de..cfda5c1a7c 100644 --- a/src/USER-MISC/pair_edip_multi.cpp +++ b/src/USER-MISC/pair_edip_multi.cpp @@ -31,6 +31,7 @@ #include "memory.h" #include "error.h" #include "citeme.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -671,7 +672,7 @@ void PairEDIPMulti::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -690,7 +691,7 @@ void PairEDIPMulti::read_file(char *file) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) diff --git a/src/USER-MISC/pair_extep.cpp b/src/USER-MISC/pair_extep.cpp index 62ef24da85..2036df7add 100644 --- a/src/USER-MISC/pair_extep.cpp +++ b/src/USER-MISC/pair_extep.cpp @@ -30,6 +30,7 @@ #include "comm.h" #include "memory.h" #include "error.h" +#include "utils.h" #include "math_const.h" @@ -619,7 +620,7 @@ void PairExTeP::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -638,7 +639,7 @@ void PairExTeP::read_file(char *file) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) @@ -744,7 +745,7 @@ void PairExTeP::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // words = ptrs to all words in line diff --git a/src/USER-MISC/pair_ilp_graphene_hbn.cpp b/src/USER-MISC/pair_ilp_graphene_hbn.cpp index cf77f7e1ee..32689307c0 100644 --- a/src/USER-MISC/pair_ilp_graphene_hbn.cpp +++ b/src/USER-MISC/pair_ilp_graphene_hbn.cpp @@ -34,6 +34,7 @@ #include "my_page.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -286,7 +287,7 @@ void PairILPGrapheneHBN::read_file(char *filename) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -305,7 +306,7 @@ void PairILPGrapheneHBN::read_file(char *filename) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) diff --git a/src/USER-MISC/pair_kolmogorov_crespi_full.cpp b/src/USER-MISC/pair_kolmogorov_crespi_full.cpp index 3f624fc785..f5f2a6ca01 100644 --- a/src/USER-MISC/pair_kolmogorov_crespi_full.cpp +++ b/src/USER-MISC/pair_kolmogorov_crespi_full.cpp @@ -34,6 +34,7 @@ #include "my_page.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -287,7 +288,7 @@ void PairKolmogorovCrespiFull::read_file(char *filename) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -306,7 +307,7 @@ void PairKolmogorovCrespiFull::read_file(char *filename) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) diff --git a/src/USER-MISC/pair_kolmogorov_crespi_z.cpp b/src/USER-MISC/pair_kolmogorov_crespi_z.cpp index 61c326ac87..07f0a766e4 100644 --- a/src/USER-MISC/pair_kolmogorov_crespi_z.cpp +++ b/src/USER-MISC/pair_kolmogorov_crespi_z.cpp @@ -32,6 +32,7 @@ #include "neigh_list.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -345,7 +346,7 @@ void PairKolmogorovCrespiZ::read_file(char *filename) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -364,7 +365,7 @@ void PairKolmogorovCrespiZ::read_file(char *filename) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) diff --git a/src/USER-MISC/pair_lebedeva_z.cpp b/src/USER-MISC/pair_lebedeva_z.cpp index 8930042cef..f6464153e5 100644 --- a/src/USER-MISC/pair_lebedeva_z.cpp +++ b/src/USER-MISC/pair_lebedeva_z.cpp @@ -33,6 +33,7 @@ #include "neigh_list.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -341,7 +342,7 @@ void PairLebedevaZ::read_file(char *filename) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -360,7 +361,7 @@ void PairLebedevaZ::read_file(char *filename) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) diff --git a/src/USER-MISC/pair_mesocnt.cpp b/src/USER-MISC/pair_mesocnt.cpp index 4864dab950..f486814feb 100644 --- a/src/USER-MISC/pair_mesocnt.cpp +++ b/src/USER-MISC/pair_mesocnt.cpp @@ -34,6 +34,7 @@ #include "error.h" #include "update.h" #include "utils.h" +#include "fmt/format.h" #include "math_const.h" #include "math_extra.h" @@ -759,11 +760,9 @@ void PairMesoCNT::read_file() // open file fp = force->open_potential(file); - if (fp == NULL) { - std::string str("Cannot open mesocnt file: "); - str += file; - error->one(FLERR,str.c_str()); - } + if (fp == NULL) + error->one(FLERR,fmt::format("Cannot open mesocnt file: {}",file)); + utils::sfgets(FLERR,line,MAXLINE,fp,file,error); // potential parameters @@ -771,18 +770,15 @@ void PairMesoCNT::read_file() utils::sfgets(FLERR,line,MAXLINE,fp,file,error); num = sscanf(line,"%d %d %d %d", &uinf_points,&gamma_points,&phi_points,&usemi_points); - if (num != 4) { - std::string str("Could not correctly parse line 2 in mesocnt file: "); - str += file; - error->one(FLERR,str.c_str()); - } + if (num != 4) + error->one(FLERR,fmt::format("Could not correctly parse line 2 in " + "mesocnt file: {}",file)); + utils::sfgets(FLERR,line,MAXLINE,fp,file,error); num = sscanf(line,"%lg %lg %lg %lg",&r_ang,&sig_ang,&delta1,&delta2); - if (num != 4) { - std::string str("Could not correctly parse line 3 in mesocnt file: "); - str += file; - error->one(FLERR,str.c_str()); - } + if (num != 4) + error->one(FLERR,fmt::format("Could not correctly parse line 3 in " + "mesocnt file: {}",file)); } MPI_Bcast(&uinf_points,1,MPI_INT,0,world); @@ -850,11 +846,9 @@ void PairMesoCNT::read_data(FILE *fp, double *data, double x,xtemp,dxtemp; for (int i = 0; i < ninput; i++) { - if (NULL == fgets(line,MAXLINE,fp)) { - std::string str("Premature end of file in pair table "); - str += file; - error->one(FLERR,str.c_str()); - } + if (NULL == fgets(line,MAXLINE,fp)) + error->one(FLERR,fmt::format("Premature end of file in pair table: {}",file)); + if (i > 0) xtemp = x; if (2 != sscanf(line,"%lg %lg",&x,&data[i])) cerror++; if (i == 0) { @@ -869,24 +863,18 @@ void PairMesoCNT::read_data(FILE *fp, double *data, // warn if data was read incompletely, e.g. columns were missing if (cerror) { - char str[128]; - sprintf(str,"%d of %d lines were incomplete\n" - " or could not be parsed completely\n" - " in pair table ",cerror,ninput); - std::string errstr = str; - errstr += file; - error->warning(FLERR,errstr.c_str()); + std::string mesg = fmt::format("{} of {} lines were incomplete or could " + "or could not be parsed completely in " + " pair table: {}",cerror,ninput,file); + error->warning(FLERR,mesg); } // warn if spacing between data points is not constant if (serror) { - char str[128]; - sprintf(str,"%d spacings in first column were different\n" - " from first spacing in pair table ",serror); - std::string errstr = str; - errstr += file; - error->warning(FLERR,errstr.c_str()); + std::string mesg = fmt::format("{} spacings in first column were different " + " from first spacing in pair table: {}",serror,file); + error->warning(FLERR,mesg); } } @@ -911,11 +899,9 @@ void PairMesoCNT::read_data(FILE *fp, double **data, for (int i = 0; i < ninput; i++) { if (i > 0) xtemp = x; for (int j = 0; j < ninput; j++) { - if (NULL == fgets(line,MAXLINE,fp)) { - std::string str("Premature end of file in pair table "); - str += file; - error->one(FLERR,str.c_str()); - } + if (NULL == fgets(line,MAXLINE,fp)) + error->one(FLERR,fmt::format("Premature end of file in pair table: {}",file)); + if (j > 0) ytemp = y; if (3 != sscanf(line,"%lg %lg %lg",&x,&y,&data[i][j])) cerror++; if (i == 0 && j == 0) ystart = y; @@ -936,34 +922,21 @@ void PairMesoCNT::read_data(FILE *fp, double **data, // warn if data was read incompletely, e.g. columns were missing - if (cerror) { - char str[128]; - sprintf(str,"%d of %d lines were incomplete\n" - " or could not be parsed completely\n" - " in pair table ",cerror,ninput*ninput); - std::string errstr = str; - errstr += file; - error->warning(FLERR,errstr.c_str()); - } + if (cerror) + error->warning(FLERR,fmt::format("{} of {} lines were incomplete or could " + "not be parsed completely in pair table: {}", + cerror,ninput*ninput,file)); // warn if spacing between data points is not constant - if (sxerror) { - char str[128]; - sprintf(str,"%d spacings in first column were different\n" - " from first spacing in pair table ",sxerror); - std::string errstr = str; - errstr += file; - error->warning(FLERR,errstr.c_str()); - } - if (syerror) { - char str[128]; - sprintf(str,"%d spacings in second column were different\n" - " from first spacing in pair table ",syerror); - std::string errstr = str; - errstr += file; - error->warning(FLERR,errstr.c_str()); - } + if (sxerror) + error->warning(FLERR,fmt::format("{} spacings in first column were different " + " from first spacing in pair table: {}", + sxerror,file)); + if (syerror) + error->warning(FLERR,fmt::format("{} spacings in second column were different " + " from first spacing in pair table: {}", + syerror,file)); } /* ---------------------------------------------------------------------- diff --git a/src/USER-MISC/pair_tersoff_table.cpp b/src/USER-MISC/pair_tersoff_table.cpp index 5c4f60f354..57c897bdfc 100644 --- a/src/USER-MISC/pair_tersoff_table.cpp +++ b/src/USER-MISC/pair_tersoff_table.cpp @@ -32,6 +32,7 @@ #include "force.h" #include "comm.h" #include "memory.h" +#include "utils.h" #include "error.h" @@ -873,7 +874,7 @@ void PairTersoffTable::read_file(char *file) // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); if (nwords == 0) continue; // concatenate additional lines until have params_per_line words @@ -892,7 +893,7 @@ void PairTersoffTable::read_file(char *file) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + nwords = utils::count_words(line); } if (nwords != params_per_line) diff --git a/src/USER-OMP/bond_gromos_omp.cpp b/src/USER-OMP/bond_gromos_omp.cpp index e5eebfebfc..d4d2d25601 100644 --- a/src/USER-OMP/bond_gromos_omp.cpp +++ b/src/USER-OMP/bond_gromos_omp.cpp @@ -103,7 +103,7 @@ void BondGromosOMP::eval(int nfrom, int nto, ThrData * const thr) fbond = -4.0 * kdr; - if (EFLAG) ebond = kdr; + if (EFLAG) ebond = kdr*dr; // apply force to each of 2 atoms diff --git a/src/USER-OMP/fix_omp.cpp b/src/USER-OMP/fix_omp.cpp index 25a3a09816..51e65d24ed 100644 --- a/src/USER-OMP/fix_omp.cpp +++ b/src/USER-OMP/fix_omp.cpp @@ -63,7 +63,8 @@ static int get_tid() FixOMP::FixOMP(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), thr(NULL), last_omp_style(NULL), last_pair_hybrid(NULL), - _nthr(-1), _neighbor(true), _mixed(false), _reduced(true) + _nthr(-1), _neighbor(true), _mixed(false), _reduced(true), + _pair_compute_flag(false), _kspace_compute_flag(false) { if (narg < 4) error->all(FLERR,"Illegal package omp command"); @@ -207,6 +208,11 @@ void FixOMP::init() && (strstr(update->integrate_style,"respa/omp") == NULL)) error->all(FLERR,"Need to use respa/omp for r-RESPA with /omp styles"); + if (force->pair && force->pair->compute_flag) _pair_compute_flag = true; + else _pair_compute_flag = false; + if (force->kspace && force->kspace->compute_flag) _kspace_compute_flag = true; + else _kspace_compute_flag = false; + int check_hybrid, kspace_split; last_pair_hybrid = NULL; last_omp_style = NULL; @@ -254,7 +260,7 @@ void FixOMP::init() } \ } - if (kspace_split <= 0) { + if (_pair_compute_flag && (kspace_split <= 0)) { CheckStyleForOMP(pair); CheckHybridForOMP(pair,Pair); if (check_hybrid) { @@ -275,7 +281,7 @@ void FixOMP::init() CheckHybridForOMP(improper,Improper); } - if (kspace_split >= 0) { + if (_kspace_compute_flag && (kspace_split >= 0)) { CheckStyleForOMP(kspace); } @@ -347,16 +353,16 @@ void FixOMP::pre_force(int) double **f = atom->f; double **torque = atom->torque; double *erforce = atom->erforce; - double *de = atom->de; + double *desph = atom->desph; double *drho = atom->drho; #if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(f,torque,erforce,de,drho) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(f,torque,erforce,desph,drho) #endif { const int tid = get_tid(); thr[tid]->check_tid(tid); - thr[tid]->init_force(nall,f,torque,erforce,de,drho); + thr[tid]->init_force(nall,f,torque,erforce,desph,drho); } // end of omp parallel region _reduced = false; diff --git a/src/USER-OMP/fix_omp.h b/src/USER-OMP/fix_omp.h index 55e042dd52..3020a927fd 100644 --- a/src/USER-OMP/fix_omp.h +++ b/src/USER-OMP/fix_omp.h @@ -70,6 +70,8 @@ class FixOMP : public Fix { bool _neighbor; // en/disable threads for neighbor list construction bool _mixed; // whether to prefer mixed precision compute kernels bool _reduced; // whether forces have been reduced for this step + bool _pair_compute_flag; // whether pair_compute is called + bool _kspace_compute_flag; // whether kspace_compute is called void set_neighbor_omp(); }; diff --git a/src/USER-OMP/pair_eam_alloy_omp.cpp b/src/USER-OMP/pair_eam_alloy_omp.cpp index d36574713f..ea2130721b 100644 --- a/src/USER-OMP/pair_eam_alloy_omp.cpp +++ b/src/USER-OMP/pair_eam_alloy_omp.cpp @@ -25,11 +25,11 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - /* ---------------------------------------------------------------------- */ PairEAMAlloyOMP::PairEAMAlloyOMP(LAMMPS *lmp) : PairEAMOMP(lmp) @@ -117,94 +117,107 @@ void PairEAMAlloyOMP::read_file(char *filename) { Setfl *file = setfl; - // open potential file + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(PairEAM::lmp, filename, "EAM"); - int me = comm->me; - FILE *fptr; - char line[MAXLINE]; + try { + reader.skip_line(); + reader.skip_line(); + reader.skip_line(); - if (me == 0) { - fptr = force->open_potential(filename); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EAM potential file %s",filename); - error->one(FLERR,str); + // extract element names from nelements line + ValueTokenizer values = reader.next_values(1); + file->nelements = values.next_int(); + + if (values.count() != file->nelements + 1) + error->one(FLERR,"Incorrect element names in EAM potential file"); + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + const std::string word = values.next_string(); + const int n = word.length() + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i], word.c_str()); + } + + // + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + + for (int i = 0; i < file->nelements; i++) { + values = reader.next_values(2); + values.next_int(); // ignore + file->mass[i] = values.next_double(); + + reader.next_dvector(&file->frho[i][1], file->nrho); + reader.next_dvector(&file->rhor[i][1], file->nr); + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->z2r[i][j][1], file->nr); + } + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - // read and broadcast header - // extract element names from nelements line + // broadcast potential information + MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world); - int n; - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - n = strlen(line) + 1; + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + // allocate memory on other procs + if (comm->me != 0) { + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr; + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - sscanf(line,"%d",&file->nelements); - int nwords = atom->count_words(line); - if (nwords != file->nelements + 1) - error->all(FLERR,"Incorrect element names in EAM potential file"); - - char **words = new char*[file->nelements+1]; - nwords = 0; - strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - file->elements = new char*[file->nelements]; + // broadcast file->elements string array for (int i = 0; i < file->nelements; i++) { - n = strlen(words[i]) + 1; - file->elements[i] = new char[n]; - strcpy(file->elements[i],words[i]); - } - delete [] words; - - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + int n; + if (comm->me == 0) n = strlen(file->elements[i]) + 1; + MPI_Bcast(&n, 1, MPI_INT, 0, world); + if (comm->me != 0) file->elements[i] = new char[n]; + MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world); } - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + // broadcast file->mass, frho, rhor + for (int i = 0; i < file->nelements; i++) { + MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->rhor[i][1], file->nr, MPI_DOUBLE, 0, world); + } - file->mass = new double[file->nelements]; - memory->create(file->frho,file->nelements,file->nrho+1,"pair:frho"); - memory->create(file->rhor,file->nelements,file->nr+1,"pair:rhor"); - memory->create(file->z2r,file->nelements,file->nelements,file->nr+1, - "pair:z2r"); - - int i,j,tmp; - for (i = 0; i < file->nelements; i++) { - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - sscanf(line,"%d %lg",&tmp,&file->mass[i]); + // broadcast file->z2r + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world); } - MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); - MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); - if (me == 0) grab(fptr,file->nr,&file->rhor[i][1]); - MPI_Bcast(&file->rhor[i][1],file->nr,MPI_DOUBLE,0,world); } - - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); - MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); - } - - // close the potential file - - if (me == 0) fclose(fptr); } /* ---------------------------------------------------------------------- diff --git a/src/USER-OMP/pair_eam_cd_omp.cpp b/src/USER-OMP/pair_eam_cd_omp.cpp deleted file mode 100644 index 874a2fa252..0000000000 --- a/src/USER-OMP/pair_eam_cd_omp.cpp +++ /dev/null @@ -1,542 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - This software is distributed under the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: Axel Kohlmeyer (Temple U) -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include -#include - -#include "pair_eam_cd_omp.h" -#include "atom.h" -#include "comm.h" -#include "error.h" -#include "force.h" -#include "memory.h" -#include "neighbor.h" -#include "neigh_list.h" - -#include "suffix.h" -using namespace LAMMPS_NS; - -// This is for debugging purposes. The ASSERT() macro is used in the code to check -// if everything runs as expected. Change this to #if 0 if you don't need the checking. -#if 0 - #define ASSERT(cond) ((!(cond)) ? my_failure(error,__FILE__,__LINE__) : my_noop()) - - inline void my_noop() {} - inline void my_failure(Error* error, const char* file, int line) { - char str[1024]; - sprintf(str,"Assertion failure: File %s, line %i", file, line); - error->one(FLERR,str); - } -#else - #define ASSERT(cond) -#endif - -/* ---------------------------------------------------------------------- */ - -PairEAMCDOMP::PairEAMCDOMP(LAMMPS *lmp, int _cdeamVersion) : - PairEAM(lmp), PairEAMCD(lmp,_cdeamVersion), ThrOMP(lmp, THR_PAIR) -{ - suffix_flag |= Suffix::OMP; - respa_enable = 0; -} - -/* ---------------------------------------------------------------------- */ - -void PairEAMCDOMP::compute(int eflag, int vflag) -{ - ev_init(eflag,vflag); - - const int nall = atom->nlocal + atom->nghost; - const int nthreads = comm->nthreads; - const int inum = list->inum; - - // grow energy and fp arrays if necessary - // need to be atom->nmax in length - - if (atom->nmax > nmax) { - memory->destroy(rho); - memory->destroy(rhoB); - memory->destroy(D_values); - memory->destroy(fp); - nmax = atom->nmax; - memory->create(rho,nthreads*nmax,"pair:rho"); - memory->create(rhoB,nthreads*nmax,"pair:mu"); - memory->create(D_values,nthreads*nmax,"pair:D_values"); - memory->create(fp,nmax,"pair:fp"); - } - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) -#endif - { - int ifrom, ito, tid; - - loop_setup_thr(ifrom, ito, tid, inum, nthreads); - ThrData *thr = fix->get_thr(tid); - thr->timer(Timer::START); - ev_setup_thr(eflag, vflag, nall, eatom, vatom, NULL, thr); - - if (force->newton_pair) - thr->init_cdeam(nall, rho, rhoB, D_values); - else - thr->init_cdeam(atom->nlocal, rho, rhoB, D_values); - - switch (cdeamVersion) { - - case 1: - - if (evflag) { - if (eflag) { - if (force->newton_pair) eval<1,1,1,1>(ifrom, ito, thr); - else eval<1,1,0,1>(ifrom, ito, thr); - } else { - if (force->newton_pair) eval<1,0,1,1>(ifrom, ito, thr); - else eval<1,0,0,1>(ifrom, ito, thr); - } - } else { - if (force->newton_pair) eval<0,0,1,1>(ifrom, ito, thr); - else eval<0,0,0,1>(ifrom, ito, thr); - } - break; - - case 2: - - if (evflag) { - if (eflag) { - if (force->newton_pair) eval<1,1,1,2>(ifrom, ito, thr); - else eval<1,1,0,2>(ifrom, ito, thr); - } else { - if (force->newton_pair) eval<1,0,1,2>(ifrom, ito, thr); - else eval<1,0,0,2>(ifrom, ito, thr); - } - } else { - if (force->newton_pair) eval<0,0,1,2>(ifrom, ito, thr); - else eval<0,0,0,2>(ifrom, ito, thr); - } - break; - - default: - { -#if defined(_OPENMP) -#pragma omp master -#endif - error->all(FLERR,"unsupported eam/cd pair style variant"); - } - } - - thr->timer(Timer::PAIR); - reduce_thr(this, eflag, vflag, thr); - } // end of omp parallel region -} - -template -void PairEAMCDOMP::eval(int iifrom, int iito, ThrData * const thr) -{ - int i,j,ii,jj,jnum,itype,jtype; - double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; - double rsq,rhoip,rhojp,recip,phi; - int *ilist,*jlist,*numneigh,**firstneigh; - - evdwl = 0.0; - - const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0]; - dbl3_t * _noalias const f = (dbl3_t *) thr->get_f()[0]; - double * const rho_t = thr->get_rho(); - double * const rhoB_t = thr->get_rhoB(); - double * const D_values_t = thr->get_D_values(); - const int tid = thr->get_tid(); - const int nthreads = comm->nthreads; - - const int * _noalias const type = atom->type; - const int nlocal = atom->nlocal; - const int nall = nlocal + atom->nghost; - - double fxtmp,fytmp,fztmp; - - ilist = list->ilist; - numneigh = list->numneigh; - firstneigh = list->firstneigh; - - // Stage I - - // Compute rho and rhoB at each local atom site. - // Additionally calculate the D_i values here if we are using the one-site formulation. - // For the two-site formulation we have to calculate the D values in an extra loop (Stage II). - - for (ii = iifrom; ii < iito; ii++) { - i = ilist[ii]; - xtmp = x[i].x; - ytmp = x[i].y; - ztmp = x[i].z; - itype = type[i]; - jlist = firstneigh[i]; - jnum = numneigh[i]; - - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= NEIGHMASK; - - delx = xtmp - x[j].x; - dely = ytmp - x[j].y; - delz = ztmp - x[j].z; - rsq = delx*delx + dely*dely + delz*delz; - - if(rsq < cutforcesq) { - jtype = type[j]; - double r = sqrt(rsq); - const EAMTableIndex index = radiusToTableIndex(r); - double localrho = RhoOfR(index, jtype, itype); - rho_t[i] += localrho; - if(jtype == speciesB) rhoB_t[i] += localrho; - if(NEWTON_PAIR || j < nlocal) { - localrho = RhoOfR(index, itype, jtype); - rho_t[j] += localrho; - if(itype == speciesB) rhoB_t[j] += localrho; - } - - if(CDEAMVERSION == 1 && itype != jtype) { - // Note: if the i-j interaction is not concentration dependent (because either - // i or j are not species A or B) then its contribution to D_i and D_j should - // be ignored. - // This if-clause is only required for a ternary. - if((itype == speciesA && jtype == speciesB) - || (jtype == speciesA && itype == speciesB)) { - double Phi_AB = PhiOfR(index, itype, jtype, 1.0 / r); - D_values_t[i] += Phi_AB; - if(NEWTON_PAIR || j < nlocal) - D_values_t[j] += Phi_AB; - } - } - } - } - } - - // wait until all threads are done with computation - sync_threads(); - - // communicate and sum densities - - if (NEWTON_PAIR) { - // reduce per thread density - thr->timer(Timer::PAIR); - data_reduce_thr(rho, nall, nthreads, 1, tid); - data_reduce_thr(rhoB, nall, nthreads, 1, tid); - if (CDEAMVERSION==1) - data_reduce_thr(D_values, nall, nthreads, 1, tid); - - // wait until reduction is complete - sync_threads(); - -#if defined(_OPENMP) -#pragma omp master -#endif - { communicationStage = 1; - comm->reverse_comm_pair(this); } - - // wait until master thread is done with communication - sync_threads(); - - } else { - // reduce per thread density - thr->timer(Timer::PAIR); - data_reduce_thr(rho, nlocal, nthreads, 1, tid); - data_reduce_thr(rhoB, nlocal, nthreads, 1, tid); - if (CDEAMVERSION==1) - data_reduce_thr(D_values, nlocal, nthreads, 1, tid); - - // wait until reduction is complete - sync_threads(); - } - - // fp = derivative of embedding energy at each atom - // phi = embedding energy at each atom - - for (ii = iifrom; ii < iito; ii++) { - i = ilist[ii]; - EAMTableIndex index = rhoToTableIndex(rho[i]); - fp[i] = FPrimeOfRho(index, type[i]); - if(EFLAG) { - phi = FofRho(index, type[i]); - e_tally_thr(this, i, i, nlocal, NEWTON_PAIR, phi, 0.0, thr); - } - } - - // wait until all theads are done with computation - sync_threads(); - - // Communicate derivative of embedding function and densities - // and D_values (this for one-site formulation only). -#if defined(_OPENMP) -#pragma omp master -#endif - { communicationStage = 2; - comm->forward_comm_pair(this); } - - // wait until master thread is done with communication - sync_threads(); - - - // The electron densities may not drop to zero because then the concentration would no longer be defined. - // But the concentration is not needed anyway if there is no interaction with another atom, which is the case - // if the electron density is exactly zero. That's why the following lines have been commented out. - // - //for(i = 0; i < nlocal + atom->nghost; i++) { - // if(rho[i] == 0 && (type[i] == speciesA || type[i] == speciesB)) - // error->one(FLERR,"CD-EAM potential routine: Detected atom with zero electron density."); - //} - - // Stage II - // This is only required for the original two-site formulation of the CD-EAM potential. - - if(CDEAMVERSION == 2) { - // Compute intermediate value D_i for each atom. - for (ii = iifrom; ii < iito; ii++) { - i = ilist[ii]; - xtmp = x[i].x; - ytmp = x[i].y; - ztmp = x[i].z; - itype = type[i]; - jlist = firstneigh[i]; - jnum = numneigh[i]; - - // This code line is required for ternary alloys. - if(itype != speciesA && itype != speciesB) continue; - - double x_i = rhoB[i] / rho[i]; // Concentration at atom i. - - for(jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= NEIGHMASK; - jtype = type[j]; - if(itype == jtype) continue; - - // This code line is required for ternary alloys. - if(jtype != speciesA && jtype != speciesB) continue; - - delx = xtmp - x[j].x; - dely = ytmp - x[j].y; - delz = ztmp - x[j].z; - rsq = delx*delx + dely*dely + delz*delz; - - if(rsq < cutforcesq) { - double r = sqrt(rsq); - const EAMTableIndex index = radiusToTableIndex(r); - - // The concentration independent part of the cross pair potential. - double Phi_AB = PhiOfR(index, itype, jtype, 1.0 / r); - - // Average concentration of two sites - double x_ij = 0.5 * (x_i + rhoB[j]/rho[j]); - - // Calculate derivative of h(x_ij) polynomial function. - double h_prime = evalHprime(x_ij); - - D_values_t[i] += h_prime * Phi_AB / (2.0 * rho[i] * rho[i]); - if(NEWTON_PAIR || j < nlocal) - D_values_t[j] += h_prime * Phi_AB / (2.0 * rho[j] * rho[j]); - } - } - } - - if (NEWTON_PAIR) { - thr->timer(Timer::PAIR); - data_reduce_thr(D_values, nall, nthreads, 1, tid); - - // wait until reduction is complete - sync_threads(); - -#if defined(_OPENMP) -#pragma omp master -#endif - { communicationStage = 3; - comm->reverse_comm_pair(this); } - - // wait until master thread is done with communication - sync_threads(); - - } else { - thr->timer(Timer::PAIR); - data_reduce_thr(D_values, nlocal, nthreads, 1, tid); - - // wait until reduction is complete - sync_threads(); - } - -#if defined(_OPENMP) -#pragma omp master -#endif - { communicationStage = 4; - comm->forward_comm_pair(this); } - - // wait until master thread is done with communication - sync_threads(); - } - - // Stage III - - // Compute force acting on each atom. - for (ii = iifrom; ii < iito; ii++) { - i = ilist[ii]; - xtmp = x[i].x; - ytmp = x[i].y; - ztmp = x[i].z; - itype = type[i]; - fxtmp = fytmp = fztmp = 0.0; - - jlist = firstneigh[i]; - jnum = numneigh[i]; - - // Concentration at site i - double x_i = -1.0; // The value -1 indicates: no concentration dependence for all interactions of atom i. - // It will be replaced by the concentration at site i if atom i is either A or B. - - double D_i, h_prime_i; - - // This if-clause is only required for ternary alloys. - if((itype == speciesA || itype == speciesB) && rho[i] != 0.0) { - - // Compute local concentration at site i. - x_i = rhoB[i]/rho[i]; - ASSERT(x_i >= 0 && x_i<=1.0); - - if(CDEAMVERSION == 1) { - // Calculate derivative of h(x_i) polynomial function. - h_prime_i = evalHprime(x_i); - D_i = D_values[i] * h_prime_i / (2.0 * rho[i] * rho[i]); - } else if(CDEAMVERSION == 2) { - D_i = D_values[i]; - } else { - ASSERT(false); - } - } - - for(jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= NEIGHMASK; - - delx = xtmp - x[j].x; - dely = ytmp - x[j].y; - delz = ztmp - x[j].z; - rsq = delx*delx + dely*dely + delz*delz; - - if(rsq < cutforcesq) { - jtype = type[j]; - double r = sqrt(rsq); - const EAMTableIndex index = radiusToTableIndex(r); - - // rhoip = derivative of (density at atom j due to atom i) - // rhojp = derivative of (density at atom i due to atom j) - // psip needs both fp[i] and fp[j] terms since r_ij appears in two - // terms of embed eng: Fi(sum rho_ij) and Fj(sum rho_ji) - // hence embed' = Fi(sum rho_ij) rhojp + Fj(sum rho_ji) rhoip - rhoip = RhoPrimeOfR(index, itype, jtype); - rhojp = RhoPrimeOfR(index, jtype, itype); - fpair = fp[i]*rhojp + fp[j]*rhoip; - recip = 1.0/r; - - double x_j = -1; // The value -1 indicates: no concentration dependence for this i-j pair - // because atom j is not of species A nor B. - - // This code line is required for ternary alloy. - if(jtype == speciesA || jtype == speciesB) { - ASSERT(rho[i] != 0.0); - ASSERT(rho[j] != 0.0); - - // Compute local concentration at site j. - x_j = rhoB[j]/rho[j]; - ASSERT(x_j >= 0 && x_j<=1.0); - - double D_j; - if(CDEAMVERSION == 1) { - // Calculate derivative of h(x_j) polynomial function. - double h_prime_j = evalHprime(x_j); - D_j = D_values[j] * h_prime_j / (2.0 * rho[j] * rho[j]); - } else if(CDEAMVERSION == 2) { - D_j = D_values[j]; - } else { - ASSERT(false); - } - double t2 = -rhoB[j]; - if(itype == speciesB) t2 += rho[j]; - fpair += D_j * rhoip * t2; - } - - // This if-clause is only required for a ternary alloy. - // Actually we don't need it at all because D_i should be zero anyway if - // atom i has no concentration dependent interactions (because it is not species A or B). - if(x_i != -1.0) { - double t1 = -rhoB[i]; - if(jtype == speciesB) t1 += rho[i]; - fpair += D_i * rhojp * t1; - } - - double phip; - double phi = PhiOfR(index, itype, jtype, recip, phip); - if(itype == jtype || x_i == -1.0 || x_j == -1.0) { - // Case of no concentration dependence. - fpair += phip; - } else { - // We have a concentration dependence for the i-j interaction. - double h; - if(CDEAMVERSION == 1) { - // Calculate h(x_i) polynomial function. - double h_i = evalH(x_i); - // Calculate h(x_j) polynomial function. - double h_j = evalH(x_j); - h = 0.5 * (h_i + h_j); - } else if(CDEAMVERSION == 2) { - // Average concentration. - double x_ij = 0.5 * (x_i + x_j); - // Calculate h(x_ij) polynomial function. - h = evalH(x_ij); - } else { - ASSERT(false); - } - fpair += h * phip; - phi *= h; - } - - // Divide by r_ij and negate to get forces from gradient. - fpair /= -r; - - fxtmp += delx*fpair; - fytmp += dely*fpair; - fztmp += delz*fpair; - if(NEWTON_PAIR || j < nlocal) { - f[j].x -= delx*fpair; - f[j].y -= dely*fpair; - f[j].z -= delz*fpair; - } - - if(EFLAG) evdwl = phi; - if(EVFLAG) ev_tally_thr(this,i,j,nlocal,NEWTON_PAIR,evdwl,0.0, - fpair,delx,dely,delz,thr); - } - } - f[i].x += fxtmp; - f[i].y += fytmp; - f[i].z += fztmp; - } -} - -/* ---------------------------------------------------------------------- */ - -double PairEAMCDOMP::memory_usage() -{ - double bytes = memory_usage_thr(); - bytes += PairEAMCD::memory_usage(); - - return bytes; -} diff --git a/src/USER-OMP/pair_eam_cd_omp.h b/src/USER-OMP/pair_eam_cd_omp.h deleted file mode 100644 index d46a5383f5..0000000000 --- a/src/USER-OMP/pair_eam_cd_omp.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: Axel Kohlmeyer (Temple U) -------------------------------------------------------------------------- */ - -#ifdef PAIR_CLASS - -PairStyle(eam/cd/omp,PairEAMCD_OneSiteOMP) -PairStyle(eam/cd/old/omp,PairEAMCD_TwoSiteOMP) - -#else - -#ifndef LMP_PAIR_EAM_CD_OMP_H -#define LMP_PAIR_EAM_CD_OMP_H - -#include "pair_eam_cd.h" -#include "thr_omp.h" - -namespace LAMMPS_NS { - -class PairEAMCDOMP : public PairEAMCD, public ThrOMP { - - public: - PairEAMCDOMP(class LAMMPS *, int); - - virtual void compute(int, int); - virtual double memory_usage(); - - private: - template - void eval(int iifrom, int iito, ThrData * const thr); -}; - - /// The one-site concentration formulation of CD-EAM. - class PairEAMCD_OneSiteOMP : public PairEAMCDOMP - { - public: - /// Constructor. - PairEAMCD_OneSiteOMP(class LAMMPS* lmp) : PairEAM(lmp), PairEAMCDOMP(lmp, 1) {} - }; - - /// The two-site concentration formulation of CD-EAM. - class PairEAMCD_TwoSiteOMP : public PairEAMCDOMP - { - public: - /// Constructor. - PairEAMCD_TwoSiteOMP(class LAMMPS* lmp) : PairEAM(lmp), PairEAMCDOMP(lmp, 2) {} - }; - -} - -#endif -#endif diff --git a/src/USER-OMP/pair_eam_fs_omp.cpp b/src/USER-OMP/pair_eam_fs_omp.cpp index d1014c5a14..71d58469c8 100644 --- a/src/USER-OMP/pair_eam_fs_omp.cpp +++ b/src/USER-OMP/pair_eam_fs_omp.cpp @@ -25,11 +25,11 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" using namespace LAMMPS_NS; -#define MAXLINE 1024 - /* ---------------------------------------------------------------------- */ PairEAMFSOMP::PairEAMFSOMP(LAMMPS *lmp) : PairEAMOMP(lmp) @@ -117,99 +117,113 @@ void PairEAMFSOMP::read_file(char *filename) { Fs *file = fs; - // open potential file + // read potential file + if(comm->me == 0) { + PotentialFileReader reader(PairEAM::lmp, filename, "EAM"); - int me = comm->me; - FILE *fptr; - char line[MAXLINE]; + try { + reader.skip_line(); + reader.skip_line(); + reader.skip_line(); - if (me == 0) { - fptr = force->open_potential(filename); - if (fptr == NULL) { - char str[128]; - snprintf(str,128,"Cannot open EAM potential file %s",filename); - error->one(FLERR,str); + // extract element names from nelements line + ValueTokenizer values = reader.next_values(1); + file->nelements = values.next_int(); + + if (values.count() != file->nelements + 1) + error->one(FLERR,"Incorrect element names in EAM potential file"); + + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) { + const std::string word = values.next_string(); + const int n = word.length() + 1; + file->elements[i] = new char[n]; + strcpy(file->elements[i], word.c_str()); + } + + // + + values = reader.next_values(5); + file->nrho = values.next_int(); + file->drho = values.next_double(); + file->nr = values.next_int(); + file->dr = values.next_double(); + file->cut = values.next_double(); + + if ((file->nrho <= 0) || (file->nr <= 0) || (file->dr <= 0.0)) + error->one(FLERR,"Invalid EAM potential file"); + + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); + + for (int i = 0; i < file->nelements; i++) { + values = reader.next_values(2); + values.next_int(); // ignore + file->mass[i] = values.next_double(); + + reader.next_dvector(&file->frho[i][1], file->nrho); + + for (int j = 0; j < file->nelements; j++) { + reader.next_dvector(&file->rhor[i][j][1], file->nr); + } + } + + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + reader.next_dvector(&file->z2r[i][j][1], file->nr); + } + } + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } } - // read and broadcast header - // extract element names from nelements line + // broadcast potential information + MPI_Bcast(&file->nelements, 1, MPI_INT, 0, world); - int n; - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - n = strlen(line) + 1; + MPI_Bcast(&file->nrho, 1, MPI_INT, 0, world); + MPI_Bcast(&file->drho, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->nr, 1, MPI_INT, 0, world); + MPI_Bcast(&file->dr, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->cut, 1, MPI_DOUBLE, 0, world); + + // allocate memory on other procs + if (comm->me != 0) { + file->elements = new char*[file->nelements]; + for (int i = 0; i < file->nelements; i++) file->elements[i] = nullptr; + memory->create(file->mass, file->nelements, "pair:mass"); + memory->create(file->frho, file->nelements, file->nrho + 1, "pair:frho"); + memory->create(file->rhor, file->nelements, file->nelements, file->nr + 1, "pair:rhor"); + memory->create(file->z2r, file->nelements, file->nelements, file->nr + 1, "pair:z2r"); } - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - sscanf(line,"%d",&file->nelements); - int nwords = atom->count_words(line); - if (nwords != file->nelements + 1) - error->all(FLERR,"Incorrect element names in EAM potential file"); - - char **words = new char*[file->nelements+1]; - nwords = 0; - strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - file->elements = new char*[file->nelements]; + // broadcast file->elements string array for (int i = 0; i < file->nelements; i++) { - n = strlen(words[i]) + 1; - file->elements[i] = new char[n]; - strcpy(file->elements[i],words[i]); - } - delete [] words; - - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - sscanf(line,"%d %lg %d %lg %lg", - &file->nrho,&file->drho,&file->nr,&file->dr,&file->cut); + int n; + if (comm->me == 0) n = strlen(file->elements[i]) + 1; + MPI_Bcast(&n, 1, MPI_INT, 0, world); + if (comm->me != 0) file->elements[i] = new char[n]; + MPI_Bcast(file->elements[i], n, MPI_CHAR, 0, world); } - MPI_Bcast(&file->nrho,1,MPI_INT,0,world); - MPI_Bcast(&file->drho,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->nr,1,MPI_INT,0,world); - MPI_Bcast(&file->dr,1,MPI_DOUBLE,0,world); - MPI_Bcast(&file->cut,1,MPI_DOUBLE,0,world); + // broadcast file->mass, frho, rhor + for (int i = 0; i < file->nelements; i++) { + MPI_Bcast(&file->mass[i], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&file->frho[i][1], file->nrho, MPI_DOUBLE, 0, world); - file->mass = new double[file->nelements]; - memory->create(file->frho,file->nelements,file->nrho+1, - "pair:frho"); - memory->create(file->rhor,file->nelements,file->nelements, - file->nr+1,"pair:rhor"); - memory->create(file->z2r,file->nelements,file->nelements, - file->nr+1,"pair:z2r"); - - int i,j,tmp; - for (i = 0; i < file->nelements; i++) { - if (me == 0) { - utils::sfgets(FLERR,line,MAXLINE,fptr,filename,error); - sscanf(line,"%d %lg",&tmp,&file->mass[i]); - } - MPI_Bcast(&file->mass[i],1,MPI_DOUBLE,0,world); - - if (me == 0) grab(fptr,file->nrho,&file->frho[i][1]); - MPI_Bcast(&file->frho[i][1],file->nrho,MPI_DOUBLE,0,world); - - for (j = 0; j < file->nelements; j++) { - if (me == 0) grab(fptr,file->nr,&file->rhor[i][j][1]); - MPI_Bcast(&file->rhor[i][j][1],file->nr,MPI_DOUBLE,0,world); + for (int j = 0; j < file->nelements; j++) { + MPI_Bcast(&file->rhor[i][j][1], file->nr, MPI_DOUBLE, 0, world); } } - for (i = 0; i < file->nelements; i++) - for (j = 0; j <= i; j++) { - if (me == 0) grab(fptr,file->nr,&file->z2r[i][j][1]); - MPI_Bcast(&file->z2r[i][j][1],file->nr,MPI_DOUBLE,0,world); + // broadcast file->z2r + for (int i = 0; i < file->nelements; i++) { + for (int j = 0; j <= i; j++) { + MPI_Bcast(&file->z2r[i][j][1], file->nr, MPI_DOUBLE, 0, world); } - - // close the potential file - - if (me == 0) fclose(fptr); + } } /* ---------------------------------------------------------------------- diff --git a/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp index 1c8e4c3e6b..f357fd9068 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp @@ -125,7 +125,6 @@ void PairLJCharmmCoulCharmmImplicitOMP::eval(int iifrom, int iito, ThrData * con dely = ytmp - x[j].y; delz = ztmp - x[j].z; rsq = delx*delx + dely*dely + delz*delz; - jtype = type[j]; if (rsq < cut_bothsq) { r2inv = 1.0/rsq; @@ -137,7 +136,7 @@ void PairLJCharmmCoulCharmmImplicitOMP::eval(int iifrom, int iito, ThrData * con (cut_coulsq + 2.0*rsq - 3.0*cut_coul_innersq) * invdenom_coul; switch2 = 12.0*rsq * (cut_coulsq-rsq) * (rsq-cut_coul_innersq) * invdenom_coul; - forcecoul *= switch1 + switch2; + forcecoul *= switch1 + 0.5*switch2; } forcecoul *= factor_coul; } else forcecoul = 0.0; diff --git a/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp index 9a0b44c1ec..0000e63cda 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp @@ -137,7 +137,7 @@ void PairLJCharmmCoulMSMOMP::eval(int iifrom, int iito, ThrData * const thr) const double prefactor = qqrd2e * qtmp*q[j]/r; const double egamma = 1.0 - (r/cut_coul)*force->kspace->gamma(r/cut_coul); const double fgamma = 1.0 + (rsq/cut_coulsq)*force->kspace->dgamma(r/cut_coul); - forcecoul = prefactor * (fgamma - 1.0); + forcecoul = prefactor * fgamma; if (EFLAG) ecoul = prefactor*egamma; if (sbindex) { diff --git a/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp b/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp index c0734e39d6..480e2adae0 100644 --- a/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp +++ b/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp @@ -39,6 +39,7 @@ PairLJClass2CoulLongOMP::PairLJClass2CoulLongOMP(LAMMPS *lmp) : { suffix_flag |= Suffix::OMP; respa_enable = 0; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ @@ -85,8 +86,9 @@ void PairLJClass2CoulLongOMP::compute(int eflag, int vflag) template void PairLJClass2CoulLongOMP::eval(int iifrom, int iito, ThrData * const thr) { - int i,j,ii,jj,jnum,itype,jtype; + int i,j,ii,jj,jnum,itype,jtype,itable; double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double fraction,table; double r,rsq,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; double grij,expm2,prefactor,t,erfc; int *ilist,*jlist,*numneigh,**firstneigh; @@ -137,14 +139,29 @@ void PairLJClass2CoulLongOMP::eval(int iifrom, int iito, ThrData * const thr) r2inv = 1.0/rsq; if (rsq < cut_coulsq) { - r = sqrt(rsq); - grij = g_ewald * r; - expm2 = exp(-grij*grij); - t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; - prefactor = qqrd2e * qtmp*q[j]/r; - forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); - if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + if (!ncoultablebits || rsq <= tabinnersq) { + r = sqrt(rsq); + grij = g_ewald * r; + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor = qqrd2e * qtmp*q[j]/r; + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + forcecoul = qtmp*q[j] * table; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } } else forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { @@ -168,7 +185,12 @@ void PairLJClass2CoulLongOMP::eval(int iifrom, int iito, ThrData * const thr) if (EFLAG) { if (rsq < cut_coulsq) { - ecoul = prefactor*erfc; + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j] * table; + } if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; } else ecoul = 0.0; diff --git a/src/USER-OMP/pair_tersoff_zbl_omp.cpp b/src/USER-OMP/pair_tersoff_zbl_omp.cpp index 096a42b1a8..6a9232f888 100644 --- a/src/USER-OMP/pair_tersoff_zbl_omp.cpp +++ b/src/USER-OMP/pair_tersoff_zbl_omp.cpp @@ -30,6 +30,9 @@ #include "comm.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "tokenizer.h" +#include "potential_file_reader.h" #include "math_const.h" #include "math_special.h" @@ -37,7 +40,6 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define MAXLINE 1024 #define DELTA 4 /* ---------------------------------------------------------------------- @@ -83,152 +85,108 @@ PairTersoffZBLOMP::PairTersoffZBLOMP(LAMMPS *lmp) : PairTersoffOMP(lmp) void PairTersoffZBLOMP::read_file(char *file) { - int params_per_line = 21; - char **words = new char*[params_per_line+1]; - memory->sfree(params); - params = NULL; - nparams = 0; + params = nullptr; + nparams = maxparam = 0; // open file on proc 0 - FILE *fp; if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open Tersoff potential file %s",file); - error->one(FLERR,str); - } - } + PotentialFileReader reader(PairTersoff::lmp, file, "Tersoff"); + char * line; - // read each line out of file, skipping blank lines or leading '#' - // store line of params if all 3 element tags are in element list + while((line = reader.next_line(NPARAMS_PER_LINE))) { + try { + ValueTokenizer values(line); - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; + std::string iname = values.next_string(); + std::string jname = values.next_string(); + std::string kname = values.next_string(); - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); + // ielement,jelement,kelement = 1st args + // if all 3 args are in element list, then parse this line + // else skip to next entry in file + int ielement, jelement, kelement; - // strip comment, skip line if blank + for (ielement = 0; ielement < nelements; ielement++) + if (iname == elements[ielement]) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (jname == elements[jelement]) break; + if (jelement == nelements) continue; + for (kelement = 0; kelement < nelements; kelement++) + if (kname == elements[kelement]) break; + if (kelement == nelements) continue; - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; - // concatenate additional lines until have params_per_line words + // load up parameter settings and error check their values - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; + if (nparams == maxparam) { + maxparam += DELTA; + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), + "pair:params"); + } + + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].kelement = kelement; + params[nparams].powerm = values.next_double(); + params[nparams].gamma = values.next_double(); + params[nparams].lam3 = values.next_double(); + params[nparams].c = values.next_double(); + params[nparams].d = values.next_double(); + params[nparams].h = values.next_double(); + params[nparams].powern = values.next_double(); + params[nparams].beta = values.next_double(); + params[nparams].lam2 = values.next_double(); + params[nparams].bigb = values.next_double(); + params[nparams].bigr = values.next_double(); + params[nparams].bigd = values.next_double(); + params[nparams].lam1 = values.next_double(); + params[nparams].biga = values.next_double(); + params[nparams].Z_i = values.next_double(); + params[nparams].Z_j = values.next_double(); + params[nparams].ZBLcut = values.next_double(); + params[nparams].ZBLexpscale = values.next_double(); + params[nparams].powermint = int(params[nparams].powerm); + } catch (TokenizerException & e) { + error->one(FLERR, e.what()); } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); + + // currently only allow m exponent of 1 or 3 + if (params[nparams].c < 0.0 || + params[nparams].d < 0.0 || + params[nparams].powern < 0.0 || + params[nparams].beta < 0.0 || + params[nparams].lam2 < 0.0 || + params[nparams].bigb < 0.0 || + params[nparams].bigr < 0.0 || + params[nparams].bigd < 0.0 || + params[nparams].bigd > params[nparams].bigr || + params[nparams].lam1 < 0.0 || + params[nparams].biga < 0.0 || + params[nparams].powerm - params[nparams].powermint != 0.0 || + (params[nparams].powermint != 3 && + params[nparams].powermint != 1) || + params[nparams].gamma < 0.0 || + params[nparams].Z_i < 1.0 || + params[nparams].Z_j < 1.0 || + params[nparams].ZBLcut < 0.0 || + params[nparams].ZBLexpscale < 0.0) + error->one(FLERR,"Illegal Tersoff parameter"); + + nparams++; } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in Tersoff potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next line - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].powerm = atof(words[3]); - params[nparams].gamma = atof(words[4]); - params[nparams].lam3 = atof(words[5]); - params[nparams].c = atof(words[6]); - params[nparams].d = atof(words[7]); - params[nparams].h = atof(words[8]); - params[nparams].powern = atof(words[9]); - params[nparams].beta = atof(words[10]); - params[nparams].lam2 = atof(words[11]); - params[nparams].bigb = atof(words[12]); - params[nparams].bigr = atof(words[13]); - params[nparams].bigd = atof(words[14]); - params[nparams].lam1 = atof(words[15]); - params[nparams].biga = atof(words[16]); - params[nparams].Z_i = atof(words[17]); - params[nparams].Z_j = atof(words[18]); - params[nparams].ZBLcut = atof(words[19]); - params[nparams].ZBLexpscale = atof(words[20]); - - // currently only allow m exponent of 1 or 3 - - params[nparams].powermint = int(params[nparams].powerm); - - if ( - params[nparams].c < 0.0 || - params[nparams].d < 0.0 || - params[nparams].powern < 0.0 || - params[nparams].beta < 0.0 || - params[nparams].lam2 < 0.0 || - params[nparams].bigb < 0.0 || - params[nparams].bigr < 0.0 || - params[nparams].bigd < 0.0 || - params[nparams].bigd > params[nparams].bigr || - params[nparams].biga < 0.0 || - params[nparams].powerm - params[nparams].powermint != 0.0 || - (params[nparams].powermint != 3 && - params[nparams].powermint != 1) || - params[nparams].gamma < 0.0 || - params[nparams].Z_i < 1.0 || - params[nparams].Z_j < 1.0 || - params[nparams].ZBLcut < 0.0 || - params[nparams].ZBLexpscale < 0.0) - error->all(FLERR,"Illegal Tersoff parameter"); - - nparams++; } - delete [] words; + MPI_Bcast(&nparams, 1, MPI_INT, 0, world); + MPI_Bcast(&maxparam, 1, MPI_INT, 0, world); + + if(comm->me != 0) { + params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params"); + } + + MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world); } /* ---------------------------------------------------------------------- */ @@ -287,8 +245,8 @@ void PairTersoffZBLOMP::repulsive(Param *param, double rsq, double &fforce, 0.9423*0.5099*exp(-0.9423*r_ov_a) - 0.4029*0.2802*exp(-0.4029*r_ov_a) - 0.2016*0.02817*exp(-0.2016*r_ov_a)); - double fforce_ZBL = premult*-rsq* phi + premult/r*dphi; - double eng_ZBL = premult/r*phi; + double fforce_ZBL = premult*-phi/rsq + premult*dphi/r; + double eng_ZBL = premult*(1.0/r)*phi; // combine two parts with smoothing by Fermi-like function diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index e1f0ea0bfe..3a52bbaaa1 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -82,6 +82,7 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : error->all(FLERR,"Incompatible API version for PLUMED in fix plumed. " "Only Plumed 2.4.x, 2.5.x, and 2.6.x are tested and supported."); +#if !defined(MPI_STUBS) // If the -partition option is activated then enable // inter-partition communication @@ -108,7 +109,6 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : // whereas if partitions are not defined then world is equal to // MPI_COMM_WORLD. -#if !defined(MPI_STUBS) // plumed does not know about LAMMPS using the MPI STUBS library and will // fail if this is called under these circumstances p->cmd("setMPIComm",&world); diff --git a/src/USER-QTB/fix_qbmsst.cpp b/src/USER-QTB/fix_qbmsst.cpp index 5ac611b13e..d58c917308 100644 --- a/src/USER-QTB/fix_qbmsst.cpp +++ b/src/USER-QTB/fix_qbmsst.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include "atom.h" #include "force.h" #include "update.h" @@ -34,6 +35,7 @@ #include "kspace.h" #include "math_const.h" #include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -98,58 +100,71 @@ FixQBMSST::FixQBMSST(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"q") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - qmass = atof(arg[iarg+1]); if (qmass < 0.0) error->all(FLERR,"Fix qbmsst qmass must be >= 0.0"); + qmass = force->numeric(FLERR,arg[iarg+1]); + if (qmass < 0.0) error->all(FLERR,"Fix qbmsst qmass must be >= 0.0"); iarg += 2; } else if (strcmp(arg[iarg],"mu") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - mu = atof(arg[iarg+1]); if (mu < 0.0) error->all(FLERR,"Fix qbmsst mu must be >= 0.0"); + mu = force->numeric(FLERR,arg[iarg+1]); + if (mu < 0.0) error->all(FLERR,"Fix qbmsst mu must be >= 0.0"); iarg += 2; } else if (strcmp(arg[iarg],"p0") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - p0 = atof(arg[iarg+1]); if (p0 < 0.0) error->all(FLERR,"Fix qbmsst p0 must be >= 0.0"); + p0 = force->numeric(FLERR,arg[iarg+1]); + if (p0 < 0.0) error->all(FLERR,"Fix qbmsst p0 must be >= 0.0"); p0_set = 1; iarg += 2; } else if (strcmp(arg[iarg],"v0") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - v0 = atof(arg[iarg+1]); if (v0 < 0.0) error->all(FLERR,"Fix qbmsst v0 must be >= 0.0"); + v0 = force->numeric(FLERR,arg[iarg+1]); + if (v0 < 0.0) error->all(FLERR,"Fix qbmsst v0 must be >= 0.0"); v0_set = 1; iarg += 2; } else if (strcmp(arg[iarg],"e0") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - e0 = atof(arg[iarg+1]); + e0 = force->numeric(FLERR,arg[iarg+1]); e0_set = 1; iarg += 2; } else if (strcmp(arg[iarg],"tscale") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - tscale = atof(arg[iarg+1]); if (tscale < 0.0 || tscale > 1.0) error->all(FLERR,"Fix qbmsst tscale must satisfy 0 <= tscale < 1"); + tscale = force->numeric(FLERR,arg[iarg+1]); + if (tscale < 0.0 || tscale > 1.0) error->all(FLERR,"Fix qbmsst tscale must satisfy 0 <= tscale < 1"); iarg += 2; } else if (strcmp(arg[iarg],"damp") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - t_period = atof(arg[iarg+1]); if (t_period <= 0.0) error->all(FLERR,"Fix qbmsst damp must be > 0.0"); fric_coef = 1/t_period; + t_period = force->numeric(FLERR,arg[iarg+1]); + if (t_period <= 0.0) error->all(FLERR,"Fix qbmsst damp must be > 0.0"); + fric_coef = 1/t_period; iarg += 2; } else if (strcmp(arg[iarg],"seed") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - seed = atof(arg[iarg+1]); if (seed <= 0) error->all(FLERR,"Fix qbmsst seed must be a positive integer"); + seed = force->inumeric(FLERR,arg[iarg+1]); + if (seed <= 0) error->all(FLERR,"Fix qbmsst seed must be a positive integer"); iarg += 2; } else if (strcmp(arg[iarg],"f_max") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - f_max = atof(arg[iarg+1]); if (f_max <= 0) error->all(FLERR,"Fix qbmsst f_max must be > 0.0"); + f_max = force->numeric(FLERR,arg[iarg+1]); + if (f_max <= 0) error->all(FLERR,"Fix qbmsst f_max must be > 0.0"); iarg += 2; } else if (strcmp(arg[iarg],"N_f") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - N_f = atof(arg[iarg+1]); if (N_f <= 0) error->all(FLERR,"Fix qbmsst N_f must be a positive integer"); + N_f = force->inumeric(FLERR,arg[iarg+1]); + if (N_f <= 0) error->all(FLERR,"Fix qbmsst N_f must be a positive integer"); iarg += 2; } else if (strcmp(arg[iarg],"eta") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - eta = atof(arg[iarg+1]); if (eta <= 0) error->all(FLERR,"Fix qbmsst eta must be >= 0.0"); + eta = force->numeric(FLERR,arg[iarg+1]); + if (eta <= 0) error->all(FLERR,"Fix qbmsst eta must be >= 0.0"); iarg += 2; } else if (strcmp(arg[iarg],"beta") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - beta = atof(arg[iarg+1]); if (beta <= 0) error->all(FLERR,"Fix qbmsst beta must be a positive integer"); + beta = force->inumeric(FLERR,arg[iarg+1]); + if (beta <= 0) error->all(FLERR,"Fix qbmsst beta must be a positive integer"); iarg += 2; } else if (strcmp(arg[iarg],"T_init") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qbmsst command"); - t_init = atof(arg[iarg+1]); if (t_init <= 0) error->all(FLERR,"Fix qbmsst T_init must be >= 0.0"); + t_init = force->numeric(FLERR,arg[iarg+1]); + if (t_init <= 0) error->all(FLERR,"Fix qbmsst T_init must be >= 0.0"); iarg += 2; } else error->all(FLERR,"Illegal fix qbmsst command"); } @@ -157,48 +172,32 @@ FixQBMSST::FixQBMSST(LAMMPS *lmp, int narg, char **arg) : // check for periodicity in controlled dimensions if (domain->nonperiodic) error->all(FLERR,"Fix qbmsst requires a periodic box"); + maxexchange = 6*N_f+3; + // comments if (comm->me == 0) { - if (screen) { - fprintf(screen,"QBMSST parameters:\n"); - if (direction == 0) fprintf(screen," Shock in x direction\n"); - else if (direction == 1) fprintf(screen," Shock in y direction\n"); - else if (direction == 2) fprintf(screen," Shock in z direction\n"); + std::string msg = "QBMSST parameters:\n"; - fprintf(screen," Cell mass-like parameter qmass (units of mass^2/length^4) = %12.5e\n", qmass); - fprintf(screen," Shock velocity = %12.5e\n", velocity); - fprintf(screen," Artificial viscosity (units of mass/length/time) = %12.5e\n", mu); + if (direction == 0) msg += " Shock in x direction\n"; + else if (direction == 1) msg += " Shock in y direction\n"; + else if (direction == 2) msg += " Shock in z direction\n"; - if (p0_set) - fprintf(screen," Initial pressure specified to be %12.5e\n", p0); - else fprintf(screen," Initial pressure calculated on first step\n"); - if (v0_set) - fprintf(screen," Initial volume specified to be %12.5e\n", v0); - else fprintf(screen," Initial volume calculated on first step\n"); - if (e0_set) - fprintf(screen," Initial energy specified to be %12.5e\n", e0); - else fprintf(screen," Initial energy calculated on first step\n"); - } - if (logfile) { - fprintf(logfile,"QBMSST parameters:\n"); - if (direction == 0) fprintf(logfile," Shock in x direction\n"); - else if (direction == 1) fprintf(logfile," Shock in y direction\n"); - else if (direction == 2) fprintf(logfile," Shock in z direction\n"); + msg += fmt::format(" Cell mass-like parameter qmass " + "(units of mass^2/length^4) = {:12.5e}\n", qmass); + msg += fmt::format(" Shock velocity = {:12.5e}\n", velocity); + msg += fmt::format(" Artificial viscosity (units of " + "mass/length/time) = {:12.5e}\n", mu); - fprintf(logfile," Cell mass-like parameter qmass (units of mass^2/length^4) = %12.5e\n", qmass); - fprintf(logfile," Shock velocity = %12.5e\n", velocity); - fprintf(logfile," Artificial viscosity (units of mass/length/time) = %12.5e\n", mu); - - if (p0_set) - fprintf(logfile," Initial pressure specified to be %12.5e\n", p0); - else fprintf(logfile," Initial pressure calculated on first step\n"); - if (v0_set) - fprintf(logfile," Initial volume specified to be %12.5e\n", v0); - else fprintf(logfile," Initial volume calculated on first step\n"); - if (e0_set) - fprintf(logfile," Initial energy specified to be %12.5e\n", e0); - else fprintf(logfile," Initial energy calculated on first step\n"); - } + if (p0_set) + msg += fmt::format(" Initial pressure specified to be {:12.5e}\n", p0); + else msg += " Initial pressure calculated on first step\n"; + if (v0_set) + msg += fmt::format(" Initial volume specified to be {:12.5e}\n", v0); + else msg += " Initial volume calculated on first step\n"; + if (e0_set) + msg += fmt::format(" Initial energy specified to be {:12.5e}\n", e0); + else msg += " Initial energy calculated on first step\n"; + utils::logmesg(lmp,msg); } // create a new compute temp style @@ -363,14 +362,17 @@ void FixQBMSST::init() //set up the h time step for updating the random force \delta{}h=\frac{\pi}{\Omega_{max}} if (int(1.0/(2*f_max*dtv)) == 0) { - if (comm->me == 0) printf ("Warning: Either f_max is too high or the time step is too big, setting f_max to be 1/timestep!\n"); + if (comm->me == 0) error->warning(FLERR,"Either f_max is too high or the time step " + "is too big, setting f_max to be 1/timestep!\n"); h_timestep=dtv; alpha=1; } else { alpha=int(1.0/(2*f_max*dtv)); h_timestep=alpha*dtv; } - if (comm->me == 0) printf ("The effective maximum frequncy is now %f inverse time unit with alpha value as %d!\n", 0.5/h_timestep, alpha); + if (comm->me == 0 && screen) + fmt::print(screen,"The effective maximum frequency is now {} inverse time unit " + "with alpha value as {}!\n", 0.5/h_timestep, alpha); //gfactor is the random force \sqrt{\frac{2\gamma{}m_{i}}{\alpha*\delta{}t}}, \sqrt{12} makes the random array variance equal to unit. for (int i = 1; i <= atom->ntypes; i++) { @@ -432,20 +434,16 @@ void FixQBMSST::setup(int /*vflag*/) if ( v0_set == 0 ) { v0 = compute_vol(); v0_set = 1; - if (comm->me == 0) { - if ( screen ) fprintf(screen,"Fix QBMSST v0 = %12.5e\n", v0); - if ( logfile ) fprintf(logfile,"Fix QBMSST v0 = %12.5e\n", v0); - } + if (comm->me == 0) + utils::logmesg(lmp,fmt::format("Fix QBMSST v0 = {:12.5e}\n", v0)); } if ( p0_set == 0 ) { p0 = p_current[direction]; p0_set = 1; - if ( comm->me == 0 ) { - if ( screen ) fprintf(screen,"Fix QBMSST p0 = %12.5e\n", p0); - if ( logfile ) fprintf(logfile,"Fix QBMSST p0 = %12.5e\n", p0); - } + if ( comm->me == 0 ) + utils::logmesg(lmp,fmt::format("Fix QBMSST p0 = {:12.5e}\n", p0)); } if ( e0_set == 0 ) { @@ -453,11 +451,8 @@ void FixQBMSST::setup(int /*vflag*/) e0_set = 1; old_eavg = e0; - if ( comm->me == 0 ) { - if ( screen ) fprintf(screen,"Fix QBMSST e0 = to be %12.5e\n",e0); - if ( logfile ) fprintf(logfile,"Fix QBMSST e0 = to be %12.5e\n",e0); - } - + if ( comm->me == 0 ) + utils::logmesg(lmp,fmt::format("Fix QBMSST e0 = to be {:12.5e}\n",e0)); } temperature->compute_vector(); @@ -476,16 +471,10 @@ void FixQBMSST::setup(int /*vflag*/) omega[direction]=-1*sqrt(fac1); double fac2 = omega[direction]/v0; - if ( comm->me == 0 && tscale != 1.0) { - if ( screen ) - fprintf(screen,"Fix QBMSST initial strain rate of %12.5e established " - "by reducing temperature by factor of %12.5e\n", - fac2,tscale); - if ( logfile ) - fprintf(logfile,"Fix QBMSST initial strain rate of %12.5e established " - "by reducing temperature by factor of %12.5e\n", - fac2,tscale); - } + if ( comm->me == 0 && tscale != 1.0) + utils::logmesg(lmp,fmt::format("Fix QBMSST initial strain rate of {:12.5e} " + "established by reducing temperature by " + "factor of {:12.5e}\n",fac2,tscale)); for (int i = 0; i < atom->nlocal; i++) { if (mask[i] & groupbit) { for (int k = 0; k < 3; k++ ) { @@ -531,30 +520,31 @@ void FixQBMSST::initial_integrate(int /*vflag*/) // decide if the qtb temperature need to be updated or not if (counter_l == 0) { t_current -= dtv*fric_coef*eta*beta*(old_eavg-e0)/(3*ntotal*boltz); - old_eavg = 0;//clear old energy average - if (t_current < 0.0) t_current=0; + if (t_current > 0.0) { + old_eavg = 0;//clear old energy average - // load omega_H with calculated spectrum at a specific temperature (corrected spectrum), omega_H is the Fourier transformation of time_H - for (int k = 0; k < 2*N_f; k++) { - double f_k=(k-N_f)/(2*N_f*h_timestep); //\omega_k=\frac{2\pi}{\delta{}h}\frac{k}{2N_f} for k from -N_f to N_f-1 - if(k == N_f) { - omega_H[k]=sqrt(force->boltz * t_current); - } else { - double energy_k= force->hplanck * fabs(f_k); - omega_H[k]=sqrt( energy_k * (0.5+1.0/( exp(energy_k/(force->boltz * t_current)) - 1.0 )) ); - omega_H[k]*=alpha*sin((k-N_f)*MY_PI/(2*alpha*N_f))/sin((k-N_f)*MY_PI/(2*N_f)); - } - } - - // construct the signal filter H, filter has the unit of of sqrt(energy) \sqrt{2N_f}^{-1}H\left(t_n\right) - for (int n = 0; n < 2*N_f; n++) { - time_H[n] = 0; - double t_n=(n-N_f); + // load omega_H with calculated spectrum at a specific temperature (corrected spectrum), omega_H is the Fourier transformation of time_H for (int k = 0; k < 2*N_f; k++) { - double omega_k=(k-N_f)*MY_PI/N_f; - time_H[n] += omega_H[k]*(cos(omega_k*t_n)); + double f_k=(k-N_f)/(2*N_f*h_timestep); //\omega_k=\frac{2\pi}{\delta{}h}\frac{k}{2N_f} for k from -N_f to N_f-1 + if(k == N_f) { + omega_H[k]=sqrt(force->boltz * t_current); + } else { + double energy_k= force->hplanck * fabs(f_k); + omega_H[k]=sqrt( energy_k * (0.5+1.0/( exp(energy_k/(force->boltz * t_current)) - 1.0 )) ); + omega_H[k]*=alpha*sin((k-N_f)*MY_PI/(2*alpha*N_f))/sin((k-N_f)*MY_PI/(2*N_f)); + } + } + + // construct the signal filter H, filter has the unit of of sqrt(energy) \sqrt{2N_f}^{-1}H\left(t_n\right) + for (int n = 0; n < 2*N_f; n++) { + time_H[n] = 0; + double t_n=(n-N_f); + for (int k = 0; k < 2*N_f; k++) { + double omega_k=(k-N_f)*MY_PI/N_f; + time_H[n] += omega_H[k]*(cos(omega_k*t_n)); + } + time_H[n]/=(2.0*N_f); } - time_H[n]/=(2.0*N_f); } } @@ -1170,11 +1160,12 @@ void FixQBMSST::copy_arrays(int i, int j, int /*delflag*/) ------------------------------------------------------------------------- */ int FixQBMSST::pack_exchange(int i, double *buf) { - for (int m = 0; m < 2*N_f; m++) buf[m] = random_array_0[i][m]; - for (int m = 0; m < 2*N_f; m++) buf[m+2*N_f] = random_array_1[i][m]; - for (int m = 0; m < 2*N_f; m++) buf[m+4*N_f] = random_array_2[i][m]; - for (int m = 0; m < 3; m++) buf[m+6*N_f] = fran[i][m]; - return 6*N_f+3; + int n = 0; + for (int m = 0; m < 2*N_f; m++) buf[n++] = random_array_0[i][m]; + for (int m = 0; m < 2*N_f; m++) buf[n++] = random_array_1[i][m]; + for (int m = 0; m < 2*N_f; m++) buf[n++] = random_array_2[i][m]; + for (int m = 0; m < 3; m++) buf[n++] = fran[i][m]; + return n; } /* ---------------------------------------------------------------------- @@ -1182,9 +1173,10 @@ int FixQBMSST::pack_exchange(int i, double *buf) ------------------------------------------------------------------------- */ int FixQBMSST::unpack_exchange(int nlocal, double *buf) { - for (int m = 0; m < 2*N_f; m++) random_array_0[nlocal][m] = buf[m]; - for (int m = 0; m < 2*N_f; m++) random_array_1[nlocal][m] = buf[m+2*N_f]; - for (int m = 0; m < 2*N_f; m++) random_array_2[nlocal][m] = buf[m+4*N_f]; - for (int m = 0; m < 3; m++) fran[nlocal][m] = buf[m+6*N_f]; - return 6*N_f+3; + int n = 0; + for (int m = 0; m < 2*N_f; m++) random_array_0[nlocal][m] = buf[n++]; + for (int m = 0; m < 2*N_f; m++) random_array_1[nlocal][m] = buf[n++]; + for (int m = 0; m < 2*N_f; m++) random_array_2[nlocal][m] = buf[n++]; + for (int m = 0; m < 3; m++) fran[nlocal][m] = buf[n++]; + return n; } diff --git a/src/USER-QTB/fix_qtb.cpp b/src/USER-QTB/fix_qtb.cpp index fa15385859..646cf06ce2 100644 --- a/src/USER-QTB/fix_qtb.cpp +++ b/src/USER-QTB/fix_qtb.cpp @@ -32,6 +32,8 @@ #include "math_const.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -62,27 +64,34 @@ FixQTB::FixQTB(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"temp") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qtb command"); - t_target = atof(arg[iarg+1]); if (t_target < 0.0) error->all(FLERR,"Fix qtb temp must be >= 0.0"); + t_target = force->numeric(FLERR,arg[iarg+1]); + if (t_target < 0.0) error->all(FLERR,"Fix qtb temp must be >= 0.0"); iarg += 2; } else if (strcmp(arg[iarg],"damp") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qtb command"); - t_period = atof(arg[iarg+1]); if (t_period <= 0.0) error->all(FLERR,"Fix qtb damp must be > 0.0"); fric_coef = 1/t_period; + t_period = force->numeric(FLERR,arg[iarg+1]); + if (t_period <= 0.0) error->all(FLERR,"Fix qtb damp must be > 0.0"); fric_coef = 1/t_period; iarg += 2; } else if (strcmp(arg[iarg],"seed") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qtb command"); - seed = atof(arg[iarg+1]); if (seed <= 0) error->all(FLERR,"Illegal fix qtb command"); + seed = force->inumeric(FLERR,arg[iarg+1]); + if (seed <= 0) error->all(FLERR,"Illegal fix qtb command"); iarg += 2; } else if (strcmp(arg[iarg],"f_max") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qtb command"); - f_max = atof(arg[iarg+1]); if (f_max <= 0) error->all(FLERR,"Illegal fix qtb command"); + f_max = force->numeric(FLERR,arg[iarg+1]); + if (f_max <= 0) error->all(FLERR,"Illegal fix qtb command"); iarg += 2; } else if (strcmp(arg[iarg],"N_f") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix qtb command"); - N_f = atof(arg[iarg+1]); if (N_f <= 0) error->all(FLERR,"Illegal fix qtb command"); + N_f = force->inumeric(FLERR,arg[iarg+1]); + if (N_f <= 0) error->all(FLERR,"Illegal fix qtb command"); iarg += 2; } else error->all(FLERR,"Illegal fix qtb command"); } + maxexchange = 6*N_f+3; + // allocate qtb gfactor1 = NULL; gfactor3 = NULL; @@ -105,10 +114,6 @@ FixQTB::FixQTB(LAMMPS *lmp, int narg, char **arg) : // allocate random-arrays and fran grow_arrays(atom->nmax); atom->add_callback(0); - // memory->create(random_array_0,atom->nmax+300,2*N_f,"qtb:random_array_0"); - // memory->create(random_array_1,atom->nmax+300,2*N_f,"qtb:random_array_1"); - // memory->create(random_array_2,atom->nmax+300,2*N_f,"qtb:random_array_2"); - // memory->create(fran,atom->nmax+300,3,"qtb:fran"); // allocate omega_H and time_H memory->create(omega_H,2*N_f,"qtb:omega_H"); @@ -160,14 +165,17 @@ void FixQTB::init() //set up the h time step for updating the random force \delta{}h=\frac{\pi}{\Omega_{max}} if (int(1.0/(2*f_max*dtv)) == 0) { - if (comm->me == 0) printf ("Warning: Either f_max is too high or the time step is too big, setting f_max to be 1/timestep!\n"); + if (comm->me == 0) error->warning(FLERR,"Either f_max is too high or the time step " + "is too big, setting f_max to be 1/timestep!\n"); h_timestep=dtv; alpha=1; } else { alpha=int(1.0/(2*f_max*dtv)); h_timestep=alpha*dtv; } - if (comm->me == 0) printf ("The effective maximum frequncy is now %f inverse time unit with alpha value as %d!\n", 0.5/h_timestep, alpha); + if (comm->me == 0 && screen) + fmt::print(screen,"The effective maximum frequency is now {} inverse time unit " + "with alpha value as {}!\n", 0.5/h_timestep, alpha); // set force prefactors if (!atom->rmass) { @@ -404,11 +412,12 @@ void FixQTB::copy_arrays(int i, int j, int /*delflag*/) ------------------------------------------------------------------------- */ int FixQTB::pack_exchange(int i, double *buf) { - for (int m = 0; m < 2*N_f; m++) buf[m] = random_array_0[i][m]; - for (int m = 0; m < 2*N_f; m++) buf[m+2*N_f] = random_array_1[i][m]; - for (int m = 0; m < 2*N_f; m++) buf[m+4*N_f] = random_array_2[i][m]; - for (int m = 0; m < 3; m++) buf[m+6*N_f] = fran[i][m]; - return 6*N_f+3; + int n = 0; + for (int m = 0; m < 2*N_f; m++) buf[n++] = random_array_0[i][m]; + for (int m = 0; m < 2*N_f; m++) buf[n++] = random_array_1[i][m]; + for (int m = 0; m < 2*N_f; m++) buf[n++] = random_array_2[i][m]; + for (int m = 0; m < 3; m++) buf[n++] = fran[i][m]; + return n; } /* ---------------------------------------------------------------------- @@ -416,9 +425,10 @@ int FixQTB::pack_exchange(int i, double *buf) ------------------------------------------------------------------------- */ int FixQTB::unpack_exchange(int nlocal, double *buf) { - for (int m = 0; m < 2*N_f; m++) random_array_0[nlocal][m] = buf[m]; - for (int m = 0; m < 2*N_f; m++) random_array_1[nlocal][m] = buf[m+2*N_f]; - for (int m = 0; m < 2*N_f; m++) random_array_2[nlocal][m] = buf[m+4*N_f]; - for (int m = 0; m < 3; m++) fran[nlocal][m] = buf[m+6*N_f]; - return 6*N_f+3; + int n = 0; + for (int m = 0; m < 2*N_f; m++) random_array_0[nlocal][m] = buf[n++]; + for (int m = 0; m < 2*N_f; m++) random_array_1[nlocal][m] = buf[n++]; + for (int m = 0; m < 2*N_f; m++) random_array_2[nlocal][m] = buf[n++]; + for (int m = 0; m < 3; m++) fran[nlocal][m] = buf[n++]; + return n; } diff --git a/src/USER-QTB/fix_qtb.h b/src/USER-QTB/fix_qtb.h index 8fd14f5c5b..86a91bc9f6 100644 --- a/src/USER-QTB/fix_qtb.h +++ b/src/USER-QTB/fix_qtb.h @@ -47,22 +47,23 @@ class FixQTB : public Fix { private: // qtb parameters - int counter_mu; // counter l and mu - double t_period, fric_coef; // friction coefficient - int seed; // seed for the random number generator - double f_max; // frequency cutoff - int N_f; // number of frequency grid - double t_target; // target qtb temperature + int counter_mu; // counter l and mu + double t_period, fric_coef; // friction coefficient + int seed; // seed for the random number generator + double f_max; // frequency cutoff + int N_f; // number of frequency grid + double t_target; // target qtb temperature char *id_temp; class Compute *temperature; - double h_timestep; // time step to update the random forces - int alpha; // number of time steps to update the random forces - class RanMars *random; // random number generator - double *gfactor1,*gfactor3; // factors of frictions and random forces - double *omega_H,*time_H; // H gives the desired power spectrum - double **random_array_0, **random_array_1, **random_array_2; // random number arrays give independence between atoms and directions + double h_timestep; // time step to update the random forces + int alpha; // number of time steps to update the random forces + class RanMars *random; // random number generator + double *gfactor1,*gfactor3; // factors of frictions and random forces + double *omega_H,*time_H; // H gives the desired power spectrum + // random number arrays give independence between atoms and directions + double **random_array_0, **random_array_1, **random_array_2; int nlevels_respa; - double **fran, fsum[3], fsumall[3]; // random forces and their sums + double **fran, fsum[3], fsumall[3]; // random forces and their sums }; } diff --git a/src/USER-REACTION/README b/src/USER-REACTION/README index f099ace103..ed2e760e64 100644 --- a/src/USER-REACTION/README +++ b/src/USER-REACTION/README @@ -1,4 +1,4 @@ -This package implements the DisARMMD protocol (disarmmd.org) as +This package implements the REACTER protocol (reacter.org) as "fix bond/react." This fix allows for complex topology changes during a running MD simulation, when using classical force fields. Topology changes are defined in pre- and post-reaction molecule @@ -6,7 +6,7 @@ templates and can include creation and deletion of bonds, angles, dihedrals, impropers, atom types, bond types, angle types, dihedral types, improper types, and/or atomic charges. -The DisARMMD protocol is a method for modeling chemical reactions in +The REACTER protocol is a method for modeling chemical reactions in classical molecular dynamics simulations. It was developed to build physically-realistic initial configurations for amorphous or crosslinked materials. Any number of competing or reversible reaction @@ -15,9 +15,9 @@ advanced options currently available include reaction constraints (e.g. angle and Arrhenius constraints), deletion of reaction byproducts or other small molecules, and chiral-sensitive reactions. -The DisARMMD methodology is detailed in: +The REACTER methodology is detailed in: Gissinger et al., Polymer 128, 211-217 (2017) https://doi.org/10.1016/j.polymer.2017.09.038 -This package was created by Jacob Gissinger (info@disarmmd.org), +This package was created by Jacob Gissinger (jrgiss05@gmail.com), while at the NASA Langley Research Center. diff --git a/src/USER-REACTION/fix_bond_react.cpp b/src/USER-REACTION/fix_bond_react.cpp index 39750dd7da..6ba5d1ce49 100644 --- a/src/USER-REACTION/fix_bond_react.cpp +++ b/src/USER-REACTION/fix_bond_react.cpp @@ -62,7 +62,7 @@ static const char cite_fix_bond_react[] = #define BIG 1.0e20 #define DELTA 16 #define MAXGUESS 20 // max # of guesses allowed by superimpose algorithm -#define MAXCONARGS 10 // max # of arguments for any type of constraint + rxnID +#define MAXCONARGS 14 // max # of arguments for any type of constraint + rxnID #define NUMVARVALS 4 // max # of keyword values that have variables as input // various statuses of superimpose algorithm: @@ -1756,7 +1756,7 @@ evaluate constraints: return 0 if any aren't satisfied int FixBondReact::check_constraints() { - tagint atom1,atom2,atom3,atom4; + double x1[3],x2[3],x3[3],x4[3]; double delx,dely,delz,rsq; double delx1,dely1,delz1,delx2,dely2,delz2; double rsq1,rsq2,r1,r2,c,t,prrhob; @@ -1766,36 +1766,37 @@ int FixBondReact::check_constraints() double s,phi; int ANDgate; + tagint atom1,atom2; double **x = atom->x; for (int i = 0; i < nconstraints; i++) { if (constraints[i][0] == rxnID) { if (constraints[i][1] == DISTANCE) { - atom1 = atom->map(glove[(int) constraints[i][2]-1][1]); - atom2 = atom->map(glove[(int) constraints[i][3]-1][1]); - delx = x[atom1][0] - x[atom2][0]; - dely = x[atom1][1] - x[atom2][1]; - delz = x[atom1][2] - x[atom2][2]; + get_IDcoords((int) constraints[i][2], (int) constraints[i][3], x1); + get_IDcoords((int) constraints[i][4], (int) constraints[i][5], x2); + delx = x1[0] - x2[0]; + dely = x1[1] - x2[1]; + delz = x1[2] - x2[2]; domain->minimum_image(delx,dely,delz); // ghost location fix rsq = delx*delx + dely*dely + delz*delz; - if (rsq < constraints[i][4] || rsq > constraints[i][5]) return 0; + if (rsq < constraints[i][6] || rsq > constraints[i][7]) return 0; } else if (constraints[i][1] == ANGLE) { - atom1 = atom->map(glove[(int) constraints[i][2]-1][1]); - atom2 = atom->map(glove[(int) constraints[i][3]-1][1]); - atom3 = atom->map(glove[(int) constraints[i][4]-1][1]); + get_IDcoords((int) constraints[i][2], (int) constraints[i][3], x1); + get_IDcoords((int) constraints[i][4], (int) constraints[i][5], x2); + get_IDcoords((int) constraints[i][6], (int) constraints[i][7], x3); // 1st bond - delx1 = x[atom1][0] - x[atom2][0]; - dely1 = x[atom1][1] - x[atom2][1]; - delz1 = x[atom1][2] - x[atom2][2]; + delx1 = x1[0] - x2[0]; + dely1 = x1[1] - x2[1]; + delz1 = x1[2] - x2[2]; domain->minimum_image(delx1,dely1,delz1); // ghost location fix rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1; r1 = sqrt(rsq1); // 2nd bond - delx2 = x[atom3][0] - x[atom2][0]; - dely2 = x[atom3][1] - x[atom2][1]; - delz2 = x[atom3][2] - x[atom2][2]; + delx2 = x3[0] - x2[0]; + dely2 = x3[1] - x2[1]; + delz2 = x3[2] - x2[2]; domain->minimum_image(delx2,dely2,delz2); // ghost location fix rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2; r2 = sqrt(rsq2); @@ -1805,22 +1806,22 @@ int FixBondReact::check_constraints() c /= r1*r2; if (c > 1.0) c = 1.0; if (c < -1.0) c = -1.0; - if (acos(c) < constraints[i][5] || acos(c) > constraints[i][6]) return 0; + if (acos(c) < constraints[i][8] || acos(c) > constraints[i][9]) return 0; } else if (constraints[i][1] == DIHEDRAL) { // phi calculation from dihedral style harmonic - atom1 = atom->map(glove[(int) constraints[i][2]-1][1]); - atom2 = atom->map(glove[(int) constraints[i][3]-1][1]); - atom3 = atom->map(glove[(int) constraints[i][4]-1][1]); - atom4 = atom->map(glove[(int) constraints[i][5]-1][1]); + get_IDcoords((int) constraints[i][2], (int) constraints[i][3], x1); + get_IDcoords((int) constraints[i][4], (int) constraints[i][5], x2); + get_IDcoords((int) constraints[i][6], (int) constraints[i][7], x3); + get_IDcoords((int) constraints[i][8], (int) constraints[i][9], x4); - vb1x = x[atom1][0] - x[atom2][0]; - vb1y = x[atom1][1] - x[atom2][1]; - vb1z = x[atom1][2] - x[atom2][2]; + vb1x = x1[0] - x2[0]; + vb1y = x1[1] - x2[1]; + vb1z = x1[2] - x2[2]; domain->minimum_image(vb1x,vb1y,vb1z); - vb2x = x[atom3][0] - x[atom2][0]; - vb2y = x[atom3][1] - x[atom2][1]; - vb2z = x[atom3][2] - x[atom2][2]; + vb2x = x3[0] - x2[0]; + vb2y = x3[1] - x2[1]; + vb2z = x3[2] - x2[2]; domain->minimum_image(vb2x,vb2y,vb2z); vb2xm = -vb2x; @@ -1828,9 +1829,9 @@ int FixBondReact::check_constraints() vb2zm = -vb2z; domain->minimum_image(vb2xm,vb2ym,vb2zm); - vb3x = x[atom4][0] - x[atom3][0]; - vb3y = x[atom4][1] - x[atom3][1]; - vb3z = x[atom4][2] - x[atom3][2]; + vb3x = x4[0] - x3[0]; + vb3y = x4[1] - x3[1]; + vb3z = x4[2] - x3[2]; domain->minimum_image(vb3x,vb3y,vb3z); ax = vb1y*vb2zm - vb1z*vb2ym; @@ -1858,15 +1859,15 @@ int FixBondReact::check_constraints() phi = atan2(s,c); ANDgate = 0; - if (constraints[i][6] < constraints[i][7]) { - if (phi > constraints[i][6] && phi < constraints[i][7]) ANDgate = 1; + if (constraints[i][10] < constraints[i][11]) { + if (phi > constraints[i][10] && phi < constraints[i][11]) ANDgate = 1; } else { - if (phi > constraints[i][6] || phi < constraints[i][7]) ANDgate = 1; + if (phi > constraints[i][10] || phi < constraints[i][11]) ANDgate = 1; } - if (constraints[i][8] < constraints[i][9]) { - if (phi > constraints[i][8] && phi < constraints[i][9]) ANDgate = 1; + if (constraints[i][12] < constraints[i][13]) { + if (phi > constraints[i][12] && phi < constraints[i][13]) ANDgate = 1; } else { - if (phi > constraints[i][8] || phi < constraints[i][9]) ANDgate = 1; + if (phi > constraints[i][12] || phi < constraints[i][13]) ANDgate = 1; } if (ANDgate != 1) return 0; } else if (constraints[i][1] == ARRHENIUS) { @@ -1904,6 +1905,42 @@ int FixBondReact::check_constraints() return 1; } +/* ---------------------------------------------------------------------- +return pre-reaction atom or fragment location +fragment: given pre-reacted molID (onemol) and fragID, + return geometric center (of mapped simulation atoms) +------------------------------------------------------------------------- */ + +void FixBondReact::get_IDcoords(int mode, int myID, double *center) +{ + double **x = atom->x; + if (mode == 1) { + int iatom = atom->map(glove[myID-1][1]); + for (int i = 0; i < 3; i++) + center[i] = x[iatom][i]; + } else { + int iref = -1; // choose first atom as reference + int iatom; + int nfragatoms = 0; + for (int i = 0; i < 3; i++) + center[i] = 0; + + for (int i = 0; i < onemol->natoms; i++) { + if (onemol->fragmentmask[myID][i]) { + if (iref == -1) + iref = atom->map(glove[i][1]); + iatom = atom->map(glove[i][1]); + iatom = domain->closest_image(iref,iatom); + for (int j = 0; j < 3; j++) + center[j] += x[iatom][j]; + nfragatoms++; + } + } + for (int i = 0; i < 3; i++) + center[i] /= nfragatoms; + } +} + /* ---------------------------------------------------------------------- compute local temperature: average over all atoms in reaction template ------------------------------------------------------------------------- */ @@ -3255,48 +3292,43 @@ void FixBondReact::ChiralCenters(char *line, int myrxn) void FixBondReact::Constraints(char *line, int myrxn) { double tmp[MAXCONARGS]; - int n = strlen("distance") + 1; - char *constraint_type = new char[n]; + char **strargs; + memory->create(strargs,MAXCONARGS,MAXLINE,"bond/react:strargs"); + char *constraint_type = new char[MAXLINE]; for (int i = 0; i < nconstr; i++) { readline(line); sscanf(line,"%s",constraint_type); constraints[nconstraints][0] = myrxn; if (strcmp(constraint_type,"distance") == 0) { constraints[nconstraints][1] = DISTANCE; - sscanf(line,"%*s %lg %lg %lg %lg",&tmp[0],&tmp[1],&tmp[2],&tmp[3]); - if (tmp[0] > onemol->natoms || tmp[1] > onemol->natoms) - error->one(FLERR,"Bond/react: Invalid template atom ID in map file"); - constraints[nconstraints][2] = tmp[0]; - constraints[nconstraints][3] = tmp[1]; - constraints[nconstraints][4] = tmp[2]*tmp[2]; // using square of distance - constraints[nconstraints][5] = tmp[3]*tmp[3]; + sscanf(line,"%*s %s %s %lg %lg",strargs[0],strargs[1],&tmp[0],&tmp[1]); + readID(strargs[0], nconstraints, 2, 3); + readID(strargs[1], nconstraints, 4, 5); + // cutoffs + constraints[nconstraints][6] = tmp[0]*tmp[0]; // using square of distance + constraints[nconstraints][7] = tmp[1]*tmp[1]; } else if (strcmp(constraint_type,"angle") == 0) { constraints[nconstraints][1] = ANGLE; - sscanf(line,"%*s %lg %lg %lg %lg %lg",&tmp[0],&tmp[1],&tmp[2],&tmp[3],&tmp[4]); - if (tmp[0] > onemol->natoms || tmp[1] > onemol->natoms || tmp[2] > onemol->natoms) - error->one(FLERR,"Bond/react: Invalid template atom ID in map file"); - constraints[nconstraints][2] = tmp[0]; - constraints[nconstraints][3] = tmp[1]; - constraints[nconstraints][4] = tmp[2]; - constraints[nconstraints][5] = tmp[3]/180.0 * MY_PI; - constraints[nconstraints][6] = tmp[4]/180.0 * MY_PI; + sscanf(line,"%*s %s %s %s %lg %lg",strargs[0],strargs[1],strargs[2],&tmp[0],&tmp[1]); + readID(strargs[0], nconstraints, 2, 3); + readID(strargs[1], nconstraints, 4, 5); + readID(strargs[2], nconstraints, 6, 7); + constraints[nconstraints][8] = tmp[0]/180.0 * MY_PI; + constraints[nconstraints][9] = tmp[1]/180.0 * MY_PI; } else if (strcmp(constraint_type,"dihedral") == 0) { constraints[nconstraints][1] = DIHEDRAL; - tmp[6] = 181.0; // impossible range - tmp[7] = 182.0; - sscanf(line,"%*s %lg %lg %lg %lg %lg %lg %lg %lg",&tmp[0],&tmp[1], - &tmp[2],&tmp[3],&tmp[4],&tmp[5],&tmp[6],&tmp[7]); - if (tmp[0] > onemol->natoms || tmp[1] > onemol->natoms || - tmp[2] > onemol->natoms || tmp[3] > onemol->natoms) - error->one(FLERR,"Bond/react: Invalid template atom ID in map file"); - constraints[nconstraints][2] = tmp[0]; - constraints[nconstraints][3] = tmp[1]; - constraints[nconstraints][4] = tmp[2]; - constraints[nconstraints][5] = tmp[3]; - constraints[nconstraints][6] = tmp[4]/180.0 * MY_PI; - constraints[nconstraints][7] = tmp[5]/180.0 * MY_PI; - constraints[nconstraints][8] = tmp[6]/180.0 * MY_PI; - constraints[nconstraints][9] = tmp[7]/180.0 * MY_PI; + tmp[2] = 181.0; // impossible range + tmp[3] = 182.0; + sscanf(line,"%*s %s %s %s %s %lg %lg %lg %lg",strargs[0],strargs[1], + strargs[2],strargs[3],&tmp[0],&tmp[1],&tmp[2],&tmp[3]); + readID(strargs[0], nconstraints, 2, 3); + readID(strargs[1], nconstraints, 4, 5); + readID(strargs[2], nconstraints, 6, 7); + readID(strargs[3], nconstraints, 8, 9); + constraints[nconstraints][10] = tmp[0]/180.0 * MY_PI; + constraints[nconstraints][11] = tmp[1]/180.0 * MY_PI; + constraints[nconstraints][12] = tmp[2]/180.0 * MY_PI; + constraints[nconstraints][13] = tmp[3]/180.0 * MY_PI; } else if (strcmp(constraint_type,"arrhenius") == 0) { constraints[nconstraints][1] = ARRHENIUS; constraints[nconstraints][2] = narrhenius++; @@ -3310,6 +3342,27 @@ void FixBondReact::Constraints(char *line, int myrxn) nconstraints++; } delete [] constraint_type; + memory->destroy(strargs); +} + +/* ---------------------------------------------------------------------- +if ID starts with character, assume it is a pre-reaction molecule fragment ID +otherwise, it is a pre-reaction atom ID +---------------------------------------------------------------------- */ + +void FixBondReact::readID(char *strarg, int iconstr, int mode, int myID) +{ + if (isalpha(strarg[0])) { + constraints[iconstr][mode] = 0; // fragment vs. atom ID flag + int ifragment = onemol->findfragment(strarg); + if (ifragment < 0) error->one(FLERR,"Bond/react: Molecule fragment does not exist"); + constraints[iconstr][myID] = ifragment; + } else { + constraints[iconstr][mode] = 1; // fragment vs. atom ID flag + int iatom = atoi(strarg); + if (iatom > onemol->natoms) error->one(FLERR,"Bond/react: Invalid template atom ID in map file"); + constraints[iconstr][myID] = iatom; + } } void FixBondReact::open(char *file) diff --git a/src/USER-REACTION/fix_bond_react.h b/src/USER-REACTION/fix_bond_react.h index 722a533bbf..e8a4253ce7 100644 --- a/src/USER-REACTION/fix_bond_react.h +++ b/src/USER-REACTION/fix_bond_react.h @@ -147,12 +147,13 @@ class FixBondReact : public Fix { int glove_counter; // used to determine when to terminate Superimpose Algorithm void read(int); - void EdgeIDs(char *,int); - void Equivalences(char *,int); - void CustomEdges(char *,int); - void DeleteAtoms(char *,int); - void ChiralCenters(char *,int); - void Constraints(char *,int); + void EdgeIDs(char *, int); + void Equivalences(char *, int); + void CustomEdges(char *, int); + void DeleteAtoms(char *, int); + void ChiralCenters(char *, int); + void Constraints(char *, int); + void readID(char *, int, int, int); void make_a_guess (); void neighbor_loop(); @@ -161,6 +162,7 @@ class FixBondReact : public Fix { void inner_crosscheck_loop(); void ring_check(); int check_constraints(); + void get_IDcoords(int, int, double *); double get_temperature(); int get_chirality(double[12]); // get handedness given an ordered set of coordinates @@ -288,4 +290,8 @@ E: Bond/react: Variable is not equal-style Self-explanatory. +E: Bond/react: Molecule fragment does not exist + +Self-explanatory. + */ diff --git a/src/USER-REAXC/reaxc_ffield.cpp b/src/USER-REAXC/reaxc_ffield.cpp index c8e097eb1c..b865b48ad3 100644 --- a/src/USER-REAXC/reaxc_ffield.cpp +++ b/src/USER-REAXC/reaxc_ffield.cpp @@ -337,6 +337,8 @@ char Read_Force_Field( FILE *fp, reax_interaction *reax, j = atoi(tmp[0]) - 1; k = atoi(tmp[1]) - 1; + if ((c < 10) || (j < 0) || (k < 0)) + control->error_ptr->all(FLERR, "Inconsistent force field file"); if (j < reax->num_atom_types && k < reax->num_atom_types) { @@ -361,6 +363,8 @@ char Read_Force_Field( FILE *fp, reax_interaction *reax, /* line 2 */ fgets(s,MAX_LINE,fp); c=Tokenize(s,&tmp); + if (c < 8) + control->error_ptr->all(FLERR, "Inconsistent force field file"); val = atof(tmp[0]); reax->tbp[j][k].p_be2 = val; reax->tbp[k][j].p_be2 = val; @@ -491,6 +495,9 @@ char Read_Force_Field( FILE *fp, reax_interaction *reax, j = atoi(tmp[0]) - 1; k = atoi(tmp[1]) - 1; + if ((c < (lgflag ? 9 : 8)) || (j < 0) || (k < 0)) + control->error_ptr->all(FLERR, "Inconsistent force field file"); + if (j < reax->num_atom_types && k < reax->num_atom_types) { val = atof(tmp[2]); if (val > 0.0) { @@ -528,10 +535,12 @@ char Read_Force_Field( FILE *fp, reax_interaction *reax, reax->tbp[k][j].r_pp = val; } - val = atof(tmp[8]); - if (val >= 0.0) { - reax->tbp[j][k].lgcij = val; - reax->tbp[k][j].lgcij = val; + if (lgflag) { + val = atof(tmp[8]); + if (val >= 0.0) { + reax->tbp[j][k].lgcij = val; + reax->tbp[k][j].lgcij = val; + } } } } @@ -552,6 +561,8 @@ char Read_Force_Field( FILE *fp, reax_interaction *reax, j = atoi(tmp[0]) - 1; k = atoi(tmp[1]) - 1; m = atoi(tmp[2]) - 1; + if ((c < 10) || (j < 0) || (k < 0) || (m < 0)) + control->error_ptr->all(FLERR, "Inconsistent force field file"); if (j < reax->num_atom_types && k < reax->num_atom_types && m < reax->num_atom_types) { @@ -611,6 +622,8 @@ char Read_Force_Field( FILE *fp, reax_interaction *reax, k = atoi(tmp[1]) - 1; m = atoi(tmp[2]) - 1; n = atoi(tmp[3]) - 1; + if ((c < 9) || (k < 0) || (m < 0)) + control->error_ptr->all(FLERR, "Inconsistent force field file"); if (j >= 0 && n >= 0) { // this means the entry is not in compact form if (j < reax->num_atom_types && k < reax->num_atom_types && @@ -667,8 +680,6 @@ char Read_Force_Field( FILE *fp, reax_interaction *reax, } } - - /* next line is number of hydrogen bond params and some comments */ fgets( s, MAX_LINE, fp ); c = Tokenize( s, &tmp ); @@ -686,7 +697,8 @@ char Read_Force_Field( FILE *fp, reax_interaction *reax, j = atoi(tmp[0]) - 1; k = atoi(tmp[1]) - 1; m = atoi(tmp[2]) - 1; - + if ((c < 7) || (j < 0) || (k < 0) || (m < 0)) + control->error_ptr->all(FLERR, "Inconsistent force field file"); if (j < reax->num_atom_types && m < reax->num_atom_types) { val = atof(tmp[3]); diff --git a/src/USER-SDPD/fix_meso_move.cpp b/src/USER-SDPD/fix_meso_move.cpp index 176cd8b895..0406b6f0a3 100644 --- a/src/USER-SDPD/fix_meso_move.cpp +++ b/src/USER-SDPD/fix_meso_move.cpp @@ -46,7 +46,7 @@ FixMesoMove::FixMesoMove (LAMMPS *lmp, int narg, char **arg) : xvarstr(NULL), yvarstr(NULL), zvarstr(NULL), vxvarstr(NULL), vyvarstr(NULL), vzvarstr(NULL), xoriginal(NULL), displace(NULL), velocity(NULL) { - if ((atom->e_flag != 1) || (atom->rho_flag != 1)) + if ((atom->esph_flag != 1) || (atom->rho_flag != 1)) error->all(FLERR, "fix meso/move command requires atom_style with both energy and density"); @@ -393,8 +393,8 @@ void FixMesoMove::initial_integrate (int /*vflag*/) { double **vest = atom->vest; double *rho = atom->rho; double *drho = atom->drho; - double *e = atom->e; - double *de = atom->de; + double *esph = atom->esph; + double *desph = atom->desph; double **f = atom->f; double *rmass = atom->rmass; double *mass = atom->mass; @@ -415,7 +415,7 @@ void FixMesoMove::initial_integrate (int /*vflag*/) { xold[1] = x[i][1]; xold[2] = x[i][2]; - e[i] += dtf * de[i]; // half-step update of particle internal energy + esph[i] += dtf * desph[i]; // half-step update of particle internal energy rho[i] += dtf * drho[i]; // ... and density if (vxflag) { @@ -467,7 +467,7 @@ void FixMesoMove::initial_integrate (int /*vflag*/) { xold[1] = x[i][1]; xold[2] = x[i][2]; - e[i] += dtf * de[i]; // half-step update of particle internal energy + esph[i] += dtf * desph[i]; // half-step update of particle internal energy rho[i] += dtf * drho[i]; // ... and density if (axflag) { @@ -535,7 +535,7 @@ void FixMesoMove::initial_integrate (int /*vflag*/) { xold[1] = x[i][1]; xold[2] = x[i][2]; - e[i] += dtf * de[i]; // half-step update of particle internal energy + esph[i] += dtf * desph[i]; // half-step update of particle internal energy rho[i] += dtf * drho[i]; // ... and density d[0] = xoriginal[i][0] - point[0]; @@ -757,8 +757,8 @@ void FixMesoMove::final_integrate () { double **v = atom->v; double **f = atom->f; - double *e = atom->e; - double *de = atom->de; + double *esph = atom->esph; + double *desph = atom->desph; double *rho = atom->rho; double *drho = atom->drho; double *rmass = atom->rmass; @@ -773,7 +773,7 @@ void FixMesoMove::final_integrate () { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { - e[i] += dtf * de[i]; + esph[i] += dtf * desph[i]; rho[i] += dtf * drho[i]; if (xflag) { diff --git a/src/USER-SDPD/fix_rigid_meso.cpp b/src/USER-SDPD/fix_rigid_meso.cpp index e93c543e72..01dd2bb99b 100644 --- a/src/USER-SDPD/fix_rigid_meso.cpp +++ b/src/USER-SDPD/fix_rigid_meso.cpp @@ -43,7 +43,7 @@ FixRigidMeso::FixRigidMeso (LAMMPS *lmp, int narg, char **arg) : FixRigid (lmp, narg, arg) { scalar_flag = 0; size_array_cols = 28; - if ((atom->e_flag != 1) || (atom->rho_flag != 1)) + if ((atom->esph_flag != 1) || (atom->rho_flag != 1)) error->all (FLERR, "fix rigid/meso command requires atom_style with" " both energy and density"); @@ -247,8 +247,8 @@ void FixRigidMeso::set_xv () { double **v = atom->v; double **vest = atom->vest; double **f = atom->f; - double *e = atom->e; - double *de = atom->de; + double *esph = atom->esph; + double *desph = atom->desph; double *rho = atom->rho; double *drho = atom->drho; double *rmass = atom->rmass; @@ -272,7 +272,7 @@ void FixRigidMeso::set_xv () { if (body[i] < 0) continue; // half-step update of particle internal energy and density - e[i] += dtf * de[i]; + esph[i] += dtf * desph[i]; rho[i] += dtf * drho[i]; ibody = body[i]; @@ -377,8 +377,8 @@ void FixRigidMeso::set_v () { double **x = atom->x; double **v = atom->v; double **f = atom->f; - double *e = atom->e; - double *de = atom->de; + double *esph = atom->esph; + double *desph = atom->desph; double *rho = atom->rho; double *drho = atom->drho; double *rmass = atom->rmass; @@ -401,7 +401,7 @@ void FixRigidMeso::set_v () { if (body[i] < 0) continue; // half-step update of particle internal energy and density - e[i] += dtf * de[i]; + esph[i] += dtf * desph[i]; rho[i] += dtf * drho[i]; const int ibody = body[i]; diff --git a/src/USER-SMD/atom_vec_smd.cpp b/src/USER-SMD/atom_vec_smd.cpp index ef14eacdc2..670783a3d7 100644 --- a/src/USER-SMD/atom_vec_smd.cpp +++ b/src/USER-SMD/atom_vec_smd.cpp @@ -25,13 +25,7 @@ #include "atom_vec_smd.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -40,1247 +34,157 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -AtomVecSMD::AtomVecSMD(LAMMPS *lmp) : - AtomVec(lmp) { - molecular = 0; +AtomVecSMD::AtomVecSMD(LAMMPS *lmp) : AtomVec(lmp) +{ + molecular = 0; + mass_type = 1; + forceclearflag = 1; - comm_x_only = 0; - comm_f_only = 0; - size_forward = 6; // variables that are changed by time integration - size_reverse = 4; // f[3] + de - size_border = 31; - size_velocity = 6; // v + vest - size_data_atom = 13; // 7 + 3 x0 + 3 x - size_data_vel = 4; - xcol_data = 11; + atom->smd_flag = 1; - atom->radius_flag = 1; - atom->rmass_flag = 1; - atom->vfrac_flag = 1; - atom->contact_radius_flag = 1; - atom->molecule_flag = 1; - atom->smd_data_9_flag = 1; - atom->e_flag = 1; - atom->vest_flag = 1; - atom->smd_stress_flag = 1; - atom->eff_plastic_strain_flag = 1; - atom->x0_flag = 1; - atom->damage_flag = 1; - atom->eff_plastic_strain_rate_flag = 1; + atom->radius_flag = 1; + atom->rmass_flag = 1; + atom->vfrac_flag = 1; + atom->contact_radius_flag = 1; + atom->molecule_flag = 1; + atom->smd_data_9_flag = 1; + atom->esph_flag = 1; + atom->vest_flag = 1; + atom->smd_stress_flag = 1; + atom->eff_plastic_strain_flag = 1; + atom->x0_flag = 1; + atom->damage_flag = 1; + atom->eff_plastic_strain_rate_flag = 1; - forceclearflag = 1; + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file - atom->smd_flag = 1; -} + fields_grow = (char *) + "esph desph vfrac rmass x0 radius contact_radius molecule " + "smd_data_9 vest smd_stress " + "eff_plastic_strain eff_plastic_strain_rate damage"; + fields_copy = (char *) + "esph vfrac rmass x0 radius contact_radius molecule " + "eff_plastic_strain eff_plastic_strain_rate vest " + "smd_data_9 smd_stress damage"; + fields_comm = (char *) "radius vfrac vest esph"; + fields_comm_vel = (char *) "radius vfrac vest esph"; + fields_reverse = (char *) "desph"; + fields_border = (char *) + "x0 molecule radius rmass vfrac contact_radius esph " + "eff_plastic_strain smd_data_9 smd_stress"; + fields_border_vel = (char *) + "x0 molecule radius rmass vfrac contact_radius esph " + "eff_plastic_strain smd_data_9 smd_stress vest"; + fields_exchange = (char *) + "x0 molecule radius rmass vfrac contact_radius esph " + "eff_plastic_strain eff_plastic_strain_rate smd_data_9 smd_stress " + "vest damage"; + fields_restart = (char *) + "x0 molecule radius rmass vfrac contact_radius esph " + "eff_plastic_strain eff_plastic_strain_rate smd_data_9 smd_stress " + "vest damage"; + fields_create = (char *) + "x0 vest vfrac rmass radius contact_radius molecule esph " + "eff_plastic_strain eff_plastic_strain_rate smd_data_9 smd_stress damage"; + fields_data_atom = (char *) + "id type molecule vfrac rmass radius contact_radius x0 x"; + fields_data_vel = (char *) "id v"; -/* ---------------------------------------------------------------------- */ + // set these array sizes based on defines -void AtomVecSMD::init() { - AtomVec::init(); + atom->add_peratom_change_columns("smd_data_9",NMAT_FULL); + atom->add_peratom_change_columns("smd_stress",NMAT_SYMM); - // do nothing here + setup_fields(); } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n - ------------------------------------------------------------------------- */ + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ -void AtomVecSMD::grow(int n) { - if (n == 0) - grow_nmax(); - else - nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR, "Per-processor system is too big"); - - //printf("in grow, nmax is now %d\n", nmax); - - tag = memory->grow(atom->tag, nmax, "atom:tag"); - type = memory->grow(atom->type, nmax, "atom:type"); - mask = memory->grow(atom->mask, nmax, "atom:mask"); - image = memory->grow(atom->image, nmax, "atom:image"); - x = memory->grow(atom->x, nmax, 3, "atom:x"); - v = memory->grow(atom->v, nmax, 3, "atom:v"); - - f = memory->grow(atom->f, nmax * comm->nthreads, 3, "atom:f"); - de = memory->grow(atom->de, nmax * comm->nthreads, "atom:de"); - - vfrac = memory->grow(atom->vfrac, nmax, "atom:vfrac"); - rmass = memory->grow(atom->rmass, nmax, "atom:rmass"); - x0 = memory->grow(atom->x0, nmax, 3, "atom:x0"); - radius = memory->grow(atom->radius, nmax, "atom:radius"); - contact_radius = memory->grow(atom->contact_radius, nmax, "atom:contact_radius"); - molecule = memory->grow(atom->molecule, nmax, "atom:molecule"); - smd_data_9 = memory->grow(atom->smd_data_9, nmax, NMAT_FULL, "atom:defgrad_old"); - e = memory->grow(atom->e, nmax, "atom:e"); - vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); - tlsph_stress = memory->grow(atom->smd_stress, nmax, NMAT_SYMM, "atom:tlsph_stress"); - eff_plastic_strain = memory->grow(atom->eff_plastic_strain, nmax, "atom:eff_plastic_strain"); - eff_plastic_strain_rate = memory->grow(atom->eff_plastic_strain_rate, nmax, "atom:eff_plastic_strain_rate"); - damage = memory->grow(atom->damage, nmax, "atom:damage"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +void AtomVecSMD::grow_pointers() +{ + esph = atom->esph; + desph = atom->desph; + vfrac = atom->vfrac; + rmass = atom->rmass; + x0 = atom->x0; + radius = atom->radius; + contact_radius = atom->contact_radius; + molecule = atom->molecule; + smd_data_9 = atom->smd_data_9; + vest = atom->vest; + smd_stress = atom->smd_stress; + eff_plastic_strain = atom->eff_plastic_strain; + eff_plastic_strain_rate = atom->eff_plastic_strain_rate; + damage = atom->damage; } /* ---------------------------------------------------------------------- - reset local array ptrs - ------------------------------------------------------------------------- */ + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector + NOTE: does f need to be re-cleared? +------------------------------------------------------------------------- */ -void AtomVecSMD::grow_reset() { - tag = atom->tag; - type = atom->type; - mask = atom->mask; - image = atom->image; - x = atom->x; - v = atom->v; - f = atom->f; - radius = atom->radius; - rmass = atom->rmass; - - vfrac = atom->vfrac; - x0 = atom->x0; - contact_radius = atom->contact_radius; - molecule = atom->molecule; - smd_data_9 = atom->smd_data_9; - e = atom->e; - de = atom->de; - tlsph_stress = atom->smd_stress; - eff_plastic_strain = atom->eff_plastic_strain; - eff_plastic_strain_rate = atom->eff_plastic_strain_rate; - damage = atom->damage; - vest = atom->vest; +void AtomVecSMD::force_clear(int n, size_t nbytes) +{ + memset(&desph[n],0,nbytes); + memset(&f[n][0],0,3*nbytes); } /* ---------------------------------------------------------------------- - copy atom I info to atom J - ------------------------------------------------------------------------- */ - -void AtomVecSMD::copy(int i, int j, int delflag) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - vfrac[j] = vfrac[i]; - rmass[j] = rmass[i]; - x0[j][0] = x0[i][0]; - x0[j][1] = x0[i][1]; - x0[j][2] = x0[i][2]; - radius[j] = radius[i]; - contact_radius[j] = contact_radius[i]; - molecule[j] = molecule[i]; - e[j] = e[i]; - eff_plastic_strain[j] = eff_plastic_strain[i]; - eff_plastic_strain_rate[j] = eff_plastic_strain_rate[i]; - vest[j][0] = vest[i][0]; - vest[j][1] = vest[i][1]; - vest[j][2] = vest[i][2]; - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[j][k] = smd_data_9[i][k]; - } - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[j][k] = tlsph_stress[i][k]; - } - - damage[j] = damage[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i, j, delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_comm(int /*n*/, int * /*list*/, double * /*buf*/, int /*pbc_flag*/, int * /*pbc*/) { - error->one(FLERR, "atom vec tlsph can only be used with ghost velocities turned on"); - return -1; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_comm_vel(int n, int *list, double *buf, int pbc_flag, int *pbc) { - // communicate quantities to ghosts, which are changed by time-integration AND are required on ghost atoms. - - //no need to pack stress or defgrad information here, as these quantities are not required for ghost atoms. - // Inside pair_style tlsph, these quantities are computed and communicated to ghosts. - - // no need to communicate x0 here, as it is not changed by time integration - // if x0 is changed when the ref config is updated, this communication is performed in the fix_integrate/tlsph - // similarly, rmass could be removed here. - // radius should be communicated here for future time-integration of the radius with ulsph (not implemented yet) - int i, j, m; - double dx, dy, dz, dvx, dvy, dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; //3 - buf[m++] = radius[j]; - buf[m++] = vfrac[j]; // 5 - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 8 - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 11 - buf[m++] = e[j]; // 12 - - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; - dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; - dz = pbc[2] * domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = radius[j]; - buf[m++] = vfrac[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 8 - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 11 - buf[m++] = e[j]; // 12 - - } - } else { - dvx = pbc[0] * h_rate[0] + pbc[5] * h_rate[5] + pbc[4] * h_rate[4]; - dvy = pbc[1] * h_rate[1] + pbc[3] * h_rate[3]; - dvz = pbc[2] * h_rate[2]; -// printf("\ndvx = %f, dvy=%f, dvz=%f\n", dvx, dvy, dvz); -// printf("dx = %f, dy=%f, dz=%f\n", dx, dy, dz); - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = radius[j]; - buf[m++] = vfrac[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - buf[m++] = vest[j][0] + dvx; - buf[m++] = vest[j][1] + dvy; - buf[m++] = vest[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 8 - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 11 - } - - buf[m++] = e[j]; // 12 - - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_comm_hybrid(int n, int *list, double *buf) { - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = radius[j]; - buf[m++] = vfrac[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = e[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSMD::unpack_comm(int /*n*/, int /*first*/, double * /*buf*/) { - error->one(FLERR, "atom vec tlsph can only be used with ghost velocities turned on"); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSMD::unpack_comm_vel(int n, int first, double *buf) { - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; //3 - radius[i] = buf[m++]; - vfrac[i] = buf[m++]; // 5 - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; // 8 - - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; // 11 - e[i] = buf[m++]; - - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::unpack_comm_hybrid(int n, int first, double *buf) { - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - radius[i] = buf[m++]; - vfrac[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - e[i] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_reverse(int n, int first, double *buf) { - int i, m, last; - - printf("in pack_reverse\n"); - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = de[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_reverse_hybrid(int n, int first, double *buf) { - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = de[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSMD::unpack_reverse(int n, int *list, double *buf) { - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - de[j] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::unpack_reverse_hybrid(int n, int *list, double *buf) { - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - de[j] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_border(int /*n*/, int * /*list*/, double * /*buf*/, int /*pbc_flag*/, int * /*pbc*/) { - error->one(FLERR, "atom vec tlsph can only be used with ghost velocities turned on"); - return -1; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_border_vel(int n, int *list, double *buf, int pbc_flag, int *pbc) { - int i, j, m; - double dx, dy, dz, dvx, dvy, dvz; - - //printf("AtomVecSMD::pack_border_vel\n"); - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; // 3 - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; // 6 - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; // 10 - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = vfrac[j]; - buf[m++] = contact_radius[j]; - buf[m++] = e[j]; - buf[m++] = eff_plastic_strain[j]; // 16 - - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[j][k]; - } // 25 - - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[j][k]; - } // 31 - - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 34 - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 37 - } - } else { - - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - //printf("dx = %f\n", dx); - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; // 3 - buf[m++] = x0[j][0]; // this is correct - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; // 6 - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; // 10 - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = vfrac[j]; - buf[m++] = contact_radius[j]; - buf[m++] = e[j]; - buf[m++] = eff_plastic_strain[j]; // 17 - - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[j][k]; - } // 26 - - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[j][k]; - } // 32 - - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 35 - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 38 - - } - } else { - dvx = pbc[0] * h_rate[0] + pbc[5] * h_rate[5] + pbc[4] * h_rate[4]; - dvy = pbc[1] * h_rate[1] + pbc[3] * h_rate[3]; - dvz = pbc[2] * h_rate[2]; -// printf("\ndvx = %f, dvy=%f, dvz=%f\n", dvx, dvy, dvz); -// printf("dx = %f, dy=%f, dz=%f\n", dx, dy, dz); - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; // 3 - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; // 6 - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; // 10 - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = vfrac[j]; - buf[m++] = contact_radius[j]; - buf[m++] = e[j]; - buf[m++] = eff_plastic_strain[j]; // 16 - - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[j][k]; - } // 25 - - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[j][k]; - } // 31 - - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; // 34 - buf[m++] = vest[j][0] + dvx; - buf[m++] = vest[j][1] + dvy; - buf[m++] = vest[j][2] + dvz; // 37 - - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 34 - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 37 - } - - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n, list, &buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_border_hybrid(int n, int *list, double *buf) { - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; // 3 - buf[m++] = ubuf(molecule[j]).d; // 4 - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = vfrac[j]; - buf[m++] = contact_radius[j]; - buf[m++] = e[j]; - buf[m++] = eff_plastic_strain[j]; // 11 - - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[j][k]; - } // 20 - - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[j][k]; - } // 26 - - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSMD::unpack_border(int /*n*/, int /*first*/, double * /*buf*/) { - error->one(FLERR, "atom vec tlsph can only be used with ghost velocities turned on"); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSMD::unpack_border_vel(int n, int first, double *buf) { - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) - grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; // 3 - x0[i][0] = buf[m++]; - x0[i][1] = buf[m++]; - x0[i][2] = buf[m++]; // 6 - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; // 10 - - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - vfrac[i] = buf[m++]; - contact_radius[i] = buf[m++]; - e[i] = buf[m++]; - eff_plastic_strain[i] = buf[m++]; // 16 - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[i][k] = buf[m++]; - } // 25 - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[i][k] = buf[m++]; - } // 31 - - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; // 34 - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; // 37 - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->unpack_border(n, first, &buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::unpack_border_hybrid(int n, int first, double *buf) { - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x0[i][0] = buf[m++]; - x0[i][1] = buf[m++]; - x0[i][2] = buf[m++]; // 3 - molecule[i] = (tagint) ubuf(buf[m++]).i; // 4 - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - vfrac[i] = buf[m++]; - contact_radius[i] = buf[m++]; - e[i] = buf[m++]; - eff_plastic_strain[i] = buf[m++]; // 11 - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[i][k] = buf[m++]; - } // 20 - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[i][k] = buf[m++]; - } // 26 - } - return m; + initialize non-zero atom quantities +------------------------------------------------------------------------- */ + +void AtomVecSMD::create_atom_post(int ilocal) +{ + x0[ilocal][0] = x[ilocal][0]; + x0[ilocal][1] = x[ilocal][1]; + x0[ilocal][2] = x[ilocal][2]; + + vfrac[ilocal] = 1.0; + rmass[ilocal] = 1.0; + radius[ilocal] = 0.5; + contact_radius[ilocal] = 0.5; + molecule[ilocal] = 1; + + smd_data_9[ilocal][0] = 1.0; // xx + smd_data_9[ilocal][4] = 1.0; // yy + smd_data_9[ilocal][8] = 1.0; // zz } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them - ------------------------------------------------------------------------- */ + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities +------------------------------------------------------------------------- */ -int AtomVecSMD::pack_exchange(int i, double *buf) { - int m = 1; +void AtomVecSMD::data_atom_post(int ilocal) +{ + esph[ilocal] = 0.0; + x0[ilocal][0] = x[ilocal][0]; + x0[ilocal][1] = x[ilocal][1]; + x0[ilocal][2] = x[ilocal][2]; - //printf("in AtomVecSMD::pack_exchange tag %d\n", tag[i]); + vest[ilocal][0] = 0.0; + vest[ilocal][1] = 0.0; + vest[ilocal][2] = 0.0; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; // 3 - buf[m++] = x0[i][0]; - buf[m++] = x0[i][1]; - buf[m++] = x0[i][2]; // 6 - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = ubuf(molecule[i]).d; // 11 - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = vfrac[i]; - buf[m++] = contact_radius[i]; - buf[m++] = e[i]; - buf[m++] = eff_plastic_strain[i]; // 18 - buf[m++] = eff_plastic_strain_rate[i]; // 19 + damage[ilocal] = 0.0; - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[i][k]; - } // 27 + eff_plastic_strain[ilocal] = 0.0; + eff_plastic_strain_rate[ilocal] = 0.0; - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[i][k]; - } // 33 + for (int k = 0; k < NMAT_FULL; k++) + smd_data_9[ilocal][k] = 0.0; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; // 36 - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; // 39 + for (int k = 0; k < NMAT_SYMM; k++) + smd_stress[ilocal][k] = 0.0; - buf[m++] = damage[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::unpack_exchange(double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - int m = 1; - - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; // 3 - x0[nlocal][0] = buf[m++]; - x0[nlocal][1] = buf[m++]; - x0[nlocal][2] = buf[m++]; // 6 - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; // 11 - - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - vfrac[nlocal] = buf[m++]; - contact_radius[nlocal] = buf[m++]; - e[nlocal] = buf[m++]; - eff_plastic_strain[nlocal] = buf[m++]; // 18 - eff_plastic_strain_rate[nlocal] = buf[m++]; // 19 - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[nlocal][k] = buf[m++]; - } // 27 - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[nlocal][k] = buf[m++]; - } // 33 - - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; // 36 - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; // 39 - - damage[nlocal] = buf[m++]; //40 - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->unpack_exchange(nlocal, &buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes - ------------------------------------------------------------------------- */ - -int AtomVecSMD::size_restart() { - int i; - - int nlocal = atom->nlocal; - int n = 43 * nlocal; // count pack_restart + 1 (size of buffer) - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive - ------------------------------------------------------------------------- */ -int AtomVecSMD::pack_restart(int i, double *buf) { - int m = 1; // 1 - - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; // 4 - buf[m++] = x0[i][0]; - buf[m++] = x0[i][1]; - buf[m++] = x0[i][2]; // 7 - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; // 10 - buf[m++] = ubuf(image[i]).d; - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = vfrac[i]; // 15 - buf[m++] = contact_radius[i]; - buf[m++] = e[i]; - buf[m++] = eff_plastic_strain[i]; - buf[m++] = eff_plastic_strain_rate[i]; // 19 - - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[i][k]; - } // 28 - - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[i][k]; - } // 34 - - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; // 37 - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; // 40 - - buf[m++] = damage[i]; // 41 - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - ------------------------------------------------------------------------- */ - -int AtomVecSMD::unpack_restart(double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra, nmax, atom->nextra_store, "atom:extra"); - } - - int m = 1; - - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; // 3 - x0[nlocal][0] = buf[m++]; - x0[nlocal][1] = buf[m++]; - x0[nlocal][2] = buf[m++]; // 6 - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; // 11 - - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - vfrac[nlocal] = buf[m++]; //14 - contact_radius[nlocal] = buf[m++]; //15 - e[nlocal] = buf[m++]; - eff_plastic_strain[nlocal] = buf[m++]; // 18 - eff_plastic_strain_rate[nlocal] = buf[m++]; // 29 - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[nlocal][k] = buf[m++]; - } // 28 - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[nlocal][k] = buf[m++]; - } // 34 - - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; // 37 - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; // 40 - - damage[nlocal] = buf[m++]; //41 - - //printf("nlocal in restart is %d\n", nlocal); - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast(buf[0]) - m; - for (int i = 0; i < size; i++) - extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - - //printf("returning m=%d in unpack_restart\n", m); - - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults - ------------------------------------------------------------------------- */ - -void AtomVecSMD::create_atom(int itype, double *coord) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - printf("nlocal = %d, nmax = %d, calling grow\n", nlocal, nmax); - grow(0); - printf("... finished growing\n"); - } - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - x0[nlocal][0] = coord[0]; - x0[nlocal][1] = coord[1]; - x0[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - vfrac[nlocal] = 1.0; - rmass[nlocal] = 1.0; - radius[nlocal] = 0.5; - contact_radius[nlocal] = 0.5; - molecule[nlocal] = 1; - e[nlocal] = 0.0; - eff_plastic_strain[nlocal] = 0.0; - eff_plastic_strain_rate[nlocal] = 0.0; - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[nlocal][k] = 0.0; - } - smd_data_9[nlocal][0] = 1.0; // xx - smd_data_9[nlocal][4] = 1.0; // yy - smd_data_9[nlocal][8] = 1.0; // zz - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[nlocal][k] = 0.0; - } - - damage[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities - ------------------------------------------------------------------------- */ - -void AtomVecSMD::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR, "Invalid atom type in Atoms section of data file"); - - molecule[nlocal] = utils::tnumeric(FLERR,values[2],true,lmp); - if (molecule[nlocal] <= 0) - error->one(FLERR, "Invalid molecule in Atoms section of data file"); - - vfrac[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - if (vfrac[nlocal] < 0.0) - error->one(FLERR, "Invalid volume in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - if (rmass[nlocal] == 0.0) - error->one(FLERR, "Invalid mass in Atoms section of data file"); - - radius[nlocal] = utils::numeric(FLERR,values[5],true,lmp); - if (radius[nlocal] < 0.0) - error->one(FLERR, "Invalid radius in Atoms section of data file"); - - contact_radius[nlocal] = utils::numeric(FLERR,values[6],true,lmp); - if (contact_radius[nlocal] < 0.0) - error->one(FLERR, "Invalid contact radius in Atoms section of data file"); - - e[nlocal] = 0.0; - - x0[nlocal][0] = utils::numeric(FLERR,values[7],true,lmp); - x0[nlocal][1] = utils::numeric(FLERR,values[8],true,lmp); - x0[nlocal][2] = utils::numeric(FLERR,values[9],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - damage[nlocal] = 0.0; - - eff_plastic_strain[nlocal] = 0.0; - eff_plastic_strain_rate[nlocal] = 0.0; - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[nlocal][k] = 0.0; - } - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[nlocal][k] = 0.0; - } - - smd_data_9[nlocal][0] = 1.0; // xx - smd_data_9[nlocal][4] = 1.0; // yy - smd_data_9[nlocal][8] = 1.0; // zz - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style - ------------------------------------------------------------------------- */ - -int AtomVecSMD::data_atom_hybrid(int /*nlocal*/, char **/*values*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return -1; -} - -/* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file - ------------------------------------------------------------------------- */ - -void AtomVecSMD::data_vel(int m, char **values) { - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - vest[m][0] = utils::numeric(FLERR,values[0],true,lmp); - vest[m][1] = utils::numeric(FLERR,values[1],true,lmp); - vest[m][2] = utils::numeric(FLERR,values[2],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file - ------------------------------------------------------------------------- */ - -int AtomVecSMD::data_vel_hybrid(int /*m*/, char **/*values*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return 0; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags - ------------------------------------------------------------------------- */ - -void AtomVecSMD::pack_data(double **buf) { - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = ubuf(molecule[i]).d; - buf[i][3] = vfrac[i]; - buf[i][4] = rmass[i]; - buf[i][5] = radius[i]; - buf[i][6] = contact_radius[i]; - - buf[i][7] = x[i][0]; - buf[i][8] = x[i][1]; - buf[i][9] = x[i][2]; - - buf[i][10] = x0[i][0]; - buf[i][11] = x0[i][1]; - buf[i][12] = x0[i][2]; - - buf[i][13] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][14] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][15] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file - ------------------------------------------------------------------------- */ - -int AtomVecSMD::pack_data_hybrid(int /*i*/, double * /*buf*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return -1; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags - ------------------------------------------------------------------------- */ - -void AtomVecSMD::write_data(FILE *fp, int n, double **buf) { - for (int i = 0; i < n; i++) - fprintf(fp, - TAGINT_FORMAT - " %d %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e\n", (tagint) ubuf(buf[i][0]).i, - (int) ubuf(buf[i][1]).i, (int) ubuf(buf[i][2]).i, buf[i][3], buf[i][4], buf[i][5], buf[i][6], buf[i][7], buf[i][8], - buf[i][9], buf[i][10], buf[i][11], buf[i][12]); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file - ------------------------------------------------------------------------- */ - -int AtomVecSMD::write_data_hybrid(FILE * /*fp*/, double * /*buf*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return -1; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file - ------------------------------------------------------------------------- */ - -void AtomVecSMD::pack_vel(double **buf) { - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid velocity info for data file - ------------------------------------------------------------------------- */ - -int AtomVecSMD::pack_vel_hybrid(int /*i*/, double * /*buf*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return 0; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file - ------------------------------------------------------------------------- */ - -void AtomVecSMD::write_vel(FILE *fp, int n, double **buf) { - for (int i = 0; i < n; i++) - fprintf(fp, TAGINT_FORMAT - " %-1.16e %-1.16e %-1.16e\n", (tagint) ubuf(buf[i][0]).i, buf[i][1], buf[i][2], buf[i][3]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file - ------------------------------------------------------------------------- */ - -int AtomVecSMD::write_vel_hybrid(FILE * /*fp*/, double * /*buf*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return 3; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory - ------------------------------------------------------------------------- */ - -bigint AtomVecSMD::memory_usage() { - bigint bytes = 0; - - if (atom->memcheck("tag")) - bytes += memory->usage(tag, nmax); - if (atom->memcheck("type")) - bytes += memory->usage(type, nmax); - if (atom->memcheck("molecule")) - bytes += memory->usage(molecule, nmax); - if (atom->memcheck("mask")) - bytes += memory->usage(mask, nmax); - if (atom->memcheck("image")) - bytes += memory->usage(image, nmax); - if (atom->memcheck("x")) - bytes += memory->usage(x, nmax, 3); - if (atom->memcheck("v")) - bytes += memory->usage(v, nmax, 3); - if (atom->memcheck("vest")) - bytes += memory->usage(vest, nmax, 3); - if (atom->memcheck("f")) - bytes += memory->usage(f, nmax * comm->nthreads, 3); - - if (atom->memcheck("radius")) - bytes += memory->usage(radius, nmax); - if (atom->memcheck("contact_radius")) - bytes += memory->usage(contact_radius, nmax); - if (atom->memcheck("vfrac")) - bytes += memory->usage(vfrac, nmax); - if (atom->memcheck("rmass")) - bytes += memory->usage(rmass, nmax); - if (atom->memcheck("eff_plastic_strain")) - bytes += memory->usage(eff_plastic_strain, nmax); - if (atom->memcheck("eff_plastic_strain_rate")) - bytes += memory->usage(eff_plastic_strain_rate, nmax); - if (atom->memcheck("e")) - bytes += memory->usage(e, nmax); - if (atom->memcheck("de")) - bytes += memory->usage(de, nmax); - - if (atom->memcheck("smd_data_9")) - bytes += memory->usage(smd_data_9, nmax, NMAT_FULL); - if (atom->memcheck("tlsph_stress")) - bytes += memory->usage(tlsph_stress, nmax, NMAT_SYMM); - - if (atom->memcheck("damage")) - bytes += memory->usage(damage, nmax); - - return bytes; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSMD::force_clear(int n, size_t nbytes) { - //printf("clearing force on atom %d", n); - memset(&de[n], 0, nbytes); - memset(&f[0][0], 0, 3 * nbytes); + smd_data_9[ilocal][0] = 1.0; // xx + smd_data_9[ilocal][4] = 1.0; // yy + smd_data_9[ilocal][8] = 1.0; // zz } diff --git a/src/USER-SMD/atom_vec_smd.h b/src/USER-SMD/atom_vec_smd.h index 34fdfc1f76..055ad795c4 100644 --- a/src/USER-SMD/atom_vec_smd.h +++ b/src/USER-SMD/atom_vec_smd.h @@ -9,7 +9,6 @@ * * ----------------------------------------------------------------------- */ - /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories @@ -39,63 +38,17 @@ namespace LAMMPS_NS { class AtomVecSMD : public AtomVec { public: AtomVecSMD(class LAMMPS *); - ~AtomVecSMD() {} - void init(); - void grow(int); - void grow_reset(); - void copy(int, int, int); + + void grow_pointers(); void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); + void create_atom_post(int); + void data_atom_post(int); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *radius,*rmass; - tagint *molecule; - double *vfrac,**x0,*contact_radius, **smd_data_9, *e, *de, **vest; - double **tlsph_stress; - double *eff_plastic_strain; - double *damage; - double *eff_plastic_strain_rate; - - + double *esph,*desph,*vfrac,*rmass,*radius,*contact_radius; + double *eff_plastic_strain,*eff_plastic_strain_rate,*damage; + double **x0,**smd_data_9,**smd_stress,**vest; }; } diff --git a/src/USER-SMD/compute_smd_internal_energy.cpp b/src/USER-SMD/compute_smd_internal_energy.cpp index f88da8bc33..90ddb74839 100644 --- a/src/USER-SMD/compute_smd_internal_energy.cpp +++ b/src/USER-SMD/compute_smd_internal_energy.cpp @@ -40,7 +40,7 @@ ComputeSMDInternalEnergy::ComputeSMDInternalEnergy(LAMMPS *lmp, int narg, char * Compute(lmp, narg, arg) { if (narg != 3) error->all(FLERR,"Illegal compute smd/internal_energy command"); - if (atom->e_flag != 1) error->all(FLERR,"compute smd/internal_energy command requires atom_style with internal_energy (e.g. smd)"); + if (atom->esph_flag != 1) error->all(FLERR,"compute smd/internal_energy command requires atom_style with internal_energy (e.g. smd)"); peratom_flag = 1; size_peratom_cols = 0; @@ -83,13 +83,13 @@ void ComputeSMDInternalEnergy::compute_peratom() vector_atom = internal_energy_vector; } - double *e = atom->e; + double *esph = atom->esph; int *mask = atom->mask; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { - internal_energy_vector[i] = e[i]; + internal_energy_vector[i] = esph[i]; } else { internal_energy_vector[i] = 0.0; diff --git a/src/USER-SMD/fix_smd_integrate_tlsph.cpp b/src/USER-SMD/fix_smd_integrate_tlsph.cpp index 8464bed609..ed039d39d4 100644 --- a/src/USER-SMD/fix_smd_integrate_tlsph.cpp +++ b/src/USER-SMD/fix_smd_integrate_tlsph.cpp @@ -203,8 +203,8 @@ void FixSMDIntegrateTlsph::final_integrate() { double **v = atom->v; double **f = atom->f; - double *e = atom->e; - double *de = atom->de; + double *esph = atom->esph; + double *desph = atom->desph; double *rmass = atom->rmass; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -231,7 +231,7 @@ void FixSMDIntegrateTlsph::final_integrate() { } } - e[i] += dtv * de[i]; + esph[i] += dtv * desph[i]; } } } diff --git a/src/USER-SMD/fix_smd_integrate_ulsph.cpp b/src/USER-SMD/fix_smd_integrate_ulsph.cpp index 0f0d224f95..4978416e66 100644 --- a/src/USER-SMD/fix_smd_integrate_ulsph.cpp +++ b/src/USER-SMD/fix_smd_integrate_ulsph.cpp @@ -42,7 +42,7 @@ using namespace FixConst; FixSMDIntegrateUlsph::FixSMDIntegrateUlsph(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if ((atom->e_flag != 1) || (atom->vfrac_flag != 1)) + if ((atom->esph_flag != 1) || (atom->vfrac_flag != 1)) error->all(FLERR, "fix smd/integrate_ulsph command requires atom_style with both energy and volume"); if (narg < 3) @@ -239,8 +239,8 @@ void FixSMDIntegrateUlsph::initial_integrate(int /*vflag*/) { void FixSMDIntegrateUlsph::final_integrate() { double **v = atom->v; double **f = atom->f; - double *e = atom->e; - double *de = atom->de; + double *esph = atom->esph; + double *desph = atom->desph; double *vfrac = atom->vfrac; double *radius = atom->radius; double *contact_radius = atom->contact_radius; @@ -286,7 +286,7 @@ void FixSMDIntegrateUlsph::final_integrate() { } } - e[i] += dtf * de[i]; + esph[i] += dtf * desph[i]; if (adjust_radius_flag) { if (nn[i] < min_nn) { diff --git a/src/USER-SMD/pair_smd_tlsph.cpp b/src/USER-SMD/pair_smd_tlsph.cpp index cad9923054..c932086a32 100644 --- a/src/USER-SMD/pair_smd_tlsph.cpp +++ b/src/USER-SMD/pair_smd_tlsph.cpp @@ -418,7 +418,7 @@ void PairTlsph::ComputeForces(int eflag, int vflag) { double **x0 = atom->x0; double **f = atom->f; double *vfrac = atom->vfrac; - double *de = atom->de; + double *desph = atom->desph; double *rmass = atom->rmass; double *radius = atom->radius; double *damage = atom->damage; @@ -592,7 +592,7 @@ void PairTlsph::ComputeForces(int eflag, int vflag) { f[i][0] += sumForces(0); f[i][1] += sumForces(1); f[i][2] += sumForces(2); - de[i] += deltaE; + desph[i] += deltaE; // tally atomistic stress tensor if (evflag) { @@ -703,7 +703,7 @@ void PairTlsph::AssembleStress() { double *damage = atom->damage; double *rmass = atom->rmass; double *vfrac = atom->vfrac; - double *e = atom->e; + double *esph = atom->esph; double pInitial, d_iso, pFinal, p_rate, plastic_strain_increment; int i, itype; int nlocal = atom->nlocal; @@ -745,7 +745,7 @@ void PairTlsph::AssembleStress() { d_iso = D[i].trace(); // volumetric part of stretch rate d_dev = Deviator(D[i]); // deviatoric part of stretch rate strain = 0.5 * (Fincr[i].transpose() * Fincr[i] - eye); - mass_specific_energy = e[i] / rmass[i]; // energy per unit mass + mass_specific_energy = esph[i] / rmass[i]; // energy per unit mass rho = rmass[i] / (detF[i] * vfrac[i]); vol_specific_energy = mass_specific_energy * rho; // energy per current volume @@ -2034,12 +2034,12 @@ void PairTlsph::ComputeStressDeviator(const int i, const Matrix3d sigmaInitial_d int *type = atom->type; double *rmass = atom->rmass; //double *vfrac = atom->vfrac; - double *e = atom->e; + double *esph = atom->esph; double dt = update->dt; double yieldStress; int itype; - double mass_specific_energy = e[i] / rmass[i]; // energy per unit mass + double mass_specific_energy = esph[i] / rmass[i]; // energy per unit mass plastic_strain_increment = 0.0; itype = type[i]; diff --git a/src/USER-SMD/pair_smd_ulsph.cpp b/src/USER-SMD/pair_smd_ulsph.cpp index b53eb779de..8c8da7b2bc 100644 --- a/src/USER-SMD/pair_smd_ulsph.cpp +++ b/src/USER-SMD/pair_smd_ulsph.cpp @@ -357,7 +357,7 @@ void PairULSPH::compute(int eflag, int vflag) { double **vint = atom->v; // Velocity-Verlet algorithm velocities double **f = atom->f; double *vfrac = atom->vfrac; - double *de = atom->de; + double *desph = atom->desph; double *rmass = atom->rmass; double *radius = atom->radius; double *contact_radius = atom->contact_radius; @@ -586,7 +586,7 @@ void PairULSPH::compute(int eflag, int vflag) { f[i][0] += sumForces(0); f[i][1] += sumForces(1); f[i][2] += sumForces(2); - de[i] += deltaE; + desph[i] += deltaE; // accumulate smooth velocities shepardWeight[i] += jvol * wf; @@ -597,7 +597,7 @@ void PairULSPH::compute(int eflag, int vflag) { f[j][0] -= sumForces(0); f[j][1] -= sumForces(1); f[j][2] -= sumForces(2); - de[j] += deltaE; + desph[j] += deltaE; shepardWeight[j] += ivol * wf; smoothVel[j] -= ivol * wf * dvint; @@ -639,7 +639,7 @@ void PairULSPH::AssembleStressTensor() { double *rmass = atom->rmass; double *eff_plastic_strain = atom->eff_plastic_strain; double **tlsph_stress = atom->smd_stress; - double *e = atom->e; + double *esph = atom->esph; int *type = atom->type; int i, itype; int nlocal = atom->nlocal; @@ -686,7 +686,7 @@ void PairULSPH::AssembleStressTensor() { break; case EOS_PERFECT_GAS: - PerfectGasEOS(Lookup[EOS_PERFECT_GAS_GAMMA][itype], vol, rmass[i], e[i], newPressure, c0[i]); + PerfectGasEOS(Lookup[EOS_PERFECT_GAS_GAMMA][itype], vol, rmass[i], esph[i], newPressure, c0[i]); break; case EOS_LINEAR: newPressure = Lookup[BULK_MODULUS][itype] * (rho / Lookup[REFERENCE_DENSITY][itype] - 1.0); diff --git a/src/USER-SPH/atom_vec_meso.cpp b/src/USER-SPH/atom_vec_meso.cpp deleted file mode 100644 index cd7c2251ab..0000000000 --- a/src/USER-SPH/atom_vec_meso.cpp +++ /dev/null @@ -1,1047 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. - ------------------------------------------------------------------------- */ - -#include "atom_vec_meso.h" -#include -#include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -AtomVecMeso::AtomVecMeso(LAMMPS *lmp) : AtomVec(lmp) -{ - molecular = 0; - mass_type = 1; - forceclearflag = 1; - - comm_x_only = 0; // we communicate not only x forward but also vest ... - comm_f_only = 0; // we also communicate de and drho in reverse direction - size_forward = 8; // 3 + rho + e + vest[3], that means we may only communicate 5 in hybrid - size_reverse = 5; // 3 + drho + de - size_border = 12; // 6 + rho + e + vest[3] + cv - size_velocity = 3; - size_data_atom = 8; - size_data_vel = 4; - xcol_data = 6; - - atom->e_flag = 1; - atom->rho_flag = 1; - atom->cv_flag = 1; - atom->vest_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n - ------------------------------------------------------------------------- */ - -void AtomVecMeso::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag, nmax, "atom:tag"); - type = memory->grow(atom->type, nmax, "atom:type"); - mask = memory->grow(atom->mask, nmax, "atom:mask"); - image = memory->grow(atom->image, nmax, "atom:image"); - x = memory->grow(atom->x, nmax, 3, "atom:x"); - v = memory->grow(atom->v, nmax, 3, "atom:v"); - f = memory->grow(atom->f, nmax*comm->nthreads, 3, "atom:f"); - - rho = memory->grow(atom->rho, nmax, "atom:rho"); - drho = memory->grow(atom->drho, nmax*comm->nthreads, "atom:drho"); - e = memory->grow(atom->e, nmax, "atom:e"); - de = memory->grow(atom->de, nmax*comm->nthreads, "atom:de"); - vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); - cv = memory->grow(atom->cv, nmax, "atom:cv"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs - ------------------------------------------------------------------------- */ - -void AtomVecMeso::grow_reset() { - tag = atom->tag; - type = atom->type; - mask = atom->mask; - image = atom->image; - x = atom->x; - v = atom->v; - f = atom->f; - rho = atom->rho; - drho = atom->drho; - e = atom->e; - de = atom->de; - vest = atom->vest; - cv = atom->cv; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::copy(int i, int j, int delflag) { - //printf("in AtomVecMeso::copy\n"); - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - rho[j] = rho[i]; - drho[j] = drho[i]; - e[j] = e[i]; - de[j] = de[i]; - cv[j] = cv[i]; - vest[j][0] = vest[i][0]; - vest[j][1] = vest[i][1]; - vest[j][2] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i, j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::force_clear(int n, size_t nbytes) -{ - memset(&de[n],0,nbytes); - memset(&drho[n],0,nbytes); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_comm_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMeso::pack_comm_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::unpack_comm_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_comm_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - rho[i] = buf[m++]; - e[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_border_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMeso::pack_border_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::unpack_border_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_border_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - rho[i] = buf[m++]; - e[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_reverse_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMeso::pack_reverse_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = drho[i]; - buf[m++] = de[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::unpack_reverse_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMeso::unpack_reverse_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - drho[j] += buf[m++]; - de[j] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_comm(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMeso::pack_comm\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; - dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; - dz = pbc[2] * domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_comm_vel(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMeso::pack_comm_vel\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; - dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; - dz = pbc[2] * domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::unpack_comm(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_comm\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - rho[i] = buf[m++]; - e[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::unpack_comm_vel(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_comm_vel\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - rho[i] = buf[m++]; - e[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_reverse(int n, int first, double *buf) { - //printf("in AtomVecMeso::pack_reverse\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = drho[i]; - buf[m++] = de[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::unpack_reverse(int n, int *list, double *buf) { - //printf("in AtomVecMeso::unpack_reverse\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - drho[j] += buf[m++]; - de[j] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_border(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMeso::pack_border\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_border_vel(int n, int *list, double *buf, int pbc_flag, - int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - dvx = pbc[0] * h_rate[0] + pbc[5] * h_rate[5] + pbc[4] * h_rate[4]; - dvy = pbc[1] * h_rate[1] + pbc[3] * h_rate[3]; - dvz = pbc[2] * h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - buf[m++] = vest[j][0] + dvx; - buf[m++] = vest[j][1] + dvy; - buf[m++] = vest[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = cv[j]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::unpack_border(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_border\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) - grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - rho[i] = buf[m++]; - e[i] = buf[m++]; - cv[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::unpack_border_vel(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_border_vel\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) - grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - rho[i] = buf[m++]; - e[i] = buf[m++]; - cv[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them - ------------------------------------------------------------------------- */ - -int AtomVecMeso::pack_exchange(int i, double *buf) { - //printf("in AtomVecMeso::pack_exchange\n"); - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = rho[i]; - buf[m++] = e[i]; - buf[m++] = cv[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::unpack_exchange(double *buf) { - //printf("in AtomVecMeso::unpack_exchange\n"); - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - rho[nlocal] = buf[m++]; - e[nlocal] = buf[m++]; - cv[nlocal] = buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> unpack_exchange(nlocal, - &buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes - ------------------------------------------------------------------------- */ - -int AtomVecMeso::size_restart() { - int i; - - int nlocal = atom->nlocal; - int n = 17 * nlocal; // 11 + rho + e + cv + vest[3] - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive - ------------------------------------------------------------------------- */ - -int AtomVecMeso::pack_restart(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = rho[i]; - buf[m++] = e[i]; - buf[m++] = cv[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - ------------------------------------------------------------------------- */ - -int AtomVecMeso::unpack_restart(double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra, nmax, atom->nextra_store, "atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - rho[nlocal] = buf[m++]; - e[nlocal] = buf[m++]; - cv[nlocal] = buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) - extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults - ------------------------------------------------------------------------- */ - -void AtomVecMeso::create_atom(int itype, double *coord) { - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - rho[nlocal] = 0.0; - e[nlocal] = 0.0; - cv[nlocal] = 1.0; - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - de[nlocal] = 0.0; - drho[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities - ------------------------------------------------------------------------- */ - -void AtomVecMeso::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - rho[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - e[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - cv[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - //printf("rho=%f, e=%f, cv=%f, x=%f\n", rho[nlocal], e[nlocal], cv[nlocal], x[nlocal][0]); - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - de[nlocal] = 0.0; - drho[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style - ------------------------------------------------------------------------- */ - -int AtomVecMeso::data_atom_hybrid(int nlocal, char **values) { - - rho[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - e[nlocal] = utils::numeric(FLERR,values[1],true,lmp); - cv[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecMeso::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = rho[i]; - buf[i][3] = e[i]; - buf[i][4] = cv[i]; - buf[i][5] = x[i][0]; - buf[i][6] = x[i][1]; - buf[i][7] = x[i][2]; - buf[i][8] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecMeso::pack_data_hybrid(int i, double *buf) -{ - buf[0] = rho[i]; - buf[1] = e[i]; - buf[2] = cv[i]; - return 3; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecMeso::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e " - "%d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4], - buf[i][5],buf[i][6],buf[i][7], - (int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i, - (int) ubuf(buf[i][10]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecMeso::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2]); - return 3; -} - -/* ---------------------------------------------------------------------- - assign an index to named atom property and return index - return -1 if name is unknown to this atom style -------------------------------------------------------------------------- */ - -int AtomVecMeso::property_atom(char *name) -{ - if (strcmp(name,"rho") == 0) return 0; - if (strcmp(name,"drho") == 0) return 1; - if (strcmp(name,"e") == 0) return 2; - if (strcmp(name,"de") == 0) return 3; - if (strcmp(name,"cv") == 0) return 4; - return -1; -} - -/* ---------------------------------------------------------------------- - pack per-atom data into buf for ComputePropertyAtom - index maps to data specific to this atom style -------------------------------------------------------------------------- */ - -void AtomVecMeso::pack_property_atom(int index, double *buf, - int nvalues, int groupbit) -{ - int *mask = atom->mask; - int nlocal = atom->nlocal; - int n = 0; - - if (index == 0) { - for (int i = 0; i < nlocal; i++) { - if (mask[i] & groupbit) buf[n] = rho[i]; - else buf[n] = 0.0; - n += nvalues; - } - } else if (index == 1) { - for (int i = 0; i < nlocal; i++) { - if (mask[i] & groupbit) buf[n] = drho[i]; - else buf[n] = 0.0; - n += nvalues; - } - } else if (index == 2) { - for (int i = 0; i < nlocal; i++) { - if (mask[i] & groupbit) buf[n] = e[i]; - else buf[n] = 0.0; - n += nvalues; - } - } else if (index == 3) { - for (int i = 0; i < nlocal; i++) { - if (mask[i] & groupbit) buf[n] = de[i]; - else buf[n] = 0.0; - n += nvalues; - } - } else if (index == 4) { - for (int i = 0; i < nlocal; i++) { - if (mask[i] & groupbit) buf[n] = cv[i]; - else buf[n] = 0.0; - n += nvalues; - } - } -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory - ------------------------------------------------------------------------- */ - -bigint AtomVecMeso::memory_usage() { - bigint bytes = 0; - - if (atom->memcheck("tag")) - bytes += memory->usage(tag, nmax); - if (atom->memcheck("type")) - bytes += memory->usage(type, nmax); - if (atom->memcheck("mask")) - bytes += memory->usage(mask, nmax); - if (atom->memcheck("image")) - bytes += memory->usage(image, nmax); - if (atom->memcheck("x")) - bytes += memory->usage(x, nmax, 3); - if (atom->memcheck("v")) - bytes += memory->usage(v, nmax, 3); - if (atom->memcheck("f")) - bytes += memory->usage(f, nmax*comm->nthreads, 3); - if (atom->memcheck("rho")) - bytes += memory->usage(rho, nmax); - if (atom->memcheck("drho")) - bytes += memory->usage(drho, nmax*comm->nthreads); - if (atom->memcheck("e")) - bytes += memory->usage(e, nmax); - if (atom->memcheck("de")) - bytes += memory->usage(de, nmax*comm->nthreads); - if (atom->memcheck("cv")) - bytes += memory->usage(cv, nmax); - if (atom->memcheck("vest")) - bytes += memory->usage(vest, nmax); - - return bytes; -} diff --git a/src/USER-SPH/atom_vec_meso.h b/src/USER-SPH/atom_vec_meso.h deleted file mode 100644 index da68222e29..0000000000 --- a/src/USER-SPH/atom_vec_meso.h +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef ATOM_CLASS - -AtomStyle(meso,AtomVecMeso) - -#else - -#ifndef LMP_ATOM_VEC_MESO_H -#define LMP_ATOM_VEC_MESO_H - -#include "atom_vec.h" - -namespace LAMMPS_NS { - -class AtomVecMeso : public AtomVec { - public: - AtomVecMeso(class LAMMPS *); - ~AtomVecMeso() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_comm_hybrid(int, int *, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_border_hybrid(int, int *, double *); - int unpack_border_hybrid(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - int property_atom(char *); - void pack_property_atom(int, double *, int, int); - bigint memory_usage(); - - private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *rho, *drho, *e, *de, *cv; - double **vest; // estimated velocity during force computation -}; - -} - -#endif -#endif diff --git a/src/USER-SPH/atom_vec_sph.cpp b/src/USER-SPH/atom_vec_sph.cpp new file mode 100644 index 0000000000..84a60e44f7 --- /dev/null +++ b/src/USER-SPH/atom_vec_sph.cpp @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. + ------------------------------------------------------------------------- */ + +#include "atom_vec_sph.h" +#include +#include "atom.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +AtomVecSPH::AtomVecSPH(LAMMPS *lmp) : AtomVec(lmp) +{ + molecular = 0; + mass_type = 1; + forceclearflag = 1; + + atom->esph_flag = 1; + atom->rho_flag = 1; + atom->cv_flag = 1; + atom->vest_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "rho drho esph desph cv vest"; + fields_copy = (char *) "rho drho esph desph cv vest"; + fields_comm = (char *) "rho esph vest"; + fields_comm_vel = (char *) "rho esph vest"; + fields_reverse = (char *) "drho desph"; + fields_border = (char *) "rho esph cv vest"; + fields_border_vel = (char *) "rho esph cv vest"; + fields_exchange = (char *) "rho esph cv vest"; + fields_restart = (char * ) "rho esph cv vest"; + fields_create = (char *) "rho esph cv vest de drho"; + fields_data_atom = (char *) "id type rho esph cv x"; + fields_data_vel = (char *) "id v"; + + setup_fields(); +} + +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecSPH::grow_pointers() +{ + rho = atom->rho; + drho = atom->drho; + esph = atom->esph; + desph = atom->desph; + cv = atom->cv; + vest = atom->vest; +} + +/* ---------------------------------------------------------------------- + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector +------------------------------------------------------------------------- */ + +void AtomVecSPH::force_clear(int n, size_t nbytes) +{ + memset(&desph[n],0,nbytes); + memset(&drho[n],0,nbytes); +} + +/* ---------------------------------------------------------------------- + initialize non-zero atom quantities +------------------------------------------------------------------------- */ + +void AtomVecSPH::create_atom_post(int ilocal) +{ + cv[ilocal] = 1.0; +} + +/* ---------------------------------------------------------------------- + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecSPH::data_atom_post(int ilocal) +{ + vest[ilocal][0] = 0.0; + vest[ilocal][1] = 0.0; + vest[ilocal][2] = 0.0; + desph[ilocal] = 0.0; + drho[ilocal] = 0.0; +} + +/* ---------------------------------------------------------------------- + assign an index to named atom property and return index + return -1 if name is unknown to this atom style +------------------------------------------------------------------------- */ + +int AtomVecSPH::property_atom(char *name) +{ + if (strcmp(name,"rho") == 0) return 0; + if (strcmp(name,"drho") == 0) return 1; + if (strcmp(name,"esph") == 0) return 2; + if (strcmp(name,"desph") == 0) return 3; + if (strcmp(name,"cv") == 0) return 4; + return -1; +} + +/* ---------------------------------------------------------------------- + pack per-atom data into buf for ComputePropertyAtom + index maps to data specific to this atom style +------------------------------------------------------------------------- */ + +void AtomVecSPH::pack_property_atom(int index, double *buf, + int nvalues, int groupbit) +{ + int *mask = atom->mask; + int nlocal = atom->nlocal; + int n = 0; + + if (index == 0) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = rho[i]; + else buf[n] = 0.0; + n += nvalues; + } + } else if (index == 1) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = drho[i]; + else buf[n] = 0.0; + n += nvalues; + } + } else if (index == 2) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = esph[i]; + else buf[n] = 0.0; + n += nvalues; + } + } else if (index == 3) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = desph[i]; + else buf[n] = 0.0; + n += nvalues; + } + } else if (index == 4) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = cv[i]; + else buf[n] = 0.0; + n += nvalues; + } + } +} diff --git a/src/USER-SPH/atom_vec_sph.h b/src/USER-SPH/atom_vec_sph.h new file mode 100644 index 0000000000..634c3c72f5 --- /dev/null +++ b/src/USER-SPH/atom_vec_sph.h @@ -0,0 +1,46 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef ATOM_CLASS + +AtomStyle(sph,AtomVecSPH) + +#else + +#ifndef LMP_ATOM_VEC_SPH_H +#define LMP_ATOM_VEC_SPH_H + +#include "atom_vec.h" + +namespace LAMMPS_NS { + +class AtomVecSPH : public AtomVec { + public: + AtomVecSPH(class LAMMPS *); + + void grow_pointers(); + void force_clear(int, size_t); + void create_atom_post(int); + void data_atom_post(int); + int property_atom(char *); + void pack_property_atom(int, double *, int, int); + + private: + double *rho,*drho,*esph,*desph,*cv; + double **vest; +}; + +} + +#endif +#endif diff --git a/src/USER-SPH/compute_meso_e_atom.cpp b/src/USER-SPH/compute_sph_e_atom.cpp similarity index 80% rename from src/USER-SPH/compute_meso_e_atom.cpp rename to src/USER-SPH/compute_sph_e_atom.cpp index c56243e5ed..8869dae5f7 100644 --- a/src/USER-SPH/compute_meso_e_atom.cpp +++ b/src/USER-SPH/compute_sph_e_atom.cpp @@ -11,7 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "compute_meso_e_atom.h" +#include "compute_sph_e_atom.h" #include #include "atom.h" #include "update.h" @@ -24,11 +24,13 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -ComputeMesoEAtom::ComputeMesoEAtom(LAMMPS *lmp, int narg, char **arg) : +ComputeSPHEAtom::ComputeSPHEAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all(FLERR,"Number of arguments for compute meso/e/atom command != 3"); - if (atom->e_flag != 1) error->all(FLERR,"compute meso/e/atom command requires atom_style with energy (e.g. meso)"); + if (narg != 3) + error->all(FLERR,"Number of arguments for compute sph/e/atom command != 3"); + if (atom->esph_flag != 1) + error->all(FLERR,"Compute sph/e/atom command requires atom_style sph)"); peratom_flag = 1; size_peratom_cols = 0; @@ -39,14 +41,14 @@ ComputeMesoEAtom::ComputeMesoEAtom(LAMMPS *lmp, int narg, char **arg) : /* ---------------------------------------------------------------------- */ -ComputeMesoEAtom::~ComputeMesoEAtom() +ComputeSPHEAtom::~ComputeSPHEAtom() { memory->sfree(evector); } /* ---------------------------------------------------------------------- */ -void ComputeMesoEAtom::init() +void ComputeSPHEAtom::init() { int count = 0; @@ -58,7 +60,7 @@ void ComputeMesoEAtom::init() /* ---------------------------------------------------------------------- */ -void ComputeMesoEAtom::compute_peratom() +void ComputeSPHEAtom::compute_peratom() { invoked_peratom = update->ntimestep; @@ -71,13 +73,13 @@ void ComputeMesoEAtom::compute_peratom() vector_atom = evector; } - double *e = atom->e; + double *esph = atom->esph; int *mask = atom->mask; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { - evector[i] = e[i]; + evector[i] = esph[i]; } else { evector[i] = 0.0; @@ -89,7 +91,7 @@ void ComputeMesoEAtom::compute_peratom() memory usage of local atom-based array ------------------------------------------------------------------------- */ -double ComputeMesoEAtom::memory_usage() +double ComputeSPHEAtom::memory_usage() { double bytes = nmax * sizeof(double); return bytes; diff --git a/src/USER-SPH/compute_meso_e_atom.h b/src/USER-SPH/compute_sph_e_atom.h similarity index 78% rename from src/USER-SPH/compute_meso_e_atom.h rename to src/USER-SPH/compute_sph_e_atom.h index 3cdbfa7aa8..370fab148b 100644 --- a/src/USER-SPH/compute_meso_e_atom.h +++ b/src/USER-SPH/compute_sph_e_atom.h @@ -13,21 +13,21 @@ #ifdef COMPUTE_CLASS -ComputeStyle(meso/e/atom,ComputeMesoEAtom) +ComputeStyle(sph/e/atom,ComputeSPHEAtom) #else -#ifndef LMP_COMPUTE_MESO_E_ATOM_H -#define LMP_COMPUTE_MESO_E_ATOM_H +#ifndef LMP_COMPUTE_SPH_E_ATOM_H +#define LMP_COMPUTE_SPH_E_ATOM_H #include "compute.h" namespace LAMMPS_NS { -class ComputeMesoEAtom : public Compute { +class ComputeSPHEAtom : public Compute { public: - ComputeMesoEAtom(class LAMMPS *, int, char **); - ~ComputeMesoEAtom(); + ComputeSPHEAtom(class LAMMPS *, int, char **); + ~ComputeSPHEAtom(); void init(); void compute_peratom(); double memory_usage(); diff --git a/src/USER-SPH/compute_meso_rho_atom.cpp b/src/USER-SPH/compute_sph_rho_atom.cpp similarity index 83% rename from src/USER-SPH/compute_meso_rho_atom.cpp rename to src/USER-SPH/compute_sph_rho_atom.cpp index b2fbd2d70a..1d6d03811c 100644 --- a/src/USER-SPH/compute_meso_rho_atom.cpp +++ b/src/USER-SPH/compute_sph_rho_atom.cpp @@ -11,7 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "compute_meso_rho_atom.h" +#include "compute_sph_rho_atom.h" #include #include "atom.h" #include "update.h" @@ -24,11 +24,12 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -ComputeMesoRhoAtom::ComputeMesoRhoAtom(LAMMPS *lmp, int narg, char **arg) : +ComputeSPHRhoAtom::ComputeSPHRhoAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all(FLERR,"Illegal compute meso/rho/atom command"); - if (atom->rho_flag != 1) error->all(FLERR,"compute meso/rho/atom command requires atom_style with density (e.g. meso)"); + if (narg != 3) error->all(FLERR,"Illegal compute sph/rho/atom command"); + if (atom->rho_flag != 1) + error->all(FLERR,"Compute sph/rho/atom command requires atom_style sph"); peratom_flag = 1; size_peratom_cols = 0; @@ -39,14 +40,14 @@ ComputeMesoRhoAtom::ComputeMesoRhoAtom(LAMMPS *lmp, int narg, char **arg) : /* ---------------------------------------------------------------------- */ -ComputeMesoRhoAtom::~ComputeMesoRhoAtom() +ComputeSPHRhoAtom::~ComputeSPHRhoAtom() { memory->sfree(rhoVector); } /* ---------------------------------------------------------------------- */ -void ComputeMesoRhoAtom::init() +void ComputeSPHRhoAtom::init() { int count = 0; @@ -58,7 +59,7 @@ void ComputeMesoRhoAtom::init() /* ---------------------------------------------------------------------- */ -void ComputeMesoRhoAtom::compute_peratom() +void ComputeSPHRhoAtom::compute_peratom() { invoked_peratom = update->ntimestep; @@ -91,7 +92,7 @@ void ComputeMesoRhoAtom::compute_peratom() memory usage of local atom-based array ------------------------------------------------------------------------- */ -double ComputeMesoRhoAtom::memory_usage() +double ComputeSPHRhoAtom::memory_usage() { double bytes = nmax * sizeof(double); return bytes; diff --git a/src/USER-SPH/compute_meso_rho_atom.h b/src/USER-SPH/compute_sph_rho_atom.h similarity index 77% rename from src/USER-SPH/compute_meso_rho_atom.h rename to src/USER-SPH/compute_sph_rho_atom.h index ec4942ef92..bd38f41199 100644 --- a/src/USER-SPH/compute_meso_rho_atom.h +++ b/src/USER-SPH/compute_sph_rho_atom.h @@ -13,21 +13,21 @@ #ifdef COMPUTE_CLASS -ComputeStyle(meso/rho/atom,ComputeMesoRhoAtom) +ComputeStyle(sph/rho/atom,ComputeSPHRhoAtom) #else -#ifndef LMP_COMPUTE_MESO_RHO_ATOM_H -#define LMP_COMPUTE_MESO_RHO_ATOM_H +#ifndef LMP_COMPUTE_MESO_SPH_ATOM_H +#define LMP_COMPUTE_MESO_SPH_ATOM_H #include "compute.h" namespace LAMMPS_NS { -class ComputeMesoRhoAtom : public Compute { +class ComputeSPHRhoAtom : public Compute { public: - ComputeMesoRhoAtom(class LAMMPS *, int, char **); - ~ComputeMesoRhoAtom(); + ComputeSPHRhoAtom(class LAMMPS *, int, char **); + ~ComputeSPHRhoAtom(); void init(); void compute_peratom(); double memory_usage(); diff --git a/src/USER-SPH/compute_meso_t_atom.cpp b/src/USER-SPH/compute_sph_t_atom.cpp similarity index 79% rename from src/USER-SPH/compute_meso_t_atom.cpp rename to src/USER-SPH/compute_sph_t_atom.cpp index bab96468dd..063af70026 100644 --- a/src/USER-SPH/compute_meso_t_atom.cpp +++ b/src/USER-SPH/compute_sph_t_atom.cpp @@ -11,7 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "compute_meso_t_atom.h" +#include "compute_sph_t_atom.h" #include #include "atom.h" #include "update.h" @@ -24,12 +24,13 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -ComputeMesoTAtom::ComputeMesoTAtom(LAMMPS *lmp, int narg, char **arg) : +ComputeSPHTAtom::ComputeSPHTAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all(FLERR,"Number of arguments for compute meso/t/atom command != 3"); - if ((atom->e_flag != 1) || (atom->cv_flag != 1)) - error->all(FLERR,"Compute meso/t/atom command requires atom_style with both energy and heat capacity (e.g. meso)"); + if (narg != 3) + error->all(FLERR,"Number of arguments for compute sph/t/atom command != 3"); + if ((atom->esph_flag != 1) || (atom->cv_flag != 1)) + error->all(FLERR,"Compute sph/t/atom command requires atom_style sph"); peratom_flag = 1; size_peratom_cols = 0; @@ -40,14 +41,14 @@ ComputeMesoTAtom::ComputeMesoTAtom(LAMMPS *lmp, int narg, char **arg) : /* ---------------------------------------------------------------------- */ -ComputeMesoTAtom::~ComputeMesoTAtom() +ComputeSPHTAtom::~ComputeSPHTAtom() { memory->sfree(tvector); } /* ---------------------------------------------------------------------- */ -void ComputeMesoTAtom::init() +void ComputeSPHTAtom::init() { int count = 0; @@ -59,7 +60,7 @@ void ComputeMesoTAtom::init() /* ---------------------------------------------------------------------- */ -void ComputeMesoTAtom::compute_peratom() +void ComputeSPHTAtom::compute_peratom() { invoked_peratom = update->ntimestep; @@ -72,7 +73,7 @@ void ComputeMesoTAtom::compute_peratom() vector_atom = tvector; } - double *e = atom->e; + double *esph = atom->esph; double *cv = atom->cv; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -80,7 +81,7 @@ void ComputeMesoTAtom::compute_peratom() for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { if (cv[i] > 0.0) { - tvector[i] = e[i] / cv[i]; + tvector[i] = esph[i] / cv[i]; } } else { @@ -93,7 +94,7 @@ void ComputeMesoTAtom::compute_peratom() memory usage of local atom-based array ------------------------------------------------------------------------- */ -double ComputeMesoTAtom::memory_usage() +double ComputeSPHTAtom::memory_usage() { double bytes = nmax * sizeof(double); return bytes; diff --git a/src/USER-SPH/compute_meso_t_atom.h b/src/USER-SPH/compute_sph_t_atom.h similarity index 78% rename from src/USER-SPH/compute_meso_t_atom.h rename to src/USER-SPH/compute_sph_t_atom.h index 9e4b253712..b3bf93a0eb 100644 --- a/src/USER-SPH/compute_meso_t_atom.h +++ b/src/USER-SPH/compute_sph_t_atom.h @@ -13,21 +13,21 @@ #ifdef COMPUTE_CLASS -ComputeStyle(meso/t/atom,ComputeMesoTAtom) +ComputeStyle(sph/t/atom,ComputeSPHTAtom) #else -#ifndef LMP_COMPUTE_MESO_T_ATOM_H -#define LMP_COMPUTE_MESO_T_ATOM_H +#ifndef LMP_COMPUTE_SPH_T_ATOM_H +#define LMP_COMPUTE_SPH_T_ATOM_H #include "compute.h" namespace LAMMPS_NS { -class ComputeMesoTAtom : public Compute { +class ComputeSPHTAtom : public Compute { public: - ComputeMesoTAtom(class LAMMPS *, int, char **); - ~ComputeMesoTAtom(); + ComputeSPHTAtom(class LAMMPS *, int, char **); + ~ComputeSPHTAtom(); void init(); void compute_peratom(); double memory_usage(); diff --git a/src/USER-SPH/fix_meso.cpp b/src/USER-SPH/fix_sph.cpp similarity index 84% rename from src/USER-SPH/fix_meso.cpp rename to src/USER-SPH/fix_sph.cpp index 4f4e532291..843edc8e92 100644 --- a/src/USER-SPH/fix_meso.cpp +++ b/src/USER-SPH/fix_sph.cpp @@ -11,7 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "fix_meso.h" +#include "fix_sph.h" #include "atom.h" #include "force.h" #include "update.h" @@ -22,22 +22,22 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixMeso::FixMeso(LAMMPS *lmp, int narg, char **arg) : +FixSPH::FixSPH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if ((atom->e_flag != 1) || (atom->rho_flag != 1)) + if ((atom->esph_flag != 1) || (atom->rho_flag != 1)) error->all(FLERR, - "fix meso command requires atom_style with both energy and density"); + "Fix sph command requires atom_style with both energy and density"); if (narg != 3) - error->all(FLERR,"Illegal number of arguments for fix meso command"); + error->all(FLERR,"Illegal number of arguments for fix sph command"); time_integrate = 1; } /* ---------------------------------------------------------------------- */ -int FixMeso::setmask() { +int FixSPH::setmask() { int mask = 0; mask |= INITIAL_INTEGRATE; mask |= FINAL_INTEGRATE; @@ -47,12 +47,12 @@ int FixMeso::setmask() { /* ---------------------------------------------------------------------- */ -void FixMeso::init() { +void FixSPH::init() { dtv = update->dt; dtf = 0.5 * update->dt * force->ftm2v; } -void FixMeso::setup_pre_force(int /*vflag*/) +void FixSPH::setup_pre_force(int /*vflag*/) { // set vest equal to v double **v = atom->v; @@ -75,7 +75,7 @@ void FixMeso::setup_pre_force(int /*vflag*/) allow for both per-type and per-atom mass ------------------------------------------------------------------------- */ -void FixMeso::initial_integrate(int /*vflag*/) { +void FixSPH::initial_integrate(int /*vflag*/) { // update v and x and rho and e of atoms in group double **x = atom->x; @@ -84,8 +84,8 @@ void FixMeso::initial_integrate(int /*vflag*/) { double **vest = atom->vest; double *rho = atom->rho; double *drho = atom->drho; - double *e = atom->e; - double *de = atom->de; + double *esph = atom->esph; + double *desph = atom->desph; double *mass = atom->mass; double *rmass = atom->rmass; int rmass_flag = atom->rmass_flag; @@ -107,7 +107,7 @@ void FixMeso::initial_integrate(int /*vflag*/) { dtfm = dtf / mass[type[i]]; } - e[i] += dtf * de[i]; // half-step update of particle internal energy + esph[i] += dtf * desph[i]; // half-step update of particle internal energy rho[i] += dtf * drho[i]; // ... and density // extrapolate velocity for use with velocity-dependent potentials, e.g. SPH @@ -128,14 +128,14 @@ void FixMeso::initial_integrate(int /*vflag*/) { /* ---------------------------------------------------------------------- */ -void FixMeso::final_integrate() { +void FixSPH::final_integrate() { // update v, rho, and e of atoms in group double **v = atom->v; double **f = atom->f; - double *e = atom->e; - double *de = atom->de; + double *esph = atom->esph; + double *desph = atom->desph; double *rho = atom->rho; double *drho = atom->drho; int *type = atom->type; @@ -160,7 +160,7 @@ void FixMeso::final_integrate() { v[i][1] += dtfm * f[i][1]; v[i][2] += dtfm * f[i][2]; - e[i] += dtf * de[i]; + esph[i] += dtf * desph[i]; rho[i] += dtf * drho[i]; } } @@ -168,7 +168,7 @@ void FixMeso::final_integrate() { /* ---------------------------------------------------------------------- */ -void FixMeso::reset_dt() { +void FixSPH::reset_dt() { dtv = update->dt; dtf = 0.5 * update->dt * force->ftm2v; } diff --git a/src/USER-SPH/fix_meso.h b/src/USER-SPH/fix_sph.h similarity index 88% rename from src/USER-SPH/fix_meso.h rename to src/USER-SPH/fix_sph.h index 3eebb0f774..0a43997508 100644 --- a/src/USER-SPH/fix_meso.h +++ b/src/USER-SPH/fix_sph.h @@ -13,20 +13,20 @@ #ifdef FIX_CLASS -FixStyle(meso,FixMeso) +FixStyle(sph,FixSPH) #else -#ifndef LMP_FIX_MESO_H -#define LMP_FIX_MESO_H +#ifndef LMP_FIX_SPH_H +#define LMP_FIX_SPH_H #include "fix.h" namespace LAMMPS_NS { -class FixMeso : public Fix { +class FixSPH : public Fix { public: - FixMeso(class LAMMPS *, int, char **); + FixSPH(class LAMMPS *, int, char **); int setmask(); virtual void init(); virtual void setup_pre_force(int); diff --git a/src/USER-SPH/fix_meso_stationary.cpp b/src/USER-SPH/fix_sph_stationary.cpp similarity index 74% rename from src/USER-SPH/fix_meso_stationary.cpp rename to src/USER-SPH/fix_sph_stationary.cpp index b7f0675ef8..56ac71f2c5 100644 --- a/src/USER-SPH/fix_meso_stationary.cpp +++ b/src/USER-SPH/fix_sph_stationary.cpp @@ -11,7 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "fix_meso_stationary.h" +#include "fix_sph_stationary.h" #include "atom.h" #include "force.h" #include "update.h" @@ -22,22 +22,22 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixMesoStationary::FixMesoStationary(LAMMPS *lmp, int narg, char **arg) : +FixSPHStationary::FixSPHStationary(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if ((atom->e_flag != 1) || (atom->rho_flag != 1)) + if ((atom->esph_flag != 1) || (atom->rho_flag != 1)) error->all(FLERR, - "fix meso/stationary command requires atom_style with both energy and density, e.g. meso"); + "Fix sph/stationary command requires atom_style with both energy and density, e.g. meso"); if (narg != 3) - error->all(FLERR,"Illegal number of arguments for fix meso/stationary command"); + error->all(FLERR,"Illegal number of arguments for fix sph/stationary command"); time_integrate = 0; } /* ---------------------------------------------------------------------- */ -int FixMesoStationary::setmask() { +int FixSPHStationary::setmask() { int mask = 0; mask |= INITIAL_INTEGRATE; mask |= FINAL_INTEGRATE; @@ -46,7 +46,7 @@ int FixMesoStationary::setmask() { /* ---------------------------------------------------------------------- */ -void FixMesoStationary::init() { +void FixSPHStationary::init() { dtv = update->dt; dtf = 0.5 * update->dt * force->ftm2v; } @@ -55,12 +55,12 @@ void FixMesoStationary::init() { allow for both per-type and per-atom mass ------------------------------------------------------------------------- */ -void FixMesoStationary::initial_integrate(int /*vflag*/) { +void FixSPHStationary::initial_integrate(int /*vflag*/) { double *rho = atom->rho; double *drho = atom->drho; - double *e = atom->e; - double *de = atom->de; + double *esph = atom->esph; + double *desph = atom->desph; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -71,7 +71,7 @@ void FixMesoStationary::initial_integrate(int /*vflag*/) { for (i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { - e[i] += dtf * de[i]; // half-step update of particle internal energy + esph[i] += dtf * desph[i]; // half-step update of particle internal energy rho[i] += dtf * drho[i]; // ... and density } } @@ -79,10 +79,10 @@ void FixMesoStationary::initial_integrate(int /*vflag*/) { /* ---------------------------------------------------------------------- */ -void FixMesoStationary::final_integrate() { +void FixSPHStationary::final_integrate() { - double *e = atom->e; - double *de = atom->de; + double *esph = atom->esph; + double *desph = atom->desph; double *rho = atom->rho; double *drho = atom->drho; int *mask = atom->mask; @@ -92,7 +92,7 @@ void FixMesoStationary::final_integrate() { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { - e[i] += dtf * de[i]; + esph[i] += dtf * desph[i]; rho[i] += dtf * drho[i]; } } @@ -100,7 +100,7 @@ void FixMesoStationary::final_integrate() { /* ---------------------------------------------------------------------- */ -void FixMesoStationary::reset_dt() { +void FixSPHStationary::reset_dt() { dtv = update->dt; dtf = 0.5 * update->dt * force->ftm2v; } diff --git a/src/USER-SPH/fix_meso_stationary.h b/src/USER-SPH/fix_sph_stationary.h similarity index 83% rename from src/USER-SPH/fix_meso_stationary.h rename to src/USER-SPH/fix_sph_stationary.h index 326c13dcd3..f2bb6c39f2 100644 --- a/src/USER-SPH/fix_meso_stationary.h +++ b/src/USER-SPH/fix_sph_stationary.h @@ -13,20 +13,20 @@ #ifdef FIX_CLASS -FixStyle(meso/stationary,FixMesoStationary) +FixStyle(sph/stationary,FixSPHStationary) #else -#ifndef LMP_FIX_MESO_STATIONARY_H -#define LMP_FIX_MESO_STATIONARY_H +#ifndef LMP_FIX_SPH_STATIONARY_H +#define LMP_FIX_SPH_STATIONARY_H #include "fix.h" namespace LAMMPS_NS { -class FixMesoStationary : public Fix { +class FixSPHStationary : public Fix { public: - FixMesoStationary(class LAMMPS *, int, char **); + FixSPHStationary(class LAMMPS *, int, char **); int setmask(); virtual void init(); virtual void initial_integrate(int); diff --git a/src/USER-SPH/pair_sph_heatconduction.cpp b/src/USER-SPH/pair_sph_heatconduction.cpp index cff9009015..ebd2cef684 100644 --- a/src/USER-SPH/pair_sph_heatconduction.cpp +++ b/src/USER-SPH/pair_sph_heatconduction.cpp @@ -53,8 +53,8 @@ void PairSPHHeatConduction::compute(int eflag, int vflag) { ev_init(eflag, vflag); double **x = atom->x; - double *e = atom->e; - double *de = atom->de; + double *esph = atom->esph; + double *desph = atom->desph; double *mass = atom->mass; double *rho = atom->rho; int *type = atom->type; @@ -116,11 +116,11 @@ void PairSPHHeatConduction::compute(int eflag, int vflag) { deltaE = 2.0 * imass * jmass / (imass+jmass); deltaE *= (rho[i] + rho[j]) / (rho[i] * rho[j]); - deltaE *= D * (e[i] - e[j]) * wfd; + deltaE *= D * (esph[i] - esph[j]) * wfd; - de[i] += deltaE; + desph[i] += deltaE; if (newton_pair || j < nlocal) { - de[j] -= deltaE; + desph[j] -= deltaE; } } diff --git a/src/USER-SPH/pair_sph_idealgas.cpp b/src/USER-SPH/pair_sph_idealgas.cpp index f206bf68f5..1f6b63e199 100644 --- a/src/USER-SPH/pair_sph_idealgas.cpp +++ b/src/USER-SPH/pair_sph_idealgas.cpp @@ -58,8 +58,8 @@ void PairSPHIdealGas::compute(int eflag, int vflag) { double **f = atom->f; double *rho = atom->rho; double *mass = atom->mass; - double *de = atom->de; - double *e = atom->e; + double *desph = atom->desph; + double *esph = atom->esph; double *drho = atom->drho; int *type = atom->type; int nlocal = atom->nlocal; @@ -86,8 +86,8 @@ void PairSPHIdealGas::compute(int eflag, int vflag) { imass = mass[itype]; - fi = 0.4 * e[i] / imass / rho[i]; // ideal gas EOS; this expression is fi = pressure / rho^2 - ci = sqrt(0.4*e[i]/imass); // speed of sound with heat capacity ratio gamma=1.4 + fi = 0.4 * esph[i] / imass / rho[i]; // ideal gas EOS; this expression is fi = pressure / rho^2 + ci = sqrt(0.4*esph[i]/imass); // speed of sound with heat capacity ratio gamma=1.4 for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; @@ -119,7 +119,7 @@ void PairSPHIdealGas::compute(int eflag, int vflag) { wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; } - fj = 0.4 * e[j] / jmass / rho[j]; + fj = 0.4 * esph[j] / jmass / rho[j]; // dot product of velocity delta and distance vector delVdotDelR = delx * (vxtmp - v[j][0]) + dely * (vytmp - v[j][1]) @@ -127,7 +127,7 @@ void PairSPHIdealGas::compute(int eflag, int vflag) { // artificial viscosity (Monaghan 1992) if (delVdotDelR < 0.) { - cj = sqrt(0.4*e[j]/jmass); + cj = sqrt(0.4*esph[j]/jmass); mu = h * delVdotDelR / (rsq + 0.01 * h * h); fvisc = -viscosity[itype][jtype] * (ci + cj) * mu / (rho[i] + rho[j]); } else { @@ -146,13 +146,13 @@ void PairSPHIdealGas::compute(int eflag, int vflag) { drho[i] += jmass * delVdotDelR * wfd; // change in thermal energy - de[i] += deltaE; + desph[i] += deltaE; if (newton_pair || j < nlocal) { f[j][0] -= delx * fpair; f[j][1] -= dely * fpair; f[j][2] -= delz * fpair; - de[j] += deltaE; + desph[j] += deltaE; drho[j] += imass * delVdotDelR * wfd; } diff --git a/src/USER-SPH/pair_sph_lj.cpp b/src/USER-SPH/pair_sph_lj.cpp index 3173e2a47d..ae42c413e7 100644 --- a/src/USER-SPH/pair_sph_lj.cpp +++ b/src/USER-SPH/pair_sph_lj.cpp @@ -58,8 +58,8 @@ void PairSPHLJ::compute(int eflag, int vflag) { double **f = atom->f; double *rho = atom->rho; double *mass = atom->mass; - double *de = atom->de; - double *e = atom->e; + double *desph = atom->desph; + double *esph = atom->esph; double *cv = atom->cv; double *drho = atom->drho; int *type = atom->type; @@ -88,7 +88,7 @@ void PairSPHLJ::compute(int eflag, int vflag) { imass = mass[itype]; // compute pressure of particle i with LJ EOS - LJEOS2(rho[i], e[i], cv[i], &fi, &ci); + LJEOS2(rho[i], esph[i], cv[i], &fi, &ci); fi /= (rho[i] * rho[i]); //printf("fi = %f\n", fi); @@ -124,7 +124,7 @@ void PairSPHLJ::compute(int eflag, int vflag) { } // function call to LJ EOS - LJEOS2(rho[j], e[j], cv[j], &fj, &cj); + LJEOS2(rho[j], esph[j], cv[j], &fj, &cj); fj /= (rho[j] * rho[j]); // apply long-range correction to model a LJ fluid with cutoff @@ -157,13 +157,13 @@ void PairSPHLJ::compute(int eflag, int vflag) { drho[i] += jmass * delVdotDelR * wfd; // change in thermal energy - de[i] += deltaE; + desph[i] += deltaE; if (newton_pair || j < nlocal) { f[j][0] -= delx * fpair; f[j][1] -= dely * fpair; f[j][2] -= delz * fpair; - de[j] += deltaE; + desph[j] += deltaE; drho[j] += imass * delVdotDelR * wfd; } diff --git a/src/USER-SPH/pair_sph_taitwater.cpp b/src/USER-SPH/pair_sph_taitwater.cpp index f2a34d4edd..79d9ac7742 100644 --- a/src/USER-SPH/pair_sph_taitwater.cpp +++ b/src/USER-SPH/pair_sph_taitwater.cpp @@ -64,7 +64,7 @@ void PairSPHTaitwater::compute(int eflag, int vflag) { double **f = atom->f; double *rho = atom->rho; double *mass = atom->mass; - double *de = atom->de; + double *desph = atom->desph; double *drho = atom->drho; int *type = atom->type; int nlocal = atom->nlocal; @@ -176,13 +176,13 @@ void PairSPHTaitwater::compute(int eflag, int vflag) { drho[i] += jmass * delVdotDelR * wfd; // change in thermal energy - de[i] += deltaE; + desph[i] += deltaE; if (newton_pair || j < nlocal) { f[j][0] -= delx * fpair; f[j][1] -= dely * fpair; f[j][2] -= delz * fpair; - de[j] += deltaE; + desph[j] += deltaE; drho[j] += imass * delVdotDelR * wfd; } diff --git a/src/USER-SPH/pair_sph_taitwater_morris.cpp b/src/USER-SPH/pair_sph_taitwater_morris.cpp index 9ca03e3476..862d2a8053 100644 --- a/src/USER-SPH/pair_sph_taitwater_morris.cpp +++ b/src/USER-SPH/pair_sph_taitwater_morris.cpp @@ -64,7 +64,7 @@ void PairSPHTaitwaterMorris::compute(int eflag, int vflag) { double **f = atom->f; double *rho = atom->rho; double *mass = atom->mass; - double *de = atom->de; + double *desph = atom->desph; double *drho = atom->drho; int *type = atom->type; int nlocal = atom->nlocal; @@ -177,13 +177,13 @@ void PairSPHTaitwaterMorris::compute(int eflag, int vflag) { drho[i] += jmass * delVdotDelR * wfd; // change in thermal energy - de[i] += deltaE; + desph[i] += deltaE; if (newton_pair || j < nlocal) { f[j][0] -= delx * fpair + velx * fvisc; f[j][1] -= dely * fpair + vely * fvisc; f[j][2] -= delz * fpair + velz * fvisc; - de[j] += deltaE; + desph[j] += deltaE; drho[j] += imass * delVdotDelR * wfd; } diff --git a/src/angle_deprecated.cpp b/src/angle_deprecated.cpp index cc29c9978e..968445f3f1 100644 --- a/src/angle_deprecated.cpp +++ b/src/angle_deprecated.cpp @@ -16,7 +16,7 @@ ------------------------------------------------------------------------- */ #include "angle_deprecated.h" -#include +#include #include "angle_hybrid.h" #include "comm.h" #include "force.h" @@ -25,21 +25,11 @@ using namespace LAMMPS_NS; -static void writemsg(LAMMPS *lmp, const char *msg, int abend=1) -{ - if (lmp->comm->me == 0) { - if (lmp->screen) fputs(msg,lmp->screen); - if (lmp->logfile) fputs(msg,lmp->logfile); - } - if (abend) - lmp->error->all(FLERR,"This angle style is no longer available"); -} - /* ---------------------------------------------------------------------- */ void AngleDeprecated::settings(int, char **) { - const char *my_style = force->angle_style; + std::string my_style = force->angle_style; // hybrid substyles are created in AngleHybrid::settings(), so when this is // called, our style was just added at the end of the list of substyles @@ -49,10 +39,13 @@ void AngleDeprecated::settings(int, char **) my_style = hybrid->keywords[hybrid->nstyles]; } - if (strcmp(my_style,"DEPRECATED") == 0) { - writemsg(lmp,"\nAngle style 'DEPRECATED' is a dummy style\n\n",0); - + if (my_style == "DEPRECATED") { + if (lmp->comm->me == 0) + utils::logmesg(lmp,"\nAngle style 'DEPRECATED' is a dummy style\n\n"); + return; } + + lmp->error->all(FLERR,"This angle style is no longer available"); } diff --git a/src/atom.cpp b/src/atom.cpp index 1691d77c1c..d5103dc880 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include "style_atom.h" #include "atom_vec.h" #include "atom_vec_ellipsoid.h" @@ -45,7 +46,7 @@ using namespace LAMMPS_NS; using namespace MathConst; #define DELTA 1 -#define DELTA_MEMSTR 1024 +#define DELTA_PERATOM 64 #define EPSILON 1.0e-6 /* ---------------------------------------------------------------------- */ @@ -67,58 +68,34 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) binhead = NULL; next = permute = NULL; - // initialize atom arrays - // customize by adding new array + // data structure with info on per-atom vectors/arrays + + nperatom = maxperatom = 0; + peratom = NULL; + + // -------------------------------------------------------------------- + // 1st customization section: customize by adding new per-atom variables tag = NULL; type = mask = NULL; image = NULL; x = v = f = NULL; - molecule = NULL; - molindex = molatom = NULL; + // charged and dipolar particles + q = NULL; mu = NULL; + + // finite-size particles + omega = angmom = torque = NULL; radius = rmass = NULL; ellipsoid = line = tri = body = NULL; - vfrac = s0 = NULL; - x0 = NULL; + // molecular systems - spin = NULL; - eradius = ervel = erforce = NULL; - cs = csforce = vforce = ervelforce = NULL; - etag = NULL; - - rho = drho = e = de = cv = NULL; - vest = NULL; - - // SPIN package - - sp = fm = fm_long = NULL; - - // USER-DPD - - uCond = uMech = uChem = uCG = uCGnew = NULL; - duChem = NULL; - dpdTheta = NULL; - - // USER-MESO - - cc = cc_flux = NULL; - edpd_temp = edpd_flux = edpd_cv = NULL; - - // USER-SMD - - contact_radius = NULL; - smd_data_9 = NULL; - smd_stress = NULL; - eff_plastic_strain = NULL; - eff_plastic_strain_rate = NULL; - damage = NULL; - - // molecular info + molecule = NULL; + molindex = molatom = NULL; bond_per_atom = extra_bond_per_atom = 0; num_bond = NULL; @@ -144,6 +121,50 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) nspecial = NULL; special = NULL; + // PERI package + + vfrac = s0 = NULL; + x0 = NULL; + + // SPIN package + + sp = fm = fm_long = NULL; + + // USER-EFF and USER-AWPMD packages + + spin = NULL; + eradius = ervel = erforce = NULL; + ervelforce = NULL; + cs = csforce = vforce = NULL; + etag = NULL; + + // USER-DPD package + + uCond = uMech = uChem = uCG = uCGnew = NULL; + duChem = dpdTheta = NULL; + + // USER-MESO package + + cc = cc_flux = NULL; + edpd_temp = edpd_flux = edpd_cv = NULL; + + // USER-SMD package + + contact_radius = NULL; + smd_data_9 = NULL; + smd_stress = NULL; + eff_plastic_strain = NULL; + eff_plastic_strain_rate = NULL; + damage = NULL; + + // USER-SPH package + + rho = drho = esph = desph = cv = NULL; + vest = NULL; + + // end of customization section + // -------------------------------------------------------------------- + // user-defined molecules nmolecule = 0; @@ -157,44 +178,12 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) iname = dname = NULL; // initialize atom style and array existence flags - // customize by adding new flag - sphere_flag = peri_flag = electron_flag = 0; - wavepacket_flag = sph_flag = 0; + set_atomflag_defaults(); - molecule_flag = 0; - q_flag = mu_flag = 0; - omega_flag = torque_flag = angmom_flag = 0; - radius_flag = rmass_flag = 0; - ellipsoid_flag = line_flag = tri_flag = body_flag = 0; + // initialize peratom data structure - // magnetic flags - - sp_flag = 0; - - vfrac_flag = 0; - spin_flag = eradius_flag = ervel_flag = erforce_flag = ervelforce_flag = 0; - cs_flag = csforce_flag = vforce_flag = etag_flag = 0; - - // USER-SPH, USER-MESO, and USER-DPD flags - - rho_flag = e_flag = cv_flag = vest_flag = 0; - dpd_flag = edpd_flag = tdpd_flag = 0; - - // USER-SMD - - smd_flag = 0; - contact_radius_flag = 0; - smd_data_9_flag = 0; - smd_stress_flag = 0; - x0_flag = 0; - eff_plastic_strain_flag = 0; - eff_plastic_strain_rate_flag = 0; - damage_flag = 0; - - // Peridynamic scale factor - - pdscale = 1.0; + peratom_create(); // ntype-length arrays @@ -248,8 +237,15 @@ Atom::~Atom() memory->destroy(next); memory->destroy(permute); + // delete peratom data struct + + for (int i = 0; i < nperatom; i++) + delete [] peratom[i].name; + memory->sfree(peratom); + + // -------------------------------------------------------------------- + // 2nd customization section: customize by adding new per-atom variables // delete atom arrays - // customize by adding new array memory->destroy(tag); memory->destroy(type); @@ -295,8 +291,8 @@ Atom::~Atom() memory->destroy(rho); memory->destroy(drho); - memory->destroy(e); - memory->destroy(de); + memory->destroy(esph); + memory->destroy(desph); memory->destroy(cv); memory->destroy(vest); @@ -348,6 +344,9 @@ Atom::~Atom() memory->destroy(improper_atom3); memory->destroy(improper_atom4); + // end of customization section + // -------------------------------------------------------------------- + // delete custom atom arrays for (int i = 0; i < nivector; i++) { @@ -406,12 +405,283 @@ void Atom::settings(Atom *old) } } +/* ---------------------------------------------------------------------- + one-time creation of peratom data structure +------------------------------------------------------------------------- */ + +void Atom::peratom_create() +{ + for (int i = 0; i < nperatom; i++) + delete [] peratom[i].name; + memory->sfree(peratom); + + peratom = NULL; + nperatom = maxperatom = 0; + + // -------------------------------------------------------------------- + // 3rd customization section: add peratom variables here, order does not matter + // register tagint & imageint variables as INT or BIGINT + + int tagintsize = INT; + if (sizeof(tagint) == 8) tagintsize = BIGINT; + int imageintsize = INT; + if (sizeof(imageint) == 8) imageintsize = BIGINT; + + add_peratom("id",&tag,tagintsize,0); + add_peratom("type",&type,INT,0); + add_peratom("mask",&mask,INT,0); + add_peratom("image",&image,imageintsize,0); + + add_peratom("x",&x,DOUBLE,3); + add_peratom("v",&v,DOUBLE,3); + add_peratom("f",&f,DOUBLE,3,1); // set per-thread flag + + add_peratom("rmass",&rmass,DOUBLE,0); + add_peratom("q",&q,DOUBLE,0); + add_peratom("mu",&mu,DOUBLE,4); + add_peratom("mu3",&mu,DOUBLE,3); // just first 3 values of mu[4] + + // finite size particles + + add_peratom("radius",&radius,DOUBLE,0); + add_peratom("omega",&omega,DOUBLE,3); + add_peratom("torque",&torque,DOUBLE,3,1); // set per-thread flag + add_peratom("angmom",&angmom,DOUBLE,3); + + add_peratom("ellipsoid",&ellipsoid,INT,0); + add_peratom("line",&line,INT,0); + add_peratom("tri",&tri,INT,0); + add_peratom("body",&body,INT,0); + + // MOLECULE package + + add_peratom("molecule",&molecule,tagintsize,0); + add_peratom("molindex",&molindex,INT,0); + add_peratom("molatom",&molatom,INT,0); + + add_peratom("nspecial",&nspecial,INT,3); + add_peratom_vary("special",&special,tagintsize,&maxspecial,&nspecial,3); + + add_peratom("num_bond",&num_bond,INT,0); + add_peratom_vary("bond_type",&bond_type,INT,&bond_per_atom,&num_bond); + add_peratom_vary("bond_atom",&bond_atom,tagintsize,&bond_per_atom,&num_bond); + + add_peratom("num_angle",&num_angle,INT,0); + add_peratom_vary("angle_type",&angle_type,INT,&angle_per_atom,&num_angle); + add_peratom_vary("angle_atom1",&angle_atom1,tagintsize, + &angle_per_atom,&num_angle); + add_peratom_vary("angle_atom2",&angle_atom2,tagintsize, + &angle_per_atom,&num_angle); + add_peratom_vary("angle_atom3",&angle_atom3,tagintsize, + &angle_per_atom,&num_angle); + + add_peratom("num_dihedral",&num_dihedral,INT,0); + add_peratom_vary("dihedral_type",&dihedral_type,INT, + &dihedral_per_atom,&num_dihedral); + add_peratom_vary("dihedral_atom1",&dihedral_atom1,tagintsize, + &dihedral_per_atom,&num_dihedral); + add_peratom_vary("dihedral_atom2",&dihedral_atom2,tagintsize, + &dihedral_per_atom,&num_dihedral); + add_peratom_vary("dihedral_atom3",&dihedral_atom3,tagintsize, + &dihedral_per_atom,&num_dihedral); + add_peratom_vary("dihedral_atom4",&dihedral_atom4,tagintsize, + &dihedral_per_atom,&num_dihedral); + + add_peratom("num_improper",&num_improper,INT,0); + add_peratom_vary("improper_type",&improper_type,INT, + &improper_per_atom,&num_improper); + add_peratom_vary("improper_atom1",&improper_atom1,tagintsize, + &improper_per_atom,&num_improper); + add_peratom_vary("improper_atom2",&improper_atom2,tagintsize, + &improper_per_atom,&num_improper); + add_peratom_vary("improper_atom3",&improper_atom3,tagintsize, + &improper_per_atom,&num_improper); + add_peratom_vary("improper_atom4",&improper_atom4,tagintsize, + &improper_per_atom,&num_improper); + + // PERI package + + add_peratom("vfrac",&vfrac,DOUBLE,0); + add_peratom("s0",&s0,DOUBLE,0); + add_peratom("x0",&x0,DOUBLE,3); + + // SPIN package + + add_peratom("sp",&sp,DOUBLE,4); + add_peratom("fm",&fm,DOUBLE,3,1); + add_peratom("fm_long",&fm_long,DOUBLE,3,1); + + // USER-EFF package + + add_peratom("spin",&spin,INT,0); + add_peratom("eradius",&eradius,DOUBLE,0); + add_peratom("ervel",&ervel,DOUBLE,0); + add_peratom("erforce",&erforce,DOUBLE,0,1); // set per-thread flag + + // USER-AWPMD package + + add_peratom("cs",&cs,DOUBLE,2); + add_peratom("csforce",&csforce,DOUBLE,2); + add_peratom("vforce",&vforce,DOUBLE,3); + add_peratom("ervelforce",&ervelforce,DOUBLE,0); + add_peratom("etag",&etag,INT,0); + + // USER-DPD package + + add_peratom("dpdTheta",&dpdTheta,DOUBLE,0); + add_peratom("uCond",&uCond,DOUBLE,0); + add_peratom("uMech",&uMech,DOUBLE,0); + add_peratom("uChem",&uChem,DOUBLE,0); + add_peratom("uCG",&uCG,DOUBLE,0); + add_peratom("uCGnew",&uCGnew,DOUBLE,0); + add_peratom("duChem",&duChem,DOUBLE,0); + + // USER-MESO package + + add_peratom("edpd_cv",&edpd_cv,DOUBLE,0); + add_peratom("edpd_temp",&edpd_temp,DOUBLE,0); + add_peratom("vest_temp",&vest_temp,DOUBLE,0); + add_peratom("edpd_flux",&edpd_flux,DOUBLE,0,1); // set per-thread flag + add_peratom("cc",&cc,DOUBLE,1); + add_peratom("cc_flux",&cc_flux,DOUBLE,1,1); // set per-thread flag + + // USER-SPH package + + add_peratom("rho",&rho,DOUBLE,0); + add_peratom("drho",&drho,DOUBLE,0,1); // set per-thread flag + add_peratom("esph",&esph,DOUBLE,0); + add_peratom("desph",&desph,DOUBLE,0,1); // set per-thread flag + add_peratom("vest",&vest,DOUBLE,3); + add_peratom("cv",&cv,DOUBLE,0); + + // USER-SMD package + + add_peratom("contact_radius",&contact_radius,DOUBLE,0); + add_peratom("smd_data_9",&smd_data_9,DOUBLE,1); + add_peratom("smd_stress",&smd_stress,DOUBLE,1); + add_peratom("eff_plastic_strain",&eff_plastic_strain,DOUBLE,0); + add_peratom("eff_plastic_strain_rate",&eff_plastic_strain_rate,DOUBLE,0); + add_peratom("damage",&damage,DOUBLE,0); + + // end of customization section + // -------------------------------------------------------------------- +} + +/* ---------------------------------------------------------------------- + add info for a single per-atom vector/array to PerAtom data struct + cols = 0: per-atom vector + cols = N: static per-atom array with N columns + use add_peratom_vary() when column count varies per atom +------------------------------------------------------------------------- */ + +void Atom::add_peratom(const char *name, void *address, + int datatype, int cols, int threadflag) +{ + if (nperatom == maxperatom) { + maxperatom += DELTA_PERATOM; + peratom = (PerAtom *) + memory->srealloc(peratom,maxperatom*sizeof(PerAtom),"atom:peratom"); + } + + int n = strlen(name) + 1; + peratom[nperatom].name = new char[n]; + strcpy(peratom[nperatom].name,name); + peratom[nperatom].address = address; + peratom[nperatom].datatype = datatype; + peratom[nperatom].cols = cols; + peratom[nperatom].threadflag = threadflag; + peratom[nperatom].address_length = NULL; + + nperatom++; +} + +/* ---------------------------------------------------------------------- + change the column count of an existing peratom array entry + allows atom_style to specify column count as an argument + see atom_style tdpd as an example +------------------------------------------------------------------------- */ + +void Atom::add_peratom_change_columns(const char *name, int cols) +{ + for (int i = 0; i < nperatom; i++) { + if (strcmp(name,peratom[i].name) == 0) { + peratom[i].cols = cols; + return; + } + } + error->all(FLERR,"Could not find name of peratom array for column change"); +} + +/* ---------------------------------------------------------------------- + add info for a single per-atom array to PerAtom data struct + cols = address of int variable with max columns per atom + for collength = 0: + length = address of peratom vector with column count per atom + e.g. num_bond + for collength = N: + length = address of peratom array with column count per atom + collength = index of column (1 to N) in peratom array with count + e.g. nspecial +------------------------------------------------------------------------- */ + +void Atom::add_peratom_vary(const char *name, void *address, + int datatype, int *cols, void *length, int collength) +{ + if (nperatom == maxperatom) { + maxperatom += DELTA_PERATOM; + peratom = (PerAtom *) + memory->srealloc(peratom,maxperatom*sizeof(PerAtom),"atom:peratom"); + } + + int n = strlen(name) + 1; + peratom[nperatom].name = new char[n]; + strcpy(peratom[nperatom].name,name); + peratom[nperatom].address = address; + peratom[nperatom].datatype = datatype; + peratom[nperatom].cols = -1; + peratom[nperatom].threadflag = 0; + peratom[nperatom].address_maxcols = cols; + peratom[nperatom].address_length = length; + peratom[nperatom].collength = collength; + + nperatom++; +} + +/* ---------------------------------------------------------------------- + add info for a single per-atom array to PerAtom data struct +------------------------------------------------------------------------- */ + +void Atom::set_atomflag_defaults() +{ + // -------------------------------------------------------------------- + // 4th customization section: customize by adding new flag + // identical list as 2nd customization in atom.h + + sphere_flag = ellipsoid_flag = line_flag = tri_flag = body_flag = 0; + peri_flag = electron_flag = 0; + wavepacket_flag = sph_flag = 0; + molecule_flag = molindex_flag = molatom_flag = 0; + q_flag = mu_flag = 0; + rmass_flag = radius_flag = omega_flag = torque_flag = angmom_flag = 0; + vfrac_flag = spin_flag = eradius_flag = ervel_flag = erforce_flag = 0; + cs_flag = csforce_flag = vforce_flag = ervelforce_flag = etag_flag = 0; + rho_flag = esph_flag = cv_flag = vest_flag = 0; + dpd_flag = edpd_flag = tdpd_flag = 0; + sp_flag = 0; + x0_flag = 0; + smd_flag = damage_flag = 0; + contact_radius_flag = smd_data_9_flag = smd_stress_flag = 0; + eff_plastic_strain_flag = eff_plastic_strain_rate_flag = 0; + + pdscale = 1.0; +} + /* ---------------------------------------------------------------------- create an AtomVec style called from lammps.cpp, input script, restart file, replicate ------------------------------------------------------------------------- */ -void Atom::create_avec(const char *style, int narg, char **arg, int trysuffix) +void Atom::create_avec(const std::string &style, int narg, char **arg, int trysuffix) { delete [] atom_style; if (avec) delete avec; @@ -420,26 +690,8 @@ void Atom::create_avec(const char *style, int narg, char **arg, int trysuffix) // unset atom style and array existence flags // may have been set by old avec - // customize by adding new flag - sphere_flag = peri_flag = electron_flag = 0; - wavepacket_flag = sph_flag = 0; - - molecule_flag = 0; - q_flag = mu_flag = 0; - omega_flag = torque_flag = angmom_flag = 0; - radius_flag = rmass_flag = 0; - ellipsoid_flag = line_flag = tri_flag = body_flag = 0; - - // magnetic flags - - sp_flag = 0; - - vfrac_flag = 0; - spin_flag = eradius_flag = ervel_flag = erforce_flag = ervelforce_flag = 0; - cs_flag = csforce_flag = vforce_flag = etag_flag = 0; - - rho_flag = e_flag = cv_flag = vest_flag = 0; + set_atomflag_defaults(); // create instance of AtomVec // use grow() to initialize atom-based arrays to length 1 @@ -452,16 +704,14 @@ void Atom::create_avec(const char *style, int narg, char **arg, int trysuffix) avec->grow(1); if (sflag) { - char estyle[256]; - if (sflag == 1) snprintf(estyle,256,"%s/%s",style,lmp->suffix); - else snprintf(estyle,256,"%s/%s",style,lmp->suffix2); - int n = strlen(estyle) + 1; - atom_style = new char[n]; - strcpy(atom_style,estyle); + std::string estyle = style + "/"; + if (sflag == 1) estyle += lmp->suffix; + else estyle += lmp->suffix2; + atom_style = new char[estyle.size()+1]; + strcpy(atom_style,estyle.c_str()); } else { - int n = strlen(style) + 1; - atom_style = new char[n]; - strcpy(atom_style,style); + atom_style = new char[style.size()+1]; + strcpy(atom_style,style.c_str()); } // if molecular system: @@ -479,13 +729,12 @@ void Atom::create_avec(const char *style, int narg, char **arg, int trysuffix) generate an AtomVec class, first with suffix appended ------------------------------------------------------------------------- */ -AtomVec *Atom::new_avec(const char *style, int trysuffix, int &sflag) +AtomVec *Atom::new_avec(const std::string &style, int trysuffix, int &sflag) { if (trysuffix && lmp->suffix_enable) { if (lmp->suffix) { sflag = 1; - char estyle[256]; - snprintf(estyle,256,"%s/%s",style,lmp->suffix); + std::string estyle = style + "/" + lmp->suffix; if (avec_map->find(estyle) != avec_map->end()) { AtomVecCreator avec_creator = (*avec_map)[estyle]; return avec_creator(lmp); @@ -494,8 +743,7 @@ AtomVec *Atom::new_avec(const char *style, int trysuffix, int &sflag) if (lmp->suffix2) { sflag = 2; - char estyle[256]; - snprintf(estyle,256,"%s/%s",style,lmp->suffix2); + std::string estyle = style + "/" + lmp->suffix2; if (avec_map->find(estyle) != avec_map->end()) { AtomVecCreator avec_creator = (*avec_map)[estyle]; return avec_creator(lmp); @@ -509,7 +757,7 @@ AtomVec *Atom::new_avec(const char *style, int trysuffix, int &sflag) return avec_creator(lmp); } - error->all(FLERR,utils::check_packages_for_style("atom",style,lmp).c_str()); + error->all(FLERR,utils::check_packages_for_style("atom",style,lmp)); return NULL; } @@ -523,6 +771,7 @@ AtomVec *Atom::avec_creator(LAMMPS *lmp) return new T(lmp); } + /* ---------------------------------------------------------------------- */ void Atom::init() @@ -778,56 +1027,6 @@ void Atom::bonus_check() "atoms with enabled body flags"); } -/* ---------------------------------------------------------------------- - count and return words in a single line - make copy of line before using strtok so as not to change line - trim anything from '#' onward -------------------------------------------------------------------------- */ - -int Atom::count_words(const char *line) -{ - int n = strlen(line) + 1; - char *copy; - memory->create(copy,n,"atom:copy"); - strcpy(copy,line); - - char *ptr; - if ((ptr = strchr(copy,'#'))) *ptr = '\0'; - - if (strtok(copy," \t\n\r\f") == NULL) { - memory->destroy(copy); - return 0; - } - n = 1; - while (strtok(NULL," \t\n\r\f")) n++; - - memory->destroy(copy); - return n; -} - -/* ---------------------------------------------------------------------- - count and return words in a single line using provided copy buf - make copy of line before using strtok so as not to change line - trim anything from '#' onward -------------------------------------------------------------------------- */ - -int Atom::count_words(const char *line, char *copy) -{ - strcpy(copy,line); - - char *ptr; - if ((ptr = strchr(copy,'#'))) *ptr = '\0'; - - if (strtok(copy," \t\n\r\f") == NULL) { - memory->destroy(copy); - return 0; - } - int n = 1; - while (strtok(NULL," \t\n\r\f")) n++; - - return n; -} - /* ---------------------------------------------------------------------- deallocate molecular topology arrays done before realloc with (possibly) new 2nd dimension set to @@ -886,7 +1085,7 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, next = strchr(buf,'\n'); *next = '\0'; - int nwords = count_words(buf); + int nwords = utils::trim_and_count_words(buf); *next = '\n'; if (nwords != avec->size_data_atom && nwords != avec->size_data_atom + 3) @@ -1036,7 +1235,7 @@ void Atom::data_vels(int n, char *buf, tagint id_offset) next = strchr(buf,'\n'); *next = '\0'; - int nwords = count_words(buf); + int nwords = utils::trim_and_count_words(buf); *next = '\n'; if (nwords != avec->size_data_vel) @@ -1388,7 +1587,7 @@ void Atom::data_bonus(int n, char *buf, AtomVec *avec_bonus, tagint id_offset) next = strchr(buf,'\n'); *next = '\0'; - int nwords = count_words(buf); + int nwords = utils::trim_and_count_words(buf); *next = '\n'; if (nwords != avec_bonus->size_data_bonus) @@ -1429,8 +1628,7 @@ void Atom::data_bonus(int n, char *buf, AtomVec *avec_bonus, tagint id_offset) call style-specific routine to parse line ------------------------------------------------------------------------- */ -void Atom::data_bodies(int n, char *buf, AtomVecBody *avec_body, - tagint id_offset) +void Atom::data_bodies(int n, char *buf, AtomVec *avec_body, tagint id_offset) { int j,m,nvalues,tagdata,ninteger,ndouble; @@ -2241,11 +2439,13 @@ void Atom::remove_custom(int flag, int index) /* ---------------------------------------------------------------------- return a pointer to a named internal variable if don't recognize name, return NULL - customize by adding names ------------------------------------------------------------------------- */ void *Atom::extract(char *name) { + // -------------------------------------------------------------------- + // 5th customization section: customize by adding new variable name + if (strcmp(name,"mass") == 0) return (void *) mass; if (strcmp(name,"id") == 0) return (void *) tag; @@ -2283,8 +2483,8 @@ void *Atom::extract(char *name) if (strcmp(name,"rho") == 0) return (void *) rho; if (strcmp(name,"drho") == 0) return (void *) drho; - if (strcmp(name,"e") == 0) return (void *) e; - if (strcmp(name,"de") == 0) return (void *) de; + if (strcmp(name,"esph") == 0) return (void *) esph; + if (strcmp(name,"desph") == 0) return (void *) desph; if (strcmp(name,"cv") == 0) return (void *) cv; if (strcmp(name,"vest") == 0) return (void *) vest; @@ -2300,6 +2500,9 @@ void *Atom::extract(char *name) if (strcmp(name,"dpdTheta") == 0) return (void *) dpdTheta; if (strcmp(name,"edpd_temp") == 0) return (void *) edpd_temp; + // end of customization section + // -------------------------------------------------------------------- + return NULL; } @@ -2311,11 +2514,7 @@ void *Atom::extract(char *name) bigint Atom::memory_usage() { - memlength = DELTA_MEMSTR; - memory->create(memstr,memlength,"atom:memstr"); - memstr[0] = '\0'; bigint bytes = avec->memory_usage(); - memory->destroy(memstr); bytes += max_same*sizeof(int); if (map_style == 1) @@ -2332,30 +2531,3 @@ bigint Atom::memory_usage() return bytes; } -/* ---------------------------------------------------------------------- - accumulate per-atom vec names in memstr, padded by spaces - return 1 if padded str is not already in memlist, else 0 -------------------------------------------------------------------------- */ - -int Atom::memcheck(const char *str) -{ - int n = strlen(str) + 3; - char *padded = new char[n]; - strcpy(padded," "); - strcat(padded,str); - strcat(padded," "); - - if (strstr(memstr,padded)) { - delete [] padded; - return 0; - } - - if ((int)strlen(memstr) + n >= memlength) { - memlength += DELTA_MEMSTR; - memory->grow(memstr,memlength,"atom:memstr"); - } - - strcat(memstr,padded); - delete [] padded; - return 1; -} diff --git a/src/atom.h b/src/atom.h index 4c640f3252..e20ee0596d 100644 --- a/src/atom.h +++ b/src/atom.h @@ -24,6 +24,7 @@ class Atom : protected Pointers { public: char *atom_style; class AtomVec *avec; + enum{DOUBLE,INT,BIGINT}; // atom counts @@ -39,6 +40,8 @@ class Atom : protected Pointers { bigint ntris; // number of triangles bigint nbodies; // number of bodies + // system properties + bigint nbonds,nangles,ndihedrals,nimpropers; int ntypes,nbondtypes,nangletypes,ndihedraltypes,nimpropertypes; int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; @@ -49,69 +52,30 @@ class Atom : protected Pointers { int nfirst; // # of atoms in first group on this proc char *firstgroupname; // group-ID to store first, NULL if unset - // per-atom arrays - // customize by adding new array + // -------------------------------------------------------------------- + // 1st customization section: customize by adding new per-atom variable + // per-atom vectors and arrays tagint *tag; int *type,*mask; imageint *image; double **x,**v,**f; - tagint *molecule; - int *molindex,*molatom; + // charged and dipolar particles + double *rmass; double *q,**mu; + + // finite-size particles + + double *radius; double **omega,**angmom,**torque; - double *radius,*rmass; int *ellipsoid,*line,*tri,*body; - // SPIN package + // molecular systems - double **sp; - double **fm; - double **fm_long; - - // PERI package - - double *vfrac,*s0; - double **x0; - - // USER-EFF and USER-AWPMD packages - - int *spin; - double *eradius,*ervel,*erforce,*ervelforce; - double *cs,*csforce,*vforce; - int *etag; - - // USER-SPH package - - double *rho,*drho,*e,*de,*cv; - double **vest; - - // USER-SMD package - - double *contact_radius; - double **smd_data_9; - double **smd_stress; - double *eff_plastic_strain; - double *eff_plastic_strain_rate; - double *damage; - - // USER-DPD package - - double *uCond,*uMech,*uChem,*uCGnew,*uCG; - double *duChem; - double *dpdTheta; - int nspecies_dpd; - - // USER-MESO package - - double **cc, **cc_flux; // cc = chemical concentration - double *edpd_temp,*edpd_flux; // temperature and heat flux - double *edpd_cv; // heat capacity - int cc_species; - - // molecular info + tagint *molecule; + int *molindex,*molatom; int **nspecial; // 0,1,2 = cumulative # of 1-2,1-3,1-4 neighs tagint **special; // IDs of 1-2,1-3,1-4 neighs of each atom @@ -133,19 +97,63 @@ class Atom : protected Pointers { int **improper_type; tagint **improper_atom1,**improper_atom2,**improper_atom3,**improper_atom4; - // custom arrays used by fix property/atom + // PERI package - int **ivector; - double **dvector; - char **iname,**dname; - int nivector,ndvector; + double *vfrac,*s0; + double **x0; - // atom style and per-atom array existence flags - // customize by adding new flag + // SPIN package + + double **sp,**fm,**fm_long; + + // USER_EFF and USER-AWPMD packages + + int *spin; + double *eradius,*ervel,*erforce; + double *ervelforce; + double **cs,**csforce,**vforce; + int *etag; + + // USER-DPD package + + double *uCond,*uMech,*uChem,*uCGnew,*uCG; + double *duChem; + double *dpdTheta; + int nspecies_dpd; + + // USER-MESO package + + double **cc,**cc_flux; // cc = chemical concentration + double *edpd_temp,*edpd_flux; // temperature and heat flux + double *vest_temp; + double *edpd_cv; // heat capacity + int cc_species; + + // USER-SMD package + + double *contact_radius; + double **smd_data_9; + double **smd_stress; + double *eff_plastic_strain; + double *eff_plastic_strain_rate; + double *damage; + + // USER-SPH package + + double *rho,*drho,*esph,*desph,*cv; + double **vest; + + // end of customization section + // -------------------------------------------------------------------- + + // -------------------------------------------------------------------- + // 2nd customization section: customize by adding new flags + // identical list as Atom::set_atomflag_defaults() + // most are existence flags for per-atom vectors and arrays + // 1 if variable is used, 0 if not int sphere_flag,ellipsoid_flag,line_flag,tri_flag,body_flag; int peri_flag,electron_flag; - int ecp_flag; int wavepacket_flag,sph_flag; int molecule_flag,molindex_flag,molatom_flag; @@ -153,28 +161,50 @@ class Atom : protected Pointers { int rmass_flag,radius_flag,omega_flag,torque_flag,angmom_flag; int vfrac_flag,spin_flag,eradius_flag,ervel_flag,erforce_flag; int cs_flag,csforce_flag,vforce_flag,ervelforce_flag,etag_flag; - int rho_flag,e_flag,cv_flag,vest_flag; + int rho_flag,esph_flag,cv_flag,vest_flag; int dpd_flag,edpd_flag,tdpd_flag; - //USER-SPIN package + // SPIN package int sp_flag; // USER-SMD package - int smd_flag; - int contact_radius_flag; - int smd_data_9_flag; - int smd_stress_flag; int x0_flag; - int eff_plastic_strain_flag; - int eff_plastic_strain_rate_flag; - int damage_flag; + int smd_flag,damage_flag; + int contact_radius_flag,smd_data_9_flag,smd_stress_flag; + int eff_plastic_strain_flag,eff_plastic_strain_rate_flag; // Peridynamics scale factor, used by dump cfg double pdscale; + // end of customization section + // -------------------------------------------------------------------- + + // per-atom data struct describing all per-atom vectors/arrays + + struct PerAtom { + char *name; + void *address; + void *address_length; + int *address_maxcols; + int datatype; + int cols; + int collength; + int threadflag; + }; + + PerAtom *peratom; + int nperatom,maxperatom; + + // custom arrays used by fix property/atom + + int **ivector; + double **dvector; + char **iname,**dname; + int nivector,ndvector; + // molecule templates // each template can be a set of consecutive molecules // each with same ID (stored in molecules) @@ -221,14 +251,21 @@ class Atom : protected Pointers { typedef std::map AtomVecCreatorMap; AtomVecCreatorMap *avec_map; + // -------------------------------------------------------------------- // functions Atom(class LAMMPS *); ~Atom(); void settings(class Atom *); - void create_avec(const char *, int, char **, int); - virtual class AtomVec *new_avec(const char *, int, int &); + void peratom_create(); + void add_peratom(const char *, void *, int, int, int threadflag=0); + void add_peratom_change_columns(const char *, int); + void add_peratom_vary(const char *, void *, int, int *, + void *, int collength=0); + void create_avec(const std::string &, int, char **, int); + virtual class AtomVec *new_avec(const std::string &, int, int &); + void init(); void setup(); @@ -241,8 +278,6 @@ class Atom : protected Pointers { void bonus_check(); int parse_data(const char *); - int count_words(const char *); - int count_words(const char *, char *); void deallocate_topology(); @@ -253,7 +288,7 @@ class Atom : protected Pointers { void data_dihedrals(int, char *, int *, tagint, int); void data_impropers(int, char *, int *, tagint, int); void data_bonus(int, char *, class AtomVec *, tagint); - void data_bodies(int, char *, class AtomVecBody *, tagint); + void data_bodies(int, char *, class AtomVec *, tagint); void data_fix_compute_variable(int, int); virtual void allocate_type_arrays(); @@ -290,8 +325,10 @@ class Atom : protected Pointers { inline int get_max_same() {return max_same;}; inline int get_map_maxarray() {return map_maxarray+1;}; + // NOTE: placeholder method until KOKKOS/AtomVec is refactored + int memcheck(const char *) {return 1;} + bigint memory_usage(); - int memcheck(const char *); // functions for global to local ID mapping // map lookup function inlined for efficiency @@ -344,9 +381,7 @@ class Atom : protected Pointers { double bininvx,bininvy,bininvz; // inverse actual bin sizes double bboxlo[3],bboxhi[3]; // bounding box of my sub-domain - int memlength; // allocated size of memstr - char *memstr; // string of array names already counted - + void set_atomflag_defaults(); void setup_sort_bins(); int next_prime(int); diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index c4dd53ad18..8cd7db4fd4 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -12,16 +12,23 @@ ------------------------------------------------------------------------- */ #include "atom_vec.h" +#include #include #include "atom.h" -#include "force.h" +#include "comm.h" #include "domain.h" +#include "force.h" +#include "modify.h" +#include "fix.h" +#include "math_const.h" +#include "memory.h" #include "error.h" #include "utils.h" - -#include "comm.h" +#include "tokenizer.h" +#include "fmt/format.h" using namespace LAMMPS_NS; +using namespace MathConst; #define DELTA 16384 #define DELTA_BONUS 8192 @@ -31,17 +38,52 @@ using namespace LAMMPS_NS; AtomVec::AtomVec(LAMMPS *lmp) : Pointers(lmp) { nmax = 0; + + molecular = 0; bonds_allow = angles_allow = dihedrals_allow = impropers_allow = 0; mass_type = dipole_type = 0; forceclearflag = 0; - size_data_bonus = 0; maxexchange = 0; - molecular = 0; + bonus_flag = 0; + size_forward_bonus = size_border_bonus = 0; kokkosable = 0; nargcopy = 0; argcopy = NULL; + + threads = NULL; + + // peratom variables auto-included in corresponding child style fields string + // these fields cannot be specified in the fields string + + default_grow = "id type mask image x v f"; + default_copy = "id type mask image x v"; + default_comm = "x"; + default_comm_vel = "x v"; + default_reverse = "f"; + default_border = "id type mask x"; + default_border_vel = "id type mask x v"; + default_exchange = "id type mask image x v"; + default_restart = "id type mask image x v"; + default_create = "id type mask image x v"; + default_data_atom = ""; + default_data_vel = ""; + + // initializations + + init_method(&mgrow); + init_method(&mcopy); + init_method(&mcomm); + init_method(&mcomm_vel); + init_method(&mreverse); + init_method(&mborder); + init_method(&mborder_vel); + init_method(&mexchange); + init_method(&mrestart); + init_method(&mcreate); + init_method(&mdata_atom); + init_method(&mdata_vel); } /* ---------------------------------------------------------------------- */ @@ -50,6 +92,21 @@ AtomVec::~AtomVec() { for (int i = 0; i < nargcopy; i++) delete [] argcopy[i]; delete [] argcopy; + + destroy_method(&mgrow); + destroy_method(&mcopy); + destroy_method(&mcomm); + destroy_method(&mcomm_vel); + destroy_method(&mreverse); + destroy_method(&mborder); + destroy_method(&mborder_vel); + destroy_method(&mexchange); + destroy_method(&mrestart); + destroy_method(&mcreate); + destroy_method(&mdata_atom); + destroy_method(&mdata_vel); + + delete [] threads; } /* ---------------------------------------------------------------------- @@ -77,7 +134,8 @@ void AtomVec::process_args(int narg, char ** /*arg*/) } /* ---------------------------------------------------------------------- - copy of velocity remap settings from Domain + pull settings from Domain needed for pack_comm_vel and pack_border_vel + child classes may override this method, but should also invoke it ------------------------------------------------------------------------- */ void AtomVec::init() @@ -90,6 +148,19 @@ void AtomVec::init() error->all(FLERR,"KOKKOS package requires a kokkos enabled atom_style"); } +/* ---------------------------------------------------------------------- + roundup N so it is a multiple of DELTA + error if N exceeds 32-bit int, since will be used as arg to grow() +------------------------------------------------------------------------- */ + +bigint AtomVec::roundup(bigint n) +{ + if (n % DELTA) n = n/DELTA * DELTA + DELTA; + if (n > MAXSMALLINT) + error->one(FLERR,"Too many atoms created on one or more procs"); + return n; +} + /* ---------------------------------------------------------------------- grow nmax so it is a multiple of DELTA ------------------------------------------------------------------------- */ @@ -112,28 +183,1746 @@ int AtomVec::grow_nmax_bonus(int nmax_bonus) } /* ---------------------------------------------------------------------- - roundup N so it is a multiple of DELTA - error if N exceeds 32-bit int, since will be used as arg to grow() + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n ------------------------------------------------------------------------- */ -bigint AtomVec::roundup(bigint n) +void AtomVec::grow(int n) { - if (n % DELTA) n = n/DELTA * DELTA + DELTA; - if (n > MAXSMALLINT) - error->one(FLERR,"Too many atoms created on one or more procs"); + int datatype,cols,maxcols; + void *pdata; + + if (n == 0) grow_nmax(); + else nmax = n; + atom->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + tag = memory->grow(atom->tag,nmax,"atom:tag"); + type = memory->grow(atom->type,nmax,"atom:type"); + mask = memory->grow(atom->mask,nmax,"atom:mask"); + image = memory->grow(atom->image,nmax,"atom:image"); + x = memory->grow(atom->x,nmax,3,"atom:x"); + v = memory->grow(atom->v,nmax,3,"atom:v"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); + + for (int i = 0; i < ngrow; i++) { + pdata = mgrow.pdata[i]; + datatype = mgrow.datatype[i]; + cols = mgrow.cols[i]; + const int nthreads = threads[i] ? comm->nthreads : 1; + if (datatype == Atom::DOUBLE) { + if (cols == 0) + memory->grow(*((double **) pdata),nmax*nthreads,"atom:dvec"); + else if (cols > 0) + memory->grow(*((double ***) pdata),nmax*nthreads,cols,"atom:darray"); + else { + maxcols = *(mgrow.maxcols[i]); + memory->grow(*((double ***) pdata),nmax*nthreads,maxcols,"atom:darray"); + } + } else if (datatype == Atom::INT) { + if (cols == 0) + memory->grow(*((int **) pdata),nmax*nthreads,"atom:ivec"); + else if (cols > 0) + memory->grow(*((int ***) pdata),nmax*nthreads,cols,"atom:iarray"); + else { + maxcols = *(mgrow.maxcols[i]); + memory->grow(*((int ***) pdata),nmax*nthreads,maxcols,"atom:iarray"); + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) + memory->grow(*((bigint **) pdata),nmax*nthreads,"atom:bvec"); + else if (cols > 0) + memory->grow(*((bigint ***) pdata),nmax*nthreads,cols,"atom:barray"); + else { + maxcols = *(mgrow.maxcols[i]); + memory->grow(*((bigint ***) pdata),nmax*nthreads,maxcols,"atom:barray"); + } + } + } + + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + + grow_pointers(); +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVec::copy(int i, int j, int delflag) +{ + int m,n,datatype,cols,collength,ncols; + void *pdata,*plength; + + tag[j] = tag[i]; + type[j] = type[i]; + mask[j] = mask[i]; + image[j] = image[i]; + x[j][0] = x[i][0]; + x[j][1] = x[i][1]; + x[j][2] = x[i][2]; + v[j][0] = v[i][0]; + v[j][1] = v[i][1]; + v[j][2] = v[i][2]; + + if (ncopy) { + for (n = 0; n < ncopy; n++) { + pdata = mcopy.pdata[n]; + datatype = mcopy.datatype[n]; + cols = mcopy.cols[n]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[j] = vec[i]; + } else if (cols > 0) { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + array[j][m] = array[i][m]; + } else { + double **array = *((double ***) pdata); + collength = mcopy.collength[n]; + plength = mcopy.plength[n]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (m = 0; m < ncols; m++) + array[j][m] = array[i][m]; + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[j] = vec[i]; + } else if (cols > 0) { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + array[j][m] = array[i][m]; + } else { + int **array = *((int ***) pdata); + collength = mcopy.collength[n]; + plength = mcopy.plength[n]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (m = 0; m < ncols; m++) + array[j][m] = array[i][m]; + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[j] = vec[i]; + } else if (cols > 0) { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + array[j][m] = array[i][m]; + } else { + bigint **array = *((bigint ***) pdata); + collength = mcopy.collength[n]; + plength = mcopy.plength[n]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (m = 0; m < ncols; m++) + array[j][m] = array[i][m]; + } + } + } + } + + if (bonus_flag) copy_bonus(i,j,delflag); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m,mm,nn,datatype,cols; + double dx,dy,dz; + void *pdata; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + } + } + + if (ncomm) { + for (nn = 0; nn < ncomm; nn++) { + pdata = mcomm.pdata[nn]; + datatype = mcomm.datatype[nn]; + cols = mcomm.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = vec[j]; + } + } else { + double **array = *((double ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = array[j][mm]; + } + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + int **array = *((int ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } + } + } + + if (bonus_flag) m += pack_comm_bonus(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::pack_comm_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m,mm,nn,datatype,cols; + double dx,dy,dz,dvx,dvy,dvz; + void *pdata; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } + } + } + + if (ncomm_vel) { + for (nn = 0; nn < ncomm_vel; nn++) { + pdata = mcomm_vel.pdata[nn]; + datatype = mcomm_vel.datatype[nn]; + cols = mcomm_vel.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = vec[j]; + } + } else { + double **array = *((double ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = array[j][mm]; + } + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + int **array = *((int ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } + } + } + + if (bonus_flag) m += pack_comm_bonus(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVec::unpack_comm(int n, int first, double *buf) +{ + int i,m,last,mm,nn,datatype,cols; + void *pdata; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + } + + if (ncomm) { + for (nn = 0; nn < ncomm; nn++) { + pdata = mcomm.pdata[nn]; + datatype = mcomm.datatype[nn]; + cols = mcomm.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = first; i < last; i++) + vec[i] = buf[m++]; + } else { + double **array = *((double ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = buf[m++]; + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = first; i < last; i++) + vec[i] = ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = first; i < last; i++) + vec[i] = (bigint) ubuf(buf[m++]).i; + } else { + bigint **array = *((bigint ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + } + + if (bonus_flag) unpack_comm_bonus(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVec::unpack_comm_vel(int n, int first, double *buf) +{ + int i,m,last,mm,nn,datatype,cols; + void *pdata; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + } + + if (ncomm_vel) { + for (nn = 0; nn < ncomm_vel; nn++) { + pdata = mcomm_vel.pdata[nn]; + datatype = mcomm_vel.datatype[nn]; + cols = mcomm_vel.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = first; i < last; i++) + vec[i] = buf[m++]; + } else { + double **array = *((double ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = buf[m++]; + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = first; i < last; i++) + vec[i] = (int) ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = first; i < last; i++) + vec[i] = (bigint) ubuf(buf[m++]).i; + } else { + bigint **array = *((bigint ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + } + + if (bonus_flag) unpack_comm_bonus(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::pack_reverse(int n, int first, double *buf) +{ + int i,m,last,mm,nn,datatype,cols; + void *pdata; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = f[i][0]; + buf[m++] = f[i][1]; + buf[m++] = f[i][2]; + } + + if (nreverse) { + for (nn = 0; nn < nreverse; nn++) { + pdata = mreverse.pdata[nn]; + datatype = mreverse.datatype[nn]; + cols = mreverse.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = first; i < last; i++) { + buf[m++] = vec[i]; + } + } else { + double **array = *((double ***) pdata); + for (i = first; i < last; i++) { + for (mm = 0; mm < cols; mm++) + buf[m++] = array[i][mm]; + } + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = first; i < last; i++) { + buf[m++] = ubuf(vec[i]).d; + } + } else { + int **array = *((int ***) pdata); + for (i = first; i < last; i++) { + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = first; i < last; i++) { + buf[m++] = ubuf(vec[i]).d; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = first; i < last; i++) { + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } + } + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVec::unpack_reverse(int n, int *list, double *buf) +{ + int i,j,m,mm,nn,datatype,cols; + void *pdata; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + f[j][0] += buf[m++]; + f[j][1] += buf[m++]; + f[j][2] += buf[m++]; + } + + if (nreverse) { + for (nn = 0; nn < nreverse; nn++) { + pdata = mreverse.pdata[nn]; + datatype = mreverse.datatype[nn]; + cols = mreverse.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + vec[j] += buf[m++]; + } + } else { + double **array = *((double ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + array[j][mm] += buf[m++]; + } + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + vec[j] += (int) ubuf(buf[m++]).i; + } + } else { + int **array = *((int ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + array[j][mm] += (int) ubuf(buf[m++]).i; + } + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + vec[j] += (bigint) ubuf(buf[m++]).i; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + array[j][mm] += (bigint) ubuf(buf[m++]).i; + } + } + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::pack_border(int n, int *list, double *buf, int pbc_flag, int *pbc) +{ + int i,j,m,mm,nn,datatype,cols; + double dx,dy,dz; + void *pdata; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + } + } + + if (nborder) { + for (nn = 0; nn < nborder; nn++) { + pdata = mborder.pdata[nn]; + datatype = mborder.datatype[nn]; + cols = mborder.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = vec[j]; + } + } else { + double **array = *((double ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = array[j][mm]; + } + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + int **array = *((int ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } + } + } + + if (bonus_flag) m += pack_border_bonus(n,list,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m,mm,nn,datatype,cols; + double dx,dy,dz,dvx,dvy,dvz; + void *pdata; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } + } + } + + if (nborder_vel) { + for (nn = 0; nn < nborder_vel; nn++) { + pdata = mborder_vel.pdata[nn]; + datatype = mborder_vel.datatype[nn]; + cols = mborder_vel.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = vec[j]; + } + } else { + double **array = *((double ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = array[j][mm]; + } + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + int **array = *((int ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } + } + } + + if (bonus_flag) m += pack_border_bonus(n,list,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVec::unpack_border(int n, int first, double *buf) +{ + int i,m,last,mm,nn,datatype,cols; + void *pdata; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + } + + if (nborder) { + for (nn = 0; nn < nborder; nn++) { + pdata = mborder.pdata[nn]; + datatype = mborder.datatype[nn]; + cols = mborder.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = first; i < last; i++) + vec[i] = buf[m++]; + } else { + double **array = *((double ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = buf[m++]; + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = first; i < last; i++) + vec[i] = ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = first; i < last; i++) + vec[i] = (bigint) ubuf(buf[m++]).i; + } else { + bigint **array = *((bigint ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + } + + if (bonus_flag) m += unpack_border_bonus(n,first,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVec::unpack_border_vel(int n, int first, double *buf) +{ + int i,m,last,mm,nn,datatype,cols; + void *pdata; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + } + + if (nborder_vel) { + for (nn = 0; nn < nborder_vel; nn++) { + pdata = mborder_vel.pdata[nn]; + datatype = mborder_vel.datatype[nn]; + cols = mborder_vel.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = first; i < last; i++) + vec[i] = buf[m++]; + } else { + double **array = *((double ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = buf[m++]; + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = first; i < last; i++) + vec[i] = (int) ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = first; i < last; i++) + vec[i] = (bigint) ubuf(buf[m++]).i; + } else { + bigint **array = *((bigint ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + } + + if (bonus_flag) m += unpack_border_bonus(n,first,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + xyz must be 1st 3 values, so comm::exchange() can test on them +------------------------------------------------------------------------- */ + +int AtomVec::pack_exchange(int i, double *buf) +{ + int mm,nn,datatype,cols,collength,ncols; + void *pdata,*plength; + + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + + if (nexchange) { + for (nn = 0; nn < nexchange; nn++) { + pdata = mexchange.pdata[nn]; + datatype = mexchange.datatype[nn]; + cols = mexchange.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + buf[m++] = vec[i]; + } else if (cols > 0) { + double **array = *((double ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = array[i][mm]; + } else { + double **array = *((double ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = array[i][mm]; + } + } if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + buf[m++] = ubuf(vec[i]).d; + } else if (cols > 0) { + int **array = *((int ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } else { + int **array = *((int ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + buf[m++] = ubuf(vec[i]).d; + } else if (cols > 0) { + bigint **array = *((bigint ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } else { + bigint **array = *((bigint ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } + } + } + + if (bonus_flag) m += pack_exchange_bonus(i,&buf[m]); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::unpack_exchange(double *buf) +{ + int mm,nn,datatype,cols,collength,ncols; + void *pdata,*plength; + + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + + if (nexchange) { + for (nn = 0; nn < nexchange; nn++) { + pdata = mexchange.pdata[nn]; + datatype = mexchange.datatype[nn]; + cols = mexchange.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[nlocal] = buf[m++]; + } else if (cols > 0) { + double **array = *((double ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = buf[m++]; + } else { + double **array = *((double ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = buf[m++]; + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[nlocal] = (int) ubuf(buf[m++]).i; + } else if (cols > 0) { + int **array = *((int ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = (int) ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[nlocal] = (bigint) ubuf(buf[m++]).i; + } else if (cols > 0) { + bigint **array = *((bigint ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = (bigint) ubuf(buf[m++]).i; + } else { + bigint **array = *((bigint ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + } + + if (bonus_flag) m += unpack_exchange_bonus(nlocal,&buf[m]); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]-> + unpack_exchange(nlocal,&buf[m]); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + size of restart data for all atoms owned by this proc + include extra data stored by fixes +------------------------------------------------------------------------- */ + +int AtomVec::size_restart() +{ + int i,nn,cols,collength,ncols; + void *plength; + + // NOTE: need to worry about overflow of returned int N + + int nlocal = atom->nlocal; + + // 11 = length storage + id,type,mask,image,x,v + + int n = 11 * nlocal; + + if (nrestart) { + for (nn = 0; nn < nrestart; nn++) { + cols = mrestart.cols[nn]; + if (cols == 0) n += nlocal; + else if (cols > 0) n += cols*nlocal; + else { + collength = mrestart.collength[nn]; + plength = mrestart.plength[nn]; + for (i = 0; i < nlocal; i++) { + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + n += ncols; + } + } + } + } + + if (bonus_flag) n += size_restart_bonus(); + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + for (i = 0; i < nlocal; i++) + n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + return n; } +/* ---------------------------------------------------------------------- + pack atom I's data for restart file including extra quantities + xyz must be 1st 3 values, so that read_restart can test on them + molecular types may be negative, but write as positive +------------------------------------------------------------------------- */ + +int AtomVec::pack_restart(int i, double *buf) +{ + int mm,nn,datatype,cols,collength,ncols; + void *pdata,*plength; + + // if needed, change values before packing + + pack_restart_pre(i); + + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + + for (nn = 0; nn < nrestart; nn++) { + pdata = mrestart.pdata[nn]; + datatype = mrestart.datatype[nn]; + cols = mrestart.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + buf[m++] = vec[i]; + } else if (cols > 0) { + double **array = *((double ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = array[i][mm]; + } else { + double **array = *((double ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = array[i][mm]; + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + buf[m++] = ubuf(vec[i]).d; + } else if (cols > 0) { + int **array = *((int ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } else { + int **array = *((int ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + buf[m++] = ubuf(vec[i]).d; + } else if (cols > 0) { + bigint **array = *((bigint ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } else { + bigint **array = *((bigint ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } + } + + if (bonus_flag) m += pack_restart_bonus(i,&buf[m]); + + // if needed, restore values after packing + + pack_restart_post(i); + + // invoke fixes which store peratom restart info + + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack data for one atom from restart file including extra quantities +------------------------------------------------------------------------- */ + +int AtomVec::unpack_restart(double *buf) +{ + int mm,nn,datatype,cols,collength,ncols; + void *pdata,*plength; + + int nlocal = atom->nlocal; + if (nlocal == nmax) { + grow(0); + if (atom->nextra_store) + memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); + } + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + + for (nn = 0; nn < nrestart; nn++) { + pdata = mrestart.pdata[nn]; + datatype = mrestart.datatype[nn]; + cols = mrestart.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[nlocal] = buf[m++]; + } else if (cols > 0) { + double **array = *((double ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = buf[m++]; + } else { + double **array = *((double ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = buf[m++]; + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[nlocal] = (int) ubuf(buf[m++]).i; + } else if (cols > 0) { + int **array = *((int ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = (int) ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[nlocal] = (bigint) ubuf(buf[m++]).i; + } else if (cols > 0) { + bigint **array = *((bigint ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = (bigint) ubuf(buf[m++]).i; + } else { + bigint **array = *((bigint ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + + if (bonus_flag) m += unpack_restart_bonus(nlocal,&buf[m]); + + // if needed, initialize other peratom values + + unpack_restart_init(nlocal); + + // store extra restart info which fixes can unpack when instantiated + + double **extra = atom->extra; + if (atom->nextra_store) { + int size = static_cast (buf[0]) - m; + for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; + } + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults +------------------------------------------------------------------------- */ + +void AtomVec::create_atom(int itype, double *coord) +{ + int m,n,datatype,cols; + void *pdata; + + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = 0; + type[nlocal] = itype; + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + mask[nlocal] = 1; + image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | + ((imageint) IMGMAX << IMGBITS) | IMGMAX; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + // initialization additional fields + + for (n = 0; n < ncreate; n++) { + pdata = mcreate.pdata[n]; + datatype = mcreate.datatype[n]; + cols = mcreate.cols[n]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[nlocal] = 0.0; + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + array[nlocal][m] = 0.0; + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[nlocal] = 0; + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + array[nlocal][m] = 0; + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[nlocal] = 0; + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + array[nlocal][m] = 0; + } + } + } + + // if needed, initialize non-zero peratom values + + create_atom_post(nlocal); + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other peratom quantities +------------------------------------------------------------------------- */ + +void AtomVec::data_atom(double *coord, imageint imagetmp, char **values) +{ + int m,n,datatype,cols; + void *pdata; + + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + mask[nlocal] = 1; + image[nlocal] = imagetmp; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + int ivalue = 0; + for (n = 0; n < ndata_atom; n++) { + pdata = mdata_atom.pdata[n]; + datatype = mdata_atom.datatype[n]; + cols = mdata_atom.cols[n]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[nlocal] = utils::numeric(FLERR,values[ivalue++],true,lmp); + } else { + double **array = *((double ***) pdata); + if (array == atom->x) { // x was already set by coord arg + ivalue += cols; + continue; + } + for (m = 0; m < cols; m++) + array[nlocal][m] = utils::numeric(FLERR,values[ivalue++],true,lmp); + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[nlocal] = utils::inumeric(FLERR,values[ivalue++],true,lmp); + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + array[nlocal][m] = utils::inumeric(FLERR,values[ivalue++],true,lmp); + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[nlocal] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + array[nlocal][m] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); + } + } + } + + // error checks applicable to all styles + + if (tag[nlocal] <= 0) + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); + if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + // if needed, modify unpacked values or initialize other peratom values + + data_atom_post(nlocal); + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVec::pack_data(double **buf) +{ + int i,j,m,n,datatype,cols; + void *pdata; + + int nlocal = atom->nlocal; + + for (i = 0; i < nlocal; i++) { + + // if needed, change values before packing + + pack_data_pre(i); + + j = 0; + for (n = 0; n < ndata_atom; n++) { + pdata = mdata_atom.pdata[n]; + datatype = mdata_atom.datatype[n]; + cols = mdata_atom.cols[n]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + buf[i][j++] = vec[i]; + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = array[i][m]; + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + buf[i][j++] = ubuf(vec[i]).d; + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = ubuf(array[i][m]).d; + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + buf[i][j++] = ubuf(vec[i]).d; + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = ubuf(array[i][m]).d; + } + } + } + + buf[i][j++] = ubuf((image[i] & IMGMASK) - IMGMAX).d; + buf[i][j++] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; + buf[i][j++] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + + // if needed, restore values after packing + + pack_data_post(i); + } +} + +/* ---------------------------------------------------------------------- + write atom info to data file + id is first field, 3 image flags are final fields +------------------------------------------------------------------------- */ + +void AtomVec::write_data(FILE *fp, int n, double **buf) +{ + int i,j,m,nn,datatype,cols; + + for (i = 0; i < n; i++) { + fmt::print(fp,"{}",(tagint) ubuf(buf[i][0]).i); + + j = 1; + for (nn = 1; nn < ndata_atom; nn++) { + datatype = mdata_atom.datatype[nn]; + cols = mdata_atom.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + fprintf(fp," %-1.16e",buf[i][j++]); + } else { + for (m = 0; m < cols; m++) + fprintf(fp," %-1.16e",buf[i][j++]); + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); + } else { + for (m = 0; m < cols; m++) + fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + fmt::print(fp," {}",(bigint) ubuf(buf[i][j++]).i); + } else { + for (m = 0; m < cols; m++) + fmt::print(fp," {}",(bigint) ubuf(buf[i][j++]).i); + } + } + } + + fprintf(fp," %d %d %d\n", + (int) ubuf(buf[i][j]).i, + (int) ubuf(buf[i][j+1]).i, + (int) ubuf(buf[i][j+2]).i); + } +} + /* ---------------------------------------------------------------------- unpack one line from Velocities section of data file ------------------------------------------------------------------------- */ -void AtomVec::data_vel(int m, char **values) +void AtomVec::data_vel(int ilocal, char **values) { + int m,n,datatype,cols; + void *pdata; + double **v = atom->v; - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); + v[ilocal][0] = utils::numeric(FLERR,values[0],true,lmp); + v[ilocal][1] = utils::numeric(FLERR,values[1],true,lmp); + v[ilocal][2] = utils::numeric(FLERR,values[2],true,lmp); + + if (ndata_vel > 2) { + int ivalue = 3; + for (n = 2; n < ndata_vel; n++) { + pdata = mdata_vel.pdata[n]; + datatype = mdata_vel.datatype[n]; + cols = mdata_vel.cols[n]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[ilocal] = utils::numeric(FLERR,values[ivalue++],true,lmp); + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + array[ilocal][m] = utils::numeric(FLERR,values[ivalue++],true,lmp); + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[ilocal] = utils::inumeric(FLERR,values[ivalue++],true,lmp); + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + array[ilocal][m] = utils::inumeric(FLERR,values[ivalue++],true,lmp); + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[ilocal] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + array[ilocal][m] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); + } + } + } + } } /* ---------------------------------------------------------------------- @@ -142,27 +1931,90 @@ void AtomVec::data_vel(int m, char **values) void AtomVec::pack_vel(double **buf) { - double **v = atom->v; - tagint *tag = atom->tag; + int i,j,m,n,datatype,cols; + void *pdata; + int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; + for (i = 0; i < nlocal; i++) { + j = 0; + for (n = 0; n < ndata_vel; n++) { + pdata = mdata_vel.pdata[n]; + datatype = mdata_vel.datatype[n]; + cols = mdata_vel.cols[n]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + buf[i][j++] = vec[i]; + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = array[i][m]; + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + buf[i][j++] = ubuf(vec[i]).d; + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = ubuf(array[i][m]).d; + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + buf[i][j++] = ubuf(vec[i]).d; + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = ubuf(array[i][m]).d; + } + } + } } } /* ---------------------------------------------------------------------- write velocity info to data file + id and velocity vector are first 4 fields ------------------------------------------------------------------------- */ void AtomVec::write_vel(FILE *fp, int n, double **buf) { - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3]); + int i,j,m,nn,datatype,cols; + + for (i = 0; i < n; i++) { + fmt::print(fp,"{}",(tagint) ubuf(buf[i][0]).i); + + j = 1; + for (nn = 1; nn < ndata_vel; nn++) { + datatype = mdata_vel.datatype[nn]; + cols = mdata_vel.cols[nn]; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + fprintf(fp," %-1.16e",buf[i][j++]); + } else { + for (m = 0; m < cols; m++) + fprintf(fp," %-1.16e",buf[i][j++]); + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); + } else { + for (m = 0; m < cols; m++) + fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + fmt::print(fp," {}",(bigint) ubuf(buf[i][j++]).i); + } else { + for (m = 0; m < cols; m++) + fmt::print(fp," {}",(bigint) ubuf(buf[i][j++]).i); + } + } + } + fprintf(fp,"\n"); + } } /* ---------------------------------------------------------------------- @@ -411,3 +2263,295 @@ void AtomVec::write_improper(FILE *fp, int n, tagint **buf, int index) index++; } } + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVec::memory_usage() +{ + int datatype,cols,maxcols; + void *pdata; + + bigint bytes = 0; + + bytes += memory->usage(tag,nmax); + bytes += memory->usage(type,nmax); + bytes += memory->usage(mask,nmax); + bytes += memory->usage(image,nmax); + bytes += memory->usage(x,nmax,3); + bytes += memory->usage(v,nmax,3); + bytes += memory->usage(f,nmax*comm->nthreads,3); + + for (int i = 0; i < ngrow; i++) { + pdata = mgrow.pdata[i]; + datatype = mgrow.datatype[i]; + cols = mgrow.cols[i]; + const int nthreads = threads[i] ? comm->nthreads : 1; + if (datatype == Atom::DOUBLE) { + if (cols == 0) { + bytes += memory->usage(*((double **) pdata),nmax*nthreads); + } else if (cols > 0) { + bytes += memory->usage(*((double ***) pdata),nmax*nthreads,cols); + } else { + maxcols = *(mgrow.maxcols[i]); + bytes += memory->usage(*((double ***) pdata),nmax*nthreads,maxcols); + } + } else if (datatype == Atom::INT) { + if (cols == 0) { + bytes += memory->usage(*((int **) pdata),nmax*nthreads); + } else if (cols > 0) { + bytes += memory->usage(*((int ***) pdata),nmax*nthreads,cols); + } else { + maxcols = *(mgrow.maxcols[i]); + bytes += memory->usage(*((int ***) pdata),nmax*nthreads,maxcols); + } + } else if (datatype == Atom::BIGINT) { + if (cols == 0) { + bytes += memory->usage(*((bigint **) pdata),nmax*nthreads); + } else if (cols > 0) { + bytes += memory->usage(*((bigint ***) pdata),nmax*nthreads,cols); + } else { + maxcols = *(mgrow.maxcols[i]); + bytes += memory->usage(*((bigint ***) pdata),nmax*nthreads,maxcols); + } + } + } + + if (bonus_flag) bytes += memory_usage_bonus(); + + return bytes; +} + +// ---------------------------------------------------------------------- +// internal methods +// ---------------------------------------------------------------------- + +/* ---------------------------------------------------------------------- + process field strings to initialize data structs for all other methods +------------------------------------------------------------------------- */ + +void AtomVec::setup_fields() +{ + int n,cols; + + if (strstr(fields_data_atom,"id ") != fields_data_atom) + error->all(FLERR,"Atom style fields_data_atom must have id as first field"); + if (strstr(fields_data_vel,"id v") != fields_data_vel) + error->all(FLERR,"Atom style fields_data_vel must have " + "'id v' as first fields"); + + // process field strings + // return # of fields and matching index into atom->peratom (in Method struct) + + ngrow = process_fields(fields_grow,default_grow,&mgrow); + ncopy = process_fields(fields_copy,default_copy,&mcopy); + ncomm = process_fields(fields_comm,default_comm,&mcomm); + ncomm_vel = process_fields(fields_comm_vel,default_comm_vel,&mcomm_vel); + nreverse = process_fields(fields_reverse,default_reverse,&mreverse); + nborder = process_fields(fields_border,default_border,&mborder); + nborder_vel = process_fields(fields_border_vel,default_border_vel,&mborder_vel); + nexchange = process_fields(fields_exchange,default_exchange,&mexchange); + nrestart = process_fields(fields_restart,default_restart,&mrestart); + ncreate = process_fields(fields_create,default_create,&mcreate); + ndata_atom = process_fields(fields_data_atom,default_data_atom,&mdata_atom); + ndata_vel = process_fields(fields_data_vel,default_data_vel,&mdata_vel); + + // populate field-based data struct for each method to use + + create_method(ngrow,&mgrow); + create_method(ncopy,&mcopy); + create_method(ncomm,&mcomm); + create_method(ncomm_vel,&mcomm_vel); + create_method(nreverse,&mreverse); + create_method(nborder,&mborder); + create_method(nborder_vel,&mborder_vel); + create_method(nexchange,&mexchange); + create_method(nrestart,&mrestart); + create_method(ncreate,&mcreate); + create_method(ndata_atom,&mdata_atom); + create_method(ndata_vel,&mdata_vel); + + // create threads data struct for grow and memory_usage to use + + threads = new bool[ngrow]; + for (int i = 0; i < ngrow; i++) { + Atom::PerAtom *field = &atom->peratom[mgrow.index[i]]; + threads[i] = (field->threadflag) ? true : false; + } + + // set style-specific sizes + + comm_x_only = 1; + if (ncomm) comm_x_only = 0; + if (bonus_flag && size_forward_bonus) comm_x_only = 0; + + if (nreverse == 0) comm_f_only = 1; + else comm_f_only = 0; + + size_forward = 3; + for (n = 0; n < ncomm; n++) { + cols = mcomm.cols[n]; + if (cols == 0) size_forward++; + else size_forward += cols; + } + if (bonus_flag) size_forward += size_forward_bonus; + + size_reverse = 3; + for (n = 0; n < nreverse; n++) { + cols = mreverse.cols[n]; + if (cols == 0) size_reverse++; + else size_reverse += cols; + } + + size_border = 6; + for (n = 0; n < nborder; n++) { + cols = mborder.cols[n]; + if (cols == 0) size_border++; + else size_border += cols; + } + if (bonus_flag) size_border += size_border_bonus; + + size_velocity = 3; + for (n = 0; n < ncomm_vel; n++) { + cols = mcomm_vel.cols[n]; + if (cols == 0) size_velocity++; + else size_velocity += cols; + } + + size_data_atom = 0; + for (n = 0; n < ndata_atom; n++) { + cols = mdata_atom.cols[n]; + if (strcmp(atom->peratom[mdata_atom.index[n]].name,"x") == 0) + xcol_data = size_data_atom + 1; + if (cols == 0) size_data_atom++; + else size_data_atom += cols; + } + + size_data_vel = 0; + for (n = 0; n < ndata_vel; n++) { + cols = mdata_vel.cols[n]; + if (cols == 0) size_data_vel++; + else size_data_vel += cols; + } +} + +/* ---------------------------------------------------------------------- + process a single field string +------------------------------------------------------------------------- */ + +int AtomVec::process_fields(char *str, const char *default_str, Method *method) +{ + if (str == NULL) { + method->index = NULL; + return 0; + } + + // tokenize words in both strings + Tokenizer words(str, " "); + Tokenizer def_words(default_str, " "); + + int nfield = words.count(); + int ndef = def_words.count(); + + // process fields one by one, add to index vector + + Atom::PerAtom *peratom = atom->peratom; + int nperatom = atom->nperatom; + + int *index = new int[nfield]; + int match; + + for (int i = 0; i < nfield; i++) { + const char * field = words[i].c_str(); + + // find field in master Atom::peratom list + + for (match = 0; match < nperatom; match++) + if (strcmp(field, peratom[match].name) == 0) break; + if (match == nperatom) { + char str[128]; + sprintf(str,"Peratom field %s not recognized", field); + error->all(FLERR,str); + } + index[i] = match; + + // error if field appears multiple times + + for (match = 0; match < i; match++) + if (index[i] == index[match]) { + char str[128]; + sprintf(str,"Peratom field %s is repeated", field); + error->all(FLERR,str); + } + + // error if field is in default str + + for (match = 0; match < ndef; match++) + if (strcmp(field, def_words[match].c_str()) == 0) { + char str[128]; + sprintf(str,"Peratom field %s is a default", field); + error->all(FLERR,str); + } + + } + + method->index = index; + return nfield; +} + +/* ---------------------------------------------------------------------- + create a method data structs for processing fields +------------------------------------------------------------------------- */ + +void AtomVec::create_method(int nfield, Method *method) +{ + method->pdata = new void*[nfield]; + method->datatype = new int[nfield]; + method->cols = new int[nfield]; + method->maxcols = new int*[nfield]; + method->collength = new int[nfield]; + method->plength = new void*[nfield]; + + for (int i = 0; i < nfield; i++) { + Atom::PerAtom *field = &atom->peratom[method->index[i]]; + method->pdata[i] = (void *) field->address; + method->datatype[i] = field->datatype; + method->cols[i] = field->cols; + if (method->cols[i] < 0) { + method->maxcols[i] = field->address_maxcols; + method->collength[i] = field->collength; + method->plength[i] = field->address_length; + } + } +} + +/* ---------------------------------------------------------------------- + free memory in a method data structs +------------------------------------------------------------------------- */ + +void AtomVec::init_method(Method *method) +{ + method->pdata = NULL; + method->datatype = NULL; + method->cols = NULL; + method->maxcols = NULL; + method->collength = NULL; + method->plength = NULL; + method->index = NULL; +} + +/* ---------------------------------------------------------------------- + free memory in a method data structs +------------------------------------------------------------------------- */ + +void AtomVec::destroy_method(Method *method) +{ + delete [] method->pdata; + delete [] method->datatype; + delete [] method->cols; + delete [] method->maxcols; + delete [] method->collength; + delete [] method->plength; + delete [] method->index; +} diff --git a/src/atom_vec.h b/src/atom_vec.h index db4139204a..eaff9b888a 100644 --- a/src/atom_vec.h +++ b/src/atom_vec.h @@ -36,11 +36,16 @@ class AtomVec : protected Pointers { int size_velocity; // # of velocity based quantities int size_data_atom; // number of values in Atom line int size_data_vel; // number of values in Velocity line - int size_data_bonus; // number of values in Bonus line int xcol_data; // column (1-N) where x is in Atom line int maxexchange; // max size of exchanged atom // only needs to be set if size > BUFEXTRA + int bonus_flag; // 1 if stores bonus data + int size_forward_bonus; // # in forward bonus comm + int size_border_bonus; // # in border bonus comm + int size_restart_bonus_one; // # in restart bonus comm + int size_data_bonus; // number of values in Bonus line + class Molecule **onemols; // list of molecules for style template int nset; // # of molecules in list @@ -49,82 +54,161 @@ class AtomVec : protected Pointers { int nargcopy; // copy of command-line args for atom_style command char **argcopy; // used when AtomVec is realloced (restart,replicate) + // additional list of peratom fields operated on by different methods + // set or created by child styles + + char *fields_grow,*fields_copy; + char *fields_comm,*fields_comm_vel,*fields_reverse; + char *fields_border,*fields_border_vel; + char *fields_exchange,*fields_restart; + char *fields_create,*fields_data_atom,*fields_data_vel; + + // methods + AtomVec(class LAMMPS *); virtual ~AtomVec(); + void store_args(int, char **); virtual void process_args(int, char **); virtual void init(); - virtual void grow(int) = 0; - virtual void grow_reset() = 0; - bigint roundup(bigint); - virtual void copy(int, int, int) = 0; - virtual void clear_bonus() {} virtual void force_clear(int, size_t) {} + virtual bigint roundup(bigint); - virtual int pack_comm(int, int *, double *, int, int *) = 0; - virtual int pack_comm_vel(int, int *, double *, int, int *) = 0; - virtual int pack_comm_hybrid(int, int *, double *) {return 0;} - virtual void unpack_comm(int, int, double *) = 0; - virtual void unpack_comm_vel(int, int, double *) = 0; - virtual int unpack_comm_hybrid(int, int, double *) {return 0;} + virtual void grow(int); + virtual void grow_pointers() {} + virtual void copy(int, int, int); - virtual int pack_reverse(int, int, double *) = 0; - virtual int pack_reverse_hybrid(int, int, double *) {return 0;} - virtual void unpack_reverse(int, int *, double *) = 0; - virtual int unpack_reverse_hybrid(int, int *, double *) {return 0;} + virtual void copy_bonus(int, int, int) {} + virtual void clear_bonus() {} - virtual int pack_border(int, int *, double *, int, int *) = 0; - virtual int pack_border_vel(int, int *, double *, int, int *) = 0; - virtual int pack_border_hybrid(int, int *, double *) {return 0;} - virtual void unpack_border(int, int, double *) = 0; - virtual void unpack_border_vel(int, int, double *) = 0; - virtual int unpack_border_hybrid(int, int, double *) {return 0;} + virtual int pack_comm(int, int *, double *, int, int *); + virtual int pack_comm_vel(int, int *, double *, int, int *); + virtual void unpack_comm(int, int, double *); + virtual void unpack_comm_vel(int, int, double *); - virtual int pack_exchange(int, double *) = 0; - virtual int unpack_exchange(double *) = 0; + virtual int pack_comm_bonus(int, int *, double *) {return 0;} + virtual void unpack_comm_bonus(int, int, double *) {} - virtual int size_restart() = 0; - virtual int pack_restart(int, double *) = 0; - virtual int unpack_restart(double *) = 0; + virtual int pack_reverse(int, int, double *); + virtual void unpack_reverse(int, int *, double *); - virtual void create_atom(int, double *) = 0; + virtual int pack_border(int, int *, double *, int, int *); + virtual int pack_border_vel(int, int *, double *, int, int *); + virtual void unpack_border(int, int, double *); + virtual void unpack_border_vel(int, int, double *); - virtual void data_atom(double *, imageint, char **) = 0; + virtual int pack_border_bonus(int, int *, double *) {return 0;} + virtual int unpack_border_bonus(int, int, double *) {return 0;} + + virtual int pack_exchange(int, double *); + virtual int unpack_exchange(double *); + + virtual int pack_exchange_bonus(int, double *) {return 0;} + virtual int unpack_exchange_bonus(int, double *) {return 0;} + + virtual int size_restart(); + virtual int pack_restart(int, double *); + virtual int unpack_restart(double *); + + virtual void pack_restart_pre(int) {} + virtual void pack_restart_post(int) {} + virtual void unpack_restart_init(int) {} + + virtual int size_restart_bonus() {return 0;} + virtual int pack_restart_bonus(int, double *) {return 0;} + virtual int unpack_restart_bonus(int, double *) {return 0;} + + virtual void create_atom(int, double *); + virtual void create_atom_post(int) {} + + virtual void data_atom(double *, imageint, char **); + virtual void data_atom_post(int) {} virtual void data_atom_bonus(int, char **) {} - virtual int data_atom_hybrid(int, char **) {return 0;} + virtual void data_body(int, int, int, int *, double *) {} + + virtual void pack_data(double **); + virtual void write_data(FILE *, int, double **); + virtual void pack_data_pre(int) {} + virtual void pack_data_post(int) {} + virtual void data_vel(int, char **); - virtual int data_vel_hybrid(int, char **) {return 0;} - - virtual void pack_data(double **) = 0; - virtual int pack_data_hybrid(int, double *) {return 0;} - virtual void write_data(FILE *, int, double **) = 0; - virtual int write_data_hybrid(FILE *, double *) {return 0;} virtual void pack_vel(double **); - virtual int pack_vel_hybrid(int, double *) {return 0;} virtual void write_vel(FILE *, int, double **); - virtual int write_vel_hybrid(FILE *, double *) {return 0;} - int pack_bond(tagint **); - void write_bond(FILE *, int, tagint **, int); - int pack_angle(tagint **); - void write_angle(FILE *, int, tagint **, int); - int pack_dihedral(tagint **); - void write_dihedral(FILE *, int, tagint **, int); - int pack_improper(tagint **); - void write_improper(FILE *, int, tagint **, int); + virtual int pack_bond(tagint **); + virtual void write_bond(FILE *, int, tagint **, int); + virtual int pack_angle(tagint **); + virtual void write_angle(FILE *, int, tagint **, int); + virtual int pack_dihedral(tagint **); + virtual void write_dihedral(FILE *, int, tagint **, int); + virtual int pack_improper(tagint **); + virtual void write_improper(FILE *, int, tagint **, int); virtual int property_atom(char *) {return -1;} virtual void pack_property_atom(int, double *, int, int) {} - virtual bigint memory_usage() = 0; + virtual bigint memory_usage(); + virtual bigint memory_usage_bonus() {return 0;} + + // old hybrid functions, needed by Kokkos package + + virtual int pack_comm_hybrid(int, int *, double *) {return 0;} + virtual int unpack_comm_hybrid(int, int, double *) {return 0;} + virtual int pack_reverse_hybrid(int, int, double *) {return 0;} + virtual int unpack_reverse_hybrid(int, int *, double *) {return 0;} + virtual int pack_border_hybrid(int, int *, double *) {return 0;} + virtual int unpack_border_hybrid(int, int, double *) {return 0;} + virtual int data_atom_hybrid(int, char **) {return 0;} + virtual int data_vel_hybrid(int, char **) {return 0;} + virtual int pack_data_hybrid(int, double *) {return 0;} + virtual int write_data_hybrid(FILE *, double *) {return 0;} + virtual int pack_vel_hybrid(int, double *) {return 0;} + virtual int write_vel_hybrid(FILE *, double *) {return 0;} protected: - int nmax; // local copy of atom->nmax - int deform_vremap; // local copy of domain properties + int nmax; // local copy of atom->nmax + int deform_vremap; // local copy of domain properties int deform_groupbit; double *h_rate; + tagint *tag; // peratom fields common to all styles + int *type,*mask; + imageint *image; + double **x,**v,**f; + + // standard list of peratom fields always operated on by different methods + // common to all styles, so not listed in field strings + + const char *default_grow,*default_copy; + const char *default_comm,*default_comm_vel,*default_reverse; + const char *default_border,*default_border_vel; + const char *default_exchange,*default_restart; + const char *default_create,*default_data_atom,*default_data_vel; + + struct Method { + void **pdata; + int *datatype; + int *cols; + int **maxcols; + int *collength; + void **plength; + int *index; + }; + + Method mgrow,mcopy; + Method mcomm,mcomm_vel,mreverse,mborder,mborder_vel,mexchange,mrestart; + Method mcreate,mdata_atom,mdata_vel; + + int ngrow,ncopy; + int ncomm,ncomm_vel,nreverse,nborder,nborder_vel,nexchange,nrestart; + int ncreate,ndata_atom,ndata_vel; + + // thread info for fields that are duplicated over threads + // used by fields in grow() and memory_usage() + + bool *threads; + // union data struct for packing 32-bit and 64-bit ints into double bufs // this avoids aliasing issues by having 2 pointers (double,int) // to same buf memory @@ -144,8 +228,15 @@ class AtomVec : protected Pointers { ubuf(int arg) : i(arg) {} }; + // local methods + void grow_nmax(); int grow_nmax_bonus(int); + void setup_fields(); + int process_fields(char *, const char *, Method *); + void create_method(int, Method *); + void init_method(Method *); + void destroy_method(Method *); }; } @@ -162,4 +253,13 @@ E: KOKKOS package requires a kokkos enabled atom_style Self-explanatory. +E: Per-processor system is too big + +The number of owned atoms plus ghost atoms on a single +processor must fit in 32-bit integer. + +E: Invalid atom type in Atoms section of data file + +Atom types must range from 1 to specified # of types. + */ diff --git a/src/atom_vec_atomic.cpp b/src/atom_vec_atomic.cpp index 25a28f1668..eb8dfc1b7e 100644 --- a/src/atom_vec_atomic.cpp +++ b/src/atom_vec_atomic.cpp @@ -12,14 +12,6 @@ ------------------------------------------------------------------------- */ #include "atom_vec_atomic.h" -#include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -30,654 +22,23 @@ AtomVecAtomic::AtomVecAtomic(LAMMPS *lmp) : AtomVec(lmp) molecular = 0; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 6; - size_velocity = 3; - size_data_atom = 5; - size_data_vel = 4; - xcol_data = 3; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecAtomic::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecAtomic::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecAtomic::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAtomic::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAtomic::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAtomic::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAtomic::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAtomic::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecAtomic::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 11 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecAtomic::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecAtomic::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecAtomic::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecAtomic::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = x[i][0]; - buf[i][3] = x[i][1]; - buf[i][4] = x[i][2]; - buf[i][5] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][6] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecAtomic::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4], - (int) ubuf(buf[i][5]).i,(int) ubuf(buf[i][6]).i, - (int) ubuf(buf[i][7]).i); -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecAtomic::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - return bytes; + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) ""; + fields_copy = (char *) ""; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; + fields_border = (char *) ""; + fields_border_vel = (char *) ""; + fields_exchange = (char *) ""; + fields_restart = (char *) ""; + fields_create = (char *) ""; + fields_data_atom = (char *) "id type x"; + fields_data_vel = (char *) "id v"; + + setup_fields(); } diff --git a/src/atom_vec_atomic.h b/src/atom_vec_atomic.h index afcede89b1..3caf1a5a94 100644 --- a/src/atom_vec_atomic.h +++ b/src/atom_vec_atomic.h @@ -27,36 +27,7 @@ namespace LAMMPS_NS { class AtomVecAtomic : public AtomVec { public: AtomVecAtomic(class LAMMPS *); - virtual ~AtomVecAtomic() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - void pack_data(double **); - void write_data(FILE *, int, double **); - bigint memory_usage(); - - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; + ~AtomVecAtomic() {} }; } @@ -66,13 +37,4 @@ class AtomVecAtomic : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/atom_vec_body.cpp b/src/atom_vec_body.cpp index 5e83946078..89fe1681cb 100644 --- a/src/atom_vec_body.cpp +++ b/src/atom_vec_body.cpp @@ -18,7 +18,6 @@ #include "style_body.h" #include "body.h" #include "atom.h" -#include "comm.h" #include "domain.h" #include "modify.h" #include "fix.h" @@ -33,17 +32,17 @@ using namespace LAMMPS_NS; AtomVecBody::AtomVecBody(LAMMPS *lmp) : AtomVec(lmp) { molecular = 0; + bonus_flag = 1; - // size_forward and size_border set in settings(), via Body class + // first 3 sizes do not include values from body itself + // 1st,2nd body counts are added in process_args() via body style + // 3rd body count is added in size_restart_bonus() + // size_data_bonus is not used by Atom class for body style - comm_x_only = comm_f_only = 0; - size_forward = 0; - size_reverse = 6; - size_border = 0; - size_velocity = 6; - size_data_atom = 7; - size_data_vel = 7; - xcol_data = 5; + size_forward_bonus = 4; + size_border_bonus = 10; + size_restart_bonus_one = 10; + size_data_bonus = 0; atom->body_flag = 1; atom->rmass_flag = 1; @@ -58,6 +57,24 @@ AtomVecBody::AtomVecBody(LAMMPS *lmp) : AtomVec(lmp) if (sizeof(double) == sizeof(int)) intdoubleratio = 1; else if (sizeof(double) == 2*sizeof(int)) intdoubleratio = 2; else error->all(FLERR,"Internal error in atom_style body"); + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "radius rmass angmom torque body"; + fields_copy = (char *) "radius rmass angmom"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) "angmom"; + fields_reverse = (char *) "torque"; + fields_border = (char *) "radius rmass"; + fields_border_vel = (char *) "radius rmass angmom"; + fields_exchange = (char *) "radius rmass angmom"; + fields_restart = (char *) "radius rmass angmom"; + fields_create = (char *) "radius rmass angmom body"; + fields_data_atom = (char *) "id type body rmass x"; + fields_data_vel = (char *) "id v angmom"; } /* ---------------------------------------------------------------------- */ @@ -83,6 +100,7 @@ AtomVecBody::~AtomVecBody() void AtomVecBody::process_args(int narg, char **arg) { // suppress unused parameter warning dependent on style_body.h + (void)(arg); if (narg < 1) error->all(FLERR,"Invalid atom_style body command"); @@ -96,65 +114,34 @@ void AtomVecBody::process_args(int narg, char **arg) #undef BodyStyle #undef BODY_CLASS - else error->all(FLERR,utils::check_packages_for_style("body",arg[0],lmp).c_str()); + else error->all(FLERR,utils:: + check_packages_for_style("body",arg[0],lmp).c_str()); bptr->avec = this; icp = bptr->icp; dcp = bptr->dcp; - // max size of forward/border comm - // 7,16 are packed in pack_comm/pack_border + // max size of forward/border and exchange comm // bptr values = max number of additional ivalues/dvalues from Body class - size_forward = 7 + bptr->size_forward; - size_border = 18 + bptr->size_border; + size_forward_bonus += bptr->size_forward; + size_border_bonus += bptr->size_border; + maxexchange = bptr->maxexchange; + + setup_fields(); } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecBody::grow(int n) +void AtomVecBody::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - radius = memory->grow(atom->radius,nmax,"atom:radius"); - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - angmom = memory->grow(atom->angmom,nmax,3,"atom:angmom"); - torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); - body = memory->grow(atom->body,nmax,"atom:body"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecBody::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - radius = atom->radius; rmass = atom->rmass; - angmom = atom->angmom; torque = atom->torque; body = atom->body; + rmass = atom->rmass; + radius = atom->radius; + angmom = atom->angmom; } /* ---------------------------------------------------------------------- @@ -176,32 +163,15 @@ void AtomVecBody::grow_bonus() if delflag and atom J has bonus data, then delete it ------------------------------------------------------------------------- */ -void AtomVecBody::copy(int i, int j, int delflag) +void AtomVecBody::copy_bonus(int i, int j, int delflag) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - radius[j] = radius[i]; - rmass[j] = rmass[i]; - angmom[j][0] = angmom[i][0]; - angmom[j][1] = angmom[i][1]; - angmom[j][2] = angmom[i][2]; - // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && body[j] >= 0) { int k = body[j]; icp->put(bonus[k].iindex); dcp->put(bonus[k].dindex); - copy_bonus(nlocal_bonus-1,k); + copy_bonus_all(nlocal_bonus-1,k); nlocal_bonus--; } @@ -210,10 +180,6 @@ void AtomVecBody::copy(int i, int j, int delflag) if (body[i] >= 0 && i != j) bonus[body[i]].ilocal = j; body[j] = body[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); } /* ---------------------------------------------------------------------- @@ -221,7 +187,7 @@ void AtomVecBody::copy(int i, int j, int delflag) also reset body that points to I to now point to J ------------------------------------------------------------------------- */ -void AtomVecBody::copy_bonus(int i, int j) +void AtomVecBody::copy_bonus_all(int i, int j) { body[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); @@ -240,163 +206,15 @@ void AtomVecBody::clear_bonus() dcp->put(bonus[i].dindex); } nghost_bonus = 0; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->clear_bonus(); } /* ---------------------------------------------------------------------- */ -int AtomVecBody::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - double *quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (body[j] >= 0) { - quat = bonus[body[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (body[j] >= 0) { - quat = bonus[body[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - double *quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (body[j] >= 0) { - quat = bonus[body[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (body[j] >= 0) { - quat = bonus[body[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (body[j] >= 0) { - quat = bonus[body[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_comm_hybrid(int n, int *list, double *buf) +int AtomVecBody::pack_comm_bonus(int n, int *list, double *buf) { int i,j,m; double *quat; @@ -413,12 +231,13 @@ int AtomVecBody::pack_comm_hybrid(int n, int *list, double *buf) m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecBody::unpack_comm(int n, int first, double *buf) +void AtomVecBody::unpack_comm_bonus(int n, int first, double *buf) { int i,m,last; double *quat; @@ -426,9 +245,6 @@ void AtomVecBody::unpack_comm(int n, int first, double *buf) m = 0; last = first + n; for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; if (body[i] >= 0) { quat = bonus[body[i]].quat; quat[0] = buf[m++]; @@ -442,350 +258,7 @@ void AtomVecBody::unpack_comm(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -void AtomVecBody::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - double *quat; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (body[i] >= 0) { - quat = bonus[body[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - m += bptr->unpack_comm_body(&bonus[body[i]],&buf[m]); - } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - double *quat; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - if (body[i] >= 0) { - quat = bonus[body[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - m += bptr->unpack_comm_body(&bonus[body[i]],&buf[m]); - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBody::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - double *quat,*inertia; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (body[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[body[j]].quat; - inertia = bonus[body[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - buf[m++] = ubuf(bonus[body[j]].ninteger).d; - buf[m++] = ubuf(bonus[body[j]].ndouble).d; - m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (body[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[body[j]].quat; - inertia = bonus[body[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - buf[m++] = ubuf(bonus[body[j]].ninteger).d; - buf[m++] = ubuf(bonus[body[j]].ndouble).d; - m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - double *quat,*inertia; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (body[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[body[j]].quat; - inertia = bonus[body[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - buf[m++] = ubuf(bonus[body[j]].ninteger).d; - buf[m++] = ubuf(bonus[body[j]].ndouble).d; - m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (body[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[body[j]].quat; - inertia = bonus[body[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - buf[m++] = ubuf(bonus[body[j]].ninteger).d; - buf[m++] = ubuf(bonus[body[j]].ndouble).d; - m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (body[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[body[j]].quat; - inertia = bonus[body[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - buf[m++] = ubuf(bonus[body[j]].ninteger).d; - buf[m++] = ubuf(bonus[body[j]].ndouble).d; - m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_border_hybrid(int n, int *list, double *buf) +int AtomVecBody::pack_border_bonus(int n, int *list, double *buf) { int i,j,m; double *quat,*inertia; @@ -793,8 +266,6 @@ int AtomVecBody::pack_border_hybrid(int n, int *list, double *buf) m = 0; for (i = 0; i < n; i++) { j = list[i]; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; if (body[j] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -812,12 +283,13 @@ int AtomVecBody::pack_border_hybrid(int n, int *list, double *buf) m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecBody::unpack_border(int n, int first, double *buf) +int AtomVecBody::unpack_border_bonus(int n, int first, double *buf) { int i,j,m,last; double *quat,*inertia; @@ -825,15 +297,6 @@ void AtomVecBody::unpack_border(int n, int first, double *buf) m = 0; last = first + n; for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; body[i] = (int) ubuf(buf[m++]).i; if (body[i] == 0) body[i] = -1; else { @@ -860,106 +323,6 @@ void AtomVecBody::unpack_border(int n, int first, double *buf) } } - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBody::unpack_border_vel(int n, int first, double *buf) -{ - int i,j,m,last; - double *quat,*inertia; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - body[i] = (int) ubuf(buf[m++]).i; - if (body[i] == 0) body[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - quat = bonus[j].quat; - inertia = bonus[j].inertia; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - inertia[0] = buf[m++]; - inertia[1] = buf[m++]; - inertia[2] = buf[m++]; - bonus[j].ninteger = (int) ubuf(buf[m++]).i; - bonus[j].ndouble = (int) ubuf(buf[m++]).i; - // corresponding put() calls are in clear_bonus() - bonus[j].ivalue = icp->get(bonus[j].ninteger,bonus[j].iindex); - bonus[j].dvalue = dcp->get(bonus[j].ndouble,bonus[j].dindex); - m += bptr->unpack_border_body(&bonus[j],&buf[m]); - bonus[j].ilocal = i; - body[i] = j; - nghost_bonus++; - } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,j,m,last; - double *quat,*inertia; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - body[i] = (int) ubuf(buf[m++]).i; - if (body[i] == 0) body[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - quat = bonus[j].quat; - inertia = bonus[j].inertia; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - inertia[0] = buf[m++]; - inertia[1] = buf[m++]; - inertia[2] = buf[m++]; - bonus[j].ninteger = (int) ubuf(buf[m++]).i; - bonus[j].ndouble = (int) ubuf(buf[m++]).i; - // corresponding put() calls are in clear_bonus() - bonus[j].ivalue = icp->get(bonus[j].ninteger,bonus[j].iindex); - bonus[j].dvalue = dcp->get(bonus[j].ndouble,bonus[j].dindex); - m += bptr->unpack_border_body(&bonus[j],&buf[m]); - bonus[j].ilocal = i; - body[i] = j; - nghost_bonus++; - } - } return m; } @@ -968,24 +331,9 @@ int AtomVecBody::unpack_border_hybrid(int n, int first, double *buf) xyz must be 1st 3 values, so comm::exchange() can test on them ------------------------------------------------------------------------- */ -int AtomVecBody::pack_exchange(int i, double *buf) +int AtomVecBody::pack_exchange_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; if (body[i] < 0) buf[m++] = ubuf(0).d; else { @@ -1009,40 +357,17 @@ int AtomVecBody::pack_exchange(int i, double *buf) m += bonus[j].ndouble; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- */ -int AtomVecBody::unpack_exchange(double *buf) +int AtomVecBody::unpack_exchange_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); + int m = 0; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - body[nlocal] = (int) ubuf(buf[m++]).i; - if (body[nlocal] == 0) body[nlocal] = -1; + body[ilocal] = (int) ubuf(buf[m++]).i; + if (body[ilocal] == 0) body[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *quat = bonus[nlocal_bonus].quat; @@ -1069,42 +394,31 @@ int AtomVecBody::unpack_exchange(double *buf) bonus[nlocal_bonus].ndouble*sizeof(double)); m += bonus[nlocal_bonus].ndouble; - bonus[nlocal_bonus].ilocal = nlocal; - body[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + body[ilocal] = nlocal_bonus++; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; return m; } /* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes + unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecBody::size_restart() +int AtomVecBody::size_restart_bonus() { int i; int n = 0; int nlocal = atom->nlocal; - for (i = 0; i < nlocal; i++) + for (i = 0; i < nlocal; i++) { if (body[i] >= 0) { - n += 26; + n += size_restart_bonus_one; if (intdoubleratio == 1) n += bonus[body[i]].ninteger; else n += (bonus[body[i]].ninteger+1)/2; n += bonus[body[i]].ndouble; - } else n += 17; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + } else n++; + } return n; } @@ -1115,25 +429,9 @@ int AtomVecBody::size_restart() molecular types may be negative, but write as positive ------------------------------------------------------------------------- */ -int AtomVecBody::pack_restart(int i, double *buf) +int AtomVecBody::pack_restart_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; if (body[i] < 0) buf[m++] = ubuf(0).d; else { @@ -1157,47 +455,19 @@ int AtomVecBody::pack_restart(int i, double *buf) m += bonus[j].ndouble; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities + unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecBody::unpack_restart(double *buf) +int AtomVecBody::unpack_restart_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } + int m = 0; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - body[nlocal] = (int) ubuf(buf[m++]).i; - if (body[nlocal] == 0) body[nlocal] = -1; + body[ilocal] = (int) ubuf(buf[m++]).i; + if (body[ilocal] == 0) body[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *quat = bonus[nlocal_bonus].quat; @@ -1222,17 +492,10 @@ int AtomVecBody::unpack_restart(double *buf) memcpy(bonus[nlocal_bonus].dvalue,&buf[m], bonus[nlocal_bonus].ndouble*sizeof(double)); m += bonus[nlocal_bonus].ndouble; - bonus[nlocal_bonus].ilocal = nlocal; - body[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + body[ilocal] = nlocal_bonus++; } - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; return m; } @@ -1241,92 +504,33 @@ int AtomVecBody::unpack_restart(double *buf) set other values to defaults ------------------------------------------------------------------------- */ -void AtomVecBody::create_atom(int itype, double *coord) +void AtomVecBody::create_atom_post(int ilocal) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - radius[nlocal] = 0.5; - rmass[nlocal] = 1.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - body[nlocal] = -1; - - atom->nlocal++; + radius[ilocal] = 0.5; + rmass[ilocal] = 1.0; + body[ilocal] = -1; } /* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecBody::data_atom(double *coord, imageint imagetmp, char **values) +void AtomVecBody::data_atom_post(int ilocal) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); + body_flag = body[ilocal]; + if (body_flag == 0) body_flag = -1; + else if (body_flag == 1) body_flag = 0; + else error->one(FLERR,"Invalid body flag in Atoms section of data file"); + body[ilocal] = body_flag; - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - body[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (body[nlocal] == 0) body[nlocal] = -1; - else if (body[nlocal] == 1) body[nlocal] = 0; - else error->one(FLERR,"Invalid bodyflag in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - if (rmass[nlocal] <= 0.0) + if (rmass[ilocal] <= 0.0) error->one(FLERR,"Invalid density in Atoms section of data file"); - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - radius[nlocal] = 0.5; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecBody::data_atom_hybrid(int nlocal, char **values) -{ - body[nlocal] = utils::inumeric(FLERR,values[0],true,lmp); - if (body[nlocal] == 0) body[nlocal] = -1; - else if (body[nlocal] == 1) body[nlocal] = 0; - else error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[1],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - return 2; + radius[ilocal] = 0.5; + angmom[ilocal][0] = 0.0; + angmom[ilocal][1] = 0.0; + angmom[ilocal][2] = 0.0; } /* ---------------------------------------------------------------------- @@ -1336,7 +540,8 @@ int AtomVecBody::data_atom_hybrid(int nlocal, char **values) void AtomVecBody::data_body(int m, int ninteger, int ndouble, int *ivalues, double *dvalues) { - if (body[m]) error->one(FLERR,"Assigning body parameters to non-body atom"); + if (body[m]) + error->one(FLERR,"Assigning body parameters to non-body atom"); if (nlocal_bonus == nmax_bonus) grow_bonus(); bonus[nlocal_bonus].ilocal = m; bptr->data_body(nlocal_bonus,ninteger,ndouble,ivalues,dvalues); @@ -1344,140 +549,43 @@ void AtomVecBody::data_body(int m, int ninteger, int ndouble, } /* ---------------------------------------------------------------------- - unpack one tri from Velocities section of data file + return # of bytes of allocated memory ------------------------------------------------------------------------- */ -void AtomVecBody::data_vel(int m, char **values) +bigint AtomVecBody::memory_usage_bonus() { - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - angmom[m][0] = utils::numeric(FLERR,values[3],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[4],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[5],true,lmp); -} + bigint bytes = 0; + bytes += nmax_bonus*sizeof(Bonus); + bytes += icp->size + dcp->size; -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one body in Velocities section of data file -------------------------------------------------------------------------- */ - -int AtomVecBody::data_vel_hybrid(int m, char **values) -{ - angmom[m][0] = utils::numeric(FLERR,values[0],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[1],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[2],true,lmp); - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecBody::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - if (body[i] < 0) buf[i][2] = ubuf(0).d; - else buf[i][2] = ubuf(1).d; - buf[i][3] = rmass[i]; - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + int nall = nlocal_bonus + nghost_bonus; + for (int i = 0; i < nall; i++) { + bytes += bonus[i].ninteger * sizeof(int); + bytes += bonus[i].ndouble * sizeof(double); } + + return bytes; } /* ---------------------------------------------------------------------- - pack hybrid atom info for data file + modify values for AtomVec::pack_data() to pack ------------------------------------------------------------------------- */ -int AtomVecBody::pack_data_hybrid(int i, double *buf) +void AtomVecBody::pack_data_pre(int ilocal) { - if (body[i] < 0) buf[0] = ubuf(0).d; - else buf[0] = ubuf(1).d; - buf[1] = rmass[i]; - return 2; + body_flag = body[ilocal]; + + if (body_flag < 0) body[ilocal] = 0; + else body[ilocal] = 1; } /* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags + unmodify values packed by AtomVec::pack_data() ------------------------------------------------------------------------- */ -void AtomVecBody::write_data(FILE *fp, int n, double **buf) +void AtomVecBody::pack_data_post(int ilocal) { - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %d %d %g %g %g %g %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i, - (int) ubuf(buf[i][9]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecBody::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %d %g",(int) ubuf(buf[0]).i,buf[1]); - return 2; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecBody::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = angmom[i][0]; - buf[i][5] = angmom[i][1]; - buf[i][6] = angmom[i][2]; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid velocity info for data file -------------------------------------------------------------------------- */ - -int AtomVecBody::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = angmom[i][0]; - buf[1] = angmom[i][1]; - buf[2] = angmom[i][2]; - return 3; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecBody::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %g %g %g %g %g %g\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -int AtomVecBody::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %g %g %g",buf[0],buf[1],buf[2]); - return 3; + body[ilocal] = body_flag; } /* ---------------------------------------------------------------------- @@ -1503,41 +611,6 @@ void AtomVecBody::set_quat(int m, double *quat_external) quat[2] = quat_external[2]; quat[3] = quat_external[3]; } -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecBody::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("radius")) bytes += memory->usage(radius,nmax); - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("angmom")) bytes += memory->usage(angmom,nmax,3); - if (atom->memcheck("torque")) bytes += - memory->usage(torque,nmax*comm->nthreads,3); - if (atom->memcheck("body")) bytes += memory->usage(body,nmax); - - bytes += nmax_bonus*sizeof(Bonus); - bytes += icp->size + dcp->size; - - int nall = nlocal_bonus + nghost_bonus; - for (int i = 0; i < nall; i++) { - bytes += bonus[i].ninteger * sizeof(int); - bytes += bonus[i].ndouble * sizeof(double); - } - - return bytes; -} - /* ---------------------------------------------------------------------- debug method for sanity checking of own/bonus data pointers ------------------------------------------------------------------------- */ @@ -1546,15 +619,15 @@ bigint AtomVecBody::memory_usage() void AtomVecBody::check(int flag) { for (int i = 0; i < atom->nlocal; i++) { - if (atom->body[i] >= 0 && atom->body[i] >= nlocal_bonus) { + if (body[i] >= 0 && body[i] >= nlocal_bonus) { printf("Proc %d, step %ld, flag %d\n",comm->me,update->ntimestep,flag); errorx->one(FLERR,"BAD AAA"); } } for (int i = atom->nlocal; i < atom->nlocal+atom->nghost; i++) { - if (atom->body[i] >= 0 && - (atom->body[i] < nlocal_bonus || - atom->body[i] >= nlocal_bonus+nghost_bonus)) { + if (body[i] >= 0 && + (body[i] < nlocal_bonus || + body[i] >= nlocal_bonus+nghost_bonus)) { printf("Proc %d, step %ld, flag %d\n",comm->me,update->ntimestep,flag); errorx->one(FLERR,"BAD BBB"); } @@ -1566,7 +639,7 @@ void AtomVecBody::check(int flag) } } for (int i = 0; i < nlocal_bonus; i++) { - if (atom->body[bonus[i].ilocal] != i) { + if (body[bonus[i].ilocal] != i) { printf("Proc %d, step %ld, flag %d\n",comm->me,update->ntimestep,flag); errorx->one(FLERR,"BAD DDD"); } @@ -1579,7 +652,7 @@ void AtomVecBody::check(int flag) } } for (int i = nlocal_bonus; i < nlocal_bonus+nghost_bonus; i++) { - if (atom->body[bonus[i].ilocal] != i) { + if (body[bonus[i].ilocal] != i) { printf("Proc %d, step %ld, flag %d\n",comm->me,update->ntimestep,flag); errorx->one(FLERR,"BAD FFF"); } diff --git a/src/atom_vec_body.h b/src/atom_vec_body.h index 38309648fb..a47cfb3b54 100644 --- a/src/atom_vec_body.h +++ b/src/atom_vec_body.h @@ -42,49 +42,26 @@ class AtomVecBody : public AtomVec { AtomVecBody(class LAMMPS *); ~AtomVecBody(); void process_args(int, char **); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); - - // manipulate Bonus data structure for extra atom info + void grow_pointers(); + void copy_bonus(int, int, int); void clear_bonus(); + int pack_comm_bonus(int, int *, double *); + void unpack_comm_bonus(int, int, double *); + int pack_border_bonus(int, int *, double *); + int unpack_border_bonus(int, int, double *); + int pack_exchange_bonus(int, double *); + int unpack_exchange_bonus(int, double *); + int size_restart_bonus(); + int pack_restart_bonus(int, double *); + int unpack_restart_bonus(int, double *); void data_body(int, int, int, int *, double *); + bigint memory_usage_bonus(); + + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); // methods used by other classes to query/set body info @@ -94,23 +71,20 @@ class AtomVecBody : public AtomVec { int nlocal_bonus; private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *radius; - double *rmass; - double **angmom,**torque; int *body; + double *rmass,*radius; + double **angmom; int nghost_bonus,nmax_bonus; - int intdoubleratio; // sizeof(double) / sizeof(int) + int intdoubleratio; // sizeof(double) / sizeof(int) + int body_flag; MyPoolChunk *icp; MyPoolChunk *dcp; void grow_bonus(); - void copy_bonus(int, int); + void copy_bonus_all(int, int); + // check(int); }; } diff --git a/src/atom_vec_charge.cpp b/src/atom_vec_charge.cpp index 9f35d16ff0..5957ef5215 100644 --- a/src/atom_vec_charge.cpp +++ b/src/atom_vec_charge.cpp @@ -13,13 +13,6 @@ #include "atom_vec_charge.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -30,742 +23,25 @@ AtomVecCharge::AtomVecCharge(LAMMPS *lmp) : AtomVec(lmp) molecular = 0; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 7; - size_velocity = 3; - size_data_atom = 6; - size_data_vel = 4; - xcol_data = 4; - atom->q_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecCharge::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - q = memory->grow(atom->q,nmax,"atom:q"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecCharge::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - q = atom->q; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecCharge::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - q[j] = q[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecCharge::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecCharge::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecCharge::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = q[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecCharge::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecCharge::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - q[i] = buf[m++]; - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecCharge::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = q[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - q[nlocal] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecCharge::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 12 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecCharge::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = q[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecCharge::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - q[nlocal] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecCharge::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - q[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecCharge::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - q[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecCharge::data_atom_hybrid(int nlocal, char **values) -{ - q[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecCharge::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = q[i]; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecCharge::pack_data_hybrid(int i, double *buf) -{ - buf[0] = q[i]; - return 1; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecCharge::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecCharge::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e",buf[0]); - return 1; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecCharge::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("q")) bytes += memory->usage(q,nmax); - - return bytes; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "q"; + fields_copy = (char *) "q"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; + fields_border = (char *) "q"; + fields_border_vel = (char *) "q"; + fields_exchange = (char *) "q"; + fields_restart = (char *) "q"; + fields_create = (char *) "q"; + fields_data_atom = (char *) "id type q x"; + fields_data_vel = (char *) "id v"; + + setup_fields(); } diff --git a/src/atom_vec_charge.h b/src/atom_vec_charge.h index 10f1d8d141..d52b4a068a 100644 --- a/src/atom_vec_charge.h +++ b/src/atom_vec_charge.h @@ -27,42 +27,6 @@ namespace LAMMPS_NS { class AtomVecCharge : public AtomVec { public: AtomVecCharge(class LAMMPS *); - virtual ~AtomVecCharge() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *q; }; } @@ -72,13 +36,4 @@ class AtomVecCharge : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/atom_vec_ellipsoid.cpp b/src/atom_vec_ellipsoid.cpp index 5565b82a10..a0cded549f 100644 --- a/src/atom_vec_ellipsoid.cpp +++ b/src/atom_vec_ellipsoid.cpp @@ -19,8 +19,6 @@ #include #include "math_extra.h" #include "atom.h" -#include "comm.h" -#include "domain.h" #include "modify.h" #include "fix.h" #include "math_const.h" @@ -36,22 +34,38 @@ using namespace MathConst; AtomVecEllipsoid::AtomVecEllipsoid(LAMMPS *lmp) : AtomVec(lmp) { molecular = 0; + bonus_flag = 1; - comm_x_only = comm_f_only = 0; - size_forward = 7; - size_reverse = 6; - size_border = 15; - size_velocity = 6; - size_data_atom = 7; - size_data_vel = 7; + size_forward_bonus = 4; + size_border_bonus = 8; + size_restart_bonus_one = 8; size_data_bonus = 8; - xcol_data = 5; atom->ellipsoid_flag = 1; atom->rmass_flag = atom->angmom_flag = atom->torque_flag = 1; nlocal_bonus = nghost_bonus = nmax_bonus = 0; bonus = NULL; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "rmass angmom torque ellipsoid"; + fields_copy = (char *) "rmass angmom"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) "angmom"; + fields_reverse = (char *) "torque"; + fields_border = (char *) "rmass"; + fields_border_vel = (char *) "rmass angmom"; + fields_exchange = (char *) "rmass angmom"; + fields_restart = (char *) "rmass angmom"; + fields_create = (char *) "rmass angmom ellipsoid"; + fields_data_atom = (char *) "id type ellipsoid rmass x"; + fields_data_vel = (char *) "id v angmom"; + + setup_fields(); } /* ---------------------------------------------------------------------- */ @@ -62,48 +76,15 @@ AtomVecEllipsoid::~AtomVecEllipsoid() } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecEllipsoid::grow(int n) +void AtomVecEllipsoid::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - angmom = memory->grow(atom->angmom,nmax,3,"atom:angmom"); - torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); - ellipsoid = memory->grow(atom->ellipsoid,nmax,"atom:ellipsoid"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - rmass = atom->rmass; angmom = atom->angmom; torque = atom->torque; ellipsoid = atom->ellipsoid; + rmass = atom->rmass; + angmom = atom->angmom; } /* ---------------------------------------------------------------------- @@ -121,31 +102,15 @@ void AtomVecEllipsoid::grow_bonus() } /* ---------------------------------------------------------------------- - copy atom I info to atom J + copy atom I bonus info to atom J ------------------------------------------------------------------------- */ -void AtomVecEllipsoid::copy(int i, int j, int delflag) +void AtomVecEllipsoid::copy_bonus(int i, int j, int delflag) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - rmass[j] = rmass[i]; - angmom[j][0] = angmom[i][0]; - angmom[j][1] = angmom[i][1]; - angmom[j][2] = angmom[i][2]; - // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && ellipsoid[j] >= 0) { - copy_bonus(nlocal_bonus-1,ellipsoid[j]); + copy_bonus_all(nlocal_bonus-1,ellipsoid[j]); nlocal_bonus--; } @@ -154,10 +119,6 @@ void AtomVecEllipsoid::copy(int i, int j, int delflag) if (ellipsoid[i] >= 0 && i != j) bonus[ellipsoid[i]].ilocal = j; ellipsoid[j] = ellipsoid[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); } /* ---------------------------------------------------------------------- @@ -165,7 +126,7 @@ void AtomVecEllipsoid::copy(int i, int j, int delflag) also reset ellipsoid that points to I to now point to J ------------------------------------------------------------------------- */ -void AtomVecEllipsoid::copy_bonus(int i, int j) +void AtomVecEllipsoid::copy_bonus_all(int i, int j) { ellipsoid[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); @@ -179,191 +140,15 @@ void AtomVecEllipsoid::copy_bonus(int i, int j) void AtomVecEllipsoid::clear_bonus() { nghost_bonus = 0; -} -/* ---------------------------------------------------------------------- - set shape values in bonus data for particle I - oriented aligned with xyz axes - this may create or delete entry in bonus data -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::set_shape(int i, - double shapex, double shapey, double shapez) -{ - if (ellipsoid[i] < 0) { - if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) return; - if (nlocal_bonus == nmax_bonus) grow_bonus(); - double *shape = bonus[nlocal_bonus].shape; - double *quat = bonus[nlocal_bonus].quat; - shape[0] = shapex; - shape[1] = shapey; - shape[2] = shapez; - quat[0] = 1.0; - quat[1] = 0.0; - quat[2] = 0.0; - quat[3] = 0.0; - bonus[nlocal_bonus].ilocal = i; - ellipsoid[i] = nlocal_bonus++; - } else if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) { - copy_bonus(nlocal_bonus-1,ellipsoid[i]); - nlocal_bonus--; - ellipsoid[i] = -1; - } else { - double *shape = bonus[ellipsoid[i]].shape; - shape[0] = shapex; - shape[1] = shapey; - shape[2] = shapez; - } + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->clear_bonus(); } /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - double *quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (ellipsoid[j] >= 0) { - quat = bonus[ellipsoid[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (ellipsoid[j] >= 0) { - quat = bonus[ellipsoid[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - double *quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (ellipsoid[j] >= 0) { - quat = bonus[ellipsoid[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (ellipsoid[j] >= 0) { - quat = bonus[ellipsoid[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (ellipsoid[j] >= 0) { - quat = bonus[ellipsoid[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_comm_hybrid(int n, int *list, double *buf) +int AtomVecEllipsoid::pack_comm_bonus(int n, int *list, double *buf) { int i,j,m; double *quat; @@ -379,64 +164,13 @@ int AtomVecEllipsoid::pack_comm_hybrid(int n, int *list, double *buf) buf[m++] = quat[3]; } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecEllipsoid::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - double *quat; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (ellipsoid[i] >= 0) { - quat = bonus[ellipsoid[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - } - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEllipsoid::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - double *quat; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (ellipsoid[i] >= 0) { - quat = bonus[ellipsoid[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::unpack_comm_hybrid(int n, int first, double *buf) +void AtomVecEllipsoid::unpack_comm_bonus(int n, int first, double *buf) { int i,m,last; double *quat; @@ -452,286 +186,11 @@ int AtomVecEllipsoid::unpack_comm_hybrid(int n, int first, double *buf) quat[3] = buf[m++]; } } - return m; } /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEllipsoid::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - double *shape,*quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rmass[j]; - if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - shape = bonus[ellipsoid[j]].shape; - quat = bonus[ellipsoid[j]].quat; - buf[m++] = shape[0]; - buf[m++] = shape[1]; - buf[m++] = shape[2]; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rmass[j]; - if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - shape = bonus[ellipsoid[j]].shape; - quat = bonus[ellipsoid[j]].quat; - buf[m++] = shape[0]; - buf[m++] = shape[1]; - buf[m++] = shape[2]; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - double *shape,*quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rmass[j]; - if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - shape = bonus[ellipsoid[j]].shape; - quat = bonus[ellipsoid[j]].quat; - buf[m++] = shape[0]; - buf[m++] = shape[1]; - buf[m++] = shape[2]; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rmass[j]; - if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - shape = bonus[ellipsoid[j]].shape; - quat = bonus[ellipsoid[j]].quat; - buf[m++] = shape[0]; - buf[m++] = shape[1]; - buf[m++] = shape[2]; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rmass[j]; - if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - shape = bonus[ellipsoid[j]].shape; - quat = bonus[ellipsoid[j]].quat; - buf[m++] = shape[0]; - buf[m++] = shape[1]; - buf[m++] = shape[2]; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_border_hybrid(int n, int *list, double *buf) +int AtomVecEllipsoid::pack_border_bonus(int n, int *list, double *buf) { int i,j,m; double *shape,*quat; @@ -739,7 +198,6 @@ int AtomVecEllipsoid::pack_border_hybrid(int n, int *list, double *buf) m = 0; for (i = 0; i < n; i++) { j = list[i]; - buf[m++] = rmass[j]; if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -754,12 +212,13 @@ int AtomVecEllipsoid::pack_border_hybrid(int n, int *list, double *buf) buf[m++] = quat[3]; } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecEllipsoid::unpack_border(int n, int first, double *buf) +int AtomVecEllipsoid::unpack_border_bonus(int n, int first, double *buf) { int i,j,m,last; double *shape,*quat; @@ -767,14 +226,6 @@ void AtomVecEllipsoid::unpack_border(int n, int first, double *buf) m = 0; last = first + n; for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - rmass[i] = buf[m++]; ellipsoid[i] = (int) ubuf(buf[m++]).i; if (ellipsoid[i] == 0) ellipsoid[i] = -1; else { @@ -795,92 +246,6 @@ void AtomVecEllipsoid::unpack_border(int n, int first, double *buf) } } - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEllipsoid::unpack_border_vel(int n, int first, double *buf) -{ - int i,j,m,last; - double *shape,*quat; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - rmass[i] = buf[m++]; - ellipsoid[i] = (int) ubuf(buf[m++]).i; - if (ellipsoid[i] == 0) ellipsoid[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - shape = bonus[j].shape; - quat = bonus[j].quat; - shape[0] = buf[m++]; - shape[1] = buf[m++]; - shape[2] = buf[m++]; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - bonus[j].ilocal = i; - ellipsoid[i] = j; - nghost_bonus++; - } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,j,m,last; - double *shape,*quat; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - rmass[i] = buf[m++]; - ellipsoid[i] = (int) ubuf(buf[m++]).i; - if (ellipsoid[i] == 0) ellipsoid[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - shape = bonus[j].shape; - quat = bonus[j].quat; - shape[0] = buf[m++]; - shape[1] = buf[m++]; - shape[2] = buf[m++]; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - bonus[j].ilocal = i; - ellipsoid[i] = j; - nghost_bonus++; - } - } return m; } @@ -889,24 +254,9 @@ int AtomVecEllipsoid::unpack_border_hybrid(int n, int first, double *buf) xyz must be 1st 3 values, so comm::exchange() can test on them ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_exchange(int i, double *buf) +int AtomVecEllipsoid::pack_exchange_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = rmass[i]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; if (ellipsoid[i] < 0) buf[m++] = ubuf(0).d; else { @@ -923,40 +273,17 @@ int AtomVecEllipsoid::pack_exchange(int i, double *buf) buf[m++] = quat[3]; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::unpack_exchange(double *buf) +int AtomVecEllipsoid::unpack_exchange_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); + int m = 0; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - rmass[nlocal] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - ellipsoid[nlocal] = (int) ubuf(buf[m++]).i; - if (ellipsoid[nlocal] == 0) ellipsoid[nlocal] = -1; + ellipsoid[ilocal] = (int) ubuf(buf[m++]).i; + if (ellipsoid[ilocal] == 0) ellipsoid[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *shape = bonus[nlocal_bonus].shape; @@ -968,16 +295,10 @@ int AtomVecEllipsoid::unpack_exchange(double *buf) quat[1] = buf[m++]; quat[2] = buf[m++]; quat[3] = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - ellipsoid[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + ellipsoid[ilocal] = nlocal_bonus++; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; return m; } @@ -986,20 +307,16 @@ int AtomVecEllipsoid::unpack_exchange(double *buf) include extra data stored by fixes ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::size_restart() +int AtomVecEllipsoid::size_restart_bonus() { int i; int n = 0; int nlocal = atom->nlocal; - for (i = 0; i < nlocal; i++) - if (ellipsoid[i] >= 0) n += 23; - else n += 16; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + for (i = 0; i < nlocal; i++) { + if (ellipsoid[i] >= 0) n += size_restart_bonus_one; + else n++; + } return n; } @@ -1010,24 +327,9 @@ int AtomVecEllipsoid::size_restart() molecular types may be negative, but write as positive ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_restart(int i, double *buf) +int AtomVecEllipsoid::pack_restart_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = rmass[i]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; if (ellipsoid[i] < 0) buf[m++] = ubuf(0).d; else { @@ -1042,11 +344,6 @@ int AtomVecEllipsoid::pack_restart(int i, double *buf) buf[m++] = bonus[j].quat[3]; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; return m; } @@ -1054,34 +351,12 @@ int AtomVecEllipsoid::pack_restart(int i, double *buf) unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::unpack_restart(double *buf) +int AtomVecEllipsoid::unpack_restart_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } + int m = 0; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - rmass[nlocal] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - ellipsoid[nlocal] = (int) ubuf(buf[m++]).i; - if (ellipsoid[nlocal] == 0) ellipsoid[nlocal] = -1; + ellipsoid[ilocal] = (int) ubuf(buf[m++]).i; + if (ellipsoid[ilocal] == 0) ellipsoid[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *shape = bonus[nlocal_bonus].shape; @@ -1093,112 +368,13 @@ int AtomVecEllipsoid::unpack_restart(double *buf) quat[1] = buf[m++]; quat[2] = buf[m++]; quat[3] = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - ellipsoid[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + ellipsoid[ilocal] = nlocal_bonus++; } - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; return m; } -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - rmass[nlocal] = 1.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - ellipsoid[nlocal] = -1; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::data_atom(double *coord, imageint imagetmp, - char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - ellipsoid[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (ellipsoid[nlocal] == 0) ellipsoid[nlocal] = -1; - else if (ellipsoid[nlocal] == 1) ellipsoid[nlocal] = 0; - else error->one(FLERR,"Invalid ellipsoidflag in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecEllipsoid::data_atom_hybrid(int nlocal, char **values) -{ - ellipsoid[nlocal] = utils::inumeric(FLERR,values[0],true,lmp); - if (ellipsoid[nlocal] == 0) ellipsoid[nlocal] = -1; - else if (ellipsoid[nlocal] == 1) ellipsoid[nlocal] = 0; - else error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[1],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - return 2; -} - /* ---------------------------------------------------------------------- unpack one line from Ellipsoids section of data file ------------------------------------------------------------------------- */ @@ -1234,177 +410,108 @@ void AtomVecEllipsoid::data_atom_bonus(int m, char **values) } /* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file + return # of bytes of allocated bonus memory ------------------------------------------------------------------------- */ -void AtomVecEllipsoid::data_vel(int m, char **values) +bigint AtomVecEllipsoid::memory_usage_bonus() { - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - angmom[m][0] = utils::numeric(FLERR,values[3],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[4],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[5],true,lmp); + bigint bytes = 0; + bytes += nmax_bonus*sizeof(Bonus); + return bytes; } /* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file + initialize non-zero atom quantities ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::data_vel_hybrid(int m, char **values) +void AtomVecEllipsoid::create_atom_post(int ilocal) { - angmom[m][0] = utils::numeric(FLERR,values[0],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[1],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[2],true,lmp); - return 3; + rmass[ilocal] = 1.0; + ellipsoid[ilocal] = -1; } /* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecEllipsoid::pack_data(double **buf) +void AtomVecEllipsoid::data_atom_post(int ilocal) +{ + ellipsoid_flag = ellipsoid[ilocal]; + if (ellipsoid_flag == 0) ellipsoid_flag = -1; + else if (ellipsoid_flag == 1) ellipsoid_flag = 0; + else error->one(FLERR,"Invalid ellipsoid flag in Atoms section of data file"); + ellipsoid[ilocal] = ellipsoid_flag; + + if (rmass[ilocal] <= 0.0) + error->one(FLERR,"Invalid density in Atoms section of data file"); + + angmom[ilocal][0] = 0.0; + angmom[ilocal][1] = 0.0; + angmom[ilocal][2] = 0.0; +} + +/* ---------------------------------------------------------------------- + modify values for AtomVec::pack_data() to pack +------------------------------------------------------------------------- */ + +void AtomVecEllipsoid::pack_data_pre(int ilocal) { double *shape; - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - if (ellipsoid[i] < 0) buf[i][2] = ubuf(0).d; - else buf[i][2] = ubuf(1).d; - if (ellipsoid[i] < 0) buf[i][3] = rmass[i]; - else { - shape = bonus[ellipsoid[i]].shape; - buf[i][3] = rmass[i] / (4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]); - } - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + ellipsoid_flag = atom->ellipsoid[ilocal]; + rmass_one = atom->rmass[ilocal]; + + if (ellipsoid_flag < 0) ellipsoid[ilocal] = 0; + else ellipsoid[ilocal] = 1; + + if (ellipsoid_flag >= 0) { + shape = bonus[ellipsoid_flag].shape; + rmass[ilocal] /= 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]; } } /* ---------------------------------------------------------------------- - pack hybrid atom info for data file + unmodify values packed by AtomVec::pack_data() ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_data_hybrid(int i, double *buf) +void AtomVecEllipsoid::pack_data_post(int ilocal) { - if (ellipsoid[i] < 0) buf[0] = ubuf(0).d; - else buf[0] = ubuf(1).d; - if (ellipsoid[i] < 0) buf[1] = rmass[i]; - else { + ellipsoid[ilocal] = ellipsoid_flag; + rmass[ilocal] = rmass_one; +} + +/* ---------------------------------------------------------------------- + set shape values in bonus data for particle I + oriented aligned with xyz axes + this may create or delete entry in bonus data +------------------------------------------------------------------------- */ + +void AtomVecEllipsoid:: +set_shape(int i, double shapex, double shapey, double shapez) +{ + if (ellipsoid[i] < 0) { + if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) return; + if (nlocal_bonus == nmax_bonus) grow_bonus(); + double *shape = bonus[nlocal_bonus].shape; + double *quat = bonus[nlocal_bonus].quat; + shape[0] = shapex; + shape[1] = shapey; + shape[2] = shapez; + quat[0] = 1.0; + quat[1] = 0.0; + quat[2] = 0.0; + quat[3] = 0.0; + bonus[nlocal_bonus].ilocal = i; + ellipsoid[i] = nlocal_bonus++; + } else if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) { + copy_bonus_all(nlocal_bonus-1,ellipsoid[i]); + nlocal_bonus--; + ellipsoid[i] = -1; + } else { double *shape = bonus[ellipsoid[i]].shape; - buf[1] = rmass[i] / (4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]); - } - return 2; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i, - (int) ubuf(buf[i][9]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecEllipsoid::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %d %-1.16e",(int) ubuf(buf[0]).i,buf[1]); - return 2; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = angmom[i][0]; - buf[i][5] = angmom[i][1]; - buf[i][6] = angmom[i][2]; + shape[0] = shapex; + shape[1] = shapey; + shape[2] = shapez; } } - -/* ---------------------------------------------------------------------- - pack hybrid velocity info for data file -------------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = angmom[i][0]; - buf[1] = angmom[i][1]; - buf[2] = angmom[i][2]; - return 3; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -int AtomVecEllipsoid::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2]); - return 3; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecEllipsoid::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("angmom")) bytes += memory->usage(angmom,nmax,3); - if (atom->memcheck("torque")) - bytes += memory->usage(torque,nmax*comm->nthreads,3); - if (atom->memcheck("ellipsoid")) bytes += memory->usage(ellipsoid,nmax); - - bytes += nmax_bonus*sizeof(Bonus); - - return bytes; -} diff --git a/src/atom_vec_ellipsoid.h b/src/atom_vec_ellipsoid.h index d71859624e..4f63112ff7 100644 --- a/src/atom_vec_ellipsoid.h +++ b/src/atom_vec_ellipsoid.h @@ -35,49 +35,26 @@ class AtomVecEllipsoid : public AtomVec { AtomVecEllipsoid(class LAMMPS *); ~AtomVecEllipsoid(); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); - - // manipulate Bonus data structure for extra atom info + void grow_pointers(); + void copy_bonus(int, int, int); void clear_bonus(); + int pack_comm_bonus(int, int *, double *); + void unpack_comm_bonus(int, int, double *); + int pack_border_bonus(int, int *, double *); + int unpack_border_bonus(int, int, double *); + int pack_exchange_bonus(int, double *); + int unpack_exchange_bonus(int, double *); + int size_restart_bonus(); + int pack_restart_bonus(int, double *); + int unpack_restart_bonus(int, double *); void data_atom_bonus(int, char **); + bigint memory_usage_bonus(); + + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); // unique to AtomVecEllipsoid @@ -86,18 +63,16 @@ class AtomVecEllipsoid : public AtomVec { int nlocal_bonus; private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *rmass; - double **angmom,**torque; int *ellipsoid; + double *rmass; + double **angmom; int nghost_bonus,nmax_bonus; + int ellipsoid_flag; + double rmass_one; void grow_bonus(); - void copy_bonus(int, int); + void copy_bonus_all(int, int); }; } diff --git a/src/atom_vec_hybrid.cpp b/src/atom_vec_hybrid.cpp index 4ca0dfbba5..7e599863c0 100644 --- a/src/atom_vec_hybrid.cpp +++ b/src/atom_vec_hybrid.cpp @@ -14,18 +14,39 @@ #include "atom_vec_hybrid.h" #include #include "atom.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" +#include "comm.h" #include "memory.h" #include "error.h" -#include "utils.h" +#include "tokenizer.h" using namespace LAMMPS_NS; +#define NFIELDSTRINGS 12 // # of field strings + /* ---------------------------------------------------------------------- */ -AtomVecHybrid::AtomVecHybrid(LAMMPS *lmp) : AtomVec(lmp) {} +AtomVecHybrid::AtomVecHybrid(LAMMPS *lmp) : AtomVec(lmp) +{ + nstyles = 0; + styles = NULL; + keywords = NULL; + fieldstrings = NULL; + + bonus_flag = 0; + nstyles_bonus = 0; + styles_bonus = NULL; + + // these strings will be concatenated from sub-style strings + // fields_data_atom & fields_data_vel start with fields common to all styles + + fields_grow = fields_copy = fields_comm = fields_comm_vel = (char *) ""; + fields_reverse = fields_border = fields_border_vel = (char *) ""; + fields_exchange = fields_restart = fields_create = (char *) ""; + fields_data_atom = (char *) "id type x"; + fields_data_vel = (char *) "id v"; + + fields_allocated = 0; +} /* ---------------------------------------------------------------------- */ @@ -35,6 +56,27 @@ AtomVecHybrid::~AtomVecHybrid() delete [] styles; for (int k = 0; k < nstyles; k++) delete [] keywords[k]; delete [] keywords; + + for (int k = 0; k < nstyles_bonus; k++) delete styles_bonus[k]; + delete [] styles_bonus; + + if (!fields_allocated) return; + + delete [] fields_grow; + delete [] fields_copy; + delete [] fields_comm; + delete [] fields_comm_vel; + delete [] fields_reverse; + delete [] fields_border; + delete [] fields_border_vel; + delete [] fields_exchange; + delete [] fields_restart; + delete [] fields_create; + delete [] fields_data_atom; + delete [] fields_data_vel; + + for (int k = 0; k < nstyles; k++) delete [] fieldstrings[k].fstr; + delete [] fieldstrings; } /* ---------------------------------------------------------------------- @@ -43,7 +85,7 @@ AtomVecHybrid::~AtomVecHybrid() void AtomVecHybrid::process_args(int narg, char **arg) { - // build list of all known atom styles + // create list of all known atom styles build_styles(); @@ -76,30 +118,17 @@ void AtomVecHybrid::process_args(int narg, char **arg) nstyles++; } - // free allstyles created by build_styles() - - for (int i = 0; i < nallstyles; i++) delete [] allstyles[i]; - delete [] allstyles; - // hybrid settings are MAX or MIN of sub-style settings - // hybrid sizes are minimal values plus extra values for each sub-style + // check for both mass_type = 0 and 1, so can warn molecular = 0; - comm_x_only = comm_f_only = 1; - - size_forward = 3; - size_reverse = 3; - size_border = 6; - size_data_atom = 5; - size_data_vel = 4; - xcol_data = 3; maxexchange = 0; for (int k = 0; k < nstyles; k++) { if ((styles[k]->molecular == 1 && molecular == 2) || (styles[k]->molecular == 2 && molecular == 1)) - error->all(FLERR,"Cannot mix molecular and molecule template " - "atom styles"); + error->all(FLERR, + "Cannot mix molecular and molecule template atom styles"); molecular = MAX(molecular,styles[k]->molecular); bonds_allow = MAX(bonds_allow,styles[k]->bonds_allow); @@ -109,23 +138,113 @@ void AtomVecHybrid::process_args(int narg, char **arg) mass_type = MAX(mass_type,styles[k]->mass_type); dipole_type = MAX(dipole_type,styles[k]->dipole_type); forceclearflag = MAX(forceclearflag,styles[k]->forceclearflag); + maxexchange += styles[k]->maxexchange; if (styles[k]->molecular == 2) onemols = styles[k]->onemols; - - comm_x_only = MIN(comm_x_only,styles[k]->comm_x_only); - comm_f_only = MIN(comm_f_only,styles[k]->comm_f_only); - size_forward += styles[k]->size_forward - 3; - size_reverse += styles[k]->size_reverse - 3; - size_border += styles[k]->size_border - 6; - size_data_atom += styles[k]->size_data_atom - 5; - size_data_vel += styles[k]->size_data_vel - 4; - - maxexchange += styles[k]->maxexchange; } - size_velocity = 3; - if (atom->omega_flag) size_velocity += 3; - if (atom->angmom_flag) size_velocity += 3; + // issue a warning if both per-type mass and per-atom rmass are defined + + int mass_pertype = 0; + int mass_peratom = 0; + + for (int k = 0; k < nstyles; k++) { + if (styles[k]->mass_type == 0) mass_peratom = 1; + if (styles[k]->mass_type == 1) mass_pertype = 1; + } + + if (mass_pertype && mass_peratom && comm->me == 0) + error->warning(FLERR, + "Atom_style hybrid defines both pertype and peratom masses " + "- both must be set, only peratom masses will be used"); + + // free allstyles created by build_styles() + + for (int i = 0; i < nallstyles; i++) delete [] allstyles[i]; + delete [] allstyles; + + // set field strings from all substyles + + fieldstrings = new FieldStrings[nstyles]; + + for (int k = 0; k < nstyles; k++) { + fieldstrings[k].fstr = new char*[NFIELDSTRINGS]; + fieldstrings[k].fstr[0] = styles[k]->fields_grow; + fieldstrings[k].fstr[1] = styles[k]->fields_copy; + fieldstrings[k].fstr[2] = styles[k]->fields_comm; + fieldstrings[k].fstr[3] = styles[k]->fields_comm_vel; + fieldstrings[k].fstr[4] = styles[k]->fields_reverse; + fieldstrings[k].fstr[5] = styles[k]->fields_border; + fieldstrings[k].fstr[6] = styles[k]->fields_border_vel; + fieldstrings[k].fstr[7] = styles[k]->fields_exchange; + fieldstrings[k].fstr[8] = styles[k]->fields_restart; + fieldstrings[k].fstr[9] = styles[k]->fields_create; + fieldstrings[k].fstr[10] = styles[k]->fields_data_atom; + fieldstrings[k].fstr[11] = styles[k]->fields_data_vel; + } + + // merge field strings from all sub-styles + // save concat_grow to check for duplicates of special-case fields + + char *concat_grow;; + char *null = NULL; + + fields_grow = merge_fields(0,fields_grow,1,concat_grow); + fields_copy = merge_fields(1,fields_copy,0,null); + fields_comm = merge_fields(2,fields_comm,0,null); + fields_comm_vel = merge_fields(3,fields_comm_vel,0,null); + fields_reverse = merge_fields(4,fields_reverse,0,null); + fields_border = merge_fields(5,fields_border,0,null); + fields_border_vel = merge_fields(6,fields_border_vel,0,null); + fields_exchange = merge_fields(7,fields_exchange,0,null); + fields_restart = merge_fields(8,fields_restart,0,null); + fields_create = merge_fields(9,fields_create,0,null); + fields_data_atom = merge_fields(10,fields_data_atom,0,null); + fields_data_vel = merge_fields(11,fields_data_vel,0,null); + + fields_allocated = 1; + + // check concat_grow for multiple special-case fields + // may cause issues with style-specific create_atom() and data_atom() methods + // issue warnings if appear in multiple sub-styles + + const char *dupfield[] = {"radius","rmass"}; + int ndupfield = 2; + char *ptr; + + for (int idup = 0; idup < ndupfield; idup++) { + char *dup = (char *) dupfield[idup]; + ptr = strstr(concat_grow,dup); + if (ptr && strstr(ptr+1,dup)) { + char str[128]; + sprintf(str,"Peratom %s is in multiple sub-styles - " + "must be used consistently",dup); + if (comm->me == 0) error->warning(FLERR,str); + } + } + + delete [] concat_grow; + + // set bonus_flag if any substyle has bonus data + // set nstyles_bonus & styles_bonus + + nstyles_bonus = 0; + for (int k = 0; k < nstyles; k++) + if (styles[k]->bonus_flag) nstyles_bonus++; + + if (nstyles_bonus) { + bonus_flag = 1; + styles_bonus = new AtomVec*[nstyles_bonus]; + nstyles_bonus = 0; + for (int k = 0; k < nstyles; k++) { + if (styles[k]->bonus_flag) + styles_bonus[nstyles_bonus++] = styles[k]; + } + } + + // parent AtomVec can now operate on merged fields + + setup_fields(); } /* ---------------------------------------------------------------------- */ @@ -136,74 +255,11 @@ void AtomVecHybrid::init() for (int k = 0; k < nstyles; k++) styles[k]->init(); } -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecHybrid::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - // sub-styles perform all reallocation - // turn off nextra_grow so hybrid can do that once below - - int tmp = atom->nextra_grow; - atom->nextra_grow = 0; - for (int k = 0; k < nstyles; k++) styles[k]->grow(nmax); - atom->nextra_grow = tmp; - - // insure hybrid local ptrs and sub-style ptrs are up to date - // for sub-styles, do this in case - // multiple sub-style reallocs of same array occurred - - grow_reset(); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecHybrid::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - omega = atom->omega; angmom = atom->angmom; - - for (int k = 0; k < nstyles; k++) styles[k]->grow_reset(); -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J for all sub-styles -------------------------------------------------------------------------- */ - -void AtomVecHybrid::copy(int i, int j, int delflag) -{ - int tmp = atom->nextra_grow; - atom->nextra_grow = 0; - for (int k = 0; k < nstyles; k++) styles[k]->copy(i,j,delflag); - atom->nextra_grow = tmp; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - /* ---------------------------------------------------------------------- */ -void AtomVecHybrid::clear_bonus() +void AtomVecHybrid::grow_pointers() { - for (int k = 0; k < nstyles; k++) styles[k]->clear_bonus(); + for (int k = 0; k < nstyles; k++) styles[k]->grow_pointers(); } /* ---------------------------------------------------------------------- */ @@ -214,797 +270,189 @@ void AtomVecHybrid::force_clear(int n, size_t nbytes) if (styles[k]->forceclearflag) styles[k]->force_clear(n,nbytes); } -/* ---------------------------------------------------------------------- */ - -int AtomVecHybrid::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,k,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - - // pack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_comm_hybrid(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecHybrid::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,k,m; - double dx,dy,dz,dvx,dvy,dvz; - int omega_flag = atom->omega_flag; - int angmom_flag = atom->angmom_flag; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - } - - // pack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_comm_hybrid(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecHybrid::unpack_comm(int n, int first, double *buf) -{ - int i,k,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } - - // unpack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_comm_hybrid(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecHybrid::unpack_comm_vel(int n, int first, double *buf) -{ - int i,k,m,last; - int omega_flag = atom->omega_flag; - int angmom_flag = atom->angmom_flag; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - if (omega_flag) { - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } - if (angmom_flag) { - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } - } - - // unpack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_comm_hybrid(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecHybrid::pack_reverse(int n, int first, double *buf) -{ - int i,k,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - - // pack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_reverse_hybrid(n,first,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecHybrid::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,k,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } - - // unpack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_reverse_hybrid(n,list,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecHybrid::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,k,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - } - } - - // pack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_border_hybrid(n,list,&buf[m]); - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecHybrid::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,k,m; - double dx,dy,dz,dvx,dvy,dvz; - int omega_flag = atom->omega_flag; - int angmom_flag = atom->angmom_flag; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - } - - // pack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_border_hybrid(n,list,&buf[m]); - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecHybrid::unpack_border(int n, int first, double *buf) -{ - int i,k,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - } - - // unpack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_border_hybrid(n,first,&buf[m]); - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecHybrid::unpack_border_vel(int n, int first, double *buf) -{ - int i,k,m,last; - int omega_flag = atom->omega_flag; - int angmom_flag = atom->angmom_flag; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - if (omega_flag) { - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } - if (angmom_flag) { - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } - } - - // unpack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_border_hybrid(n,first,&buf[m]); - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - pack each sub-style one after the other + modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecHybrid::pack_exchange(int i, double *buf) +void AtomVecHybrid::pack_restart_pre(int ilocal) { - int k,m; - - int tmp = atom->nextra_grow; - atom->nextra_grow = 0; - - m = 0; - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_exchange(i,&buf[m]); - - atom->nextra_grow = tmp; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for single atom received from another proc - unpack each sub-style one after the other - grow() occurs here so arrays for all sub-styles are grown -------------------------------------------------------------------------- */ - -int AtomVecHybrid::unpack_exchange(double *buf) -{ - int k,m; - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int tmp = atom->nextra_grow; - atom->nextra_grow = 0; - - m = 0; - for (k = 0; k < nstyles; k++) { - m += styles[k]->unpack_exchange(&buf[m]); - atom->nlocal--; - } - - atom->nextra_grow = tmp; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecHybrid::size_restart() -{ - int tmp = atom->nextra_restart; - atom->nextra_restart = 0; - - int n = 0; for (int k = 0; k < nstyles; k++) - n += styles[k]->size_restart(); + styles[k]->pack_restart_pre(ilocal); +} - atom->nextra_restart = tmp; +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_restart() +------------------------------------------------------------------------- */ - int nlocal = atom->nlocal; - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (int i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); +void AtomVecHybrid::pack_restart_post(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->pack_restart_post(ilocal); +} +/* ---------------------------------------------------------------------- + initialize other atom quantities after AtomVec::unpack_restart() +------------------------------------------------------------------------- */ + +void AtomVecHybrid::unpack_restart_init(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->unpack_restart_init(ilocal); +} + +/* ---------------------------------------------------------------------- + initialize non-zero atom quantities +------------------------------------------------------------------------- */ + +void AtomVecHybrid::create_atom_post(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->create_atom_post(ilocal); +} + +/* ---------------------------------------------------------------------- + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecHybrid::data_atom_post(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->data_atom_post(ilocal); +} + +/* ---------------------------------------------------------------------- + modify values for AtomVec::pack_data() to pack +------------------------------------------------------------------------- */ + +void AtomVecHybrid::pack_data_pre(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->pack_data_pre(ilocal); +} + +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_data() +------------------------------------------------------------------------- */ + +void AtomVecHybrid::pack_data_post(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->pack_data_post(ilocal); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybrid::copy_bonus(int i, int j, int delflag) +{ + for (int k = 0; k < nstyles_bonus; k++) + styles_bonus[k]->copy_bonus(i,j,delflag); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybrid::clear_bonus() +{ + for (int k = 0; k < nstyles_bonus; k++) + styles_bonus[k]->clear_bonus(); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::pack_comm_bonus(int n, int *list, double *buf) +{ + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->pack_comm_bonus(n,list,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybrid::unpack_comm_bonus(int n, int first, double *buf) +{ + for (int k = 0; k < nstyles_bonus; k++) + styles_bonus[k]->unpack_comm_bonus(n,first,buf); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::pack_border_bonus(int n, int *list, double *buf) +{ + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->pack_border_bonus(n,list,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::unpack_border_bonus(int n, int first, double *buf) +{ + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->unpack_border_bonus(n,first,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::pack_exchange_bonus(int i, double *buf) +{ + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->pack_exchange_bonus(i,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::unpack_exchange_bonus(int ilocal, double *buf) +{ + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->unpack_exchange_bonus(ilocal,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::size_restart_bonus() +{ + int n = 0; + for (int k = 0; k < nstyles_bonus; k++) + n += styles_bonus[k]->size_restart_bonus(); return n; } -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - pack each sub-style one after the other -------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- */ -int AtomVecHybrid::pack_restart(int i, double *buf) +int AtomVecHybrid::pack_restart_bonus(int i, double *buf) { - int tmp = atom->nextra_restart; - atom->nextra_restart = 0; - int m = 0; - for (int k = 0; k < nstyles; k++) - m += styles[k]->pack_restart(i,&buf[m]); - - atom->nextra_restart = tmp; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->pack_restart_bonus(i,buf); return m; } -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - unpack each sub-style one after the other - grow() occurs here so arrays for all sub-styles are grown -------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- */ -int AtomVecHybrid::unpack_restart(double *buf) +int AtomVecHybrid::unpack_restart_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int tmp = atom->nextra_store; - atom->nextra_store = 0; - int m = 0; - for (int k = 0; k < nstyles; k++) { - m += styles[k]->unpack_restart(&buf[m]); - atom->nlocal--; - } - atom->nextra_store = tmp; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->unpack_restart_bonus(ilocal,buf); return m; } -/* ---------------------------------------------------------------------- - create one atom of itype at coord - create each sub-style one after the other - grow() occurs here so arrays for all sub-styles are grown -------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- */ -void AtomVecHybrid::create_atom(int itype, double *coord) +bigint AtomVecHybrid::memory_usage_bonus() { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - for (int k = 0; k < nstyles; k++) { - styles[k]->create_atom(itype,coord); - atom->nlocal--; - } - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - grow() occurs here so arrays for all sub-styles are grown -------------------------------------------------------------------------- */ - -void AtomVecHybrid::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - mask[nlocal] = 1; - - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - if (atom->omega_flag) { - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - } - if (atom->angmom_flag) { - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - } - - // each sub-style parses sub-style specific values - - int m = 5; - for (int k = 0; k < nstyles; k++) - m += styles[k]->data_atom_hybrid(nlocal,&values[m]); - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file -------------------------------------------------------------------------- */ - -void AtomVecHybrid::data_vel(int m, char **values) -{ - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - - // each sub-style parses sub-style specific values - - int n = 3; - for (int k = 0; k < nstyles; k++) - n += styles[k]->data_vel_hybrid(m,&values[n]); -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecHybrid::pack_data(double **buf) -{ - int k,m; - - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = x[i][0]; - buf[i][3] = x[i][1]; - buf[i][4] = x[i][2]; - - m = 5; - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_data_hybrid(i,&buf[i][m]); - - buf[i][m] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][m+1] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][m+2] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecHybrid::write_data(FILE *fp, int n, double **buf) -{ - int k,m; - - for (int i = 0; i < n; i++) { - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4]); - - m = 5; - for (k = 0; k < nstyles; k++) - m += styles[k]->write_data_hybrid(fp,&buf[i][m]); - - fprintf(fp," %d %d %d\n", - (int) ubuf(buf[i][m]).i,(int) ubuf(buf[i][m+1]).i, - (int) ubuf(buf[i][m+2]).i); - } -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecHybrid::pack_vel(double **buf) -{ - int k,m; - - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - - m = 4; - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_vel_hybrid(i,&buf[i][m]); - } -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecHybrid::write_vel(FILE *fp, int n, double **buf) -{ - int k,m; - - for (int i = 0; i < n; i++) { - fprintf(fp,TAGINT_FORMAT " %g %g %g", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3]); - - m = 4; - for (k = 0; k < nstyles; k++) - m += styles[k]->write_vel_hybrid(fp,&buf[i][m]); - - fprintf(fp,"\n"); - } + bigint bytes = 0; + for (int k = 0; k < nstyles_bonus; k++) + bytes += styles_bonus[k]->memory_usage_bonus(); + return bytes; } /* ---------------------------------------------------------------------- @@ -1035,6 +483,73 @@ void AtomVecHybrid::pack_property_atom(int multiindex, double *buf, styles[k]->pack_property_atom(index,buf,nvalues,groupbit); } +// ---------------------------------------------------------------------- +// internal methods +// ---------------------------------------------------------------------- + +/* ---------------------------------------------------------------------- + merge fields and remove duplicate fields + concat = root + Inum fields string from all substyles + return dedup = concat with duplicate fields removed + if concat_flag set, also return concat (w/ duplicates) + so caller can check for problematic fields, call will free it +------------------------------------------------------------------------- */ + +char *AtomVecHybrid::merge_fields(int inum, char *root, + int concat_flag, char *&concat_str) +{ + // create concatenated string of length size from root + all substyles + + int size = strlen(root) + 1; + for (int k = 0; k < nstyles; k++) + size += strlen(fieldstrings[k].fstr[inum]) + 1; + + char *concat = new char[size]; + strcpy(concat,root); + + for (int k = 0; k < nstyles; k++) { + if (strlen(concat)) strcat(concat," "); + strcat(concat,fieldstrings[k].fstr[inum]); + } + + // identify unique words in concatenated string + + Tokenizer words(concat, " "); + int nwords = words.count(); + + int *unique = new int[nwords]; + + for (int i = 0; i < nwords; i++) { + unique[i] = 1; + for (int j = 0; j < i; j++) + if (words[i] == words[j]) unique[i] = 0; + } + + // construct a new deduped string + + char *dedup = new char[size]; + dedup[0] = '\0'; + + for (int i = 0; i < nwords; i++) { + if (!unique[i]) continue; + strcat(dedup,words[i].c_str()); + if (i < nwords-1) strcat(dedup," "); + } + + // clean up or return concat + + if (concat_flag) concat_str = concat; + else delete [] concat; + + // clean up + + delete [] unique; + + // return final concatenated, deduped string + + return dedup; +} + /* ---------------------------------------------------------------------- allstyles = list of all atom styles in this LAMMPS executable ------------------------------------------------------------------------- */ @@ -1073,14 +588,3 @@ int AtomVecHybrid::known_style(char *str) if (strcmp(str,allstyles[i]) == 0) return 1; return 0; } - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecHybrid::memory_usage() -{ - bigint bytes = 0; - for (int k = 0; k < nstyles; k++) bytes += styles[k]->memory_usage(); - return bytes; -} diff --git a/src/atom_vec_hybrid.h b/src/atom_vec_hybrid.h index 8129baccba..69b0aab7b7 100644 --- a/src/atom_vec_hybrid.h +++ b/src/atom_vec_hybrid.h @@ -34,48 +34,47 @@ class AtomVecHybrid : public AtomVec { ~AtomVecHybrid(); void process_args(int, char **); void init(); - void grow(int); - void grow_reset(); - void copy(int, int, int); - void clear_bonus(); + + void grow_pointers(); void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **) {return 0;} - void data_vel(int, char **); - void pack_data(double **); - void write_data(FILE *, int, double **); - void pack_vel(double **); - void write_vel(FILE *, int, double **); + void copy_bonus(int, int, int); + void clear_bonus(); + int pack_comm_bonus(int, int *, double *); + void unpack_comm_bonus(int, int, double *); + int pack_border_bonus(int, int *, double *); + int unpack_border_bonus(int, int, double *); + int pack_exchange_bonus(int, double *); + int unpack_exchange_bonus(int, double *); + int size_restart_bonus(); + int pack_restart_bonus(int, double *); + int unpack_restart_bonus(int, double *); + bigint memory_usage_bonus(); + + void pack_restart_pre(int); + void pack_restart_post(int); + void unpack_restart_init(int); + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); + int property_atom(char *); void pack_property_atom(int, double *, int, int); - bigint memory_usage(); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double **omega,**angmom; - int nallstyles; char **allstyles; + int fields_allocated; + struct FieldStrings { + char **fstr; + }; + FieldStrings *fieldstrings; + + int nstyles_bonus; + class AtomVec **styles_bonus; + + char *merge_fields(int, char *, int, char *&); void build_styles(); int known_style(char *); }; diff --git a/src/atom_vec_line.cpp b/src/atom_vec_line.cpp index 695ced13fd..88d02161d5 100644 --- a/src/atom_vec_line.cpp +++ b/src/atom_vec_line.cpp @@ -15,7 +15,6 @@ #include #include #include "atom.h" -#include "comm.h" #include "domain.h" #include "modify.h" #include "fix.h" @@ -34,16 +33,12 @@ using namespace MathConst; AtomVecLine::AtomVecLine(LAMMPS *lmp) : AtomVec(lmp) { molecular = 0; + bonus_flag = 1; - comm_x_only = comm_f_only = 0; - size_forward = 4; - size_reverse = 6; - size_border = 12; - size_velocity = 6; - size_data_atom = 8; - size_data_vel = 7; + size_forward_bonus = 1; + size_border_bonus = 3; + size_restart_bonus_one = 3; size_data_bonus = 5; - xcol_data = 6; atom->line_flag = 1; atom->molecule_flag = atom->rmass_flag = 1; @@ -52,6 +47,26 @@ AtomVecLine::AtomVecLine(LAMMPS *lmp) : AtomVec(lmp) nlocal_bonus = nghost_bonus = nmax_bonus = 0; bonus = NULL; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "molecule radius rmass omega torque line"; + fields_copy = (char *) "molecule radius rmass omega"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) "omega"; + fields_reverse = (char *) "torque"; + fields_border = (char *) "molecule radius rmass"; + fields_border_vel = (char *) "molecule radius rmass omega"; + fields_exchange = (char *) "molecule radius rmass omega"; + fields_restart = (char *) "molecule radius rmass omega"; + fields_create = (char *) "molecule radius rmass omega line"; + fields_data_atom = (char *) "id molecule type line rmass x"; + fields_data_vel = (char *) "id v omega"; + + setup_fields(); } /* ---------------------------------------------------------------------- */ @@ -72,51 +87,16 @@ void AtomVecLine::init() } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecLine::grow(int n) +void AtomVecLine::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - radius = memory->grow(atom->radius,nmax,"atom:radius"); - omega = memory->grow(atom->omega,nmax,3,"atom:omega"); - torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); - line = memory->grow(atom->line,nmax,"atom:line"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecLine::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; rmass = atom->rmass; - radius = atom->radius; omega = atom->omega; torque = atom->torque; line = atom->line; + radius = atom->radius; + rmass = atom->rmass; + omega = atom->omega; } /* ---------------------------------------------------------------------- @@ -137,30 +117,12 @@ void AtomVecLine::grow_bonus() copy atom I info to atom J ------------------------------------------------------------------------- */ -void AtomVecLine::copy(int i, int j, int delflag) +void AtomVecLine::copy_bonus(int i, int j, int delflag) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - molecule[j] = molecule[i]; - rmass[j] = rmass[i]; - radius[j] = radius[i]; - omega[j][0] = omega[i][0]; - omega[j][1] = omega[i][1]; - omega[j][2] = omega[i][2]; - // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && line[j] >= 0) { - copy_bonus(nlocal_bonus-1,line[j]); + copy_bonus_all(nlocal_bonus-1,line[j]); nlocal_bonus--; } @@ -169,10 +131,6 @@ void AtomVecLine::copy(int i, int j, int delflag) if (line[i] >= 0 && i != j) bonus[line[i]].ilocal = j; line[j] = line[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); } /* ---------------------------------------------------------------------- @@ -180,7 +138,7 @@ void AtomVecLine::copy(int i, int j, int delflag) also reset line that points to I to now point to J ------------------------------------------------------------------------- */ -void AtomVecLine::copy_bonus(int i, int j) +void AtomVecLine::copy_bonus_all(int i, int j) { line[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); @@ -200,152 +158,9 @@ void AtomVecLine::clear_bonus() modify->fix[atom->extra_grow[iextra]]->clear_bonus(); } -/* ---------------------------------------------------------------------- - set length value in bonus data for particle I - oriented along x axis - this may create or delete entry in bonus data -------------------------------------------------------------------------- */ - -void AtomVecLine::set_length(int i, double value) -{ - if (line[i] < 0) { - if (value == 0.0) return; - if (nlocal_bonus == nmax_bonus) grow_bonus(); - bonus[nlocal_bonus].length = value; - bonus[nlocal_bonus].theta = 0.0; - bonus[nlocal_bonus].ilocal = i; - line[i] = nlocal_bonus++; - } else if (value == 0.0) { - copy_bonus(nlocal_bonus-1,line[i]); - nlocal_bonus--; - line[i] = -1; - } else bonus[line[i]].length = value; - - // also set radius = half of length - // unless value = 0.0, then set diameter = 1.0 - - radius[i] = 0.5 * value; - if (value == 0.0) radius[i] = 0.5; -} - /* ---------------------------------------------------------------------- */ -int AtomVecLine::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_comm_hybrid(int n, int *list, double *buf) +int AtomVecLine::pack_comm_bonus(int n, int *list, double *buf) { int i,j,m; @@ -354,319 +169,32 @@ int AtomVecLine::pack_comm_hybrid(int n, int *list, double *buf) j = list[i]; if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecLine::unpack_comm(int n, int first, double *buf) +void AtomVecLine::unpack_comm_bonus(int n, int first, double *buf) { int i,m,last; m = 0; last = first + n; for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; if (line[i] >= 0) bonus[line[i]].theta = buf[m++]; } } /* ---------------------------------------------------------------------- */ -void AtomVecLine::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (line[i] >= 0) bonus[line[i]].theta = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - if (line[i] >= 0) bonus[line[i]].theta = buf[m++]; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecLine::unpack_reverse(int n, int *list, double *buf) +int AtomVecLine::pack_border_bonus(int n, int *list, double *buf) { int i,j,m; m = 0; for (i = 0; i < n; i++) { j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (line[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - buf[m++] = bonus[line[j]].length; - buf[m++] = bonus[line[j]].theta; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (line[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - buf[m++] = bonus[line[j]].length; - buf[m++] = bonus[line[j]].theta; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (line[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - buf[m++] = bonus[line[j]].length; - buf[m++] = bonus[line[j]].theta; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (line[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - buf[m++] = bonus[line[j]].length; - buf[m++] = bonus[line[j]].theta; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (line[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - buf[m++] = bonus[line[j]].length; - buf[m++] = bonus[line[j]].theta; - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; if (line[j] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -674,28 +202,19 @@ int AtomVecLine::pack_border_hybrid(int n, int *list, double *buf) buf[m++] = bonus[line[j]].theta; } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecLine::unpack_border(int n, int first, double *buf) +int AtomVecLine::unpack_border_bonus(int n, int first, double *buf) { int i,j,m,last; m = 0; last = first + n; for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; line[i] = (int) ubuf(buf[m++]).i; if (line[i] == 0) line[i] = -1; else { @@ -709,80 +228,6 @@ void AtomVecLine::unpack_border(int n, int first, double *buf) } } - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecLine::unpack_border_vel(int n, int first, double *buf) -{ - int i,j,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - line[i] = (int) ubuf(buf[m++]).i; - if (line[i] == 0) line[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - bonus[j].length = buf[m++]; - bonus[j].theta = buf[m++]; - bonus[j].ilocal = i; - line[i] = j; - nghost_bonus++; - } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,j,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - line[i] = (int) ubuf(buf[m++]).i; - if (line[i] == 0) line[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - bonus[j].length = buf[m++]; - bonus[j].theta = buf[m++]; - bonus[j].ilocal = i; - line[i] = j; - nghost_bonus++; - } - } return m; } @@ -791,26 +236,9 @@ int AtomVecLine::unpack_border_hybrid(int n, int first, double *buf) xyz must be 1st 3 values, so comm::exchange() can test on them ------------------------------------------------------------------------- */ -int AtomVecLine::pack_exchange(int i, double *buf) +int AtomVecLine::pack_exchange_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = rmass[i]; - buf[m++] = radius[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; + int m = 0; if (line[i] < 0) buf[m++] = ubuf(0).d; else { @@ -820,56 +248,25 @@ int AtomVecLine::pack_exchange(int i, double *buf) buf[m++] = bonus[j].theta; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- */ -int AtomVecLine::unpack_exchange(double *buf) +int AtomVecLine::unpack_exchange_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); + int m = 0; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - rmass[nlocal] = buf[m++]; - radius[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - - line[nlocal] = (int) ubuf(buf[m++]).i; - if (line[nlocal] == 0) line[nlocal] = -1; + line[ilocal] = (int) ubuf(buf[m++]).i; + if (line[ilocal] == 0) line[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); bonus[nlocal_bonus].length = buf[m++]; bonus[nlocal_bonus].theta = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - line[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + line[ilocal] = nlocal_bonus++; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; return m; } @@ -878,20 +275,16 @@ int AtomVecLine::unpack_exchange(double *buf) include extra data stored by fixes ------------------------------------------------------------------------- */ -int AtomVecLine::size_restart() +int AtomVecLine::size_restart_bonus() { int i; int n = 0; int nlocal = atom->nlocal; - for (i = 0; i < nlocal; i++) - if (line[i] >= 0) n += 20; - else n += 18; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + for (i = 0; i < nlocal; i++) { + if (line[i] >= 0) n += size_restart_bonus_one; + else n++; + } return n; } @@ -902,26 +295,9 @@ int AtomVecLine::size_restart() molecular types may be negative, but write as positive ------------------------------------------------------------------------- */ -int AtomVecLine::pack_restart(int i, double *buf) +int AtomVecLine::pack_restart_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = rmass[i]; - buf[m++] = radius[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; + int m = 0; if (line[i] < 0) buf[m++] = ubuf(0).d; else { @@ -931,174 +307,30 @@ int AtomVecLine::pack_restart(int i, double *buf) buf[m++] = bonus[j].theta; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities + unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecLine::unpack_restart(double *buf) +int AtomVecLine::unpack_restart_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } + int m = 0; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - rmass[nlocal] = buf[m++]; - radius[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - - line[nlocal] = (int) ubuf(buf[m++]).i; - if (line[nlocal] == 0) line[nlocal] = -1; + line[ilocal] = (int) ubuf(buf[m++]).i; + if (line[ilocal] == 0) line[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); bonus[nlocal_bonus].length = buf[m++]; bonus[nlocal_bonus].theta = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - line[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + line[ilocal] = nlocal_bonus++; } - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; return m; } -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecLine::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - molecule[nlocal] = 0; - radius[nlocal] = 0.5; - rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal]; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - line[nlocal] = -1; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecLine::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - line[nlocal] = utils::inumeric(FLERR,values[3],true,lmp); - if (line[nlocal] == 0) line[nlocal] = -1; - else if (line[nlocal] == 1) line[nlocal] = 0; - else error->one(FLERR,"Invalid lineflag in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - if (line[nlocal] < 0) { - radius[nlocal] = 0.5; - rmass[nlocal] *= 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal]; - } else radius[nlocal] = 0.0; - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecLine::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - line[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (line[nlocal] == 0) line[nlocal] = -1; - else if (line[nlocal] == 1) line[nlocal] = 0; - else error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - if (line[nlocal] < 0) { - radius[nlocal] = 0.5; - rmass[nlocal] *= 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal]; - } else radius[nlocal] = 0.0; - - return 3; -} - /* ---------------------------------------------------------------------- unpack one line from Lines section of data file ------------------------------------------------------------------------- */ @@ -1144,180 +376,112 @@ void AtomVecLine::data_atom_bonus(int m, char **values) } /* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file + return # of bytes of allocated bonus memory ------------------------------------------------------------------------- */ -void AtomVecLine::data_vel(int m, char **values) -{ - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - omega[m][0] = utils::numeric(FLERR,values[3],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[4],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[5],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file -------------------------------------------------------------------------- */ - -int AtomVecLine::data_vel_hybrid(int m, char **values) -{ - omega[m][0] = utils::numeric(FLERR,values[0],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[1],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[2],true,lmp); - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecLine::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - if (line[i] < 0) buf[i][3] = ubuf(0).d; - else buf[i][3] = ubuf(1).d; - if (line[i] < 0) - buf[i][4] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - else buf[i][4] = rmass[i]/bonus[line[i]].length; - buf[i][5] = x[i][0]; - buf[i][6] = x[i][1]; - buf[i][7] = x[i][2]; - buf[i][8] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecLine::pack_data_hybrid(int i, double *buf) -{ - buf[0] = ubuf(molecule[i]).d; - if (line[i] < 0) buf[1] = ubuf(0).d; - else buf[1] = ubuf(1).d; - if (line[i] < 0) - buf[2] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - else buf[2] = rmass[i]/bonus[line[i]].length; - return 3; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecLine::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i,(int) ubuf(buf[i][3]).i, - buf[i][4],buf[i][5],buf[i][6],buf[i][7], - (int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i, - (int) ubuf(buf[i][10]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecLine::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," " TAGINT_FORMAT " %d %-1.16e", - (tagint) ubuf(buf[0]).i,(int) ubuf(buf[1]).i,buf[2]); - return 3; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecLine::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = omega[i][0]; - buf[i][5] = omega[i][1]; - buf[i][6] = omega[i][2]; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid velocity info for data file -------------------------------------------------------------------------- */ - -int AtomVecLine::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = omega[i][0]; - buf[1] = omega[i][1]; - buf[2] = omega[i][2]; - return 3; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecLine::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -int AtomVecLine::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2]); - return 3; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecLine::memory_usage() +bigint AtomVecLine::memory_usage_bonus() { bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("radius")) bytes += memory->usage(radius,nmax); - if (atom->memcheck("omega")) bytes += memory->usage(omega,nmax,3); - if (atom->memcheck("torque")) - bytes += memory->usage(torque,nmax*comm->nthreads,3); - if (atom->memcheck("line")) bytes += memory->usage(line,nmax); - bytes += nmax_bonus*sizeof(Bonus); - return bytes; } +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults +------------------------------------------------------------------------- */ + +void AtomVecLine::create_atom_post(int ilocal) +{ + double radius_one = 0.5; + radius[ilocal] = radius_one; + rmass[ilocal] = 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; + line[ilocal] = -1; +} + +/* ---------------------------------------------------------------------- + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecLine::data_atom_post(int ilocal) +{ + line_flag = line[ilocal]; + if (line_flag == 0) line_flag = -1; + else if (line_flag == 1) line_flag = 0; + else error->one(FLERR,"Invalid line flag in Atoms section of data file"); + line[ilocal] = line_flag; + + if (rmass[ilocal] <= 0.0) + error->one(FLERR,"Invalid density in Atoms section of data file"); + + if (line_flag < 0) { + double radius_one = 0.5; + radius[ilocal] = radius_one; + rmass[ilocal] *= 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; + } else radius[ilocal] = 0.0; + + omega[ilocal][0] = 0.0; + omega[ilocal][1] = 0.0; + omega[ilocal][2] = 0.0; +} + +/* ---------------------------------------------------------------------- + modify values for AtomVec::pack_data() to pack +------------------------------------------------------------------------- */ + +void AtomVecLine::pack_data_pre(int ilocal) +{ + line_flag = line[ilocal]; + rmass_one = rmass[ilocal]; + + if (line_flag < 0) line[ilocal] = 0; + else line[ilocal] = 1; + + if (line_flag < 0) { + double radius_one = radius[ilocal]; + rmass[ilocal] /= 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; + } else rmass[ilocal] /= bonus[line_flag].length; +} + +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_data() +------------------------------------------------------------------------- */ + +void AtomVecLine::pack_data_post(int ilocal) +{ + line[ilocal] = line_flag; + rmass[ilocal] = rmass_one; +} + +/* ---------------------------------------------------------------------- + set length value in bonus data for particle I + oriented along x axis + this may create or delete entry in bonus data +------------------------------------------------------------------------- */ + +void AtomVecLine::set_length(int i, double value) +{ + if (line[i] < 0) { + if (value == 0.0) return; + if (nlocal_bonus == nmax_bonus) grow_bonus(); + bonus[nlocal_bonus].length = value; + bonus[nlocal_bonus].theta = 0.0; + bonus[nlocal_bonus].ilocal = i; + line[i] = nlocal_bonus++; + } else if (value == 0.0) { + copy_bonus_all(nlocal_bonus-1,line[i]); + nlocal_bonus--; + line[i] = -1; + } else bonus[line[i]].length = value; + + // also set radius = half of length + // unless value = 0.0, then set diameter = 1.0 + + radius[i] = 0.5 * value; + if (value == 0.0) radius[i] = 0.5; +} + /* ---------------------------------------------------------------------- check consistency of internal Bonus data structure n = # of atoms in regular structure to check against diff --git a/src/atom_vec_line.h b/src/atom_vec_line.h index 6c8701cfc2..7bca58c64b 100644 --- a/src/atom_vec_line.h +++ b/src/atom_vec_line.h @@ -35,49 +35,26 @@ class AtomVecLine : public AtomVec { AtomVecLine(class LAMMPS *); ~AtomVecLine(); void init(); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); - - // manipulate Bonus data structure for extra atom info + void grow_pointers(); + void copy_bonus(int, int, int); void clear_bonus(); + int pack_comm_bonus(int, int *, double *); + void unpack_comm_bonus(int, int, double *); + int pack_border_bonus(int, int *, double *); + int unpack_border_bonus(int, int, double *); + int pack_exchange_bonus(int, double *); + int unpack_exchange_bonus(int, double *); + int size_restart_bonus(); + int pack_restart_bonus(int, double *); + int unpack_restart_bonus(int, double *); void data_atom_bonus(int, char **); + bigint memory_usage_bonus(); + + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); // unique to AtomVecLine @@ -86,19 +63,16 @@ class AtomVecLine : public AtomVec { int nlocal_bonus; private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - tagint *molecule; - double *rmass,*radius; - double **omega,**torque; int *line; + double *radius,*rmass; + double **omega; int nghost_bonus,nmax_bonus; + int line_flag; + double rmass_one; void grow_bonus(); - void copy_bonus(int, int); + void copy_bonus_all(int, int); // void consistency_check(int, char *); }; diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index 75136503ea..03f417b1d0 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -5,7 +5,7 @@ Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under + certain rights in this software. This software is distributead under the GNU General Public License. See the README file in the top-level LAMMPS directory. @@ -14,13 +14,10 @@ #include "atom_vec_sphere.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" #include "modify.h" #include "fix.h" #include "fix_adapt.h" #include "math_const.h" -#include "memory.h" #include "error.h" #include "utils.h" @@ -31,21 +28,59 @@ using namespace MathConst; AtomVecSphere::AtomVecSphere(LAMMPS *lmp) : AtomVec(lmp) { + mass_type = 0; molecular = 0; - comm_x_only = 1; - comm_f_only = 0; - size_forward = 3; - size_reverse = 6; - size_border = 8; - size_velocity = 6; - size_data_atom = 7; - size_data_vel = 7; - xcol_data = 5; - atom->sphere_flag = 1; atom->radius_flag = atom->rmass_flag = atom->omega_flag = atom->torque_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "radius rmass omega torque"; + fields_copy = (char *) "radius rmass omega"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) "omega"; + fields_reverse = (char *) "torque"; + fields_border = (char *) "radius rmass"; + fields_border_vel = (char *) "radius rmass omega"; + fields_exchange = (char *) "radius rmass omega"; + fields_restart = (char *) "radius rmass omega"; + fields_create = (char *) "radius rmass omega"; + fields_data_atom = (char *) "id type radius rmass x"; + fields_data_vel = (char *) "id v omega"; +} + +/* ---------------------------------------------------------------------- + process sub-style args + optional arg = 0/1 for static/dynamic particle radii +------------------------------------------------------------------------- */ + +void AtomVecSphere::process_args(int narg, char **arg) +{ + if (narg != 0 && narg != 1) + error->all(FLERR,"Illegal atom_style sphere command"); + + radvary = 0; + if (narg == 1) { + radvary = utils::numeric(FLERR,arg[0],true,lmp); + if (radvary < 0 || radvary > 1) + error->all(FLERR,"Illegal atom_style sphere command"); + } + + // dynamic particle radius and mass must be communicated every step + + if (radvary) { + fields_comm = (char *) "radius rmass"; + fields_comm_vel = (char *) "radius rmass omega"; + } + + // delay setting up of fields until now + + setup_fields(); } /* ---------------------------------------------------------------------- */ @@ -54,1133 +89,80 @@ void AtomVecSphere::init() { AtomVec::init(); - // set radvary if particle diameters are time-varying due to fix adapt - - radvary = 0; - comm_x_only = 1; - size_forward = 3; + // check if optional radvary setting should have been set to 1 for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"adapt") == 0) { FixAdapt *fix = (FixAdapt *) modify->fix[i]; - if (fix->diamflag) { - radvary = 1; - comm_x_only = 0; - size_forward = 5; - } + if (fix->diamflag && radvary == 0) + error->all(FLERR,"Fix adapt changes particle radii " + "but atom_style sphere is not dynamic"); } } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecSphere::grow(int n) +void AtomVecSphere::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - radius = memory->grow(atom->radius,nmax,"atom:radius"); - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - omega = memory->grow(atom->omega,nmax,3,"atom:omega"); - torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + radius = atom->radius; + rmass = atom->rmass; + omega = atom->omega; } /* ---------------------------------------------------------------------- - reset local array ptrs + initialize non-zero atom quantities ------------------------------------------------------------------------- */ -void AtomVecSphere::grow_reset() +void AtomVecSphere::create_atom_post(int ilocal) { - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - radius = atom->radius; rmass = atom->rmass; - omega = atom->omega; torque = atom->torque; + radius[ilocal] = 0.5; + rmass[ilocal] = 4.0*MY_PI/3.0 * 0.5*0.5*0.5; } /* ---------------------------------------------------------------------- - copy atom I info to atom J + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecSphere::copy(int i, int j, int delflag) +void AtomVecSphere::data_atom_post(int ilocal) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; + radius_one = 0.5 * atom->radius[ilocal]; + radius[ilocal] = radius_one; + if (radius_one > 0.0) + rmass[ilocal] *= 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; - radius[j] = radius[i]; - rmass[j] = rmass[i]; - omega[j][0] = omega[i][0]; - omega[j][1] = omega[i][1]; - omega[j][2] = omega[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - if (radvary == 0) { - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - - } else { - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - if (radvary == 0) { - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } - } - - } else { - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - if (radvary == 0) return 0; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSphere::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - if (radvary == 0) { - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } - } else { - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - } - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSphere::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - if (radvary == 0) { - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } - } else { - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - if (radvary == 0) return 0; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSphere::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSphere::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - - -/* ---------------------------------------------------------------------- */ - -void AtomVecSphere::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecSphere::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecSphere::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 16 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecSphere::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecSphere::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecSphere::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - radius[nlocal] = 0.5; - rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal]; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecSphere::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - radius[nlocal] = 0.5 * utils::numeric(FLERR,values[2],true,lmp); - if (radius[nlocal] < 0.0) - error->one(FLERR,"Invalid radius in Atoms section of data file"); - - double density = utils::numeric(FLERR,values[3],true,lmp); - if (density <= 0.0) + if (rmass[ilocal] <= 0.0) error->one(FLERR,"Invalid density in Atoms section of data file"); - if (radius[nlocal] == 0.0) rmass[nlocal] = density; - else - rmass[nlocal] = 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal] * density; - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - - atom->nlocal++; + omega[ilocal][0] = 0.0; + omega[ilocal][1] = 0.0; + omega[ilocal][2] = 0.0; } /* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style + modify values for AtomVec::pack_data() to pack ------------------------------------------------------------------------- */ -int AtomVecSphere::data_atom_hybrid(int nlocal, char **values) +void AtomVecSphere::pack_data_pre(int ilocal) { - radius[nlocal] = 0.5 * utils::numeric(FLERR,values[0],true,lmp); - if (radius[nlocal] < 0.0) - error->one(FLERR,"Invalid radius in Atoms section of data file"); + radius_one = radius[ilocal]; + rmass_one = rmass[ilocal]; - double density = utils::numeric(FLERR,values[1],true,lmp); - if (density <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - if (radius[nlocal] == 0.0) rmass[nlocal] = density; - else - rmass[nlocal] = 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal] * density; - - return 2; + radius[ilocal] *= 2.0; + if (radius_one!= 0.0) + rmass[ilocal] = + rmass_one / (4.0*MY_PI/3.0 * radius_one*radius_one*radius_one); } /* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file + unmodify values packed by AtomVec::pack_data() ------------------------------------------------------------------------- */ -void AtomVecSphere::data_vel(int m, char **values) +void AtomVecSphere::pack_data_post(int ilocal) { - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - omega[m][0] = utils::numeric(FLERR,values[3],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[4],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[5],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file -------------------------------------------------------------------------- */ - -int AtomVecSphere::data_vel_hybrid(int m, char **values) -{ - omega[m][0] = utils::numeric(FLERR,values[0],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[1],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[2],true,lmp); - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecSphere::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = 2.0*radius[i]; - if (radius[i] == 0.0) buf[i][3] = rmass[i]; - else - buf[i][3] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecSphere::pack_data_hybrid(int i, double *buf) -{ - buf[0] = 2.0*radius[i]; - if (radius[i] == 0.0) buf[1] = rmass[i]; - else buf[1] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - return 2; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecSphere::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i, - (int) ubuf(buf[i][9]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecSphere::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e",buf[0],buf[1]); - return 2; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecSphere::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = omega[i][0]; - buf[i][5] = omega[i][1]; - buf[i][6] = omega[i][2]; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid velocity info for data file -------------------------------------------------------------------------- */ - -int AtomVecSphere::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = omega[i][0]; - buf[1] = omega[i][1]; - buf[2] = omega[i][2]; - return 3; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecSphere::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -int AtomVecSphere::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2]); - return 3; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecSphere::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("radius")) bytes += memory->usage(radius,nmax); - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("omega")) bytes += memory->usage(omega,nmax,3); - if (atom->memcheck("torque")) - bytes += memory->usage(torque,nmax*comm->nthreads,3); - - return bytes; + radius[ilocal] = radius_one; + rmass[ilocal] = rmass_one; } diff --git a/src/atom_vec_sphere.h b/src/atom_vec_sphere.h index 28b1198d59..bfd4e4241d 100644 --- a/src/atom_vec_sphere.h +++ b/src/atom_vec_sphere.h @@ -27,55 +27,21 @@ namespace LAMMPS_NS { class AtomVecSphere : public AtomVec { public: AtomVecSphere(class LAMMPS *); - ~AtomVecSphere() {} + void process_args(int, char **); void init(); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); + + void grow_pointers(); + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; double *radius,*rmass; - double **omega,**torque; + double **omega; + int radvary; + double radius_one,rmass_one; }; } @@ -85,15 +51,6 @@ class AtomVecSphere : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - E: Invalid radius in Atoms section of data file Radius must be >= 0.0. diff --git a/src/atom_vec_tri.cpp b/src/atom_vec_tri.cpp index 3b7bfe5377..d5ca2342e8 100644 --- a/src/atom_vec_tri.cpp +++ b/src/atom_vec_tri.cpp @@ -16,7 +16,6 @@ #include #include "math_extra.h" #include "atom.h" -#include "comm.h" #include "domain.h" #include "modify.h" #include "fix.h" @@ -35,16 +34,12 @@ using namespace MathConst; AtomVecTri::AtomVecTri(LAMMPS *lmp) : AtomVec(lmp) { molecular = 0; + bonus_flag = 1; - comm_x_only = comm_f_only = 0; - size_forward = 7; - size_reverse = 6; - size_border = 26; - size_velocity = 9; - size_data_atom = 8; - size_data_vel = 7; + size_forward_bonus = 4; + size_border_bonus = 17; + size_restart_bonus_one = 17; size_data_bonus = 10; - xcol_data = 6; atom->tri_flag = 1; atom->molecule_flag = atom->rmass_flag = 1; @@ -55,8 +50,25 @@ AtomVecTri::AtomVecTri(LAMMPS *lmp) : AtomVec(lmp) nlocal_bonus = nghost_bonus = nmax_bonus = 0; bonus = NULL; - if (domain->dimension != 3) - error->all(FLERR,"Atom_style tri can only be used in 3d simulations"); + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "molecule radius rmass omega angmom torque tri"; + fields_copy = (char *) "molecule radius rmass omega angmom"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) "omega angmom"; + fields_reverse = (char *) "torque"; + fields_border = (char *) "molecule radius rmass"; + fields_border_vel = (char *) "molecule radius rmass omega"; + fields_exchange = (char *) "molecule radius rmass omega angmom"; + fields_restart = (char *) "molecule radius rmass omega angmom"; + fields_create = (char *) "molecule radius rmass omega angmom tri"; + fields_data_atom = (char *) "id molecule type tri rmass x"; + fields_data_vel = (char *) "id v omega angmom"; + + setup_fields(); } /* ---------------------------------------------------------------------- */ @@ -77,53 +89,17 @@ void AtomVecTri::init() } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecTri::grow(int n) +void AtomVecTri::grow_pointers() { - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - radius = memory->grow(atom->radius,nmax,"atom:radius"); - omega = memory->grow(atom->omega,nmax,3,"atom:omega"); - angmom = memory->grow(atom->angmom,nmax,3,"atom:angmom"); - torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); - tri = memory->grow(atom->tri,nmax,"atom:tri"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecTri::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; rmass = atom->rmass; - radius = atom->radius; omega = atom->omega; - angmom = atom->angmom; torque = atom->torque; tri = atom->tri; + radius = atom->radius; + rmass = atom->rmass; + omega = atom->omega; + angmom = atom->angmom; } /* ---------------------------------------------------------------------- @@ -145,33 +121,12 @@ void AtomVecTri::grow_bonus() if delflag and atom J has bonus data, then delete it ------------------------------------------------------------------------- */ -void AtomVecTri::copy(int i, int j, int delflag) +void AtomVecTri::copy_bonus(int i, int j, int delflag) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - molecule[j] = molecule[i]; - rmass[j] = rmass[i]; - radius[j] = radius[i]; - omega[j][0] = omega[i][0]; - omega[j][1] = omega[i][1]; - omega[j][2] = omega[i][2]; - angmom[j][0] = angmom[i][0]; - angmom[j][1] = angmom[i][1]; - angmom[j][2] = angmom[i][2]; - // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && tri[j] >= 0) { - copy_bonus(nlocal_bonus-1,tri[j]); + copy_bonus_all(nlocal_bonus-1,tri[j]); nlocal_bonus--; } @@ -180,10 +135,6 @@ void AtomVecTri::copy(int i, int j, int delflag) if (tri[i] >= 0 && i != j) bonus[tri[i]].ilocal = j; tri[j] = tri[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); } /* ---------------------------------------------------------------------- @@ -191,7 +142,7 @@ void AtomVecTri::copy(int i, int j, int delflag) also reset tri that points to I to now point to J ------------------------------------------------------------------------- */ -void AtomVecTri::copy_bonus(int i, int j) +void AtomVecTri::copy_bonus_all(int i, int j) { tri[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); @@ -211,229 +162,9 @@ void AtomVecTri::clear_bonus() modify->fix[atom->extra_grow[iextra]]->clear_bonus(); } -/* ---------------------------------------------------------------------- - set equilateral tri of size in bonus data for particle I - oriented symmetrically in xy plane - this may create or delete entry in bonus data -------------------------------------------------------------------------- */ - -void AtomVecTri::set_equilateral(int i, double size) -{ - // also set radius = distance from center to corner-pt = len(c1) - // unless size = 0.0, then set diameter = 1.0 - - if (tri[i] < 0) { - if (size == 0.0) return; - if (nlocal_bonus == nmax_bonus) grow_bonus(); - double *quat = bonus[nlocal_bonus].quat; - double *c1 = bonus[nlocal_bonus].c1; - double *c2 = bonus[nlocal_bonus].c2; - double *c3 = bonus[nlocal_bonus].c3; - double *inertia = bonus[nlocal_bonus].inertia; - quat[0] = 1.0; - quat[1] = 0.0; - quat[2] = 0.0; - quat[3] = 0.0; - c1[0] = -size/2.0; - c1[1] = -sqrt(3.0)/2.0 * size / 3.0; - c1[2] = 0.0; - c2[0] = size/2.0; - c2[1] = -sqrt(3.0)/2.0 * size / 3.0; - c2[2] = 0.0; - c3[0] = 0.0; - c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0; - c3[2] = 0.0; - inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; - inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; - inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; - radius[i] = MathExtra::len3(c1); - bonus[nlocal_bonus].ilocal = i; - tri[i] = nlocal_bonus++; - } else if (size == 0.0) { - radius[i] = 0.5; - copy_bonus(nlocal_bonus-1,tri[i]); - nlocal_bonus--; - tri[i] = -1; - } else { - double *c1 = bonus[tri[i]].c1; - double *c2 = bonus[tri[i]].c2; - double *c3 = bonus[tri[i]].c3; - double *inertia = bonus[tri[i]].inertia; - c1[0] = -size/2.0; - c1[1] = -sqrt(3.0)/2.0 * size / 3.0; - c1[2] = 0.0; - c2[0] = size/2.0; - c2[1] = -sqrt(3.0)/2.0 * size / 3.0; - c2[2] = 0.0; - c3[0] = 0.0; - c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0; - c3[2] = 0.0; - inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; - inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; - inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; - radius[i] = MathExtra::len3(c1); - } -} - /* ---------------------------------------------------------------------- */ -int AtomVecTri::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - double *quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (tri[j] >= 0) { - quat = bonus[tri[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (tri[j] >= 0) { - quat = bonus[tri[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - double *quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (tri[j] >= 0) { - quat = bonus[tri[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (tri[j] >= 0) { - quat = bonus[tri[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (tri[j] >= 0) { - quat = bonus[tri[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_comm_hybrid(int n, int *list, double *buf) +int AtomVecTri::pack_comm_bonus(int n, int *list, double *buf) { int i,j,m; double *quat; @@ -449,12 +180,13 @@ int AtomVecTri::pack_comm_hybrid(int n, int *list, double *buf) buf[m++] = quat[3]; } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecTri::unpack_comm(int n, int first, double *buf) +void AtomVecTri::unpack_comm_bonus(int n, int first, double *buf) { int i,m,last; double *quat; @@ -462,9 +194,6 @@ void AtomVecTri::unpack_comm(int n, int first, double *buf) m = 0; last = first + n; for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; if (tri[i] >= 0) { quat = bonus[tri[i]].quat; quat[0] = buf[m++]; @@ -477,412 +206,7 @@ void AtomVecTri::unpack_comm(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -void AtomVecTri::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - double *quat; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (tri[i] >= 0) { - quat = bonus[tri[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - double *quat; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - if (tri[i] >= 0) { - quat = bonus[tri[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTri::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - double *quat,*c1,*c2,*c3,*inertia; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (tri[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[tri[j]].quat; - c1 = bonus[tri[j]].c1; - c2 = bonus[tri[j]].c2; - c3 = bonus[tri[j]].c3; - inertia = bonus[tri[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = c1[0]; - buf[m++] = c1[1]; - buf[m++] = c1[2]; - buf[m++] = c2[0]; - buf[m++] = c2[1]; - buf[m++] = c2[2]; - buf[m++] = c3[0]; - buf[m++] = c3[1]; - buf[m++] = c3[2]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (tri[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[tri[j]].quat; - c1 = bonus[tri[j]].c1; - c2 = bonus[tri[j]].c2; - c3 = bonus[tri[j]].c3; - inertia = bonus[tri[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = c1[0]; - buf[m++] = c1[1]; - buf[m++] = c1[2]; - buf[m++] = c2[0]; - buf[m++] = c2[1]; - buf[m++] = c2[2]; - buf[m++] = c3[0]; - buf[m++] = c3[1]; - buf[m++] = c3[2]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - double *quat,*c1,*c2,*c3,*inertia; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (tri[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[tri[j]].quat; - c1 = bonus[tri[j]].c1; - c2 = bonus[tri[j]].c2; - c3 = bonus[tri[j]].c3; - inertia = bonus[tri[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = c1[0]; - buf[m++] = c1[1]; - buf[m++] = c1[2]; - buf[m++] = c2[0]; - buf[m++] = c2[1]; - buf[m++] = c2[2]; - buf[m++] = c3[0]; - buf[m++] = c3[1]; - buf[m++] = c3[2]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (tri[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[tri[j]].quat; - c1 = bonus[tri[j]].c1; - c2 = bonus[tri[j]].c2; - c3 = bonus[tri[j]].c3; - inertia = bonus[tri[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = c1[0]; - buf[m++] = c1[1]; - buf[m++] = c1[2]; - buf[m++] = c2[0]; - buf[m++] = c2[1]; - buf[m++] = c2[2]; - buf[m++] = c3[0]; - buf[m++] = c3[1]; - buf[m++] = c3[2]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (tri[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[tri[j]].quat; - c1 = bonus[tri[j]].c1; - c2 = bonus[tri[j]].c2; - c3 = bonus[tri[j]].c3; - inertia = bonus[tri[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = c1[0]; - buf[m++] = c1[1]; - buf[m++] = c1[2]; - buf[m++] = c2[0]; - buf[m++] = c2[1]; - buf[m++] = c2[2]; - buf[m++] = c3[0]; - buf[m++] = c3[1]; - buf[m++] = c3[2]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_border_hybrid(int n, int *list, double *buf) +int AtomVecTri::pack_border_bonus(int n, int *list, double *buf) { int i,j,m; double *quat,*c1,*c2,*c3,*inertia; @@ -890,9 +214,6 @@ int AtomVecTri::pack_border_hybrid(int n, int *list, double *buf) m = 0; for (i = 0; i < n; i++) { j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; if (tri[j] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -919,12 +240,13 @@ int AtomVecTri::pack_border_hybrid(int n, int *list, double *buf) buf[m++] = inertia[2]; } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecTri::unpack_border(int n, int first, double *buf) +int AtomVecTri::unpack_border_bonus(int n, int first, double *buf) { int i,j,m,last; double *quat,*c1,*c2,*c3,*inertia; @@ -932,16 +254,6 @@ void AtomVecTri::unpack_border(int n, int first, double *buf) m = 0; last = first + n; for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; tri[i] = (int) ubuf(buf[m++]).i; if (tri[i] == 0) tri[i] = -1; else { @@ -974,123 +286,6 @@ void AtomVecTri::unpack_border(int n, int first, double *buf) } } - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTri::unpack_border_vel(int n, int first, double *buf) -{ - int i,j,m,last; - double *quat,*c1,*c2,*c3,*inertia; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - tri[i] = (int) ubuf(buf[m++]).i; - if (tri[i] == 0) tri[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - quat = bonus[j].quat; - c1 = bonus[j].c1; - c2 = bonus[j].c2; - c3 = bonus[j].c3; - inertia = bonus[j].inertia; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - c1[0] = buf[m++]; - c1[1] = buf[m++]; - c1[2] = buf[m++]; - c2[0] = buf[m++]; - c2[1] = buf[m++]; - c2[2] = buf[m++]; - c3[0] = buf[m++]; - c3[1] = buf[m++]; - c3[2] = buf[m++]; - inertia[0] = buf[m++]; - inertia[1] = buf[m++]; - inertia[2] = buf[m++]; - bonus[j].ilocal = i; - tri[i] = j; - nghost_bonus++; - } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,j,m,last; - double *quat,*c1,*c2,*c3,*inertia; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - tri[i] = (int) ubuf(buf[m++]).i; - if (tri[i] == 0) tri[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - quat = bonus[j].quat; - c1 = bonus[j].c1; - c2 = bonus[j].c2; - c3 = bonus[j].c3; - inertia = bonus[j].inertia; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - c1[0] = buf[m++]; - c1[1] = buf[m++]; - c1[2] = buf[m++]; - c2[0] = buf[m++]; - c2[1] = buf[m++]; - c2[2] = buf[m++]; - c3[0] = buf[m++]; - c3[1] = buf[m++]; - c3[2] = buf[m++]; - inertia[0] = buf[m++]; - inertia[1] = buf[m++]; - inertia[2] = buf[m++]; - bonus[j].ilocal = i; - tri[i] = j; - nghost_bonus++; - } - } return m; } @@ -1099,29 +294,9 @@ int AtomVecTri::unpack_border_hybrid(int n, int first, double *buf) xyz must be 1st 3 values, so comm::exchange() can test on them ------------------------------------------------------------------------- */ -int AtomVecTri::pack_exchange(int i, double *buf) +int AtomVecTri::pack_exchange_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = rmass[i]; - buf[m++] = radius[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; if (tri[i] < 0) buf[m++] = ubuf(0).d; else { @@ -1150,45 +325,17 @@ int AtomVecTri::pack_exchange(int i, double *buf) buf[m++] = inertia[2]; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- */ -int AtomVecTri::unpack_exchange(double *buf) +int AtomVecTri::unpack_exchange_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); + int m = 0; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - rmass[nlocal] = buf[m++]; - radius[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - tri[nlocal] = (int) ubuf(buf[m++]).i; - if (tri[nlocal] == 0) tri[nlocal] = -1; + tri[ilocal] = (int) ubuf(buf[m++]).i; + if (tri[ilocal] == 0) tri[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *quat = bonus[nlocal_bonus].quat; @@ -1212,16 +359,10 @@ int AtomVecTri::unpack_exchange(double *buf) inertia[0] = buf[m++]; inertia[1] = buf[m++]; inertia[2] = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - tri[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + tri[ilocal] = nlocal_bonus++; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; return m; } @@ -1230,53 +371,27 @@ int AtomVecTri::unpack_exchange(double *buf) include extra data stored by fixes ------------------------------------------------------------------------- */ -int AtomVecTri::size_restart() +int AtomVecTri::size_restart_bonus() { int i; int n = 0; int nlocal = atom->nlocal; - for (i = 0; i < nlocal; i++) - if (tri[i] >= 0) n += 37; - else n += 21; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + for (i = 0; i < nlocal; i++) { + if (tri[i] >= 0) n += size_restart_bonus_one; + else n++; + } return n; } /* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive + unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecTri::pack_restart(int i, double *buf) +int AtomVecTri::pack_restart_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = rmass[i]; - buf[m++] = radius[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; if (tri[i] < 0) buf[m++] = ubuf(0).d; else { @@ -1305,51 +420,19 @@ int AtomVecTri::pack_restart(int i, double *buf) buf[m++] = inertia[2]; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities + unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecTri::unpack_restart(double *buf) +int AtomVecTri::unpack_restart_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } + int m = 0; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - rmass[nlocal] = buf[m++]; - radius[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - tri[nlocal] = (int) ubuf(buf[m++]).i; - if (tri[nlocal] == 0) tri[nlocal] = -1; + tri[ilocal] = (int) ubuf(buf[m++]).i; + if (tri[ilocal] == 0) tri[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *quat = bonus[nlocal_bonus].quat; @@ -1373,134 +456,13 @@ int AtomVecTri::unpack_restart(double *buf) inertia[0] = buf[m++]; inertia[1] = buf[m++]; inertia[2] = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - tri[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + tri[ilocal] = nlocal_bonus++; } - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; return m; } -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecTri::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - molecule[nlocal] = 0; - radius[nlocal] = 0.5; - rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal]; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - tri[nlocal] = -1; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecTri::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - tri[nlocal] = utils::inumeric(FLERR,values[3],true,lmp); - if (tri[nlocal] == 0) tri[nlocal] = -1; - else if (tri[nlocal] == 1) tri[nlocal] = 0; - else error->one(FLERR,"Invalid triflag in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - if (tri[nlocal] < 0) { - radius[nlocal] = 0.5; - rmass[nlocal] *= 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal]; - } else radius[nlocal] = 0.0; - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one tri in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecTri::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - tri[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (tri[nlocal] == 0) tri[nlocal] = -1; - else if (tri[nlocal] == 1) tri[nlocal] = 0; - else error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - if (tri[nlocal] < 0) { - radius[nlocal] = 0.5; - rmass[nlocal] *= 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal]; - } else radius[nlocal] = 0.0; - - return 3; -} - /* ---------------------------------------------------------------------- unpack one line from Tris section of data file ------------------------------------------------------------------------- */ @@ -1635,207 +597,154 @@ void AtomVecTri::data_atom_bonus(int m, char **values) } /* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file + return # of bytes of allocated bonus memory ------------------------------------------------------------------------- */ -void AtomVecTri::data_vel(int m, char **values) -{ - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - omega[m][0] = utils::numeric(FLERR,values[3],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[4],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[5],true,lmp); - angmom[m][0] = utils::numeric(FLERR,values[6],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[7],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[8],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file -------------------------------------------------------------------------- */ - -int AtomVecTri::data_vel_hybrid(int m, char **values) -{ - omega[m][0] = utils::numeric(FLERR,values[0],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[1],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[2],true,lmp); - angmom[m][0] = utils::numeric(FLERR,values[3],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[4],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[5],true,lmp); - return 6; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecTri::pack_data(double **buf) -{ - double c2mc1[3],c3mc1[3],norm[3]; - double area; - - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - if (tri[i] < 0) buf[i][3] = ubuf(0).d; - else buf[i][3] = ubuf(1).d; - if (tri[i] < 0) - buf[i][4] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - else { - MathExtra::sub3(bonus[tri[i]].c2,bonus[tri[i]].c1,c2mc1); - MathExtra::sub3(bonus[tri[i]].c3,bonus[tri[i]].c1,c3mc1); - MathExtra::cross3(c2mc1,c3mc1,norm); - area = 0.5 * MathExtra::len3(norm); - buf[i][4] = rmass[i]/area; - } - buf[i][5] = x[i][0]; - buf[i][6] = x[i][1]; - buf[i][7] = x[i][2]; - buf[i][8] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecTri::pack_data_hybrid(int i, double *buf) -{ - buf[0] = ubuf(molecule[i]).d; - if (tri[i] < 0) buf[1] = ubuf(0).d; - else buf[1] = ubuf(1).d; - if (tri[i] < 0) - buf[2] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - else { - double c2mc1[3],c3mc1[3],norm[3]; - MathExtra::sub3(bonus[tri[i]].c2,bonus[tri[i]].c1,c2mc1); - MathExtra::sub3(bonus[tri[i]].c3,bonus[tri[i]].c1,c3mc1); - MathExtra::cross3(c2mc1,c3mc1,norm); - double area = 0.5 * MathExtra::len3(norm); - buf[2] = rmass[i]/area; - } - return 3; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecTri::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i,(int) ubuf(buf[i][3]).i, - buf[i][4],buf[i][5],buf[i][6],buf[i][7], - (int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i, - (int) ubuf(buf[i][10]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecTri::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," " TAGINT_FORMAT " %d %-1.16e", - (tagint) ubuf(buf[0]).i,(int) ubuf(buf[1]).i,buf[2]); - return 3; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecTri::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = omega[i][0]; - buf[i][5] = omega[i][1]; - buf[i][6] = omega[i][2]; - buf[i][7] = angmom[i][0]; - buf[i][8] = angmom[i][1]; - buf[i][9] = angmom[i][2]; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid velocity info for data file -------------------------------------------------------------------------- */ - -int AtomVecTri::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = omega[i][0]; - buf[1] = omega[i][1]; - buf[2] = omega[i][2]; - buf[3] = angmom[i][0]; - buf[4] = angmom[i][1]; - buf[5] = angmom[i][2]; - return 6; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecTri::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e " - "%-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6],buf[i][7],buf[i][8],buf[i][9]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -int AtomVecTri::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e", - buf[0],buf[1],buf[2],buf[3],buf[4],buf[5]); - return 6; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecTri::memory_usage() +bigint AtomVecTri::memory_usage_bonus() { bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("radius")) bytes += memory->usage(radius,nmax); - if (atom->memcheck("omega")) bytes += memory->usage(omega,nmax,3); - if (atom->memcheck("angmom")) bytes += memory->usage(angmom,nmax,3); - if (atom->memcheck("torque")) bytes += - memory->usage(torque,nmax*comm->nthreads,3); - if (atom->memcheck("tri")) bytes += memory->usage(tri,nmax); - bytes += nmax_bonus*sizeof(Bonus); - return bytes; } + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults +------------------------------------------------------------------------- */ + +void AtomVecTri::create_atom_post(int ilocal) +{ + double radius_one = 0.5; + radius[ilocal] = radius_one; + rmass[ilocal] = 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; + tri[ilocal] = -1; +} + +/* ---------------------------------------------------------------------- + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecTri::data_atom_post(int ilocal) +{ + tri_flag = tri[ilocal]; + if (tri_flag == 0) tri_flag = -1; + else if (tri_flag == 1) tri_flag = 0; + else error->one(FLERR,"Invalid tri flag in Atoms section of data file"); + tri[ilocal] = tri_flag; + + if (rmass[ilocal] <= 0.0) + error->one(FLERR,"Invalid density in Atoms section of data file"); + + if (tri_flag < 0) { + double radius_one = 0.5; + radius[ilocal] = radius_one; + rmass[ilocal] *= 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; + } else radius[ilocal] = 0.0; + + omega[ilocal][0] = 0.0; + omega[ilocal][1] = 0.0; + omega[ilocal][2] = 0.0; + angmom[ilocal][0] = 0.0; + angmom[ilocal][1] = 0.0; + angmom[ilocal][2] = 0.0; +} + +/* ---------------------------------------------------------------------- + modify values for AtomVec::pack_data() to pack +------------------------------------------------------------------------- */ + +void AtomVecTri::pack_data_pre(int ilocal) +{ + tri_flag = tri[ilocal]; + rmass_one = rmass[ilocal]; + + if (tri_flag < 0) tri[ilocal] = 0; + else tri[ilocal] = 1; + + if (tri_flag < 0) { + double radius_one = radius[ilocal]; + rmass[ilocal] /= 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; + } else { + double c2mc1[3],c3mc1[3],norm[3]; + MathExtra::sub3(bonus[tri_flag].c2,bonus[tri_flag].c1,c2mc1); + MathExtra::sub3(bonus[tri_flag].c3,bonus[tri_flag].c1,c3mc1); + MathExtra::cross3(c2mc1,c3mc1,norm); + double area = 0.5 * MathExtra::len3(norm); + rmass[ilocal] /= area; + } +} + +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_data() +------------------------------------------------------------------------- */ + +void AtomVecTri::pack_data_post(int ilocal) +{ + tri[ilocal] = tri_flag; + rmass[ilocal] = rmass_one; +} + +/* ---------------------------------------------------------------------- + set equilateral tri of size in bonus data for particle I + oriented symmetrically in xy plane + this may create or delete entry in bonus data +------------------------------------------------------------------------- */ + +void AtomVecTri::set_equilateral(int i, double size) +{ + // also set radius = distance from center to corner-pt = len(c1) + // unless size = 0.0, then set diameter = 1.0 + + if (tri[i] < 0) { + if (size == 0.0) return; + if (nlocal_bonus == nmax_bonus) grow_bonus(); + double *quat = bonus[nlocal_bonus].quat; + double *c1 = bonus[nlocal_bonus].c1; + double *c2 = bonus[nlocal_bonus].c2; + double *c3 = bonus[nlocal_bonus].c3; + double *inertia = bonus[nlocal_bonus].inertia; + quat[0] = 1.0; + quat[1] = 0.0; + quat[2] = 0.0; + quat[3] = 0.0; + c1[0] = -size/2.0; + c1[1] = -sqrt(3.0)/2.0 * size / 3.0; + c1[2] = 0.0; + c2[0] = size/2.0; + c2[1] = -sqrt(3.0)/2.0 * size / 3.0; + c2[2] = 0.0; + c3[0] = 0.0; + c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0; + c3[2] = 0.0; + inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; + radius[i] = MathExtra::len3(c1); + bonus[nlocal_bonus].ilocal = i; + tri[i] = nlocal_bonus++; + } else if (size == 0.0) { + radius[i] = 0.5; + copy_bonus_all(nlocal_bonus-1,tri[i]); + nlocal_bonus--; + tri[i] = -1; + } else { + double *c1 = bonus[tri[i]].c1; + double *c2 = bonus[tri[i]].c2; + double *c3 = bonus[tri[i]].c3; + double *inertia = bonus[tri[i]].inertia; + c1[0] = -size/2.0; + c1[1] = -sqrt(3.0)/2.0 * size / 3.0; + c1[2] = 0.0; + c2[0] = size/2.0; + c2[1] = -sqrt(3.0)/2.0 * size / 3.0; + c2[2] = 0.0; + c3[0] = 0.0; + c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0; + c3[2] = 0.0; + inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; + radius[i] = MathExtra::len3(c1); + } +} diff --git a/src/atom_vec_tri.h b/src/atom_vec_tri.h index 81b4c1ada9..0b16285fe6 100644 --- a/src/atom_vec_tri.h +++ b/src/atom_vec_tri.h @@ -37,49 +37,26 @@ class AtomVecTri : public AtomVec { AtomVecTri(class LAMMPS *); ~AtomVecTri(); void init(); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); - - // manipulate Bonus data structure for extra atom info + void grow_pointers(); + void copy_bonus(int, int, int); void clear_bonus(); + int pack_comm_bonus(int, int *, double *); + void unpack_comm_bonus(int, int, double *); + int pack_border_bonus(int, int *, double *); + int unpack_border_bonus(int, int, double *); + int pack_exchange_bonus(int, double *); + int unpack_exchange_bonus(int, double *); + int size_restart_bonus(); + int pack_restart_bonus(int, double *); + int unpack_restart_bonus(int, double *); void data_atom_bonus(int, char **); + bigint memory_usage_bonus(); + + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); // unique to AtomVecTri @@ -88,19 +65,16 @@ class AtomVecTri : public AtomVec { int nlocal_bonus; private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - tagint *molecule; - double *rmass,*radius; - double **omega,**angmom,**torque; int *tri; + double *radius,*rmass; + double **omega,**angmom; int nghost_bonus,nmax_bonus; + int tri_flag; + double rmass_one; void grow_bonus(); - void copy_bonus(int, int); + void copy_bonus_all(int, int); }; } diff --git a/src/balance.cpp b/src/balance.cpp index c3b6f7d3bf..1df2116b72 100644 --- a/src/balance.cpp +++ b/src/balance.cpp @@ -16,7 +16,7 @@ Axel Kohlmeyer (Temple U), Iain Bethune (EPCC) ------------------------------------------------------------------------- */ -//#define BALANCE_DEBUG 1 +// #define BALANCE_DEBUG 1 #include "balance.h" #include @@ -39,6 +39,8 @@ #include "imbalance_var.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; @@ -366,12 +368,10 @@ void Balance::command(int narg, char **arg) bigint natoms; bigint nblocal = atom->nlocal; MPI_Allreduce(&nblocal,&natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); - if (natoms != atom->natoms) { - char str[128]; - sprintf(str,"Lost atoms via balance: original " BIGINT_FORMAT - " current " BIGINT_FORMAT,atom->natoms,natoms); - error->all(FLERR,str); - } + if (natoms != atom->natoms) + error->all(FLERR,fmt::format("Lost atoms via balance: " + "original {} current {}", + atom->natoms,natoms).c_str()); // imbfinal = final imbalance // set disable = 1, so weights no longer migrate with atoms @@ -382,60 +382,29 @@ void Balance::command(int narg, char **arg) // stats output - double stop_time = MPI_Wtime(); - if (me == 0) { - if (screen) { - fprintf(screen," rebalancing time: %g seconds\n",stop_time-start_time); - fprintf(screen," iteration count = %d\n",niter); - for (int i = 0; i < nimbalance; ++i) imbalances[i]->info(screen); - fprintf(screen," initial/final max load/proc = %g %g\n", - maxinit,maxfinal); - fprintf(screen," initial/final imbalance factor = %g %g\n", - imbinit,imbfinal); - } - if (logfile) { - fprintf(logfile," rebalancing time: %g seconds\n",stop_time-start_time); - fprintf(logfile," iteration count = %d\n",niter); - for (int i = 0; i < nimbalance; ++i) imbalances[i]->info(logfile); - fprintf(logfile," initial/final max load/proc = %g %g\n", - maxinit,maxfinal); - fprintf(logfile," initial/final imbalance factor = %g %g\n", - imbinit,imbfinal); - } - } + std::string mesg = fmt::format(" rebalancing time: {:.3f} seconds\n", + MPI_Wtime()-start_time); + mesg += fmt::format(" iteration count = {}\n",niter); + for (int i = 0; i < nimbalance; ++i) mesg += imbalances[i]->info(); + mesg += fmt::format(" initial/final maximal load/proc = {} {}\n" + " initial/final imbalance factor = {:.6g} {:.6g}\n", + maxinit,maxfinal,imbinit,imbfinal); - if (style != BISECTION) { - if (me == 0) { - if (screen) { - fprintf(screen," x cuts:"); - for (int i = 0; i <= comm->procgrid[0]; i++) - fprintf(screen," %g",comm->xsplit[i]); - fprintf(screen,"\n"); - fprintf(screen," y cuts:"); - for (int i = 0; i <= comm->procgrid[1]; i++) - fprintf(screen," %g",comm->ysplit[i]); - fprintf(screen,"\n"); - fprintf(screen," z cuts:"); - for (int i = 0; i <= comm->procgrid[2]; i++) - fprintf(screen," %g",comm->zsplit[i]); - fprintf(screen,"\n"); - } - if (logfile) { - fprintf(logfile," x cuts:"); - for (int i = 0; i <= comm->procgrid[0]; i++) - fprintf(logfile," %g",comm->xsplit[i]); - fprintf(logfile,"\n"); - fprintf(logfile," y cuts:"); - for (int i = 0; i <= comm->procgrid[1]; i++) - fprintf(logfile," %g",comm->ysplit[i]); - fprintf(logfile,"\n"); - fprintf(logfile," z cuts:"); - for (int i = 0; i <= comm->procgrid[2]; i++) - fprintf(logfile," %g",comm->zsplit[i]); - fprintf(logfile,"\n"); - } + if (style != BISECTION) { + mesg += " x cuts:"; + for (int i = 0; i <= comm->procgrid[0]; i++) + mesg += fmt::format(" {}",comm->xsplit[i]); + mesg += "\n y cuts:"; + for (int i = 0; i <= comm->procgrid[1]; i++) + mesg += fmt::format(" {}",comm->ysplit[i]); + mesg += "\n z cuts:"; + for (int i = 0; i <= comm->procgrid[2]; i++) + mesg += fmt::format(" {}",comm->zsplit[i]); + mesg += "\n"; } + + utils::logmesg(lmp,mesg); } } @@ -506,7 +475,9 @@ void Balance::options(int iarg, int narg, char **arg) if (outflag && comm->me == 0) { fp = fopen(arg[outarg],"w"); - if (fp == NULL) error->one(FLERR,"Cannot open (fix) balance output file"); + if (fp == NULL) + error->one(FLERR,fmt::format("Cannot open (fix) balance output file {}: {}", + arg[outarg], utils::getsyserror())); } } @@ -1191,8 +1162,7 @@ void Balance::dumpout(bigint tstep) double *boxlo = domain->boxlo; double *boxhi = domain->boxhi; - fprintf(fp,"ITEM: TIMESTEP\n"); - fprintf(fp,BIGINT_FORMAT "\n",tstep); + fmt::print(fp,"ITEM: TIMESTEP\n{}\n",tstep); fprintf(fp,"ITEM: NUMBER OF NODES\n"); if (dimension == 2) fprintf(fp,"%d\n",4*nprocs); else fprintf(fp,"%d\n",8*nprocs); @@ -1267,8 +1237,7 @@ void Balance::dumpout(bigint tstep) // write out one square/cube per processor for 2d/3d - fprintf(fp,"ITEM: TIMESTEP\n"); - fprintf(fp,BIGINT_FORMAT "\n",tstep); + fmt::print(fp,"ITEM: TIMESTEP\n{}\n",tstep); if (dimension == 2) fprintf(fp,"ITEM: NUMBER OF SQUARES\n"); else fprintf(fp,"ITEM: NUMBER OF CUBES\n"); fprintf(fp,"%d\n",nprocs); @@ -1312,14 +1281,11 @@ void Balance::debug_shift_output(int idim, int m, int np, double *split) else if (bdim[idim] == Z) dim = "Z"; fprintf(stderr,"Dimension %s, Iteration %d\n",dim,m); - fprintf(stderr," Count:"); - for (i = 0; i < np; i++) fprintf(stderr," " BIGINT_FORMAT,count[i]); - fprintf(stderr,"\n"); fprintf(stderr," Sum:"); - for (i = 0; i <= np; i++) fprintf(stderr," " BIGINT_FORMAT,sum[i]); + for (i = 0; i <= np; i++) fmt::print(stderr," {}",sum[i]); fprintf(stderr,"\n"); fprintf(stderr," Target:"); - for (i = 0; i <= np; i++) fprintf(stderr," " BIGINT_FORMAT,target[i]); + for (i = 0; i <= np; i++) fmt::print(stderr," {}",target[i]); fprintf(stderr,"\n"); fprintf(stderr," Actual cut:"); for (i = 0; i <= np; i++) @@ -1332,20 +1298,16 @@ void Balance::debug_shift_output(int idim, int m, int np, double *split) for (i = 0; i <= np; i++) fprintf(stderr," %g",lo[i]); fprintf(stderr,"\n"); fprintf(stderr," Low-sum:"); - for (i = 0; i <= np; i++) fprintf(stderr," " BIGINT_FORMAT,losum[i]); + for (i = 0; i <= np; i++) fmt::print(stderr," {}",losum[i]); fprintf(stderr,"\n"); fprintf(stderr," Hi:"); for (i = 0; i <= np; i++) fprintf(stderr," %g",hi[i]); fprintf(stderr,"\n"); fprintf(stderr," Hi-sum:"); - for (i = 0; i <= np; i++) fprintf(stderr," " BIGINT_FORMAT,hisum[i]); + for (i = 0; i <= np; i++) fmt::print(stderr," {}",hisum[i]); fprintf(stderr,"\n"); fprintf(stderr," Delta:"); for (i = 0; i < np; i++) fprintf(stderr," %g",split[i+1]-split[i]); fprintf(stderr,"\n"); - - bigint max = 0; - for (i = 0; i < np; i++) max = MAX(max,count[i]); - fprintf(stderr," Imbalance factor: %g\n",1.0*max*np/target[np]); } #endif diff --git a/src/bond.cpp b/src/bond.cpp index d16ce5fe0f..36d809123a 100644 --- a/src/bond.cpp +++ b/src/bond.cpp @@ -21,6 +21,8 @@ #include "atom_masks.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; @@ -254,7 +256,9 @@ void Bond::write_file(int narg, char **arg) FILE *fp; if (me == 0) { fp = fopen(arg[4],"a"); - if (fp == NULL) error->one(FLERR,"Cannot open bond_write file"); + if (fp == NULL) + error->one(FLERR,fmt::format("Cannot open bond_write file {}: {}", + arg[4], utils::getsyserror())); } // initialize potentials before evaluating bond potential diff --git a/src/bond.h b/src/bond.h index b558a2a35e..8d7585b388 100644 --- a/src/bond.h +++ b/src/bond.h @@ -52,7 +52,7 @@ class Bond : protected Pointers { virtual void write_data(FILE *) {} virtual double single(int, double, int, int, double &) = 0; virtual double memory_usage(); - virtual void *extract(char *, int &) {return NULL;} + virtual void *extract(const char *, int &) {return NULL;} virtual void reinit(); void write_file(int, char**); diff --git a/src/bond_deprecated.cpp b/src/bond_deprecated.cpp index 3e20553cac..7bd65b795d 100644 --- a/src/bond_deprecated.cpp +++ b/src/bond_deprecated.cpp @@ -16,42 +16,36 @@ ------------------------------------------------------------------------- */ #include "bond_deprecated.h" -#include +#include #include "bond_hybrid.h" #include "comm.h" #include "force.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; -static void writemsg(LAMMPS *lmp, const char *msg, int abend=1) -{ - if (lmp->comm->me == 0) { - if (lmp->screen) fputs(msg,lmp->screen); - if (lmp->logfile) fputs(msg,lmp->logfile); - } - if (abend) - lmp->error->all(FLERR,"This bond style is no longer available"); -} - /* ---------------------------------------------------------------------- */ void BondDeprecated::settings(int, char **) { - const char *my_style = force->bond_style; + std::string my_style = force->bond_style; // hybrid substyles are created in BondHybrid::settings(), so when this is // called, our style was just added at the end of the list of substyles - if (strncmp(my_style,"hybrid",6) == 0) { + if (utils::strmatch(my_style,"^hybrid")) { BondHybrid *hybrid = (BondHybrid *)force->bond; my_style = hybrid->keywords[hybrid->nstyles]; } - if (strcmp(my_style,"DEPRECATED") == 0) { - writemsg(lmp,"\nBond style 'DEPRECATED' is a dummy style\n\n",0); - + if (my_style == "DEPRECATED") { + if (lmp->comm->me == 0) + utils::logmesg(lmp,"\nBond style 'DEPRECATED' is a dummy style\n\n"); + return; } + + lmp->error->all(FLERR,"This bond style is no longer available"); } diff --git a/src/bond_zero.cpp b/src/bond_zero.cpp index 428fd0ace2..cb336ddd67 100644 --- a/src/bond_zero.cpp +++ b/src/bond_zero.cpp @@ -144,8 +144,6 @@ void BondZero::write_data(FILE *fp) fprintf(fp,"%d %g\n",i,r0[i]); } - - /* ---------------------------------------------------------------------- */ double BondZero::single(int /*type*/, double /*rsq*/, int /*i*/, int /*j*/, @@ -153,3 +151,12 @@ double BondZero::single(int /*type*/, double /*rsq*/, int /*i*/, int /*j*/, { return 0.0; } + +/* ---------------------------------------------------------------------- */ + +void *BondZero::extract(const char *str, int &dim) +{ + dim = 1; + if (strcmp(str,"r0")==0) return (void*) r0; + return NULL; +} diff --git a/src/bond_zero.h b/src/bond_zero.h index 7cbd2b9a96..b31e89edf7 100644 --- a/src/bond_zero.h +++ b/src/bond_zero.h @@ -38,6 +38,7 @@ class BondZero : public Bond { void write_data(FILE *); double single(int, double, int, int, double &); + virtual void *extract(const char *, int &); protected: double *r0; diff --git a/src/change_box.cpp b/src/change_box.cpp index 7ae49ca776..f50ba23db4 100644 --- a/src/change_box.cpp +++ b/src/change_box.cpp @@ -26,6 +26,8 @@ #include "group.h" #include "error.h" #include "force.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; @@ -388,12 +390,10 @@ void ChangeBox::command(int narg, char **arg) bigint natoms; bigint nblocal = atom->nlocal; MPI_Allreduce(&nblocal,&natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); - if (natoms != atom->natoms && comm->me == 0) { - char str[128]; - sprintf(str,"Lost atoms via change_box: original " BIGINT_FORMAT - " current " BIGINT_FORMAT,atom->natoms,natoms); - error->warning(FLERR,str); - } + if (natoms != atom->natoms && comm->me == 0) + error->warning(FLERR,fmt::format("Lost atoms via change_box: " + "original {} current {}", + atom->natoms,natoms)); } /* ---------------------------------------------------------------------- diff --git a/src/comm.cpp b/src/comm.cpp index 6a762036d1..9102e2991d 100644 --- a/src/comm.cpp +++ b/src/comm.cpp @@ -35,6 +35,7 @@ #include "memory.h" #include "error.h" #include "update.h" +#include "fmt/format.h" #ifdef _OPENMP #include @@ -257,10 +258,8 @@ void Comm::init_exchange() int onefix; maxexchange_fix = 0; - for (int i = 0; i < nfix; i++) { - onefix = fix[i]->maxexchange; - maxexchange_fix = MAX(maxexchange_fix,onefix); - } + for (int i = 0; i < nfix; i++) + maxexchange_fix += fix[i]->maxexchange; maxexchange = maxexchange_atom + maxexchange_fix; bufextra = maxexchange + BUFEXTRA; @@ -678,23 +677,19 @@ double Comm::get_comm_cutoff() if (!force->pair && (cutghostuser == 0.0)) { maxcommcutoff = MAX(maxcommcutoff,maxbondcutoff); } else { - if ((me == 0) && (maxbondcutoff > maxcommcutoff)) { - char mesg[256]; - snprintf(mesg,256,"Communication cutoff %g is shorter than a bond " - "length based estimate of %g. This may lead to errors.", - maxcommcutoff,maxbondcutoff); - error->warning(FLERR,mesg); - } + if ((me == 0) && (maxbondcutoff > maxcommcutoff)) + error->warning(FLERR,fmt::format("Communication cutoff {} is shorter " + "than a bond length based estimate of " + "{}. This may lead to errors.", + maxcommcutoff,maxbondcutoff)); } // print warning if neighborlist cutoff overrides user cutoff if ((me == 0) && (update->setupflag == 1)) { - if ((cutghostuser > 0.0) && (maxcommcutoff > cutghostuser)) { - char mesg[128]; - snprintf(mesg,128,"Communication cutoff adjusted to %g",maxcommcutoff); - error->warning(FLERR,mesg); - } + if ((cutghostuser > 0.0) && (maxcommcutoff > cutghostuser)) + error->warning(FLERR,fmt::format("Communication cutoff adjusted to {}", + maxcommcutoff)); } return maxcommcutoff; @@ -1220,35 +1215,31 @@ void Comm::rendezvous_stats(int n, int nout, int nrvous, int nrvous_out, if (me == 0) { if (screen) { fprintf(screen,"Rendezvous balance and memory info: (tot,ave,max,min) \n"); - fprintf(screen," input datum count: " - BIGINT_FORMAT " %g " BIGINT_FORMAT " " BIGINT_FORMAT "\n", - size_in_all/insize,1.0*size_in_all/nprocs/insize, - size_in_max/insize,size_in_min/insize); + fmt::print(screen," input datum count: {} {} {} {}\n", + size_in_all/insize,1.0*size_in_all/nprocs/insize, + size_in_max/insize,size_in_min/insize); fprintf(screen," input data (MB): %g %g %g %g\n", 1.0*size_in_all/mbytes,1.0*size_in_all/nprocs/mbytes, 1.0*size_in_max/mbytes,1.0*size_in_min/mbytes); if (outsize) - fprintf(screen," output datum count: " - BIGINT_FORMAT " %g " BIGINT_FORMAT " " BIGINT_FORMAT "\n", - size_out_all/outsize,1.0*size_out_all/nprocs/outsize, - size_out_max/outsize,size_out_min/outsize); + fmt::print(screen," output datum count: {} {} {} {}\n", + size_out_all/outsize,1.0*size_out_all/nprocs/outsize, + size_out_max/outsize,size_out_min/outsize); else fprintf(screen," output datum count: %d %g %d %d\n",0,0.0,0,0); fprintf(screen," output data (MB): %g %g %g %g\n", 1.0*size_out_all/mbytes,1.0*size_out_all/nprocs/mbytes, 1.0*size_out_max/mbytes,1.0*size_out_min/mbytes); - fprintf(screen," input rvous datum count: " - BIGINT_FORMAT " %g " BIGINT_FORMAT " " BIGINT_FORMAT "\n", - size_inrvous_all/insize,1.0*size_inrvous_all/nprocs/insize, - size_inrvous_max/insize,size_inrvous_min/insize); + fmt::print(screen," input rvous datum count: {} {} {} {}\n", + size_inrvous_all/insize,1.0*size_inrvous_all/nprocs/insize, + size_inrvous_max/insize,size_inrvous_min/insize); fprintf(screen," input rvous data (MB): %g %g %g %g\n", 1.0*size_inrvous_all/mbytes,1.0*size_inrvous_all/nprocs/mbytes, 1.0*size_inrvous_max/mbytes,1.0*size_inrvous_min/mbytes); if (outsize) - fprintf(screen," output rvous datum count: " - BIGINT_FORMAT " %g " BIGINT_FORMAT " " BIGINT_FORMAT "\n", - size_outrvous_all/outsize,1.0*size_outrvous_all/nprocs/outsize, - size_outrvous_max/outsize,size_outrvous_min/outsize); + fmt::print(screen," output rvous datum count: {} {} {} {}\n", + size_outrvous_all/outsize,1.0*size_outrvous_all/nprocs/outsize, + size_outrvous_max/outsize,size_outrvous_min/outsize); else fprintf(screen," output rvous datum count: %d %g %d %d\n",0,0.0,0,0); fprintf(screen," output rvous data (MB): %g %g %g %g\n", diff --git a/src/compute_centroid_stress_atom.cpp b/src/compute_centroid_stress_atom.cpp index 3f5b2cba81..7c979c66d7 100644 --- a/src/compute_centroid_stress_atom.cpp +++ b/src/compute_centroid_stress_atom.cpp @@ -177,7 +177,7 @@ void ComputeCentroidStressAtom::compute_peratom() // per-atom virial and per-atom centroid virial are the same for two-body // many-body pair styles not yet implemented - if (pairflag && force->pair) { + if (pairflag && force->pair && force->pair->compute_flag) { if (force->pair->centroidstressflag & 2) { double **cvatom = force->pair->cvatom; for (i = 0; i < npair; i++) @@ -226,7 +226,7 @@ void ComputeCentroidStressAtom::compute_peratom() stress[i][j] += cvatom[i][j]; } - if (kspaceflag && force->kspace) { + if (kspaceflag && force->kspace && force->kspace->compute_flag) { double **vatom = force->kspace->vatom; for (i = 0; i < nkspace; i++) { for (j = 0; j < 6; j++) @@ -258,7 +258,7 @@ void ComputeCentroidStressAtom::compute_peratom() // communicate ghost virials between neighbor procs - if (force->newton || (force->kspace && force->kspace->tip4pflag)) + if (force->newton || (force->kspace && force->kspace->tip4pflag && force->kspace->compute_flag)) comm->reverse_comm_compute(this); // zero virial of atoms not in group diff --git a/src/compute_deprecated.cpp b/src/compute_deprecated.cpp index 1db78b6bdf..356e6b372a 100644 --- a/src/compute_deprecated.cpp +++ b/src/compute_deprecated.cpp @@ -12,28 +12,25 @@ ------------------------------------------------------------------------- */ #include "compute_deprecated.h" -#include +#include #include "comm.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; -static void writemsg(LAMMPS *lmp, const char *msg, int abend=1) -{ - if (lmp->comm->me == 0) { - if (lmp->screen) fputs(msg,lmp->screen); - if (lmp->logfile) fputs(msg,lmp->logfile); - } - if (abend) - lmp->error->all(FLERR,"This compute style is no longer available"); -} - /* ---------------------------------------------------------------------- */ ComputeDeprecated::ComputeDeprecated(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (strcmp(style,"DEPRECATED") == 0) { - writemsg(lmp,"\nCompute style 'DEPRECATED' is a dummy style\n\n",0); + std::string my_style = style; + + if (my_style == "DEPRECATED") { + if (lmp->comm->me == 0) + utils::logmesg(lmp,"\nCompute style 'DEPRECATED' is a dummy style\n\n"); + return; } + + lmp->error->all(FLERR,"This compute style is no longer available"); } diff --git a/src/compute_pe_atom.cpp b/src/compute_pe_atom.cpp index 274e1b05a6..6bdd729502 100644 --- a/src/compute_pe_atom.cpp +++ b/src/compute_pe_atom.cpp @@ -119,7 +119,7 @@ void ComputePEAtom::compute_peratom() // add in per-atom contributions from each force - if (pairflag && force->pair) { + if (pairflag && force->pair && force->pair->compute_flag) { double *eatom = force->pair->eatom; for (i = 0; i < npair; i++) energy[i] += eatom[i]; } @@ -144,7 +144,7 @@ void ComputePEAtom::compute_peratom() for (i = 0; i < nbond; i++) energy[i] += eatom[i]; } - if (kspaceflag && force->kspace) { + if (kspaceflag && force->kspace && force->kspace->compute_flag) { double *eatom = force->kspace->eatom; for (i = 0; i < nkspace; i++) energy[i] += eatom[i]; } diff --git a/src/compute_stress_atom.cpp b/src/compute_stress_atom.cpp index 7c0ed9ef17..9c65ee86c2 100644 --- a/src/compute_stress_atom.cpp +++ b/src/compute_stress_atom.cpp @@ -170,7 +170,7 @@ void ComputeStressAtom::compute_peratom() // add in per-atom contributions from each force - if (pairflag && force->pair) { + if (pairflag && force->pair && force->pair->compute_flag) { double **vatom = force->pair->vatom; for (i = 0; i < npair; i++) for (j = 0; j < 6; j++) @@ -205,7 +205,7 @@ void ComputeStressAtom::compute_peratom() stress[i][j] += vatom[i][j]; } - if (kspaceflag && force->kspace) { + if (kspaceflag && force->kspace && force->kspace->compute_flag) { double **vatom = force->kspace->vatom; for (i = 0; i < nkspace; i++) for (j = 0; j < 6; j++) diff --git a/src/create_atoms.cpp b/src/create_atoms.cpp index 5325b8b9b1..526a2069e6 100644 --- a/src/create_atoms.cpp +++ b/src/create_atoms.cpp @@ -38,6 +38,10 @@ #include "error.h" #include "memory.h" +#include +#include "utils.h" +#include "fmt/format.h" + using namespace LAMMPS_NS; using namespace MathConst; @@ -581,20 +585,11 @@ void CreateAtoms::command(int narg, char **arg) // print status MPI_Barrier(world); - double time2 = MPI_Wtime(); - - if (me == 0) { - if (screen) { - fprintf(screen,"Created " BIGINT_FORMAT " atoms\n", - atom->natoms-natoms_previous); - fprintf(screen," create_atoms CPU = %g secs\n",time2-time1); - } - if (logfile) { - fprintf(logfile,"Created " BIGINT_FORMAT " atoms\n", - atom->natoms-natoms_previous); - fprintf(logfile," create_atoms CPU = %g secs\n",time2-time1); - } - } + if (me == 0) + utils::logmesg(lmp, fmt::format("Created {} atoms\n" + " create_atoms CPU = {:.3f} seconds\n", + atom->natoms - natoms_previous, + MPI_Wtime() - time1)); } /* ---------------------------------------------------------------------- diff --git a/src/create_bonds.cpp b/src/create_bonds.cpp index 437f5959db..e210a5e061 100644 --- a/src/create_bonds.cpp +++ b/src/create_bonds.cpp @@ -20,6 +20,7 @@ #include "create_bonds.h" #include #include +#include #include "atom.h" #include "domain.h" #include "force.h" @@ -30,6 +31,8 @@ #include "group.h" #include "special.h" #include "error.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; @@ -318,19 +321,9 @@ void CreateBonds::many() bigint nadd_bonds = atom->nbonds - nbonds_previous; - if (comm->me == 0) { - if (screen) { - fprintf(screen,"Added " BIGINT_FORMAT - " bonds, new total = " BIGINT_FORMAT "\n", - nadd_bonds,atom->nbonds); - } - - if (logfile) { - fprintf(logfile,"Added " BIGINT_FORMAT - " bonds, new total = " BIGINT_FORMAT "\n", - nadd_bonds,atom->nbonds); - } - } + if (comm->me == 0) + utils::logmesg(lmp,fmt::format("Added {} bonds, new total = {}\n", + nadd_bonds,atom->nbonds)); } /* ---------------------------------------------------------------------- */ diff --git a/src/delete_atoms.cpp b/src/delete_atoms.cpp index e8d9c5d53b..ba8940de95 100644 --- a/src/delete_atoms.cpp +++ b/src/delete_atoms.cpp @@ -34,8 +34,11 @@ #include "random_mars.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "fmt/format.h" #include +#include using namespace LAMMPS_NS; @@ -176,53 +179,23 @@ void DeleteAtoms::command(int narg, char **arg) bigint ndelete_impropers = nimpropers_previous - atom->nimpropers; if (comm->me == 0) { - if (screen) { - fprintf(screen,"Deleted " BIGINT_FORMAT - " atoms, new total = " BIGINT_FORMAT "\n", - ndelete,atom->natoms); - if (bond_flag || mol_flag) { - if (nbonds_previous) - fprintf(screen,"Deleted " BIGINT_FORMAT - " bonds, new total = " BIGINT_FORMAT "\n", - ndelete_bonds,atom->nbonds); - if (nangles_previous) - fprintf(screen,"Deleted " BIGINT_FORMAT - " angles, new total = " BIGINT_FORMAT "\n", - ndelete_angles,atom->nangles); - if (ndihedrals_previous) - fprintf(screen,"Deleted " BIGINT_FORMAT - " dihedrals, new total = " BIGINT_FORMAT "\n", - ndelete_dihedrals,atom->ndihedrals); - if (nimpropers_previous) - fprintf(screen,"Deleted " BIGINT_FORMAT - " impropers, new total = " BIGINT_FORMAT "\n", - ndelete_impropers,atom->nimpropers); - } - } - - if (logfile) { - fprintf(logfile,"Deleted " BIGINT_FORMAT - " atoms, new total = " BIGINT_FORMAT "\n", - ndelete,atom->natoms); - if (bond_flag || mol_flag) { - if (nbonds_previous) - fprintf(logfile,"Deleted " BIGINT_FORMAT - " bonds, new total = " BIGINT_FORMAT "\n", - ndelete_bonds,atom->nbonds); - if (nangles_previous) - fprintf(logfile,"Deleted " BIGINT_FORMAT - " angles, new total = " BIGINT_FORMAT "\n", - ndelete_angles,atom->nangles); - if (ndihedrals_previous) - fprintf(logfile,"Deleted " BIGINT_FORMAT - " dihedrals, new total = " BIGINT_FORMAT "\n", - ndelete_dihedrals,atom->ndihedrals); - if (nimpropers_previous) - fprintf(logfile,"Deleted " BIGINT_FORMAT - " impropers, new total = " BIGINT_FORMAT "\n", - ndelete_impropers,atom->nimpropers); - } + std::string mesg = fmt::format("Deleted {} atoms, new total = {}\n", + ndelete,atom->natoms); + if (bond_flag || mol_flag) { + if (nbonds_previous) + mesg += fmt::format("Deleted {} bonds, new total = {}\n", + ndelete_bonds,atom->nbonds); + if (nangles_previous) + mesg += fmt::format("Deleted {} angles, new total = {}\n", + ndelete_angles,atom->nangles); + if (ndihedrals_previous) + mesg += fmt::format("Deleted {} dihedrals, new total = {}\n", + ndelete_dihedrals,atom->ndihedrals); + if (nimpropers_previous) + mesg += fmt::format("Deleted {} impropers, new total = {}\n", + ndelete_impropers,atom->nimpropers); } + utils::logmesg(lmp,mesg); } } diff --git a/src/delete_bonds.cpp b/src/delete_bonds.cpp index c450f77ee7..99c0f1b951 100644 --- a/src/delete_bonds.cpp +++ b/src/delete_bonds.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include "atom.h" #include "atom_vec.h" #include "domain.h" @@ -23,6 +24,8 @@ #include "group.h" #include "special.h" #include "error.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; @@ -535,50 +538,25 @@ void DeleteBonds::command(int narg, char **arg) } if (comm->me == 0) { - if (atom->avec->bonds_allow) { - if (screen) fprintf(screen, - " " BIGINT_FORMAT " total bonds, " BIGINT_FORMAT - " turned on, " BIGINT_FORMAT " turned off\n", - atom->nbonds,bond_on,bond_off); - if (logfile) fprintf(logfile, - " " BIGINT_FORMAT " total bonds, " BIGINT_FORMAT - " turned on, " BIGINT_FORMAT " turned off\n", - atom->nbonds,bond_on,bond_off); - } - if (atom->avec->angles_allow) { - if (screen) fprintf(screen, - " " BIGINT_FORMAT " total angles, " BIGINT_FORMAT - " turned on, " BIGINT_FORMAT " turned off\n", - atom->nangles,angle_on,angle_off); - if (logfile) fprintf(logfile, - " " BIGINT_FORMAT " total angles, " BIGINT_FORMAT - " turned on, " BIGINT_FORMAT " turned off\n", - atom->nangles,angle_on,angle_off); - } - if (atom->avec->dihedrals_allow) { - if (screen) fprintf(screen, - " " BIGINT_FORMAT " total dihedrals, " - BIGINT_FORMAT " turned on, " BIGINT_FORMAT - " turned off\n", - atom->ndihedrals,dihedral_on,dihedral_off); - if (logfile) fprintf(logfile, - " " BIGINT_FORMAT " total dihedrals, " - BIGINT_FORMAT " turned on, " BIGINT_FORMAT - " turned off\n", - atom->ndihedrals,dihedral_on,dihedral_off); - } - if (atom->avec->impropers_allow) { - if (screen) fprintf(screen, - " " BIGINT_FORMAT " total impropers, " - BIGINT_FORMAT " turned on, " BIGINT_FORMAT - " turned off\n", - atom->nimpropers,improper_on,improper_off); - if (logfile) fprintf(logfile, - " " BIGINT_FORMAT " total impropers, " - BIGINT_FORMAT " turned on, " BIGINT_FORMAT - " turned off\n", - atom->nimpropers,improper_on,improper_off); - } + if (atom->avec->bonds_allow) + utils::logmesg(lmp,fmt::format(" {} total bonds, " + "{} turned on, {} turned off\n", + atom->nbonds,bond_on,bond_off)); + + if (atom->avec->angles_allow) + utils::logmesg(lmp,fmt::format(" {} total angles, " + "{} turned on, {} turned off\n", + atom->nangles,angle_on,angle_off)); + + if (atom->avec->dihedrals_allow) + utils::logmesg(lmp,fmt::format(" {} total dihedrals, " + "{} turned on, {} turned off\n", + atom->ndihedrals,dihedral_on,dihedral_off)); + + if (atom->avec->impropers_allow) + utils::logmesg(lmp,fmt::format(" {} total impropers, " + "{} turned on, {} turned off\n", + atom->nimpropers,improper_on,improper_off)); } // re-compute special list if requested diff --git a/src/dihedral.cpp b/src/dihedral.cpp index 7c6f6aad5e..ac2d432cfb 100644 --- a/src/dihedral.cpp +++ b/src/dihedral.cpp @@ -18,6 +18,7 @@ #include "atom_masks.h" #include "memory.h" #include "error.h" +#include "suffix.h" using namespace LAMMPS_NS; @@ -32,6 +33,7 @@ Dihedral::Dihedral(LAMMPS *lmp) : Pointers(lmp) writedata = 0; allocated = 0; + suffix_flag = Suffix::NONE; maxeatom = maxvatom = maxcvatom = 0; eatom = NULL; diff --git a/src/dihedral_deprecated.cpp b/src/dihedral_deprecated.cpp index 0205b1b887..a44dcae9d9 100644 --- a/src/dihedral_deprecated.cpp +++ b/src/dihedral_deprecated.cpp @@ -16,42 +16,35 @@ ------------------------------------------------------------------------- */ #include "dihedral_deprecated.h" -#include +#include #include "dihedral_hybrid.h" #include "comm.h" #include "force.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; -static void writemsg(LAMMPS *lmp, const char *msg, int abend=1) -{ - if (lmp->comm->me == 0) { - if (lmp->screen) fputs(msg,lmp->screen); - if (lmp->logfile) fputs(msg,lmp->logfile); - } - if (abend) - lmp->error->all(FLERR,"This dihedral style is no longer available"); -} - /* ---------------------------------------------------------------------- */ void DihedralDeprecated::settings(int, char **) { - const char *my_style = force->dihedral_style; + std::string my_style = force->dihedral_style; - // hybrid substyles are created in DihedralHybrid::settings(), so when this is - // called, our style was just added at the end of the list of substyles + // hybrid substyles are created in DihedralHybrid::settings(), + // so when this is called, our style was just added at the end + // of the list of substyles - if (strncmp(my_style,"hybrid",6) == 0) { + if (utils::strmatch(my_style,"^hybrid")) { DihedralHybrid *hybrid = (DihedralHybrid *)force->dihedral; my_style = hybrid->keywords[hybrid->nstyles]; } - if (strcmp(my_style,"DEPRECATED") == 0) { - writemsg(lmp,"\nDihedral style 'DEPRECATED' is a dummy style\n\n",0); - + if (my_style == "DEPRECATED") { + if (lmp->comm->me == 0) + utils::logmesg(lmp,"\nDihedral style 'DEPRECATED' is a dummy style\n\n"); + return; } + + lmp->error->all(FLERR,"This dihedral style is no longer available"); } - - diff --git a/src/displace_atoms.cpp b/src/displace_atoms.cpp index dc94c3ed35..748adca811 100644 --- a/src/displace_atoms.cpp +++ b/src/displace_atoms.cpp @@ -34,6 +34,7 @@ #include "math_extra.h" #include "memory.h" #include "error.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace MathConst; @@ -353,12 +354,10 @@ void DisplaceAtoms::command(int narg, char **arg) bigint natoms; bigint nblocal = atom->nlocal; MPI_Allreduce(&nblocal,&natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); - if (natoms != atom->natoms && comm->me == 0) { - char str[128]; - sprintf(str,"Lost atoms via displace_atoms: original " BIGINT_FORMAT - " current " BIGINT_FORMAT,atom->natoms,natoms); - error->warning(FLERR,str); - } + if (natoms != atom->natoms && comm->me == 0) + error->warning(FLERR,fmt::format("Lost atoms via displace_atoms: " + "original {} current {}", + atom->natoms,natoms)); } /* ---------------------------------------------------------------------- diff --git a/src/domain.cpp b/src/domain.cpp index e1a9744fde..2d6d52c369 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -39,6 +39,7 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; @@ -157,7 +158,7 @@ void Domain::init() std::string mesg = "Must not have multiple fixes change box parameter "; #define CHECK_BOX_FIX_ERROR(par) \ - if (box_change_ ## par > 1) error->all(FLERR,(mesg + #par).c_str()) + if (box_change_ ## par > 1) error->all(FLERR,(mesg + #par)) CHECK_BOX_FIX_ERROR(x); CHECK_BOX_FIX_ERROR(y); @@ -1761,8 +1762,7 @@ void Domain::add_region(int narg, char **arg) if (lmp->suffix_enable) { if (lmp->suffix) { - char estyle[256]; - snprintf(estyle,256,"%s/%s",arg[1],lmp->suffix); + std::string estyle = std::string(arg[1]) + "/" + lmp->suffix; if (region_map->find(estyle) != region_map->end()) { RegionCreator region_creator = (*region_map)[estyle]; regions[nregion] = region_creator(lmp, narg, arg); @@ -1773,8 +1773,7 @@ void Domain::add_region(int narg, char **arg) } if (lmp->suffix2) { - char estyle[256]; - snprintf(estyle,256,"%s/%s",arg[1],lmp->suffix2); + std::string estyle = std::string(arg[1]) + "/" + lmp->suffix2; if (region_map->find(estyle) != region_map->end()) { RegionCreator region_creator = (*region_map)[estyle]; regions[nregion] = region_creator(lmp, narg, arg); @@ -1788,7 +1787,7 @@ void Domain::add_region(int narg, char **arg) if (region_map->find(arg[1]) != region_map->end()) { RegionCreator region_creator = (*region_map)[arg[1]]; regions[nregion] = region_creator(lmp, narg, arg); - } else error->all(FLERR,utils::check_packages_for_style("region",arg[1],lmp).c_str()); + } else error->all(FLERR,utils::check_packages_for_style("region",arg[1],lmp)); // initialize any region variables via init() // in case region is used between runs, e.g. to print a variable @@ -1935,33 +1934,20 @@ void Domain::set_box(int narg, char **arg) print box info, orthogonal or triclinic ------------------------------------------------------------------------- */ -void Domain::print_box(const char *str) +void Domain::print_box(const std::string &prefix) { if (comm->me == 0) { - if (screen) { - if (triclinic == 0) - fprintf(screen,"%sorthogonal box = (%g %g %g) to (%g %g %g)\n", - str,boxlo[0],boxlo[1],boxlo[2],boxhi[0],boxhi[1],boxhi[2]); - else { - char *format = (char *) - "%striclinic box = (%g %g %g) to (%g %g %g) with tilt (%g %g %g)\n"; - fprintf(screen,format, - str,boxlo[0],boxlo[1],boxlo[2],boxhi[0],boxhi[1],boxhi[2], - xy,xz,yz); - } - } - if (logfile) { - if (triclinic == 0) - fprintf(logfile,"%sorthogonal box = (%g %g %g) to (%g %g %g)\n", - str,boxlo[0],boxlo[1],boxlo[2],boxhi[0],boxhi[1],boxhi[2]); - else { - char *format = (char *) - "%striclinic box = (%g %g %g) to (%g %g %g) with tilt (%g %g %g)\n"; - fprintf(logfile,format, - str,boxlo[0],boxlo[1],boxlo[2],boxhi[0],boxhi[1],boxhi[2], - xy,xz,yz); - } + std::string mesg = prefix; + if (triclinic == 0) { + mesg += fmt::format("orthogonal box = ({} {} {}) to ({} {} {})\n", + boxlo[0],boxlo[1],boxlo[2], + boxhi[0],boxhi[1],boxhi[2]); + } else { + mesg += fmt::format("triclinic box = ({} {} {}) to ({} {} {}) " + "with tilt ({} {} {})\n",boxlo[0],boxlo[1], + boxlo[2],boxhi[0],boxhi[1],boxhi[2],xy,xz,yz); } + utils::logmesg(lmp,mesg); } } diff --git a/src/domain.h b/src/domain.h index 0ce31a8b4a..58b935ce01 100644 --- a/src/domain.h +++ b/src/domain.h @@ -131,7 +131,7 @@ class Domain : protected Pointers { int find_region(char *); void set_boundary(int, char **, int); void set_box(int, char **); - void print_box(const char *); + void print_box(const std::string &); void boundary_string(char *); virtual void lamda2x(int); diff --git a/src/dump_deprecated.cpp b/src/dump_deprecated.cpp index 4263b9801f..3dae66248d 100644 --- a/src/dump_deprecated.cpp +++ b/src/dump_deprecated.cpp @@ -12,29 +12,25 @@ ------------------------------------------------------------------------- */ #include "dump_deprecated.h" -#include +#include #include "comm.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; -static void writemsg(LAMMPS *lmp, const char *msg, int abend=1) -{ - if (lmp->comm->me == 0) { - if (lmp->screen) fputs(msg,lmp->screen); - if (lmp->logfile) fputs(msg,lmp->logfile); - } - if (abend) - lmp->error->all(FLERR,"This dump style is no longer available"); -} - /* ---------------------------------------------------------------------- */ DumpDeprecated::DumpDeprecated(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg) { - if (strcmp(style,"DEPRECATED") == 0) { - writemsg(lmp,"\nDump style 'DEPRECATED' is a dummy style\n\n",0); + std::string my_style = style; + if (my_style == "DEPRECATED") { + if (lmp->comm->me == 0) + utils::logmesg(lmp,"\nDump style 'DEPRECATED' is a dummy style\n\n"); + return; } + + lmp->error->all(FLERR,"This dump style is no longer available"); } diff --git a/src/error.cpp b/src/error.cpp index 0883387f4d..392624f40b 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -15,10 +15,13 @@ #include #include #include +#include #include "universe.h" #include "output.h" #include "input.h" #include "accelerator_kokkos.h" +#include "utils.h" +#include "fmt/format.h" #if defined(LAMMPS_EXCEPTIONS) #include "update.h" @@ -28,23 +31,19 @@ using namespace LAMMPS_NS; // helper function to truncate a string to a segment starting with "src/"; -static const char *truncpath(const char *path) +static std::string truncpath(const std::string &path) { - if (path) { - int len = strlen(path); - for (int i = len-4; i > 0; --i) { - if (strncmp("src/",path+i,4) == 0) - return path+i; - } - } - return path; + std::size_t found = path.find("src/"); + if (found != std::string::npos) + return path.substr(found); + else return path; } /* ---------------------------------------------------------------------- */ Error::Error(LAMMPS *lmp) : Pointers(lmp) { #ifdef LAMMPS_EXCEPTIONS - last_error_message = NULL; + last_error_message.clear(); last_error_type = ERROR_NONE; #endif } @@ -55,15 +54,14 @@ Error::Error(LAMMPS *lmp) : Pointers(lmp) { no abort, so insure all procs in universe call, else will hang ------------------------------------------------------------------------- */ -void Error::universe_all(const char *file, int line, const char *str) +void Error::universe_all(const std::string &file, int line, const std::string &str) { MPI_Barrier(universe->uworld); - + std::string mesg = fmt::format("ERROR: {} ({}:{})\n", + str,truncpath(file),line); if (universe->me == 0) { - if (universe->uscreen) fprintf(universe->uscreen, - "ERROR: %s (%s:%d)\n",str,truncpath(file),line); - if (universe->ulogfile) fprintf(universe->ulogfile, - "ERROR: %s (%s:%d)\n",str,truncpath(file),line); + if (universe->uscreen) fputs(mesg.c_str(),universe->uscreen); + if (universe->ulogfile) fputs(mesg.c_str(),universe->ulogfile); } if (output) delete output; @@ -80,9 +78,7 @@ void Error::universe_all(const char *file, int line, const char *str) if (update) update->whichflag = 0; - char msg[100]; - snprintf(msg, 100, "ERROR: %s (%s:%d)\n", str, truncpath(file), line); - throw LAMMPSException(msg); + throw LAMMPSException(mesg); #else if (lmp->kokkos) Kokkos::finalize(); MPI_Finalize(); @@ -95,11 +91,11 @@ void Error::universe_all(const char *file, int line, const char *str) forces abort of entire universe if any proc in universe calls ------------------------------------------------------------------------- */ -void Error::universe_one(const char *file, int line, const char *str) +void Error::universe_one(const std::string &file, int line, const std::string &str) { - if (universe->uscreen) - fprintf(universe->uscreen,"ERROR on proc %d: %s (%s:%d)\n", - universe->me,str,truncpath(file),line); + std::string mesg = fmt::format("ERROR on proc {}: {} ({}:{})\n", + universe->me,str,truncpath(file),line); + if (universe->uscreen) fputs(mesg.c_str(),universe->uscreen); #ifdef LAMMPS_EXCEPTIONS @@ -108,9 +104,7 @@ void Error::universe_one(const char *file, int line, const char *str) if (update) update->whichflag = 0; - char msg[100]; - snprintf(msg, 100, "ERROR: %s (%s:%d)\n", str, truncpath(file), line); - throw LAMMPSAbortException(msg, universe->uworld); + throw LAMMPSAbortException(mesg, universe->uworld); #else MPI_Abort(universe->uworld,1); #endif @@ -121,11 +115,11 @@ void Error::universe_one(const char *file, int line, const char *str) prints a warning message to the screen ------------------------------------------------------------------------- */ -void Error::universe_warn(const char *file, int line, const char *str) +void Error::universe_warn(const std::string &file, int line, const std::string &str) { if (universe->uscreen) - fprintf(universe->uscreen,"WARNING on proc %d: %s (%s:%d)\n", - universe->me,str,truncpath(file),line); + fmt::print(universe->uscreen,"WARNING on proc {}: {} ({}:{})\n", + universe->me,str,truncpath(file),line); } /* ---------------------------------------------------------------------- @@ -135,23 +129,19 @@ void Error::universe_warn(const char *file, int line, const char *str) force MPI_Abort if running in multi-partition mode ------------------------------------------------------------------------- */ -void Error::all(const char *file, int line, const char *str) +void Error::all(const std::string &file, int line, const std::string &str) { MPI_Barrier(world); int me; - const char *lastcmd = (const char*)"(unknown)"; + std::string lastcmd = "(unknown)"; MPI_Comm_rank(world,&me); if (me == 0) { if (input && input->line) lastcmd = input->line; - if (screen) fprintf(screen,"ERROR: %s (%s:%d)\n" - "Last command: %s\n", - str,truncpath(file),line,lastcmd); - if (logfile) fprintf(logfile,"ERROR: %s (%s:%d)\n" - "Last command: %s\n", - str,truncpath(file),line,lastcmd); + utils::logmesg(lmp,fmt::format("ERROR: {} ({}:{})\nLast command: {}\n", + str,truncpath(file),line,lastcmd)); } #ifdef LAMMPS_EXCEPTIONS @@ -161,8 +151,8 @@ void Error::all(const char *file, int line, const char *str) if (update) update->whichflag = 0; - char msg[100]; - snprintf(msg, 100, "ERROR: %s (%s:%d)\n", str, truncpath(file), line); + std::string msg = fmt::format("ERROR: {} ({}:{})\n", + str, truncpath(file), line); if (universe->nworlds > 1) { throw LAMMPSAbortException(msg, universe->uworld); @@ -188,24 +178,20 @@ void Error::all(const char *file, int line, const char *str) forces abort of entire world (and universe) if any proc in world calls ------------------------------------------------------------------------- */ -void Error::one(const char *file, int line, const char *str) +void Error::one(const std::string &file, int line, const std::string &str) { int me; - const char *lastcmd = (const char*)"(unknown)"; + std::string lastcmd = "(unknown)"; MPI_Comm_rank(world,&me); if (input && input->line) lastcmd = input->line; - if (screen) fprintf(screen,"ERROR on proc %d: %s (%s:%d)\n" - "Last command: %s\n", - me,str,truncpath(file),line,lastcmd); - if (logfile) fprintf(logfile,"ERROR on proc %d: %s (%s:%d)\n" - "Last command: %s\n", - me,str,truncpath(file),line,lastcmd); + std::string mesg = fmt::format("ERROR on proc {}: {} ({}:{})\n", + me,str,truncpath(file),line,lastcmd); + utils::logmesg(lmp,mesg); if (universe->nworlds > 1) if (universe->uscreen) - fprintf(universe->uscreen,"ERROR on proc %d: %s (%s:%d)\n", - universe->me,str,truncpath(file),line); + fputs(mesg.c_str(),universe->uscreen); #ifdef LAMMPS_EXCEPTIONS @@ -214,9 +200,7 @@ void Error::one(const char *file, int line, const char *str) if (update) update->whichflag = 0; - char msg[100]; - snprintf(msg, 100, "ERROR on proc %d: %s (%s:%d)\n", me, str, truncpath(file), line); - throw LAMMPSAbortException(msg, world); + throw LAMMPSAbortException(mesg, world); #else if (screen) fflush(screen); if (logfile) fflush(logfile); @@ -229,11 +213,12 @@ void Error::one(const char *file, int line, const char *str) only write to screen if non-NULL on this proc since could be file ------------------------------------------------------------------------- */ -void Error::warning(const char *file, int line, const char *str, int logflag) +void Error::warning(const std::string &file, int line, const std::string &str, int logflag) { - if (screen) fprintf(screen,"WARNING: %s (%s:%d)\n",str,truncpath(file),line); - if (logflag && logfile) fprintf(logfile,"WARNING: %s (%s:%d)\n", - str,truncpath(file),line); + std::string mesg = fmt::format("WARNING: {} ({}:{})\n", + str,truncpath(file),line); + if (screen) fputs(mesg.c_str(),screen); + if (logflag && logfile) fputs(mesg.c_str(),logfile); } /* ---------------------------------------------------------------------- @@ -241,10 +226,12 @@ void Error::warning(const char *file, int line, const char *str, int logflag) write message to screen and logfile (if logflag is set) ------------------------------------------------------------------------- */ -void Error::message(const char *file, int line, const char *str, int logflag) +void Error::message(const std::string &file, int line, const std::string &str, int logflag) { - if (screen) fprintf(screen,"%s (%s:%d)\n",str,truncpath(file),line); - if (logflag && logfile) fprintf(logfile,"%s (%s:%d)\n",str,truncpath(file),line); + std::string mesg = fmt::format("{} ({}:{})\n",str,truncpath(file),line); + + if (screen) fputs(mesg.c_str(),screen); + if (logflag && logfile) fputs(mesg.c_str(),logfile); } /* ---------------------------------------------------------------------- @@ -273,7 +260,7 @@ void Error::done(int status) compiled with -DLAMMPS_EXCEPTIONS) ------------------------------------------------------------------------- */ -char * Error::get_last_error() const +std::string Error::get_last_error() const { return last_error_message; } @@ -293,16 +280,9 @@ ErrorType Error::get_last_error_type() const (only used if compiled with -DLAMMPS_EXCEPTIONS) ------------------------------------------------------------------------- */ -void Error::set_last_error(const char * msg, ErrorType type) +void Error::set_last_error(const std::string &msg, ErrorType type) { - delete [] last_error_message; - - if(msg) { - last_error_message = new char[strlen(msg)+1]; - strcpy(last_error_message, msg); - } else { - last_error_message = NULL; - } + last_error_message = msg; last_error_type = type; } #endif diff --git a/src/error.h b/src/error.h index b66fe4a13b..23f7f64cf3 100644 --- a/src/error.h +++ b/src/error.h @@ -15,6 +15,7 @@ #define LMP_ERROR_H #include "pointers.h" +#include #ifdef LAMMPS_EXCEPTIONS #include "exceptions.h" @@ -26,23 +27,23 @@ class Error : protected Pointers { public: Error(class LAMMPS *); - void universe_all(const char *, int, const char *); - void universe_one(const char *, int, const char *); - void universe_warn(const char *, int, const char *); + void universe_all(const std::string &, int, const std::string &); + void universe_one(const std::string &, int, const std::string &); + void universe_warn(const std::string &, int, const std::string &); - void all(const char *, int, const char *); - void one(const char *, int, const char *); - void warning(const char *, int, const char *, int = 1); - void message(const char *, int, const char *, int = 1); + void all(const std::string &, int, const std::string &); + void one(const std::string &, int, const std::string &); + void warning(const std::string &, int, const std::string &, int = 1); + void message(const std::string &, int, const std::string &, int = 1); void done(int = 0); // 1 would be fully backwards compatible #ifdef LAMMPS_EXCEPTIONS - char * get_last_error() const; + std::string get_last_error() const; ErrorType get_last_error_type() const; - void set_last_error(const char * msg, ErrorType type = ERROR_NORMAL); + void set_last_error(const std::string &msg, ErrorType type = ERROR_NORMAL); private: - char * last_error_message; + std::string last_error_message; ErrorType last_error_type; #endif }; diff --git a/src/exceptions.h b/src/exceptions.h index 121991afc5..db17a6526a 100644 --- a/src/exceptions.h +++ b/src/exceptions.h @@ -25,7 +25,7 @@ class LAMMPSException : public std::exception public: std::string message; - LAMMPSException(std::string msg) : message(msg) { + LAMMPSException(const std::string &msg) : message(msg) { } ~LAMMPSException() throw() { @@ -40,7 +40,7 @@ class LAMMPSAbortException : public LAMMPSException { public: MPI_Comm universe; - LAMMPSAbortException(std::string msg, MPI_Comm universe) : + LAMMPSAbortException(const std::string &msg, MPI_Comm universe) : LAMMPSException(msg), universe(universe) { diff --git a/src/fix.h b/src/fix.h index 558caf23e9..1cb1cc3ca4 100644 --- a/src/fix.h +++ b/src/fix.h @@ -137,7 +137,7 @@ class Fix : protected Pointers { virtual void end_of_step() {} virtual void post_run() {} virtual void write_restart(FILE *) {} - virtual void write_restart_file(char *) {} + virtual void write_restart_file(const char *) {} virtual void restart(char *) {} virtual void grow_arrays(int) {} diff --git a/src/fix_ave_chunk.cpp b/src/fix_ave_chunk.cpp index 0ebdddb9df..2987783b2a 100644 --- a/src/fix_ave_chunk.cpp +++ b/src/fix_ave_chunk.cpp @@ -27,6 +27,8 @@ #include "variable.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -223,11 +225,9 @@ FixAveChunk::FixAveChunk(LAMMPS *lmp, int narg, char **arg) : if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open fix ave/chunk file %s",arg[iarg+1]); - error->one(FLERR,str); - } + if (fp == NULL) + error->one(FLERR,fmt::format("Cannot open fix ave/chunk file {}: {}", + arg[iarg+1], utils::getsyserror())); } iarg += 2; } else if (strcmp(arg[iarg],"overwrite") == 0) { diff --git a/src/fix_ave_correlate.cpp b/src/fix_ave_correlate.cpp index 0a8a4cd17f..2231611d1e 100644 --- a/src/fix_ave_correlate.cpp +++ b/src/fix_ave_correlate.cpp @@ -30,6 +30,8 @@ #include "memory.h" #include "error.h" #include "force.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -148,11 +150,9 @@ FixAveCorrelate::FixAveCorrelate(LAMMPS * lmp, int narg, char **arg): if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open fix ave/correlate file %s",arg[iarg+1]); - error->one(FLERR,str); - } + if (fp == NULL) + error->one(FLERR,fmt::format("Cannot open fix ave/correlate file {}:"" {}", + arg[iarg+1], utils::getsyserror())); } iarg += 2; } else if (strcmp(arg[iarg],"overwrite") == 0) { diff --git a/src/fix_ave_histo.cpp b/src/fix_ave_histo.cpp index 1a292bf8d2..d0bedba34a 100644 --- a/src/fix_ave_histo.cpp +++ b/src/fix_ave_histo.cpp @@ -25,6 +25,8 @@ #include "memory.h" #include "error.h" #include "force.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -963,11 +965,9 @@ void FixAveHisto::options(int iarg, int narg, char **arg) if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open fix ave/histo file %s",arg[iarg+1]); - error->one(FLERR,str); - } + if (fp == NULL) + error->one(FLERR,fmt::format("Cannot open fix ave/histo file {}: {}", + arg[iarg+1], utils::getsyserror())); } iarg += 2; } else if (strcmp(arg[iarg],"kind") == 0) { diff --git a/src/fix_ave_time.cpp b/src/fix_ave_time.cpp index 9b8dd13f05..84c5c04f11 100644 --- a/src/fix_ave_time.cpp +++ b/src/fix_ave_time.cpp @@ -28,6 +28,8 @@ #include "variable.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -1043,11 +1045,9 @@ void FixAveTime::options(int iarg, int narg, char **arg) if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open fix ave/time file %s",arg[iarg+1]); - error->one(FLERR,str); - } + if (fp == NULL) + error->one(FLERR,fmt::format("Cannot open fix ave/time file {}: {}", + arg[iarg+1], utils::getsyserror())); } iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { diff --git a/src/fix_controller.cpp b/src/fix_controller.cpp index 855869a574..f7012e5565 100644 --- a/src/fix_controller.cpp +++ b/src/fix_controller.cpp @@ -120,7 +120,7 @@ FixController::FixController(LAMMPS *lmp, int narg, char **arg) : "calculate a global scalar or vector"); if (pvindex && pvindex > f->size_vector) error->all(FLERR,"Fix controller fix vector is accessed out-of-range"); - } else if (pvwhich == FIX) { + } else if (pvwhich == VARIABLE) { int ivariable = input->variable->find(pvID); if (ivariable < 0) error->all(FLERR,"Variable name for fix controller does not exist"); diff --git a/src/fix_deprecated.cpp b/src/fix_deprecated.cpp index 0c212668b3..c6313bd872 100644 --- a/src/fix_deprecated.cpp +++ b/src/fix_deprecated.cpp @@ -12,39 +12,37 @@ ------------------------------------------------------------------------- */ #include "fix_deprecated.h" -#include +#include #include "comm.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; -static void writemsg(LAMMPS *lmp, const char *msg, int abend=1) -{ - if (lmp->comm->me == 0) { - if (lmp->screen) fputs(msg,lmp->screen); - if (lmp->logfile) fputs(msg,lmp->logfile); - } - if (abend) - lmp->error->all(FLERR,"This fix style is no longer available"); -} - /* ---------------------------------------------------------------------- */ FixDeprecated::FixDeprecated(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (strcmp(style,"DEPRECATED") == 0) { - writemsg(lmp,"\nFix style 'DEPRECATED' is a dummy style\n\n",0); + std::string my_style = style; - } else if (strncmp(style,"ave/spatial",11) == 0) { - writemsg(lmp,"\nFix styles 'ave/spatial' and 'ave/spatial/sphere' have " - "been replaced\nby the more general fix ave/chunk and compute " - "chunk/atom commands.\nAll ave/spatial and ave/spatial/sphere " - "functionality is available in these\nnew commands. These " - "ave/spatial keywords & options are part of fix ave/chunk:\n" - " Nevery, Nrepeat, Nfreq, input values, norm, ave, file, " - "overwrite, title123\nThese ave/spatial keywords & options for " - "binning are part of compute chunk/atom:\n dim, origin, delta," - " region, bound, discard, units\n\n"); + if (my_style == "DEPRECATED") { + if (lmp->comm->me == 0) + utils::logmesg(lmp,"\nFix style 'DEPRECATED' is a dummy style\n\n"); + return; + } else if (utils::strmatch(my_style,"^ave/spatial")) { + if (lmp->comm->me == 0) + utils::logmesg(lmp,"\nFix styles 'ave/spatial' and 'ave/spatial/sphere'" + " have been replaced\nby the more general fix ave/chunk " + "and compute chunk/atom commands.\nAll ave/spatial and " + "ave/spatial/sphere functionality is available in these" + "\nnew commands. These ave/spatial keywords & options are" + " part of fix ave/chunk:\n Nevery, Nrepeat, Nfreq, input" + " values, norm, ave, file, overwrite, title123\nThese " + "ave/spatial keywords & options for binning are part of " + "compute chunk/atom:\n dim, origin, delta, region, " + "bound, discard, units\n\n"); } + + lmp->error->all(FLERR,"This fix style is no longer available"); } diff --git a/src/fix_enforce2d.cpp b/src/fix_enforce2d.cpp index 3edd24e9af..7dd8c08204 100644 --- a/src/fix_enforce2d.cpp +++ b/src/fix_enforce2d.cpp @@ -19,6 +19,7 @@ #include "modify.h" #include "respa.h" #include "error.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -76,11 +77,9 @@ void FixEnforce2D::init() if (modify->fix[i]->enforce2d_flag) { if (myindex < 0) flist[nfixlist++] = modify->fix[i]; - else { - char msg[256]; - snprintf(msg,256,"Fix enforce2d must be defined after fix %s",modify->fix[i]->style); - error->all(FLERR,msg); - } + else + error->all(FLERR,fmt::format("Fix enforce2d must be defined after fix {}", + modify->fix[i]->style)); } if (modify->fix[i] == this) myindex = i; } diff --git a/src/fix_gravity.cpp b/src/fix_gravity.cpp index 25435174d2..2c56181415 100644 --- a/src/fix_gravity.cpp +++ b/src/fix_gravity.cpp @@ -31,7 +31,7 @@ using namespace FixConst; using namespace MathConst; enum{CHUTE,SPHERICAL,VECTOR}; -enum{CONSTANT,EQUAL}; +enum{CONSTANT,EQUAL}; // same as FixPour /* ---------------------------------------------------------------------- */ @@ -153,6 +153,16 @@ FixGravity::FixGravity(LAMMPS *lmp, int narg, char **arg) : eflag = 0; egrav = 0.0; + + // set gravity components once and for all if CONSTANT + + varflag = CONSTANT; + if (mstyle != CONSTANT || vstyle != CONSTANT || pstyle != CONSTANT || + tstyle != CONSTANT || xstyle != CONSTANT || ystyle != CONSTANT || + zstyle != CONSTANT) varflag = EQUAL; + + if (varflag == CONSTANT) set_acceleration(); + } /* ---------------------------------------------------------------------- */ @@ -241,15 +251,6 @@ void FixGravity::init() if (!input->variable->equalstyle(zvar)) error->all(FLERR,"Variable for fix gravity is invalid style"); } - - varflag = CONSTANT; - if (mstyle != CONSTANT || vstyle != CONSTANT || pstyle != CONSTANT || - tstyle != CONSTANT || xstyle != CONSTANT || ystyle != CONSTANT || - zstyle != CONSTANT) varflag = EQUAL; - - // set gravity components once and for all - - if (varflag == CONSTANT) set_acceleration(); } /* ---------------------------------------------------------------------- */ diff --git a/src/fix_nh.cpp b/src/fix_nh.cpp old mode 100644 new mode 100755 index 339407f6d5..014a2b8855 --- a/src/fix_nh.cpp +++ b/src/fix_nh.cpp @@ -39,6 +39,7 @@ using namespace FixConst; #define DELTAFLIP 0.1 #define TILTMAX 1.5 +#define EPSILON 1.0e-6 enum{NOBIAS,BIAS}; enum{NONE,XYZ,XY,YZ,XZ}; @@ -83,6 +84,7 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : flipflag = 1; dipole_flag = 0; dlm_flag = 0; + p_temp_flag = 0; tcomputeflag = 0; pcomputeflag = 0; @@ -259,6 +261,12 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : drag = force->numeric(FLERR,arg[iarg+1]); if (drag < 0.0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; + } else if (strcmp(arg[iarg],"ptemp") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); + p_temp = force->numeric(FLERR,arg[iarg+1]); + p_temp_flag = 1; + if (p_temp <= 0.0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); + iarg += 2; } else if (strcmp(arg[iarg],"dilate") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"all") == 0) allremap = 1; @@ -466,6 +474,10 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : (p_flag[5] && p_period[5] <= 0.0)) error->all(FLERR,"Fix nvt/npt/nph damping parameters must be > 0.0"); + // check that ptemp is not defined with a thermostat + if (tstat_flag && p_temp_flag) + error->all(FLERR,"Thermostat in fix nvt/npt/nph is incompatible with ptemp command"); + // set pstat_flag and box change and restart_pbc variables pre_exchange_flag = 0; @@ -760,16 +772,19 @@ void FixNH::setup(int /*vflag*/) } else if (pstat_flag) { // t0 = reference temperature for masses + // set equal to either ptemp or the current temperature // cannot be done in init() b/c temperature cannot be called there // is b/c Modify::init() inits computes after fixes due to dof dependence - // guesstimate a unit-dependent t0 if actual T = 0.0 + // error if T less than 1e-6 // if it was read in from a restart file, leave it be if (t0 == 0.0) { - t0 = temperature->compute_scalar(); - if (t0 == 0.0) { - if (strcmp(update->unit_style,"lj") == 0) t0 = 1.0; - else t0 = 300.0; + if(p_temp_flag) { + t0 = p_temp; + } else { + t0 = temperature->compute_scalar(); + if(t0 < EPSILON) + error->all(FLERR, "Current temperature too close to zero, consider using ptemp setting"); } } t_target = t0; diff --git a/src/fix_nh.h b/src/fix_nh.h old mode 100644 new mode 100755 index 807ea2a71f..624b0c8bb4 --- a/src/fix_nh.h +++ b/src/fix_nh.h @@ -71,6 +71,9 @@ class FixNH : public Fix { char *id_dilate; // group name to dilate class Irregular *irregular; // for migrating atoms after box flips + double p_temp; // target temperature for barostat + int p_temp_flag; + int nlevels_respa; double *step_respa; @@ -226,6 +229,10 @@ E: Fix nvt/npt/nph damping parameters must be > 0.0 Self-explanatory. +E: Thermostat in fix nvt/npt/nph is incompatible with ptemp command + +Self-explanatory. + E: Cannot use fix npt and fix deform on same component of stress tensor This would be changing the same box dimension twice. @@ -238,6 +245,10 @@ E: Pressure ID for fix npt/nph does not exist Self-explanatory. +E: Current temperature too close to zero, consider using ptemp setting + +The current temperature is close to zero and may cause numerical instability. The user may want to specify a different target temperature using the ptemp setting. + E: Non-numeric pressure - simulation unstable UNDOCUMENTED diff --git a/src/fix_print.cpp b/src/fix_print.cpp index 54a706d24b..8a988c8dac 100644 --- a/src/fix_print.cpp +++ b/src/fix_print.cpp @@ -21,6 +21,8 @@ #include "memory.h" #include "error.h" #include "force.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -65,11 +67,9 @@ FixPrint::FixPrint(LAMMPS *lmp, int narg, char **arg) : if (me == 0) { if (strcmp(arg[iarg],"file") == 0) fp = fopen(arg[iarg+1],"w"); else fp = fopen(arg[iarg+1],"a"); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open fix print file %s",arg[iarg+1]); - error->one(FLERR,str); - } + if (fp == NULL) + error->one(FLERR,fmt::format("Cannot open fix print file {}: {}", + arg[iarg+1], utils::getsyserror())); } iarg += 2; } else if (strcmp(arg[iarg],"screen") == 0) { diff --git a/src/fix_property_atom.cpp b/src/fix_property_atom.cpp index 555114e4f9..f1262f88c7 100644 --- a/src/fix_property_atom.cpp +++ b/src/fix_property_atom.cpp @@ -18,6 +18,8 @@ #include "comm.h" #include "memory.h" #include "error.h" +#include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -217,14 +219,11 @@ void FixPropertyAtom::read_data_section(char *keyword, int n, char *buf, next = strchr(buf,'\n'); *next = '\0'; - int nwords = atom->count_words(buf); + int nwords = utils::trim_and_count_words(buf); *next = '\n'; - if (nwords != nvalue+1) { - char str[128]; - snprintf(str,128,"Incorrect %s format in data file",keyword); - error->all(FLERR,str); - } + if (nwords != nvalue+1) + error->all(FLERR,fmt::format("Incorrect {} format in data file",keyword)); char **values = new char*[nwords]; @@ -238,28 +237,21 @@ void FixPropertyAtom::read_data_section(char *keyword, int n, char *buf, next = strchr(buf,'\n'); values[0] = strtok(buf," \t\n\r\f"); - if (values[0] == NULL) { - char str[128]; - snprintf(str,128,"Too few lines in %s section of data file",keyword); - error->one(FLERR,str); - } + if (values[0] == NULL) + error->all(FLERR,fmt::format("Too few lines in {} section of data file",keyword)); + int format_ok = 1; for (j = 1; j < nwords; j++) { values[j] = strtok(NULL," \t\n\r\f"); if (values[j] == NULL) format_ok = 0; } - if (!format_ok) { - char str[128]; - snprintf(str,128,"Incorrect %s format in data file",keyword); - error->all(FLERR,str); - } + if (!format_ok) + error->all(FLERR,fmt::format("Incorrect {} format in data file",keyword)); itag = ATOTAGINT(values[0]) + id_offset; - if (itag <= 0 || itag > map_tag_max) { - char str[128]; - snprintf(str,128,"Invalid atom ID in %s section of data file",keyword); - error->one(FLERR,str); - } + if (itag <= 0 || itag > map_tag_max) + error->all(FLERR,fmt::format("Invalid atom ID {} in {} section of " + "data file",itag, keyword)); // assign words in line to per-atom vectors diff --git a/src/fix_restrain.cpp b/src/fix_restrain.cpp index 2214cbe80c..07ff7dc13c 100644 --- a/src/fix_restrain.cpp +++ b/src/fix_restrain.cpp @@ -29,6 +29,7 @@ #include "math_const.h" #include "memory.h" #include "error.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -82,8 +83,8 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[iarg],"bond") == 0) { if (iarg+6 > narg) error->all(FLERR,"Illegal fix restrain command"); rstyle[nrestrain] = BOND; - ids[nrestrain][0] = force->inumeric(FLERR,arg[iarg+1]); - ids[nrestrain][1] = force->inumeric(FLERR,arg[iarg+2]); + ids[nrestrain][0] = force->tnumeric(FLERR,arg[iarg+1]); + ids[nrestrain][1] = force->tnumeric(FLERR,arg[iarg+2]); kstart[nrestrain] = force->numeric(FLERR,arg[iarg+3]); kstop[nrestrain] = force->numeric(FLERR,arg[iarg+4]); deqstart[nrestrain] = force->numeric(FLERR,arg[iarg+5]); @@ -97,8 +98,8 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : } else if (strcmp(arg[iarg],"lbound") == 0) { if (iarg+6 > narg) error->all(FLERR,"Illegal fix restrain command"); rstyle[nrestrain] = LBOUND; - ids[nrestrain][0] = force->inumeric(FLERR,arg[iarg+1]); - ids[nrestrain][1] = force->inumeric(FLERR,arg[iarg+2]); + ids[nrestrain][0] = force->tnumeric(FLERR,arg[iarg+1]); + ids[nrestrain][1] = force->tnumeric(FLERR,arg[iarg+2]); kstart[nrestrain] = force->numeric(FLERR,arg[iarg+3]); kstop[nrestrain] = force->numeric(FLERR,arg[iarg+4]); deqstart[nrestrain] = force->numeric(FLERR,arg[iarg+5]); @@ -112,9 +113,9 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : } else if (strcmp(arg[iarg],"angle") == 0) { if (iarg+7 > narg) error->all(FLERR,"Illegal fix restrain command"); rstyle[nrestrain] = ANGLE; - ids[nrestrain][0] = force->inumeric(FLERR,arg[iarg+1]); - ids[nrestrain][1] = force->inumeric(FLERR,arg[iarg+2]); - ids[nrestrain][2] = force->inumeric(FLERR,arg[iarg+3]); + ids[nrestrain][0] = force->tnumeric(FLERR,arg[iarg+1]); + ids[nrestrain][1] = force->tnumeric(FLERR,arg[iarg+2]); + ids[nrestrain][2] = force->tnumeric(FLERR,arg[iarg+3]); kstart[nrestrain] = force->numeric(FLERR,arg[iarg+4]); kstop[nrestrain] = force->numeric(FLERR,arg[iarg+5]); target[nrestrain] = force->numeric(FLERR,arg[iarg+6]); @@ -124,10 +125,10 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : if (iarg+8 > narg) error->all(FLERR,"Illegal fix restrain command"); rstyle[nrestrain] = DIHEDRAL; mult[nrestrain] = 1; - ids[nrestrain][0] = force->inumeric(FLERR,arg[iarg+1]); - ids[nrestrain][1] = force->inumeric(FLERR,arg[iarg+2]); - ids[nrestrain][2] = force->inumeric(FLERR,arg[iarg+3]); - ids[nrestrain][3] = force->inumeric(FLERR,arg[iarg+4]); + ids[nrestrain][0] = force->tnumeric(FLERR,arg[iarg+1]); + ids[nrestrain][1] = force->tnumeric(FLERR,arg[iarg+2]); + ids[nrestrain][2] = force->tnumeric(FLERR,arg[iarg+3]); + ids[nrestrain][3] = force->tnumeric(FLERR,arg[iarg+4]); kstart[nrestrain] = force->numeric(FLERR,arg[iarg+5]); kstop[nrestrain] = force->numeric(FLERR,arg[iarg+6]); target[nrestrain] = force->numeric(FLERR,arg[iarg+7]); @@ -271,24 +272,16 @@ void FixRestrain::restrain_bond(int m) if (newton_bond) { if (i2 == -1 || i2 >= nlocal) return; - if (i1 == -1) { - char str[128]; - sprintf(str, - "Restrain atoms %d %d missing on proc %d at step " BIGINT_FORMAT, - ids[m][0],ids[m][1], - comm->me,update->ntimestep); - error->one(FLERR,str); - } + if (i1 == -1) + error->one(FLERR,fmt::format("Restrain atoms {} {} missing on " + "proc {} at step {}", ids[m][0],ids[m][1], + comm->me,update->ntimestep)); } else { if ((i1 == -1 || i1 >= nlocal) && (i2 == -1 || i2 >= nlocal)) return; - if (i1 == -1 || i2 == -1) { - char str[128]; - sprintf(str, - "Restrain atoms %d %d missing on proc %d at step " BIGINT_FORMAT, - ids[m][0],ids[m][1], - comm->me,update->ntimestep); - error->one(FLERR,str); - } + if (i1 == -1 || i2 == -1) + error->one(FLERR,fmt::format("Restrain atoms {} {} missing on " + "proc {} at step {}", ids[m][0],ids[m][1], + comm->me,update->ntimestep)); } delx = x[i1][0] - x[i2][0]; @@ -352,24 +345,16 @@ void FixRestrain::restrain_lbound(int m) if (newton_bond) { if (i2 == -1 || i2 >= nlocal) return; - if (i1 == -1) { - char str[128]; - sprintf(str, - "Restrain atoms %d %d missing on proc %d at step " BIGINT_FORMAT, - ids[m][0],ids[m][1], - comm->me,update->ntimestep); - error->one(FLERR,str); - } + if (i1 == -1) + error->one(FLERR,fmt::format("Restrain atoms {} {} missing on " + "proc {} at step {}",ids[m][0],ids[m][1], + comm->me,update->ntimestep)); } else { if ((i1 == -1 || i1 >= nlocal) && (i2 == -1 || i2 >= nlocal)) return; - if (i1 == -1 || i2 == -1) { - char str[128]; - sprintf(str, - "Restrain atoms %d %d missing on proc %d at step " BIGINT_FORMAT, - ids[m][0],ids[m][1], - comm->me,update->ntimestep); - error->one(FLERR,str); - } + if (i1 == -1 || i2 == -1) + error->one(FLERR,fmt::format("Restrain atoms {} {} missing on " + "proc {} at step {}",ids[m][0],ids[m][1], + comm->me,update->ntimestep)); } delx = x[i1][0] - x[i2][0]; @@ -442,27 +427,17 @@ void FixRestrain::restrain_angle(int m) if (newton_bond) { if (i2 == -1 || i2 >= nlocal) return; - if (i1 == -1 || i3 == -1) { - char str[128]; - sprintf(str, - "Restrain atoms %d %d %d missing on proc %d at step " - BIGINT_FORMAT, - ids[m][0],ids[m][1],ids[m][2], - comm->me,update->ntimestep); - error->one(FLERR,str); - } + if (i1 == -1 || i3 == -1) + error->one(FLERR,fmt::format("Restrain atoms {} {} {} missing on " + "proc {} at step {}",ids[m][0],ids[m][1], + ids[m][2],comm->me,update->ntimestep)); } else { if ((i1 == -1 || i1 >= nlocal) && (i2 == -1 || i2 >= nlocal) && (i3 == -1 || i3 >= nlocal)) return; - if (i1 == -1 || i2 == -1 || i3 == -1) { - char str[128]; - sprintf(str, - "Restrain atoms %d %d %d missing on proc %d at step " - BIGINT_FORMAT, - ids[m][0],ids[m][1],ids[m][2], - comm->me,update->ntimestep); - error->one(FLERR,str); - } + if (i1 == -1 || i2 == -1 || i3 == -1) + error->one(FLERR,fmt::format("Restrain atoms {} {} {} missing on " + "proc {} at step {}",ids[m][0],ids[m][1], + ids[m][2],comm->me,update->ntimestep)); } // 1st bond @@ -572,27 +547,19 @@ void FixRestrain::restrain_dihedral(int m) if (newton_bond) { if (i2 == -1 || i2 >= nlocal) return; - if (i1 == -1 || i3 == -1 || i4 == -1) { - char str[128]; - sprintf(str, - "Restrain atoms %d %d %d %d missing on proc %d at step " - BIGINT_FORMAT, - ids[m][0],ids[m][1],ids[m][2],ids[m][3], - comm->me,update->ntimestep); - error->one(FLERR,str); - } + if (i1 == -1 || i3 == -1 || i4 == -1) + error->one(FLERR,fmt::format("Restrain atoms {} {} {} {} missing on " + "proc {} at step {}",ids[m][0],ids[m][1], + ids[m][2],ids[m][3],comm->me, + update->ntimestep)); } else { if ((i1 == -1 || i1 >= nlocal) && (i2 == -1 || i2 >= nlocal) && (i3 == -1 || i3 >= nlocal) && (i4 == -1 || i3 >= nlocal)) return; - if (i1 == -1 || i2 == -1 || i3 == -1 || i4 == -1) { - char str[128]; - sprintf(str, - "Restrain atoms %d %d %d %d missing on proc %d at step " - BIGINT_FORMAT, - ids[m][0],ids[m][1],ids[m][2],ids[m][3], - comm->me,update->ntimestep); - error->one(FLERR,str); - } + if (i1 == -1 || i2 == -1 || i3 == -1 || i4 == -1) + error->one(FLERR,fmt::format("Restrain atoms {} {} {} {} missing on " + "proc {} at step {}",ids[m][0],ids[m][1], + ids[m][2],ids[m][3],comm->me, + update->ntimestep)); } // 1st bond @@ -648,21 +615,18 @@ void FixRestrain::restrain_dihedral(int m) int me; MPI_Comm_rank(world,&me); if (screen) { - char str[128]; - sprintf(str,"Restrain problem: %d " BIGINT_FORMAT " " - TAGINT_FORMAT " " TAGINT_FORMAT " " - TAGINT_FORMAT " " TAGINT_FORMAT, - me,update->ntimestep, - atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]); + std::string str = fmt::format("Restrain problem: {} {} {} {} {} {}", + me,update->ntimestep,atom->tag[i1], + atom->tag[i2],atom->tag[i3],atom->tag[i4]); error->warning(FLERR,str); - fprintf(screen," 1st atom: %d %g %g %g\n", - me,x[i1][0],x[i1][1],x[i1][2]); - fprintf(screen," 2nd atom: %d %g %g %g\n", - me,x[i2][0],x[i2][1],x[i2][2]); - fprintf(screen," 3rd atom: %d %g %g %g\n", - me,x[i3][0],x[i3][1],x[i3][2]); - fprintf(screen," 4th atom: %d %g %g %g\n", - me,x[i4][0],x[i4][1],x[i4][2]); + fmt::print(screen," 1st atom: {} {} {} {}\n" + " 2nd atom: {} {} {} {}\n" + " 3rd atom: {} {} {} {}\n" + " 4th atom: {} {} {} {}\n", + comm->me,x[i1][0],x[i1][1],x[i1][2], + comm->me,x[i2][0],x[i2][1],x[i2][2], + comm->me,x[i3][0],x[i3][1],x[i3][2], + comm->me,x[i4][0],x[i4][1],x[i4][2]); } } diff --git a/src/fix_restrain.h b/src/fix_restrain.h index 3497b7daf5..fa78f676e3 100644 --- a/src/fix_restrain.h +++ b/src/fix_restrain.h @@ -43,7 +43,7 @@ class FixRestrain : public Fix { int nrestrain,maxrestrain; int *rstyle; int *mult; - int **ids; + tagint **ids; double *kstart,*kstop,*deqstart,*deqstop,*target; double *cos_target,*sin_target; double energy,energy_all; diff --git a/src/fix_tmd.cpp b/src/fix_tmd.cpp index 604660e7c4..5db7bacbc6 100644 --- a/src/fix_tmd.cpp +++ b/src/fix_tmd.cpp @@ -30,6 +30,7 @@ #include "memory.h" #include "error.h" #include "utils.h" +#include "fmt/format.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -73,11 +74,9 @@ nfileevery(0), fp(NULL), xf(NULL), xold(NULL) if (narg != 7) error->all(FLERR,"Illegal fix tmd command"); if (me == 0) { fp = fopen(arg[6],"w"); - if (fp == NULL) { - char str[128]; - snprintf(str,128,"Cannot open fix tmd file %s",arg[6]); - error->one(FLERR,str); - } + if (fp == NULL) + error->one(FLERR,fmt::format("Cannot open fix tmd file {}: {}", + arg[6], utils::getsyserror())); fprintf(fp,"%s %s\n","# Step rho_target rho_old gamma_back", "gamma_forward lambda work_lambda work_analytical"); } @@ -447,12 +446,12 @@ void FixTMD::readfile(char *file) zprd = hi - lo; bufptr = next + 1; continue; - } else if (atom->count_words(bufptr) == 4) { + } else if (utils::trim_and_count_words(bufptr) == 4) { if (xprd >= 0.0 || yprd >= 0.0 || zprd >= 0.0) error->all(FLERR,"Incorrect format in TMD target file"); imageflag = 0; firstline = 0; - } else if (atom->count_words(bufptr) == 7) { + } else if (utils::trim_and_count_words(bufptr) == 7) { if (xprd < 0.0 || yprd < 0.0 || zprd < 0.0) error->all(FLERR,"Incorrect format in TMD target file"); imageflag = 1; diff --git a/src/fmt/chrono.h b/src/fmt/chrono.h new file mode 100644 index 0000000000..421d464ad8 --- /dev/null +++ b/src/fmt/chrono.h @@ -0,0 +1,1119 @@ +// Formatting library for C++ - chrono support +// +// Copyright (c) 2012 - present, Victor Zverovich +// All rights reserved. +// +// For the license information refer to format.h. + +#ifndef FMT_CHRONO_H_ +#define FMT_CHRONO_H_ + +#include +#include +#include +#include + +#include "format.h" +#include "locale.h" + +FMT_BEGIN_NAMESPACE + +// Enable safe chrono durations, unless explicitly disabled. +#ifndef FMT_SAFE_DURATION_CAST +# define FMT_SAFE_DURATION_CAST 1 +#endif +#if FMT_SAFE_DURATION_CAST + +// For conversion between std::chrono::durations without undefined +// behaviour or erroneous results. +// This is a stripped down version of duration_cast, for inclusion in fmt. +// See https://github.com/pauldreik/safe_duration_cast +// +// Copyright Paul Dreik 2019 +namespace safe_duration_cast { + +template ::value && + std::numeric_limits::is_signed == + std::numeric_limits::is_signed)> +FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { + ec = 0; + using F = std::numeric_limits; + using T = std::numeric_limits; + static_assert(F::is_integer, "From must be integral"); + static_assert(T::is_integer, "To must be integral"); + + // A and B are both signed, or both unsigned. + if (F::digits <= T::digits) { + // From fits in To without any problem. + } else { + // From does not always fit in To, resort to a dynamic check. + if (from < T::min() || from > T::max()) { + // outside range. + ec = 1; + return {}; + } + } + return static_cast(from); +} + +/** + * converts From to To, without loss. If the dynamic value of from + * can't be converted to To without loss, ec is set. + */ +template ::value && + std::numeric_limits::is_signed != + std::numeric_limits::is_signed)> +FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { + ec = 0; + using F = std::numeric_limits; + using T = std::numeric_limits; + static_assert(F::is_integer, "From must be integral"); + static_assert(T::is_integer, "To must be integral"); + + if (F::is_signed && !T::is_signed) { + // From may be negative, not allowed! + if (fmt::internal::is_negative(from)) { + ec = 1; + return {}; + } + + // From is positive. Can it always fit in To? + if (F::digits <= T::digits) { + // yes, From always fits in To. + } else { + // from may not fit in To, we have to do a dynamic check + if (from > static_cast(T::max())) { + ec = 1; + return {}; + } + } + } + + if (!F::is_signed && T::is_signed) { + // can from be held in To? + if (F::digits < T::digits) { + // yes, From always fits in To. + } else { + // from may not fit in To, we have to do a dynamic check + if (from > static_cast(T::max())) { + // outside range. + ec = 1; + return {}; + } + } + } + + // reaching here means all is ok for lossless conversion. + return static_cast(from); + +} // function + +template ::value)> +FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { + ec = 0; + return from; +} // function + +// clang-format off +/** + * converts From to To if possible, otherwise ec is set. + * + * input | output + * ---------------------------------|--------------- + * NaN | NaN + * Inf | Inf + * normal, fits in output | converted (possibly lossy) + * normal, does not fit in output | ec is set + * subnormal | best effort + * -Inf | -Inf + */ +// clang-format on +template ::value)> +FMT_CONSTEXPR To safe_float_conversion(const From from, int& ec) { + ec = 0; + using T = std::numeric_limits; + static_assert(std::is_floating_point::value, "From must be floating"); + static_assert(std::is_floating_point::value, "To must be floating"); + + // catch the only happy case + if (std::isfinite(from)) { + if (from >= T::lowest() && from <= T::max()) { + return static_cast(from); + } + // not within range. + ec = 1; + return {}; + } + + // nan and inf will be preserved + return static_cast(from); +} // function + +template ::value)> +FMT_CONSTEXPR To safe_float_conversion(const From from, int& ec) { + ec = 0; + static_assert(std::is_floating_point::value, "From must be floating"); + return from; +} + +/** + * safe duration cast between integral durations + */ +template ::value), + FMT_ENABLE_IF(std::is_integral::value)> +To safe_duration_cast(std::chrono::duration from, + int& ec) { + using From = std::chrono::duration; + ec = 0; + // the basic idea is that we need to convert from count() in the from type + // to count() in the To type, by multiplying it with this: + struct Factor + : std::ratio_divide {}; + + static_assert(Factor::num > 0, "num must be positive"); + static_assert(Factor::den > 0, "den must be positive"); + + // the conversion is like this: multiply from.count() with Factor::num + // /Factor::den and convert it to To::rep, all this without + // overflow/underflow. let's start by finding a suitable type that can hold + // both To, From and Factor::num + using IntermediateRep = + typename std::common_type::type; + + // safe conversion to IntermediateRep + IntermediateRep count = + lossless_integral_conversion(from.count(), ec); + if (ec) { + return {}; + } + // multiply with Factor::num without overflow or underflow + if (Factor::num != 1) { + const auto max1 = internal::max_value() / Factor::num; + if (count > max1) { + ec = 1; + return {}; + } + const auto min1 = std::numeric_limits::min() / Factor::num; + if (count < min1) { + ec = 1; + return {}; + } + count *= Factor::num; + } + + // this can't go wrong, right? den>0 is checked earlier. + if (Factor::den != 1) { + count /= Factor::den; + } + // convert to the to type, safely + using ToRep = typename To::rep; + const ToRep tocount = lossless_integral_conversion(count, ec); + if (ec) { + return {}; + } + return To{tocount}; +} + +/** + * safe duration_cast between floating point durations + */ +template ::value), + FMT_ENABLE_IF(std::is_floating_point::value)> +To safe_duration_cast(std::chrono::duration from, + int& ec) { + using From = std::chrono::duration; + ec = 0; + if (std::isnan(from.count())) { + // nan in, gives nan out. easy. + return To{std::numeric_limits::quiet_NaN()}; + } + // maybe we should also check if from is denormal, and decide what to do about + // it. + + // +-inf should be preserved. + if (std::isinf(from.count())) { + return To{from.count()}; + } + + // the basic idea is that we need to convert from count() in the from type + // to count() in the To type, by multiplying it with this: + struct Factor + : std::ratio_divide {}; + + static_assert(Factor::num > 0, "num must be positive"); + static_assert(Factor::den > 0, "den must be positive"); + + // the conversion is like this: multiply from.count() with Factor::num + // /Factor::den and convert it to To::rep, all this without + // overflow/underflow. let's start by finding a suitable type that can hold + // both To, From and Factor::num + using IntermediateRep = + typename std::common_type::type; + + // force conversion of From::rep -> IntermediateRep to be safe, + // even if it will never happen be narrowing in this context. + IntermediateRep count = + safe_float_conversion(from.count(), ec); + if (ec) { + return {}; + } + + // multiply with Factor::num without overflow or underflow + if (Factor::num != 1) { + constexpr auto max1 = internal::max_value() / + static_cast(Factor::num); + if (count > max1) { + ec = 1; + return {}; + } + constexpr auto min1 = std::numeric_limits::lowest() / + static_cast(Factor::num); + if (count < min1) { + ec = 1; + return {}; + } + count *= static_cast(Factor::num); + } + + // this can't go wrong, right? den>0 is checked earlier. + if (Factor::den != 1) { + using common_t = typename std::common_type::type; + count /= static_cast(Factor::den); + } + + // convert to the to type, safely + using ToRep = typename To::rep; + + const ToRep tocount = safe_float_conversion(count, ec); + if (ec) { + return {}; + } + return To{tocount}; +} +} // namespace safe_duration_cast +#endif + +// Prevents expansion of a preceding token as a function-style macro. +// Usage: f FMT_NOMACRO() +#define FMT_NOMACRO + +namespace internal { +inline null<> localtime_r FMT_NOMACRO(...) { return null<>(); } +inline null<> localtime_s(...) { return null<>(); } +inline null<> gmtime_r(...) { return null<>(); } +inline null<> gmtime_s(...) { return null<>(); } +} // namespace internal + +// Thread-safe replacement for std::localtime +inline std::tm localtime(std::time_t time) { + struct dispatcher { + std::time_t time_; + std::tm tm_; + + dispatcher(std::time_t t) : time_(t) {} + + bool run() { + using namespace fmt::internal; + return handle(localtime_r(&time_, &tm_)); + } + + bool handle(std::tm* tm) { return tm != nullptr; } + + bool handle(internal::null<>) { + using namespace fmt::internal; + return fallback(localtime_s(&tm_, &time_)); + } + + bool fallback(int res) { return res == 0; } + +#if !FMT_MSC_VER + bool fallback(internal::null<>) { + using namespace fmt::internal; + std::tm* tm = std::localtime(&time_); + if (tm) tm_ = *tm; + return tm != nullptr; + } +#endif + }; + dispatcher lt(time); + // Too big time values may be unsupported. + if (!lt.run()) FMT_THROW(format_error("time_t value out of range")); + return lt.tm_; +} + +// Thread-safe replacement for std::gmtime +inline std::tm gmtime(std::time_t time) { + struct dispatcher { + std::time_t time_; + std::tm tm_; + + dispatcher(std::time_t t) : time_(t) {} + + bool run() { + using namespace fmt::internal; + return handle(gmtime_r(&time_, &tm_)); + } + + bool handle(std::tm* tm) { return tm != nullptr; } + + bool handle(internal::null<>) { + using namespace fmt::internal; + return fallback(gmtime_s(&tm_, &time_)); + } + + bool fallback(int res) { return res == 0; } + +#if !FMT_MSC_VER + bool fallback(internal::null<>) { + std::tm* tm = std::gmtime(&time_); + if (tm) tm_ = *tm; + return tm != nullptr; + } +#endif + }; + dispatcher gt(time); + // Too big time values may be unsupported. + if (!gt.run()) FMT_THROW(format_error("time_t value out of range")); + return gt.tm_; +} + +namespace internal { +inline std::size_t strftime(char* str, std::size_t count, const char* format, + const std::tm* time) { + return std::strftime(str, count, format, time); +} + +inline std::size_t strftime(wchar_t* str, std::size_t count, + const wchar_t* format, const std::tm* time) { + return std::wcsftime(str, count, format, time); +} +} // namespace internal + +template struct formatter { + template + auto parse(ParseContext& ctx) -> decltype(ctx.begin()) { + auto it = ctx.begin(); + if (it != ctx.end() && *it == ':') ++it; + auto end = it; + while (end != ctx.end() && *end != '}') ++end; + tm_format.reserve(internal::to_unsigned(end - it + 1)); + tm_format.append(it, end); + tm_format.push_back('\0'); + return end; + } + + template + auto format(const std::tm& tm, FormatContext& ctx) -> decltype(ctx.out()) { + basic_memory_buffer buf; + std::size_t start = buf.size(); + for (;;) { + std::size_t size = buf.capacity() - start; + std::size_t count = + internal::strftime(&buf[start], size, &tm_format[0], &tm); + if (count != 0) { + buf.resize(start + count); + break; + } + if (size >= tm_format.size() * 256) { + // If the buffer is 256 times larger than the format string, assume + // that `strftime` gives an empty result. There doesn't seem to be a + // better way to distinguish the two cases: + // https://github.com/fmtlib/fmt/issues/367 + break; + } + const std::size_t MIN_GROWTH = 10; + buf.reserve(buf.capacity() + (size > MIN_GROWTH ? size : MIN_GROWTH)); + } + return std::copy(buf.begin(), buf.end(), ctx.out()); + } + + basic_memory_buffer tm_format; +}; + +namespace internal { +template FMT_CONSTEXPR const char* get_units() { + return nullptr; +} +template <> FMT_CONSTEXPR const char* get_units() { return "as"; } +template <> FMT_CONSTEXPR const char* get_units() { return "fs"; } +template <> FMT_CONSTEXPR const char* get_units() { return "ps"; } +template <> FMT_CONSTEXPR const char* get_units() { return "ns"; } +template <> FMT_CONSTEXPR const char* get_units() { return "µs"; } +template <> FMT_CONSTEXPR const char* get_units() { return "ms"; } +template <> FMT_CONSTEXPR const char* get_units() { return "cs"; } +template <> FMT_CONSTEXPR const char* get_units() { return "ds"; } +template <> FMT_CONSTEXPR const char* get_units>() { return "s"; } +template <> FMT_CONSTEXPR const char* get_units() { return "das"; } +template <> FMT_CONSTEXPR const char* get_units() { return "hs"; } +template <> FMT_CONSTEXPR const char* get_units() { return "ks"; } +template <> FMT_CONSTEXPR const char* get_units() { return "Ms"; } +template <> FMT_CONSTEXPR const char* get_units() { return "Gs"; } +template <> FMT_CONSTEXPR const char* get_units() { return "Ts"; } +template <> FMT_CONSTEXPR const char* get_units() { return "Ps"; } +template <> FMT_CONSTEXPR const char* get_units() { return "Es"; } +template <> FMT_CONSTEXPR const char* get_units>() { + return "m"; +} +template <> FMT_CONSTEXPR const char* get_units>() { + return "h"; +} + +enum class numeric_system { + standard, + // Alternative numeric system, e.g. 十二 instead of 12 in ja_JP locale. + alternative +}; + +// Parses a put_time-like format string and invokes handler actions. +template +FMT_CONSTEXPR const Char* parse_chrono_format(const Char* begin, + const Char* end, + Handler&& handler) { + auto ptr = begin; + while (ptr != end) { + auto c = *ptr; + if (c == '}') break; + if (c != '%') { + ++ptr; + continue; + } + if (begin != ptr) handler.on_text(begin, ptr); + ++ptr; // consume '%' + if (ptr == end) FMT_THROW(format_error("invalid format")); + c = *ptr++; + switch (c) { + case '%': + handler.on_text(ptr - 1, ptr); + break; + case 'n': { + const Char newline[] = {'\n'}; + handler.on_text(newline, newline + 1); + break; + } + case 't': { + const Char tab[] = {'\t'}; + handler.on_text(tab, tab + 1); + break; + } + // Day of the week: + case 'a': + handler.on_abbr_weekday(); + break; + case 'A': + handler.on_full_weekday(); + break; + case 'w': + handler.on_dec0_weekday(numeric_system::standard); + break; + case 'u': + handler.on_dec1_weekday(numeric_system::standard); + break; + // Month: + case 'b': + handler.on_abbr_month(); + break; + case 'B': + handler.on_full_month(); + break; + // Hour, minute, second: + case 'H': + handler.on_24_hour(numeric_system::standard); + break; + case 'I': + handler.on_12_hour(numeric_system::standard); + break; + case 'M': + handler.on_minute(numeric_system::standard); + break; + case 'S': + handler.on_second(numeric_system::standard); + break; + // Other: + case 'c': + handler.on_datetime(numeric_system::standard); + break; + case 'x': + handler.on_loc_date(numeric_system::standard); + break; + case 'X': + handler.on_loc_time(numeric_system::standard); + break; + case 'D': + handler.on_us_date(); + break; + case 'F': + handler.on_iso_date(); + break; + case 'r': + handler.on_12_hour_time(); + break; + case 'R': + handler.on_24_hour_time(); + break; + case 'T': + handler.on_iso_time(); + break; + case 'p': + handler.on_am_pm(); + break; + case 'Q': + handler.on_duration_value(); + break; + case 'q': + handler.on_duration_unit(); + break; + case 'z': + handler.on_utc_offset(); + break; + case 'Z': + handler.on_tz_name(); + break; + // Alternative representation: + case 'E': { + if (ptr == end) FMT_THROW(format_error("invalid format")); + c = *ptr++; + switch (c) { + case 'c': + handler.on_datetime(numeric_system::alternative); + break; + case 'x': + handler.on_loc_date(numeric_system::alternative); + break; + case 'X': + handler.on_loc_time(numeric_system::alternative); + break; + default: + FMT_THROW(format_error("invalid format")); + } + break; + } + case 'O': + if (ptr == end) FMT_THROW(format_error("invalid format")); + c = *ptr++; + switch (c) { + case 'w': + handler.on_dec0_weekday(numeric_system::alternative); + break; + case 'u': + handler.on_dec1_weekday(numeric_system::alternative); + break; + case 'H': + handler.on_24_hour(numeric_system::alternative); + break; + case 'I': + handler.on_12_hour(numeric_system::alternative); + break; + case 'M': + handler.on_minute(numeric_system::alternative); + break; + case 'S': + handler.on_second(numeric_system::alternative); + break; + default: + FMT_THROW(format_error("invalid format")); + } + break; + default: + FMT_THROW(format_error("invalid format")); + } + begin = ptr; + } + if (begin != ptr) handler.on_text(begin, ptr); + return ptr; +} + +struct chrono_format_checker { + FMT_NORETURN void report_no_date() { FMT_THROW(format_error("no date")); } + + template void on_text(const Char*, const Char*) {} + FMT_NORETURN void on_abbr_weekday() { report_no_date(); } + FMT_NORETURN void on_full_weekday() { report_no_date(); } + FMT_NORETURN void on_dec0_weekday(numeric_system) { report_no_date(); } + FMT_NORETURN void on_dec1_weekday(numeric_system) { report_no_date(); } + FMT_NORETURN void on_abbr_month() { report_no_date(); } + FMT_NORETURN void on_full_month() { report_no_date(); } + void on_24_hour(numeric_system) {} + void on_12_hour(numeric_system) {} + void on_minute(numeric_system) {} + void on_second(numeric_system) {} + FMT_NORETURN void on_datetime(numeric_system) { report_no_date(); } + FMT_NORETURN void on_loc_date(numeric_system) { report_no_date(); } + FMT_NORETURN void on_loc_time(numeric_system) { report_no_date(); } + FMT_NORETURN void on_us_date() { report_no_date(); } + FMT_NORETURN void on_iso_date() { report_no_date(); } + void on_12_hour_time() {} + void on_24_hour_time() {} + void on_iso_time() {} + void on_am_pm() {} + void on_duration_value() {} + void on_duration_unit() {} + FMT_NORETURN void on_utc_offset() { report_no_date(); } + FMT_NORETURN void on_tz_name() { report_no_date(); } +}; + +template ::value)> +inline bool isnan(T) { + return false; +} +template ::value)> +inline bool isnan(T value) { + return std::isnan(value); +} + +template ::value)> +inline bool isfinite(T) { + return true; +} +template ::value)> +inline bool isfinite(T value) { + return std::isfinite(value); +} + +// Converts value to int and checks that it's in the range [0, upper). +template ::value)> +inline int to_nonnegative_int(T value, int upper) { + FMT_ASSERT(value >= 0 && value <= upper, "invalid value"); + (void)upper; + return static_cast(value); +} +template ::value)> +inline int to_nonnegative_int(T value, int upper) { + FMT_ASSERT( + std::isnan(value) || (value >= 0 && value <= static_cast(upper)), + "invalid value"); + (void)upper; + return static_cast(value); +} + +template ::value)> +inline T mod(T x, int y) { + return x % static_cast(y); +} +template ::value)> +inline T mod(T x, int y) { + return std::fmod(x, static_cast(y)); +} + +// If T is an integral type, maps T to its unsigned counterpart, otherwise +// leaves it unchanged (unlike std::make_unsigned). +template ::value> +struct make_unsigned_or_unchanged { + using type = T; +}; + +template struct make_unsigned_or_unchanged { + using type = typename std::make_unsigned::type; +}; + +#if FMT_SAFE_DURATION_CAST +// throwing version of safe_duration_cast +template +To fmt_safe_duration_cast(std::chrono::duration from) { + int ec; + To to = safe_duration_cast::safe_duration_cast(from, ec); + if (ec) FMT_THROW(format_error("cannot format duration")); + return to; +} +#endif + +template ::value)> +inline std::chrono::duration get_milliseconds( + std::chrono::duration d) { + // this may overflow and/or the result may not fit in the + // target type. +#if FMT_SAFE_DURATION_CAST + using CommonSecondsType = + typename std::common_type::type; + const auto d_as_common = fmt_safe_duration_cast(d); + const auto d_as_whole_seconds = + fmt_safe_duration_cast(d_as_common); + // this conversion should be nonproblematic + const auto diff = d_as_common - d_as_whole_seconds; + const auto ms = + fmt_safe_duration_cast>(diff); + return ms; +#else + auto s = std::chrono::duration_cast(d); + return std::chrono::duration_cast(d - s); +#endif +} + +template ::value)> +inline std::chrono::duration get_milliseconds( + std::chrono::duration d) { + using common_type = typename std::common_type::type; + auto ms = mod(d.count() * static_cast(Period::num) / + static_cast(Period::den) * 1000, + 1000); + return std::chrono::duration(static_cast(ms)); +} + +template +OutputIt format_duration_value(OutputIt out, Rep val, int precision) { + const Char pr_f[] = {'{', ':', '.', '{', '}', 'f', '}', 0}; + if (precision >= 0) return format_to(out, pr_f, val, precision); + const Char fp_f[] = {'{', ':', 'g', '}', 0}; + const Char format[] = {'{', '}', 0}; + return format_to(out, std::is_floating_point::value ? fp_f : format, + val); +} + +template +OutputIt format_duration_unit(OutputIt out) { + if (const char* unit = get_units()) { + string_view s(unit); + if (const_check(std::is_same())) { + utf8_to_utf16 u(s); + return std::copy(u.c_str(), u.c_str() + u.size(), out); + } + return std::copy(s.begin(), s.end(), out); + } + const Char num_f[] = {'[', '{', '}', ']', 's', 0}; + if (Period::den == 1) return format_to(out, num_f, Period::num); + const Char num_def_f[] = {'[', '{', '}', '/', '{', '}', ']', 's', 0}; + return format_to(out, num_def_f, Period::num, Period::den); +} + +template +struct chrono_formatter { + FormatContext& context; + OutputIt out; + int precision; + // rep is unsigned to avoid overflow. + using rep = + conditional_t::value && sizeof(Rep) < sizeof(int), + unsigned, typename make_unsigned_or_unchanged::type>; + rep val; + using seconds = std::chrono::duration; + seconds s; + using milliseconds = std::chrono::duration; + bool negative; + + using char_type = typename FormatContext::char_type; + + explicit chrono_formatter(FormatContext& ctx, OutputIt o, + std::chrono::duration d) + : context(ctx), + out(o), + val(static_cast(d.count())), + negative(false) { + if (d.count() < 0) { + val = 0 - val; + negative = true; + } + + // this may overflow and/or the result may not fit in the + // target type. +#if FMT_SAFE_DURATION_CAST + // might need checked conversion (rep!=Rep) + auto tmpval = std::chrono::duration(val); + s = fmt_safe_duration_cast(tmpval); +#else + s = std::chrono::duration_cast( + std::chrono::duration(val)); +#endif + } + + // returns true if nan or inf, writes to out. + bool handle_nan_inf() { + if (isfinite(val)) { + return false; + } + if (isnan(val)) { + write_nan(); + return true; + } + // must be +-inf + if (val > 0) { + write_pinf(); + } else { + write_ninf(); + } + return true; + } + + Rep hour() const { return static_cast(mod((s.count() / 3600), 24)); } + + Rep hour12() const { + Rep hour = static_cast(mod((s.count() / 3600), 12)); + return hour <= 0 ? 12 : hour; + } + + Rep minute() const { return static_cast(mod((s.count() / 60), 60)); } + Rep second() const { return static_cast(mod(s.count(), 60)); } + + std::tm time() const { + auto time = std::tm(); + time.tm_hour = to_nonnegative_int(hour(), 24); + time.tm_min = to_nonnegative_int(minute(), 60); + time.tm_sec = to_nonnegative_int(second(), 60); + return time; + } + + void write_sign() { + if (negative) { + *out++ = '-'; + negative = false; + } + } + + void write(Rep value, int width) { + write_sign(); + if (isnan(value)) return write_nan(); + uint32_or_64_or_128_t n = + to_unsigned(to_nonnegative_int(value, max_value())); + int num_digits = internal::count_digits(n); + if (width > num_digits) out = std::fill_n(out, width - num_digits, '0'); + out = format_decimal(out, n, num_digits); + } + + void write_nan() { std::copy_n("nan", 3, out); } + void write_pinf() { std::copy_n("inf", 3, out); } + void write_ninf() { std::copy_n("-inf", 4, out); } + + void format_localized(const tm& time, char format, char modifier = 0) { + if (isnan(val)) return write_nan(); + auto locale = context.locale().template get(); + auto& facet = std::use_facet>(locale); + std::basic_ostringstream os; + os.imbue(locale); + facet.put(os, os, ' ', &time, format, modifier); + auto str = os.str(); + std::copy(str.begin(), str.end(), out); + } + + void on_text(const char_type* begin, const char_type* end) { + std::copy(begin, end, out); + } + + // These are not implemented because durations don't have date information. + void on_abbr_weekday() {} + void on_full_weekday() {} + void on_dec0_weekday(numeric_system) {} + void on_dec1_weekday(numeric_system) {} + void on_abbr_month() {} + void on_full_month() {} + void on_datetime(numeric_system) {} + void on_loc_date(numeric_system) {} + void on_loc_time(numeric_system) {} + void on_us_date() {} + void on_iso_date() {} + void on_utc_offset() {} + void on_tz_name() {} + + void on_24_hour(numeric_system ns) { + if (handle_nan_inf()) return; + + if (ns == numeric_system::standard) return write(hour(), 2); + auto time = tm(); + time.tm_hour = to_nonnegative_int(hour(), 24); + format_localized(time, 'H', 'O'); + } + + void on_12_hour(numeric_system ns) { + if (handle_nan_inf()) return; + + if (ns == numeric_system::standard) return write(hour12(), 2); + auto time = tm(); + time.tm_hour = to_nonnegative_int(hour12(), 12); + format_localized(time, 'I', 'O'); + } + + void on_minute(numeric_system ns) { + if (handle_nan_inf()) return; + + if (ns == numeric_system::standard) return write(minute(), 2); + auto time = tm(); + time.tm_min = to_nonnegative_int(minute(), 60); + format_localized(time, 'M', 'O'); + } + + void on_second(numeric_system ns) { + if (handle_nan_inf()) return; + + if (ns == numeric_system::standard) { + write(second(), 2); +#if FMT_SAFE_DURATION_CAST + // convert rep->Rep + using duration_rep = std::chrono::duration; + using duration_Rep = std::chrono::duration; + auto tmpval = fmt_safe_duration_cast(duration_rep{val}); +#else + auto tmpval = std::chrono::duration(val); +#endif + auto ms = get_milliseconds(tmpval); + if (ms != std::chrono::milliseconds(0)) { + *out++ = '.'; + write(ms.count(), 3); + } + return; + } + auto time = tm(); + time.tm_sec = to_nonnegative_int(second(), 60); + format_localized(time, 'S', 'O'); + } + + void on_12_hour_time() { + if (handle_nan_inf()) return; + format_localized(time(), 'r'); + } + + void on_24_hour_time() { + if (handle_nan_inf()) { + *out++ = ':'; + handle_nan_inf(); + return; + } + + write(hour(), 2); + *out++ = ':'; + write(minute(), 2); + } + + void on_iso_time() { + on_24_hour_time(); + *out++ = ':'; + if (handle_nan_inf()) return; + write(second(), 2); + } + + void on_am_pm() { + if (handle_nan_inf()) return; + format_localized(time(), 'p'); + } + + void on_duration_value() { + if (handle_nan_inf()) return; + write_sign(); + out = format_duration_value(out, val, precision); + } + + void on_duration_unit() { + out = format_duration_unit(out); + } +}; +} // namespace internal + +template +struct formatter, Char> { + private: + basic_format_specs specs; + int precision; + using arg_ref_type = internal::arg_ref; + arg_ref_type width_ref; + arg_ref_type precision_ref; + mutable basic_string_view format_str; + using duration = std::chrono::duration; + + struct spec_handler { + formatter& f; + basic_format_parse_context& context; + basic_string_view format_str; + + template FMT_CONSTEXPR arg_ref_type make_arg_ref(Id arg_id) { + context.check_arg_id(arg_id); + return arg_ref_type(arg_id); + } + + FMT_CONSTEXPR arg_ref_type make_arg_ref(basic_string_view arg_id) { + context.check_arg_id(arg_id); + return arg_ref_type(arg_id); + } + + FMT_CONSTEXPR arg_ref_type make_arg_ref(internal::auto_id) { + return arg_ref_type(context.next_arg_id()); + } + + void on_error(const char* msg) { FMT_THROW(format_error(msg)); } + void on_fill(basic_string_view fill) { f.specs.fill = fill; } + void on_align(align_t align) { f.specs.align = align; } + void on_width(int width) { f.specs.width = width; } + void on_precision(int _precision) { f.precision = _precision; } + void end_precision() {} + + template void on_dynamic_width(Id arg_id) { + f.width_ref = make_arg_ref(arg_id); + } + + template void on_dynamic_precision(Id arg_id) { + f.precision_ref = make_arg_ref(arg_id); + } + }; + + using iterator = typename basic_format_parse_context::iterator; + struct parse_range { + iterator begin; + iterator end; + }; + + FMT_CONSTEXPR parse_range do_parse(basic_format_parse_context& ctx) { + auto begin = ctx.begin(), end = ctx.end(); + if (begin == end || *begin == '}') return {begin, begin}; + spec_handler handler{*this, ctx, format_str}; + begin = internal::parse_align(begin, end, handler); + if (begin == end) return {begin, begin}; + begin = internal::parse_width(begin, end, handler); + if (begin == end) return {begin, begin}; + if (*begin == '.') { + if (std::is_floating_point::value) + begin = internal::parse_precision(begin, end, handler); + else + handler.on_error("precision not allowed for this argument type"); + } + end = parse_chrono_format(begin, end, internal::chrono_format_checker()); + return {begin, end}; + } + + public: + formatter() : precision(-1) {} + + FMT_CONSTEXPR auto parse(basic_format_parse_context& ctx) + -> decltype(ctx.begin()) { + auto range = do_parse(ctx); + format_str = basic_string_view( + &*range.begin, internal::to_unsigned(range.end - range.begin)); + return range.end; + } + + template + auto format(const duration& d, FormatContext& ctx) -> decltype(ctx.out()) { + auto begin = format_str.begin(), end = format_str.end(); + // As a possible future optimization, we could avoid extra copying if width + // is not specified. + basic_memory_buffer buf; + auto out = std::back_inserter(buf); + using range = internal::output_range; + internal::basic_writer w(range(ctx.out())); + internal::handle_dynamic_spec(specs.width, + width_ref, ctx); + internal::handle_dynamic_spec( + precision, precision_ref, ctx); + if (begin == end || *begin == '}') { + out = internal::format_duration_value(out, d.count(), precision); + internal::format_duration_unit(out); + } else { + internal::chrono_formatter f( + ctx, out, d); + f.precision = precision; + parse_chrono_format(begin, end, f); + } + w.write(buf.data(), buf.size(), specs); + return w.out(); + } +}; + +FMT_END_NAMESPACE + +#endif // FMT_CHRONO_H_ diff --git a/src/fmt/color.h b/src/fmt/color.h new file mode 100644 index 0000000000..96d9ab6b43 --- /dev/null +++ b/src/fmt/color.h @@ -0,0 +1,568 @@ +// Formatting library for C++ - color support +// +// Copyright (c) 2018 - present, Victor Zverovich and fmt contributors +// All rights reserved. +// +// For the license information refer to format.h. + +#ifndef FMT_COLOR_H_ +#define FMT_COLOR_H_ + +#include "format.h" + +FMT_BEGIN_NAMESPACE + +enum class color : uint32_t { + alice_blue = 0xF0F8FF, // rgb(240,248,255) + antique_white = 0xFAEBD7, // rgb(250,235,215) + aqua = 0x00FFFF, // rgb(0,255,255) + aquamarine = 0x7FFFD4, // rgb(127,255,212) + azure = 0xF0FFFF, // rgb(240,255,255) + beige = 0xF5F5DC, // rgb(245,245,220) + bisque = 0xFFE4C4, // rgb(255,228,196) + black = 0x000000, // rgb(0,0,0) + blanched_almond = 0xFFEBCD, // rgb(255,235,205) + blue = 0x0000FF, // rgb(0,0,255) + blue_violet = 0x8A2BE2, // rgb(138,43,226) + brown = 0xA52A2A, // rgb(165,42,42) + burly_wood = 0xDEB887, // rgb(222,184,135) + cadet_blue = 0x5F9EA0, // rgb(95,158,160) + chartreuse = 0x7FFF00, // rgb(127,255,0) + chocolate = 0xD2691E, // rgb(210,105,30) + coral = 0xFF7F50, // rgb(255,127,80) + cornflower_blue = 0x6495ED, // rgb(100,149,237) + cornsilk = 0xFFF8DC, // rgb(255,248,220) + crimson = 0xDC143C, // rgb(220,20,60) + cyan = 0x00FFFF, // rgb(0,255,255) + dark_blue = 0x00008B, // rgb(0,0,139) + dark_cyan = 0x008B8B, // rgb(0,139,139) + dark_golden_rod = 0xB8860B, // rgb(184,134,11) + dark_gray = 0xA9A9A9, // rgb(169,169,169) + dark_green = 0x006400, // rgb(0,100,0) + dark_khaki = 0xBDB76B, // rgb(189,183,107) + dark_magenta = 0x8B008B, // rgb(139,0,139) + dark_olive_green = 0x556B2F, // rgb(85,107,47) + dark_orange = 0xFF8C00, // rgb(255,140,0) + dark_orchid = 0x9932CC, // rgb(153,50,204) + dark_red = 0x8B0000, // rgb(139,0,0) + dark_salmon = 0xE9967A, // rgb(233,150,122) + dark_sea_green = 0x8FBC8F, // rgb(143,188,143) + dark_slate_blue = 0x483D8B, // rgb(72,61,139) + dark_slate_gray = 0x2F4F4F, // rgb(47,79,79) + dark_turquoise = 0x00CED1, // rgb(0,206,209) + dark_violet = 0x9400D3, // rgb(148,0,211) + deep_pink = 0xFF1493, // rgb(255,20,147) + deep_sky_blue = 0x00BFFF, // rgb(0,191,255) + dim_gray = 0x696969, // rgb(105,105,105) + dodger_blue = 0x1E90FF, // rgb(30,144,255) + fire_brick = 0xB22222, // rgb(178,34,34) + floral_white = 0xFFFAF0, // rgb(255,250,240) + forest_green = 0x228B22, // rgb(34,139,34) + fuchsia = 0xFF00FF, // rgb(255,0,255) + gainsboro = 0xDCDCDC, // rgb(220,220,220) + ghost_white = 0xF8F8FF, // rgb(248,248,255) + gold = 0xFFD700, // rgb(255,215,0) + golden_rod = 0xDAA520, // rgb(218,165,32) + gray = 0x808080, // rgb(128,128,128) + green = 0x008000, // rgb(0,128,0) + green_yellow = 0xADFF2F, // rgb(173,255,47) + honey_dew = 0xF0FFF0, // rgb(240,255,240) + hot_pink = 0xFF69B4, // rgb(255,105,180) + indian_red = 0xCD5C5C, // rgb(205,92,92) + indigo = 0x4B0082, // rgb(75,0,130) + ivory = 0xFFFFF0, // rgb(255,255,240) + khaki = 0xF0E68C, // rgb(240,230,140) + lavender = 0xE6E6FA, // rgb(230,230,250) + lavender_blush = 0xFFF0F5, // rgb(255,240,245) + lawn_green = 0x7CFC00, // rgb(124,252,0) + lemon_chiffon = 0xFFFACD, // rgb(255,250,205) + light_blue = 0xADD8E6, // rgb(173,216,230) + light_coral = 0xF08080, // rgb(240,128,128) + light_cyan = 0xE0FFFF, // rgb(224,255,255) + light_golden_rod_yellow = 0xFAFAD2, // rgb(250,250,210) + light_gray = 0xD3D3D3, // rgb(211,211,211) + light_green = 0x90EE90, // rgb(144,238,144) + light_pink = 0xFFB6C1, // rgb(255,182,193) + light_salmon = 0xFFA07A, // rgb(255,160,122) + light_sea_green = 0x20B2AA, // rgb(32,178,170) + light_sky_blue = 0x87CEFA, // rgb(135,206,250) + light_slate_gray = 0x778899, // rgb(119,136,153) + light_steel_blue = 0xB0C4DE, // rgb(176,196,222) + light_yellow = 0xFFFFE0, // rgb(255,255,224) + lime = 0x00FF00, // rgb(0,255,0) + lime_green = 0x32CD32, // rgb(50,205,50) + linen = 0xFAF0E6, // rgb(250,240,230) + magenta = 0xFF00FF, // rgb(255,0,255) + maroon = 0x800000, // rgb(128,0,0) + medium_aquamarine = 0x66CDAA, // rgb(102,205,170) + medium_blue = 0x0000CD, // rgb(0,0,205) + medium_orchid = 0xBA55D3, // rgb(186,85,211) + medium_purple = 0x9370DB, // rgb(147,112,219) + medium_sea_green = 0x3CB371, // rgb(60,179,113) + medium_slate_blue = 0x7B68EE, // rgb(123,104,238) + medium_spring_green = 0x00FA9A, // rgb(0,250,154) + medium_turquoise = 0x48D1CC, // rgb(72,209,204) + medium_violet_red = 0xC71585, // rgb(199,21,133) + midnight_blue = 0x191970, // rgb(25,25,112) + mint_cream = 0xF5FFFA, // rgb(245,255,250) + misty_rose = 0xFFE4E1, // rgb(255,228,225) + moccasin = 0xFFE4B5, // rgb(255,228,181) + navajo_white = 0xFFDEAD, // rgb(255,222,173) + navy = 0x000080, // rgb(0,0,128) + old_lace = 0xFDF5E6, // rgb(253,245,230) + olive = 0x808000, // rgb(128,128,0) + olive_drab = 0x6B8E23, // rgb(107,142,35) + orange = 0xFFA500, // rgb(255,165,0) + orange_red = 0xFF4500, // rgb(255,69,0) + orchid = 0xDA70D6, // rgb(218,112,214) + pale_golden_rod = 0xEEE8AA, // rgb(238,232,170) + pale_green = 0x98FB98, // rgb(152,251,152) + pale_turquoise = 0xAFEEEE, // rgb(175,238,238) + pale_violet_red = 0xDB7093, // rgb(219,112,147) + papaya_whip = 0xFFEFD5, // rgb(255,239,213) + peach_puff = 0xFFDAB9, // rgb(255,218,185) + peru = 0xCD853F, // rgb(205,133,63) + pink = 0xFFC0CB, // rgb(255,192,203) + plum = 0xDDA0DD, // rgb(221,160,221) + powder_blue = 0xB0E0E6, // rgb(176,224,230) + purple = 0x800080, // rgb(128,0,128) + rebecca_purple = 0x663399, // rgb(102,51,153) + red = 0xFF0000, // rgb(255,0,0) + rosy_brown = 0xBC8F8F, // rgb(188,143,143) + royal_blue = 0x4169E1, // rgb(65,105,225) + saddle_brown = 0x8B4513, // rgb(139,69,19) + salmon = 0xFA8072, // rgb(250,128,114) + sandy_brown = 0xF4A460, // rgb(244,164,96) + sea_green = 0x2E8B57, // rgb(46,139,87) + sea_shell = 0xFFF5EE, // rgb(255,245,238) + sienna = 0xA0522D, // rgb(160,82,45) + silver = 0xC0C0C0, // rgb(192,192,192) + sky_blue = 0x87CEEB, // rgb(135,206,235) + slate_blue = 0x6A5ACD, // rgb(106,90,205) + slate_gray = 0x708090, // rgb(112,128,144) + snow = 0xFFFAFA, // rgb(255,250,250) + spring_green = 0x00FF7F, // rgb(0,255,127) + steel_blue = 0x4682B4, // rgb(70,130,180) + tan = 0xD2B48C, // rgb(210,180,140) + teal = 0x008080, // rgb(0,128,128) + thistle = 0xD8BFD8, // rgb(216,191,216) + tomato = 0xFF6347, // rgb(255,99,71) + turquoise = 0x40E0D0, // rgb(64,224,208) + violet = 0xEE82EE, // rgb(238,130,238) + wheat = 0xF5DEB3, // rgb(245,222,179) + white = 0xFFFFFF, // rgb(255,255,255) + white_smoke = 0xF5F5F5, // rgb(245,245,245) + yellow = 0xFFFF00, // rgb(255,255,0) + yellow_green = 0x9ACD32 // rgb(154,205,50) +}; // enum class color + +enum class terminal_color : uint8_t { + black = 30, + red, + green, + yellow, + blue, + magenta, + cyan, + white, + bright_black = 90, + bright_red, + bright_green, + bright_yellow, + bright_blue, + bright_magenta, + bright_cyan, + bright_white +}; + +enum class emphasis : uint8_t { + bold = 1, + italic = 1 << 1, + underline = 1 << 2, + strikethrough = 1 << 3 +}; + +// rgb is a struct for red, green and blue colors. +// Using the name "rgb" makes some editors show the color in a tooltip. +struct rgb { + FMT_CONSTEXPR rgb() : r(0), g(0), b(0) {} + FMT_CONSTEXPR rgb(uint8_t r_, uint8_t g_, uint8_t b_) : r(r_), g(g_), b(b_) {} + FMT_CONSTEXPR rgb(uint32_t hex) + : r((hex >> 16) & 0xFF), g((hex >> 8) & 0xFF), b(hex & 0xFF) {} + FMT_CONSTEXPR rgb(color hex) + : r((uint32_t(hex) >> 16) & 0xFF), + g((uint32_t(hex) >> 8) & 0xFF), + b(uint32_t(hex) & 0xFF) {} + uint8_t r; + uint8_t g; + uint8_t b; +}; + +namespace internal { + +// color is a struct of either a rgb color or a terminal color. +struct color_type { + FMT_CONSTEXPR color_type() FMT_NOEXCEPT : is_rgb(), value{} {} + FMT_CONSTEXPR color_type(color rgb_color) FMT_NOEXCEPT : is_rgb(true), + value{} { + value.rgb_color = static_cast(rgb_color); + } + FMT_CONSTEXPR color_type(rgb rgb_color) FMT_NOEXCEPT : is_rgb(true), value{} { + value.rgb_color = (static_cast(rgb_color.r) << 16) | + (static_cast(rgb_color.g) << 8) | rgb_color.b; + } + FMT_CONSTEXPR color_type(terminal_color term_color) FMT_NOEXCEPT : is_rgb(), + value{} { + value.term_color = static_cast(term_color); + } + bool is_rgb; + union color_union { + uint8_t term_color; + uint32_t rgb_color; + } value; +}; +} // namespace internal + +// Experimental text formatting support. +class text_style { + public: + FMT_CONSTEXPR text_style(emphasis em = emphasis()) FMT_NOEXCEPT + : set_foreground_color(), + set_background_color(), + ems(em) {} + + FMT_CONSTEXPR text_style& operator|=(const text_style& rhs) { + if (!set_foreground_color) { + set_foreground_color = rhs.set_foreground_color; + foreground_color = rhs.foreground_color; + } else if (rhs.set_foreground_color) { + if (!foreground_color.is_rgb || !rhs.foreground_color.is_rgb) + FMT_THROW(format_error("can't OR a terminal color")); + foreground_color.value.rgb_color |= rhs.foreground_color.value.rgb_color; + } + + if (!set_background_color) { + set_background_color = rhs.set_background_color; + background_color = rhs.background_color; + } else if (rhs.set_background_color) { + if (!background_color.is_rgb || !rhs.background_color.is_rgb) + FMT_THROW(format_error("can't OR a terminal color")); + background_color.value.rgb_color |= rhs.background_color.value.rgb_color; + } + + ems = static_cast(static_cast(ems) | + static_cast(rhs.ems)); + return *this; + } + + friend FMT_CONSTEXPR text_style operator|(text_style lhs, + const text_style& rhs) { + return lhs |= rhs; + } + + FMT_CONSTEXPR text_style& operator&=(const text_style& rhs) { + if (!set_foreground_color) { + set_foreground_color = rhs.set_foreground_color; + foreground_color = rhs.foreground_color; + } else if (rhs.set_foreground_color) { + if (!foreground_color.is_rgb || !rhs.foreground_color.is_rgb) + FMT_THROW(format_error("can't AND a terminal color")); + foreground_color.value.rgb_color &= rhs.foreground_color.value.rgb_color; + } + + if (!set_background_color) { + set_background_color = rhs.set_background_color; + background_color = rhs.background_color; + } else if (rhs.set_background_color) { + if (!background_color.is_rgb || !rhs.background_color.is_rgb) + FMT_THROW(format_error("can't AND a terminal color")); + background_color.value.rgb_color &= rhs.background_color.value.rgb_color; + } + + ems = static_cast(static_cast(ems) & + static_cast(rhs.ems)); + return *this; + } + + friend FMT_CONSTEXPR text_style operator&(text_style lhs, + const text_style& rhs) { + return lhs &= rhs; + } + + FMT_CONSTEXPR bool has_foreground() const FMT_NOEXCEPT { + return set_foreground_color; + } + FMT_CONSTEXPR bool has_background() const FMT_NOEXCEPT { + return set_background_color; + } + FMT_CONSTEXPR bool has_emphasis() const FMT_NOEXCEPT { + return static_cast(ems) != 0; + } + FMT_CONSTEXPR internal::color_type get_foreground() const FMT_NOEXCEPT { + FMT_ASSERT(has_foreground(), "no foreground specified for this style"); + return foreground_color; + } + FMT_CONSTEXPR internal::color_type get_background() const FMT_NOEXCEPT { + FMT_ASSERT(has_background(), "no background specified for this style"); + return background_color; + } + FMT_CONSTEXPR emphasis get_emphasis() const FMT_NOEXCEPT { + FMT_ASSERT(has_emphasis(), "no emphasis specified for this style"); + return ems; + } + + private: + FMT_CONSTEXPR text_style(bool is_foreground, + internal::color_type text_color) FMT_NOEXCEPT + : set_foreground_color(), + set_background_color(), + ems() { + if (is_foreground) { + foreground_color = text_color; + set_foreground_color = true; + } else { + background_color = text_color; + set_background_color = true; + } + } + + friend FMT_CONSTEXPR_DECL text_style fg(internal::color_type foreground) + FMT_NOEXCEPT; + friend FMT_CONSTEXPR_DECL text_style bg(internal::color_type background) + FMT_NOEXCEPT; + + internal::color_type foreground_color; + internal::color_type background_color; + bool set_foreground_color; + bool set_background_color; + emphasis ems; +}; + +FMT_CONSTEXPR text_style fg(internal::color_type foreground) FMT_NOEXCEPT { + return text_style(/*is_foreground=*/true, foreground); +} + +FMT_CONSTEXPR text_style bg(internal::color_type background) FMT_NOEXCEPT { + return text_style(/*is_foreground=*/false, background); +} + +FMT_CONSTEXPR text_style operator|(emphasis lhs, emphasis rhs) FMT_NOEXCEPT { + return text_style(lhs) | rhs; +} + +namespace internal { + +template struct ansi_color_escape { + FMT_CONSTEXPR ansi_color_escape(internal::color_type text_color, + const char* esc) FMT_NOEXCEPT { + // If we have a terminal color, we need to output another escape code + // sequence. + if (!text_color.is_rgb) { + bool is_background = esc == internal::data::background_color; + uint32_t value = text_color.value.term_color; + // Background ASCII codes are the same as the foreground ones but with + // 10 more. + if (is_background) value += 10u; + + std::size_t index = 0; + buffer[index++] = static_cast('\x1b'); + buffer[index++] = static_cast('['); + + if (value >= 100u) { + buffer[index++] = static_cast('1'); + value %= 100u; + } + buffer[index++] = static_cast('0' + value / 10u); + buffer[index++] = static_cast('0' + value % 10u); + + buffer[index++] = static_cast('m'); + buffer[index++] = static_cast('\0'); + return; + } + + for (int i = 0; i < 7; i++) { + buffer[i] = static_cast(esc[i]); + } + rgb color(text_color.value.rgb_color); + to_esc(color.r, buffer + 7, ';'); + to_esc(color.g, buffer + 11, ';'); + to_esc(color.b, buffer + 15, 'm'); + buffer[19] = static_cast(0); + } + FMT_CONSTEXPR ansi_color_escape(emphasis em) FMT_NOEXCEPT { + uint8_t em_codes[4] = {}; + uint8_t em_bits = static_cast(em); + if (em_bits & static_cast(emphasis::bold)) em_codes[0] = 1; + if (em_bits & static_cast(emphasis::italic)) em_codes[1] = 3; + if (em_bits & static_cast(emphasis::underline)) em_codes[2] = 4; + if (em_bits & static_cast(emphasis::strikethrough)) + em_codes[3] = 9; + + std::size_t index = 0; + for (int i = 0; i < 4; ++i) { + if (!em_codes[i]) continue; + buffer[index++] = static_cast('\x1b'); + buffer[index++] = static_cast('['); + buffer[index++] = static_cast('0' + em_codes[i]); + buffer[index++] = static_cast('m'); + } + buffer[index++] = static_cast(0); + } + FMT_CONSTEXPR operator const Char*() const FMT_NOEXCEPT { return buffer; } + + FMT_CONSTEXPR const Char* begin() const FMT_NOEXCEPT { return buffer; } + FMT_CONSTEXPR const Char* end() const FMT_NOEXCEPT { + return buffer + std::char_traits::length(buffer); + } + + private: + Char buffer[7u + 3u * 4u + 1u]; + + static FMT_CONSTEXPR void to_esc(uint8_t c, Char* out, + char delimiter) FMT_NOEXCEPT { + out[0] = static_cast('0' + c / 100); + out[1] = static_cast('0' + c / 10 % 10); + out[2] = static_cast('0' + c % 10); + out[3] = static_cast(delimiter); + } +}; + +template +FMT_CONSTEXPR ansi_color_escape make_foreground_color( + internal::color_type foreground) FMT_NOEXCEPT { + return ansi_color_escape(foreground, internal::data::foreground_color); +} + +template +FMT_CONSTEXPR ansi_color_escape make_background_color( + internal::color_type background) FMT_NOEXCEPT { + return ansi_color_escape(background, internal::data::background_color); +} + +template +FMT_CONSTEXPR ansi_color_escape make_emphasis(emphasis em) FMT_NOEXCEPT { + return ansi_color_escape(em); +} + +template +inline void fputs(const Char* chars, FILE* stream) FMT_NOEXCEPT { + std::fputs(chars, stream); +} + +template <> +inline void fputs(const wchar_t* chars, FILE* stream) FMT_NOEXCEPT { + std::fputws(chars, stream); +} + +template inline void reset_color(FILE* stream) FMT_NOEXCEPT { + fputs(internal::data::reset_color, stream); +} + +template <> inline void reset_color(FILE* stream) FMT_NOEXCEPT { + fputs(internal::data::wreset_color, stream); +} + +template +inline void reset_color(basic_memory_buffer& buffer) FMT_NOEXCEPT { + const char* begin = data::reset_color; + const char* end = begin + sizeof(data::reset_color) - 1; + buffer.append(begin, end); +} + +template +void vformat_to(basic_memory_buffer& buf, const text_style& ts, + basic_string_view format_str, + basic_format_args> args) { + bool has_style = false; + if (ts.has_emphasis()) { + has_style = true; + auto emphasis = internal::make_emphasis(ts.get_emphasis()); + buf.append(emphasis.begin(), emphasis.end()); + } + if (ts.has_foreground()) { + has_style = true; + auto foreground = + internal::make_foreground_color(ts.get_foreground()); + buf.append(foreground.begin(), foreground.end()); + } + if (ts.has_background()) { + has_style = true; + auto background = + internal::make_background_color(ts.get_background()); + buf.append(background.begin(), background.end()); + } + internal::vformat_to(buf, format_str, args); + if (has_style) internal::reset_color(buf); +} +} // namespace internal + +template > +void vprint(std::FILE* f, const text_style& ts, const S& format, + basic_format_args> args) { + basic_memory_buffer buf; + internal::vformat_to(buf, ts, to_string_view(format), args); + buf.push_back(Char(0)); + internal::fputs(buf.data(), f); +} + +/** + Formats a string and prints it to the specified file stream using ANSI + escape sequences to specify text formatting. + Example: + fmt::print(fmt::emphasis::bold | fg(fmt::color::red), + "Elapsed time: {0:.2f} seconds", 1.23); + */ +template ::value)> +void print(std::FILE* f, const text_style& ts, const S& format_str, + const Args&... args) { + internal::check_format_string(format_str); + using context = buffer_context>; + format_arg_store as{args...}; + vprint(f, ts, format_str, basic_format_args(as)); +} + +/** + Formats a string and prints it to stdout using ANSI escape sequences to + specify text formatting. + Example: + fmt::print(fmt::emphasis::bold | fg(fmt::color::red), + "Elapsed time: {0:.2f} seconds", 1.23); + */ +template ::value)> +void print(const text_style& ts, const S& format_str, const Args&... args) { + return print(stdout, ts, format_str, args...); +} + +template > +inline std::basic_string vformat( + const text_style& ts, const S& format_str, + basic_format_args>> args) { + basic_memory_buffer buf; + internal::vformat_to(buf, ts, to_string_view(format_str), args); + return fmt::to_string(buf); +} + +/** + \rst + Formats arguments and returns the result as a string using ANSI + escape sequences to specify text formatting. + + **Example**:: + + #include + std::string message = fmt::format(fmt::emphasis::bold | fg(fmt::color::red), + "The answer is {}", 42); + \endrst +*/ +template > +inline std::basic_string format(const text_style& ts, const S& format_str, + const Args&... args) { + return vformat(ts, to_string_view(format_str), + internal::make_args_checked(format_str, args...)); +} + +FMT_END_NAMESPACE + +#endif // FMT_COLOR_H_ diff --git a/src/fmt/compile.h b/src/fmt/compile.h new file mode 100644 index 0000000000..e4b12f349e --- /dev/null +++ b/src/fmt/compile.h @@ -0,0 +1,595 @@ +// Formatting library for C++ - experimental format string compilation +// +// Copyright (c) 2012 - present, Victor Zverovich and fmt contributors +// All rights reserved. +// +// For the license information refer to format.h. + +#ifndef FMT_COMPILE_H_ +#define FMT_COMPILE_H_ + +#include + +#include "format.h" + +FMT_BEGIN_NAMESPACE +namespace internal { + +// Part of a compiled format string. It can be either literal text or a +// replacement field. +template struct format_part { + enum class kind { arg_index, arg_name, text, replacement }; + + struct replacement { + arg_ref arg_id; + dynamic_format_specs specs; + }; + + kind part_kind; + union value { + int arg_index; + basic_string_view str; + replacement repl; + + FMT_CONSTEXPR value(int index = 0) : arg_index(index) {} + FMT_CONSTEXPR value(basic_string_view s) : str(s) {} + FMT_CONSTEXPR value(replacement r) : repl(r) {} + } val; + // Position past the end of the argument id. + const Char* arg_id_end = nullptr; + + FMT_CONSTEXPR format_part(kind k = kind::arg_index, value v = {}) + : part_kind(k), val(v) {} + + static FMT_CONSTEXPR format_part make_arg_index(int index) { + return format_part(kind::arg_index, index); + } + static FMT_CONSTEXPR format_part make_arg_name(basic_string_view name) { + return format_part(kind::arg_name, name); + } + static FMT_CONSTEXPR format_part make_text(basic_string_view text) { + return format_part(kind::text, text); + } + static FMT_CONSTEXPR format_part make_replacement(replacement repl) { + return format_part(kind::replacement, repl); + } +}; + +template struct part_counter { + unsigned num_parts = 0; + + FMT_CONSTEXPR void on_text(const Char* begin, const Char* end) { + if (begin != end) ++num_parts; + } + + FMT_CONSTEXPR void on_arg_id() { ++num_parts; } + FMT_CONSTEXPR void on_arg_id(int) { ++num_parts; } + FMT_CONSTEXPR void on_arg_id(basic_string_view) { ++num_parts; } + + FMT_CONSTEXPR void on_replacement_field(const Char*) {} + + FMT_CONSTEXPR const Char* on_format_specs(const Char* begin, + const Char* end) { + // Find the matching brace. + unsigned brace_counter = 0; + for (; begin != end; ++begin) { + if (*begin == '{') { + ++brace_counter; + } else if (*begin == '}') { + if (brace_counter == 0u) break; + --brace_counter; + } + } + return begin; + } + + FMT_CONSTEXPR void on_error(const char*) {} +}; + +// Counts the number of parts in a format string. +template +FMT_CONSTEXPR unsigned count_parts(basic_string_view format_str) { + part_counter counter; + parse_format_string(format_str, counter); + return counter.num_parts; +} + +template +class format_string_compiler : public error_handler { + private: + using part = format_part; + + PartHandler handler_; + part part_; + basic_string_view format_str_; + basic_format_parse_context parse_context_; + + public: + FMT_CONSTEXPR format_string_compiler(basic_string_view format_str, + PartHandler handler) + : handler_(handler), + format_str_(format_str), + parse_context_(format_str) {} + + FMT_CONSTEXPR void on_text(const Char* begin, const Char* end) { + if (begin != end) + handler_(part::make_text({begin, to_unsigned(end - begin)})); + } + + FMT_CONSTEXPR void on_arg_id() { + part_ = part::make_arg_index(parse_context_.next_arg_id()); + } + + FMT_CONSTEXPR void on_arg_id(int id) { + parse_context_.check_arg_id(id); + part_ = part::make_arg_index(id); + } + + FMT_CONSTEXPR void on_arg_id(basic_string_view id) { + part_ = part::make_arg_name(id); + } + + FMT_CONSTEXPR void on_replacement_field(const Char* ptr) { + part_.arg_id_end = ptr; + handler_(part_); + } + + FMT_CONSTEXPR const Char* on_format_specs(const Char* begin, + const Char* end) { + auto repl = typename part::replacement(); + dynamic_specs_handler> handler( + repl.specs, parse_context_); + auto it = parse_format_specs(begin, end, handler); + if (*it != '}') on_error("missing '}' in format string"); + repl.arg_id = part_.part_kind == part::kind::arg_index + ? arg_ref(part_.val.arg_index) + : arg_ref(part_.val.str); + auto part = part::make_replacement(repl); + part.arg_id_end = begin; + handler_(part); + return it; + } +}; + +// Compiles a format string and invokes handler(part) for each parsed part. +template +FMT_CONSTEXPR void compile_format_string(basic_string_view format_str, + PartHandler handler) { + parse_format_string( + format_str, + format_string_compiler(format_str, handler)); +} + +template +void format_arg( + basic_format_parse_context& parse_ctx, + Context& ctx, Id arg_id) { + ctx.advance_to( + visit_format_arg(arg_formatter(ctx, &parse_ctx), ctx.arg(arg_id))); +} + +// vformat_to is defined in a subnamespace to prevent ADL. +namespace cf { +template +auto vformat_to(Range out, CompiledFormat& cf, basic_format_args args) + -> typename Context::iterator { + using char_type = typename Context::char_type; + basic_format_parse_context parse_ctx( + to_string_view(cf.format_str_)); + Context ctx(out.begin(), args); + + const auto& parts = cf.parts(); + for (auto part_it = std::begin(parts); part_it != std::end(parts); + ++part_it) { + const auto& part = *part_it; + const auto& value = part.val; + + using format_part_t = format_part; + switch (part.part_kind) { + case format_part_t::kind::text: { + const auto text = value.str; + auto output = ctx.out(); + auto&& it = reserve(output, text.size()); + it = std::copy_n(text.begin(), text.size(), it); + ctx.advance_to(output); + break; + } + + case format_part_t::kind::arg_index: + advance_to(parse_ctx, part.arg_id_end); + internal::format_arg(parse_ctx, ctx, value.arg_index); + break; + + case format_part_t::kind::arg_name: + advance_to(parse_ctx, part.arg_id_end); + internal::format_arg(parse_ctx, ctx, value.str); + break; + + case format_part_t::kind::replacement: { + const auto& arg_id_value = value.repl.arg_id.val; + const auto arg = value.repl.arg_id.kind == arg_id_kind::index + ? ctx.arg(arg_id_value.index) + : ctx.arg(arg_id_value.name); + + auto specs = value.repl.specs; + + handle_dynamic_spec(specs.width, specs.width_ref, ctx); + handle_dynamic_spec(specs.precision, + specs.precision_ref, ctx); + + error_handler h; + numeric_specs_checker checker(h, arg.type()); + if (specs.align == align::numeric) checker.require_numeric_argument(); + if (specs.sign != sign::none) checker.check_sign(); + if (specs.alt) checker.require_numeric_argument(); + if (specs.precision >= 0) checker.check_precision(); + + advance_to(parse_ctx, part.arg_id_end); + ctx.advance_to( + visit_format_arg(arg_formatter(ctx, nullptr, &specs), arg)); + break; + } + } + } + return ctx.out(); +} +} // namespace cf + +struct basic_compiled_format {}; + +template +struct compiled_format_base : basic_compiled_format { + using char_type = char_t; + using parts_container = std::vector>; + + parts_container compiled_parts; + + explicit compiled_format_base(basic_string_view format_str) { + compile_format_string(format_str, + [this](const format_part& part) { + compiled_parts.push_back(part); + }); + } + + const parts_container& parts() const { return compiled_parts; } +}; + +template struct format_part_array { + format_part data[N] = {}; + FMT_CONSTEXPR format_part_array() = default; +}; + +template +FMT_CONSTEXPR format_part_array compile_to_parts( + basic_string_view format_str) { + format_part_array parts; + unsigned counter = 0; + // This is not a lambda for compatibility with older compilers. + struct { + format_part* parts; + unsigned* counter; + FMT_CONSTEXPR void operator()(const format_part& part) { + parts[(*counter)++] = part; + } + } collector{parts.data, &counter}; + compile_format_string(format_str, collector); + if (counter < N) { + parts.data[counter] = + format_part::make_text(basic_string_view()); + } + return parts; +} + +template constexpr const T& constexpr_max(const T& a, const T& b) { + return (a < b) ? b : a; +} + +template +struct compiled_format_base::value>> + : basic_compiled_format { + using char_type = char_t; + + FMT_CONSTEXPR explicit compiled_format_base(basic_string_view) {} + +// Workaround for old compilers. Format string compilation will not be +// performed there anyway. +#if FMT_USE_CONSTEXPR + static FMT_CONSTEXPR_DECL const unsigned num_format_parts = + constexpr_max(count_parts(to_string_view(S())), 1u); +#else + static const unsigned num_format_parts = 1; +#endif + + using parts_container = format_part[num_format_parts]; + + const parts_container& parts() const { + static FMT_CONSTEXPR_DECL const auto compiled_parts = + compile_to_parts( + internal::to_string_view(S())); + return compiled_parts.data; + } +}; + +template +class compiled_format : private compiled_format_base { + public: + using typename compiled_format_base::char_type; + + private: + basic_string_view format_str_; + + template + friend auto cf::vformat_to(Range out, CompiledFormat& cf, + basic_format_args args) -> + typename Context::iterator; + + public: + compiled_format() = delete; + explicit constexpr compiled_format(basic_string_view format_str) + : compiled_format_base(format_str), format_str_(format_str) {} +}; + +#ifdef __cpp_if_constexpr +template struct type_list {}; + +// Returns a reference to the argument at index N from [first, rest...]. +template +constexpr const auto& get(const T& first, const Args&... rest) { + static_assert(N < 1 + sizeof...(Args), "index is out of bounds"); + if constexpr (N == 0) + return first; + else + return get(rest...); +} + +template struct get_type_impl; + +template struct get_type_impl> { + using type = remove_cvref_t(std::declval()...))>; +}; + +template +using get_type = typename get_type_impl::type; + +template struct is_compiled_format : std::false_type {}; + +template struct text { + basic_string_view data; + using char_type = Char; + + template + OutputIt format(OutputIt out, const Args&...) const { + // TODO: reserve + return copy_str(data.begin(), data.end(), out); + } +}; + +template +struct is_compiled_format> : std::true_type {}; + +template +constexpr text make_text(basic_string_view s, size_t pos, + size_t size) { + return {{&s[pos], size}}; +} + +template , int> = 0> +OutputIt format_default(OutputIt out, T value) { + // TODO: reserve + format_int fi(value); + return std::copy(fi.data(), fi.data() + fi.size(), out); +} + +template +OutputIt format_default(OutputIt out, double value) { + writer w(out); + w.write(value); + return w.out(); +} + +template +OutputIt format_default(OutputIt out, Char value) { + *out++ = value; + return out; +} + +template +OutputIt format_default(OutputIt out, const Char* value) { + auto length = std::char_traits::length(value); + return copy_str(value, value + length, out); +} + +// A replacement field that refers to argument N. +template struct field { + using char_type = Char; + + template + OutputIt format(OutputIt out, const Args&... args) const { + // This ensures that the argument type is convertile to `const T&`. + const T& arg = get(args...); + return format_default(out, arg); + } +}; + +template +struct is_compiled_format> : std::true_type {}; + +template struct concat { + L lhs; + R rhs; + using char_type = typename L::char_type; + + template + OutputIt format(OutputIt out, const Args&... args) const { + out = lhs.format(out, args...); + return rhs.format(out, args...); + } +}; + +template +struct is_compiled_format> : std::true_type {}; + +template +constexpr concat make_concat(L lhs, R rhs) { + return {lhs, rhs}; +} + +struct unknown_format {}; + +template +constexpr size_t parse_text(basic_string_view str, size_t pos) { + for (size_t size = str.size(); pos != size; ++pos) { + if (str[pos] == '{' || str[pos] == '}') break; + } + return pos; +} + +template +constexpr auto compile_format_string(S format_str); + +template +constexpr auto parse_tail(T head, S format_str) { + if constexpr (POS != to_string_view(format_str).size()) { + constexpr auto tail = compile_format_string(format_str); + if constexpr (std::is_same, + unknown_format>()) + return tail; + else + return make_concat(head, tail); + } else { + return head; + } +} + +// Compiles a non-empty format string and returns the compiled representation +// or unknown_format() on unrecognized input. +template +constexpr auto compile_format_string(S format_str) { + using char_type = typename S::char_type; + constexpr basic_string_view str = format_str; + if constexpr (str[POS] == '{') { + if (POS + 1 == str.size()) + throw format_error("unmatched '{' in format string"); + if constexpr (str[POS + 1] == '{') { + return parse_tail(make_text(str, POS, 1), format_str); + } else if constexpr (str[POS + 1] == '}') { + using type = get_type; + if constexpr (std::is_same::value) { + return parse_tail(field(), + format_str); + } else { + return unknown_format(); + } + } else { + return unknown_format(); + } + } else if constexpr (str[POS] == '}') { + if (POS + 1 == str.size()) + throw format_error("unmatched '}' in format string"); + return parse_tail(make_text(str, POS, 1), format_str); + } else { + constexpr auto end = parse_text(str, POS + 1); + return parse_tail(make_text(str, POS, end - POS), + format_str); + } +} +#endif // __cpp_if_constexpr +} // namespace internal + +#if FMT_USE_CONSTEXPR +# ifdef __cpp_if_constexpr +template ::value)> +constexpr auto compile(S format_str) { + constexpr basic_string_view str = format_str; + if constexpr (str.size() == 0) { + return internal::make_text(str, 0, 0); + } else { + constexpr auto result = + internal::compile_format_string, 0, 0>( + format_str); + if constexpr (std::is_same, + internal::unknown_format>()) { + return internal::compiled_format(to_string_view(format_str)); + } else { + return result; + } + } +} + +template ::value)> +std::basic_string format(const CompiledFormat& cf, const Args&... args) { + basic_memory_buffer buffer; + cf.format(std::back_inserter(buffer), args...); + return to_string(buffer); +} + +template ::value)> +OutputIt format_to(OutputIt out, const CompiledFormat& cf, + const Args&... args) { + return cf.format(out, args...); +} +# else +template ::value)> +constexpr auto compile(S format_str) -> internal::compiled_format { + return internal::compiled_format(to_string_view(format_str)); +} +# endif // __cpp_if_constexpr +#endif // FMT_USE_CONSTEXPR + +// Compiles the format string which must be a string literal. +template +auto compile(const Char (&format_str)[N]) + -> internal::compiled_format { + return internal::compiled_format( + basic_string_view(format_str, N - 1)); +} + +template ::value)> +std::basic_string format(const CompiledFormat& cf, const Args&... args) { + basic_memory_buffer buffer; + using range = buffer_range; + using context = buffer_context; + internal::cf::vformat_to(range(buffer), cf, + make_format_args(args...)); + return to_string(buffer); +} + +template ::value)> +OutputIt format_to(OutputIt out, const CompiledFormat& cf, + const Args&... args) { + using char_type = typename CompiledFormat::char_type; + using range = internal::output_range; + using context = format_context_t; + return internal::cf::vformat_to(range(out), cf, + make_format_args(args...)); +} + +template ::value)> +format_to_n_result format_to_n(OutputIt out, size_t n, + const CompiledFormat& cf, + const Args&... args) { + auto it = + format_to(internal::truncating_iterator(out, n), cf, args...); + return {it.base(), it.count()}; +} + +template +std::size_t formatted_size(const CompiledFormat& cf, const Args&... args) { + return format_to(internal::counting_iterator(), cf, args...).count(); +} + +FMT_END_NAMESPACE + +#endif // FMT_COMPILE_H_ diff --git a/src/fmt/core.h b/src/fmt/core.h new file mode 100644 index 0000000000..0e0824f5fe --- /dev/null +++ b/src/fmt/core.h @@ -0,0 +1,1796 @@ +// Formatting library for C++ - the core API +// +// Copyright (c) 2012 - present, Victor Zverovich +// All rights reserved. +// +// For the license information refer to format.h. + +#ifndef FMT_CORE_H_ +#define FMT_CORE_H_ + +#include // std::FILE +#include +#include +#include +#include +#include +#include +#include + +// The fmt library version in the form major * 10000 + minor * 100 + patch. +#define FMT_VERSION 60201 + +#ifdef __has_feature +# define FMT_HAS_FEATURE(x) __has_feature(x) +#else +# define FMT_HAS_FEATURE(x) 0 +#endif + +#if defined(__has_include) && !defined(__INTELLISENSE__) && \ + !(defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1600) +# define FMT_HAS_INCLUDE(x) __has_include(x) +#else +# define FMT_HAS_INCLUDE(x) 0 +#endif + +#ifdef __has_cpp_attribute +# define FMT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x) +#else +# define FMT_HAS_CPP_ATTRIBUTE(x) 0 +#endif + +#define FMT_HAS_CPP14_ATTRIBUTE(attribute) \ + (__cplusplus >= 201402L && FMT_HAS_CPP_ATTRIBUTE(attribute)) + +#define FMT_HAS_CPP17_ATTRIBUTE(attribute) \ + (__cplusplus >= 201703L && FMT_HAS_CPP_ATTRIBUTE(attribute)) + +#ifdef __clang__ +# define FMT_CLANG_VERSION (__clang_major__ * 100 + __clang_minor__) +#else +# define FMT_CLANG_VERSION 0 +#endif + +#if defined(__GNUC__) && !defined(__clang__) +# define FMT_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) +#else +# define FMT_GCC_VERSION 0 +#endif + +#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__) +# define FMT_HAS_GXX_CXX11 FMT_GCC_VERSION +#else +# define FMT_HAS_GXX_CXX11 0 +#endif + +#ifdef __NVCC__ +# define FMT_NVCC __NVCC__ +#else +# define FMT_NVCC 0 +#endif + +#ifdef _MSC_VER +# define FMT_MSC_VER _MSC_VER +#else +# define FMT_MSC_VER 0 +#endif + +// Check if relaxed C++14 constexpr is supported. +// GCC doesn't allow throw in constexpr until version 6 (bug 67371). +#ifndef FMT_USE_CONSTEXPR +# define FMT_USE_CONSTEXPR \ + (FMT_HAS_FEATURE(cxx_relaxed_constexpr) || FMT_MSC_VER >= 1910 || \ + (FMT_GCC_VERSION >= 600 && __cplusplus >= 201402L)) && \ + !FMT_NVCC +#endif +#if FMT_USE_CONSTEXPR +# define FMT_CONSTEXPR constexpr +# define FMT_CONSTEXPR_DECL constexpr +#else +# define FMT_CONSTEXPR inline +# define FMT_CONSTEXPR_DECL +#endif + +#ifndef FMT_OVERRIDE +# if FMT_HAS_FEATURE(cxx_override) || \ + (FMT_GCC_VERSION >= 408 && FMT_HAS_GXX_CXX11) || FMT_MSC_VER >= 1900 +# define FMT_OVERRIDE override +# else +# define FMT_OVERRIDE +# endif +#endif + +// Check if exceptions are disabled. +#ifndef FMT_EXCEPTIONS +# if (defined(__GNUC__) && !defined(__EXCEPTIONS)) || \ + FMT_MSC_VER && !_HAS_EXCEPTIONS +# define FMT_EXCEPTIONS 0 +# else +# define FMT_EXCEPTIONS 1 +# endif +#endif + +// Define FMT_USE_NOEXCEPT to make fmt use noexcept (C++11 feature). +#ifndef FMT_USE_NOEXCEPT +# define FMT_USE_NOEXCEPT 0 +#endif + +#if FMT_USE_NOEXCEPT || FMT_HAS_FEATURE(cxx_noexcept) || \ + (FMT_GCC_VERSION >= 408 && FMT_HAS_GXX_CXX11) || FMT_MSC_VER >= 1900 +# define FMT_DETECTED_NOEXCEPT noexcept +# define FMT_HAS_CXX11_NOEXCEPT 1 +#else +# define FMT_DETECTED_NOEXCEPT throw() +# define FMT_HAS_CXX11_NOEXCEPT 0 +#endif + +#ifndef FMT_NOEXCEPT +# if FMT_EXCEPTIONS || FMT_HAS_CXX11_NOEXCEPT +# define FMT_NOEXCEPT FMT_DETECTED_NOEXCEPT +# else +# define FMT_NOEXCEPT +# endif +#endif + +// [[noreturn]] is disabled on MSVC and NVCC because of bogus unreachable code +// warnings. +#if FMT_EXCEPTIONS && FMT_HAS_CPP_ATTRIBUTE(noreturn) && !FMT_MSC_VER && \ + !FMT_NVCC +# define FMT_NORETURN [[noreturn]] +#else +# define FMT_NORETURN +#endif + +#ifndef FMT_MAYBE_UNUSED +# if FMT_HAS_CPP17_ATTRIBUTE(maybe_unused) +# define FMT_MAYBE_UNUSED [[maybe_unused]] +# else +# define FMT_MAYBE_UNUSED +# endif +#endif + +#ifndef FMT_DEPRECATED +# if FMT_HAS_CPP14_ATTRIBUTE(deprecated) || FMT_MSC_VER >= 1900 +# define FMT_DEPRECATED [[deprecated]] +# else +# if defined(__GNUC__) || defined(__clang__) +# define FMT_DEPRECATED __attribute__((deprecated)) +# elif FMT_MSC_VER +# define FMT_DEPRECATED __declspec(deprecated) +# else +# define FMT_DEPRECATED /* deprecated */ +# endif +# endif +#endif + +// Workaround broken [[deprecated]] in the Intel, PGI and NVCC compilers. +#if defined(__INTEL_COMPILER) || defined(__PGI) || FMT_NVCC +# define FMT_DEPRECATED_ALIAS +#else +# define FMT_DEPRECATED_ALIAS FMT_DEPRECATED +#endif + +#ifndef FMT_BEGIN_NAMESPACE +# if FMT_HAS_FEATURE(cxx_inline_namespaces) || FMT_GCC_VERSION >= 404 || \ + FMT_MSC_VER >= 1900 +# define FMT_INLINE_NAMESPACE inline namespace +# define FMT_END_NAMESPACE \ + } \ + } +# else +# define FMT_INLINE_NAMESPACE namespace +# define FMT_END_NAMESPACE \ + } \ + using namespace v6; \ + } +# endif +# define FMT_BEGIN_NAMESPACE \ + namespace fmt { \ + FMT_INLINE_NAMESPACE v6 { +#endif + +#if !defined(FMT_HEADER_ONLY) && defined(_WIN32) +# if FMT_MSC_VER +# define FMT_NO_W4275 __pragma(warning(suppress : 4275)) +# else +# define FMT_NO_W4275 +# endif +# define FMT_CLASS_API FMT_NO_W4275 +# ifdef FMT_EXPORT +# define FMT_API __declspec(dllexport) +# elif defined(FMT_SHARED) +# define FMT_API __declspec(dllimport) +# define FMT_EXTERN_TEMPLATE_API FMT_API +# endif +#endif +#ifndef FMT_CLASS_API +# define FMT_CLASS_API +#endif +#ifndef FMT_API +# if FMT_GCC_VERSION || FMT_CLANG_VERSION +# define FMT_API __attribute__((visibility("default"))) +# define FMT_EXTERN_TEMPLATE_API FMT_API +# define FMT_INSTANTIATION_DEF_API +# else +# define FMT_API +# endif +#endif +#ifndef FMT_EXTERN_TEMPLATE_API +# define FMT_EXTERN_TEMPLATE_API +#endif +#ifndef FMT_INSTANTIATION_DEF_API +# define FMT_INSTANTIATION_DEF_API FMT_API +#endif + +#ifndef FMT_HEADER_ONLY +# define FMT_EXTERN extern +#else +# define FMT_EXTERN +#endif + +// libc++ supports string_view in pre-c++17. +#if (FMT_HAS_INCLUDE() && \ + (__cplusplus > 201402L || defined(_LIBCPP_VERSION))) || \ + (defined(_MSVC_LANG) && _MSVC_LANG > 201402L && _MSC_VER >= 1910) +# include +# define FMT_USE_STRING_VIEW +#elif FMT_HAS_INCLUDE("experimental/string_view") && __cplusplus >= 201402L +# include +# define FMT_USE_EXPERIMENTAL_STRING_VIEW +#endif + +#ifndef FMT_UNICODE +# define FMT_UNICODE !FMT_MSC_VER +#endif +#if FMT_UNICODE && FMT_MSC_VER +# pragma execution_character_set("utf-8") +#endif + +FMT_BEGIN_NAMESPACE + +// Implementations of enable_if_t and other metafunctions for older systems. +template +using enable_if_t = typename std::enable_if::type; +template +using conditional_t = typename std::conditional::type; +template using bool_constant = std::integral_constant; +template +using remove_reference_t = typename std::remove_reference::type; +template +using remove_const_t = typename std::remove_const::type; +template +using remove_cvref_t = typename std::remove_cv>::type; +template struct type_identity { using type = T; }; +template using type_identity_t = typename type_identity::type; + +struct monostate {}; + +// An enable_if helper to be used in template parameters which results in much +// shorter symbols: https://godbolt.org/z/sWw4vP. Extra parentheses are needed +// to workaround a bug in MSVC 2019 (see #1140 and #1186). +#define FMT_ENABLE_IF(...) enable_if_t<(__VA_ARGS__), int> = 0 + +namespace internal { + +// A helper function to suppress bogus "conditional expression is constant" +// warnings. +template FMT_CONSTEXPR T const_check(T value) { return value; } + +// A workaround for gcc 4.8 to make void_t work in a SFINAE context. +template struct void_t_impl { using type = void; }; + +FMT_NORETURN FMT_API void assert_fail(const char* file, int line, + const char* message); + +#ifndef FMT_ASSERT +# ifdef NDEBUG +// FMT_ASSERT is not empty to avoid -Werror=empty-body. +# define FMT_ASSERT(condition, message) ((void)0) +# else +# define FMT_ASSERT(condition, message) \ + ((condition) /* void() fails with -Winvalid-constexpr on clang 4.0.1 */ \ + ? (void)0 \ + : ::fmt::internal::assert_fail(__FILE__, __LINE__, (message))) +# endif +#endif + +#if defined(FMT_USE_STRING_VIEW) +template using std_string_view = std::basic_string_view; +#elif defined(FMT_USE_EXPERIMENTAL_STRING_VIEW) +template +using std_string_view = std::experimental::basic_string_view; +#else +template struct std_string_view {}; +#endif + +#ifdef FMT_USE_INT128 +// Do nothing. +#elif defined(__SIZEOF_INT128__) && !FMT_NVCC +# define FMT_USE_INT128 1 +using int128_t = __int128_t; +using uint128_t = __uint128_t; +#else +# define FMT_USE_INT128 0 +#endif +#if !FMT_USE_INT128 +struct int128_t {}; +struct uint128_t {}; +#endif + +// Casts a nonnegative integer to unsigned. +template +FMT_CONSTEXPR typename std::make_unsigned::type to_unsigned(Int value) { + FMT_ASSERT(value >= 0, "negative value"); + return static_cast::type>(value); +} + +constexpr unsigned char micro[] = "\u00B5"; + +template constexpr bool is_unicode() { + return FMT_UNICODE || sizeof(Char) != 1 || + (sizeof(micro) == 3 && micro[0] == 0xC2 && micro[1] == 0xB5); +} + +#ifdef __cpp_char8_t +using char8_type = char8_t; +#else +enum char8_type : unsigned char {}; +#endif +} // namespace internal + +template +using void_t = typename internal::void_t_impl::type; + +/** + An implementation of ``std::basic_string_view`` for pre-C++17. It provides a + subset of the API. ``fmt::basic_string_view`` is used for format strings even + if ``std::string_view`` is available to prevent issues when a library is + compiled with a different ``-std`` option than the client code (which is not + recommended). + */ +template class basic_string_view { + private: + const Char* data_; + size_t size_; + + public: + using char_type FMT_DEPRECATED_ALIAS = Char; + using value_type = Char; + using iterator = const Char*; + + FMT_CONSTEXPR basic_string_view() FMT_NOEXCEPT : data_(nullptr), size_(0) {} + + /** Constructs a string reference object from a C string and a size. */ + FMT_CONSTEXPR basic_string_view(const Char* s, size_t count) FMT_NOEXCEPT + : data_(s), + size_(count) {} + + /** + \rst + Constructs a string reference object from a C string computing + the size with ``std::char_traits::length``. + \endrst + */ +#if __cplusplus >= 201703L // C++17's char_traits::length() is constexpr. + FMT_CONSTEXPR +#endif + basic_string_view(const Char* s) + : data_(s), size_(std::char_traits::length(s)) {} + + /** Constructs a string reference from a ``std::basic_string`` object. */ + template + FMT_CONSTEXPR basic_string_view( + const std::basic_string& s) FMT_NOEXCEPT + : data_(s.data()), + size_(s.size()) {} + + template < + typename S, + FMT_ENABLE_IF(std::is_same>::value)> + FMT_CONSTEXPR basic_string_view(S s) FMT_NOEXCEPT : data_(s.data()), + size_(s.size()) {} + + /** Returns a pointer to the string data. */ + FMT_CONSTEXPR const Char* data() const { return data_; } + + /** Returns the string size. */ + FMT_CONSTEXPR size_t size() const { return size_; } + + FMT_CONSTEXPR iterator begin() const { return data_; } + FMT_CONSTEXPR iterator end() const { return data_ + size_; } + + FMT_CONSTEXPR const Char& operator[](size_t pos) const { return data_[pos]; } + + FMT_CONSTEXPR void remove_prefix(size_t n) { + data_ += n; + size_ -= n; + } + + // Lexicographically compare this string reference to other. + int compare(basic_string_view other) const { + size_t str_size = size_ < other.size_ ? size_ : other.size_; + int result = std::char_traits::compare(data_, other.data_, str_size); + if (result == 0) + result = size_ == other.size_ ? 0 : (size_ < other.size_ ? -1 : 1); + return result; + } + + friend bool operator==(basic_string_view lhs, basic_string_view rhs) { + return lhs.compare(rhs) == 0; + } + friend bool operator!=(basic_string_view lhs, basic_string_view rhs) { + return lhs.compare(rhs) != 0; + } + friend bool operator<(basic_string_view lhs, basic_string_view rhs) { + return lhs.compare(rhs) < 0; + } + friend bool operator<=(basic_string_view lhs, basic_string_view rhs) { + return lhs.compare(rhs) <= 0; + } + friend bool operator>(basic_string_view lhs, basic_string_view rhs) { + return lhs.compare(rhs) > 0; + } + friend bool operator>=(basic_string_view lhs, basic_string_view rhs) { + return lhs.compare(rhs) >= 0; + } +}; + +using string_view = basic_string_view; +using wstring_view = basic_string_view; + +#ifndef __cpp_char8_t +// char8_t is deprecated; use char instead. +using char8_t FMT_DEPRECATED_ALIAS = internal::char8_type; +#endif + +/** Specifies if ``T`` is a character type. Can be specialized by users. */ +template struct is_char : std::false_type {}; +template <> struct is_char : std::true_type {}; +template <> struct is_char : std::true_type {}; +template <> struct is_char : std::true_type {}; +template <> struct is_char : std::true_type {}; +template <> struct is_char : std::true_type {}; + +/** + \rst + Returns a string view of `s`. In order to add custom string type support to + {fmt} provide an overload of `to_string_view` for it in the same namespace as + the type for the argument-dependent lookup to work. + + **Example**:: + + namespace my_ns { + inline string_view to_string_view(const my_string& s) { + return {s.data(), s.length()}; + } + } + std::string message = fmt::format(my_string("The answer is {}"), 42); + \endrst + */ +template ::value)> +inline basic_string_view to_string_view(const Char* s) { + return s; +} + +template +inline basic_string_view to_string_view( + const std::basic_string& s) { + return s; +} + +template +inline basic_string_view to_string_view(basic_string_view s) { + return s; +} + +template >::value)> +inline basic_string_view to_string_view( + internal::std_string_view s) { + return s; +} + +// A base class for compile-time strings. It is defined in the fmt namespace to +// make formatting functions visible via ADL, e.g. format(fmt("{}"), 42). +struct compile_string {}; + +template +struct is_compile_string : std::is_base_of {}; + +template ::value)> +constexpr basic_string_view to_string_view(const S& s) { + return s; +} + +namespace internal { +void to_string_view(...); +using fmt::v6::to_string_view; + +// Specifies whether S is a string type convertible to fmt::basic_string_view. +// It should be a constexpr function but MSVC 2017 fails to compile it in +// enable_if and MSVC 2015 fails to compile it as an alias template. +template +struct is_string : std::is_class()))> { +}; + +template struct char_t_impl {}; +template struct char_t_impl::value>> { + using result = decltype(to_string_view(std::declval())); + using type = typename result::value_type; +}; + +struct error_handler { + FMT_CONSTEXPR error_handler() = default; + FMT_CONSTEXPR error_handler(const error_handler&) = default; + + // This function is intentionally not constexpr to give a compile-time error. + FMT_NORETURN FMT_API void on_error(const char* message); +}; +} // namespace internal + +/** String's character type. */ +template using char_t = typename internal::char_t_impl::type; + +/** + \rst + Parsing context consisting of a format string range being parsed and an + argument counter for automatic indexing. + + You can use one of the following type aliases for common character types: + + +-----------------------+-------------------------------------+ + | Type | Definition | + +=======================+=====================================+ + | format_parse_context | basic_format_parse_context | + +-----------------------+-------------------------------------+ + | wformat_parse_context | basic_format_parse_context | + +-----------------------+-------------------------------------+ + \endrst + */ +template +class basic_format_parse_context : private ErrorHandler { + private: + basic_string_view format_str_; + int next_arg_id_; + + public: + using char_type = Char; + using iterator = typename basic_string_view::iterator; + + explicit FMT_CONSTEXPR basic_format_parse_context( + basic_string_view format_str, ErrorHandler eh = ErrorHandler()) + : ErrorHandler(eh), format_str_(format_str), next_arg_id_(0) {} + + /** + Returns an iterator to the beginning of the format string range being + parsed. + */ + FMT_CONSTEXPR iterator begin() const FMT_NOEXCEPT { + return format_str_.begin(); + } + + /** + Returns an iterator past the end of the format string range being parsed. + */ + FMT_CONSTEXPR iterator end() const FMT_NOEXCEPT { return format_str_.end(); } + + /** Advances the begin iterator to ``it``. */ + FMT_CONSTEXPR void advance_to(iterator it) { + format_str_.remove_prefix(internal::to_unsigned(it - begin())); + } + + /** + Reports an error if using the manual argument indexing; otherwise returns + the next argument index and switches to the automatic indexing. + */ + FMT_CONSTEXPR int next_arg_id() { + if (next_arg_id_ >= 0) return next_arg_id_++; + on_error("cannot switch from manual to automatic argument indexing"); + return 0; + } + + /** + Reports an error if using the automatic argument indexing; otherwise + switches to the manual indexing. + */ + FMT_CONSTEXPR void check_arg_id(int) { + if (next_arg_id_ > 0) + on_error("cannot switch from automatic to manual argument indexing"); + else + next_arg_id_ = -1; + } + + FMT_CONSTEXPR void check_arg_id(basic_string_view) {} + + FMT_CONSTEXPR void on_error(const char* message) { + ErrorHandler::on_error(message); + } + + FMT_CONSTEXPR ErrorHandler error_handler() const { return *this; } +}; + +using format_parse_context = basic_format_parse_context; +using wformat_parse_context = basic_format_parse_context; + +template +using basic_parse_context FMT_DEPRECATED_ALIAS = + basic_format_parse_context; +using parse_context FMT_DEPRECATED_ALIAS = basic_format_parse_context; +using wparse_context FMT_DEPRECATED_ALIAS = basic_format_parse_context; + +template class basic_format_arg; +template class basic_format_args; + +// A formatter for objects of type T. +template +struct formatter { + // A deleted default constructor indicates a disabled formatter. + formatter() = delete; +}; + +template +struct FMT_DEPRECATED convert_to_int + : bool_constant::value && + std::is_convertible::value> {}; + +// Specifies if T has an enabled formatter specialization. A type can be +// formattable even if it doesn't have a formatter e.g. via a conversion. +template +using has_formatter = + std::is_constructible>; + +namespace internal { + +/** A contiguous memory buffer with an optional growing ability. */ +template class buffer { + private: + T* ptr_; + std::size_t size_; + std::size_t capacity_; + + protected: + // Don't initialize ptr_ since it is not accessed to save a few cycles. + buffer(std::size_t sz) FMT_NOEXCEPT : size_(sz), capacity_(sz) {} + + buffer(T* p = nullptr, std::size_t sz = 0, std::size_t cap = 0) FMT_NOEXCEPT + : ptr_(p), + size_(sz), + capacity_(cap) {} + + /** Sets the buffer data and capacity. */ + void set(T* buf_data, std::size_t buf_capacity) FMT_NOEXCEPT { + ptr_ = buf_data; + capacity_ = buf_capacity; + } + + /** Increases the buffer capacity to hold at least *capacity* elements. */ + virtual void grow(std::size_t capacity) = 0; + + public: + using value_type = T; + using const_reference = const T&; + + buffer(const buffer&) = delete; + void operator=(const buffer&) = delete; + virtual ~buffer() = default; + + T* begin() FMT_NOEXCEPT { return ptr_; } + T* end() FMT_NOEXCEPT { return ptr_ + size_; } + + const T* begin() const FMT_NOEXCEPT { return ptr_; } + const T* end() const FMT_NOEXCEPT { return ptr_ + size_; } + + /** Returns the size of this buffer. */ + std::size_t size() const FMT_NOEXCEPT { return size_; } + + /** Returns the capacity of this buffer. */ + std::size_t capacity() const FMT_NOEXCEPT { return capacity_; } + + /** Returns a pointer to the buffer data. */ + T* data() FMT_NOEXCEPT { return ptr_; } + + /** Returns a pointer to the buffer data. */ + const T* data() const FMT_NOEXCEPT { return ptr_; } + + /** + Resizes the buffer. If T is a POD type new elements may not be initialized. + */ + void resize(std::size_t new_size) { + reserve(new_size); + size_ = new_size; + } + + /** Clears this buffer. */ + void clear() { size_ = 0; } + + /** Reserves space to store at least *capacity* elements. */ + void reserve(std::size_t new_capacity) { + if (new_capacity > capacity_) grow(new_capacity); + } + + void push_back(const T& value) { + reserve(size_ + 1); + ptr_[size_++] = value; + } + + /** Appends data to the end of the buffer. */ + template void append(const U* begin, const U* end); + + template T& operator[](I index) { return ptr_[index]; } + template const T& operator[](I index) const { + return ptr_[index]; + } +}; + +// A container-backed buffer. +template +class container_buffer : public buffer { + private: + Container& container_; + + protected: + void grow(std::size_t capacity) FMT_OVERRIDE { + container_.resize(capacity); + this->set(&container_[0], capacity); + } + + public: + explicit container_buffer(Container& c) + : buffer(c.size()), container_(c) {} +}; + +// Extracts a reference to the container from back_insert_iterator. +template +inline Container& get_container(std::back_insert_iterator it) { + using bi_iterator = std::back_insert_iterator; + struct accessor : bi_iterator { + accessor(bi_iterator iter) : bi_iterator(iter) {} + using bi_iterator::container; + }; + return *accessor(it).container; +} + +template +struct fallback_formatter { + fallback_formatter() = delete; +}; + +// Specifies if T has an enabled fallback_formatter specialization. +template +using has_fallback_formatter = + std::is_constructible>; + +template struct named_arg_base; +template struct named_arg; + +enum class type { + none_type, + named_arg_type, + // Integer types should go first, + int_type, + uint_type, + long_long_type, + ulong_long_type, + int128_type, + uint128_type, + bool_type, + char_type, + last_integer_type = char_type, + // followed by floating-point types. + float_type, + double_type, + long_double_type, + last_numeric_type = long_double_type, + cstring_type, + string_type, + pointer_type, + custom_type +}; + +// Maps core type T to the corresponding type enum constant. +template +struct type_constant : std::integral_constant {}; + +#define FMT_TYPE_CONSTANT(Type, constant) \ + template \ + struct type_constant \ + : std::integral_constant {} + +FMT_TYPE_CONSTANT(const named_arg_base&, named_arg_type); +FMT_TYPE_CONSTANT(int, int_type); +FMT_TYPE_CONSTANT(unsigned, uint_type); +FMT_TYPE_CONSTANT(long long, long_long_type); +FMT_TYPE_CONSTANT(unsigned long long, ulong_long_type); +FMT_TYPE_CONSTANT(int128_t, int128_type); +FMT_TYPE_CONSTANT(uint128_t, uint128_type); +FMT_TYPE_CONSTANT(bool, bool_type); +FMT_TYPE_CONSTANT(Char, char_type); +FMT_TYPE_CONSTANT(float, float_type); +FMT_TYPE_CONSTANT(double, double_type); +FMT_TYPE_CONSTANT(long double, long_double_type); +FMT_TYPE_CONSTANT(const Char*, cstring_type); +FMT_TYPE_CONSTANT(basic_string_view, string_type); +FMT_TYPE_CONSTANT(const void*, pointer_type); + +FMT_CONSTEXPR bool is_integral_type(type t) { + FMT_ASSERT(t != type::named_arg_type, "invalid argument type"); + return t > type::none_type && t <= type::last_integer_type; +} + +FMT_CONSTEXPR bool is_arithmetic_type(type t) { + FMT_ASSERT(t != type::named_arg_type, "invalid argument type"); + return t > type::none_type && t <= type::last_numeric_type; +} + +template struct string_value { + const Char* data; + std::size_t size; +}; + +template struct custom_value { + using parse_context = basic_format_parse_context; + const void* value; + void (*format)(const void* arg, + typename Context::parse_context_type& parse_ctx, Context& ctx); +}; + +// A formatting argument value. +template class value { + public: + using char_type = typename Context::char_type; + + union { + int int_value; + unsigned uint_value; + long long long_long_value; + unsigned long long ulong_long_value; + int128_t int128_value; + uint128_t uint128_value; + bool bool_value; + char_type char_value; + float float_value; + double double_value; + long double long_double_value; + const void* pointer; + string_value string; + custom_value custom; + const named_arg_base* named_arg; + }; + + FMT_CONSTEXPR value(int val = 0) : int_value(val) {} + FMT_CONSTEXPR value(unsigned val) : uint_value(val) {} + value(long long val) : long_long_value(val) {} + value(unsigned long long val) : ulong_long_value(val) {} + value(int128_t val) : int128_value(val) {} + value(uint128_t val) : uint128_value(val) {} + value(float val) : float_value(val) {} + value(double val) : double_value(val) {} + value(long double val) : long_double_value(val) {} + value(bool val) : bool_value(val) {} + value(char_type val) : char_value(val) {} + value(const char_type* val) { string.data = val; } + value(basic_string_view val) { + string.data = val.data(); + string.size = val.size(); + } + value(const void* val) : pointer(val) {} + + template value(const T& val) { + custom.value = &val; + // Get the formatter type through the context to allow different contexts + // have different extension points, e.g. `formatter` for `format` and + // `printf_formatter` for `printf`. + custom.format = format_custom_arg< + T, conditional_t::value, + typename Context::template formatter_type, + fallback_formatter>>; + } + + value(const named_arg_base& val) { named_arg = &val; } + + private: + // Formats an argument of a custom type, such as a user-defined class. + template + static void format_custom_arg(const void* arg, + typename Context::parse_context_type& parse_ctx, + Context& ctx) { + Formatter f; + parse_ctx.advance_to(f.parse(parse_ctx)); + ctx.advance_to(f.format(*static_cast(arg), ctx)); + } +}; + +template +FMT_CONSTEXPR basic_format_arg make_arg(const T& value); + +// To minimize the number of types we need to deal with, long is translated +// either to int or to long long depending on its size. +enum { long_short = sizeof(long) == sizeof(int) }; +using long_type = conditional_t; +using ulong_type = conditional_t; + +// Maps formatting arguments to core types. +template struct arg_mapper { + using char_type = typename Context::char_type; + + FMT_CONSTEXPR int map(signed char val) { return val; } + FMT_CONSTEXPR unsigned map(unsigned char val) { return val; } + FMT_CONSTEXPR int map(short val) { return val; } + FMT_CONSTEXPR unsigned map(unsigned short val) { return val; } + FMT_CONSTEXPR int map(int val) { return val; } + FMT_CONSTEXPR unsigned map(unsigned val) { return val; } + FMT_CONSTEXPR long_type map(long val) { return val; } + FMT_CONSTEXPR ulong_type map(unsigned long val) { return val; } + FMT_CONSTEXPR long long map(long long val) { return val; } + FMT_CONSTEXPR unsigned long long map(unsigned long long val) { return val; } + FMT_CONSTEXPR int128_t map(int128_t val) { return val; } + FMT_CONSTEXPR uint128_t map(uint128_t val) { return val; } + FMT_CONSTEXPR bool map(bool val) { return val; } + + template ::value)> + FMT_CONSTEXPR char_type map(T val) { + static_assert( + std::is_same::value || std::is_same::value, + "mixing character types is disallowed"); + return val; + } + + FMT_CONSTEXPR float map(float val) { return val; } + FMT_CONSTEXPR double map(double val) { return val; } + FMT_CONSTEXPR long double map(long double val) { return val; } + + FMT_CONSTEXPR const char_type* map(char_type* val) { return val; } + FMT_CONSTEXPR const char_type* map(const char_type* val) { return val; } + template ::value)> + FMT_CONSTEXPR basic_string_view map(const T& val) { + static_assert(std::is_same>::value, + "mixing character types is disallowed"); + return to_string_view(val); + } + template , T>::value && + !is_string::value && !has_formatter::value && + !has_fallback_formatter::value)> + FMT_CONSTEXPR basic_string_view map(const T& val) { + return basic_string_view(val); + } + template < + typename T, + FMT_ENABLE_IF( + std::is_constructible, T>::value && + !std::is_constructible, T>::value && + !is_string::value && !has_formatter::value && + !has_fallback_formatter::value)> + FMT_CONSTEXPR basic_string_view map(const T& val) { + return std_string_view(val); + } + FMT_CONSTEXPR const char* map(const signed char* val) { + static_assert(std::is_same::value, "invalid string type"); + return reinterpret_cast(val); + } + FMT_CONSTEXPR const char* map(const unsigned char* val) { + static_assert(std::is_same::value, "invalid string type"); + return reinterpret_cast(val); + } + + FMT_CONSTEXPR const void* map(void* val) { return val; } + FMT_CONSTEXPR const void* map(const void* val) { return val; } + FMT_CONSTEXPR const void* map(std::nullptr_t val) { return val; } + template FMT_CONSTEXPR int map(const T*) { + // Formatting of arbitrary pointers is disallowed. If you want to output + // a pointer cast it to "void *" or "const void *". In particular, this + // forbids formatting of "[const] volatile char *" which is printed as bool + // by iostreams. + static_assert(!sizeof(T), "formatting of non-void pointers is disallowed"); + return 0; + } + + template ::value && + !has_formatter::value && + !has_fallback_formatter::value)> + FMT_CONSTEXPR auto map(const T& val) + -> decltype(std::declval().map( + static_cast::type>(val))) { + return map(static_cast::type>(val)); + } + template ::value && !is_char::value && + (has_formatter::value || + has_fallback_formatter::value))> + FMT_CONSTEXPR const T& map(const T& val) { + return val; + } + + template + FMT_CONSTEXPR const named_arg_base& map( + const named_arg& val) { + auto arg = make_arg(val.value); + std::memcpy(val.data, &arg, sizeof(arg)); + return val; + } + + int map(...) { + constexpr bool formattable = sizeof(Context) == 0; + static_assert( + formattable, + "Cannot format argument. To make type T formattable provide a " + "formatter specialization: " + "https://fmt.dev/latest/api.html#formatting-user-defined-types"); + return 0; + } +}; + +// A type constant after applying arg_mapper. +template +using mapped_type_constant = + type_constant().map(std::declval())), + typename Context::char_type>; + +enum { packed_arg_bits = 5 }; +// Maximum number of arguments with packed types. +enum { max_packed_args = 63 / packed_arg_bits }; +enum : unsigned long long { is_unpacked_bit = 1ULL << 63 }; + +template class arg_map; +} // namespace internal + +// A formatting argument. It is a trivially copyable/constructible type to +// allow storage in basic_memory_buffer. +template class basic_format_arg { + private: + internal::value value_; + internal::type type_; + + template + friend FMT_CONSTEXPR basic_format_arg internal::make_arg( + const T& value); + + template + friend FMT_CONSTEXPR auto visit_format_arg(Visitor&& vis, + const basic_format_arg& arg) + -> decltype(vis(0)); + + friend class basic_format_args; + friend class internal::arg_map; + + using char_type = typename Context::char_type; + + public: + class handle { + public: + explicit handle(internal::custom_value custom) : custom_(custom) {} + + void format(typename Context::parse_context_type& parse_ctx, + Context& ctx) const { + custom_.format(custom_.value, parse_ctx, ctx); + } + + private: + internal::custom_value custom_; + }; + + FMT_CONSTEXPR basic_format_arg() : type_(internal::type::none_type) {} + + FMT_CONSTEXPR explicit operator bool() const FMT_NOEXCEPT { + return type_ != internal::type::none_type; + } + + internal::type type() const { return type_; } + + bool is_integral() const { return internal::is_integral_type(type_); } + bool is_arithmetic() const { return internal::is_arithmetic_type(type_); } +}; + +/** + \rst + Visits an argument dispatching to the appropriate visit method based on + the argument type. For example, if the argument type is ``double`` then + ``vis(value)`` will be called with the value of type ``double``. + \endrst + */ +template +FMT_CONSTEXPR auto visit_format_arg(Visitor&& vis, + const basic_format_arg& arg) + -> decltype(vis(0)) { + using char_type = typename Context::char_type; + switch (arg.type_) { + case internal::type::none_type: + break; + case internal::type::named_arg_type: + FMT_ASSERT(false, "invalid argument type"); + break; + case internal::type::int_type: + return vis(arg.value_.int_value); + case internal::type::uint_type: + return vis(arg.value_.uint_value); + case internal::type::long_long_type: + return vis(arg.value_.long_long_value); + case internal::type::ulong_long_type: + return vis(arg.value_.ulong_long_value); +#if FMT_USE_INT128 + case internal::type::int128_type: + return vis(arg.value_.int128_value); + case internal::type::uint128_type: + return vis(arg.value_.uint128_value); +#else + case internal::type::int128_type: + case internal::type::uint128_type: + break; +#endif + case internal::type::bool_type: + return vis(arg.value_.bool_value); + case internal::type::char_type: + return vis(arg.value_.char_value); + case internal::type::float_type: + return vis(arg.value_.float_value); + case internal::type::double_type: + return vis(arg.value_.double_value); + case internal::type::long_double_type: + return vis(arg.value_.long_double_value); + case internal::type::cstring_type: + return vis(arg.value_.string.data); + case internal::type::string_type: + return vis(basic_string_view(arg.value_.string.data, + arg.value_.string.size)); + case internal::type::pointer_type: + return vis(arg.value_.pointer); + case internal::type::custom_type: + return vis(typename basic_format_arg::handle(arg.value_.custom)); + } + return vis(monostate()); +} + +namespace internal { +// A map from argument names to their values for named arguments. +template class arg_map { + private: + using char_type = typename Context::char_type; + + struct entry { + basic_string_view name; + basic_format_arg arg; + }; + + entry* map_; + unsigned size_; + + void push_back(value val) { + const auto& named = *val.named_arg; + map_[size_] = {named.name, named.template deserialize()}; + ++size_; + } + + public: + arg_map(const arg_map&) = delete; + void operator=(const arg_map&) = delete; + arg_map() : map_(nullptr), size_(0) {} + void init(const basic_format_args& args); + ~arg_map() { delete[] map_; } + + basic_format_arg find(basic_string_view name) const { + // The list is unsorted, so just return the first matching name. + for (entry *it = map_, *end = map_ + size_; it != end; ++it) { + if (it->name == name) return it->arg; + } + return {}; + } +}; + +// A type-erased reference to an std::locale to avoid heavy include. +class locale_ref { + private: + const void* locale_; // A type-erased pointer to std::locale. + + public: + locale_ref() : locale_(nullptr) {} + template explicit locale_ref(const Locale& loc); + + explicit operator bool() const FMT_NOEXCEPT { return locale_ != nullptr; } + + template Locale get() const; +}; + +template constexpr unsigned long long encode_types() { return 0; } + +template +constexpr unsigned long long encode_types() { + return static_cast(mapped_type_constant::value) | + (encode_types() << packed_arg_bits); +} + +template +FMT_CONSTEXPR basic_format_arg make_arg(const T& value) { + basic_format_arg arg; + arg.type_ = mapped_type_constant::value; + arg.value_ = arg_mapper().map(value); + return arg; +} + +// The type template parameter is there to avoid an ODR violation when using +// a fallback formatter in one translation unit and an implicit conversion in +// another (not recommended). +template +inline value make_arg(const T& val) { + return arg_mapper().map(val); +} + +template +inline basic_format_arg make_arg(const T& value) { + return make_arg(value); +} + +template struct is_reference_wrapper : std::false_type {}; + +template +struct is_reference_wrapper> : std::true_type {}; + +class dynamic_arg_list { + // Workaround for clang's -Wweak-vtables. Unlike for regular classes, for + // templates it doesn't complain about inability to deduce single translation + // unit for placing vtable. So storage_node_base is made a fake template. + template struct node { + virtual ~node() = default; + std::unique_ptr> next; + }; + + template struct typed_node : node<> { + T value; + + template + FMT_CONSTEXPR typed_node(const Arg& arg) : value(arg) {} + + template + FMT_CONSTEXPR typed_node(const basic_string_view& arg) + : value(arg.data(), arg.size()) {} + }; + + std::unique_ptr> head_; + + public: + template const T& push(const Arg& arg) { + auto node = std::unique_ptr>(new typed_node(arg)); + auto& value = node->value; + node->next = std::move(head_); + head_ = std::move(node); + return value; + } +}; +} // namespace internal + +// Formatting context. +template class basic_format_context { + public: + /** The character type for the output. */ + using char_type = Char; + + private: + OutputIt out_; + basic_format_args args_; + internal::arg_map map_; + internal::locale_ref loc_; + + public: + using iterator = OutputIt; + using format_arg = basic_format_arg; + using parse_context_type = basic_format_parse_context; + template using formatter_type = formatter; + + basic_format_context(const basic_format_context&) = delete; + void operator=(const basic_format_context&) = delete; + /** + Constructs a ``basic_format_context`` object. References to the arguments are + stored in the object so make sure they have appropriate lifetimes. + */ + basic_format_context(OutputIt out, + basic_format_args ctx_args, + internal::locale_ref loc = internal::locale_ref()) + : out_(out), args_(ctx_args), loc_(loc) {} + + format_arg arg(int id) const { return args_.get(id); } + + // Checks if manual indexing is used and returns the argument with the + // specified name. + format_arg arg(basic_string_view name); + + internal::error_handler error_handler() { return {}; } + void on_error(const char* message) { error_handler().on_error(message); } + + // Returns an iterator to the beginning of the output range. + iterator out() { return out_; } + + // Advances the begin iterator to ``it``. + void advance_to(iterator it) { out_ = it; } + + internal::locale_ref locale() { return loc_; } +}; + +template +using buffer_context = + basic_format_context>, + Char>; +using format_context = buffer_context; +using wformat_context = buffer_context; + +/** + \rst + An array of references to arguments. It can be implicitly converted into + `~fmt::basic_format_args` for passing into type-erased formatting functions + such as `~fmt::vformat`. + \endrst + */ +template +class format_arg_store +#if FMT_GCC_VERSION && FMT_GCC_VERSION < 409 + // Workaround a GCC template argument substitution bug. + : public basic_format_args +#endif +{ + private: + static const size_t num_args = sizeof...(Args); + static const bool is_packed = num_args < internal::max_packed_args; + + using value_type = conditional_t, + basic_format_arg>; + + // If the arguments are not packed, add one more element to mark the end. + value_type data_[num_args + (num_args == 0 ? 1 : 0)]; + + friend class basic_format_args; + + public: + static constexpr unsigned long long types = + is_packed ? internal::encode_types() + : internal::is_unpacked_bit | num_args; + + format_arg_store(const Args&... args) + : +#if FMT_GCC_VERSION && FMT_GCC_VERSION < 409 + basic_format_args(*this), +#endif + data_{internal::make_arg< + is_packed, Context, + internal::mapped_type_constant::value>(args)...} { + } +}; + +/** + \rst + Constructs an `~fmt::format_arg_store` object that contains references to + arguments and can be implicitly converted to `~fmt::format_args`. `Context` + can be omitted in which case it defaults to `~fmt::context`. + See `~fmt::arg` for lifetime considerations. + \endrst + */ +template +inline format_arg_store make_format_args( + const Args&... args) { + return {args...}; +} + +/** + \rst + A dynamic version of `fmt::format_arg_store<>`. + It's equipped with a storage to potentially temporary objects which lifetime + could be shorter than the format arguments object. + + It can be implicitly converted into `~fmt::basic_format_args` for passing + into type-erased formatting functions such as `~fmt::vformat`. + \endrst + */ +template +class dynamic_format_arg_store +#if FMT_GCC_VERSION && FMT_GCC_VERSION < 409 + // Workaround a GCC template argument substitution bug. + : public basic_format_args +#endif +{ + private: + using char_type = typename Context::char_type; + + template struct need_copy { + static constexpr internal::type mapped_type = + internal::mapped_type_constant::value; + + enum { + value = !(internal::is_reference_wrapper::value || + std::is_same>::value || + std::is_same>::value || + (mapped_type != internal::type::cstring_type && + mapped_type != internal::type::string_type && + mapped_type != internal::type::custom_type && + mapped_type != internal::type::named_arg_type)) + }; + }; + + template + using stored_type = conditional_t::value, + std::basic_string, T>; + + // Storage of basic_format_arg must be contiguous. + std::vector> data_; + + // Storage of arguments not fitting into basic_format_arg must grow + // without relocation because items in data_ refer to it. + internal::dynamic_arg_list dynamic_args_; + + friend class basic_format_args; + + unsigned long long get_types() const { + return internal::is_unpacked_bit | data_.size(); + } + + template void emplace_arg(const T& arg) { + data_.emplace_back(internal::make_arg(arg)); + } + + public: + /** + \rst + Adds an argument into the dynamic store for later passing to a formating + function. + + Note that custom types and string types (but not string views!) are copied + into the store with dynamic memory (in addition to resizing vector). + + **Example**:: + + fmt::dynamic_format_arg_store store; + store.push_back(42); + store.push_back("abc"); + store.push_back(1.5f); + std::string result = fmt::vformat("{} and {} and {}", store); + \endrst + */ + template void push_back(const T& arg) { + static_assert( + !std::is_base_of, T>::value, + "named arguments are not supported yet"); + if (internal::const_check(need_copy::value)) + emplace_arg(dynamic_args_.push>(arg)); + else + emplace_arg(arg); + } + + /** + Adds a reference to the argument into the dynamic store for later passing to + a formating function. + */ + template void push_back(std::reference_wrapper arg) { + static_assert( + need_copy::value, + "objects of built-in types and string views are always copied"); + emplace_arg(arg.get()); + } +}; + +/** + \rst + A view of a collection of formatting arguments. To avoid lifetime issues it + should only be used as a parameter type in type-erased functions such as + ``vformat``:: + + void vlog(string_view format_str, format_args args); // OK + format_args args = make_format_args(42); // Error: dangling reference + \endrst + */ +template class basic_format_args { + public: + using size_type = int; + using format_arg = basic_format_arg; + + private: + // To reduce compiled code size per formatting function call, types of first + // max_packed_args arguments are passed in the types_ field. + unsigned long long types_; + union { + // If the number of arguments is less than max_packed_args, the argument + // values are stored in values_, otherwise they are stored in args_. + // This is done to reduce compiled code size as storing larger objects + // may require more code (at least on x86-64) even if the same amount of + // data is actually copied to stack. It saves ~10% on the bloat test. + const internal::value* values_; + const format_arg* args_; + }; + + bool is_packed() const { return (types_ & internal::is_unpacked_bit) == 0; } + + internal::type type(int index) const { + int shift = index * internal::packed_arg_bits; + unsigned int mask = (1 << internal::packed_arg_bits) - 1; + return static_cast((types_ >> shift) & mask); + } + + friend class internal::arg_map; + + void set_data(const internal::value* values) { values_ = values; } + void set_data(const format_arg* args) { args_ = args; } + + format_arg do_get(int index) const { + format_arg arg; + if (!is_packed()) { + auto num_args = max_size(); + if (index < num_args) arg = args_[index]; + return arg; + } + if (index > internal::max_packed_args) return arg; + arg.type_ = type(index); + if (arg.type_ == internal::type::none_type) return arg; + internal::value& val = arg.value_; + val = values_[index]; + return arg; + } + + public: + basic_format_args() : types_(0) {} + + /** + \rst + Constructs a `basic_format_args` object from `~fmt::format_arg_store`. + \endrst + */ + template + basic_format_args(const format_arg_store& store) + : types_(store.types) { + set_data(store.data_); + } + + /** + \rst + Constructs a `basic_format_args` object from + `~fmt::dynamic_format_arg_store`. + \endrst + */ + basic_format_args(const dynamic_format_arg_store& store) + : types_(store.get_types()) { + set_data(store.data_.data()); + } + + /** + \rst + Constructs a `basic_format_args` object from a dynamic set of arguments. + \endrst + */ + basic_format_args(const format_arg* args, int count) + : types_(internal::is_unpacked_bit | internal::to_unsigned(count)) { + set_data(args); + } + + /** Returns the argument at specified index. */ + format_arg get(int index) const { + format_arg arg = do_get(index); + if (arg.type_ == internal::type::named_arg_type) + arg = arg.value_.named_arg->template deserialize(); + return arg; + } + + int max_size() const { + unsigned long long max_packed = internal::max_packed_args; + return static_cast(is_packed() ? max_packed + : types_ & ~internal::is_unpacked_bit); + } +}; + +/** An alias to ``basic_format_args``. */ +// It is a separate type rather than an alias to make symbols readable. +struct format_args : basic_format_args { + template + format_args(Args&&... args) + : basic_format_args(static_cast(args)...) {} +}; +struct wformat_args : basic_format_args { + template + wformat_args(Args&&... args) + : basic_format_args(static_cast(args)...) {} +}; + +template struct is_contiguous : std::false_type {}; + +template +struct is_contiguous> : std::true_type {}; + +template +struct is_contiguous> : std::true_type {}; + +namespace internal { + +template +struct is_contiguous_back_insert_iterator : std::false_type {}; +template +struct is_contiguous_back_insert_iterator> + : is_contiguous {}; + +template struct named_arg_base { + basic_string_view name; + + // Serialized value. + mutable char data[sizeof(basic_format_arg>)]; + + named_arg_base(basic_string_view nm) : name(nm) {} + + template basic_format_arg deserialize() const { + basic_format_arg arg; + std::memcpy(&arg, data, sizeof(basic_format_arg)); + return arg; + } +}; + +struct view {}; + +template +struct named_arg : view, named_arg_base { + const T& value; + + named_arg(basic_string_view name, const T& val) + : named_arg_base(name), value(val) {} +}; + +template ::value)> +inline void check_format_string(const S&) { +#if defined(FMT_ENFORCE_COMPILE_STRING) + static_assert(is_compile_string::value, + "FMT_ENFORCE_COMPILE_STRING requires all format strings to " + "utilize FMT_STRING() or fmt()."); +#endif +} +template ::value)> +void check_format_string(S); + +template struct bool_pack; +template +using all_true = + std::is_same, bool_pack>; + +template > +inline format_arg_store, remove_reference_t...> +make_args_checked(const S& format_str, + const remove_reference_t&... args) { + static_assert( + all_true<(!std::is_base_of>::value || + !std::is_reference::value)...>::value, + "passing views as lvalues is disallowed"); + check_format_string(format_str); + return {args...}; +} + +template +std::basic_string vformat( + basic_string_view format_str, + basic_format_args>> args); + +template +typename buffer_context::iterator vformat_to( + buffer& buf, basic_string_view format_str, + basic_format_args>> args); + +template ::value)> +inline void vprint_mojibake(std::FILE*, basic_string_view, const Args&) {} + +FMT_API void vprint_mojibake(std::FILE*, string_view, format_args); +#ifndef _WIN32 +inline void vprint_mojibake(std::FILE*, string_view, format_args) {} +#endif +} // namespace internal + +/** + \rst + Returns a named argument to be used in a formatting function. It should only + be used in a call to a formatting function. + + **Example**:: + + fmt::print("Elapsed time: {s:.2f} seconds", fmt::arg("s", 1.23)); + \endrst + */ +template > +inline internal::named_arg arg(const S& name, const T& arg) { + static_assert(internal::is_string::value, ""); + return {name, arg}; +} + +// Disable nested named arguments, e.g. ``arg("a", arg("b", 42))``. +template +void arg(S, internal::named_arg) = delete; + +/** Formats a string and writes the output to ``out``. */ +// GCC 8 and earlier cannot handle std::back_insert_iterator with +// vformat_to(...) overload, so SFINAE on iterator type instead. +template , + FMT_ENABLE_IF( + internal::is_contiguous_back_insert_iterator::value)> +OutputIt vformat_to( + OutputIt out, const S& format_str, + basic_format_args>> args) { + using container = remove_reference_t; + internal::container_buffer buf((internal::get_container(out))); + internal::vformat_to(buf, to_string_view(format_str), args); + return out; +} + +template ::value&& internal::is_string::value)> +inline std::back_insert_iterator format_to( + std::back_insert_iterator out, const S& format_str, + Args&&... args) { + return vformat_to(out, to_string_view(format_str), + internal::make_args_checked(format_str, args...)); +} + +template > +inline std::basic_string vformat( + const S& format_str, + basic_format_args>> args) { + return internal::vformat(to_string_view(format_str), args); +} + +/** + \rst + Formats arguments and returns the result as a string. + + **Example**:: + + #include + std::string message = fmt::format("The answer is {}", 42); + \endrst +*/ +// Pass char_t as a default template parameter instead of using +// std::basic_string> to reduce the symbol size. +template > +inline std::basic_string format(const S& format_str, Args&&... args) { + return internal::vformat( + to_string_view(format_str), + internal::make_args_checked(format_str, args...)); +} + +FMT_API void vprint(string_view, format_args); +FMT_API void vprint(std::FILE*, string_view, format_args); + +/** + \rst + Formats ``args`` according to specifications in ``format_str`` and writes the + output to the file ``f``. Strings are assumed to be Unicode-encoded unless the + ``FMT_UNICODE`` macro is set to 0. + + **Example**:: + + fmt::print(stderr, "Don't {}!", "panic"); + \endrst + */ +template > +inline void print(std::FILE* f, const S& format_str, Args&&... args) { + return internal::is_unicode() + ? vprint(f, to_string_view(format_str), + internal::make_args_checked(format_str, args...)) + : internal::vprint_mojibake( + f, to_string_view(format_str), + internal::make_args_checked(format_str, args...)); +} + +/** + \rst + Formats ``args`` according to specifications in ``format_str`` and writes + the output to ``stdout``. Strings are assumed to be Unicode-encoded unless + the ``FMT_UNICODE`` macro is set to 0. + + **Example**:: + + fmt::print("Elapsed time: {0:.2f} seconds", 1.23); + \endrst + */ +template > +inline void print(const S& format_str, Args&&... args) { + return internal::is_unicode() + ? vprint(to_string_view(format_str), + internal::make_args_checked(format_str, args...)) + : internal::vprint_mojibake( + stdout, to_string_view(format_str), + internal::make_args_checked(format_str, args...)); +} +FMT_END_NAMESPACE + +#endif // FMT_CORE_H_ diff --git a/src/fmt/format-inl.h b/src/fmt/format-inl.h new file mode 100644 index 0000000000..f632714d81 --- /dev/null +++ b/src/fmt/format-inl.h @@ -0,0 +1,1403 @@ +// Formatting library for C++ - implementation +// +// Copyright (c) 2012 - 2016, Victor Zverovich +// All rights reserved. +// +// For the license information refer to format.h. + +#ifndef FMT_FORMAT_INL_H_ +#define FMT_FORMAT_INL_H_ + +#include +#include +#include +#include +#include +#include // for std::memmove +#include + +#include "format.h" +#if !defined(FMT_STATIC_THOUSANDS_SEPARATOR) +# include +#endif + +#ifdef _WIN32 +# include +# include +#endif + +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable : 4702) // unreachable code +#endif + +// Dummy implementations of strerror_r and strerror_s called if corresponding +// system functions are not available. +inline fmt::internal::null<> strerror_r(int, char*, ...) { return {}; } +inline fmt::internal::null<> strerror_s(char*, std::size_t, ...) { return {}; } + +FMT_BEGIN_NAMESPACE +namespace internal { + +FMT_FUNC void assert_fail(const char* file, int line, const char* message) { + print(stderr, "{}:{}: assertion failed: {}", file, line, message); + std::abort(); +} + +#ifndef _MSC_VER +# define FMT_SNPRINTF snprintf +#else // _MSC_VER +inline int fmt_snprintf(char* buffer, size_t size, const char* format, ...) { + va_list args; + va_start(args, format); + int result = vsnprintf_s(buffer, size, _TRUNCATE, format, args); + va_end(args); + return result; +} +# define FMT_SNPRINTF fmt_snprintf +#endif // _MSC_VER + +// A portable thread-safe version of strerror. +// Sets buffer to point to a string describing the error code. +// This can be either a pointer to a string stored in buffer, +// or a pointer to some static immutable string. +// Returns one of the following values: +// 0 - success +// ERANGE - buffer is not large enough to store the error message +// other - failure +// Buffer should be at least of size 1. +FMT_FUNC int safe_strerror(int error_code, char*& buffer, + std::size_t buffer_size) FMT_NOEXCEPT { + FMT_ASSERT(buffer != nullptr && buffer_size != 0, "invalid buffer"); + + class dispatcher { + private: + int error_code_; + char*& buffer_; + std::size_t buffer_size_; + + // A noop assignment operator to avoid bogus warnings. + void operator=(const dispatcher&) {} + + // Handle the result of XSI-compliant version of strerror_r. + int handle(int result) { + // glibc versions before 2.13 return result in errno. + return result == -1 ? errno : result; + } + + // Handle the result of GNU-specific version of strerror_r. + FMT_MAYBE_UNUSED + int handle(char* message) { + // If the buffer is full then the message is probably truncated. + if (message == buffer_ && strlen(buffer_) == buffer_size_ - 1) + return ERANGE; + buffer_ = message; + return 0; + } + + // Handle the case when strerror_r is not available. + FMT_MAYBE_UNUSED + int handle(internal::null<>) { + return fallback(strerror_s(buffer_, buffer_size_, error_code_)); + } + + // Fallback to strerror_s when strerror_r is not available. + FMT_MAYBE_UNUSED + int fallback(int result) { + // If the buffer is full then the message is probably truncated. + return result == 0 && strlen(buffer_) == buffer_size_ - 1 ? ERANGE + : result; + } + +#if !FMT_MSC_VER + // Fallback to strerror if strerror_r and strerror_s are not available. + int fallback(internal::null<>) { + errno = 0; + buffer_ = strerror(error_code_); + return errno; + } +#endif + + public: + dispatcher(int err_code, char*& buf, std::size_t buf_size) + : error_code_(err_code), buffer_(buf), buffer_size_(buf_size) {} + + int run() { return handle(strerror_r(error_code_, buffer_, buffer_size_)); } + }; + return dispatcher(error_code, buffer, buffer_size).run(); +} + +FMT_FUNC void format_error_code(internal::buffer& out, int error_code, + string_view message) FMT_NOEXCEPT { + // Report error code making sure that the output fits into + // inline_buffer_size to avoid dynamic memory allocation and potential + // bad_alloc. + out.resize(0); + static const char SEP[] = ": "; + static const char ERROR_STR[] = "error "; + // Subtract 2 to account for terminating null characters in SEP and ERROR_STR. + std::size_t error_code_size = sizeof(SEP) + sizeof(ERROR_STR) - 2; + auto abs_value = static_cast>(error_code); + if (internal::is_negative(error_code)) { + abs_value = 0 - abs_value; + ++error_code_size; + } + error_code_size += internal::to_unsigned(internal::count_digits(abs_value)); + internal::writer w(out); + if (message.size() <= inline_buffer_size - error_code_size) { + w.write(message); + w.write(SEP); + } + w.write(ERROR_STR); + w.write(error_code); + assert(out.size() <= inline_buffer_size); +} + +FMT_FUNC void report_error(format_func func, int error_code, + string_view message) FMT_NOEXCEPT { + memory_buffer full_message; + func(full_message, error_code, message); + // Don't use fwrite_fully because the latter may throw. + (void)std::fwrite(full_message.data(), full_message.size(), 1, stderr); + std::fputc('\n', stderr); +} + +// A wrapper around fwrite that throws on error. +FMT_FUNC void fwrite_fully(const void* ptr, size_t size, size_t count, + FILE* stream) { + size_t written = std::fwrite(ptr, size, count, stream); + if (written < count) FMT_THROW(system_error(errno, "cannot write to file")); +} +} // namespace internal + +#if !defined(FMT_STATIC_THOUSANDS_SEPARATOR) +namespace internal { + +template +locale_ref::locale_ref(const Locale& loc) : locale_(&loc) { + static_assert(std::is_same::value, ""); +} + +template Locale locale_ref::get() const { + static_assert(std::is_same::value, ""); + return locale_ ? *static_cast(locale_) : std::locale(); +} + +template FMT_FUNC std::string grouping_impl(locale_ref loc) { + return std::use_facet>(loc.get()).grouping(); +} +template FMT_FUNC Char thousands_sep_impl(locale_ref loc) { + return std::use_facet>(loc.get()) + .thousands_sep(); +} +template FMT_FUNC Char decimal_point_impl(locale_ref loc) { + return std::use_facet>(loc.get()) + .decimal_point(); +} +} // namespace internal +#else +template +FMT_FUNC std::string internal::grouping_impl(locale_ref) { + return "\03"; +} +template +FMT_FUNC Char internal::thousands_sep_impl(locale_ref) { + return FMT_STATIC_THOUSANDS_SEPARATOR; +} +template +FMT_FUNC Char internal::decimal_point_impl(locale_ref) { + return '.'; +} +#endif + +FMT_API FMT_FUNC format_error::~format_error() FMT_NOEXCEPT = default; +FMT_API FMT_FUNC system_error::~system_error() FMT_NOEXCEPT = default; + +FMT_FUNC void system_error::init(int err_code, string_view format_str, + format_args args) { + error_code_ = err_code; + memory_buffer buffer; + format_system_error(buffer, err_code, vformat(format_str, args)); + std::runtime_error& base = *this; + base = std::runtime_error(to_string(buffer)); +} + +namespace internal { + +template <> FMT_FUNC int count_digits<4>(internal::fallback_uintptr n) { + // fallback_uintptr is always stored in little endian. + int i = static_cast(sizeof(void*)) - 1; + while (i > 0 && n.value[i] == 0) --i; + auto char_digits = std::numeric_limits::digits / 4; + return i >= 0 ? i * char_digits + count_digits<4, unsigned>(n.value[i]) : 1; +} + +template +const char basic_data::digits[] = + "0001020304050607080910111213141516171819" + "2021222324252627282930313233343536373839" + "4041424344454647484950515253545556575859" + "6061626364656667686970717273747576777879" + "8081828384858687888990919293949596979899"; + +template +const char basic_data::hex_digits[] = "0123456789abcdef"; + +#define FMT_POWERS_OF_10(factor) \ + factor * 10, (factor)*100, (factor)*1000, (factor)*10000, (factor)*100000, \ + (factor)*1000000, (factor)*10000000, (factor)*100000000, \ + (factor)*1000000000 + +template +const uint64_t basic_data::powers_of_10_64[] = { + 1, FMT_POWERS_OF_10(1), FMT_POWERS_OF_10(1000000000ULL), + 10000000000000000000ULL}; + +template +const uint32_t basic_data::zero_or_powers_of_10_32[] = {0, + FMT_POWERS_OF_10(1)}; + +template +const uint64_t basic_data::zero_or_powers_of_10_64[] = { + 0, FMT_POWERS_OF_10(1), FMT_POWERS_OF_10(1000000000ULL), + 10000000000000000000ULL}; + +// Normalized 64-bit significands of pow(10, k), for k = -348, -340, ..., 340. +// These are generated by support/compute-powers.py. +template +const uint64_t basic_data::pow10_significands[] = { + 0xfa8fd5a0081c0288, 0xbaaee17fa23ebf76, 0x8b16fb203055ac76, + 0xcf42894a5dce35ea, 0x9a6bb0aa55653b2d, 0xe61acf033d1a45df, + 0xab70fe17c79ac6ca, 0xff77b1fcbebcdc4f, 0xbe5691ef416bd60c, + 0x8dd01fad907ffc3c, 0xd3515c2831559a83, 0x9d71ac8fada6c9b5, + 0xea9c227723ee8bcb, 0xaecc49914078536d, 0x823c12795db6ce57, + 0xc21094364dfb5637, 0x9096ea6f3848984f, 0xd77485cb25823ac7, + 0xa086cfcd97bf97f4, 0xef340a98172aace5, 0xb23867fb2a35b28e, + 0x84c8d4dfd2c63f3b, 0xc5dd44271ad3cdba, 0x936b9fcebb25c996, + 0xdbac6c247d62a584, 0xa3ab66580d5fdaf6, 0xf3e2f893dec3f126, + 0xb5b5ada8aaff80b8, 0x87625f056c7c4a8b, 0xc9bcff6034c13053, + 0x964e858c91ba2655, 0xdff9772470297ebd, 0xa6dfbd9fb8e5b88f, + 0xf8a95fcf88747d94, 0xb94470938fa89bcf, 0x8a08f0f8bf0f156b, + 0xcdb02555653131b6, 0x993fe2c6d07b7fac, 0xe45c10c42a2b3b06, + 0xaa242499697392d3, 0xfd87b5f28300ca0e, 0xbce5086492111aeb, + 0x8cbccc096f5088cc, 0xd1b71758e219652c, 0x9c40000000000000, + 0xe8d4a51000000000, 0xad78ebc5ac620000, 0x813f3978f8940984, + 0xc097ce7bc90715b3, 0x8f7e32ce7bea5c70, 0xd5d238a4abe98068, + 0x9f4f2726179a2245, 0xed63a231d4c4fb27, 0xb0de65388cc8ada8, + 0x83c7088e1aab65db, 0xc45d1df942711d9a, 0x924d692ca61be758, + 0xda01ee641a708dea, 0xa26da3999aef774a, 0xf209787bb47d6b85, + 0xb454e4a179dd1877, 0x865b86925b9bc5c2, 0xc83553c5c8965d3d, + 0x952ab45cfa97a0b3, 0xde469fbd99a05fe3, 0xa59bc234db398c25, + 0xf6c69a72a3989f5c, 0xb7dcbf5354e9bece, 0x88fcf317f22241e2, + 0xcc20ce9bd35c78a5, 0x98165af37b2153df, 0xe2a0b5dc971f303a, + 0xa8d9d1535ce3b396, 0xfb9b7cd9a4a7443c, 0xbb764c4ca7a44410, + 0x8bab8eefb6409c1a, 0xd01fef10a657842c, 0x9b10a4e5e9913129, + 0xe7109bfba19c0c9d, 0xac2820d9623bf429, 0x80444b5e7aa7cf85, + 0xbf21e44003acdd2d, 0x8e679c2f5e44ff8f, 0xd433179d9c8cb841, + 0x9e19db92b4e31ba9, 0xeb96bf6ebadf77d9, 0xaf87023b9bf0ee6b, +}; + +// Binary exponents of pow(10, k), for k = -348, -340, ..., 340, corresponding +// to significands above. +template +const int16_t basic_data::pow10_exponents[] = { + -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980, -954, + -927, -901, -874, -847, -821, -794, -768, -741, -715, -688, -661, + -635, -608, -582, -555, -529, -502, -475, -449, -422, -396, -369, + -343, -316, -289, -263, -236, -210, -183, -157, -130, -103, -77, + -50, -24, 3, 30, 56, 83, 109, 136, 162, 189, 216, + 242, 269, 295, 322, 348, 375, 402, 428, 455, 481, 508, + 534, 561, 588, 614, 641, 667, 694, 720, 747, 774, 800, + 827, 853, 880, 907, 933, 960, 986, 1013, 1039, 1066}; + +template +const char basic_data::foreground_color[] = "\x1b[38;2;"; +template +const char basic_data::background_color[] = "\x1b[48;2;"; +template const char basic_data::reset_color[] = "\x1b[0m"; +template const wchar_t basic_data::wreset_color[] = L"\x1b[0m"; +template const char basic_data::signs[] = {0, '-', '+', ' '}; + +template struct bits { + static FMT_CONSTEXPR_DECL const int value = + static_cast(sizeof(T) * std::numeric_limits::digits); +}; + +class fp; +template fp normalize(fp value); + +// Lower (upper) boundary is a value half way between a floating-point value +// and its predecessor (successor). Boundaries have the same exponent as the +// value so only significands are stored. +struct boundaries { + uint64_t lower; + uint64_t upper; +}; + +// A handmade floating-point number f * pow(2, e). +class fp { + private: + using significand_type = uint64_t; + + public: + significand_type f; + int e; + + // All sizes are in bits. + // Subtract 1 to account for an implicit most significant bit in the + // normalized form. + static FMT_CONSTEXPR_DECL const int double_significand_size = + std::numeric_limits::digits - 1; + static FMT_CONSTEXPR_DECL const uint64_t implicit_bit = + 1ULL << double_significand_size; + static FMT_CONSTEXPR_DECL const int significand_size = + bits::value; + + fp() : f(0), e(0) {} + fp(uint64_t f_val, int e_val) : f(f_val), e(e_val) {} + + // Constructs fp from an IEEE754 double. It is a template to prevent compile + // errors on platforms where double is not IEEE754. + template explicit fp(Double d) { assign(d); } + + // Assigns d to this and return true iff predecessor is closer than successor. + template + bool assign(Double d) { + // Assume double is in the format [sign][exponent][significand]. + using limits = std::numeric_limits; + const int exponent_size = + bits::value - double_significand_size - 1; // -1 for sign + const uint64_t significand_mask = implicit_bit - 1; + const uint64_t exponent_mask = (~0ULL >> 1) & ~significand_mask; + const int exponent_bias = (1 << exponent_size) - limits::max_exponent - 1; + auto u = bit_cast(d); + f = u & significand_mask; + int biased_e = + static_cast((u & exponent_mask) >> double_significand_size); + // Predecessor is closer if d is a normalized power of 2 (f == 0) other than + // the smallest normalized number (biased_e > 1). + bool is_predecessor_closer = f == 0 && biased_e > 1; + if (biased_e != 0) + f += implicit_bit; + else + biased_e = 1; // Subnormals use biased exponent 1 (min exponent). + e = biased_e - exponent_bias - double_significand_size; + return is_predecessor_closer; + } + + template + bool assign(Double) { + *this = fp(); + return false; + } + + // Assigns d to this together with computing lower and upper boundaries, + // where a boundary is a value half way between the number and its predecessor + // (lower) or successor (upper). The upper boundary is normalized and lower + // has the same exponent but may be not normalized. + template boundaries assign_with_boundaries(Double d) { + bool is_lower_closer = assign(d); + fp lower = + is_lower_closer ? fp((f << 2) - 1, e - 2) : fp((f << 1) - 1, e - 1); + // 1 in normalize accounts for the exponent shift above. + fp upper = normalize<1>(fp((f << 1) + 1, e - 1)); + lower.f <<= lower.e - upper.e; + return boundaries{lower.f, upper.f}; + } + + template boundaries assign_float_with_boundaries(Double d) { + assign(d); + constexpr int min_normal_e = std::numeric_limits::min_exponent - + std::numeric_limits::digits; + significand_type half_ulp = 1 << (std::numeric_limits::digits - + std::numeric_limits::digits - 1); + if (min_normal_e > e) half_ulp <<= min_normal_e - e; + fp upper = normalize<0>(fp(f + half_ulp, e)); + fp lower = fp( + f - (half_ulp >> ((f == implicit_bit && e > min_normal_e) ? 1 : 0)), e); + lower.f <<= lower.e - upper.e; + return boundaries{lower.f, upper.f}; + } +}; + +// Normalizes the value converted from double and multiplied by (1 << SHIFT). +template fp normalize(fp value) { + // Handle subnormals. + const auto shifted_implicit_bit = fp::implicit_bit << SHIFT; + while ((value.f & shifted_implicit_bit) == 0) { + value.f <<= 1; + --value.e; + } + // Subtract 1 to account for hidden bit. + const auto offset = + fp::significand_size - fp::double_significand_size - SHIFT - 1; + value.f <<= offset; + value.e -= offset; + return value; +} + +inline bool operator==(fp x, fp y) { return x.f == y.f && x.e == y.e; } + +// Computes lhs * rhs / pow(2, 64) rounded to nearest with half-up tie breaking. +inline uint64_t multiply(uint64_t lhs, uint64_t rhs) { +#if FMT_USE_INT128 + auto product = static_cast<__uint128_t>(lhs) * rhs; + auto f = static_cast(product >> 64); + return (static_cast(product) & (1ULL << 63)) != 0 ? f + 1 : f; +#else + // Multiply 32-bit parts of significands. + uint64_t mask = (1ULL << 32) - 1; + uint64_t a = lhs >> 32, b = lhs & mask; + uint64_t c = rhs >> 32, d = rhs & mask; + uint64_t ac = a * c, bc = b * c, ad = a * d, bd = b * d; + // Compute mid 64-bit of result and round. + uint64_t mid = (bd >> 32) + (ad & mask) + (bc & mask) + (1U << 31); + return ac + (ad >> 32) + (bc >> 32) + (mid >> 32); +#endif +} + +inline fp operator*(fp x, fp y) { return {multiply(x.f, y.f), x.e + y.e + 64}; } + +// Returns a cached power of 10 `c_k = c_k.f * pow(2, c_k.e)` such that its +// (binary) exponent satisfies `min_exponent <= c_k.e <= min_exponent + 28`. +inline fp get_cached_power(int min_exponent, int& pow10_exponent) { + const int64_t one_over_log2_10 = 0x4d104d42; // round(pow(2, 32) / log2(10)) + int index = static_cast( + ((min_exponent + fp::significand_size - 1) * one_over_log2_10 + + ((int64_t(1) << 32) - 1)) // ceil + >> 32 // arithmetic shift + ); + // Decimal exponent of the first (smallest) cached power of 10. + const int first_dec_exp = -348; + // Difference between 2 consecutive decimal exponents in cached powers of 10. + const int dec_exp_step = 8; + index = (index - first_dec_exp - 1) / dec_exp_step + 1; + pow10_exponent = first_dec_exp + index * dec_exp_step; + return {data::pow10_significands[index], data::pow10_exponents[index]}; +} + +// A simple accumulator to hold the sums of terms in bigint::square if uint128_t +// is not available. +struct accumulator { + uint64_t lower; + uint64_t upper; + + accumulator() : lower(0), upper(0) {} + explicit operator uint32_t() const { return static_cast(lower); } + + void operator+=(uint64_t n) { + lower += n; + if (lower < n) ++upper; + } + void operator>>=(int shift) { + assert(shift == 32); + (void)shift; + lower = (upper << 32) | (lower >> 32); + upper >>= 32; + } +}; + +class bigint { + private: + // A bigint is stored as an array of bigits (big digits), with bigit at index + // 0 being the least significant one. + using bigit = uint32_t; + using double_bigit = uint64_t; + enum { bigits_capacity = 32 }; + basic_memory_buffer bigits_; + int exp_; + + bigit operator[](int index) const { return bigits_[to_unsigned(index)]; } + bigit& operator[](int index) { return bigits_[to_unsigned(index)]; } + + static FMT_CONSTEXPR_DECL const int bigit_bits = bits::value; + + friend struct formatter; + + void subtract_bigits(int index, bigit other, bigit& borrow) { + auto result = static_cast((*this)[index]) - other - borrow; + (*this)[index] = static_cast(result); + borrow = static_cast(result >> (bigit_bits * 2 - 1)); + } + + void remove_leading_zeros() { + int num_bigits = static_cast(bigits_.size()) - 1; + while (num_bigits > 0 && (*this)[num_bigits] == 0) --num_bigits; + bigits_.resize(to_unsigned(num_bigits + 1)); + } + + // Computes *this -= other assuming aligned bigints and *this >= other. + void subtract_aligned(const bigint& other) { + FMT_ASSERT(other.exp_ >= exp_, "unaligned bigints"); + FMT_ASSERT(compare(*this, other) >= 0, ""); + bigit borrow = 0; + int i = other.exp_ - exp_; + for (size_t j = 0, n = other.bigits_.size(); j != n; ++i, ++j) { + subtract_bigits(i, other.bigits_[j], borrow); + } + while (borrow > 0) subtract_bigits(i, 0, borrow); + remove_leading_zeros(); + } + + void multiply(uint32_t value) { + const double_bigit wide_value = value; + bigit carry = 0; + for (size_t i = 0, n = bigits_.size(); i < n; ++i) { + double_bigit result = bigits_[i] * wide_value + carry; + bigits_[i] = static_cast(result); + carry = static_cast(result >> bigit_bits); + } + if (carry != 0) bigits_.push_back(carry); + } + + void multiply(uint64_t value) { + const bigit mask = ~bigit(0); + const double_bigit lower = value & mask; + const double_bigit upper = value >> bigit_bits; + double_bigit carry = 0; + for (size_t i = 0, n = bigits_.size(); i < n; ++i) { + double_bigit result = bigits_[i] * lower + (carry & mask); + carry = + bigits_[i] * upper + (result >> bigit_bits) + (carry >> bigit_bits); + bigits_[i] = static_cast(result); + } + while (carry != 0) { + bigits_.push_back(carry & mask); + carry >>= bigit_bits; + } + } + + public: + bigint() : exp_(0) {} + explicit bigint(uint64_t n) { assign(n); } + ~bigint() { assert(bigits_.capacity() <= bigits_capacity); } + + bigint(const bigint&) = delete; + void operator=(const bigint&) = delete; + + void assign(const bigint& other) { + bigits_.resize(other.bigits_.size()); + auto data = other.bigits_.data(); + std::copy(data, data + other.bigits_.size(), bigits_.data()); + exp_ = other.exp_; + } + + void assign(uint64_t n) { + size_t num_bigits = 0; + do { + bigits_[num_bigits++] = n & ~bigit(0); + n >>= bigit_bits; + } while (n != 0); + bigits_.resize(num_bigits); + exp_ = 0; + } + + int num_bigits() const { return static_cast(bigits_.size()) + exp_; } + + bigint& operator<<=(int shift) { + assert(shift >= 0); + exp_ += shift / bigit_bits; + shift %= bigit_bits; + if (shift == 0) return *this; + bigit carry = 0; + for (size_t i = 0, n = bigits_.size(); i < n; ++i) { + bigit c = bigits_[i] >> (bigit_bits - shift); + bigits_[i] = (bigits_[i] << shift) + carry; + carry = c; + } + if (carry != 0) bigits_.push_back(carry); + return *this; + } + + template bigint& operator*=(Int value) { + FMT_ASSERT(value > 0, ""); + multiply(uint32_or_64_or_128_t(value)); + return *this; + } + + friend int compare(const bigint& lhs, const bigint& rhs) { + int num_lhs_bigits = lhs.num_bigits(), num_rhs_bigits = rhs.num_bigits(); + if (num_lhs_bigits != num_rhs_bigits) + return num_lhs_bigits > num_rhs_bigits ? 1 : -1; + int i = static_cast(lhs.bigits_.size()) - 1; + int j = static_cast(rhs.bigits_.size()) - 1; + int end = i - j; + if (end < 0) end = 0; + for (; i >= end; --i, --j) { + bigit lhs_bigit = lhs[i], rhs_bigit = rhs[j]; + if (lhs_bigit != rhs_bigit) return lhs_bigit > rhs_bigit ? 1 : -1; + } + if (i != j) return i > j ? 1 : -1; + return 0; + } + + // Returns compare(lhs1 + lhs2, rhs). + friend int add_compare(const bigint& lhs1, const bigint& lhs2, + const bigint& rhs) { + int max_lhs_bigits = (std::max)(lhs1.num_bigits(), lhs2.num_bigits()); + int num_rhs_bigits = rhs.num_bigits(); + if (max_lhs_bigits + 1 < num_rhs_bigits) return -1; + if (max_lhs_bigits > num_rhs_bigits) return 1; + auto get_bigit = [](const bigint& n, int i) -> bigit { + return i >= n.exp_ && i < n.num_bigits() ? n[i - n.exp_] : 0; + }; + double_bigit borrow = 0; + int min_exp = (std::min)((std::min)(lhs1.exp_, lhs2.exp_), rhs.exp_); + for (int i = num_rhs_bigits - 1; i >= min_exp; --i) { + double_bigit sum = + static_cast(get_bigit(lhs1, i)) + get_bigit(lhs2, i); + bigit rhs_bigit = get_bigit(rhs, i); + if (sum > rhs_bigit + borrow) return 1; + borrow = rhs_bigit + borrow - sum; + if (borrow > 1) return -1; + borrow <<= bigit_bits; + } + return borrow != 0 ? -1 : 0; + } + + // Assigns pow(10, exp) to this bigint. + void assign_pow10(int exp) { + assert(exp >= 0); + if (exp == 0) return assign(1); + // Find the top bit. + int bitmask = 1; + while (exp >= bitmask) bitmask <<= 1; + bitmask >>= 1; + // pow(10, exp) = pow(5, exp) * pow(2, exp). First compute pow(5, exp) by + // repeated squaring and multiplication. + assign(5); + bitmask >>= 1; + while (bitmask != 0) { + square(); + if ((exp & bitmask) != 0) *this *= 5; + bitmask >>= 1; + } + *this <<= exp; // Multiply by pow(2, exp) by shifting. + } + + void square() { + basic_memory_buffer n(std::move(bigits_)); + int num_bigits = static_cast(bigits_.size()); + int num_result_bigits = 2 * num_bigits; + bigits_.resize(to_unsigned(num_result_bigits)); + using accumulator_t = conditional_t; + auto sum = accumulator_t(); + for (int bigit_index = 0; bigit_index < num_bigits; ++bigit_index) { + // Compute bigit at position bigit_index of the result by adding + // cross-product terms n[i] * n[j] such that i + j == bigit_index. + for (int i = 0, j = bigit_index; j >= 0; ++i, --j) { + // Most terms are multiplied twice which can be optimized in the future. + sum += static_cast(n[i]) * n[j]; + } + (*this)[bigit_index] = static_cast(sum); + sum >>= bits::value; // Compute the carry. + } + // Do the same for the top half. + for (int bigit_index = num_bigits; bigit_index < num_result_bigits; + ++bigit_index) { + for (int j = num_bigits - 1, i = bigit_index - j; i < num_bigits;) + sum += static_cast(n[i++]) * n[j--]; + (*this)[bigit_index] = static_cast(sum); + sum >>= bits::value; + } + --num_result_bigits; + remove_leading_zeros(); + exp_ *= 2; + } + + // Divides this bignum by divisor, assigning the remainder to this and + // returning the quotient. + int divmod_assign(const bigint& divisor) { + FMT_ASSERT(this != &divisor, ""); + if (compare(*this, divisor) < 0) return 0; + int num_bigits = static_cast(bigits_.size()); + FMT_ASSERT(divisor.bigits_[divisor.bigits_.size() - 1u] != 0, ""); + int exp_difference = exp_ - divisor.exp_; + if (exp_difference > 0) { + // Align bigints by adding trailing zeros to simplify subtraction. + bigits_.resize(to_unsigned(num_bigits + exp_difference)); + for (int i = num_bigits - 1, j = i + exp_difference; i >= 0; --i, --j) + bigits_[j] = bigits_[i]; + std::uninitialized_fill_n(bigits_.data(), exp_difference, 0); + exp_ -= exp_difference; + } + int quotient = 0; + do { + subtract_aligned(divisor); + ++quotient; + } while (compare(*this, divisor) >= 0); + return quotient; + } +}; + +enum class round_direction { unknown, up, down }; + +// Given the divisor (normally a power of 10), the remainder = v % divisor for +// some number v and the error, returns whether v should be rounded up, down, or +// whether the rounding direction can't be determined due to error. +// error should be less than divisor / 2. +inline round_direction get_round_direction(uint64_t divisor, uint64_t remainder, + uint64_t error) { + FMT_ASSERT(remainder < divisor, ""); // divisor - remainder won't overflow. + FMT_ASSERT(error < divisor, ""); // divisor - error won't overflow. + FMT_ASSERT(error < divisor - error, ""); // error * 2 won't overflow. + // Round down if (remainder + error) * 2 <= divisor. + if (remainder <= divisor - remainder && error * 2 <= divisor - remainder * 2) + return round_direction::down; + // Round up if (remainder - error) * 2 >= divisor. + if (remainder >= error && + remainder - error >= divisor - (remainder - error)) { + return round_direction::up; + } + return round_direction::unknown; +} + +namespace digits { +enum result { + more, // Generate more digits. + done, // Done generating digits. + error // Digit generation cancelled due to an error. +}; +} + +// A version of count_digits optimized for grisu_gen_digits. +inline int grisu_count_digits(uint32_t n) { + if (n < 10) return 1; + if (n < 100) return 2; + if (n < 1000) return 3; + if (n < 10000) return 4; + if (n < 100000) return 5; + if (n < 1000000) return 6; + if (n < 10000000) return 7; + if (n < 100000000) return 8; + if (n < 1000000000) return 9; + return 10; +} + +// Generates output using the Grisu digit-gen algorithm. +// error: the size of the region (lower, upper) outside of which numbers +// definitely do not round to value (Delta in Grisu3). +template +FMT_ALWAYS_INLINE digits::result grisu_gen_digits(fp value, uint64_t error, + int& exp, Handler& handler) { + const fp one(1ULL << -value.e, value.e); + // The integral part of scaled value (p1 in Grisu) = value / one. It cannot be + // zero because it contains a product of two 64-bit numbers with MSB set (due + // to normalization) - 1, shifted right by at most 60 bits. + auto integral = static_cast(value.f >> -one.e); + FMT_ASSERT(integral != 0, ""); + FMT_ASSERT(integral == value.f >> -one.e, ""); + // The fractional part of scaled value (p2 in Grisu) c = value % one. + uint64_t fractional = value.f & (one.f - 1); + exp = grisu_count_digits(integral); // kappa in Grisu. + // Divide by 10 to prevent overflow. + auto result = handler.on_start(data::powers_of_10_64[exp - 1] << -one.e, + value.f / 10, error * 10, exp); + if (result != digits::more) return result; + // Generate digits for the integral part. This can produce up to 10 digits. + do { + uint32_t digit = 0; + auto divmod_integral = [&](uint32_t divisor) { + digit = integral / divisor; + integral %= divisor; + }; + // This optimization by Milo Yip reduces the number of integer divisions by + // one per iteration. + switch (exp) { + case 10: + divmod_integral(1000000000); + break; + case 9: + divmod_integral(100000000); + break; + case 8: + divmod_integral(10000000); + break; + case 7: + divmod_integral(1000000); + break; + case 6: + divmod_integral(100000); + break; + case 5: + divmod_integral(10000); + break; + case 4: + divmod_integral(1000); + break; + case 3: + divmod_integral(100); + break; + case 2: + divmod_integral(10); + break; + case 1: + digit = integral; + integral = 0; + break; + default: + FMT_ASSERT(false, "invalid number of digits"); + } + --exp; + uint64_t remainder = + (static_cast(integral) << -one.e) + fractional; + result = handler.on_digit(static_cast('0' + digit), + data::powers_of_10_64[exp] << -one.e, remainder, + error, exp, true); + if (result != digits::more) return result; + } while (exp > 0); + // Generate digits for the fractional part. + for (;;) { + fractional *= 10; + error *= 10; + char digit = + static_cast('0' + static_cast(fractional >> -one.e)); + fractional &= one.f - 1; + --exp; + result = handler.on_digit(digit, one.f, fractional, error, exp, false); + if (result != digits::more) return result; + } +} + +// The fixed precision digit handler. +struct fixed_handler { + char* buf; + int size; + int precision; + int exp10; + bool fixed; + + digits::result on_start(uint64_t divisor, uint64_t remainder, uint64_t error, + int& exp) { + // Non-fixed formats require at least one digit and no precision adjustment. + if (!fixed) return digits::more; + // Adjust fixed precision by exponent because it is relative to decimal + // point. + precision += exp + exp10; + // Check if precision is satisfied just by leading zeros, e.g. + // format("{:.2f}", 0.001) gives "0.00" without generating any digits. + if (precision > 0) return digits::more; + if (precision < 0) return digits::done; + auto dir = get_round_direction(divisor, remainder, error); + if (dir == round_direction::unknown) return digits::error; + buf[size++] = dir == round_direction::up ? '1' : '0'; + return digits::done; + } + + digits::result on_digit(char digit, uint64_t divisor, uint64_t remainder, + uint64_t error, int, bool integral) { + FMT_ASSERT(remainder < divisor, ""); + buf[size++] = digit; + if (size < precision) return digits::more; + if (!integral) { + // Check if error * 2 < divisor with overflow prevention. + // The check is not needed for the integral part because error = 1 + // and divisor > (1 << 32) there. + if (error >= divisor || error >= divisor - error) return digits::error; + } else { + FMT_ASSERT(error == 1 && divisor > 2, ""); + } + auto dir = get_round_direction(divisor, remainder, error); + if (dir != round_direction::up) + return dir == round_direction::down ? digits::done : digits::error; + ++buf[size - 1]; + for (int i = size - 1; i > 0 && buf[i] > '9'; --i) { + buf[i] = '0'; + ++buf[i - 1]; + } + if (buf[0] > '9') { + buf[0] = '1'; + buf[size++] = '0'; + } + return digits::done; + } +}; + +// The shortest representation digit handler. +struct grisu_shortest_handler { + char* buf; + int size; + // Distance between scaled value and upper bound (wp_W in Grisu3). + uint64_t diff; + + digits::result on_start(uint64_t, uint64_t, uint64_t, int&) { + return digits::more; + } + + // Decrement the generated number approaching value from above. + void round(uint64_t d, uint64_t divisor, uint64_t& remainder, + uint64_t error) { + while ( + remainder < d && error - remainder >= divisor && + (remainder + divisor < d || d - remainder >= remainder + divisor - d)) { + --buf[size - 1]; + remainder += divisor; + } + } + + // Implements Grisu's round_weed. + digits::result on_digit(char digit, uint64_t divisor, uint64_t remainder, + uint64_t error, int exp, bool integral) { + buf[size++] = digit; + if (remainder >= error) return digits::more; + uint64_t unit = integral ? 1 : data::powers_of_10_64[-exp]; + uint64_t up = (diff - 1) * unit; // wp_Wup + round(up, divisor, remainder, error); + uint64_t down = (diff + 1) * unit; // wp_Wdown + if (remainder < down && error - remainder >= divisor && + (remainder + divisor < down || + down - remainder > remainder + divisor - down)) { + return digits::error; + } + return 2 * unit <= remainder && remainder <= error - 4 * unit + ? digits::done + : digits::error; + } +}; + +// Formats value using a variation of the Fixed-Precision Positive +// Floating-Point Printout ((FPP)^2) algorithm by Steele & White: +// https://fmt.dev/p372-steele.pdf. +template +void fallback_format(Double d, buffer& buf, int& exp10) { + bigint numerator; // 2 * R in (FPP)^2. + bigint denominator; // 2 * S in (FPP)^2. + // lower and upper are differences between value and corresponding boundaries. + bigint lower; // (M^- in (FPP)^2). + bigint upper_store; // upper's value if different from lower. + bigint* upper = nullptr; // (M^+ in (FPP)^2). + fp value; + // Shift numerator and denominator by an extra bit or two (if lower boundary + // is closer) to make lower and upper integers. This eliminates multiplication + // by 2 during later computations. + // TODO: handle float + int shift = value.assign(d) ? 2 : 1; + uint64_t significand = value.f << shift; + if (value.e >= 0) { + numerator.assign(significand); + numerator <<= value.e; + lower.assign(1); + lower <<= value.e; + if (shift != 1) { + upper_store.assign(1); + upper_store <<= value.e + 1; + upper = &upper_store; + } + denominator.assign_pow10(exp10); + denominator <<= 1; + } else if (exp10 < 0) { + numerator.assign_pow10(-exp10); + lower.assign(numerator); + if (shift != 1) { + upper_store.assign(numerator); + upper_store <<= 1; + upper = &upper_store; + } + numerator *= significand; + denominator.assign(1); + denominator <<= shift - value.e; + } else { + numerator.assign(significand); + denominator.assign_pow10(exp10); + denominator <<= shift - value.e; + lower.assign(1); + if (shift != 1) { + upper_store.assign(1ULL << 1); + upper = &upper_store; + } + } + if (!upper) upper = &lower; + // Invariant: value == (numerator / denominator) * pow(10, exp10). + bool even = (value.f & 1) == 0; + int num_digits = 0; + char* data = buf.data(); + for (;;) { + int digit = numerator.divmod_assign(denominator); + bool low = compare(numerator, lower) - even < 0; // numerator <[=] lower. + // numerator + upper >[=] pow10: + bool high = add_compare(numerator, *upper, denominator) + even > 0; + data[num_digits++] = static_cast('0' + digit); + if (low || high) { + if (!low) { + ++data[num_digits - 1]; + } else if (high) { + int result = add_compare(numerator, numerator, denominator); + // Round half to even. + if (result > 0 || (result == 0 && (digit % 2) != 0)) + ++data[num_digits - 1]; + } + buf.resize(to_unsigned(num_digits)); + exp10 -= num_digits - 1; + return; + } + numerator *= 10; + lower *= 10; + if (upper != &lower) *upper *= 10; + } +} + +// Formats value using the Grisu algorithm +// (https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf) +// if T is a IEEE754 binary32 or binary64 and snprintf otherwise. +template +int format_float(T value, int precision, float_specs specs, buffer& buf) { + static_assert(!std::is_same::value, ""); + FMT_ASSERT(value >= 0, "value is negative"); + + const bool fixed = specs.format == float_format::fixed; + if (value <= 0) { // <= instead of == to silence a warning. + if (precision <= 0 || !fixed) { + buf.push_back('0'); + return 0; + } + buf.resize(to_unsigned(precision)); + std::uninitialized_fill_n(buf.data(), precision, '0'); + return -precision; + } + + if (!specs.use_grisu) return snprintf_float(value, precision, specs, buf); + + int exp = 0; + const int min_exp = -60; // alpha in Grisu. + int cached_exp10 = 0; // K in Grisu. + if (precision < 0) { + fp fp_value; + auto boundaries = specs.binary32 + ? fp_value.assign_float_with_boundaries(value) + : fp_value.assign_with_boundaries(value); + fp_value = normalize(fp_value); + // Find a cached power of 10 such that multiplying value by it will bring + // the exponent in the range [min_exp, -32]. + const fp cached_pow = get_cached_power( + min_exp - (fp_value.e + fp::significand_size), cached_exp10); + // Multiply value and boundaries by the cached power of 10. + fp_value = fp_value * cached_pow; + boundaries.lower = multiply(boundaries.lower, cached_pow.f); + boundaries.upper = multiply(boundaries.upper, cached_pow.f); + assert(min_exp <= fp_value.e && fp_value.e <= -32); + --boundaries.lower; // \tilde{M}^- - 1 ulp -> M^-_{\downarrow}. + ++boundaries.upper; // \tilde{M}^+ + 1 ulp -> M^+_{\uparrow}. + // Numbers outside of (lower, upper) definitely do not round to value. + grisu_shortest_handler handler{buf.data(), 0, + boundaries.upper - fp_value.f}; + auto result = + grisu_gen_digits(fp(boundaries.upper, fp_value.e), + boundaries.upper - boundaries.lower, exp, handler); + if (result == digits::error) { + exp += handler.size - cached_exp10 - 1; + fallback_format(value, buf, exp); + return exp; + } + buf.resize(to_unsigned(handler.size)); + } else { + if (precision > 17) return snprintf_float(value, precision, specs, buf); + fp normalized = normalize(fp(value)); + const auto cached_pow = get_cached_power( + min_exp - (normalized.e + fp::significand_size), cached_exp10); + normalized = normalized * cached_pow; + fixed_handler handler{buf.data(), 0, precision, -cached_exp10, fixed}; + if (grisu_gen_digits(normalized, 1, exp, handler) == digits::error) + return snprintf_float(value, precision, specs, buf); + int num_digits = handler.size; + if (!fixed) { + // Remove trailing zeros. + while (num_digits > 0 && buf[num_digits - 1] == '0') { + --num_digits; + ++exp; + } + } + buf.resize(to_unsigned(num_digits)); + } + return exp - cached_exp10; +} + +template +int snprintf_float(T value, int precision, float_specs specs, + buffer& buf) { + // Buffer capacity must be non-zero, otherwise MSVC's vsnprintf_s will fail. + FMT_ASSERT(buf.capacity() > buf.size(), "empty buffer"); + static_assert(!std::is_same::value, ""); + + // Subtract 1 to account for the difference in precision since we use %e for + // both general and exponent format. + if (specs.format == float_format::general || + specs.format == float_format::exp) + precision = (precision >= 0 ? precision : 6) - 1; + + // Build the format string. + enum { max_format_size = 7 }; // Ths longest format is "%#.*Le". + char format[max_format_size]; + char* format_ptr = format; + *format_ptr++ = '%'; + if (specs.showpoint && specs.format == float_format::hex) *format_ptr++ = '#'; + if (precision >= 0) { + *format_ptr++ = '.'; + *format_ptr++ = '*'; + } + if (std::is_same()) *format_ptr++ = 'L'; + *format_ptr++ = specs.format != float_format::hex + ? (specs.format == float_format::fixed ? 'f' : 'e') + : (specs.upper ? 'A' : 'a'); + *format_ptr = '\0'; + + // Format using snprintf. + auto offset = buf.size(); + for (;;) { + auto begin = buf.data() + offset; + auto capacity = buf.capacity() - offset; +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + if (precision > 100000) + throw std::runtime_error( + "fuzz mode - avoid large allocation inside snprintf"); +#endif + // Suppress the warning about a nonliteral format string. + // Cannot use auto becase of a bug in MinGW (#1532). + int (*snprintf_ptr)(char*, size_t, const char*, ...) = FMT_SNPRINTF; + int result = precision >= 0 + ? snprintf_ptr(begin, capacity, format, precision, value) + : snprintf_ptr(begin, capacity, format, value); + if (result < 0) { + buf.reserve(buf.capacity() + 1); // The buffer will grow exponentially. + continue; + } + auto size = to_unsigned(result); + // Size equal to capacity means that the last character was truncated. + if (size >= capacity) { + buf.reserve(size + offset + 1); // Add 1 for the terminating '\0'. + continue; + } + auto is_digit = [](char c) { return c >= '0' && c <= '9'; }; + if (specs.format == float_format::fixed) { + if (precision == 0) { + buf.resize(size); + return 0; + } + // Find and remove the decimal point. + auto end = begin + size, p = end; + do { + --p; + } while (is_digit(*p)); + int fraction_size = static_cast(end - p - 1); + std::memmove(p, p + 1, to_unsigned(fraction_size)); + buf.resize(size - 1); + return -fraction_size; + } + if (specs.format == float_format::hex) { + buf.resize(size + offset); + return 0; + } + // Find and parse the exponent. + auto end = begin + size, exp_pos = end; + do { + --exp_pos; + } while (*exp_pos != 'e'); + char sign = exp_pos[1]; + assert(sign == '+' || sign == '-'); + int exp = 0; + auto p = exp_pos + 2; // Skip 'e' and sign. + do { + assert(is_digit(*p)); + exp = exp * 10 + (*p++ - '0'); + } while (p != end); + if (sign == '-') exp = -exp; + int fraction_size = 0; + if (exp_pos != begin + 1) { + // Remove trailing zeros. + auto fraction_end = exp_pos - 1; + while (*fraction_end == '0') --fraction_end; + // Move the fractional part left to get rid of the decimal point. + fraction_size = static_cast(fraction_end - begin - 1); + std::memmove(begin + 1, begin + 2, to_unsigned(fraction_size)); + } + buf.resize(to_unsigned(fraction_size) + offset + 1); + return exp - fraction_size; + } +} + +// A public domain branchless UTF-8 decoder by Christopher Wellons: +// https://github.com/skeeto/branchless-utf8 +/* Decode the next character, c, from buf, reporting errors in e. + * + * Since this is a branchless decoder, four bytes will be read from the + * buffer regardless of the actual length of the next character. This + * means the buffer _must_ have at least three bytes of zero padding + * following the end of the data stream. + * + * Errors are reported in e, which will be non-zero if the parsed + * character was somehow invalid: invalid byte sequence, non-canonical + * encoding, or a surrogate half. + * + * The function returns a pointer to the next character. When an error + * occurs, this pointer will be a guess that depends on the particular + * error, but it will always advance at least one byte. + */ +FMT_FUNC const char* utf8_decode(const char* buf, uint32_t* c, int* e) { + static const char lengths[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 2, 2, 3, 3, 4, 0}; + static const int masks[] = {0x00, 0x7f, 0x1f, 0x0f, 0x07}; + static const uint32_t mins[] = {4194304, 0, 128, 2048, 65536}; + static const int shiftc[] = {0, 18, 12, 6, 0}; + static const int shifte[] = {0, 6, 4, 2, 0}; + + auto s = reinterpret_cast(buf); + int len = lengths[s[0] >> 3]; + + // Compute the pointer to the next character early so that the next + // iteration can start working on the next character. Neither Clang + // nor GCC figure out this reordering on their own. + const char* next = buf + len + !len; + + // Assume a four-byte character and load four bytes. Unused bits are + // shifted out. + *c = uint32_t(s[0] & masks[len]) << 18; + *c |= uint32_t(s[1] & 0x3f) << 12; + *c |= uint32_t(s[2] & 0x3f) << 6; + *c |= uint32_t(s[3] & 0x3f) << 0; + *c >>= shiftc[len]; + + // Accumulate the various error conditions. + *e = (*c < mins[len]) << 6; // non-canonical encoding + *e |= ((*c >> 11) == 0x1b) << 7; // surrogate half? + *e |= (*c > 0x10FFFF) << 8; // out of range? + *e |= (s[1] & 0xc0) >> 2; + *e |= (s[2] & 0xc0) >> 4; + *e |= (s[3]) >> 6; + *e ^= 0x2a; // top two bits of each tail byte correct? + *e >>= shifte[len]; + + return next; +} +} // namespace internal + +template <> struct formatter { + format_parse_context::iterator parse(format_parse_context& ctx) { + return ctx.begin(); + } + + format_context::iterator format(const internal::bigint& n, + format_context& ctx) { + auto out = ctx.out(); + bool first = true; + for (auto i = n.bigits_.size(); i > 0; --i) { + auto value = n.bigits_[i - 1u]; + if (first) { + out = format_to(out, "{:x}", value); + first = false; + continue; + } + out = format_to(out, "{:08x}", value); + } + if (n.exp_ > 0) + out = format_to(out, "p{}", n.exp_ * internal::bigint::bigit_bits); + return out; + } +}; + +FMT_FUNC internal::utf8_to_utf16::utf8_to_utf16(string_view s) { + auto transcode = [this](const char* p) { + auto cp = uint32_t(); + auto error = 0; + p = utf8_decode(p, &cp, &error); + if (error != 0) FMT_THROW(std::runtime_error("invalid utf8")); + if (cp <= 0xFFFF) { + buffer_.push_back(static_cast(cp)); + } else { + cp -= 0x10000; + buffer_.push_back(static_cast(0xD800 + (cp >> 10))); + buffer_.push_back(static_cast(0xDC00 + (cp & 0x3FF))); + } + return p; + }; + auto p = s.data(); + const size_t block_size = 4; // utf8_decode always reads blocks of 4 chars. + if (s.size() >= block_size) { + for (auto end = p + s.size() - block_size + 1; p < end;) p = transcode(p); + } + if (auto num_chars_left = s.data() + s.size() - p) { + char buf[2 * block_size - 1] = {}; + memcpy(buf, p, to_unsigned(num_chars_left)); + p = buf; + do { + p = transcode(p); + } while (p - buf < num_chars_left); + } + buffer_.push_back(0); +} + +FMT_FUNC void format_system_error(internal::buffer& out, int error_code, + string_view message) FMT_NOEXCEPT { + FMT_TRY { + memory_buffer buf; + buf.resize(inline_buffer_size); + for (;;) { + char* system_message = &buf[0]; + int result = + internal::safe_strerror(error_code, system_message, buf.size()); + if (result == 0) { + internal::writer w(out); + w.write(message); + w.write(": "); + w.write(system_message); + return; + } + if (result != ERANGE) + break; // Can't get error message, report error code instead. + buf.resize(buf.size() * 2); + } + } + FMT_CATCH(...) {} + format_error_code(out, error_code, message); +} + +FMT_FUNC void internal::error_handler::on_error(const char* message) { + FMT_THROW(format_error(message)); +} + +FMT_FUNC void report_system_error(int error_code, + fmt::string_view message) FMT_NOEXCEPT { + report_error(format_system_error, error_code, message); +} + +FMT_FUNC void vprint(std::FILE* f, string_view format_str, format_args args) { + memory_buffer buffer; + internal::vformat_to(buffer, format_str, + basic_format_args>(args)); +#ifdef _WIN32 + auto fd = _fileno(f); + if (_isatty(fd)) { + internal::utf8_to_utf16 u16(string_view(buffer.data(), buffer.size())); + auto written = DWORD(); + if (!WriteConsoleW(reinterpret_cast(_get_osfhandle(fd)), + u16.c_str(), static_cast(u16.size()), &written, + nullptr)) { + FMT_THROW(format_error("failed to write to console")); + } + return; + } +#endif + internal::fwrite_fully(buffer.data(), 1, buffer.size(), f); +} + +#ifdef _WIN32 +// Print assuming legacy (non-Unicode) encoding. +FMT_FUNC void internal::vprint_mojibake(std::FILE* f, string_view format_str, + format_args args) { + memory_buffer buffer; + internal::vformat_to(buffer, format_str, + basic_format_args>(args)); + fwrite_fully(buffer.data(), 1, buffer.size(), f); +} +#endif + +FMT_FUNC void vprint(string_view format_str, format_args args) { + vprint(stdout, format_str, args); +} + +FMT_END_NAMESPACE + +#ifdef _MSC_VER +# pragma warning(pop) +#endif + +#endif // FMT_FORMAT_INL_H_ diff --git a/src/fmt/format.h b/src/fmt/format.h new file mode 100644 index 0000000000..4e96539fa2 --- /dev/null +++ b/src/fmt/format.h @@ -0,0 +1,3648 @@ +/* + Formatting library for C++ + + Copyright (c) 2012 - present, Victor Zverovich + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + --- Optional exception to the license --- + + As an exception, if, as a result of your compiling your source code, portions + of this Software are embedded into a machine-executable object form of such + source code, you may redistribute such embedded portions in such object form + without including the above copyright and permission notices. + */ + +#ifndef FMT_FORMAT_H_ +#define FMT_FORMAT_H_ + +#include +#include +#include +#include +#include +#include +#include + +#include "core.h" + +#ifdef FMT_DEPRECATED_INCLUDE_OS +# include "os.h" +#endif + +#ifdef __INTEL_COMPILER +# define FMT_ICC_VERSION __INTEL_COMPILER +#elif defined(__ICL) +# define FMT_ICC_VERSION __ICL +#else +# define FMT_ICC_VERSION 0 +#endif + +#ifdef __NVCC__ +# define FMT_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 100 + __CUDACC_VER_MINOR__) +#else +# define FMT_CUDA_VERSION 0 +#endif + +#ifdef __has_builtin +# define FMT_HAS_BUILTIN(x) __has_builtin(x) +#else +# define FMT_HAS_BUILTIN(x) 0 +#endif + +#if FMT_GCC_VERSION || FMT_CLANG_VERSION +# define FMT_NOINLINE __attribute__((noinline)) +#else +# define FMT_NOINLINE +#endif + +#if __cplusplus == 201103L || __cplusplus == 201402L +# if defined(__clang__) +# define FMT_FALLTHROUGH [[clang::fallthrough]] +# elif FMT_GCC_VERSION >= 700 && !defined(__PGI) +# define FMT_FALLTHROUGH [[gnu::fallthrough]] +# else +# define FMT_FALLTHROUGH +# endif +#elif FMT_HAS_CPP17_ATTRIBUTE(fallthrough) || \ + (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) +# define FMT_FALLTHROUGH [[fallthrough]] +#else +# define FMT_FALLTHROUGH +#endif + +#ifndef FMT_THROW +# if FMT_EXCEPTIONS +# if FMT_MSC_VER || FMT_NVCC +FMT_BEGIN_NAMESPACE +namespace internal { +template inline void do_throw(const Exception& x) { + // Silence unreachable code warnings in MSVC and NVCC because these + // are nearly impossible to fix in a generic code. + volatile bool b = true; + if (b) throw x; +} +} // namespace internal +FMT_END_NAMESPACE +# define FMT_THROW(x) internal::do_throw(x) +# else +# define FMT_THROW(x) throw x +# endif +# else +# define FMT_THROW(x) \ + do { \ + static_cast(sizeof(x)); \ + FMT_ASSERT(false, ""); \ + } while (false) +# endif +#endif + +#if FMT_EXCEPTIONS +# define FMT_TRY try +# define FMT_CATCH(x) catch (x) +#else +# define FMT_TRY if (true) +# define FMT_CATCH(x) if (false) +#endif + +#ifndef FMT_USE_USER_DEFINED_LITERALS +// For Intel and NVIDIA compilers both they and the system gcc/msc support UDLs. +# if (FMT_HAS_FEATURE(cxx_user_literals) || FMT_GCC_VERSION >= 407 || \ + FMT_MSC_VER >= 1900) && \ + (!(FMT_ICC_VERSION || FMT_CUDA_VERSION) || FMT_ICC_VERSION >= 1500 || \ + FMT_CUDA_VERSION >= 700) +# define FMT_USE_USER_DEFINED_LITERALS 1 +# else +# define FMT_USE_USER_DEFINED_LITERALS 0 +# endif +#endif + +#ifndef FMT_USE_UDL_TEMPLATE +// EDG front end based compilers (icc, nvcc) and GCC < 6.4 do not propertly +// support UDL templates and GCC >= 9 warns about them. +# if FMT_USE_USER_DEFINED_LITERALS && FMT_ICC_VERSION == 0 && \ + FMT_CUDA_VERSION == 0 && \ + ((FMT_GCC_VERSION >= 604 && FMT_GCC_VERSION <= 900 && \ + __cplusplus >= 201402L) || \ + FMT_CLANG_VERSION >= 304) +# define FMT_USE_UDL_TEMPLATE 1 +# else +# define FMT_USE_UDL_TEMPLATE 0 +# endif +#endif + +#ifndef FMT_USE_FLOAT +# define FMT_USE_FLOAT 1 +#endif + +#ifndef FMT_USE_DOUBLE +# define FMT_USE_DOUBLE 1 +#endif + +#ifndef FMT_USE_LONG_DOUBLE +# define FMT_USE_LONG_DOUBLE 1 +#endif + +// __builtin_clz is broken in clang with Microsoft CodeGen: +// https://github.com/fmtlib/fmt/issues/519 +#if (FMT_GCC_VERSION || FMT_HAS_BUILTIN(__builtin_clz)) && !FMT_MSC_VER +# define FMT_BUILTIN_CLZ(n) __builtin_clz(n) +#endif +#if (FMT_GCC_VERSION || FMT_HAS_BUILTIN(__builtin_clzll)) && !FMT_MSC_VER +# define FMT_BUILTIN_CLZLL(n) __builtin_clzll(n) +#endif + +// Some compilers masquerade as both MSVC and GCC-likes or otherwise support +// __builtin_clz and __builtin_clzll, so only define FMT_BUILTIN_CLZ using the +// MSVC intrinsics if the clz and clzll builtins are not available. +#if FMT_MSC_VER && !defined(FMT_BUILTIN_CLZLL) && !defined(_MANAGED) +# include // _BitScanReverse, _BitScanReverse64 + +FMT_BEGIN_NAMESPACE +namespace internal { +// Avoid Clang with Microsoft CodeGen's -Wunknown-pragmas warning. +# ifndef __clang__ +# pragma intrinsic(_BitScanReverse) +# endif +inline uint32_t clz(uint32_t x) { + unsigned long r = 0; + _BitScanReverse(&r, x); + + FMT_ASSERT(x != 0, ""); + // Static analysis complains about using uninitialized data + // "r", but the only way that can happen is if "x" is 0, + // which the callers guarantee to not happen. +# pragma warning(suppress : 6102) + return 31 - r; +} +# define FMT_BUILTIN_CLZ(n) internal::clz(n) + +# if defined(_WIN64) && !defined(__clang__) +# pragma intrinsic(_BitScanReverse64) +# endif + +inline uint32_t clzll(uint64_t x) { + unsigned long r = 0; +# ifdef _WIN64 + _BitScanReverse64(&r, x); +# else + // Scan the high 32 bits. + if (_BitScanReverse(&r, static_cast(x >> 32))) return 63 - (r + 32); + + // Scan the low 32 bits. + _BitScanReverse(&r, static_cast(x)); +# endif + + FMT_ASSERT(x != 0, ""); + // Static analysis complains about using uninitialized data + // "r", but the only way that can happen is if "x" is 0, + // which the callers guarantee to not happen. +# pragma warning(suppress : 6102) + return 63 - r; +} +# define FMT_BUILTIN_CLZLL(n) internal::clzll(n) +} // namespace internal +FMT_END_NAMESPACE +#endif + +// Enable the deprecated numeric alignment. +#ifndef FMT_NUMERIC_ALIGN +# define FMT_NUMERIC_ALIGN 1 +#endif + +// Enable the deprecated percent specifier. +#ifndef FMT_DEPRECATED_PERCENT +# define FMT_DEPRECATED_PERCENT 0 +#endif + +FMT_BEGIN_NAMESPACE +namespace internal { + +// An equivalent of `*reinterpret_cast(&source)` that doesn't have +// undefined behavior (e.g. due to type aliasing). +// Example: uint64_t d = bit_cast(2.718); +template +inline Dest bit_cast(const Source& source) { + static_assert(sizeof(Dest) == sizeof(Source), "size mismatch"); + Dest dest; + std::memcpy(&dest, &source, sizeof(dest)); + return dest; +} + +inline bool is_big_endian() { + const auto u = 1u; + struct bytes { + char data[sizeof(u)]; + }; + return bit_cast(u).data[0] == 0; +} + +// A fallback implementation of uintptr_t for systems that lack it. +struct fallback_uintptr { + unsigned char value[sizeof(void*)]; + + fallback_uintptr() = default; + explicit fallback_uintptr(const void* p) { + *this = bit_cast(p); + if (is_big_endian()) { + for (size_t i = 0, j = sizeof(void*) - 1; i < j; ++i, --j) + std::swap(value[i], value[j]); + } + } +}; +#ifdef UINTPTR_MAX +using uintptr_t = ::uintptr_t; +inline uintptr_t to_uintptr(const void* p) { return bit_cast(p); } +#else +using uintptr_t = fallback_uintptr; +inline fallback_uintptr to_uintptr(const void* p) { + return fallback_uintptr(p); +} +#endif + +// Returns the largest possible value for type T. Same as +// std::numeric_limits::max() but shorter and not affected by the max macro. +template constexpr T max_value() { + return (std::numeric_limits::max)(); +} +template constexpr int num_bits() { + return std::numeric_limits::digits; +} +template <> constexpr int num_bits() { + return static_cast(sizeof(void*) * + std::numeric_limits::digits); +} + +// An approximation of iterator_t for pre-C++20 systems. +template +using iterator_t = decltype(std::begin(std::declval())); + +// Detect the iterator category of *any* given type in a SFINAE-friendly way. +// Unfortunately, older implementations of std::iterator_traits are not safe +// for use in a SFINAE-context. +template +struct iterator_category : std::false_type {}; + +template struct iterator_category { + using type = std::random_access_iterator_tag; +}; + +template +struct iterator_category> { + using type = typename It::iterator_category; +}; + +// Detect if *any* given type models the OutputIterator concept. +template class is_output_iterator { + // Check for mutability because all iterator categories derived from + // std::input_iterator_tag *may* also meet the requirements of an + // OutputIterator, thereby falling into the category of 'mutable iterators' + // [iterator.requirements.general] clause 4. The compiler reveals this + // property only at the point of *actually dereferencing* the iterator! + template + static decltype(*(std::declval())) test(std::input_iterator_tag); + template static char& test(std::output_iterator_tag); + template static const char& test(...); + + using type = decltype(test(typename iterator_category::type{})); + + public: + enum { value = !std::is_const>::value }; +}; + +// A workaround for std::string not having mutable data() until C++17. +template inline Char* get_data(std::basic_string& s) { + return &s[0]; +} +template +inline typename Container::value_type* get_data(Container& c) { + return c.data(); +} + +#if defined(_SECURE_SCL) && _SECURE_SCL +// Make a checked iterator to avoid MSVC warnings. +template using checked_ptr = stdext::checked_array_iterator; +template checked_ptr make_checked(T* p, std::size_t size) { + return {p, size}; +} +#else +template using checked_ptr = T*; +template inline T* make_checked(T* p, std::size_t) { return p; } +#endif + +template ::value)> +inline checked_ptr reserve( + std::back_insert_iterator& it, std::size_t n) { + Container& c = get_container(it); + std::size_t size = c.size(); + c.resize(size + n); + return make_checked(get_data(c) + size, n); +} + +template +inline Iterator& reserve(Iterator& it, std::size_t) { + return it; +} + +// An output iterator that counts the number of objects written to it and +// discards them. +class counting_iterator { + private: + std::size_t count_; + + public: + using iterator_category = std::output_iterator_tag; + using difference_type = std::ptrdiff_t; + using pointer = void; + using reference = void; + using _Unchecked_type = counting_iterator; // Mark iterator as checked. + + struct value_type { + template void operator=(const T&) {} + }; + + counting_iterator() : count_(0) {} + + std::size_t count() const { return count_; } + + counting_iterator& operator++() { + ++count_; + return *this; + } + + counting_iterator operator++(int) { + auto it = *this; + ++*this; + return it; + } + + value_type operator*() const { return {}; } +}; + +template class truncating_iterator_base { + protected: + OutputIt out_; + std::size_t limit_; + std::size_t count_; + + truncating_iterator_base(OutputIt out, std::size_t limit) + : out_(out), limit_(limit), count_(0) {} + + public: + using iterator_category = std::output_iterator_tag; + using value_type = typename std::iterator_traits::value_type; + using difference_type = void; + using pointer = void; + using reference = void; + using _Unchecked_type = + truncating_iterator_base; // Mark iterator as checked. + + OutputIt base() const { return out_; } + std::size_t count() const { return count_; } +}; + +// An output iterator that truncates the output and counts the number of objects +// written to it. +template ::value_type>::type> +class truncating_iterator; + +template +class truncating_iterator + : public truncating_iterator_base { + mutable typename truncating_iterator_base::value_type blackhole_; + + public: + using value_type = typename truncating_iterator_base::value_type; + + truncating_iterator(OutputIt out, std::size_t limit) + : truncating_iterator_base(out, limit) {} + + truncating_iterator& operator++() { + if (this->count_++ < this->limit_) ++this->out_; + return *this; + } + + truncating_iterator operator++(int) { + auto it = *this; + ++*this; + return it; + } + + value_type& operator*() const { + return this->count_ < this->limit_ ? *this->out_ : blackhole_; + } +}; + +template +class truncating_iterator + : public truncating_iterator_base { + public: + truncating_iterator(OutputIt out, std::size_t limit) + : truncating_iterator_base(out, limit) {} + + template truncating_iterator& operator=(T val) { + if (this->count_++ < this->limit_) *this->out_++ = val; + return *this; + } + + truncating_iterator& operator++() { return *this; } + truncating_iterator& operator++(int) { return *this; } + truncating_iterator& operator*() { return *this; } +}; + +// A range with the specified output iterator and value type. +template +class output_range { + private: + OutputIt it_; + + public: + using value_type = T; + using iterator = OutputIt; + struct sentinel {}; + + explicit output_range(OutputIt it) : it_(it) {} + OutputIt begin() const { return it_; } + sentinel end() const { return {}; } // Sentinel is not used yet. +}; + +template +inline size_t count_code_points(basic_string_view s) { + return s.size(); +} + +// Counts the number of code points in a UTF-8 string. +inline size_t count_code_points(basic_string_view s) { + const char* data = s.data(); + size_t num_code_points = 0; + for (size_t i = 0, size = s.size(); i != size; ++i) { + if ((data[i] & 0xc0) != 0x80) ++num_code_points; + } + return num_code_points; +} + +inline size_t count_code_points(basic_string_view s) { + return count_code_points(basic_string_view( + reinterpret_cast(s.data()), s.size())); +} + +template +inline size_t code_point_index(basic_string_view s, size_t n) { + size_t size = s.size(); + return n < size ? n : size; +} + +// Calculates the index of the nth code point in a UTF-8 string. +inline size_t code_point_index(basic_string_view s, size_t n) { + const char8_type* data = s.data(); + size_t num_code_points = 0; + for (size_t i = 0, size = s.size(); i != size; ++i) { + if ((data[i] & 0xc0) != 0x80 && ++num_code_points > n) { + return i; + } + } + return s.size(); +} + +inline char8_type to_char8_t(char c) { return static_cast(c); } + +template +using needs_conversion = bool_constant< + std::is_same::value_type, + char>::value && + std::is_same::value>; + +template ::value)> +OutputIt copy_str(InputIt begin, InputIt end, OutputIt it) { + return std::copy(begin, end, it); +} + +template ::value)> +OutputIt copy_str(InputIt begin, InputIt end, OutputIt it) { + return std::transform(begin, end, it, to_char8_t); +} + +#ifndef FMT_USE_GRISU +# define FMT_USE_GRISU 1 +#endif + +template constexpr bool use_grisu() { + return FMT_USE_GRISU && std::numeric_limits::is_iec559 && + sizeof(T) <= sizeof(double); +} + +template +template +void buffer::append(const U* begin, const U* end) { + std::size_t new_size = size_ + to_unsigned(end - begin); + reserve(new_size); + std::uninitialized_copy(begin, end, make_checked(ptr_, capacity_) + size_); + size_ = new_size; +} +} // namespace internal + +// A range with an iterator appending to a buffer. +template +class buffer_range : public internal::output_range< + std::back_insert_iterator>, T> { + public: + using iterator = std::back_insert_iterator>; + using internal::output_range::output_range; + buffer_range(internal::buffer& buf) + : internal::output_range(std::back_inserter(buf)) {} +}; + +class FMT_DEPRECATED u8string_view + : public basic_string_view { + public: + u8string_view(const char* s) + : basic_string_view( + reinterpret_cast(s)) {} + u8string_view(const char* s, size_t count) FMT_NOEXCEPT + : basic_string_view( + reinterpret_cast(s), count) {} +}; + +#if FMT_USE_USER_DEFINED_LITERALS +inline namespace literals { +FMT_DEPRECATED inline basic_string_view operator"" _u( + const char* s, std::size_t n) { + return {reinterpret_cast(s), n}; +} +} // namespace literals +#endif + +// The number of characters to store in the basic_memory_buffer object itself +// to avoid dynamic memory allocation. +enum { inline_buffer_size = 500 }; + +/** + \rst + A dynamically growing memory buffer for trivially copyable/constructible types + with the first ``SIZE`` elements stored in the object itself. + + You can use one of the following type aliases for common character types: + + +----------------+------------------------------+ + | Type | Definition | + +================+==============================+ + | memory_buffer | basic_memory_buffer | + +----------------+------------------------------+ + | wmemory_buffer | basic_memory_buffer | + +----------------+------------------------------+ + + **Example**:: + + fmt::memory_buffer out; + format_to(out, "The answer is {}.", 42); + + This will append the following output to the ``out`` object: + + .. code-block:: none + + The answer is 42. + + The output can be converted to an ``std::string`` with ``to_string(out)``. + \endrst + */ +template > +class basic_memory_buffer : private Allocator, public internal::buffer { + private: + T store_[SIZE]; + + // Deallocate memory allocated by the buffer. + void deallocate() { + T* data = this->data(); + if (data != store_) Allocator::deallocate(data, this->capacity()); + } + + protected: + void grow(std::size_t size) FMT_OVERRIDE; + + public: + using value_type = T; + using const_reference = const T&; + + explicit basic_memory_buffer(const Allocator& alloc = Allocator()) + : Allocator(alloc) { + this->set(store_, SIZE); + } + ~basic_memory_buffer() FMT_OVERRIDE { deallocate(); } + + private: + // Move data from other to this buffer. + void move(basic_memory_buffer& other) { + Allocator &this_alloc = *this, &other_alloc = other; + this_alloc = std::move(other_alloc); + T* data = other.data(); + std::size_t size = other.size(), capacity = other.capacity(); + if (data == other.store_) { + this->set(store_, capacity); + std::uninitialized_copy(other.store_, other.store_ + size, + internal::make_checked(store_, capacity)); + } else { + this->set(data, capacity); + // Set pointer to the inline array so that delete is not called + // when deallocating. + other.set(other.store_, 0); + } + this->resize(size); + } + + public: + /** + \rst + Constructs a :class:`fmt::basic_memory_buffer` object moving the content + of the other object to it. + \endrst + */ + basic_memory_buffer(basic_memory_buffer&& other) FMT_NOEXCEPT { move(other); } + + /** + \rst + Moves the content of the other ``basic_memory_buffer`` object to this one. + \endrst + */ + basic_memory_buffer& operator=(basic_memory_buffer&& other) FMT_NOEXCEPT { + FMT_ASSERT(this != &other, ""); + deallocate(); + move(other); + return *this; + } + + // Returns a copy of the allocator associated with this buffer. + Allocator get_allocator() const { return *this; } +}; + +template +void basic_memory_buffer::grow(std::size_t size) { +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + if (size > 1000) throw std::runtime_error("fuzz mode - won't grow that much"); +#endif + std::size_t old_capacity = this->capacity(); + std::size_t new_capacity = old_capacity + old_capacity / 2; + if (size > new_capacity) new_capacity = size; + T* old_data = this->data(); + T* new_data = std::allocator_traits::allocate(*this, new_capacity); + // The following code doesn't throw, so the raw pointer above doesn't leak. + std::uninitialized_copy(old_data, old_data + this->size(), + internal::make_checked(new_data, new_capacity)); + this->set(new_data, new_capacity); + // deallocate must not throw according to the standard, but even if it does, + // the buffer already uses the new storage and will deallocate it in + // destructor. + if (old_data != store_) Allocator::deallocate(old_data, old_capacity); +} + +using memory_buffer = basic_memory_buffer; +using wmemory_buffer = basic_memory_buffer; + +/** A formatting error such as invalid format string. */ +FMT_CLASS_API +class FMT_API format_error : public std::runtime_error { + public: + explicit format_error(const char* message) : std::runtime_error(message) {} + explicit format_error(const std::string& message) + : std::runtime_error(message) {} + format_error(const format_error&) = default; + format_error& operator=(const format_error&) = default; + format_error(format_error&&) = default; + format_error& operator=(format_error&&) = default; + ~format_error() FMT_NOEXCEPT FMT_OVERRIDE; +}; + +namespace internal { + +// Returns true if value is negative, false otherwise. +// Same as `value < 0` but doesn't produce warnings if T is an unsigned type. +template ::is_signed)> +FMT_CONSTEXPR bool is_negative(T value) { + return value < 0; +} +template ::is_signed)> +FMT_CONSTEXPR bool is_negative(T) { + return false; +} + +template ::value)> +FMT_CONSTEXPR bool is_supported_floating_point(T) { + return (std::is_same::value && FMT_USE_FLOAT) || + (std::is_same::value && FMT_USE_DOUBLE) || + (std::is_same::value && FMT_USE_LONG_DOUBLE); +} + +// Smallest of uint32_t, uint64_t, uint128_t that is large enough to +// represent all values of T. +template +using uint32_or_64_or_128_t = conditional_t< + std::numeric_limits::digits <= 32, uint32_t, + conditional_t::digits <= 64, uint64_t, uint128_t>>; + +// Static data is placed in this class template for the header-only config. +template struct FMT_EXTERN_TEMPLATE_API basic_data { + static const uint64_t powers_of_10_64[]; + static const uint32_t zero_or_powers_of_10_32[]; + static const uint64_t zero_or_powers_of_10_64[]; + static const uint64_t pow10_significands[]; + static const int16_t pow10_exponents[]; + static const char digits[]; + static const char hex_digits[]; + static const char foreground_color[]; + static const char background_color[]; + static const char reset_color[5]; + static const wchar_t wreset_color[5]; + static const char signs[]; +}; + +FMT_EXTERN template struct basic_data; + +// This is a struct rather than an alias to avoid shadowing warnings in gcc. +struct data : basic_data<> {}; + +#ifdef FMT_BUILTIN_CLZLL +// Returns the number of decimal digits in n. Leading zeros are not counted +// except for n == 0 in which case count_digits returns 1. +inline int count_digits(uint64_t n) { + // Based on http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10 + // and the benchmark https://github.com/localvoid/cxx-benchmark-count-digits. + int t = (64 - FMT_BUILTIN_CLZLL(n | 1)) * 1233 >> 12; + return t - (n < data::zero_or_powers_of_10_64[t]) + 1; +} +#else +// Fallback version of count_digits used when __builtin_clz is not available. +inline int count_digits(uint64_t n) { + int count = 1; + for (;;) { + // Integer division is slow so do it for a group of four digits instead + // of for every digit. The idea comes from the talk by Alexandrescu + // "Three Optimization Tips for C++". See speed-test for a comparison. + if (n < 10) return count; + if (n < 100) return count + 1; + if (n < 1000) return count + 2; + if (n < 10000) return count + 3; + n /= 10000u; + count += 4; + } +} +#endif + +#if FMT_USE_INT128 +inline int count_digits(uint128_t n) { + int count = 1; + for (;;) { + // Integer division is slow so do it for a group of four digits instead + // of for every digit. The idea comes from the talk by Alexandrescu + // "Three Optimization Tips for C++". See speed-test for a comparison. + if (n < 10) return count; + if (n < 100) return count + 1; + if (n < 1000) return count + 2; + if (n < 10000) return count + 3; + n /= 10000U; + count += 4; + } +} +#endif + +// Counts the number of digits in n. BITS = log2(radix). +template inline int count_digits(UInt n) { + int num_digits = 0; + do { + ++num_digits; + } while ((n >>= BITS) != 0); + return num_digits; +} + +template <> int count_digits<4>(internal::fallback_uintptr n); + +#if FMT_GCC_VERSION || FMT_CLANG_VERSION +# define FMT_ALWAYS_INLINE inline __attribute__((always_inline)) +#else +# define FMT_ALWAYS_INLINE +#endif + +#ifdef FMT_BUILTIN_CLZ +// Optional version of count_digits for better performance on 32-bit platforms. +inline int count_digits(uint32_t n) { + int t = (32 - FMT_BUILTIN_CLZ(n | 1)) * 1233 >> 12; + return t - (n < data::zero_or_powers_of_10_32[t]) + 1; +} +#endif + +template FMT_API std::string grouping_impl(locale_ref loc); +template inline std::string grouping(locale_ref loc) { + return grouping_impl(loc); +} +template <> inline std::string grouping(locale_ref loc) { + return grouping_impl(loc); +} + +template FMT_API Char thousands_sep_impl(locale_ref loc); +template inline Char thousands_sep(locale_ref loc) { + return Char(thousands_sep_impl(loc)); +} +template <> inline wchar_t thousands_sep(locale_ref loc) { + return thousands_sep_impl(loc); +} + +template FMT_API Char decimal_point_impl(locale_ref loc); +template inline Char decimal_point(locale_ref loc) { + return Char(decimal_point_impl(loc)); +} +template <> inline wchar_t decimal_point(locale_ref loc) { + return decimal_point_impl(loc); +} + +// Formats a decimal unsigned integer value writing into buffer. +// add_thousands_sep is called after writing each char to add a thousands +// separator if necessary. +template +inline Char* format_decimal(Char* buffer, UInt value, int num_digits, + F add_thousands_sep) { + FMT_ASSERT(num_digits >= 0, "invalid digit count"); + buffer += num_digits; + Char* end = buffer; + while (value >= 100) { + // Integer division is slow so do it for a group of two digits instead + // of for every digit. The idea comes from the talk by Alexandrescu + // "Three Optimization Tips for C++". See speed-test for a comparison. + auto index = static_cast((value % 100) * 2); + value /= 100; + *--buffer = static_cast(data::digits[index + 1]); + add_thousands_sep(buffer); + *--buffer = static_cast(data::digits[index]); + add_thousands_sep(buffer); + } + if (value < 10) { + *--buffer = static_cast('0' + value); + return end; + } + auto index = static_cast(value * 2); + *--buffer = static_cast(data::digits[index + 1]); + add_thousands_sep(buffer); + *--buffer = static_cast(data::digits[index]); + return end; +} + +template constexpr int digits10() FMT_NOEXCEPT { + return std::numeric_limits::digits10; +} +template <> constexpr int digits10() FMT_NOEXCEPT { return 38; } +template <> constexpr int digits10() FMT_NOEXCEPT { return 38; } + +template +inline Iterator format_decimal(Iterator out, UInt value, int num_digits, + F add_thousands_sep) { + FMT_ASSERT(num_digits >= 0, "invalid digit count"); + // Buffer should be large enough to hold all digits (<= digits10 + 1). + enum { max_size = digits10() + 1 }; + Char buffer[2 * max_size]; + auto end = format_decimal(buffer, value, num_digits, add_thousands_sep); + return internal::copy_str(buffer, end, out); +} + +template +inline It format_decimal(It out, UInt value, int num_digits) { + return format_decimal(out, value, num_digits, [](Char*) {}); +} + +template +inline Char* format_uint(Char* buffer, UInt value, int num_digits, + bool upper = false) { + buffer += num_digits; + Char* end = buffer; + do { + const char* digits = upper ? "0123456789ABCDEF" : data::hex_digits; + unsigned digit = (value & ((1 << BASE_BITS) - 1)); + *--buffer = static_cast(BASE_BITS < 4 ? static_cast('0' + digit) + : digits[digit]); + } while ((value >>= BASE_BITS) != 0); + return end; +} + +template +Char* format_uint(Char* buffer, internal::fallback_uintptr n, int num_digits, + bool = false) { + auto char_digits = std::numeric_limits::digits / 4; + int start = (num_digits + char_digits - 1) / char_digits - 1; + if (int start_digits = num_digits % char_digits) { + unsigned value = n.value[start--]; + buffer = format_uint(buffer, value, start_digits); + } + for (; start >= 0; --start) { + unsigned value = n.value[start]; + buffer += char_digits; + auto p = buffer; + for (int i = 0; i < char_digits; ++i) { + unsigned digit = (value & ((1 << BASE_BITS) - 1)); + *--p = static_cast(data::hex_digits[digit]); + value >>= BASE_BITS; + } + } + return buffer; +} + +template +inline It format_uint(It out, UInt value, int num_digits, bool upper = false) { + // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1). + char buffer[num_bits() / BASE_BITS + 1]; + format_uint(buffer, value, num_digits, upper); + return internal::copy_str(buffer, buffer + num_digits, out); +} + +// A converter from UTF-8 to UTF-16. +class utf8_to_utf16 { + private: + wmemory_buffer buffer_; + + public: + FMT_API explicit utf8_to_utf16(string_view s); + operator wstring_view() const { return {&buffer_[0], size()}; } + size_t size() const { return buffer_.size() - 1; } + const wchar_t* c_str() const { return &buffer_[0]; } + std::wstring str() const { return {&buffer_[0], size()}; } +}; + +template struct null {}; + +// Workaround an array initialization issue in gcc 4.8. +template struct fill_t { + private: + enum { max_size = 4 }; + Char data_[max_size]; + unsigned char size_; + + public: + FMT_CONSTEXPR void operator=(basic_string_view s) { + auto size = s.size(); + if (size > max_size) { + FMT_THROW(format_error("invalid fill")); + return; + } + for (size_t i = 0; i < size; ++i) data_[i] = s[i]; + size_ = static_cast(size); + } + + size_t size() const { return size_; } + const Char* data() const { return data_; } + + FMT_CONSTEXPR Char& operator[](size_t index) { return data_[index]; } + FMT_CONSTEXPR const Char& operator[](size_t index) const { + return data_[index]; + } + + static FMT_CONSTEXPR fill_t make() { + auto fill = fill_t(); + fill[0] = Char(' '); + fill.size_ = 1; + return fill; + } +}; +} // namespace internal + +// We cannot use enum classes as bit fields because of a gcc bug +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61414. +namespace align { +enum type { none, left, right, center, numeric }; +} +using align_t = align::type; + +namespace sign { +enum type { none, minus, plus, space }; +} +using sign_t = sign::type; + +// Format specifiers for built-in and string types. +template struct basic_format_specs { + int width; + int precision; + char type; + align_t align : 4; + sign_t sign : 3; + bool alt : 1; // Alternate form ('#'). + internal::fill_t fill; + + constexpr basic_format_specs() + : width(0), + precision(-1), + type(0), + align(align::none), + sign(sign::none), + alt(false), + fill(internal::fill_t::make()) {} +}; + +using format_specs = basic_format_specs; + +namespace internal { + +// A floating-point presentation format. +enum class float_format : unsigned char { + general, // General: exponent notation or fixed point based on magnitude. + exp, // Exponent notation with the default precision of 6, e.g. 1.2e-3. + fixed, // Fixed point with the default precision of 6, e.g. 0.0012. + hex +}; + +struct float_specs { + int precision; + float_format format : 8; + sign_t sign : 8; + bool upper : 1; + bool locale : 1; + bool percent : 1; + bool binary32 : 1; + bool use_grisu : 1; + bool showpoint : 1; +}; + +// Writes the exponent exp in the form "[+-]d{2,3}" to buffer. +template It write_exponent(int exp, It it) { + FMT_ASSERT(-10000 < exp && exp < 10000, "exponent out of range"); + if (exp < 0) { + *it++ = static_cast('-'); + exp = -exp; + } else { + *it++ = static_cast('+'); + } + if (exp >= 100) { + const char* top = data::digits + (exp / 100) * 2; + if (exp >= 1000) *it++ = static_cast(top[0]); + *it++ = static_cast(top[1]); + exp %= 100; + } + const char* d = data::digits + exp * 2; + *it++ = static_cast(d[0]); + *it++ = static_cast(d[1]); + return it; +} + +template class float_writer { + private: + // The number is given as v = digits_ * pow(10, exp_). + const char* digits_; + int num_digits_; + int exp_; + size_t size_; + float_specs specs_; + Char decimal_point_; + + template It prettify(It it) const { + // pow(10, full_exp - 1) <= v <= pow(10, full_exp). + int full_exp = num_digits_ + exp_; + if (specs_.format == float_format::exp) { + // Insert a decimal point after the first digit and add an exponent. + *it++ = static_cast(*digits_); + int num_zeros = specs_.precision - num_digits_; + if (num_digits_ > 1 || specs_.showpoint) *it++ = decimal_point_; + it = copy_str(digits_ + 1, digits_ + num_digits_, it); + if (num_zeros > 0 && specs_.showpoint) + it = std::fill_n(it, num_zeros, static_cast('0')); + *it++ = static_cast(specs_.upper ? 'E' : 'e'); + return write_exponent(full_exp - 1, it); + } + if (num_digits_ <= full_exp) { + // 1234e7 -> 12340000000[.0+] + it = copy_str(digits_, digits_ + num_digits_, it); + it = std::fill_n(it, full_exp - num_digits_, static_cast('0')); + if (specs_.showpoint || specs_.precision < 0) { + *it++ = decimal_point_; + int num_zeros = specs_.precision - full_exp; + if (num_zeros <= 0) { + if (specs_.format != float_format::fixed) + *it++ = static_cast('0'); + return it; + } +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + if (num_zeros > 1000) + throw std::runtime_error("fuzz mode - avoiding excessive cpu use"); +#endif + it = std::fill_n(it, num_zeros, static_cast('0')); + } + } else if (full_exp > 0) { + // 1234e-2 -> 12.34[0+] + it = copy_str(digits_, digits_ + full_exp, it); + if (!specs_.showpoint) { + // Remove trailing zeros. + int num_digits = num_digits_; + while (num_digits > full_exp && digits_[num_digits - 1] == '0') + --num_digits; + if (num_digits != full_exp) *it++ = decimal_point_; + return copy_str(digits_ + full_exp, digits_ + num_digits, it); + } + *it++ = decimal_point_; + it = copy_str(digits_ + full_exp, digits_ + num_digits_, it); + if (specs_.precision > num_digits_) { + // Add trailing zeros. + int num_zeros = specs_.precision - num_digits_; + it = std::fill_n(it, num_zeros, static_cast('0')); + } + } else { + // 1234e-6 -> 0.001234 + *it++ = static_cast('0'); + int num_zeros = -full_exp; + int num_digits = num_digits_; + if (num_digits == 0 && specs_.precision >= 0 && + specs_.precision < num_zeros) { + num_zeros = specs_.precision; + } + // Remove trailing zeros. + if (!specs_.showpoint) + while (num_digits > 0 && digits_[num_digits - 1] == '0') --num_digits; + if (num_zeros != 0 || num_digits != 0 || specs_.showpoint) { + *it++ = decimal_point_; + it = std::fill_n(it, num_zeros, static_cast('0')); + it = copy_str(digits_, digits_ + num_digits, it); + } + } + return it; + } + + public: + float_writer(const char* digits, int num_digits, int exp, float_specs specs, + Char decimal_point) + : digits_(digits), + num_digits_(num_digits), + exp_(exp), + specs_(specs), + decimal_point_(decimal_point) { + int full_exp = num_digits + exp - 1; + int precision = specs.precision > 0 ? specs.precision : 16; + if (specs_.format == float_format::general && + !(full_exp >= -4 && full_exp < precision)) { + specs_.format = float_format::exp; + } + size_ = prettify(counting_iterator()).count(); + size_ += specs.sign ? 1 : 0; + } + + size_t size() const { return size_; } + size_t width() const { return size(); } + + template void operator()(It&& it) { + if (specs_.sign) *it++ = static_cast(data::signs[specs_.sign]); + it = prettify(it); + } +}; + +template +int format_float(T value, int precision, float_specs specs, buffer& buf); + +// Formats a floating-point number with snprintf. +template +int snprintf_float(T value, int precision, float_specs specs, + buffer& buf); + +template T promote_float(T value) { return value; } +inline double promote_float(float value) { return static_cast(value); } + +template +FMT_CONSTEXPR void handle_int_type_spec(char spec, Handler&& handler) { + switch (spec) { + case 0: + case 'd': + handler.on_dec(); + break; + case 'x': + case 'X': + handler.on_hex(); + break; + case 'b': + case 'B': + handler.on_bin(); + break; + case 'o': + handler.on_oct(); + break; + case 'n': + case 'L': + handler.on_num(); + break; + default: + handler.on_error(); + } +} + +template +FMT_CONSTEXPR float_specs parse_float_type_spec( + const basic_format_specs& specs, ErrorHandler&& eh = {}) { + auto result = float_specs(); + result.showpoint = specs.alt; + switch (specs.type) { + case 0: + result.format = float_format::general; + result.showpoint |= specs.precision > 0; + break; + case 'G': + result.upper = true; + FMT_FALLTHROUGH; + case 'g': + result.format = float_format::general; + break; + case 'E': + result.upper = true; + FMT_FALLTHROUGH; + case 'e': + result.format = float_format::exp; + result.showpoint |= specs.precision != 0; + break; + case 'F': + result.upper = true; + FMT_FALLTHROUGH; + case 'f': + result.format = float_format::fixed; + result.showpoint |= specs.precision != 0; + break; +#if FMT_DEPRECATED_PERCENT + case '%': + result.format = float_format::fixed; + result.percent = true; + break; +#endif + case 'A': + result.upper = true; + FMT_FALLTHROUGH; + case 'a': + result.format = float_format::hex; + break; + case 'n': + result.locale = true; + break; + default: + eh.on_error("invalid type specifier"); + break; + } + return result; +} + +template +FMT_CONSTEXPR void handle_char_specs(const basic_format_specs* specs, + Handler&& handler) { + if (!specs) return handler.on_char(); + if (specs->type && specs->type != 'c') return handler.on_int(); + if (specs->align == align::numeric || specs->sign != sign::none || specs->alt) + handler.on_error("invalid format specifier for char"); + handler.on_char(); +} + +template +FMT_CONSTEXPR void handle_cstring_type_spec(Char spec, Handler&& handler) { + if (spec == 0 || spec == 's') + handler.on_string(); + else if (spec == 'p') + handler.on_pointer(); + else + handler.on_error("invalid type specifier"); +} + +template +FMT_CONSTEXPR void check_string_type_spec(Char spec, ErrorHandler&& eh) { + if (spec != 0 && spec != 's') eh.on_error("invalid type specifier"); +} + +template +FMT_CONSTEXPR void check_pointer_type_spec(Char spec, ErrorHandler&& eh) { + if (spec != 0 && spec != 'p') eh.on_error("invalid type specifier"); +} + +template class int_type_checker : private ErrorHandler { + public: + FMT_CONSTEXPR explicit int_type_checker(ErrorHandler eh) : ErrorHandler(eh) {} + + FMT_CONSTEXPR void on_dec() {} + FMT_CONSTEXPR void on_hex() {} + FMT_CONSTEXPR void on_bin() {} + FMT_CONSTEXPR void on_oct() {} + FMT_CONSTEXPR void on_num() {} + + FMT_CONSTEXPR void on_error() { + ErrorHandler::on_error("invalid type specifier"); + } +}; + +template +class char_specs_checker : public ErrorHandler { + private: + char type_; + + public: + FMT_CONSTEXPR char_specs_checker(char type, ErrorHandler eh) + : ErrorHandler(eh), type_(type) {} + + FMT_CONSTEXPR void on_int() { + handle_int_type_spec(type_, int_type_checker(*this)); + } + FMT_CONSTEXPR void on_char() {} +}; + +template +class cstring_type_checker : public ErrorHandler { + public: + FMT_CONSTEXPR explicit cstring_type_checker(ErrorHandler eh) + : ErrorHandler(eh) {} + + FMT_CONSTEXPR void on_string() {} + FMT_CONSTEXPR void on_pointer() {} +}; + +template +void arg_map::init(const basic_format_args& args) { + if (map_) return; + map_ = new entry[internal::to_unsigned(args.max_size())]; + if (args.is_packed()) { + for (int i = 0;; ++i) { + internal::type arg_type = args.type(i); + if (arg_type == internal::type::none_type) return; + if (arg_type == internal::type::named_arg_type) + push_back(args.values_[i]); + } + } + for (int i = 0, n = args.max_size(); i < n; ++i) { + auto type = args.args_[i].type_; + if (type == internal::type::named_arg_type) push_back(args.args_[i].value_); + } +} + +template struct nonfinite_writer { + sign_t sign; + const char* str; + static constexpr size_t str_size = 3; + + size_t size() const { return str_size + (sign ? 1 : 0); } + size_t width() const { return size(); } + + template void operator()(It&& it) const { + if (sign) *it++ = static_cast(data::signs[sign]); + it = copy_str(str, str + str_size, it); + } +}; + +template +FMT_NOINLINE OutputIt fill(OutputIt it, size_t n, const fill_t& fill) { + auto fill_size = fill.size(); + if (fill_size == 1) return std::fill_n(it, n, fill[0]); + for (size_t i = 0; i < n; ++i) it = std::copy_n(fill.data(), fill_size, it); + return it; +} + +// This template provides operations for formatting and writing data into a +// character range. +template class basic_writer { + public: + using char_type = typename Range::value_type; + using iterator = typename Range::iterator; + using format_specs = basic_format_specs; + + private: + iterator out_; // Output iterator. + locale_ref locale_; + + // Attempts to reserve space for n extra characters in the output range. + // Returns a pointer to the reserved range or a reference to out_. + auto reserve(std::size_t n) -> decltype(internal::reserve(out_, n)) { + return internal::reserve(out_, n); + } + + template struct padded_int_writer { + size_t size_; + string_view prefix; + char_type fill; + std::size_t padding; + F f; + + size_t size() const { return size_; } + size_t width() const { return size_; } + + template void operator()(It&& it) const { + if (prefix.size() != 0) + it = copy_str(prefix.begin(), prefix.end(), it); + it = std::fill_n(it, padding, fill); + f(it); + } + }; + + // Writes an integer in the format + // + // where are written by f(it). + template + void write_int(int num_digits, string_view prefix, format_specs specs, F f) { + std::size_t size = prefix.size() + to_unsigned(num_digits); + char_type fill = specs.fill[0]; + std::size_t padding = 0; + if (specs.align == align::numeric) { + auto unsiged_width = to_unsigned(specs.width); + if (unsiged_width > size) { + padding = unsiged_width - size; + size = unsiged_width; + } + } else if (specs.precision > num_digits) { + size = prefix.size() + to_unsigned(specs.precision); + padding = to_unsigned(specs.precision - num_digits); + fill = static_cast('0'); + } + if (specs.align == align::none) specs.align = align::right; + write_padded(specs, padded_int_writer{size, prefix, fill, padding, f}); + } + + // Writes a decimal integer. + template void write_decimal(Int value) { + auto abs_value = static_cast>(value); + bool negative = is_negative(value); + // Don't do -abs_value since it trips unsigned-integer-overflow sanitizer. + if (negative) abs_value = ~abs_value + 1; + int num_digits = count_digits(abs_value); + auto&& it = reserve((negative ? 1 : 0) + static_cast(num_digits)); + if (negative) *it++ = static_cast('-'); + it = format_decimal(it, abs_value, num_digits); + } + + // The handle_int_type_spec handler that writes an integer. + template struct int_writer { + using unsigned_type = uint32_or_64_or_128_t; + + basic_writer& writer; + const Specs& specs; + unsigned_type abs_value; + char prefix[4]; + unsigned prefix_size; + + string_view get_prefix() const { return string_view(prefix, prefix_size); } + + int_writer(basic_writer& w, Int value, const Specs& s) + : writer(w), + specs(s), + abs_value(static_cast(value)), + prefix_size(0) { + if (is_negative(value)) { + prefix[0] = '-'; + ++prefix_size; + abs_value = 0 - abs_value; + } else if (specs.sign != sign::none && specs.sign != sign::minus) { + prefix[0] = specs.sign == sign::plus ? '+' : ' '; + ++prefix_size; + } + } + + struct dec_writer { + unsigned_type abs_value; + int num_digits; + + template void operator()(It&& it) const { + it = internal::format_decimal(it, abs_value, num_digits); + } + }; + + void on_dec() { + int num_digits = count_digits(abs_value); + writer.write_int(num_digits, get_prefix(), specs, + dec_writer{abs_value, num_digits}); + } + + struct hex_writer { + int_writer& self; + int num_digits; + + template void operator()(It&& it) const { + it = format_uint<4, char_type>(it, self.abs_value, num_digits, + self.specs.type != 'x'); + } + }; + + void on_hex() { + if (specs.alt) { + prefix[prefix_size++] = '0'; + prefix[prefix_size++] = specs.type; + } + int num_digits = count_digits<4>(abs_value); + writer.write_int(num_digits, get_prefix(), specs, + hex_writer{*this, num_digits}); + } + + template struct bin_writer { + unsigned_type abs_value; + int num_digits; + + template void operator()(It&& it) const { + it = format_uint(it, abs_value, num_digits); + } + }; + + void on_bin() { + if (specs.alt) { + prefix[prefix_size++] = '0'; + prefix[prefix_size++] = static_cast(specs.type); + } + int num_digits = count_digits<1>(abs_value); + writer.write_int(num_digits, get_prefix(), specs, + bin_writer<1>{abs_value, num_digits}); + } + + void on_oct() { + int num_digits = count_digits<3>(abs_value); + if (specs.alt && specs.precision <= num_digits && abs_value != 0) { + // Octal prefix '0' is counted as a digit, so only add it if precision + // is not greater than the number of digits. + prefix[prefix_size++] = '0'; + } + writer.write_int(num_digits, get_prefix(), specs, + bin_writer<3>{abs_value, num_digits}); + } + + enum { sep_size = 1 }; + + struct num_writer { + unsigned_type abs_value; + int size; + const std::string& groups; + char_type sep; + + template void operator()(It&& it) const { + basic_string_view s(&sep, sep_size); + // Index of a decimal digit with the least significant digit having + // index 0. + int digit_index = 0; + std::string::const_iterator group = groups.cbegin(); + it = format_decimal( + it, abs_value, size, + [this, s, &group, &digit_index](char_type*& buffer) { + if (*group <= 0 || ++digit_index % *group != 0 || + *group == max_value()) + return; + if (group + 1 != groups.cend()) { + digit_index = 0; + ++group; + } + buffer -= s.size(); + std::uninitialized_copy(s.data(), s.data() + s.size(), + make_checked(buffer, s.size())); + }); + } + }; + + void on_num() { + std::string groups = grouping(writer.locale_); + if (groups.empty()) return on_dec(); + auto sep = thousands_sep(writer.locale_); + if (!sep) return on_dec(); + int num_digits = count_digits(abs_value); + int size = num_digits; + std::string::const_iterator group = groups.cbegin(); + while (group != groups.cend() && num_digits > *group && *group > 0 && + *group != max_value()) { + size += sep_size; + num_digits -= *group; + ++group; + } + if (group == groups.cend()) + size += sep_size * ((num_digits - 1) / groups.back()); + writer.write_int(size, get_prefix(), specs, + num_writer{abs_value, size, groups, sep}); + } + + FMT_NORETURN void on_error() { + FMT_THROW(format_error("invalid type specifier")); + } + }; + + template struct str_writer { + const Char* s; + size_t size_; + + size_t size() const { return size_; } + size_t width() const { + return count_code_points(basic_string_view(s, size_)); + } + + template void operator()(It&& it) const { + it = copy_str(s, s + size_, it); + } + }; + + struct bytes_writer { + string_view bytes; + + size_t size() const { return bytes.size(); } + size_t width() const { return bytes.size(); } + + template void operator()(It&& it) const { + const char* data = bytes.data(); + it = copy_str(data, data + size(), it); + } + }; + + template struct pointer_writer { + UIntPtr value; + int num_digits; + + size_t size() const { return to_unsigned(num_digits) + 2; } + size_t width() const { return size(); } + + template void operator()(It&& it) const { + *it++ = static_cast('0'); + *it++ = static_cast('x'); + it = format_uint<4, char_type>(it, value, num_digits); + } + }; + + public: + explicit basic_writer(Range out, locale_ref loc = locale_ref()) + : out_(out.begin()), locale_(loc) {} + + iterator out() const { return out_; } + + // Writes a value in the format + // + // where is written by f(it). + template void write_padded(const format_specs& specs, F&& f) { + // User-perceived width (in code points). + unsigned width = to_unsigned(specs.width); + size_t size = f.size(); // The number of code units. + size_t num_code_points = width != 0 ? f.width() : size; + if (width <= num_code_points) return f(reserve(size)); + size_t padding = width - num_code_points; + size_t fill_size = specs.fill.size(); + auto&& it = reserve(size + padding * fill_size); + if (specs.align == align::right) { + it = fill(it, padding, specs.fill); + f(it); + } else if (specs.align == align::center) { + std::size_t left_padding = padding / 2; + it = fill(it, left_padding, specs.fill); + f(it); + it = fill(it, padding - left_padding, specs.fill); + } else { + f(it); + it = fill(it, padding, specs.fill); + } + } + + void write(int value) { write_decimal(value); } + void write(long value) { write_decimal(value); } + void write(long long value) { write_decimal(value); } + + void write(unsigned value) { write_decimal(value); } + void write(unsigned long value) { write_decimal(value); } + void write(unsigned long long value) { write_decimal(value); } + +#if FMT_USE_INT128 + void write(int128_t value) { write_decimal(value); } + void write(uint128_t value) { write_decimal(value); } +#endif + + template + void write_int(T value, const Spec& spec) { + handle_int_type_spec(spec.type, int_writer(*this, value, spec)); + } + + template ::value)> + void write(T value, format_specs specs = {}) { + if (const_check(!is_supported_floating_point(value))) { + return; + } + float_specs fspecs = parse_float_type_spec(specs); + fspecs.sign = specs.sign; + if (std::signbit(value)) { // value < 0 is false for NaN so use signbit. + fspecs.sign = sign::minus; + value = -value; + } else if (fspecs.sign == sign::minus) { + fspecs.sign = sign::none; + } + + if (!std::isfinite(value)) { + auto str = std::isinf(value) ? (fspecs.upper ? "INF" : "inf") + : (fspecs.upper ? "NAN" : "nan"); + return write_padded(specs, nonfinite_writer{fspecs.sign, str}); + } + + if (specs.align == align::none) { + specs.align = align::right; + } else if (specs.align == align::numeric) { + if (fspecs.sign) { + auto&& it = reserve(1); + *it++ = static_cast(data::signs[fspecs.sign]); + fspecs.sign = sign::none; + if (specs.width != 0) --specs.width; + } + specs.align = align::right; + } + + memory_buffer buffer; + if (fspecs.format == float_format::hex) { + if (fspecs.sign) buffer.push_back(data::signs[fspecs.sign]); + snprintf_float(promote_float(value), specs.precision, fspecs, buffer); + write_padded(specs, str_writer{buffer.data(), buffer.size()}); + return; + } + int precision = specs.precision >= 0 || !specs.type ? specs.precision : 6; + if (fspecs.format == float_format::exp) { + if (precision == max_value()) + FMT_THROW(format_error("number is too big")); + else + ++precision; + } + if (const_check(std::is_same())) fspecs.binary32 = true; + fspecs.use_grisu = use_grisu(); + if (const_check(FMT_DEPRECATED_PERCENT) && fspecs.percent) value *= 100; + int exp = format_float(promote_float(value), precision, fspecs, buffer); + if (const_check(FMT_DEPRECATED_PERCENT) && fspecs.percent) { + buffer.push_back('%'); + --exp; // Adjust decimal place position. + } + fspecs.precision = precision; + char_type point = fspecs.locale ? decimal_point(locale_) + : static_cast('.'); + write_padded(specs, float_writer(buffer.data(), + static_cast(buffer.size()), + exp, fspecs, point)); + } + + void write(char value) { + auto&& it = reserve(1); + *it++ = value; + } + + template ::value)> + void write(Char value) { + auto&& it = reserve(1); + *it++ = value; + } + + void write(string_view value) { + auto&& it = reserve(value.size()); + it = copy_str(value.begin(), value.end(), it); + } + void write(wstring_view value) { + static_assert(std::is_same::value, ""); + auto&& it = reserve(value.size()); + it = std::copy(value.begin(), value.end(), it); + } + + template + void write(const Char* s, std::size_t size, const format_specs& specs) { + write_padded(specs, str_writer{s, size}); + } + + template + void write(basic_string_view s, const format_specs& specs = {}) { + const Char* data = s.data(); + std::size_t size = s.size(); + if (specs.precision >= 0 && to_unsigned(specs.precision) < size) + size = code_point_index(s, to_unsigned(specs.precision)); + write(data, size, specs); + } + + void write_bytes(string_view bytes, const format_specs& specs) { + write_padded(specs, bytes_writer{bytes}); + } + + template + void write_pointer(UIntPtr value, const format_specs* specs) { + int num_digits = count_digits<4>(value); + auto pw = pointer_writer{value, num_digits}; + if (!specs) return pw(reserve(to_unsigned(num_digits) + 2)); + format_specs specs_copy = *specs; + if (specs_copy.align == align::none) specs_copy.align = align::right; + write_padded(specs_copy, pw); + } +}; + +using writer = basic_writer>; + +template struct is_integral : std::is_integral {}; +template <> struct is_integral : std::true_type {}; +template <> struct is_integral : std::true_type {}; + +template +class arg_formatter_base { + public: + using char_type = typename Range::value_type; + using iterator = typename Range::iterator; + using format_specs = basic_format_specs; + + private: + using writer_type = basic_writer; + writer_type writer_; + format_specs* specs_; + + struct char_writer { + char_type value; + + size_t size() const { return 1; } + size_t width() const { return 1; } + + template void operator()(It&& it) const { *it++ = value; } + }; + + void write_char(char_type value) { + if (specs_) + writer_.write_padded(*specs_, char_writer{value}); + else + writer_.write(value); + } + + void write_pointer(const void* p) { + writer_.write_pointer(internal::to_uintptr(p), specs_); + } + + protected: + writer_type& writer() { return writer_; } + FMT_DEPRECATED format_specs* spec() { return specs_; } + format_specs* specs() { return specs_; } + iterator out() { return writer_.out(); } + + void write(bool value) { + string_view sv(value ? "true" : "false"); + specs_ ? writer_.write(sv, *specs_) : writer_.write(sv); + } + + void write(const char_type* value) { + if (!value) { + FMT_THROW(format_error("string pointer is null")); + } else { + auto length = std::char_traits::length(value); + basic_string_view sv(value, length); + specs_ ? writer_.write(sv, *specs_) : writer_.write(sv); + } + } + + public: + arg_formatter_base(Range r, format_specs* s, locale_ref loc) + : writer_(r, loc), specs_(s) {} + + iterator operator()(monostate) { + FMT_ASSERT(false, "invalid argument type"); + return out(); + } + + template ::value)> + iterator operator()(T value) { + if (specs_) + writer_.write_int(value, *specs_); + else + writer_.write(value); + return out(); + } + + iterator operator()(char_type value) { + internal::handle_char_specs( + specs_, char_spec_handler(*this, static_cast(value))); + return out(); + } + + iterator operator()(bool value) { + if (specs_ && specs_->type) return (*this)(value ? 1 : 0); + write(value != 0); + return out(); + } + + template ::value)> + iterator operator()(T value) { + if (const_check(is_supported_floating_point(value))) + writer_.write(value, specs_ ? *specs_ : format_specs()); + else + FMT_ASSERT(false, "unsupported float argument type"); + return out(); + } + + struct char_spec_handler : ErrorHandler { + arg_formatter_base& formatter; + char_type value; + + char_spec_handler(arg_formatter_base& f, char_type val) + : formatter(f), value(val) {} + + void on_int() { + if (formatter.specs_) + formatter.writer_.write_int(value, *formatter.specs_); + else + formatter.writer_.write(value); + } + void on_char() { formatter.write_char(value); } + }; + + struct cstring_spec_handler : internal::error_handler { + arg_formatter_base& formatter; + const char_type* value; + + cstring_spec_handler(arg_formatter_base& f, const char_type* val) + : formatter(f), value(val) {} + + void on_string() { formatter.write(value); } + void on_pointer() { formatter.write_pointer(value); } + }; + + iterator operator()(const char_type* value) { + if (!specs_) return write(value), out(); + internal::handle_cstring_type_spec(specs_->type, + cstring_spec_handler(*this, value)); + return out(); + } + + iterator operator()(basic_string_view value) { + if (specs_) { + internal::check_string_type_spec(specs_->type, internal::error_handler()); + writer_.write(value, *specs_); + } else { + writer_.write(value); + } + return out(); + } + + iterator operator()(const void* value) { + if (specs_) + check_pointer_type_spec(specs_->type, internal::error_handler()); + write_pointer(value); + return out(); + } +}; + +template FMT_CONSTEXPR bool is_name_start(Char c) { + return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || '_' == c; +} + +// Parses the range [begin, end) as an unsigned integer. This function assumes +// that the range is non-empty and the first character is a digit. +template +FMT_CONSTEXPR int parse_nonnegative_int(const Char*& begin, const Char* end, + ErrorHandler&& eh) { + FMT_ASSERT(begin != end && '0' <= *begin && *begin <= '9', ""); + unsigned value = 0; + // Convert to unsigned to prevent a warning. + constexpr unsigned max_int = max_value(); + unsigned big = max_int / 10; + do { + // Check for overflow. + if (value > big) { + value = max_int + 1; + break; + } + value = value * 10 + unsigned(*begin - '0'); + ++begin; + } while (begin != end && '0' <= *begin && *begin <= '9'); + if (value > max_int) eh.on_error("number is too big"); + return static_cast(value); +} + +template class custom_formatter { + private: + using char_type = typename Context::char_type; + + basic_format_parse_context& parse_ctx_; + Context& ctx_; + + public: + explicit custom_formatter(basic_format_parse_context& parse_ctx, + Context& ctx) + : parse_ctx_(parse_ctx), ctx_(ctx) {} + + bool operator()(typename basic_format_arg::handle h) const { + h.format(parse_ctx_, ctx_); + return true; + } + + template bool operator()(T) const { return false; } +}; + +template +using is_integer = + bool_constant::value && !std::is_same::value && + !std::is_same::value && + !std::is_same::value>; + +template class width_checker { + public: + explicit FMT_CONSTEXPR width_checker(ErrorHandler& eh) : handler_(eh) {} + + template ::value)> + FMT_CONSTEXPR unsigned long long operator()(T value) { + if (is_negative(value)) handler_.on_error("negative width"); + return static_cast(value); + } + + template ::value)> + FMT_CONSTEXPR unsigned long long operator()(T) { + handler_.on_error("width is not integer"); + return 0; + } + + private: + ErrorHandler& handler_; +}; + +template class precision_checker { + public: + explicit FMT_CONSTEXPR precision_checker(ErrorHandler& eh) : handler_(eh) {} + + template ::value)> + FMT_CONSTEXPR unsigned long long operator()(T value) { + if (is_negative(value)) handler_.on_error("negative precision"); + return static_cast(value); + } + + template ::value)> + FMT_CONSTEXPR unsigned long long operator()(T) { + handler_.on_error("precision is not integer"); + return 0; + } + + private: + ErrorHandler& handler_; +}; + +// A format specifier handler that sets fields in basic_format_specs. +template class specs_setter { + public: + explicit FMT_CONSTEXPR specs_setter(basic_format_specs& specs) + : specs_(specs) {} + + FMT_CONSTEXPR specs_setter(const specs_setter& other) + : specs_(other.specs_) {} + + FMT_CONSTEXPR void on_align(align_t align) { specs_.align = align; } + FMT_CONSTEXPR void on_fill(basic_string_view fill) { + specs_.fill = fill; + } + FMT_CONSTEXPR void on_plus() { specs_.sign = sign::plus; } + FMT_CONSTEXPR void on_minus() { specs_.sign = sign::minus; } + FMT_CONSTEXPR void on_space() { specs_.sign = sign::space; } + FMT_CONSTEXPR void on_hash() { specs_.alt = true; } + + FMT_CONSTEXPR void on_zero() { + specs_.align = align::numeric; + specs_.fill[0] = Char('0'); + } + + FMT_CONSTEXPR void on_width(int width) { specs_.width = width; } + FMT_CONSTEXPR void on_precision(int precision) { + specs_.precision = precision; + } + FMT_CONSTEXPR void end_precision() {} + + FMT_CONSTEXPR void on_type(Char type) { + specs_.type = static_cast(type); + } + + protected: + basic_format_specs& specs_; +}; + +template class numeric_specs_checker { + public: + FMT_CONSTEXPR numeric_specs_checker(ErrorHandler& eh, internal::type arg_type) + : error_handler_(eh), arg_type_(arg_type) {} + + FMT_CONSTEXPR void require_numeric_argument() { + if (!is_arithmetic_type(arg_type_)) + error_handler_.on_error("format specifier requires numeric argument"); + } + + FMT_CONSTEXPR void check_sign() { + require_numeric_argument(); + if (is_integral_type(arg_type_) && arg_type_ != type::int_type && + arg_type_ != type::long_long_type && arg_type_ != type::char_type) { + error_handler_.on_error("format specifier requires signed argument"); + } + } + + FMT_CONSTEXPR void check_precision() { + if (is_integral_type(arg_type_) || arg_type_ == type::pointer_type) + error_handler_.on_error("precision not allowed for this argument type"); + } + + private: + ErrorHandler& error_handler_; + internal::type arg_type_; +}; + +// A format specifier handler that checks if specifiers are consistent with the +// argument type. +template class specs_checker : public Handler { + public: + FMT_CONSTEXPR specs_checker(const Handler& handler, internal::type arg_type) + : Handler(handler), checker_(*this, arg_type) {} + + FMT_CONSTEXPR specs_checker(const specs_checker& other) + : Handler(other), checker_(*this, other.arg_type_) {} + + FMT_CONSTEXPR void on_align(align_t align) { + if (align == align::numeric) checker_.require_numeric_argument(); + Handler::on_align(align); + } + + FMT_CONSTEXPR void on_plus() { + checker_.check_sign(); + Handler::on_plus(); + } + + FMT_CONSTEXPR void on_minus() { + checker_.check_sign(); + Handler::on_minus(); + } + + FMT_CONSTEXPR void on_space() { + checker_.check_sign(); + Handler::on_space(); + } + + FMT_CONSTEXPR void on_hash() { + checker_.require_numeric_argument(); + Handler::on_hash(); + } + + FMT_CONSTEXPR void on_zero() { + checker_.require_numeric_argument(); + Handler::on_zero(); + } + + FMT_CONSTEXPR void end_precision() { checker_.check_precision(); } + + private: + numeric_specs_checker checker_; +}; + +template